@zibby/core 0.5.46 → 0.5.48
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/backend-client.js +1 -1
- package/dist/index.js +151 -151
- package/dist/package.json +1 -1
- package/dist/register-built-in-strategies.js +36 -36
- package/dist/strategies/agent-env.js +1 -1
- package/dist/strategies/claude-strategy.js +5 -5
- package/dist/strategies/codex-strategy.js +2 -2
- package/dist/strategies/gemini-strategy.js +1 -1
- package/dist/strategies/index.js +66 -66
- package/dist/utils/secure-git.js +1 -1
- package/package.json +1 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import{AgentStrategy as Ne,getSkill as Oe,NO_INTEGRATION_TOGGLEABLE_SKILL_IDS as Le}from"@zibby/agent-workflow";import{query as xe}from"@anthropic-ai/claude-agent-sdk";import ve from"node:process";var ce=Object.freeze(["PROJECT_API_TOKEN","ZIBBY_USER_TOKEN","GITHUB_TOKEN","GITLAB_TOKEN","GITLAB_OAUTH_TOKEN","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 ue(t=ve.env){let e={},o=new Set(ce);for(let[a,r]of Object.entries(t))o.has(a)||r!==void 0&&(e[a]=r);return e}function de(t){return!!t&&(t.transport==="http"||typeof t.url=="string"&&!t.command)}function V(t,e,{processEnv:o}={}){if(!e)return null;if(de(e)){let r=String(e.url||"").trim();if(!r)return null;let i=e.headers&&typeof e.headers=="object"?e.headers:void 0;switch(t){case"claude":return{type:"http",url:r,...i&&{headers:i}};case"codex":return{url:r,...i&&{http_headers:i}};case"gemini":return{url:r,type:"http",...i&&{headers:i}};case"cursor":return{url:r,...i&&{headers:i}};default:return{type:"http",url:r,...i&&{headers:i}}}}let a={command:e.command};return e.args?.length&&(a.args=e.args),e.cwd&&(a.cwd=e.cwd),o?a.env={...o,...e.env||{}}:e.env&&Object.keys(e.env).length&&(a.env=e.env),a}function pe(t){return de(t)?`http \u2192 ${String(t.url||"").replace(/\?.*$/,"")}`:`${t?.command||"?"} ${(t?.args||[]).join(" ")}`.trim()}import{z as fe}from"zod";import{zodToJsonSchema as Ce}from"zod-to-json-schema";function ke(t){if(!t||typeof t!="object")return t;if(Array.isArray(t.type))return t.type.includes("null")||(t.type=[...t.type,"null"]),t;if(typeof t.type=="string")return t.type=[t.type,"null"],t;for(let e of["anyOf","oneOf"])if(Array.isArray(t[e]))return t[e].some(o=>o&&o.type==="null")||(t[e]=[...t[e],{type:"null"}]),t;return{anyOf:[t,{type:"null"}]}}function k(t){if(!t||typeof t!="object")return t;for(let e of["$defs","definitions"])if(t[e]&&typeof t[e]=="object")for(let o of Object.keys(t[e]))t[e][o]=k(t[e][o]);for(let e of["anyOf","oneOf","allOf"])Array.isArray(t[e])&&(t[e]=t[e].map(k));if(t.properties&&typeof t.properties=="object"){t.additionalProperties=!1;let e=Object.keys(t.properties),o=new Set(Array.isArray(t.required)?t.required:[]);for(let a of e){let r=k(t.properties[a]);o.has(a)||(r=ke(r)),t.properties[a]=r}t.required=e}return t.items&&(Array.isArray(t.items)?t.items=t.items.map(k):t.items=k(t.items)),t}function me(t,e={target:"openApi3"}){if(!t)return null;let o=e?.target==="openAi",a=null;if(typeof fe?.toJSONSchema=="function")try{a=fe.toJSONSchema(t)}catch{}if(!a)try{a=Ce(t,e)}catch{return null}if(o&&a)try{return k(a)}catch{return a}return a}import{writeFileSync as q,mkdirSync as z,existsSync as N,readFileSync as Ae}from"fs";import{homedir as be}from"os";import{join as y}from"path";import $ from"chalk";var A={debug:0,info:1,warn:2,error:3,silent:4},Y=class{constructor(){this._level=this._getLogLevel()}_getLogLevel(){if(process.env.ZIBBY_DEBUG==="true")return A.debug;if(process.env.ZIBBY_VERBOSE==="true")return A.info;let e=process.env.LOG_LEVEL?.toLowerCase();return e&&e in A?A[e]:A.info}_shouldLog(e){return A[e]>=this._level}_formatMessage(e,o,a={}){let r=new Date().toISOString(),d=`${this._getPrefix(e)} ${o}`;return Object.keys(a).length>0&&(d+=$.dim(` ${JSON.stringify(a)}`)),d}_getPrefix(e){return{debug:$.gray("[DEBUG]"),info:$.cyan("[INFO]"),warn:$.yellow("[WARN]"),error:$.red("\u274C [ERROR]")}[e]||""}debug(e,o){this._shouldLog("debug")&&console.log(this._formatMessage("debug",e,o))}info(e,o){this._shouldLog("info")&&console.log(this._formatMessage("info",e,o))}warn(e,o){this._shouldLog("warn")&&console.warn(this._formatMessage("warn",e,o))}error(e,o){this._shouldLog("error")&&console.error(this._formatMessage("error",e,o))}setLevel(e){e in A&&(this._level=A[e])}getLevel(){return Object.keys(A).find(e=>A[e]===this._level)}},s=new Y;import{timeline as W,Timeline as Ye,WORKFLOW_GRAPH_LOG_MARKER_PREFIX as We}from"@zibby/agent-workflow";var ge=[{alias:"auto",canonicalId:"claude-sonnet-4-6",vendor:"claude",family:"claude-sonnet-4",isDefault:!0},{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,aliasOf:"auto"},{alias:"sonnet-4-6",canonicalId:"claude-sonnet-4-6",vendor:"claude",family:"claude-sonnet-4",aliasOf:"auto"},{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"},{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:"auto"},{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:"auto",canonicalId:"gpt-5.6-luna",vendor:"codex",family:"gpt-5",isDefault:!0},{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.2-codex",vendor:"codex",label:"Codex \xB7 GPT-5.2",family:"gpt-5",pickerVisible:!0},{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.3",vendor:"codex",label:"Codex \xB7 GPT-5.3",family:"gpt-5",pickerVisible:!0},{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:"auto",canonicalId:"gemini-3-pro",vendor:"gemini",family:"gemini-3",isDefault:!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 M(t){let e={};for(let o of ge)o.vendor===t&&(e[o.alias]=o.canonicalId);return e}function _e(t,e){let o=typeof e=="string"?e.trim():"";if(o&&o!=="auto")return o;if(o==="auto"&&ge.some(a=>a.vendor===t&&a.isDefault))return"auto";throw new Error(`[${t}] 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 Z=M("claude"),ze=M("codex"),Xe=M("gemini"),Qe={CURSOR_AGENT_DEFAULT:1200*1e3,OPENAI_REQUEST:18e4};function K(t){let e=`${t}_POOL`,o=process.env[e];if(!o||typeof o!="string")return{picked:null,count:0,dispose:()=>{}};let a=o.split(/[,\n]+/).map(d=>d.trim()).filter(Boolean);if(a.length===0)return{picked:null,count:0,dispose:()=>{}};let r=a[Math.floor(Math.random()*a.length)],i=process.env[t];return process.env[t]=r,s.debug(`[auth-pool] ${t}: picked 1 of ${a.length} from pool (***${r.slice(-4)})`),{picked:r,count:a.length,dispose(){i===void 0?delete process.env[t]:process.env[t]=i}}}function ye(t){if(!t||typeof t!="object")return null;let e=(...r)=>{for(let i of r){if(i==null||i==="")continue;let d=Number(i);if(Number.isFinite(d))return d}return null},o=e(t.input_tokens,t.inputTokens,t.prompt_tokens,t.promptTokens),a=e(t.output_tokens,t.outputTokens,t.completion_tokens,t.completionTokens);return o==null&&a==null?null:{input:o||0,output:a||0}}import{createRequire as De}from"module";import f from"process";var Ee=De(import.meta.url);function we(){try{if(f.env.CLAUDE_CODE_EXECUTABLE&&N(f.env.CLAUDE_CODE_EXECUTABLE))return f.env.CLAUDE_CODE_EXECUTABLE;let t=f.platform,e=f.arch,o=`@anthropic-ai/claude-agent-sdk-${t}-${e}`,a=t==="win32"?"claude.exe":"claude";try{let r=Ee.resolve(`${o}/package.json`),i=y(r,"..",a);if(N(i))return i}catch{}try{let r=Ee.resolve("@anthropic-ai/claude-agent-sdk/package.json"),i=y(r,"..");for(let O of[a,y("vendor",a),y("bin",a)]){let b=y(i,O);if(N(b))return b}let d=y(i,"..",`claude-agent-sdk-${t}-${e}`,a);if(N(d))return d}catch{}}catch{}return null}var U=we();U&&s.debug(`Claude native CLI resolved to baked binary: ${U}`);var he=class extends Ne{constructor(){super("claude","Claude (Anthropic API)",50)}canHandle(e){let o=!!f.env.ANTHROPIC_API_KEY||!!f.env.ANTHROPIC_API_KEY_POOL,a=!!f.env.CLAUDE_CODE_OAUTH_TOKEN||!!f.env.CLAUDE_CODE_OAUTH_TOKEN_POOL,r=!!f.env.ANTHROPIC_AUTH_TOKEN||!!f.env.ANTHROPIC_AUTH_TOKEN_POOL,i=o||a||r;return i||s.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)."),i}async invoke(e,o={}){let{model:a,workspace:r=f.cwd(),schema:i=null,images:d=[],skills:O=null,sessionPath:b=null,nodeName:S=null,timeout:m,config:g={},activityLog:E=!1,signal:L=null,sessionId:X,resume:Q,forkSession:Te,sessionStore:ee}=o,I=_e("claude",a),x=Z[I]||I;Z[I]&&I!==x&&s.debug(`Mapped model: ${I} \u2192 ${x}`);let Se=[K("ANTHROPIC_API_KEY"),K("CLAUDE_CODE_OAUTH_TOKEN"),K("ANTHROPIC_AUTH_TOKEN")];try{s.debug(`Invoking Claude Agent SDK with model: ${x}, skills: ${JSON.stringify(O)}`);let B=(l,_)=>{let v=String(l??"");return v.length>_?`${v.slice(0,_)}\u2026`:v},G=(l,_)=>{try{console.log(JSON.stringify({mode:l,..._}))}catch{}},D=f.env.CLAUDE_CODE_OAUTH_TOKEN,te=f.env.ANTHROPIC_API_KEY,ne=f.env.ANTHROPIC_AUTH_TOKEN;f.env.CLAUDE_CODE_CREDENTIALS_JSON?Pe(f.env.CLAUDE_CODE_CREDENTIALS_JSON):D&&Re(D,f.env.__ZIBBY_CLAUDE_PLAN);let J=f.env.__ZIBBY_CLAUDE_PLAN,oe=J?J.charAt(0).toUpperCase()+J.slice(1):null,w;if(D?w=oe?`Claude ${oe} plan \xB7 ***${D.slice(-4)}`:`Subscription \xB7 ***${D.slice(-4)}`:te?w=`API key \xB7 ***${te.slice(-4)}`:ne?w=`Bearer \xB7 ***${ne.slice(-4)}`:w="NONE \u2014 request will fail",!E){let l=(await import("chalk")).default;console.log(""),console.log(` ${l.cyan("\u25C6")} ${l.bold(x)}`),console.log(` ${l.dim("Auth: ")}${w}`),console.log(` ${l.dim("Workdir: ")}${r}`),console.log(""),console.log(l.bold("Prompt sent to LLM:")),console.log(l.dim("\u2500".repeat(60))),console.log(l.dim(e)),console.log(l.dim("\u2500".repeat(60)))}let{allowedTools:j,mcpServers:T}=this._resolveSkills(O,{sessionPath:b,workspace:r,nodeName:S});for(let l of o.extraMcpServers||[])if(l&&l.serverName&&l.def){if(Object.prototype.hasOwnProperty.call(T,l.serverName)){console.warn(`[custom-mcp] skip "${l.serverName}" \u2014 a built-in skill already owns that MCP name (no shadowing)`);continue}let _=V("claude",l.def);_&&(T[l.serverName]=_,j.push(`mcp__${l.serverName}__*`))}try{let l={cwd:r,allowedTools:j,...Array.isArray(o.disallowedTools)&&o.disallowedTools.length?{disallowedTools:o.disallowedTools}:{},settings:{permissions:{allow:["Bash(*)","Read(*)","Write(*)","Edit(*)","MultiEdit(*)","NotebookEdit(*)","Grep(*)","Glob(*)","WebFetch(*)","WebSearch(*)","Task(*)","TodoWrite(*)","Skill(*)"]}},model:x,env:ue(f.env),...U&&{pathToClaudeCodeExecutable:U},...Object.keys(T).length>0&&{mcpServers:T},...X&&{sessionId:X},...Q&&{resume:Q},...Te&&{forkSession:!0},...ee&&{sessionStore:ee}};if(i){let h=typeof i.parse=="function"?me(i):i;l.outputFormat={type:"json_schema",schema:h},s.debug("Structured output enforced via SDK outputFormat")}s.debug(`Agent SDK options: ${JSON.stringify({cwd:l.cwd,toolCount:j.length,permissionMode:l.permissionMode,model:l.model,hasOutputFormat:!!l.outputFormat})}`);let _="",v=0,ae=[];s.debug("Starting Claude Agent SDK query stream");let ie=e,F=Array.isArray(d)?d.filter(n=>n&&typeof n.path=="string"&&n.path.startsWith("/")):[];if(F.length){let n=F.map((h,u)=>` ${u+1}. ${h.path}${h.name?` (${h.name})`:""}`).join(`
|
|
2
|
-
`);
|
|
1
|
+
import{AgentStrategy as we,getSkill as Ee,NO_INTEGRATION_TOGGLEABLE_SKILL_IDS as De}from"@zibby/agent-workflow";import{query as $e}from"@anthropic-ai/claude-agent-sdk";import Ne from"node:process";var ue=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 de(t=Ne.env){let e={},o=new Set(ue);for(let[a,i]of Object.entries(t))o.has(a)||i!==void 0&&(e[a]=i);return e}function pe(t){return!!t&&(t.transport==="http"||typeof t.url=="string"&&!t.command)}function V(t,e,{processEnv:o}={}){if(!e)return null;if(pe(e)){let i=String(e.url||"").trim();if(!i)return null;let r=e.headers&&typeof e.headers=="object"?e.headers:void 0;switch(t){case"claude":return{type:"http",url:i,...r&&{headers:r}};case"codex":return{url:i,...r&&{http_headers:r}};case"gemini":return{url:i,type:"http",...r&&{headers:r}};case"cursor":return{url:i,...r&&{headers:r}};default:return{type:"http",url:i,...r&&{headers:r}}}}let a={command:e.command};return e.args?.length&&(a.args=e.args),e.cwd&&(a.cwd=e.cwd),o?a.env={...o,...e.env||{}}:e.env&&Object.keys(e.env).length&&(a.env=e.env),a}function fe(t){return pe(t)?`http \u2192 ${String(t.url||"").replace(/\?.*$/,"")}`:`${t?.command||"?"} ${(t?.args||[]).join(" ")}`.trim()}import{z as me}from"zod";import{zodToJsonSchema as Le}from"zod-to-json-schema";function xe(t){if(!t||typeof t!="object")return t;if(Array.isArray(t.type))return t.type.includes("null")||(t.type=[...t.type,"null"]),t;if(typeof t.type=="string")return t.type=[t.type,"null"],t;for(let e of["anyOf","oneOf"])if(Array.isArray(t[e]))return t[e].some(o=>o&&o.type==="null")||(t[e]=[...t[e],{type:"null"}]),t;return{anyOf:[t,{type:"null"}]}}function L(t){if(!t||typeof t!="object")return t;for(let e of["$defs","definitions"])if(t[e]&&typeof t[e]=="object")for(let o of Object.keys(t[e]))t[e][o]=L(t[e][o]);for(let e of["anyOf","oneOf","allOf"])Array.isArray(t[e])&&(t[e]=t[e].map(L));if(t.properties&&typeof t.properties=="object"){t.additionalProperties=!1;let e=Object.keys(t.properties),o=new Set(Array.isArray(t.required)?t.required:[]);for(let a of e){let i=L(t.properties[a]);o.has(a)||(i=xe(i)),t.properties[a]=i}t.required=e}return t.items&&(Array.isArray(t.items)?t.items=t.items.map(L):t.items=L(t.items)),t}function ge(t,e={target:"openApi3"}){if(!t)return null;let o=e?.target==="openAi",a=null;if(typeof me?.toJSONSchema=="function")try{a=me.toJSONSchema(t)}catch{}if(!a)try{a=Le(t,e)}catch{return null}if(o&&a)try{return L(a)}catch{return a}return a}import{writeFileSync as X,mkdirSync as Q,existsSync as x,readFileSync as be}from"fs";import{homedir as Te}from"os";import{join as O}from"path";import M from"chalk";var b={debug:0,info:1,warn:2,error:3,silent:4},z=class{constructor(){this._level=this._getLogLevel()}_getLogLevel(){if(process.env.ZIBBY_DEBUG==="true")return b.debug;if(process.env.ZIBBY_VERBOSE==="true")return b.info;let e=process.env.LOG_LEVEL?.toLowerCase();return e&&e in b?b[e]:b.info}_shouldLog(e){return b[e]>=this._level}_formatMessage(e,o,a={}){let i=new Date().toISOString(),d=`${this._getPrefix(e)} ${o}`;return Object.keys(a).length>0&&(d+=M.dim(` ${JSON.stringify(a)}`)),d}_getPrefix(e){return{debug:M.gray("[DEBUG]"),info:M.cyan("[INFO]"),warn:M.yellow("[WARN]"),error:M.red("\u274C [ERROR]")}[e]||""}debug(e,o){this._shouldLog("debug")&&console.log(this._formatMessage("debug",e,o))}info(e,o){this._shouldLog("info")&&console.log(this._formatMessage("info",e,o))}warn(e,o){this._shouldLog("warn")&&console.warn(this._formatMessage("warn",e,o))}error(e,o){this._shouldLog("error")&&console.error(this._formatMessage("error",e,o))}setLevel(e){e in b&&(this._level=b[e])}getLevel(){return Object.keys(b).find(e=>b[e]===this._level)}},l=new z;import{timeline as W,Timeline as We,WORKFLOW_GRAPH_LOG_MARKER_PREFIX as qe}from"@zibby/agent-workflow";var _e=[{alias:"auto",canonicalId:"claude-sonnet-4-6",vendor:"claude",family:"claude-sonnet-4",isDefault:!0},{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,aliasOf:"auto"},{alias:"sonnet-4-6",canonicalId:"claude-sonnet-4-6",vendor:"claude",family:"claude-sonnet-4",aliasOf:"auto"},{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"},{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:"auto"},{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:"auto",canonicalId:"gpt-5.6-luna",vendor:"codex",family:"gpt-5",isDefault:!0},{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.2-codex",vendor:"codex",label:"Codex \xB7 GPT-5.2",family:"gpt-5",pickerVisible:!0},{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.3",vendor:"codex",label:"Codex \xB7 GPT-5.3",family:"gpt-5",pickerVisible:!0},{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:"auto",canonicalId:"gemini-3-pro",vendor:"gemini",family:"gemini-3",isDefault:!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 G(t){let e={};for(let o of _e)o.vendor===t&&(e[o.alias]=o.canonicalId);return e}function ye(t,e){let o=typeof e=="string"?e.trim():"";if(o&&o!=="auto")return o;if(o==="auto"&&_e.some(a=>a.vendor===t&&a.isDefault))return"auto";throw new Error(`[${t}] 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 q=G("claude"),et=G("codex"),tt=G("gemini"),nt={CURSOR_AGENT_DEFAULT:1200*1e3,OPENAI_REQUEST:18e4};function J(t){let e=`${t}_POOL`,o=process.env[e];if(!o||typeof o!="string")return{picked:null,count:0,dispose:()=>{}};let a=o.split(/[,\n]+/).map(d=>d.trim()).filter(Boolean);if(a.length===0)return{picked:null,count:0,dispose:()=>{}};let i=a[Math.floor(Math.random()*a.length)],r=process.env[t];return process.env[t]=i,l.debug(`[auth-pool] ${t}: picked 1 of ${a.length} from pool (***${i.slice(-4)})`),{picked:i,count:a.length,dispose(){r===void 0?delete process.env[t]:process.env[t]=r}}}function Oe(t){if(!t||typeof t!="object")return null;let e=(...i)=>{for(let r of i){if(r==null||r==="")continue;let d=Number(r);if(Number.isFinite(d))return d}return null},o=e(t.input_tokens,t.inputTokens,t.prompt_tokens,t.promptTokens),a=e(t.output_tokens,t.outputTokens,t.completion_tokens,t.completionTokens);return o==null&&a==null?null:{input:o||0,output:a||0}}import{createRequire as Re}from"module";import f from"process";var Ae=Re(import.meta.url);function Pe(){try{if(f.env.CLAUDE_CODE_EXECUTABLE&&x(f.env.CLAUDE_CODE_EXECUTABLE))return f.env.CLAUDE_CODE_EXECUTABLE;let t=f.platform,e=f.arch,o=`@anthropic-ai/claude-agent-sdk-${t}-${e}`,a=t==="win32"?"claude.exe":"claude";try{let i=Ae.resolve(`${o}/package.json`),r=O(i,"..",a);if(x(r))return r}catch{}try{let i=Ae.resolve("@anthropic-ai/claude-agent-sdk/package.json"),r=O(i,"..");for(let E of[a,O("vendor",a),O("bin",a)]){let T=O(r,E);if(x(T))return T}let d=O(r,"..",`claude-agent-sdk-${t}-${e}`,a);if(x(d))return d}catch{}}catch{}return null}var j=Pe();j&&l.debug(`Claude native CLI resolved to baked binary: ${j}`);var he=class extends we{constructor(){super("claude","Claude (Anthropic API)",50)}canHandle(e){let o=!!f.env.ANTHROPIC_API_KEY||!!f.env.ANTHROPIC_API_KEY_POOL,a=!!f.env.CLAUDE_CODE_OAUTH_TOKEN||!!f.env.CLAUDE_CODE_OAUTH_TOKEN_POOL,i=!!f.env.ANTHROPIC_AUTH_TOKEN||!!f.env.ANTHROPIC_AUTH_TOKEN_POOL,r=o||a||i;return r||l.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)."),r}async invoke(e,o={}){let{model:a,workspace:i=f.cwd(),schema:r=null,images:d=[],skills:E=null,sessionPath:T=null,nodeName:k=null,timeout:g,config:_={},activityLog:A=!1,signal:w=null,sessionId:ee,resume:te,forkSession:Se,sessionStore:ne}=o,v=ye("claude",a),D=q[v]||v;q[v]&&v!==D&&l.debug(`Mapped model: ${v} \u2192 ${D}`);let Ie=[J("ANTHROPIC_API_KEY"),J("CLAUDE_CODE_OAUTH_TOKEN"),J("ANTHROPIC_AUTH_TOKEN")];try{l.debug(`Invoking Claude Agent SDK with model: ${D}, skills: ${JSON.stringify(E)}`);let U=(s,m)=>{let y=String(s??"");return y.length>m?`${y.slice(0,m)}\u2026`:y},Z=(s,m)=>{try{console.log(JSON.stringify({mode:s,...m}))}catch{}},ke=/secret|token|password|passwd|credential|authorization|bearer|api[-_]?key|private[-_]?key|access[-_]?key/i,oe=(s,m=0)=>{if(s==null||m>6||typeof s!="object")return s;let y=Array.isArray(s)?[]:{};for(let[C,N]of Object.entries(s)){let P=ke.test(C)||C==="value"&&typeof s.key=="string";y[C]=P&&typeof N=="string"&&N?"[redacted]":oe(N,m+1)}return y},ve=s=>{try{if(s==null)return"";let m=oe(s),y=typeof m=="string"?m:JSON.stringify(m);return U(String(y).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""}},$=f.env.CLAUDE_CODE_OAUTH_TOKEN,ae=f.env.ANTHROPIC_API_KEY,re=f.env.ANTHROPIC_AUTH_TOKEN;f.env.CLAUDE_CODE_CREDENTIALS_JSON?Ue(f.env.CLAUDE_CODE_CREDENTIALS_JSON):$&&Ke($,f.env.__ZIBBY_CLAUDE_PLAN);let F=f.env.__ZIBBY_CLAUDE_PLAN,ie=F?F.charAt(0).toUpperCase()+F.slice(1):null,R;if($?R=ie?`Claude ${ie} plan \xB7 ***${$.slice(-4)}`:`Subscription \xB7 ***${$.slice(-4)}`:ae?R=`API key \xB7 ***${ae.slice(-4)}`:re?R=`Bearer \xB7 ***${re.slice(-4)}`:R="NONE \u2014 request will fail",!A){let s=(await import("chalk")).default;console.log(""),console.log(` ${s.cyan("\u25C6")} ${s.bold(D)}`),console.log(` ${s.dim("Auth: ")}${R}`),console.log(` ${s.dim("Workdir: ")}${i}`),console.log(""),console.log(s.bold("Prompt sent to LLM:")),console.log(s.dim("\u2500".repeat(60))),console.log(s.dim(e)),console.log(s.dim("\u2500".repeat(60)))}let{allowedTools:H,mcpServers:I}=this._resolveSkills(E,{sessionPath:T,workspace:i,nodeName:k});for(let s of o.extraMcpServers||[])if(s&&s.serverName&&s.def){if(Object.prototype.hasOwnProperty.call(I,s.serverName)){console.warn(`[custom-mcp] skip "${s.serverName}" \u2014 a built-in skill already owns that MCP name (no shadowing)`);continue}let m=V("claude",s.def);m&&(I[s.serverName]=m,H.push(`mcp__${s.serverName}__*`))}try{let s={cwd:i,allowedTools:H,...Array.isArray(o.disallowedTools)&&o.disallowedTools.length?{disallowedTools:o.disallowedTools}:{},settings:{permissions:{allow:["Bash(*)","Read(*)","Write(*)","Edit(*)","MultiEdit(*)","NotebookEdit(*)","Grep(*)","Glob(*)","WebFetch(*)","WebSearch(*)","Task(*)","TodoWrite(*)","Skill(*)"]}},model:D,env:de(f.env),...j&&{pathToClaudeCodeExecutable:j},...Object.keys(I).length>0&&{mcpServers:I},...ee&&{sessionId:ee},...te&&{resume:te},...Se&&{forkSession:!0},...ne&&{sessionStore:ne}};if(r){let h=typeof r.parse=="function"?ge(r):r;s.outputFormat={type:"json_schema",schema:h},l.debug("Structured output enforced via SDK outputFormat")}l.debug(`Agent SDK options: ${JSON.stringify({cwd:s.cwd,toolCount:H.length,permissionMode:s.permissionMode,model:s.model,hasOutputFormat:!!s.outputFormat})}`);let m="",y=0,C=[];l.debug("Starting Claude Agent SDK query stream");let N=e,P=Array.isArray(d)?d.filter(n=>n&&typeof n.path=="string"&&n.path.startsWith("/")):[];if(P.length){let n=P.map((h,u)=>` ${u+1}. ${h.path}${h.name?` (${h.name})`:""}`).join(`
|
|
2
|
+
`);N=`${e}
|
|
3
3
|
|
|
4
4
|
# Attached image files \u2014 VIEW THESE
|
|
5
|
-
The user attached ${
|
|
6
|
-
${n}`}let
|
|
5
|
+
The user attached ${P.length} image(s), saved locally. Use the Read tool on each path to SEE the image, then use what it shows to answer:
|
|
6
|
+
${n}`}let se;try{se=$e({prompt:N,options:s})}catch(n){throw l.error(`Failed to initialize Claude Agent SDK: ${n.message}`),n}let le=null,B=0,Ce=3;if(w?.aborted){let n=new Error("Aborted via signal");throw n.name="AbortError",n}try{for await(let n of se){if(w?.aborted){let u=new Error("Aborted via signal");throw u.name="AbortError",u}if(C.push(n),n.type==="system"&&n.subtype==="init"){let u=n.mcp_servers||[];if(u.length>0){let c=u.map(p=>`${p.name}=${p.status}${p.error?` (${String(p.error).slice(0,120)})`:""}`).join(", ");l.info(`[mcp] SDK init \u2014 ${u.length} server(s): ${c}`);for(let p of u)p.status!=="connected"&&l.warn(`[mcp] server '${p.name}' did not connect: status=${p.status}`,{name:p.name,status:p.status,error:p.error})}else Object.keys(I||{}).length>0&&l.warn(`[mcp] SDK init returned no mcp_servers despite passing ${Object.keys(I).length} server(s) \u2014 SDK version may not expose this field, or config was dropped`);if(Array.isArray(n.tools)){let c=n.tools.filter(p=>p.startsWith("mcp__"));c.length>0?l.info(`[mcp] tools visible to model: ${c.join(", ")}`):Object.keys(I||{}).length>0&&l.warn("[mcp] no mcp__* tools in model's tool list \u2014 MCP servers configured but tools didn't reach the prompt")}}if(n.type==="system"&&n.subtype==="api_retry"){let u=Number(n.attempt)||0,c=Number(n.max_retries)||0,p=n.error_status!=null?String(n.error_status):"?",S=typeof n.error=="string"?n.error:"error",Y=Number.isFinite(n.retry_delay_ms)?Math.round(n.retry_delay_ms):null,ce=`upstream ${p} (${S}) \u2014 SDK retry ${u}/${c}`+(Y!=null?` in ${Y}ms`:"");A&&Z("turn:retry",{status:p,kind:S,attempt:u,maxRetries:c,delayMs:Y,detail:ce}),l.warn(`[claude] transient ${ce}`);continue}if(n.type==="error"||n.error){let u=n.error?.message||n.error||n.message||"Unknown API error";try{l.error("SDK error event raw payload",{fullMessage:JSON.stringify(n,null,2)})}catch{}throw new Error(typeof u=="string"?u:JSON.stringify(u))}let h=JSON.stringify(n.message?.content||n.text||"").slice(0,200);if(h===le){if(B++,B>=Ce){let u=(n.message?.content?.[0]?.text||n.text||"unknown").slice(0,100);throw new Error(`API stuck in loop (${B}x repeated): ${u}`)}}else le=h,B=1;if(n.type==="assistant"||n.constructor?.name==="AssistantMessage"){let u=n.message?.content||n.content||[];for(let c of u)if(c.type==="thinking"&&c.thinking)A?Z("turn:thinking",{text:U(c.thinking,600)}):console.log(`${c.thinking.substring(0,200)}${c.thinking.length>200?"...":""}`);else if(c.type==="text"&&c.text)m+=c.text,A||(c.text.length<500?console.log(`${c.text}`):console.log(`${c.text.substring(0,200)}... (${c.text.length} chars)`));else if(c.type==="tool_use")if(y++,c.name.includes("memory")?W.stepMemory(`Tool: ${c.name}`):W.stepTool(`Tool: ${c.name}`),A){let S=ve(c.input);Z("turn:tool",{name:c.name,...S?{input:S}:{}})}else{let S=JSON.stringify(c.input).substring(0,100);console.log(` Input: ${S}${JSON.stringify(c.input).length>100?"...":""}`)}}else if(!(n.type==="user"&&n.tool_use_result)){if(n.type==="result"||n.constructor?.name==="ResultMessage"){let u=n.result||n.text||n.content||m;try{Me({message:n,sessionPath:T,nodeName:k,model:v,toolCallCount:y})}catch(p){l.debug(`usage.json write failed: ${p.message}`)}let c=Oe(n?.usage||n?.message?.usage);if(r){if(n.structured_output){l.debug("Using SDK native structured_output");let S=typeof r.parse=="function"?r.parse(n.structured_output):n.structured_output;return{raw:u,structured:S,...c?{usage:c}:{},toolUseCount:y}}if(u){let p=this._extractJson(u,r);if(p)return{raw:u,structured:p,...c?{usage:c}:{},toolUseCount:y}}l.warn(`Could not extract structured output \u2014 returning raw text (${(u||"").length} chars)`)}return u||""}}}if(l.warn(`Agent SDK ended without result. Collected ${C.length} messages`),m.length>0)return l.debug("Returning accumulated text from messages"),m;throw new Error("Claude Agent SDK query ended without result")}catch(n){let h={message:n?.message,name:n?.name,code:n?.code,cause:n?.cause?.message||n?.cause,stack:n?.stack?.split(`
|
|
7
7
|
`).slice(0,5).join(`
|
|
8
|
-
`),stringified:(()=>{try{return JSON.stringify(n,Object.getOwnPropertyNames(Object(n)))}catch{return String(n)}})()};throw
|
|
8
|
+
`),stringified:(()=>{try{return JSON.stringify(n,Object.getOwnPropertyNames(Object(n)))}catch{return String(n)}})()};throw l.error(`Error during query stream: ${n?.message||n}`,h),n}}catch(s){throw l.error("Claude Agent SDK call failed",{message:s?.message,name:s?.name,code:s?.code,cause:s?.cause?.message||s?.cause}),s}}finally{for(let U of Ie)U.dispose()}}_resolveSkills(e,o){let a=["Read","Write","Edit","Bash","Grep","Glob"];if(e===null)return l.debug("No skills \u2014 pure LLM mode"),{allowedTools:[],mcpServers:{}};if(!Array.isArray(e)||e.length===0)return l.debug("Default IDE skills for code generation"),{allowedTools:[...a],mcpServers:{}};let i=[...a],r={},d=f.env.WORKFLOW_ENABLED_INTEGRATIONS,E=typeof d=="string"&&d.trim()!==""?new Set(d.split(",").map(g=>g.trim()).filter(Boolean)):null,T=g=>{let _=Ee(g);return _?.meta?.toggleable===!0?!0:_?.meta?.toggleable===void 0&&De.includes(g)},k=g=>E!==null&&E.size>0&&T(g)&&!E.has(g);for(let g of e){if(k(g)){l.debug(`Skill "${g}" disabled by enabledIntegrations allowlist \u2014 skipping`);continue}let _=Ee(g);if(!_){l.warn(`Unknown skill "${g}" \u2014 skipping`);continue}if(_.allowedTools&&i.push(..._.allowedTools),typeof _.resolve=="function"){let A=_.resolve(o),w=V("claude",A);w&&(r[_.serverName]=w,l.debug(`MCP: ${_.serverName} \u2192 ${fe(A)}`))}}return{allowedTools:i,mcpServers:r}}_extractJson(e,o){let a=[()=>{if(e.includes("===JSON_START===")){let i=e.indexOf("===JSON_START===")+16,r=e.indexOf("===JSON_END===");return e.substring(i,r).trim()}},()=>e.match(/```json\s*\n([\s\S]*?)\n```/)?.[1]?.trim(),()=>{if(!e.startsWith("{"))return e.match(/```\s*\n([\s\S]*?)\n```/)?.[1]?.trim()},()=>e.trim(),()=>{let i=e.indexOf("{"),r=e.lastIndexOf("}");if(i!==-1&&r>i)return e.substring(i,r+1)}];for(let i of a)try{let r=i();if(!r)continue;let d=JSON.parse(r);if(typeof d!="object"||d===null)continue;return typeof o.parse=="function"?o.parse(d):d}catch{}return null}};function Me({message:t,sessionPath:e,nodeName:o,model:a,toolCallCount:i}){if(!e||!o)return;let r=t?.usage||t?.message?.usage||{},d=K(r.input_tokens,r.inputTokens),E=K(r.output_tokens,r.outputTokens),T=K(r.cache_read_input_tokens,r.cacheReadInputTokens),k=K(r.cache_creation_input_tokens,r.cacheCreationInputTokens),g=K(t?.duration_ms,t?.durationMs),_={model:a||null,input_tokens:d,output_tokens:E,cache_read_tokens:T,cache_creation_tokens:k,tool_call_count:typeof i=="number"?i:null,duration_ms:g,captured_at:new Date().toISOString()},A=O(e,o);try{Q(A,{recursive:!0})}catch{}X(O(A,"usage.json"),JSON.stringify(_,null,2),"utf-8")}function K(...t){for(let e of t){if(typeof e=="number"&&Number.isFinite(e))return e;if(typeof e=="string"&&e.trim()!==""&&!isNaN(Number(e)))return Number(e)}return null}function Ke(t,e){let o=O(Te(),".claude"),a=O(o,".credentials.json"),i={claudeAiOauth:{accessToken:t,refreshToken:"",expiresAt:Date.now()+365*24*60*60*1e3,scopes:["user:inference","user:profile"],...e?{subscriptionType:String(e).toLowerCase()}:{}}};try{if(x(a)&&JSON.parse(be(a,"utf-8"))?.claudeAiOauth?.accessToken===t)return;Q(o,{recursive:!0}),X(a,JSON.stringify(i,null,2),"utf-8"),l.debug(`Wrote Claude Code OAuth credentials to ${a}`)}catch(r){l.warn(`Could not write ${a}: ${r.message} \u2014 Claude SDK may fail to authenticate.`)}}function Ue(t){let e=O(Te(),".claude"),o=O(e,".credentials.json"),a;try{a=JSON.parse(t)}catch(i){l.warn(`CLAUDE_CODE_CREDENTIALS_JSON not valid JSON: ${i.message}`);return}if(!a?.claudeAiOauth?.accessToken){l.warn("CLAUDE_CODE_CREDENTIALS_JSON missing claudeAiOauth.accessToken \u2014 skipping write.");return}try{if(x(o)){let i=JSON.parse(be(o,"utf-8"));if(i?.claudeAiOauth?.accessToken===a.claudeAiOauth.accessToken&&i?.claudeAiOauth?.expiresAt===a.claudeAiOauth.expiresAt)return}Q(e,{recursive:!0}),X(o,JSON.stringify(a,null,2),"utf-8"),l.debug(`Wrote full Claude Code credentials blob to ${o}`)}catch(i){l.warn(`Could not write ${o}: ${i.message} \u2014 Claude SDK may fail to authenticate.`)}}export{ue as AGENT_ENV_SECRET_DENYLIST,he as ClaudeAgentStrategy,de as sanitizeAgentEnv};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import{AgentStrategy as pe,getSkill as fe}from"@zibby/agent-workflow";import le from"node:process";var se=Object.freeze(["PROJECT_API_TOKEN","ZIBBY_USER_TOKEN","GITHUB_TOKEN","GITLAB_TOKEN","GITLAB_OAUTH_TOKEN","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 z(n=le.env){let e={},o=new Set(se);for(let[t,i]of Object.entries(n))o.has(t)||i!==void 0&&(e[t]=i);return e}function ce(n){return!!n&&(n.transport==="http"||typeof n.url=="string"&&!n.command)}function R(n,e,{processEnv:o}={}){if(!e)return null;if(ce(e)){let i=String(e.url||"").trim();if(!i)return null;let a=e.headers&&typeof e.headers=="object"?e.headers:void 0;switch(n){case"claude":return{type:"http",url:i,...a&&{headers:a}};case"codex":return{url:i,...a&&{http_headers:a}};case"gemini":return{url:i,type:"http",...a&&{headers:a}};case"cursor":return{url:i,...a&&{headers:a}};default:return{type:"http",url:i,...a&&{headers:a}}}}let t={command:e.command};return e.args?.length&&(t.args=e.args),e.cwd&&(t.cwd=e.cwd),o?t.env={...o,...e.env||{}}:e.env&&Object.keys(e.env).length&&(t.env=e.env),t}import{execSync as A}from"node:child_process";import{readFileSync as me,mkdirSync as j,cpSync as ge,existsSync as ye}from"node:fs";import{join as C}from"node:path";import{homedir as _e}from"node:os";import{z as Z}from"zod";import{zodToJsonSchema as ue}from"zod-to-json-schema";function de(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(o=>o&&o.type==="null")||(n[e]=[...n[e],{type:"null"}]),n;return{anyOf:[n,{type:"null"}]}}function h(n){if(!n||typeof n!="object")return n;for(let e of["$defs","definitions"])if(n[e]&&typeof n[e]=="object")for(let o of Object.keys(n[e]))n[e][o]=h(n[e][o]);for(let e of["anyOf","oneOf","allOf"])Array.isArray(n[e])&&(n[e]=n[e].map(h));if(n.properties&&typeof n.properties=="object"){n.additionalProperties=!1;let e=Object.keys(n.properties),o=new Set(Array.isArray(n.required)?n.required:[]);for(let t of e){let i=h(n.properties[t]);o.has(t)||(i=de(i)),n.properties[t]=i}n.required=e}return n.items&&(Array.isArray(n.items)?n.items=n.items.map(h):n.items=h(n.items)),n}function W(n,e={target:"openApi3"}){if(!n)return null;let o=e?.target==="openAi",t=null;if(typeof Z?.toJSONSchema=="function")try{t=Z.toJSONSchema(n)}catch{}if(!t)try{t=ue(n,e)}catch{return null}if(o&&t)try{return h(t)}catch{return t}return t}function q(n){if(!n||typeof n!="object")return null;let e=(...i)=>{for(let a of i){if(a==null||a==="")continue;let s=Number(a);if(Number.isFinite(s))return s}return null},o=e(n.input_tokens,n.inputTokens,n.prompt_tokens,n.promptTokens),t=e(n.output_tokens,n.outputTokens,n.completion_tokens,n.completionTokens);return o==null&&t==null?null:{input:o||0,output:t||0}}import b from"chalk";var m={debug:0,info:1,warn:2,error:3,silent:4},B=class{constructor(){this._level=this._getLogLevel()}_getLogLevel(){if(process.env.ZIBBY_DEBUG==="true")return m.debug;if(process.env.ZIBBY_VERBOSE==="true")return m.info;let e=process.env.LOG_LEVEL?.toLowerCase();return e&&e in m?m[e]:m.info}_shouldLog(e){return m[e]>=this._level}_formatMessage(e,o,t={}){let i=new Date().toISOString(),s=`${this._getPrefix(e)} ${o}`;return Object.keys(t).length>0&&(s+=b.dim(` ${JSON.stringify(t)}`)),s}_getPrefix(e){return{debug:b.gray("[DEBUG]"),info:b.cyan("[INFO]"),warn:b.yellow("[WARN]"),error:b.red("\u274C [ERROR]")}[e]||""}debug(e,o){this._shouldLog("debug")&&console.log(this._formatMessage("debug",e,o))}info(e,o){this._shouldLog("info")&&console.log(this._formatMessage("info",e,o))}warn(e,o){this._shouldLog("warn")&&console.warn(this._formatMessage("warn",e,o))}error(e,o){this._shouldLog("error")&&console.error(this._formatMessage("error",e,o))}setLevel(e){e in m&&(this._level=m[e])}getLevel(){return Object.keys(m).find(e=>m[e]===this._level)}},l=new B;import{timeline as G,Timeline as Ne,WORKFLOW_GRAPH_LOG_MARKER_PREFIX as Pe}from"@zibby/agent-workflow";var Q=[{alias:"auto",canonicalId:"claude-sonnet-4-6",vendor:"claude",family:"claude-sonnet-4",isDefault:!0},{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,aliasOf:"auto"},{alias:"sonnet-4-6",canonicalId:"claude-sonnet-4-6",vendor:"claude",family:"claude-sonnet-4",aliasOf:"auto"},{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"},{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:"auto"},{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:"auto",canonicalId:"gpt-5.6-luna",vendor:"codex",family:"gpt-5",isDefault:!0},{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.2-codex",vendor:"codex",label:"Codex \xB7 GPT-5.2",family:"gpt-5",pickerVisible:!0},{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.3",vendor:"codex",label:"Codex \xB7 GPT-5.3",family:"gpt-5",pickerVisible:!0},{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:"auto",canonicalId:"gemini-3-pro",vendor:"gemini",family:"gemini-3",isDefault:!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 P(n){let e={};for(let o of Q)o.vendor===n&&(e[o.alias]=o.canonicalId);return e}function ee(n,e){let o=typeof e=="string"?e.trim():"";if(o&&o!=="auto")return o;if(o==="auto"&&Q.some(t=>t.vendor===n&&t.isDefault))return"auto";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 Me=P("claude"),Y=P("codex"),we=P("gemini"),De={CURSOR_AGENT_DEFAULT:1200*1e3,OPENAI_REQUEST:18e4};function V(n){let e=`${n}_POOL`,o=process.env[e];if(!o||typeof o!="string")return{picked:null,count:0,dispose:()=>{}};let t=o.split(/[,\n]+/).map(s=>s.trim()).filter(Boolean);if(t.length===0)return{picked:null,count:0,dispose:()=>{}};let i=t[Math.floor(Math.random()*t.length)],a=process.env[n];return process.env[n]=i,l.debug(`[auth-pool] ${n}: picked 1 of ${t.length} from pool (***${i.slice(-4)})`),{picked:i,count:t.length,dispose(){a===void 0?delete process.env[n]:process.env[n]=a}}}function U(n){if(Array.isArray(n))return n.map(U);if(n&&typeof n=="object"){let e={};for(let[o,t]of Object.entries(n))t!==null&&(e[o]=U(t));return e}return n}var ne=class extends pe{constructor(){super("codex","Codex (OpenAI)",75)}canHandle(e){if(!!!(process.env.OPENAI_API_KEY||process.env.OPENAI_API_KEY_POOL||process.env.CODEX_API_KEY||process.env.CODEX_API_KEY_POOL))return l.debug("CodexAgentStrategy: OPENAI_API_KEY or CODEX_API_KEY not set"),!1;try{return A("codex --version",{encoding:"utf-8",timeout:5e3,stdio:"pipe"}),!0}catch{return l.warn("[Codex] codex CLI not found. Install: npm install -g @openai/codex"),!1}}async invoke(e,o={}){let{model:t,workspace:i=process.cwd(),schema:a=null,images:s=[],skills:g=null,plugins:c=null,sessionPath:v=null,nodeName:_=null,timeout:$,config:Oe={},signal:J=null}=o,oe=[V("OPENAI_API_KEY"),V("CODEX_API_KEY")];try{let{Codex:L}=await import("@openai/codex-sdk"),x=ee("codex",t),k=Y[x]||x;Y[x]&&x!==k&&l.debug(`Mapped model: ${x} \u2192 ${k}`),l.debug(`Invoking Codex SDK with model: ${k}, skills: ${JSON.stringify(g)}`);let S=process.env.CODEX_API_KEY||process.env.OPENAI_API_KEY;S&&!process.env.CODEX_API_KEY&&(process.env.CODEX_API_KEY=S);let te=S?` | key: ***${S.slice(-4)}`:" | key: not set";if(console.log(`
|
|
2
|
-
\u25C6 Model: ${
|
|
1
|
+
import{AgentStrategy as pe,getSkill as fe}from"@zibby/agent-workflow";import le from"node:process";var se=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 z(n=le.env){let e={},o=new Set(se);for(let[t,i]of Object.entries(n))o.has(t)||i!==void 0&&(e[t]=i);return e}function ce(n){return!!n&&(n.transport==="http"||typeof n.url=="string"&&!n.command)}function R(n,e,{processEnv:o}={}){if(!e)return null;if(ce(e)){let i=String(e.url||"").trim();if(!i)return null;let a=e.headers&&typeof e.headers=="object"?e.headers:void 0;switch(n){case"claude":return{type:"http",url:i,...a&&{headers:a}};case"codex":return{url:i,...a&&{http_headers:a}};case"gemini":return{url:i,type:"http",...a&&{headers:a}};case"cursor":return{url:i,...a&&{headers:a}};default:return{type:"http",url:i,...a&&{headers:a}}}}let t={command:e.command};return e.args?.length&&(t.args=e.args),e.cwd&&(t.cwd=e.cwd),o?t.env={...o,...e.env||{}}:e.env&&Object.keys(e.env).length&&(t.env=e.env),t}import{execSync as A}from"node:child_process";import{readFileSync as me,mkdirSync as j,cpSync as ge,existsSync as ye}from"node:fs";import{join as C}from"node:path";import{homedir as _e}from"node:os";import{z as Z}from"zod";import{zodToJsonSchema as ue}from"zod-to-json-schema";function de(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(o=>o&&o.type==="null")||(n[e]=[...n[e],{type:"null"}]),n;return{anyOf:[n,{type:"null"}]}}function h(n){if(!n||typeof n!="object")return n;for(let e of["$defs","definitions"])if(n[e]&&typeof n[e]=="object")for(let o of Object.keys(n[e]))n[e][o]=h(n[e][o]);for(let e of["anyOf","oneOf","allOf"])Array.isArray(n[e])&&(n[e]=n[e].map(h));if(n.properties&&typeof n.properties=="object"){n.additionalProperties=!1;let e=Object.keys(n.properties),o=new Set(Array.isArray(n.required)?n.required:[]);for(let t of e){let i=h(n.properties[t]);o.has(t)||(i=de(i)),n.properties[t]=i}n.required=e}return n.items&&(Array.isArray(n.items)?n.items=n.items.map(h):n.items=h(n.items)),n}function W(n,e={target:"openApi3"}){if(!n)return null;let o=e?.target==="openAi",t=null;if(typeof Z?.toJSONSchema=="function")try{t=Z.toJSONSchema(n)}catch{}if(!t)try{t=ue(n,e)}catch{return null}if(o&&t)try{return h(t)}catch{return t}return t}function q(n){if(!n||typeof n!="object")return null;let e=(...i)=>{for(let a of i){if(a==null||a==="")continue;let s=Number(a);if(Number.isFinite(s))return s}return null},o=e(n.input_tokens,n.inputTokens,n.prompt_tokens,n.promptTokens),t=e(n.output_tokens,n.outputTokens,n.completion_tokens,n.completionTokens);return o==null&&t==null?null:{input:o||0,output:t||0}}import b from"chalk";var m={debug:0,info:1,warn:2,error:3,silent:4},B=class{constructor(){this._level=this._getLogLevel()}_getLogLevel(){if(process.env.ZIBBY_DEBUG==="true")return m.debug;if(process.env.ZIBBY_VERBOSE==="true")return m.info;let e=process.env.LOG_LEVEL?.toLowerCase();return e&&e in m?m[e]:m.info}_shouldLog(e){return m[e]>=this._level}_formatMessage(e,o,t={}){let i=new Date().toISOString(),s=`${this._getPrefix(e)} ${o}`;return Object.keys(t).length>0&&(s+=b.dim(` ${JSON.stringify(t)}`)),s}_getPrefix(e){return{debug:b.gray("[DEBUG]"),info:b.cyan("[INFO]"),warn:b.yellow("[WARN]"),error:b.red("\u274C [ERROR]")}[e]||""}debug(e,o){this._shouldLog("debug")&&console.log(this._formatMessage("debug",e,o))}info(e,o){this._shouldLog("info")&&console.log(this._formatMessage("info",e,o))}warn(e,o){this._shouldLog("warn")&&console.warn(this._formatMessage("warn",e,o))}error(e,o){this._shouldLog("error")&&console.error(this._formatMessage("error",e,o))}setLevel(e){e in m&&(this._level=m[e])}getLevel(){return Object.keys(m).find(e=>m[e]===this._level)}},l=new B;import{timeline as G,Timeline as Ne,WORKFLOW_GRAPH_LOG_MARKER_PREFIX as Pe}from"@zibby/agent-workflow";var Q=[{alias:"auto",canonicalId:"claude-sonnet-4-6",vendor:"claude",family:"claude-sonnet-4",isDefault:!0},{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,aliasOf:"auto"},{alias:"sonnet-4-6",canonicalId:"claude-sonnet-4-6",vendor:"claude",family:"claude-sonnet-4",aliasOf:"auto"},{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"},{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:"auto"},{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:"auto",canonicalId:"gpt-5.6-luna",vendor:"codex",family:"gpt-5",isDefault:!0},{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.2-codex",vendor:"codex",label:"Codex \xB7 GPT-5.2",family:"gpt-5",pickerVisible:!0},{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.3",vendor:"codex",label:"Codex \xB7 GPT-5.3",family:"gpt-5",pickerVisible:!0},{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:"auto",canonicalId:"gemini-3-pro",vendor:"gemini",family:"gemini-3",isDefault:!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 P(n){let e={};for(let o of Q)o.vendor===n&&(e[o.alias]=o.canonicalId);return e}function ee(n,e){let o=typeof e=="string"?e.trim():"";if(o&&o!=="auto")return o;if(o==="auto"&&Q.some(t=>t.vendor===n&&t.isDefault))return"auto";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 Me=P("claude"),Y=P("codex"),we=P("gemini"),De={CURSOR_AGENT_DEFAULT:1200*1e3,OPENAI_REQUEST:18e4};function V(n){let e=`${n}_POOL`,o=process.env[e];if(!o||typeof o!="string")return{picked:null,count:0,dispose:()=>{}};let t=o.split(/[,\n]+/).map(s=>s.trim()).filter(Boolean);if(t.length===0)return{picked:null,count:0,dispose:()=>{}};let i=t[Math.floor(Math.random()*t.length)],a=process.env[n];return process.env[n]=i,l.debug(`[auth-pool] ${n}: picked 1 of ${t.length} from pool (***${i.slice(-4)})`),{picked:i,count:t.length,dispose(){a===void 0?delete process.env[n]:process.env[n]=a}}}function U(n){if(Array.isArray(n))return n.map(U);if(n&&typeof n=="object"){let e={};for(let[o,t]of Object.entries(n))t!==null&&(e[o]=U(t));return e}return n}var ne=class extends pe{constructor(){super("codex","Codex (OpenAI)",75)}canHandle(e){if(!!!(process.env.OPENAI_API_KEY||process.env.OPENAI_API_KEY_POOL||process.env.CODEX_API_KEY||process.env.CODEX_API_KEY_POOL))return l.debug("CodexAgentStrategy: OPENAI_API_KEY or CODEX_API_KEY not set"),!1;try{return A("codex --version",{encoding:"utf-8",timeout:5e3,stdio:"pipe"}),!0}catch{return l.warn("[Codex] codex CLI not found. Install: npm install -g @openai/codex"),!1}}async invoke(e,o={}){let{model:t,workspace:i=process.cwd(),schema:a=null,images:s=[],skills:g=null,plugins:c=null,sessionPath:v=null,nodeName:_=null,timeout:$,config:Oe={},signal:J=null}=o,oe=[V("OPENAI_API_KEY"),V("CODEX_API_KEY")];try{let{Codex:L}=await import("@openai/codex-sdk"),x=ee("codex",t),S=Y[x]||x;Y[x]&&x!==S&&l.debug(`Mapped model: ${x} \u2192 ${S}`),l.debug(`Invoking Codex SDK with model: ${S}, skills: ${JSON.stringify(g)}`);let k=process.env.CODEX_API_KEY||process.env.OPENAI_API_KEY;k&&!process.env.CODEX_API_KEY&&(process.env.CODEX_API_KEY=k);let te=k?` | key: ***${k.slice(-4)}`:" | key: not set";if(console.log(`
|
|
2
|
+
\u25C6 Model: ${S}${te}
|
|
3
3
|
`),Array.isArray(c)&&c.length>0){let r=this._resolveCodexHome(v);process.env.CODEX_HOME=r;try{j(r,{recursive:!0})}catch{}this._ensurePlugins(c,r)}let T=(await import("chalk")).default;console.log(`
|
|
4
4
|
${T.bold("Prompt sent to LLM:")}`),console.log(T.dim("\u2500".repeat(60))),console.log(T.dim(e)),console.log(T.dim("\u2500".repeat(60)));let O=this._resolveSkillsToMcp(g,{sessionPath:v,workspace:i,nodeName:_});for(let r of o.extraMcpServers||[])if(r&&r.serverName&&r.def){if(Object.prototype.hasOwnProperty.call(O,r.serverName)){console.warn(`[custom-mcp] skip "${r.serverName}" \u2014 a built-in skill already owns that MCP name (no shadowing)`);continue}let p=R("codex",r.def);p&&(O[r.serverName]=p)}let N={};Object.keys(O).length>0&&(N.mcp_servers=O,Object.values(O).some(r=>r&&typeof r.url=="string")&&(N.experimental_use_rmcp_client=!0),l.debug(`[Codex] MCP servers: ${Object.keys(O).join(", ")}`));let F=this._resolveCodexBin(),ie=new L({...F?{codexPathOverride:F}:{},...Object.keys(N).length>0&&{config:N},env:z(process.env)}),E=i;try{E&&j(E,{recursive:!0})}catch{}(!E||!ye(E))&&(E=process.cwd());let ae=ie.startThread({workingDirectory:E,skipGitRepoCheck:!0,approvalPolicy:"never",sandboxMode:"danger-full-access",networkAccessEnabled:!0}),X=a&&typeof a.parse=="function",M={};if(a)try{let r=X?W(a,{target:"openAi"}):a;M.outputSchema=r,l.debug("Structured output via SDK outputSchema")}catch(r){l.warn(`[Codex] Schema conversion failed, will extract from text: ${r.message}`)}let w=Array.isArray(s)?s.filter(r=>r&&typeof r.path=="string"&&r.path.startsWith("/")):[];if(w.length&&(e=`${e}
|
|
5
5
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{AgentStrategy as Ne,getSkill as we}from"@zibby/agent-workflow";import _e from"node:process";var Se=Object.freeze(["PROJECT_API_TOKEN","ZIBBY_USER_TOKEN","GITHUB_TOKEN","GITLAB_TOKEN","GITLAB_OAUTH_TOKEN","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 se(r=_e.env){let e={},t=new Set(Se);for(let[n,i]of Object.entries(r))t.has(n)||i!==void 0&&(e[n]=i);return e}function be(r){return!!r&&(r.transport==="http"||typeof r.url=="string"&&!r.command)}function q(r,e,{processEnv:t}={}){if(!e)return null;if(be(e)){let i=String(e.url||"").trim();if(!i)return null;let o=e.headers&&typeof e.headers=="object"?e.headers:void 0;switch(r){case"claude":return{type:"http",url:i,...o&&{headers:o}};case"codex":return{url:i,...o&&{http_headers:o}};case"gemini":return{url:i,type:"http",...o&&{headers:o}};case"cursor":return{url:i,...o&&{headers:o}};default:return{type:"http",url:i,...o&&{headers:o}}}}let n={command:e.command};return e.args?.length&&(n.args=e.args),e.cwd&&(n.cwd=e.cwd),t?n.env={...t,...e.env||{}}:e.env&&Object.keys(e.env).length&&(n.env=e.env),n}import{execSync as ke,spawn as Pe}from"node:child_process";import{z as oe}from"zod";import{zodToJsonSchema as xe}from"zod-to-json-schema";function ve(r){if(!r||typeof r!="object")return r;if(Array.isArray(r.type))return r.type.includes("null")||(r.type=[...r.type,"null"]),r;if(typeof r.type=="string")return r.type=[r.type,"null"],r;for(let e of["anyOf","oneOf"])if(Array.isArray(r[e]))return r[e].some(t=>t&&t.type==="null")||(r[e]=[...r[e],{type:"null"}]),r;return{anyOf:[r,{type:"null"}]}}function k(r){if(!r||typeof r!="object")return r;for(let e of["$defs","definitions"])if(r[e]&&typeof r[e]=="object")for(let t of Object.keys(r[e]))r[e][t]=k(r[e][t]);for(let e of["anyOf","oneOf","allOf"])Array.isArray(r[e])&&(r[e]=r[e].map(k));if(r.properties&&typeof r.properties=="object"){r.additionalProperties=!1;let e=Object.keys(r.properties),t=new Set(Array.isArray(r.required)?r.required:[]);for(let n of e){let i=k(r.properties[n]);t.has(n)||(i=ve(i)),r.properties[n]=i}r.required=e}return r.items&&(Array.isArray(r.items)?r.items=r.items.map(k):r.items=k(r.items)),r}function ae(r,e={target:"openApi3"}){if(!r)return null;let t=e?.target==="openAi",n=null;if(typeof oe?.toJSONSchema=="function")try{n=oe.toJSONSchema(r)}catch{}if(!n)try{n=xe(r,e)}catch{return null}if(t&&n)try{return k(n)}catch{return n}return n}import{existsSync as de,mkdirSync as pe,readFileSync as me,rmSync as Ce,writeFileSync as ge}from"node:fs";import{join as v}from"node:path";import G from"chalk";var g={debug:0,info:1,warn:2,error:3,silent:4},X=class{constructor(){this._level=this._getLogLevel()}_getLogLevel(){if(process.env.ZIBBY_DEBUG==="true")return g.debug;if(process.env.ZIBBY_VERBOSE==="true")return g.info;let e=process.env.LOG_LEVEL?.toLowerCase();return e&&e in g?g[e]:g.info}_shouldLog(e){return g[e]>=this._level}_formatMessage(e,t,n={}){let i=new Date().toISOString(),s=`${this._getPrefix(e)} ${t}`;return Object.keys(n).length>0&&(s+=G.dim(` ${JSON.stringify(n)}`)),s}_getPrefix(e){return{debug:G.gray("[DEBUG]"),info:G.cyan("[INFO]"),warn:G.yellow("[WARN]"),error:G.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 g&&(this._level=g[e])}getLevel(){return Object.keys(g).find(e=>g[e]===this._level)}},u=new X;var le=[{alias:"auto",canonicalId:"claude-sonnet-4-6",vendor:"claude",family:"claude-sonnet-4",isDefault:!0},{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,aliasOf:"auto"},{alias:"sonnet-4-6",canonicalId:"claude-sonnet-4-6",vendor:"claude",family:"claude-sonnet-4",aliasOf:"auto"},{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"},{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:"auto"},{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:"auto",canonicalId:"gpt-5.6-luna",vendor:"codex",family:"gpt-5",isDefault:!0},{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.2-codex",vendor:"codex",label:"Codex \xB7 GPT-5.2",family:"gpt-5",pickerVisible:!0},{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.3",vendor:"codex",label:"Codex \xB7 GPT-5.3",family:"gpt-5",pickerVisible:!0},{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:"auto",canonicalId:"gemini-3-pro",vendor:"gemini",family:"gemini-3",isDefault:!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 $(r){let e={};for(let t of le)t.vendor===r&&(e[t.alias]=t.canonicalId);return e}function ce(r,e){let t=typeof e=="string"?e.trim():"";if(t&&t!=="auto")return t;if(t==="auto"&&le.some(n=>n.vendor===r&&n.isDefault))return"auto";throw new Error(`[${r}] 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 ze=$("claude"),He=$("codex"),ue=$("gemini"),je={CURSOR_AGENT_DEFAULT:1200*1e3,OPENAI_REQUEST:18e4};import{z as fe}from"zod";import{zodToJsonSchema as Te}from"zod-to-json-schema";function Ae(r){if(!r)return null;if(typeof fe?.toJSONSchema=="function")try{return fe.toJSONSchema(r)}catch{}try{return Te(r,{target:"openApi3"})}catch{return null}}var D=class{static generateFileOutputInstructions(e,t){let n;typeof e?.parse=="function"?n=Ae(e):n=e;let i=this._buildExample(n);return`
|
|
1
|
+
import{AgentStrategy as Ne,getSkill as we}from"@zibby/agent-workflow";import _e from"node:process";var Se=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 se(r=_e.env){let e={},t=new Set(Se);for(let[n,i]of Object.entries(r))t.has(n)||i!==void 0&&(e[n]=i);return e}function be(r){return!!r&&(r.transport==="http"||typeof r.url=="string"&&!r.command)}function q(r,e,{processEnv:t}={}){if(!e)return null;if(be(e)){let i=String(e.url||"").trim();if(!i)return null;let o=e.headers&&typeof e.headers=="object"?e.headers:void 0;switch(r){case"claude":return{type:"http",url:i,...o&&{headers:o}};case"codex":return{url:i,...o&&{http_headers:o}};case"gemini":return{url:i,type:"http",...o&&{headers:o}};case"cursor":return{url:i,...o&&{headers:o}};default:return{type:"http",url:i,...o&&{headers:o}}}}let n={command:e.command};return e.args?.length&&(n.args=e.args),e.cwd&&(n.cwd=e.cwd),t?n.env={...t,...e.env||{}}:e.env&&Object.keys(e.env).length&&(n.env=e.env),n}import{execSync as ke,spawn as Pe}from"node:child_process";import{z as oe}from"zod";import{zodToJsonSchema as xe}from"zod-to-json-schema";function ve(r){if(!r||typeof r!="object")return r;if(Array.isArray(r.type))return r.type.includes("null")||(r.type=[...r.type,"null"]),r;if(typeof r.type=="string")return r.type=[r.type,"null"],r;for(let e of["anyOf","oneOf"])if(Array.isArray(r[e]))return r[e].some(t=>t&&t.type==="null")||(r[e]=[...r[e],{type:"null"}]),r;return{anyOf:[r,{type:"null"}]}}function k(r){if(!r||typeof r!="object")return r;for(let e of["$defs","definitions"])if(r[e]&&typeof r[e]=="object")for(let t of Object.keys(r[e]))r[e][t]=k(r[e][t]);for(let e of["anyOf","oneOf","allOf"])Array.isArray(r[e])&&(r[e]=r[e].map(k));if(r.properties&&typeof r.properties=="object"){r.additionalProperties=!1;let e=Object.keys(r.properties),t=new Set(Array.isArray(r.required)?r.required:[]);for(let n of e){let i=k(r.properties[n]);t.has(n)||(i=ve(i)),r.properties[n]=i}r.required=e}return r.items&&(Array.isArray(r.items)?r.items=r.items.map(k):r.items=k(r.items)),r}function ae(r,e={target:"openApi3"}){if(!r)return null;let t=e?.target==="openAi",n=null;if(typeof oe?.toJSONSchema=="function")try{n=oe.toJSONSchema(r)}catch{}if(!n)try{n=xe(r,e)}catch{return null}if(t&&n)try{return k(n)}catch{return n}return n}import{existsSync as de,mkdirSync as pe,readFileSync as me,rmSync as Ce,writeFileSync as ge}from"node:fs";import{join as v}from"node:path";import G from"chalk";var g={debug:0,info:1,warn:2,error:3,silent:4},X=class{constructor(){this._level=this._getLogLevel()}_getLogLevel(){if(process.env.ZIBBY_DEBUG==="true")return g.debug;if(process.env.ZIBBY_VERBOSE==="true")return g.info;let e=process.env.LOG_LEVEL?.toLowerCase();return e&&e in g?g[e]:g.info}_shouldLog(e){return g[e]>=this._level}_formatMessage(e,t,n={}){let i=new Date().toISOString(),s=`${this._getPrefix(e)} ${t}`;return Object.keys(n).length>0&&(s+=G.dim(` ${JSON.stringify(n)}`)),s}_getPrefix(e){return{debug:G.gray("[DEBUG]"),info:G.cyan("[INFO]"),warn:G.yellow("[WARN]"),error:G.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 g&&(this._level=g[e])}getLevel(){return Object.keys(g).find(e=>g[e]===this._level)}},u=new X;var le=[{alias:"auto",canonicalId:"claude-sonnet-4-6",vendor:"claude",family:"claude-sonnet-4",isDefault:!0},{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,aliasOf:"auto"},{alias:"sonnet-4-6",canonicalId:"claude-sonnet-4-6",vendor:"claude",family:"claude-sonnet-4",aliasOf:"auto"},{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"},{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:"auto"},{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:"auto",canonicalId:"gpt-5.6-luna",vendor:"codex",family:"gpt-5",isDefault:!0},{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.2-codex",vendor:"codex",label:"Codex \xB7 GPT-5.2",family:"gpt-5",pickerVisible:!0},{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.3",vendor:"codex",label:"Codex \xB7 GPT-5.3",family:"gpt-5",pickerVisible:!0},{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:"auto",canonicalId:"gemini-3-pro",vendor:"gemini",family:"gemini-3",isDefault:!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 $(r){let e={};for(let t of le)t.vendor===r&&(e[t.alias]=t.canonicalId);return e}function ce(r,e){let t=typeof e=="string"?e.trim():"";if(t&&t!=="auto")return t;if(t==="auto"&&le.some(n=>n.vendor===r&&n.isDefault))return"auto";throw new Error(`[${r}] 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 ze=$("claude"),He=$("codex"),ue=$("gemini"),je={CURSOR_AGENT_DEFAULT:1200*1e3,OPENAI_REQUEST:18e4};import{z as fe}from"zod";import{zodToJsonSchema as Te}from"zod-to-json-schema";function Ae(r){if(!r)return null;if(typeof fe?.toJSONSchema=="function")try{return fe.toJSONSchema(r)}catch{}try{return Te(r,{target:"openApi3"})}catch{return null}}var D=class{static generateFileOutputInstructions(e,t){let n;typeof e?.parse=="function"?n=Ae(e):n=e;let i=this._buildExample(n);return`
|
|
2
2
|
\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550
|
|
3
3
|
\u{1F6A8} MANDATORY: WRITE RESULT TO FILE \u{1F6A8}
|
|
4
4
|
\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550
|