@kodax-ai/kodax 0.7.59 → 0.7.61
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 +58 -0
- package/README.md +1234 -1228
- package/README_CN.md +653 -647
- package/dist/chunks/{agent-QQCRBU4C.js → agent-E74WVAFR.js} +1 -1
- package/dist/chunks/argument-completer-BBFYCVTM.js +2 -0
- package/dist/chunks/{chunk-TBXP7FEG.js → chunk-2OEKUAV4.js} +1 -1
- package/dist/chunks/chunk-4NSOBQCU.js +322 -0
- package/dist/chunks/{chunk-YADBB5GN.js → chunk-6OZ5KWG3.js} +1 -1
- package/dist/chunks/{chunk-SVEJFERZ.js → chunk-7COB3EKF.js} +176 -161
- package/dist/chunks/chunk-CGGX3FXE.js +19 -0
- package/dist/chunks/{chunk-UXQILGRX.js → chunk-D7CC6YZC.js} +198 -198
- package/dist/chunks/{chunk-2UUOFT3Z.js → chunk-KIVYMSRH.js} +1 -1
- package/dist/chunks/chunk-NJW2LQOP.js +722 -0
- package/dist/chunks/chunk-PJXKBM3Y.js +310 -0
- package/dist/chunks/chunk-QCBKLNN5.js +18 -0
- package/dist/chunks/{chunk-5GPJ6MB5.js → chunk-XHOPSZVL.js} +120 -120
- package/dist/chunks/{chunk-BEXLPFFB.js → chunk-ZL5CEANW.js} +3 -3
- package/dist/chunks/compaction-config-GESEZQVA.js +2 -0
- package/dist/chunks/{construction-bootstrap-YON4ZEMO.js → construction-bootstrap-OSXHEIBB.js} +1 -1
- package/dist/chunks/{dist-EZXBR6NW.js → dist-W3OOJP66.js} +1 -1
- package/dist/chunks/host-FRQXOEHH.js +2 -0
- package/dist/chunks/{paste-4THGP5XW.js → paste-FDYM7SZX.js} +1 -1
- package/dist/chunks/run-manager-FGCG7DFF.js +2 -0
- package/dist/chunks/{utils-5XVW33SY.js → utils-47QI5MSP.js} +1 -1
- package/dist/index.d.ts +11 -11
- package/dist/index.js +1 -1
- package/dist/kodax_cli.js +1028 -972
- package/dist/sdk-agent.d.ts +24 -13
- package/dist/sdk-agent.js +1 -1
- package/dist/sdk-coding.d.ts +17 -13
- package/dist/sdk-coding.js +1 -1
- package/dist/sdk-llm.d.ts +6 -6
- package/dist/sdk-mcp.js +1 -1
- package/dist/sdk-media.d.ts +1 -1
- package/dist/sdk-media.js +1 -1
- package/dist/sdk-repl.d.ts +12 -11
- package/dist/sdk-repl.js +2 -2
- package/dist/sdk-session.d.ts +6 -6
- package/dist/sdk-session.js +1 -1
- package/dist/sdk-skills.js +1 -1
- package/dist/types-chunks/{base.d-BA9Doaj_.d.ts → base.d-DalIRhbb.d.ts} +1 -1
- package/dist/types-chunks/{bash-prefix-extractor.d-BNdpV4Cf.d.ts → bash-prefix-extractor.d-e1LD2IRl.d.ts} +70 -27
- package/dist/types-chunks/{capability-learning.d-DRV80ISB.d.ts → capability-learning.d-BQB0M70w.d.ts} +1 -1
- package/dist/types-chunks/{guardrail.d-CNdKuSD_.d.ts → guardrail.d-CdqJwwN7.d.ts} +3 -3
- package/dist/types-chunks/{process.d-BOrAxjvM.d.ts → process.d-C93UMgPK.d.ts} +20 -5
- package/dist/types-chunks/{resolver.d-DFAKKUvt.d.ts → resolver.d-CGkfRULj.d.ts} +2 -2
- package/dist/types-chunks/{run-manager.d-CsJC9zYf.d.ts → run-manager.d-DHPlNYkK.d.ts} +20 -6
- package/dist/types-chunks/{sdk-session-ByZlwgdM.d.ts → sdk-session-DINrM1pF.d.ts} +47 -10
- package/dist/types-chunks/{storage.d-DHL3XpAL.d.ts → storage.d-xiw7Vgx0.d.ts} +2 -2
- package/dist/types-chunks/{types.d-Ci5YPFEh.d.ts → types.d-Bp4Lm1jv.d.ts} +37 -3
- package/dist/types-chunks/{types.d-CE_Ter29.d.ts → types.d-CSZAMmU-.d.ts} +4 -1
- package/dist/types-chunks/{utils.d-D9FHU4wB.d.ts → utils.d-Dy19-1XR.d.ts} +5 -5
- package/package.json +1 -1
- package/dist/chunks/argument-completer-7Q2T4YWA.js +0 -2
- package/dist/chunks/chunk-D7RENPQQ.js +0 -322
- package/dist/chunks/chunk-PRIBJN5E.js +0 -683
- package/dist/chunks/chunk-SDSLWDAZ.js +0 -17
- package/dist/chunks/chunk-Z23LK3IV.js +0 -310
- package/dist/chunks/chunk-Z3ZXV3DZ.js +0 -18
- package/dist/chunks/compaction-config-GQIPCVFD.js +0 -2
- package/dist/chunks/host-LO6ZNTMV.js +0 -2
- package/dist/chunks/run-manager-HTLXKU66.js +0 -2
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
// @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
|
|
2
|
-
import{Ec as Ae,Fa as be,Fc as Pe,vb as We,wb as Y,xb as Te,yb as Ee}from"./chunk-SVEJFERZ.js";import{N as he}from"./chunk-S4GVQO3W.js";import{Va as z,Zd as ye,_d as ve,ae as $,ce as J,db as ke,ie as H,je as W,ke as X,le as Se,se as xe,te as Me,ue as Re}from"./chunk-PRIBJN5E.js";import{B as ge}from"./chunk-BEXLPFFB.js";import{a}from"./chunk-V4WSBIXB.js";import{basename as Mn,dirname as Rn}from"node:path";import{execFile as kt}from"node:child_process";import B from"node:path";import{promisify as yt}from"node:util";var vt=yt(kt),St=1e4,Oe=2,Fe=new Set(["write","edit","multi_edit","insert_after_anchor"]),xt=/^\s*(?:let me|i will|i'll|i am going to)\b[\s\S]{0,120}\b(?:start|create|implement|write|build|plan)\b|^\s*(?:我将|让我|接下来)[\s\S]{0,80}(?:开始|创建|编写|实现|制定)/i;function Mt(e){if(e?.timeoutMs!==void 0){if(!Number.isFinite(e.timeoutMs)||e.timeoutMs<=0)throw new Error("workflow wait timeoutMs must be a positive number");return Math.floor(e.timeoutMs)}}a(Mt,"normalizeWaitTimeoutMs");function Z(e){return e?.requiresMutation===!0||(e?.requiredChangedPaths?.length??0)>0}a(Z,"hasVerificationWork");function T(e){return e.replace(/\\/g,"/").replace(/^\.\//,"").trim()}a(T,"normalizeWorkspacePath");function Rt(e,t){let n=t.gitRoot?B.resolve(t.gitRoot):void 0,o=B.isAbsolute(e)&&n?B.relative(n,B.resolve(e)):e;return T(o)}a(Rt,"normalizeRequiredPath");function bt(e){let t=(e.readOnly??!1)===!1?{enforcement:"warn",requiresMutation:!0,rejectPreparatoryFinalText:!0}:void 0;if(e.verification!==void 0){let n={...t??{},...e.verification,enforcement:e.verification.enforcement??"hard"},o=e.verification.requiredChangedPaths;return{verification:{...n,...o!==void 0&&o.length>0&&n.requiresMutation===void 0?{requiresMutation:!0}:{}}}}return{verification:t}}a(bt,"resolveVerificationForInput");function De(e){let t=e.trim();return t.length>0&&xt.test(t)}a(De,"isPreparatoryOnlyText");function Wt(e,t){let n=e.trim(),o=t?.trim();return o&&(n.length===0||De(n))?o:e}a(Wt,"selectWorkflowFinalText");async function L(e,t){return(await vt("git",[...e],{cwd:t,timeout:St,windowsHide:!0,maxBuffer:4194304})).stdout.toString()}a(L,"runGit");async function Tt(e){let t=e.gitRoot??e.executionCwd??process.cwd(),n=(await L(["rev-parse","--show-toplevel"],t)).trim(),o=await Promise.all([L(["diff","--name-only","--"],n),L(["diff","--cached","--name-only","--"],n),L(["ls-files","--others","--exclude-standard"],n)]);return[...new Set(o.flatMap(i=>i.split(/\r?\n/)).map(T).filter(i=>i.length>0))]}a(Tt,"listGitChangedFiles");async function Q(e,t){try{return{paths:(await t(e)).map(T).filter(o=>o.length>0)}}catch(n){return{paths:[],error:n instanceof Error?n.message:String(n)}}}a(Q,"captureChangedPaths");function Et(){return{toolNameById:new Map,toolPathById:new Map,succeededToolCalls:[],succeededPaths:[]}}a(Et,"createMutationRecorder");function At(e){if(e)for(let t of["path","file_path","target_path"]){let n=e[t];if(typeof n=="string"&&n.trim().length>0)return T(n)}}a(At,"readMutationPath");function Pt(e,t){return{...e??{},onToolUseStart:a((n,o)=>{if(Fe.has(n.name)){t.toolNameById.set(n.id,n.name);let i=At(n.input);i!==void 0&&t.toolPathById.set(n.id,i)}e?.onToolUseStart?.(n,o)},"onToolUseStart"),onToolResult:a((n,o)=>{let i=t.toolNameById.get(n.id)??n.name;if(Fe.has(i)&&!n.content.trimStart().startsWith("[Tool Error]")){t.succeededToolCalls.push(i);let r=t.toolPathById.get(n.id);r!==void 0&&t.succeededPaths.push(r)}e?.onToolResult?.(n,o)},"onToolResult")}}a(Pt,"wrapEventsForMutationRecording");function ee(e){return[...new Set(e.filter(t=>t.trim().length>0))]}a(ee,"uniqueItems");function Ce(e){let t=e.verification;if(!t)return;let n=[],o=new Set(e.before.paths.map(T)),i=ee(e.after.paths.map(T)),r=i.filter(m=>!o.has(m)),s=ee(e.mutationRecorder.succeededToolCalls),c=e.acceptToolMutationEvidence?s:[],p=e.acceptToolMutationEvidence?ee(e.mutationRecorder.succeededPaths.map(T)):[],l=r.length>0||c.length>0,h=t.enforcement??"hard",v=(t.requiredChangedPaths??[]).map(m=>Rt(m,e.ctx));t.requiresMutation===!0&&(e.before.error!==void 0||e.after.error!==void 0?n.push(`workspace mutation verification could not read changed files: ${e.after.error??e.before.error}`):l||n.push(e.acceptToolMutationEvidence||s.length===0?"expected file mutations, but no new workspace changes or successful write tools were observed":"write tools ran in an isolated worktree, but no main workspace changes were present after cleanup")),e.term.limitReached===!0&&!l&&n.push("workflow child reached its iteration limit before satisfying the task");for(let m of v)!i.includes(m)&&!p.includes(m)&&n.push(`required changed path was not present in workspace changes: ${m}`);let k=t.minFinalTextChars;return k!==void 0&&!l&&e.term.finalText.trim().length<k&&n.push(`finalText was shorter than the required ${k} characters`),t.rejectPreparatoryFinalText===!0&&!l&&De(e.term.finalText)&&n.push("finalText looks preparatory instead of terminal"),{ok:n.length===0,enforcement:h,reasons:n,changedPaths:i,mutationToolCalls:s,mutationEvidence:l}}a(Ce,"evaluateVerification");function te(e,t){if(t.ok)return e;let o=[t.enforcement==="warn"?"[Workflow task completed without verification]":"[Workflow task verification failed]",...t.reasons.map(i=>`- ${i}`)].join(`
|
|
3
|
-
`);return e.trim().length>0?`${e}
|
|
4
|
-
|
|
5
|
-
${o}`:o}a(te,"appendVerificationFailure");function Ie(){return{ok:!1,enforcement:"warn",reasons:["workflow child reached its iteration limit before satisfying the task"],mutationEvidence:!1}}a(Ie,"limitReachedWarningVerification");function Ft(e){return e.entry.bundle.readOnly!==!0&&e.entry.repairAttempts<Oe&&e.term.status==="completed"&&e.verification!==void 0&&e.verification.ok!==!0&&e.verification.enforcement!=="warn"}a(Ft,"shouldRepairVerificationFailure");function Ct(e){let t=e.verification.reasons.map(o=>`- ${o}`).join(`
|
|
6
|
-
`),n=(e.verification.changedPaths??[]).length>0?`
|
|
7
|
-
Workspace changes already present before this repair attempt:
|
|
8
|
-
${e.verification.changedPaths?.map(o=>`- ${o}`).join(`
|
|
9
|
-
`)??""}`:"";return[e.originalPrompt,"","[Workflow verification repair]",`Repair attempt ${e.attempt}/${Oe}.`,"The previous attempt did not satisfy the workflow postconditions.","Do not stop at analysis, planning, or a promise to begin. Complete the required file writes in the real workspace now.","Use the available file editing tools when a file change is required, then report the exact files changed.","","Verification failures:",t,n,"","Previous terminal response:",e.previousFinalText.trim()||"(empty)"].join(`
|
|
10
|
-
`)}a(Ct,"buildVerificationRepairPrompt");async function $e(e,t,n,o,i=n){if(n===void 0)return e;let r;try{return await Promise.race([e,new Promise((s,c)=>{r=setTimeout(()=>{o.childAbortControllers?.get(t)?.abort(),c(new Error(`workflow task ${t} timed out after ${i??n}ms`))},n)})])}finally{r&&clearTimeout(r)}}a($e,"waitForChildPromise");function Ne(e,t,n){return t.outputSchema!==void 0&&be(t.outputSchema),Pe(t.name,t.evidenceRefs,n),{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}:{},...t.outputSchema!==void 0?{outputSchema:t.outputSchema}:{},...t.effort?{effort:t.effort}:{}}}a(Ne,"buildBundle");function ne(e,t){if(e.cancelledChildren.includes(t))return{status:"stopped",snapStatus:"aborted",finalText:""};let n=e.results[0],o=Wt(n?.summary??"",n?.digest);return n?.status==="completed"?{status:"completed",snapStatus:"completed",finalText:o,...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}:{},...n.structured!==void 0?{structured:n.structured}:{}}:{status:"failed",snapStatus:"failed",finalText:o,...n?.limitReached?{limitReached:!0}:{},...n?.provider?{provider:n.provider}:{},...n?.model?{model:n.model}:{}}}a(ne,"deriveTerminal");function _e(e){let{ctx:t,childOptions:n}=e,o=e.runChild??Ae,i=e.queue??ge(),r=e.listChangedFiles??Tt,s=e.now??(()=>Date.now()),c=0,p=e.generateId??(()=>`wf-child-${c+=1}`),l=new Map,h=new Set,v=new Map,k=a(()=>e.onTaskSummary!==void 0||h.size>0,"hasTaskSummaryObservers"),m=a((f,w)=>{try{e.onTaskSummary?.(f,w)}catch{}for(let u of h)try{u(f,w)}catch{}},"notifyTaskSummary");return{spawn:a(async f=>{let w=p(),u=Ne(w,f,new Set(l.keys())),q=bt(f).verification,P=Et(),b=f.isolation!=="worktree",F=Z(q)?Q(t,r):Promise.resolve({paths:[]}),d=t.childProgressSnapshots,g=a(async C=>{let I=new AbortController;t.childAbortControllers?.set(w,I),d&&We(d,{childId:w,startedAt:s(),maxIterations:n.maxIterationsPerChild,parentRole:n.parentRole,readOnly:C.readOnly,specialistName:C.specialistName});let gt={...n,parentOptions:{...n.parentOptions,events:Pt(n.parentOptions.events,P)},maxParallel:1,workflowChild:!0,...e.runId!==void 0?{workflowCorrelation:{workflowRunId:e.runId,childAgentId:w,itemId:`agent:${w}`}}:{},childActivityName:f.name,workflowDigestMode:k()?"async":"blocking",...k()?{onWorkflowChildDigest:a(y=>{m(y.childId,{...y.digest?{summary:y.digest}:{},summaryKind:y.digest?"digest":"digest-failed",...y.totalTokensUsed>0?{usage:{totalTokens:y.totalTokensUsed}}:{}})},"onWorkflowChildDigest")}:{},abortSignal:I.signal,snapshotUpdater:d?y=>Te(d,w,y):void 0},j;try{return await F,j=await o([C],t,gt),j}finally{if(t.childAbortControllers?.delete(w),d){let y=j?ne(j,w):{snapStatus:"failed",finalText:""};Y(d,w,{status:y.snapStatus,finalText:y.finalText,endedAt:s()})}}},"runBundle"),S=g(u);return l.set(w,{name:f.name,input:f,bundle:u,promise:S,runBundle:g,verification:q,changedPathBaseline:F,mutationRecorder:P,acceptToolMutationEvidence:b,repairAttempts:0}),z(v,w,S),{taskId:w,name:f.name}},"spawn"),wait:a(async(f,w)=>{let u=l.get(f);if(!u)throw new Error(`unknown workflow task: ${f}`);let M=Mt(w),q=Date.now(),P=a(async S=>{if(M===void 0)return $e(S,f,void 0,t);let C=Date.now()-q,I=M-C;if(I<=0)throw t.childAbortControllers?.get(f)?.abort(),new Error(`workflow task ${f} timed out after ${M}ms`);return $e(S,f,Math.max(1,Math.floor(I)),t,M)},"waitForAttempt"),b=await P(u.promise),F=b.totalTokensUsed,d=ne(b,f),g=u.verification?Ce({verification:u.verification,term:d,before:await u.changedPathBaseline,after:Z(u.verification)?await Q(t,r):{paths:[]},mutationRecorder:u.mutationRecorder,ctx:t,acceptToolMutationEvidence:u.acceptToolMutationEvidence}):void 0;for(d.limitReached===!0&&g===void 0&&d.status==="completed"&&(g=Ie(),d={...d,status:"completed_unverified",snapStatus:"completed",finalText:te(d.finalText,g)});Ft({entry:u,term:d,verification:g});){u.repairAttempts+=1;let S=Ne(f,{...u.input,prompt:Ct({originalPrompt:u.input.prompt,previousFinalText:d.finalText,verification:g,attempt:u.repairAttempts})});u.promise=u.runBundle(S),z(v,f,u.promise),b=await P(u.promise),F+=b.totalTokensUsed,d=ne(b,f),g=u.verification?Ce({verification:u.verification,term:d,before:await u.changedPathBaseline,after:Z(u.verification)?await Q(t,r):{paths:[]},mutationRecorder:u.mutationRecorder,ctx:t,acceptToolMutationEvidence:u.acceptToolMutationEvidence}):void 0,d.limitReached===!0&&g===void 0&&d.status==="completed"&&(g=Ie(),d={...d,status:"completed_unverified",snapStatus:"completed",finalText:te(d.finalText,g)})}if(g!==void 0&&!g.ok&&d.status==="completed"){let S=g.enforcement==="warn";d={...d,status:S?"completed_unverified":"failed",snapStatus:S?"completed":"failed",finalText:te(d.finalText,g)}}return Y(t.childProgressSnapshots,f,{status:d.snapStatus,finalText:d.finalText,endedAt:s()}),{taskId:f,name:u.name,status:d.status,finalText:d.finalText,...d.digest?{digest:d.digest}:{},...d.digestFailed?{digestFailed:!0}:{},...d.digestPending?{digestPending:!0}:{},...g!==void 0?{verification:g}:{},...d.limitReached?{limitReached:!0}:{},...d.provider?{provider:d.provider}:{},...d.model?{model:d.model}:{},...d.structured!==void 0?{structured:d.structured}:{},usage:{totalTokens:F}}},"wait"),output:a(async f=>{if(!l.has(f))throw new Error(`unknown workflow task: ${f}`);let w=l.get(f)?.name??f,u=t.childProgressSnapshots?.get(f);if(!u)return{taskId:f,name:w,status:"running"};let M=u.status==="aborted"?"stopped":u.status;return u.finalText!==void 0?{taskId:f,name:w,status:M,lastText:u.finalText}:{taskId:f,name:w,status:M}},"output"),send:a(async(f,w)=>{if(!l.has(f))throw new Error(`unknown workflow task: ${f}`);ke({to:f,priority:"user",mode:"prompt",content:w,registry:v,queue:i})},"send"),stop:a(async f=>{if(!l.has(f))throw new Error(`unknown workflow task: ${f}`);t.childAbortControllers?.get(f)?.abort()},"stop"),subscribeTaskSummaryUpdates:a(f=>(h.add(f),()=>{h.delete(f)}),"subscribeTaskSummaryUpdates")}}a(_e,"createCodingWorkflowBackend");import{homedir as on}from"node:os";import{join as Ye}from"node:path";var It=["structure, entry points, and control flow","edge cases, error handling, and failure modes","tests, validation, and existing coverage"],$t="Deduplicate overlapping findings, keep concrete evidence (file:line), rank by relevance to the question, and explicitly note gaps left by any failed investigation.",Nt={type:"object",additionalProperties:!1,required:["finding"],properties:{finding:{type:"string",description:"Your concrete findings for this focus, with file:line evidence. If nothing relevant was found, a brief note saying so."}}};function Ot(e){if(e!==null&&typeof e=="object"&&"finding"in e){let t=e.finding;if(typeof t=="string"&&t.trim().length>0)return t}}a(Ot,"readStructuredFinding");function Dt(e){let t=Ot(e.structured);if(t)return t;let n=e.finalText?.trim();return n&&n.length>0?e.finalText:"[no finding text was returned \u2014 the investigator may have ended on a tool call without a closing summary]"}a(Dt,"pickFindingText");function _t(e,t){return["Investigate the following question (READ-ONLY \u2014 do not modify any files):",e,"",`Focus your investigation on: ${t}`,"","Report concrete findings backed by evidence (cite file:line). If you find nothing relevant for this focus, say so briefly."].join(`
|
|
11
|
-
`)}a(_t,"buildInvestigatorPrompt");function qt(e){let t=Math.max(1,(e.maxAgents??8)-1);return(e.targets&&e.targets.length>0?e.targets:It).slice(0,t).map((o,i)=>({name:`investigate-${i+1}`,prompt:_t(e.question,o)}))}a(qt,"resolveAngles");async function jt(e,t){try{let n=await e.runAgent({name:t.name,prompt:t.prompt,readOnly:!0,outputSchema:Nt});return n===null?{angle:t.name,status:"failed",text:"[investigation failed] agent did not complete"}:{angle:t.name,status:n.status==="completed"?"completed":"failed",text:Dt(n)}}catch(n){let o=n instanceof Error?n.message:String(n);return{angle:t.name,status:"failed",text:`[investigation failed] ${o}`}}}a(jt,"investigate");async function Bt(e,t){let n=qt(t),o=(await e.phase("investigate",()=>e.parallel(n.map(s=>()=>jt(e,s)),t.maxConcurrency!==void 0?{concurrency:t.maxConcurrency}:void 0))).filter(s=>s!==null),i=o.some(s=>s.status!=="completed");return{synthesis:(await e.phase("synthesize",()=>e.synthesize({inputs:o.map(s=>`### ${s.angle} (${s.status})
|
|
12
|
-
${s.text}`),rubric:t.rubric??$t}))).text,findings:o,degraded:i}}a(Bt,"runParallelInvestigation");var qe={meta:{name:"parallel-investigation",description:"Fan out read-only investigators over a question (split by target areas), then synthesize ranked, evidence-keeping findings.",maxAgents:8,maxConcurrency:4,readOnly:!0,phases:["investigate","synthesize"]},run:Bt};function Lt(e){return{meta:e.meta,run:a((t,n)=>e.run(t,n),"run")}}a(Lt,"erase");var je=[Lt(qe)];function Be(e){return je.find(t=>t.meta.name===e)}a(Be,"getBuiltinWorkflow");function Yn(){return je.map(e=>e.meta)}a(Yn,"listBuiltinWorkflows");import{mkdir as Ge,readdir as Ut,readFile as N,rename as Vt,unlink as ae,writeFile as ie}from"node:fs/promises";import{basename as Kt,dirname as oe,join as E}from"node:path";import{pathToFileURL as Gt}from"node:url";var ze=[".workflow.json",".ts",".mjs",".js"],O="0.7.49";function Je(){return"0.7.59"}a(Je,"currentKodaxWorkflowVersion");function zt(e){return e.endsWith(".workflow.json")?"capability-generated":"trusted-local"}a(zt,"executionForPath");function Jt(e){let t=ze.find(n=>e.endsWith(n));return t?e.slice(0,-t.length):void 0}a(Jt,"stripWorkflowSuffix");function se(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}a(se,"safeWorkflowName");function ce(e){return typeof e=="object"&&e!==null}a(ce,"isRecord");function Le(e,t){let n=e[t];if(typeof n!="string"||n.length===0)throw new Error(`workflow run.json missing ${t}`);return n}a(Le,"readRequiredString");async function Ue(e,t){if(!e)return[];let n;try{n=await Ut(e)}catch{return[]}let o=new Map;for(let i of ze)for(let r of n){if(!r.endsWith(i))continue;let s=Jt(r);if(!s||s.length===0||o.has(s))continue;let c=E(e,r);o.set(s,{name:s,path:c,source:t,execution:zt(c)})}return[...o.values()]}a(Ue,"scanDir");async function D(e){let t=await Ue(e.personal,"personal"),n=await Ue(e.project,"project"),o=new Map;for(let i of t)o.set(i.name,i);for(let i of n)o.set(i.name,i);return[...o.values()].sort((i,r)=>i.name.localeCompare(r.name))}a(D,"discoverSavedWorkflows");function Ht(e){return typeof e=="object"&&e!==null&&"meta"in e&&"run"in e&&typeof e.run=="function"}a(Ht,"isWorkflowModule");function Xt(e){let t=e.default;if(Ht(t))return t;let n=typeof t=="function"?t:e.run,o=e.workflow??e.meta;if(typeof n=="function"&&typeof o=="object"&&o!==null&&"name"in o)return{meta:o,run:n};throw new Error("invalid workflow module: expected a `{ meta, run }` default export, or `export const workflow = {...}` + a default run function")}a(Xt,"normalizeWorkflowModule");function Yt(e){let t=JSON.parse(e);if(!ce(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=H(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 o=$(t.manifest);return{manifest:o,source:n,capsule:W({minKodaxVersion:O,manifest:o,source:n}),legacy:!0}}a(Yt,"parseGeneratedWorkflowFile");async function fe(e){let t=Yt(await N(e,"utf8"));return t.capsule??W({minKodaxVersion:O,manifest:t.manifest,source:t.source})}a(fe,"loadSavedWorkflowCapsule");async function He(e){if(e.endsWith(".workflow.json"))return X(await fe(e));let t=await import(Gt(e).href);return Xt(t)}a(He,"loadSavedWorkflow");function de(e){if(e.mayUseWorktree===!0)return{environment:["git-repo","worktree-capable"]}}a(de,"deriveRequirements");function U(e,t){J(t,{filename:`${e.name}.workflow.js`,requireAsyncRun:!0})}a(U,"assertGeneratedCapsuleSource");async function Zt(e){let t=se(e.name),n=$(e.manifest);U(n,e.source);let o=e.requires??de(n),i=W({minKodaxVersion:e.minKodaxVersion??O,manifest:n,source:e.source,...e.intent!==void 0?{intent:e.intent}:{},...e.inputs!==void 0?{inputs:e.inputs}:{},...o!==void 0?{requires:o}:{},...e.provenance!==void 0?{provenance:e.provenance}:{}});await Ge(e.dir,{recursive:!0});let r=E(e.dir,`${t}.workflow.json`);return await ie(r,`${JSON.stringify(i,null,2)}
|
|
13
|
-
`,"utf8"),{name:t,path:r,source:"project",execution:"capability-generated"}}a(Zt,"saveGeneratedWorkflow");async function Ve(e,t){await ie(e,`${JSON.stringify(t,null,2)}
|
|
14
|
-
`,"utf8")}a(Ve,"writeCapsuleFile");async function Qt(e){try{return await N(e,"utf8"),!0}catch{return!1}}a(Qt,"fileExists");async function or(e){let t=(await D(e.dirs)).filter(c=>c.name===e.name).filter(c=>e.source===void 0||c.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 o=se(e.newName),i=E(oe(n.path),`${o}.workflow.json`);if(i!==n.path&&await Qt(i))throw new Error(`saved workflow already exists: ${o}`);let r=await fe(n.path);U(r.manifest,r.source);let s=W({minKodaxVersion:r.minKodaxVersion,manifest:{...r.manifest,name:o},source:r.source,...r.intent!==void 0?{intent:r.intent}:{},...r.inputs!==void 0?{inputs:r.inputs}:{},...r.requires!==void 0?{requires:r.requires}:{},...r.provenance!==void 0?{provenance:r.provenance}:{}});return await ie(i,`${JSON.stringify(s,null,2)}
|
|
15
|
-
`,"utf8"),i!==n.path&&await ae(n.path),{name:o,path:i,source:n.source,execution:"capability-generated"}}a(or,"renameSavedWorkflow");async function ar(e){let t=(await D(e.dirs)).filter(o=>o.name===e.name).filter(o=>e.source===void 0||o.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 ae(n.path),n}a(ar,"deleteSavedWorkflow");async function ir(e){let t=se(e.name),n=(await D(e.dirs)).filter(m=>m.name===t).filter(m=>e.savedSource===void 0||m.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 o=n[0];if(!o.path.endsWith(".workflow.json"))throw new Error("only generated workflow capsules can be replaced");let i=$({...e.manifest,name:t});U(i,e.source);let r=e.requires??de(i),s=W({minKodaxVersion:e.minKodaxVersion??O,manifest:i,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}:{}}),c=await fe(o.path),p=new Date().toISOString().replace(/[:.]/g,"-"),l=E(oe(o.path),".revisions",t),h=`${p}-${process.hrtime.bigint().toString(36)}`,v=E(l,`${t}-${h}.workflow.json`),k=E(oe(o.path),`.${t}.${process.pid}.${Date.now().toString(36)}.tmp`);await Ge(l,{recursive:!0}),await Ve(v,c);try{await Ve(k,s),await Vt(k,o.path)}catch(m){try{await ae(k)}catch{}throw m}return{name:t,path:o.path,source:o.source,execution:"capability-generated",previousPath:v}}a(ir,"replaceSavedWorkflow");function en(e){if(!ce(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}a(en,"readOptionalOriginalRequest");function Xe(e){return tn(e)}a(Xe,"buildCapsuleFromRun");async function tn(e){let t=JSON.parse(await N(E(e.runDir,"run.json"),"utf8"));if(!ce(t))throw new Error("workflow run.json must be an object");let n=Le(t,"scriptSnapshotPath"),o=Le(t,"manifestSnapshotPath"),i=await N(n,"utf8"),r=$(JSON.parse(await N(o,"utf8")));U(r,i);let s=typeof t.runId=="string"&&t.runId.length>0?t.runId:Kt(e.runDir),c=en(t.args),p=de(r),l=Se(r,c!==void 0?{originalRequest:c}:{}),h={description:"Provide new workflow args matching the generated request shape.",..."args"in t?{examples:[t.args]}:{}};return W({minKodaxVersion:O,manifest:r,source:i,intent:l,inputs:h,...p!==void 0?{requires:p}:{},provenance:{fromRunId:s,createdAt:new Date().toISOString(),kodaxVersion:Je()}})}a(tn,"readCapsuleFromRun");async function sr(e){let t=await Xe(e);return{capsule:t,module:X(t)}}a(sr,"loadGeneratedWorkflowFromRun");async function cr(e){let t=await Xe(e);return Zt({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})}a(cr,"saveGeneratedWorkflowFromRun");function R(e,t,n,o){e.push({severity:t,requirement:n,message:o})}a(R,"addRequirementIssue");function Ke(e){let t=/^v?(\d+)\.(\d+)\.(\d+)(?:[-+].*)?$/.exec(e.trim());if(t)return[Number(t[1]),Number(t[2]),Number(t[3])]}a(Ke,"parseSemver");function nn(e,t){for(let n=0;n<3;n+=1){let o=e[n]-t[n];if(o!==0)return o}return 0}a(nn,"compareSemver");function rn(e,t,n){let o=Ke(t),i=Ke(n);if(!o){R(e,"error","kodax:min-version",`workflow minKodaxVersion is not valid semver: ${t}`);return}if(!i){R(e,"warning","kodax:min-version",`cannot verify workflow minKodaxVersion ${t}; current version is unknown`);return}nn(i,o)<0&&R(e,"error","kodax:min-version",`workflow requires KodaX >= ${t}, current version is ${n}`)}a(rn,"addMinVersionIssue");function re(e,t,n,o){if(!n)return;if(!o){for(let r of n)R(e,"warning",`${t}:${r}`,`workflow requires ${t}:${r}, but no ${t} inventory was provided`);return}let i=new Set(o);for(let r of n)i.has(r)||R(e,"error",`${t}:${r}`,`missing required workflow ${t}: ${r}`)}a(re,"addMissingItems");function fr(e,t={}){let n=H(e),o=[],i=n.requires;rn(o,n.minKodaxVersion,t.kodaxVersion??Je()),i?.environment?.includes("git-repo")&&t.isGitRepo===!1&&R(o,"error","environment:git-repo","workflow requires a git repository"),i?.environment?.includes("worktree-capable")&&t.worktreeCapable===!1&&R(o,"error","environment:worktree-capable","workflow may request git worktree isolation");try{J(n.source,{filename:`${n.manifest.name}.workflow.js`,requireAsyncRun:!0})}catch(r){let s=r instanceof Error?r.message:String(r);R(o,"error","workflow:source",s)}return re(o,"tools",i?.tools,t.availableTools),re(o,"mcp",i?.mcp,t.availableMcp),re(o,"skills",i?.skills,t.availableSkills),{ok:!o.some(r=>r.severity==="error"),issues:o}}a(fr,"preflightWorkflowCapsule");function an(e){return{project:Ye(e,".kodax","workflows"),personal:Ye(on(),".kodax","workflows")}}a(an,"defaultSavedWorkflowDirs");async function sn(e,t){let o=(await D(t)).find(i=>i.name===e);if(o)return He(o.path)}a(sn,"resolveSavedByName");function Ze(e){let t=an(e);return async n=>Be(n)??await sn(n,t)}a(Ze,"createNestedWorkflowResolver");import{existsSync as cn,mkdirSync as fn,readFileSync as dn,writeFileSync as Qe}from"node:fs";import{join as _}from"node:path";var et="results";function tt(e){return e.replace(/[^a-zA-Z0-9._-]/g,"_")}a(tt,"safeKey");function nt(e,t){let n=_(e,t);if(cn(n))try{return JSON.parse(dn(n,"utf8"))}catch{return}}a(nt,"readResult");function rt(e,t={}){let n=_(e,et);fn(n,{recursive:!0});let o=t.readFrom?_(t.readFrom,et):void 0;return{get:a(i=>{let r=`${tt(i)}.json`,s=nt(n,r);if(s!==void 0)return s;if(o===void 0)return;let c=nt(o,r);if(c!==void 0){try{Qe(_(n,r),JSON.stringify(c),"utf8")}catch{}return c}},"get"),set:a((i,r)=>{try{Qe(_(n,`${tt(i)}.json`),JSON.stringify(r),"utf8")}catch{}},"set")}}a(rt,"createFsResultCache");import{mkdirSync as un,appendFileSync as ln,writeFileSync as V}from"node:fs";import{join as A}from"node:path";function mn(e){let t=e.replace(/[^a-zA-Z0-9._-]/g,"_").slice(0,120);return t.length>0?t:"artifact"}a(mn,"safeWorkflowArtifactName");function ot(e,t={}){let n=t.now??(()=>Date.now()),o=A(e,"artifacts");un(o,{recursive:!0});let i=A(e,"events.jsonl");return{runDir:e,onEvent:a(r=>{ln(i,`${JSON.stringify({...r,ts:n()})}
|
|
16
|
-
`,"utf8")},"onEvent"),writeArtifact:a((r,s)=>{let c=A(o,`${mn(r)}.json`);return V(c,JSON.stringify(s,null,2),"utf8"),{name:r,path:c}},"writeArtifact"),writeScriptSnapshot:a(r=>{let s=A(e,"script.js");if(V(s,r.source,"utf8"),!r.manifest)return{scriptPath:s};let c=A(e,"manifest.json");return V(c,`${JSON.stringify(r.manifest,null,2)}
|
|
17
|
-
`,"utf8"),{scriptPath:s,manifestPath:c}},"writeScriptSnapshot"),writeRunJson:a(r=>{let s=ye(r.processMetadata?.hostMetadata),c={runId:r.state.runId,workflow:r.meta.name,status:r.state.status,totalSpawned:r.state.totalSpawned,artifacts:r.state.artifacts.map(p=>p.name),eventCount:r.state.events.length,startedAt:r.startedAt,endedAt:r.endedAt,args:r.args,...r.resultSummary!==void 0?{resultSummary:r.resultSummary}:{},...r.processMetadata?.displayName!==void 0?{displayName:r.processMetadata.displayName}:{},...r.processMetadata?.goal!==void 0?{goal:r.processMetadata.goal}:{},...r.processMetadata?.source!==void 0?{source:r.processMetadata.source}:{},...r.processMetadata?.savedWorkflowName!==void 0?{savedWorkflowName:r.processMetadata.savedWorkflowName}:{},...r.processMetadata?.sourceRunId!==void 0?{sourceRunId:r.processMetadata.sourceRunId}:{},...r.processMetadata?.sourceWorkflowName!==void 0?{sourceWorkflowName:r.processMetadata.sourceWorkflowName}:{},...r.processMetadata?.revisionOf!==void 0?{revisionOf:r.processMetadata.revisionOf}:{},...r.processMetadata?.resumedFromRunId!==void 0?{resumedFromRunId:r.processMetadata.resumedFromRunId}:{},...s!==void 0?{hostMetadata:s}:{},...r.scriptSnapshot?{scriptSnapshotPath:r.scriptSnapshot.scriptPath,...r.scriptSnapshot.manifestPath?{manifestSnapshotPath:r.scriptSnapshot.manifestPath}:{}}:{}};V(A(e,"run.json"),`${JSON.stringify(c,null,2)}
|
|
18
|
-
`,"utf8")},"writeRunJson")}}a(ot,"createRunGraphWriter");import{execFile as wn}from"node:child_process";import{promisify as pn}from"node:util";import{statSync as hn}from"node:fs";import{join as gn}from"node:path";var kn=pn(wn);function le(e){return gn(e,"worktrees")}a(le,"workflowWorktreeBaseDir");var yn=360*60*1e3;function it(e,t){return kn("git",[...e],{cwd:t}).then(n=>n.stdout)}a(it,"defaultRunGit");function vn(e){return hn(e).mtimeMs}a(vn,"defaultMtimeMs");function Sn(e){let t=[],n,o,i=a(()=>{n&&t.push(o?{path:n,branch:o}:{path:n}),n=void 0,o=void 0},"flush");for(let r of e.split(/\r?\n/))r.startsWith("worktree ")?(i(),n=r.slice(9).trim()):r.startsWith("branch ")&&(o=r.slice(7).trim().replace(/^refs\/heads\//,""));return i(),t}a(Sn,"parseWorktreeList");function at(e){return e.replace(/\\/g,"/").replace(/\/+$/,"")}a(at,"normalize");function st(e,t){let n=at(e),o=at(t);return n===o||n.startsWith(`${o}/`)}a(st,"isUnder");async function xn(e,t,n){try{let i=(await t(["status","--porcelain"],e.path)).split(/\r?\n/).filter(c=>c.trim().length>0).length,r=await t(["rev-list","--count","HEAD","--not","--remotes"],e.path),s=Number.parseInt(r.trim(),10)||0;return i>0||s>0}catch(o){return n.push(`retain ${e.path}: cannot verify worktree cleanliness: ${o instanceof Error?o.message:String(o)}`),!0}}a(xn,"worktreeHasChanges");async function ct(e,t,n,o,i){if(await xn(e,n,i)){i.push(`retain ${e.path}: worktree has unmerged changes`);return}try{await n(["worktree","remove",e.path,"--force"],t),o.push(e.path)}catch(r){i.push(`remove ${e.path}: ${r instanceof Error?r.message:String(r)}`);return}if(e.branch)try{await n(["branch","-D",e.branch],t)}catch{}}a(ct,"removeWorktree");async function ft(e,t,n){try{let o=await t(["worktree","list","--porcelain"],e);return Sn(o)}catch(o){n.push(`list worktrees: ${o instanceof Error?o.message:String(o)}`);return}}a(ft,"listWorktrees");async function ue(e,t,n){try{await t(["worktree","prune"],e)}catch(o){n.push(`prune: ${o instanceof Error?o.message:String(o)}`)}}a(ue,"prune");async function dt(e,t={}){let n=[],o=[];if(!e.gitRoot)return{removed:o,warnings:n};let i=t.runGit??it,r=await ft(e.gitRoot,i,n);if(!r)return{removed:o,warnings:n};for(let s of r)st(s.path,e.baseDir)&&await ct(s,e.gitRoot,i,o,n);return o.length>0&&await ue(e.gitRoot,i,n),{removed:o,warnings:n}}a(dt,"sweepWorkflowRunWorktrees");async function ut(e,t={}){let n=[],o=[];if(!e.gitRoot)return{removed:o,warnings:n};let i=t.runGit??it,r=t.mtimeMs??vn,s=t.now??(()=>Date.now()),c=e.maxAgeMs??yn;await ue(e.gitRoot,i,n);let p=await ft(e.gitRoot,i,n);if(!p)return{removed:o,warnings:n};for(let l of p){if(!st(l.path,e.workflowRunsRoot))continue;let h;try{h=s()-r(l.path)}catch{continue}h>=c&&await ct(l,e.gitRoot,i,o,n)}return o.length>0&&await ue(e.gitRoot,i,n),{removed:o,warnings:n}}a(ut,"pruneStaleWorkflowWorktrees");var bn=200,lt={maxAgents:64,tokenBudget:2e5};function Wn(e,t){let n=e.meta,o=K(n,t);return{name:n.name,description:n.description,phases:n.phases??[],...n.plannedAgents!==void 0?{plannedAgents:n.plannedAgents}:{},maxAgents:o.maxAgents??null,maxConcurrency:o.maxConcurrency??null,tokenBudget:o.tokenBudget??null,writesFiles:n.readOnly!==!0}}a(Wn,"buildApprovalSummary");function me(e,t){if(e!==void 0)return!Number.isInteger(e)||e<=0?1:Math.min(e,t)}a(me,"clampLimit");function Tn(e,t,n){let o=me(e,n),i=me(t,n);return o===void 0?i:i===void 0?o:Math.min(o,i)}a(Tn,"clampEffectiveLimit");function mt(e,t){if(!(e==null||!Number.isFinite(e)||e<=0))return Math.min(Math.floor(e),t)}a(mt,"clampTokenBudget");function En(e,t,n){let o=mt(e,n),i=mt(t,n);return o===void 0?i:i===void 0?o:Math.min(o,i)}a(En,"clampEffectiveTokenBudget");function K(e,t){let n=Tn(e.maxAgents,t?.maxAgents,lt.maxAgents),o=he(),i=[e.maxConcurrency,t?.maxConcurrency].map(c=>me(c,o)).filter(c=>c!==void 0),r=i.length===0?o:Math.min(o,...i),s=En(e.tokenBudget,t?.tokenBudget,lt.tokenBudget);return{...n!==void 0?{maxAgents:n}:{},...r!==void 0?{maxConcurrency:r}:{},...s!==void 0?{tokenBudget:s}:{}}}a(K,"clampWorkflowLimits");function wt(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 o=n.text;if(typeof o=="string"&&o.trim().length>0)return o}for(let o of["summary","report","text","result"]){let i=t[o];if(typeof i=="string"&&i.trim().length>0)return i}}a(wt,"workflowResultSummary");async function we(e){let t=K(e.module.meta,e.hostPolicy),n=Wn(e.module,e.hostPolicy);if(e.approval&&!await e.approval(n))return{kind:"denied",summary:n};let o=e.now??(()=>Date.now()),i=e.ctx?.executionCwd??e.ctx?.gitRoot;await ut({workflowRunsRoot:Rn(e.runDir),gitRoot:i},{now:o,...e.worktreeSweepDeps});let r=ot(e.runDir,{now:o}),s=e.resumeFromRunDir!==void 0?Mn(e.resumeFromRunDir):void 0,c=e.onWorkflowProcessEvent?ve({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}:{},...s!==void 0?{resumedFromRunId:s}:{},...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:a(()=>new Date(o()).toISOString(),"now")}):void 0,p=e.scriptSnapshot?r.writeScriptSnapshot(e.scriptSnapshot):void 0,l=e.backend??An(e),v={...e.beforeSpawn?Pn(l,e.beforeSpawn):l,writeArtifact:a(async(x,pe)=>r.writeArtifact(x,pe),"writeArtifact")},k=o(),m;try{m=await xe({runId:e.runId,args:e.args,backend:v,limits:t,...e.signal?{signal:e.signal}:{},summarizeResult:wt,resolveWorkflowModule:Ze(i??process.cwd()),resultCache:rt(e.runDir,e.resumeFromRunDir?{readFrom:e.resumeFromRunDir}:{}),onEvent:a(x=>{r.onEvent(x),c&&e.onWorkflowProcessEvent?.(c.applyEvent(x)),e.onEvent?.(x)},"onEvent")},x=>e.module.run(x,e.args))}finally{await dt({baseDir:le(e.runDir),gitRoot:i},{now:o,...e.worktreeSweepDeps})}let G=m.ok?wt(m.result):void 0;return r.writeRunJson({meta:e.module.meta,args:e.args,state:m.state,startedAt:k,endedAt:o(),...p?{scriptSnapshot:p}:{},...G!==void 0?{resultSummary:G}:{},...e.processMetadata!==void 0||s!==void 0?{processMetadata:{...e.processMetadata,...s!==void 0?{resumedFromRunId:s}:{}}}:{}}),m.ok?{kind:"completed",result:m.result,state:m.state}:{kind:"failed",error:m.error,state:m.state}}a(we,"runWorkflowModule");function An(e){if(!e.ctx||!e.childOptions)throw new Error("runWorkflowModule requires either a backend or ctx + childOptions");return _e({ctx:e.ctx,childOptions:e.childOptions,runId:e.runId})}a(An,"buildBackend");function Pn(e,t){return{...e,spawn:a(async n=>(await t(),e.spawn(n)),"spawn")}}a(Pn,"withBeforeSpawn");function Fn(e,t,n){let o=e?.onWorkflowAgentDigest;o&&(n.type==="agent_completed"||n.type==="agent_unverified"||n.type==="agent_failed"||n.type==="agent_summary_updated")&&o({runId:t,event:n})}a(Fn,"emitWorkflowAgentDigest");async function pt(e){let t={...Ee({options:e.options,runtime:e.options.extensionRuntime,managedProtocolPayloadRef:{current:void 0}}),workflowWorktreeBaseDir:le(e.runDir)},n={maxIterationsPerChild:bn,parentRole:"worker",parentHarness:"tool-dispatch",parentOptions:{provider:e.options.provider,model:e.options.modelOverride??e.options.model,effort:e.options.effort,reasoningMode:e.options.reasoningMode,repoIntelligenceMode:e.options.context?.repoIntelligenceMode,repoIntelligenceTrace:e.options.context?.repoIntelligenceTrace,extensionRuntime:e.options.extensionRuntime,events:e.options.events},...e.options.guardrails?{guardrails:e.options.guardrails}:{},...t.planModeBlockCheck?{planModeBlockCheck:t.planModeBlockCheck}:{}},o=e.onWorkflowProcessEvent||e.options.events?.onWorkflowProcessEvent?r=>{e.onWorkflowProcessEvent?.(r),e.options.events?.onWorkflowProcessEvent?.(r)}:void 0,i=e.onEvent||e.options.events?.onWorkflowAgentDigest?r=>{e.onEvent?.(r),Fn(e.options.events,e.runId,r)}:void 0;return we({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}:{},...i?{onEvent:i}:{},...o?{onWorkflowProcessEvent:o}:{},...e.options.workflowHostPolicy?{hostPolicy:e.options.workflowHostPolicy}:{},...e.now?{now:e.now}:{},...e.scriptSnapshot?{scriptSnapshot:e.scriptSnapshot}:{},...e.resumeFromRunDir?{resumeFromRunDir:e.resumeFromRunDir}:{},...e.processMetadata?{processMetadata:e.processMetadata}:{},...e.beforeSpawn?{beforeSpawn:e.beforeSpawn}:{}})}a(pt,"runWorkflowFromOptions");function Cn(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 o=n.text;if(typeof o=="string"&&o.trim().length>0)return o}for(let o of["summary","report","text","result"]){let i=t[o];if(typeof i=="string"&&i.trim().length>0)return i}}a(Cn,"resultText");function In(e){if(e.kind==="completed"){let t=Cn(e.result);return t!==void 0?{status:"completed",resultText:t}:{status:"completed"}}return e.kind==="denied"?{status:"denied"}:{status:"failed",error:e.error}}a(In,"classifyOutcome");function $n(e,t){return{kind:"failed",error:t instanceof Error?t:new Error(String(t)),state:{runId:e,status:"failed",totalSpawned:0,events:[],artifacts:[]}}}a($n,"failedOutcome");var Nn=1e3;function On(e={},t=Me(e)){let n=new Map,o=a(r=>r?{...r,runDir:n.get(r.runId)??""}:void 0,"withRunDir"),i=a((r,s)=>{if(n.set(r.runId,r.runDir),n.size>Nn){let l=new Set(t.list().map(h=>h.runId));for(let h of n.keys())h!==r.runId&&!l.has(h)&&n.delete(h)}let c=K(r.meta,r.hostPolicy),p=t.start({runId:r.runId,workflow:r.meta.name,...r.meta.phases!==void 0?{phases:r.meta.phases}:{},...c.maxAgents!==void 0?{maxAgents:c.maxAgents}:{},...r.meta.plannedAgents!==void 0?{plannedAgents:r.meta.plannedAgents}:{},...c.tokenBudget!==void 0?{tokenBudget:c.tokenBudget}:{},...r.processMetadata!==void 0?{processMetadata:r.processMetadata}:{},...r.signal?{signal:r.signal}:{},runFn:s,classify:In,onError:a(l=>$n(r.runId,l),"onError")});return{runId:p.runId,done:p.done,getSnapshot:a(()=>o(p.getSnapshot()),"getSnapshot"),getProcessSnapshot:a(()=>p.getProcessSnapshot(),"getProcessSnapshot")}},"startManaged");return{start:a(r=>i({runId:r.runId,runDir:r.runDir,meta:r.module.meta,hostPolicy:r.hostPolicy,processMetadata:r.processMetadata,signal:r.signal},s=>we({...r,signal:s.signal,beforeSpawn:s.beforeSpawn,onEvent:a(c=>{s.onEvent(c),r.onEvent?.(c)},"onEvent")})),"start"),startFromOptions:a(r=>i({runId:r.runId,runDir:r.runDir,meta:r.module.meta,hostPolicy:r.options.workflowHostPolicy,processMetadata:r.processMetadata,signal:r.signal},s=>pt({...r,signal:s.signal,beforeSpawn:s.beforeSpawn,onEvent:a(c=>{s.onEvent(c),r.onEvent?.(c)},"onEvent")})),"startFromOptions"),list:a(()=>t.list().map(r=>({...r,runDir:n.get(r.runId)??""})),"list"),get:a(r=>o(t.get(r)),"get"),subscribeWorkflowProcess:a(r=>t.subscribeWorkflowProcess(r),"subscribeWorkflowProcess"),getWorkflowProcessSnapshot:a(r=>t.getWorkflowProcessSnapshot(r),"getWorkflowProcessSnapshot"),listWorkflowProcessSnapshots:a(r=>t.listWorkflowProcessSnapshots(r),"listWorkflowProcessSnapshots"),pause:a(r=>t.pause(r),"pause"),resume:a(r=>t.resume(r),"resume"),stop:a((r,s)=>t.stop(r,s),"stop")}}a(On,"createWorkflowRunManager");var ht;function Gr(){return ht??=On({},Re()),ht}a(Gr,"getDefaultWorkflowRunManager");export{_e as a,qe as b,je as c,Be as d,Yn as e,D as f,Xt as g,fe as h,He as i,Zt as j,or as k,ar as l,ir as m,sr as n,cr as o,fr as p,mn as q,ot as r,lt as s,Wn as t,K as u,we as v,Fn as w,pt as x,On as y,Gr as z};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
// @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
|
|
2
|
-
import{j as a}from"./chunk-SDSLWDAZ.js";import"./chunk-Z3ZXV3DZ.js";import"./chunk-UA744TZM.js";import"./chunk-SVEJFERZ.js";import"./chunk-S4GVQO3W.js";import"./chunk-PRIBJN5E.js";import"./chunk-BEXLPFFB.js";import"./chunk-V4WSBIXB.js";export{a as startManagedWorkflow};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
// @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
|
|
2
|
-
import{y as a,z as b}from"./chunk-Z3ZXV3DZ.js";import"./chunk-SVEJFERZ.js";import"./chunk-S4GVQO3W.js";import"./chunk-PRIBJN5E.js";import"./chunk-BEXLPFFB.js";import"./chunk-V4WSBIXB.js";export{a as createWorkflowRunManager,b as getDefaultWorkflowRunManager};
|