@kodax-ai/kodax 0.7.55 → 0.7.56
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 +17 -0
- package/README.md +1 -1
- package/README_CN.md +1 -1
- package/dist/chunks/agent-MAAKRAF2.js +2 -0
- package/dist/chunks/argument-completer-OWEXGWNL.js +2 -0
- package/dist/chunks/{chunk-RGPPZOD5.js → chunk-4OHXHC2S.js} +4 -4
- package/dist/chunks/{chunk-HQCLPWRI.js → chunk-5YJIAP6C.js} +2 -2
- package/dist/chunks/{chunk-FRI7UQSB.js → chunk-7EAGBLRV.js} +1 -1
- package/dist/chunks/{chunk-7C2QUBLE.js → chunk-CDGOEK3T.js} +6 -6
- package/dist/chunks/{chunk-MX4G42EV.js → chunk-DHETLULC.js} +3 -3
- package/dist/chunks/{chunk-THAKTCPE.js → chunk-NZVJ3DFC.js} +174 -170
- package/dist/chunks/chunk-QI3MRJGU.js +5 -0
- package/dist/chunks/chunk-XXQ3RLA2.js +2 -0
- package/dist/chunks/{construction-bootstrap-4CIVZMQ5.js → construction-bootstrap-EDDVNP2B.js} +1 -1
- package/dist/chunks/dist-2267YGB5.js +2 -0
- package/dist/chunks/dist-GW32CHO5.js +2 -0
- package/dist/chunks/paste-5IDBBQQ3.js +2 -0
- package/dist/chunks/utils-J7XBBZGB.js +2 -0
- package/dist/index.d.ts +12 -11
- package/dist/index.js +2 -2
- package/dist/kodax_cli.js +874 -870
- package/dist/provider-capabilities.json +2 -0
- package/dist/sdk-agent.d.ts +9 -8
- package/dist/sdk-coding.d.ts +99 -14
- package/dist/sdk-coding.js +1 -1
- package/dist/sdk-llm.d.ts +10 -5
- package/dist/sdk-llm.js +1 -1
- package/dist/sdk-media.d.ts +99 -0
- package/dist/sdk-media.js +2 -0
- package/dist/sdk-repl.d.ts +11 -10
- package/dist/sdk-repl.js +1 -1
- package/dist/sdk-session.d.ts +6 -5
- package/dist/sdk-session.js +1 -1
- package/dist/types-chunks/base.d-CwPfI8WQ.d.ts +271 -0
- package/dist/types-chunks/{bash-prefix-extractor.d-LUGkQHcd.d.ts → bash-prefix-extractor.d-DZF1gDDz.d.ts} +14 -10
- package/dist/types-chunks/{capsule.d-CNonpwAZ.d.ts → capsule.d-D0kjnqYy.d.ts} +3 -3
- package/dist/types-chunks/{guardrail.d-B18oO1gt.d.ts → guardrail.d-DQQknOfb.d.ts} +3 -3
- package/dist/types-chunks/{process.d-Bj82oJhD.d.ts → process.d-BdiIUr8T.d.ts} +1 -1
- package/dist/types-chunks/{resolver.d-CCX9NXWP.d.ts → resolver.d-Djq8KlCE.d.ts} +2 -1
- package/dist/types-chunks/{sdk-session-SjrnWb4-.d.ts → sdk-session-BP6ZNpOp.d.ts} +4 -4
- package/dist/types-chunks/{storage.d-BAuJ0Ks7.d.ts → storage.d-CkydxFsV.d.ts} +2 -2
- package/dist/types-chunks/{base.d-BBNUF9nz.d.ts → types.d-BJmoMf5H.d.ts} +1 -269
- package/dist/types-chunks/{types.d-D4jL-gAA.d.ts → types.d-BKuHSiR0.d.ts} +1 -1
- package/dist/types-chunks/{utils.d-C9MUY8n3.d.ts → utils.d-bC97IuQZ.d.ts} +5 -5
- package/package.json +5 -1
- package/dist/chunks/agent-PYSVWY7M.js +0 -2
- package/dist/chunks/argument-completer-CTDNNWV3.js +0 -2
- package/dist/chunks/chunk-EVIDQWMF.js +0 -5
- package/dist/chunks/dist-7KTO2PUU.js +0 -2
- package/dist/chunks/dist-BNKIZRCP.js +0 -2
- package/dist/chunks/paste-5DSTHQGK.js +0 -2
- package/dist/chunks/utils-2QXBKYPJ.js +0 -2
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
|
|
2
|
-
import{$a as cs,A as nr,Ab as hs,Ad as $s,Bb as gs,Cb as ws,Da as Yi,Db as Xt,Dd as Qt,E as rr,Ea as Ji,Eb as _r,F as or,Fa as Qi,Fb as Ar,Fd as Zt,G as ir,Ga as Zi,Gb as ys,Gd as en,Ha as es,Hb as ks,Ib as Cr,J as Vi,Jd as tn,K as ft,Kb as Mr,Kd as nn,La as ts,M as sr,Ma as ns,Mb as Je,Md as Ls,N as ar,Nb as zt,Nd as js,Ob as Or,Od as Us,P as cr,Pb as vs,Pd as Fs,Q as dr,Qa as we,Qb as Ts,R as lr,S as ur,Sb as Yt,T as fr,Tb as bs,Td as z,U as Ki,Ud as Lr,V as Xi,W as mr,Wa as rs,Xa as os,Ya as is,Yd as jr,Z as pr,Za as ss,_a as as,_b as Jt,ab as Kt,c as Gt,cb as yr,d as Fi,da as Vt,db as kr,e as qt,ee as Qe,fb as vr,fe as Bs,g as Zn,ga as hr,h as Bi,hb as Tr,hc as Ir,i as Wi,ib as ds,id as Rs,j as Hi,ja as gr,jb as ls,jd as Ss,ka as wr,kb as br,kc as Es,kd as _s,la as zi,lb as Er,lc as xs,ld as Pr,mb as xr,md as Nr,nd as As,ob as us,od as Cs,pb as Rr,pd as Dr,qb as Sr,qd as Ms,rb as fs,rd as Os,sa as mt,u as er,ub as ms,ud as ye,vd as Is,wd as Ps,x as Gi,xd as $r,y as tr,yb as pt,yd as Ns,z as qi,zb as ps,zd as Ds}from"./chunk-THAKTCPE.js";import{Da as Bn,Ea as Ut,Fa as Wn,Ga as Hn,Ia as Gn,Ja as Xe,T as dt,_ as lt,h as jt,sa as ie}from"./chunk-7C2QUBLE.js";import{$c as Si,$d as ji,C as li,F as ui,Ga as mi,Hd as Oi,Id as Ii,Jd as Pi,Kd as Ni,La as pi,Mc as bi,Na as xe,Nc as Ei,Qd as Di,Sc as xi,Sd as $i,Ta as Vn,Ud as Yn,Va as hi,Vd as Wt,Wd as Ye,Xd as Li,Yd as ge,Zc as Ri,_a as gi,_d as ut,ab as wi,ad as _i,ae as Ht,bd as Ai,cd as Ci,db as yi,eb as ki,ee as Jn,fe as Le,g as Ft,gb as vi,ge as Qn,jb as Kn,k as Ee,kb as Xn,na as qn,nb as Bt,nc as zn,ne as Ui,ob as Ti,s as di,sd as ze,ta as fi,td as Mi,va as $e}from"./chunk-JCDO2FR4.js";import{a as o}from"./chunk-V4WSBIXB.js";var ht=class extends Error{static{o(this,"KodaXError")}code;constructor(t,n="KODAX_ERROR"){super(t),this.code=n,this.name="KodaXError"}};var Ur=class extends ht{static{o(this,"KodaXToolError")}toolName;toolId;constructor(t,n,r){super(t,"TOOL_ERROR"),this.toolName=n,this.toolId=r,this.name="KodaXToolError"}};var Fr=class extends ht{static{o(this,"KodaXSessionError")}sessionId;constructor(t,n){super(t,"SESSION_ERROR"),this.sessionId=n,this.name="KodaXSessionError"}},Br=class extends ht{static{o(this,"KodaXTerminalError")}suggestions;constructor(t,n=[]){super(t,"TERMINAL_ERROR"),this.name="KodaXTerminalError",this.suggestions=n}};function Nl(){return new rn}o(Nl,"createSessionControl");function Dl(e,t){let n=new AbortController,r=!1,i=o(u=>{r||(r=!0,n.abort(u))},"markAborted");e.abortSignal&&(e.abortSignal.aborted?i(e.abortSignal.reason):e.abortSignal.addEventListener("abort",()=>i(e.abortSignal.reason),{once:!0}));let s=new rn;s.seed({provider:e.provider,model:e.modelOverride??e.model,reasoning:e.reasoningMode});let c={...e,abortSignal:n.signal,sessionControl:s},a=ye(c,t);return{id:e.session?.id??$l(),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:o(u=>s.setProvider(u),"setProvider"),setModel:o(u=>s.setModel(u),"setModel"),setReasoning:o(u=>s.setReasoning(u),"setReasoning"),abort:o(u=>i(u),"abort"),result:a}}o(Dl,"startKodaX");function $l(){return`sess_${Date.now()}_${Math.random().toString(36).slice(2,10)}`}o($l,"generateSessionId");var rn=class{static{o(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 Ll(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`}}o(Ll,"observe");var Wr={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:Ll};function jl(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}}}o(jl,"admit");var Hr={id:"budgetCeiling",description:"manifest.maxBudget must be \u2264 systemCap.maxBudget; over-cap declarations are clamped down to the cap.",admit:jl};function Ul(e,t){return{ok:!0}}o(Ul,"observe");var Ws={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:Ul};function Fl(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`}}o(Fl,"observe");var Hs={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:Fl};function Gr(e){switch(e){case"read":case"glob":case"grep":case"code_search":case"semantic_lookup":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"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"dispatch_child_task":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"}}o(Gr,"resolveToolCapability");function Bl(e){if(typeof e=="object"&&e!==null&&"name"in e){let t=e.name;if(typeof t=="string"&&t.length>0)return t}}o(Bl,"getToolName");function Wl(e,t){if(!e.tools||e.tools.length===0)return{ok:!0};let n=new Set(t.systemCap.allowedToolCapabilities),r=[];for(let c of e.tools){let a=Bl(c);if(!a)continue;let l=Gr(a);n.has(l)||r.push({name:a,capability:l})}if(r.length===0)return{ok:!0};let i=r.map(c=>c.name);return{ok:!1,severity:"clamp",reason:`toolPermission: tools requiring disallowed capabilities \u2014 ${r.map(c=>`${c.name}=${c.capability}`).join(", ")}`,patch:{removeTools:i}}}o(Wl,"admit");var qr={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:Wl};var Gs=[Hr,qr,Wr,Ws,Hs];function Hl(){fi();for(let e of Gs)ui(e)}o(Hl,"registerCodingInvariants");var on=class{static{o(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 ye({...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 Gl(e){let t=new Set,n=[];for(let r of e)t.has(r.id)||(t.add(r.id),n.push(r));return n}o(Gl,"dedupeBundles");function qs(e){return e==="evidence-scan"?"winner-cancel":"none"}o(qs,"resolveFanoutCancellationPolicy");function ql(e,t,n){if(!(!e.fanout.admissible||!e.fanout.class))return{profile:e.profile,fanoutClass:e.fanout.class,maxChildren:e.fanout.maxChildren,bundles:t,reductionStrategy:n.strategy}}o(ql,"createFanoutSchedulerInput");function Vl(e){let t=Gl(e.bundles.filter(a=>a.fanoutClass===e.fanoutClass));if(t.length===0)return{enabled:!1,profile:e.profile,fanoutClass:e.fanoutClass,branches:[],scheduledBundleIds:[],deferredBundleIds:[],maxParallel:1,mergeStrategy:e.reductionStrategy,cancellationPolicy:qs(e.fanoutClass),reason:"No child bundles matched the requested fan-out class."};let n=e.maxChildren&&e.maxChildren>0?e.maxChildren:t.length,r=t.slice(0,n),i=t.slice(r.length),s=[...r.map(a=>({bundleId:a.id,status:"scheduled"})),...i.map(a=>({bundleId:a.id,status:"deferred",reason:"Deferred by the current AMA fan-out budget."}))],c=Math.max(1,Math.min(r.length,n));return{enabled:r.length>0,profile:e.profile,fanoutClass:e.fanoutClass,branches:s,scheduledBundleIds:r.map(a=>a.id),deferredBundleIds:i.map(a=>a.id),maxParallel:c,mergeStrategy:e.reductionStrategy,cancellationPolicy:qs(e.fanoutClass),reason:i.length>0?`Scheduled ${r.length} child bundles and deferred ${i.length} to stay within the current AMA fan-out budget.`:`Scheduled ${r.length} child bundles for ${e.fanoutClass}.`}}o(Vl,"buildFanoutSchedulerPlan");function Vs(e,t){let n=e.branches.find(r=>r.bundleId===t);if(!n)throw new Error(`Unknown fan-out bundle id: ${t}`);return n}o(Vs,"getFanoutBranch");function Kl(e){return e.branches.filter(t=>t.status==="scheduled").length}o(Kl,"countActiveFanoutBranches");function sn(e,t){let n=Vs(e,t.bundleId);return{...e,branches:e.branches.map(r=>{if(r.bundleId!==t.bundleId)return r;switch(t.type){case"assign":return{...n,workerId:t.workerId};case"complete":return{...n,status:"completed",childId:t.childId??n.childId,reason:void 0};case"cancel":return{...n,status:"cancelled",reason:t.reason};default:return t}})}}o(sn,"applyFanoutBranchTransition");function Xl(e,t,n){return sn(e,{type:"assign",bundleId:t,workerId:n})}o(Xl,"assignFanoutBranchWorker");function zl(e,t,n){return sn(e,{type:"complete",bundleId:t,childId:n})}o(zl,"markFanoutBranchCompleted");function Yl(e,t,n){return sn(e,{type:"cancel",bundleId:t,reason:n})}o(Yl,"markFanoutBranchCancelled");var Ks="kodax-review-findings",Xs="kodax-investigation-shards",zs="kodax-lookup-shards",Ys="kodax-child-result";var Js="kodax-budget-request";function je(e,t=!1){return{globalWorkBudget:e?.totalBudget,budgetUsage:e?.spentBudget,budgetApprovalRequired:t}}o(je,"buildManagedStatusBudgetFields");function gt(e,t=1){e.spentBudget=Math.max(0,e.spentBudget+t)}o(gt,"incrementManagedBudgetUsage");function Ql(e,t=200){e.totalBudget+=t}o(Ql,"extendManagedWorkBudget");async function Vr(e,t,n){if(!e?.askUser)return"skipped";if(!n.force){let l=Math.ceil(t.totalBudget*.9);if(t.spentBudget<l)return"skipped"}if(t.lastApprovalBudgetTotal===t.totalBudget)return"skipped";let r=n.additionalUnits??200,i=Math.min(100,Math.round(t.spentBudget/Math.max(1,t.totalBudget)*100)),s=/[\u4e00-\u9fff]/.test(n.originalTask??n.summary),c=await e.askUser({question:s?`\u5F53\u524D AMA \u8FD0\u884C\u5DF2\u4F7F\u7528 ${t.spentBudget}/${t.totalBudget} \u5DE5\u4F5C\u5355\u5143\uFF08${i}%\uFF09\uFF0C\u9700\u8981\u66F4\u591A\u5DE5\u4F5C\u91CF\u3002\u662F\u5426\u8FFD\u52A0 ${r} \u5355\u5143\uFF1F`:`This AMA run has used ${t.spentBudget}/${t.totalBudget} work units (${i}%) and needs more work. Add ${r} more work units?`,options:[{label:s?`\u7EE7\u7EED (+${r})`:`Continue (+${r})`,value:"continue",description:s?`\u8FFD\u52A0 ${r} \u5DE5\u4F5C\u5355\u5143\uFF0C\u4ECE\u7B2C ${n.currentRound}/${n.maxRounds} \u8F6E\u7EE7\u7EED\u3002`:`Grant ${r} more work units and continue from round ${n.currentRound}/${n.maxRounds}.`},{label:s?"\u505C\u6B62":"Stop here",value:"stop",description:s?`\u4F7F\u7528\u5F53\u524D\u6700\u4F73\u7ED3\u679C\u3002\u6700\u65B0\u8FDB\u5C55\uFF1A${Sr(n.summary,80)}`:`Finish now with the current best result. Latest note: ${Sr(n.summary,80)}`}],default:"continue"}),a=t.totalBudget;return c==="continue"?(t.lastApprovalBudgetTotal=a,Ql(t,r),"approved"):(t.lastApprovalBudgetTotal=a,"denied")}o(Vr,"maybeRequestAdditionalWorkBudget");import{mkdir as Zl,readdir as eu,readFile as ea,stat as tu,unlink as nu,writeFile as ru}from"node:fs/promises";import{execFile as ou}from"node:child_process";import{promisify as iu}from"node:util";import Ze from"node:path";import Zs from"node:path";function Re(e){return e.context?.taskSurface??"cli"}o(Re,"getManagedTaskSurface");function Se(e,t){if(e.context?.managedTaskWorkspaceDir?.trim())return Zs.resolve(e.context.managedTaskWorkspaceDir);let n=e.context?.executionCwd??e.context?.gitRoot??process.cwd();return Zs.resolve(n,".agent","managed-tasks")}o(Se,"getManagedTaskWorkspaceRoot");var su=iu(ou),ta=3600*1e3,an="checkpoint.json";function Kr(e){let t=e.session?.id?.trim();return t||void 0}o(Kr,"getCheckpointSessionId");function au(e,t){return t?e.sessionId===t:!1}o(au,"checkpointBelongsToSession");async function cn(e){let t=Ze.resolve(e?.trim()||process.cwd());try{let{stdout:n}=await su("git",["rev-parse","--short","HEAD"],{cwd:t});return n.trim()||void 0}catch{return}}o(cn,"getGitHeadCommit");async function Xr(e,t){await Zl(e,{recursive:!0}),await ru(Ze.join(e,an),`${JSON.stringify(t,null,2)}
|
|
2
|
+
import{$a as cs,A as nr,Ab as hs,Ad as $s,Bb as gs,Cb as ws,Da as Yi,Db as Xt,Dd as Qt,E as rr,Ea as Ji,Eb as _r,F as or,Fa as Qi,Fb as Ar,Fd as Zt,G as ir,Ga as Zi,Gb as ys,Gd as en,Ha as es,Hb as ks,Ib as Cr,J as Vi,Jd as tn,K as ft,Kb as Mr,Kd as nn,La as ts,M as sr,Ma as ns,Mb as Je,Md as Ls,N as ar,Nb as zt,Nd as js,Ob as Or,Od as Us,P as cr,Pb as vs,Pd as Fs,Q as dr,Qa as we,Qb as Ts,R as lr,S as ur,Sb as Yt,T as fr,Tb as bs,Td as z,U as Ki,Ud as Lr,V as Xi,W as mr,Wa as rs,Xa as os,Ya as is,Yd as jr,Z as pr,Za as ss,_a as as,_b as Jt,ab as Kt,c as Gt,cb as yr,d as Fi,da as Vt,db as kr,e as qt,ee as Qe,fb as vr,fe as Bs,g as Zn,ga as hr,h as Bi,hb as Tr,hc as Ir,i as Wi,ib as ds,id as Rs,j as Hi,ja as gr,jb as ls,jd as Ss,ka as wr,kb as br,kc as Es,kd as _s,la as zi,lb as Er,lc as xs,ld as Pr,mb as xr,md as Nr,nd as As,ob as us,od as Cs,pb as Rr,pd as Dr,qb as Sr,qd as Ms,rb as fs,rd as Os,sa as mt,u as er,ub as ms,ud as ye,vd as Is,wd as Ps,x as Gi,xd as $r,y as tr,yb as pt,yd as Ns,z as qi,zb as ps,zd as Ds}from"./chunk-NZVJ3DFC.js";import{Ea as Bn,Fa as Ut,Ga as Wn,Ha as Hn,Ja as Gn,Ka as Xe,T as dt,_ as lt,h as jt,sa as ie}from"./chunk-CDGOEK3T.js";import{$c as Si,$d as ji,C as li,F as ui,Ga as mi,Hd as Oi,Id as Ii,Jd as Pi,Kd as Ni,La as pi,Mc as bi,Na as xe,Nc as Ei,Qd as Di,Sc as xi,Sd as $i,Ta as Vn,Ud as Yn,Va as hi,Vd as Wt,Wd as Ye,Xd as Li,Yd as ge,Zc as Ri,_a as gi,_d as ut,ab as wi,ad as _i,ae as Ht,bd as Ai,cd as Ci,db as yi,eb as ki,ee as Jn,fe as Le,g as Ft,gb as vi,ge as Qn,jb as Kn,k as Ee,kb as Xn,na as qn,nb as Bt,nc as zn,ne as Ui,ob as Ti,s as di,sd as ze,ta as fi,td as Mi,va as $e}from"./chunk-JCDO2FR4.js";import{a as o}from"./chunk-V4WSBIXB.js";var ht=class extends Error{static{o(this,"KodaXError")}code;constructor(t,n="KODAX_ERROR"){super(t),this.code=n,this.name="KodaXError"}};var Ur=class extends ht{static{o(this,"KodaXToolError")}toolName;toolId;constructor(t,n,r){super(t,"TOOL_ERROR"),this.toolName=n,this.toolId=r,this.name="KodaXToolError"}};var Fr=class extends ht{static{o(this,"KodaXSessionError")}sessionId;constructor(t,n){super(t,"SESSION_ERROR"),this.sessionId=n,this.name="KodaXSessionError"}},Br=class extends ht{static{o(this,"KodaXTerminalError")}suggestions;constructor(t,n=[]){super(t,"TERMINAL_ERROR"),this.name="KodaXTerminalError",this.suggestions=n}};function Nl(){return new rn}o(Nl,"createSessionControl");function Dl(e,t){let n=new AbortController,r=!1,i=o(u=>{r||(r=!0,n.abort(u))},"markAborted");e.abortSignal&&(e.abortSignal.aborted?i(e.abortSignal.reason):e.abortSignal.addEventListener("abort",()=>i(e.abortSignal.reason),{once:!0}));let s=new rn;s.seed({provider:e.provider,model:e.modelOverride??e.model,reasoning:e.reasoningMode});let c={...e,abortSignal:n.signal,sessionControl:s},a=ye(c,t);return{id:e.session?.id??$l(),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:o(u=>s.setProvider(u),"setProvider"),setModel:o(u=>s.setModel(u),"setModel"),setReasoning:o(u=>s.setReasoning(u),"setReasoning"),abort:o(u=>i(u),"abort"),result:a}}o(Dl,"startKodaX");function $l(){return`sess_${Date.now()}_${Math.random().toString(36).slice(2,10)}`}o($l,"generateSessionId");var rn=class{static{o(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 Ll(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`}}o(Ll,"observe");var Wr={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:Ll};function jl(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}}}o(jl,"admit");var Hr={id:"budgetCeiling",description:"manifest.maxBudget must be \u2264 systemCap.maxBudget; over-cap declarations are clamped down to the cap.",admit:jl};function Ul(e,t){return{ok:!0}}o(Ul,"observe");var Ws={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:Ul};function Fl(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`}}o(Fl,"observe");var Hs={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:Fl};function Gr(e){switch(e){case"read":case"glob":case"grep":case"code_search":case"semantic_lookup":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"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"dispatch_child_task":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"}}o(Gr,"resolveToolCapability");function Bl(e){if(typeof e=="object"&&e!==null&&"name"in e){let t=e.name;if(typeof t=="string"&&t.length>0)return t}}o(Bl,"getToolName");function Wl(e,t){if(!e.tools||e.tools.length===0)return{ok:!0};let n=new Set(t.systemCap.allowedToolCapabilities),r=[];for(let c of e.tools){let a=Bl(c);if(!a)continue;let l=Gr(a);n.has(l)||r.push({name:a,capability:l})}if(r.length===0)return{ok:!0};let i=r.map(c=>c.name);return{ok:!1,severity:"clamp",reason:`toolPermission: tools requiring disallowed capabilities \u2014 ${r.map(c=>`${c.name}=${c.capability}`).join(", ")}`,patch:{removeTools:i}}}o(Wl,"admit");var qr={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:Wl};var Gs=[Hr,qr,Wr,Ws,Hs];function Hl(){fi();for(let e of Gs)ui(e)}o(Hl,"registerCodingInvariants");var on=class{static{o(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 ye({...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 Gl(e){let t=new Set,n=[];for(let r of e)t.has(r.id)||(t.add(r.id),n.push(r));return n}o(Gl,"dedupeBundles");function qs(e){return e==="evidence-scan"?"winner-cancel":"none"}o(qs,"resolveFanoutCancellationPolicy");function ql(e,t,n){if(!(!e.fanout.admissible||!e.fanout.class))return{profile:e.profile,fanoutClass:e.fanout.class,maxChildren:e.fanout.maxChildren,bundles:t,reductionStrategy:n.strategy}}o(ql,"createFanoutSchedulerInput");function Vl(e){let t=Gl(e.bundles.filter(a=>a.fanoutClass===e.fanoutClass));if(t.length===0)return{enabled:!1,profile:e.profile,fanoutClass:e.fanoutClass,branches:[],scheduledBundleIds:[],deferredBundleIds:[],maxParallel:1,mergeStrategy:e.reductionStrategy,cancellationPolicy:qs(e.fanoutClass),reason:"No child bundles matched the requested fan-out class."};let n=e.maxChildren&&e.maxChildren>0?e.maxChildren:t.length,r=t.slice(0,n),i=t.slice(r.length),s=[...r.map(a=>({bundleId:a.id,status:"scheduled"})),...i.map(a=>({bundleId:a.id,status:"deferred",reason:"Deferred by the current AMA fan-out budget."}))],c=Math.max(1,Math.min(r.length,n));return{enabled:r.length>0,profile:e.profile,fanoutClass:e.fanoutClass,branches:s,scheduledBundleIds:r.map(a=>a.id),deferredBundleIds:i.map(a=>a.id),maxParallel:c,mergeStrategy:e.reductionStrategy,cancellationPolicy:qs(e.fanoutClass),reason:i.length>0?`Scheduled ${r.length} child bundles and deferred ${i.length} to stay within the current AMA fan-out budget.`:`Scheduled ${r.length} child bundles for ${e.fanoutClass}.`}}o(Vl,"buildFanoutSchedulerPlan");function Vs(e,t){let n=e.branches.find(r=>r.bundleId===t);if(!n)throw new Error(`Unknown fan-out bundle id: ${t}`);return n}o(Vs,"getFanoutBranch");function Kl(e){return e.branches.filter(t=>t.status==="scheduled").length}o(Kl,"countActiveFanoutBranches");function sn(e,t){let n=Vs(e,t.bundleId);return{...e,branches:e.branches.map(r=>{if(r.bundleId!==t.bundleId)return r;switch(t.type){case"assign":return{...n,workerId:t.workerId};case"complete":return{...n,status:"completed",childId:t.childId??n.childId,reason:void 0};case"cancel":return{...n,status:"cancelled",reason:t.reason};default:return t}})}}o(sn,"applyFanoutBranchTransition");function Xl(e,t,n){return sn(e,{type:"assign",bundleId:t,workerId:n})}o(Xl,"assignFanoutBranchWorker");function zl(e,t,n){return sn(e,{type:"complete",bundleId:t,childId:n})}o(zl,"markFanoutBranchCompleted");function Yl(e,t,n){return sn(e,{type:"cancel",bundleId:t,reason:n})}o(Yl,"markFanoutBranchCancelled");var Ks="kodax-review-findings",Xs="kodax-investigation-shards",zs="kodax-lookup-shards",Ys="kodax-child-result";var Js="kodax-budget-request";function je(e,t=!1){return{globalWorkBudget:e?.totalBudget,budgetUsage:e?.spentBudget,budgetApprovalRequired:t}}o(je,"buildManagedStatusBudgetFields");function gt(e,t=1){e.spentBudget=Math.max(0,e.spentBudget+t)}o(gt,"incrementManagedBudgetUsage");function Ql(e,t=200){e.totalBudget+=t}o(Ql,"extendManagedWorkBudget");async function Vr(e,t,n){if(!e?.askUser)return"skipped";if(!n.force){let l=Math.ceil(t.totalBudget*.9);if(t.spentBudget<l)return"skipped"}if(t.lastApprovalBudgetTotal===t.totalBudget)return"skipped";let r=n.additionalUnits??200,i=Math.min(100,Math.round(t.spentBudget/Math.max(1,t.totalBudget)*100)),s=/[\u4e00-\u9fff]/.test(n.originalTask??n.summary),c=await e.askUser({question:s?`\u5F53\u524D AMA \u8FD0\u884C\u5DF2\u4F7F\u7528 ${t.spentBudget}/${t.totalBudget} \u5DE5\u4F5C\u5355\u5143\uFF08${i}%\uFF09\uFF0C\u9700\u8981\u66F4\u591A\u5DE5\u4F5C\u91CF\u3002\u662F\u5426\u8FFD\u52A0 ${r} \u5355\u5143\uFF1F`:`This AMA run has used ${t.spentBudget}/${t.totalBudget} work units (${i}%) and needs more work. Add ${r} more work units?`,options:[{label:s?`\u7EE7\u7EED (+${r})`:`Continue (+${r})`,value:"continue",description:s?`\u8FFD\u52A0 ${r} \u5DE5\u4F5C\u5355\u5143\uFF0C\u4ECE\u7B2C ${n.currentRound}/${n.maxRounds} \u8F6E\u7EE7\u7EED\u3002`:`Grant ${r} more work units and continue from round ${n.currentRound}/${n.maxRounds}.`},{label:s?"\u505C\u6B62":"Stop here",value:"stop",description:s?`\u4F7F\u7528\u5F53\u524D\u6700\u4F73\u7ED3\u679C\u3002\u6700\u65B0\u8FDB\u5C55\uFF1A${Sr(n.summary,80)}`:`Finish now with the current best result. Latest note: ${Sr(n.summary,80)}`}],default:"continue"}),a=t.totalBudget;return c==="continue"?(t.lastApprovalBudgetTotal=a,Ql(t,r),"approved"):(t.lastApprovalBudgetTotal=a,"denied")}o(Vr,"maybeRequestAdditionalWorkBudget");import{mkdir as Zl,readdir as eu,readFile as ea,stat as tu,unlink as nu,writeFile as ru}from"node:fs/promises";import{execFile as ou}from"node:child_process";import{promisify as iu}from"node:util";import Ze from"node:path";import Zs from"node:path";function Re(e){return e.context?.taskSurface??"cli"}o(Re,"getManagedTaskSurface");function Se(e,t){if(e.context?.managedTaskWorkspaceDir?.trim())return Zs.resolve(e.context.managedTaskWorkspaceDir);let n=e.context?.executionCwd??e.context?.gitRoot??process.cwd();return Zs.resolve(n,".agent","managed-tasks")}o(Se,"getManagedTaskWorkspaceRoot");var su=iu(ou),ta=3600*1e3,an="checkpoint.json";function Kr(e){let t=e.session?.id?.trim();return t||void 0}o(Kr,"getCheckpointSessionId");function au(e,t){return t?e.sessionId===t:!1}o(au,"checkpointBelongsToSession");async function cn(e){let t=Ze.resolve(e?.trim()||process.cwd());try{let{stdout:n}=await su("git",["rev-parse","--short","HEAD"],{cwd:t});return n.trim()||void 0}catch{return}}o(cn,"getGitHeadCommit");async function Xr(e,t){await Zl(e,{recursive:!0}),await ru(Ze.join(e,an),`${JSON.stringify(t,null,2)}
|
|
3
3
|
`,"utf8")}o(Xr,"writeCheckpoint");async function Ue(e){try{await nu(Ze.join(e,an))}catch{}}o(Ue,"deleteCheckpoint");async function zr(e){let t=e.context?.gitRoot,n=Re(e),r=Se(e,n),i;try{i=await eu(r)}catch{return}let s=await cn(t),c=Kr(e),a=Date.now();for(let l of i){let u=Ze.join(r,l),m=Ze.join(u,an);try{if(!(await tu(m)).isFile())continue;let f=await ea(m,"utf8"),p=JSON.parse(f);if(!p||typeof p!="object")continue;let h=p;if(h.version!==1||typeof h.taskId!="string"||typeof h.createdAt!="string"||typeof h.gitCommit!="string"||typeof h.harnessProfile!="string"||h.sessionId!==void 0&&typeof h.sessionId!="string")continue;if(h.processId!==void 0||h.pid!==void 0){let j=h.processId??h.pid;if(typeof j!="number"||!Number.isFinite(j))continue}let g=h.processId??h.pid,y={version:1,taskId:h.taskId,...typeof h.sessionId=="string"&&h.sessionId.trim()?{sessionId:h.sessionId}:{},...typeof g=="number"&&Number.isFinite(g)?{processId:g}:{},createdAt:h.createdAt,gitCommit:h.gitCommit,objective:typeof h.objective=="string"?h.objective:"",harnessProfile:h.harnessProfile,currentRound:typeof h.currentRound=="number"?h.currentRound:1,completedWorkerIds:Array.isArray(h.completedWorkerIds)?h.completedWorkerIds.filter(j=>typeof j=="string"):[],scoutCompleted:h.scoutCompleted===!0},R=new Date(y.createdAt).getTime();if(Number.isNaN(R))continue;let C=a-R;if(C>ta||C<0){await Ue(u);continue}if(!au(y,c))continue;if(s&&y.gitCommit&&y.gitCommit!==s){await Ue(u);continue}let w=Ze.join(u,"managed-task.json"),v=await ea(w,"utf8"),T=JSON.parse(v);if(!T||typeof T!="object")continue;let M=T;if(!M.contract?.taskId||!M.evidence?.workspaceDir)continue;return{checkpoint:y,workspaceDir:u,managedTask:M}}catch{continue}}}o(zr,"findValidCheckpoint");import{mkdir as du,writeFile as se}from"node:fs/promises";import P from"node:path";function Yr(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,i)=>` ${i+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,i)=>` ${i+1}. ${r}`)].join(`
|
|
5
5
|
`):void 0,t.dbChecks?.length?["5. Run the declared DB checks:",...t.dbChecks.map((r,i)=>` ${i+1}. ${r}`)].join(`
|
|
@@ -118,7 +118,7 @@ ${u}`:u}o(Tc,"resolveRoleInstructions");function bc(e,t){if(!e)return;let n=e.cr
|
|
|
118
118
|
|
|
119
119
|
${k}`:k)}if(s&&c){if(ja(c,g.name)&&fn(c),Da(c,s)){let k=La(s);C=C.length>0?`${C}
|
|
120
120
|
|
|
121
|
-
${k}`:k}$a(c)}let v=(g.tools??[]).map(k=>({name:k.name,description:k.description,input_schema:k.input_schema})),T=_r(e),M=r?.(),L=ys("sa",T,g.reasoning,M),I=L==="off"?{enabled:!1,mode:"off"}:{enabled:!0,mode:L,depth:Ar(L)};m.current+=1,e.events?.onIterationStart?.(m.current,d);let A;if(t)A=await t(w,v,C);else{let k=ie(e.provider??"anthropic"),O=e.provider??k.name??"anthropic",x=yr(O),G=x.requestTimeoutMs,D=x.streamIdleTimeoutMs,$=new vr,J=typeof k.supportsNonStreamingFallback=="function"?k.supportsNonStreamingFallback():!1,Q=new Tr($,{...x,enableNonStreamingFallback:x.enableNonStreamingFallback&&J}),K=[...w];K=Xn(K),K=Kn(K);let Z=0,q,Ve=!1,ve=0;for(;;){Z+=1,$.beginRequest(O,p??k.getModel?.()??"unknown",K,Z,!1),br($.snapshot());let te=new AbortController,U=setTimeout(()=>{te.abort(new Error("API Hard Timeout (10 minutes)"))},G),fe=D>0,_;fe&&(_=setTimeout(()=>{te.abort(new Error(`Stream stalled or delayed response (${D}ms idle)`))},D));let me=o(()=>{fe&&(_&&clearTimeout(_),te.signal.aborted||(_=setTimeout(()=>{te.abort(new Error(`Stream stalled or delayed response (${D}ms idle)`))},D)))},"resetIdleTimer"),pe=e.abortSignal?AbortSignal.any([e.abortSignal,te.signal]):te.signal,be=vs(K,C);Yt("[resilience:request]",{provider:O,attempt:Z,fallbackActive:!1,payloadBytes:be,payloadBucket:Ts(be)});let It={modelOverride:p,onTextDelta:o(F=>{$.markTextDelta(F),me();let he=F.includes("```")||kt.some(Ke=>F.includes(Ke))?io(F):F;he.length!==0&&e.events?.onTextDelta?.(he)},"onTextDelta"),onThinkingDelta:o(F=>{$.markThinkingDelta(F),me(),e.events?.onThinkingDelta?.(F)},"onThinkingDelta"),onThinkingEnd:o(F=>{e.events?.onThinkingEnd?.(F)},"onThinkingEnd"),onToolInputDelta:e.events?.onToolInputDelta,onRateLimit:o((F,ne,he)=>{me(),e.events&&Xt(e.events,F,ne,he)},"onRateLimit"),onRetryAfter:o(F=>{me(),f=Ut(f,{provider:F.provider,waitMs:F.waitMs,reason:F.reason,source:F.source}),e.events?.onRetryAfter?.(F)},"onRetryAfter")};try{if(q=await k.stream(K,[...v],C,I,It,pe),q.stopReason==="max_tokens"&&!Ve&&!process.env.KODAX_MAX_OUTPUT_TOKENS&&k.getEffectiveMaxOutputTokens(p)<64e3){Ve=!0,k.setMaxOutputTokensOverride(64e3),e.events?.onRetry?.(`Output budget reached, escalating to ${64e3} tokens and retrying the same turn`,1,1),U&&clearTimeout(U),_&&clearTimeout(_),U=void 0,_=void 0,Z-=1;continue}if(Kf(q)&&q.stopReason!=="max_tokens"&&ve<Gt&&!e.abortSignal?.aborted){ve+=1,e.events?.onRetry?.(`Provider returned an empty turn, retrying ${ve}/${Gt}`,ve,Gt),U&&clearTimeout(U),_&&clearTimeout(_),U=void 0,_=void 0,Z-=1,await Kt(Fi*ve,e.abortSignal);continue}break}catch(F){let ne=F instanceof Error?F:new Error(String(F));if(ne.name==="AbortError"&&te.signal.aborted&&!e.abortSignal?.aborted){let le=te.signal.reason?.message??"Stream stalled",{KodaXNetworkError:De}=await import("./dist-
|
|
121
|
+
${k}`:k}$a(c)}let v=(g.tools??[]).map(k=>({name:k.name,description:k.description,input_schema:k.input_schema})),T=_r(e),M=r?.(),L=ys("sa",T,g.reasoning,M),I=L==="off"?{enabled:!1,mode:"off"}:{enabled:!0,mode:L,depth:Ar(L)};m.current+=1,e.events?.onIterationStart?.(m.current,d);let A;if(t)A=await t(w,v,C);else{let k=ie(e.provider??"anthropic"),O=e.provider??k.name??"anthropic",x=yr(O),G=x.requestTimeoutMs,D=x.streamIdleTimeoutMs,$=new vr,J=typeof k.supportsNonStreamingFallback=="function"?k.supportsNonStreamingFallback():!1,Q=new Tr($,{...x,enableNonStreamingFallback:x.enableNonStreamingFallback&&J}),K=[...w];K=Xn(K),K=Kn(K);let Z=0,q,Ve=!1,ve=0;for(;;){Z+=1,$.beginRequest(O,p??k.getModel?.()??"unknown",K,Z,!1),br($.snapshot());let te=new AbortController,U=setTimeout(()=>{te.abort(new Error("API Hard Timeout (10 minutes)"))},G),fe=D>0,_;fe&&(_=setTimeout(()=>{te.abort(new Error(`Stream stalled or delayed response (${D}ms idle)`))},D));let me=o(()=>{fe&&(_&&clearTimeout(_),te.signal.aborted||(_=setTimeout(()=>{te.abort(new Error(`Stream stalled or delayed response (${D}ms idle)`))},D)))},"resetIdleTimer"),pe=e.abortSignal?AbortSignal.any([e.abortSignal,te.signal]):te.signal,be=vs(K,C);Yt("[resilience:request]",{provider:O,attempt:Z,fallbackActive:!1,payloadBytes:be,payloadBucket:Ts(be)});let It={modelOverride:p,onTextDelta:o(F=>{$.markTextDelta(F),me();let he=F.includes("```")||kt.some(Ke=>F.includes(Ke))?io(F):F;he.length!==0&&e.events?.onTextDelta?.(he)},"onTextDelta"),onThinkingDelta:o(F=>{$.markThinkingDelta(F),me(),e.events?.onThinkingDelta?.(F)},"onThinkingDelta"),onThinkingEnd:o(F=>{e.events?.onThinkingEnd?.(F)},"onThinkingEnd"),onToolInputDelta:e.events?.onToolInputDelta,onRateLimit:o((F,ne,he)=>{me(),e.events&&Xt(e.events,F,ne,he)},"onRateLimit"),onRetryAfter:o(F=>{me(),f=Ut(f,{provider:F.provider,waitMs:F.waitMs,reason:F.reason,source:F.source}),e.events?.onRetryAfter?.(F)},"onRetryAfter")};try{if(q=await k.stream(K,[...v],C,I,It,pe),q.stopReason==="max_tokens"&&!Ve&&!process.env.KODAX_MAX_OUTPUT_TOKENS&&k.getEffectiveMaxOutputTokens(p)<64e3){Ve=!0,k.setMaxOutputTokensOverride(64e3),e.events?.onRetry?.(`Output budget reached, escalating to ${64e3} tokens and retrying the same turn`,1,1),U&&clearTimeout(U),_&&clearTimeout(_),U=void 0,_=void 0,Z-=1;continue}if(Kf(q)&&q.stopReason!=="max_tokens"&&ve<Gt&&!e.abortSignal?.aborted){ve+=1,e.events?.onRetry?.(`Provider returned an empty turn, retrying ${ve}/${Gt}`,ve,Gt),U&&clearTimeout(U),_&&clearTimeout(_),U=void 0,_=void 0,Z-=1,await Kt(Fi*ve,e.abortSignal);continue}break}catch(F){let ne=F instanceof Error?F:new Error(String(F));if(ne.name==="AbortError"&&te.signal.aborted&&!e.abortSignal?.aborted){let le=te.signal.reason?.message??"Stream stalled",{KodaXNetworkError:De}=await import("./dist-GW32CHO5.js");ne=new De(le,!0)}let he=$.inferFailureStage(),Ke=kr(ne,he);ds(ne,Ke);let V=Q.decideRecoveryAction(ne,Ke,Z);if(ls(V,Z),e.events?.onProviderRecovery?.({stage:V.failureStage,errorClass:V.reasonCode,attempt:Z,maxAttempts:x.maxRetries,delayMs:V.delayMs,recoveryAction:V.action,ladderStep:V.ladderStep,fallbackUsed:V.shouldUseNonStreaming,serverRetryAfterMs:V.serverRetryAfterMs}),V.reasonCode==="rate_limit"&&e.events&&Xt(e.events,Z,x.maxRetries,V.delayMs),!e.events?.onProviderRecovery&&V.action!=="manual_continue"&&e.events?.onRetry?.(`${xs(ne)} \xB7 retry ${Z}/${x.maxRetries} in ${Math.round(V.delayMs/1e3)}s`,Z,x.maxRetries),V.shouldUseNonStreaming&&typeof k.complete=="function"){let le=new AbortController,De=e.abortSignal?AbortSignal.any([e.abortSignal,le.signal]):le.signal,Nn=setTimeout(()=>{le.abort(new Error("API Hard Timeout (10 minutes)"))},G);try{_&&clearTimeout(_),U&&clearTimeout(U),U=void 0,_=void 0,$.beginRequest(O,p??k.getModel?.()??"unknown",K,Z,!0),br($.snapshot()),q=await k.complete(K,[...v],C,I,{modelOverride:p,onTextDelta:o(oe=>{$.markTextDelta(oe),e.events?.onTextDelta?.(oe)},"onTextDelta"),onThinkingDelta:o(oe=>{$.markThinkingDelta(oe),e.events?.onThinkingDelta?.(oe)},"onThinkingDelta"),onThinkingEnd:o(oe=>{e.events?.onThinkingEnd?.(oe)},"onThinkingEnd"),signal:De},De);break}catch(oe){ne=oe instanceof Error?oe:new Error(String(oe))}finally{clearTimeout(Nn)}}if(V.action==="sanitize_thinking_and_retry"){let le=Q.executeRecovery(K,V);Er(V.action,le),K=le.messages,U&&clearTimeout(U),_&&clearTimeout(_),U=void 0,_=void 0,Z-=1,await Kt(V.delayMs,e.abortSignal);continue}if(V.action==="manual_continue"||Z>=x.maxRetries)throw Object.defineProperty(ne,"__kodaxRecoveredMessages",{value:K,enumerable:!1}),ne;let Pt=Q.executeRecovery(K,V);Er(V.action,Pt),K=Pt.messages,U&&clearTimeout(U),_&&clearTimeout(_),U=void 0,_=void 0,await Kt(V.delayMs,e.abortSignal);continue}finally{U&&clearTimeout(U),_&&clearTimeout(_)}}let Pe=0,Te=(q.textBlocks??[]).map(te=>te.text).join(""),Ne=q.thinkingBlocks?[...q.thinkingBlocks]:void 0;for(;q.stopReason==="max_tokens"&&(q.toolBlocks?.length??0)===0&&Te.trim().length>0&&Pe<3;){Pe+=1,e.events?.onTextDelta?.(`
|
|
122
122
|
|
|
123
123
|
[max_tokens reached, continuing...]
|
|
124
124
|
|
|
@@ -279,7 +279,7 @@ ${e.verification.changedPaths?.map(r=>`- ${r}`).join(`
|
|
|
279
279
|
`)}o(eg,"buildVerificationRepairPrompt");async function fd(e,t,n,r,i=n){if(n===void 0)return e;let s;try{return await Promise.race([e,new Promise((c,a)=>{s=setTimeout(()=>{r.childAbortControllers?.get(t)?.abort(),a(new Error(`workflow task ${t} timed out after ${i??n}ms`))},n)})])}finally{s&&clearTimeout(s)}}o(fd,"waitForChildPromise");function md(e,t){return{id:e,fanoutClass:"evidence-scan",objective:t.prompt,readOnly:t.readOnly??!1,evidenceRefs:t.evidenceRefs?[...t.evidenceRefs]:[],constraints:[],...t.modelHint?{modelHint:t.modelHint}:{},...t.isolation?{isolation:t.isolation}:{},...t.subagentType?{specialistName:t.subagentType}:{}}}o(md,"buildBundle");function Fo(e,t){if(e.cancelledChildren.includes(t))return{status:"stopped",snapStatus:"aborted",finalText:""};let n=e.results[0],r=Xh(n?.summary??"",n?.digest);return n?.status==="completed"?{status:"completed",snapStatus:"completed",finalText:r,...n.digest?{digest:n.digest}:{},...n.digestFailed?{digestFailed:!0}:{},...n.digestPending?{digestPending:!0}:{},...n.limitReached?{limitReached:!0}:{},...n.provider?{provider:n.provider}:{},...n.model?{model:n.model}:{}}:{status:"failed",snapStatus:"failed",finalText:r,...n?.limitReached?{limitReached:!0}:{},...n?.provider?{provider:n.provider}:{},...n?.model?{model:n.model}:{}}}o(Fo,"deriveTerminal");function gd(e){let{ctx:t,childOptions:n}=e,r=e.runChild??Is,i=e.queue??xe(),s=e.listChangedFiles??zh,c=e.now??(()=>Date.now()),a=0,l=e.generateId??(()=>`wf-child-${a+=1}`),u=new Map,m=new Set,d=new Map,f=o(()=>e.onTaskSummary!==void 0||m.size>0,"hasTaskSummaryObservers"),p=o((w,v)=>{try{e.onTaskSummary?.(w,v)}catch{}for(let T of m)try{T(w,v)}catch{}},"notifyTaskSummary");return{spawn:o(async w=>{let v=l(),T=md(v,w),j=Kh(w).verification,L=Yh(),I=w.isolation!=="worktree",A=$o(j)?Lo(t,s):Promise.resolve({paths:[]}),E=t.childProgressSnapshots,N=o(async k=>{let O=new AbortController;t.childAbortControllers?.set(v,O),E&&Ps(E,{childId:v,startedAt:c(),maxIterations:n.maxIterationsPerChild,parentRole:n.parentRole,readOnly:k.readOnly,specialistName:k.specialistName});let x={...n,parentOptions:{...n.parentOptions,events:Qh(n.parentOptions.events,L)},maxParallel:1,workflowChild:!0,...e.runId!==void 0?{workflowCorrelation:{workflowRunId:e.runId,childAgentId:v,itemId:`agent:${v}`}}:{},childActivityName:w.name,workflowDigestMode:f()?"async":"blocking",...f()?{onWorkflowChildDigest:o(D=>{p(D.childId,{...D.digest?{summary:D.digest}:{},summaryKind:D.digest?"digest":"digest-failed",...D.totalTokensUsed>0?{usage:{totalTokens:D.totalTokensUsed}}:{}})},"onWorkflowChildDigest")}:{},abortSignal:O.signal,snapshotUpdater:E?D=>Ns(E,v,D):void 0},G;try{return await A,G=await r([k],t,x),G}finally{if(t.childAbortControllers?.delete(v),E){let D=G?Fo(G,v):{snapStatus:"failed",finalText:""};$r(E,v,{status:D.snapStatus,finalText:D.finalText,endedAt:c()})}}},"runBundle"),S=N(T);return u.set(v,{name:w.name,input:w,bundle:T,promise:S,runBundle:N,verification:j,changedPathBaseline:A,mutationRecorder:L,acceptToolMutationEvidence:I,repairAttempts:0}),Vn(d,v,S),{taskId:v,name:w.name}},"spawn"),wait:o(async(w,v)=>{let T=u.get(w);if(!T)throw new Error(`unknown workflow task: ${w}`);let M=qh(v),j=Date.now(),L=o(async S=>{if(M===void 0)return fd(S,w,void 0,t);let k=Date.now()-j,O=M-k;if(O<=0)throw t.childAbortControllers?.get(w)?.abort(),new Error(`workflow task ${w} timed out after ${M}ms`);return fd(S,w,Math.max(1,Math.floor(O)),t,M)},"waitForAttempt"),I=await L(T.promise),A=I.totalTokensUsed,E=Fo(I,w),N=T.verification?ld({verification:T.verification,term:E,before:await T.changedPathBaseline,after:$o(T.verification)?await Lo(t,s):{paths:[]},mutationRecorder:T.mutationRecorder,ctx:t,acceptToolMutationEvidence:T.acceptToolMutationEvidence}):void 0;for(E.limitReached===!0&&N===void 0&&E.status==="completed"&&(N=ud(),E={...E,status:"completed_unverified",snapStatus:"completed",finalText:Uo(E.finalText,N)});Zh({entry:T,term:E,verification:N});){T.repairAttempts+=1;let S=md(w,{...T.input,prompt:eg({originalPrompt:T.input.prompt,previousFinalText:E.finalText,verification:N,attempt:T.repairAttempts})});T.promise=T.runBundle(S),Vn(d,w,T.promise),I=await L(T.promise),A+=I.totalTokensUsed,E=Fo(I,w),N=T.verification?ld({verification:T.verification,term:E,before:await T.changedPathBaseline,after:$o(T.verification)?await Lo(t,s):{paths:[]},mutationRecorder:T.mutationRecorder,ctx:t,acceptToolMutationEvidence:T.acceptToolMutationEvidence}):void 0,E.limitReached===!0&&N===void 0&&E.status==="completed"&&(N=ud(),E={...E,status:"completed_unverified",snapStatus:"completed",finalText:Uo(E.finalText,N)})}if(N!==void 0&&!N.ok&&E.status==="completed"){let S=N.enforcement==="warn";E={...E,status:S?"completed_unverified":"failed",snapStatus:S?"completed":"failed",finalText:Uo(E.finalText,N)}}return $r(t.childProgressSnapshots,w,{status:E.snapStatus,finalText:E.finalText,endedAt:c()}),{taskId:w,name:T.name,status:E.status,finalText:E.finalText,...E.digest?{digest:E.digest}:{},...E.digestFailed?{digestFailed:!0}:{},...E.digestPending?{digestPending:!0}:{},...N!==void 0?{verification:N}:{},...E.limitReached?{limitReached:!0}:{},...E.provider?{provider:E.provider}:{},...E.model?{model:E.model}:{},usage:{totalTokens:A}}},"wait"),output:o(async w=>{let v=u.get(w)?.name??w,T=t.childProgressSnapshots?.get(w);if(!T)return{taskId:w,name:v,status:"running"};let M=T.status==="aborted"?"stopped":T.status;return T.finalText!==void 0?{taskId:w,name:v,status:M,lastText:T.finalText}:{taskId:w,name:v,status:M}},"output"),send:o(async(w,v)=>{wi({to:w,priority:"user",mode:"prompt",content:v,registry:d,queue:i})},"send"),stop:o(async w=>{t.childAbortControllers?.get(w)?.abort()},"stop"),subscribeTaskSummaryUpdates:o(w=>(m.add(w),()=>{m.delete(w)}),"subscribeTaskSummaryUpdates")}}o(gd,"createCodingWorkflowBackend");import{mkdirSync as tg,appendFileSync as ng,writeFileSync as Cn}from"node:fs";import{join as ot}from"node:path";function Mn(e){let t=e.replace(/[^a-zA-Z0-9._-]/g,"_").slice(0,120);return t.length>0?t:"artifact"}o(Mn,"safeWorkflowArtifactName");function wd(e,t={}){let n=t.now??(()=>Date.now()),r=ot(e,"artifacts");tg(r,{recursive:!0});let i=ot(e,"events.jsonl");return{runDir:e,onEvent:o(s=>{ng(i,`${JSON.stringify({...s,ts:n()})}
|
|
280
280
|
`,"utf8")},"onEvent"),writeArtifact:o((s,c)=>{let a=ot(r,`${Mn(s)}.json`);return Cn(a,JSON.stringify(c,null,2),"utf8"),{name:s,path:a}},"writeArtifact"),writeScriptSnapshot:o(s=>{let c=ot(e,"script.js");if(Cn(c,s.source,"utf8"),!s.manifest)return{scriptPath:c};let a=ot(e,"manifest.json");return Cn(a,`${JSON.stringify(s.manifest,null,2)}
|
|
281
281
|
`,"utf8"),{scriptPath:c,manifestPath:a}},"writeScriptSnapshot"),writeRunJson:o(s=>{let c=Wt(s.processMetadata?.hostMetadata),a={runId:s.state.runId,workflow:s.meta.name,status:s.state.status,totalSpawned:s.state.totalSpawned,artifacts:s.state.artifacts.map(l=>l.name),eventCount:s.state.events.length,startedAt:s.startedAt,endedAt:s.endedAt,args:s.args,...s.resultSummary!==void 0?{resultSummary:s.resultSummary}:{},...s.processMetadata?.displayName!==void 0?{displayName:s.processMetadata.displayName}:{},...s.processMetadata?.goal!==void 0?{goal:s.processMetadata.goal}:{},...s.processMetadata?.source!==void 0?{source:s.processMetadata.source}:{},...s.processMetadata?.savedWorkflowName!==void 0?{savedWorkflowName:s.processMetadata.savedWorkflowName}:{},...s.processMetadata?.sourceRunId!==void 0?{sourceRunId:s.processMetadata.sourceRunId}:{},...s.processMetadata?.sourceWorkflowName!==void 0?{sourceWorkflowName:s.processMetadata.sourceWorkflowName}:{},...s.processMetadata?.revisionOf!==void 0?{revisionOf:s.processMetadata.revisionOf}:{},...c!==void 0?{hostMetadata:c}:{},...s.scriptSnapshot?{scriptSnapshotPath:s.scriptSnapshot.scriptPath,...s.scriptSnapshot.manifestPath?{manifestSnapshotPath:s.scriptSnapshot.manifestPath}:{}}:{}};Cn(ot(e,"run.json"),`${JSON.stringify(a,null,2)}
|
|
282
|
-
`,"utf8")},"writeRunJson")}}o(wd,"createRunGraphWriter");import{dirname as fg}from"node:path";import{execFile as rg}from"node:child_process";import{promisify as og}from"node:util";import{statSync as ig}from"node:fs";import{join as sg}from"node:path";var ag=og(rg);function Wo(e){return sg(e,"worktrees")}o(Wo,"workflowWorktreeBaseDir");var cg=360*60*1e3;function kd(e,t){return ag("git",[...e],{cwd:t}).then(n=>n.stdout)}o(kd,"defaultRunGit");function dg(e){return ig(e).mtimeMs}o(dg,"defaultMtimeMs");function lg(e){let t=[],n,r,i=o(()=>{n&&t.push(r?{path:n,branch:r}:{path:n}),n=void 0,r=void 0},"flush");for(let s of e.split(/\r?\n/))s.startsWith("worktree ")?(i(),n=s.slice(9).trim()):s.startsWith("branch ")&&(r=s.slice(7).trim().replace(/^refs\/heads\//,""));return i(),t}o(lg,"parseWorktreeList");function yd(e){return e.replace(/\\/g,"/").replace(/\/+$/,"")}o(yd,"normalize");function vd(e,t){let n=yd(e),r=yd(t);return n===r||n.startsWith(`${r}/`)}o(vd,"isUnder");async function ug(e,t,n){try{let i=(await t(["status","--porcelain"],e.path)).split(/\r?\n/).filter(a=>a.trim().length>0).length,s=await t(["rev-list","--count","HEAD","--not","--remotes"],e.path),c=Number.parseInt(s.trim(),10)||0;return i>0||c>0}catch(r){return n.push(`retain ${e.path}: cannot verify worktree cleanliness: ${r instanceof Error?r.message:String(r)}`),!0}}o(ug,"worktreeHasChanges");async function Td(e,t,n,r,i){if(await ug(e,n,i)){i.push(`retain ${e.path}: worktree has unmerged changes`);return}try{await n(["worktree","remove",e.path,"--force"],t),r.push(e.path)}catch(s){i.push(`remove ${e.path}: ${s instanceof Error?s.message:String(s)}`);return}if(e.branch)try{await n(["branch","-D",e.branch],t)}catch{}}o(Td,"removeWorktree");async function bd(e,t,n){try{let r=await t(["worktree","list","--porcelain"],e);return lg(r)}catch(r){n.push(`list worktrees: ${r instanceof Error?r.message:String(r)}`);return}}o(bd,"listWorktrees");async function Bo(e,t,n){try{await t(["worktree","prune"],e)}catch(r){n.push(`prune: ${r instanceof Error?r.message:String(r)}`)}}o(Bo,"prune");async function Ed(e,t={}){let n=[],r=[];if(!e.gitRoot)return{removed:r,warnings:n};let i=t.runGit??kd,s=await bd(e.gitRoot,i,n);if(!s)return{removed:r,warnings:n};for(let c of s)vd(c.path,e.baseDir)&&await Td(c,e.gitRoot,i,r,n);return r.length>0&&await Bo(e.gitRoot,i,n),{removed:r,warnings:n}}o(Ed,"sweepWorkflowRunWorktrees");async function xd(e,t={}){let n=[],r=[];if(!e.gitRoot)return{removed:r,warnings:n};let i=t.runGit??kd,s=t.mtimeMs??dg,c=t.now??(()=>Date.now()),a=e.maxAgeMs??cg;await Bo(e.gitRoot,i,n);let l=await bd(e.gitRoot,i,n);if(!l)return{removed:r,warnings:n};for(let u of l){if(!vd(u.path,e.workflowRunsRoot))continue;let m;try{m=c()-s(u.path)}catch{continue}m>=a&&await Td(u,e.gitRoot,i,r,n)}return r.length>0&&await Bo(e.gitRoot,i,n),{removed:r,warnings:n}}o(xd,"pruneStaleWorkflowWorktrees");var mg=200,Ho={maxAgents:64,maxConcurrency:16,tokenBudget:2e5};function pg(e,t){let n=e.meta,r=_t(n,t);return{name:n.name,description:n.description,phases:n.phases??[],...n.plannedAgents!==void 0?{plannedAgents:n.plannedAgents}:{},maxAgents:r.maxAgents??null,maxConcurrency:r.maxConcurrency??null,tokenBudget:r.tokenBudget??null,writesFiles:n.readOnly!==!0}}o(pg,"buildApprovalSummary");function Rd(e,t){if(e!==void 0)return!Number.isInteger(e)||e<=0?1:Math.min(e,t)}o(Rd,"clampLimit");function Go(e,t,n){let r=Rd(e,n),i=Rd(t,n);return r===void 0?i:i===void 0?r:Math.min(r,i)}o(Go,"clampEffectiveLimit");function _t(e,t){let n=Go(e.maxAgents,t?.maxAgents,Ho.maxAgents),r=Go(e.maxConcurrency,t?.maxConcurrency,Ho.maxConcurrency),i=Go(e.tokenBudget,t?.tokenBudget,Ho.tokenBudget);return{...n!==void 0?{maxAgents:n}:{},...r!==void 0?{maxConcurrency:r}:{},...i!==void 0?{tokenBudget:i}:{}}}o(_t,"clampWorkflowLimits");function Sd(e){if(typeof e=="string"&&e.trim().length>0)return e;if(typeof e!="object"||e===null)return;let t=e,n=t.synthesis;if(typeof n=="string"&&n.trim().length>0)return n;if(typeof n=="object"&&n!==null){let r=n.text;if(typeof r=="string"&&r.trim().length>0)return r}for(let r of["summary","report","text","result"]){let i=t[r];if(typeof i=="string"&&i.trim().length>0)return i}}o(Sd,"workflowResultSummary");async function qo(e){let t=_t(e.module.meta,e.hostPolicy),n=pg(e.module,e.hostPolicy);if(e.approval&&!await e.approval(n))return{kind:"denied",summary:n};let r=e.now??(()=>Date.now()),i=e.ctx?.executionCwd??e.ctx?.gitRoot;await xd({workflowRunsRoot:fg(e.runDir),gitRoot:i},{now:r,...e.worktreeSweepDeps});let s=wd(e.runDir,{now:r}),c=e.onWorkflowProcessEvent?Ye({runId:e.runId,workflowName:e.module.meta.name,displayName:e.processMetadata?.displayName??e.module.meta.name,...e.processMetadata?.goal!==void 0?{goal:e.processMetadata.goal}:{},...e.processMetadata?.source!==void 0?{source:e.processMetadata.source}:{},...e.processMetadata?.savedWorkflowName!==void 0?{savedWorkflowName:e.processMetadata.savedWorkflowName}:{},...e.processMetadata?.sourceRunId!==void 0?{sourceRunId:e.processMetadata.sourceRunId}:{},...e.processMetadata?.sourceWorkflowName!==void 0?{sourceWorkflowName:e.processMetadata.sourceWorkflowName}:{},...e.processMetadata?.revisionOf!==void 0?{revisionOf:e.processMetadata.revisionOf}:{},...e.processMetadata?.hostMetadata!==void 0?{hostMetadata:{...e.processMetadata.hostMetadata}}:{},...e.module.meta.phases!==void 0?{phases:e.module.meta.phases}:{},...t.maxAgents!==void 0?{maxAgents:t.maxAgents}:{},...e.module.meta.plannedAgents!==void 0?{plannedAgents:e.module.meta.plannedAgents}:{},...t.tokenBudget!==void 0?{tokenBudget:t.tokenBudget}:{},now:o(()=>new Date(r()).toISOString(),"now")}):void 0,a=e.scriptSnapshot?s.writeScriptSnapshot(e.scriptSnapshot):void 0,l=e.backend??hg(e),m={...e.beforeSpawn?gg(l,e.beforeSpawn):l,writeArtifact:o(async(h,g)=>s.writeArtifact(h,g),"writeArtifact")},d=r(),f;try{f=await Ui({runId:e.runId,args:e.args,backend:m,limits:t,...e.signal?{signal:e.signal}:{},summarizeResult:Sd,onEvent:o(h=>{s.onEvent(h),c&&e.onWorkflowProcessEvent?.(c.applyEvent(h)),e.onEvent?.(h)},"onEvent")},h=>e.module.run(h,e.args))}finally{await Ed({baseDir:Wo(e.runDir),gitRoot:i},{now:r,...e.worktreeSweepDeps})}let p=f.ok?Sd(f.result):void 0;return s.writeRunJson({meta:e.module.meta,args:e.args,state:f.state,startedAt:d,endedAt:r(),...a?{scriptSnapshot:a}:{},...p!==void 0?{resultSummary:p}:{},...e.processMetadata!==void 0?{processMetadata:e.processMetadata}:{}}),f.ok?{kind:"completed",result:f.result,state:f.state}:{kind:"failed",error:f.error,state:f.state}}o(qo,"runWorkflowModule");function hg(e){if(!e.ctx||!e.childOptions)throw new Error("runWorkflowModule requires either a backend or ctx + childOptions");return gd({ctx:e.ctx,childOptions:e.childOptions,runId:e.runId})}o(hg,"buildBackend");function gg(e,t){return{...e,spawn:o(async n=>(await t(),e.spawn(n)),"spawn")}}o(gg,"withBeforeSpawn");async function _d(e){let t={...Jt({options:e.options,runtime:e.options.extensionRuntime,managedProtocolPayloadRef:{current:void 0}}),workflowWorktreeBaseDir:Wo(e.runDir)},n={maxIterationsPerChild:mg,parentRole:"worker",parentHarness:"tool-dispatch",parentOptions:{provider:e.options.provider,model:e.options.model,reasoningMode:e.options.reasoningMode,extensionRuntime:e.options.extensionRuntime,events:e.options.events},...e.options.guardrails?{guardrails:e.options.guardrails}:{},...t.planModeBlockCheck?{planModeBlockCheck:t.planModeBlockCheck}:{}},r=e.onWorkflowProcessEvent||e.options.events?.onWorkflowProcessEvent?i=>{e.onWorkflowProcessEvent?.(i),e.options.events?.onWorkflowProcessEvent?.(i)}:void 0;return qo({module:e.module,args:e.args,runId:e.runId,runDir:e.runDir,ctx:t,childOptions:n,...e.approval?{approval:e.approval}:{},...e.signal?{signal:e.signal}:{},...e.onEvent?{onEvent:e.onEvent}:{},...r?{onWorkflowProcessEvent:r}:{},...e.options.workflowHostPolicy?{hostPolicy:e.options.workflowHostPolicy}:{},...e.now?{now:e.now}:{},...e.scriptSnapshot?{scriptSnapshot:e.scriptSnapshot}:{},...e.processMetadata?{processMetadata:e.processMetadata}:{},...e.beforeSpawn?{beforeSpawn:e.beforeSpawn}:{}})}o(_d,"runWorkflowFromOptions");import{mkdir as Id,readdir as wg,readFile as At,rename as yg,unlink as Xo,writeFile as zo}from"node:fs/promises";import{basename as kg,dirname as Ko,join as Ge}from"node:path";import{pathToFileURL as vg}from"node:url";var Pd=[".workflow.json",".ts",".mjs",".js"],Ct="0.7.49";function Nd(){return"0.7.55"}o(Nd,"currentKodaxWorkflowVersion");function Tg(e){return e.endsWith(".workflow.json")?"capability-generated":"trusted-local"}o(Tg,"executionForPath");function bg(e){let t=Pd.find(n=>e.endsWith(n));return t?e.slice(0,-t.length):void 0}o(bg,"stripWorkflowSuffix");function Yo(e){let t=e.trim().replace(/[^a-zA-Z0-9._-]+/g,"-").replace(/^[.-]+|[.-]+$/g,"").slice(0,80);if(!t||t==="."||t==="..")throw new Error("workflow name must contain at least one safe filename character");return t}o(Yo,"safeWorkflowName");function Jo(e){return typeof e=="object"&&e!==null}o(Jo,"isRecord");function Ad(e,t){let n=e[t];if(typeof n!="string"||n.length===0)throw new Error(`workflow run.json missing ${t}`);return n}o(Ad,"readRequiredString");async function Cd(e,t){if(!e)return[];let n;try{n=await wg(e)}catch{return[]}let r=new Map;for(let i of Pd)for(let s of n){if(!s.endsWith(i))continue;let c=bg(s);if(!c||c.length===0||r.has(c))continue;let a=Ge(e,s);r.set(c,{name:c,path:a,source:t,execution:Tg(a)})}return[...r.values()]}o(Cd,"scanDir");async function Mt(e){let t=await Cd(e.personal,"personal"),n=await Cd(e.project,"project"),r=new Map;for(let i of t)r.set(i.name,i);for(let i of n)r.set(i.name,i);return[...r.values()].sort((i,s)=>i.name.localeCompare(s.name))}o(Mt,"discoverSavedWorkflows");function Eg(e){return typeof e=="object"&&e!==null&&"meta"in e&&"run"in e&&typeof e.run=="function"}o(Eg,"isWorkflowModule");function xg(e){let t=e.default;if(Eg(t))return t;let n=typeof t=="function"?t:e.run,r=e.workflow??e.meta;if(typeof n=="function"&&typeof r=="object"&&r!==null&&"name"in r)return{meta:r,run:n};throw new Error("invalid workflow module: expected a `{ meta, run }` default export, or `export const workflow = {...}` + a default run function")}o(xg,"normalizeWorkflowModule");function Rg(e){let t=JSON.parse(e);if(!Jo(t))throw new Error("generated workflow file must be an object");if(t.format!==void 0&&t.format!=="kodax.workflow")throw new Error(`unsupported workflow capsule format: ${String(t.format)}`);if(t.format==="kodax.workflow"){let i=Jn(t);return{manifest:i.manifest,source:i.source,capsule:i,legacy:!1}}let n=t.source;if(typeof n!="string"||n.trim().length===0)throw new Error("generated workflow file source must be a non-empty string");let r=ge(t.manifest);return{manifest:r,source:n,capsule:Le({minKodaxVersion:Ct,manifest:r,source:n}),legacy:!0}}o(Rg,"parseGeneratedWorkflowFile");async function Qo(e){let t=Rg(await At(e,"utf8"));return t.capsule??Le({minKodaxVersion:Ct,manifest:t.manifest,source:t.source})}o(Qo,"loadSavedWorkflowCapsule");async function ZS(e){if(e.endsWith(".workflow.json"))return Qn(await Qo(e));let t=await import(vg(e).href);return xg(t)}o(ZS,"loadSavedWorkflow");function Zo(e){if(e.mayUseWorktree===!0)return{environment:["git-repo","worktree-capable"]}}o(Zo,"deriveRequirements");function On(e,t){ut(t,{filename:`${e.name}.workflow.js`,requireAsyncRun:!0})}o(On,"assertGeneratedCapsuleSource");async function Sg(e){let t=Yo(e.name),n=ge(e.manifest);On(n,e.source);let r=e.requires??Zo(n),i=Le({minKodaxVersion:e.minKodaxVersion??Ct,manifest:n,source:e.source,...e.intent!==void 0?{intent:e.intent}:{},...e.inputs!==void 0?{inputs:e.inputs}:{},...r!==void 0?{requires:r}:{},...e.provenance!==void 0?{provenance:e.provenance}:{}});await Id(e.dir,{recursive:!0});let s=Ge(e.dir,`${t}.workflow.json`);return await zo(s,`${JSON.stringify(i,null,2)}
|
|
282
|
+
`,"utf8")},"writeRunJson")}}o(wd,"createRunGraphWriter");import{dirname as fg}from"node:path";import{execFile as rg}from"node:child_process";import{promisify as og}from"node:util";import{statSync as ig}from"node:fs";import{join as sg}from"node:path";var ag=og(rg);function Wo(e){return sg(e,"worktrees")}o(Wo,"workflowWorktreeBaseDir");var cg=360*60*1e3;function kd(e,t){return ag("git",[...e],{cwd:t}).then(n=>n.stdout)}o(kd,"defaultRunGit");function dg(e){return ig(e).mtimeMs}o(dg,"defaultMtimeMs");function lg(e){let t=[],n,r,i=o(()=>{n&&t.push(r?{path:n,branch:r}:{path:n}),n=void 0,r=void 0},"flush");for(let s of e.split(/\r?\n/))s.startsWith("worktree ")?(i(),n=s.slice(9).trim()):s.startsWith("branch ")&&(r=s.slice(7).trim().replace(/^refs\/heads\//,""));return i(),t}o(lg,"parseWorktreeList");function yd(e){return e.replace(/\\/g,"/").replace(/\/+$/,"")}o(yd,"normalize");function vd(e,t){let n=yd(e),r=yd(t);return n===r||n.startsWith(`${r}/`)}o(vd,"isUnder");async function ug(e,t,n){try{let i=(await t(["status","--porcelain"],e.path)).split(/\r?\n/).filter(a=>a.trim().length>0).length,s=await t(["rev-list","--count","HEAD","--not","--remotes"],e.path),c=Number.parseInt(s.trim(),10)||0;return i>0||c>0}catch(r){return n.push(`retain ${e.path}: cannot verify worktree cleanliness: ${r instanceof Error?r.message:String(r)}`),!0}}o(ug,"worktreeHasChanges");async function Td(e,t,n,r,i){if(await ug(e,n,i)){i.push(`retain ${e.path}: worktree has unmerged changes`);return}try{await n(["worktree","remove",e.path,"--force"],t),r.push(e.path)}catch(s){i.push(`remove ${e.path}: ${s instanceof Error?s.message:String(s)}`);return}if(e.branch)try{await n(["branch","-D",e.branch],t)}catch{}}o(Td,"removeWorktree");async function bd(e,t,n){try{let r=await t(["worktree","list","--porcelain"],e);return lg(r)}catch(r){n.push(`list worktrees: ${r instanceof Error?r.message:String(r)}`);return}}o(bd,"listWorktrees");async function Bo(e,t,n){try{await t(["worktree","prune"],e)}catch(r){n.push(`prune: ${r instanceof Error?r.message:String(r)}`)}}o(Bo,"prune");async function Ed(e,t={}){let n=[],r=[];if(!e.gitRoot)return{removed:r,warnings:n};let i=t.runGit??kd,s=await bd(e.gitRoot,i,n);if(!s)return{removed:r,warnings:n};for(let c of s)vd(c.path,e.baseDir)&&await Td(c,e.gitRoot,i,r,n);return r.length>0&&await Bo(e.gitRoot,i,n),{removed:r,warnings:n}}o(Ed,"sweepWorkflowRunWorktrees");async function xd(e,t={}){let n=[],r=[];if(!e.gitRoot)return{removed:r,warnings:n};let i=t.runGit??kd,s=t.mtimeMs??dg,c=t.now??(()=>Date.now()),a=e.maxAgeMs??cg;await Bo(e.gitRoot,i,n);let l=await bd(e.gitRoot,i,n);if(!l)return{removed:r,warnings:n};for(let u of l){if(!vd(u.path,e.workflowRunsRoot))continue;let m;try{m=c()-s(u.path)}catch{continue}m>=a&&await Td(u,e.gitRoot,i,r,n)}return r.length>0&&await Bo(e.gitRoot,i,n),{removed:r,warnings:n}}o(xd,"pruneStaleWorkflowWorktrees");var mg=200,Ho={maxAgents:64,maxConcurrency:16,tokenBudget:2e5};function pg(e,t){let n=e.meta,r=_t(n,t);return{name:n.name,description:n.description,phases:n.phases??[],...n.plannedAgents!==void 0?{plannedAgents:n.plannedAgents}:{},maxAgents:r.maxAgents??null,maxConcurrency:r.maxConcurrency??null,tokenBudget:r.tokenBudget??null,writesFiles:n.readOnly!==!0}}o(pg,"buildApprovalSummary");function Rd(e,t){if(e!==void 0)return!Number.isInteger(e)||e<=0?1:Math.min(e,t)}o(Rd,"clampLimit");function Go(e,t,n){let r=Rd(e,n),i=Rd(t,n);return r===void 0?i:i===void 0?r:Math.min(r,i)}o(Go,"clampEffectiveLimit");function _t(e,t){let n=Go(e.maxAgents,t?.maxAgents,Ho.maxAgents),r=Go(e.maxConcurrency,t?.maxConcurrency,Ho.maxConcurrency),i=Go(e.tokenBudget,t?.tokenBudget,Ho.tokenBudget);return{...n!==void 0?{maxAgents:n}:{},...r!==void 0?{maxConcurrency:r}:{},...i!==void 0?{tokenBudget:i}:{}}}o(_t,"clampWorkflowLimits");function Sd(e){if(typeof e=="string"&&e.trim().length>0)return e;if(typeof e!="object"||e===null)return;let t=e,n=t.synthesis;if(typeof n=="string"&&n.trim().length>0)return n;if(typeof n=="object"&&n!==null){let r=n.text;if(typeof r=="string"&&r.trim().length>0)return r}for(let r of["summary","report","text","result"]){let i=t[r];if(typeof i=="string"&&i.trim().length>0)return i}}o(Sd,"workflowResultSummary");async function qo(e){let t=_t(e.module.meta,e.hostPolicy),n=pg(e.module,e.hostPolicy);if(e.approval&&!await e.approval(n))return{kind:"denied",summary:n};let r=e.now??(()=>Date.now()),i=e.ctx?.executionCwd??e.ctx?.gitRoot;await xd({workflowRunsRoot:fg(e.runDir),gitRoot:i},{now:r,...e.worktreeSweepDeps});let s=wd(e.runDir,{now:r}),c=e.onWorkflowProcessEvent?Ye({runId:e.runId,workflowName:e.module.meta.name,displayName:e.processMetadata?.displayName??e.module.meta.name,...e.processMetadata?.goal!==void 0?{goal:e.processMetadata.goal}:{},...e.processMetadata?.source!==void 0?{source:e.processMetadata.source}:{},...e.processMetadata?.savedWorkflowName!==void 0?{savedWorkflowName:e.processMetadata.savedWorkflowName}:{},...e.processMetadata?.sourceRunId!==void 0?{sourceRunId:e.processMetadata.sourceRunId}:{},...e.processMetadata?.sourceWorkflowName!==void 0?{sourceWorkflowName:e.processMetadata.sourceWorkflowName}:{},...e.processMetadata?.revisionOf!==void 0?{revisionOf:e.processMetadata.revisionOf}:{},...e.processMetadata?.hostMetadata!==void 0?{hostMetadata:{...e.processMetadata.hostMetadata}}:{},...e.module.meta.phases!==void 0?{phases:e.module.meta.phases}:{},...t.maxAgents!==void 0?{maxAgents:t.maxAgents}:{},...e.module.meta.plannedAgents!==void 0?{plannedAgents:e.module.meta.plannedAgents}:{},...t.tokenBudget!==void 0?{tokenBudget:t.tokenBudget}:{},now:o(()=>new Date(r()).toISOString(),"now")}):void 0,a=e.scriptSnapshot?s.writeScriptSnapshot(e.scriptSnapshot):void 0,l=e.backend??hg(e),m={...e.beforeSpawn?gg(l,e.beforeSpawn):l,writeArtifact:o(async(h,g)=>s.writeArtifact(h,g),"writeArtifact")},d=r(),f;try{f=await Ui({runId:e.runId,args:e.args,backend:m,limits:t,...e.signal?{signal:e.signal}:{},summarizeResult:Sd,onEvent:o(h=>{s.onEvent(h),c&&e.onWorkflowProcessEvent?.(c.applyEvent(h)),e.onEvent?.(h)},"onEvent")},h=>e.module.run(h,e.args))}finally{await Ed({baseDir:Wo(e.runDir),gitRoot:i},{now:r,...e.worktreeSweepDeps})}let p=f.ok?Sd(f.result):void 0;return s.writeRunJson({meta:e.module.meta,args:e.args,state:f.state,startedAt:d,endedAt:r(),...a?{scriptSnapshot:a}:{},...p!==void 0?{resultSummary:p}:{},...e.processMetadata!==void 0?{processMetadata:e.processMetadata}:{}}),f.ok?{kind:"completed",result:f.result,state:f.state}:{kind:"failed",error:f.error,state:f.state}}o(qo,"runWorkflowModule");function hg(e){if(!e.ctx||!e.childOptions)throw new Error("runWorkflowModule requires either a backend or ctx + childOptions");return gd({ctx:e.ctx,childOptions:e.childOptions,runId:e.runId})}o(hg,"buildBackend");function gg(e,t){return{...e,spawn:o(async n=>(await t(),e.spawn(n)),"spawn")}}o(gg,"withBeforeSpawn");async function _d(e){let t={...Jt({options:e.options,runtime:e.options.extensionRuntime,managedProtocolPayloadRef:{current:void 0}}),workflowWorktreeBaseDir:Wo(e.runDir)},n={maxIterationsPerChild:mg,parentRole:"worker",parentHarness:"tool-dispatch",parentOptions:{provider:e.options.provider,model:e.options.model,reasoningMode:e.options.reasoningMode,extensionRuntime:e.options.extensionRuntime,events:e.options.events},...e.options.guardrails?{guardrails:e.options.guardrails}:{},...t.planModeBlockCheck?{planModeBlockCheck:t.planModeBlockCheck}:{}},r=e.onWorkflowProcessEvent||e.options.events?.onWorkflowProcessEvent?i=>{e.onWorkflowProcessEvent?.(i),e.options.events?.onWorkflowProcessEvent?.(i)}:void 0;return qo({module:e.module,args:e.args,runId:e.runId,runDir:e.runDir,ctx:t,childOptions:n,...e.approval?{approval:e.approval}:{},...e.signal?{signal:e.signal}:{},...e.onEvent?{onEvent:e.onEvent}:{},...r?{onWorkflowProcessEvent:r}:{},...e.options.workflowHostPolicy?{hostPolicy:e.options.workflowHostPolicy}:{},...e.now?{now:e.now}:{},...e.scriptSnapshot?{scriptSnapshot:e.scriptSnapshot}:{},...e.processMetadata?{processMetadata:e.processMetadata}:{},...e.beforeSpawn?{beforeSpawn:e.beforeSpawn}:{}})}o(_d,"runWorkflowFromOptions");import{mkdir as Id,readdir as wg,readFile as At,rename as yg,unlink as Xo,writeFile as zo}from"node:fs/promises";import{basename as kg,dirname as Ko,join as Ge}from"node:path";import{pathToFileURL as vg}from"node:url";var Pd=[".workflow.json",".ts",".mjs",".js"],Ct="0.7.49";function Nd(){return"0.7.56"}o(Nd,"currentKodaxWorkflowVersion");function Tg(e){return e.endsWith(".workflow.json")?"capability-generated":"trusted-local"}o(Tg,"executionForPath");function bg(e){let t=Pd.find(n=>e.endsWith(n));return t?e.slice(0,-t.length):void 0}o(bg,"stripWorkflowSuffix");function Yo(e){let t=e.trim().replace(/[^a-zA-Z0-9._-]+/g,"-").replace(/^[.-]+|[.-]+$/g,"").slice(0,80);if(!t||t==="."||t==="..")throw new Error("workflow name must contain at least one safe filename character");return t}o(Yo,"safeWorkflowName");function Jo(e){return typeof e=="object"&&e!==null}o(Jo,"isRecord");function Ad(e,t){let n=e[t];if(typeof n!="string"||n.length===0)throw new Error(`workflow run.json missing ${t}`);return n}o(Ad,"readRequiredString");async function Cd(e,t){if(!e)return[];let n;try{n=await wg(e)}catch{return[]}let r=new Map;for(let i of Pd)for(let s of n){if(!s.endsWith(i))continue;let c=bg(s);if(!c||c.length===0||r.has(c))continue;let a=Ge(e,s);r.set(c,{name:c,path:a,source:t,execution:Tg(a)})}return[...r.values()]}o(Cd,"scanDir");async function Mt(e){let t=await Cd(e.personal,"personal"),n=await Cd(e.project,"project"),r=new Map;for(let i of t)r.set(i.name,i);for(let i of n)r.set(i.name,i);return[...r.values()].sort((i,s)=>i.name.localeCompare(s.name))}o(Mt,"discoverSavedWorkflows");function Eg(e){return typeof e=="object"&&e!==null&&"meta"in e&&"run"in e&&typeof e.run=="function"}o(Eg,"isWorkflowModule");function xg(e){let t=e.default;if(Eg(t))return t;let n=typeof t=="function"?t:e.run,r=e.workflow??e.meta;if(typeof n=="function"&&typeof r=="object"&&r!==null&&"name"in r)return{meta:r,run:n};throw new Error("invalid workflow module: expected a `{ meta, run }` default export, or `export const workflow = {...}` + a default run function")}o(xg,"normalizeWorkflowModule");function Rg(e){let t=JSON.parse(e);if(!Jo(t))throw new Error("generated workflow file must be an object");if(t.format!==void 0&&t.format!=="kodax.workflow")throw new Error(`unsupported workflow capsule format: ${String(t.format)}`);if(t.format==="kodax.workflow"){let i=Jn(t);return{manifest:i.manifest,source:i.source,capsule:i,legacy:!1}}let n=t.source;if(typeof n!="string"||n.trim().length===0)throw new Error("generated workflow file source must be a non-empty string");let r=ge(t.manifest);return{manifest:r,source:n,capsule:Le({minKodaxVersion:Ct,manifest:r,source:n}),legacy:!0}}o(Rg,"parseGeneratedWorkflowFile");async function Qo(e){let t=Rg(await At(e,"utf8"));return t.capsule??Le({minKodaxVersion:Ct,manifest:t.manifest,source:t.source})}o(Qo,"loadSavedWorkflowCapsule");async function ZS(e){if(e.endsWith(".workflow.json"))return Qn(await Qo(e));let t=await import(vg(e).href);return xg(t)}o(ZS,"loadSavedWorkflow");function Zo(e){if(e.mayUseWorktree===!0)return{environment:["git-repo","worktree-capable"]}}o(Zo,"deriveRequirements");function On(e,t){ut(t,{filename:`${e.name}.workflow.js`,requireAsyncRun:!0})}o(On,"assertGeneratedCapsuleSource");async function Sg(e){let t=Yo(e.name),n=ge(e.manifest);On(n,e.source);let r=e.requires??Zo(n),i=Le({minKodaxVersion:e.minKodaxVersion??Ct,manifest:n,source:e.source,...e.intent!==void 0?{intent:e.intent}:{},...e.inputs!==void 0?{inputs:e.inputs}:{},...r!==void 0?{requires:r}:{},...e.provenance!==void 0?{provenance:e.provenance}:{}});await Id(e.dir,{recursive:!0});let s=Ge(e.dir,`${t}.workflow.json`);return await zo(s,`${JSON.stringify(i,null,2)}
|
|
283
283
|
`,"utf8"),{name:t,path:s,source:"project",execution:"capability-generated"}}o(Sg,"saveGeneratedWorkflow");async function Md(e,t){await zo(e,`${JSON.stringify(t,null,2)}
|
|
284
284
|
`,"utf8")}o(Md,"writeCapsuleFile");async function _g(e){try{return await At(e,"utf8"),!0}catch{return!1}}o(_g,"fileExists");async function Dd(e){let t=(await Mt(e.dirs)).filter(a=>a.name===e.name).filter(a=>e.source===void 0||a.source===e.source);if(t.length===0)throw new Error(`saved workflow not found: ${e.name}`);if(t.length>1)throw new Error(`ambiguous saved workflow name: ${e.name}`);let n=t[0];if(!n.path.endsWith(".workflow.json"))throw new Error("only generated workflow capsules can be renamed");let r=Yo(e.newName),i=Ge(Ko(n.path),`${r}.workflow.json`);if(i!==n.path&&await _g(i))throw new Error(`saved workflow already exists: ${r}`);let s=await Qo(n.path);On(s.manifest,s.source);let c=Le({minKodaxVersion:s.minKodaxVersion,manifest:{...s.manifest,name:r},source:s.source,...s.intent!==void 0?{intent:s.intent}:{},...s.inputs!==void 0?{inputs:s.inputs}:{},...s.requires!==void 0?{requires:s.requires}:{},...s.provenance!==void 0?{provenance:s.provenance}:{}});return await zo(i,`${JSON.stringify(c,null,2)}
|
|
285
285
|
`,"utf8"),i!==n.path&&await Xo(n.path),{name:r,path:i,source:n.source,execution:"capability-generated"}}o(Dd,"renameSavedWorkflow");async function $d(e){let t=(await Mt(e.dirs)).filter(r=>r.name===e.name).filter(r=>e.source===void 0||r.source===e.source);if(t.length===0)throw new Error(`saved workflow not found: ${e.name}`);if(t.length>1)throw new Error(`ambiguous saved workflow name: ${e.name}`);let n=t[0];if(!n.path.endsWith(".workflow.json"))throw new Error("only generated workflow capsules can be deleted");return await Xo(n.path),n}o($d,"deleteSavedWorkflow");async function Ld(e){let t=Yo(e.name),n=(await Mt(e.dirs)).filter(p=>p.name===t).filter(p=>e.savedSource===void 0||p.source===e.savedSource);if(n.length===0)throw new Error(`saved workflow not found: ${t}`);if(n.length>1)throw new Error(`ambiguous saved workflow name: ${t}`);let r=n[0];if(!r.path.endsWith(".workflow.json"))throw new Error("only generated workflow capsules can be replaced");let i=ge({...e.manifest,name:t});On(i,e.source);let s=e.requires??Zo(i),c=Le({minKodaxVersion:e.minKodaxVersion??Ct,manifest:i,source:e.source,...e.intent!==void 0?{intent:e.intent}:{},...e.inputs!==void 0?{inputs:e.inputs}:{},...s!==void 0?{requires:s}:{},...e.provenance!==void 0?{provenance:e.provenance}:{}}),a=await Qo(r.path),l=new Date().toISOString().replace(/[:.]/g,"-"),u=Ge(Ko(r.path),".revisions",t),m=`${l}-${process.hrtime.bigint().toString(36)}`,d=Ge(u,`${t}-${m}.workflow.json`),f=Ge(Ko(r.path),`.${t}.${process.pid}.${Date.now().toString(36)}.tmp`);await Id(u,{recursive:!0}),await Md(d,a);try{await Md(f,c),await yg(f,r.path)}catch(p){try{await Xo(f)}catch{}throw p}return{name:t,path:r.path,source:r.source,execution:"capability-generated",previousPath:d}}o(Ld,"replaceSavedWorkflow");function Ag(e){if(!Jo(e))return;let t=e.request;if(typeof t=="string"&&t.trim().length>0)return t;let n=e.question;if(typeof n=="string"&&n.trim().length>0)return n}o(Ag,"readOptionalOriginalRequest");function jd(e){return Cg(e)}o(jd,"buildCapsuleFromRun");async function Cg(e){let t=JSON.parse(await At(Ge(e.runDir,"run.json"),"utf8"));if(!Jo(t))throw new Error("workflow run.json must be an object");let n=Ad(t,"scriptSnapshotPath"),r=Ad(t,"manifestSnapshotPath"),i=await At(n,"utf8"),s=ge(JSON.parse(await At(r,"utf8")));On(s,i);let c=typeof t.runId=="string"&&t.runId.length>0?t.runId:kg(e.runDir),a=Ag(t.args),l=Zo(s),u={taskClass:s.patterns[0]??s.name,...a!==void 0?{originalRequest:a}:{},reusableFor:[s.description]},m={description:"Provide new workflow args matching the generated request shape.",..."args"in t?{examples:[t.args]}:{}};return Le({minKodaxVersion:Ct,manifest:s,source:i,intent:u,inputs:m,...l!==void 0?{requires:l}:{},provenance:{fromRunId:c,createdAt:new Date().toISOString(),kodaxVersion:Nd()}})}o(Cg,"readCapsuleFromRun");async function e_(e){let t=await jd(e);return{capsule:t,module:Qn(t)}}o(e_,"loadGeneratedWorkflowFromRun");async function t_(e){let t=await jd(e);return Sg({dir:e.targetDir,name:e.name,manifest:t.manifest,source:t.source,...t.intent!==void 0?{intent:t.intent}:{},...t.inputs!==void 0?{inputs:t.inputs}:{},...t.requires!==void 0?{requires:t.requires}:{},...t.provenance!==void 0?{provenance:t.provenance}:{},minKodaxVersion:t.minKodaxVersion})}o(t_,"saveGeneratedWorkflowFromRun");function Ie(e,t,n,r){e.push({severity:t,requirement:n,message:r})}o(Ie,"addRequirementIssue");function Od(e){let t=/^v?(\d+)\.(\d+)\.(\d+)(?:[-+].*)?$/.exec(e.trim());if(t)return[Number(t[1]),Number(t[2]),Number(t[3])]}o(Od,"parseSemver");function Mg(e,t){for(let n=0;n<3;n+=1){let r=e[n]-t[n];if(r!==0)return r}return 0}o(Mg,"compareSemver");function Og(e,t,n){let r=Od(t),i=Od(n);if(!r){Ie(e,"error","kodax:min-version",`workflow minKodaxVersion is not valid semver: ${t}`);return}if(!i){Ie(e,"warning","kodax:min-version",`cannot verify workflow minKodaxVersion ${t}; current version is unknown`);return}Mg(i,r)<0&&Ie(e,"error","kodax:min-version",`workflow requires KodaX >= ${t}, current version is ${n}`)}o(Og,"addMinVersionIssue");function Vo(e,t,n,r){if(!n)return;if(!r){for(let s of n)Ie(e,"warning",`${t}:${s}`,`workflow requires ${t}:${s}, but no ${t} inventory was provided`);return}let i=new Set(r);for(let s of n)i.has(s)||Ie(e,"error",`${t}:${s}`,`missing required workflow ${t}: ${s}`)}o(Vo,"addMissingItems");function Ud(e,t={}){let n=Jn(e),r=[],i=n.requires;Og(r,n.minKodaxVersion,t.kodaxVersion??Nd()),i?.environment?.includes("git-repo")&&t.isGitRepo===!1&&Ie(r,"error","environment:git-repo","workflow requires a git repository"),i?.environment?.includes("worktree-capable")&&t.worktreeCapable===!1&&Ie(r,"error","environment:worktree-capable","workflow may request git worktree isolation");try{ut(n.source,{filename:`${n.manifest.name}.workflow.js`,requireAsyncRun:!0})}catch(s){let c=s instanceof Error?s.message:String(s);Ie(r,"error","workflow:source",c)}return Vo(r,"tools",i?.tools,t.availableTools),Vo(r,"mcp",i?.mcp,t.availableMcp),Vo(r,"skills",i?.skills,t.availableSkills),{ok:!r.some(s=>s.severity==="error"),issues:r}}o(Ud,"preflightWorkflowCapsule");function In(e){return{runId:e.runId,workflow:e.workflow,status:e.status,runDir:e.runDir,totalSpawned:e.totalSpawned,eventCount:e.eventCount,startedAt:e.startedAt,...e.endedAt!==void 0?{endedAt:e.endedAt}:{},...e.error!==void 0?{error:e.error}:{},...e.resultText!==void 0?{resultText:e.resultText}:{}}}o(In,"snapshot");function Ig(e,t){return t?"stopped":e.kind==="completed"?"completed":e.kind==="denied"?"denied":"failed"}o(Ig,"terminalStatus");function Pg(e){if(typeof e=="string"&&e.trim().length>0)return e;if(typeof e!="object"||e===null)return;let t=e,n=t.synthesis;if(typeof n=="string"&&n.trim().length>0)return n;if(typeof n=="object"&&n!==null){let r=n.text;if(typeof r=="string"&&r.trim().length>0)return r}for(let r of["summary","report","text","result"]){let i=t[r];if(typeof i=="string"&&i.trim().length>0)return i}}o(Pg,"resultText");function Ng(e){return e instanceof Error?e:new Error(String(e))}o(Ng,"toError");function Fd(e,t){let n=Ng(t),r={runId:e.runId,status:"failed",totalSpawned:e.totalSpawned,events:[],artifacts:[]};return{kind:"failed",error:n,state:r}}o(Fd,"failedOutcome");function Dg(e={}){let t=e.now??(()=>Date.now()),n=new Map,r=new Set,i=o(()=>new Date(t()).toISOString(),"isoNow"),s=o(d=>{for(let f of r)try{f(d)}catch{}},"notifyProcess"),c=o(async d=>{for(;d.status==="paused"&&!d.controller.signal.aborted;)await new Promise(f=>d.pauseWaiters.push(f));if(d.controller.signal.aborted)throw new Error("workflow stopped")},"waitIfPaused"),a=o(d=>{let f=d.pauseWaiters.splice(0);for(let p of f)p()},"releasePauseWaiters"),l=o((d,f)=>p=>{d.eventCount+=1,p.type==="agent_spawned"&&(d.totalSpawned+=1),s(d.process.applyEvent(p)),f?.(p)},"onEvent"),u=o((d,f,p)=>{let h=new AbortController;p&&p.addEventListener("abort",()=>h.abort(),{once:!0});let g={runId:d.runId,workflow:d.workflow,status:"running",runDir:f,totalSpawned:0,eventCount:0,startedAt:t(),controller:h,pauseWaiters:[],process:Ye({runId:d.runId,workflowName:d.workflow,displayName:d.processMetadata?.displayName??d.workflow,...d.processMetadata?.goal!==void 0?{goal:d.processMetadata.goal}:{},...d.processMetadata?.source!==void 0?{source:d.processMetadata.source}:{},...d.processMetadata?.savedWorkflowName!==void 0?{savedWorkflowName:d.processMetadata.savedWorkflowName}:{},...d.processMetadata?.sourceRunId!==void 0?{sourceRunId:d.processMetadata.sourceRunId}:{},...d.processMetadata?.sourceWorkflowName!==void 0?{sourceWorkflowName:d.processMetadata.sourceWorkflowName}:{},...d.processMetadata?.revisionOf!==void 0?{revisionOf:d.processMetadata.revisionOf}:{},...d.processMetadata?.hostMetadata!==void 0?{hostMetadata:{...d.processMetadata.hostMetadata}}:{},...d.phases!==void 0?{phases:d.phases}:{},...d.maxAgents!==void 0?{maxAgents:d.maxAgents}:{},...d.plannedAgents!==void 0?{plannedAgents:d.plannedAgents}:{},...d.tokenBudget!==void 0?{tokenBudget:d.tokenBudget}:{},now:i})};return n.set(d.runId,g),g},"createRun"),m=o((d,f)=>(d.status=Ig(f,d.controller.signal.aborted||d.status==="stopped"),d.endedAt=t(),f.kind==="failed"&&d.status!=="stopped"&&(d.error=f.error.message),f.kind==="completed"&&(d.resultText=Pg(f.result)),f.kind==="failed"&&!Yn(d.process.getSnapshot().status)?s(d.process.setStatus("failed",f.error.message)):f.kind==="denied"?s(d.process.setStatus("cancelled","workflow denied")):d.status==="stopped"&&d.process.getSnapshot().status!=="cancelled"&&s(d.process.setStatus("cancelled","workflow stopped")),a(d),f),"settle");return{start:o(d=>{let f=_t(d.module.meta,d.hostPolicy),p=u({runId:d.runId,workflow:d.module.meta.name,...d.module.meta.phases!==void 0?{phases:d.module.meta.phases}:{},...f.maxAgents!==void 0?{maxAgents:f.maxAgents}:{},...d.module.meta.plannedAgents!==void 0?{plannedAgents:d.module.meta.plannedAgents}:{},...f.tokenBudget!==void 0?{tokenBudget:f.tokenBudget}:{},...d.processMetadata!==void 0?{processMetadata:d.processMetadata}:{}},d.runDir,d.signal),h=qo({...d,signal:p.controller.signal,beforeSpawn:o(()=>c(p),"beforeSpawn"),onEvent:l(p,d.onEvent)}).catch(g=>Fd(p,g)).then(g=>m(p,g));return{runId:p.runId,done:h,getSnapshot:o(()=>In(p),"getSnapshot"),getProcessSnapshot:o(()=>p.process.getSnapshot(),"getProcessSnapshot")}},"start"),startFromOptions:o(d=>{let f=_t(d.module.meta,d.options.workflowHostPolicy),p=u({runId:d.runId,workflow:d.module.meta.name,...d.module.meta.phases!==void 0?{phases:d.module.meta.phases}:{},...f.maxAgents!==void 0?{maxAgents:f.maxAgents}:{},...d.module.meta.plannedAgents!==void 0?{plannedAgents:d.module.meta.plannedAgents}:{},...f.tokenBudget!==void 0?{tokenBudget:f.tokenBudget}:{},...d.processMetadata!==void 0?{processMetadata:d.processMetadata}:{}},d.runDir,d.signal),h=_d({...d,signal:p.controller.signal,beforeSpawn:o(()=>c(p),"beforeSpawn"),onEvent:l(p,d.onEvent)}).catch(g=>Fd(p,g)).then(g=>m(p,g));return{runId:p.runId,done:h,getSnapshot:o(()=>In(p),"getSnapshot"),getProcessSnapshot:o(()=>p.process.getSnapshot(),"getProcessSnapshot")}},"startFromOptions"),list:o(()=>[...n.values()].map(In).sort((d,f)=>f.startedAt-d.startedAt),"list"),get:o(d=>{let f=n.get(d);return f?In(f):void 0},"get"),subscribeWorkflowProcess:o(d=>(r.add(d),()=>{r.delete(d)}),"subscribeWorkflowProcess"),getWorkflowProcessSnapshot:o(d=>n.get(d)?.process.getSnapshot(),"getWorkflowProcessSnapshot"),listWorkflowProcessSnapshots:o(d=>{let f=[...n.values()].sort((p,h)=>h.startedAt-p.startedAt).map(p=>p.process.getSnapshot()).filter(p=>d?.activeOnly===!0?!Yn(p.status):!0);return d?.limit===void 0?f:f.slice(0,d.limit)},"listWorkflowProcessSnapshots"),pause:o(d=>{let f=n.get(d);return!f||f.status!=="running"?!1:(f.status="paused",s(f.process.setStatus("paused","workflow paused")),!0)},"pause"),resume:o(d=>{let f=n.get(d);return!f||f.status!=="paused"?!1:(f.status="running",s(f.process.setStatus("running","workflow resumed")),a(f),!0)},"resume"),stop:o((d,f)=>{let p=n.get(d);return!p||["completed","failed","denied","stopped"].includes(p.status)?!1:(p.status="stopped",s(p.process.setStatus("cancelled",f??"workflow stopped")),p.controller.abort(),a(p),!0)},"stop")}}o(Dg,"createWorkflowRunManager");var Bd;function s_(){return Bd??=Dg(),Bd}o(s_,"getDefaultWorkflowRunManager");import{existsSync as ti,readFileSync as Jd,readdirSync as qg,rmSync as Xd,writeFileSync as Vg}from"node:fs";import{join as it,resolve as Pn,sep as Qd}from"node:path";import{existsSync as ei,readdirSync as $g,readFileSync as Hd}from"node:fs";import{join as Gd,resolve as Wd,sep as Lg}from"node:path";function qd(e){return e!=="."&&/^[a-zA-Z0-9._-]+$/.test(e)&&!e.includes("..")}o(qd,"isSafeWorkflowRunId");function jg(e,t){if(!qd(t))return;let n=Wd(e),r=Wd(n,t);return r.startsWith(`${n}${Lg}`)?r:void 0}o(jg,"safeRunDir");function Ug(e){let t=Gd(e,"run.json");if(ei(t))try{let n=JSON.parse(Hd(t,"utf8"));return typeof n=="object"&&n!==null?n:void 0}catch{return}}o(Ug,"readRunRecord");function Fg(e){let t=Gd(e,"workflow-metadata.json");if(ei(t))try{let n=JSON.parse(Hd(t,"utf8"));if(typeof n!="object"||n===null)return;let r=n.displayName;return typeof r=="string"&&r.trim().length>0?r:void 0}catch{return}}o(Fg,"readMetadataDisplayName");function Bg(e){let t=e.displayName;return typeof t=="string"&&t.trim().length>0?t:void 0}o(Bg,"readRunJsonDisplayName");function Wg(e,t){return e?.trim()===t}o(Wg,"displayNameMatches");function Vd(e,t){if(!t)return;let n=jg(t,e);if(!n)return;let r=Ug(n);if(!r)return;let i=r.workflow,s=Fg(n)??Bg(r);return{kind:"run",target:e,runId:e,runDir:n,...typeof i=="string"&&i.length>0?{workflowName:i}:{},...s!==void 0?{displayName:s}:{}}}o(Vd,"resolveRun");function Hg(e,t){if(!t||!ei(t))return[];let n=[];for(let r of $g(t)){if(!qd(r))continue;let i=Vd(r,t);i&&Wg(i.displayName,e)&&n.push(i)}return n}o(Hg,"resolveRunsByDisplayName");async function Gg(e,t){return t?(await Mt(t)).find(r=>r.name===e):void 0}o(Gg,"resolveSaved");async function Kd(e){let t=e.target.trim();if(!t)return{kind:"missing",target:e.target};let n=Vd(t,e.runBaseDir),r=n?[]:Hg(t,e.runBaseDir),i=await Gg(t,e.savedWorkflowDirs),s=n?[n]:r;return s.length>1?{kind:"ambiguous",target:t,matches:i?["run","saved"]:["run"],...i?{savedWorkflow:i}:{}}:s.length===1&&i?{kind:"ambiguous",target:t,matches:["run","saved"],run:s[0],savedWorkflow:i}:n||(r.length===1?r[0]:i?{kind:"saved",target:t,savedWorkflow:i}:{kind:"missing",target:t})}o(Kd,"resolveWorkflowIdentity");var ni=new Set(["completed","failed","stopped","denied","cancelled"]);function Zd(e){if(ti(e))try{return JSON.parse(Jd(e,"utf8"))}catch{return}}o(Zd,"readJsonFile");function el(e){let t=Zd(e);return typeof t=="object"&&t!==null?t:void 0}o(el,"readRecord");function ce(e){return typeof e=="string"&&e.trim().length>0?e:void 0}o(ce,"readString");function Kg(e){return typeof e=="number"&&Number.isFinite(e)?e:void 0}o(Kg,"readNumber");function Xg(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"):[]}o(Xg,"readStringArray");function zg(e){if(e==="command"||e==="amaw"||e==="review"||e==="sdk"||e==="capsule"||e==="extension"||e==="automation")return e}o(zg,"readWorkflowProcessSource");function Yg(e,t){let n=ce(e.goal),r=zg(e.source),i=ce(e.savedWorkflowName),s=ce(e.sourceRunId),c=ce(e.sourceWorkflowName),a=ce(e.revisionOf),l=Wt(e.hostMetadata),u={...t!==void 0?{displayName:t}:{},...n!==void 0?{goal:n}:{},...r!==void 0?{source:r}:{},...i!==void 0?{savedWorkflowName:i}:{},...s!==void 0?{sourceRunId:s}:{},...c!==void 0?{sourceWorkflowName:c}:{},...a!==void 0?{revisionOf:a}:{},...l!==void 0?{hostMetadata:l}:{}};return Object.keys(u).length>0?u:void 0}o(Yg,"readRunProcessMetadata");function Jg(e){return e!=="."&&/^[a-zA-Z0-9._-]+$/.test(e)&&!e.includes("..")}o(Jg,"isSafeWorkflowRunId");function qe(e,t){if(!Jg(t))return;let n=Pn(e),r=Pn(n,t);return r.startsWith(`${n}${Qd}`)?r:void 0}o(qe,"runDir");function Qg(e){return e==="running"||e==="paused"}o(Qg,"isManagedWorkflowActive");function Zg(e,t){let n=Pn(e),r=Pn(t);return r===n||r.startsWith(`${n}${Qd}`)}o(Zg,"isPathWithinBase");function Ot(e,t){let n=qe(e,t);if(!n)return;let r=el(it(n,"run.json"));if(!r)return;let i=ew(n)??ce(r.displayName),s=ce(r.resultSummary),c=Yg(r,i);return{runId:t,workflow:ce(r.workflow)??"?",...i!==void 0?{displayName:i}:{},...s!==void 0?{resultSummary:s}:{},...c!==void 0?{processMetadata:c}:{},status:ce(r.status)??"?",endedAt:Kg(r.endedAt)??0,artifacts:Xg(r.artifacts)}}o(Ot,"readPersistedRun");function ew(e){let t=el(it(e,"workflow-metadata.json"));return t?ce(t.displayName):void 0}o(ew,"readRunDisplayName");function zd(e){if(!ti(e))return[];let t=[];for(let n of qg(e)){let r=Ot(e,n);r&&t.push(r)}return t.sort((n,r)=>r.endedAt-n.endedAt)}o(zd,"listPersistedRuns");function tl(e){let t=it(e,"events.jsonl");if(!ti(t))return[];let n=[];for(let r of Jd(t,"utf8").split(/\r?\n/)){if(!r.trim())continue;let i;try{i=JSON.parse(r)}catch{continue}if(typeof i!="object"||i===null)continue;let s=i;if(typeof s.seq!="number"||typeof s.type!="string")continue;let c=s.data;n.push({seq:s.seq,type:s.type,...typeof c=="object"&&c!==null?{data:c}:{}})}return n}o(tl,"readWorkflowEvents");function Yd(e,t){let n=qe(e,t.runId);if(!n)return;let r=Ye({runId:t.runId,workflowName:t.workflow,displayName:t.displayName??t.processMetadata?.displayName??t.workflow,...t.processMetadata?.goal!==void 0?{goal:t.processMetadata.goal}:{},...t.processMetadata?.source!==void 0?{source:t.processMetadata.source}:{},...t.processMetadata?.savedWorkflowName!==void 0?{savedWorkflowName:t.processMetadata.savedWorkflowName}:{},...t.processMetadata?.sourceRunId!==void 0?{sourceRunId:t.processMetadata.sourceRunId}:{},...t.processMetadata?.sourceWorkflowName!==void 0?{sourceWorkflowName:t.processMetadata.sourceWorkflowName}:{},...t.processMetadata?.revisionOf!==void 0?{revisionOf:t.processMetadata.revisionOf}:{},...t.processMetadata?.hostMetadata!==void 0?{hostMetadata:{...t.processMetadata.hostMetadata}}:{},...t.resultSummary!==void 0?{resultSummary:t.resultSummary}:{},artifacts:t.artifacts.map(s=>({name:s,path:it(n,"artifacts",`${Mn(s)}.json`)}))});for(let s of tl(n))r.applyEvent(s);let i=r.getSnapshot();return i.status!=="running"||!ni.has(t.status)?i:(t.status==="completed"?r.setStatus("completed"):t.status==="failed"?r.setStatus("failed"):r.setStatus("cancelled"),r.getSnapshot())}o(Yd,"snapshotFromPersistedRun");function tw(e){for(let t of[...e].reverse()){if(t.type==="workflow_completed"){let i=ce(t.data?.resultSummary);if(i)return i}if(t.type!=="agent_completed"&&t.type!=="agent_unverified"&&t.type!=="agent_failed")continue;let n=ce(t.data?.summary);if(n)return n;let r=ce(t.data?.error);if(r)return r}}o(tw,"readEventSummary");function nw(e,t,n){let r=e.filter(a=>ni.has(a.status)).sort((a,l)=>l.endedAt-a.endedAt),i=t.keep,s=t.olderThanDays===void 0?void 0:n-t.olderThanDays*24*60*60*1e3,c=i===void 0?new Set:new Set(r.slice(0,Math.max(0,i)).map(a=>a.runId));return i===void 0&&s===void 0?[]:r.filter(a=>c.has(a.runId)?!1:s===void 0?!0:a.endedAt>0&&a.endedAt<s)}o(nw,"pruneCandidates");function v_(e){let t=e.now??(()=>Date.now()),{runManager:n,runBaseDir:r}=e;return{subscribeWorkflowProcess:o(i=>n.subscribeWorkflowProcess(i),"subscribeWorkflowProcess"),getWorkflowProcessSnapshot:o(i=>{let s=n.getWorkflowProcessSnapshot(i);if(s)return s;let c=Ot(r,i);return c?Yd(r,c):void 0},"getWorkflowProcessSnapshot"),listWorkflowProcessSnapshots:o(i=>{let s=n.listWorkflowProcessSnapshots(i);if(i?.activeOnly===!0)return s;let c=new Set(s.map(u=>u.runId)),a=zd(r).filter(u=>!c.has(u.runId)).map(u=>Yd(r,u)).filter(u=>u!==void 0),l=[...s,...a];return i?.limit===void 0?l:l.slice(0,i.limit)},"listWorkflowProcessSnapshots"),resolveWorkflowIdentity:o(async i=>Kd({target:i,runBaseDir:r,savedWorkflowDirs:e.savedWorkflowDirs}),"resolveWorkflowIdentity"),preflightWorkflowCapsule:o(async i=>Ud(i.capsule,i.env),"preflightWorkflowCapsule"),stopWorkflow:o(async(i,s)=>n.stop(i,s),"stopWorkflow"),pauseWorkflow:o(async i=>n.pause(i),"pauseWorkflow"),resumeWorkflow:o(async i=>n.resume(i),"resumeWorkflow"),renameWorkflowRun:o(async(i,s)=>{let c=s.trim();if(c.length===0)return!1;let a=qe(r,i);return!a||!Ot(r,i)?!1:(Vg(it(a,"workflow-metadata.json"),`${JSON.stringify({displayName:c},null,2)}
|