@crewx/sdk 0.9.0-rc.212 → 0.9.0-rc.214
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/esm/history-snapshot/index.js +8 -8
- package/dist/esm/index.js +301 -301
- package/dist/esm/plugins/index.js +1 -1
- package/dist/esm/repository/index.js +1 -1
- package/dist/facade/Crewx.d.ts +29 -0
- package/dist/history-snapshot/index.d.ts +1 -0
- package/dist/history-snapshot/index.js +8 -8
- package/dist/index.browser.js +1 -1
- package/dist/index.js +298 -298
- package/dist/plugins/index.js +1 -1
- package/dist/provider/cli/adapters/opencode.d.ts +1 -0
- package/dist/repository/index.js +1 -1
- package/dist/route/types.d.ts +20 -0
- package/dist/types/index.d.ts +10 -0
- package/package.json +1 -1
|
@@ -80,7 +80,7 @@ ${r.join(`
|
|
|
80
80
|
active = excluded.active,
|
|
81
81
|
time_created = excluded.time_created,
|
|
82
82
|
time_updated = excluded.time_updated
|
|
83
|
-
`);r.transaction(i=>{for(let c of i)o.run(c);})(n);}finally{r.close();}}function Og(t){if(!t)return [];let e=[];for(let n=0;n<t.length;n+=1){let r=t[n];if(r==="-s"||r==="--session"){let o=t[n+1],s=o!==void 0&&!o.startsWith("-");e.push({sessionId:s?o:void 0}),s&&(n+=1);continue}(r.startsWith("--session=")||r.startsWith("-s="))&&e.push({sessionId:r.slice(r.indexOf("=")+1)||void 0});}return e}function vg(t){if(!t)return;let e=[];for(let n=0;n<t.length;n+=1){let r=t[n];if(r==="-s"||r==="--session"){t[n+1]!==void 0&&!t[n+1].startsWith("-")&&(n+=1);continue}r.startsWith("--session=")||r.startsWith("-s=")||e.push(r);}return e}function wo(t){let e=vg(t.additionalArgs);return {...t,...e===void 0?{}:{additionalArgs:e},resumeSessionId:void 0}}function Cg(t,e){try{return !!t.prepare("SELECT id FROM session_v2 WHERE id = ?").get(e)}catch(n){if(n instanceof Error&&/no such table: session_v2/i.test(n.message))return false;throw n}}function xg(t,e,n){let r=new t(e,{readonly:true,fileMustExist:true});try{return Cg(r,n)}finally{r.close();}}async function Qs(t,e={}){let n;try{n=await(e.loadSqlite??wg)();}catch{throw new G("OpenCode isolation requires the optional better-sqlite3 dependency. Install it and retry.","cli/opencode",{code:"INVALID_PROVIDER_FORMAT",kind:"config"})}let r=e.crewxHome??To(),o=gr(r),s=hr(r),i=Eg(s),c=Rg(e.userDataHome),d=Ig(n,c);if(d.length>0){if(!eu(n,i))try{await(e.initializeDatabase??Ag)(o);}catch{throw new G("Could not initialize the isolated OpenCode credential database.","cli/opencode",{code:"INVALID_PROVIDER_FORMAT",kind:"config"})}if(!eu(n,i))throw new G("The isolated OpenCode credential database is unavailable.","cli/opencode",{code:"INVALID_PROVIDER_FORMAT",kind:"config"});try{Ng(n,i,d);}catch{throw new G("Could not copy API-key credentials into the isolated OpenCode database.","cli/opencode",{code:"INVALID_PROVIDER_FORMAT",kind:"config"})}}let u=Og(t.additionalArgs),l=u.map(_=>_.sessionId),p=u.length>0?l[l.length-1]:t.resumeSessionId;if(!p)return u.length>0?wo(t):t;if(l.some(_=>_!==p)||!existsSync(i))return wo(t);try{return xg(n,i,p)?{...t,resumeSessionId:p}:wo(t)}catch{throw new G("Could not read the isolated OpenCode session database safely.","cli/opencode",{code:"INVALID_PROVIDER_FORMAT",kind:"config"})}}var Zs=x(()=>{g();Ht();Xs();Zc();});function cn(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}async function ei(){let t;try{let n=(await import('better-sqlite3')).default,r=join(hr(),"opencode.db");t=new n(r,{readonly:!0,fileMustExist:!0});let o=t.prepare("SELECT value FROM kv WHERE key = ?").get("models-dev:v2:catalog");if(!o||typeof o.value!="string")throw new Error("OpenCode model catalog row is unavailable");let s=JSON.parse(o.value);if(!cn(s))throw new Error("OpenCode model catalog shape is unavailable");let i=typeof s.body=="string"?JSON.parse(s.body):s.body;if(!cn(i))throw new Error("OpenCode model catalog body shape is unavailable");let c=new Map;for(let[d,u]of Object.entries(i)){if(!d||!cn(u)||!cn(u.models))throw new Error("OpenCode model provider shape is unavailable");for(let[l,p]of Object.entries(u.models)){if(!l||!cn(p))throw new Error("OpenCode model shape is unavailable");let _=p.capabilities;if(_===void 0)continue;if(!cn(_))throw new Error("OpenCode model capability shape is unavailable");let h=_.reasoning;if(h===void 0)continue;if(!cn(h))throw new Error("OpenCode reasoning capability shape is unavailable");let m=h.effort;Array.isArray(m)&&m.
|
|
83
|
+
`);r.transaction(i=>{for(let c of i)o.run(c);})(n);}finally{r.close();}}function Og(t){if(!t)return [];let e=[];for(let n=0;n<t.length;n+=1){let r=t[n];if(r==="-s"||r==="--session"){let o=t[n+1],s=o!==void 0&&!o.startsWith("-");e.push({sessionId:s?o:void 0}),s&&(n+=1);continue}(r.startsWith("--session=")||r.startsWith("-s="))&&e.push({sessionId:r.slice(r.indexOf("=")+1)||void 0});}return e}function vg(t){if(!t)return;let e=[];for(let n=0;n<t.length;n+=1){let r=t[n];if(r==="-s"||r==="--session"){t[n+1]!==void 0&&!t[n+1].startsWith("-")&&(n+=1);continue}r.startsWith("--session=")||r.startsWith("-s=")||e.push(r);}return e}function wo(t){let e=vg(t.additionalArgs);return {...t,...e===void 0?{}:{additionalArgs:e},resumeSessionId:void 0}}function Cg(t,e){try{return !!t.prepare("SELECT id FROM session_v2 WHERE id = ?").get(e)}catch(n){if(n instanceof Error&&/no such table: session_v2/i.test(n.message))return false;throw n}}function xg(t,e,n){let r=new t(e,{readonly:true,fileMustExist:true});try{return Cg(r,n)}finally{r.close();}}async function Qs(t,e={}){let n;try{n=await(e.loadSqlite??wg)();}catch{throw new G("OpenCode isolation requires the optional better-sqlite3 dependency. Install it and retry.","cli/opencode",{code:"INVALID_PROVIDER_FORMAT",kind:"config"})}let r=e.crewxHome??To(),o=gr(r),s=hr(r),i=Eg(s),c=Rg(e.userDataHome),d=Ig(n,c);if(d.length>0){if(!eu(n,i))try{await(e.initializeDatabase??Ag)(o);}catch{throw new G("Could not initialize the isolated OpenCode credential database.","cli/opencode",{code:"INVALID_PROVIDER_FORMAT",kind:"config"})}if(!eu(n,i))throw new G("The isolated OpenCode credential database is unavailable.","cli/opencode",{code:"INVALID_PROVIDER_FORMAT",kind:"config"});try{Ng(n,i,d);}catch{throw new G("Could not copy API-key credentials into the isolated OpenCode database.","cli/opencode",{code:"INVALID_PROVIDER_FORMAT",kind:"config"})}}let u=Og(t.additionalArgs),l=u.map(_=>_.sessionId),p=u.length>0?l[l.length-1]:t.resumeSessionId;if(!p)return u.length>0?wo(t):t;if(l.some(_=>_!==p)||!existsSync(i))return wo(t);try{return xg(n,i,p)?{...t,resumeSessionId:p}:wo(t)}catch{throw new G("Could not read the isolated OpenCode session database safely.","cli/opencode",{code:"INVALID_PROVIDER_FORMAT",kind:"config"})}}var Zs=x(()=>{g();Ht();Xs();Zc();});function cn(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}async function ei(){let t;try{let n=(await import('better-sqlite3')).default,r=join(hr(),"opencode.db");t=new n(r,{readonly:!0,fileMustExist:!0});let o=t.prepare("SELECT value FROM kv WHERE key = ?").get("models-dev:v2:catalog");if(!o||typeof o.value!="string")throw new Error("OpenCode model catalog row is unavailable");let s=JSON.parse(o.value);if(!cn(s))throw new Error("OpenCode model catalog shape is unavailable");let i=typeof s.body=="string"?JSON.parse(s.body):s.body;if(!cn(i))throw new Error("OpenCode model catalog body shape is unavailable");let c=new Map;for(let[d,u]of Object.entries(i)){if(!d||!cn(u)||!cn(u.models))throw new Error("OpenCode model provider shape is unavailable");for(let[l,p]of Object.entries(u.models)){if(!l||!cn(p))throw new Error("OpenCode model shape is unavailable");let _=p.capabilities;if(_===void 0)continue;if(!cn(_))throw new Error("OpenCode model capability shape is unavailable");let h=_.reasoning;if(h===void 0)continue;if(!cn(h))throw new Error("OpenCode reasoning capability shape is unavailable");let m=h.effort;(m===void 0||Array.isArray(m)&&m.every(k=>typeof k=="string"))&&c.set(`${d}/${l}`,Array.isArray(m)?m:[]);}}return c}catch{return console.debug("[opencode] could not read private model effort catalog; omitting effort choices"),new Map}finally{try{t?.close();}catch{}}}var nu=x(()=>{g();ni();zc();Xc();Xs();Zs();Ut();});function Hg(t){return t?$g[t]??{agent:"build",autoApprove:false}:{agent:void 0,autoApprove:false}}function Je(t,e){return t.some(n=>n===e||n.startsWith(`${e}=`))}function Ug(){let t;try{t=hr();}catch{return ei().catch(()=>new Map)}let e=Date.now();if(ru===t&&Eo&&Eo.expiresAt>e)return Eo.result;ru=t;let n=ei().catch(()=>new Map);return Eo={expiresAt:e+Mg,result:n},n}async function qg(t){let e=await Qs(t),n=t.additionalArgs??[],r=Je(n,"--model")||Je(n,"-m");if(!t.model||!t.effort||r)return e;let o=(await Ug()).get(t.model);return !o||o.includes(t.effort)?e:(console.debug("[opencode] requested effort is not listed for this model; using OpenCode default"),{...e,effort:void 0})}function du(t){let e=[],n=0,r=false,o=false,s=0;for(let c=0;c<t.length;c++){let d=t[c];if(o){o=false;continue}if(d==="\\"&&r){o=true;continue}if(d==='"'){r=!r;continue}if(!r){if(d==="{")n++;else if(d==="}"&&(n--,n===0)){let u=t.slice(s,c+1).trim();u&&e.push(u),s=c+1;}}}let i=t.slice(s).trim();return i&&e.push(i),e}function ae(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function cu(t){let e=ae(t.part)?t.part:void 0;return t.type==="reasoning"||e?.type==="reasoning"}function Fg(t){let e=ae(t.part)?t.part:void 0;return (typeof e?.text=="string"?e.text:typeof t.text=="string"?t.text:void 0)?.trim()||void 0}function Bg(t){let e=[],n=false;for(let r of t.split(/\r?\n/)){let o=r.trim();if(!o)continue;try{let i=JSON.parse(o);ae(i)?e.push(i):n=!0;continue}catch{}let s=du(o);s.length>1&&console.warn("[opencode] extractText: falling back to concatenated-JSON split for a malformed line");for(let i of s)try{let c=JSON.parse(i);ae(c)?e.push(c):n=!0;}catch{n=true;}}return {events:e,malformed:n}}function si(t){let e=ae(t.error)?t.error:void 0,n=e&&ae(e.data)?e.data:void 0,r=uu(e),o=ze(e?.name),s=ze(n?.message)??ze(e?.message)??ri(r)??ze(t.message)??ze(t.errorMessage)??ze(t.error),i=ze(t.ref),c=o&&s&&o!==s?`${o}: ${s}`:o??s??au;return (i?`${c} (ref: ${i})`:c).slice(0,Pg)}function ou(t){let e=ae(t.error)?t.error:void 0,n=typeof e?.type=="string"?e.type:void 0,r=typeof e?.status=="number"?e.status:Number(e?.status),o=si(t),s=uu(e),i=s&&ae(s.error)?s.error:void 0,c=typeof i?.type=="string"?i.type:void 0,d=[o,ri(s)].filter(Boolean).join(`
|
|
84
84
|
`);if(r===402||Wg(d))return new G(`OpenCode subscription is required: ${o}`,Ue,{code:"SUBSCRIPTION_REQUIRED",kind:"config",providerReason:_r(o)});if(r===403&&(c==="RegionError"||c==="FreeTierError"))return new G(`OpenCode account settings are required: ${o}`,Ue,{code:"ACCOUNT_SETTING_REQUIRED",kind:"config",settingReason:"access",providerReason:_r(o)});if(n==="provider.auth"||r===401||r===403)return new G(`OpenCode authentication is required: ${o}`,Ue,{code:"AUTH_REQUIRED",kind:"config"});if(r===410||c==="ModelDeprecated")return new G(`OpenCode model has been retired: ${o}`,Ue,{code:"MODEL_RETIRED",kind:"config",replacementModel:Gg(s,e,t),providerReason:_r(o)});if(n==="provider.free-limit"||r===429){let u=jg(e);return new G(`OpenCode rate limit reached: ${o}`,Ue,{code:"RATE_LIMITED",kind:"transient",...u===void 0?{}:{retryAfterMs:u}})}if(n==="provider.no-route")return new G(`OpenCode model or variant unavailable: ${o}`,Ue,{code:"MODEL_UNAVAILABLE",kind:"config"});if(n==="provider.invalid-request"&&r===400){let u=[o,ri(s)].filter(h=>h!==void 0),l=u.find(h=>/requires global regions/i.test(h)),p=u.find(h=>/trains on request data/i.test(h)),_=l?"region":p?"training_consent":void 0;if(_)return new G(`OpenCode account settings are required: ${o}`,Ue,{code:"ACCOUNT_SETTING_REQUIRED",kind:"config",settingReason:_,providerReason:_r(l??p)})}return new G(`OpenCode error: ${o}`,Ue,{code:"PROVIDER_CRASHED",kind:"transient"})}function uu(t){let n=(t&&ae(t.response)?t.response:void 0)?.body;if(ae(n))return n;if(typeof n=="string")try{let r=JSON.parse(n);return ae(r)?r:void 0}catch{return}}function ri(t){let e=t&&ae(t.error)?t.error:void 0;return ze(e?.message)??ze(t?.message)}function Wg(t){return /insufficient\s+(?:balance|account funds)|credit\s+limit\s+exceeded|payment\s+required|account invoice is overdue|billing_error|please add or update your payment method|(?:GLM Coding Plan|enterprise) package has expired|your current subscription plan does not yet include access to/i.test(t)}function Gg(t,e,n){let r=t&&ae(t.metadata)?t.metadata:void 0,o=typeof r?.replacement=="string"?r.replacement.trim():void 0;if(!o)return;let s=[r?.model,e?.model,n.model,n.modelID].find(d=>typeof d=="string"&&d.trim().length>0)?.trim(),i=s&&s.includes("/")?s.slice(0,s.indexOf("/")):"opencode-go",c=o.includes("/")?o:`${i}/${o}`;return /^[A-Za-z0-9._/-]{1,128}$/.test(c)?c:void 0}function jg(t){let e=t?.retryAfterMs;if(typeof e=="number"&&Number.isFinite(e)&&e>=0)return e;let r=(t&&ae(t.response)?t.response:void 0)?.body,o=typeof r=="string"?Kg(r):ae(r)?r:void 0;if(o){let s=oi(o);if(s)return su(s.value,s.key==="retryafterms")}if(typeof r=="string"){let s=r.match(/retry[-_]after(?:\s*[:=]\s*|\s+)["']?([^"'\s,;}]+)/i);if(s?.[1])return su(s[1],false)}}function Kg(t){try{let e=JSON.parse(t);return ae(e)?e:void 0}catch{return}}function oi(t){if(Array.isArray(t)){for(let e of t){let n=oi(e);if(n)return n}return}if(ae(t)){for(let[e,n]of Object.entries(t)){let r=e.toLowerCase().replace(/[-_]/g,"");if(r==="retryafterms"||r==="retryafter")return {value:n,key:r}}for(let e of Object.values(t)){let n=oi(e);if(n)return n}}}function su(t,e){if(typeof t=="number"&&Number.isFinite(t)&&t>=0)return e?t:Math.round(t*1e3);if(typeof t!="string"||!t.trim())return;let n=Number(t);if(Number.isFinite(n)&&n>=0)return e?n:Math.round(n*1e3);if(e)return;let r=Date.parse(t);return Number.isFinite(r)?Math.max(0,r-Date.now()):void 0}function iu(t){let e=Bg(t),n=[],r=null,o=0,s=[],i=[],c,d=false;for(let u of e.events){if(cu(u))continue;let l=typeof u.type=="string"?u.type:void 0;if(l){if(l==="text"){let p=ae(u.part)?u.part:void 0,_=typeof p?.text=="string"?p.text:void 0;_?.trim()&&n.push(_.trim());continue}if(l==="result"){typeof u.result=="string"&&(r=u.result);continue}if(l==="tool_use"){o++;continue}if(l==="error"){s.push(u),i.push(si(u));continue}if(l==="step_finish"){d=true;let p=ae(u.part)?u.part:void 0;c=typeof p?.reason=="string"?p.reason:void 0;}}}return {...e,texts:n,resultText:r,toolUseCount:o,errorEvents:s,errorMessages:i,terminalReason:c,hasTerminal:d}}function lu(t){return (t??"unknown").trim().toLowerCase().replace(/_/g,"-")}function zg(){return new G("OpenCode returned no assistant output.",Ue,{code:"EMPTY_OUTPUT",kind:"transient"})}function Jg(){return new G("OpenCode emitted malformed JSON output.",Ue,{code:"PROVIDER_CRASHED",kind:"transient"})}function Vg(t,e){switch(lu(t)){case "length":return new G("OpenCode stopped because the context window was exceeded.",Ue,{code:"UNKNOWN",kind:"permanent"});case "content-filter":return new G("OpenCode stopped because the content filter blocked the response.",Ue,{code:"UNKNOWN",kind:"permanent"});case "error":return new G(`${au} while generating a response.`,Ue,{code:"PROVIDER_CRASHED",kind:"transient"});default:return null}}var Dg,Ue,au,Pg,Lg,Mg,ru,Eo,$g,ii,ai=x(()=>{g();Ht();Kc();pr();On();an();nu();Zs();Dg=new Set(["step_start","step_finish"]),Ue="cli/opencode",au="OpenCode provider error",Pg=240,Lg="Follow the instructions provided on standard input.",Mg=3e5,$g={build:{agent:"build",autoApprove:false},"build-auto":{agent:"build",autoApprove:true},plan:{agent:"plan",autoApprove:false},"plan-auto":{agent:"plan",autoApprove:true}};ii={command:"opencode",prepare:qg,meta:{displayName:"OpenCode",capabilities:{resume:true}},buildArgs(t,e,n){let r=e.additionalArgs,o=r!==void 0?[...r]:["run"];Je(o,"--format")||o.push("--format","json"),Je(o,"--thinking")||o.push("--thinking"),!Je(o,"--standalone")&&!Je(o,"--server")&&o.push("--standalone"),e.resumeSessionId&&!Je(o,"-s")&&!Je(o,"--session")&&o.push("-s",e.resumeSessionId);let{agent:s,autoApprove:i}=Hg(e.mode);Je(o,"--agent")||s!==void 0&&o.push("--agent",s),i&&!Je(o,"--auto")&&o.push("--auto");let c=Je(o,"--model")||Je(o,"-m");if(e.model&&!c){let d=e.effort?`${e.model}#${e.effort}`:e.model;o.push("--model",d);}else e.effort&&!e.model&&!c&&console.debug("[opencode] ignoring effort because no model is configured");return o.push(Lg),{args:o,stdinMessage:t,env:gr()}},extractText(t){let e=iu(t),n=e.errorEvents[0];if(n)throw ou(n);let r=Vg(e.terminalReason??"");if(r)throw r;let o=e.texts.length>0?e.texts[e.texts.length-1]:void 0;if(o!==void 0)return o;if(e.resultText?.trim())return e.resultText;if(e.malformed)throw Jg();let s=lu(e.terminalReason);if(e.hasTerminal&&s==="tool-calls"&&e.toolUseCount>0)return "";throw zg()},interpretExit(t,e,n=""){if(t===0)return null;let o=iu(n).errorEvents[0];return o?ou(o):null},parseResultMeta(t){let e=Cn(t);return e?{usage:{inputTokens:e.inputTokens,outputTokens:e.outputTokens,cachedInputTokens:e.cachedInputTokens,costUsd:0},model:null}:{usage:null,model:null}},parseEvent(t,e,n){let r=e??new Date().toISOString(),o=[],s=new Map,i;try{JSON.parse(t),i=[t];}catch{i=du(t),i.length>1&&console.warn("[opencode] parseEvent: falling back to concatenated-JSON split for a malformed line");}for(let c of i){let d;try{d=JSON.parse(c);}catch{continue}let u=rt(d,r),l=d.type;if(cu(d)){let p=Fg(d);if(!p)continue;let _=ae(d.part)?d.part:void 0,h=typeof _?.id=="string"?_.id:typeof d.id=="string"?d.id:void 0,m=p;if(h){let k=`opencode.reasoning:${h}`,E=n?.state.get(k),D=typeof E=="string"?E:s.get(h);if(typeof D=="string"&&(D===p||D.startsWith(p))||typeof D=="string"&&p.startsWith(D)&&(m=p.slice(D.length).trim(),!m))continue;s.set(h,p),n?.state.set(k,p);}o.push({timestamp:u,type:"thinking",content:m});continue}if(l){if(l==="text"){let _=d.part?.text;_&&o.push({timestamp:u,type:"text",content:_});continue}if(l==="tool_use"){let p=d.part;if(!p)continue;let _=String(p.tool||""),h=String(p.callID||p.id||""),m=p.state,k=String(m?.status||""),E=m?.input,D=nt(E);if(o.push({timestamp:u,type:"tool_use",toolName:_,toolUseId:h,toolInput:D}),k==="completed"&&m?.output!==void 0){let T=m.output,L=typeof T=="string"?T:JSON.stringify(T);o.push({timestamp:u,type:"tool_result",toolUseId:h,resultPreview:L,isError:false});}else k==="error"&&o.push({timestamp:u,type:"tool_result",toolUseId:h,resultPreview:String(m?.error||"tool error"),isError:true});continue}if(l==="error"){let p=si(d);o.push({timestamp:u,type:"error",content:p,errorMessage:p});continue}}}return o},suppressOutputLine(t){let e=t.trim();if(!e.startsWith("{")||!e.endsWith("}"))return false;try{let r=JSON.parse(e).type;return r?Dg.has(r):!1}catch{return false}}};});var pu=x(()=>{g();});function Ro(t,e){return t.some(n=>n===e||n.startsWith(`${e}=`))}function eh(t,e){let n=[];for(let r=0;r<t.length;r+=1){let o=t[r],s=[...e].find(i=>o===i||o.startsWith(`${i}=`));s?o===s&&r+1<t.length&&(r+=1):n.push(o);}return n}function th(t){let e=[];for(let n=0;n<t.length;n+=1){let r=t[n],o=r.indexOf("="),s=o>0?r.slice(0,o):r;if(!Qg.has(s)){e.push(r);continue}r===s&&n+1<t.length&&!t[n+1].startsWith("-")&&(n+=1);}return e}function Ve(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function nh(t,e){if(!(t?Yg.has(t)||At(di).some(s=>s.id===t):false)||!t)return e;let r=vn(di,t),o=Ws(di)[t]?.defaultEffort;if(r.length!==0)return e?r.includes(e)?e:o&&r.includes(o)?o:void 0:o}function Nt(t){return typeof t=="number"&&Number.isSafeInteger(t)&&t>=0?t:void 0}function li(t){return t.kind==="step_update"?typeof t.step.conversation_id=="string"?t.step.conversation_id:void 0:typeof t.envelope.conversation_id=="string"?t.envelope.conversation_id:void 0}function pi(t){return t.step.step_index}function ie(t){if(typeof t!="string")return;let e=t.split(/\r?\n/,1)[0]?.trim();return e&&po(e)?.slice(0,500).trim()||void 0}function rh(t,e){let n=(t??"").trim().toUpperCase().replace(/[^A-Z0-9]+/g,"_");if(n!=="UNKNOWN"&&Zg.has(n))return n;let r=`${n} ${e??""}`.toLowerCase();return /quota|resource_exhausted|usage[ _-]?limit|credits?.{0,20}exhaust/.test(r)?"QUOTA_EXHAUSTED":/rate[ _-]?limit|throttl/.test(r)?"RATE_LIMITED":/auth|sign[ _-]?in|log(?:ged)?[ _-]?in|unauthori[sz]ed|credential/.test(r)?"AUTH_REQUIRED":[/unknown (?:flag|option)/,/flag provided but not defined/,/unrecognized (?:flag|option)/,/invalid value for (?:flag|option)/,/invalid (?:flag|option)/].some(s=>s.test(r))?"INVALID_PROVIDER_FORMAT":/invalid.{0,24}model|model.{0,24}(unknown|unavailable|not found|not recognized)|config/.test(r)?"MODEL_UNAVAILABLE":"UNKNOWN"}function oh(t){return t==="AUTH_REQUIRED"||t==="TIMEOUT_IDLE"||t==="TIMEOUT_TOTAL"||t==="TIMEOUT_RESUME"||t==="PROVIDER_CRASHED"?"permanent":t==="MODEL_UNAVAILABLE"||t==="INVALID_PROVIDER_FORMAT"||t==="PROVIDER_NOT_FOUND"?"config":"transient"}function gu(t){let e=Ve(t)?t:void 0,n=e&&Ve(e.error)?e.error:void 0,r=e?ie(e.code)??ie(e.error_code)??ie(n?.code)??ie(n?.error_code):void 0,o=typeof t=="string"?ie(t):e?ie(e.message)??ie(e.error)??ie(e.reason)??ie(n?.message)??ie(n?.error)??ie(n?.reason):void 0,s=rh(r,o),i=e?Nt(e.retry_after_ms)??Nt(e.retryAfterMs)??Nt(n?.retry_after_ms)??Nt(n?.retryAfterMs):void 0;return {code:s,kind:oh(s),message:o??"Antigravity reported a terminal error.",...i===void 0?{}:{retryAfterMs:i}}}function Io(t){let e=gu(t);return new G(e.message,"cli/antigravity",{code:e.code,kind:e.kind,...e.retryAfterMs===void 0?{}:{retryAfterMs:e.retryAfterMs}})}function _i(t){return new G(t,"cli/antigravity",{code:"INVALID_PROVIDER_FORMAT",kind:"config"})}function sh(t){let e=new TextEncoder().encode(t).byteLength;if(!(e<=ui))throw new G(`Input is too large: final provider initial input is ${e} UTF-8 bytes; budget is ${ui} bytes.`,"cli/antigravity",{code:"UNKNOWN",kind:"config"})}function ci(){return new G("Antigravity CLI returned empty output with exit code 0. agy may have hidden an auth/quota/model error in its log file; inspect ~/.gemini/antigravity-cli/log for details.","cli/antigravity",{code:"EMPTY_OUTPUT",kind:"transient"})}function Ao(t){if(t.kind==="result"||t.kind==="legacy_result")return t.result}function No(t){for(let e=t.length-1;e>=0;e-=1){let n=t[e];if(n&&(n.kind==="result"||n.kind==="legacy_result"||n.kind==="agy_error"))return {event:n,index:e}}}function ih(t){let e=No(t);if(!e||e.event.kind==="agy_error"||e.index!==t.length-1||Ao(e.event)?.status!=="SUCCESS"||So(t))return false;let r=new Map;for(let o of t){if(o.kind!=="step_update"||o.step.step_type!=="agent_response")continue;let s=li(o),i=pi(o);!s||!Number.isSafeInteger(i)||r.set(JSON.stringify([s,i]),o.step);}if(r.size===0)return false;for(let o of r.values())if(o.state!=="DONE"||!Ve(o.usage)||Nt(o.usage.input_tokens)===void 0||Nt(o.usage.output_tokens)===void 0)return false;return true}function ah(t,e){for(let n=e-1;n>=0;n-=1){let r=t[n];if(r?.kind==="agy_error")return r.error}}function dh(t,e){return Ve(t)&&Ve(e)?{...e,...t}:Ve(t)&&typeof e=="string"?{...t,message:e}:typeof t=="string"&&Ve(e)?{...e,message:t}:t??e}function ch(t){let e=Array.isArray(t.denied_actions)?t.denied_actions:[],n=[];for(let s of e){let i=Ve(s)?s:void 0,c=typeof s=="string"?ie(s):ie(i?.display_name)??ie(i?.action);c&&!n.includes(c)&&n.length<5&&n.push(c.slice(0,80));}let r=Math.max(0,e.length-n.length),o=n.length>0?` (${n.join(", ")}${r>0?`, +${r} more`:""})`:"";return new G(`Permission denied: Antigravity blocked ${e.length} requested action${e.length===1?"":"s"}${o}.`,"cli/antigravity",{code:"UNKNOWN",kind:"permanent"})}function So(t){let e=No(t);if(!e)return;if(e.event.kind==="agy_error")return Io(e.event.error);let n=Ao(e.event);if(!n)return;if(Array.isArray(n.denied_actions)&&n.denied_actions.length>0)return ch(n);if(n.status==="SUCCESS")return;if(n.status!=="ERROR")return _i("Antigravity returned a result with an unsupported status.");let r=n.error,o=dh(r==null||r===""?n:r,ah(t,e.index));return Io(o)}function hu(t){if(typeof t=="string")return t;if(t!=null)try{return JSON.stringify(t)}catch{return}}function uh(t){return `agy:${String(t.conversation_id)}:${String(t.step_index)}`}function lh(t,e){let n=typeof e?.name=="string"?e.name:t.tool_name;return typeof n=="string"&&n.trim()?n:void 0}function mu(t){let e=hu(t);if(e)return e.length<=2e3?e:`${e.slice(0,1999)}\u2026`}function ph(t){let e=Ve(t)?t:void 0,n=e&&Ve(e.error)?e.error:void 0,r=typeof t=="string"?t.trim().match(/^([A-Z][A-Z0-9_]*)(?:[:\s]|$)/)?.[1]:void 0,o=(ie(e?.type)??ie(e?.code)??ie(e?.error_type)??ie(n?.type)??ie(n?.code)??ie(n?.error_type)??ie(r)??"TOOL_ERROR").slice(0,60),s=gu(t).message.slice(0,250);return mu({type:o,message:s})??"Antigravity reported a tool error."}function _u(t,e){return t?t.state.has(e)?true:(t.state.set(e,true),false):false}function fu(t,e){return {timestamp:t,type:"error",content:e.message,errorMessage:e.message,isError:true}}var di,Yg,Qg,ui,Zg,fi,gi=x(()=>{g();Ht();pu();Ds();cr();Ut();lr();Hs();di="antigravity",Yg=new Set(["claude-sonnet-4-6","claude-opus-4-6-thinking","gpt-oss-120b"]),Qg=new Set(["--conversation","--resume","--continue"]),ui=18e4,Zg=new Set(["QUOTA_EXHAUSTED","RATE_LIMITED","EMPTY_OUTPUT","AUTH_REQUIRED","MODEL_UNAVAILABLE","TIMEOUT_IDLE","TIMEOUT_TOTAL","TIMEOUT_RESUME","PROVIDER_NOT_FOUND","INVALID_PROVIDER_FORMAT","PROVIDER_CRASHED","UNKNOWN"]);fi={command:"agy",maxInitialInputBytes:ui,meta:{displayName:"Antigravity",models:kc(),defaultIdleMs:6e5,capabilities:{resume:true,usageCompleteness:true}},extractSessionId(t){let e=ar(t);if(e?.kind!=="init")return null;let n=e.envelope.conversation_id;return typeof n=="string"&&n.trim().length>0?n.trim():null},buildArgs(t,e,n){sh(t);let{model:r,effort:o}=qt(e.model),s=Fs(r),i=s.model,c=e.effort??o??s.effort,d=nh(i,c),u=e.additionalArgs??[],l=th(eh(u,new Set(["--input-format","--output-format"]))),p=i&&!Ro(u,"--model")?["--model",i]:[],_=Ro(u,"--effort")?[]:xc(d),h=Ro(u,"--mode")||Ro(u,"--dangerously-skip-permissions")?[]:Cc(e.mode),m=typeof e.resumeSessionId=="string"&&e.resumeSessionId.trim().length>0?["--conversation",e.resumeSessionId]:[];return {args:["--input-format","stream-json","--output-format","stream-json",...p,..._,...h,...m,...l],stdinMessage:`${JSON.stringify({event:"user",message:{content:t}})}
|
|
85
85
|
`,env:{AGY_CLI_DISABLE_AUTO_UPDATE:"true"}}},extractText(t){let e=dr(t),n=No(e)?.event,r=So(e);if(r)throw r;let o=n?Ao(n):void 0;if(o){if(o.status!=="SUCCESS")throw _i("Antigravity returned a result with an unsupported status.");if(typeof o.response!="string")throw _i("Antigravity returned a successful result without a response string.");if(!o.response.trim())throw ci();return o.response}if(e.length>0)throw ci();let s=t.trim();if(!s)throw ci();return s},extractPartialText(t){let e=dr(t),n=No(e)?.event;if(!n||n.kind==="agy_error")return;let r=Ao(n);return r&&typeof r.response=="string"&&r.response.trim()?r.response:void 0},interpretExit(t,e,n){let r=dr(n??""),o=So(r);return o||(t!==0&&e.trim()?Io(e):null)},parseResultMeta(t){let e=dr(t),n=0,r=0,o=0,s=0,i=new Set;for(let d of e){if(d.kind!=="step_update"||d.step.state!=="DONE"||!Ve(d.step.usage))continue;let u=li(d),l=pi(d);if(!u||!Number.isSafeInteger(l))continue;let p=JSON.stringify([u,l]);if(i.has(p))continue;let _=d.step.usage,h=Nt(_.input_tokens),m=Nt(_.output_tokens);h===void 0||m===void 0||(i.add(p),n+=h,r+=m,o+=Nt(_.cache_read_tokens)??0,s+=1);}return {usage:s===0?null:{inputTokens:n,outputTokens:r,cachedInputTokens:o,costUsd:0,complete:ih(e)},model:null}},parseEvent(t,e,n){let r=ar(t);if(!r)return [];let o=e??new Date().toISOString();if(r.kind==="agy_error")return [fu(o,Io(r.error))];if(r.kind==="legacy_result"||r.kind==="result"){let h=So([r]);return h?[fu(o,h)]:[]}if(r.kind!=="step_update")return [];let{step:s}=r,i=li(r)??"unknown",c=pi(r),d=`${i}:${c}`;if((s.state==="DONE"||s.state==="ERROR")&&_u(n,`antigravity:terminal:${d}`))return [];if(s.step_type==="agent_response")return typeof s.text_delta=="string"&&s.text_delta.length>0?[{timestamp:o,type:"text",content:s.text_delta}]:[];if(s.step_type!=="tool")return [];let u=Ve(s.tool_info)?s.tool_info:void 0,l=lh(s,u);if(!l)return [];let p=uh(s);if(s.state==="ACTIVE"){if(_u(n,`antigravity:active:${d}`))return [];let h=hu(u?.parameters);return [{timestamp:o,type:"tool_use",toolName:l,toolUseId:p,...h===void 0?{}:{toolInput:h}}]}let _=s.state==="ERROR"?ph(u?.error):mu(u?.output);return [{timestamp:o,type:"tool_result",toolName:l,toolUseId:p,..._===void 0?{}:{resultPreview:_},...s.state==="ERROR"?{isError:true}:{}}]}};});var ku=x(()=>{g();An();On();Nn();an();});function bn(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function Dn(t){return bn(t)?t:void 0}function De(t){return typeof t=="string"?t:void 0}function ln(t){let e=typeof t=="number"?t:Number(t??0);return Number.isFinite(e)?e:0}function wh(t){let e=[],n=-1,r=0,o=false,s=false;for(let i=0;i<t.length;i+=1){let c=t[i];if(n===-1){(c==="{"||c==="[")&&(n=i,r=1);continue}if(s){s=false;continue}if(c==="\\"&&o){s=true;continue}if(c==='"'){o=!o;continue}o||(c==="{"||c==="["?r+=1:(c==="}"||c==="]")&&(r-=1,r===0&&(e.push(t.slice(n,i+1)),n=-1)));}return n!==-1&&e.push(t.slice(n)),e}function mr(t){let e=t.trim();if(!e)return [];try{let n=JSON.parse(e);return bn(n)?[n]:[]}catch{return wh(e).flatMap(n=>{try{let r=JSON.parse(n);return bn(r)?[r]:[]}catch{return []}})}}function Iu(t){let e=JSON.stringify(t);return e===void 0?String(t):e}function un(t){if(typeof t=="string")return t;if(Array.isArray(t)){let e=t.map(un).filter(n=>n!==void 0);return e.length>0?e.join(`
|
|
86
86
|
`):void 0}if(bn(t)){if(typeof t.text=="string")return t.text;if(typeof t.message=="string")return t.message;if(typeof t.error=="string")return t.error;if(t.type==="text"&&typeof t.data=="string")return t.data;for(let e of ["content","FileContent","rawOutput"]){let n=un(t[e]);if(n!==void 0)return n}}}function Eh(t){let e=i=>Array.isArray(i)&&i.every(c=>Number.isInteger(c)&&c>=0&&c<=255),n=i=>typeof i=="string"&&i.trim().length>0?i:void 0,r=i=>new TextDecoder("utf-8",{fatal:false}).decode(Uint8Array.from(i)),o=i=>{let c=JSON.stringify(i,(d,u)=>e(u)?`<bytes:${u.length}>`:u);return c===void 0?String(i):c},s=t.rawOutput;if(s!=null){let i=Dn(s);if(!i)return n(un(s))??o(s);let c;if(e(i.output)&&i.output.length>0&&(c=n(r(i.output))),!c&&e(i.stdout)&&i.stdout.length>0&&(c=n(r(i.stdout))),!c){let l=Dn(i.Result);c=n(i.output)??n(l?.output)??n(un(s));}let d=e(i.stderr)&&i.stderr.length>0?r(i.stderr):void 0;if(d!==void 0)if(c){let l=c.endsWith(`
|
|
@@ -80,7 +80,7 @@ ${r.join(`
|
|
|
80
80
|
active = excluded.active,
|
|
81
81
|
time_created = excluded.time_created,
|
|
82
82
|
time_updated = excluded.time_updated
|
|
83
|
-
`);r.transaction(i=>{for(let a of i)o.run(a);})(n);}finally{r.close();}}function hT(t){if(!t)return [];let e=[];for(let n=0;n<t.length;n+=1){let r=t[n];if(r==="-s"||r==="--session"){let o=t[n+1],s=o!==void 0&&!o.startsWith("-");e.push({sessionId:s?o:void 0}),s&&(n+=1);continue}(r.startsWith("--session=")||r.startsWith("-s="))&&e.push({sessionId:r.slice(r.indexOf("=")+1)||void 0});}return e}function mT(t){if(!t)return;let e=[];for(let n=0;n<t.length;n+=1){let r=t[n];if(r==="-s"||r==="--session"){t[n+1]!==void 0&&!t[n+1].startsWith("-")&&(n+=1);continue}r.startsWith("--session=")||r.startsWith("-s=")||e.push(r);}return e}function Us(t){let e=mT(t.additionalArgs);return {...t,...e===void 0?{}:{additionalArgs:e},resumeSessionId:void 0}}function kT(t,e){try{return !!t.prepare("SELECT id FROM session_v2 WHERE id = ?").get(e)}catch(n){if(n instanceof Error&&/no such table: session_v2/i.test(n.message))return false;throw n}}function yT(t,e,n){let r=new t(e,{readonly:true,fileMustExist:true});try{return kT(r,n)}finally{r.close();}}async function za(t,e={}){let n;try{n=await(e.loadSqlite??cT)();}catch{throw new J("OpenCode isolation requires the optional better-sqlite3 dependency. Install it and retry.","cli/opencode",{code:"INVALID_PROVIDER_FORMAT",kind:"config"})}let r=e.crewxHome??Hs(),o=Ao(r),s=Io(r),i=uT(s),a=lT(e.userDataHome),c=_T(n,a);if(c.length>0){if(!Pp(n,i))try{await(e.initializeDatabase??fT)(o);}catch{throw new J("Could not initialize the isolated OpenCode credential database.","cli/opencode",{code:"INVALID_PROVIDER_FORMAT",kind:"config"})}if(!Pp(n,i))throw new J("The isolated OpenCode credential database is unavailable.","cli/opencode",{code:"INVALID_PROVIDER_FORMAT",kind:"config"});try{gT(n,i,c);}catch{throw new J("Could not copy API-key credentials into the isolated OpenCode database.","cli/opencode",{code:"INVALID_PROVIDER_FORMAT",kind:"config"})}}let u=hT(t.additionalArgs),p=u.map(f=>f.sessionId),l=u.length>0?p[p.length-1]:t.resumeSessionId;if(!l)return u.length>0?Us(t):t;if(p.some(f=>f!==l)||!existsSync(i))return Us(t);try{return yT(n,i,l)?{...t,resumeSessionId:l}:Us(t)}catch{throw new J("Could not read the isolated OpenCode session database safely.","cli/opencode",{code:"INVALID_PROVIDER_FORMAT",kind:"config"})}}var Ka=x(()=>{h();Rn();Wa();Lp();});function zn(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}async function Va(){let t;try{let n=(await import('better-sqlite3')).default,r=join(Io(),"opencode.db");t=new n(r,{readonly:!0,fileMustExist:!0});let o=t.prepare("SELECT value FROM kv WHERE key = ?").get("models-dev:v2:catalog");if(!o||typeof o.value!="string")throw new Error("OpenCode model catalog row is unavailable");let s=JSON.parse(o.value);if(!zn(s))throw new Error("OpenCode model catalog shape is unavailable");let i=typeof s.body=="string"?JSON.parse(s.body):s.body;if(!zn(i))throw new Error("OpenCode model catalog body shape is unavailable");let a=new Map;for(let[c,u]of Object.entries(i)){if(!c||!zn(u)||!zn(u.models))throw new Error("OpenCode model provider shape is unavailable");for(let[p,l]of Object.entries(u.models)){if(!p||!zn(l))throw new Error("OpenCode model shape is unavailable");let f=l.capabilities;if(f===void 0)continue;if(!zn(f))throw new Error("OpenCode model capability shape is unavailable");let g=f.reasoning;if(g===void 0)continue;if(!zn(g))throw new Error("OpenCode reasoning capability shape is unavailable");let m=g.effort;Array.isArray(m)&&m.
|
|
83
|
+
`);r.transaction(i=>{for(let a of i)o.run(a);})(n);}finally{r.close();}}function hT(t){if(!t)return [];let e=[];for(let n=0;n<t.length;n+=1){let r=t[n];if(r==="-s"||r==="--session"){let o=t[n+1],s=o!==void 0&&!o.startsWith("-");e.push({sessionId:s?o:void 0}),s&&(n+=1);continue}(r.startsWith("--session=")||r.startsWith("-s="))&&e.push({sessionId:r.slice(r.indexOf("=")+1)||void 0});}return e}function mT(t){if(!t)return;let e=[];for(let n=0;n<t.length;n+=1){let r=t[n];if(r==="-s"||r==="--session"){t[n+1]!==void 0&&!t[n+1].startsWith("-")&&(n+=1);continue}r.startsWith("--session=")||r.startsWith("-s=")||e.push(r);}return e}function Us(t){let e=mT(t.additionalArgs);return {...t,...e===void 0?{}:{additionalArgs:e},resumeSessionId:void 0}}function kT(t,e){try{return !!t.prepare("SELECT id FROM session_v2 WHERE id = ?").get(e)}catch(n){if(n instanceof Error&&/no such table: session_v2/i.test(n.message))return false;throw n}}function yT(t,e,n){let r=new t(e,{readonly:true,fileMustExist:true});try{return kT(r,n)}finally{r.close();}}async function za(t,e={}){let n;try{n=await(e.loadSqlite??cT)();}catch{throw new J("OpenCode isolation requires the optional better-sqlite3 dependency. Install it and retry.","cli/opencode",{code:"INVALID_PROVIDER_FORMAT",kind:"config"})}let r=e.crewxHome??Hs(),o=Ao(r),s=Io(r),i=uT(s),a=lT(e.userDataHome),c=_T(n,a);if(c.length>0){if(!Pp(n,i))try{await(e.initializeDatabase??fT)(o);}catch{throw new J("Could not initialize the isolated OpenCode credential database.","cli/opencode",{code:"INVALID_PROVIDER_FORMAT",kind:"config"})}if(!Pp(n,i))throw new J("The isolated OpenCode credential database is unavailable.","cli/opencode",{code:"INVALID_PROVIDER_FORMAT",kind:"config"});try{gT(n,i,c);}catch{throw new J("Could not copy API-key credentials into the isolated OpenCode database.","cli/opencode",{code:"INVALID_PROVIDER_FORMAT",kind:"config"})}}let u=hT(t.additionalArgs),p=u.map(f=>f.sessionId),l=u.length>0?p[p.length-1]:t.resumeSessionId;if(!l)return u.length>0?Us(t):t;if(p.some(f=>f!==l)||!existsSync(i))return Us(t);try{return yT(n,i,l)?{...t,resumeSessionId:l}:Us(t)}catch{throw new J("Could not read the isolated OpenCode session database safely.","cli/opencode",{code:"INVALID_PROVIDER_FORMAT",kind:"config"})}}var Ka=x(()=>{h();Rn();Wa();Lp();});function zn(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}async function Va(){let t;try{let n=(await import('better-sqlite3')).default,r=join(Io(),"opencode.db");t=new n(r,{readonly:!0,fileMustExist:!0});let o=t.prepare("SELECT value FROM kv WHERE key = ?").get("models-dev:v2:catalog");if(!o||typeof o.value!="string")throw new Error("OpenCode model catalog row is unavailable");let s=JSON.parse(o.value);if(!zn(s))throw new Error("OpenCode model catalog shape is unavailable");let i=typeof s.body=="string"?JSON.parse(s.body):s.body;if(!zn(i))throw new Error("OpenCode model catalog body shape is unavailable");let a=new Map;for(let[c,u]of Object.entries(i)){if(!c||!zn(u)||!zn(u.models))throw new Error("OpenCode model provider shape is unavailable");for(let[p,l]of Object.entries(u.models)){if(!p||!zn(l))throw new Error("OpenCode model shape is unavailable");let f=l.capabilities;if(f===void 0)continue;if(!zn(f))throw new Error("OpenCode model capability shape is unavailable");let g=f.reasoning;if(g===void 0)continue;if(!zn(g))throw new Error("OpenCode reasoning capability shape is unavailable");let m=g.effort;(m===void 0||Array.isArray(m)&&m.every(k=>typeof k=="string"))&&a.set(`${c}/${p}`,Array.isArray(m)?m:[]);}}return a}catch{return console.debug("[opencode] could not read private model effort catalog; omitting effort choices"),new Map}finally{try{t?.close();}catch{}}}var $p=x(()=>{h();Xa();Np();Cp();Wa();Ka();Sn();});function AT(t){return t?bT[t]??{agent:"build",autoApprove:false}:{agent:void 0,autoApprove:false}}function bt(t,e){return t.some(n=>n===e||n.startsWith(`${e}=`))}function IT(){let t;try{t=Io();}catch{return Va().catch(()=>new Map)}let e=Date.now();if(Hp===t&&qs&&qs.expiresAt>e)return qs.result;Hp=t;let n=Va().catch(()=>new Map);return qs={expiresAt:e+ST,result:n},n}async function NT(t){let e=await za(t),n=t.additionalArgs??[],r=bt(n,"--model")||bt(n,"-m");if(!t.model||!t.effort||r)return e;let o=(await IT()).get(t.model);return !o||o.includes(t.effort)?e:(console.debug("[opencode] requested effort is not listed for this model; using OpenCode default"),{...e,effort:void 0})}function jp(t){let e=[],n=0,r=false,o=false,s=0;for(let a=0;a<t.length;a++){let c=t[a];if(o){o=false;continue}if(c==="\\"&&r){o=true;continue}if(c==='"'){r=!r;continue}if(!r){if(c==="{")n++;else if(c==="}"&&(n--,n===0)){let u=t.slice(s,a+1).trim();u&&e.push(u),s=a+1;}}}let i=t.slice(s).trim();return i&&e.push(i),e}function Se(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function Wp(t){let e=Se(t.part)?t.part:void 0;return t.type==="reasoning"||e?.type==="reasoning"}function OT(t){let e=Se(t.part)?t.part:void 0;return (typeof e?.text=="string"?e.text:typeof t.text=="string"?t.text:void 0)?.trim()||void 0}function vT(t){let e=[],n=false;for(let r of t.split(/\r?\n/)){let o=r.trim();if(!o)continue;try{let i=JSON.parse(o);Se(i)?e.push(i):n=!0;continue}catch{}let s=jp(o);s.length>1&&console.warn("[opencode] extractText: falling back to concatenated-JSON split for a malformed line");for(let i of s)try{let a=JSON.parse(i);Se(a)?e.push(a):n=!0;}catch{n=true;}}return {events:e,malformed:n}}function Za(t){let e=Se(t.error)?t.error:void 0,n=e&&Se(e.data)?e.data:void 0,r=Gp(e),o=St(e?.name),s=St(n?.message)??St(e?.message)??Ya(r)??St(t.message)??St(t.errorMessage)??St(t.error),i=St(t.ref),a=o&&s&&o!==s?`${o}: ${s}`:o??s??Fp;return (i?`${a} (ref: ${i})`:a).slice(0,ET)}function Up(t){let e=Se(t.error)?t.error:void 0,n=typeof e?.type=="string"?e.type:void 0,r=typeof e?.status=="number"?e.status:Number(e?.status),o=Za(t),s=Gp(e),i=s&&Se(s.error)?s.error:void 0,a=typeof i?.type=="string"?i.type:void 0,c=[o,Ya(s)].filter(Boolean).join(`
|
|
84
84
|
`);if(r===402||CT(c))return new J(`OpenCode subscription is required: ${o}`,ft,{code:"SUBSCRIPTION_REQUIRED",kind:"config",providerReason:So(o)});if(r===403&&(a==="RegionError"||a==="FreeTierError"))return new J(`OpenCode account settings are required: ${o}`,ft,{code:"ACCOUNT_SETTING_REQUIRED",kind:"config",settingReason:"access",providerReason:So(o)});if(n==="provider.auth"||r===401||r===403)return new J(`OpenCode authentication is required: ${o}`,ft,{code:"AUTH_REQUIRED",kind:"config"});if(r===410||a==="ModelDeprecated")return new J(`OpenCode model has been retired: ${o}`,ft,{code:"MODEL_RETIRED",kind:"config",replacementModel:DT(s,e,t),providerReason:So(o)});if(n==="provider.free-limit"||r===429){let u=xT(e);return new J(`OpenCode rate limit reached: ${o}`,ft,{code:"RATE_LIMITED",kind:"transient",...u===void 0?{}:{retryAfterMs:u}})}if(n==="provider.no-route")return new J(`OpenCode model or variant unavailable: ${o}`,ft,{code:"MODEL_UNAVAILABLE",kind:"config"});if(n==="provider.invalid-request"&&r===400){let u=[o,Ya(s)].filter(g=>g!==void 0),p=u.find(g=>/requires global regions/i.test(g)),l=u.find(g=>/trains on request data/i.test(g)),f=p?"region":l?"training_consent":void 0;if(f)return new J(`OpenCode account settings are required: ${o}`,ft,{code:"ACCOUNT_SETTING_REQUIRED",kind:"config",settingReason:f,providerReason:So(p??l)})}return new J(`OpenCode error: ${o}`,ft,{code:"PROVIDER_CRASHED",kind:"transient"})}function Gp(t){let n=(t&&Se(t.response)?t.response:void 0)?.body;if(Se(n))return n;if(typeof n=="string")try{let r=JSON.parse(n);return Se(r)?r:void 0}catch{return}}function Ya(t){let e=t&&Se(t.error)?t.error:void 0;return St(e?.message)??St(t?.message)}function CT(t){return /insufficient\s+(?:balance|account funds)|credit\s+limit\s+exceeded|payment\s+required|account invoice is overdue|billing_error|please add or update your payment method|(?:GLM Coding Plan|enterprise) package has expired|your current subscription plan does not yet include access to/i.test(t)}function DT(t,e,n){let r=t&&Se(t.metadata)?t.metadata:void 0,o=typeof r?.replacement=="string"?r.replacement.trim():void 0;if(!o)return;let s=[r?.model,e?.model,n.model,n.modelID].find(c=>typeof c=="string"&&c.trim().length>0)?.trim(),i=s&&s.includes("/")?s.slice(0,s.indexOf("/")):"opencode-go",a=o.includes("/")?o:`${i}/${o}`;return /^[A-Za-z0-9._/-]{1,128}$/.test(a)?a:void 0}function xT(t){let e=t?.retryAfterMs;if(typeof e=="number"&&Number.isFinite(e)&&e>=0)return e;let r=(t&&Se(t.response)?t.response:void 0)?.body,o=typeof r=="string"?LT(r):Se(r)?r:void 0;if(o){let s=Qa(o);if(s)return qp(s.value,s.key==="retryafterms")}if(typeof r=="string"){let s=r.match(/retry[-_]after(?:\s*[:=]\s*|\s+)["']?([^"'\s,;}]+)/i);if(s?.[1])return qp(s[1],false)}}function LT(t){try{let e=JSON.parse(t);return Se(e)?e:void 0}catch{return}}function Qa(t){if(Array.isArray(t)){for(let e of t){let n=Qa(e);if(n)return n}return}if(Se(t)){for(let[e,n]of Object.entries(t)){let r=e.toLowerCase().replace(/[-_]/g,"");if(r==="retryafterms"||r==="retryafter")return {value:n,key:r}}for(let e of Object.values(t)){let n=Qa(e);if(n)return n}}}function qp(t,e){if(typeof t=="number"&&Number.isFinite(t)&&t>=0)return e?t:Math.round(t*1e3);if(typeof t!="string"||!t.trim())return;let n=Number(t);if(Number.isFinite(n)&&n>=0)return e?n:Math.round(n*1e3);if(e)return;let r=Date.parse(t);return Number.isFinite(r)?Math.max(0,r-Date.now()):void 0}function Bp(t){let e=vT(t),n=[],r=null,o=0,s=[],i=[],a,c=false;for(let u of e.events){if(Wp(u))continue;let p=typeof u.type=="string"?u.type:void 0;if(p){if(p==="text"){let l=Se(u.part)?u.part:void 0,f=typeof l?.text=="string"?l.text:void 0;f?.trim()&&n.push(f.trim());continue}if(p==="result"){typeof u.result=="string"&&(r=u.result);continue}if(p==="tool_use"){o++;continue}if(p==="error"){s.push(u),i.push(Za(u));continue}if(p==="step_finish"){c=true;let l=Se(u.part)?u.part:void 0;a=typeof l?.reason=="string"?l.reason:void 0;}}}return {...e,texts:n,resultText:r,toolUseCount:o,errorEvents:s,errorMessages:i,terminalReason:a,hasTerminal:c}}function zp(t){return (t??"unknown").trim().toLowerCase().replace(/_/g,"-")}function PT(){return new J("OpenCode returned no assistant output.",ft,{code:"EMPTY_OUTPUT",kind:"transient"})}function MT(){return new J("OpenCode emitted malformed JSON output.",ft,{code:"PROVIDER_CRASHED",kind:"transient"})}function $T(t,e){switch(zp(t)){case "length":return new J("OpenCode stopped because the context window was exceeded.",ft,{code:"UNKNOWN",kind:"permanent"});case "content-filter":return new J("OpenCode stopped because the content filter blocked the response.",ft,{code:"UNKNOWN",kind:"permanent"});case "error":return new J(`${Fp} while generating a response.`,ft,{code:"PROVIDER_CRASHED",kind:"transient"});default:return null}}var wT,ft,Fp,ET,RT,ST,Hp,qs,bT,ed,td=x(()=>{h();Rn();Ip();Ro();br();Wn();$p();Ka();wT=new Set(["step_start","step_finish"]),ft="cli/opencode",Fp="OpenCode provider error",ET=240,RT="Follow the instructions provided on standard input.",ST=3e5,bT={build:{agent:"build",autoApprove:false},"build-auto":{agent:"build",autoApprove:true},plan:{agent:"plan",autoApprove:false},"plan-auto":{agent:"plan",autoApprove:true}};ed={command:"opencode",prepare:NT,meta:{displayName:"OpenCode",capabilities:{resume:true}},buildArgs(t,e,n){let r=e.additionalArgs,o=r!==void 0?[...r]:["run"];bt(o,"--format")||o.push("--format","json"),bt(o,"--thinking")||o.push("--thinking"),!bt(o,"--standalone")&&!bt(o,"--server")&&o.push("--standalone"),e.resumeSessionId&&!bt(o,"-s")&&!bt(o,"--session")&&o.push("-s",e.resumeSessionId);let{agent:s,autoApprove:i}=AT(e.mode);bt(o,"--agent")||s!==void 0&&o.push("--agent",s),i&&!bt(o,"--auto")&&o.push("--auto");let a=bt(o,"--model")||bt(o,"-m");if(e.model&&!a){let c=e.effort?`${e.model}#${e.effort}`:e.model;o.push("--model",c);}else e.effort&&!e.model&&!a&&console.debug("[opencode] ignoring effort because no model is configured");return o.push(RT),{args:o,stdinMessage:t,env:Ao()}},extractText(t){let e=Bp(t),n=e.errorEvents[0];if(n)throw Up(n);let r=$T(e.terminalReason??"");if(r)throw r;let o=e.texts.length>0?e.texts[e.texts.length-1]:void 0;if(o!==void 0)return o;if(e.resultText?.trim())return e.resultText;if(e.malformed)throw MT();let s=zp(e.terminalReason);if(e.hasTerminal&&s==="tool-calls"&&e.toolUseCount>0)return "";throw PT()},interpretExit(t,e,n=""){if(t===0)return null;let o=Bp(n).errorEvents[0];return o?Up(o):null},parseResultMeta(t){let e=Ir(t);return e?{usage:{inputTokens:e.inputTokens,outputTokens:e.outputTokens,cachedInputTokens:e.cachedInputTokens,costUsd:0},model:null}:{usage:null,model:null}},parseEvent(t,e,n){let r=e??new Date().toISOString(),o=[],s=new Map,i;try{JSON.parse(t),i=[t];}catch{i=jp(t),i.length>1&&console.warn("[opencode] parseEvent: falling back to concatenated-JSON split for a malformed line");}for(let a of i){let c;try{c=JSON.parse(a);}catch{continue}let u=$t(c,r),p=c.type;if(Wp(c)){let l=OT(c);if(!l)continue;let f=Se(c.part)?c.part:void 0,g=typeof f?.id=="string"?f.id:typeof c.id=="string"?c.id:void 0,m=l;if(g){let k=`opencode.reasoning:${g}`,T=n?.state.get(k),b=typeof T=="string"?T:s.get(g);if(typeof b=="string"&&(b===l||b.startsWith(l))||typeof b=="string"&&l.startsWith(b)&&(m=l.slice(b.length).trim(),!m))continue;s.set(g,l),n?.state.set(k,l);}o.push({timestamp:u,type:"thinking",content:m});continue}if(p){if(p==="text"){let f=c.part?.text;f&&o.push({timestamp:u,type:"text",content:f});continue}if(p==="tool_use"){let l=c.part;if(!l)continue;let f=String(l.tool||""),g=String(l.callID||l.id||""),m=l.state,k=String(m?.status||""),T=m?.input,b=Mt(T);if(o.push({timestamp:u,type:"tool_use",toolName:f,toolUseId:g,toolInput:b}),k==="completed"&&m?.output!==void 0){let w=m.output,M=typeof w=="string"?w:JSON.stringify(w);o.push({timestamp:u,type:"tool_result",toolUseId:g,resultPreview:M,isError:false});}else k==="error"&&o.push({timestamp:u,type:"tool_result",toolUseId:g,resultPreview:String(m?.error||"tool error"),isError:true});continue}if(p==="error"){let l=Za(c);o.push({timestamp:u,type:"error",content:l,errorMessage:l});continue}}}return o},suppressOutputLine(t){let e=t.trim();if(!e.startsWith("{")||!e.endsWith("}"))return false;try{let r=JSON.parse(e).type;return r?wT.has(r):!1}catch{return false}}};});var Kp=x(()=>{h();});function Bs(t,e){return t.some(n=>n===e||n.startsWith(`${e}=`))}function FT(t,e){let n=[];for(let r=0;r<t.length;r+=1){let o=t[r],s=[...e].find(i=>o===i||o.startsWith(`${i}=`));s?o===s&&r+1<t.length&&(r+=1):n.push(o);}return n}function jT(t){let e=[];for(let n=0;n<t.length;n+=1){let r=t[n],o=r.indexOf("="),s=o>0?r.slice(0,o):r;if(!qT.has(s)){e.push(r);continue}r===s&&n+1<t.length&&!t[n+1].startsWith("-")&&(n+=1);}return e}function At(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function WT(t,e){if(!(t?UT.has(t)||_n(nd).some(s=>s.id===t):false)||!t)return e;let r=Ar(nd,t),o=$a(nd)[t]?.defaultEffort;if(r.length!==0)return e?r.includes(e)?e:o&&r.includes(o)?o:void 0:o}function fn(t){return typeof t=="number"&&Number.isSafeInteger(t)&&t>=0?t:void 0}function sd(t){return t.kind==="step_update"?typeof t.step.conversation_id=="string"?t.step.conversation_id:void 0:typeof t.envelope.conversation_id=="string"?t.envelope.conversation_id:void 0}function id(t){return t.step.step_index}function Re(t){if(typeof t!="string")return;let e=t.split(/\r?\n/,1)[0]?.trim();return e&&Os(e)?.slice(0,500).trim()||void 0}function GT(t,e){let n=(t??"").trim().toUpperCase().replace(/[^A-Z0-9]+/g,"_");if(n!=="UNKNOWN"&&BT.has(n))return n;let r=`${n} ${e??""}`.toLowerCase();return /quota|resource_exhausted|usage[ _-]?limit|credits?.{0,20}exhaust/.test(r)?"QUOTA_EXHAUSTED":/rate[ _-]?limit|throttl/.test(r)?"RATE_LIMITED":/auth|sign[ _-]?in|log(?:ged)?[ _-]?in|unauthori[sz]ed|credential/.test(r)?"AUTH_REQUIRED":[/unknown (?:flag|option)/,/flag provided but not defined/,/unrecognized (?:flag|option)/,/invalid value for (?:flag|option)/,/invalid (?:flag|option)/].some(s=>s.test(r))?"INVALID_PROVIDER_FORMAT":/invalid.{0,24}model|model.{0,24}(unknown|unavailable|not found|not recognized)|config/.test(r)?"MODEL_UNAVAILABLE":"UNKNOWN"}function zT(t){return t==="AUTH_REQUIRED"||t==="TIMEOUT_IDLE"||t==="TIMEOUT_TOTAL"||t==="TIMEOUT_RESUME"||t==="PROVIDER_CRASHED"?"permanent":t==="MODEL_UNAVAILABLE"||t==="INVALID_PROVIDER_FORMAT"||t==="PROVIDER_NOT_FOUND"?"config":"transient"}function Xp(t){let e=At(t)?t:void 0,n=e&&At(e.error)?e.error:void 0,r=e?Re(e.code)??Re(e.error_code)??Re(n?.code)??Re(n?.error_code):void 0,o=typeof t=="string"?Re(t):e?Re(e.message)??Re(e.error)??Re(e.reason)??Re(n?.message)??Re(n?.error)??Re(n?.reason):void 0,s=GT(r,o),i=e?fn(e.retry_after_ms)??fn(e.retryAfterMs)??fn(n?.retry_after_ms)??fn(n?.retryAfterMs):void 0;return {code:s,kind:zT(s),message:o??"Antigravity reported a terminal error.",...i===void 0?{}:{retryAfterMs:i}}}function js(t){let e=Xp(t);return new J(e.message,"cli/antigravity",{code:e.code,kind:e.kind,...e.retryAfterMs===void 0?{}:{retryAfterMs:e.retryAfterMs}})}function ad(t){return new J(t,"cli/antigravity",{code:"INVALID_PROVIDER_FORMAT",kind:"config"})}function KT(t){let e=new TextEncoder().encode(t).byteLength;if(!(e<=od))throw new J(`Input is too large: final provider initial input is ${e} UTF-8 bytes; budget is ${od} bytes.`,"cli/antigravity",{code:"UNKNOWN",kind:"config"})}function rd(){return new J("Antigravity CLI returned empty output with exit code 0. agy may have hidden an auth/quota/model error in its log file; inspect ~/.gemini/antigravity-cli/log for details.","cli/antigravity",{code:"EMPTY_OUTPUT",kind:"transient"})}function Ws(t){if(t.kind==="result"||t.kind==="legacy_result")return t.result}function Gs(t){for(let e=t.length-1;e>=0;e-=1){let n=t[e];if(n&&(n.kind==="result"||n.kind==="legacy_result"||n.kind==="agy_error"))return {event:n,index:e}}}function VT(t){let e=Gs(t);if(!e||e.event.kind==="agy_error"||e.index!==t.length-1||Ws(e.event)?.status!=="SUCCESS"||Fs(t))return false;let r=new Map;for(let o of t){if(o.kind!=="step_update"||o.step.step_type!=="agent_response")continue;let s=sd(o),i=id(o);!s||!Number.isSafeInteger(i)||r.set(JSON.stringify([s,i]),o.step);}if(r.size===0)return false;for(let o of r.values())if(o.state!=="DONE"||!At(o.usage)||fn(o.usage.input_tokens)===void 0||fn(o.usage.output_tokens)===void 0)return false;return true}function JT(t,e){for(let n=e-1;n>=0;n-=1){let r=t[n];if(r?.kind==="agy_error")return r.error}}function XT(t,e){return At(t)&&At(e)?{...e,...t}:At(t)&&typeof e=="string"?{...t,message:e}:typeof t=="string"&&At(e)?{...e,message:t}:t??e}function YT(t){let e=Array.isArray(t.denied_actions)?t.denied_actions:[],n=[];for(let s of e){let i=At(s)?s:void 0,a=typeof s=="string"?Re(s):Re(i?.display_name)??Re(i?.action);a&&!n.includes(a)&&n.length<5&&n.push(a.slice(0,80));}let r=Math.max(0,e.length-n.length),o=n.length>0?` (${n.join(", ")}${r>0?`, +${r} more`:""})`:"";return new J(`Permission denied: Antigravity blocked ${e.length} requested action${e.length===1?"":"s"}${o}.`,"cli/antigravity",{code:"UNKNOWN",kind:"permanent"})}function Fs(t){let e=Gs(t);if(!e)return;if(e.event.kind==="agy_error")return js(e.event.error);let n=Ws(e.event);if(!n)return;if(Array.isArray(n.denied_actions)&&n.denied_actions.length>0)return YT(n);if(n.status==="SUCCESS")return;if(n.status!=="ERROR")return ad("Antigravity returned a result with an unsupported status.");let r=n.error,o=XT(r==null||r===""?n:r,JT(t,e.index));return js(o)}function Yp(t){if(typeof t=="string")return t;if(t!=null)try{return JSON.stringify(t)}catch{return}}function QT(t){return `agy:${String(t.conversation_id)}:${String(t.step_index)}`}function ZT(t,e){let n=typeof e?.name=="string"?e.name:t.tool_name;return typeof n=="string"&&n.trim()?n:void 0}function Qp(t){let e=Yp(t);if(e)return e.length<=2e3?e:`${e.slice(0,1999)}\u2026`}function ew(t){let e=At(t)?t:void 0,n=e&&At(e.error)?e.error:void 0,r=typeof t=="string"?t.trim().match(/^([A-Z][A-Z0-9_]*)(?:[:\s]|$)/)?.[1]:void 0,o=(Re(e?.type)??Re(e?.code)??Re(e?.error_type)??Re(n?.type)??Re(n?.code)??Re(n?.error_type)??Re(r)??"TOOL_ERROR").slice(0,60),s=Xp(t).message.slice(0,250);return Qp({type:o,message:s})??"Antigravity reported a tool error."}function Vp(t,e){return t?t.state.has(e)?true:(t.state.set(e,true),false):false}function Jp(t,e){return {timestamp:t,type:"error",content:e.message,errorMessage:e.message,isError:true}}var nd,UT,qT,od,BT,dd,cd=x(()=>{h();Rn();Kp();Na();To();Sn();Eo();Cs();nd="antigravity",UT=new Set(["claude-sonnet-4-6","claude-opus-4-6-thinking","gpt-oss-120b"]),qT=new Set(["--conversation","--resume","--continue"]),od=18e4,BT=new Set(["QUOTA_EXHAUSTED","RATE_LIMITED","EMPTY_OUTPUT","AUTH_REQUIRED","MODEL_UNAVAILABLE","TIMEOUT_IDLE","TIMEOUT_TOTAL","TIMEOUT_RESUME","PROVIDER_NOT_FOUND","INVALID_PROVIDER_FORMAT","PROVIDER_CRASHED","UNKNOWN"]);dd={command:"agy",maxInitialInputBytes:od,meta:{displayName:"Antigravity",models:Zl(),defaultIdleMs:6e5,capabilities:{resume:true,usageCompleteness:true}},extractSessionId(t){let e=ko(t);if(e?.kind!=="init")return null;let n=e.envelope.conversation_id;return typeof n=="string"&&n.trim().length>0?n.trim():null},buildArgs(t,e,n){KT(t);let{model:r,effort:o}=bn(e.model),s=Pa(r),i=s.model,a=e.effort??o??s.effort,c=WT(i,a),u=e.additionalArgs??[],p=jT(FT(u,new Set(["--input-format","--output-format"]))),l=i&&!Bs(u,"--model")?["--model",i]:[],f=Bs(u,"--effort")?[]:pp(c),g=Bs(u,"--mode")||Bs(u,"--dangerously-skip-permissions")?[]:lp(e.mode),m=typeof e.resumeSessionId=="string"&&e.resumeSessionId.trim().length>0?["--conversation",e.resumeSessionId]:[];return {args:["--input-format","stream-json","--output-format","stream-json",...l,...f,...g,...m,...p],stdinMessage:`${JSON.stringify({event:"user",message:{content:t}})}
|
|
85
85
|
`,env:{AGY_CLI_DISABLE_AUTO_UPDATE:"true"}}},extractText(t){let e=jn(t),n=Gs(e)?.event,r=Fs(e);if(r)throw r;let o=n?Ws(n):void 0;if(o){if(o.status!=="SUCCESS")throw ad("Antigravity returned a result with an unsupported status.");if(typeof o.response!="string")throw ad("Antigravity returned a successful result without a response string.");if(!o.response.trim())throw rd();return o.response}if(e.length>0)throw rd();let s=t.trim();if(!s)throw rd();return s},extractPartialText(t){let e=jn(t),n=Gs(e)?.event;if(!n||n.kind==="agy_error")return;let r=Ws(n);return r&&typeof r.response=="string"&&r.response.trim()?r.response:void 0},interpretExit(t,e,n){let r=jn(n??""),o=Fs(r);return o||(t!==0&&e.trim()?js(e):null)},parseResultMeta(t){let e=jn(t),n=0,r=0,o=0,s=0,i=new Set;for(let c of e){if(c.kind!=="step_update"||c.step.state!=="DONE"||!At(c.step.usage))continue;let u=sd(c),p=id(c);if(!u||!Number.isSafeInteger(p))continue;let l=JSON.stringify([u,p]);if(i.has(l))continue;let f=c.step.usage,g=fn(f.input_tokens),m=fn(f.output_tokens);g===void 0||m===void 0||(i.add(l),n+=g,r+=m,o+=fn(f.cache_read_tokens)??0,s+=1);}return {usage:s===0?null:{inputTokens:n,outputTokens:r,cachedInputTokens:o,costUsd:0,complete:VT(e)},model:null}},parseEvent(t,e,n){let r=ko(t);if(!r)return [];let o=e??new Date().toISOString();if(r.kind==="agy_error")return [Jp(o,js(r.error))];if(r.kind==="legacy_result"||r.kind==="result"){let g=Fs([r]);return g?[Jp(o,g)]:[]}if(r.kind!=="step_update")return [];let{step:s}=r,i=sd(r)??"unknown",a=id(r),c=`${i}:${a}`;if((s.state==="DONE"||s.state==="ERROR")&&Vp(n,`antigravity:terminal:${c}`))return [];if(s.step_type==="agent_response")return typeof s.text_delta=="string"&&s.text_delta.length>0?[{timestamp:o,type:"text",content:s.text_delta}]:[];if(s.step_type!=="tool")return [];let u=At(s.tool_info)?s.tool_info:void 0,p=ZT(s,u);if(!p)return [];let l=QT(s);if(s.state==="ACTIVE"){if(Vp(n,`antigravity:active:${c}`))return [];let g=Yp(u?.parameters);return [{timestamp:o,type:"tool_use",toolName:p,toolUseId:l,...g===void 0?{}:{toolInput:g}}]}let f=s.state==="ERROR"?ew(u?.error):Qp(u?.output);return [{timestamp:o,type:"tool_result",toolName:p,toolUseId:l,...f===void 0?{}:{resultPreview:f},...s.state==="ERROR"?{isError:true}:{}}]}};});var Zp=x(()=>{h();Rr();br();Sr();Wn();});function Or(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function vr(t){return Or(t)?t:void 0}function ot(t){return typeof t=="string"?t:void 0}function Vn(t){let e=typeof t=="number"?t:Number(t??0);return Number.isFinite(e)?e:0}function cw(t){let e=[],n=-1,r=0,o=false,s=false;for(let i=0;i<t.length;i+=1){let a=t[i];if(n===-1){(a==="{"||a==="[")&&(n=i,r=1);continue}if(s){s=false;continue}if(a==="\\"&&o){s=true;continue}if(a==='"'){o=!o;continue}o||(a==="{"||a==="["?r+=1:(a==="}"||a==="]")&&(r-=1,r===0&&(e.push(t.slice(n,i+1)),n=-1)));}return n!==-1&&e.push(t.slice(n)),e}function No(t){let e=t.trim();if(!e)return [];try{let n=JSON.parse(e);return Or(n)?[n]:[]}catch{return cw(e).flatMap(n=>{try{let r=JSON.parse(n);return Or(r)?[r]:[]}catch{return []}})}}function i_(t){let e=JSON.stringify(t);return e===void 0?String(t):e}function Kn(t){if(typeof t=="string")return t;if(Array.isArray(t)){let e=t.map(Kn).filter(n=>n!==void 0);return e.length>0?e.join(`
|
|
86
86
|
`):void 0}if(Or(t)){if(typeof t.text=="string")return t.text;if(typeof t.message=="string")return t.message;if(typeof t.error=="string")return t.error;if(t.type==="text"&&typeof t.data=="string")return t.data;for(let e of ["content","FileContent","rawOutput"]){let n=Kn(t[e]);if(n!==void 0)return n}}}function uw(t){let e=i=>Array.isArray(i)&&i.every(a=>Number.isInteger(a)&&a>=0&&a<=255),n=i=>typeof i=="string"&&i.trim().length>0?i:void 0,r=i=>new TextDecoder("utf-8",{fatal:false}).decode(Uint8Array.from(i)),o=i=>{let a=JSON.stringify(i,(c,u)=>e(u)?`<bytes:${u.length}>`:u);return a===void 0?String(i):a},s=t.rawOutput;if(s!=null){let i=vr(s);if(!i)return n(Kn(s))??o(s);let a;if(e(i.output)&&i.output.length>0&&(a=n(r(i.output))),!a&&e(i.stdout)&&i.stdout.length>0&&(a=n(r(i.stdout))),!a){let p=vr(i.Result);a=n(i.output)??n(p?.output)??n(Kn(s));}let c=e(i.stderr)&&i.stderr.length>0?r(i.stderr):void 0;if(c!==void 0)if(a){let p=a.endsWith(`
|
package/dist/facade/Crewx.d.ts
CHANGED
|
@@ -57,6 +57,34 @@ export interface RenderAgentPromptOptions {
|
|
|
57
57
|
mcpAppAvailable?: McpAppsContext['available'];
|
|
58
58
|
threadId?: string;
|
|
59
59
|
}
|
|
60
|
+
interface ProviderSlotEffortResolution {
|
|
61
|
+
effort?: string;
|
|
62
|
+
fallback?: {
|
|
63
|
+
requested: string;
|
|
64
|
+
applied: string | null;
|
|
65
|
+
source: 'model-default' | 'provider-default' | 'dropped';
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
type EffortSource = 'boost' | 'route' | 'agent' | 'request' | 'model-default';
|
|
69
|
+
type EffortDropReason = 'route-rule' | 'unsupported-by-model';
|
|
70
|
+
interface EffortMetadataResolution {
|
|
71
|
+
effort?: string;
|
|
72
|
+
source: EffortSource;
|
|
73
|
+
dropped?: {
|
|
74
|
+
requested: string;
|
|
75
|
+
reason: EffortDropReason;
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
export declare function resolveEffortSelection(params: {
|
|
79
|
+
routeSelected: boolean;
|
|
80
|
+
boostEffort?: string;
|
|
81
|
+
routeEffort?: string;
|
|
82
|
+
requestEffort?: string;
|
|
83
|
+
agentEffort?: string;
|
|
84
|
+
ignoredAgentEffort?: string;
|
|
85
|
+
agentFallback?: ProviderSlotEffortResolution['fallback'];
|
|
86
|
+
supportedEfforts?: readonly string[];
|
|
87
|
+
}): EffortMetadataResolution;
|
|
60
88
|
export declare class Crewx extends TypedEventEmitter {
|
|
61
89
|
private readonly _agents;
|
|
62
90
|
private readonly _templateEngine;
|
|
@@ -187,3 +215,4 @@ export declare class Crewx extends TypedEventEmitter {
|
|
|
187
215
|
}>): Promise<QueryResult>;
|
|
188
216
|
execute(agentRef: string, message: string, options?: ExecuteOptions): Promise<ExecuteResult>;
|
|
189
217
|
}
|
|
218
|
+
export {};
|
|
@@ -80,3 +80,4 @@ export declare function readHistory(projectRoot: string, ref: string, scope: His
|
|
|
80
80
|
}): Promise<HistoryPage>;
|
|
81
81
|
export declare function recordHistoryEmission(projectRoot: string, ref: string, scope: HistorySnapshotScope, page: HistoryPage): Promise<void>;
|
|
82
82
|
export declare function readHistoryAudit(projectRoot: string, ref: string, scope: HistorySnapshotScope): Promise<readonly HistoryAuditRecord[]>;
|
|
83
|
+
export declare function resolveWorkspaceRealPathSync(path: string): string;
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
'use strict';var crypto=require('crypto'),fs=require('fs'),path=require('path');var B=class extends Error{code;constructor(e){super(e),this.name="HistorySnapshotError",this.code=e;}},Z=8e3,q=1e3,N=64*1024*1024,K=1024*1024,It=512,Rt=1440*60*1e3,wt=/^hs1-([0-9a-f]{64})$/,at=448,b=384,At=20,$t=20,
|
|
1
|
+
'use strict';var crypto=require('crypto'),fs=require('fs'),path=require('path');var B=class extends Error{code;constructor(e){super(e),this.name="HistorySnapshotError",this.code=e;}},Z=8e3,q=1e3,N=64*1024*1024,K=1024*1024,It=512,Rt=1440*60*1e3,wt=/^hs1-([0-9a-f]{64})$/,at=448,b=384,At=20,$t=20,vt=12,Ut=8,jt=6e3,Gt=1024,Vt=64,Xt=16,_t=/^(?:env(?:ironment)?|authorization|auth(?:entication)?[_-]?(?:token|key)|token|access[_-]?token|refresh[_-]?token|api[_-]?key|password|passwd|secret|credentials?|execution[_-]?(?:auth(?:entication)?[_-]?)?(?:key|token)|system[_-]?prompt)$/i,Yt=new Map,zt=new Map,Jt=new Map,M;function Te(t){(!t||!Array.isArray(t.messages)||!t.activityByTask||typeof t.activityByTask[Symbol.iterator]!="function"||!Array.isArray(t.highlights))&&s("IO_ERROR"),(!Number.isSafeInteger(t.runEpoch)||t.runEpoch<0||!Number.isSafeInteger(t.preparedAtMs)||t.preparedAtMs<0)&&s("IO_ERROR");let e=Ot(t.scope),n=t.preparedAtMs+Rt;Number.isSafeInteger(n)||s("IO_ERROR");let r=[],i=new Map,o=0;for(let a of t.messages){(!a||typeof a.text!="string"||typeof a.isAssistant!="boolean")&&s("IO_ERROR"),(!a.isAssistant||o===0)&&(o+=1);let c=Ee(a);c&&i.set(c,o),r.push({ordinal:r.length+1,kind:"message",taskId:c??null,turn:o,body:I(a.text),metadata:be(a.metadata),details:St({id:a.id,isAssistant:a.isAssistant,taskId:a.taskId,timestamp:a.timestamp,activity_log:a.activity_log,files:a.files,appCard:a.appCard})});}for(let[a,c]of t.activityByTask)(typeof a!="string"||a.length===0||typeof c!="string")&&s("IDENTITY_MISSING"),r.push({ordinal:r.length+1,kind:"activity",taskId:I(a),turn:i.get(a)??null,body:I(c),metadata:null,details:null});for(let a of t.highlights){(!a||typeof a.id!="string"||typeof a.text!="string")&&s("IO_ERROR");let c=a.coversToTaskId??a.covers_to_task_id??a.coversFromTaskId??a.covers_from_task_id;r.push({ordinal:r.length+1,kind:"highlight",taskId:c?I(c):null,turn:c?i.get(c)??null:null,body:I(a.text),metadata:null,details:St({id:a.id,kind:a.kind,source:a.source,coversFromTaskId:a.coversFromTaskId,coversToTaskId:a.coversToTaskId,covers_from_task_id:a.covers_from_task_id,covers_to_task_id:a.covers_to_task_id,createdAt:a.createdAt,created_at:a.created_at})});}let d={schemaVersion:1,scope:e,runEpoch:t.runEpoch,preparedAtMs:t.preparedAtMs,expiresAtMs:n,...t.activityCoverage===void 0?{}:{activityCoverage:v(t.activityCoverage,new Set)},entries:r},f=Buffer.from(G(d),"utf8");return f.byteLength>N&&s("TOO_LARGE"),{ref:`hs1-${crypto.createHash("sha256").update(f.toString("latin1"),"latin1").digest("hex")}`,expiresAtMs:n,bytes:f}}async function Pe(t,e){let n=Wt(e);Date.now()>=n.snapshot.expiresAtMs&&s("EXPIRED");let r=await Pt(t,true);r.projectRoot!==n.snapshot.scope.workspaceRealPath&&s("SCOPE_MISMATCH");let i=path.join(r.directory,`${n.ref}.json`),o=await ut(Yt,i,async()=>{if(await w(r),await T(i)){let c=await $(r,i,N);return rt(n,c)}let f=path.join(r.directory,`.tmp-${process.pid}-${crypto.randomBytes(16).toString("hex")}`),y,a;try{await w(r),y=await fs.promises.open(f,fs.constants.O_CREAT|fs.constants.O_EXCL|fs.constants.O_WRONLY|V(),b),await y.chmod(b);let c=await y.stat({bigint:!0});a=c,S(c,b),await Ie(y,n.bytes),await y.sync();let l=await y.stat({bigint:!0});S(l,b),(!R(c,l)||l.size!==BigInt(n.bytes.byteLength))&&s("TAMPERED"),a=l,await w(r);let u=await fs.promises.lstat(f,{bigint:!0});S(u,b),R(u,l)||s("UNSAFE_FILE"),await y.close(),y=void 0;try{await fs.promises.link(f,i);}catch(h){if(X(h)!=="EEXIST")throw h;await it(r,f,a),a=void 0;let E=await qt(r,i);return rt(n,E)}await it(r,f,a),a=void 0;let g=await $(r,i,N);return rt(n,g)}catch(c){throw y&&await y.close().catch(()=>{}),a&&await it(r,f,a).catch(()=>{}),Y(c)}});return await ut(Jt,"history-snapshot-retention",async()=>{await oe(r,n.ref);}).catch(()=>{}),o}function Me(t,e){return (typeof t.CREWX_AGENT_ID!="string"||t.CREWX_AGENT_ID.length===0)&&s("IDENTITY_MISSING"),(typeof t.CREWX_TASK_ID!="string"||t.CREWX_TASK_ID.length===0)&&s("IDENTITY_MISSING"),typeof t.CREWX_THREAD_ID!="string"&&s("IDENTITY_MISSING"),Ot({workspaceRealPath:e,agentId:t.CREWX_AGENT_ID,threadId:t.CREWX_THREAD_ID,taskId:t.CREWX_TASK_ID})}async function Be(t,e,n,r={}){let i=await j(t,e,n),o=r.from??1;(!Number.isSafeInteger(o)||o<1||o>i.snapshot.entries.length+1)&&s("NOT_FOUND");let d=r.limit??vt;(!Number.isSafeInteger(d)||d<=0)&&s("TOO_LARGE");let f=Math.min(d,At);if(o===i.snapshot.entries.length+1)return C(e,"toc","no entries on this page",[],[],void 0);let y=[],a=[],c;for(let u=o-1;u<i.snapshot.entries.length&&y.length<f;u+=1){let g=i.snapshot.entries[u],h=ue(g.body,120),E=`entry=${g.ordinal} kind=${g.kind} task=${ht(g.taskId??"unknown",48)} turn=${g.turn??"unknown"} bytes=${Buffer.byteLength(g.body)} preview=${JSON.stringify(h.text)}`,m=u+1<i.snapshot.entries.length?ce(e,g.ordinal+1,f):void 0,P=[...y,E],z=[...a,{entry:g.ordinal,startByte:0,endByte:h.endByte}],H=i.snapshot.entries.slice(o-1,o-1+P.length).map(J=>J.ordinal),x=C(e,"toc",P.join(`
|
|
2
2
|
`),H,z,m);if(!lt(x))break;y.push(E),a.push({entry:g.ordinal,startByte:0,endByte:h.endByte}),c=m;}y.length===0&&s("TOO_LARGE");let l=i.snapshot.entries.slice(o-1,o-1+y.length).map(u=>u.ordinal);return C(e,"toc",y.join(`
|
|
3
|
-
`),l,a,c)}async function
|
|
3
|
+
`),l,a,c)}async function Ne(t,e,n,r){let i=await j(t,e,n);(!r||typeof r.query!="string")&&s("TOO_LARGE");let o=I(r.query);(o.length===0||Buffer.byteLength(o)>256)&&s("TOO_LARGE");let d=r.limit??Ut;(!Number.isSafeInteger(d)||d<=0)&&s("TOO_LARGE");let f=Math.min(d,$t),y=crypto.createHash("sha256").update(o,"utf8").digest("hex"),a=r.cursor===void 0?void 0:me(r.cursor,e,y,i.snapshot.entries.length),c=le(i.snapshot.entries,o,f+1,a);if(c.length===0)return C(e,"search",`no matches for ${JSON.stringify(nt(o,80).text)}`,[],[],void 0);let l=[],u=[],g=[],h,E=c.slice(0,f);for(let A=0;A<E.length;A+=1){let m=E[A],P=`entry=${m.entry.ordinal} kind=${m.entry.kind} task=${ht(m.entry.taskId??"unknown",48)} turn=${m.entry.turn??"unknown"} match=${m.startByte}..${m.endByte} snippet=${JSON.stringify(m.snippet)}`,H=A+1<c.length?de(e,o,f,pe({version:1,ref:e,queryHash:y,entry:m.entry.ordinal,afterByte:m.startByte+1})):void 0,x=[...l,P],J={entry:m.entry.ordinal,startByte:m.snippetStartByte,endByte:m.snippetEndByte},Lt=[...u,J],xt=[...g,m.entry.ordinal],Dt=C(e,"search",x.join(`
|
|
4
4
|
`),xt,Lt,H);if(!lt(Dt))break;l.push(P),u.push(J),g.push(m.entry.ordinal),h=H;}return l.length===0&&s("TOO_LARGE"),C(e,"search",l.join(`
|
|
5
|
-
`),g,u,h)}async function
|
|
5
|
+
`),g,u,h)}async function Le(t,e,n,r){let i=await j(t,e,n);(!r||!Number.isSafeInteger(r.entry)||r.entry<1)&&s("NOT_FOUND");let o=i.snapshot.entries[r.entry-1];o||s("NOT_FOUND");let d=Buffer.from(o.body,"utf8"),f=r.offset??0;(!Number.isSafeInteger(f)||f<0||f>d.byteLength||!dt(d,f))&&s("NOT_FOUND");let y=r.bytes??jt;(!Number.isSafeInteger(y)||y<=0)&&s("TOO_LARGE");let a=Math.min(y,Z),c=f===d.byteLength?d.byteLength:F(d,Math.min(d.byteLength,f+a));c===f&&f<d.byteLength&&(c=Bt(d,f));let l=`${ye(o)}
|
|
6
6
|
body:
|
|
7
|
-
`;for(;;){let g=c<d.byteLength?
|
|
7
|
+
`;for(;;){let g=c<d.byteLength?fe(e,o.ordinal,c,a):void 0,h=d.toString("utf8",f,c),E=`${l}${h}${h.endsWith(`
|
|
8
8
|
`)?"":`
|
|
9
|
-
`}`,A=C(e,"read",E,[o.ordinal],[{entry:o.ordinal,startByte:f,endByte:c}],g);if(lt(A))return A;let m=gt(A.text);if(m>q){let z=
|
|
10
|
-
`,"utf8");y.byteLength>It&&s("TOO_LARGE");let a=path.join(i.storage.directory,`${e}.reads.jsonl`);await ut(zt,a,async()=>{await w(i.storage);let c=await T(a),l;if(c)S(c,b),l=await mt(a);else try{l=await fs.promises.open(a,fs.constants.O_CREAT|fs.constants.O_EXCL|fs.constants.O_WRONLY|fs.constants.O_APPEND|V(),b),await l.chmod(b);}catch(u){if(X(u)!=="EEXIST")throw u;c=await fs.promises.lstat(a,{bigint:!0}),l=await mt(a);}try{let u=await l.stat({bigint:!0});S(u,b),c&&!R(c,u)&&s("UNSAFE_FILE"),u.size+BigInt(y.byteLength)>BigInt(K)&&s("TOO_LARGE"),await w(i.storage);let g=await fs.promises.lstat(a,{bigint:!0});S(g,b),R(g,u)||s("UNSAFE_FILE");let{bytesWritten:h}=await l.write(y.toString("latin1"),null,"latin1");h!==y.byteLength&&s("IO_ERROR"),await l.sync();let E=await l.stat({bigint:!0});S(E,b),E.size>BigInt(K)&&s("TOO_LARGE");}finally{await l.close().catch(()=>{});}});}async function
|
|
9
|
+
`}`,A=C(e,"read",E,[o.ordinal],[{entry:o.ordinal,startByte:f,endByte:c}],g);if(lt(A))return A;let m=gt(A.text);if(m>q){let z=se(d,f,c),H=Math.max(0,z-(m-q)),x=ae(d,f,c,H);if(x>f&&x<c){c=x;continue}}c-f<=4&&s("TOO_LARGE");let P=F(d,f+Math.floor((c-f)/2));P<=f&&s("TOO_LARGE"),c=P;}}async function xe(t,e,n,r){let i=await j(t,e,n);(!r||r.snapshotRef!==e||!Nt(r.operation)||typeof r.text!="string")&&s("TAMPERED");let o=Buffer.byteLength(r.text,"utf8");(o>Z||gt(r.text)>q||r.byteCount!==o||!Array.isArray(r.entries)||!Array.isArray(r.ranges))&&s("TAMPERED");for(let c of r.entries)(!Number.isSafeInteger(c)||c<1||c>i.snapshot.entries.length)&&s("TAMPERED");for(let c of r.ranges){let l=i.snapshot.entries[c.entry-1],u=l?Buffer.from(l.body,"utf8"):void 0;(!l||!u||!Number.isSafeInteger(c.startByte)||!Number.isSafeInteger(c.endByte)||c.startByte<0||c.endByte<c.startByte||c.endByte>u.byteLength||!dt(u,c.startByte)||!dt(u,c.endByte))&&s("TAMPERED");}(r.entries.length!==r.ranges.length||r.entries.some((c,l)=>c!==r.ranges[l]?.entry))&&s("TAMPERED");let d={version:1,timestampMs:Date.now(),operation:r.operation,taskId:i.scope.taskId,entries:[...r.entries],ranges:r.ranges.map(c=>({entry:c.entry,startByte:c.startByte,endByte:c.endByte})),byteCount:o},f={version:d.version,timestampMs:d.timestampMs,operation:d.operation,taskId:d.taskId,ranges:kt(d.ranges),byteCount:d.byteCount},y=Buffer.from(`${G(f)}
|
|
10
|
+
`,"utf8");y.byteLength>It&&s("TOO_LARGE");let a=path.join(i.storage.directory,`${e}.reads.jsonl`);await ut(zt,a,async()=>{await w(i.storage);let c=await T(a),l;if(c)S(c,b),l=await mt(a);else try{l=await fs.promises.open(a,fs.constants.O_CREAT|fs.constants.O_EXCL|fs.constants.O_WRONLY|fs.constants.O_APPEND|V(),b),await l.chmod(b);}catch(u){if(X(u)!=="EEXIST")throw u;c=await fs.promises.lstat(a,{bigint:!0}),l=await mt(a);}try{let u=await l.stat({bigint:!0});S(u,b),c&&!R(c,u)&&s("UNSAFE_FILE"),u.size+BigInt(y.byteLength)>BigInt(K)&&s("TOO_LARGE"),await w(i.storage);let g=await fs.promises.lstat(a,{bigint:!0});S(g,b),R(g,u)||s("UNSAFE_FILE");let{bytesWritten:h}=await l.write(y.toString("latin1"),null,"latin1");h!==y.byteLength&&s("IO_ERROR"),await l.sync();let E=await l.stat({bigint:!0});S(E,b),E.size>BigInt(K)&&s("TOO_LARGE");}finally{await l.close().catch(()=>{});}});}async function De(t,e,n){let r=await j(t,e,n),i=path.join(r.storage.directory,`${e}.reads.jsonl`);await w(r.storage);let o=await T(i);if(!o)return [];S(o,b),o.size>BigInt(K)&&s("TOO_LARGE");let f=(await $(r.storage,i,K,true)).toString("utf8");if(f.length===0)return [];f.endsWith(`
|
|
11
11
|
`)||s("TAMPERED");let y=f.slice(0,-1).split(`
|
|
12
|
-
`),a=[];for(let c of y){Buffer.byteLength(c,"utf8")+1>It&&s("TOO_LARGE");let l;try{l=JSON.parse(c);}catch{s("TAMPERED");}let u=Kt(l,r.snapshot.entries);(G(Qt(u))!==c||u.taskId!==r.scope.taskId)&&s("TAMPERED"),a.push(u);}return a}function Wt(t){(!t||typeof t.ref!="string"||!wt.test(t.ref)||!Buffer.isBuffer(t.bytes))&&s("INVALID_REF"),t.bytes.byteLength>N&&s("TOO_LARGE");let e=crypto.createHash("sha256").update(t.bytes.toString("latin1"),"latin1").digest("hex");t.ref!==`hs1-${e}`&&s("TAMPERED");let n=tt(t.bytes);return t.expiresAtMs!==n.expiresAtMs&&s("TAMPERED"),{ref:t.ref,bytes:Buffer.from(t.bytes.toString("latin1"),"latin1"),snapshot:n}}function rt(t,e){(`hs1-${crypto.createHash("sha256").update(e.toString("latin1"),"latin1").digest("hex")}`!==t.ref||e.toString("latin1")!==t.bytes.toString("latin1"))&&s("TAMPERED");let r=tt(e);return r.expiresAtMs!==t.snapshot.expiresAtMs&&s("TAMPERED"),{ref:t.ref,entries:r.entries.length,bytes:e.byteLength,expiresAtMs:r.expiresAtMs}}async function qt(t,e){for(let n=0;n<12;n+=1)try{return await $(t,e,N)}catch(r){if(!(r instanceof B)||r.code!=="UNSAFE_FILE"||n===11)throw r;await Re(5);}s("IO_ERROR");}async function v(t,e,n){let r=re(e),i=await te(n),o=await Pt(t,false);o.projectRoot!==i.workspaceRealPath&&s("SCOPE_MISMATCH");let d=path.join(o.directory,`${e}.json`),f=await $(o,d,N);crypto.createHash("sha256").update(f.toString("latin1"),"latin1").digest("hex")!==r&&s("TAMPERED");let y=tt(f);return ne(y.scope,i)||s("SCOPE_MISMATCH"),Date.now()>=y.expiresAtMs&&s("EXPIRED"),{storage:o,snapshot:y,scope:i}}function tt(t){let e;try{e=JSON.parse(t.toString("utf8"));}catch{s("TAMPERED");}(!O(e)||!st(e,["schemaVersion","scope","runEpoch","preparedAtMs","expiresAtMs","activityCoverage","entries"])||e.schemaVersion!==1||!ee(e.scope)||!Array.isArray(e.entries))&&s("TAMPERED"),(!st(e.scope,["workspaceRealPath","agentId","threadId","taskId"])||!path.isAbsolute(e.scope.workspaceRealPath)||path.resolve(e.scope.workspaceRealPath)!==e.scope.workspaceRealPath||!L(e.scope.workspaceRealPath)||!L(e.scope.agentId)||!L(e.scope.threadId)||!L(e.scope.taskId))&&s("TAMPERED"),(!Number.isSafeInteger(e.runEpoch)||e.runEpoch<0||!Number.isSafeInteger(e.preparedAtMs)||e.preparedAtMs<0||!Number.isSafeInteger(e.expiresAtMs)||e.expiresAtMs!==e.preparedAtMs+Rt)&&s("TAMPERED");let n=[];for(let i=0;i<e.entries.length;i+=1){let o=e.entries[i];(!O(o)||!st(o,["ordinal","kind","taskId","turn","body","metadata","details"])||o.ordinal!==i+1||o.kind!=="message"&&o.kind!=="activity"&&o.kind!=="highlight"||!(o.taskId===null||typeof o.taskId=="string")||!(o.turn===null||Number.isSafeInteger(o.turn)&&o.turn>0)||typeof o.body!="string"||!L(o.body)||!(o.metadata===null||O(o.metadata))||!(o.details===null||O(o.details)))&&s("TAMPERED"),n.push(o);}let r=e;return G(r)!==t.toString("utf8")&&s("TAMPERED"),e.activityCoverage!==void 0&&be(e.activityCoverage,new Set),yt(r)&&s("TAMPERED"),{...r,entries:n}}function Kt(t,e){(!O(t)||t.version!==1||!Number.isSafeInteger(t.timestampMs)||t.timestampMs<0)&&s("TAMPERED"),(!Nt(t.operation)||typeof t.taskId!="string"||typeof t.ranges!="string")&&s("TAMPERED"),(!Number.isSafeInteger(t.byteCount)||t.byteCount<0||t.byteCount>Z)&&s("TAMPERED");let n=Zt(t.ranges),r=[...new Set(n.map(i=>i.entry))];for(let i of n){let o=e[i.entry-1];(!o||i.endByte>Buffer.byteLength(o.body,"utf8"))&&s("TAMPERED");}return {version:1,timestampMs:t.timestampMs,operation:t.operation,taskId:t.taskId,entries:r,ranges:n,byteCount:t.byteCount}}function Qt(t){return {version:t.version,timestampMs:t.timestampMs,operation:t.operation,taskId:t.taskId,ranges:kt(t.ranges),byteCount:t.byteCount}}function kt(t){let e=[];W(e,BigInt(t.length));let n=0,r=0;for(let i of t){let o=i.entry-n,d=i.startByte-r;o<0&&s("TAMPERED"),W(e,BigInt(o));let f=BigInt(d);W(e,f>=0n?f*2n:-f*2n-1n),W(e,BigInt(i.endByte-i.startByte)),n=i.entry,r=i.startByte;}return Buffer.from(e).toString("base64url")}function Zt(t){(!/^[A-Za-z0-9_-]*$/.test(t)||Buffer.byteLength(t)>448)&&s("TAMPERED");let e=Buffer.from(t,"base64url");e.toString("base64url")!==t&&s("TAMPERED");let n=0,r=()=>{let y=0n,a=0n;for(let c=0;c<10&&n<e.length;c+=1){let l=e[n++];if(y|=BigInt(l&127)<<a,(l&128)===0)return y;a+=7n;}s("TAMPERED");},i=Number(r());(!Number.isSafeInteger(i)||i<0||i>At)&&s("TAMPERED");let o=[],d=0,f=0;for(let y=0;y<i;y+=1){let a=Number(r()),c=r(),l=c%2n===0n?Number(c/2n):-Number((c+1n)/2n),u=Number(r()),g=d+a,h=f+l,E=h+u;(!Number.isSafeInteger(g)||g<1||!Number.isSafeInteger(h)||h<0||!Number.isSafeInteger(E)||E<h)&&s("TAMPERED"),o.push({entry:g,startByte:h,endByte:E}),d=g,f=h;}return n!==e.length&&s("TAMPERED"),o}function W(t,e){e<0n&&s("TAMPERED");let n=e;for(;n>=0x80n;)t.push(Number(n&0x7fn|0x80n)),n>>=7n;t.push(Number(n));}function Ot(t){Tt(t);try{return {workspaceRealPath:fs.realpathSync(path.resolve(t.workspaceRealPath)),agentId:I(t.agentId),threadId:I(t.threadId),taskId:I(t.taskId)}}catch{s("IO_ERROR");}}async function te(t){Tt(t);try{return {workspaceRealPath:await fs.promises.realpath(path.resolve(t.workspaceRealPath)),agentId:I(t.agentId),threadId:I(t.threadId),taskId:I(t.taskId)}}catch{s("IO_ERROR");}}function Tt(t){(!t||typeof t.workspaceRealPath!="string"||t.workspaceRealPath.length===0)&&s("IDENTITY_MISSING"),(typeof t.agentId!="string"||t.agentId.length===0)&&s("IDENTITY_MISSING"),(typeof t.taskId!="string"||t.taskId.length===0)&&s("IDENTITY_MISSING"),typeof t.threadId!="string"&&s("IDENTITY_MISSING");}function ee(t){return O(t)&&typeof t.workspaceRealPath=="string"&&typeof t.agentId=="string"&&typeof t.threadId=="string"&&typeof t.taskId=="string"&&t.agentId.length>0&&t.taskId.length>0}function ne(t,e){return t.workspaceRealPath===e.workspaceRealPath&&t.agentId===e.agentId&&t.threadId===e.threadId&&t.taskId===e.taskId}function re(t){typeof t!="string"&&s("INVALID_REF");let e=wt.exec(t);return e||s("INVALID_REF"),e[1]}async function Pt(t,e){(typeof t!="string"||t.length===0)&&s("IO_ERROR");try{let n=await fs.promises.realpath(path.resolve(t)),r=await fs.promises.lstat(n,{bigint:!0});(r.isSymbolicLink()||!r.isDirectory())&&s("UNSAFE_FILE"),et(r);let i={path:n,dev:r.dev,ino:r.ino,isSnapshotDirectory:!1},o=await pt(path.join(n,".crewx"),e,!1,[i]),d=await pt(path.join(n,".crewx","history-snapshots"),e,!0,[i,o]);return {projectRoot:n,directory:d.path,pins:[i,o,d]}}catch(n){throw Y(n)}}async function pt(t,e,n,r){await ct(r);let i=await T(t),o=false;if(!i){e||s("NOT_FOUND");try{await fs.promises.mkdir(t,{mode:at}),o=!0;}catch(f){if(X(f)!=="EEXIST")throw f}i=await fs.promises.lstat(t,{bigint:true}),o&&process.platform!=="win32"&&await fs.promises.chmod(t,at);}if(D(i,n),o&&(i=await fs.promises.lstat(t,{bigint:true}),D(i,n)),process.platform!=="win32"){let f=await fs.promises.open(t,fs.constants.O_RDONLY|Ie()|V());try{let y=await f.stat({bigint:!0});D(y,n),R(i,y)||s("UNSAFE_FILE");}finally{await f.close();}}await ct(r);let d=await fs.promises.lstat(t,{bigint:true});return D(d,n),R(i,d)||s("UNSAFE_FILE"),{path:t,dev:i.dev,ino:i.ino,isSnapshotDirectory:n}}async function w(t){await ct(t.pins);}async function ct(t){for(let e of t){let n=await T(e.path);(!n||n.isSymbolicLink()||!n.isDirectory()||!R(n,e))&&s("UNSAFE_FILE"),D(n,e.isSnapshotDirectory);}}function D(t,e){if((t.isSymbolicLink()||!t.isDirectory())&&s("UNSAFE_FILE"),et(t),process.platform==="win32")return;let n=Number(t.mode&0o777n);(e?n!==at:(n&18)!==0)&&s("UNSAFE_FILE");}function S(t,e){(t.isSymbolicLink()||!t.isFile()||t.nlink!==1n)&&s("UNSAFE_FILE"),et(t),process.platform!=="win32"&&Number(t.mode&0o777n)!==e&&s("UNSAFE_FILE");}function et(t){if(process.platform==="win32")return;let e=process.getuid;typeof e=="function"&&t.uid!==BigInt(e())&&s("UNSAFE_FILE");}async function $(t,e,n,r=false){let i;try{await w(t);let o=await T(e);if(!o){if(r)return Buffer.alloc(0);s("NOT_FOUND");}S(o,b),o.size>BigInt(n)&&s("TOO_LARGE"),i=await fs.promises.open(e,fs.constants.O_RDONLY|V());let d=await i.stat({bigint:!0});S(d,b),R(o,d)||s("UNSAFE_FILE"),d.size>BigInt(n)&&s("TOO_LARGE"),await w(t);let f=await fs.promises.lstat(e,{bigint:!0});(f.isSymbolicLink()||!R(f,d))&&s("UNSAFE_FILE");let y=await i.readFile();y.byteLength>n&&s("TOO_LARGE");let a=await i.stat({bigint:!0});S(a,b),(!R(d,a)||a.size!==d.size||a.size!==BigInt(y.byteLength))&&s("TAMPERED");let c=await fs.promises.lstat(e,{bigint:!0});return S(c,b),R(c,a)||s("UNSAFE_FILE"),await w(t),y}catch(o){throw Y(o)}finally{i&&await i.close().catch(()=>{});}}async function mt(t){let e=await fs.promises.lstat(t,{bigint:true});S(e,b);let n=await fs.promises.open(t,fs.constants.O_WRONLY|fs.constants.O_APPEND|V());try{let r=await n.stat({bigint:!0});return S(r,b),R(e,r)||s("UNSAFE_FILE"),n}catch(r){throw await n.close().catch(()=>{}),r}}async function it(t,e,n){await w(t);let r=await T(e);r&&((r.isSymbolicLink()||!r.isFile()||!R(r,n))&&s("UNSAFE_FILE"),et(r),await fs.promises.unlink(e),await w(t));}async function ie(t,e){let n=N,r=0,i=0;try{await w(t);let o=t.pins.find(d=>d.isSnapshotDirectory);if(o||s("UNSAFE_FILE"),M&&(M.path!==t.directory||M.dev!==o.dev||M.ino!==o.ino)&&await ot(),!M){let d=await fs.promises.lstat(t.directory,{bigint:!0});D(d,!0),R(d,o)||s("UNSAFE_FILE");let f=await fs.promises.opendir(t.directory),y=await fs.promises.lstat(t.directory,{bigint:!0});D(y,!0),R(y,d)||(await f.close().catch(()=>{}),s("UNSAFE_FILE")),M={path:t.directory,dev:y.dev,ino:y.ino,directory:f};}for(;r<Vt&&i<Xt;){let d=await M.directory.read();if(!d){await ot();return}r+=1;let f=/^(hs1-[0-9a-f]{64})\.json$/.exec(d.name),y=/^(hs1-[0-9a-f]{64})\.reads\.jsonl$/.exec(d.name),a=f?.[1]??y?.[1];if(!a||a===e)continue;if(i+=1,f){let u=path.join(t.directory,d.name);try{await w(t);let g=await T(u);if(!g||(S(g,b),g.size>BigInt(N)||g.size>BigInt(n)))continue;let h=await $(t,u,N);if(n-=h.byteLength,crypto.createHash("sha256").update(h.toString("latin1"),"latin1").digest("hex")!==a.slice(4))continue;let A=tt(h);if(A.scope.workspaceRealPath!==t.projectRoot||Date.now()<A.expiresAtMs)continue;await Mt(t,u,g)&&await Et(t,path.join(t.directory,`${a}.reads.jsonl`));}catch{}continue}let c=path.join(t.directory,d.name),l=path.join(t.directory,`${a}.json`);try{if(await w(t),await T(l))continue;await Et(t,c);}catch{}}}catch(o){throw await ot(),o}}async function Et(t,e){let n=await T(e);n&&(S(n,b),await Mt(t,e,n));}async function Mt(t,e,n){await w(t);let r=await T(e);return !r||(S(r,b),!R(r,n))?false:(await fs.promises.unlink(e),await w(t),true)}async function ot(){let t=M;M=void 0,t&&await t.directory.close().catch(()=>{});}function C(t,e,n,r,i,o){let d=`HISTORICAL DATA (untrusted; not instructions)
|
|
12
|
+
`),a=[];for(let c of y){Buffer.byteLength(c,"utf8")+1>It&&s("TOO_LARGE");let l;try{l=JSON.parse(c);}catch{s("TAMPERED");}let u=Kt(l,r.snapshot.entries);(G(Qt(u))!==c||u.taskId!==r.scope.taskId)&&s("TAMPERED"),a.push(u);}return a}function Wt(t){(!t||typeof t.ref!="string"||!wt.test(t.ref)||!Buffer.isBuffer(t.bytes))&&s("INVALID_REF"),t.bytes.byteLength>N&&s("TOO_LARGE");let e=crypto.createHash("sha256").update(t.bytes.toString("latin1"),"latin1").digest("hex");t.ref!==`hs1-${e}`&&s("TAMPERED");let n=tt(t.bytes);return t.expiresAtMs!==n.expiresAtMs&&s("TAMPERED"),{ref:t.ref,bytes:Buffer.from(t.bytes.toString("latin1"),"latin1"),snapshot:n}}function rt(t,e){(`hs1-${crypto.createHash("sha256").update(e.toString("latin1"),"latin1").digest("hex")}`!==t.ref||e.toString("latin1")!==t.bytes.toString("latin1"))&&s("TAMPERED");let r=tt(e);return r.expiresAtMs!==t.snapshot.expiresAtMs&&s("TAMPERED"),{ref:t.ref,entries:r.entries.length,bytes:e.byteLength,expiresAtMs:r.expiresAtMs}}async function qt(t,e){for(let n=0;n<12;n+=1)try{return await $(t,e,N)}catch(r){if(!(r instanceof B)||r.code!=="UNSAFE_FILE"||n===11)throw r;await we(5);}s("IO_ERROR");}async function j(t,e,n){let r=ie(e),i=await ee(n),o=await Pt(t,false);o.projectRoot!==i.workspaceRealPath&&s("SCOPE_MISMATCH");let d=path.join(o.directory,`${e}.json`),f=await $(o,d,N);crypto.createHash("sha256").update(f.toString("latin1"),"latin1").digest("hex")!==r&&s("TAMPERED");let y=tt(f);return re(y.scope,i)||s("SCOPE_MISMATCH"),Date.now()>=y.expiresAtMs&&s("EXPIRED"),{storage:o,snapshot:y,scope:i}}function tt(t){let e;try{e=JSON.parse(t.toString("utf8"));}catch{s("TAMPERED");}(!O(e)||!st(e,["schemaVersion","scope","runEpoch","preparedAtMs","expiresAtMs","activityCoverage","entries"])||e.schemaVersion!==1||!ne(e.scope)||!Array.isArray(e.entries))&&s("TAMPERED"),(!st(e.scope,["workspaceRealPath","agentId","threadId","taskId"])||!path.isAbsolute(e.scope.workspaceRealPath)||path.resolve(e.scope.workspaceRealPath)!==e.scope.workspaceRealPath||!L(e.scope.workspaceRealPath)||!L(e.scope.agentId)||!L(e.scope.threadId)||!L(e.scope.taskId))&&s("TAMPERED"),(!Number.isSafeInteger(e.runEpoch)||e.runEpoch<0||!Number.isSafeInteger(e.preparedAtMs)||e.preparedAtMs<0||!Number.isSafeInteger(e.expiresAtMs)||e.expiresAtMs!==e.preparedAtMs+Rt)&&s("TAMPERED");let n=[];for(let i=0;i<e.entries.length;i+=1){let o=e.entries[i];(!O(o)||!st(o,["ordinal","kind","taskId","turn","body","metadata","details"])||o.ordinal!==i+1||o.kind!=="message"&&o.kind!=="activity"&&o.kind!=="highlight"||!(o.taskId===null||typeof o.taskId=="string")||!(o.turn===null||Number.isSafeInteger(o.turn)&&o.turn>0)||typeof o.body!="string"||!L(o.body)||!(o.metadata===null||O(o.metadata))||!(o.details===null||O(o.details)))&&s("TAMPERED"),n.push(o);}let r=e;return G(r)!==t.toString("utf8")&&s("TAMPERED"),e.activityCoverage!==void 0&&Se(e.activityCoverage,new Set),yt(r)&&s("TAMPERED"),{...r,entries:n}}function Kt(t,e){(!O(t)||t.version!==1||!Number.isSafeInteger(t.timestampMs)||t.timestampMs<0)&&s("TAMPERED"),(!Nt(t.operation)||typeof t.taskId!="string"||typeof t.ranges!="string")&&s("TAMPERED"),(!Number.isSafeInteger(t.byteCount)||t.byteCount<0||t.byteCount>Z)&&s("TAMPERED");let n=Zt(t.ranges),r=[...new Set(n.map(i=>i.entry))];for(let i of n){let o=e[i.entry-1];(!o||i.endByte>Buffer.byteLength(o.body,"utf8"))&&s("TAMPERED");}return {version:1,timestampMs:t.timestampMs,operation:t.operation,taskId:t.taskId,entries:r,ranges:n,byteCount:t.byteCount}}function Qt(t){return {version:t.version,timestampMs:t.timestampMs,operation:t.operation,taskId:t.taskId,ranges:kt(t.ranges),byteCount:t.byteCount}}function kt(t){let e=[];W(e,BigInt(t.length));let n=0,r=0;for(let i of t){let o=i.entry-n,d=i.startByte-r;o<0&&s("TAMPERED"),W(e,BigInt(o));let f=BigInt(d);W(e,f>=0n?f*2n:-f*2n-1n),W(e,BigInt(i.endByte-i.startByte)),n=i.entry,r=i.startByte;}return Buffer.from(e).toString("base64url")}function Zt(t){(!/^[A-Za-z0-9_-]*$/.test(t)||Buffer.byteLength(t)>448)&&s("TAMPERED");let e=Buffer.from(t,"base64url");e.toString("base64url")!==t&&s("TAMPERED");let n=0,r=()=>{let y=0n,a=0n;for(let c=0;c<10&&n<e.length;c+=1){let l=e[n++];if(y|=BigInt(l&127)<<a,(l&128)===0)return y;a+=7n;}s("TAMPERED");},i=Number(r());(!Number.isSafeInteger(i)||i<0||i>At)&&s("TAMPERED");let o=[],d=0,f=0;for(let y=0;y<i;y+=1){let a=Number(r()),c=r(),l=c%2n===0n?Number(c/2n):-Number((c+1n)/2n),u=Number(r()),g=d+a,h=f+l,E=h+u;(!Number.isSafeInteger(g)||g<1||!Number.isSafeInteger(h)||h<0||!Number.isSafeInteger(E)||E<h)&&s("TAMPERED"),o.push({entry:g,startByte:h,endByte:E}),d=g,f=h;}return n!==e.length&&s("TAMPERED"),o}function W(t,e){e<0n&&s("TAMPERED");let n=e;for(;n>=0x80n;)t.push(Number(n&0x7fn|0x80n)),n>>=7n;t.push(Number(n));}function te(t){return fs.realpathSync.native(path.resolve(t))}function Ot(t){Tt(t);try{return {workspaceRealPath:te(t.workspaceRealPath),agentId:I(t.agentId),threadId:I(t.threadId),taskId:I(t.taskId)}}catch{s("IO_ERROR");}}async function ee(t){Tt(t);try{return {workspaceRealPath:await fs.promises.realpath(path.resolve(t.workspaceRealPath)),agentId:I(t.agentId),threadId:I(t.threadId),taskId:I(t.taskId)}}catch{s("IO_ERROR");}}function Tt(t){(!t||typeof t.workspaceRealPath!="string"||t.workspaceRealPath.length===0)&&s("IDENTITY_MISSING"),(typeof t.agentId!="string"||t.agentId.length===0)&&s("IDENTITY_MISSING"),(typeof t.taskId!="string"||t.taskId.length===0)&&s("IDENTITY_MISSING"),typeof t.threadId!="string"&&s("IDENTITY_MISSING");}function ne(t){return O(t)&&typeof t.workspaceRealPath=="string"&&typeof t.agentId=="string"&&typeof t.threadId=="string"&&typeof t.taskId=="string"&&t.agentId.length>0&&t.taskId.length>0}function re(t,e){return t.workspaceRealPath===e.workspaceRealPath&&t.agentId===e.agentId&&t.threadId===e.threadId&&t.taskId===e.taskId}function ie(t){typeof t!="string"&&s("INVALID_REF");let e=wt.exec(t);return e||s("INVALID_REF"),e[1]}async function Pt(t,e){(typeof t!="string"||t.length===0)&&s("IO_ERROR");try{let n=await fs.promises.realpath(path.resolve(t)),r=await fs.promises.lstat(n,{bigint:!0});(r.isSymbolicLink()||!r.isDirectory())&&s("UNSAFE_FILE"),et(r);let i={path:n,dev:r.dev,ino:r.ino,isSnapshotDirectory:!1},o=await pt(path.join(n,".crewx"),e,!1,[i]),d=await pt(path.join(n,".crewx","history-snapshots"),e,!0,[i,o]);return {projectRoot:n,directory:d.path,pins:[i,o,d]}}catch(n){throw Y(n)}}async function pt(t,e,n,r){await ct(r);let i=await T(t),o=false;if(!i){e||s("NOT_FOUND");try{await fs.promises.mkdir(t,{mode:at}),o=!0;}catch(f){if(X(f)!=="EEXIST")throw f}i=await fs.promises.lstat(t,{bigint:true}),o&&process.platform!=="win32"&&await fs.promises.chmod(t,at);}if(D(i,n),o&&(i=await fs.promises.lstat(t,{bigint:true}),D(i,n)),process.platform!=="win32"){let f=await fs.promises.open(t,fs.constants.O_RDONLY|Re()|V());try{let y=await f.stat({bigint:!0});D(y,n),R(i,y)||s("UNSAFE_FILE");}finally{await f.close();}}await ct(r);let d=await fs.promises.lstat(t,{bigint:true});return D(d,n),R(i,d)||s("UNSAFE_FILE"),{path:t,dev:i.dev,ino:i.ino,isSnapshotDirectory:n}}async function w(t){await ct(t.pins);}async function ct(t){for(let e of t){let n=await T(e.path);(!n||n.isSymbolicLink()||!n.isDirectory()||!R(n,e))&&s("UNSAFE_FILE"),D(n,e.isSnapshotDirectory);}}function D(t,e){if((t.isSymbolicLink()||!t.isDirectory())&&s("UNSAFE_FILE"),et(t),process.platform==="win32")return;let n=Number(t.mode&0o777n);(e?n!==at:(n&18)!==0)&&s("UNSAFE_FILE");}function S(t,e){(t.isSymbolicLink()||!t.isFile()||t.nlink!==1n)&&s("UNSAFE_FILE"),et(t),process.platform!=="win32"&&Number(t.mode&0o777n)!==e&&s("UNSAFE_FILE");}function et(t){if(process.platform==="win32")return;let e=process.getuid;typeof e=="function"&&t.uid!==BigInt(e())&&s("UNSAFE_FILE");}async function $(t,e,n,r=false){let i;try{await w(t);let o=await T(e);if(!o){if(r)return Buffer.alloc(0);s("NOT_FOUND");}S(o,b),o.size>BigInt(n)&&s("TOO_LARGE"),i=await fs.promises.open(e,fs.constants.O_RDONLY|V());let d=await i.stat({bigint:!0});S(d,b),R(o,d)||s("UNSAFE_FILE"),d.size>BigInt(n)&&s("TOO_LARGE"),await w(t);let f=await fs.promises.lstat(e,{bigint:!0});(f.isSymbolicLink()||!R(f,d))&&s("UNSAFE_FILE");let y=await i.readFile();y.byteLength>n&&s("TOO_LARGE");let a=await i.stat({bigint:!0});S(a,b),(!R(d,a)||a.size!==d.size||a.size!==BigInt(y.byteLength))&&s("TAMPERED");let c=await fs.promises.lstat(e,{bigint:!0});return S(c,b),R(c,a)||s("UNSAFE_FILE"),await w(t),y}catch(o){throw Y(o)}finally{i&&await i.close().catch(()=>{});}}async function mt(t){let e=await fs.promises.lstat(t,{bigint:true});S(e,b);let n=await fs.promises.open(t,fs.constants.O_WRONLY|fs.constants.O_APPEND|V());try{let r=await n.stat({bigint:!0});return S(r,b),R(e,r)||s("UNSAFE_FILE"),n}catch(r){throw await n.close().catch(()=>{}),r}}async function it(t,e,n){await w(t);let r=await T(e);r&&((r.isSymbolicLink()||!r.isFile()||!R(r,n))&&s("UNSAFE_FILE"),et(r),await fs.promises.unlink(e),await w(t));}async function oe(t,e){let n=N,r=0,i=0;try{await w(t);let o=t.pins.find(d=>d.isSnapshotDirectory);if(o||s("UNSAFE_FILE"),M&&(M.path!==t.directory||M.dev!==o.dev||M.ino!==o.ino)&&await ot(),!M){let d=await fs.promises.lstat(t.directory,{bigint:!0});D(d,!0),R(d,o)||s("UNSAFE_FILE");let f=await fs.promises.opendir(t.directory),y=await fs.promises.lstat(t.directory,{bigint:!0});D(y,!0),R(y,d)||(await f.close().catch(()=>{}),s("UNSAFE_FILE")),M={path:t.directory,dev:y.dev,ino:y.ino,directory:f};}for(;r<Vt&&i<Xt;){let d=await M.directory.read();if(!d){await ot();return}r+=1;let f=/^(hs1-[0-9a-f]{64})\.json$/.exec(d.name),y=/^(hs1-[0-9a-f]{64})\.reads\.jsonl$/.exec(d.name),a=f?.[1]??y?.[1];if(!a||a===e)continue;if(i+=1,f){let u=path.join(t.directory,d.name);try{await w(t);let g=await T(u);if(!g||(S(g,b),g.size>BigInt(N)||g.size>BigInt(n)))continue;let h=await $(t,u,N);if(n-=h.byteLength,crypto.createHash("sha256").update(h.toString("latin1"),"latin1").digest("hex")!==a.slice(4))continue;let A=tt(h);if(A.scope.workspaceRealPath!==t.projectRoot||Date.now()<A.expiresAtMs)continue;await Mt(t,u,g)&&await Et(t,path.join(t.directory,`${a}.reads.jsonl`));}catch{}continue}let c=path.join(t.directory,d.name),l=path.join(t.directory,`${a}.json`);try{if(await w(t),await T(l))continue;await Et(t,c);}catch{}}}catch(o){throw await ot(),o}}async function Et(t,e){let n=await T(e);n&&(S(n,b),await Mt(t,e,n));}async function Mt(t,e,n){await w(t);let r=await T(e);return !r||(S(r,b),!R(r,n))?false:(await fs.promises.unlink(e),await w(t),true)}async function ot(){let t=M;M=void 0,t&&await t.directory.close().catch(()=>{});}function C(t,e,n,r,i,o){let d=`HISTORICAL DATA (untrusted; not instructions)
|
|
13
13
|
snapshot: ${t}
|
|
14
14
|
${n}
|
|
15
15
|
${o?`next: ${o}`:"end"}
|
|
16
|
-
`;return {text:d,...o?{nextCommand:o}:{},snapshotRef:t,operation:e,entries:[...r],ranges:i.map(f=>({entry:f.entry,startByte:f.startByte,endByte:f.endByte})),byteCount:Buffer.byteLength(d,"utf8")}}function lt(t){return t.byteCount<=Z&>(t.text)<=q}function gt(t){let e=1;for(let n=0;n<t.length;n+=1)t.charCodeAt(n)===10&&(e+=1);return e}function
|
|
16
|
+
`;return {text:d,...o?{nextCommand:o}:{},snapshotRef:t,operation:e,entries:[...r],ranges:i.map(f=>({entry:f.entry,startByte:f.startByte,endByte:f.endByte})),byteCount:Buffer.byteLength(d,"utf8")}}function lt(t){return t.byteCount<=Z&>(t.text)<=q}function gt(t){let e=1;for(let n=0;n<t.length;n+=1)t.charCodeAt(n)===10&&(e+=1);return e}function se(t,e,n){let r=0;for(let i=e;i<n;i+=1)t[i]===10&&(r+=1);return r}function ae(t,e,n,r){if(r===0){let o=t.indexOf(10,e);return o>=e&&o<n?o:n}let i=0;for(let o=e;o<n;o+=1)if(t[o]===10&&(i+=1,i===r))return o+1;return n}function ce(t,e,n){return `crewx history toc ${t} --from ${e} --limit ${n}`}function de(t,e,n,r){let i=Buffer.from(e,"utf8").toString("base64url");return `crewx history search ${t} --query64 ${i} --cursor ${r} --limit ${n}`}function fe(t,e,n,r){return `crewx history read ${t} --entry ${e} --offset ${n} --bytes ${r}`}function ye(t){return `entry=${t.ordinal} kind=${t.kind} task=${ht(t.taskId??"unknown",48)} turn=${t.turn??"unknown"}`}function ue(t,e){let n=Buffer.from(t,"utf8"),r=F(n,Math.min(n.byteLength,e));r===0&&n.byteLength>0&&(r=Bt(n,0));let i=nt(n.toString("utf8",0,r),e+32);return {text:i.text,endByte:i.consumedBytes}}function ht(t,e){return JSON.stringify(nt(t,e).text)}function nt(t,e){let n=I(t),r="",i=0,o=0,d=false;for(let f of n){let y=f.codePointAt(0)??0,a=y<=31||y===127||y>=128&&y<=159?`\\u{${y.toString(16)}}`:f,c=Buffer.byteLength(a,"utf8");if(i+c>e){d=true;break}r+=a,i+=c,o+=Buffer.byteLength(f,"utf8");}return d&&i+3<=e&&(r+="\u2026"),{text:r,consumedBytes:o}}function le(t,e,n,r){let i=[],o=r?.entry??1;for(let d of t){if(d.ordinal<o)continue;let f=r&&d.ordinal===r.entry?r.afterByte:0,y=Buffer.byteLength(d.body,"utf8");f>y&&s("INVALID_REF");let a=Buffer.from(d.body,"utf8");if(ge(d.body,e,(c,l)=>{if(d.ordinal===o&&c<f)return true;let u=he(a,c,l,180);return i.push({entry:d,startByte:c,endByte:l,snippetStartByte:u.startByte,snippetEndByte:u.endByte,snippet:u.text}),i.length<n}),i.length>=n)break}return i}function ge(t,e,n){let r=bt(e);if(r.length===0)return;let i=Array.from({length:r.length},(l,u)=>r.charCodeAt(u)),o=new Int32Array(i.length);for(let l=1,u=0;l<i.length;l+=1){for(;u>0&&i[l]!==i[u];)u=o[u-1];i[l]===i[u]&&(u+=1),o[l]=u;}let d=new Float64Array(i.length),f=new Float64Array(i.length),y=0,a=0,c=0;for(let l of t){let u=c,g=u+Buffer.byteLength(l,"utf8"),h=bt(l);for(let E=0;E<h.length;E+=1){let A=h.charCodeAt(E);for(d[a%i.length]=u,f[a%i.length]=g;y>0&&A!==i[y];)y=o[y-1];if(A===i[y]&&(y+=1),y===i.length){let m=a-i.length+1,P=n(d[m%i.length],f[a%i.length]);if(y=o[y-1],!P)return}a+=1;}c=g;}}function bt(t){return t.toLowerCase().replace(/\u03c2/g,"\u03C3")}function he(t,e,n,r){let i=Math.min(40,Math.floor(r/4)),o=F(t,Math.max(0,e-i)),d=F(t,Math.min(t.byteLength,Math.max(n,o+r)));d<n&&(d=F(t,n)),o>e&&(o=e);let f=nt(t.toString("utf8",o,d),r*4);return {text:f.text,startByte:o,endByte:o+f.consumedBytes}}function pe(t){return Buffer.from(G(t),"utf8").toString("base64url")}function me(t,e,n,r){(typeof t!="string"||!/^[A-Za-z0-9_-]+$/.test(t)||Buffer.byteLength(t)>Gt)&&s("INVALID_REF");let i;try{let o=Buffer.from(t,"base64url");o.toString("base64url")!==t&&s("INVALID_REF"),i=JSON.parse(o.toString("utf8"));}catch(o){if(o instanceof B)throw o;s("INVALID_REF");}return (!O(i)||i.version!==1||typeof i.ref!="string"||typeof i.queryHash!="string")&&s("INVALID_REF"),(i.ref!==e||i.queryHash!==n)&&s("SCOPE_MISMATCH"),(!Number.isSafeInteger(i.entry)||i.entry<1||i.entry>r||!Number.isSafeInteger(i.afterByte)||i.afterByte<0)&&s("INVALID_REF"),i}function dt(t,e){return e===t.byteLength||e<t.byteLength&&(t[e]&192)!==128}function F(t,e){let n=Math.max(0,Math.min(t.byteLength,e));for(;n>0&&n<t.byteLength&&(t[n]&192)===128;)n-=1;return n}function Bt(t,e){if(e>=t.byteLength)return t.byteLength;let n=e+1;for(;n<t.byteLength&&(t[n]&192)===128;)n+=1;return n}function Ee(t){let e=t.metadata,n=t.taskId??e?.task_id??e?.taskId;return typeof n=="string"&&n.length>0?I(n):void 0}function be(t){if(t===void 0)return null;let e=v(t,new Set);return O(e)||s("IO_ERROR"),e}function St(t){let e=v(t,new Set);return O(e)?e:null}function v(t,e){if(t===null||typeof t=="boolean")return t;if(typeof t=="string")return I(t);if(typeof t=="number")return Number.isFinite(t)||s("IO_ERROR"),t;if(Array.isArray(t)){e.has(t)&&s("IO_ERROR"),e.add(t);let n=t.map(r=>r===void 0?null:v(r,e));return e.delete(t),n}if(typeof t=="object"&&t!==null){e.has(t)&&s("IO_ERROR");let n=Object.getPrototypeOf(t);n!==Object.prototype&&n!==null&&s("IO_ERROR"),e.add(t);let r=Object.create(null);for(let i of Object.keys(t).sort()){if(_t.test(i))continue;let o=t[i];o!==void 0&&(r[I(i)]=v(o,e));}return e.delete(t),r}s("IO_ERROR");}function Se(t,e){v(t,e);}function G(t){return JSON.stringify(ft(t,new Set))}function ft(t,e){if(t===null||typeof t=="boolean"||typeof t=="string")return typeof t=="string"&&!L(t)&&s("TAMPERED"),t;if(typeof t=="number")return Number.isFinite(t)||s("TAMPERED"),t;if(Array.isArray(t)){e.has(t)&&s("TAMPERED"),e.add(t);let n=t.map(r=>ft(r,e));return e.delete(t),n}if(O(t)){e.has(t)&&s("TAMPERED"),e.add(t);let n=Object.create(null);for(let r of Object.keys(t).sort())L(r)||s("TAMPERED"),n[r]=ft(t[r],e);return e.delete(t),n}s("TAMPERED");}function L(t){for(let e=0;e<t.length;e+=1){let n=t.charCodeAt(e);if(n>=55296&&n<=56319){let r=t.charCodeAt(e+1);if(!(r>=56320&&r<=57343))return false;e+=1;}else if(n>=56320&&n<=57343)return false}return true}function I(t){if(L(t))return t;let e="";for(let n=0;n<t.length;n+=1){let r=t.charCodeAt(n);if(r>=55296&&r<=56319){let i=t.charCodeAt(n+1);i>=56320&&i<=57343?(e+=t[n]+t[n+1],n+=1):e+="\uFFFD";}else r>=56320&&r<=57343?e+="\uFFFD":e+=t[n];}return e}function O(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)&&(Object.getPrototypeOf(t)===Object.prototype||Object.getPrototypeOf(t)===null)}function st(t,e){let n=new Set(e);return Object.keys(t).every(r=>n.has(r))}function yt(t){if(Array.isArray(t))return t.some(e=>yt(e));if(!O(t))return false;for(let[e,n]of Object.entries(t))if(_t.test(e)||yt(n))return true;return false}function Nt(t){return t==="toc"||t==="search"||t==="read"}async function Ie(t,e){let n=0;for(;n<e.byteLength;){let{bytesWritten:r}=await t.write(e.toString("latin1",n),null,"latin1");r<=0&&s("IO_ERROR"),n+=r;}}async function ut(t,e,n){let r=t.get(e)??Promise.resolve(),i,o=new Promise(d=>{i=d;});t.set(e,o),await r.catch(()=>{});try{return await n()}catch(d){throw Y(d)}finally{i(),t.get(e)===o&&t.delete(e);}}async function T(t){try{return await fs.promises.lstat(t,{bigint:!0})}catch(e){if(X(e)==="ENOENT")return;throw Y(e)}}function R(t,e){return t.dev===e.dev&&t.ino===e.ino}function V(){return fs.constants.O_NOFOLLOW??0}function Re(){return fs.constants.O_DIRECTORY??0}function X(t){if(typeof t=="object"&&t!==null&&"code"in t&&typeof t.code=="string")return t.code}function Y(t){if(t instanceof B)return t;let e=X(t);return e==="ENOENT"?new B("NOT_FOUND"):e==="ELOOP"||e==="EMLINK"||e==="EISDIR"?new B("UNSAFE_FILE"):new B("IO_ERROR")}function s(t){throw new B(t)}function we(t){return new Promise(e=>setTimeout(e,t))}exports.HistorySnapshotError=B;exports.MAX_AUDIT_BYTES=K;exports.MAX_AUDIT_RECORD_BYTES=It;exports.MAX_PAGE_BYTES=Z;exports.MAX_PAGE_LINES=q;exports.MAX_SNAPSHOT_BYTES=N;exports.planHistorySnapshot=Te;exports.readHistory=Le;exports.readHistoryAudit=De;exports.recordHistoryEmission=xe;exports.resolveWorkspaceRealPathSync=te;exports.scopeFromEnv=Me;exports.searchHistory=Ne;exports.tocHistory=Be;exports.writeHistorySnapshot=Pe;
|