@kodax-ai/kodax 0.7.69 → 0.7.70
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 +53 -1
- package/LICENSE +158 -191
- package/README.md +38 -5
- package/README_CN.md +31 -7
- package/config-templates/integrations/a2a.example.jsonc +1 -1
- package/dist/chunks/{agent-DQRXT6M7.js → agent-T72XYPW4.js} +1 -1
- package/dist/chunks/argument-completer-QXJC36UP.js +2 -0
- package/dist/chunks/chunk-34L74PEG.js +60 -0
- package/dist/chunks/{chunk-ZG4DMYBS.js → chunk-4P4L3WEK.js} +1 -1
- package/dist/chunks/{chunk-VYKFM3TB.js → chunk-7PV577LP.js} +67 -63
- package/dist/chunks/{chunk-PQ3XUSY2.js → chunk-AQGNRBEJ.js} +189 -180
- package/dist/chunks/{chunk-URC6ZI6P.js → chunk-F4NOOBRZ.js} +1 -1
- package/dist/chunks/{chunk-PA76WUBL.js → chunk-GOQRVDFP.js} +2 -2
- package/dist/chunks/{chunk-VAZ25MDX.js → chunk-K7RYV2SE.js} +2 -2
- package/dist/chunks/{chunk-M7TCFYTO.js → chunk-P2UKNYYS.js} +3 -3
- package/dist/chunks/{chunk-4WIODYOH.js → chunk-RY5OLVQV.js} +1 -1
- package/dist/chunks/{chunk-NGJURAY5.js → chunk-XNQ2O7NI.js} +4 -4
- package/dist/chunks/{compaction-config-ABLL6UH3.js → compaction-config-TC6C2PJ6.js} +1 -1
- package/dist/chunks/{construction-bootstrap-GH6RW6ST.js → construction-bootstrap-BPRXZK4A.js} +1 -1
- package/dist/chunks/{dist-RWL2RBO4.js → dist-UENHF5OS.js} +1 -1
- package/dist/chunks/{host-7SAB4WEC.js → host-XUVAICP7.js} +1 -1
- package/dist/chunks/{run-manager-XMDKTONJ.js → run-manager-T7ALQZNT.js} +1 -1
- package/dist/chunks/{utils-QYE5Y73D.js → utils-TMMH6PKT.js} +1 -1
- package/dist/index.d.ts +8 -8
- package/dist/index.js +6 -6
- package/dist/kodax_cli.js +1207 -1192
- package/dist/runtime-worker.js +1104 -1090
- package/dist/sdk-a2a.d.ts +6 -6
- package/dist/sdk-a2a.js +8 -7
- package/dist/sdk-agent.d.ts +2 -2
- package/dist/sdk-agent.js +1 -1
- package/dist/sdk-coding.d.ts +19 -11
- package/dist/sdk-coding.js +1 -1
- package/dist/sdk-llm.d.ts +1 -1
- package/dist/sdk-mcp.d.ts +2 -2
- package/dist/sdk-mcp.js +1 -1
- package/dist/sdk-repl.d.ts +10 -10
- package/dist/sdk-repl.js +1 -1
- package/dist/sdk-runtime.d.ts +80 -11
- package/dist/sdk-runtime.js +1 -1
- package/dist/sdk-session.d.ts +4 -4
- package/dist/sdk-session.js +1 -1
- package/dist/sdk-skills.js +1 -1
- package/dist/semantic-worker.js +10 -10
- package/dist/types-chunks/{bash-prefix-extractor.d-BkIA8Wto.d.ts → bash-prefix-extractor.d-h9AwGqmO.d.ts} +12 -2
- package/dist/types-chunks/{capability.d-3C62G8Eq.d.ts → capability.d-K664nHOS.d.ts} +21 -6
- package/dist/types-chunks/{commands.d-DkPfcQWG.d.ts → commands.d-DxiVanpI.d.ts} +3 -3
- package/dist/types-chunks/{manager.d-CoEuPRAo.d.ts → manager.d-B67TmPO1.d.ts} +27 -3
- package/dist/types-chunks/{public-api.d-7G4--RZE.d.ts → public-api.d-BqFKI5fK.d.ts} +1 -1
- package/dist/types-chunks/{sdk-session-BQccrODn.d.ts → sdk-session-tcoxrMHQ.d.ts} +2 -2
- package/dist/types-chunks/{types.d-C9YHEAmA.d.ts → types.d-DZaYznxo.d.ts} +2 -2
- package/dist/types-chunks/{utils.d-BbB5jzi1.d.ts → utils.d-B4zc7oot.d.ts} +2 -2
- package/docs/SDK_EMBEDDER_GUIDE.md +112 -19
- package/package.json +2 -2
- package/dist/chunks/argument-completer-RSK6CCGP.js +0 -2
- package/dist/chunks/chunk-Z4PPLJF2.js +0 -60
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
|
|
2
|
-
import{A as Rr,o as Zi,t as es,u as ts,v as ns,y as rs}from"./chunk-PA76WUBL.js";import{B as ut,D as Ui,Da as ms,E as Bi,Ea as ps,F as yr,Fa as hs,Ga as Cr,H as kr,Ha as gs,Ia as vs,J as Tr,K as Fi,L as Wi,La as ys,Ma as ve,N as qt,O as wr,P as Hi,Q as br,R as Gi,S as Vi,T as lt,U as Ki,V as qi,W as Xi,X as zi,Y as Ye,Z as Yi,_ as Ji,c as Pi,d as Gt,f as lr,g as fr,ha as is,i as mr,ia as _r,k as pr,l as Di,la as ss,m as Ni,ma as as,n as hr,na as cs,o as gr,oa as Xt,p as Vt,pa as ds,qa as ls,r as Kt,ra as zt,s as Li,sa as fs,t as vr,ta as ft,u as $i,x as ji,xa as xr,ya as Ar}from"./chunk-4WIODYOH.js";import{a as Er}from"./chunk-Y4WOTWUC.js";import{$ as rr,$c as Ts,Cc as Sr,D as Bt,Dc as us,E as Ri,Gc as Ir,K as Zn,Kc as ks,L as er,M as _i,N as Si,Nc as Yt,P as ct,Pc as Jt,Qc as Qt,R as Ft,Tc as Zt,Uc as en,Wa as ge,Wc as Or,X as dt,Xc as we,Y as tr,_ as nr,a as jt,ad as ws,b as Ti,ba as or,c as Ut,ca as ir,cb as Ai,db as Ci,dd as bs,e as zn,eb as Ii,f as wi,fb as Oi,g as bi,ga as sr,h as Ei,hd as mt,ib as Mi,id as tn,j as Yn,ja as ar,k as Jn,m as Qn,mb as Qi,md as Mr,na as Wt,oa as Ht,ra as cr,ua as dr,va as ur,vd as be,wa as xi,xd as Pr,yb as os}from"./chunk-PQ3XUSY2.js";import{$a as Fn,D as De,Ma as ue,R as Ko,Ya as Un,Za as Mt,_a as Bn,bb as Wn,cb as Pt,e as jn,k as Ot,la as Ne,sa as Le}from"./chunk-UJEMSPM5.js";import{Ba as Zo,I as zo,L as Yo,Nc as ze,Oc as mi,Ra as ei,Ya as pe,_a as ti,ad as Xn,bd as pi,cb as ni,ea as Hn,g as Dt,gc as $t,hb as ri,k as V,l as $e,ld as hi,mb as oi,nb as ii,o as at,od as gi,pb as si,pd as vi,q as Nt,qa as Gn,ra as Jo,rd as yi,sb as Kn,sc as ci,tb as qn,ua as Qo,uc as di,va as Vn,vc as ui,wb as Lt,wc as li,xb as ai,xc as fi,xd as ki,y as Xo}from"./chunk-VYKFM3TB.js";import{b as je,e as Ue}from"./chunk-AWMTNUDS.js";import{u as qo,w as Xe}from"./chunk-F7C7J6IM.js";import{a as o}from"./chunk-ONUPGMER.js";var pt=class extends Error{static{o(this,"KodaXError")}code;constructor(t,n="KODAX_ERROR"){super(t),this.code=n,this.name="KodaXError"}};var Dr=class extends pt{static{o(this,"KodaXToolError")}toolName;toolId;constructor(t,n,r){super(t,"TOOL_ERROR"),this.toolName=n,this.toolId=r,this.name="KodaXToolError"}};var Nr=class extends pt{static{o(this,"KodaXSessionError")}sessionId;constructor(t,n){super(t,"SESSION_ERROR"),this.sessionId=n,this.name="KodaXSessionError"}},Lr=class extends pt{static{o(this,"KodaXTerminalError")}suggestions;constructor(t,n=[]){super(t,"TERMINAL_ERROR"),this.name="KodaXTerminalError",this.suggestions=n}};function jd(){return new nn}o(jd,"createSessionControl");function $r(e,t){let n=new AbortController,r=!1,i=o(f=>{r||(r=!0,n.abort(f))},"markAborted");e.abortSignal&&(e.abortSignal.aborted?i(e.abortSignal.reason):e.abortSignal.addEventListener("abort",()=>i(e.abortSignal.reason),{once:!0}));let s=new nn;s.seed({provider:e.provider,model:e.modelOverride??e.model,reasoning:e.reasoningMode});let c=e.session?.id,a=c!=null,d=c??Ud(),m=!a&&e.session?.autoResume!==!0&&e.session?.resume!==!0?hs({...e.session??{},id:d}):e.session,l={...e,...m!==void 0?{session:m}:{},abortSignal:n.signal,sessionControl:s},h=ve(l,t);return{id:d,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(f=>s.setProvider(f),"setProvider"),setModel:o(f=>s.setModel(f),"setModel"),setReasoning:o(f=>s.setReasoning(f),"setReasoning"),abort:o(f=>i(f),"abort"),result:h}}o($r,"startKodaX");function Ud(){return`sess_${Date.now()}_${Math.random().toString(36).slice(2,10)}`}o(Ud,"generateSessionId");var nn=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 Bd(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(Bd,"observe");var jr={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:Bd};function Fd(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(Fd,"admit");var Ur={id:"budgetCeiling",description:"manifest.maxBudget must be \u2264 systemCap.maxBudget; over-cap declarations are clamped down to the cap.",admit:Fd};function Wd(e,t){return{ok:!0}}o(Wd,"observe");var Es={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:Wd};function Hd(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(Hd,"observe");var Rs={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:Hd};function Br(e){switch(e){case"read":case"glob":case"grep":case"code_search":case"semantic_lookup":case"lsp_definition":case"lsp_hover":case"lsp_references":case"lsp_document_symbols":case"lsp_workspace_symbols":case"lsp_implementation":case"lsp_prepare_call_hierarchy":case"lsp_incoming_calls":case"lsp_outgoing_calls":case"repo_overview":case"changed_scope":case"changed_diff":case"changed_diff_bundle":case"module_context":case"symbol_context":case"process_context":case"impact_estimate":case"relationship_scan":case"cyclic_dependencies":case"ask_user_question":case"exit_plan_mode":return"read";case"write":case"edit":case"multi_edit":case"insert_after_anchor":case"undo":return"edit";case"bash":return"bash:mutating";case"web_search":case"web_fetch":case"mcp_search":case"mcp_describe":case"mcp_call":case"mcp_read_resource":case"mcp_get_prompt":return"bash:network";case"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(Br,"resolveToolCapability");function Gd(e){if(typeof e=="object"&&e!==null&&"name"in e){let t=e.name;if(typeof t=="string"&&t.length>0)return t}}o(Gd,"getToolName");function Vd(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=Gd(c);if(!a)continue;let d=Br(a);n.has(d)||r.push({name:a,capability:d})}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(Vd,"admit");var Fr={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:Vd};var _s=[Ur,Fr,jr,Es,Rs];function Kd(){Zo();for(let e of _s)Yo(e)}o(Kd,"registerCodingInvariants");var rn=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 ve({...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}};var qd="KODAX_VERIFIER_PROVIDER",Xd="KODAX_VERIFIER_MODEL";function zd(e){if(Le(e))try{return Ne(e)}catch{return}}o(zd,"tryGetProvider");function on(e){let t=e.env??process.env,n=t[qd],r=t[Xd];if(n&&r){let i=zd(n);if(i)return{provider:i,model:r,providerName:n,source:"explicit-env"}}return{provider:e.mainProvider,model:e.mainModel,providerName:e.mainProviderName,source:"inherit-main"}}o(on,"resolveVerifierProvider");function Wr(e){let t=e.context?.agentProfile;if(!t)return;let n=t.verification,r=e.context?.taskVerification;if(!n&&!r)return;let i={...n,...r};return Array.isArray(r?.criteria)&&r.criteria.length===0&&Array.isArray(n?.criteria)&&n.criteria.length>0?{...i,criteria:n.criteria}:i}o(Wr,"resolveEffectiveVerification");function Yd(e){let t=e.provider??"anthropic";if(Le(t))try{let n=on({mainProvider:Ne(t),mainProviderName:t,mainModel:e.modelOverride??e.model});return{provider:n.providerName,...n.model!==void 0?{model:n.model}:{}}}catch{return}}o(Yd,"resolveVerifierAttribution");function Hr(e,t){let n=e.events?.onEffectiveConfig;if(!n)return;let r=t.verifier??Yd(e),i={agentMode:t.agentMode,agentProfile:e.context?.agentProfile,toolScope:t.toolScope,verification:Wr(e),...r?{verifier:r}:{}};try{n(i)}catch{}}o(Hr,"emitEffectiveTaskConfig");var Ss="kodax-review-findings",xs="kodax-investigation-shards",As="kodax-lookup-shards",Cs="kodax-child-result";var Is="kodax-budget-request";function Be(e,t=!1){return{globalWorkBudget:e?.totalBudget,budgetUsage:e?.spentBudget,budgetApprovalRequired:t}}o(Be,"buildManagedStatusBudgetFields");function Fe(e,t=1){e.spentBudget=Math.max(0,e.spentBudget+t)}o(Fe,"incrementManagedBudgetUsage");function Qd(e,t=200){e.totalBudget+=t}o(Qd,"extendManagedWorkBudget");async function Gr(e,t,n){if(!e?.askUser)return"skipped";if(!n.force){let d=Math.ceil(t.totalBudget*.9);if(t.spentBudget<d)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=pe(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?`,allowCustomInput:!1,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${vr(n.summary,80)}`:`Finish now with the current best result. Latest note: ${vr(n.summary,80)}`}],default:"continue"})),a=t.totalBudget;return c==="continue"?(t.lastApprovalBudgetTotal=a,Qd(t,r),"approved"):(t.lastApprovalBudgetTotal=a,"denied")}o(Gr,"maybeRequestAdditionalWorkBudget");import{mkdir as Zd,readdir as eu,readFile as Ms,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 Je from"node:path";import Os from"node:path";function Ee(e){return e.context?.taskSurface??"cli"}o(Ee,"getManagedTaskSurface");function Re(e,t){if(e.context?.managedTaskWorkspaceDir?.trim())return Os.resolve(e.context.managedTaskWorkspaceDir);let n=e.context?.executionCwd??e.context?.gitRoot??process.cwd();return Os.resolve(n,".agent","managed-tasks")}o(Re,"getManagedTaskWorkspaceRoot");var su=iu(ou),Ps=3600*1e3,an="checkpoint.json";function Vr(e){let t=e.session?.id?.trim();return t||void 0}o(Vr,"getCheckpointSessionId");function au(e,t){return t?e.sessionId===t:!1}o(au,"checkpointBelongsToSession");async function cn(e){let t=Je.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 Kr(e,t){await Zd(e,{recursive:!0}),await ru(Je.join(e,an),`${JSON.stringify(t,null,2)}
|
|
2
|
+
import{A as Rr,o as Zi,t as es,u as ts,v as ns,y as rs}from"./chunk-GOQRVDFP.js";import{B as ut,D as Ui,Da as ms,E as Bi,Ea as ps,F as yr,Fa as hs,Ga as Cr,H as kr,Ha as gs,Ia as vs,J as Tr,K as Fi,L as Wi,La as ys,Ma as ve,N as qt,O as wr,P as Hi,Q as br,R as Gi,S as Vi,T as lt,U as Ki,V as qi,W as Xi,X as zi,Y as Ye,Z as Yi,_ as Ji,c as Pi,d as Gt,f as lr,g as fr,ha as is,i as mr,ia as _r,k as pr,l as Di,la as ss,m as Ni,ma as as,n as hr,na as cs,o as gr,oa as Xt,p as Vt,pa as ds,qa as ls,r as Kt,ra as zt,s as Li,sa as fs,t as vr,ta as ft,u as $i,x as ji,xa as xr,ya as Ar}from"./chunk-RY5OLVQV.js";import{a as Er}from"./chunk-Y4WOTWUC.js";import{$ as rr,$c as Ts,Cc as Sr,D as Bt,Dc as us,E as Ri,Gc as Ir,K as Zn,Kc as ks,L as er,M as _i,N as Si,Nc as Yt,P as ct,Pc as Jt,Qc as Qt,R as Ft,Tc as Zt,Uc as en,Wa as ge,Wc as Or,X as dt,Xc as we,Y as tr,_ as nr,a as jt,ad as ws,b as Ti,ba as or,c as Ut,ca as ir,cb as Ai,db as Ci,dd as bs,e as zn,eb as Ii,f as wi,fb as Oi,g as bi,ga as sr,h as Ei,hd as mt,ib as Mi,id as tn,j as Yn,ja as ar,k as Jn,m as Qn,mb as Qi,md as Mr,na as Wt,oa as Ht,ra as cr,ua as dr,va as ur,vd as be,wa as xi,xd as Pr,yb as os}from"./chunk-AQGNRBEJ.js";import{$a as Fn,D as De,Ma as ue,R as Ko,Ya as Un,Za as Mt,_a as Bn,bb as Wn,cb as Pt,e as jn,k as Ot,la as Ne,sa as Le}from"./chunk-UJEMSPM5.js";import{Ba as Zo,I as zo,L as Yo,Nc as ze,Oc as mi,Ra as ei,Ya as pe,_a as ti,ad as Xn,bd as pi,cb as ni,ea as Hn,g as Dt,gc as $t,hb as ri,k as V,l as $e,ld as hi,mb as oi,nb as ii,o as at,od as gi,pb as si,pd as vi,q as Nt,qa as Gn,ra as Jo,rd as yi,sb as Kn,sc as ci,tb as qn,ua as Qo,uc as di,va as Vn,vc as ui,wb as Lt,wc as li,xb as ai,xc as fi,xd as ki,y as Xo}from"./chunk-7PV577LP.js";import{b as je,e as Ue}from"./chunk-AWMTNUDS.js";import{u as qo,w as Xe}from"./chunk-F7C7J6IM.js";import{a as o}from"./chunk-ONUPGMER.js";var pt=class extends Error{static{o(this,"KodaXError")}code;constructor(t,n="KODAX_ERROR"){super(t),this.code=n,this.name="KodaXError"}};var Dr=class extends pt{static{o(this,"KodaXToolError")}toolName;toolId;constructor(t,n,r){super(t,"TOOL_ERROR"),this.toolName=n,this.toolId=r,this.name="KodaXToolError"}};var Nr=class extends pt{static{o(this,"KodaXSessionError")}sessionId;constructor(t,n){super(t,"SESSION_ERROR"),this.sessionId=n,this.name="KodaXSessionError"}},Lr=class extends pt{static{o(this,"KodaXTerminalError")}suggestions;constructor(t,n=[]){super(t,"TERMINAL_ERROR"),this.name="KodaXTerminalError",this.suggestions=n}};function jd(){return new nn}o(jd,"createSessionControl");function $r(e,t){let n=new AbortController,r=!1,i=o(f=>{r||(r=!0,n.abort(f))},"markAborted");e.abortSignal&&(e.abortSignal.aborted?i(e.abortSignal.reason):e.abortSignal.addEventListener("abort",()=>i(e.abortSignal.reason),{once:!0}));let s=new nn;s.seed({provider:e.provider,model:e.modelOverride??e.model,reasoning:e.reasoningMode});let c=e.session?.id,a=c!=null,d=c??Ud(),m=!a&&e.session?.autoResume!==!0&&e.session?.resume!==!0?hs({...e.session??{},id:d}):e.session,l={...e,...m!==void 0?{session:m}:{},abortSignal:n.signal,sessionControl:s},h=ve(l,t);return{id:d,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(f=>s.setProvider(f),"setProvider"),setModel:o(f=>s.setModel(f),"setModel"),setReasoning:o(f=>s.setReasoning(f),"setReasoning"),abort:o(f=>i(f),"abort"),result:h}}o($r,"startKodaX");function Ud(){return`sess_${Date.now()}_${Math.random().toString(36).slice(2,10)}`}o(Ud,"generateSessionId");var nn=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 Bd(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(Bd,"observe");var jr={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:Bd};function Fd(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(Fd,"admit");var Ur={id:"budgetCeiling",description:"manifest.maxBudget must be \u2264 systemCap.maxBudget; over-cap declarations are clamped down to the cap.",admit:Fd};function Wd(e,t){return{ok:!0}}o(Wd,"observe");var Es={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:Wd};function Hd(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(Hd,"observe");var Rs={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:Hd};function Br(e){switch(e){case"read":case"glob":case"grep":case"code_search":case"semantic_lookup":case"lsp_definition":case"lsp_hover":case"lsp_references":case"lsp_document_symbols":case"lsp_workspace_symbols":case"lsp_implementation":case"lsp_prepare_call_hierarchy":case"lsp_incoming_calls":case"lsp_outgoing_calls":case"repo_overview":case"changed_scope":case"changed_diff":case"changed_diff_bundle":case"module_context":case"symbol_context":case"process_context":case"impact_estimate":case"relationship_scan":case"cyclic_dependencies":case"ask_user_question":case"exit_plan_mode":return"read";case"write":case"edit":case"multi_edit":case"insert_after_anchor":case"undo":return"edit";case"bash":return"bash:mutating";case"web_search":case"web_fetch":case"mcp_search":case"mcp_describe":case"mcp_call":case"mcp_read_resource":case"mcp_get_prompt":return"bash:network";case"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(Br,"resolveToolCapability");function Gd(e){if(typeof e=="object"&&e!==null&&"name"in e){let t=e.name;if(typeof t=="string"&&t.length>0)return t}}o(Gd,"getToolName");function Vd(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=Gd(c);if(!a)continue;let d=Br(a);n.has(d)||r.push({name:a,capability:d})}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(Vd,"admit");var Fr={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:Vd};var _s=[Ur,Fr,jr,Es,Rs];function Kd(){Zo();for(let e of _s)Yo(e)}o(Kd,"registerCodingInvariants");var rn=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 ve({...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}};var qd="KODAX_VERIFIER_PROVIDER",Xd="KODAX_VERIFIER_MODEL";function zd(e){if(Le(e))try{return Ne(e)}catch{return}}o(zd,"tryGetProvider");function on(e){let t=e.env??process.env,n=t[qd],r=t[Xd];if(n&&r){let i=zd(n);if(i)return{provider:i,model:r,providerName:n,source:"explicit-env"}}return{provider:e.mainProvider,model:e.mainModel,providerName:e.mainProviderName,source:"inherit-main"}}o(on,"resolveVerifierProvider");function Wr(e){let t=e.context?.agentProfile;if(!t)return;let n=t.verification,r=e.context?.taskVerification;if(!n&&!r)return;let i={...n,...r};return Array.isArray(r?.criteria)&&r.criteria.length===0&&Array.isArray(n?.criteria)&&n.criteria.length>0?{...i,criteria:n.criteria}:i}o(Wr,"resolveEffectiveVerification");function Yd(e){let t=e.provider??"anthropic";if(Le(t))try{let n=on({mainProvider:Ne(t),mainProviderName:t,mainModel:e.modelOverride??e.model});return{provider:n.providerName,...n.model!==void 0?{model:n.model}:{}}}catch{return}}o(Yd,"resolveVerifierAttribution");function Hr(e,t){let n=e.events?.onEffectiveConfig;if(!n)return;let r=t.verifier??Yd(e),i={agentMode:t.agentMode,agentProfile:e.context?.agentProfile,toolScope:t.toolScope,verification:Wr(e),...r?{verifier:r}:{}};try{n(i)}catch{}}o(Hr,"emitEffectiveTaskConfig");var Ss="kodax-review-findings",xs="kodax-investigation-shards",As="kodax-lookup-shards",Cs="kodax-child-result";var Is="kodax-budget-request";function Be(e,t=!1){return{globalWorkBudget:e?.totalBudget,budgetUsage:e?.spentBudget,budgetApprovalRequired:t}}o(Be,"buildManagedStatusBudgetFields");function Fe(e,t=1){e.spentBudget=Math.max(0,e.spentBudget+t)}o(Fe,"incrementManagedBudgetUsage");function Qd(e,t=200){e.totalBudget+=t}o(Qd,"extendManagedWorkBudget");async function Gr(e,t,n){if(!e?.askUser)return"skipped";if(!n.force){let d=Math.ceil(t.totalBudget*.9);if(t.spentBudget<d)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=pe(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?`,allowCustomInput:!1,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${vr(n.summary,80)}`:`Finish now with the current best result. Latest note: ${vr(n.summary,80)}`}],default:"continue"})),a=t.totalBudget;return c==="continue"?(t.lastApprovalBudgetTotal=a,Qd(t,r),"approved"):(t.lastApprovalBudgetTotal=a,"denied")}o(Gr,"maybeRequestAdditionalWorkBudget");import{mkdir as Zd,readdir as eu,readFile as Ms,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 Je from"node:path";import Os from"node:path";function Ee(e){return e.context?.taskSurface??"cli"}o(Ee,"getManagedTaskSurface");function Re(e,t){if(e.context?.managedTaskWorkspaceDir?.trim())return Os.resolve(e.context.managedTaskWorkspaceDir);let n=e.context?.executionCwd??e.context?.gitRoot??process.cwd();return Os.resolve(n,".agent","managed-tasks")}o(Re,"getManagedTaskWorkspaceRoot");var su=iu(ou),Ps=3600*1e3,an="checkpoint.json";function Vr(e){let t=e.session?.id?.trim();return t||void 0}o(Vr,"getCheckpointSessionId");function au(e,t){return t?e.sessionId===t:!1}o(au,"checkpointBelongsToSession");async function cn(e){let t=Je.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 Kr(e,t){await Zd(e,{recursive:!0}),await ru(Je.join(e,an),`${JSON.stringify(t,null,2)}
|
|
3
3
|
`,"utf8")}o(Kr,"writeCheckpoint");async function We(e){try{await nu(Je.join(e,an))}catch{}}o(We,"deleteCheckpoint");async function qr(e){let t=e.context?.gitRoot,n=Ee(e),r=Re(e,n),i;try{i=await eu(r)}catch{return}let s=await cn(t),c=Vr(e),a=Date.now();for(let d of i){let u=Je.join(r,d),m=Je.join(u,an);try{let l=await tu(m);if(!l.isFile())continue;let h=await Ms(m,"utf8"),f=JSON.parse(h);if(!f||typeof f!="object")continue;let p=f;if(p.version!==1||typeof p.taskId!="string"||typeof p.createdAt!="string"||typeof p.gitCommit!="string"||typeof p.harnessProfile!="string"||p.sessionId!==void 0&&typeof p.sessionId!="string")continue;if(p.processId!==void 0||p.pid!==void 0){let P=p.processId??p.pid;if(typeof P!="number"||!Number.isFinite(P))continue}let g=p.processId??p.pid,v={version:1,taskId:p.taskId,...typeof p.sessionId=="string"&&p.sessionId.trim()?{sessionId:p.sessionId}:{},...typeof g=="number"&&Number.isFinite(g)?{processId:g}:{},createdAt:p.createdAt,gitCommit:p.gitCommit,objective:typeof p.objective=="string"?p.objective:"",harnessProfile:p.harnessProfile,currentRound:typeof p.currentRound=="number"?p.currentRound:1,completedWorkerIds:Array.isArray(p.completedWorkerIds)?p.completedWorkerIds.filter(P=>typeof P=="string"):[],scoutCompleted:p.scoutCompleted===!0},E=new Date(v.createdAt).getTime();if(Number.isNaN(E))continue;let k=a-l.mtimeMs;if(k>Ps||k<0){await We(u);continue}if(!au(v,c))continue;if(s&&v.gitCommit&&v.gitCommit!==s){await We(u);continue}let T=Je.join(u,"managed-task.json"),b=await Ms(T,"utf8"),R=JSON.parse(b);if(!R||typeof R!="object")continue;let O=R;if(!O.contract?.taskId||!O.evidence?.workspaceDir)continue;return{checkpoint:v,workspaceDir:u,managedTask:O}}catch{continue}}}o(qr,"findValidCheckpoint");import{mkdir as du,writeFile as oe}from"node:fs/promises";import I from"node:path";function Xr(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(`
|