@kodax-ai/kodax 0.7.82 → 0.7.83
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/CHANGELOG.md +30 -0
- package/README.md +10 -0
- package/README_CN.md +8 -0
- package/dist/chunks/{agent-4UTCCMD5.js → agent-S7LMMTG7.js} +1 -1
- package/dist/chunks/argument-completer-SQHG2LYE.js +2 -0
- package/dist/chunks/chunk-37RT45HT.js +379 -0
- package/dist/chunks/{chunk-ZOBNDWOA.js → chunk-3DKQC7A2.js} +1 -1
- package/dist/chunks/{chunk-WMYCNECP.js → chunk-45E23YJI.js} +142 -67
- package/dist/chunks/{chunk-GIVYTXQW.js → chunk-6QILIBOU.js} +155 -155
- package/dist/chunks/{chunk-JDZFNWMZ.js → chunk-DSFHIUHZ.js} +2 -2
- package/dist/chunks/{chunk-7ZN2MLVM.js → chunk-DZUMH6GJ.js} +1 -1
- package/dist/chunks/{chunk-VQBJMNFD.js → chunk-HI6RCW5Y.js} +2 -2
- package/dist/chunks/{chunk-XTCDCU2Q.js → chunk-LF2JBTBG.js} +4 -4
- package/dist/chunks/{chunk-NINELPXH.js → chunk-RAQGGVIF.js} +1 -1
- package/dist/chunks/{chunk-ZZUIO5KL.js → chunk-TC2VHPG5.js} +1 -1
- package/dist/chunks/{chunk-S6JTWDN6.js → chunk-URCS6CVP.js} +1 -1
- package/dist/chunks/{chunk-KH2HED37.js → chunk-XB2JNLXH.js} +2 -2
- package/dist/chunks/{compaction-config-IDL5JQVI.js → compaction-config-SSQ5NXUP.js} +1 -1
- package/dist/chunks/{construction-bootstrap-STYUR6XA.js → construction-bootstrap-E4M3CY3N.js} +1 -1
- package/dist/chunks/{dist-RKBHBUHV.js → dist-MIXP4ULB.js} +1 -1
- package/dist/chunks/{host-RF2IX3N6.js → host-ZCPI7SMC.js} +1 -1
- package/dist/chunks/{run-manager-WE2KPAKZ.js → run-manager-4RYG7HSP.js} +1 -1
- package/dist/chunks/{utils-Z2RSAENX.js → utils-7DKE2EKT.js} +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +5 -5
- package/dist/kodax_bootstrap.js +1 -1
- package/dist/kodax_cli.js +1522 -1098
- package/dist/kodax_resume.js +140 -65
- package/dist/runtime-worker.js +1415 -991
- package/dist/sandbox-workspace-session.js +121 -46
- package/dist/sdk-a2a.js +1 -1
- package/dist/sdk-agent.d.ts +8 -1
- package/dist/sdk-agent.js +1 -1
- package/dist/sdk-coding.js +1 -1
- package/dist/sdk-mcp.js +1 -1
- package/dist/sdk-repl.js +1 -1
- package/dist/sdk-runtime.d.ts +47 -2
- package/dist/sdk-runtime.js +1 -1
- package/dist/sdk-sandbox.js +1 -1
- package/dist/sdk-session.js +1 -1
- package/dist/sdk-skills.js +1 -1
- package/dist/semantic-worker.js +120 -45
- package/docs/SDK_EMBEDDER_GUIDE.md +35 -8
- package/package.json +2 -1
- package/dist/chunks/argument-completer-N7ORRJBS.js +0 -2
- package/dist/chunks/chunk-PGTU7JQX.js +0 -30
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
|
|
2
|
-
import{$a as Wl,Aa as fl,Ba as ml,C as Wr,Ca as pl,D as Gr,Da as hl,E as Hu,Ea as sn,F as qs,Fa as gl,G as zu,Ga as bl,Ha as vl,Ia as Cl,J as qu,Ja as Al,K as Ku,Ka as Il,L as Xu,La as Ml,M as Un,Ma as Hr,N as Ks,Na as Ol,Oa as Pl,Pa as Nl,Qa as $l,Ra as Ll,Sa as zr,Ta as ci,U as tl,Ua as ui,V as nl,Va as Dl,Wa as jl,X as Xs,Xa as Fl,Y as Ys,Ya as li,Za as Ul,_ as Js,_a as Bl,a as qe,aa as Qs,ba as rl,ca as ol,cb as Gl,da as Zs,db as nt,ea as ei,f as hu,h as gu,i as bu,ia as Bn,j as vu,ka as sl,l as ms,la as il,m as ps,ma as ti,n as $n,oa as ni,qa as ri,ra as al,sa as cl,ua as oi,va as ul,wa as si,xa as ll,y as zs,ya as dl,za as Wn}from"./chunk-ZZUIO5KL.js";import{a as ii}from"./chunk-HTVLCHWH.js";import{A as ai,o as Sl,t as El,u as _l,v as xl,y as kl}from"./chunk-KH2HED37.js";import{$ as _s,Aa as As,Ab as Fu,Bb as Uu,Ca as Is,Da as Ms,Dd as Vu,Eb as Lr,Fd as Yu,Gb as Dr,Gd as Ju,Ha as Os,Hb as jr,Hd as Qu,I as Cu,Id as Zu,J as Au,Ka as Ps,Kb as Fr,L as Iu,Lb as Ur,Ld as el,M as ws,N as Mu,Nb as Ds,Nc as Us,Oa as Nr,Ob as it,Pa as $r,Pb as js,Qb as Fs,Rb as Bu,Sa as Ns,U as Mr,Va as $s,W as Ts,Wa as Ls,X as Ss,Xa as Du,Y as Or,Z as Ou,Zc as Wu,Zd as yl,_ as Es,_c as Gu,a as Ar,aa as Pu,b as pu,ba as Nt,cd as Br,da as Nu,dd as Fn,de as wl,e as yu,ee as Vr,f as hs,fe as Tl,g as wu,hd as Bs,he as Rl,i as Tu,id as Ws,j as Su,ja as xs,k as Ir,ka as ks,kd as Gs,l as Eu,la as $u,m as Ln,ma as Lu,n as _u,oa as Dn,ob as Ke,p as gs,q as rn,qa as Pr,qd as at,r as xu,rd as Vs,s as on,t as ku,v as bs,w as vs,wa as jn,xa as Rs,y as ys,yd as Hs,za as Cs,zb as ju}from"./chunk-GIVYTXQW.js";import{h as Ru}from"./chunk-KHEFUT6O.js";import{D as It,Pa as Le,R as Pc,T as Tr,ab as rs,bb as Sr,cb as os,db as ss,e as ns,fb as is,gb as Er,k as wr,na as Mt,ua as Ot}from"./chunk-TRNAWSXP.js";import{Ab as tn,Ac as nu,Ba as Uc,Bb as Qc,Bc as ru,Bd as fu,Dc as ou,Ec as su,Fc as iu,G as $c,Gc as au,Hc as fs,Hd as mu,J as Lc,Va as Bc,Wb as Cr,Ya as Wc,ca as as,db as ze,fb as Gc,g as _r,ib as qc,id as nn,jd as cu,m as Nn,nb as Kc,o as xr,oa as Zt,pa as Dc,qb as Xc,ra as jc,rb as Yc,tb as Jc,ua as Fc,ud as uu,va as cs,w as Nc,wb as us,xb as ls,yd as lu,zc as ds,zd as du}from"./chunk-WMYCNECP.js";import{a as ce,b as st,d as Pt,g as We,i as le,j as en,lb as Zc,pb as eu,qb as tu}from"./chunk-EVXIJPZ6.js";import{E as zc,b as kr,d as Rr,e as Vc,j as Hc}from"./chunk-E7C4DRD2.js";import{a as i,b as ts,d as ob}from"./chunk-ONUPGMER.js";var xp=ts((sD,_p)=>{"use strict";_p.exports=i(function(t){return t.map(function(n){return n===""?"''":n&&typeof n=="object"?n.op.replace(/(.)/g,"\\$1"):/["\s\\]/.test(n)&&!/'/.test(n)?"'"+n.replace(/(['])/g,"\\$1")+"'":/["'\s]/.test(n)?'"'+n.replace(/(["\\$`!])/g,"\\$1")+'"':String(n).replace(/([A-Za-z]:)?([#!"$&'()*,:;<=>?@[\\\]^`{|}])/g,"$1\\$2")}).join(" ")},"quote")});var Op=ts((aD,Mp)=>{"use strict";var Ip="(?:"+["\\|\\|","\\&\\&",";;","\\|\\&","\\<\\(","\\<\\<\\<",">>",">\\&","<\\&","[&;()|<>]"].join("|")+")",kp=new RegExp("^"+Ip+"$"),Rp="|&;()<> \\t",JE='"((\\\\"|[^"])*?)"',QE="'((\\\\'|[^'])*?)'",ZE=/^#$/,Cp="'",Ap='"',ga="$",Gt="",e_=4294967296;for(ba=0;ba<4;ba++)Gt+=(e_*Math.random()).toString(16);var ba,t_=new RegExp("^"+Gt);function n_(e,t){for(var n=t.lastIndex,r=[],o;o=t.exec(e);)r.push(o),t.lastIndex===o.index&&(t.lastIndex+=1);return t.lastIndex=n,r}i(n_,"matchAll");function r_(e,t,n){var r=typeof e=="function"?e(n):e[n];return typeof r>"u"&&n!=""?r="":typeof r>"u"&&(r="$"),typeof r=="object"?t+Gt+JSON.stringify(r)+Gt:t+r}i(r_,"getVar");function o_(e,t,n){n||(n={});var r=n.escape||"\\",o="(\\"+r+`['"`+Rp+`]|[^\\s'"`+Rp+"])+",s=new RegExp(["("+Ip+")","("+o+"|"+JE+"|"+QE+")+"].join("|"),"g"),a=n_(e,s);if(a.length===0)return[];t||(t={});var c=!1;return a.map(function(u){var l=u[0];if(!l||c)return;if(kp.test(l))return{op:l};var d=!1,f=!1,h="",p=!1,m;function b(){m+=1;var y,w,T=l.charAt(m);if(T==="{"){if(m+=1,l.charAt(m)==="}")throw new Error("Bad substitution: "+l.slice(m-2,m+1));if(y=l.indexOf("}",m),y<0)throw new Error("Bad substitution: "+l.slice(m));w=l.slice(m,y),m=y}else if(/[*@#?$!_-]/.test(T))w=T,m+=1;else{var S=l.slice(m);y=S.match(/[^\w\d_]/),y?(w=S.slice(0,y.index),m+=y.index-1):(w=S,m=l.length)}return r_(t,"",w)}for(i(b,"parseEnvVar"),m=0;m<l.length;m++){var g=l.charAt(m);if(p=p||!d&&(g==="*"||g==="?"),f)h+=g,f=!1;else if(d)g===d?d=!1:d==Cp?h+=g:g===r?(m+=1,g=l.charAt(m),g===Ap||g===r||g===ga?h+=g:h+=r+g):g===ga?h+=b():h+=g;else if(g===Ap||g===Cp)d=g;else{if(kp.test(g))return{op:l};if(ZE.test(g)){c=!0;var v={comment:e.slice(u.index+m+1)};return h.length?[h,v]:[v]}else g===r?f=!0:g===ga?h+=b():h+=g}}return p?{op:"glob",pattern:h}:h}).reduce(function(u,l){return typeof l>"u"?u:u.concat(l)},[])}i(o_,"parseInternal");Mp.exports=i(function(t,n,r){var o=o_(t,n,r);return typeof n!="function"?o:o.reduce(function(s,a){if(typeof a=="object")return s.concat(a);var c=a.split(RegExp("("+Gt+".*?"+Gt+")","g"));return c.length===1?s.concat(c[0]):s.concat(c.filter(Boolean).map(function(u){return t_.test(u)?JSON.parse(u.split(Gt)[1]):u}))},[])},"parse")});var Pp=ts(va=>{"use strict";va.quote=xp();va.parse=Op()});var Gn=class extends Error{static{i(this,"KodaXError")}code;constructor(t,n="KODAX_ERROR"){super(t),this.code=n,this.name="KodaXError"}};var di=class extends Gn{static{i(this,"KodaXToolError")}toolName;toolId;constructor(t,n,r){super(t,"TOOL_ERROR"),this.toolName=n,this.toolId=r,this.name="KodaXToolError"}};var fi=class extends Gn{static{i(this,"KodaXSessionError")}sessionId;constructor(t,n){super(t,"SESSION_ERROR"),this.sessionId=n,this.name="KodaXSessionError"}},mi=class extends Gn{static{i(this,"KodaXTerminalError")}suggestions;constructor(t,n=[]){super(t,"TERMINAL_ERROR"),this.name="KodaXTerminalError",this.suggestions=n}};function sb(){return new qr}i(sb,"createSessionControl");function pi(e,t){let n=new AbortController,r=!1,o=i(p=>{r||(r=!0,n.abort(p))},"markAborted");e.abortSignal&&(e.abortSignal.aborted?o(e.abortSignal.reason):e.abortSignal.addEventListener("abort",()=>o(e.abortSignal.reason),{once:!0}));let s=new qr;s.seed({provider:e.provider,model:e.modelOverride??e.model,reasoning:e.reasoningMode});let a=e.session?.id,c=a!=null,u=a??ib(),d=!c&&e.session?.autoResume!==!0&&e.session?.resume!==!0?Fl({...e.session??{},id:u}):e.session,f={...e,...e.agentMode!==void 0?{agentMode:$n(e.agentMode)}:{},...d!==void 0?{session:d}:{},abortSignal:n.signal,sessionControl:s},h=nt(f,t);return{id:u,get currentProvider(){return s.getProvider()},get currentModel(){return s.getModel()},get currentReasoning(){return s.getReasoning()},get aborted(){return r},get attached(){return s.isAttached()},setProvider:i(p=>s.setProvider(p),"setProvider"),setModel:i(p=>s.setModel(p),"setModel"),setReasoning:i(p=>s.setReasoning(p),"setReasoning"),abort:i(p=>o(p),"abort"),result:h}}i(pi,"startKodaX");function ib(){return`sess_${Date.now()}_${Math.random().toString(36).slice(2,10)}`}i(ib,"generateSessionId");var qr=class{static{i(this,"SessionControlImpl")}mutators=null;providerValue;modelValue;reasoningValue;hasPendingProvider=!1;hasPendingModel=!1;hasPendingReasoning=!1;seed(t){this.providerValue=t.provider,this.modelValue=t.model,this.reasoningValue=t.reasoning}setProvider(t){this.providerValue=t,this.mutators?this.mutators.setProvider(t):this.hasPendingProvider=!0}setModel(t){this.modelValue=t,this.mutators?this.mutators.setModel(t):this.hasPendingModel=!0}setReasoning(t){this.reasoningValue=t,this.mutators?this.mutators.setReasoning(t):this.hasPendingReasoning=!0}getProvider(){return this.providerValue??""}getModel(){return this.modelValue}getReasoning(){return this.reasoningValue}isAttached(){return this.mutators!==null}_attach(t){this.mutators,this.mutators=t,this.hasPendingProvider&&this.providerValue!==void 0&&t.setProvider(this.providerValue),this.hasPendingModel&&t.setModel(this.modelValue),this.hasPendingReasoning&&t.setReasoning(this.reasoningValue),this.hasPendingProvider=!1,this.hasPendingModel=!1,this.hasPendingReasoning=!1}};function ab(e,t){return e.kind!=="revise_count"?{ok:!0}:e.count<=3?{ok:!0}:{ok:!1,severity:"warn",reason:`boundedRevise: revise_count for harness="${e.harness}" reached ${e.count}, exceeding soft threshold 3`}}i(ab,"observe");var hi={id:"boundedRevise",description:"Per-harness revise count must stay within the soft threshold; crossings emit a warn signal for dispatch-eval (hard cap enforced by the budget controller).",observe:ab};function cb(e,t){return typeof e.maxBudget!="number"?{ok:!0}:e.maxBudget<=t.systemCap.maxBudget?{ok:!0}:{ok:!1,severity:"clamp",reason:`budgetCeiling: manifest.maxBudget=${e.maxBudget} exceeds systemCap.maxBudget=${t.systemCap.maxBudget}`,patch:{clampMaxBudget:t.systemCap.maxBudget}}}i(cb,"admit");var gi={id:"budgetCeiling",description:"manifest.maxBudget must be \u2264 systemCap.maxBudget; over-cap declarations are clamped down to the cap.",admit:cb};function ub(e,t){return{ok:!0}}i(ub,"observe");var Vl={id:"harnessSelectionTiming",description:"FEATURE_193 V2 no-op shell \u2014 predicate always admits since V1 Scout retired. Kept registered for admission-framework / audit-array compat.",observe:ub};function lb(e,t){if(e.kind!=="mutation_recorded")return{ok:!0};let n=t.recorder;return typeof n.todoUpdateCount!="number"?{ok:!0}:n.todoUpdateCount>0?{ok:!0}:n.workerTrivialDeclaration===!0?{ok:!0}:{ok:!1,severity:"warn",reason:`planBeforeMutate: Worker mutated ${e.file} without a prior todo_update plan commit and without a trivial declaration`}}i(lb,"observe");var Hl={id:"planBeforeMutate",description:"Worker mutations should be preceded by a todo_update plan commit (or an explicit trivial declaration). Missing plan is a warn-only signal in v0.7.36.",observe:lb};function bi(e){switch(e){case"read":case"glob":case"grep":case"code_search":case"semantic_lookup":case"lsp_definition":case"lsp_hover":case"lsp_references":case"lsp_document_symbols":case"lsp_workspace_symbols":case"lsp_implementation":case"lsp_prepare_call_hierarchy":case"lsp_incoming_calls":case"lsp_outgoing_calls":case"repo_overview":case"changed_scope":case"changed_diff":case"changed_diff_bundle":case"module_context":case"symbol_context":case"process_context":case"impact_estimate":case"relationship_scan":case"cyclic_dependencies":case"ask_user_question":case"exit_plan_mode":return"read";case"write":case"edit":case"multi_edit":case"insert_after_anchor":case"undo":return"edit";case"bash":return"bash:mutating";case"web_search":case"web_fetch":case"mcp_search":case"mcp_describe":case"mcp_call":case"mcp_read_resource":case"mcp_get_prompt":return"bash:network";case"spawn_agent":case"send_message":case"followup_task":case"wait_agent":case"interrupt_agent":case"list_agents":case"agent_output":case"emit_verdict":case"scaffold_tool":case"validate_tool":case"stage_construction":case"test_tool":case"activate_tool":case"scaffold_agent":case"validate_agent":case"stage_agent_construction":case"test_agent":case"activate_agent":case"worktree_create":case"worktree_remove":return"subagent";default:return"subagent"}}i(bi,"resolveToolCapability");function db(e){if(typeof e=="object"&&e!==null&&"name"in e){let t=e.name;if(typeof t=="string"&&t.length>0)return t}}i(db,"getToolName");function fb(e,t){if(!e.tools||e.tools.length===0)return{ok:!0};let n=new Set(t.systemCap.allowedToolCapabilities),r=[];for(let a of e.tools){let c=db(a);if(!c)continue;let u=bi(c);n.has(u)||r.push({name:c,capability:u})}if(r.length===0)return{ok:!0};let o=r.map(a=>a.name);return{ok:!1,severity:"clamp",reason:`toolPermission: tools requiring disallowed capabilities \u2014 ${r.map(a=>`${a.name}=${a.capability}`).join(", ")}`,patch:{removeTools:o}}}i(fb,"admit");var vi={id:"toolPermission",description:"Every tool in manifest.tools must resolve to a capability tier that systemCap.allowedToolCapabilities permits; offending tools are clamped via removeTools.",admit:fb};var zl=[gi,vi,hi,Vl,Hl];function mb(){Uc();for(let e of zl)Lc(e)}i(mb,"registerCodingInvariants");var Kr=class{static{i(this,"KodaXClient")}options;sessionId;messages=[];contextTokenSnapshot;constructor(t){this.options=t,this.sessionId=t.session?.id??"",this.messages=t.session?.initialMessages?[...t.session.initialMessages]:[],this.contextTokenSnapshot=t.context?.contextTokenSnapshot}async send(t){let n=this.messages.length>0?this.messages:this.options.session?.initialMessages,r=await nt({...this.options,session:{...this.options.session,id:this.sessionId||void 0,initialMessages:n},context:{...this.options.context,contextTokenSnapshot:this.contextTokenSnapshot}},t);return this.sessionId=r.sessionId,this.messages=r.messages,this.contextTokenSnapshot=r.contextTokenSnapshot,r}getSessionId(){return this.sessionId}getMessages(){return[...this.messages]}clear(){this.messages=[],this.sessionId="",this.contextTokenSnapshot=void 0}};function ql(e){return/\bworkflows?\b|工作流(?!程)|ワークフロー|워크플로우/iu.test(e)}i(ql,"hasExplicitNaturalLanguageWorkflowIntent");function OI(e){return{action:e.source==="command"?"suggest":"none"}}i(OI,"decideWorkflowInvocation");function PI(e){return e.outcome==="started"||e.outcome==="cancelled"}i(PI,"workflowStartOutcomeConsumesTurn");var pb="KODAX_VERIFIER_PROVIDER",hb="KODAX_VERIFIER_MODEL";function gb(e){if(Ot(e))try{return Mt(e)}catch{return}}i(gb,"tryGetProvider");function Xr(e){let t=e.env??process.env,n=t[pb],r=t[hb];if(n&&r){let o=gb(n);if(o)return{provider:o,model:r,providerName:n,source:"explicit-env"}}return{provider:e.mainProvider,model:e.mainModel,providerName:e.mainProviderName,source:"inherit-main"}}i(Xr,"resolveVerifierProvider");function yi(e){let t=e.context?.agentProfile;if(!t)return;let n=t.verification,r=e.context?.taskVerification;if(!n&&!r)return;let o={...n,...r};return Array.isArray(r?.criteria)&&r.criteria.length===0&&Array.isArray(n?.criteria)&&n.criteria.length>0?{...o,criteria:n.criteria}:o}i(yi,"resolveEffectiveVerification");function bb(e){let t=e.provider??"anthropic";if(Ot(t))try{let n=Xr({mainProvider:Mt(t),mainProviderName:t,mainModel:e.modelOverride??e.model});return{provider:n.providerName,...n.model!==void 0?{model:n.model}:{}}}catch{return}}i(bb,"resolveVerifierAttribution");function wi(e,t){let n=e.events?.onEffectiveConfig;if(!n)return;let r=t.verifier??bb(e),o={agentMode:t.agentMode,agentProfile:e.context?.agentProfile,toolScope:t.toolScope,verification:yi(e),...r?{verifier:r}:{}};try{n(o)}catch{}}i(wi,"emitEffectiveTaskConfig");var Kl="kodax-review-findings",Xl="kodax-investigation-shards",Yl="kodax-lookup-shards",Jl="kodax-child-result";var Ql="kodax-budget-request";function $t(e,t=!1){return{globalWorkBudget:e?.totalBudget,budgetUsage:e?.spentBudget,budgetApprovalRequired:t}}i($t,"buildManagedStatusBudgetFields");function Vn(e,t=1){e.spentBudget=Math.max(0,e.spentBudget+t)}i(Vn,"incrementManagedBudgetUsage");function yb(e,t=200){e.totalBudget+=t}i(yb,"extendManagedWorkBudget");function Jr(e,t,n=!1){if(!e?.askUser)return!1;if(!n){let r=Math.ceil(t.totalBudget*.9);if(t.spentBudget<r)return!1}return t.lastApprovalBudgetTotal!==t.totalBudget}i(Jr,"canRequestAdditionalWorkBudget");async function Ti(e,t,n){let r=e?.askUser;if(!r||!Jr(e,t,n.force))return"skipped";let o=n.additionalUnits??200,s=Math.min(100,Math.round(t.spentBudget/Math.max(1,t.totalBudget)*100)),a=/[\u4e00-\u9fff]/.test(n.originalTask??n.summary),c=ze(await r({question:a?`\u5F53\u524D AMA \u8FD0\u884C\u5DF2\u4F7F\u7528 ${t.spentBudget}/${t.totalBudget} \u5DE5\u4F5C\u5355\u5143\uFF08${s}%\uFF09\uFF0C\u9700\u8981\u66F4\u591A\u5DE5\u4F5C\u91CF\u3002\u662F\u5426\u8FFD\u52A0 ${o} \u5355\u5143\uFF1F`:`This AMA run has used ${t.spentBudget}/${t.totalBudget} work units (${s}%) and needs more work. Add ${o} more work units?`,allowCustomInput:!1,options:[{label:a?`\u7EE7\u7EED (+${o})`:`Continue (+${o})`,value:"continue",description:a?`\u8FFD\u52A0 ${o} \u5DE5\u4F5C\u5355\u5143\uFF0C\u4ECE\u7B2C ${n.currentRound}/${n.maxRounds} \u8F6E\u7EE7\u7EED\u3002`:`Grant ${o} more work units and continue from round ${n.currentRound}/${n.maxRounds}.`},{label:a?"\u505C\u6B62":"Stop here",value:"stop",description:a?`\u4F7F\u7528\u5F53\u524D\u6700\u4F73\u7ED3\u679C\u3002\u6700\u65B0\u8FDB\u5C55\uFF1A${qs(n.summary,80)}`:`Finish now with the current best result. Latest note: ${qs(n.summary,80)}`}],default:"continue"})),u=t.totalBudget;return c==="continue"?(t.lastApprovalBudgetTotal=u,yb(t,o),"approved"):(t.lastApprovalBudgetTotal=u,"denied")}i(Ti,"maybeRequestAdditionalWorkBudget");import{mkdir as wb,readdir as Tb,readFile as ed,stat as Sb,unlink as Eb,writeFile as _b}from"node:fs/promises";import{execFile as xb}from"node:child_process";import{promisify as kb}from"node:util";import an from"node:path";import Zl from"node:path";function ct(e){return e.context?.taskSurface??"cli"}i(ct,"getManagedTaskSurface");function ut(e,t){if(e.context?.managedTaskWorkspaceDir?.trim())return Zl.resolve(e.context.managedTaskWorkspaceDir);let n=e.context?.executionCwd??e.context?.gitRoot??process.cwd();return Zl.resolve(n,".agent","managed-tasks")}i(ut,"getManagedTaskWorkspaceRoot");var Rb=kb(xb),td=3600*1e3,Qr="checkpoint.json";function Si(e){let t=e.session?.id?.trim();return t||void 0}i(Si,"getCheckpointSessionId");function Cb(e,t){return t?e.sessionId===t:!1}i(Cb,"checkpointBelongsToSession");async function Zr(e){let t=an.resolve(e?.trim()||process.cwd());try{let{stdout:n}=await Rb("git",["rev-parse","--short","HEAD"],{cwd:t,windowsHide:!0});return n.trim()||void 0}catch{return}}i(Zr,"getGitHeadCommit");async function Ei(e,t){await wb(e,{recursive:!0}),await _b(an.join(e,Qr),`${JSON.stringify(t,null,2)}
|
|
2
|
+
import{$a as Wl,Aa as fl,Ba as ml,C as Wr,Ca as pl,D as Gr,Da as hl,E as Hu,Ea as sn,F as qs,Fa as gl,G as zu,Ga as bl,Ha as vl,Ia as Cl,J as qu,Ja as Al,K as Ku,Ka as Il,L as Xu,La as Ml,M as Un,Ma as Hr,N as Ks,Na as Ol,Oa as Pl,Pa as Nl,Qa as $l,Ra as Ll,Sa as zr,Ta as ci,U as tl,Ua as ui,V as nl,Va as Dl,Wa as jl,X as Xs,Xa as Fl,Y as Ys,Ya as li,Za as Ul,_ as Js,_a as Bl,a as qe,aa as Qs,ba as rl,ca as ol,cb as Gl,da as Zs,db as nt,ea as ei,f as hu,h as gu,i as bu,ia as Bn,j as vu,ka as sl,l as ms,la as il,m as ps,ma as ti,n as $n,oa as ni,qa as ri,ra as al,sa as cl,ua as oi,va as ul,wa as si,xa as ll,y as zs,ya as dl,za as Wn}from"./chunk-TC2VHPG5.js";import{a as ii}from"./chunk-HTVLCHWH.js";import{A as ai,o as Sl,t as El,u as _l,v as xl,y as kl}from"./chunk-XB2JNLXH.js";import{$ as _s,Aa as As,Ab as Fu,Bb as Uu,Ca as Is,Da as Ms,Dd as Vu,Eb as Lr,Fd as Yu,Gb as Dr,Gd as Ju,Ha as Os,Hb as jr,Hd as Qu,I as Cu,Id as Zu,J as Au,Ka as Ps,Kb as Fr,L as Iu,Lb as Ur,Ld as el,M as ws,N as Mu,Nb as Ds,Nc as Us,Oa as Nr,Ob as it,Pa as $r,Pb as js,Qb as Fs,Rb as Bu,Sa as Ns,U as Mr,Va as $s,W as Ts,Wa as Ls,X as Ss,Xa as Du,Y as Or,Z as Ou,Zc as Wu,Zd as yl,_ as Es,_c as Gu,a as Ar,aa as Pu,b as pu,ba as Nt,cd as Br,da as Nu,dd as Fn,de as wl,e as yu,ee as Vr,f as hs,fe as Tl,g as wu,hd as Bs,he as Rl,i as Tu,id as Ws,j as Su,ja as xs,k as Ir,ka as ks,kd as Gs,l as Eu,la as $u,m as Ln,ma as Lu,n as _u,oa as Dn,ob as Ke,p as gs,q as rn,qa as Pr,qd as at,r as xu,rd as Vs,s as on,t as ku,v as bs,w as vs,wa as jn,xa as Rs,y as ys,yd as Hs,za as Cs,zb as ju}from"./chunk-6QILIBOU.js";import{h as Ru}from"./chunk-KHEFUT6O.js";import{D as It,Pa as Le,R as Pc,T as Tr,ab as rs,bb as Sr,cb as os,db as ss,e as ns,fb as is,gb as Er,k as wr,na as Mt,ua as Ot}from"./chunk-TRNAWSXP.js";import{Ac as ds,Ad as du,Ba as Uc,Bb as tn,Bc as nu,Cb as Qc,Cc as ru,Cd as fu,Ec as ou,Fc as su,G as $c,Gc as iu,Hc as au,Ic as fs,Id as mu,J as Lc,Wa as Bc,Xb as Cr,Za as Wc,ca as as,eb as ze,g as _r,gb as Gc,jb as qc,jd as nn,kd as cu,m as Nn,o as xr,oa as Zt,ob as Kc,pa as Dc,ra as jc,rb as Xc,sb as Yc,ua as Fc,ub as Jc,va as cs,vd as uu,w as Nc,xb as us,yb as ls,zd as lu}from"./chunk-45E23YJI.js";import{a as ce,b as st,d as Pt,g as We,i as le,j as en,lb as Zc,pb as eu,qb as tu}from"./chunk-EVXIJPZ6.js";import{E as zc,b as kr,d as Rr,e as Vc,j as Hc}from"./chunk-E7C4DRD2.js";import{a as i,b as ts,d as ob}from"./chunk-ONUPGMER.js";var xp=ts((sD,_p)=>{"use strict";_p.exports=i(function(t){return t.map(function(n){return n===""?"''":n&&typeof n=="object"?n.op.replace(/(.)/g,"\\$1"):/["\s\\]/.test(n)&&!/'/.test(n)?"'"+n.replace(/(['])/g,"\\$1")+"'":/["'\s]/.test(n)?'"'+n.replace(/(["\\$`!])/g,"\\$1")+'"':String(n).replace(/([A-Za-z]:)?([#!"$&'()*,:;<=>?@[\\\]^`{|}])/g,"$1\\$2")}).join(" ")},"quote")});var Op=ts((aD,Mp)=>{"use strict";var Ip="(?:"+["\\|\\|","\\&\\&",";;","\\|\\&","\\<\\(","\\<\\<\\<",">>",">\\&","<\\&","[&;()|<>]"].join("|")+")",kp=new RegExp("^"+Ip+"$"),Rp="|&;()<> \\t",JE='"((\\\\"|[^"])*?)"',QE="'((\\\\'|[^'])*?)'",ZE=/^#$/,Cp="'",Ap='"',ga="$",Gt="",e_=4294967296;for(ba=0;ba<4;ba++)Gt+=(e_*Math.random()).toString(16);var ba,t_=new RegExp("^"+Gt);function n_(e,t){for(var n=t.lastIndex,r=[],o;o=t.exec(e);)r.push(o),t.lastIndex===o.index&&(t.lastIndex+=1);return t.lastIndex=n,r}i(n_,"matchAll");function r_(e,t,n){var r=typeof e=="function"?e(n):e[n];return typeof r>"u"&&n!=""?r="":typeof r>"u"&&(r="$"),typeof r=="object"?t+Gt+JSON.stringify(r)+Gt:t+r}i(r_,"getVar");function o_(e,t,n){n||(n={});var r=n.escape||"\\",o="(\\"+r+`['"`+Rp+`]|[^\\s'"`+Rp+"])+",s=new RegExp(["("+Ip+")","("+o+"|"+JE+"|"+QE+")+"].join("|"),"g"),a=n_(e,s);if(a.length===0)return[];t||(t={});var c=!1;return a.map(function(u){var l=u[0];if(!l||c)return;if(kp.test(l))return{op:l};var d=!1,f=!1,h="",p=!1,m;function b(){m+=1;var y,w,T=l.charAt(m);if(T==="{"){if(m+=1,l.charAt(m)==="}")throw new Error("Bad substitution: "+l.slice(m-2,m+1));if(y=l.indexOf("}",m),y<0)throw new Error("Bad substitution: "+l.slice(m));w=l.slice(m,y),m=y}else if(/[*@#?$!_-]/.test(T))w=T,m+=1;else{var S=l.slice(m);y=S.match(/[^\w\d_]/),y?(w=S.slice(0,y.index),m+=y.index-1):(w=S,m=l.length)}return r_(t,"",w)}for(i(b,"parseEnvVar"),m=0;m<l.length;m++){var g=l.charAt(m);if(p=p||!d&&(g==="*"||g==="?"),f)h+=g,f=!1;else if(d)g===d?d=!1:d==Cp?h+=g:g===r?(m+=1,g=l.charAt(m),g===Ap||g===r||g===ga?h+=g:h+=r+g):g===ga?h+=b():h+=g;else if(g===Ap||g===Cp)d=g;else{if(kp.test(g))return{op:l};if(ZE.test(g)){c=!0;var v={comment:e.slice(u.index+m+1)};return h.length?[h,v]:[v]}else g===r?f=!0:g===ga?h+=b():h+=g}}return p?{op:"glob",pattern:h}:h}).reduce(function(u,l){return typeof l>"u"?u:u.concat(l)},[])}i(o_,"parseInternal");Mp.exports=i(function(t,n,r){var o=o_(t,n,r);return typeof n!="function"?o:o.reduce(function(s,a){if(typeof a=="object")return s.concat(a);var c=a.split(RegExp("("+Gt+".*?"+Gt+")","g"));return c.length===1?s.concat(c[0]):s.concat(c.filter(Boolean).map(function(u){return t_.test(u)?JSON.parse(u.split(Gt)[1]):u}))},[])},"parse")});var Pp=ts(va=>{"use strict";va.quote=xp();va.parse=Op()});var Gn=class extends Error{static{i(this,"KodaXError")}code;constructor(t,n="KODAX_ERROR"){super(t),this.code=n,this.name="KodaXError"}};var di=class extends Gn{static{i(this,"KodaXToolError")}toolName;toolId;constructor(t,n,r){super(t,"TOOL_ERROR"),this.toolName=n,this.toolId=r,this.name="KodaXToolError"}};var fi=class extends Gn{static{i(this,"KodaXSessionError")}sessionId;constructor(t,n){super(t,"SESSION_ERROR"),this.sessionId=n,this.name="KodaXSessionError"}},mi=class extends Gn{static{i(this,"KodaXTerminalError")}suggestions;constructor(t,n=[]){super(t,"TERMINAL_ERROR"),this.name="KodaXTerminalError",this.suggestions=n}};function sb(){return new qr}i(sb,"createSessionControl");function pi(e,t){let n=new AbortController,r=!1,o=i(p=>{r||(r=!0,n.abort(p))},"markAborted");e.abortSignal&&(e.abortSignal.aborted?o(e.abortSignal.reason):e.abortSignal.addEventListener("abort",()=>o(e.abortSignal.reason),{once:!0}));let s=new qr;s.seed({provider:e.provider,model:e.modelOverride??e.model,reasoning:e.reasoningMode});let a=e.session?.id,c=a!=null,u=a??ib(),d=!c&&e.session?.autoResume!==!0&&e.session?.resume!==!0?Fl({...e.session??{},id:u}):e.session,f={...e,...e.agentMode!==void 0?{agentMode:$n(e.agentMode)}:{},...d!==void 0?{session:d}:{},abortSignal:n.signal,sessionControl:s},h=nt(f,t);return{id:u,get currentProvider(){return s.getProvider()},get currentModel(){return s.getModel()},get currentReasoning(){return s.getReasoning()},get aborted(){return r},get attached(){return s.isAttached()},setProvider:i(p=>s.setProvider(p),"setProvider"),setModel:i(p=>s.setModel(p),"setModel"),setReasoning:i(p=>s.setReasoning(p),"setReasoning"),abort:i(p=>o(p),"abort"),result:h}}i(pi,"startKodaX");function ib(){return`sess_${Date.now()}_${Math.random().toString(36).slice(2,10)}`}i(ib,"generateSessionId");var qr=class{static{i(this,"SessionControlImpl")}mutators=null;providerValue;modelValue;reasoningValue;hasPendingProvider=!1;hasPendingModel=!1;hasPendingReasoning=!1;seed(t){this.providerValue=t.provider,this.modelValue=t.model,this.reasoningValue=t.reasoning}setProvider(t){this.providerValue=t,this.mutators?this.mutators.setProvider(t):this.hasPendingProvider=!0}setModel(t){this.modelValue=t,this.mutators?this.mutators.setModel(t):this.hasPendingModel=!0}setReasoning(t){this.reasoningValue=t,this.mutators?this.mutators.setReasoning(t):this.hasPendingReasoning=!0}getProvider(){return this.providerValue??""}getModel(){return this.modelValue}getReasoning(){return this.reasoningValue}isAttached(){return this.mutators!==null}_attach(t){this.mutators,this.mutators=t,this.hasPendingProvider&&this.providerValue!==void 0&&t.setProvider(this.providerValue),this.hasPendingModel&&t.setModel(this.modelValue),this.hasPendingReasoning&&t.setReasoning(this.reasoningValue),this.hasPendingProvider=!1,this.hasPendingModel=!1,this.hasPendingReasoning=!1}};function ab(e,t){return e.kind!=="revise_count"?{ok:!0}:e.count<=3?{ok:!0}:{ok:!1,severity:"warn",reason:`boundedRevise: revise_count for harness="${e.harness}" reached ${e.count}, exceeding soft threshold 3`}}i(ab,"observe");var hi={id:"boundedRevise",description:"Per-harness revise count must stay within the soft threshold; crossings emit a warn signal for dispatch-eval (hard cap enforced by the budget controller).",observe:ab};function cb(e,t){return typeof e.maxBudget!="number"?{ok:!0}:e.maxBudget<=t.systemCap.maxBudget?{ok:!0}:{ok:!1,severity:"clamp",reason:`budgetCeiling: manifest.maxBudget=${e.maxBudget} exceeds systemCap.maxBudget=${t.systemCap.maxBudget}`,patch:{clampMaxBudget:t.systemCap.maxBudget}}}i(cb,"admit");var gi={id:"budgetCeiling",description:"manifest.maxBudget must be \u2264 systemCap.maxBudget; over-cap declarations are clamped down to the cap.",admit:cb};function ub(e,t){return{ok:!0}}i(ub,"observe");var Vl={id:"harnessSelectionTiming",description:"FEATURE_193 V2 no-op shell \u2014 predicate always admits since V1 Scout retired. Kept registered for admission-framework / audit-array compat.",observe:ub};function lb(e,t){if(e.kind!=="mutation_recorded")return{ok:!0};let n=t.recorder;return typeof n.todoUpdateCount!="number"?{ok:!0}:n.todoUpdateCount>0?{ok:!0}:n.workerTrivialDeclaration===!0?{ok:!0}:{ok:!1,severity:"warn",reason:`planBeforeMutate: Worker mutated ${e.file} without a prior todo_update plan commit and without a trivial declaration`}}i(lb,"observe");var Hl={id:"planBeforeMutate",description:"Worker mutations should be preceded by a todo_update plan commit (or an explicit trivial declaration). Missing plan is a warn-only signal in v0.7.36.",observe:lb};function bi(e){switch(e){case"read":case"glob":case"grep":case"code_search":case"semantic_lookup":case"lsp_definition":case"lsp_hover":case"lsp_references":case"lsp_document_symbols":case"lsp_workspace_symbols":case"lsp_implementation":case"lsp_prepare_call_hierarchy":case"lsp_incoming_calls":case"lsp_outgoing_calls":case"repo_overview":case"changed_scope":case"changed_diff":case"changed_diff_bundle":case"module_context":case"symbol_context":case"process_context":case"impact_estimate":case"relationship_scan":case"cyclic_dependencies":case"ask_user_question":case"exit_plan_mode":return"read";case"write":case"edit":case"multi_edit":case"insert_after_anchor":case"undo":return"edit";case"bash":return"bash:mutating";case"web_search":case"web_fetch":case"mcp_search":case"mcp_describe":case"mcp_call":case"mcp_read_resource":case"mcp_get_prompt":return"bash:network";case"spawn_agent":case"send_message":case"followup_task":case"wait_agent":case"interrupt_agent":case"list_agents":case"agent_output":case"emit_verdict":case"scaffold_tool":case"validate_tool":case"stage_construction":case"test_tool":case"activate_tool":case"scaffold_agent":case"validate_agent":case"stage_agent_construction":case"test_agent":case"activate_agent":case"worktree_create":case"worktree_remove":return"subagent";default:return"subagent"}}i(bi,"resolveToolCapability");function db(e){if(typeof e=="object"&&e!==null&&"name"in e){let t=e.name;if(typeof t=="string"&&t.length>0)return t}}i(db,"getToolName");function fb(e,t){if(!e.tools||e.tools.length===0)return{ok:!0};let n=new Set(t.systemCap.allowedToolCapabilities),r=[];for(let a of e.tools){let c=db(a);if(!c)continue;let u=bi(c);n.has(u)||r.push({name:c,capability:u})}if(r.length===0)return{ok:!0};let o=r.map(a=>a.name);return{ok:!1,severity:"clamp",reason:`toolPermission: tools requiring disallowed capabilities \u2014 ${r.map(a=>`${a.name}=${a.capability}`).join(", ")}`,patch:{removeTools:o}}}i(fb,"admit");var vi={id:"toolPermission",description:"Every tool in manifest.tools must resolve to a capability tier that systemCap.allowedToolCapabilities permits; offending tools are clamped via removeTools.",admit:fb};var zl=[gi,vi,hi,Vl,Hl];function mb(){Uc();for(let e of zl)Lc(e)}i(mb,"registerCodingInvariants");var Kr=class{static{i(this,"KodaXClient")}options;sessionId;messages=[];contextTokenSnapshot;constructor(t){this.options=t,this.sessionId=t.session?.id??"",this.messages=t.session?.initialMessages?[...t.session.initialMessages]:[],this.contextTokenSnapshot=t.context?.contextTokenSnapshot}async send(t){let n=this.messages.length>0?this.messages:this.options.session?.initialMessages,r=await nt({...this.options,session:{...this.options.session,id:this.sessionId||void 0,initialMessages:n},context:{...this.options.context,contextTokenSnapshot:this.contextTokenSnapshot}},t);return this.sessionId=r.sessionId,this.messages=r.messages,this.contextTokenSnapshot=r.contextTokenSnapshot,r}getSessionId(){return this.sessionId}getMessages(){return[...this.messages]}clear(){this.messages=[],this.sessionId="",this.contextTokenSnapshot=void 0}};function ql(e){return/\bworkflows?\b|工作流(?!程)|ワークフロー|워크플로우/iu.test(e)}i(ql,"hasExplicitNaturalLanguageWorkflowIntent");function OI(e){return{action:e.source==="command"?"suggest":"none"}}i(OI,"decideWorkflowInvocation");function PI(e){return e.outcome==="started"||e.outcome==="cancelled"}i(PI,"workflowStartOutcomeConsumesTurn");var pb="KODAX_VERIFIER_PROVIDER",hb="KODAX_VERIFIER_MODEL";function gb(e){if(Ot(e))try{return Mt(e)}catch{return}}i(gb,"tryGetProvider");function Xr(e){let t=e.env??process.env,n=t[pb],r=t[hb];if(n&&r){let o=gb(n);if(o)return{provider:o,model:r,providerName:n,source:"explicit-env"}}return{provider:e.mainProvider,model:e.mainModel,providerName:e.mainProviderName,source:"inherit-main"}}i(Xr,"resolveVerifierProvider");function yi(e){let t=e.context?.agentProfile;if(!t)return;let n=t.verification,r=e.context?.taskVerification;if(!n&&!r)return;let o={...n,...r};return Array.isArray(r?.criteria)&&r.criteria.length===0&&Array.isArray(n?.criteria)&&n.criteria.length>0?{...o,criteria:n.criteria}:o}i(yi,"resolveEffectiveVerification");function bb(e){let t=e.provider??"anthropic";if(Ot(t))try{let n=Xr({mainProvider:Mt(t),mainProviderName:t,mainModel:e.modelOverride??e.model});return{provider:n.providerName,...n.model!==void 0?{model:n.model}:{}}}catch{return}}i(bb,"resolveVerifierAttribution");function wi(e,t){let n=e.events?.onEffectiveConfig;if(!n)return;let r=t.verifier??bb(e),o={agentMode:t.agentMode,agentProfile:e.context?.agentProfile,toolScope:t.toolScope,verification:yi(e),...r?{verifier:r}:{}};try{n(o)}catch{}}i(wi,"emitEffectiveTaskConfig");var Kl="kodax-review-findings",Xl="kodax-investigation-shards",Yl="kodax-lookup-shards",Jl="kodax-child-result";var Ql="kodax-budget-request";function $t(e,t=!1){return{globalWorkBudget:e?.totalBudget,budgetUsage:e?.spentBudget,budgetApprovalRequired:t}}i($t,"buildManagedStatusBudgetFields");function Vn(e,t=1){e.spentBudget=Math.max(0,e.spentBudget+t)}i(Vn,"incrementManagedBudgetUsage");function yb(e,t=200){e.totalBudget+=t}i(yb,"extendManagedWorkBudget");function Jr(e,t,n=!1){if(!e?.askUser)return!1;if(!n){let r=Math.ceil(t.totalBudget*.9);if(t.spentBudget<r)return!1}return t.lastApprovalBudgetTotal!==t.totalBudget}i(Jr,"canRequestAdditionalWorkBudget");async function Ti(e,t,n){let r=e?.askUser;if(!r||!Jr(e,t,n.force))return"skipped";let o=n.additionalUnits??200,s=Math.min(100,Math.round(t.spentBudget/Math.max(1,t.totalBudget)*100)),a=/[\u4e00-\u9fff]/.test(n.originalTask??n.summary),c=ze(await r({question:a?`\u5F53\u524D AMA \u8FD0\u884C\u5DF2\u4F7F\u7528 ${t.spentBudget}/${t.totalBudget} \u5DE5\u4F5C\u5355\u5143\uFF08${s}%\uFF09\uFF0C\u9700\u8981\u66F4\u591A\u5DE5\u4F5C\u91CF\u3002\u662F\u5426\u8FFD\u52A0 ${o} \u5355\u5143\uFF1F`:`This AMA run has used ${t.spentBudget}/${t.totalBudget} work units (${s}%) and needs more work. Add ${o} more work units?`,allowCustomInput:!1,options:[{label:a?`\u7EE7\u7EED (+${o})`:`Continue (+${o})`,value:"continue",description:a?`\u8FFD\u52A0 ${o} \u5DE5\u4F5C\u5355\u5143\uFF0C\u4ECE\u7B2C ${n.currentRound}/${n.maxRounds} \u8F6E\u7EE7\u7EED\u3002`:`Grant ${o} more work units and continue from round ${n.currentRound}/${n.maxRounds}.`},{label:a?"\u505C\u6B62":"Stop here",value:"stop",description:a?`\u4F7F\u7528\u5F53\u524D\u6700\u4F73\u7ED3\u679C\u3002\u6700\u65B0\u8FDB\u5C55\uFF1A${qs(n.summary,80)}`:`Finish now with the current best result. Latest note: ${qs(n.summary,80)}`}],default:"continue"})),u=t.totalBudget;return c==="continue"?(t.lastApprovalBudgetTotal=u,yb(t,o),"approved"):(t.lastApprovalBudgetTotal=u,"denied")}i(Ti,"maybeRequestAdditionalWorkBudget");import{mkdir as wb,readdir as Tb,readFile as ed,stat as Sb,unlink as Eb,writeFile as _b}from"node:fs/promises";import{execFile as xb}from"node:child_process";import{promisify as kb}from"node:util";import an from"node:path";import Zl from"node:path";function ct(e){return e.context?.taskSurface??"cli"}i(ct,"getManagedTaskSurface");function ut(e,t){if(e.context?.managedTaskWorkspaceDir?.trim())return Zl.resolve(e.context.managedTaskWorkspaceDir);let n=e.context?.executionCwd??e.context?.gitRoot??process.cwd();return Zl.resolve(n,".agent","managed-tasks")}i(ut,"getManagedTaskWorkspaceRoot");var Rb=kb(xb),td=3600*1e3,Qr="checkpoint.json";function Si(e){let t=e.session?.id?.trim();return t||void 0}i(Si,"getCheckpointSessionId");function Cb(e,t){return t?e.sessionId===t:!1}i(Cb,"checkpointBelongsToSession");async function Zr(e){let t=an.resolve(e?.trim()||process.cwd());try{let{stdout:n}=await Rb("git",["rev-parse","--short","HEAD"],{cwd:t,windowsHide:!0});return n.trim()||void 0}catch{return}}i(Zr,"getGitHeadCommit");async function Ei(e,t){await wb(e,{recursive:!0}),await _b(an.join(e,Qr),`${JSON.stringify(t,null,2)}
|
|
3
3
|
`,"utf8")}i(Ei,"writeCheckpoint");async function Lt(e){try{await Eb(an.join(e,Qr))}catch{}}i(Lt,"deleteCheckpoint");async function _i(e){let t=e.context?.gitRoot,n=ct(e),r=ut(e,n),o;try{o=await Tb(r)}catch{return}let s=await Zr(t),a=Si(e),c=Date.now();for(let u of o){let l=an.join(r,u),d=an.join(l,Qr);try{let f=await Sb(d);if(!f.isFile())continue;let h=await ed(d,"utf8"),p=JSON.parse(h);if(!p||typeof p!="object")continue;let m=p;if(m.version!==1||typeof m.taskId!="string"||typeof m.createdAt!="string"||typeof m.gitCommit!="string"||typeof m.harnessProfile!="string"||m.sessionId!==void 0&&typeof m.sessionId!="string")continue;if(m.processId!==void 0||m.pid!==void 0){let k=m.processId??m.pid;if(typeof k!="number"||!Number.isFinite(k))continue}let b=m.processId??m.pid,g={version:1,taskId:m.taskId,...typeof m.sessionId=="string"&&m.sessionId.trim()?{sessionId:m.sessionId}:{},...typeof b=="number"&&Number.isFinite(b)?{processId:b}:{},createdAt:m.createdAt,gitCommit:m.gitCommit,objective:typeof m.objective=="string"?m.objective:"",harnessProfile:m.harnessProfile,currentRound:typeof m.currentRound=="number"?m.currentRound:1,completedWorkerIds:Array.isArray(m.completedWorkerIds)?m.completedWorkerIds.filter(k=>typeof k=="string"):[],scoutCompleted:m.scoutCompleted===!0},v=new Date(g.createdAt).getTime();if(Number.isNaN(v))continue;let y=c-f.mtimeMs;if(y>td||y<0){await Lt(l);continue}if(!Cb(g,a))continue;if(s&&g.gitCommit&&g.gitCommit!==s){await Lt(l);continue}let w=an.join(l,"managed-task.json"),T=await ed(w,"utf8"),S=JSON.parse(T);if(!S||typeof S!="object")continue;let C=S;if(!C.contract?.taskId||!C.evidence?.workspaceDir)continue;return{checkpoint:g,workspaceDir:l,managedTask:C}}catch{continue}}}i(_i,"findValidCheckpoint");import{mkdir as Ib,writeFile as Ae}from"node:fs/promises";import W from"node:path";function xi(e){let t=e?.runtime;return t?`${["# Runtime Execution Guide","","Use this guide to drive live verification against the runtime under test.","",t.cwd?`- Working directory: ${t.cwd}`:void 0,t.startupCommand?`- Startup command: ${t.startupCommand}`:void 0,t.readySignal?`- Ready signal: ${t.readySignal}`:void 0,t.baseUrl?`- Base URL: ${t.baseUrl}`:void 0,t.env&&Object.keys(t.env).length>0?`- Environment keys: ${Object.keys(t.env).join(", ")}`:void 0,"","Execution protocol:",t.startupCommand?"1. Start or confirm the runtime using the declared startup command before accepting the task.":"1. Confirm the target runtime is available before accepting the task.",t.readySignal||t.baseUrl?"2. Wait until the runtime is ready, using the ready signal or base URL when available.":"2. Confirm runtime readiness using the strongest observable signal you have.",t.uiFlows?.length?["3. Execute the declared UI flows:",...t.uiFlows.map((r,o)=>` ${o+1}. ${r}`)].join(`
|
|
4
4
|
`):"3. Execute the critical user-facing flow when browser verification is required.",t.apiChecks?.length?["4. Run the declared API checks:",...t.apiChecks.map((r,o)=>` ${o+1}. ${r}`)].join(`
|
|
5
5
|
`):void 0,t.dbChecks?.length?["5. Run the declared DB checks:",...t.dbChecks.map((r,o)=>` ${o+1}. ${r}`)].join(`
|