@kodax-ai/kodax 0.7.69 → 0.7.71

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.
Files changed (87) hide show
  1. package/CHANGELOG.md +187 -1
  2. package/LICENSE +158 -191
  3. package/README.md +100 -17
  4. package/README_CN.md +77 -11
  5. package/config-templates/integrations/a2a.example.jsonc +62 -18
  6. package/dist/chunks/{agent-DQRXT6M7.js → agent-X2EWQADL.js} +1 -1
  7. package/dist/chunks/argument-completer-BLNXDO2F.js +2 -0
  8. package/dist/chunks/chunk-23X6REO4.js +46 -0
  9. package/dist/chunks/{chunk-Y4WOTWUC.js → chunk-44QXPEEE.js} +1 -1
  10. package/dist/chunks/chunk-4DY756KL.js +70 -0
  11. package/dist/chunks/{chunk-AWMTNUDS.js → chunk-52JSZ77P.js} +1 -1
  12. package/dist/chunks/{chunk-I4TPQEJN.js → chunk-64NQBOSN.js} +1 -1
  13. package/dist/chunks/{chunk-URC6ZI6P.js → chunk-A2TFSV5M.js} +1 -1
  14. package/dist/chunks/{chunk-ZG4DMYBS.js → chunk-A574DBTV.js} +2 -2
  15. package/dist/chunks/{chunk-VAZ25MDX.js → chunk-F7KGYHJ3.js} +2 -2
  16. package/dist/chunks/{chunk-M7TCFYTO.js → chunk-GVTM4Z6O.js} +66 -22
  17. package/dist/chunks/{chunk-PA76WUBL.js → chunk-PHH4TRGF.js} +2 -2
  18. package/dist/chunks/chunk-PVUXONQB.js +366 -0
  19. package/dist/chunks/{chunk-WW2O2DEP.js → chunk-SX2WFHIS.js} +1 -1
  20. package/dist/chunks/{chunk-4WIODYOH.js → chunk-T7LYK53M.js} +2 -2
  21. package/dist/chunks/{chunk-F7C7J6IM.js → chunk-VRSVNU2Y.js} +3 -3
  22. package/dist/chunks/chunk-Y5XKAN7C.js +755 -0
  23. package/dist/chunks/{chunk-NGJURAY5.js → chunk-Z535BARK.js} +4 -4
  24. package/dist/chunks/chunk-ZJIMT5I3.js +78 -0
  25. package/dist/chunks/compaction-config-5KKKXYFT.js +2 -0
  26. package/dist/chunks/{construction-bootstrap-GH6RW6ST.js → construction-bootstrap-OXDDDW6O.js} +1 -1
  27. package/dist/chunks/{dist-DRBKYVHF.js → dist-GOUP4YVE.js} +1 -1
  28. package/dist/chunks/{dist-RWL2RBO4.js → dist-IXJRJ27U.js} +1 -1
  29. package/dist/chunks/host-VRKDAN26.js +2 -0
  30. package/dist/chunks/run-manager-Z3W6MDO7.js +2 -0
  31. package/dist/chunks/{utils-QYE5Y73D.js → utils-CFOXDCB5.js} +1 -1
  32. package/dist/index.d.ts +18 -18
  33. package/dist/index.js +6 -6
  34. package/dist/kodax_cli.js +1365 -1296
  35. package/dist/provider-capabilities.json +101 -57
  36. package/dist/runtime-worker.js +1224 -1156
  37. package/dist/sdk-a2a.d.ts +187 -22
  38. package/dist/sdk-a2a.js +8 -7
  39. package/dist/sdk-agent.d.ts +49 -20
  40. package/dist/sdk-agent.js +1 -1
  41. package/dist/sdk-coding.d.ts +33 -25
  42. package/dist/sdk-coding.js +1 -1
  43. package/dist/sdk-experimental-memory.d.ts +1 -1
  44. package/dist/sdk-experimental-memory.js +1 -1
  45. package/dist/sdk-llm.d.ts +7 -7
  46. package/dist/sdk-llm.js +1 -1
  47. package/dist/sdk-mcp.d.ts +2 -2
  48. package/dist/sdk-mcp.js +1 -1
  49. package/dist/sdk-media.d.ts +1 -1
  50. package/dist/sdk-media.js +1 -1
  51. package/dist/sdk-repl.d.ts +17 -17
  52. package/dist/sdk-repl.js +1 -1
  53. package/dist/sdk-runtime.d.ts +96 -17
  54. package/dist/sdk-runtime.js +1 -1
  55. package/dist/sdk-session.d.ts +7 -7
  56. package/dist/sdk-session.js +1 -1
  57. package/dist/sdk-skills.js +1 -1
  58. package/dist/semantic-worker.js +10 -10
  59. package/dist/types-chunks/{base.d-CYjtB68X.d.ts → base.d-Cz_rwpOi.d.ts} +2 -1
  60. package/dist/types-chunks/{bash-prefix-extractor.d-BkIA8Wto.d.ts → bash-prefix-extractor.d-YoiZl5yt.d.ts} +15 -5
  61. package/dist/types-chunks/{capability-learning.d-WtsyRv3O.d.ts → capability-learning.d-_lR0J4iR.d.ts} +1 -1
  62. package/dist/types-chunks/{capability.d-3C62G8Eq.d.ts → capability.d-K664nHOS.d.ts} +21 -6
  63. package/dist/types-chunks/{capsule.d-xJvfh4YR.d.ts → capsule.d-CK5Pfz1k.d.ts} +3 -3
  64. package/dist/types-chunks/{commands.d-DkPfcQWG.d.ts → commands.d-D6g2jq8V.d.ts} +4 -4
  65. package/dist/types-chunks/{guardrail.d-R7AiGfrI.d.ts → guardrail.d-DdeDWnVu.d.ts} +3 -3
  66. package/dist/types-chunks/{guardrail.d-6ZDbNbHO.d.ts → guardrail.d-DilYC1dh.d.ts} +1 -1
  67. package/dist/types-chunks/{manager.d-CoEuPRAo.d.ts → manager.d-B67TmPO1.d.ts} +27 -3
  68. package/dist/types-chunks/{public-api.d-7G4--RZE.d.ts → public-api.d-BvCp5VkW.d.ts} +3 -3
  69. package/dist/types-chunks/{resolver.d-CIVoGc97.d.ts → resolver.d-ssgNSlrh.d.ts} +2 -2
  70. package/dist/types-chunks/{run-manager.d-BaXtkryp.d.ts → run-manager.d-DxU3SSGR.d.ts} +1 -1
  71. package/dist/types-chunks/{sdk-session-BQccrODn.d.ts → sdk-session-wGpa7X_U.d.ts} +4 -4
  72. package/dist/types-chunks/{types.d-CJR7t6iW.d.ts → types.d-CEZZSY9s.d.ts} +2 -2
  73. package/dist/types-chunks/{types.d-BtC4yLYO.d.ts → types.d-CRCaLt_s.d.ts} +55 -7
  74. package/dist/types-chunks/{types.d-TTvpAGWf.d.ts → types.d-Cqaw71Ax.d.ts} +4 -2
  75. package/dist/types-chunks/{types.d-C9YHEAmA.d.ts → types.d-CzsLFqmf.d.ts} +5 -5
  76. package/dist/types-chunks/{utils.d-BbB5jzi1.d.ts → utils.d-Cb6vdvFM.d.ts} +5 -5
  77. package/docs/SDK_EMBEDDER_GUIDE.md +357 -55
  78. package/package.json +5 -2
  79. package/dist/chunks/argument-completer-RSK6CCGP.js +0 -2
  80. package/dist/chunks/chunk-NGHQIGVW.js +0 -46
  81. package/dist/chunks/chunk-PQ3XUSY2.js +0 -357
  82. package/dist/chunks/chunk-UJEMSPM5.js +0 -78
  83. package/dist/chunks/chunk-VYKFM3TB.js +0 -751
  84. package/dist/chunks/chunk-Z4PPLJF2.js +0 -60
  85. package/dist/chunks/compaction-config-ABLL6UH3.js +0 -2
  86. package/dist/chunks/host-7SAB4WEC.js +0 -2
  87. package/dist/chunks/run-manager-XMDKTONJ.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 _e}from"./chunk-NGHQIGVW.js";import{a as o}from"./chunk-ONUPGMER.js";var re=[];function bo(t){let e={id:Symbol("kodax-diagnostic-sink"),sink:t};re.push(e);let n=!1;return()=>{if(n)return;n=!0;let r=re.findIndex(i=>i.id===e.id);r>=0&&re.splice(r,1)}}o(bo,"setKodaXDiagnosticSink");function L(t){let e=_e(t),n=re.at(-1)?.sink;if(n){try{n(e)}catch{}return}if(process.env.KODAX_DIAGNOSTICS_STDERR==="1")try{process.stderr.write(`${Rn(e)}
2
+ import{a as _e}from"./chunk-23X6REO4.js";import{a as o}from"./chunk-ONUPGMER.js";var re=[];function bo(t){let e={id:Symbol("kodax-diagnostic-sink"),sink:t};re.push(e);let n=!1;return()=>{if(n)return;n=!0;let r=re.findIndex(i=>i.id===e.id);r>=0&&re.splice(r,1)}}o(bo,"setKodaXDiagnosticSink");function L(t){let e=_e(t),n=re.at(-1)?.sink;if(n){try{n(e)}catch{}return}if(process.env.KODAX_DIAGNOSTICS_STDERR==="1")try{process.stderr.write(`${Rn(e)}
3
3
  `)}catch{}}o(L,"emitKodaXDiagnostic");function Rn(t){let e=_e(t),n=kn(e.detail);return`[${e.source}] ${e.level}: ${e.message}${n?` ${n}`:""}`}o(Rn,"formatKodaXDiagnostic");function kn(t){if(t===void 0)return"";if(t instanceof Error)return t.stack??t.message;if(typeof t=="string")return t;try{return JSON.stringify(t)}catch{return String(t)}}o(kn,"formatDiagnosticDetail");import{mkdirSync as Sn}from"node:fs";import{homedir as In}from"node:os";import{join as $e}from"node:path";var bn=".kodax",vn="KODAX_HOME",Ee;function Eo(t){Ee=t}o(Eo,"setAgentConfigHome");function st(){if(Ee)return Ee;let t=process.env[vn];return t&&t.length>0?t:$e(In(),bn)}o(st,"getAgentConfigHome");function E(...t){return $e(st(),...t)}o(E,"getAgentConfigPath");function $o(t){if(typeof t!="string"||!/^[a-z][a-z0-9-]{1,31}$/.test(t))throw new Error(`getAppDataDir: invalid appId ${JSON.stringify(t)}. Must match /^[a-z][a-z0-9-]{1,31}$/ (lowercase kebab, 2\u201332 chars).`);if(t==="kodax"||t.startsWith("kodax-"))throw new Error(`getAppDataDir: appId ${JSON.stringify(t)} is reserved (the 'kodax' / 'kodax-*' prefix is reserved for first-party use).`);let e=$e(st(),"apps",t);return Sn(e,{recursive:!0}),e}o($o,"getAppDataDir");import{createHash as at}from"node:crypto";var ct=["tenantId","workspaceId","userId","agentId","projectId","sessionId"];function ie(t,e){return ct.every(n=>e[n]===void 0||e[n]===t[n])}o(ie,"matchesMemoryApplicability");function R(t,e){if(e.length===0)throw new Error(`${t} identity must not be empty`);return at("sha256").update(`${t}\0${e}`).digest("hex")}o(R,"hashMemoryIdentityComponent");function je(t){let e=ct.filter(n=>t[n]!==void 0).map(n=>`${n}=${t[n]}`).join("\0");return at("sha256").update(e).digest("hex")}o(je,"memoryApplicabilityFingerprint");var Fe="f260-v0.7.68.2";import{createHash as xn}from"node:crypto";import{execSync as An}from"node:child_process";import*as k from"node:path";function oe(t){return Pn(t).trim().replace(/^ssh:\/\//,"").replace(/^https?:\/\//,"").replace(/^git@/,"").replace(/\.git$/,"").replace(/[:@/\\]+/g,"-").replace(/^-+|-+$/g,"").toLowerCase()}o(oe,"sanitizeProjectKey");function Pn(t){let e=t.trim();if(!/^[a-z][a-z0-9+.-]*:\/\//i.test(e))return e;try{let n=new URL(e);return`${n.hostname}${n.port.length>0?`:${n.port}`:""}${n.pathname}`}catch{return e.replace(/^([a-z][a-z0-9+.-]*:\/\/)[^/@]+@/i,"$1").replace(/[?#].*$/,"")}}o(Pn,"remoteWithoutCredentials");function se(t){let e=k.resolve(t).toLowerCase();return xn("sha256").update(e).digest("hex").slice(0,16)}o(se,"hashCwd");function ae(t){try{let n=An("git config --get remote.origin.url",{cwd:t,encoding:"utf-8",stdio:["ignore","pipe","ignore"],timeout:1e3}).trim();return n.length>0?n:void 0}catch{return}}o(ae,"tryGitRemote");function ce(t){let e=ae(t),n=e?oe(e):`local-${se(t)}`;return E("projects",n,"memory")}o(ce,"resolveMemoryRoot");function _n(t){return k.join(ce(t),"MEMORY.md")}o(_n,"resolveMemoryEntrypoint");function T(t,e){let n=e==="project"?"projectId":e==="workspace"?"workspaceId":e==="user"?"userId":"agentId",r=t[n];if(r===void 0||r.length===0)throw new Error(`${n} is required for ${e} memory`);return E("memory-scopes",R("tenant",t.tenantId),e,R(e,r))}o(T,"resolveScopedMemoryRoot");function En(t){let e=Me(t),n=Me(E("memory-scopes"));if(e.startsWith(n+k.sep)){let a=e.slice(n.length+1).split(k.sep);return a.length>=4&&/^[0-9a-f]{64}$/.test(a[0]??"")&&["project","workspace","agent","user"].includes(a[1]??"")&&/^[0-9a-f]{64}$/.test(a[2]??"")}let r=Me(E("projects"));if(!e.startsWith(r+k.sep))return!1;let s=e.slice(r.length+1).split(k.sep);return s.length>=3&&s[1]==="memory"}o(En,"isAutoManagedMemoryFile");function Me(t){let e=k.resolve(t);return process.platform==="win32"?e.toLowerCase():e}o(Me,"comparablePath");function $n(t){let e=k.basename(t,".md").toLowerCase();if(e.startsWith("user_")||e==="user")return"user";if(e.startsWith("feedback_")||e==="feedback")return"feedback";if(e.startsWith("project_")||e==="project")return"project";if(e.startsWith("reference_")||e==="reference")return"reference"}o($n,"parseMemoryTypeFromFilename");var jn=/^---\r?\n([\s\S]*?)\r?\n---\r?\n?/;function dt(t){if(t==="user"||t==="feedback"||t==="project"||t==="reference")return t}o(dt,"parseMemoryType");function j(t){let e=jn.exec(t);if(!e)return{frontmatter:{name:void 0,description:void 0,type:void 0},body:t};let n=e[1],r=t.slice(e[0].length).replace(/^\r?\n+/,""),i=pt(n);return{frontmatter:{name:typeof i.name=="string"?i.name:void 0,description:typeof i.description=="string"?i.description:void 0,type:dt(i.type)},body:r}}o(j,"parseMemoryFile");function pt(t){let e={},n=t.split(/\r?\n/);for(let r of n){if(!r.trim()||r.trim().startsWith("#"))continue;let i=r.indexOf(":");if(i===-1)continue;let s=r.slice(0,i).trim();if(!/^[A-Za-z_][A-Za-z0-9_-]*$/.test(s))continue;let a=r.slice(i+1).trim(),c=Fn(a);c!==void 0&&(e[s]=c)}return e}o(pt,"parseScalarFields");function Fn(t){if(t.length!==0){if(t.length>=2){let e=t.charAt(0),n=t.charAt(t.length-1);if(e==='"'&&n==='"'||e==="'"&&n==="'")return t.slice(1,-1)}return t}}o(Fn,"unquote");var Mn=200,Cn=25e3;function Ln(t){let e=t.trim(),n=e.length===0?[]:e.split(`
4
4
  `),r=n.length,i=Buffer.byteLength(e,"utf-8"),s=r>200,a=i>25e3;if(!s&&!a)return{content:e,lineCount:r,byteCount:i,wasLineTruncated:s,wasByteTruncated:a};let c=s?n.slice(0,200).join(`
5
5
  `):e;return Buffer.byteLength(c,"utf-8")>25e3&&(c=On(c,25e3)),{content:c+`
@@ -1,5 +1,5 @@
1
1
  // @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
2
- import{k as f}from"./chunk-AWMTNUDS.js";import{a as h}from"./chunk-ONUPGMER.js";import{createHash as R}from"node:crypto";function O(i){return new y(i)}h(O,"createMemoryAgent");var y=class{static{h(this,"DefaultMemoryAgent")}options;constructor(e){this.options=e}async startSession(e){let t=this.options.initialMemoryPack??await this.options.controlPlane.buildMemoryPack({task:e.objective,identity:e.identity,maxCandidates:12,maxHints:5});return new g(e,t.memoryRevision,t.candidates,this.options)}},g=class{static{h(this,"DefaultMemorySession")}input;memoryRevision;candidates;options;observations=new Map;consumedReminderKeys=new Set;lastSequence=0;closed=!1;completion;prefetchGeneration=0;prefetch;readyPrefetch;queryByEpoch=new Map;injectedReceiptIds=[];constructor(e,t,n,c){this.input=e,this.memoryRevision=t,this.candidates=n,this.options=c}observe(e){if(this.assertOpen(),v(e.summary))return;let t=K(e,this.options.sourcePolicy),n=this.observations.get(e.id);if(n!==void 0){if(n.sequence===t.sequence&&w(n)===w(t))return;throw new Error(`conflicting duplicate memory observation: ${e.id}`)}if(!Number.isSafeInteger(e.sequence)||e.sequence<=this.lastSequence)throw new Error(`memory observation sequence must be strictly monotonic after ${this.lastSequence}`);if(e.summary.trim().length===0)throw new Error("memory observation summary must not be empty");this.observations.set(e.id,t),this.lastSequence=e.sequence}recall(e){this.assertOpen();let t=[...this.observations.values()].filter(d=>d.sequence<=e.throughSequence).filter(d=>I(d,e)).sort((d,l)=>l.sequence-d.sequence).slice(0,3),n=this.candidates.filter(d=>P(d,e)).slice(0,Math.max(0,3-t.length)),c=this.prefetchKey(e),s=this.consumeReadyPrefetch(c).filter(d=>!n.some(l=>l.ref.id===d.ref.id)).slice(0,Math.max(0,3-t.length-n.length)),a=m([...t.flatMap(d=>d.evidence.map(l=>l.ref)),...n.map(d=>d.ref.id),...s.map(d=>d.ref.id)]),r=k([...t.length>0||n.length>0?["exact"]:[],...s.length>0?["semantic_prefetch"]:[]]);if(t.length===0&&n.length===0&&s.length===0){this.startPrefetch(c,e),this.emitDecisionReceipt(e,[],[],r);return}let o=[...t.map(d=>d.summary.trim()),...n.map(d=>d.bodySnippet??d.hook),...s.map(d=>d.bodySnippet??d.hook)].join(`
2
+ import{k as f}from"./chunk-52JSZ77P.js";import{a as h}from"./chunk-ONUPGMER.js";import{createHash as R}from"node:crypto";function O(i){return new y(i)}h(O,"createMemoryAgent");var y=class{static{h(this,"DefaultMemoryAgent")}options;constructor(e){this.options=e}async startSession(e){let t=this.options.initialMemoryPack??await this.options.controlPlane.buildMemoryPack({task:e.objective,identity:e.identity,maxCandidates:12,maxHints:5});return new g(e,t.memoryRevision,t.candidates,this.options)}},g=class{static{h(this,"DefaultMemorySession")}input;memoryRevision;candidates;options;observations=new Map;consumedReminderKeys=new Set;lastSequence=0;closed=!1;completion;prefetchGeneration=0;prefetch;readyPrefetch;queryByEpoch=new Map;injectedReceiptIds=[];constructor(e,t,n,c){this.input=e,this.memoryRevision=t,this.candidates=n,this.options=c}observe(e){if(this.assertOpen(),v(e.summary))return;let t=K(e,this.options.sourcePolicy),n=this.observations.get(e.id);if(n!==void 0){if(n.sequence===t.sequence&&w(n)===w(t))return;throw new Error(`conflicting duplicate memory observation: ${e.id}`)}if(!Number.isSafeInteger(e.sequence)||e.sequence<=this.lastSequence)throw new Error(`memory observation sequence must be strictly monotonic after ${this.lastSequence}`);if(e.summary.trim().length===0)throw new Error("memory observation summary must not be empty");this.observations.set(e.id,t),this.lastSequence=e.sequence}recall(e){this.assertOpen();let t=[...this.observations.values()].filter(d=>d.sequence<=e.throughSequence).filter(d=>I(d,e)).sort((d,l)=>l.sequence-d.sequence).slice(0,3),n=this.candidates.filter(d=>P(d,e)).slice(0,Math.max(0,3-t.length)),c=this.prefetchKey(e),s=this.consumeReadyPrefetch(c).filter(d=>!n.some(l=>l.ref.id===d.ref.id)).slice(0,Math.max(0,3-t.length-n.length)),a=m([...t.flatMap(d=>d.evidence.map(l=>l.ref)),...n.map(d=>d.ref.id),...s.map(d=>d.ref.id)]),r=k([...t.length>0||n.length>0?["exact"]:[],...s.length>0?["semantic_prefetch"]:[]]);if(t.length===0&&n.length===0&&s.length===0){this.startPrefetch(c,e),this.emitDecisionReceipt(e,[],[],r);return}let o=[...t.map(d=>d.summary.trim()),...n.map(d=>d.bodySnippet??d.hook),...s.map(d=>d.bodySnippet??d.hook)].join(`
3
3
  `),b=u(`${a.join("\0")}\0${e.actionSignature??e.decisionIntent}`);if(this.consumedReminderKeys.has(b)){this.emitDecisionReceipt(e,a,[],r);return}return this.consumedReminderKeys.add(b),this.emitDecisionReceipt(e,a,a,r),{content:o,evidenceRefs:a}}query(e){this.assertOpen();let t=p(e.decisionRevision,e.throughSequence),n=E(e.need),c=u([t,this.memoryRevision,n??"",e.actionSignature??"",f].join("\0")),s=this.queryByEpoch.get(t);if(s!==void 0)return s.key===c?s.result:Promise.resolve(void 0);let a=n===void 0?Promise.resolve(void 0):this.queryOnce(e,n);return this.queryByEpoch.set(t,{key:c,result:a}),n===void 0&&this.emitDecisionReceipt(e,[],[],["deliberate_query"]),a}rewind(e){if(this.assertOpen(),!Number.isSafeInteger(e.throughSequence)||e.throughSequence<0)throw new Error("rewind sequence must be a non-negative safe integer");for(let[t,n]of this.observations)n.sequence>e.throughSequence&&this.observations.delete(t);for(this.lastSequence=e.throughSequence,this.consumedReminderKeys.clear(),this.queryByEpoch.clear();this.injectedReceiptIds.length>0;)this.injectedReceiptIds.pop();this.cancelPrefetch("rewind")}complete(e){return this.assertOpen(),this.completion!==void 0?this.completion:(this.completion=this.completeOnce(e),this.completion)}async close(e={}){this.cancelPrefetch("close"),e.drain!==!1&&this.completion!==void 0&&await this.completion,this.closed=!0}async completeOnce(e){if(e.status==="cancelled"||v(e.summary))return;let t=j(this.input,[...this.observations.values()],{...e,status:e.status,evidence:e.evidence.map(n=>q(n,this.options.sourcePolicy))},this.options.now?.()??new Date().toISOString(),this.injectedReceiptIds);await this.options.persistOutcomeDigest?.(t),await this.reviewWithTimeout(t)}async reviewWithTimeout(e){let t=this.options.reviewEpisode;if(t===void 0)return;let n=new AbortController,c=Math.max(1,this.options.reviewTimeoutMs??3e4),s,a=await Promise.race([t(e,n.signal).then(()=>!1),new Promise(r=>{s=setTimeout(()=>{n.abort(),r(!0)},c)})]);s!==void 0&&clearTimeout(s),a&&this.options.onTrace?.({type:"review.timed_out",key:e.reviewKey,detail:`${c}ms`})}assertOpen(){if(this.closed)throw new Error("memory session is closed")}prefetchKey(e){return u([e.decisionRevision,e.decisionIntent,e.actionSignature??"",String(e.throughSequence),this.memoryRevision,this.candidates.map(t=>t.ref.id).join(",")].join("\0"))}async queryOnce(e,t){try{let n=await this.options.controlPlane.buildMemoryPack({task:this.input.objective,identity:this.input.identity,decisionIntent:t,...e.actionSignature!==void 0?{actionSignature:e.actionSignature}:{},maxCandidates:3,maxHints:3,includeSnippets:!0,purpose:"deliberate_query"}),c=n.promptHints.filter(M).filter(o=>o.bodySnippet!==void 0&&o.bodySnippet.trim().length>0).slice(0,3),s=c.map(o=>o.ref.id),a=x(c.map(o=>o.bodySnippet??"")),r=a.length===0?[]:s;return this.emitDecisionReceipt(e,s,r,["deliberate_query"],n.candidates.map(o=>o.ref.id)),a.length===0?void 0:{content:a,evidenceRefs:s}}catch(n){this.emitDecisionReceipt(e,[],[],["deliberate_query"]),this.options.onTrace?.({type:"query.failed",key:p(e.decisionRevision,e.throughSequence),detail:n instanceof Error?n.message:String(n)});return}}emitDecisionReceipt(e,t,n,c,s=this.candidates.map(a=>a.ref.id)){let a=p(e.decisionRevision,e.throughSequence),r=u(s.join("\0")),o={id:`memory-decision:${u([a,f,r,t.join(","),n.join(","),c.join(",")].join("\0")).slice(0,24)}`,decisionEpoch:a,decisionRevision:e.decisionRevision,policyVersion:f,candidateSetFingerprint:r,candidateRefs:[...s],selectedRefs:[...t],injectedRefs:[...n],selectionModes:[...c],...e.actionSignature!==void 0?{actionSignature:e.actionSignature}:{},throughSequence:e.throughSequence};n.length>0&&!this.injectedReceiptIds.includes(o.id)&&this.injectedReceiptIds.push(o.id),this.options.onTrace?.({type:"memory.decision",receipt:o})}consumeReadyPrefetch(e){if(this.readyPrefetch?.key!==e)return[];let t=new Set(this.readyPrefetch.refIds);return this.readyPrefetch=void 0,this.candidates.filter(n=>t.has(n.ref.id))}startPrefetch(e,t){let n=this.options.recallRunner;if(n===void 0||this.candidates.length===0||this.prefetch?.key===e)return;this.cancelPrefetch("superseded");let c=new AbortController,s=++this.prefetchGeneration;this.prefetch={key:e,controller:c};let a=new Set(this.candidates.map(r=>r.ref.id));n({objective:t.objective,decisionContext:t.decisionContext,decisionIntent:t.decisionIntent,candidates:this.candidates.map(r=>({refId:r.ref.id,claim:r.bodySnippet??r.hook,...r.ref.claimKind!==void 0?{claimKind:r.ref.claimKind}:{}})),signal:c.signal}).then(r=>{if(c.signal.aborted||s!==this.prefetchGeneration||this.prefetch?.key!==e){this.options.onTrace?.({type:"recall.prefetch.discarded",key:e});return}this.readyPrefetch={key:e,refIds:m(r.selectedRefIds.filter(o=>a.has(o)))},this.prefetch=void 0,this.options.onTrace?.({type:"recall.prefetch.completed",key:e})}).catch(r=>{c.signal.aborted||(s===this.prefetchGeneration&&(this.prefetch=void 0),this.options.onTrace?.({type:"recall.prefetch.failed",key:e,detail:r instanceof Error?r.message:String(r)}))})}cancelPrefetch(e){if(this.prefetch===void 0)return;let t=this.prefetch.key;this.prefetch.controller.abort(),this.prefetch=void 0,this.prefetchGeneration+=1,this.options.onTrace?.({type:"recall.prefetch.discarded",key:t,detail:e})}};function I(i,e){return i.actionSignature!==void 0&&e.actionSignature!==void 0?i.actionSignature===e.actionSignature:i.claimKey!==void 0&&i.claimKey===e.decisionIntent}h(I,"exactObservationMatch");function P(i,e){return i.ref.actionSignature!==void 0&&e.actionSignature!==void 0?i.ref.actionSignature===e.actionSignature:i.ref.claimKey!==void 0&&i.ref.claimKey===e.decisionIntent}h(P,"exactCandidateMatch");function j(i,e,t,n,c){let s=[...e].reverse().find(o=>o.kind==="outcome"),a=e.at(-1)?.sequence??0,r=u([i.identity.sessionId,String(a),t.status,t.summary].join("\0"));return{id:`memory-outcome:${r.slice(0,24)}`,reviewKey:r,sessionId:i.identity.sessionId,branchId:i.identity.sessionId,sequence:a,objective:i.objective,...s?.actionSignature!==void 0?{actionSignature:s.actionSignature}:{},approach:s?.summary??"episode completion",outcome:t.status,summary:t.summary.trim(),evidenceRefs:m(t.evidence.map(o=>o.ref)),evidence:t.evidence.map(o=>({ref:o.ref,grade:o.requestedGrade,source:o.source,observedAt:o.observedAt})),...c.length>0?{memoryInfluence:m(c).map(o=>({decisionReceiptRef:o,grade:"exposed"}))}:{},visibility:s?.visibility??"prompt_safe",createdAt:n}}h(j,"buildOutcomeDigest");function E(i){let e=i.replace(/\s+/g," ").trim();if(!(e.length===0||S(e)>512||v(e))&&!/^(?:list|show|dump|enumerate)\s+(?:all|every)\s+(?:the\s+)?memor(?:y|ies)\b/i.test(e)&&!/\b(?:all|every)\s+(?:project|workspace|tenant|user|agent)(?:s|'s)?\b/i.test(e))return e}h(E,"normalizeQueryNeed");function S(i){let e=0,t=0;for(let n of i)n.codePointAt(0)<=127?e+=1:t+=1;return Math.ceil(e/4)+t}h(S,"estimateMemoryTokens");function M(i){return i.ref.visibility==="prompt_safe"&&i.ref.authority!=="proposal_only"&&(i.ref.lifecycle==="active"||i.ref.lifecycle==="trusted"||i.ref.lifecycle==="readonly")}h(M,"isGovernedQueryHint");function x(i){let e=i.map(n=>n.replace(/[\u0000-\u0008\u000b\u000c\u000e-\u001f\u007f]/g,"").replace(/<\/?[^>]+>/g,"").replace(/[<>]/g,"").replace(/\s+/g," ").trim()).filter(n=>n.length>0),t=e.join(`
4
4
  `);for(;S(t)>512&&e.length>1;)e.pop(),t=e.join(`
5
5
  `);return S(t)<=512?t:""}h(x,"boundedQueryContent");function p(i,e){return u(`${i}\0${e}`).slice(0,24)}h(p,"decisionEpoch");function k(i){return[...new Set(i)]}h(k,"uniqueModes");function K(i,e){return Object.freeze({...i,evidence:Object.freeze(i.evidence.map(t=>Object.freeze(q(t,e)))),...i.metadata!==void 0?{metadata:Object.freeze({...i.metadata})}:{}})}h(K,"freezeObservation");function q(i,e){let t=e?.(i)??"inferred";return{...i,requestedGrade:_(i.requestedGrade,t)}}h(q,"applySourcePolicy");function _(i,e){let t=["inferred","observed","corroborated","verified","authoritative"];return t[Math.min(t.indexOf(i),t.indexOf(e))]??"inferred"}h(_,"lowerEvidenceGrade");function w(i){return JSON.stringify(i)}h(w,"stableObservation");function m(i){return[...new Set(i)]}h(m,"unique");function u(i){return R("sha256").update(i).digest("hex")}h(u,"digest");function v(i){return/(?:-----BEGIN (?:RSA |EC |OPENSSH )?PRIVATE KEY-----|authorization:\s*bearer\s+\S+|(?:api[_-]?key|password|secret|token)\s*[:=]\s*\S+)/i.test(i)}h(v,"isRestrictedMemoryContent");export{O as a};
@@ -1,5 +1,5 @@
1
1
  // @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
2
- import{D as j,J as N}from"./chunk-PA76WUBL.js";import{Pa as _,Qa as q}from"./chunk-PQ3XUSY2.js";import{Ma as E,cb as T,m as v,n as R}from"./chunk-UJEMSPM5.js";import{qd as I,rd as g,sd as k,vd as $,wd as y,xd as b}from"./chunk-VYKFM3TB.js";import{U as O,V as W,_ as M}from"./chunk-AWMTNUDS.js";import{a as o}from"./chunk-ONUPGMER.js";import{join as Pe}from"node:path";var te=["You generate KodaX Dynamic Workflow scripts.","Return JSON only. Do not wrap the answer in prose.","For simple tasks that do not benefit from multiple agents, return:",'{"action":"decline","reason":"..."}',"For complex tasks, return:",'{"action":"generate","manifest":{...},"source":"async function run(wf, args) { ... }","approvalSummary":"..."}',"Generated source may only coordinate agents through wf and args.","Generated source must return displayable final text for the user.","Never use import, require, process, fs, child_process, network APIs, shell commands, or direct file access."].join(`
2
+ import{D as j,J as N}from"./chunk-PHH4TRGF.js";import{Pa as _,Qa as q}from"./chunk-PVUXONQB.js";import{Ma as E,cb as T,m as v,n as R}from"./chunk-ZJIMT5I3.js";import{Ad as b,td as I,ud as g,vd as k,yd as $,zd as y}from"./chunk-Y5XKAN7C.js";import{U as O,V as W,_ as M}from"./chunk-52JSZ77P.js";import{a as o}from"./chunk-ONUPGMER.js";import{join as Pe}from"node:path";var te=["You generate KodaX Dynamic Workflow scripts.","Return JSON only. Do not wrap the answer in prose.","For simple tasks that do not benefit from multiple agents, return:",'{"action":"decline","reason":"..."}',"For complex tasks, return:",'{"action":"generate","manifest":{...},"source":"async function run(wf, args) { ... }","approvalSummary":"..."}',"Generated source may only coordinate agents through wf and args.","Generated source must return displayable final text for the user.","Never use import, require, process, fs, child_process, network APIs, shell commands, or direct file access."].join(`
3
3
  `),C=12e4,ne="KODAX_WORKFLOW_GENERATION_TIMEOUT_SEC",re="KODAX_WORKFLOW_GENERATION_TIMEOUT_MS",se=64,oe=2,ie=2e3,ae=[{name:"default"},{name:"variant-results",finalText:o((e,n)=>`Variant smoke child report from ${e} (${n}).`,"finalText"),synthesizeText:"Variant smoke synthesis report."},{name:"unverified-success",status:o(()=>"completed_unverified","status"),finalText:o(e=>`Smoke result for ${e}: completed with verification warnings.`,"finalText"),synthesizeText:"Smoke synthesis: completed with verification warnings."},{name:"empty-args-rerun",args:o(()=>({}),"args")}],le=["- classify-and-act: first classify a mixed request, then route to the right worker behavior.","- fan-out-and-synthesize: split independent areas, files, hypotheses, reviewers, or perspectives; run them with wf.parallel, then wf.synthesize.","- adversarial-verification: produce or inspect a candidate, then have an independent verifier attack assumptions, evidence, and edge cases.","- generate-and-filter: ask several generators for distinct candidates, then filter/dedupe/rank before synthesis.","- tournament: compare competing approaches or answers and use synthesis as the judge.","- loop-until-done: run bounded follow-up rounds when findings should drive the next prompt.","- review or audit combines fan-out-and-synthesize with adversarial-verification: fan independent reviewers out across the dimensions, then pipe each finding straight into a verifier that tries to refute it before synthesis. A review with no verification stage ships findings a single reviewer's blind spot would have hidden."],ce=[{id:"import",pattern:/\bimport\s*(?:\(|['"*{]|\w+\s+from\b)/},{id:"require",pattern:/\brequire\s*\(/},{id:"process",pattern:/\bprocess\s*(?:\.|\[)/},{id:"fs",pattern:/\b(?:node:)?fs\b/},{id:"child_process",pattern:/\bchild_process\b/},{id:"shell",pattern:/\b(?:exec|spawn|execFile)\s*\(/},{id:"fetch",pattern:/\bfetch\s*\(/},{id:"Deno",pattern:/\bDeno\s*(?:\.|\[)/},{id:"Bun",pattern:/\bBun\s*(?:\.|\[)/},{id:"globalThis-index",pattern:/\bglobalThis\s*\[/}];function ue(e=process.env,n){let t=v(n?.workflow?.generationTimeoutSec,"timeouts.workflow.generationTimeoutSec");if(t!==void 0)return t;let r=R(e[ne]);if(r!==void 0)return r;let s=e[re];if(s===void 0||s.trim().length===0)return C;let i=Number(s);return!Number.isFinite(i)||i<=0?C:Math.floor(i)}o(ue,"resolveWorkflowGenerationTimeoutMs");function fe(e,n){if(typeof e!="object"||e===null)throw new Error(`${n} must be an object`);return e}o(fe,"readRecord");function P(e,n){let t=e[n];if(typeof t!="string"||t.trim().length===0)throw new Error(`workflow generation ${n} must be a non-empty string`);return t}o(P,"readNonEmptyString");function de(e){let n=e.trim(),t=/^```(?:json)?\s*([\s\S]*?)\s*```$/i.exec(n);if(t?.[1])return t[1].trim();let r=n.indexOf("{"),s=n.lastIndexOf("}");if(r>=0&&s>r)return n.slice(r,s+1);throw new Error("workflow generation output did not contain a JSON object")}o(de,"extractJsonText");function pe(e){let n=de(e);return fe(JSON.parse(n),"workflow generation output")}o(pe,"parseGenerationJson");function me(e){if(typeof e=="string"){let t=e.trim();return t.length>0?t:void 0}if(typeof e!="object"||e===null)return;let n=e;for(let t of["name","id","title","phase"]){let r=n[t];if(typeof r=="string"&&r.trim().length>0)return r.trim()}}o(me,"normalizePhaseEntry");function he(e){return e.split(/(?:->|\u2192|,|\n)/).map(n=>n.trim()).filter(n=>n.length>0)}o(he,"splitPhaseString");function we(e){if(typeof e!="object"||e===null)return e;let n=e,t=n.phases,r;if(Array.isArray(t)){let s=t.map(me);s.every(i=>i!==void 0)&&(r=s)}else if(typeof t=="string"){let s=he(t);s.length>0&&(r=s)}return r?{...n,phases:r}:e}o(we,"normalizeGeneratedManifestCandidate");function ge(e){return e.match(/\bwf\.(?:runAgent|spawnAgent|synthesize)\s*\(/g)?.length??0}o(ge,"estimateDirectAgentCalls");function ke(e,n){let t=e.maxConcurrency*Math.max(1,e.phases.length)+2,r=ge(n)+2,s=Math.min(se,Math.max(e.maxAgents,t,r));return s>e.maxAgents?{...e,maxAgents:s}:e}o(ke,"reserveGeneratedWorkflowAgentCapacity");function h(e){let n="",t=0,r=["code"],s=[0];for(;t<e.length;){let i=e[t],a=e[t+1];if(r[r.length-1]==="template"){if(i==="\\"){n+=" ",t+=2;continue}if(i==="`"){n+=" ",t+=1,r.pop(),s.pop();continue}if(i==="$"&&a==="{"){n+=" ",t+=2,r.push("code"),s.push(0);continue}n+=i===`
4
4
  `?`
5
5
  `:" ",t+=1;continue}if(i==="/"&&a==="/"){for(n+=" ",t+=2;t<e.length&&e[t]!==`
@@ -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-PHH4TRGF.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-T7LYK53M.js";import{a as Er}from"./chunk-44QXPEEE.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-PVUXONQB.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-ZJIMT5I3.js";import{$a as pe,Ab as ai,Ac as fi,Ad as ki,Ba as Zo,I as zo,L as Yo,Qc as ze,Rc as mi,Ua as ei,bb as ti,dd as Xn,ea as Hn,ed as pi,fb as ni,g as Dt,jc as $t,k as V,kb as ri,l as $e,o as at,od as hi,pb as oi,q as Nt,qa as Gn,qb as ii,ra as Jo,rd as gi,sb as si,sd as vi,ua as Qo,ud as yi,va as Vn,vb as Kn,vc as ci,wb as qn,xc as di,y as Xo,yc as ui,zb as Lt,zc as li}from"./chunk-Y5XKAN7C.js";import{b as je,e as Ue}from"./chunk-52JSZ77P.js";import{u as qo,w as Xe}from"./chunk-VRSVNU2Y.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(`
@@ -125,7 +125,7 @@ ${l}`:l}o(nc,"resolveRoleInstructions");function rc(e,t){if(!e)return;let n=e.cr
125
125
 
126
126
  ${w}`:w)}if(s&&c){if(ha(c,g.name)&&mn(c),fa(c,s)){let w=pa(s,c.roundsSinceUpdate.current);k=k.length>0?`${k}
127
127
 
128
- ${w}`:w}ma(c)}let b=(g.tools??[]).map(w=>({name:w.name,description:w.description,input_schema:w.input_schema})),R=e.effort??De(ut(e)),O=Ui(R,g.reasoning),P=O==="none"?{enabled:!1,effort:"none"}:{enabled:!0,effort:O};m.current+=1,e.events?.onIterationStart?.(m.current,l);let A;if(t)A=await t(T,b,k);else{let w=ue(e.provider??"anthropic"),$=e.provider??w.name??"anthropic",x=lr($,Er(e.timeouts)),X=x.requestTimeoutMs,S=x.streamIdleTimeoutMs,W=new mr,K=typeof w.supportsNonStreamingFallback=="function"?w.supportsNonStreamingFallback():!1,ne=new pr(W,{...x,enableNonStreamingFallback:x.enableNonStreamingFallback&&K}),j=[...T];j=qn(j),j=Kn(j);let H=0,L,rt=!1,he=0;for(;;){H+=1,W.beginRequest($,f??w.getModel?.()??"unknown",j,H,!1),hr(W.snapshot());let q=new AbortController,B=setTimeout(()=>{q.abort(new Error("API Hard Timeout (10 minutes)"))},X),Ie=S>0,_;Ie&&(_=setTimeout(()=>{q.abort(new Error(`Stream stalled or delayed response (${S}ms idle)`))},S));let ce=o(()=>{Ie&&(_&&clearTimeout(_),q.signal.aborted||(_=setTimeout(()=>{q.abort(new Error(`Stream stalled or delayed response (${S}ms idle)`))},S)))},"resetIdleTimer"),le=e.abortSignal?AbortSignal.any([e.abortSignal,q.signal]):q.signal,Oe=Fi(j,k);qt("[resilience:request]",{provider:$,attempt:H,fallbackActive:!1,payloadBytes:Oe,payloadBucket:Wi(Oe)});let ot={modelOverride:f,onTextDelta:o(M=>{W.markTextDelta(M),ce();let ke=M.includes("```")||gt.some(Me=>M.includes(Me))?no(M):M;ke.length!==0&&e.events?.onTextDelta?.(ke)},"onTextDelta"),onThinkingDelta:o(M=>{W.markThinkingDelta(M),ce(),e.events?.onThinkingDelta?.(M)},"onThinkingDelta"),onThinkingEnd:o(M=>{e.events?.onThinkingEnd?.(M)},"onThinkingEnd"),onToolInputDelta:e.events?.onToolInputDelta,onRateLimit:o((M,z,ke)=>{ce(),e.events&&Ye(e.events,M,z,ke)},"onRateLimit"),onRetryAfter:o(M=>{ce(),h=Mt(h,{provider:M.provider,waitMs:M.waitMs,reason:M.reason,source:M.source}),e.events?.onRetryAfter?.(M)},"onRetryAfter")};try{if(L=await w.stream(j,[...b],k,P,ot,le),L.stopReason==="max_tokens"&&!rt&&!process.env.KODAX_MAX_OUTPUT_TOKENS&&w.getEffectiveMaxOutputTokens(f)<64e3){rt=!0,w.setMaxOutputTokensOverride(64e3),e.events?.onRetry?.(`Output budget reached, escalating to ${64e3} tokens and retrying the same turn`,1,1),B&&clearTimeout(B),_&&clearTimeout(_),B=void 0,_=void 0,H-=1;continue}if(dc(L)&&L.stopReason!=="max_tokens"&&he<jt&&!e.abortSignal?.aborted){he+=1,e.events?.onRetry?.(`Provider returned an empty turn, retrying ${he}/${jt}`,he,jt),B&&clearTimeout(B),_&&clearTimeout(_),B=void 0,_=void 0,H-=1,await Gt(Ti*he,e.abortSignal);continue}break}catch(M){let z=M instanceof Error?M:new Error(String(M));if(z.name==="AbortError"&&q.signal.aborted&&!e.abortSignal?.aborted){let fe=q.signal.reason?.message??"Stream stalled",{KodaXNetworkError:Pe}=await import("./dist-DRBKYVHF.js");z=new Pe(fe,!0)}let ke=W.inferFailureStage(),Me=fr(z,ke);Di(z,Me);let U=ne.decideRecoveryAction(z,Me,H);if(Ni(U,H),e.events?.onProviderRecovery?.({stage:U.failureStage,errorClass:U.reasonCode,attempt:H,maxAttempts:x.maxRetries,delayMs:U.delayMs,recoveryAction:U.action,ladderStep:U.ladderStep,fallbackUsed:U.shouldUseNonStreaming,serverRetryAfterMs:U.serverRetryAfterMs}),U.reasonCode==="rate_limit"&&e.events&&Ye(e.events,H,x.maxRetries,U.delayMs),!e.events?.onProviderRecovery&&U.action!=="manual_continue"&&e.events?.onRetry?.(`${cs(z)} \xB7 retry ${H}/${x.maxRetries} in ${Math.round(U.delayMs/1e3)}s`,H,x.maxRetries),U.shouldUseNonStreaming&&typeof w.complete=="function"){let fe=new AbortController,Pe=e.abortSignal?AbortSignal.any([e.abortSignal,fe.signal]):fe.signal,xt=setTimeout(()=>{fe.abort(new Error("API Hard Timeout (10 minutes)"))},X);try{_&&clearTimeout(_),B&&clearTimeout(B),B=void 0,_=void 0,W.beginRequest($,f??w.getModel?.()??"unknown",j,H,!0),hr(W.snapshot()),L=await w.complete(j,[...b],k,P,{modelOverride:f,onTextDelta:o(re=>{W.markTextDelta(re),e.events?.onTextDelta?.(re)},"onTextDelta"),onThinkingDelta:o(re=>{W.markThinkingDelta(re),e.events?.onThinkingDelta?.(re)},"onThinkingDelta"),onThinkingEnd:o(re=>{e.events?.onThinkingEnd?.(re)},"onThinkingEnd"),signal:Pe},Pe);break}catch(re){z=re instanceof Error?re:new Error(String(re))}finally{clearTimeout(xt)}}if(U.action==="sanitize_thinking_and_retry"){let fe=ne.executeRecovery(j,U);gr(U.action,fe),j=fe.messages,B&&clearTimeout(B),_&&clearTimeout(_),B=void 0,_=void 0,H-=1,await Gt(U.delayMs,e.abortSignal);continue}if(U.action==="manual_continue"||H>=x.maxRetries)throw Gn(z,j),z;let it=ne.executeRecovery(j,U);gr(U.action,it),j=it.messages,B&&clearTimeout(B),_&&clearTimeout(_),B=void 0,_=void 0,await Gt(U.delayMs,e.abortSignal);continue}finally{B&&clearTimeout(B),_&&clearTimeout(_)}}if(dc(L)){let q=new jn("Provider returned no user-visible text or tool calls after recovery attempts; refusing to commit an empty assistant turn.",$);throw Gn(q,j),q}let ye=0,ae=(L.textBlocks??[]).map(q=>q.text).join(""),Ce=L.thinkingBlocks?[...L.thinkingBlocks]:void 0;for(;L.stopReason==="max_tokens"&&(L.toolBlocks?.length??0)===0&&ae.trim().length>0&&ye<3;){ye+=1,e.events?.onTextDelta?.(`
128
+ ${w}`:w}ma(c)}let b=(g.tools??[]).map(w=>({name:w.name,description:w.description,input_schema:w.input_schema})),R=e.effort??De(ut(e)),O=Ui(R,g.reasoning),P=O==="none"?{enabled:!1,effort:"none"}:{enabled:!0,effort:O};m.current+=1,e.events?.onIterationStart?.(m.current,l);let A;if(t)A=await t(T,b,k);else{let w=ue(e.provider??"anthropic"),$=e.provider??w.name??"anthropic",x=lr($,Er(e.timeouts)),X=x.requestTimeoutMs,S=x.streamIdleTimeoutMs,W=new mr,K=typeof w.supportsNonStreamingFallback=="function"?w.supportsNonStreamingFallback():!1,ne=new pr(W,{...x,enableNonStreamingFallback:x.enableNonStreamingFallback&&K}),j=[...T];j=qn(j),j=Kn(j);let H=0,L,rt=!1,he=0;for(;;){H+=1,W.beginRequest($,f??w.getModel?.()??"unknown",j,H,!1),hr(W.snapshot());let q=new AbortController,B=setTimeout(()=>{q.abort(new Error("API Hard Timeout (10 minutes)"))},X),Ie=S>0,_;Ie&&(_=setTimeout(()=>{q.abort(new Error(`Stream stalled or delayed response (${S}ms idle)`))},S));let ce=o(()=>{Ie&&(_&&clearTimeout(_),q.signal.aborted||(_=setTimeout(()=>{q.abort(new Error(`Stream stalled or delayed response (${S}ms idle)`))},S)))},"resetIdleTimer"),le=e.abortSignal?AbortSignal.any([e.abortSignal,q.signal]):q.signal,Oe=Fi(j,k);qt("[resilience:request]",{provider:$,attempt:H,fallbackActive:!1,payloadBytes:Oe,payloadBucket:Wi(Oe)});let ot={modelOverride:f,onTextDelta:o(M=>{W.markTextDelta(M),ce();let ke=M.includes("```")||gt.some(Me=>M.includes(Me))?no(M):M;ke.length!==0&&e.events?.onTextDelta?.(ke)},"onTextDelta"),onThinkingDelta:o(M=>{W.markThinkingDelta(M),ce(),e.events?.onThinkingDelta?.(M)},"onThinkingDelta"),onThinkingEnd:o(M=>{e.events?.onThinkingEnd?.(M)},"onThinkingEnd"),onToolInputDelta:e.events?.onToolInputDelta,onRateLimit:o((M,z,ke)=>{ce(),e.events&&Ye(e.events,M,z,ke)},"onRateLimit"),onRetryAfter:o(M=>{ce(),h=Mt(h,{provider:M.provider,waitMs:M.waitMs,reason:M.reason,source:M.source}),e.events?.onRetryAfter?.(M)},"onRetryAfter")};try{if(L=await w.stream(j,[...b],k,P,ot,le),L.stopReason==="max_tokens"&&!rt&&!process.env.KODAX_MAX_OUTPUT_TOKENS&&w.getEffectiveMaxOutputTokens(f)<64e3){rt=!0,w.setMaxOutputTokensOverride(64e3),e.events?.onRetry?.(`Output budget reached, escalating to ${64e3} tokens and retrying the same turn`,1,1),B&&clearTimeout(B),_&&clearTimeout(_),B=void 0,_=void 0,H-=1;continue}if(dc(L)&&L.stopReason!=="max_tokens"&&he<jt&&!e.abortSignal?.aborted){he+=1,e.events?.onRetry?.(`Provider returned an empty turn, retrying ${he}/${jt}`,he,jt),B&&clearTimeout(B),_&&clearTimeout(_),B=void 0,_=void 0,H-=1,await Gt(Ti*he,e.abortSignal);continue}break}catch(M){let z=M instanceof Error?M:new Error(String(M));if(z.name==="AbortError"&&q.signal.aborted&&!e.abortSignal?.aborted){let fe=q.signal.reason?.message??"Stream stalled",{KodaXNetworkError:Pe}=await import("./dist-GOUP4YVE.js");z=new Pe(fe,!0)}let ke=W.inferFailureStage(),Me=fr(z,ke);Di(z,Me);let U=ne.decideRecoveryAction(z,Me,H);if(Ni(U,H),e.events?.onProviderRecovery?.({stage:U.failureStage,errorClass:U.reasonCode,attempt:H,maxAttempts:x.maxRetries,delayMs:U.delayMs,recoveryAction:U.action,ladderStep:U.ladderStep,fallbackUsed:U.shouldUseNonStreaming,serverRetryAfterMs:U.serverRetryAfterMs}),U.reasonCode==="rate_limit"&&e.events&&Ye(e.events,H,x.maxRetries,U.delayMs),!e.events?.onProviderRecovery&&U.action!=="manual_continue"&&e.events?.onRetry?.(`${cs(z)} \xB7 retry ${H}/${x.maxRetries} in ${Math.round(U.delayMs/1e3)}s`,H,x.maxRetries),U.shouldUseNonStreaming&&typeof w.complete=="function"){let fe=new AbortController,Pe=e.abortSignal?AbortSignal.any([e.abortSignal,fe.signal]):fe.signal,xt=setTimeout(()=>{fe.abort(new Error("API Hard Timeout (10 minutes)"))},X);try{_&&clearTimeout(_),B&&clearTimeout(B),B=void 0,_=void 0,W.beginRequest($,f??w.getModel?.()??"unknown",j,H,!0),hr(W.snapshot()),L=await w.complete(j,[...b],k,P,{modelOverride:f,onTextDelta:o(re=>{W.markTextDelta(re),e.events?.onTextDelta?.(re)},"onTextDelta"),onThinkingDelta:o(re=>{W.markThinkingDelta(re),e.events?.onThinkingDelta?.(re)},"onThinkingDelta"),onThinkingEnd:o(re=>{e.events?.onThinkingEnd?.(re)},"onThinkingEnd"),signal:Pe},Pe);break}catch(re){z=re instanceof Error?re:new Error(String(re))}finally{clearTimeout(xt)}}if(U.action==="sanitize_thinking_and_retry"){let fe=ne.executeRecovery(j,U);gr(U.action,fe),j=fe.messages,B&&clearTimeout(B),_&&clearTimeout(_),B=void 0,_=void 0,H-=1,await Gt(U.delayMs,e.abortSignal);continue}if(U.action==="manual_continue"||H>=x.maxRetries)throw Gn(z,j),z;let it=ne.executeRecovery(j,U);gr(U.action,it),j=it.messages,B&&clearTimeout(B),_&&clearTimeout(_),B=void 0,_=void 0,await Gt(U.delayMs,e.abortSignal);continue}finally{B&&clearTimeout(B),_&&clearTimeout(_)}}if(dc(L)){let q=new jn("Provider returned no user-visible text or tool calls after recovery attempts; refusing to commit an empty assistant turn.",$);throw Gn(q,j),q}let ye=0,ae=(L.textBlocks??[]).map(q=>q.text).join(""),Ce=L.thinkingBlocks?[...L.thinkingBlocks]:void 0;for(;L.stopReason==="max_tokens"&&(L.toolBlocks?.length??0)===0&&ae.trim().length>0&&ye<3;){ye+=1,e.events?.onTextDelta?.(`
129
129
 
130
130
  [max_tokens reached, continuing...]
131
131
 
@@ -1,5 +1,5 @@
1
1
  // @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
2
- import{$ as is,A as ns,B as Gn,E as Ho,G as ts,I as qn,J as Kn,K as rs,M as Bo,U as be,Z as ss,aa as as,ba as ls,u as Qr,w as He,x as Bn,y as es,z as os}from"./chunk-M7TCFYTO.js";import{a as cs}from"./chunk-WW2O2DEP.js";import{Ba as Vr,Ca as Yr,Ia as Jr,Ka as Zr}from"./chunk-ZG4DMYBS.js";import{i as No}from"./chunk-URC6ZI6P.js";import{A as Ur,D as Se,J as Fe,m as Do,n as Uo,o as je,q as io,r as jo,s as Wr,t as Or,v as Nr,w as jn,x as Dr,y as ao}from"./chunk-PA76WUBL.js";import{h as Lr,xa as Hr,ya as Br}from"./chunk-4WIODYOH.js";import{B as Mr,Eb as Fn,Fb as Fo,Ib as jr,Pc as Gr,Rc as qr,Sc as Kr,Vc as Hn,ma as Oo,nd as zr,pd as Xr,wc as Fr,yc as re}from"./chunk-PQ3XUSY2.js";import{C as hr,Ma as Nn,Na as We,Oa as Oe,v as On}from"./chunk-UJEMSPM5.js";import{Ed as _r,Fa as yr,Fb as Cr,Ga as kr,Ha as Dn,Nc as Ue,Oc as Ir,bd as Pr,ed as Un,k as _o,nd as Wo}from"./chunk-VYKFM3TB.js";import{F as br,G as xr,H as Ar,U as $e,V as De,_ as Rr,aa as Mo,b as q,ca as Lo,da as Er,e as Ne,ea as Tr,f as H,o as vr,p as $r,u as Sr}from"./chunk-AWMTNUDS.js";import{a,b as Wn,d as Sa}from"./chunk-ONUPGMER.js";var ys=Wn((Tf,hs)=>{"use strict";hs.exports=a(function(o){return o.map(function(n){return n===""?"''":n&&typeof n=="object"?n.op.replace(/(.)/g,"\\$1"):/["\s\\]/.test(n)&&!/'/.test(n)?"'"+n.replace(/(['])/g,"\\$1")+"'":/["'\s]/.test(n)?'"'+n.replace(/(["\\$`!])/g,"\\$1")+'"':String(n).replace(/([A-Za-z]:)?([#!"$&'()*,:;<=>?@[\\\]^`{|}])/g,"$1\\$2")}).join(" ")},"quote")});var As=Wn((If,xs)=>{"use strict";var bs="(?:"+["\\|\\|","\\&\\&",";;","\\|\\&","\\<\\(","\\<\\<\\<",">>",">\\&","<\\&","[&;()|<>]"].join("|")+")",ks=new RegExp("^"+bs+"$"),vs="|&;()<> \\t",Aa='"((\\\\"|[^"])*?)"',Ra="'((\\\\'|[^'])*?)'",Ea=/^#$/,$s="'",Ss='"',zn="$",xe="",Ta=4294967296;for(Xn=0;Xn<4;Xn++)xe+=(Ta*Math.random()).toString(16);var Xn,Ca=new RegExp("^"+xe);function Ia(e,o){for(var n=o.lastIndex,t=[],r;r=o.exec(e);)t.push(r),o.lastIndex===r.index&&(o.lastIndex+=1);return o.lastIndex=n,t}a(Ia,"matchAll");function Pa(e,o,n){var t=typeof e=="function"?e(n):e[n];return typeof t>"u"&&n!=""?t="":typeof t>"u"&&(t="$"),typeof t=="object"?o+xe+JSON.stringify(t)+xe:o+t}a(Pa,"getVar");function _a(e,o,n){n||(n={});var t=n.escape||"\\",r="(\\"+t+`['"`+vs+`]|[^\\s'"`+vs+"])+",i=new RegExp(["("+bs+")","("+r+"|"+Aa+"|"+Ra+")+"].join("|"),"g"),l=Ia(e,i);if(l.length===0)return[];o||(o={});var c=!1;return l.map(function(d){var u=d[0];if(!u||c)return;if(ks.test(u))return{op:u};var f=!1,m=!1,y="",v=!1,k;function $(){k+=1;var I,M,V=u.charAt(k);if(V==="{"){if(k+=1,u.charAt(k)==="}")throw new Error("Bad substitution: "+u.slice(k-2,k+1));if(I=u.indexOf("}",k),I<0)throw new Error("Bad substitution: "+u.slice(k));M=u.slice(k,I),k=I}else if(/[*@#?$!_-]/.test(V))M=V,k+=1;else{var Y=u.slice(k);I=Y.match(/[^\w\d_]/),I?(M=Y.slice(0,I.index),k+=I.index-1):(M=Y,k=u.length)}return Pa(o,"",M)}for(a($,"parseEnvVar"),k=0;k<u.length;k++){var g=u.charAt(k);if(v=v||!f&&(g==="*"||g==="?"),m)y+=g,m=!1;else if(f)g===f?f=!1:f==$s?y+=g:g===t?(k+=1,g=u.charAt(k),g===Ss||g===t||g===zn?y+=g:y+=t+g):g===zn?y+=$():y+=g;else if(g===Ss||g===$s)f=g;else{if(ks.test(g))return{op:u};if(Ea.test(g)){c=!0;var b={comment:e.slice(d.index+k+1)};return y.length?[y,b]:[b]}else g===t?m=!0:g===zn?y+=$():y+=g}}return v?{op:"glob",pattern:y}:y}).reduce(function(d,u){return typeof u>"u"?d:d.concat(u)},[])}a(_a,"parseInternal");xs.exports=a(function(o,n,t){var r=_a(o,n,t);return typeof n!="function"?r:r.reduce(function(i,l){if(typeof l=="object")return i.concat(l);var c=l.split(RegExp("("+xe+".*?"+xe+")","g"));return c.length===1?i.concat(c[0]):i.concat(c.filter(Boolean).map(function(d){return Ca.test(d)?JSON.parse(d.split(xe)[1]):d}))},[])},"parse")});var Rs=Wn(Vn=>{"use strict";Vn.quote=ys();Vn.parse=As()});import*as Tn from"fs";import*as Co from"path";import*as xn from"fs";import bn from"path";import s from"chalk";var Go=["plan","accept-edits","auto","auto-in-project"];function $f(e){return e==="auto"||e==="auto-in-project"}a($f,"isAutoMode");function ba(e){switch(e){case"plan":return"Plan";case"accept-edits":return"Edits";case"auto":case"auto-in-project":return"Auto"}}a(ba,"permissionModeDisplayName");var xa='[deprecated] permissionMode "auto-in-project" is now an alias for "auto" (FEATURE_092, v0.7.33). The alias will be removed in v0.7.38 \u2014 please update ~/.kodax/config.json to use "auto".';function Sf(e=o=>{q({source:"repl:permission",level:"warn",message:o})}){let o=!1;return()=>{o||(o=!0,e(xa))}}a(Sf,"createAutoInProjectDeprecationEmitter");var ds=zr(),lo=new Set(ds.filter(e=>e.sideEffect==="mutates-fs"&&e.requiredParams.includes("path")).map(e=>e.name)),us=new Set(ds.filter(e=>e.sideEffect!=="readonly").map(e=>e.name)),fs=new Set(["npm install","npm i","npm uninstall","npm remove","npm update","npm ci","yarn add","yarn remove","yarn upgrade","pnpm add","pnpm remove","pnpm update","git clean","git reset","git checkout","git switch","git merge","git rebase","git cherry-pick","git revert","git commit","git push","git pull","rm","mv","cp","mkdir","rmdir","touch","chmod","chown","del","erase","rd","copy","move","ren","curl","wget","dd","tar","kill","pkill","killall"]),ms=new Set(["ls","cat","pwd","echo","whoami","date","which","whereis","tree","dir","type","get-childitem","get-content","select-string","get-location","where","grep","find","awk","sed","head","tail","less","more","wc","findstr","fc","git status","git diff","git log","git show","git branch","git remote","git ls-files","git rev-parse","git grep","git tag","git stash list","git describe","git config --get","node","npm","yarn","pnpm","tsc","python","pip","go","cargo","rustc"]);function ps(e){switch(e){case"plan":return new Set(["bash","write","edit","undo"]);case"accept-edits":return new Set(["bash"]);case"auto":case"auto-in-project":return new Set}}a(ps,"computeConfirmTools");function gs(e){return e!==void 0&&Go.includes(e)}a(gs,"isPermissionMode");function co(e,o){return gs(e)?e:o}a(co,"normalizePermissionMode");async function ws(e){let o=e.resolve(e.provider),n=[];for(let t of e.efforts){if(e.signal?.aborted)break;let r=!1;try{await o.stream([{role:"user",content:"ping"}],[],"",{effort:t},{modelOverride:e.model,maxOutputTokensOverride:1,onReasoningEffortRejected:a(()=>{r=!0},"onReasoningEffortRejected"),onTextDelta:a(()=>{},"onTextDelta")},e.signal)}catch(i){n.push({effort:t,status:"error",error:i instanceof Error?i.message:String(i)});continue}r?(kr(e.provider,e.model,t,"probed",e.now()),n.push({effort:t,status:"rejected"})):n.push({effort:t,status:"accepted"})}return n}a(ws,"probeProviderReasoningEfforts");import Yo from"fs";import Fs from"path";import qo from"fs";import W from"path";import fo from"os";var Cs=Sa(Rs(),1);var Es=new Set(["/dev/null","nul","NUL"]);function Yn(e){return Es.has(e)||Es.has(e.toLowerCase())}a(Yn,"isNullDevice");function uo(e){let o=e.trim();if(!o)return{statements:[],unparseable:!1};if(o.includes("`"))return{statements:[],unparseable:!0};let n;try{n=(0,Cs.parse)(o)}catch{return{statements:[],unparseable:!0}}let t=[],r=[],i=[],l=[],c=null,d=!1,u=a(()=>{(i.length>0||l.length>0)&&(r.push({argv:i,redirections:l}),i=[],l=[])},"flushStage"),f=a(m=>{u(),r.length>0&&(t.push({precedingOp:c,stages:r}),r=[]),c=m},"flushStatement");for(let m=0;m<n.length;m+=1){let y=n[m];if(typeof y=="string"){i.push(y);continue}if("op"in y){let v=y.op;if(v==="&&"||v==="||"||v===";"){f(v);continue}if(v==="|"){u();continue}if(v==="&"){let k=n[m+1];if(k!==void 0&&typeof k!="string"&&"op"in k&&(k.op===">"||k.op===">>")){let $=n[m+2];if(typeof $!="string"){d=!0,m+=1;continue}l.push(Ts(`&${k.op}`,$)),m+=2;continue}d=!0;continue}if(La(v)){let k=null,$=i[i.length-1];$!==void 0&&/^[0-9]+$/.test($)&&(k=$,i.pop());let g=n[m+1];if(typeof g!="string"){d=!0;continue}l.push(Ts(k?`${k}${v}`:v,g)),m+=1;continue}if(v==="glob"){let k=y.pattern;typeof k=="string"?i.push(k):d=!0;continue}d=!0;continue}if("comment"in y)break;d=!0}return f(null),{statements:t,unparseable:d}}a(uo,"parseBashCommand");var Ma=new Set([">",">>","<","<<","<<<","&>","&>>"]),Is=/^([0-9]+|&)(>>?|<<?)$/;function La(e){return Ma.has(e)||Is.test(e)}a(La,"isRedirectionOp");function Ts(e,o){let n=null,t=e,r=Is.exec(e);return r&&(n=r[1],t=r[2]),{op:e,fd:n,append:t===">>"||e==="&>>",input:t==="<"||t==="<<"||e==="<<<",target:o}}a(Ts,"parseRedirection");var Wa=W.join(".agent","plan_mode_doc.md"),Ko=new Map,zo=null;function Oa(e){if(!e||!e.trim())return!1;let o=e.trim().replace(/\s+/g," ").toLowerCase();for(let n of ms)if(o===n||o.startsWith(n+" ")){if(n==="sed"&&o.split(/\s+/).some(i=>i.startsWith("-i")||i==="--in-place"))return!1;if(n==="awk"){let r=o.split(/\s+/);if(r.includes("-f")||r.includes("--file"))return!1}if(["node","npm","yarn","pnpm","tsc","python","pip","go","cargo","rustc","ruby","perl"].includes(n)){let r=o.split(/\s+/).slice(1);if(r.length>0&&!r.every(i=>/^(-v|--version|-h|--help)$/.test(i)))return!1}return!0}return!1}a(Oa,"isSingleBashReadCommand");var Na=/^[a-zA-Z0-9]+$/;function Da(e){let o=e.trim();if(!o.endsWith("--help")||o.includes('"')||o.includes("'"))return!1;let n=!1;for(let t of o.split(/\s+/))if(t.startsWith("-"))if(t==="--help")n=!0;else return!1;else if(!Na.test(t))return!1;return n}a(Da,"isHelpCommand");function Zn(e){if(!e||!e.trim())return!1;if(Da(e))return!0;let o=e.trim().replace(/\\\r?\n/g," "),n=uo(o);if(n.unparseable||n.statements.length===0)return!1;let t=n.statements.length>1||(n.statements[0]?.stages.length??0)>1;for(let r of n.statements){if(r.precedingOp!==null&&r.precedingOp!=="&&")return!1;for(let i of r.stages){for(let c of i.redirections)if(c.input||!Yn(c.target))return!1;let l=i.argv.join(" ");if(l&&!(t&&i.argv[0]?.toLowerCase()==="cd"&&i.argv.length>=2)&&!Oa(l))return!1}}return!0}a(Zn,"isBashReadCommand");function Ua(e){let o=e.trim();return o?Zn(o)?null:"[Blocked] Direct !command execution only supports safe read-only commands. Use the bash tool for commands that write files, invoke shells, or require confirmation.":"[Shell: No command provided]"}a(Ua,"getDirectShellBypassBlockReason");var _s=new Set(["remove-item","set-content","add-content","out-file","new-item","copy-item","move-item","rename-item","ni"]);function Qn(e){if(!e||!e.trim())return!1;let o=uo(e);if(o.unparseable)return!1;for(let n of o.statements)for(let t of n.stages){let r=t.argv.map(i=>i.toLowerCase());if(r.length>0){let i=r[0],l=r.length>=2?`${r[0]} ${r[1]}`:null;for(let c of fs)if(c===i||l!==null&&c===l)return!0}for(let i of r)if(_s.has(i))return!0;for(let i of t.redirections)if(!i.input&&!Yn(i.target))return!0}return!1}a(Qn,"isBashWriteCommand");function et(e){let o=e.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\((.+)\)$/);return o?{tool:o[1].toLowerCase(),pattern:o[2]}:{tool:e.toLowerCase(),pattern:null}}a(et,"parseAllowedToolPattern");function ja(e,o){if(o==="*")return!1;if(o.endsWith(":*")){let n=o.slice(0,-2);return e.startsWith(n)}return e===o}a(ja,"matchesBashPatternLegacy");function Fa(e,o){if(o==="*")return!1;if(o.endsWith(":*")){let n=o.slice(0,-2);return e===n}return e===o}a(Fa,"matchesBashPatternByExtractedPrefix");async function ot(e,o,n,t,r){if(e.toLowerCase()!=="bash")return!1;let i=o.command??"",l=[];for(let c of n){let d=et(c);if(d.tool==="bash"){if(d.pattern===null)return!0;l.push({pattern:d.pattern})}}if(l.length===0)return!1;if(t){let c;try{c=await t.extract(i,r)}catch{return!1}if(c.kind!=="prefix")return!1;for(let{pattern:d}of l)if(d&&Fa(c.value,d))return!0;return!1}for(let{pattern:c}of l)if(c&&ja(i,c))return!0;return!1}a(ot,"isToolCallAllowed");function nt(e,o,n){if(e.toLowerCase()!=="bash")return"";let t=o.command??"",r=t.split(" ");return r.length>1?`Bash(${r.slice(0,2).join(" ")}:*)`:`Bash(${t})`}a(nt,"generateSavePattern");function mo(e,o){try{let n=W.resolve(e),t=W.resolve(o),r=Ne(),i=W.join(t,".kodax");return Be(n,i)||Be(n,r)?!0:!(Be(n,t)||Ws().some(c=>Be(n,c)))}catch{return!1}}a(mo,"isAlwaysConfirmPath");function Ps(e){return!e||e.startsWith("-")?!1:/^\.\.?[/\\]/.test(e)||e.startsWith("~/")||e.startsWith("~\\")||/^[a-zA-Z]:[/\\]/.test(e)?!0:e.startsWith("/")&&e.length>1?!(process.platform==="win32"&&Ha.test(e)):!!(e.startsWith(".")&&/[/\\]/.test(e))}a(Ps,"looksLikePath");var Ha=/^\/[A-Za-z][A-Za-z0-9]*(?::[A-Za-z0-9]+)?$/;function Ba(e){let o=[],n=/["']([^"']+)["']/g,t;for(;(t=n.exec(e))!==null;)o.push(t[1]);let r=/(?:^|\s)(\.\.?\/[^\s]+|\.\.?\\[^\s]+|[a-zA-Z]:\\[^\s]+|~\/[^\s]+|\.[^\s]*[/\\][^\s]*)/g;for(;(t=r.exec(e))!==null;)o.push(t[1]);return o}a(Ba,"legacyRegexPathScan");function Vo(e){let o=new Set,n=uo(e);if(!n.unparseable)for(let t of n.statements)for(let r of t.stages){for(let i of r.argv)Ps(i)&&o.add(i);for(let i of r.redirections)Ps(i.target)&&o.add(i.target)}for(let t of Ba(e))o.add(t);return Array.from(o)}a(Vo,"extractPathsFromCommand");function Ga(e,o){let n=Vo(e);for(let t of n)if(mo(t,o))return!0;return!1}a(Ga,"isCommandOnProtectedPath");function Xo(e){let o=W.normalize(e);return process.platform==="win32"?o.toLowerCase():o}a(Xo,"normalizePathForComparison");function qa(e,o){return Xo(e)===Xo(o)}a(qa,"pathsEqual");function Be(e,o){let n=Xo(e),t=Xo(o);return n===t||n.startsWith(t+W.sep)}a(Be,"isPathInsideDirectory");function tt(e,o){try{let n=W.resolve(o),t=W.resolve(n,Ls(Ms(e)));return Be(t,n)}catch{return!1}}a(tt,"isPathInsideProject");function Ka(e){let o=e.match(/[A-Za-z]:[\\/][^\s;|&<>(){}'"]+|\/[^\s;|&<>(){}'"]+/g);return o?o.filter(n=>!/^(?:\/dev\/|\/proc\/)/i.test(n)):[]}a(Ka,"collectAbsolutePathCandidates");function rt(e){let o=W.resolve(e),n=Ko.get(o);if(n)return n;if(qo.existsSync(o)){let c=qo.realpathSync.native(o);return Ko.set(o,c),c}let t=[],r=o;for(;!qo.existsSync(r);){let c=W.dirname(r);if(c===r)return Ko.set(o,o),o;t.unshift(W.basename(r)),r=c}let i=qo.realpathSync.native(r),l=W.join(i,...t);return Ko.set(o,l),l}a(rt,"resolveExistingPathPrefix");function Ms(e){return e==="~"?fo.homedir():e.startsWith(`~${W.sep}`)||e.startsWith("~/")||e.startsWith("~\\")?W.join(fo.homedir(),e.slice(2)):e}a(Ms,"expandHomeDirectory");function Ls(e){let o=fo.tmpdir(),n=[[/^%temp%/i,o],[/^%tmp%/i,o],[/^\$env:temp\b/i,o],[/^\$env:tmp\b/i,o],[/^\$tmpdir\b/i,o],[/^\$temp\b/i,o],[/^\$tmp\b/i,o]];for(let[t,r]of n)if(t.test(e))return e.replace(t,r);return e}a(Ls,"expandSystemTempAlias");function za(e,o){let n=W.resolve(o??process.cwd()),t=Ls(Ms(e)),r=W.isAbsolute(t)?W.resolve(t):W.resolve(n,t);return rt(r)}a(za,"resolvePermissionPath");function Ws(){if(zo)return zo;let e=new Set,o=[fo.tmpdir(),process.env.TEMP,process.env.TMP,process.env.TMPDIR].filter(n=>typeof n=="string"&&n.trim().length>0);for(let n of o)try{e.add(rt(n))}catch{}return zo=Array.from(e),zo}a(Ws,"getSystemTempDirectories");function st(e){let o=rt(e??process.cwd());return{projectPlanDoc:W.join(o,Wa),systemTempDirs:Ws()}}a(st,"getPlanModeAllowedWritablePaths");function Jn(e,o){let n=za(e,o),{projectPlanDoc:t,systemTempDirs:r}=st(o);return qa(n,t)?!0:r.some(i=>Be(n,i))}a(Jn,"isPlanModeAllowedPath");function Xa(e){let{projectPlanDoc:o,systemTempDirs:n}=st(e),t=n[0]??fo.tmpdir();return`${o} or the system temp directory (${t})`}a(Xa,"formatPlanModeAllowedLocations");var Va=new Set(["-a","--append","-i","--ignore-interrupts"]);function Ya(e){let o=[];for(let n=1;n<e.argv.length;n+=1){let t=e.argv[n];Va.has(t)||t.startsWith("-")||o.push(t)}return o}a(Ya,"collectTeeTargets");function Ja(e){let o=[],n=1,t=!1;for(;n<e.argv.length;){let r=e.argv[n],i=r.toLowerCase();if(i==="-path"||i==="-literalpath"||i==="-destination"){let l=e.argv[n+1];if(l!==void 0&&!l.startsWith("-")){o.push(l),n+=2;continue}}!r.startsWith("-")&&!t&&(o.push(r),t=!0),n+=1}return o}a(Ja,"collectPowerShellWriteTargets");function Ge(e){let o=new Set,n=a(r=>{let i=r?.trim();i&&o.add(i)},"pushTarget");for(let r of Vo(e))n(r);let t=uo(e);if(t.unparseable)return Array.from(o);for(let r of t.statements)for(let i of r.stages){for(let c of i.redirections)c.input||n(c.target);let l=i.argv[0]?.toLowerCase();if(l){if(l==="tee")for(let c of Ya(i))n(c);else if(_s.has(l))for(let c of Ja(i))n(c)}}return Array.from(o)}a(Ge,"collectBashWriteTargets");function Os(e,o){if(!Qn(e))return{dangerous:!1};let n=new Set([...Ge(e),...Ka(e)]);for(let t of n)if(!tt(t,o))return{dangerous:!0,reason:`Command may modify file outside project: ${t}`};return{dangerous:!1}}a(Os,"getBashOutsideProjectWriteRisk");function Ns(e,o,n){let t=Xa(n);if(Xr(e))return null;if(lo.has(e)){let r=typeof o.path=="string"?o.path:"";return r?Jn(r,n)?null:`[Blocked] Plan mode only allows file modifications in ${t}. Requested path: ${r}`:`[Blocked] Tool '${e}' is not allowed in plan mode unless it targets ${t}.`}if(e==="bash"){let r=o.command??"";if(!Qn(r))return null;let i=Ge(r);if(i.length===0)return`[Blocked] Plan mode only allows bash write operations when every target is either ${t}. Could not determine a safe target from: ${r.slice(0,80)}${r.length>80?"...":""}`;let l=i.find(c=>!Jn(c,n));return l?`[Blocked] Plan mode only allows bash write operations in ${t}. Blocked target: ${l}`:null}return`[Blocked] Tool '${e}' has side effects and is not permitted in plan mode. Switch to accept-edits or auto mode to use it, or work within ${t}.`}a(Ns,"getPlanModeBlockReason");import me from"node:path";import Za from"node:os";function qe(e,o){try{let n=me.resolve(e),t=me.resolve(o);return n===t?!0:n.startsWith(t+me.sep)}catch{return!1}}a(qe,"isPathUnder");function Qa(){try{return Ne()}catch{return}}a(Qa,"safeGetAgentConfigHome");function Ds(e,o){let n=Qa();if(n&&qe(e,n))return"user-kodax";let t=me.join(me.resolve(o),".kodax");if(qe(e,t))return"project-kodax"}a(Ds,"resolveProtectedZone");function el(){let e=new Set;try{e.add(Za.tmpdir())}catch{}for(let o of["TEMP","TMP","TMPDIR"]){let n=process.env[o];n&&n.length>0&&e.add(n)}return Array.from(e)}a(el,"getSystemTempDirs");var ol=new Set(["bash"]),nl={toolNames:ol,collect(e,o){let n=typeof e.input.command=="string"?e.input.command:"";if(!n||!o)return[];let t=[],r=new Set,i=new Set,l=el(),c=me.resolve(o);for(let d of Vo(n)){let u;try{u=me.resolve(o,d)}catch{continue}let f=Ds(u,o);if(f){r.has(u)||(r.add(u),t.push({kind:"protected_path",path:d,zone:f}));continue}if(mo(d,o)){let m=l.some(v=>qe(u,v)),y=qe(u,c);!m&&!y&&!i.has(u)&&(i.add(u),t.push({kind:"outside_project",path:d}))}}for(let d of Ge(n)){let u;try{u=me.resolve(o,d)}catch{continue}Ds(u,o)||qe(u,c)||l.some(y=>qe(u,y))||t.push({kind:"shell_redirect_outside",target:d})}return t}};var Jo=H("config.json");function Hs(){return Fs.join(process.cwd(),".kodax","config.local.json")}a(Hs,"getProjectConfigFile");function gm(e=process.env){let n=po(Jo).autoMode??{},t=e.KODAX_AUTO_MODE_ENGINE?.trim(),r=t==="llm"||t==="rules"?t:void 0,i=n.engine==="llm"||n.engine==="rules"?n.engine:void 0,l=r??i??"llm",c=js(n.classifierModel),d=js(e.KODAX_AUTO_MODE_CLASSIFIER_MODEL),u=e.KODAX_AUTO_MODE_TIMEOUT_MS?.trim(),f=u!==void 0?Number(u):NaN,m=Number.isFinite(f)&&f>0?Math.floor(f):void 0,y=typeof n.timeoutMs=="number"&&n.timeoutMs>0?Math.floor(n.timeoutMs):void 0,v=Us(e.KODAX_AUTO_SPECULATIVE_WINDOW_MS?.trim()),k=typeof n.speculativeWindowMs=="number"?Us(String(n.speculativeWindowMs)):void 0;return{engine:l,classifierModel:c,classifierModelEnv:d,timeoutMs:m??y,speculativeWindowMs:v??k}}a(gm,"loadAutoModeSettings");function Us(e){if(e===void 0||e==="")return;let o=Number(e);if(Number.isFinite(o))return o<0?0:Math.floor(o)}a(Us,"parseSpeculativeWindow");function js(e){if(typeof e!="string")return;let o=e.trim();return o.length===0?void 0:o}a(js,"nonEmptyString");function po(e){try{if(Yo.existsSync(e))return JSON.parse(Yo.readFileSync(e,"utf-8"))}catch{}return{}}a(po,"readJsonFile");function Bs(e,o){Yo.mkdirSync(Fs.dirname(e),{recursive:!0}),Yo.writeFileSync(e,JSON.stringify(o,null,2))}a(Bs,"writeJsonFile");function it(e){let o=po(Jo);Bs(Jo,{...o,permissionMode:e})}a(it,"savePermissionModeUser");function wm(){let e=po(Jo),o=po(Hs()),n=e.alwaysAllowTools??[],t=o.alwaysAllowTools??[];return[...new Set([...n,...t])]}a(wm,"loadAlwaysAllowTools");function hm(e,o,n=!1){let t=nt(e,o,n);if(!t)return;let r=Hs(),i=po(r),l=i.alwaysAllowTools??[];l.includes(t)||Bs(r,{...i,alwaysAllowTools:[...l,t]})}a(hm,"saveAlwaysAllowToolPattern");var at=["ama","amaw","sa"];function Gs(e){let o=at.indexOf(e);return at[(o+1)%at.length]??"ama"}a(Gs,"nextAgentMode");var pe=class{static{a(this,"CommandRegistry")}commands=new Map;aliases=new Map;register(o){let n=o.name.toLowerCase();if(this.commands.has(n))throw new Error(`Command "${o.name}" is already registered`);if(this.aliases.has(n)){let r=this.aliases.get(n);throw new Error(`Command "${o.name}" conflicts with existing alias for "${r}"`)}let t=new Set;for(let r of o.aliases??[]){let i=r.toLowerCase();if(i!==n){if(t.has(i))throw new Error(`Alias "${r}" is duplicated within command "${o.name}"`);if(this.commands.has(i))throw new Error(`Alias "${r}" conflicts with existing command "${i}"`);if(this.aliases.has(i)){let l=this.aliases.get(i);throw new Error(`Alias "${r}" is already registered for "${l}"`)}t.add(i)}}if(this.commands.set(n,{...o,source:o.source??"builtin"}),o.aliases)for(let r of o.aliases){let i=r.toLowerCase();i!==n&&this.aliases.set(i,n)}}unregister(o){let n=o.toLowerCase(),t=this.aliases.get(n)??n;if(!this.commands.has(t))return!1;let r=this.commands.get(t);if(r?.aliases)for(let i of r.aliases)this.aliases.delete(i.toLowerCase());return this.commands.delete(t),!0}get(o){let n=o.toLowerCase(),t=this.aliases.get(n)??n;return this.commands.get(t)}has(o){let n=o.toLowerCase(),t=this.aliases.get(n)??n;return this.commands.has(t)}getAll(o){let n=new Map;for(let[t,r]of this.commands)o&&r.source!==o||n.has(t)||n.set(t,{name:r.name,aliases:r.aliases,description:r.description,source:r.source??"builtin",usage:r.usage,priority:r.priority,location:r.location,path:r.path,userInvocable:r.userInvocable,disableModelInvocation:r.disableModelInvocation,allowedTools:r.allowedTools,context:r.context,agent:r.agent,argumentHint:r.argumentHint,model:r.model});return Array.from(n.values()).sort((t,r)=>t.name.localeCompare(r.name))}getBySource(o){return this.getAll(o)}getNames(){return Array.from(this.commands.keys()).sort()}clear(){this.commands.clear(),this.aliases.clear()}get size(){return this.commands.size}get aliasCount(){return this.aliases.size}},tl=new pe;import K from"chalk";import{Buffer as Xs}from"node:buffer";import{spawn as rl}from"node:child_process";import qs from"node:process";var Ae="\x1B",sl="\x07",lt=`${Ae}\\`;function Ks(e,o){return e.SSH_CONNECTION?!1:o==="win32"||o==="darwin"||o==="linux"}a(Ks,"shouldPreferNativeClipboard");function il(e,o){let n=Xs.from(e,"utf8").toString("base64"),t=o.TERM==="xterm-kitty"?lt:sl,r=`${Ae}]52;c;${n}${t}`;return o.TMUX?`${Ae}Ptmux;${r.replaceAll(Ae,`${Ae}${Ae}`)}${lt}`:o.STY?`${Ae}P${r}${lt}`:r}a(il,"buildOscSequence");async function Zo(e,o,n){return new Promise((t,r)=>{let i=rl(e,o,{stdio:["pipe","ignore","pipe"],windowsHide:!0}),l="";i.on("error",r),i.stderr?.on("data",c=>{l+=c.toString()}),i.on("close",c=>{if(c===0){t(!0);return}r(new Error(l.trim()||`${e} exited with code ${c??"unknown"}`))}),i.stdin?.write(n),i.stdin?.end()})}a(Zo,"execClipboardCommand");function al(e){let o="$stream = [Console]::OpenStandardInput(); $buffer = New-Object byte[] 8192; $memory = New-Object System.IO.MemoryStream; while (($read = $stream.Read($buffer, 0, $buffer.Length)) -gt 0) { $memory.Write($buffer, 0, $read) }; $text = [System.Text.Encoding]::UTF8.GetString($memory.ToArray()); Set-Clipboard -Value $text",n=Xs.from(e,"utf8");return[["powershell",["-NoProfile","-NonInteractive","-Command",o],n],["pwsh",["-NoProfile","-NonInteractive","-Command",o],n],["cmd",["/c","chcp 65001 >nul & clip"],n]]}a(al,"buildWindowsClipboardCandidates");async function zs(e,o,n){if(o.SSH_CONNECTION)return!1;switch(n){case"win32":{let t=al(e);for(let[r,i,l]of t)try{if(await Zo(r,i,l))return!0}catch{}return!1}case"darwin":return Zo("pbcopy",[],e);case"linux":{let t=[["wl-copy",[]],["xclip",["-selection","clipboard"]],["xsel",["--clipboard","--input"]]];for(let[r,i]of t)try{if(await Zo(r,i,e))return!0}catch{}return!1}default:return!1}}a(zs,"tryNativeClipboard");async function ll(e,o){if(!o.TMUX)return!1;let n=o.LC_TERMINAL==="iTerm2"?["load-buffer","-"]:["load-buffer","-w","-"];try{return await Zo("tmux",n,e)}catch{return!1}}a(ll,"tryTmuxClipboard");async function Vs(e,o={}){let n=o.env??qs.env,t=o.platform??qs.platform,r=e.trimEnd(),i=il(r,n);if(!r)throw new Error("Nothing to copy.");if(Ks(n,t))try{if(await zs(r,n,t))return{path:"native"}}catch{}if(await ll(r,n))return{path:"tmux-buffer"};if(o.terminalWrite?.(i))return{path:"osc52"};if(!Ks(n,t))try{if(await zs(r,n,t))return{path:"native"}}catch{}throw new Error("Unable to access any clipboard path.")}a(Vs,"copyTextToClipboard");var ct;(function(e){e.Idle="idle",e.Responding="responding",e.WaitingForConfirmation="waiting_for_confirmation"})(ct||(ct={}));var G;(function(e){e.Scheduled="scheduled",e.Validating="validating",e.AwaitingApproval="awaiting_approval",e.Executing="executing",e.Success="success",e.Error="error",e.Cancelled="cancelled"})(G||(G={}));var Cm={[G.Scheduled]:"\u25CB",[G.Validating]:"\u25CC",[G.AwaitingApproval]:"?",[G.Executing]:"\u25CB",[G.Success]:"\u2713",[G.Error]:"\u2717",[G.Cancelled]:"-"},Ys;(function(e){e[e.Low=-100]="Low",e[e.Normal=0]="Normal",e[e.High=100]="High",e[e.Critical=200]="Critical"})(Ys||(Ys={}));var Im={streamingState:ct.Idle,currentResponse:"",history:[],pendingToolCalls:[],sessionId:"",provider:"",model:"",isLoading:!1};var cl="[redacted]",Js="[truncated]";function se(e,o=2e3){return e.length>o?`${e.slice(0,o-3)}...`:e}a(se,"truncateToolReplayText");function dl(e){let o=e.toLowerCase().replace(/[\s_-]/g,"");return o.includes("token")||o.includes("password")||o.includes("secret")||o.includes("apikey")||o.includes("accesstoken")||o==="authorization"||o==="cookie"||o==="setcookie"}a(dl,"isSensitiveToolInputKey");function Zs(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}a(Zs,"isRecord");function dt(e,o=0,n=new WeakSet){if(e===null||typeof e=="number"||typeof e=="boolean")return e;if(typeof e=="string")return se(e);if(o>=6)return Js;if(typeof e=="object"&&e!==null){if(n.has(e))return Js;if(n.add(e),Array.isArray(e))return e.slice(0,50).map(r=>dt(r,o+1,n));if(!Zs(e))return se(String(e));let t={};for(let[r,i]of Object.entries(e).slice(0,50))t[r]=dl(r)?cl:dt(i,o+1,n);return t}return se(String(e))}a(dt,"sanitizeToolJsonValue");function Qs(e){if(!e)return;let o=dt(e);return Zs(o)?o:void 0}a(Qs,"sanitizeToolInput");function ei(e){if(e!==void 0){if(typeof e=="string")return se(e);try{return se(JSON.stringify(e))}catch{return se(String(e))}}}a(ei,"stringifyToolReplayValue");function Om(e){return e.type==="tool_summary"||e.type==="task_completed"?{type:"event",text:e.text,icon:"tool"}:e.type==="tool_group"?{type:"tool_group",tools:e.tools.map(yl)}:e}a(Om,"seedToHistoryItem");var ul="[Thinking]",fl="[/Thinking]",ml="Untitled Session",oi=50,pl=60,ti="...",ri=["[Managed Task]","[Managed Task Protocol Retry]","Assigned native agent identity:","Tool policy:","Blocked tools:","Allowed shell patterns:","Dependency handoff artifacts:","Dependency summary preview:","Preferred agent:","Read structured bundle first:","Read human summary next:"],si=[/(?:^|\n)You are the [^\n]+ role for a managed KodaX task\./,/(?:^|\n)Primary task:/,/(?:^|\n)Work intent:/,/(?:^|\n)Complexity:/,/(?:^|\n)Risk:/,/(?:^|\n)Harness:/,/(?:^|\n)Brainstorm required:/],gl=/(^|\r?\n)\[Thinking\]\r?\n([\s\S]*?)\r?\n\[\/Thinking\](?=\r?\n|$)/g,wl="Session ended before the tool completed.";function hl(e){switch(e){case"success":return G.Success;case"error":return G.Error;case"cancelled":return G.Cancelled;case"awaiting_approval":return G.AwaitingApproval;default:return e}}a(hl,"toolCallSeedToHistoryToolStatus");function yl(e){return{id:e.id,name:e.name,status:hl(e.status),...e.input!==void 0?{input:e.input}:{},...e.preview!==void 0?{preview:e.preview}:{},...e.output!==void 0?{output:e.output}:{},...e.error!==void 0?{error:e.error}:{},startTime:e.startTime??Date.now(),...e.endTime!==void 0?{endTime:e.endTime}:{}}}a(yl,"toolCallSeedToHistoryToolCall");function kl(e){let o=-1;for(let n of ri){let t=e.indexOf(n);t>=0&&(o===-1||t<o)&&(o=t)}for(let n of si){let t=n.exec(e);t&&t.index>=0&&(o===-1||t.index<o)&&(o=t.index)}return o}a(kl,"findControlPlaneCutIndex");function vl(e){return ri.some(o=>e.includes(o))||si.some(o=>o.test(e))}a(vl,"hasControlPlaneSignal");function ii(e){let o=[];for(let n of e)n&&typeof n=="object"&&"type"in n&&n.type==="text"&&"text"in n&&o.push(String(n.text));return o}a(ii,"collectTextBlocks");function en(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}a(en,"isRecord");function $l(e){if(typeof e=="string")return se(e);if(e===void 0)return"";try{return ei(e)??""}catch{return se(String(e))}}a($l,"toolResultContentToString");function Sl(e){let o=$l(e.content),n=o.trimStart(),t=e.is_error===!0||n.startsWith("[Tool Error]")||n.startsWith("[Error]"),r=n.startsWith("[Cancelled]")||n.startsWith("[Blocked]");return t?{status:"error",error:o}:r?{status:"cancelled",error:o}:{status:"success",output:o}}a(Sl,"inferToolResultSeed");function bl(e){let o=new Map;if(!e||e.role!=="user"||!Array.isArray(e.content))return o;for(let n of e.content)!en(n)||n.type!=="tool_result"||typeof n.tool_use_id!="string"||o.set(n.tool_use_id,Sl(n));return o}a(bl,"collectToolResultSeeds");function xl(e,o){if(e.type!=="tool_use"||typeof e.id!="string"||typeof e.name!="string")return;let n=o.get(e.id)??{status:"cancelled",error:wl};return{id:e.id,name:e.name,status:n.status,...e.input!==void 0?{input:Qs(en(e.input)?e.input:{})??{}}:{},...n.output!==void 0?{output:n.output}:{},...n.error!==void 0?{error:n.error}:{}}}a(xl,"buildToolCallSeed");function Al(e){return typeof e=="string"?e:Array.isArray(e)?ii(e).join(`
2
+ import{$ as is,A as ns,B as Gn,E as Ho,G as ts,I as qn,J as Kn,K as rs,M as Bo,U as be,Z as ss,aa as as,ba as ls,u as Qr,w as He,x as Bn,y as es,z as os}from"./chunk-GVTM4Z6O.js";import{a as cs}from"./chunk-SX2WFHIS.js";import{Ba as Vr,Ca as Yr,Ia as Jr,Ka as Zr}from"./chunk-A574DBTV.js";import{i as No}from"./chunk-A2TFSV5M.js";import{A as Ur,D as Se,J as Fe,m as Do,n as Uo,o as je,q as io,r as jo,s as Wr,t as Or,v as Nr,w as jn,x as Dr,y as ao}from"./chunk-PHH4TRGF.js";import{h as Lr,xa as Hr,ya as Br}from"./chunk-T7LYK53M.js";import{B as Mr,Eb as Fn,Fb as Fo,Ib as jr,Pc as Gr,Rc as qr,Sc as Kr,Vc as Hn,ma as Oo,nd as zr,pd as Xr,wc as Fr,yc as re}from"./chunk-PVUXONQB.js";import{C as hr,Ma as Nn,Na as We,Oa as Oe,v as On}from"./chunk-ZJIMT5I3.js";import{Fa as yr,Ga as kr,Ha as Dn,Hd as _r,Ib as Cr,Qc as Ue,Rc as Ir,ed as Pr,hd as Un,k as _o,qd as Wo}from"./chunk-Y5XKAN7C.js";import{F as br,G as xr,H as Ar,U as $e,V as De,_ as Rr,aa as Mo,b as q,ca as Lo,da as Er,e as Ne,ea as Tr,f as H,o as vr,p as $r,u as Sr}from"./chunk-52JSZ77P.js";import{a,b as Wn,d as Sa}from"./chunk-ONUPGMER.js";var ys=Wn((Tf,hs)=>{"use strict";hs.exports=a(function(o){return o.map(function(n){return n===""?"''":n&&typeof n=="object"?n.op.replace(/(.)/g,"\\$1"):/["\s\\]/.test(n)&&!/'/.test(n)?"'"+n.replace(/(['])/g,"\\$1")+"'":/["'\s]/.test(n)?'"'+n.replace(/(["\\$`!])/g,"\\$1")+'"':String(n).replace(/([A-Za-z]:)?([#!"$&'()*,:;<=>?@[\\\]^`{|}])/g,"$1\\$2")}).join(" ")},"quote")});var As=Wn((If,xs)=>{"use strict";var bs="(?:"+["\\|\\|","\\&\\&",";;","\\|\\&","\\<\\(","\\<\\<\\<",">>",">\\&","<\\&","[&;()|<>]"].join("|")+")",ks=new RegExp("^"+bs+"$"),vs="|&;()<> \\t",Aa='"((\\\\"|[^"])*?)"',Ra="'((\\\\'|[^'])*?)'",Ea=/^#$/,$s="'",Ss='"',zn="$",xe="",Ta=4294967296;for(Xn=0;Xn<4;Xn++)xe+=(Ta*Math.random()).toString(16);var Xn,Ca=new RegExp("^"+xe);function Ia(e,o){for(var n=o.lastIndex,t=[],r;r=o.exec(e);)t.push(r),o.lastIndex===r.index&&(o.lastIndex+=1);return o.lastIndex=n,t}a(Ia,"matchAll");function Pa(e,o,n){var t=typeof e=="function"?e(n):e[n];return typeof t>"u"&&n!=""?t="":typeof t>"u"&&(t="$"),typeof t=="object"?o+xe+JSON.stringify(t)+xe:o+t}a(Pa,"getVar");function _a(e,o,n){n||(n={});var t=n.escape||"\\",r="(\\"+t+`['"`+vs+`]|[^\\s'"`+vs+"])+",i=new RegExp(["("+bs+")","("+r+"|"+Aa+"|"+Ra+")+"].join("|"),"g"),l=Ia(e,i);if(l.length===0)return[];o||(o={});var c=!1;return l.map(function(d){var u=d[0];if(!u||c)return;if(ks.test(u))return{op:u};var f=!1,m=!1,y="",v=!1,k;function $(){k+=1;var I,M,V=u.charAt(k);if(V==="{"){if(k+=1,u.charAt(k)==="}")throw new Error("Bad substitution: "+u.slice(k-2,k+1));if(I=u.indexOf("}",k),I<0)throw new Error("Bad substitution: "+u.slice(k));M=u.slice(k,I),k=I}else if(/[*@#?$!_-]/.test(V))M=V,k+=1;else{var Y=u.slice(k);I=Y.match(/[^\w\d_]/),I?(M=Y.slice(0,I.index),k+=I.index-1):(M=Y,k=u.length)}return Pa(o,"",M)}for(a($,"parseEnvVar"),k=0;k<u.length;k++){var g=u.charAt(k);if(v=v||!f&&(g==="*"||g==="?"),m)y+=g,m=!1;else if(f)g===f?f=!1:f==$s?y+=g:g===t?(k+=1,g=u.charAt(k),g===Ss||g===t||g===zn?y+=g:y+=t+g):g===zn?y+=$():y+=g;else if(g===Ss||g===$s)f=g;else{if(ks.test(g))return{op:u};if(Ea.test(g)){c=!0;var b={comment:e.slice(d.index+k+1)};return y.length?[y,b]:[b]}else g===t?m=!0:g===zn?y+=$():y+=g}}return v?{op:"glob",pattern:y}:y}).reduce(function(d,u){return typeof u>"u"?d:d.concat(u)},[])}a(_a,"parseInternal");xs.exports=a(function(o,n,t){var r=_a(o,n,t);return typeof n!="function"?r:r.reduce(function(i,l){if(typeof l=="object")return i.concat(l);var c=l.split(RegExp("("+xe+".*?"+xe+")","g"));return c.length===1?i.concat(c[0]):i.concat(c.filter(Boolean).map(function(d){return Ca.test(d)?JSON.parse(d.split(xe)[1]):d}))},[])},"parse")});var Rs=Wn(Vn=>{"use strict";Vn.quote=ys();Vn.parse=As()});import*as Tn from"fs";import*as Co from"path";import*as xn from"fs";import bn from"path";import s from"chalk";var Go=["plan","accept-edits","auto","auto-in-project"];function $f(e){return e==="auto"||e==="auto-in-project"}a($f,"isAutoMode");function ba(e){switch(e){case"plan":return"Plan";case"accept-edits":return"Edits";case"auto":case"auto-in-project":return"Auto"}}a(ba,"permissionModeDisplayName");var xa='[deprecated] permissionMode "auto-in-project" is now an alias for "auto" (FEATURE_092, v0.7.33). The alias will be removed in v0.7.38 \u2014 please update ~/.kodax/config.json to use "auto".';function Sf(e=o=>{q({source:"repl:permission",level:"warn",message:o})}){let o=!1;return()=>{o||(o=!0,e(xa))}}a(Sf,"createAutoInProjectDeprecationEmitter");var ds=zr(),lo=new Set(ds.filter(e=>e.sideEffect==="mutates-fs"&&e.requiredParams.includes("path")).map(e=>e.name)),us=new Set(ds.filter(e=>e.sideEffect!=="readonly").map(e=>e.name)),fs=new Set(["npm install","npm i","npm uninstall","npm remove","npm update","npm ci","yarn add","yarn remove","yarn upgrade","pnpm add","pnpm remove","pnpm update","git clean","git reset","git checkout","git switch","git merge","git rebase","git cherry-pick","git revert","git commit","git push","git pull","rm","mv","cp","mkdir","rmdir","touch","chmod","chown","del","erase","rd","copy","move","ren","curl","wget","dd","tar","kill","pkill","killall"]),ms=new Set(["ls","cat","pwd","echo","whoami","date","which","whereis","tree","dir","type","get-childitem","get-content","select-string","get-location","where","grep","find","awk","sed","head","tail","less","more","wc","findstr","fc","git status","git diff","git log","git show","git branch","git remote","git ls-files","git rev-parse","git grep","git tag","git stash list","git describe","git config --get","node","npm","yarn","pnpm","tsc","python","pip","go","cargo","rustc"]);function ps(e){switch(e){case"plan":return new Set(["bash","write","edit","undo"]);case"accept-edits":return new Set(["bash"]);case"auto":case"auto-in-project":return new Set}}a(ps,"computeConfirmTools");function gs(e){return e!==void 0&&Go.includes(e)}a(gs,"isPermissionMode");function co(e,o){return gs(e)?e:o}a(co,"normalizePermissionMode");async function ws(e){let o=e.resolve(e.provider),n=[];for(let t of e.efforts){if(e.signal?.aborted)break;let r=!1;try{await o.stream([{role:"user",content:"ping"}],[],"",{effort:t},{modelOverride:e.model,maxOutputTokensOverride:1,onReasoningEffortRejected:a(()=>{r=!0},"onReasoningEffortRejected"),onTextDelta:a(()=>{},"onTextDelta")},e.signal)}catch(i){n.push({effort:t,status:"error",error:i instanceof Error?i.message:String(i)});continue}r?(kr(e.provider,e.model,t,"probed",e.now()),n.push({effort:t,status:"rejected"})):n.push({effort:t,status:"accepted"})}return n}a(ws,"probeProviderReasoningEfforts");import Yo from"fs";import Fs from"path";import qo from"fs";import W from"path";import fo from"os";var Cs=Sa(Rs(),1);var Es=new Set(["/dev/null","nul","NUL"]);function Yn(e){return Es.has(e)||Es.has(e.toLowerCase())}a(Yn,"isNullDevice");function uo(e){let o=e.trim();if(!o)return{statements:[],unparseable:!1};if(o.includes("`"))return{statements:[],unparseable:!0};let n;try{n=(0,Cs.parse)(o)}catch{return{statements:[],unparseable:!0}}let t=[],r=[],i=[],l=[],c=null,d=!1,u=a(()=>{(i.length>0||l.length>0)&&(r.push({argv:i,redirections:l}),i=[],l=[])},"flushStage"),f=a(m=>{u(),r.length>0&&(t.push({precedingOp:c,stages:r}),r=[]),c=m},"flushStatement");for(let m=0;m<n.length;m+=1){let y=n[m];if(typeof y=="string"){i.push(y);continue}if("op"in y){let v=y.op;if(v==="&&"||v==="||"||v===";"){f(v);continue}if(v==="|"){u();continue}if(v==="&"){let k=n[m+1];if(k!==void 0&&typeof k!="string"&&"op"in k&&(k.op===">"||k.op===">>")){let $=n[m+2];if(typeof $!="string"){d=!0,m+=1;continue}l.push(Ts(`&${k.op}`,$)),m+=2;continue}d=!0;continue}if(La(v)){let k=null,$=i[i.length-1];$!==void 0&&/^[0-9]+$/.test($)&&(k=$,i.pop());let g=n[m+1];if(typeof g!="string"){d=!0;continue}l.push(Ts(k?`${k}${v}`:v,g)),m+=1;continue}if(v==="glob"){let k=y.pattern;typeof k=="string"?i.push(k):d=!0;continue}d=!0;continue}if("comment"in y)break;d=!0}return f(null),{statements:t,unparseable:d}}a(uo,"parseBashCommand");var Ma=new Set([">",">>","<","<<","<<<","&>","&>>"]),Is=/^([0-9]+|&)(>>?|<<?)$/;function La(e){return Ma.has(e)||Is.test(e)}a(La,"isRedirectionOp");function Ts(e,o){let n=null,t=e,r=Is.exec(e);return r&&(n=r[1],t=r[2]),{op:e,fd:n,append:t===">>"||e==="&>>",input:t==="<"||t==="<<"||e==="<<<",target:o}}a(Ts,"parseRedirection");var Wa=W.join(".agent","plan_mode_doc.md"),Ko=new Map,zo=null;function Oa(e){if(!e||!e.trim())return!1;let o=e.trim().replace(/\s+/g," ").toLowerCase();for(let n of ms)if(o===n||o.startsWith(n+" ")){if(n==="sed"&&o.split(/\s+/).some(i=>i.startsWith("-i")||i==="--in-place"))return!1;if(n==="awk"){let r=o.split(/\s+/);if(r.includes("-f")||r.includes("--file"))return!1}if(["node","npm","yarn","pnpm","tsc","python","pip","go","cargo","rustc","ruby","perl"].includes(n)){let r=o.split(/\s+/).slice(1);if(r.length>0&&!r.every(i=>/^(-v|--version|-h|--help)$/.test(i)))return!1}return!0}return!1}a(Oa,"isSingleBashReadCommand");var Na=/^[a-zA-Z0-9]+$/;function Da(e){let o=e.trim();if(!o.endsWith("--help")||o.includes('"')||o.includes("'"))return!1;let n=!1;for(let t of o.split(/\s+/))if(t.startsWith("-"))if(t==="--help")n=!0;else return!1;else if(!Na.test(t))return!1;return n}a(Da,"isHelpCommand");function Zn(e){if(!e||!e.trim())return!1;if(Da(e))return!0;let o=e.trim().replace(/\\\r?\n/g," "),n=uo(o);if(n.unparseable||n.statements.length===0)return!1;let t=n.statements.length>1||(n.statements[0]?.stages.length??0)>1;for(let r of n.statements){if(r.precedingOp!==null&&r.precedingOp!=="&&")return!1;for(let i of r.stages){for(let c of i.redirections)if(c.input||!Yn(c.target))return!1;let l=i.argv.join(" ");if(l&&!(t&&i.argv[0]?.toLowerCase()==="cd"&&i.argv.length>=2)&&!Oa(l))return!1}}return!0}a(Zn,"isBashReadCommand");function Ua(e){let o=e.trim();return o?Zn(o)?null:"[Blocked] Direct !command execution only supports safe read-only commands. Use the bash tool for commands that write files, invoke shells, or require confirmation.":"[Shell: No command provided]"}a(Ua,"getDirectShellBypassBlockReason");var _s=new Set(["remove-item","set-content","add-content","out-file","new-item","copy-item","move-item","rename-item","ni"]);function Qn(e){if(!e||!e.trim())return!1;let o=uo(e);if(o.unparseable)return!1;for(let n of o.statements)for(let t of n.stages){let r=t.argv.map(i=>i.toLowerCase());if(r.length>0){let i=r[0],l=r.length>=2?`${r[0]} ${r[1]}`:null;for(let c of fs)if(c===i||l!==null&&c===l)return!0}for(let i of r)if(_s.has(i))return!0;for(let i of t.redirections)if(!i.input&&!Yn(i.target))return!0}return!1}a(Qn,"isBashWriteCommand");function et(e){let o=e.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\((.+)\)$/);return o?{tool:o[1].toLowerCase(),pattern:o[2]}:{tool:e.toLowerCase(),pattern:null}}a(et,"parseAllowedToolPattern");function ja(e,o){if(o==="*")return!1;if(o.endsWith(":*")){let n=o.slice(0,-2);return e.startsWith(n)}return e===o}a(ja,"matchesBashPatternLegacy");function Fa(e,o){if(o==="*")return!1;if(o.endsWith(":*")){let n=o.slice(0,-2);return e===n}return e===o}a(Fa,"matchesBashPatternByExtractedPrefix");async function ot(e,o,n,t,r){if(e.toLowerCase()!=="bash")return!1;let i=o.command??"",l=[];for(let c of n){let d=et(c);if(d.tool==="bash"){if(d.pattern===null)return!0;l.push({pattern:d.pattern})}}if(l.length===0)return!1;if(t){let c;try{c=await t.extract(i,r)}catch{return!1}if(c.kind!=="prefix")return!1;for(let{pattern:d}of l)if(d&&Fa(c.value,d))return!0;return!1}for(let{pattern:c}of l)if(c&&ja(i,c))return!0;return!1}a(ot,"isToolCallAllowed");function nt(e,o,n){if(e.toLowerCase()!=="bash")return"";let t=o.command??"",r=t.split(" ");return r.length>1?`Bash(${r.slice(0,2).join(" ")}:*)`:`Bash(${t})`}a(nt,"generateSavePattern");function mo(e,o){try{let n=W.resolve(e),t=W.resolve(o),r=Ne(),i=W.join(t,".kodax");return Be(n,i)||Be(n,r)?!0:!(Be(n,t)||Ws().some(c=>Be(n,c)))}catch{return!1}}a(mo,"isAlwaysConfirmPath");function Ps(e){return!e||e.startsWith("-")?!1:/^\.\.?[/\\]/.test(e)||e.startsWith("~/")||e.startsWith("~\\")||/^[a-zA-Z]:[/\\]/.test(e)?!0:e.startsWith("/")&&e.length>1?!(process.platform==="win32"&&Ha.test(e)):!!(e.startsWith(".")&&/[/\\]/.test(e))}a(Ps,"looksLikePath");var Ha=/^\/[A-Za-z][A-Za-z0-9]*(?::[A-Za-z0-9]+)?$/;function Ba(e){let o=[],n=/["']([^"']+)["']/g,t;for(;(t=n.exec(e))!==null;)o.push(t[1]);let r=/(?:^|\s)(\.\.?\/[^\s]+|\.\.?\\[^\s]+|[a-zA-Z]:\\[^\s]+|~\/[^\s]+|\.[^\s]*[/\\][^\s]*)/g;for(;(t=r.exec(e))!==null;)o.push(t[1]);return o}a(Ba,"legacyRegexPathScan");function Vo(e){let o=new Set,n=uo(e);if(!n.unparseable)for(let t of n.statements)for(let r of t.stages){for(let i of r.argv)Ps(i)&&o.add(i);for(let i of r.redirections)Ps(i.target)&&o.add(i.target)}for(let t of Ba(e))o.add(t);return Array.from(o)}a(Vo,"extractPathsFromCommand");function Ga(e,o){let n=Vo(e);for(let t of n)if(mo(t,o))return!0;return!1}a(Ga,"isCommandOnProtectedPath");function Xo(e){let o=W.normalize(e);return process.platform==="win32"?o.toLowerCase():o}a(Xo,"normalizePathForComparison");function qa(e,o){return Xo(e)===Xo(o)}a(qa,"pathsEqual");function Be(e,o){let n=Xo(e),t=Xo(o);return n===t||n.startsWith(t+W.sep)}a(Be,"isPathInsideDirectory");function tt(e,o){try{let n=W.resolve(o),t=W.resolve(n,Ls(Ms(e)));return Be(t,n)}catch{return!1}}a(tt,"isPathInsideProject");function Ka(e){let o=e.match(/[A-Za-z]:[\\/][^\s;|&<>(){}'"]+|\/[^\s;|&<>(){}'"]+/g);return o?o.filter(n=>!/^(?:\/dev\/|\/proc\/)/i.test(n)):[]}a(Ka,"collectAbsolutePathCandidates");function rt(e){let o=W.resolve(e),n=Ko.get(o);if(n)return n;if(qo.existsSync(o)){let c=qo.realpathSync.native(o);return Ko.set(o,c),c}let t=[],r=o;for(;!qo.existsSync(r);){let c=W.dirname(r);if(c===r)return Ko.set(o,o),o;t.unshift(W.basename(r)),r=c}let i=qo.realpathSync.native(r),l=W.join(i,...t);return Ko.set(o,l),l}a(rt,"resolveExistingPathPrefix");function Ms(e){return e==="~"?fo.homedir():e.startsWith(`~${W.sep}`)||e.startsWith("~/")||e.startsWith("~\\")?W.join(fo.homedir(),e.slice(2)):e}a(Ms,"expandHomeDirectory");function Ls(e){let o=fo.tmpdir(),n=[[/^%temp%/i,o],[/^%tmp%/i,o],[/^\$env:temp\b/i,o],[/^\$env:tmp\b/i,o],[/^\$tmpdir\b/i,o],[/^\$temp\b/i,o],[/^\$tmp\b/i,o]];for(let[t,r]of n)if(t.test(e))return e.replace(t,r);return e}a(Ls,"expandSystemTempAlias");function za(e,o){let n=W.resolve(o??process.cwd()),t=Ls(Ms(e)),r=W.isAbsolute(t)?W.resolve(t):W.resolve(n,t);return rt(r)}a(za,"resolvePermissionPath");function Ws(){if(zo)return zo;let e=new Set,o=[fo.tmpdir(),process.env.TEMP,process.env.TMP,process.env.TMPDIR].filter(n=>typeof n=="string"&&n.trim().length>0);for(let n of o)try{e.add(rt(n))}catch{}return zo=Array.from(e),zo}a(Ws,"getSystemTempDirectories");function st(e){let o=rt(e??process.cwd());return{projectPlanDoc:W.join(o,Wa),systemTempDirs:Ws()}}a(st,"getPlanModeAllowedWritablePaths");function Jn(e,o){let n=za(e,o),{projectPlanDoc:t,systemTempDirs:r}=st(o);return qa(n,t)?!0:r.some(i=>Be(n,i))}a(Jn,"isPlanModeAllowedPath");function Xa(e){let{projectPlanDoc:o,systemTempDirs:n}=st(e),t=n[0]??fo.tmpdir();return`${o} or the system temp directory (${t})`}a(Xa,"formatPlanModeAllowedLocations");var Va=new Set(["-a","--append","-i","--ignore-interrupts"]);function Ya(e){let o=[];for(let n=1;n<e.argv.length;n+=1){let t=e.argv[n];Va.has(t)||t.startsWith("-")||o.push(t)}return o}a(Ya,"collectTeeTargets");function Ja(e){let o=[],n=1,t=!1;for(;n<e.argv.length;){let r=e.argv[n],i=r.toLowerCase();if(i==="-path"||i==="-literalpath"||i==="-destination"){let l=e.argv[n+1];if(l!==void 0&&!l.startsWith("-")){o.push(l),n+=2;continue}}!r.startsWith("-")&&!t&&(o.push(r),t=!0),n+=1}return o}a(Ja,"collectPowerShellWriteTargets");function Ge(e){let o=new Set,n=a(r=>{let i=r?.trim();i&&o.add(i)},"pushTarget");for(let r of Vo(e))n(r);let t=uo(e);if(t.unparseable)return Array.from(o);for(let r of t.statements)for(let i of r.stages){for(let c of i.redirections)c.input||n(c.target);let l=i.argv[0]?.toLowerCase();if(l){if(l==="tee")for(let c of Ya(i))n(c);else if(_s.has(l))for(let c of Ja(i))n(c)}}return Array.from(o)}a(Ge,"collectBashWriteTargets");function Os(e,o){if(!Qn(e))return{dangerous:!1};let n=new Set([...Ge(e),...Ka(e)]);for(let t of n)if(!tt(t,o))return{dangerous:!0,reason:`Command may modify file outside project: ${t}`};return{dangerous:!1}}a(Os,"getBashOutsideProjectWriteRisk");function Ns(e,o,n){let t=Xa(n);if(Xr(e))return null;if(lo.has(e)){let r=typeof o.path=="string"?o.path:"";return r?Jn(r,n)?null:`[Blocked] Plan mode only allows file modifications in ${t}. Requested path: ${r}`:`[Blocked] Tool '${e}' is not allowed in plan mode unless it targets ${t}.`}if(e==="bash"){let r=o.command??"";if(!Qn(r))return null;let i=Ge(r);if(i.length===0)return`[Blocked] Plan mode only allows bash write operations when every target is either ${t}. Could not determine a safe target from: ${r.slice(0,80)}${r.length>80?"...":""}`;let l=i.find(c=>!Jn(c,n));return l?`[Blocked] Plan mode only allows bash write operations in ${t}. Blocked target: ${l}`:null}return`[Blocked] Tool '${e}' has side effects and is not permitted in plan mode. Switch to accept-edits or auto mode to use it, or work within ${t}.`}a(Ns,"getPlanModeBlockReason");import me from"node:path";import Za from"node:os";function qe(e,o){try{let n=me.resolve(e),t=me.resolve(o);return n===t?!0:n.startsWith(t+me.sep)}catch{return!1}}a(qe,"isPathUnder");function Qa(){try{return Ne()}catch{return}}a(Qa,"safeGetAgentConfigHome");function Ds(e,o){let n=Qa();if(n&&qe(e,n))return"user-kodax";let t=me.join(me.resolve(o),".kodax");if(qe(e,t))return"project-kodax"}a(Ds,"resolveProtectedZone");function el(){let e=new Set;try{e.add(Za.tmpdir())}catch{}for(let o of["TEMP","TMP","TMPDIR"]){let n=process.env[o];n&&n.length>0&&e.add(n)}return Array.from(e)}a(el,"getSystemTempDirs");var ol=new Set(["bash"]),nl={toolNames:ol,collect(e,o){let n=typeof e.input.command=="string"?e.input.command:"";if(!n||!o)return[];let t=[],r=new Set,i=new Set,l=el(),c=me.resolve(o);for(let d of Vo(n)){let u;try{u=me.resolve(o,d)}catch{continue}let f=Ds(u,o);if(f){r.has(u)||(r.add(u),t.push({kind:"protected_path",path:d,zone:f}));continue}if(mo(d,o)){let m=l.some(v=>qe(u,v)),y=qe(u,c);!m&&!y&&!i.has(u)&&(i.add(u),t.push({kind:"outside_project",path:d}))}}for(let d of Ge(n)){let u;try{u=me.resolve(o,d)}catch{continue}Ds(u,o)||qe(u,c)||l.some(y=>qe(u,y))||t.push({kind:"shell_redirect_outside",target:d})}return t}};var Jo=H("config.json");function Hs(){return Fs.join(process.cwd(),".kodax","config.local.json")}a(Hs,"getProjectConfigFile");function gm(e=process.env){let n=po(Jo).autoMode??{},t=e.KODAX_AUTO_MODE_ENGINE?.trim(),r=t==="llm"||t==="rules"?t:void 0,i=n.engine==="llm"||n.engine==="rules"?n.engine:void 0,l=r??i??"llm",c=js(n.classifierModel),d=js(e.KODAX_AUTO_MODE_CLASSIFIER_MODEL),u=e.KODAX_AUTO_MODE_TIMEOUT_MS?.trim(),f=u!==void 0?Number(u):NaN,m=Number.isFinite(f)&&f>0?Math.floor(f):void 0,y=typeof n.timeoutMs=="number"&&n.timeoutMs>0?Math.floor(n.timeoutMs):void 0,v=Us(e.KODAX_AUTO_SPECULATIVE_WINDOW_MS?.trim()),k=typeof n.speculativeWindowMs=="number"?Us(String(n.speculativeWindowMs)):void 0;return{engine:l,classifierModel:c,classifierModelEnv:d,timeoutMs:m??y,speculativeWindowMs:v??k}}a(gm,"loadAutoModeSettings");function Us(e){if(e===void 0||e==="")return;let o=Number(e);if(Number.isFinite(o))return o<0?0:Math.floor(o)}a(Us,"parseSpeculativeWindow");function js(e){if(typeof e!="string")return;let o=e.trim();return o.length===0?void 0:o}a(js,"nonEmptyString");function po(e){try{if(Yo.existsSync(e))return JSON.parse(Yo.readFileSync(e,"utf-8"))}catch{}return{}}a(po,"readJsonFile");function Bs(e,o){Yo.mkdirSync(Fs.dirname(e),{recursive:!0}),Yo.writeFileSync(e,JSON.stringify(o,null,2))}a(Bs,"writeJsonFile");function it(e){let o=po(Jo);Bs(Jo,{...o,permissionMode:e})}a(it,"savePermissionModeUser");function wm(){let e=po(Jo),o=po(Hs()),n=e.alwaysAllowTools??[],t=o.alwaysAllowTools??[];return[...new Set([...n,...t])]}a(wm,"loadAlwaysAllowTools");function hm(e,o,n=!1){let t=nt(e,o,n);if(!t)return;let r=Hs(),i=po(r),l=i.alwaysAllowTools??[];l.includes(t)||Bs(r,{...i,alwaysAllowTools:[...l,t]})}a(hm,"saveAlwaysAllowToolPattern");var at=["ama","amaw","sa"];function Gs(e){let o=at.indexOf(e);return at[(o+1)%at.length]??"ama"}a(Gs,"nextAgentMode");var pe=class{static{a(this,"CommandRegistry")}commands=new Map;aliases=new Map;register(o){let n=o.name.toLowerCase();if(this.commands.has(n))throw new Error(`Command "${o.name}" is already registered`);if(this.aliases.has(n)){let r=this.aliases.get(n);throw new Error(`Command "${o.name}" conflicts with existing alias for "${r}"`)}let t=new Set;for(let r of o.aliases??[]){let i=r.toLowerCase();if(i!==n){if(t.has(i))throw new Error(`Alias "${r}" is duplicated within command "${o.name}"`);if(this.commands.has(i))throw new Error(`Alias "${r}" conflicts with existing command "${i}"`);if(this.aliases.has(i)){let l=this.aliases.get(i);throw new Error(`Alias "${r}" is already registered for "${l}"`)}t.add(i)}}if(this.commands.set(n,{...o,source:o.source??"builtin"}),o.aliases)for(let r of o.aliases){let i=r.toLowerCase();i!==n&&this.aliases.set(i,n)}}unregister(o){let n=o.toLowerCase(),t=this.aliases.get(n)??n;if(!this.commands.has(t))return!1;let r=this.commands.get(t);if(r?.aliases)for(let i of r.aliases)this.aliases.delete(i.toLowerCase());return this.commands.delete(t),!0}get(o){let n=o.toLowerCase(),t=this.aliases.get(n)??n;return this.commands.get(t)}has(o){let n=o.toLowerCase(),t=this.aliases.get(n)??n;return this.commands.has(t)}getAll(o){let n=new Map;for(let[t,r]of this.commands)o&&r.source!==o||n.has(t)||n.set(t,{name:r.name,aliases:r.aliases,description:r.description,source:r.source??"builtin",usage:r.usage,priority:r.priority,location:r.location,path:r.path,userInvocable:r.userInvocable,disableModelInvocation:r.disableModelInvocation,allowedTools:r.allowedTools,context:r.context,agent:r.agent,argumentHint:r.argumentHint,model:r.model});return Array.from(n.values()).sort((t,r)=>t.name.localeCompare(r.name))}getBySource(o){return this.getAll(o)}getNames(){return Array.from(this.commands.keys()).sort()}clear(){this.commands.clear(),this.aliases.clear()}get size(){return this.commands.size}get aliasCount(){return this.aliases.size}},tl=new pe;import K from"chalk";import{Buffer as Xs}from"node:buffer";import{spawn as rl}from"node:child_process";import qs from"node:process";var Ae="\x1B",sl="\x07",lt=`${Ae}\\`;function Ks(e,o){return e.SSH_CONNECTION?!1:o==="win32"||o==="darwin"||o==="linux"}a(Ks,"shouldPreferNativeClipboard");function il(e,o){let n=Xs.from(e,"utf8").toString("base64"),t=o.TERM==="xterm-kitty"?lt:sl,r=`${Ae}]52;c;${n}${t}`;return o.TMUX?`${Ae}Ptmux;${r.replaceAll(Ae,`${Ae}${Ae}`)}${lt}`:o.STY?`${Ae}P${r}${lt}`:r}a(il,"buildOscSequence");async function Zo(e,o,n){return new Promise((t,r)=>{let i=rl(e,o,{stdio:["pipe","ignore","pipe"],windowsHide:!0}),l="";i.on("error",r),i.stderr?.on("data",c=>{l+=c.toString()}),i.on("close",c=>{if(c===0){t(!0);return}r(new Error(l.trim()||`${e} exited with code ${c??"unknown"}`))}),i.stdin?.write(n),i.stdin?.end()})}a(Zo,"execClipboardCommand");function al(e){let o="$stream = [Console]::OpenStandardInput(); $buffer = New-Object byte[] 8192; $memory = New-Object System.IO.MemoryStream; while (($read = $stream.Read($buffer, 0, $buffer.Length)) -gt 0) { $memory.Write($buffer, 0, $read) }; $text = [System.Text.Encoding]::UTF8.GetString($memory.ToArray()); Set-Clipboard -Value $text",n=Xs.from(e,"utf8");return[["powershell",["-NoProfile","-NonInteractive","-Command",o],n],["pwsh",["-NoProfile","-NonInteractive","-Command",o],n],["cmd",["/c","chcp 65001 >nul & clip"],n]]}a(al,"buildWindowsClipboardCandidates");async function zs(e,o,n){if(o.SSH_CONNECTION)return!1;switch(n){case"win32":{let t=al(e);for(let[r,i,l]of t)try{if(await Zo(r,i,l))return!0}catch{}return!1}case"darwin":return Zo("pbcopy",[],e);case"linux":{let t=[["wl-copy",[]],["xclip",["-selection","clipboard"]],["xsel",["--clipboard","--input"]]];for(let[r,i]of t)try{if(await Zo(r,i,e))return!0}catch{}return!1}default:return!1}}a(zs,"tryNativeClipboard");async function ll(e,o){if(!o.TMUX)return!1;let n=o.LC_TERMINAL==="iTerm2"?["load-buffer","-"]:["load-buffer","-w","-"];try{return await Zo("tmux",n,e)}catch{return!1}}a(ll,"tryTmuxClipboard");async function Vs(e,o={}){let n=o.env??qs.env,t=o.platform??qs.platform,r=e.trimEnd(),i=il(r,n);if(!r)throw new Error("Nothing to copy.");if(Ks(n,t))try{if(await zs(r,n,t))return{path:"native"}}catch{}if(await ll(r,n))return{path:"tmux-buffer"};if(o.terminalWrite?.(i))return{path:"osc52"};if(!Ks(n,t))try{if(await zs(r,n,t))return{path:"native"}}catch{}throw new Error("Unable to access any clipboard path.")}a(Vs,"copyTextToClipboard");var ct;(function(e){e.Idle="idle",e.Responding="responding",e.WaitingForConfirmation="waiting_for_confirmation"})(ct||(ct={}));var G;(function(e){e.Scheduled="scheduled",e.Validating="validating",e.AwaitingApproval="awaiting_approval",e.Executing="executing",e.Success="success",e.Error="error",e.Cancelled="cancelled"})(G||(G={}));var Cm={[G.Scheduled]:"\u25CB",[G.Validating]:"\u25CC",[G.AwaitingApproval]:"?",[G.Executing]:"\u25CB",[G.Success]:"\u2713",[G.Error]:"\u2717",[G.Cancelled]:"-"},Ys;(function(e){e[e.Low=-100]="Low",e[e.Normal=0]="Normal",e[e.High=100]="High",e[e.Critical=200]="Critical"})(Ys||(Ys={}));var Im={streamingState:ct.Idle,currentResponse:"",history:[],pendingToolCalls:[],sessionId:"",provider:"",model:"",isLoading:!1};var cl="[redacted]",Js="[truncated]";function se(e,o=2e3){return e.length>o?`${e.slice(0,o-3)}...`:e}a(se,"truncateToolReplayText");function dl(e){let o=e.toLowerCase().replace(/[\s_-]/g,"");return o.includes("token")||o.includes("password")||o.includes("secret")||o.includes("apikey")||o.includes("accesstoken")||o==="authorization"||o==="cookie"||o==="setcookie"}a(dl,"isSensitiveToolInputKey");function Zs(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}a(Zs,"isRecord");function dt(e,o=0,n=new WeakSet){if(e===null||typeof e=="number"||typeof e=="boolean")return e;if(typeof e=="string")return se(e);if(o>=6)return Js;if(typeof e=="object"&&e!==null){if(n.has(e))return Js;if(n.add(e),Array.isArray(e))return e.slice(0,50).map(r=>dt(r,o+1,n));if(!Zs(e))return se(String(e));let t={};for(let[r,i]of Object.entries(e).slice(0,50))t[r]=dl(r)?cl:dt(i,o+1,n);return t}return se(String(e))}a(dt,"sanitizeToolJsonValue");function Qs(e){if(!e)return;let o=dt(e);return Zs(o)?o:void 0}a(Qs,"sanitizeToolInput");function ei(e){if(e!==void 0){if(typeof e=="string")return se(e);try{return se(JSON.stringify(e))}catch{return se(String(e))}}}a(ei,"stringifyToolReplayValue");function Om(e){return e.type==="tool_summary"||e.type==="task_completed"?{type:"event",text:e.text,icon:"tool"}:e.type==="tool_group"?{type:"tool_group",tools:e.tools.map(yl)}:e}a(Om,"seedToHistoryItem");var ul="[Thinking]",fl="[/Thinking]",ml="Untitled Session",oi=50,pl=60,ti="...",ri=["[Managed Task]","[Managed Task Protocol Retry]","Assigned native agent identity:","Tool policy:","Blocked tools:","Allowed shell patterns:","Dependency handoff artifacts:","Dependency summary preview:","Preferred agent:","Read structured bundle first:","Read human summary next:"],si=[/(?:^|\n)You are the [^\n]+ role for a managed KodaX task\./,/(?:^|\n)Primary task:/,/(?:^|\n)Work intent:/,/(?:^|\n)Complexity:/,/(?:^|\n)Risk:/,/(?:^|\n)Harness:/,/(?:^|\n)Brainstorm required:/],gl=/(^|\r?\n)\[Thinking\]\r?\n([\s\S]*?)\r?\n\[\/Thinking\](?=\r?\n|$)/g,wl="Session ended before the tool completed.";function hl(e){switch(e){case"success":return G.Success;case"error":return G.Error;case"cancelled":return G.Cancelled;case"awaiting_approval":return G.AwaitingApproval;default:return e}}a(hl,"toolCallSeedToHistoryToolStatus");function yl(e){return{id:e.id,name:e.name,status:hl(e.status),...e.input!==void 0?{input:e.input}:{},...e.preview!==void 0?{preview:e.preview}:{},...e.output!==void 0?{output:e.output}:{},...e.error!==void 0?{error:e.error}:{},startTime:e.startTime??Date.now(),...e.endTime!==void 0?{endTime:e.endTime}:{}}}a(yl,"toolCallSeedToHistoryToolCall");function kl(e){let o=-1;for(let n of ri){let t=e.indexOf(n);t>=0&&(o===-1||t<o)&&(o=t)}for(let n of si){let t=n.exec(e);t&&t.index>=0&&(o===-1||t.index<o)&&(o=t.index)}return o}a(kl,"findControlPlaneCutIndex");function vl(e){return ri.some(o=>e.includes(o))||si.some(o=>o.test(e))}a(vl,"hasControlPlaneSignal");function ii(e){let o=[];for(let n of e)n&&typeof n=="object"&&"type"in n&&n.type==="text"&&"text"in n&&o.push(String(n.text));return o}a(ii,"collectTextBlocks");function en(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}a(en,"isRecord");function $l(e){if(typeof e=="string")return se(e);if(e===void 0)return"";try{return ei(e)??""}catch{return se(String(e))}}a($l,"toolResultContentToString");function Sl(e){let o=$l(e.content),n=o.trimStart(),t=e.is_error===!0||n.startsWith("[Tool Error]")||n.startsWith("[Error]"),r=n.startsWith("[Cancelled]")||n.startsWith("[Blocked]");return t?{status:"error",error:o}:r?{status:"cancelled",error:o}:{status:"success",output:o}}a(Sl,"inferToolResultSeed");function bl(e){let o=new Map;if(!e||e.role!=="user"||!Array.isArray(e.content))return o;for(let n of e.content)!en(n)||n.type!=="tool_result"||typeof n.tool_use_id!="string"||o.set(n.tool_use_id,Sl(n));return o}a(bl,"collectToolResultSeeds");function xl(e,o){if(e.type!=="tool_use"||typeof e.id!="string"||typeof e.name!="string")return;let n=o.get(e.id)??{status:"cancelled",error:wl};return{id:e.id,name:e.name,status:n.status,...e.input!==void 0?{input:Qs(en(e.input)?e.input:{})??{}}:{},...n.output!==void 0?{output:n.output}:{},...n.error!==void 0?{error:n.error}:{}}}a(xl,"buildToolCallSeed");function Al(e){return typeof e=="string"?e:Array.isArray(e)?ii(e).join(`
3
3
  `):""}a(Al,"extractAssistantTextOnly");function wo(e,o,n){n.trim().length!==0&&e.push({type:o,text:n})}a(wo,"pushSeed");function ni(e){return e.replace(/^\n+/,"").replace(/\n+$/,"")}a(ni,"stripLegacyTagBoundaryNewlines");function Rl(e){let o=e.name,n=e.input;if(!n)return`\u26A1 ${o}`;let t=o==="bash"?go(String(n.command??"")):o==="read"||o==="write"||o==="edit"?go(String(n.file_path??n.path??"")):o==="grep"||o==="glob"?go(String(n.pattern??"")):o==="web_search"||o==="web_fetch"?go(String(n.query??n.url??"")):void 0;return t?`\u26A1 ${o}(${t})`:`\u26A1 ${o}`}a(Rl,"formatToolUseSummary");function go(e,o=60){let n=e.replace(/\s+/g," ").trim();return n.length>o?`${n.slice(0,o)}...`:n}a(go,"truncateToolHint");function El(e){if(!e.includes(ul)||!e.includes(fl))return e.trim().length>0?[{type:"assistant",text:e}]:[];let o=[],n=0;for(let t of e.matchAll(gl)){let r=t.index??-1,i=t[1]??"",l=t[2]??"";if(r<0)continue;let c=r+i.length;wo(o,"assistant",ni(e.slice(n,c))),wo(o,"thinking",l),n=r+t[0].length}return wo(o,"assistant",ni(e.slice(n))),o.length===0?e.trim().length>0?[{type:"assistant",text:e}]:[]:o}a(El,"parseLegacyAssistantContent");function ai(e,o){if(typeof e=="string")return El(e);if(!Array.isArray(e))return[];let n=[],t=[],r=[],i=a(()=>{t.length!==0&&(wo(n,"assistant",t.join(`
4
4
  `)),t.length=0)},"flushAssistantBuffer"),l=a(()=>{r.length!==0&&(n.push({type:"tool_group",tools:[...r]}),r.length=0)},"flushToolBuffer");for(let c of e)if(!(!en(c)||typeof c.type!="string"))switch(c.type){case"text":l(),"text"in c&&t.push(String(c.text));break;case"thinking":i(),l(),"thinking"in c&&wo(n,"thinking",String(c.thinking));break;case"tool_use":if(i(),o){let d=xl(c,o);d&&r.push(d)}else if(typeof c.name=="string"){let d=Rl({name:c.name,...en(c.input)?{input:c.input}:{}});d&&n.push({type:"tool_summary",text:d})}break;case"tool_result":case"redacted_thinking":break;default:break}return l(),i(),n}a(ai,"extractAssistantHistorySeeds");var Tl=["You are the Scout role","You are the Generator role","You are the Planner role","You are the Evaluator role"],Cl=/\r?\n?\`\`\`kodax[\w-]*[\s\S]*?\`\`\`\s*/g;function Il(e){return Tl.some(o=>e.includes(o))}a(Il,"isManagedWorkerPrompt");function li(e){return e.replace(Cl,"").trim()}a(li,"stripManagedProtocolBlocks");function Pl(e){switch(e.role){case"assistant":return ai(e.content).flatMap(n=>{if(n.type!=="assistant")return[n];let t=li(n.text);return t.length>0&&t.trim()!=="..."?[{...n,text:t}]:[]});case"user":{if(e._source==="sidecar-verifier"){let n=Qo(e.content).trim();return n?[{type:"sidecar",text:n,verdict:"revise"}]:[]}if(e._source==="task-completed"){let n=Qo(e.content).trim();return n?[{type:"task_completed",text:n}]:[]}if(e._synthetic)return[];let o=Qo(e.content);return o.trim().length===0||Il(o)?[]:[{type:"user",text:o}]}case"system":return[];default:return[]}}a(Pl,"extractHistorySeedsFromMessage");function Nm(e){let o=[];for(let n=0;n<e.length;n+=1){let t=e[n];if(t){if(t.role==="assistant"){let r=bl(e[n+1]),i=ai(t.content,r);o.push(...i.map(l=>l.type==="assistant"?{...l,text:li(l.text)}:l).filter(l=>l.type!=="assistant"||l.text.length>0&&l.text.trim()!=="..."));continue}o.push(...Pl(t))}}return o}a(Nm,"extractHistorySeedsFromMessages");function Qo(e){return typeof e=="string"?e:Array.isArray(e)?ii(e).join(`
5
5
  `):""}a(Qo,"extractTextContent");function _l(e){let o=e.replace(/\s+/g," ").trim();return o?o.length>oi?`${o.slice(0,oi)}${ti}`:o:ml}a(_l,"formatSessionTitle");function Ml(e){if(e.role!=="user")return!1;let o=e.content;return!Array.isArray(o)||o.length===0?!1:o.every(n=>!!n&&typeof n=="object"&&"type"in n&&n.type==="tool_result")}a(Ml,"isPureToolResultUserMessage");function ut(e){for(let o=e.length-1;o>=0;o--){let n=e[o];if(n){if(n.role==="assistant"){let t=Al(n.content);return t&&t.trim()!=="..."?t:""}if(!Ml(n))return""}}return""}a(ut,"extractLastAssistantText");function Dm(e,o,n,t){let r=[ut(e),o.trim(),n?.trim()??"",t?.trim()??""];for(let i of r){let l=ci(i);if(l)return l}return""}a(Dm,"resolveCompletedAssistantText");function ci(e){let o=e.trim();if(!o||o==="...")return"";let n=kl(o);return n===0?"":(n>0?o.slice(0,n):o).trim()}a(ci,"sanitizeUserFacingAssistantText");function Um(e){let o=e.trim();return o.length>0&&ci(o).length===0&&vl(o)}a(Um,"isControlPlaneOnlyAssistantText");function jm(e){let o=e.find(t=>t.role==="user"),n=o?Qo(o.content):"";return _l(n)}a(jm,"extractTitle");function Fm(e,o=pl){let n=e.replace(/\n/g," "),t=n.length>o?ti:"";return n.slice(0,o)+t}a(Fm,"formatMessagePreview");var ft={name:"copy",description:"Copy last assistant message to clipboard",usage:"/copy",handler:a(async(e,o)=>{let n=ut(o.messages);if(!n){console.log(K.yellow(`
@@ -621,4 +621,4 @@ Available Skills:
621
621
  [Skill "${t}" is not user-invocable]`)),!1;console.log(s.cyan(`
622
622
  [Invoking skill: ${t}]`)),i.argumentHint&&console.log(s.dim(`Arguments: ${r||"(none)"}`)),console.log();let l=await n.loadFull(t),c={workingDirectory:process.cwd(),projectRoot:o.gitRoot??void 0,sessionId:o.sessionId,environment:{},executeDynamicContext:o.skillDynamicContext?.execute,disableDynamicContext:o.skillDynamicContext?.disable},d=await Rr(l,r,c);return console.log(s.green(`Skill activated: ${t}`)),console.log(s.dim("The skill context has been prepared for the AI.")),console.log(),{invocation:{prompt:d.content,source:"skill",displayName:t,path:l.skillFilePath,disableModelInvocation:d.disableModelInvocation,userInvocable:l.userInvocable,allowedTools:l.allowedTools,context:l.context,agent:l.agent,argumentHint:l.argumentHint,model:l.model,hooks:l.hooks,skillInvocation:{name:t,path:l.skillFilePath,description:l.description,arguments:r||void 0,allowedTools:l.allowedTools,context:l.context,agent:l.agent,argumentHint:l.argumentHint,model:l.model,hookEvents:l.hooks?Object.entries(l.hooks).filter(([,u])=>Array.isArray(u)&&u.length>0).map(([u])=>u):void 0,expandedContent:d.content}}}}catch(i){return console.log(s.red(`
623
623
  [Error invoking skill: ${i instanceof Error?i.message:String(i)}]`)),!1}}a(nr,"executeSkillCommand");var En=class{static{a(this,"SkillCompleter")}gitRoot;constructor(o){this.gitRoot=o}canComplete(o,n){return this.parseTrigger(o.slice(0,n))!==void 0}async getCompletions(o,n){let t=this.parseTrigger(o.slice(0,n));if(!t)return[];let r=t.partial.toLowerCase();return(await this.getSkills()).filter(l=>{let c=l.name.toLowerCase();return c.includes(r)||this.fuzzyIncludes(r,c)}).map(l=>({text:`${t.invocationPrefix}${l.name}`,display:l.name,description:this.truncateDescription(l.description),type:"skill"})).sort((l,c)=>{let d=l.display.toLowerCase().startsWith(r),u=c.display.toLowerCase().startsWith(r);return d&&!u?-1:!d&&u?1:l.display.length-c.display.length})}setGitRoot(o){this.gitRoot!==o&&(this.gitRoot=o)}parseTrigger(o){let n=o.match(/(^|\s)\/skill:([^\s]*)$/);if(n)return{partial:n[2]??"",invocationPrefix:"/skill:"};let t=o.match(/(^|\s)\/([^\s]*)$/);if(t)return{partial:t[2]??"",invocationPrefix:"/"}}async getSkills(){try{let o=$e(this.gitRoot);return o.size===0&&await De(this.gitRoot),o.listUserInvocable()}catch{return[]}}fuzzyIncludes(o,n){let t=0;for(let r=0;r<n.length&&t<o.length;r+=1)n[r]===o[t]&&(t+=1);return t===o.length}truncateDescription(o,n=50){return o.length<=n?o:o.slice(0,n-3)+"..."}};import{exec as Mu}from"node:child_process";import*as oo from"node:path";import{promisify as Lu}from"node:util";var ua=Lu(Mu);function Wu(e){let o=e.slice(3);if(!o)return;let n=o.indexOf(" -> ");return(n===-1?o:o.slice(n+4)).replace(/^"(.*)"$/,"$1").trim()||void 0}a(Wu,"pathFromPorcelainLine");async function fa(e,o=10){try{let[{stdout:n},{stdout:t}]=await Promise.all([ua("git rev-parse --show-toplevel",{cwd:e}),ua("git status --porcelain=v1 -uall",{cwd:e})]),r=n.trim(),i=[],l=new Set;for(let c of t.split(`
624
- `)){if(!c.trim())continue;let d=Wu(c);if(!d)continue;let u=oo.resolve(r,d),f=oo.relative(e,u).split(oo.sep).join("/");if(!(!f||f.startsWith("..")||l.has(f))&&(l.add(f),i.push(f),i.length>=o))break}return i}catch{return[]}}a(fa,"getRecentWorkingSetFiles");function no(e){let o=e.lastIndexOf("/");if(o===-1)return-1;for(;o>0&&!/\s/.test(e[o-1]??"");)if(o=e.lastIndexOf("/",o-1),o===-1)return-1;return o}a(no,"findCommandSlashIndex");var ir=class{static{a(this,"FileCompleter")}cwdSource;cache=new Map;cacheTimeout=5e3;recentCache=new Map;recentFilesProvider;constructor(o,n=fa){this.cwdSource=o,this.recentFilesProvider=n}canComplete(o,n){let t=o.slice(0,n),r=t.lastIndexOf("@");return!(r===-1||r>0&&!/\s/.test(t[r-1]??"")||t.slice(r+1).includes(" "))}async getCompletions(o,n){let t=o.slice(0,n),r=t.lastIndexOf("@");if(r===-1)return[];let i=t.slice(r+1),l=[],c=this.resolveCwd(),d=i.lastIndexOf("/"),u=d===-1?c:Co.join(c,i.slice(0,d)),f=d===-1?i:i.slice(d+1);try{let y=(await this.readdir(u)).filter(v=>v.toLowerCase().startsWith(f.toLowerCase()));for(let v of y){let k=Co.join(u,v),$=await this.isDirectory(k),g=d===-1?v:i.slice(0,d+1)+v;l.push({text:"@"+g+($?"/":""),display:v+($?"/":""),description:$?"directory":"file",type:"file"})}}catch{}if(d===-1){let m=await this.getRecentFiles(c),y=new Set(l.map($=>$.text)),v=f.toLowerCase(),k=[];for(let $ of m){if(f&&!Co.basename($).toLowerCase().startsWith(v))continue;let g="@"+$;y.has(g)||(y.add(g),k.push({text:g,display:$,description:"recent",type:"file"}))}l.unshift(...k)}return l}async getRecentFiles(o){let n=Date.now(),t=this.recentCache.get(o);if(t&&t.expiresAt>n)return t.files;let r=await this.recentFilesProvider(o);return this.recentCache.set(o,{files:r,expiresAt:Date.now()+this.cacheTimeout}),r}resolveCwd(){return typeof this.cwdSource=="function"?this.cwdSource():this.cwdSource??process.cwd()}async readdir(o){let n=Date.now(),t=this.cache.get(o);return t&&t.expiresAt>n?t.entries:(t&&this.cache.delete(o),new Promise(r=>{Tn.readdir(o,(i,l)=>{i?r([]):(this.cache.set(o,{entries:l,expiresAt:Date.now()+this.cacheTimeout}),r(l))})}))}async isDirectory(o){return new Promise(n=>{Tn.stat(o,(t,r)=>{n(!t&&r.isDirectory())})})}},ar=class{static{a(this,"CommandCompleter")}commands;constructor(){this.commands=new Map,this.loadCommands()}loadCommands(){for(let n of To().getAll())n.userInvocable!==!1&&this.commands.set(n.name,{description:n.description,aliases:n.aliases??[]});let o=re();for(let n of o?.listCommands()??[])n.metadata?.userInvocable!==!1&&this.commands.set(n.name,{description:n.description,aliases:n.aliases??[]})}canComplete(o,n){let t=o.slice(0,n),r=no(t);return r===-1?!1:!t.slice(r).includes(" ")}async getCompletions(o,n){let t=o.slice(0,n),r=no(t);if(r===-1)return[];this.commands.clear(),this.loadCommands();let i=t.slice(r+1).toLowerCase(),l=[];for(let[c,d]of this.commands){this.fuzzyMatch(i,c)&&l.push({text:"/"+c,display:"/"+c,description:d.description,type:"command"});for(let u of d.aliases)u!==c&&this.fuzzyMatch(i,u)&&l.push({text:"/"+u,display:"/"+u,description:`Alias for /${c}: ${d.description}`,type:"command"})}return l}fuzzyMatch(o,n){if(!o)return!0;let t=o.toLowerCase(),r=n.toLowerCase(),i=0;for(let l=0;l<r.length&&i<t.length;l++)r[l]===t[i]&&i++;return i===t.length}};function Fh(e){let o=new ir(e),n=new En,t=new ar;return async r=>{let i=r.includes("@"),l=r.includes("/");if(!i&&!l)return[[],r];let c=[];if(l){let u=await Ou(r,r.length);c.push(...u)}if(l&&n.canComplete(r,r.length)){let u=await n.getCompletions(r,r.length);c.push(...u)}if(l&&t.canComplete(r,r.length)){let u=await t.getCompletions(r,r.length);c.push(...u)}if(i&&o.canComplete(r,r.length)){let u=await o.getCompletions(r,r.length);c.push(...u)}return[c.map(u=>Nu(r,u)),r]}}a(Fh,"createCompleter");async function Ou(e,o){let{ArgumentCompleter:n}=await import("./argument-completer-RSK6CCGP.js"),t=new n;return t.canComplete(e,o)?t.getCompletions(e,o):[]}a(Ou,"getArgumentCompletions");function Nu(e,o){if(o.type!=="argument")return o.text;let n=no(e);if(n!==-1&&!/\s/.test(e.slice(n)))return`${e} ${o.text}`;let r=e.match(/\S+$/)?.[0]??"";return`${r?e.slice(0,e.length-r.length):e}${o.text}`}a(Nu,"formatReadlineCompletion");import{existsSync as In,readdirSync as ha,readFileSync as ya}from"node:fs";import{join as Pn}from"node:path";var Du=[{name:"plan",description:"Read-only planning mode - blocks all modifications",type:"enum"},{name:"accept-edits",description:"File edits auto-approved, bash requires confirmation",type:"enum"},{name:"auto",description:"Use auto-mode classifier for tool permissions",type:"enum"}],Cn=[{name:"on",description:"Map to reasoning auto",type:"enum"},{name:"off",description:"Disable reasoning",type:"enum"},{name:"auto",description:"Use semantic routing with adaptive depth",type:"enum"},{name:"quick",description:"Low-depth reasoning mode",type:"enum"},{name:"balanced",description:"Medium-depth reasoning mode",type:"enum"},{name:"deep",description:"High-depth reasoning mode",type:"enum"}],ma=Cn.slice(2).concat([{name:"off",description:"Disable reasoning",type:"enum"}]);function Uu(e){if(e&&e.includes("/")){let o=e.indexOf("/"),n=e.slice(0,o),t=e.slice(o+1);if(We(n))try{return He(n).filter(i=>!t||i.toLowerCase().includes(t.toLowerCase())).map(i=>({name:`${n}/${i}`,description:i,type:"enum"}))}catch{}return[]}return Oe().map(o=>({name:o,description:`Switch to ${o} provider`,type:"enum"}))}a(Uu,"getModelArgs");var lr=[{name:"workspace",description:"Inspect current workspace/runtime truth in more detail",type:"enum"},{name:"runtime",description:"Alias for workspace runtime inspection",type:"enum"},{name:"worktree",description:"Alias for workspace runtime inspection",type:"enum"}],cr=[{name:"all",description:"Delete ALL sessions",type:"enum"}],ju=[{name:"status",description:"Show MCP server status",type:"enum"},{name:"refresh",description:"Refresh MCP server catalogs",type:"enum"}],Fu=[{name:"status",description:"Show child-task fallback order",type:"enum"},{name:"off",description:"Disable child-task fallback providers",type:"enum"}],Hu=[{name:"llm",description:"Use LLM classifier for auto mode",type:"enum"},{name:"rules",description:"Use rules-only auto mode",type:"enum"}],pa=[{name:"ama",description:"Use AMA agent mode",type:"enum"},{name:"amaw",description:"Use AMA workflow agent mode",type:"enum"},{name:"ama-workflow",description:"Alias for amaw",type:"enum"},{name:"sa",description:"Use single-agent mode",type:"enum"},{name:"toggle",description:"Cycle to the next agent mode",type:"enum"}],ga=[{name:"on",description:"Enable logging",type:"enum"},{name:"off",description:"Disable logging",type:"enum"}],Bu=[{name:"list",description:"List project memory files",type:"enum"},{name:"pending",description:"List pending memory proposals",type:"enum"},{name:"show",description:"Preview a memory proposal",type:"enum"},{name:"approve",description:"Approve a memory proposal",type:"enum"},{name:"reject",description:"Reject a memory proposal",type:"enum"},{name:"curate",description:"Report memory governance findings",type:"enum"},{name:"rebuild",description:"Rebuild MEMORY.md index",type:"enum"},{name:"open",description:"Print the memory entrypoint path",type:"enum"},{name:"help",description:"Show memory help",type:"enum"}],Gu=[{name:"status",description:"Show current persistent goal",type:"enum"},{name:"pause",description:"Pause the active goal",type:"enum"},{name:"resume",description:"Resume a paused goal",type:"enum"},{name:"clear",description:"Clear the current goal",type:"enum"},{name:"help",description:"Show goal help",type:"enum"},{name:"--tokens",description:"Set an optional goal token budget",type:"enum"}],qu=[{name:"show",description:"Show a captured paste by id",type:"enum"},{name:"list",description:"List captured pastes",type:"enum"}],Ku=[{name:"--lean",description:"Add a minimal-diff/YAGNI review pass",type:"enum"},{name:"--workflow",description:"Review through a dynamic workflow",type:"enum"},{name:"base",description:"Review changes against the detected base branch",type:"enum"},{name:"sha",description:"Review a specific commit",type:"enum"},{name:"help",description:"Show review help",type:"enum"}],zu=[{name:"init",description:"Create AGENTS.md in the target project if absent",type:"enum"},{name:"lean",description:"Initialize or LLM-review AGENTS.md for Lean Mode guidance",type:"enum"},{name:"help",description:"Show agents help",type:"enum"}],Xu=[{name:"status",description:"Inspect the current repo-intelligence runtime state",type:"enum"},{name:"mode",description:"Switch repo-intelligence runtime mode",type:"enum"},{name:"trace",description:"Toggle repo-intelligence trace output",type:"enum"}],Vu=[{name:"auto",description:"Let KodaX pick the best repo-intelligence engine",type:"enum"},{name:"full",description:"Prefer the full repo-intelligence engine",type:"enum"},{name:"light",description:"Use the light repo-intelligence engine",type:"enum"},{name:"off",description:"Disable repo-intelligence injection",type:"enum"}],Yu=[{name:"on",description:"Enable repo-intelligence trace output",type:"enum"},{name:"off",description:"Disable repo-intelligence trace output",type:"enum"},{name:"toggle",description:"Toggle repo-intelligence trace output",type:"enum"}],Ju=[{name:"status",description:"Deprecated alias for /repo-intel status",type:"enum"}],Zu=[{name:"list",description:"List built-in and saved workflows",type:"enum"},{name:"create",description:"Generate and run a workflow from a request",type:"enum"},{name:"runs",description:"List active and recent workflow runs",type:"enum"},{name:"show",description:"Show latest run or a specific workflow run",type:"enum"},{name:"pause",description:"Pause future child launches for a run",type:"enum"},{name:"resume",description:"Resume a paused run",type:"enum"},{name:"stop",description:"Stop an active workflow run",type:"enum"},{name:"delete",description:"Delete one persisted workflow run or generated saved capsule",type:"enum"},{name:"prune",description:"Preview or delete old terminal workflow runs",type:"enum"},{name:"rerun",description:"Rerun a run id or saved workflow name",type:"enum"},{name:"save",description:"Save a generated run as a workflow capsule",type:"enum"},{name:"rename",description:"Rename a run display name or saved workflow capsule",type:"enum"},{name:"revise",description:"Generate a revised workflow capsule",type:"enum"},{name:"help",description:"Show workflow help",type:"enum"}],Qu=new Set(["show","pause","resume","stop","delete","rerun","save","rename","revise"]),ef=new Set(["show","delete","rerun","save","rename","revise"]),of=[{name:"--all",description:"Show all persisted workflow runs",type:"enum"},{name:"--limit",description:"Show at most N persisted workflow runs",type:"enum"}],nf=[{name:"--dry-run",description:"Preview cleanup without deleting runs",type:"enum"},{name:"--keep",description:"Keep the newest N terminal runs",type:"enum"},{name:"--older-than",description:"Delete terminal runs older than Nd or Nh",type:"enum"}],tf=[{name:"--force",description:"Delete stale non-terminal run records",type:"enum"},{name:"--run",description:"Treat the target as a workflow run record",type:"enum"},{name:"--saved",description:"Treat the target as a generated saved workflow capsule",type:"enum"}],rf=[".workflow.json",".ts",".mjs",".js"];function sf(e,o){switch(e){case"pause":return o==="running";case"resume":return o==="paused";case"stop":return o==="running"||o==="paused";case"delete":return o!=="running"&&o!=="paused";default:return!0}}a(sf,"workflowRunMatchesSubcommand");function _n(e){return/^[a-zA-Z0-9._-]{1,120}$/.test(e)&&!e.startsWith(".")&&!e.includes("..")}a(_n,"isWorkflowRunEntryName");function af(e,o){let n=Pn(e,"workflow-metadata.json");if(In(n))try{let r=JSON.parse(ya(n,"utf8"));if(typeof r=="object"&&r!==null){let i=r.displayName;if(typeof i=="string"&&_n(i.trim()))return i.trim()}}catch{}let t=o.displayName;return typeof t=="string"&&_n(t.trim())?t.trim():void 0}a(af,"readWorkflowRunDisplayName");function lf(){let e=Ee(process.cwd()).key,o=H("workflow-runs",e);if(!In(o))return[];let n=[];for(let t of ha(o)){if(!_n(t))continue;let r=Pn(o,t,"run.json");if(In(r))try{let i=JSON.parse(ya(r,"utf8")),l=typeof i.workflow=="string"?i.workflow:"?",c=typeof i.status=="string"?i.status:"?",d=typeof i.endedAt=="number"?i.endedAt:0;n.push({arg:{name:t,description:`${l} - ${c}`,type:"string"},endedAt:d});let u=af(Pn(o,t),i);u&&u!==t&&n.push({arg:{name:u,description:`${l} alias for ${t} - ${c}`,type:"string"},endedAt:d})}catch{}}return n.sort((t,r)=>r.endedAt-t.endedAt).map(t=>t.arg)}a(lf,"getPersistedWorkflowRunIdArgs");function Mn(e){let o=Fe().list().filter(r=>sf(e,r.status)).map(r=>({name:r.runId,description:`${r.workflow} - ${r.status}`,type:"string"})),n=ef.has(e)?lf():[],t=new Set;return[...o,...n].filter(r=>t.has(r.name)?!1:(t.add(r.name),!0))}a(Mn,"getWorkflowRunIdArgs");function cf(e){for(let o of rf)if(e.endsWith(o)){let n=e.slice(0,-o.length);return _n(n)?n:void 0}}a(cf,"savedWorkflowNameFromFile");function Io(e={}){let o=[{path:H("workflows"),source:"personal"},{path:Pn(process.cwd(),".kodax","workflows"),source:"project"}],n=new Map;for(let t of o)if(In(t.path))try{for(let r of ha(t.path)){if(e.generatedOnly===!0&&!r.endsWith(".workflow.json"))continue;let i=cf(r);i&&n.set(i,{name:i,description:`${t.source} saved workflow`,type:"enum"})}}catch{}return[...n.values()].sort((t,r)=>t.name.localeCompare(r.name))}a(Io,"getSavedWorkflowNameArgs");function df(){let e=new Map;for(let o of Mn("rerun"))e.set(o.name,{...o,description:`recent run: ${o.description}`,type:"string"});for(let o of Io()){let n=e.get(o.name);if(n){e.set(o.name,{...n,description:`${n.description}; also ${o.description}`});continue}e.set(o.name,{...o,description:o.description,type:"string"})}return[...e.values()]}a(df,"getWorkflowRerunArgs");function dr(e){let o=new Map;for(let n of Mn(e))o.set(n.name,{...n,description:`workflow run: ${n.description}`,type:"string"});for(let n of Io({generatedOnly:e==="delete"})){let t=o.get(n.name);if(t){o.set(n.name,{...t,description:`${t.description}; also ${n.description}`});continue}o.set(n.name,{...n,description:n.description,type:"string"})}return[...o.values()]}a(dr,"getWorkflowRunOrSavedNameArgs");function wa(e){let o=new Set(e.slice(1).filter(n=>n.startsWith("--")));return o.has("--saved")?Io({generatedOnly:!0}):o.has("--run")?Mn("delete"):dr("delete")}a(wa,"getWorkflowDeleteTargetArgs");function uf(e){let[o=""]=e,n=o.toLowerCase(),t=e.length===1&&e[0]===""?0:e.length;if(t<=1)return[...Zu,...Uo().map(r=>({name:r.name,description:r.description,type:"enum"})),...Io()];if(n==="rerun"&&t<=2)return df();if(n==="rename"&&t<=2)return dr("rename");if(n==="delete"&&t<=2)return[...tf,...wa(e)];if(n==="delete"&&t<=3&&e.slice(1).some(r=>r.startsWith("--")))return wa(e);if(n==="revise"){if(t<=2)return[{name:"--replace",description:"Replace a saved workflow after confirmation",type:"enum"},...dr("revise")];if(e[1]==="--replace"&&t<=3)return Io()}return Qu.has(n)&&t<=2?Mn(n):n==="runs"&&t<=2?of:n==="prune"&&t<=2?nf:[]}a(uf,"getWorkflowArgs");function ff(e){let[o=""]=e,n=o.toLowerCase(),t=e.length===1&&e[0]===""?0:e.length;return t<=1?Xu:t>2?[]:n==="mode"?Vu:n==="trace"?Yu:[]}a(ff,"getRepoIntelArgs");var mf=new Map([["mode",Du],["thinking",Cn],["think",Cn],["t",Cn],["reasoning",ma],["reason",ma],["status",lr],["info",lr],["ctx",lr],["mcp",ju],["fallback",Fu],["auto-engine",Hu],["agent-mode",pa],["am",pa],["verifier-log",ga],["stall-log",ga],["memory",Bu],["goal",Gu],["paste",qu],["review",Ku],["agents",zu],["delete",cr],["rm",cr],["del",cr]]),pf=new Set(["model","m","provider"]),gf=new Set(["repo-intel"]),wf=new Set(["repointel","ri"]),hf=new Set(["workflow"]);function ur(e,o,n=[]){let t=e.toLowerCase();return pf.has(t)?Uu(o):gf.has(t)?ff(n):wf.has(t)?n.length<=1?Ju:[]:hf.has(t)?uf(n):mf.get(t)??[]}a(ur,"getCommandArguments");var fr=class{static{a(this,"ArgumentCompleter")}canComplete(o,n){let t=o.slice(0,n),r=no(t);if(r===-1)return!1;let i=t.slice(r),l=i.split(/\s+/);if(l.length>=2&&l[0]!=="")return!0;let c=i.slice(1).toLowerCase();return ur(c).length>0}async getCompletions(o,n){let t=o.slice(0,n),r=no(t);if(r===-1)return[];let i=t.slice(r),l=i.indexOf(" "),c=(l===-1?i.slice(1):i.slice(1,l)).toLowerCase(),d=l===-1?"":i.slice(l+1),u=d?d.split(/\s+/):[""],f=u.length-1,m=(u[f]??"").toLowerCase(),y=ur(c,m,u);if(!y||y.length===0)return[];let v=new Set(u.slice(0,-1).map($=>$.toLowerCase()));return y.filter($=>!v.has($.name.toLowerCase())).filter($=>!m||$.name.includes("/")?!0:$.name.toLowerCase().includes(m)).map($=>({text:$.name,display:$.name,description:$.description,type:"argument"})).sort(($,g)=>{if(!m)return 0;let b=$.display.toLowerCase().startsWith(m),I=g.display.toLowerCase().startsWith(m);return b&&!I?-1:!b&&I?1:$.display.length-g.display.length})}};function ey(){return new fr}a(ey,"createArgumentCompleter");export{ct as a,G as b,Cm as c,Ys as d,Im as e,Go as f,$f as g,ba as h,Sf as i,lo as j,ps as k,gs as l,co as m,Zn as n,Ua as o,Qn as p,ot as q,nt as r,mo as s,Ga as t,tt as u,Ge as v,Os as w,Ns as x,nl as y,gm as z,it as A,wm as B,hm as C,Gs as D,Vs as E,se as F,Qs as G,ei as H,Om as I,yl as J,Pl as K,Nm as L,Qo as M,ut as N,Dm as O,ci as P,Um as Q,jm as R,Fm as S,fp as T,mp as U,pp as V,hi as W,wt as X,yi as Y,Ee as Z,vp as _,ko as $,St as aa,Ie as ba,Xc as ca,Vc as da,Ni as ea,Kp as fa,zp as ga,ld as ha,Bg as ia,Gg as ja,qg as ka,dw as la,uw as ma,fw as na,mw as oa,pw as pa,Yi as qa,vw as ra,$w as sa,Zi as ta,Sw as ua,Fw as va,Qi as wa,To as xa,Rh as ya,Eh as za,En as Aa,fr as Ba,ey as Ca,no as Da,ir as Ea,ar as Fa,Fh as Ga};
624
+ `)){if(!c.trim())continue;let d=Wu(c);if(!d)continue;let u=oo.resolve(r,d),f=oo.relative(e,u).split(oo.sep).join("/");if(!(!f||f.startsWith("..")||l.has(f))&&(l.add(f),i.push(f),i.length>=o))break}return i}catch{return[]}}a(fa,"getRecentWorkingSetFiles");function no(e){let o=e.lastIndexOf("/");if(o===-1)return-1;for(;o>0&&!/\s/.test(e[o-1]??"");)if(o=e.lastIndexOf("/",o-1),o===-1)return-1;return o}a(no,"findCommandSlashIndex");var ir=class{static{a(this,"FileCompleter")}cwdSource;cache=new Map;cacheTimeout=5e3;recentCache=new Map;recentFilesProvider;constructor(o,n=fa){this.cwdSource=o,this.recentFilesProvider=n}canComplete(o,n){let t=o.slice(0,n),r=t.lastIndexOf("@");return!(r===-1||r>0&&!/\s/.test(t[r-1]??"")||t.slice(r+1).includes(" "))}async getCompletions(o,n){let t=o.slice(0,n),r=t.lastIndexOf("@");if(r===-1)return[];let i=t.slice(r+1),l=[],c=this.resolveCwd(),d=i.lastIndexOf("/"),u=d===-1?c:Co.join(c,i.slice(0,d)),f=d===-1?i:i.slice(d+1);try{let y=(await this.readdir(u)).filter(v=>v.toLowerCase().startsWith(f.toLowerCase()));for(let v of y){let k=Co.join(u,v),$=await this.isDirectory(k),g=d===-1?v:i.slice(0,d+1)+v;l.push({text:"@"+g+($?"/":""),display:v+($?"/":""),description:$?"directory":"file",type:"file"})}}catch{}if(d===-1){let m=await this.getRecentFiles(c),y=new Set(l.map($=>$.text)),v=f.toLowerCase(),k=[];for(let $ of m){if(f&&!Co.basename($).toLowerCase().startsWith(v))continue;let g="@"+$;y.has(g)||(y.add(g),k.push({text:g,display:$,description:"recent",type:"file"}))}l.unshift(...k)}return l}async getRecentFiles(o){let n=Date.now(),t=this.recentCache.get(o);if(t&&t.expiresAt>n)return t.files;let r=await this.recentFilesProvider(o);return this.recentCache.set(o,{files:r,expiresAt:Date.now()+this.cacheTimeout}),r}resolveCwd(){return typeof this.cwdSource=="function"?this.cwdSource():this.cwdSource??process.cwd()}async readdir(o){let n=Date.now(),t=this.cache.get(o);return t&&t.expiresAt>n?t.entries:(t&&this.cache.delete(o),new Promise(r=>{Tn.readdir(o,(i,l)=>{i?r([]):(this.cache.set(o,{entries:l,expiresAt:Date.now()+this.cacheTimeout}),r(l))})}))}async isDirectory(o){return new Promise(n=>{Tn.stat(o,(t,r)=>{n(!t&&r.isDirectory())})})}},ar=class{static{a(this,"CommandCompleter")}commands;constructor(){this.commands=new Map,this.loadCommands()}loadCommands(){for(let n of To().getAll())n.userInvocable!==!1&&this.commands.set(n.name,{description:n.description,aliases:n.aliases??[]});let o=re();for(let n of o?.listCommands()??[])n.metadata?.userInvocable!==!1&&this.commands.set(n.name,{description:n.description,aliases:n.aliases??[]})}canComplete(o,n){let t=o.slice(0,n),r=no(t);return r===-1?!1:!t.slice(r).includes(" ")}async getCompletions(o,n){let t=o.slice(0,n),r=no(t);if(r===-1)return[];this.commands.clear(),this.loadCommands();let i=t.slice(r+1).toLowerCase(),l=[];for(let[c,d]of this.commands){this.fuzzyMatch(i,c)&&l.push({text:"/"+c,display:"/"+c,description:d.description,type:"command"});for(let u of d.aliases)u!==c&&this.fuzzyMatch(i,u)&&l.push({text:"/"+u,display:"/"+u,description:`Alias for /${c}: ${d.description}`,type:"command"})}return l}fuzzyMatch(o,n){if(!o)return!0;let t=o.toLowerCase(),r=n.toLowerCase(),i=0;for(let l=0;l<r.length&&i<t.length;l++)r[l]===t[i]&&i++;return i===t.length}};function Fh(e){let o=new ir(e),n=new En,t=new ar;return async r=>{let i=r.includes("@"),l=r.includes("/");if(!i&&!l)return[[],r];let c=[];if(l){let u=await Ou(r,r.length);c.push(...u)}if(l&&n.canComplete(r,r.length)){let u=await n.getCompletions(r,r.length);c.push(...u)}if(l&&t.canComplete(r,r.length)){let u=await t.getCompletions(r,r.length);c.push(...u)}if(i&&o.canComplete(r,r.length)){let u=await o.getCompletions(r,r.length);c.push(...u)}return[c.map(u=>Nu(r,u)),r]}}a(Fh,"createCompleter");async function Ou(e,o){let{ArgumentCompleter:n}=await import("./argument-completer-BLNXDO2F.js"),t=new n;return t.canComplete(e,o)?t.getCompletions(e,o):[]}a(Ou,"getArgumentCompletions");function Nu(e,o){if(o.type!=="argument")return o.text;let n=no(e);if(n!==-1&&!/\s/.test(e.slice(n)))return`${e} ${o.text}`;let r=e.match(/\S+$/)?.[0]??"";return`${r?e.slice(0,e.length-r.length):e}${o.text}`}a(Nu,"formatReadlineCompletion");import{existsSync as In,readdirSync as ha,readFileSync as ya}from"node:fs";import{join as Pn}from"node:path";var Du=[{name:"plan",description:"Read-only planning mode - blocks all modifications",type:"enum"},{name:"accept-edits",description:"File edits auto-approved, bash requires confirmation",type:"enum"},{name:"auto",description:"Use auto-mode classifier for tool permissions",type:"enum"}],Cn=[{name:"on",description:"Map to reasoning auto",type:"enum"},{name:"off",description:"Disable reasoning",type:"enum"},{name:"auto",description:"Use semantic routing with adaptive depth",type:"enum"},{name:"quick",description:"Low-depth reasoning mode",type:"enum"},{name:"balanced",description:"Medium-depth reasoning mode",type:"enum"},{name:"deep",description:"High-depth reasoning mode",type:"enum"}],ma=Cn.slice(2).concat([{name:"off",description:"Disable reasoning",type:"enum"}]);function Uu(e){if(e&&e.includes("/")){let o=e.indexOf("/"),n=e.slice(0,o),t=e.slice(o+1);if(We(n))try{return He(n).filter(i=>!t||i.toLowerCase().includes(t.toLowerCase())).map(i=>({name:`${n}/${i}`,description:i,type:"enum"}))}catch{}return[]}return Oe().map(o=>({name:o,description:`Switch to ${o} provider`,type:"enum"}))}a(Uu,"getModelArgs");var lr=[{name:"workspace",description:"Inspect current workspace/runtime truth in more detail",type:"enum"},{name:"runtime",description:"Alias for workspace runtime inspection",type:"enum"},{name:"worktree",description:"Alias for workspace runtime inspection",type:"enum"}],cr=[{name:"all",description:"Delete ALL sessions",type:"enum"}],ju=[{name:"status",description:"Show MCP server status",type:"enum"},{name:"refresh",description:"Refresh MCP server catalogs",type:"enum"}],Fu=[{name:"status",description:"Show child-task fallback order",type:"enum"},{name:"off",description:"Disable child-task fallback providers",type:"enum"}],Hu=[{name:"llm",description:"Use LLM classifier for auto mode",type:"enum"},{name:"rules",description:"Use rules-only auto mode",type:"enum"}],pa=[{name:"ama",description:"Use AMA agent mode",type:"enum"},{name:"amaw",description:"Use AMA workflow agent mode",type:"enum"},{name:"ama-workflow",description:"Alias for amaw",type:"enum"},{name:"sa",description:"Use single-agent mode",type:"enum"},{name:"toggle",description:"Cycle to the next agent mode",type:"enum"}],ga=[{name:"on",description:"Enable logging",type:"enum"},{name:"off",description:"Disable logging",type:"enum"}],Bu=[{name:"list",description:"List project memory files",type:"enum"},{name:"pending",description:"List pending memory proposals",type:"enum"},{name:"show",description:"Preview a memory proposal",type:"enum"},{name:"approve",description:"Approve a memory proposal",type:"enum"},{name:"reject",description:"Reject a memory proposal",type:"enum"},{name:"curate",description:"Report memory governance findings",type:"enum"},{name:"rebuild",description:"Rebuild MEMORY.md index",type:"enum"},{name:"open",description:"Print the memory entrypoint path",type:"enum"},{name:"help",description:"Show memory help",type:"enum"}],Gu=[{name:"status",description:"Show current persistent goal",type:"enum"},{name:"pause",description:"Pause the active goal",type:"enum"},{name:"resume",description:"Resume a paused goal",type:"enum"},{name:"clear",description:"Clear the current goal",type:"enum"},{name:"help",description:"Show goal help",type:"enum"},{name:"--tokens",description:"Set an optional goal token budget",type:"enum"}],qu=[{name:"show",description:"Show a captured paste by id",type:"enum"},{name:"list",description:"List captured pastes",type:"enum"}],Ku=[{name:"--lean",description:"Add a minimal-diff/YAGNI review pass",type:"enum"},{name:"--workflow",description:"Review through a dynamic workflow",type:"enum"},{name:"base",description:"Review changes against the detected base branch",type:"enum"},{name:"sha",description:"Review a specific commit",type:"enum"},{name:"help",description:"Show review help",type:"enum"}],zu=[{name:"init",description:"Create AGENTS.md in the target project if absent",type:"enum"},{name:"lean",description:"Initialize or LLM-review AGENTS.md for Lean Mode guidance",type:"enum"},{name:"help",description:"Show agents help",type:"enum"}],Xu=[{name:"status",description:"Inspect the current repo-intelligence runtime state",type:"enum"},{name:"mode",description:"Switch repo-intelligence runtime mode",type:"enum"},{name:"trace",description:"Toggle repo-intelligence trace output",type:"enum"}],Vu=[{name:"auto",description:"Let KodaX pick the best repo-intelligence engine",type:"enum"},{name:"full",description:"Prefer the full repo-intelligence engine",type:"enum"},{name:"light",description:"Use the light repo-intelligence engine",type:"enum"},{name:"off",description:"Disable repo-intelligence injection",type:"enum"}],Yu=[{name:"on",description:"Enable repo-intelligence trace output",type:"enum"},{name:"off",description:"Disable repo-intelligence trace output",type:"enum"},{name:"toggle",description:"Toggle repo-intelligence trace output",type:"enum"}],Ju=[{name:"status",description:"Deprecated alias for /repo-intel status",type:"enum"}],Zu=[{name:"list",description:"List built-in and saved workflows",type:"enum"},{name:"create",description:"Generate and run a workflow from a request",type:"enum"},{name:"runs",description:"List active and recent workflow runs",type:"enum"},{name:"show",description:"Show latest run or a specific workflow run",type:"enum"},{name:"pause",description:"Pause future child launches for a run",type:"enum"},{name:"resume",description:"Resume a paused run",type:"enum"},{name:"stop",description:"Stop an active workflow run",type:"enum"},{name:"delete",description:"Delete one persisted workflow run or generated saved capsule",type:"enum"},{name:"prune",description:"Preview or delete old terminal workflow runs",type:"enum"},{name:"rerun",description:"Rerun a run id or saved workflow name",type:"enum"},{name:"save",description:"Save a generated run as a workflow capsule",type:"enum"},{name:"rename",description:"Rename a run display name or saved workflow capsule",type:"enum"},{name:"revise",description:"Generate a revised workflow capsule",type:"enum"},{name:"help",description:"Show workflow help",type:"enum"}],Qu=new Set(["show","pause","resume","stop","delete","rerun","save","rename","revise"]),ef=new Set(["show","delete","rerun","save","rename","revise"]),of=[{name:"--all",description:"Show all persisted workflow runs",type:"enum"},{name:"--limit",description:"Show at most N persisted workflow runs",type:"enum"}],nf=[{name:"--dry-run",description:"Preview cleanup without deleting runs",type:"enum"},{name:"--keep",description:"Keep the newest N terminal runs",type:"enum"},{name:"--older-than",description:"Delete terminal runs older than Nd or Nh",type:"enum"}],tf=[{name:"--force",description:"Delete stale non-terminal run records",type:"enum"},{name:"--run",description:"Treat the target as a workflow run record",type:"enum"},{name:"--saved",description:"Treat the target as a generated saved workflow capsule",type:"enum"}],rf=[".workflow.json",".ts",".mjs",".js"];function sf(e,o){switch(e){case"pause":return o==="running";case"resume":return o==="paused";case"stop":return o==="running"||o==="paused";case"delete":return o!=="running"&&o!=="paused";default:return!0}}a(sf,"workflowRunMatchesSubcommand");function _n(e){return/^[a-zA-Z0-9._-]{1,120}$/.test(e)&&!e.startsWith(".")&&!e.includes("..")}a(_n,"isWorkflowRunEntryName");function af(e,o){let n=Pn(e,"workflow-metadata.json");if(In(n))try{let r=JSON.parse(ya(n,"utf8"));if(typeof r=="object"&&r!==null){let i=r.displayName;if(typeof i=="string"&&_n(i.trim()))return i.trim()}}catch{}let t=o.displayName;return typeof t=="string"&&_n(t.trim())?t.trim():void 0}a(af,"readWorkflowRunDisplayName");function lf(){let e=Ee(process.cwd()).key,o=H("workflow-runs",e);if(!In(o))return[];let n=[];for(let t of ha(o)){if(!_n(t))continue;let r=Pn(o,t,"run.json");if(In(r))try{let i=JSON.parse(ya(r,"utf8")),l=typeof i.workflow=="string"?i.workflow:"?",c=typeof i.status=="string"?i.status:"?",d=typeof i.endedAt=="number"?i.endedAt:0;n.push({arg:{name:t,description:`${l} - ${c}`,type:"string"},endedAt:d});let u=af(Pn(o,t),i);u&&u!==t&&n.push({arg:{name:u,description:`${l} alias for ${t} - ${c}`,type:"string"},endedAt:d})}catch{}}return n.sort((t,r)=>r.endedAt-t.endedAt).map(t=>t.arg)}a(lf,"getPersistedWorkflowRunIdArgs");function Mn(e){let o=Fe().list().filter(r=>sf(e,r.status)).map(r=>({name:r.runId,description:`${r.workflow} - ${r.status}`,type:"string"})),n=ef.has(e)?lf():[],t=new Set;return[...o,...n].filter(r=>t.has(r.name)?!1:(t.add(r.name),!0))}a(Mn,"getWorkflowRunIdArgs");function cf(e){for(let o of rf)if(e.endsWith(o)){let n=e.slice(0,-o.length);return _n(n)?n:void 0}}a(cf,"savedWorkflowNameFromFile");function Io(e={}){let o=[{path:H("workflows"),source:"personal"},{path:Pn(process.cwd(),".kodax","workflows"),source:"project"}],n=new Map;for(let t of o)if(In(t.path))try{for(let r of ha(t.path)){if(e.generatedOnly===!0&&!r.endsWith(".workflow.json"))continue;let i=cf(r);i&&n.set(i,{name:i,description:`${t.source} saved workflow`,type:"enum"})}}catch{}return[...n.values()].sort((t,r)=>t.name.localeCompare(r.name))}a(Io,"getSavedWorkflowNameArgs");function df(){let e=new Map;for(let o of Mn("rerun"))e.set(o.name,{...o,description:`recent run: ${o.description}`,type:"string"});for(let o of Io()){let n=e.get(o.name);if(n){e.set(o.name,{...n,description:`${n.description}; also ${o.description}`});continue}e.set(o.name,{...o,description:o.description,type:"string"})}return[...e.values()]}a(df,"getWorkflowRerunArgs");function dr(e){let o=new Map;for(let n of Mn(e))o.set(n.name,{...n,description:`workflow run: ${n.description}`,type:"string"});for(let n of Io({generatedOnly:e==="delete"})){let t=o.get(n.name);if(t){o.set(n.name,{...t,description:`${t.description}; also ${n.description}`});continue}o.set(n.name,{...n,description:n.description,type:"string"})}return[...o.values()]}a(dr,"getWorkflowRunOrSavedNameArgs");function wa(e){let o=new Set(e.slice(1).filter(n=>n.startsWith("--")));return o.has("--saved")?Io({generatedOnly:!0}):o.has("--run")?Mn("delete"):dr("delete")}a(wa,"getWorkflowDeleteTargetArgs");function uf(e){let[o=""]=e,n=o.toLowerCase(),t=e.length===1&&e[0]===""?0:e.length;if(t<=1)return[...Zu,...Uo().map(r=>({name:r.name,description:r.description,type:"enum"})),...Io()];if(n==="rerun"&&t<=2)return df();if(n==="rename"&&t<=2)return dr("rename");if(n==="delete"&&t<=2)return[...tf,...wa(e)];if(n==="delete"&&t<=3&&e.slice(1).some(r=>r.startsWith("--")))return wa(e);if(n==="revise"){if(t<=2)return[{name:"--replace",description:"Replace a saved workflow after confirmation",type:"enum"},...dr("revise")];if(e[1]==="--replace"&&t<=3)return Io()}return Qu.has(n)&&t<=2?Mn(n):n==="runs"&&t<=2?of:n==="prune"&&t<=2?nf:[]}a(uf,"getWorkflowArgs");function ff(e){let[o=""]=e,n=o.toLowerCase(),t=e.length===1&&e[0]===""?0:e.length;return t<=1?Xu:t>2?[]:n==="mode"?Vu:n==="trace"?Yu:[]}a(ff,"getRepoIntelArgs");var mf=new Map([["mode",Du],["thinking",Cn],["think",Cn],["t",Cn],["reasoning",ma],["reason",ma],["status",lr],["info",lr],["ctx",lr],["mcp",ju],["fallback",Fu],["auto-engine",Hu],["agent-mode",pa],["am",pa],["verifier-log",ga],["stall-log",ga],["memory",Bu],["goal",Gu],["paste",qu],["review",Ku],["agents",zu],["delete",cr],["rm",cr],["del",cr]]),pf=new Set(["model","m","provider"]),gf=new Set(["repo-intel"]),wf=new Set(["repointel","ri"]),hf=new Set(["workflow"]);function ur(e,o,n=[]){let t=e.toLowerCase();return pf.has(t)?Uu(o):gf.has(t)?ff(n):wf.has(t)?n.length<=1?Ju:[]:hf.has(t)?uf(n):mf.get(t)??[]}a(ur,"getCommandArguments");var fr=class{static{a(this,"ArgumentCompleter")}canComplete(o,n){let t=o.slice(0,n),r=no(t);if(r===-1)return!1;let i=t.slice(r),l=i.split(/\s+/);if(l.length>=2&&l[0]!=="")return!0;let c=i.slice(1).toLowerCase();return ur(c).length>0}async getCompletions(o,n){let t=o.slice(0,n),r=no(t);if(r===-1)return[];let i=t.slice(r),l=i.indexOf(" "),c=(l===-1?i.slice(1):i.slice(1,l)).toLowerCase(),d=l===-1?"":i.slice(l+1),u=d?d.split(/\s+/):[""],f=u.length-1,m=(u[f]??"").toLowerCase(),y=ur(c,m,u);if(!y||y.length===0)return[];let v=new Set(u.slice(0,-1).map($=>$.toLowerCase()));return y.filter($=>!v.has($.name.toLowerCase())).filter($=>!m||$.name.includes("/")?!0:$.name.toLowerCase().includes(m)).map($=>({text:$.name,display:$.name,description:$.description,type:"argument"})).sort(($,g)=>{if(!m)return 0;let b=$.display.toLowerCase().startsWith(m),I=g.display.toLowerCase().startsWith(m);return b&&!I?-1:!b&&I?1:$.display.length-g.display.length})}};function ey(){return new fr}a(ey,"createArgumentCompleter");export{ct as a,G as b,Cm as c,Ys as d,Im as e,Go as f,$f as g,ba as h,Sf as i,lo as j,ps as k,gs as l,co as m,Zn as n,Ua as o,Qn as p,ot as q,nt as r,mo as s,Ga as t,tt as u,Ge as v,Os as w,Ns as x,nl as y,gm as z,it as A,wm as B,hm as C,Gs as D,Vs as E,se as F,Qs as G,ei as H,Om as I,yl as J,Pl as K,Nm as L,Qo as M,ut as N,Dm as O,ci as P,Um as Q,jm as R,Fm as S,fp as T,mp as U,pp as V,hi as W,wt as X,yi as Y,Ee as Z,vp as _,ko as $,St as aa,Ie as ba,Xc as ca,Vc as da,Ni as ea,Kp as fa,zp as ga,ld as ha,Bg as ia,Gg as ja,qg as ka,dw as la,uw as ma,fw as na,mw as oa,pw as pa,Yi as qa,vw as ra,$w as sa,Zi as ta,Sw as ua,Fw as va,Qi as wa,To as xa,Rh as ya,Eh as za,En as Aa,fr as Ba,ey as Ca,no as Da,ir as Ea,ar as Fa,Fh as Ga};