@kodax-ai/kodax 0.7.76 → 0.7.77

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 (115) hide show
  1. package/CHANGELOG.md +595 -380
  2. package/LICENSE +158 -158
  3. package/README.md +1608 -1550
  4. package/README_CN.md +942 -896
  5. package/config-templates/config.example.jsonc +33 -33
  6. package/config-templates/integrations/a2a.example.jsonc +98 -98
  7. package/config-templates/integrations/extensions.example.jsonc +7 -7
  8. package/config-templates/integrations/mcp.example.jsonc +16 -16
  9. package/dist/builtin/code-review/SKILL.md +22 -22
  10. package/dist/builtin/skill-creator/scripts/aggregate-benchmark.d.ts +46 -46
  11. package/dist/builtin/skill-creator/scripts/analyze-benchmark.d.ts +46 -46
  12. package/dist/builtin/skill-creator/scripts/compare-runs.d.ts +62 -62
  13. package/dist/builtin/skill-creator/scripts/generate-review.d.ts +33 -33
  14. package/dist/builtin/skill-creator/scripts/grade-evals.d.ts +73 -73
  15. package/dist/builtin/skill-creator/scripts/improve-description.d.ts +23 -23
  16. package/dist/builtin/skill-creator/scripts/init-skill.d.ts +14 -14
  17. package/dist/builtin/skill-creator/scripts/install-skill.d.ts +29 -29
  18. package/dist/builtin/skill-creator/scripts/package-skill.d.ts +38 -38
  19. package/dist/builtin/skill-creator/scripts/quick-validate.d.ts +8 -8
  20. package/dist/builtin/skill-creator/scripts/run-eval.d.ts +66 -66
  21. package/dist/builtin/skill-creator/scripts/run-loop.d.ts +49 -49
  22. package/dist/builtin/skill-creator/scripts/run-trigger-eval.d.ts +58 -58
  23. package/dist/chunks/agent-NGSWFE73.js +2 -0
  24. package/dist/chunks/argument-completer-WGGZPEEO.js +2 -0
  25. package/dist/chunks/chunk-27QLRH3D.js +5 -0
  26. package/dist/chunks/chunk-2MQPVY6P.js +770 -0
  27. package/dist/chunks/chunk-3DD4QEBH.js +22 -0
  28. package/dist/chunks/chunk-6WAPVAGQ.js +74 -0
  29. package/dist/chunks/chunk-AOENDSVN.js +448 -0
  30. package/dist/chunks/{chunk-PXKSE54E.js → chunk-EH7AOMJ7.js} +1 -1
  31. package/dist/chunks/{chunk-SMT2JSM3.js → chunk-FNW2XUL5.js} +9 -9
  32. package/dist/chunks/chunk-FSXI4MAV.js +78 -0
  33. package/dist/chunks/{chunk-RDXRM3UI.js → chunk-HORNWBYR.js} +1 -1
  34. package/dist/chunks/chunk-HV2GMZUZ.js +343 -0
  35. package/dist/chunks/chunk-IQT4RPCE.js +46 -0
  36. package/dist/chunks/{chunk-4PWPNCNK.js → chunk-JS2BHGJP.js} +2 -2
  37. package/dist/chunks/chunk-OAMKECRG.js +381 -0
  38. package/dist/chunks/{chunk-HS3XHF3R.js → chunk-ON2WG2LG.js} +2 -2
  39. package/dist/chunks/{chunk-HGT6WQ24.js → chunk-RUGAAHTF.js} +17 -17
  40. package/dist/chunks/chunk-TGCG7U2W.js +37 -0
  41. package/dist/chunks/chunk-XSA37BVM.js +5 -0
  42. package/dist/chunks/compaction-config-BE7VYWH6.js +2 -0
  43. package/dist/chunks/{construction-bootstrap-5F5KF2BZ.js → construction-bootstrap-RPRL3L7R.js} +1 -1
  44. package/dist/chunks/dist-FDSOIR35.js +2 -0
  45. package/dist/chunks/dist-ZZBNVTKU.js +2 -0
  46. package/dist/chunks/host-QAKQVC4A.js +2 -0
  47. package/dist/chunks/run-manager-N4UFWA2D.js +2 -0
  48. package/dist/chunks/{utils-X3TEH6IO.js → utils-AUHCI4D5.js} +1 -1
  49. package/dist/index.d.ts +17 -16
  50. package/dist/index.js +2 -2
  51. package/dist/kodax_bootstrap.js +25 -25
  52. package/dist/kodax_cli.js +1276 -1229
  53. package/dist/provider-capabilities.json +392 -362
  54. package/dist/runtime-worker.js +1162 -1115
  55. package/dist/sdk-a2a.d.ts +12 -11
  56. package/dist/sdk-a2a.js +1 -1
  57. package/dist/sdk-agent.d.ts +56 -21
  58. package/dist/sdk-agent.js +1 -1
  59. package/dist/sdk-coding.d.ts +120 -21
  60. package/dist/sdk-coding.js +1 -1
  61. package/dist/sdk-experimental-memory.d.ts +14 -597
  62. package/dist/sdk-experimental-memory.js +1 -1
  63. package/dist/sdk-llm.d.ts +218 -6
  64. package/dist/sdk-llm.js +1 -1
  65. package/dist/sdk-mcp.js +1 -1
  66. package/dist/sdk-media.d.ts +1 -1
  67. package/dist/sdk-media.js +1 -1
  68. package/dist/sdk-repl.d.ts +15 -14
  69. package/dist/sdk-repl.js +1 -1
  70. package/dist/sdk-runtime.d.ts +34 -18
  71. package/dist/sdk-runtime.js +1 -1
  72. package/dist/sdk-session.d.ts +7 -6
  73. package/dist/sdk-session.js +1 -1
  74. package/dist/sdk-skills.js +1 -1
  75. package/dist/semantic-worker.js +14 -14
  76. package/dist/types-chunks/{base.d-ChvpaKjZ.d.ts → base.d-4e74xDdy.d.ts} +13 -1
  77. package/dist/types-chunks/{bash-prefix-extractor.d-r1beOESM.d.ts → bash-prefix-extractor.d-pZdu6qt7.d.ts} +197 -5
  78. package/dist/types-chunks/{capability-learning.d-DPrYxRjF.d.ts → capability-learning.d-CVsdHw4j.d.ts} +1 -1
  79. package/dist/types-chunks/{capsule.d-zeqV4IQX.d.ts → capsule.d-CxCm1KZz.d.ts} +2 -2
  80. package/dist/types-chunks/{commands.d-DUxnK2TU.d.ts → commands.d-BccESAMV.d.ts} +5 -5
  81. package/dist/types-chunks/{guardrail.d-qjuKJZ31.d.ts → guardrail.d-B0PwAZVR.d.ts} +3 -3
  82. package/dist/types-chunks/{guardrail.d-CWYD1bdL.d.ts → guardrail.d-CJx9RRd3.d.ts} +1 -1
  83. package/dist/types-chunks/{history-retrieval.d-BKTJIrVd.d.ts → history-retrieval.d-B__aEN62.d.ts} +2 -2
  84. package/dist/types-chunks/{public-api.d-CX4B11qY.d.ts → public-api.d--fF88JrC.d.ts} +3 -3
  85. package/dist/types-chunks/{run-manager.d-B9fEIjZk.d.ts → run-manager.d-B47hIqnI.d.ts} +1 -1
  86. package/dist/types-chunks/{sdk-session-B0fhAOPa.d.ts → sdk-session-CLWf8Adb.d.ts} +3 -3
  87. package/dist/types-chunks/{side-query.d-DWTMsndP.d.ts → side-query.d-5JvXhuOZ.d.ts} +22 -10
  88. package/dist/types-chunks/types-LanCEDj8.d.ts +623 -0
  89. package/dist/types-chunks/{types.d-DEctY20M.d.ts → types.d-CODuyyqy.d.ts} +2 -2
  90. package/dist/types-chunks/{types.d-Bm_y6YuM.d.ts → types.d-DCsKM8aT.d.ts} +4 -4
  91. package/dist/types-chunks/{types.d-CSmF0t0n.d.ts → types.d-DIpZJKUl.d.ts} +15 -0
  92. package/dist/types-chunks/{types.d-sRLugmjy.d.ts → types.d-RdWRfUEs.d.ts} +47 -4
  93. package/dist/types-chunks/{utils.d-D0wPxz8y.d.ts → utils.d-CDduqbFw.d.ts} +5 -5
  94. package/docs/SDK_EMBEDDER_GUIDE.md +197 -68
  95. package/package.json +2 -1
  96. package/scripts/kodax-bin.cjs +28 -28
  97. package/scripts/production-env.cjs +25 -25
  98. package/dist/chunks/agent-7X5CFET2.js +0 -2
  99. package/dist/chunks/argument-completer-3NHIKB4N.js +0 -2
  100. package/dist/chunks/chunk-7FJNLJLF.js +0 -369
  101. package/dist/chunks/chunk-COQYLD4U.js +0 -5
  102. package/dist/chunks/chunk-D3T24FJW.js +0 -78
  103. package/dist/chunks/chunk-EI4JBQKL.js +0 -46
  104. package/dist/chunks/chunk-IDCGNQ4H.js +0 -5
  105. package/dist/chunks/chunk-KAY2XLCP.js +0 -74
  106. package/dist/chunks/chunk-OD6LVXU6.js +0 -329
  107. package/dist/chunks/chunk-OSF3H4RR.js +0 -22
  108. package/dist/chunks/chunk-TGMBHGZO.js +0 -427
  109. package/dist/chunks/chunk-VWSLC2WO.js +0 -770
  110. package/dist/chunks/chunk-Y3AMP22L.js +0 -37
  111. package/dist/chunks/compaction-config-7J2XE35D.js +0 -2
  112. package/dist/chunks/dist-2RA7LSH3.js +0 -2
  113. package/dist/chunks/dist-URKXBOC6.js +0 -2
  114. package/dist/chunks/host-RKZ2OGFT.js +0 -2
  115. package/dist/chunks/run-manager-7RM4HEH6.js +0 -2
@@ -0,0 +1,37 @@
1
+ // @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
2
+ import{a as Me}from"./chunk-IQT4RPCE.js";import{a as o}from"./chunk-ONUPGMER.js";import{getEncoding as Tn}from"js-tiktoken";var je=null;function Cn(){return je||(je=Tn("cl100k_base")),je}o(Cn,"getEncoder");function M(t){return t?Cn().encode(t).length:0}o(M,"countTextTokens");function Ln(t){let e=4;if(typeof t.content=="string")e+=M(t.content);else for(let n of t.content)n.type==="text"?e+=M(n.text):n.type==="tool_use"?(e+=M(n.name),e+=M(JSON.stringify(n.input))):n.type==="tool_result"?(e+=4,e+=typeof n.content=="string"?M(n.content):n.content.reduce((r,i)=>r+(i.type==="text"?M(i.text):1500),0)):n.type==="thinking"?e+=M(n.thinking):n.type==="image"&&(e+=1500);return e}o(Ln,"countMessageTokens");var ft=new WeakMap;function es(t){let e=0;for(let n of t){let r=ft.get(n);if(r!==void 0){e+=r;continue}let i=Ln(n);ft.set(n,i),e+=i}return e}o(es,"estimateTokens");function ts(t){return M(t)}o(ts,"countTokens");var ie=[];function os(t){let e={id:Symbol("kodax-diagnostic-sink"),sink:t};ie.push(e);let n=!1;return()=>{if(n)return;n=!0;let r=ie.findIndex(i=>i.id===e.id);r>=0&&ie.splice(r,1)}}o(os,"setKodaXDiagnosticSink");function N(t){let e=Me(t),n=ie.at(-1)?.sink;if(n){try{n(e)}catch{}return}if(process.env.KODAX_DIAGNOSTICS_STDERR==="1")try{process.stderr.write(`${Nn(e)}
3
+ `)}catch{}}o(N,"emitKodaXDiagnostic");function Nn(t){let e=Me(t),n=On(e.detail);return`[${e.source}] ${e.level}: ${e.message}${n?` ${n}`:""}`}o(Nn,"formatKodaXDiagnostic");function On(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(On,"formatDiagnosticDetail");import{mkdirSync as Dn}from"node:fs";import{homedir as Fe}from"node:os";import{isAbsolute as Kn,normalize as Un,resolve as Te,sep as mt}from"node:path";import{join as oe}from"node:path";var Bn=".kodax",zn="KODAX_HOME",Ce;function us(t){Ce=t}o(us,"setAgentConfigHome");function gt(){if(Ce)return Ce;let t=process.env[zn];return t&&t.length>0?t:oe(Fe(),Bn)}o(gt,"getAgentConfigHome");function b(...t){return oe(gt(),...t)}o(b,"getAgentConfigPath");function fs(t,e){let n=o(a=>{let c=Un(Te(a));return process.platform==="win32"?c.toLowerCase():c},"comparable"),r=n(t),i=n(e),s=i.endsWith(mt)?i:`${i}${mt}`;return r===i||r.startsWith(s)}o(fs,"isPathInsideDirectory");function ms(t,e){let n=t==="~"?Fe():t.startsWith("~/")||t.startsWith("~\\")?oe(Fe(),t.slice(2)):t;return Kn(n)?Te(n):Te(e,n)}o(ms,"resolveExecutionPath");function gs(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=oe(gt(),"apps",t);return Dn(e,{recursive:!0}),e}o(gs,"getAppDataDir");import{createHash as yt}from"node:crypto";var ht=["tenantId","workspaceId","userId","agentId","projectId","sessionId"];function se(t,e){return ht.every(n=>e[n]===void 0||e[n]===t[n])}o(se,"matchesMemoryApplicability");function R(t,e){if(e.length===0)throw new Error(`${t} identity must not be empty`);return yt("sha256").update(`${t}\0${e}`).digest("hex")}o(R,"hashMemoryIdentityComponent");function Le(t){let e=ht.filter(n=>t[n]!==void 0).map(n=>`${n}=${t[n]}`).join("\0");return yt("sha256").update(e).digest("hex")}o(Le,"memoryApplicabilityFingerprint");var Ne="f275-v0.7.77.1";import{createHash as Wn}from"node:crypto";import{execSync as Yn}from"node:child_process";import*as k from"node:path";function ae(t){return qn(t).trim().replace(/^ssh:\/\//,"").replace(/^https?:\/\//,"").replace(/^git@/,"").replace(/\.git$/,"").replace(/[:@/\\]+/g,"-").replace(/^-+|-+$/g,"").toLowerCase()}o(ae,"sanitizeProjectKey");function qn(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(qn,"remoteWithoutCredentials");function ce(t){let e=k.resolve(t).toLowerCase();return Wn("sha256").update(e).digest("hex").slice(0,16)}o(ce,"hashCwd");function de(t){try{let n=Yn("git config --get remote.origin.url",{cwd:t,encoding:"utf-8",stdio:["ignore","pipe","ignore"],timeout:1e3,windowsHide:!0}).trim();return n.length>0?n:void 0}catch{return}}o(de,"tryGitRemote");function pe(t){let e=de(t),n=e?ae(e):`local-${ce(t)}`;return b("projects",n,"memory")}o(pe,"resolveMemoryRoot");function Hn(t){return k.join(pe(t),"MEMORY.md")}o(Hn,"resolveMemoryEntrypoint");function O(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 b("memory-scopes",R("tenant",t.tenantId),e,R(e,r))}o(O,"resolveScopedMemoryRoot");function Xn(t){let e=Oe(t),n=Oe(b("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=Oe(b("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(Xn,"isAutoManagedMemoryFile");function Oe(t){let e=k.resolve(t);return process.platform==="win32"?e.toLowerCase():e}o(Oe,"comparablePath");function Jn(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(Jn,"parseMemoryTypeFromFilename");var Gn=/^---\r?\n([\s\S]*?)\r?\n---\r?\n?/;function wt(t){if(t==="user"||t==="feedback"||t==="project"||t==="reference")return t}o(wt,"parseMemoryType");function j(t){let e=Gn.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=Rt(n);return{frontmatter:{name:typeof i.name=="string"?i.name:void 0,description:typeof i.description=="string"?i.description:void 0,type:wt(i.type)},body:r}}o(j,"parseMemoryFile");function Rt(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=Vn(a);c!==void 0&&(e[s]=c)}return e}o(Rt,"parseScalarFields");function Vn(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(Vn,"unquote");var Zn=200,Qn=25e3;function er(t){let e=t.trim(),n=e.length===0?[]:e.split(`
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
+ `):e;return Buffer.byteLength(c,"utf-8")>25e3&&(c=nr(c,25e3)),{content:c+`
6
+
7
+ `+tr({lineCount:r,byteCount:i,wasLineTruncated:s,wasByteTruncated:a}),lineCount:r,byteCount:i,wasLineTruncated:s,wasByteTruncated:a}}o(er,"truncateEntrypointContent");function tr(t){let{lineCount:e,byteCount:n,wasLineTruncated:r,wasByteTruncated:i}=t;return`> WARNING: MEMORY.md is ${i&&!r?`${De(n)} (limit: ${De(25e3)}) \u2014 index entries are too long`:r&&!i?`${e} lines (limit: 200)`:`${e} lines and ${De(n)}`}. Only part of it was loaded. Keep index entries to one line under ~200 chars; move detail into topic files.`}o(tr,"formatTruncationWarning");function nr(t,e){let n=Buffer.from(t,"utf-8");if(n.length<=e)return t;let r=10,i=-1;for(let s=e-1;s>=0;s--)if(n[s]===r){i=s;break}return i>0?n.subarray(0,i).toString("utf-8"):n.subarray(0,e).toString("utf-8")}o(nr,"sliceToByteCap");function De(t){return t<1e3?`${t} B`:`${(t/1e3).toFixed(1)} KB`}o(De,"formatFileSize");import rr from"path";var X=new Set;function kt(t){let e=t.trim();if(!e)throw new Error("Plugin skill path cannot be empty.");return rr.resolve(e)}o(kt,"normalizePluginSkillPath");function ir(t){let e=kt(t);return X.add(e),()=>{X.delete(e)}}o(ir,"registerPluginSkillPath");function or(t){return X.delete(kt(t))}o(or,"unregisterPluginSkillPath");function Ke(){return Array.from(X.values())}o(Ke,"listPluginSkillPaths");function sr(){X.clear()}o(sr,"clearPluginSkillPaths");import{homedir as ar}from"os";import z from"path";import{fileURLToPath as cr}from"url";import{dirname as dr}from"path";var pr=cr(import.meta.url),lr=dr(pr);function ur(){return process.env.KODAX_BUNDLED==="true"?z.join(z.dirname(process.execPath),"builtin"):z.join(lr,"builtin")}o(ur,"resolveBuiltinPath");function Ue(t){let e=ar();return{projectPaths:t?[z.join(t,".kodax","skills")]:[],userPaths:[z.join(e,".kodax","skills"),z.join(e,".agents","skills")],pluginPaths:Ke(),builtinPath:ur(),learnedPath:b("learned","skills")}}o(Ue,"getDefaultSkillPaths");function Be(t){let e=[];for(let n of t.projectPaths)e.push({path:n,source:"project"});for(let n of t.userPaths)e.push({path:n,source:"user"});for(let n of t.pluginPaths)e.push({path:n,source:"plugin"});return e.push({path:t.builtinPath,source:"builtin"}),t.learnedPath!==void 0&&e.push({path:t.learnedPath,source:"learned"}),e}o(Be,"getSkillPathsFlat");import{readFile as ze,readdir as hr}from"fs/promises";import{join as F,relative as wr}from"path";import St from"yaml";var fr=["SessionStart","UserPromptSubmit","PreToolUse","PostToolUse","Stop","SubagentStop","Notification"];function mr(t){let e=t.split(`
8
+ `),n=[];for(let r of e){let i=r.indexOf(":");if(i>0){let s=r.slice(0,i).trim(),a=r.slice(i+1).trim();if(a.includes(":")&&!a.startsWith('"')&&!a.startsWith("'")&&!a.startsWith("[")&&!a.startsWith("|")&&!a.startsWith(">")){n.push(`${s}: |-`),n.push(` ${a}`);continue}}n.push(r)}return n.join(`
9
+ `)}o(mr,"sanitizeYaml");function bt(t,e={}){let n=t.replace(/^/,"").replace(/\r\n/g,`
10
+ `).replace(/\r/g,`
11
+ `).trimStart();if(!n.startsWith(`---
12
+ `)){if(e.throwOnMissing)throw new Error("Invalid markdown: missing YAML frontmatter");return[null,t]}let r=n.indexOf(`
13
+ ---
14
+ `,4);if(r===-1){let c=n.indexOf(`
15
+ ---`,4);c!==-1&&c===n.length-4&&(r=c)}if(r===-1){if(e.throwOnMissing)throw new Error("Invalid markdown: unclosed YAML frontmatter");return[null,t]}let i=n.slice(4,r),s=n.slice(r+5).trim(),a;try{a=St.parse(i)??{}}catch{a=St.parse(mr(i))??{}}if(a==null||typeof a!="object"||Array.isArray(a)){if(e.throwOnMissing)throw new Error("Invalid markdown: YAML frontmatter must be an object");return[null,s]}return[a,s]}o(bt,"parseYamlFrontmatter");function vt(t){if(typeof t=="string"){let e=t.trim();return e.length>0?e:void 0}if(Array.isArray(t)){let e=t.map(n=>String(n).trim()).filter(n=>n.length>0);return e.length>0?e.join(", "):void 0}}o(vt,"normalizeAllowedToolsString");function gr(t){if(typeof t=="string"){let e=t.trim();return e?{command:e}:void 0}if(t&&typeof t=="object"&&!Array.isArray(t)){let e=t,n=typeof e.command=="string"?e.command.trim():"";if(!n)return;let r=typeof e.matcher=="string"&&e.matcher.trim()?e.matcher.trim():void 0;return{command:n,matcher:r}}}o(gr,"normalizeYamlHookEntry");function yr(t){if(t==null)return;let n=(Array.isArray(t)?t:[t]).map(r=>gr(r)).filter(r=>r!==void 0);return n.length>0?n:void 0}o(yr,"normalizeYamlHookEntryList");function It(t){if(!t||typeof t!="object"||Array.isArray(t))return;let e=t,n={};for(let r of fr){let i=yr(e[r]);i&&(n[r]=i)}return Object.keys(n).length>0?n:void 0}o(It,"normalizeYamlHookMap");function We(t){let[e,n]=bt(t,{throwOnMissing:!0});if(!e)throw new Error("Invalid SKILL.md: YAML frontmatter must be an object");if(!e.name||typeof e.name!="string")throw new Error('Invalid SKILL.md: missing required "name" field');if(!e.description||typeof e.description!="string")throw new Error('Invalid SKILL.md: missing required "description" field');return{frontmatter:{name:e.name,description:e.description,disableModelInvocation:e["disable-model-invocation"]===!0,userInvocable:e["user-invocable"]!==!1,allowedTools:vt(e["allowed-tools"]),context:e.context==="fork"?"fork":void 0,agent:typeof e.agent=="string"?e.agent:void 0,argumentHint:typeof e["argument-hint"]=="string"?e["argument-hint"]:void 0,model:typeof e.model=="string"?e.model:void 0,hooks:It(e.hooks),license:typeof e.license=="string"?e.license:void 0,compatibility:typeof e.compatibility=="string"?e.compatibility:void 0,metadata:e.metadata&&typeof e.metadata=="object"&&!Array.isArray(e.metadata)?e.metadata:void 0},body:n}}o(We,"parseSkillMarkdown");async function Ye(t,e){let n=F(t,"SKILL.md");try{let r=await ze(n,"utf-8"),{frontmatter:i}=We(r);return{name:i.name,description:i.description,userInvocable:i.userInvocable??!0,argumentHint:i.argumentHint,path:t,source:e,disableModelInvocation:i.disableModelInvocation??!1}}catch(r){return N({source:"agent:skills",level:"error",message:`Failed to load skill metadata from ${t}.`,detail:r}),null}}o(Ye,"loadSkillMetadata");async function qe(t,e){let n=F(t,"SKILL.md");try{let r=await ze(n,"utf-8"),{frontmatter:i,body:s}=We(r),[a,c,d,p,u]=await Promise.all([W(F(t,"scripts")),W(F(t,"references")),W(F(t,"assets")),W(F(t,"templates")),W(F(t,"resources"))]);return{...i,path:t,skillFilePath:n,content:s,rawContent:s,loaded:!0,source:e,...a.length>0&&{scripts:a},...c.length>0&&{references:c},...d.length>0&&{assets:d},...p.length>0&&{templates:p},...u.length>0&&{resources:u}}}catch(r){return N({source:"agent:skills",level:"error",message:`Failed to load skill from ${t}.`,detail:r}),null}}o(qe,"loadFullSkill");async function W(t,e=t){let n=[];try{let r=await hr(t,{withFileTypes:!0});r.sort((i,s)=>i.name.localeCompare(s.name));for(let i of r){let s=F(t,i.name);if(i.isDirectory()){n.push(...await W(s,e));continue}i.isFile()&&n.push({name:i.name,path:s,relativePath:wr(e,s).replace(/\\/g,"/")})}}catch{}return n}o(W,"loadSkillFiles");async function Rr(t){if(t.content)return t.content;let e=await ze(t.path,"utf-8");return t.content=e,e}o(Rr,"loadSkillFileContent");import{readdir as kr,stat as He}from"fs/promises";import{join as le,dirname as xt}from"path";async function ue(t,e){let n=new Map,r=[],s={...Ue(t),...e},a=Be(s);for(let{path:c,source:d}of a)try{let p=await Sr(c,d);for(let u of p)n.has(u.name)||n.set(u.name,u)}catch(p){r.push({path:c,error:p instanceof Error?p.message:String(p)})}return{skills:n,errors:r}}o(ue,"discoverSkills");async function Sr(t,e){let n=[];try{if(!(await He(t)).isDirectory())return n;let i=await kr(t);for(let s of i){let a=le(t,s);try{if((await He(a)).isDirectory()){let d=le(a,"SKILL.md");try{if((await He(d)).isFile()){let u=await Ye(a,e);u&&n.push(u)}}catch{}}}catch{}}}catch{}return n}o(Sr,"scanSkillDirectory");function _t(t,e){let n=[],r=[".kodax/skills"],i=t,s=xt(e);for(;i!==s&&i!=="/"&&i.length>3;){for(let c of r)n.push(le(i,c));let a=xt(i);if(a===i)break;i=a}return n}o(_t,"getNestedSkillPaths");async function br(t,e){let n=_t(t,e),r={projectPaths:[le(e,".kodax","skills"),...n]};return ue(e,r)}o(br,"discoverSkillsWithMonorepo");import{execSync as vr}from"child_process";import Ir from"path";var xr=new Set(["ls","cat","pwd","echo","whoami","date","which","whereis","tree","dir","type","get-childitem","get-content","select-string","get-location","grep","find","awk","sed","head","tail","less","more","wc","git status","git diff","git log","git show","git branch","git remote","git ls-files","git rev-parse","git grep","node","npm","yarn","pnpm","tsc","python","pip","go","cargo","rustc"]);function Et(t){if(!t||!t.trim())return!1;let e=t.trim().replace(/\s+/g," ").toLowerCase();for(let n of xr)if(e===n||e.startsWith(`${n} `)){if(n==="sed"&&e.split(/\s+/).some(s=>s.startsWith("-i")||s==="--in-place"))return!1;if(n==="awk"){let i=e.split(/\s+/);if(i.includes("-f")||i.includes("--file"))return!1}if(["node","npm","yarn","pnpm","tsc","python","pip","go","cargo","rustc"].includes(n)){let i=e.split(/\s+/).slice(1);if(i.length>0&&!i.every(s=>/^(-v|--version|-h|--help)$/.test(s)))return!1}return!0}return!1}o(Et,"isSingleSafeDynamicContextCommand");function _r(t){if(!t||!t.trim())return!1;let e=t.trim().replace(/\\\r?\n/g," ");if(/[<>|;`]|\$\(|(?<!&)&(?!&)/.test(e)||e.includes("\\")&&Ir.sep!=="\\"&&e.replace(/\\ /g,"").includes("\\"))return!1;let r=e.split(/\s*&&\s*/);if(r.length===1)return Et(r[0]);for(let i of r){let s=i?.trim();if(s&&!/^cd\s+/.test(s.toLowerCase())&&!Et(s))return!1}return!0}o(_r,"isSafeDynamicContextCommand");function At(t){let e=[],n="",r=!1,i="";for(let s=0;s<t.length;s++){let a=t[s];r?a===i?r=!1:n+=a:a==='"'||a==="'"?(r=!0,i=a):a===" "?n&&(e.push(n),n=""):n+=a}return n&&e.push(n),e}o(At,"parseArguments");var J=class{static{o(this,"VariableResolver")}context;constructor(e){this.context=e}async resolve(e,n){let r=e,i=At(n);return r=this.resolvePositionalArgs(r,i),r=this.resolveArguments(r,n),r=this.resolveEnvVars(r),r=await this.resolveDynamicContext(r),r}resolvePositionalArgs(e,n){return e.replace(/\$(\d+)(?![a-zA-Z0-9_])/g,(r,i)=>{let s=parseInt(i,10);return n[s]??""})}resolveArguments(e,n){return e.replace(/\$ARGUMENTS/g,n)}resolveEnvVars(e){let n={...this.context.environment,CLAUDE_SESSION_ID:this.context.sessionId??"",KODAX_SESSION_ID:this.context.sessionId??"",KODAX_WORKING_DIR:this.context.workingDirectory};return e.replace(/\$\{([A-Za-z_][A-Za-z0-9_]*)\}/g,(r,i)=>n[i]??r)}async resolveDynamicContext(e){let n=/!`([^`]+)`/g,r=[],i;for(;(i=n.exec(e))!==null;)r.push({match:i[0],command:i[1]});if(r.length===0)return e;let s=e;for(let{match:a,command:c}of r)try{let d=await this.executeDynamicCommand(c);s=s.replace(a,d)}catch(d){let p=d instanceof Error?d.message:String(d);s=s.replace(a,`[Error: ${p}]`)}return s}async executeDynamicCommand(e){if(this.context.disableDynamicContext)throw new Error("Dynamic context disabled by host. Skill `!`cmd`` blocks are not allowed in this environment.");if(this.context.executeDynamicContext){let n=await this.context.executeDynamicContext(e,this.context.workingDirectory);return typeof n=="string"?n.trim():""}if(!_r(e))throw new Error("Unsafe dynamic context command blocked. Only simple read-only commands are allowed in !`...` blocks.");try{return vr(e,{cwd:this.context.workingDirectory,encoding:"utf-8",timeout:5e3,maxBuffer:1048576,windowsHide:!0}).trim()}catch(n){throw n instanceof Error?new Error(`Command failed: ${n.message}`):n}}};function Er(t){return new J(t)}o(Er,"createResolver");async function D(t,e,n){return new J(n).resolve(t,e)}o(D,"resolveSkillContent");var fe=class{static{o(this,"SkillRegistry")}skillsByName=new Map;fullSkillsByName=new Map;projectRoot;customPaths;constructor(e,n){this.projectRoot=e,this.customPaths=n}async discover(){let e=await ue(this.projectRoot,this.customPaths);this.skillsByName.clear();for(let[n,r]of e.skills)this.skillsByName.set(n,r);if(e.errors.length>0)for(let{path:n,error:r}of e.errors)N({source:"agent:skills",level:"warn",message:`Error scanning ${n}.`,detail:r})}get skills(){return this.skillsByName}get(e){return this.skillsByName.get(e)}async loadFull(e){let n=this.fullSkillsByName.get(e);if(n)return n;let r=this.skillsByName.get(e);if(!r)throw new Error(`Skill not found: ${e}`);let i=await qe(r.path,r.source);if(!i)throw new Error(`Failed to load skill: ${e}`);return this.fullSkillsByName.set(e,i),i}async invoke(e,n,r){try{let i=await this.loadFull(e);return i.disableModelInvocation?{success:!1,content:"",error:`Skill "${e}" has model invocation disabled`}:{success:!0,content:await D(i.content,n,r)}}catch(i){return{success:!1,content:"",error:i instanceof Error?i.message:String(i)}}}async reload(){this.skillsByName.clear(),this.fullSkillsByName.clear(),await this.discover()}list(){return Array.from(this.skillsByName.values())}listUserInvocable(){return this.list().filter(e=>e.userInvocable)}getSystemPromptSnippet(){let e=this.list().filter(r=>!r.disableModelInvocation);if(e.length===0)return"";let n=["## Available Skills","","When users ask you to perform tasks, check if any of the available skills below match the request. Skills provide specialized capabilities and step-by-step instructions for specific workflows.","",'When users reference a "slash command" or "/<something>" (e.g. "/feature-list-tracker", "/skill:foo"), they are referring to a skill. Invoke it via the `skill` tool with the skill name.',"","**BLOCKING REQUIREMENT**: When a skill matches the user's request, you MUST invoke it via the `skill` tool BEFORE generating any other response about the task. Loading the skill is not optional and not something to defer \u2014 it is the FIRST action you take.","","NEVER mention a skill without actually calling the `skill` tool. Do not guess at skill names \u2014 only use skills listed below. Do NOT call `read` on a `SKILL.md` path to load a skill \u2014 that is the legacy path and bypasses the resolver.",""];for(let r of e){let i=r.argumentHint?` ${r.argumentHint}`:"";n.push(`- ${r.name}:${i} ${r.description}`)}return n.push(""),n.join(`
16
+ `)}has(e){return this.skillsByName.has(e)}get size(){return this.skillsByName.size}},Y=null,Pt;function me(t,e){return Y&&t!==void 0&&Pt!==t&&(Y=null),Y||(Y=new fe(t,e),Pt=t),Y}o(me,"getSkillRegistry");async function Xe(t,e){let n=me(t,e);return await n.discover(),n}o(Xe,"initializeSkillRegistry");function Ar(){Y=null}o(Ar,"resetSkillRegistry");var G=class{static{o(this,"SkillExecutor")}context;constructor(e){this.context=e}async execute(e,n,r){let i=me();if(!i.has(e))return{success:!1,content:"",error:`Skill not found: ${e}`};try{let s=await i.loadFull(e),a=r?.mode??(s.context==="fork"?"fork":"inline"),c=await D(s.content,n,this.context);return a==="fork"?this.executeFork(s,c,r):this.executeInline(s,c,r)}catch(s){return{success:!1,content:"",error:s instanceof Error?s.message:String(s)}}}async executeInline(e,n,r){let i=this.buildPrompt(e,n);if(r?.onExecute)try{return{success:!0,content:await r.onExecute(i,e)}}catch(s){return{success:!1,content:"",error:s instanceof Error?s.message:String(s)}}return{success:!0,content:i}}async executeFork(e,n,r){return{success:!0,content:this.buildPrompt(e,n),artifacts:[{type:"text",name:"fork-config",content:JSON.stringify({agent:r?.agent??e.agent??"general-purpose",model:r?.model??e.model??"haiku",allowedTools:r?.allowedTools??this.parseAllowedTools(e.allowedTools)})}]}}buildPrompt(e,n){let r=[];return r.push(`[Using Skill: ${e.name}]`),r.push(""),e.allowedTools&&(r.push(`**Allowed Tools**: ${e.allowedTools}`),r.push("")),r.push(n),r.join(`
17
+ `)}parseAllowedTools(e){return e?e.split(",").map(n=>n.trim()).filter(Boolean):[]}};function Pr(t){return new G(t)}o(Pr,"createExecutor");async function $r(t,e,n,r){return new G(n).execute(t,e,r)}o($r,"executeSkill");function $t(t){return t.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&apos;")}o($t,"escapeXml");var Je=120;function ge(t){return t.replace(/\\/g,"/")}o(ge,"formatDisplayPath");function Mr(t){return[...(t.references??[]).map(e=>({folder:"references",file:e})),...(t.scripts??[]).map(e=>({folder:"scripts",file:e})),...(t.assets??[]).map(e=>({folder:"assets",file:e})),...(t.templates??[]).map(e=>({folder:"templates",file:e})),...(t.resources??[]).map(e=>({folder:"resources",file:e}))]}o(Mr,"collectSupportFiles");function jr(t){let e=Mr(t);if(e.length===0)return[];let n=[["references",t.references],["scripts",t.scripts],["assets",t.assets],["templates",t.templates],["resources",t.resources]],r=["Skill support files are rooted at the skill root above. When the skill references `references/...`, `assets/...`, `scripts/...`, `templates/...`, or `resources/...`, read it from this skill root.","","Support roots:"];for(let[i,s]of n)s?.length&&r.push(`- ${i}/: ${ge(`${t.path}/${i}`)} (${s.length} files)`);r.push("","Support file inventory:");for(let{folder:i,file:s}of e.slice(0,Je))r.push(`- ${i}/${s.relativePath}: ${ge(s.path)}`);return e.length>Je&&r.push(`- ... ${e.length-Je} more files under ${ge(t.path)}`),r}o(jr,"buildSupportFileContext");function Fr(t,e,n){let r=[];r.push(`<skill name="${$t(t.name)}" location="${$t(t.path)}">`),r.push(""),r.push(`Skill root: ${ge(t.path)}`),t.source==="builtin"?r.push("This is a built-in KodaX skill."):t.source==="project"?r.push("This is a project-defined skill. Project work paths are relative to the project root; skill support files are relative to the skill root above."):t.source==="user"&&r.push("This is a user-defined skill."),r.push("");let i=jr(t);return i.length>0&&(r.push(...i),r.push("")),r.push(e),n.trim()&&(r.push(""),r.push(`User provided arguments: ${n}`)),r.push(""),r.push("</skill>"),r.join(`
18
+ `)}o(Fr,"buildSkillBlock");async function Tr(t,e,n){let r=await D(t.content,e,n);return{content:Fr(t,r,e),disableModelInvocation:t.disableModelInvocation??!1,skill:t}}o(Tr,"expandSkillForLLM");function Cr(t,e){let n=`Skill activated: ${t}`;return e.trim()&&(n+=` with arguments: ${e}`),n}o(Cr,"formatSkillActivationMessage");import{randomUUID as Lr}from"node:crypto";import{mkdir as Mt,open as Nr,readFile as Ge,rename as Or,rm as he,stat as Dr,writeFile as Kr}from"fs/promises";import{basename as Ur,dirname as jt,join as Br}from"path";var Ft=1;function v(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}o(v,"isRecord");function zr(t){return t==="pending"||t==="approved"||t==="rejected"}o(zr,"isReviewStatus");function Tt(t){return t==="foreground_user"||t==="assistant_tool"||t==="background_learning"}o(Tt,"isSkillWriteOrigin");function S(t){return Array.isArray(t)&&t.every(e=>typeof e=="string")}o(S,"isStringArray");function ye(t){return v(t)&&Object.values(t).every(e=>typeof e=="string")}o(ye,"isStringRecord");function Wr(t){return t==="record_usage"||t==="create"||t==="patch"||t==="archive"||t==="quarantine"||t==="delete"||t==="consolidate"||t==="direct_mutation"}o(Wr,"isSkillGovernanceAction");function Yr(t){return t==="save_from_run"||t==="revise_capsule"||t==="add_skill_reference"||t==="report_only"}o(Yr,"isWorkflowSuggestedAction");function qr(t){return t==="low"||t==="medium"||t==="high"}o(qr,"isLearningRisk");function Hr(t){return t==="user"||t==="feedback"||t==="project"||t==="reference"||t==="semantic_memory"}o(Hr,"isMemoryKind");function Xr(t){return t==="foreground_user"||t==="assistant_tool"||t==="background_learning"||t==="external_provider"}o(Xr,"isMemoryWriteOrigin");function Jr(t){return t==="primary"||t==="subagent"||t==="workflow_child"||t==="cron"||t==="flush"||t==="compression"}o(Jr,"isMemoryExecutionContext");function Gr(t){return v(t)&&S(t.workflowCapsules)&&S(t.savedWorkflows)&&S(t.constructedAgents)&&S(t.promptReferences)&&(t.action==="none"||t.action==="rewrite_proposal"||t.action==="block_until_manual_review")}o(Gr,"isConsumerImpact");function Vr(t){return v(t)&&Xr(t.writeOrigin)&&Jr(t.executionContext)&&typeof t.sessionId=="string"&&(t.parentSessionId===void 0||typeof t.parentSessionId=="string")&&(t.platform===void 0||typeof t.platform=="string")&&(t.sourceTool===void 0||typeof t.sourceTool=="string")&&S(t.sourceRefs)&&typeof t.completedTurn=="boolean"&&(t.claimKind===void 0||Zr(t.claimKind))&&(t.claimKey===void 0||typeof t.claimKey=="string")&&(t.actionSignature===void 0||typeof t.actionSignature=="string")&&(t.persistenceKind===void 0||t.persistenceKind==="create"||t.persistenceKind==="evidence_update"||t.persistenceKind==="condition_refinement")&&(t.targetRefId===void 0||typeof t.targetRefId=="string")&&(t.targetStorageUri===void 0||typeof t.targetStorageUri=="string")&&(t.preconditions===void 0||typeof t.preconditions=="string")&&(t.applicability===void 0||Qr(t.applicability))&&(t.requestedLifecycle===void 0||t.requestedLifecycle==="active"||t.requestedLifecycle==="provisional")&&(t.episodeOutcome===void 0||t.episodeOutcome==="succeeded"||t.episodeOutcome==="failed")&&(t.verifiedEvidence===void 0||typeof t.verifiedEvidence=="boolean")&&(t.evidenceProjectId===void 0||typeof t.evidenceProjectId=="string")}o(Vr,"isMemoryMetadata");function Zr(t){return t==="fact"||t==="policy"||t==="preference"||t==="procedure"||t==="episode"}o(Zr,"isMemoryClaimKind");function Qr(t){return!v(t)||typeof t.tenantId!="string"?!1:["workspaceId","userId","agentId","projectId","sessionId"].every(e=>t[e]===void 0||typeof t[e]=="string")}o(Qr,"isMemoryApplicability");function ei(t){if(!v(t))return!1;let e=t.destination;return typeof t.proposalId!="string"||!Tt(t.origin)?!1:e==="skill_patch"||e==="skill_create"?t.userLabel==="method_guide"&&typeof t.skillName=="string"&&typeof t.whyDurable=="string"&&typeof t.trigger=="string"&&typeof t.changeSummary=="string"&&S(t.sourceTraceIds)&&typeof t.confidence=="number":e==="workflow_handoff"?t.userLabel==="runnable_workflow"&&S(t.evidenceRunIds)&&S(t.sourceTraceIds)&&Yr(t.suggestedAction)&&typeof t.whyWorkflowNotSkill=="string"&&S(t.requiredWorkflowEvidence)&&qr(t.risk)&&Gr(t.consumerImpact)&&t.appliedByF224===!1:e==="memdir_handoff"?t.userLabel==="context_note"&&Hr(t.memoryKind)&&typeof t.body=="string"&&Vr(t.metadata):e==="reasoning_handoff"?t.userLabel==="reasoning_report"&&typeof t.title=="string"&&typeof t.body=="string"&&S(t.sourceTraceIds):!1}o(ei,"isReviewableProposal");function ti(t){return v(t)?t.kind==="write"?typeof t.relativePath=="string"&&typeof t.content=="string":t.kind==="delete"?typeof t.relativePath=="string":!1:!1}o(ti,"isSkillMutationChange");function ni(t){if(!v(t)||t.kind!=="skill"||typeof t.skillRoot!="string"||t.skillRoot.length===0||!Array.isArray(t.changes)||!t.changes.every(ti))return!1;let e=t.governance;return!(!v(e)||!Wr(e.action)||e.source!=="project"&&e.source!=="user"&&e.source!=="plugin"&&e.source!=="builtin"&&e.source!=="external"||e.ownership!=="system"&&e.ownership!=="human"&&e.ownership!=="background_created"||!Tt(e.origin)||e.pinned!==void 0&&typeof e.pinned!="boolean"||t.snapshotRoot!==void 0&&typeof t.snapshotRoot!="string")}o(ni,"isStoredLearningApplyPlan");function ri(t,e,n){if(!v(t)){n.push(`proposal entry ${e} is not an object`);return}let r=t.proposalId,i=t.status,s=t.proposal,a=t.applyPlan,c=t.createdAt,d=t.updatedAt,p=t.appliedAt,u=t.appliedChangedPaths,f=t.appliedSnapshotPath,l=t.approvedBy,y=t.approvedAt,g=t.approvalPolicyId,_=t.approvalPolicyReason,P=t.approvalExpectedFingerprints,$=t.approvalResultingFingerprints,B=t.rejectedReason;if(typeof r!="string"||r.length===0){n.push(`proposal entry ${e} has no proposalId`);return}if(!zr(i)){n.push(`proposal entry ${r} has invalid status`);return}if(!ei(s)){n.push(`proposal entry ${r} has invalid proposal payload`);return}if(s.proposalId!==r){n.push(`proposal entry ${r} has mismatched proposal payload id`);return}if(typeof c!="string"||typeof d!="string"){n.push(`proposal entry ${r} has invalid timestamps`);return}if(a!==void 0&&!ni(a)){n.push(`proposal entry ${r} has invalid apply plan`);return}if(p!==void 0&&typeof p!="string"){n.push(`proposal entry ${r} has invalid appliedAt`);return}if(u!==void 0&&!S(u)){n.push(`proposal entry ${r} has invalid applied changed paths`);return}if(l!==void 0&&l!=="user"&&l!=="host"){n.push(`proposal entry ${r} has invalid approvedBy`);return}if(y!==void 0&&typeof y!="string"){n.push(`proposal entry ${r} has invalid approvedAt`);return}if(g!==void 0&&typeof g!="string"){n.push(`proposal entry ${r} has invalid approvalPolicyId`);return}if(_!==void 0&&typeof _!="string"){n.push(`proposal entry ${r} has invalid approvalPolicyReason`);return}if(P!==void 0&&!ye(P)){n.push(`proposal entry ${r} has invalid approvalExpectedFingerprints`);return}if($!==void 0&&!ye($)){n.push(`proposal entry ${r} has invalid approvalResultingFingerprints`);return}if(f!==void 0&&typeof f!="string"){n.push(`proposal entry ${r} has invalid applied snapshot path`);return}return{proposalId:r,status:i,proposal:s,...a!==void 0?{applyPlan:a}:{},createdAt:c,updatedAt:d,...typeof p=="string"?{appliedAt:p}:{},...S(u)?{appliedChangedPaths:u}:{},...l==="user"||l==="host"?{approvedBy:l}:{},...typeof y=="string"?{approvedAt:y}:{},...typeof g=="string"?{approvalPolicyId:g}:{},...typeof _=="string"?{approvalPolicyReason:_}:{},...ye(P)?{approvalExpectedFingerprints:P}:{},...ye($)?{approvalResultingFingerprints:$}:{},...typeof f=="string"?{appliedSnapshotPath:f}:{},...typeof B=="string"?{rejectedReason:B}:{}}}o(ri,"parseStoredProposal");function ii(t){let e;try{e=JSON.parse(t)}catch(s){let a=s instanceof Error?s.message:String(s);return{proposals:[],warnings:[`learning proposal store is not valid JSON: ${a}`]}}if(!v(e))return{proposals:[],warnings:["learning proposal store root is not an object"]};if(e.version!==Ft)return{proposals:[],warnings:["learning proposal store version is unsupported"]};if(!Array.isArray(e.proposals))return{proposals:[],warnings:["learning proposal store has no proposals array"]};let n=[];return{proposals:e.proposals.map((s,a)=>ri(s,a,n)).filter(s=>s!==void 0),warnings:n}}o(ii,"parseStoreDocument");async function Ct(t,e){let n={version:Ft,proposals:e},r=jt(t);await Mt(r,{recursive:!0});let i=Br(r,`.${Ur(t)}.kodax-${process.pid}-${Date.now().toString(36)}.tmp`);try{await Kr(i,`${JSON.stringify(n,null,2)}
19
+ `,"utf8"),await Or(i,t)}catch(s){throw await he(i,{force:!0}),s}}o(Ct,"writeStoreDocument");async function E(t){let e;try{e=await Ge(t,"utf8")}catch(n){if(n.code==="ENOENT")return{proposals:[],warnings:[]};throw n}return ii(e)}o(E,"readLearningProposalStore");async function Lt(t,e,n={}){return Ot(t,async()=>{let r=await E(t);if(r.warnings.length>0)throw new Error(`refusing to write corrupt learning proposal store: ${r.warnings.join("; ")}`);let s=(n.now??(()=>new Date().toISOString()))(),a=r.proposals.find(p=>p.proposalId===e.proposalId),c=a?{...a,proposal:e,...n.applyPlan!==void 0?{applyPlan:n.applyPlan}:{},updatedAt:s}:{proposalId:e.proposalId,status:"pending",proposal:e,...n.applyPlan!==void 0?{applyPlan:n.applyPlan}:{},createdAt:s,updatedAt:s},d=a?r.proposals.map(p=>p.proposalId===e.proposalId?c:p):[...r.proposals,c];return await Ct(t,d),c})}o(Lt,"upsertLearningProposal");function Nt(t){let e=de(t),n=e?ae(e):`local-${ce(t)}`;return b("projects",n,"learning","proposals.json")}o(Nt,"resolveLearningProposalStore");async function we(t,e,n,r={}){return Ot(t,async()=>{let i=await E(t);if(i.warnings.length>0)throw new Error(`refusing to write corrupt learning proposal store: ${i.warnings.join("; ")}`);let s=i.proposals.find(d=>d.proposalId===e);if(!s)throw new Error(`learning proposal not found: ${e}`);let a=r.now??(()=>new Date().toISOString()),c={...s,status:n,updatedAt:a(),...n==="approved"&&r.appliedAt!==void 0?{appliedAt:r.appliedAt}:{},...n==="approved"&&r.appliedChangedPaths!==void 0?{appliedChangedPaths:r.appliedChangedPaths}:{},...n==="approved"&&r.appliedSnapshotPath!==void 0?{appliedSnapshotPath:r.appliedSnapshotPath}:{},...n==="approved"&&r.approvedBy!==void 0?{approvedBy:r.approvedBy}:{},...n==="approved"&&r.approvedAt!==void 0?{approvedAt:r.approvedAt}:{},...n==="approved"&&r.approvalPolicyId!==void 0?{approvalPolicyId:r.approvalPolicyId}:{},...n==="approved"&&r.approvalPolicyReason!==void 0?{approvalPolicyReason:r.approvalPolicyReason}:{},...n==="approved"&&r.approvalExpectedFingerprints!==void 0?{approvalExpectedFingerprints:r.approvalExpectedFingerprints}:{},...n==="approved"&&r.approvalResultingFingerprints!==void 0?{approvalResultingFingerprints:r.approvalResultingFingerprints}:{},...n==="rejected"&&r.rejectedReason!==void 0?{rejectedReason:r.rejectedReason}:{rejectedReason:void 0}};return await Ct(t,i.proposals.map(d=>d.proposalId===e?c:d)),c})}o(we,"updateLearningProposalStatus");async function Ot(t,e){let n=`${t}.lock`;await Mt(jt(t),{recursive:!0});let r=await oi(n);try{return await e()}finally{try{await r.handle.close()}finally{await ai(n,r.token)}}}o(Ot,"withStoreWriteLock");async function oi(t){let e=Date.now()+5e3;for(;;)try{let n=await Nr(t,"wx"),r=Lr();try{return await n.writeFile(`${process.pid} ${r}
20
+ `,"utf8"),{handle:n,token:r}}catch(i){throw await n.close(),await he(t,{force:!0}),i}}catch(n){if(!K(n,"EEXIST"))throw n;if(await si(t)){await he(t,{force:!0});continue}if(Date.now()>=e)throw new Error(`learning proposal store lock timed out: ${t}`);await new Promise(r=>setTimeout(r,10))}}o(oi,"acquireStoreWriteLock");async function si(t){try{if(Date.now()-(await Dr(t)).mtimeMs<=3e4)return!1;let e=Dt(await Ge(t,"utf8"));return e!==void 0&&!ci(e.pid)}catch(e){if(K(e,"ENOENT")||K(e,"EPERM")||K(e,"EACCES")||K(e,"EBUSY"))return!1;throw e}}o(si,"isStaleStoreLock");async function ai(t,e){try{Dt(await Ge(t,"utf8"))?.token===e&&await he(t,{force:!0})}catch(n){if(!K(n,"ENOENT"))throw n}}o(ai,"releaseStoreWriteLock");function Dt(t){let e=/^(\d+)(?: ([0-9a-f-]+))?\s*$/i.exec(t);if(e===null)return;let n=Number(e[1]);if(!(!Number.isSafeInteger(n)||n<=0))return e[2]===void 0?{pid:n}:{pid:n,token:e[2]}}o(Dt,"parseLockOwner");function ci(t){try{return process.kill(t,0),!0}catch(e){return!K(e,"ESRCH")}}o(ci,"isProcessAlive");function K(t,e){return v(t)&&t.code===e}o(K,"isFileError");var Kt=/(?:-----BEGIN (?:RSA |EC |OPENSSH )?PRIVATE KEY-----|authorization:\s*bearer\b|\b(?:api[_\s-]?key|password|secret|token)\b\s*(?:[:=]|->|=>))/i,di=/\b(?:api[_\s-]?key|password|secret|token)\b\s+(?:(?:actually|currently|now|presently|really)\s+)?(?:is|was|equals?)\s+(.+)/i,pi=/\b(?:api[_\s-]?key|password|secret|token)\b\s+(?:(?:used|stored|configured|set|issued|deployed|assigned|shared|provided|required)\b(?:\s+(?:by|for|in|on|at|with|from|to)\b)?|(?:for|in|on|at)\b)(?:\s+[\p{L}\p{N}._-]+){0,3}\s+(?:is|was|equals?)\s+(.+)/iu,li=new Set(["active","disabled","empty","expired","invalid","masked","missing","redacted","revoked","rotated","rotated today","rotated yesterday","the configured environment value","the expected environment value","the stored environment value","not available","not configured","not present","not set","unavailable","unknown","unset","valid"]),ui=/\b(?:ignore|disregard|override)\s+(?:(?:all|any|the|these|those)\s+)?(?:(?:previous|prior|earlier|above|system|developer)\s+){0,3}(?:instructions?|prompts?|rules?|directives?|guidelines?)\b/i,fi=/\bforget\s+(?:(?:all|any|the)\s+)?(?:above\b|everything\s+(?:above|before)\b|(?:(?:previous|prior|earlier|system|developer)\s+){0,3}(?:instructions?|prompts?|rules?|directives?|guidelines?)\b)/i,mi=/\byou\s+are\s+now\s+(?:in\s+)?(?:system|developer|assistant|tool)\s+mode\b/i,gi=/<\/?(?:system|developer|assistant|tool|prompt)(?=[\s/>])/i,yi=/(?:->|=>|[→⇒➔➜➝⟶⟹↦])/g,hi=/["'`*_~“”‘’«»‹›()[\]{}]+/g,Bt=/<\/?[^<>]*>/g;function zt(t){return t.replace(/[\u0000-\u0008\u000b\u000c\u000e-\u001f\u007f]/g,"").replace(new RegExp("\\p{Cf}","gu"),"").replace(Bt," ").replace(/[<>]/g,"").replace(/\s+/g," ").trim()}o(zt,"compactMemoryClaim");function Ze(t){return t.normalize("NFKC").replace(new RegExp("\\p{Cf}","gu"),"").replace(yi," = ")}o(Ze,"memoryClaimStructuralView");function Ut(t,e){return zt(Ze(t).replace(Bt,e).replace(hi,e))}o(Ut,"memoryClaimForDetection");function Wt(t){return[Ut(t," "),Ut(t,"")]}o(Wt,"memoryClaimDetectionViews");function wi(t){let n=(di.exec(t)??pi.exec(t))?.[1]?.replace(/^["'`]+|[.!?'"`]+$/g,"").trim();return!(n===void 0||n.length===0||li.has(n.toLowerCase()))}o(wi,"containsSentenceCredential");function Ri(t){return Kt.test(Ze(t))||Wt(t).some(e=>Kt.test(e)||wi(e))}o(Ri,"isRestrictedMemoryContent");function Ve(t){return Ri(t)||gi.test(Ze(t))||Wt(t).some(e=>ui.test(e)||fi.test(e)||mi.test(e))}o(Ve,"containsUnsafeMemoryClaim");function Re(t,e=512){let n=zt(t);if(n.length===0)return;let r=n.slice(0,Math.max(1,e));return Ve(t)||Ve(n)||Ve(r)?void 0:r}o(Re,"sanitizePromptSafeMemoryClaim");import{createHash as Ti}from"node:crypto";import{readdir as kn,readFile as Ci,rename as Li,rm as Sn,writeFile as Ni,mkdir as Oi}from"node:fs/promises";import{basename as A,dirname as nn,join as h,relative as Di,resolve as rt,sep as Ki}from"node:path";import{createHmac as ki,randomBytes as Si,randomUUID as Qe}from"node:crypto";import{mkdir as et,open as bi,readFile as q,rename as Yt,rm as H,stat as vi,writeFile as tt}from"node:fs/promises";import I from"node:path";async function qt(t,e){let n=await Qt(t);return Object.keys(n.entries).length===0?e.lifecycle:n.entries[await Zt(t,e.id)]?.lifecycle??e.lifecycle}o(qt,"resolveManagedLifecycle");async function Ht(t,e,n){await Ii(t,e.id,"archived",n)}o(Ht,"archiveManagedMemoryRef");async function Xt(t,e,n){let r=e.storageUri;if(r===void 0||!ji(t,r))throw new Error("memory ref is not stored under the managed memory root");await Gt(t,async()=>{await H(r,{force:!0}),await Pi(t,I.basename(r)),await Jt(t,e.id,"forgotten",n)})}o(Xt,"forgetManagedMemoryRef");async function Ii(t,e,n,r){await Gt(t,async()=>{await Jt(t,e,n,r)})}o(Ii,"updateLifecycle");async function Jt(t,e,n,r){let i=await Qt(t),s=await Zt(t,e);await Mi(t,{version:1,entries:{...i.entries,[s]:{lifecycle:n,updatedAt:r}}})}o(Jt,"updateLifecycleUnlocked");async function Gt(t,e){let n=I.join(t,".governance","lifecycle.lock");await et(I.dirname(n),{recursive:!0});let r=await xi(n);try{await e()}finally{try{await r.handle.close()}finally{await Ei(n,r.token)}}}o(Gt,"withLifecycleLock");async function xi(t){let e=Date.now()+5e3;for(;;)try{let n=await bi(t,"wx"),r=Qe();try{return await n.writeFile(`${process.pid} ${r}
21
+ `,"utf8"),{handle:n,token:r}}catch(i){throw await n.close(),await H(t,{force:!0}),i}}catch(n){if(!tn(n)&&!Fi(n))throw n;if(await _i(t)){await H(t,{force:!0});continue}if(Date.now()>=e)throw new Error(`memory lifecycle lock timed out: ${t}`);await new Promise(r=>setTimeout(r,10))}}o(xi,"acquireLifecycleLock");async function _i(t){try{if(Date.now()-(await vi(t)).mtimeMs<=3e4)return!1;let e=Vt(await q(t,"utf8"));return e!==void 0&&!Ai(e.pid)}catch(e){if(V(e)||T(e)&&["EPERM","EACCES","EBUSY"].includes(String(e.code)))return!1;throw e}}o(_i,"isStaleLifecycleLock");async function Ei(t,e){try{Vt(await q(t,"utf8"))?.token===e&&await H(t,{force:!0})}catch(n){if(!V(n))throw n}}o(Ei,"releaseLifecycleLock");function Vt(t){let e=/^(\d+)(?: ([0-9a-f-]+))?\s*$/i.exec(t);if(e===null)return;let n=Number(e[1]);if(!(!Number.isSafeInteger(n)||n<=0))return e[2]===void 0?{pid:n}:{pid:n,token:e[2]}}o(Vt,"parseLockOwner");function Ai(t){try{return process.kill(t,0),!0}catch(e){return!(T(e)&&e.code==="ESRCH")}}o(Ai,"isProcessAlive");async function Pi(t,e){let n=I.join(t,"MEMORY.md"),r=`${n}.${Qe()}.tmp`;try{let s=(await q(n,"utf8")).split(/\r?\n/).filter(a=>!a.includes(`(${e})`)).join(`
22
+ `);await tt(r,s.endsWith(`
23
+ `)||s.length===0?s:`${s}
24
+ `,"utf8"),await Yt(r,n)}catch(i){if(await H(r,{force:!0}),!V(i))throw i}}o(Pi,"removeIndexLine");async function Zt(t,e){return ki("sha256",await $i(t)).update(e).digest("hex")}o(Zt,"tombstoneKey");async function $i(t){let e=I.join(t,".governance","tombstone.key");try{return await q(e)}catch(r){if(!V(r))throw r}await et(I.dirname(e),{recursive:!0});let n=Si(32);try{return await tt(e,n,{flag:"wx"}),n}catch(r){if(!tn(r))throw r;return q(e)}}o($i,"readOrCreateKey");async function Qt(t){try{let e=JSON.parse(await q(en(t),"utf8"));if(!T(e)||e.version!==1||!T(e.entries))throw new Error("invalid memory lifecycle state");let n={};for(let[r,i]of Object.entries(e.entries)){if(!/^[0-9a-f]{64}$/.test(r)||!T(i))throw new Error("invalid memory lifecycle entry");if(i.lifecycle!=="archived"&&i.lifecycle!=="forgotten"||typeof i.updatedAt!="string")throw new Error("invalid memory lifecycle entry");n[r]={lifecycle:i.lifecycle,updatedAt:i.updatedAt}}return{version:1,entries:n}}catch(e){if(V(e))return{version:1,entries:{}};throw e}}o(Qt,"readLifecycleState");async function Mi(t,e){let n=en(t);await et(I.dirname(n),{recursive:!0});let r=`${n}.${Qe()}.tmp`;try{await tt(r,`${JSON.stringify(e,null,2)}
25
+ `,"utf8"),await Yt(r,n)}catch(i){throw await H(r,{force:!0}),i}}o(Mi,"writeState");function en(t){return I.join(t,".governance","lifecycle.json")}o(en,"statePath");function ji(t,e){let n=I.resolve(t);return I.resolve(e).startsWith(`${n}${I.sep}`)}o(ji,"isWithin");function T(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}o(T,"isRecord");function V(t){return T(t)&&t.code==="ENOENT"}o(V,"isMissing");function tn(t){return T(t)&&t.code==="EEXIST"}o(tn,"isAlreadyExists");function Fi(t){return T(t)?t.code==="EBUSY"?!0:process.platform==="win32"&&(t.code==="EPERM"||t.code==="EACCES"):!1}o(Fi,"isTransientLockContention");var ee="missing",bn=1,Ui=1440*60*1e3,Bi=2,zi=200;function Wi(t){return new ve(t)}o(Wi,"createMemoryControlPlane");var ve=class{static{o(this,"MemoryControlPlane")}cwd;learningStorePath;memoryRoot;now;onEvent;projectDocs;extraRefs;sessionId;sessionLineage;artifactLedger;discoverSkills;memoryReviewer;identity;applicability;scopedRoots;constructor(e){this.cwd=e.cwd,this.learningStorePath=e.learningStorePath??Nt(e.cwd),this.identity=e.identity,this.applicability=e.identity?.projectId!==void 0?{tenantId:e.identity.tenantId,projectId:e.identity.projectId}:void 0,this.memoryRoot=e.memoryRoot??(e.identity?.projectId!==void 0?O(e.identity,"project"):pe(e.cwd)),this.scopedRoots=e.memoryRoot!==void 0||e.identity===void 0?[]:qi(e.identity),this.now=e.now??(()=>new Date().toISOString()),this.onEvent=e.onEvent,this.projectDocs=e.projectDocs??Yi(e.cwd),this.extraRefs=e.extraRefs??[],this.sessionId=e.sessionId??"current",this.sessionLineage=e.sessionLineage,this.artifactLedger=e.artifactLedger??[],this.discoverSkills=e.discoverSkills??!0,this.memoryReviewer=e.memoryReviewer}async listInbox(){let e=await E(this.learningStorePath);if(e.warnings.length>0)return[];let n=[];for(let r of e.proposals){if(r.status!=="pending")continue;let i=await this.projectLearningProposal(r);i!==void 0&&n.push(i)}return n}async showProposal(e){let n=await E(this.learningStorePath);if(n.warnings.length>0)return;let r=n.proposals.find(i=>Z(i.proposalId)===e);return r===void 0?void 0:this.projectLearningProposal(r)}async approveProposal(e,n){let r=await this.showProposal(e);if(r===void 0)return x(e,"memory proposal not found");if(n===void 0)return x(e,"approval requires fingerprints from a shown proposal preview");let i={proposalId:r.id,approvedBy:"user",approvedAt:this.now(),expectedFingerprints:n},a=await this.adapterForProposal(r).applyProposal(r,i);return a.applied&&this.emit({type:"proposal.approved",proposalId:e}),a}async rejectProposal(e,n){let r=st(e);if(r===void 0)return{proposalId:e,rejected:!1,skippedReason:`invalid memory proposal id: ${e}`,warnings:[]};let i=await this.showProposal(e);if(i===void 0)return{proposalId:e,rejected:!1,skippedReason:"memory proposal not found",warnings:[]};await we(this.learningStorePath,r,"rejected",n!==void 0&&n.trim().length>0?{rejectedReason:n}:{}),this.emit({type:"proposal.rejected",proposalId:e});let s=n?.trim(),a,c=[];if(s!==void 0&&s.length>0)try{a=await this.reviewMemoryFeedback({trigger:"proposal_rejected",userFeedback:s,sourceRefs:i.sourceRefs.map(d=>d.id),candidateRefIds:[...i.targetRefs.map(d=>d.id),...i.sourceRefs.map(d=>d.id)]}),c=a.warnings}catch(d){c=[`memory feedback review failed: ${hn(d)}`]}return{proposalId:e,rejected:!0,...a!==void 0?{review:a}:{},warnings:c}}async listRefs(e={}){let n=[];n.push(...await this.listLearningRefs());for(let r of this.memdirAdapters())n.push(...await r.listRefs(e));return n.push(...this.listSessionTraceRefs()),n.push(...this.listArtifactLedgerRefs()),n.push(...await this.listProjectDocRefs()),n.push(...await this.listSkillRefs()),n.push(...this.extraRefs),n.filter(r=>dt(r,e))}async readRef(e){return e.kind==="learning_proposal"||e.kind==="reasoning_report"?this.readLearningRef(e):e.kind==="memdir"?this.memdirAdapter().readRef(e):e.kind==="session_trace"?this.readSessionTraceRef(e):e.kind==="artifact_ledger"?this.readArtifactLedgerRef(e):ct(e,this.now)}async archiveRef(e){let n=(await this.listRefs()).find(r=>r.id===e);return n?.kind!=="memdir"?Rn(e,"archive"):(await Ht(this.memoryRootForRef(n),n,this.now()),{refId:e,operation:"archive",acknowledged:!0,residualSourceRefs:n.sourceRefs,warnings:[]})}async forgetRef(e){return this.removeManagedRef(e,"forget")}async purgeRef(e){return this.removeManagedRef(e,"purge")}async removeManagedRef(e,n){let r=(await this.listRefs()).find(i=>i.id===e);return r?.kind!=="memdir"?Rn(e,n):(await Xt(this.memoryRootForRef(r),r,this.now()),{refId:e,operation:n,acknowledged:!0,residualSourceRefs:r.sourceRefs,warnings:n==="purge"&&r.sourceRefs.length>0?["source carriers follow their independent retention lifecycle"]:[]})}async runCurator(e={}){let n=await this.listRefs({includePrivate:e.includePrivate,includeSensitive:e.includeSensitive}),r=this.buildGovernanceReport(n);return this.emit({type:"curator.completed",reportId:r.reportId}),r}async maybeRunAutoCurator(e={}){if(e.enabled===!1)return{ran:!1,skippedReason:"disabled"};let n=this.now(),r=Math.max(0,e.intervalMs??Ui),i=Math.max(1,e.minRefs??Bi),s=so(this.memoryRoot),a=await po(s),c=a?.lastCheckedAt??a?.lastRunAt,d=c===void 0?void 0:dn(c,r);if(d!==void 0&&mo(d,n)>0)return{ran:!1,skippedReason:"not_due",nextEligibleAt:d};let p=(await this.listRefs({includePrivate:e.includePrivate,includeSensitive:e.includeSensitive})).filter(go);if(p.length<i)return{ran:!1,skippedReason:"insufficient_refs"};let u=this.buildGovernanceReport(p),f=ao(this.memoryRoot,u);return await xe(f,`${JSON.stringify(u,null,2)}
26
+ `),await co(this.memoryRoot,zi),await lo(s,{version:bn,lastCheckedAt:n,lastRunAt:n,lastInventoryFingerprint:m(pn(p)),lastReportPath:f}),this.emit({type:"curator.completed",reportId:u.reportId}),{ran:!0,report:u,reportPath:f,nextEligibleAt:dn(n,r)}}async buildMemoryPack(e){let n=this.now(),r=mn(e),i=m(r);if(e.ignoreMemory===!0||To(e.task))return{generatedAt:n,taskFingerprint:i,memoryRevision:m("suppressed"),candidates:[],promptHints:[],hints:[],omitted:["memory intentionally suppressed by request"],traceMetadata:{selectedRefIds:[],omittedRefIds:[],taskFingerprint:i,suppressed:!0}};let a=(await this.listRefs({includePrivate:e.includePrivate,includeSensitive:e.includeSensitive})).filter(l=>xo(l,e)).sort((l,y)=>gn(y,e)-gn(l,e)||Se(y,r)-Se(l,r)||l.id.localeCompare(y.id)),c=Math.max(0,e.maxCandidates??12),d=Math.min(c,Math.max(0,e.maxHints??5)),p=a.slice(0,c),u=await this.buildPackHints(p,{...e,includeSnippets:!1}),f=await this.buildPackHints(p.slice(0,d),e);return this.emit({type:"pack.selected",refIds:f.map(l=>l.ref.id)}),{generatedAt:n,taskFingerprint:i,memoryRevision:m(pn(a)),candidates:u,promptHints:f,hints:f,omitted:a.slice(c).map(l=>l.id),traceMetadata:{selectedRefIds:f.map(l=>l.ref.id),omittedRefIds:a.slice(c).map(l=>l.id),taskFingerprint:i,suppressed:!1}}}async reviewMemoryFeedback(e){let n=this.now(),r=e.sourceRefs??[],i=await this.selectReviewCandidateRefs(e),s={trigger:e.trigger,userFeedback:e.userFeedback??e.episodeDigest?.summary??"",...e.task!==void 0?{task:e.task}:{},sourceRefs:r,candidateRefs:i.candidateRefs,warnings:i.warnings};if(this.memoryReviewer===void 0){let d={trigger:e.trigger,createdAt:n,sourceRefs:r,candidateRefs:i.candidateRefs,actions:[],warnings:[...i.warnings,"memory reviewer unavailable; semantic memory review was not run"],...e.episodeDigest!==void 0?{episodeDigest:e.episodeDigest}:{}};return this.emit({type:"review.completed",trigger:e.trigger,actionCount:0}),d}let a=await this.memoryReviewer(s),c=e.episodeDigest===void 0?a:{...a,episodeDigest:e.episodeDigest};return this.emit({type:"review.completed",trigger:e.trigger,actionCount:c.actions.length}),c}async persistReviewPlan(e){return(await this.persistReviewPlanWithDecisions(e)).proposalIds}async persistReviewPlanWithDecisions(e){let n=[],r=[],i=await this.listRefs({includePrivate:!0}),s=(await E(this.learningStorePath)).proposals;for(let a=0;a<e.actions.length;a+=1){let c=e.actions[a],d=await this.consultReviewAction(e,c,a,i);if(d.kind==="conflict"||d.kind==="no_action"||d.kind==="reject"||d.kind==="quarantine"){r.push(d);continue}let p=d.existingRefId===void 0?void 0:i.find(P=>P.id===d.existingRefId),u=d.kind==="evidence_update"&&p!==void 0?$o((await this.readRef(p)).body):c.proposedBody?.trim();if(u===void 0||u.length===0){r.push({actionIndex:a,kind:"reject",reason:"memory proposal body is empty",...d.existingRefId!==void 0?{existingRefId:d.existingRefId}:{}});continue}let f=`memory-review-${m([e.trigger,...e.sourceRefs,d.kind,d.existingRefId??"",c.summary,u].join("\0")).slice(0,24)}`,l=e.episodeDigest,y=jo([...p?.sourceRefs??[],...l?.evidenceRefs??e.sourceRefs]),g=this.resolveReviewMemoryPlacement(e,c,p,s),_={destination:"memdir_handoff",proposalId:f,origin:"background_learning",userLabel:"context_note",memoryKind:g.memoryKind,body:u,metadata:{writeOrigin:"background_learning",executionContext:"primary",sessionId:l?.sessionId??"memory-review",sourceRefs:y,completedTurn:!0,persistenceKind:d.kind,...c.claimKind!==void 0?{claimKind:c.claimKind}:{},...c.claimKey!==void 0?{claimKey:c.claimKey}:{},...c.actionSignature!==void 0?{actionSignature:c.actionSignature}:{},...c.preconditions!==void 0?{preconditions:c.preconditions}:{},...g.applicability!==void 0?{applicability:g.applicability}:{},requestedLifecycle:g.requestedLifecycle,...l!==void 0?{episodeOutcome:l.outcome,verifiedEvidence:ot(l),...this.identity?.projectId!==void 0?{evidenceProjectId:this.identity.projectId}:{}}:{},...p!==void 0?{targetRefId:p.id,...p.storageUri!==void 0?{targetStorageUri:p.storageUri}:{}}:{}}};await Lt(this.learningStorePath,_,{now:this.now}),n.push(f),r.push({...d,proposalId:f}),this.emit({type:"proposal.created",proposalId:Z(f)})}return{proposalIds:n,decisions:r}}resolveReviewMemoryPlacement(e,n,r,i){if(n.claimKind==="preference"&&(e.trigger==="explicit_remember"||e.trigger==="user_correction")&&this.identity?.userId!==void 0)return{memoryKind:"user",applicability:{tenantId:this.identity.tenantId,userId:this.identity.userId},requestedLifecycle:"active"};if(n.claimKind!=="procedure"||n.claimKey===void 0||this.identity===void 0)return this.projectPlacement(n.claimKind);let s=e.episodeDigest,a=s!==void 0&&ot(s),c=Po(n.claimKey,i,a&&s?.outcome==="succeeded"?this.identity.projectId:void 0,a&&s?.outcome==="failed");if(!(r?.scope==="agent"||c.projects.size>=2))return this.projectPlacement("procedure");let p=c.successes>=3&&c.projects.size>=2&&!c.hasCounterexample;return{memoryKind:"semantic_memory",applicability:{tenantId:this.identity.tenantId,agentId:this.identity.agentId},requestedLifecycle:p?"active":"provisional"}}projectPlacement(e){return this.identity?.projectId===void 0?{memoryKind:"project",requestedLifecycle:"active"}:{memoryKind:"project",applicability:{tenantId:this.identity.tenantId,...e==="procedure"?{agentId:this.identity.agentId}:{},projectId:this.identity.projectId},requestedLifecycle:"active"}}async reviewEpisode(e,n){let r=await this.reviewMemoryFeedback({trigger:"episode_completed",episodeDigest:e,userFeedback:e.summary,task:e.objective,sourceRefs:e.evidenceRefs});if(wn(n))return Oo(r,"episode review timed out");let i=await this.persistReviewPlanWithDecisions(r),s=i.proposalIds,a=[],c=[...r.warnings];for(let d of i.decisions){if(wn(n)){c.push("episode review timed out before governed apply");break}let p=d.proposalId;if(p===void 0)continue;let u=r.actions[d.actionIndex];if(u===void 0||!Eo(u,e))continue;let f=await this.applyHostEligibleProposal(Z(p),`${Ne}:episode-promotion`,"verified low-risk episode memory");f.applied?a.push(p):f.skippedReason!==void 0&&c.push(f.skippedReason)}return{plan:r,proposalIds:s,appliedProposalIds:a,decisions:i.decisions,warnings:c}}async consultReviewAction(e,n,r,i){if(n.action==="conflict_report"||n.relationship==="conflict")return{actionIndex:r,kind:"conflict",reason:"review reported an unresolved contradiction"};if(n.action==="quarantine"||Mo(n.proposedBody??""))return{actionIndex:r,kind:"quarantine",reason:"memory content is restricted or explicitly quarantined"};if(n.action!=="write_memdir"&&n.action!=="patch_memdir"||n.proposedBody===void 0||n.proposedBody.trim().length===0)return{actionIndex:r,kind:"reject",reason:"review action is not a supported durable-memory mutation"};let s=Ao(n,e,i);if(s===void 0)return n.action==="patch_memdir"?{actionIndex:r,kind:"reject",reason:"patch target is missing or governance-incompatible"}:{actionIndex:r,kind:"create",reason:"no compatible governed claim exists"};if(s.lifecycle==="quarantined")return{actionIndex:r,kind:"quarantine",existingRefId:s.id,reason:"compatible claim is quarantined"};if(s.lifecycle==="archived"||s.authority==="proposal_only")return{actionIndex:r,kind:"reject",existingRefId:s.id,reason:"compatible claim is not eligible for governed update"};let a=await this.readRef(s),c=n.relationship==="same_claim"||un(a.body)===un(n.proposedBody),p=(e.episodeDigest?.evidenceRefs??e.sourceRefs).some(u=>!s.sourceRefs.includes(u));return c&&!p?{actionIndex:r,kind:"no_action",existingRefId:s.id,reason:"compatible claim and evidence already exist"}:{actionIndex:r,kind:c&&n.relationship!=="condition_refinement"?"evidence_update":"condition_refinement",existingRefId:s.id,reason:c?"compatible claim has new independent evidence":"compatible claim receives a reviewed condition refinement"}}async applyHostEligibleProposal(e,n,r){let i=await this.showProposal(e);if(i===void 0)return x(e,"memory proposal not found");let s=await this.adapterForProposal(i).applyProposal(i,{proposalId:i.id,approvedBy:"host",approvedAt:this.now(),expectedFingerprints:i.expectedFingerprints,policyId:n,policyReason:r});return s.applied&&this.emit({type:"proposal.approved",proposalId:e}),s}async projectLearningProposal(e){if(e.proposal.destination==="memdir_handoff")return this.projectMemdirHandoff(e,e.proposal);if(e.proposal.destination==="reasoning_handoff")return this.projectReasoningHandoff(e,e.proposal)}async projectMemdirHandoff(e,n){let r=this.memoryRootForHandoff(n),i=this.scopedRoots.find(f=>f.root===r),s=Gi(r,n,e.proposalId),a=await Vi(s.targetPath,n,e,i),c=await Zi(s.entrypointPath,i),d=be(e),p={[a.id]:a.bodyFingerprint??ee,[c.id]:c.bodyFingerprint??ee},u={summary:`${n.metadata.persistenceKind==="evidence_update"||n.metadata.persistenceKind==="condition_refinement"?"Update":"Write"} ${n.memoryKind} memory from learning proposal ${e.proposalId}.`,changedRefs:[a,c],changedPaths:[s.targetPath,s.entrypointPath],beforeFingerprints:p,afterFingerprints:{[a.id]:m(s.content)},diff:s.content,warnings:[]};return{id:Z(e.proposalId),action:n.metadata.persistenceKind==="evidence_update"||n.metadata.persistenceKind==="condition_refinement"?"patch_memdir":"write_memdir",targetRefs:[a,c],sourceRefs:[d],expectedFingerprints:p,rationale:`F224 classified this as ${n.memoryKind} memory.`,risk:"medium",preview:u,requiresApproval:!0,createdAt:e.createdAt}}projectReasoningHandoff(e,n){let r=on(e),i=be(e),s={summary:`Record reasoning report handoff: ${n.title}`,changedRefs:[],changedPaths:[],beforeFingerprints:{[r.id]:r.bodyFingerprint??m(n.body)},warnings:["No stable reasoning-strategy carrier exists yet; approval records the handoff only."]};return{id:Z(e.proposalId),action:"no_op",targetRefs:[r],sourceRefs:[i],expectedFingerprints:s.beforeFingerprints,rationale:"Reasoning handoff stays as a report until a stable carrier exists.",risk:"low",preview:s,requiresApproval:!0,createdAt:e.createdAt}}async listLearningRefs(){let e=await E(this.learningStorePath);if(e.warnings.length>0)return[];let n=[];for(let r of e.proposals)(r.proposal.destination==="memdir_handoff"||r.proposal.destination==="reasoning_handoff")&&n.push(be(r)),r.proposal.destination==="reasoning_handoff"&&n.push(on(r));return n}async readLearningRef(e){let n=e.kind==="reasoning_report"?e.id.replace(/^reasoning_report:/,""):e.id.replace(/^learning_proposal:/,""),r=await E(this.learningStorePath),i=r.proposals.find(a=>a.proposalId===n);if(i===void 0)return{ref:e,body:"",bodyFingerprint:m(""),readAt:this.now(),warnings:[`learning proposal not found: ${n}`]};let s=at(i);return{ref:{...e,bodyFingerprint:m(s)},body:s,bodyFingerprint:m(s),readAt:this.now(),warnings:r.warnings}}async listProjectDocRefs(){let e=[];for(let n of this.projectDocs){let r=await C(n);r.exists&&e.push({kind:"project_doc",id:`project_doc:${Di(this.cwd,n).replace(/\\/g,"/")}`,scope:"project",title:A(n),owner:"project",lifecycle:"readonly",authority:"read_only",visibility:"prompt_safe",sourceRefs:[],relatedRefs:[],bodyFingerprint:m(r.content),storageUri:n})}return e}listSessionTraceRefs(){return this.sessionLineage===void 0?[]:this.sessionLineage.entries.map(e=>Hi(this.sessionId,e))}listArtifactLedgerRefs(){return this.artifactLedger.map(e=>Xi(this.sessionId,e))}readSessionTraceRef(e){let n=sn(e.id,"session_trace",this.sessionId),r=this.sessionLineage?.entries.find(s=>s.id===n),i=r===void 0?"":_e(r);return{ref:{...e,bodyFingerprint:m(i)},body:i,bodyFingerprint:m(i),readAt:this.now(),warnings:r===void 0?[`session trace entry not found: ${e.id}`]:[]}}readArtifactLedgerRef(e){let n=sn(e.id,"artifact_ledger",this.sessionId),r=this.artifactLedger.find(s=>s.id===n),i=r===void 0?"":_e(r);return{ref:{...e,bodyFingerprint:m(i)},body:i,bodyFingerprint:m(i),readAt:this.now(),warnings:r===void 0?[`artifact ledger entry not found: ${e.id}`]:[]}}async listSkillRefs(){if(!this.discoverSkills)return[];let e;try{e=(await Xe(this.cwd)).list()}catch{return[]}return e.map(n=>({kind:"skill",id:`skill:${n.name}`,scope:n.source==="builtin"?"builtin":n.source==="user"?"user":"project",title:n.name,owner:n.source==="builtin"?"kodax":n.source==="user"?"user":"project",lifecycle:n.source==="builtin"?"readonly":"active",authority:"read_only",visibility:"prompt_safe",sourceRefs:[],relatedRefs:[],storageUri:h(n.path,"SKILL.md")}))}async buildPackHints(e,n){let r=[];for(let i of e){let s=n.includeSnippets===!0?await this.readRef(i):void 0,a=Re(i.title??i.id,240)??i.id,c=s===void 0||s.body.trim().length===0?void 0:n.purpose==="deliberate_query"||n.purpose==="intervention"?Lo(s.body):yn(s.body),d=c===void 0?void 0:Re(c,512);r.push({ref:i,hook:a,reason:Co(i,mn(n)),...d!==void 0&&s!==void 0?{bodySnippet:d,bodyFingerprint:s.bodyFingerprint}:i.bodyFingerprint!==void 0?{bodyFingerprint:i.bodyFingerprint}:{}})}return r}async selectReviewCandidateRefs(e){let n=Math.max(0,e.maxRefs??6);if(n===0)return{candidateRefs:[],warnings:[]};let r=await this.listRefs({includePrivate:e.includePrivate,includeSensitive:e.includeSensitive}),i=[],s=e.candidateRefIds!==void 0&&e.candidateRefIds.length>0?Fo(r,e.candidateRefIds,n,i):r.filter(_o).sort((c,d)=>Se(d,fn(e))-Se(c,fn(e))).slice(0,n),a=[];for(let c of s)a.push(await this.readReviewCandidateRef(c));return{candidateRefs:a,warnings:i}}async readReviewCandidateRef(e){try{let n=await this.readRef(e);return{ref:n.ref,...n.body.trim().length>0?{bodySnippet:yn(n.body)}:{},bodyFingerprint:n.bodyFingerprint,warnings:n.warnings}}catch(n){return{ref:e,...e.bodyFingerprint!==void 0?{bodyFingerprint:e.bodyFingerprint}:{},warnings:[`failed to read memory ref: ${hn(n)}`]}}}adapterForProposal(e){return e.action==="write_memdir"||e.action==="patch_memdir"?this.memdirAdapter():new it(this.learningStorePath,this.now)}memdirAdapter(){return this.memdirAdapters()[0]??new Q(this.memoryRoot,this.learningStorePath,this.now)}memdirAdapters(){return this.scopedRoots.length===0?[new Q(this.memoryRoot,this.learningStorePath,this.now,this.applicability,"project")]:this.scopedRoots.map(e=>new Q(e.root,this.learningStorePath,this.now,e.applicability,e.scope))}memoryRootForHandoff(e){let n=e.memoryKind==="user"?"user":e.memoryKind==="semantic_memory"?"agent":"project";return this.scopedRoots.find(r=>r.scope===n)?.root??this.memoryRoot}memoryRootForRef(e){let n=e.storageUri===void 0?void 0:rt(e.storageUri);return this.scopedRoots.find(r=>n?.startsWith(`${rt(r.root)}${Ki}`))?.root??this.memoryRoot}emit(e){this.onEvent?.(e)}buildGovernanceReport(e){let n=this.now(),r=wo(e);return{reportId:`memory-governance:${m(`${n}:${r.length}`).slice(0,12)}`,generatedAt:n,findings:r.length>0?r:[{kind:"no_op",severity:"info",refIds:[],summary:"No memory governance findings.",suggestedAction:"no_op"}],warnings:[]}}},it=class{static{o(this,"LearningHandoffAdapter")}learningStorePath;now;kind="learning_proposal";constructor(e,n){this.learningStorePath=e,this.now=n}async listRefs(e={}){let n=await E(this.learningStorePath);return n.warnings.length>0?[]:n.proposals.filter(r=>r.proposal.destination==="memdir_handoff"||r.proposal.destination==="reasoning_handoff").map(be).filter(r=>dt(r,e))}async readRef(e){return ct(e,this.now)}async previewProposal(e){return e.preview}async applyProposal(e,n){let r=st(e.id);if(r===void 0)return x(e.id,"invalid memory proposal id");if(!No(e.expectedFingerprints,n.expectedFingerprints))return x(e.id,"approval fingerprints do not match proposal preview");let i=await we(this.learningStorePath,r,"approved",{appliedChangedPaths:[],approvedBy:n.approvedBy,approvedAt:n.approvedAt,approvalPolicyId:n.policyId,approvalPolicyReason:n.policyReason,approvalExpectedFingerprints:n.expectedFingerprints,approvalResultingFingerprints:n.expectedFingerprints,now:this.now});return{proposalId:e.id,applied:!0,changedRefs:e.targetRefs,changedPaths:[],warnings:i.status==="approved"?[]:["proposal status did not become approved"]}}},Q=class{static{o(this,"MemdirMemoryAdapter")}memoryRoot;learningStorePath;now;applicability;scope;kind="memdir";constructor(e,n,r,i,s="project"){this.memoryRoot=e,this.learningStorePath=n,this.now=r,this.applicability=i,this.scope=s}async listRefs(e={}){let n=[],r=this.applicability===void 0?void 0:await E(this.learningStorePath),i;try{i=await kn(this.memoryRoot,{withFileTypes:!0})}catch(s){if(pt(s))return[];throw s}for(let s of i){if(!s.isFile()||!s.name.endsWith(".md")||s.name==="MEMORY.md")continue;let a=h(this.memoryRoot,s.name),c=await C(a);if(!c.exists)continue;let d=Qi(a,c.content),p=await qt(this.memoryRoot,d);if(p==="forgotten")continue;let u=p===d.lifecycle?d:{...d,lifecycle:p};if(this.applicability===void 0){n.push(u);continue}let f=Ie(u,this.scope,this.applicability),l=eo(r?.proposals??[],f,c.content),y=l?.proposal.destination==="memdir_handoff"?l.proposal.metadata:void 0,g=y?.applicability===void 0?f:Ie(u,this.scope,y.applicability);n.push(l===void 0?{...f,lifecycle:"provisional",authority:"proposal_only"}:{...g,lifecycle:g.lifecycle==="archived"?"archived":y?.requestedLifecycle??"active",sourceRefs:l.proposal.destination==="memdir_handoff"?l.proposal.metadata.sourceRefs:g.sourceRefs,...l.proposal.destination==="memdir_handoff"&&l.proposal.metadata.claimKind!==void 0?{claimKind:l.proposal.metadata.claimKind}:{},...l.proposal.destination==="memdir_handoff"&&l.proposal.metadata.claimKey!==void 0?{claimKey:l.proposal.metadata.claimKey}:{},...l.proposal.destination==="memdir_handoff"&&l.proposal.metadata.actionSignature!==void 0?{actionSignature:l.proposal.metadata.actionSignature}:{},applyReceiptRef:`learning_proposal:${l.proposalId}`,expectedFingerprint:l.approvalExpectedFingerprints?.[g.id],resultingFingerprint:l.approvalResultingFingerprints?.[g.id]})}return n.filter(s=>dt(s,e))}async readRef(e){return ct(e,this.now)}async previewProposal(e){return e.preview}async applyProposal(e,n){let r=st(e.id);if(r===void 0)return x(e.id,"invalid memory proposal id");let i=e.targetRefs.find(L=>L.kind==="memdir"&&L.storageUri!==void 0),s=e.targetRefs.find(L=>L.storageUri!==void 0&&A(L.storageUri)==="MEMORY.md");if(i?.storageUri===void 0||s?.storageUri===void 0)return x(e.id,"memory proposal has no memdir target");let a=n.expectedFingerprints[i.id],c=n.expectedFingerprints[s.id];if(a===void 0||c===void 0)return x(e.id,"approval fingerprints do not cover proposal preview");let p=[i,s].find(L=>Io(L));if(p!==void 0)return x(e.id,`${p.id} is not mutable by memory governance`);let u=await C(i.storageUri),f=await C(s.storageUri),l=e.preview.diff??"",y=ro(i.storageUri,l),g=u.exists&&u.content===l,_=io(f.content,i.storageUri,y),P=f.exists&&f.content===_;if(rn(u)!==a&&!g)return x(e.id,"target memory changed after preview");if(rn(f)!==c&&!g&&!P)return x(e.id,"MEMORY.md changed after preview");let $=[],B=[];return g?B.push("target memory already matched proposal content; completing approval"):(await xe(i.storageUri,l),$.push(i.storageUri)),P?B.push("MEMORY.md already contained the proposal index line; completing approval"):(await xe(s.storageUri,_),$.push(s.storageUri)),await we(this.learningStorePath,r,"approved",{appliedAt:this.now(),appliedChangedPaths:[i.storageUri,s.storageUri],approvedBy:n.approvedBy,approvedAt:n.approvedAt,approvalPolicyId:n.policyId,approvalPolicyReason:n.policyReason,approvalExpectedFingerprints:n.expectedFingerprints,approvalResultingFingerprints:{[i.id]:m(l),[s.id]:m(_)},now:this.now}),{proposalId:e.id,applied:!0,changedRefs:e.targetRefs,changedPaths:$,warnings:B}}};function Yi(t){return["README.md","AGENTS.md",h("docs","PRD.md"),h("docs","ADR.md"),h("docs","HLD.md"),h("docs","DD.md"),h("docs","FEATURE_LIST.md")].map(e=>rt(t,e))}o(Yi,"defaultProjectDocs");function qi(t){let e=[];return t.projectId!==void 0&&e.push({root:O(t,"project"),scope:"project",applicability:{tenantId:t.tenantId,projectId:t.projectId}}),t.workspaceId!==void 0&&e.push({root:O(t,"workspace"),scope:"workspace",applicability:{tenantId:t.tenantId,workspaceId:t.workspaceId}}),e.push({root:O(t,"agent"),scope:"agent",applicability:{tenantId:t.tenantId,agentId:t.agentId}}),t.userId!==void 0&&e.push({root:O(t,"user"),scope:"user",applicability:{tenantId:t.tenantId,userId:t.userId}}),e}o(qi,"buildScopedRoots");function Z(t){return`memory:${t}`}o(Z,"memoryProposalId");function st(t){return t.startsWith("memory:")?t.slice(7):void 0}o(st,"parseMemoryProposalId");function m(t){return`sha256:${Ti("sha256").update(t).digest("hex")}`}o(m,"fingerprint");function rn(t){return t.exists?m(t.content):ee}o(rn,"fingerprintOrMissing");function vn(t){return t.status==="pending"?"pending":t.status==="approved"?"trusted":"archived"}o(vn,"lifecycleFromStatus");function be(t){let e=at(t);return{kind:"learning_proposal",id:`learning_proposal:${t.proposalId}`,scope:"project",title:Ji(t),owner:"project",lifecycle:vn(t),authority:"proposal_only",visibility:"prompt_safe",sourceRefs:In(t),relatedRefs:[],bodyFingerprint:m(e),createdAt:t.createdAt,updatedAt:t.updatedAt}}o(be,"learningRefFromEntry");function on(t){let e=t.proposal.destination==="reasoning_handoff"?t.proposal.title:t.proposalId,n=at(t);return{kind:"reasoning_report",id:`reasoning_report:${t.proposalId}`,scope:"project",title:e,owner:"project",lifecycle:vn(t),authority:"proposal_only",visibility:"prompt_safe",sourceRefs:In(t),relatedRefs:[`learning_proposal:${t.proposalId}`],bodyFingerprint:m(n),createdAt:t.createdAt,updatedAt:t.updatedAt}}o(on,"reasoningRefFromEntry");function Hi(t,e){let n=_e(e);return{kind:"session_trace",id:`session_trace:${t}:${e.id}`,scope:"session",title:`Session ${e.type}: ${e.id}`,owner:"project",lifecycle:"provisional",authority:"read_only",visibility:"private",sourceRefs:[],relatedRefs:e.parentId===null?[]:[`session_trace:${t}:${e.parentId}`],version:"2",bodyFingerprint:m(n),createdAt:e.timestamp,updatedAt:e.timestamp}}o(Hi,"sessionTraceRefFromEntry");function Xi(t,e){let n=_e(e);return{kind:"artifact_ledger",id:`artifact_ledger:${t}:${e.id}`,scope:"session",title:e.summary??e.displayTarget??e.target,owner:"project",lifecycle:"provisional",authority:"read_only",visibility:"prompt_safe",sourceRefs:e.sessionEntryId===void 0?[]:[`session_trace:${t}:${e.sessionEntryId}`],relatedRefs:[],bodyFingerprint:m(n),createdAt:e.timestamp,updatedAt:e.timestamp}}o(Xi,"artifactLedgerRefFromEntry");function sn(t,e,n){let r=`${e}:${n}:`;return t.startsWith(r)?t.slice(r.length):""}o(sn,"parseScopedMemoryRefId");function Ji(t){let e=t.proposal;return e.destination==="memdir_handoff"?`${e.memoryKind} memory handoff`:e.destination==="reasoning_handoff"?e.title:e.proposalId}o(Ji,"learningTitle");function In(t){let e=t.proposal;return e.destination==="memdir_handoff"?e.metadata.sourceRefs:e.destination==="reasoning_handoff"?e.sourceTraceIds:[]}o(In,"learningSourceRefs");function at(t){let e=t.proposal;return e.destination==="memdir_handoff"||e.destination==="reasoning_handoff"?e.body:JSON.stringify(e,null,2)}o(at,"learningBody");function Gi(t,e,n){let r=to(e.memoryKind),i=xn(e.body,`${e.memoryKind} memory`),s=no(e.body)||i,a=e.metadata.targetStorageUri===void 0?`${r}_${an(i)}_${an(n)}.md`:A(e.metadata.targetStorageUri),c=e.metadata.targetStorageUri??h(t,a),d=["---",`name: ${cn(i)}`,`description: ${cn(s)}`,`type: ${r}`,"---","",e.body.trim(),""].join(`
27
+ `);return{targetPath:c,entrypointPath:h(t,"MEMORY.md"),content:d,indexLine:`- [${i}](${a}) - ${s}`}}o(Gi,"buildMemdirWritePlan");async function Vi(t,e,n,r){let i=await C(t),s={kind:"memdir",id:`memdir:${A(t)}`,scope:e.memoryKind==="user"?"user":"project",title:xn(e.body,`${e.memoryKind} memory`),owner:e.memoryKind==="user"?"user":"project",lifecycle:i.exists?"active":"pending",authority:"approved_write",visibility:"prompt_safe",sourceRefs:[`learning_proposal:${n.proposalId}`,...e.metadata.sourceRefs],relatedRefs:[],...e.metadata.claimKind!==void 0?{claimKind:e.metadata.claimKind}:{},...e.metadata.claimKey!==void 0?{claimKey:e.metadata.claimKey}:{},...e.metadata.actionSignature!==void 0?{actionSignature:e.metadata.actionSignature}:{},bodyFingerprint:i.exists?m(i.content):ee,storageUri:t,createdAt:n.createdAt,updatedAt:n.updatedAt};return r===void 0?s:Ie(s,r.scope,e.metadata.applicability??r.applicability)}o(Vi,"buildMemdirTargetRef");async function Zi(t,e){let n=await C(t),r={kind:"memdir",id:"memdir:MEMORY.md",scope:"project",title:"MEMORY.md",owner:"project",lifecycle:n.exists?"active":"pending",authority:"approved_write",visibility:"prompt_safe",sourceRefs:[],relatedRefs:[],bodyFingerprint:n.exists?m(n.content):ee,storageUri:t};return e===void 0?r:Ie(r,e.scope,e.applicability)}o(Zi,"buildEntrypointRef");function Qi(t,e){let n=j(e),r=A(t),i=n.frontmatter.type;return{kind:"memdir",id:`memdir:${r}`,scope:i==="user"?"user":"project",title:n.frontmatter.name??r,owner:i==="user"?"user":"project",lifecycle:"active",authority:r==="MEMORY.md"?"read_only":"approved_write",visibility:"prompt_safe",sourceRefs:[],relatedRefs:[],bodyFingerprint:m(e),storageUri:t}}o(Qi,"memdirRefFromFile");function Ie(t,e,n){let r=Le(n),i=t.storageUri===void 0?t.id:A(t.storageUri);return{...t,id:`memdir:${e}:${r}:${i}`,scope:e,scopeId:r,applicability:n}}o(Ie,"decorateScopedRef");function eo(t,e,n){if(e.storageUri===void 0)return;let r=e.storageUri,i=m(n);for(let s=t.length-1;s>=0;s-=1){let a=t[s];if(a.status==="approved"&&a.appliedChangedPaths?.includes(r)===!0&&Object.values(a.approvalResultingFingerprints??{}).includes(i))return a}}o(eo,"findApplyReceipt");function to(t){return t==="user"||t==="feedback"||t==="project"||t==="reference"?t:"project"}o(to,"memoryTypeForHandoff");function xn(t,e){let n=t.split(/\r?\n/).map(r=>r.trim()).find(r=>r.length>0);return n===void 0?e:n.replace(/^#+\s*/,"").slice(0,80)||e}o(xn,"titleFromBody");function no(t){let e=t.replace(/\s+/g," ").trim();if(e.length===0)return;let n=e.search(/[.!?。!?]/);return(n>=0?e.slice(0,n+1):e).slice(0,160)}o(no,"firstSentence");function an(t){let e=t.toLowerCase().replace(/[^a-z0-9]+/g,"_").replace(/^_+|_+$/g,"").slice(0,48);return e.length>0?e:"memory"}o(an,"slugify");function cn(t){return JSON.stringify(t.replace(/\r?\n/g," "))}o(cn,"quoteScalar");function ro(t,e){let n=j(e),r=n.frontmatter.name??A(t,".md"),i=n.frontmatter.description??r;return`- [${r}](${A(t)}) - ${i}`}o(ro,"indexLineFromContent");function io(t,e,n){let r=t.trimEnd();if(oo(r,n))return`${r}
28
+ `;let i=A(e).replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),s=new RegExp(`^.*\\(${i}\\).*$`,"m");return s.test(r)?`${r.replace(s,n)}
29
+ `:r.length>0?`${n}
30
+ ${r}
31
+ `:`${n}
32
+ `}o(io,"upsertIndexLine");function oo(t,e){return t.trimEnd().split(/\r?\n/).includes(e)}o(oo,"indexContainsLine");async function C(t){try{return{exists:!0,content:await Ci(t,"utf8")}}catch(e){if(pt(e))return{exists:!1,content:""};throw e}}o(C,"readTextIfExists");async function xe(t,e){await Oi(nn(t),{recursive:!0});let n=h(nn(t),`.${A(t)}.kodax-${process.pid}-${Date.now().toString(36)}.tmp`);try{await Ni(n,e,"utf8"),await Li(n,t)}catch(r){throw await Sn(n,{force:!0}),r}}o(xe,"writeFileAtomic");function so(t){return h(t,".governance","auto-curate-state.json")}o(so,"autoCuratorStatePath");function ao(t,e){let n=ln(e.generatedAt),r=ln(e.reportId);return h(t,".governance","reports",`${n}-${r}.json`)}o(ao,"autoCuratorReportPath");async function co(t,e){if(e<=0)return;let n=h(t,".governance","reports"),r;try{r=await kn(n,{withFileTypes:!0})}catch(s){if(pt(s))return;throw s}let i=r.filter(s=>s.isFile()&&s.name.endsWith(".json")).map(s=>s.name).sort((s,a)=>a.localeCompare(s));for(let s of i.slice(e))await Sn(h(n,s),{force:!0})}o(co,"pruneAutoCuratorReports");async function po(t){let e=await C(t);if(e.exists)try{let n=JSON.parse(e.content);return uo(n)?n:void 0}catch{return}}o(po,"readAutoCuratorState");async function lo(t,e){await xe(t,`${JSON.stringify(e,null,2)}
33
+ `)}o(lo,"writeAutoCuratorState");function uo(t){return fo(t)?t.version===bn&&ke(t.lastCheckedAt)&&ke(t.lastRunAt)&&ke(t.lastInventoryFingerprint)&&ke(t.lastReportPath):!1}o(uo,"isAutoCuratorState");function fo(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}o(fo,"isReadonlyRecord");function ke(t){return t===void 0||typeof t=="string"}o(ke,"optionalStringField");function dn(t,e){let n=Date.parse(t),r=Number.isFinite(n)?n:Date.now();return new Date(r+e).toISOString()}o(dn,"addMs");function mo(t,e){let n=Date.parse(t),r=Date.parse(e);return!Number.isFinite(n)||!Number.isFinite(r)?0:n-r}o(mo,"compareIso");function go(t){return t.kind==="memdir"||t.kind==="learning_proposal"||t.kind==="reasoning_report"}o(go,"isAutoCuratorCandidate");function pn(t){return t.map(e=>[e.id,e.kind,e.scope,e.lifecycle,e.authority,e.visibility,e.bodyFingerprint??"",e.storageUri??"",e.updatedAt??"",e.title??""].join(" ")).sort().join(`
34
+ `)}o(pn,"memoryInventoryPayload");function ln(t){let e=t.replace(/[^a-zA-Z0-9._-]+/g,"-").replace(/^-+|-+$/g,"");return e.length>0?e:"report"}o(ln,"sanitizePathSegment");async function ct(t,e){if(t.storageUri===void 0)return{ref:t,body:"",bodyFingerprint:m(""),readAt:e(),warnings:["memory ref has no storageUri"]};let n=await C(t.storageUri);if(!n.exists)return{ref:t,body:"",bodyFingerprint:m(""),readAt:e(),warnings:[`memory ref storage does not exist: ${t.storageUri}`]};let r=t.kind==="memdir"?j(n.content):void 0;return{ref:{...t,bodyFingerprint:m(n.content)},body:n.content,bodyFingerprint:m(n.content),...r!==void 0?{frontmatter:yo(r.frontmatter)}:{},readAt:e(),warnings:[]}}o(ct,"readStorageBackedRef");function yo(t){let e={};return t.name!==void 0&&(e.name=t.name),t.description!==void 0&&(e.description=t.description),t.type!==void 0&&(e.type=t.type),e}o(yo,"frontmatterRecord");function dt(t,e){return!(e.kinds!==void 0&&!e.kinds.includes(t.kind)||e.scopes!==void 0&&!e.scopes.includes(t.scope)||e.lifecycles!==void 0&&!e.lifecycles.includes(t.lifecycle)||t.visibility==="private"&&e.includePrivate!==!0||t.visibility==="sensitive"&&e.includeSensitive!==!0||e.query!==void 0&&!ho(t,e.query))}o(dt,"matchesFilter");function ho(t,e){let n=e.trim().toLowerCase();return n.length===0?!0:[t.id,t.title??"",t.kind,t.scope,t.owner,...t.sourceRefs,...t.relatedRefs].some(r=>r.toLowerCase().includes(n))}o(ho,"refMatchesQuery");function wo(t){let e=[];e.push(...Ro(t)),e.push(...ko(t)),e.push(...So(t));for(let n of t)n.lifecycle==="stale"&&e.push({kind:"stale",severity:"warning",refIds:[n.id],summary:`${n.id} is stale and excluded from normal memory packs.`,suggestedAction:"archive"}),n.lifecycle==="quarantined"&&e.push({kind:"quarantined",severity:"warning",refIds:[n.id],summary:`${n.id} is quarantined and requires manual review.`,suggestedAction:"conflict_report"});return e}o(wo,"buildGovernanceFindings");function Ro(t){let e=new Map;for(let n of t){if(n.bodyFingerprint===void 0||n.lifecycle==="archived")continue;let r=e.get(n.bodyFingerprint)??[];r.push(n.id),e.set(n.bodyFingerprint,r)}return Array.from(e.entries()).filter(([,n])=>n.length>1).map(([n,r])=>({kind:"duplicate",severity:"warning",refIds:r,summary:`Multiple refs share ${n}.`,suggestedAction:"conflict_report"}))}o(Ro,"duplicateFingerprintFindings");function ko(t){let e=new Map;for(let n of t){let r=bo(n.title);if(r===void 0||n.bodyFingerprint===void 0||n.lifecycle==="archived")continue;let i=e.get(r)??[];i.push(n),e.set(r,i)}return Array.from(e.entries()).flatMap(([n,r])=>{let i=new Set(r.map(s=>s.bodyFingerprint));return r.length<2||i.size<=1?[]:[{kind:"conflict",severity:"warning",refIds:r.map(s=>s.id),summary:`Multiple refs use the title "${n}" with different fingerprints.`,suggestedAction:"conflict_report"}]})}o(ko,"conflictTitleFindings");function So(t){let e=new Set(t.map(n=>n.id));return t.flatMap(n=>{let r=n.relatedRefs.filter(i=>vo(i)&&!e.has(i));return r.length===0?[]:[{kind:"orphaned",severity:"warning",refIds:[n.id,...r],summary:`${n.id} points to missing memory ref(s): ${r.join(", ")}.`,suggestedAction:"conflict_report"}]})}o(So,"orphanedRefFindings");function bo(t){let e=t?.trim().toLowerCase().replace(/\s+/g," ");return e!==void 0&&e.length>0?e:void 0}o(bo,"normalizeConflictTitle");function vo(t){return/^(learning_proposal|reasoning_report|memdir|session_trace|artifact_ledger|skill|project_doc|self_manual|workflow_run|working_context):/.test(t)}o(vo,"isMemoryControlledRefId");function Io(t){return t.authority==="read_only"||t.scope==="builtin"||t.pinned===!0}o(Io,"isProtectedFromMutation");function xo(t,e){return t.applicability!==void 0&&(e.identity===void 0||!se(e.identity,t.applicability))||t.visibility==="private"&&e.includePrivate!==!0||t.visibility==="sensitive"&&e.includeSensitive!==!0||t.authority==="proposal_only"?!1:t.lifecycle==="trusted"||t.lifecycle==="active"||t.lifecycle==="readonly"}o(xo,"isPackEligible");function _o(t){return t.kind!=="memdir"&&t.kind!=="learning_proposal"&&t.kind!=="reasoning_report"?!1:t.lifecycle!=="archived"&&t.lifecycle!=="quarantined"}o(_o,"isReviewCandidateEligible");function Eo(t,e){if(t.confidence!=="high"||t.risk!=="low"||e.visibility!=="prompt_safe"||e.evidenceRefs.length===0||!ot(e)||t.claimKind==="procedure"&&e.outcome!=="succeeded")return!1;let n=t.proposedBody??"";return n.length===0?!1:!/(?:api[_-]?key|authorization:\s*bearer|private key|password|secret|token\s*[:=])/i.test(n)}o(Eo,"isEligibleEpisodePromotion");function Ao(t,e,n){let r=new Set(t.targetRefIds),i=n.find(a=>r.has(a.id));if(i!==void 0)return nt(i,t)?i:void 0;if(r.size>0)return;if(t.claimKey!==void 0){let a=n.find(c=>c.claimKey===t.claimKey&&nt(c,t));if(a!==void 0)return a}let s=new Set(e.candidateRefs.map(a=>a.ref.id));return n.find(a=>s.has(a.id)&&nt(a,t))}o(Ao,"findCompatibleReviewRef");function nt(t,e){return!(t.kind!=="memdir"||t.visibility!=="prompt_safe"||e.claimKind!==void 0&&t.claimKind!==void 0&&t.claimKind!==e.claimKind)}o(nt,"isGovernanceCompatibleReviewRef");function un(t){return j(t).body.replace(/\s+/g," ").trim().toLowerCase()}o(un,"normalizeClaimBody");function Po(t,e,n,r){let i=n===void 0?0:1,s=r,a=new Set;n!==void 0&&a.add(n);for(let c of e){if(c.status==="rejected"||c.proposal.destination!=="memdir_handoff")continue;let d=c.proposal.metadata;if(d.claimKind!=="procedure"||d.claimKey!==t||d.verifiedEvidence!==!0)continue;let p=d.evidenceProjectId??d.applicability?.projectId;d.episodeOutcome==="succeeded"?(i+=1,p!==void 0&&a.add(p)):d.episodeOutcome==="failed"&&(s=!0)}return{successes:i,projects:a,hasCounterexample:s}}o(Po,"procedurePromotionHistory");function ot(t){return t.evidence?.some(e=>(e.grade==="authoritative"||e.grade==="verified")&&(e.source==="user"||e.source==="host"||e.source==="environment"))===!0}o(ot,"hasVerifiedDigestEvidence");function $o(t){return j(t).body.trim()}o($o,"extractClaimBody");function Mo(t){return/(?:api[_-]?key|authorization:\s*bearer|private key|password|secret|token\s*[:=])/i.test(t)||/(?:ignore|disregard|override)\s+(?:all\s+)?(?:previous|prior|system|developer)\s+instructions?/i.test(t)||/<\/?(?:system|developer|assistant|tool|prompt)(?:\s|>)/i.test(t)}o(Mo,"isRestrictedMemoryBody");function jo(t){return[...new Set(t)]}o(jo,"uniqueStrings");function Fo(t,e,n,r){let i=new Map(t.map(a=>[a.id,a])),s=[];for(let a of e.slice(0,n)){let c=i.get(a);c===void 0?r.push(`memory review candidate not found: ${a}`):s.push(c)}return s}o(Fo,"selectRefsById");function fn(t){return[t.task,t.userFeedback].filter(e=>e!==void 0&&e.trim().length>0).join(`
35
+ `)}o(fn,"reviewTask");function To(t){return/\b(ignore|do not use|don't use|without)\s+(project\s+)?memory\b/i.test(t)}o(To,"shouldIgnoreMemory");function mn(t){return[t.task,t.decisionIntent,t.actionSignature].filter(e=>e!==void 0&&e.trim().length>0).join(`
36
+ `)}o(mn,"memoryPackRankingText");function Se(t,e){let n=e.toLowerCase(),r=t.title?.toLowerCase()??"",i=0;t.pinned===!0&&(i+=50),t.scope==="project"&&(i+=20),t.scope==="user"&&(i+=10),(t.lifecycle==="trusted"||t.lifecycle==="readonly")&&(i+=10),r.length>0&&n.includes(r)&&(i+=30);for(let s of r.split(/[^a-z0-9]+/).filter(a=>a.length>=3))n.includes(s)&&(i+=3);return i}o(Se,"scoreRef");function gn(t,e){return e.actionSignature!==void 0&&t.actionSignature!==void 0&&t.actionSignature===e.actionSignature?2:e.decisionIntent!==void 0&&t.claimKey!==void 0&&t.claimKey===e.decisionIntent?1:0}o(gn,"structuredMatchScore");function Co(t,e){let n=t.title??t.id;return e.toLowerCase().includes(n.toLowerCase())?"Exact task/title overlap.":`${t.scope} ${t.kind} is eligible for deterministic recall.`}o(Co,"packReason");function yn(t){return t.replace(/\s+/g," ").trim().slice(0,240)}o(yn,"firstSnippet");function Lo(t){return j(t).body.replace(/```[\s\S]*?```/g," ").replace(/<\/?[^>]+>/g," ").replace(/^\s{0,3}(?:#{1,6}|[-*+]\s+|>\s*)/gm,"").replace(/[`*_~]/g,"").replace(/\s+/g," ").trim().slice(0,512)}o(Lo,"promptSafeClaimSnippet");function hn(t){return t instanceof Error?t.message:String(t)}o(hn,"errorMessage");function _e(t){return JSON.stringify(t,null,2)}o(_e,"stringifyJson");function No(t,e){let n=Object.keys(t).sort(),r=Object.keys(e).sort();return n.length!==r.length?!1:n.every((i,s)=>i===r[s]&&t[i]===e[i])}o(No,"fingerprintsMatch");function x(t,e){return{proposalId:t,applied:!1,changedRefs:[],changedPaths:[],skippedReason:e,warnings:[]}}o(x,"skippedApply");function wn(t){return t?.aborted===!0}o(wn,"isAborted");function Oo(t,e){return{plan:t,proposalIds:[],appliedProposalIds:[],decisions:[],warnings:[...t.warnings,e]}}o(Oo,"cancelledEpisodeReview");function Rn(t,e){return{refId:t,operation:e,acknowledged:!1,residualSourceRefs:[],warnings:["managed memory ref not found"]}}o(Rn,"lifecycleNotFound");function pt(t){return typeof t=="object"&&t!==null&&"code"in t&&t.code==="ENOENT"}o(pt,"isMissingFile");import{randomUUID as En}from"node:crypto";import{mkdir as An,readFile as Do,readdir as Pn,rename as $n,rm as U,stat as Ko,writeFile as Uo}from"node:fs/promises";import w from"node:path";var Bo=5*6e4;async function zo(t,e){if(e.sessionId!==t.sessionId)throw new Error("outcome digest session does not match review-inbox owner");let n={version:1,reviewKey:e.reviewKey,digest:e,ownerSessionRef:t.sessionId,ownerAgentHash:R("agent",t.agentId),...t.projectId!==void 0?{ownerProjectHash:R("project",t.projectId)}:{},createdAt:e.createdAt},r=Ae(t,e.reviewKey);return await $e(r,n),{path:r,entry:n}}o(zo,"persistPendingEpisodeReview");async function Mn(t){let e=Fn(t.tenantId),n=t.agentId===void 0?void 0:R("agent",t.agentId),r=t.projectId===void 0?void 0:R("project",t.projectId),i=await Jo(e),s=[];for(let a of i){await Xo(e,a);let c=w.join(e,a,"pending");for(let d of await lt(c)){let p=await ut(w.join(c,d));p!==void 0&&(n!==void 0&&p.ownerAgentHash!==n||r!==void 0&&p.ownerProjectHash!==r||s.push(p))}}return s.sort((a,c)=>a.createdAt.localeCompare(c.createdAt)||a.reviewKey.localeCompare(c.reviewKey))}o(Mn,"listPendingEpisodeReviews");async function Wo(t,e,n){let r=await jn(t,e,n);return await U(Ae(t,e),{force:!0}),{acknowledged:!0,receiptPath:r}}o(Wo,"completeEpisodeReview");async function Yo(t,e){let n=w.join(Ee(t),"pending"),r=0;for(let i of await lt(n)){let s=w.join(n,i),a=await ut(s);a!==void 0&&a.digest.sequence>e&&(await U(s,{force:!0}),r+=1)}return r}o(Yo,"rewindPendingEpisodeReviews");async function qo(t,e){let n=await Mn({tenantId:t.tenantId,agentId:t.agentId,...t.projectId!==void 0?{projectId:t.projectId}:{}}),r=t.projectId===void 0?n.filter(a=>a.ownerProjectHash===void 0):n,i=Math.max(1,Math.min(8,e.maxEntries??8)),s={reviewed:0,discarded:0,deferred:n.length-r.length,failed:0,failures:[]};for(let a of r.slice(0,i)){let c={...t,sessionId:a.ownerSessionRef},d=await Ho(c,a.reviewKey);if(d!==void 0)try{let p=await e.revalidate(a);if(p==="defer"){await _n(c,a,d),s.deferred+=1;continue}if(p==="discard"){await U(d,{force:!0}),s.discarded+=1;continue}let u=await e.review(a);await jn(c,a.reviewKey,u),await U(d,{force:!0}),s.reviewed+=1}catch(p){await _n(c,a,d),s.failed+=1,s.failures.push({reviewKey:a.reviewKey,error:p instanceof Error?p.message:String(p)})}}return s.deferred+=Math.max(0,r.length-i),s}o(qo,"drainPendingEpisodeReviews");async function Ho(t,e){let n=w.join(Ee(t),"processing");await An(n,{recursive:!0});let r=w.join(n,`${Pe(e)}.${En()}.json`);try{return await $n(Ae(t,e),r),r}catch(i){if(re(i))return;throw i}}o(Ho,"claimPendingReview");async function _n(t,e,n){await $e(Ae(t,e.reviewKey),e),await U(n,{force:!0})}o(_n,"restoreClaim");async function Xo(t,e){let n=w.join(t,e),r=w.join(n,"processing");for(let i of await lt(r)){let s=w.join(r,i);try{if(Date.now()-(await Ko(s)).mtimeMs<=Bo)continue;let a=await ut(s);if(a===void 0)continue;await $e(w.join(n,"pending",`${Pe(a.reviewKey)}.json`),a),await U(s,{force:!0})}catch(a){if(!re(a))throw a}}}o(Xo,"recoverStaleClaims");async function jn(t,e,n){let r={version:1,reviewKey:e,proposalIds:[...n],completedAt:new Date().toISOString()},i=w.join(Ee(t),"receipts",`${Pe(e)}.json`);return await $e(i,r),i}o(jn,"writeEpisodeReviewReceipt");function Fn(t){return b("memory-review-inbox",R("tenant",t))}o(Fn,"tenantInboxRoot");function Ee(t){return w.join(Fn(t.tenantId),R("session",t.sessionId))}o(Ee,"sessionInboxRoot");function Ae(t,e){return w.join(Ee(t),"pending",`${Pe(e)}.json`)}o(Ae,"pendingPath");function Pe(t){return R("review",t)}o(Pe,"safeKey");async function $e(t,e){await An(w.dirname(t),{recursive:!0});let n=`${t}.${En()}.tmp`;try{await Uo(n,`${JSON.stringify(e,null,2)}
37
+ `,"utf8"),await $n(n,t)}catch(r){throw await U(n,{force:!0}),r}}o($e,"writeJsonAtomic");async function Jo(t){try{return(await Pn(t,{withFileTypes:!0})).filter(e=>e.isDirectory()).map(e=>e.name)}catch(e){if(re(e))return[];throw e}}o(Jo,"readDirectories");async function lt(t){try{return(await Pn(t,{withFileTypes:!0})).filter(e=>e.isFile()&&e.name.endsWith(".json")).map(e=>e.name)}catch(e){if(re(e))return[];throw e}}o(lt,"readJsonFiles");async function ut(t){try{let e=JSON.parse(await Do(t,"utf8"));return!ne(e)||e.version!==1||typeof e.reviewKey!="string"?te(t,"invalid envelope"):typeof e.ownerSessionRef!="string"||typeof e.ownerAgentHash!="string"?te(t,"invalid owner"):e.ownerProjectHash!==void 0&&typeof e.ownerProjectHash!="string"?te(t,"invalid project owner"):typeof e.createdAt!="string"||!Go(e.digest)?te(t,"invalid digest"):e}catch(e){if(re(e))return;if(e instanceof SyntaxError)return te(t,"invalid JSON");throw e}}o(ut,"readPending");function te(t,e){N({source:"memory.review-inbox",level:"warn",message:"Invalid pending episode review was skipped.",detail:{filePath:t,reason:e}})}o(te,"invalidPending");function Go(t){return ne(t)?typeof t.id=="string"&&typeof t.reviewKey=="string"&&typeof t.sessionId=="string"&&typeof t.branchId=="string"&&Number.isSafeInteger(t.sequence)&&typeof t.objective=="string"&&typeof t.approach=="string"&&(t.outcome==="succeeded"||t.outcome==="failed")&&typeof t.summary=="string"&&(t.actionSignature===void 0||typeof t.actionSignature=="string")&&(t.preconditions===void 0||typeof t.preconditions=="string")&&(t.lesson===void 0||typeof t.lesson=="string")&&Array.isArray(t.evidenceRefs)&&t.evidenceRefs.every(e=>typeof e=="string")&&(t.evidence===void 0||Array.isArray(t.evidence)&&t.evidence.every(Vo))&&(t.memoryInfluence===void 0||Array.isArray(t.memoryInfluence)&&t.memoryInfluence.every(Zo))&&(t.visibility==="prompt_safe"||t.visibility==="private"||t.visibility==="sensitive")&&typeof t.createdAt=="string":!1}o(Go,"isOutcomeDigest");function Vo(t){return ne(t)&&typeof t.ref=="string"&&(t.grade==="authoritative"||t.grade==="verified"||t.grade==="corroborated"||t.grade==="observed"||t.grade==="inferred")&&(t.source==="user"||t.source==="host"||t.source==="tool"||t.source==="environment"||t.source==="agent")&&typeof t.observedAt=="string"}o(Vo,"isOutcomeEvidence");function Zo(t){return ne(t)&&typeof t.decisionReceiptRef=="string"&&(t.grade==="direct"||t.grade==="supporting"||t.grade==="exposed"||t.grade==="unknown")}o(Zo,"isMemoryInfluence");function ne(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}o(ne,"isRecord");function re(t){return ne(t)&&t.code==="ENOENT"}o(re,"isMissing");export{es as a,ts as b,os as c,N as d,Nn as e,us as f,gt as g,b as h,fs as i,ms as j,gs as k,se as l,R as m,Le as n,Ne as o,ae as p,ce as q,de as r,pe as s,Hn as t,O as u,Xn as v,Jn as w,wt as x,j as y,Rt as z,Zn as A,Qn as B,er as C,ir as D,or as E,Ke as F,sr as G,Ue as H,Be as I,bt as J,vt as K,It as L,We as M,Ye as N,qe as O,Rr as P,ue as Q,_t as R,br as S,At as T,J as U,Er as V,D as W,fe as X,me as Y,Xe as Z,Ar as _,G as $,Pr as aa,$r as ba,Tr as ca,Cr as da,E as ea,Lt as fa,Nt as ga,we as ha,Ri as ia,Re as ja,Wi as ka,ve as la,zo as ma,Mn as na,Wo as oa,Yo as pa,qo as qa};
@@ -0,0 +1,5 @@
1
+ // @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
2
+ import{g as R,h as _}from"./chunk-IQT4RPCE.js";import{a as r}from"./chunk-ONUPGMER.js";var g={user:0,background:1};function Z(t,e){return g[t]<=g[e]}r(Z,"priorityWithinMax");function O(t,e){return!(t.agentId!==e.agentId||!Z(t.priority,e.maxPriority)||e.mode!==void 0&&t.mode!==e.mode||e.id!==void 0&&t.id!==e.id||e.predicate&&!e.predicate(t))}r(O,"matchesFilter");var E=class{static{r(this,"MessageQueue")}messages=[];nextSeq=1;listeners=new Set;snapshotRef=Object.freeze([]);notify(e){this.snapshotRef=Object.freeze([...this.messages]);for(let i of this.listeners)try{i(e)}catch{}}subscribe=r(e=>(this.listeners.add(e),()=>{this.listeners.delete(e)}),"subscribe");getSnapshot=r(()=>this.snapshotRef,"getSnapshot");enqueue(e){let i=`msg-${this.nextSeq++}`,o={id:i,priority:e.priority,mode:e.mode,content:e.content,agentId:e.agentId,inputArtifacts:e.inputArtifacts,taskResult:e.taskResult,enqueuedAt:Date.now()};return this.messages=[...this.messages,o],this.notify({kind:"enqueued",message:o}),i}dequeue(e){let i=[];for(let s=0;s<this.messages.length;s++){let m=this.messages[s];m&&O(m,e)&&i.push({originalIndex:s,message:m})}i.sort((s,m)=>{let l=g[s.message.priority]-g[m.message.priority];return l!==0?l:s.originalIndex-m.originalIndex});let o=e.limit,n=typeof o=="number"&&i.length>o?i.slice(0,o):i;if(n.length===0)return[];let a=new Set(n.map(s=>s.originalIndex));this.messages=this.messages.filter((s,m)=>!a.has(m));let d=n.map(s=>s.message);return this.notify({kind:"dequeued",messages:d}),d}peek(e){let i=[];for(let a=0;a<this.messages.length;a++){let d=this.messages[a];d&&O(d,e)&&i.push({originalIndex:a,message:d})}i.sort((a,d)=>{let s=g[a.message.priority]-g[d.message.priority];return s!==0?s:a.originalIndex-d.originalIndex});let o=e.limit;return(typeof o=="number"&&i.length>o?i.slice(0,o):i).map(a=>a.message)}size(){return this.messages.length}count(e){return this.peek(e).length}has(e){return this.count(e)>0}clear(){if(this.messages.length===0)return;let e=this.messages;this.messages=[],this.notify({kind:"cleared",messages:e})}},w;function h(){return w||(w=new E),w}r(h,"getMessageQueue");function ee(){w=void 0}r(ee,"_resetMessageQueueForTests");function A(t,e){return t?`actor:${t}:${e}`:e==="/root"?void 0:e}r(A,"actorQueueId");var f=new Map;function te(t){f.set(t,(f.get(t)??0)+1);let e=!1;return()=>{if(e)return;e=!0;let i=f.get(t);i===void 0||i<=1?f.delete(t):f.set(t,i-1)}}r(te,"registerActiveRootQueueRoute");function x(){if(f.size!==0){if(f.size===1)return f.keys().next().value;throw new Error("Cannot infer queued follow-up target: multiple Actor root sessions are active. Pass sessionId or agentId explicitly.")}}r(x,"resolveActiveRootQueueRoute");function ie(){f.clear()}r(ie,"_resetActiveRootQueueRoutesForTests");var N=new Set(["wait_agent"]);function $(t){return t.some(i=>N.has(i))?"background":"user"}r($,"midTurnDrainPriority");function re(t){let e=$(t.lastTurnToolNames);return h().dequeue({agentId:t.agentId,maxPriority:e,limit:t.limit})}r(re,"maybeDrainMidTurn");var u=class extends Error{static{r(this,"KodaXMediaError")}code;detail;cause;constructor(e,i,o={}){super(i),this.name="KodaXMediaError",this.code=e,this.detail=o.detail,this.cause=o.cause}},p=class extends u{static{r(this,"ImageResizeError")}constructor(e,i={}){super(i.code??"IMAGE_TOO_LARGE",e,i),this.name="ImageResizeError"}};import F from"node:path";var ne={".gif":"image/gif",".jpeg":"image/jpeg",".jpg":"image/jpeg",".png":"image/png",".webp":"image/webp"},oe={".3gp":"video/3gpp",".3gpp":"video/3gpp",".avi":"video/x-msvideo",".flv":"video/x-flv",".mov":"video/quicktime",".mp4":"video/mp4",".mpeg":"video/mpeg",".mpg":"video/mpeg",".webm":"video/webm",".wmv":"video/x-ms-wmv"};function C(t){return ne[F.extname(t).toLowerCase()]}r(C,"inferImageMediaType");function U(t){return oe[F.extname(t).toLowerCase()]}r(U,"inferVideoMediaType");function ae(t,e={}){let i=e.mediaType??C(t);return{kind:"image",path:t,...i?{mediaType:i}:{},...e.source?{source:e.source}:{},...e.description?{description:e.description}:{}}}r(ae,"createImageArtifactFromPath");function se(t,e={}){if(e.mediaType!==void 0&&e.mimeType!==void 0&&e.mediaType!==e.mimeType)throw new u("UNSUPPORTED_MEDIA_TYPE",`File artifact mediaType and mimeType disagree: ${e.mediaType} != ${e.mimeType}.`);return{kind:"file",path:t,...e.mediaType?{mediaType:e.mediaType}:{},...e.mimeType?{mimeType:e.mimeType}:{},...e.name?{name:e.name}:{},...e.source?{source:e.source}:{},...e.description?{description:e.description}:{}}}r(se,"createFileArtifactFromPath");function de(t,e={}){let i=e.mediaType??U(t);if(!i)throw new u("UNSUPPORTED_MEDIA_TYPE",`Cannot infer video media type from path: ${t}.`);return{kind:"video",path:t,mediaType:i,...e.name?{name:e.name}:{},...e.source?{source:e.source}:{},...e.description?{description:e.description}:{}}}r(de,"createVideoArtifactFromPath");import{Jimp as me}from"jimp";var K=2e3,L=Math.floor(3.75*1024*1024),ue=[80,60,40];async function k(t,e={}){let i=e.maxDimension??K,o=e.targetBytes??L;if(t.length===0)throw new p("Empty image buffer.",{code:"IMAGE_DECODE_FAILED"});let n;try{n=await me.read(t)}catch(c){let I=c instanceof Error?c.message:String(c);throw new p(`Failed to decode image: ${I}`,{code:"IMAGE_DECODE_FAILED",cause:c})}let{width:a,height:d}=n.bitmap,s=Math.max(a,d);if(s>i){let c=i/s;n.resize({w:Math.max(1,Math.round(a*c)),h:Math.max(1,Math.round(d*c))})}let m=n.bitmap.width,l=n.bitmap.height;if(e.preferMediaType!=="image/jpeg"){let c=await n.getBuffer("image/png");if(c.length<=o)return{buffer:Buffer.from(c),mediaType:"image/png",width:m,height:l}}for(let c of ue){let I=await n.getBuffer("image/jpeg",{quality:c});if(I.length<=o)return{buffer:Buffer.from(I),mediaType:"image/jpeg",width:m,height:l}}if(e.preferMediaType==="image/jpeg"){let c=await n.getBuffer("image/png");if(c.length<=o)return{buffer:Buffer.from(c),mediaType:"image/png",width:m,height:l}}throw new p(`Image still exceeds budget (${o} bytes raw) after PNG and JPEG q40 compression. Try a smaller image or take a fresh screenshot of a smaller region.`,{code:"IMAGE_TOO_LARGE"})}r(k,"normalizePastedImage");import{spawn as j}from"node:child_process";import{mkdtemp as ce,readFile as fe,rm as pe}from"node:fs/promises";import{tmpdir as le}from"node:os";import q from"node:path";var B=5e3;async function G(){switch(process.platform){case"darwin":return he();case"win32":return Te();case"linux":return ye();default:throw new u("UNSUPPORTED_PLATFORM",`Clipboard image fallback is not supported on platform "${process.platform}".`)}}r(G,"readClipboardImage");async function ge(t={}){let e=await G();return e?k(e,t):null}r(ge,"readAndNormalizeClipboardImage");async function Y(t){let e=await ce(q.join(le(),"kodax-clip-")),i=q.join(e,"clip.png");try{return await t(i)}finally{await pe(e,{recursive:!0,force:!0}).catch(o=>{})}}r(Y,"runWithTempPng");async function he(){return Y(async t=>{let e=`set png_data to (the clipboard as \xABclass PNGf\xBB)
3
+ set fh to open for access POSIX file "${t.replace(/"/g,'\\"')}" with write permission
4
+ write png_data to fh
5
+ close access fh`;return await Q("osascript",["-e",e])?z(t):null})}r(he,"readMacClipboard");async function Te(){return Y(async t=>{let e=["Add-Type -AssemblyName System.Drawing | Out-Null","$img = Get-Clipboard -Format Image","if ($null -eq $img) { exit 1 }",`$img.Save('${t.replace(/'/g,"''")}', [System.Drawing.Imaging.ImageFormat]::Png)`].join("; ");return await Q("powershell",["-NoProfile","-Command",e])?z(t):null})}r(Te,"readWinClipboard");async function ye(){return await X("wl-paste",["--type","image/png"])??X("xclip",["-selection","clipboard","-t","image/png","-o"])}r(ye,"readLinuxClipboard");async function z(t){try{let e=await fe(t);return e.length>0?e:null}catch(e){return null}}r(z,"readNonEmptyFile");function Q(t,e){return new Promise(i=>{let o=!1,n=j(t,[...e],{stdio:"ignore",windowsHide:!0}),a=setTimeout(()=>{o||(o=!0,n.kill(),i(!1))},B);n.once("error",()=>{o||(o=!0,clearTimeout(a),i(!1))}),n.once("exit",d=>{o||(o=!0,clearTimeout(a),i(d===0))})})}r(Q,"runCommand");function X(t,e){return new Promise(i=>{let o=!1,n=[],a=j(t,[...e],{stdio:["ignore","pipe","ignore"],windowsHide:!0}),d=setTimeout(()=>{o||(o=!0,a.kill(),i(null))},B);a.stdout?.on("data",s=>n.push(s)),a.once("error",()=>{o||(o=!0,clearTimeout(d),i(null))}),a.once("exit",s=>{if(o)return;if(o=!0,clearTimeout(d),s!==0){i(null);return}let m=Buffer.concat(n);i(m.length>0?m:null)})})}r(X,"collectStdoutBytes");import{createHash as Ie}from"node:crypto";import{mkdir as we,readdir as Ee,stat as _e,unlink as Ae,writeFile as xe}from"node:fs/promises";import{tmpdir as ke}from"node:os";import M from"node:path";var V="KODAX_PASTE_TMP_DIR",W=1440*60*1e3;function H(){return process.env[V]??M.join(ke(),"kodax-paste")}r(H,"resolvePasteTmpDir");function Me(t){let e=t?.trim().replace(/[^A-Za-z0-9._-]+/g,"-").replace(/^-+|-+$/g,"");return e&&e.length>0?e:"paste"}r(Me,"sanitizeFileNamePrefix");async function De(t,e={}){let i=e.directory??H();await we(i,{recursive:!0});let o=t.mediaType==="image/jpeg"?".jpg":".png",n=Ie("sha256").update(t.buffer).digest("hex").slice(0,16),a=`${Me(e.fileNamePrefix)}-${n}${o}`,d=M.join(i,a);return await xe(d,t.buffer),{type:"image",path:d,mediaType:t.mediaType}}r(De,"persistImageAsBlock");async function Pe(t=Date.now()){let e=H(),i;try{i=await Ee(e)}catch(a){return 0}let o=t-W,n=0;return await Promise.all(i.filter(a=>/-[0-9a-f]{16}\.(?:png|jpg)$/.test(a)).map(async a=>{let d=M.join(e,a);try{(await _e(d)).mtimeMs<o&&(await Ae(d),n+=1)}catch(s){}})),n}r(Pe,"prunePasteTmpDir");var T=["image/png","image/jpeg","image/webp","image/gif"],y=["video/mp4","video/mpeg","video/quicktime","video/x-msvideo","video/x-flv","video/webm","video/x-ms-wmv","video/3gpp"],ve=[],Se=new Set(["anthropic","openai"]),be=new Set(["ark-coding/doubao-seed-2.0-code","ark-coding/doubao-seed-2.0-pro","ark-coding/kimi-k2.6","ark-coding/kimi-k2.7-code","ark-coding/minimax-m3","kimi-code/k3-256k","qwen-token-plan/qwen3.8-max-preview","qwen-token-plan/qwen3.7-plus","qwen-token-plan/qwen3.6-flash"]),Re=new Set(["kimi-code/kimi-for-coding","kimi-code/kimi-for-coding-highspeed","kimi-code/k3","kimi/kimi-k3","kimi/kimi-k2.5","kimi/kimi-k2.6","kimi/kimi-k2.7-code","kimi/kimi-k2.7-code-highspeed","minimax-coding/minimax-m3","minimax/minimax-m3","mimo-coding/mimo-v2.5","mimo/mimo-v2.5"]);function D(t){return{nativeSupported:!1,sdkSupported:!1,status:"unsupported",mediaTypes:[],maxCount:0,reason:t}}r(D,"unsupported");function Oe(t){return{nativeSupported:!0,sdkSupported:!0,status:"supported",mediaTypes:T,nativeMediaTypes:T,reason:t}}r(Oe,"supportedImage");function Ne(t){return{nativeSupported:!0,sdkSupported:!1,status:"provider-native-unwired",mediaTypes:[],nativeMediaTypes:y,maxCount:0,reason:t}}r(Ne,"nativeVideoUnwired");function $e(t){return t.trim().toLowerCase()}r($e,"normalizeProvider");function Fe(t){return _[t]?.model}r(Fe,"resolveProviderDefaultModel");function J(t,e){if(!e)return;let i=e.trim().toLowerCase();if(t==="kimi"){if(i==="k2.5")return"kimi-k2.5";if(i==="k2.6")return"kimi-k2.6";if(i==="k2.7-code")return"kimi-k2.7-code";if(i==="k2.7-code-highspeed")return"kimi-k2.7-code-highspeed"}return(t==="minimax-coding"||t==="minimax")&&i==="minimax-m3"?"minimax-m3":i}r(J,"normalizeModel");function Ce(t){if(!Se.has(t))return!1;let e=_[t];return e?R(e.capabilityProfile).multimodalSupport!=="none":!1}r(Ce,"hasOfficialImageSupport");function Ue(t,e){let i=J(t,e);if(!i)return!1;let o=`${t}/${i}`;return Re.has(o)}r(Ue,"hasSourceBackedNativeMedia");function Ke(t,e){let i=J(t,e);return i?be.has(`${t}/${i}`):!1}r(Ke,"hasSourceBackedImage");function Le(t,e,i){if(i)return"source-backed";if(e){if(t==="openai")return"openai-official";if(t==="anthropic")return"anthropic-official"}}r(Le,"resolveImageCapabilityRoute");function qe(t){switch(t){case"openai-official":return"Model route supports KodaX image input. Direct-path image/gif is sent as image/gif, but OpenAI requires non-animated GIF semantics.";case"anthropic-official":return"Model route supports KodaX image input. Direct-path image/gif is sent as image/gif, but Anthropic uses only the first frame of animated GIFs.";case"source-backed":return"Model route supports KodaX image input. Direct-path image/gif is sent as image/gif; animated-GIF interpretation is provider-owned."}}r(qe,"imageCapabilityReason");function P(t){let e=$e(t.provider),i=t.model?.trim()||Fe(e),o=Ce(e),n=Ue(e,i),a=n||Ke(e,i),d=Le(e,o,a),s=d!==void 0,m=n;return{text:!0,image:s?Oe(qe(d)):D("No verified KodaX image-input route for this provider/model."),video:m?Ne("Model route is native-video capable, but KodaX SDK video sending is not wired yet. Reject or downgrade before send."):D("No verified native video route for this provider/model."),file:D("File artifact contract is stable, but KodaX SDK file sending/extraction is not wired yet. Reject or downgrade before send.")}}r(P,"getModelInputCapabilities");function Xe(t){return T.includes(t)}r(Xe,"isKnownImageMediaType");function je(t){return y.includes(t)}r(je,"isKnownVideoMediaType");function v(t){return`${t.provider}${t.model?`/${t.model}`:""}`}r(v,"routeLabel");function S(t){return t.reason?`${t.status}: ${t.reason}`:t.status}r(S,"capabilityDetail");function b(t,e){if(t.length===0)return;let i=P(e);for(let o of t){let n=o;if(n.kind==="image"){if(!i.image.nativeSupported||!i.image.sdkSupported)throw new u("MODEL_INPUT_UNSUPPORTED",`Provider/model cannot consume image artifacts: ${v(e)}.`,{detail:S(i.image)});if(typeof n.mediaType=="string"&&!Xe(n.mediaType))throw new u("UNSUPPORTED_MEDIA_TYPE",`Unsupported image media type: ${n.mediaType}.`);continue}throw n.kind==="video"?typeof n.mediaType!="string"||!je(n.mediaType)?new u("UNSUPPORTED_MEDIA_TYPE",`Unsupported video media type: ${String(n.mediaType)}.`,{detail:`Supported video media types: ${y.join(", ")}`}):new u("MODEL_INPUT_UNSUPPORTED",`Provider/model cannot consume video artifacts through this SDK runtime: ${v(e)}.`,{detail:S(i.video)}):n.kind==="file"?typeof n.mediaType=="string"&&typeof n.mimeType=="string"&&n.mediaType!==n.mimeType?new u("UNSUPPORTED_MEDIA_TYPE",`File artifact mediaType and mimeType disagree: ${n.mediaType} != ${n.mimeType}.`):new u("MODEL_INPUT_UNSUPPORTED",`Provider/model cannot consume file artifacts through this SDK runtime: ${v(e)}.`,{detail:S(i.file)}):new u("MODEL_INPUT_UNSUPPORTED",`Unsupported input artifact kind: ${String(n.kind)}.`)}}r(b,"validateInputArtifactsForModel");function Be(t){if(b(t.inputArtifacts??[],t),t.agentId!==void 0&&t.sessionId!==void 0)throw new Error("enqueueWithArtifacts accepts either agentId or sessionId, not both.");if(t.sessionId!==void 0&&t.sessionId.trim().length===0)throw new Error("enqueueWithArtifacts sessionId must not be empty.");let e=t.agentId??(t.sessionId!==void 0?A(t.sessionId,"/root"):x());return h().enqueue({priority:t.priority??"user",mode:"prompt",content:t.content,agentId:e,inputArtifacts:t.inputArtifacts})}r(Be,"enqueueWithArtifacts");export{E as a,h as b,ee as c,A as d,te as e,x as f,ie as g,N as h,$ as i,re as j,u as k,p as l,C as m,U as n,ae as o,se as p,de as q,K as r,L as s,k as t,G as u,ge as v,V as w,W as x,De as y,Pe as z,T as A,y as B,ve as C,P as D,b as E,Be as F};
@@ -0,0 +1,2 @@
1
+ // @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
2
+ import{a}from"./chunk-HORNWBYR.js";import"./chunk-2MQPVY6P.js";import"./chunk-TGCG7U2W.js";import"./chunk-XSA37BVM.js";import"./chunk-IQT4RPCE.js";import"./chunk-ONUPGMER.js";export{a as loadCompactionConfig};
@@ -1,5 +1,5 @@
1
1
  // @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
2
- import"./chunk-TGMBHGZO.js";import"./chunk-SMT2JSM3.js";import"./chunk-OSF3H4RR.js";import"./chunk-OD6LVXU6.js";import"./chunk-IDCGNQ4H.js";import"./chunk-PXKSE54E.js";import{dc as a,ic as i,pc as l,uc as c}from"./chunk-7FJNLJLF.js";import"./chunk-D3T24FJW.js";import"./chunk-VWSLC2WO.js";import"./chunk-Y3AMP22L.js";import"./chunk-COQYLD4U.js";import"./chunk-EI4JBQKL.js";import{a as n}from"./chunk-ONUPGMER.js";var r=null;function y(e){r=e}n(y,"bindAskUserForConstruction");function p(e){return e.content?.capabilities?.tools??[]}n(p,"readDeclaredTools");var m=n(async e=>{if(!r)return"reject";let t=p(e),o=t.length>0?t.join(", "):"<none>";return await r({question:`Activate constructed tool ${e.name}@${e.version}?
2
+ import"./chunk-AOENDSVN.js";import"./chunk-FNW2XUL5.js";import"./chunk-3DD4QEBH.js";import"./chunk-HV2GMZUZ.js";import"./chunk-EH7AOMJ7.js";import{Cc as l,Hc as c,qc as a,vc as i}from"./chunk-OAMKECRG.js";import"./chunk-27QLRH3D.js";import"./chunk-FSXI4MAV.js";import"./chunk-2MQPVY6P.js";import"./chunk-TGCG7U2W.js";import"./chunk-XSA37BVM.js";import"./chunk-IQT4RPCE.js";import{a as n}from"./chunk-ONUPGMER.js";var r=null;function y(e){r=e}n(y,"bindAskUserForConstruction");function p(e){return e.content?.capabilities?.tools??[]}n(p,"readDeclaredTools");var m=n(async e=>{if(!r)return"reject";let t=p(e),o=t.length>0?t.join(", "):"<none>";return await r({question:`Activate constructed tool ${e.name}@${e.version}?
3
3
  It declares capabilities.tools = [${o}].`,allowCustomInput:!1,options:[{label:"Approve \u2014 register and make callable",description:"The tool will be added to the active tool registry and the LLM can invoke it on the next turn.",value:"approve"},{label:"Reject \u2014 do not register",description:"The artifact stays staged on disk; rerun activate_tool to retry.",value:"reject"}]})==="approve"?"approve":"reject"},"replConstructionPolicy"),v=n(async e=>{if(!r)return"reject";let t=e.llmSummary.flaggedConcerns.length>0?e.llmSummary.flaggedConcerns.map(u=>` \u2022 ${u}`).join(`
4
4
  `):" \u2022 <none>",o=e.prevContent.instructions??"<no instructions>",s=e.nextContent.instructions??"<no instructions>",d=[`Self-modify activation: ${e.agentName}@${e.fromVersion} \u2192 ${e.toVersion}`,"",`LLM diff summary (severity=${e.llmSummary.severity}):`,` ${e.llmSummary.summary}`,"","Flagged concerns:",t,"",`Budget remaining (after approve): ${e.budgetRemaining-1}/${e.budgetLimit}`,"","\u2500\u2500 Previous instructions \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500",o,"\u2500\u2500 Proposed instructions \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500",s,"\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500","","The LLM summary is advisory \u2014 read the proposed instructions above before approving."].join(`
5
5
  `);return await r({question:d,allowCustomInput:!1,options:[{label:"Approve \u2014 activate the new version on the next run",description:"Resolver swap is deferred to the next Runner.run boundary so the in-flight conversation keeps the prior reference.",value:"approve"},{label:"Reject \u2014 stay on the previous version",description:"Budget is not consumed on rejection; the staged version is left on disk for diff inspection.",value:"reject"}]})==="approve"?"approve":"reject"},"replSelfModifyAskUser");async function h(e){a({cwd:e,policy:m,selfModifyAskUser:v});let t=await i();await c();let o=await l({cwd:e});return{loaded:t.loaded,failed:t.failed,tampered:t.tampered,markdownLoaded:o.loaded,markdownFailures:o.failed}}n(h,"bootstrapConstructionRuntime");export{y as bindAskUserForConstruction,h as bootstrapConstructionRuntime};
@@ -0,0 +1,2 @@
1
+ // @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
2
+ import{$,$a,A,Aa,B,Ba,C,Ca,D,Da,E,Ea,F,Fa,G,Ga,H,Ha,I,Ia,J,Ja,K,Ka,L,La,M,Ma,N,Na,O,Oa,P,Pa,Q,Qa,R,Ra,S,Sa,T,Ta,U,Ua,V,Va,W,Wa,X,Xa,Y,Ya,Z,Za,_,_a,a,aa,ab,b,ba,bb,c,ca,cb,d,da,db,e,ea,eb,f,fa,fb,g,ga,gb,h,ha,i,ia,j,ja,k,ka,l,la,m,ma,n,na,o,oa,p,pa,q,qa,r,ra,s,sa,t,ta,u,ua,v,va,w,wa,x,xa,y,ya,z,za}from"./chunk-FSXI4MAV.js";import"./chunk-ONUPGMER.js";export{Za as DEFAULT_COST_RATES,l as KODAX_API_MIN_INTERVAL,j as KODAX_CAPPED_MAX_OUTPUT_TOKENS,ma as KODAX_DEFAULT_PROVIDER,x as KODAX_DEFAULT_THINKING_BUDGETS,k as KODAX_ESCALATED_MAX_OUTPUT_TOKENS,i as KODAX_MAX_TOKENS,la as KODAX_PROVIDERS,ka as KODAX_PROVIDER_SNAPSHOTS,v as KODAX_REASONING_MODE_SEQUENCE,y as KODAX_REASONING_SAFETY_RESERVE,w as KODAX_STABLE_EFFORT_INTENTS,fa as KodaXAcpProvider,da as KodaXAnthropicCompatProvider,V as KodaXBaseProvider,d as KodaXError,g as KodaXNetworkError,ea as KodaXOpenAICompatProvider,e as KodaXProviderError,f as KodaXRateLimitError,h as KodaXToolCallIdError,P as WORKFLOW_MAX_CONCURRENCY_ABSOLUTE,O as WORKFLOW_MAX_CONCURRENCY_DEFAULT,s as addRejectedEffort,$a as calculateCost,p as capabilityCacheKey,K as clampThinkingBudget,X as classifyStopReason,_ as classifyVerifyError,Oa as clearRuntimeModelProviders,ab as createCostTracker,za as createCustomProvider,E as effortToLegacyReasoningMode,N as extractHeadersFromError,eb as formatCost,fb as formatCostReport,Ra as getAvailableProviderNames,ga as getCodexCliDefaultModel,ia as getCodexCliKnownModels,_a as getCostRate,Ha as getCustomModelCapabilities,Ba as getCustomProvider,Ea as getCustomProviderList,Ga as getCustomProviderModelDescriptors,Fa as getCustomProviderModels,Da as getCustomProviderNames,I as getDefaultThinkingDepthForMode,ha as getGeminiCliDefaultModel,ja as getGeminiCliKnownModels,wa as getModelCapabilities,na as getProvider,ra as getProviderConfiguredCapabilityProfile,qa as getProviderConfiguredReasoningCapability,Sa as getProviderCredentialEnvironmentNames,sa as getProviderList,pa as getProviderModel,va as getProviderModelDescriptors,ta as getProviderModels,z as getReasoningCapability,r as getRejectedEfforts,S as getRunScopedConfig,Ka as getRuntimeModelProvider,Na as getRuntimeModelProviderCredentialEnvironmentNames,Ma as getRuntimeModelProviderNames,b as getScopedProviderCredential,db as getSummary,$ as insertCacheBoundary,aa as isCacheBoundary,Y as isCleanStop,Ca as isCustomProviderName,Qa as isKnownProvider,oa as isProviderConfigured,ua as isProviderName,A as isReasoningEnabled,La as isRuntimeModelProviderName,Va as listAllModelCapabilities,xa as listBuiltinModelCapabilities,Ia as listCustomProviderModelCapabilities,Xa as listProviderModels,ba as lowerCacheBoundaries,L as mapDepthToOpenAIReasoningEffort,D as mapLegacyReasoningModeToEffortIntent,q as narrowReasoningProfile,U as normalizeCapabilityProfile,C as normalizeReasoningEffortValue,B as normalizeReasoningRequest,F as parseReasoningEffortEnv,M as parseRetryAfter,n as parseTimeoutSecEnvMs,W as parseToolInputWithSalvage,bb as recordRetry,cb as recordUsage,c as redactScopedProviderCredential,Aa as registerCustomProviders,Ja as registerModelProvider,t as removeCacheEntry,o as resolveLlmTimeoutConfig,Ua as resolveModelCapabilities,T as resolvePromptCacheDisabled,Pa as resolveProvider,Ta as resolveProviderModelDescriptors,G as resolveReasoningEffort,H as resolveReasoningEffortForModelSwitch,J as resolveThinkingBudget,Ya as resolveWireEffort,Q as resolveWorkflowMaxConcurrency,Z as runVerifyCredential,a as runWithProviderCredential,R as runWithScopedConfig,u as sanitizeCapabilityCache,gb as sideQuery,ca as stripCacheBoundaries,m as timeoutSecToMs,ya as validateCustomProviderConfig,Wa as verifyProviderCredential};
@@ -0,0 +1,2 @@
1
+ // @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
2
+ import{$ as Yh,A as xh,Aa as xi,B as yh,Ba as yi,C as zh,Ca as zi,D as Ah,Da as Ai,E as Bh,Ea as Bi,F as Ch,Fa as Ci,G as Dh,Ga as Di,H as Eh,Ha as Ei,I as Fh,Ia as Fi,J as Gh,Ja as Gi,K as Hh,Ka as Hi,L as Ih,La as Ii,M as Jh,Ma as Ji,N as Kh,Na as Ki,O as Lh,Oa as Li,P as Mh,Pa as Mi,Q as Nh,R as Oh,S as Ph,T as Qh,U as Rh,V as Sh,W as Th,X as Uh,Y as Vh,Z as Wh,_ as Xh,a as Lb,aa as Zh,b as Mb,ba as _h,c as Nb,ca as $h,d as ah,da as ai,e as bh,ea as bi,f as ch,fa as ci,g as dh,ga as di,h as eh,ha as ei,i as fh,ia as fi,j as gh,ja as gi,k as hh,ka as hi,l as ih,la as ii,m as jh,ma as ji,n as kh,na as ki,o as lh,oa as li,p as mh,pa as mi,q as nh,qa as ni,r as oh,ra as oi,s as ph,sa as pi,t as qh,ta as qi,u as rh,ua as ri,v as sh,va as si,w as th,wa as ti,x as uh,xa as ui,y as vh,ya as vi,z as wh,za as wi}from"./chunk-AOENDSVN.js";import{a as dg,b as eg,c as fg,d as gg,e as hg,f as ig,g as jg,h as kg,i as lg,j as Wg}from"./chunk-FNW2XUL5.js";import{A as Mg,B as Ng,C as Og,D as Pg,E as Qg,F as Rg,G as Sg,H as Tg,I as Ug,J as Vg,a as mg,b as ng,c as og,d as pg,e as qg,f as rg,g as sg,h as tg,i as ug,j as vg,k as wg,l as xg,m as yg,n as zg,o as Ag,p as Bg,q as Cg,r as Dg,s as Eg,t as Fg,u as Gg,v as Hg,w as Ig,x as Jg,y as Kg,z as Lg}from"./chunk-3DD4QEBH.js";import{A as wf,B as xf,C as yf,D as zf,E as Af,F as Bf,G as Cf,Ga as Xg,H as Df,Ha as Yg,K as Ef,L as Ff,M as Gf,N as Hf,O as If,Oa as Zg,P as Jf,Pa as _g,Q as Kf,Ra as $g,V as Lf,W as Mf,X as Nf,Y as Of,Z as Pf,a as $,b as Ob,ba as Qf,c as Pb,ca as Rf,d as df,da as Sf,e as ef,ea as Tf,f as ff,g as gf,h as hf,ha as Uf,i as jf,k as nf,l as of,m as pf,n as qf,o as rf,p as sf,q as tf,v as uf,w as vf}from"./chunk-HV2GMZUZ.js";import{a as cg}from"./chunk-EH7AOMJ7.js";import{$ as kc,$a as ad,$b as Rd,$c as Me,A as ac,Aa as Ec,Ab as vd,Ac as qe,B as bc,Ba as Fc,Bb as wd,Bc as re,Ca as Gc,Cb as xd,Cc as se,Da as Hc,Db as yd,Dc as te,Ea as Ic,Eb as zd,Ec as ue,Fa as Jc,Fb as Ad,Fc as ve,Ga as Kc,Gc as we,Hc as xe,I as cc,Ib as Bd,Ic as ye,Id as Vf,J as dc,Ja as Lc,Jc as ze,Jd as Wf,K as ec,Ka as Mc,Kc as Ae,Kd as Xf,L as fc,La as Nc,Lc as Be,Ld as Yf,M as gc,Ma as Oc,Mb as Cd,Mc as Ce,Md as Zf,N as hc,Na as Pc,Nb as Dd,Nc as De,Nd as _f,Oa as Qc,Ob as Ed,Oc as Ee,Pa as Rc,Pb as Fd,Qb as Gd,Ra as Sc,Rb as Hd,Sa as Tc,Sb as Id,Ta as Uc,Tb as Jd,Ua as Vc,Ub as Kd,Uc as Fe,Va as Wc,Vb as Ld,Vc as Ge,Vd as $f,Wa as Xc,Wb as Md,Wc as He,Wd as ag,Xa as Yc,Xb as Nd,Xc as Ie,Xd as bg,Ya as Zc,Yb as Od,Yc as Je,Z as ic,Za as _c,Zb as Pd,Zc as Ke,_ as jc,_a as $c,_b as Qd,_c as Le,a as aa,aa as lc,ab as bd,ac as Sd,ad as Ne,b as ba,ba as mc,bb as cd,bc as Td,bd as Oe,c as Kb,cb as dd,cc as Ud,cd as Pe,db as ed,dc as Vd,dd as Qe,eb as fd,ec as Wd,ed as Re,fb as gd,fc as Xd,fd as Se,ga as nc,gb as hd,gc as Yd,gd as Te,hb as id,hc as Zd,hd as Ue,i as Qb,ia as oc,ib as jd,ic as _d,id as Ve,j as Rb,jb as kd,jc as $d,jd as We,ka as pc,kb as ld,kc as ae,la as qc,lc as be,ld as Xe,ma as rc,mc as ce,md as Ye,na as sc,nc as de,nd as Ze,oa as tc,ob as md,oc as ee,od as _e,pb as nd,pc as fe,pd as $e,q as Sb,qa as uc,qb as od,qc as ge,qd as af,r as Tb,ra as vc,rb as pd,rc as he,rd as bf,s as Ub,sa as wc,sc as ie,sd as cf,t as Vb,ta as xc,tc as je,td as kf,u as Wb,ua as yc,uc as ke,ud as lf,v as Xb,va as zc,vb as qd,vc as le,vd as mf,w as Yb,wa as Ac,wb as rd,wc as me,x as Zb,xa as Bc,xb as sd,xc as ne,y as _b,ya as Cc,yb as td,yc as oe,z as $b,za as Dc,zb as ud,zc as pe}from"./chunk-OAMKECRG.js";import"./chunk-27QLRH3D.js";import{Aa as G,Ba as H,C as h,Ca as I,D as i,Da as J,E as j,Ea as K,F as k,Fa as L,G as l,Ga as M,H as m,Ha as N,Ia as O,Ja as P,Ka as Q,La as R,Ma as S,Oa as T,Pa as U,Qa as V,Ra as W,Ta as X,Ua as Y,V as n,Va as Z,Ya as _,d as a,da as o,e as b,ea as p,f as c,ka as q,la as r,m as d,ma as s,n as e,na as t,oa as u,pa as v,qa as w,ra as x,sa as y,ta as z,ua as A,v as f,va as B,w as g,wa as C,xa as D,ya as E,za as F}from"./chunk-FSXI4MAV.js";import{$b as Wa,Cc as tb,Dc as ub,Gc as vb,Hc as wb,a as ca,ac as Xa,b as da,bc as Ya,c as ea,cc as Za,d as fa,dc as _a,e as ga,ec as $a,f as ha,fc as ab,gc as bb,h as ia,hc as cb,i as ja,ic as db,id as xb,j as ka,jc as eb,jd as yb,kc as fb,kd as zb,lc as gb,ld as Ab,mc as hb,md as Bb,nc as ib,nd as Cb,oc as jb,od as Db,pc as kb,q as na,qa as ra,qb as Ua,qc as lb,r as oa,rb as Va,rc as mb,rd as Eb,s as pa,sc as nb,sd as Fb,t as qa,ta as sa,tc as ob,td as Gb,uc as pb,ud as Hb,vd as Ib,wc as qb,wd as Jb,xc as rb,yc as sb}from"./chunk-2MQPVY6P.js";import{a as la,b as ma,f as ta,g as ua,h as va,k as wa}from"./chunk-TGCG7U2W.js";import{A as Oa,B as Pa,C as Qa,D as Ra,E as Sa,F as Ta,d as xa,k as ya,l as za,m as Aa,n as Ba,o as Ca,p as Da,q as Ea,r as Fa,s as Ga,t as Ha,u as Ia,v as Ja,w as Ka,x as La,y as Ma,z as Na}from"./chunk-XSA37BVM.js";import"./chunk-IQT4RPCE.js";import"./chunk-ONUPGMER.js";export{yf as ALWAYS_RESIDENT_TOOL_NAMES,ei as AUTO_MODE_DENIAL_CONSECUTIVE_THRESHOLD,fi as AUTO_MODE_DENIAL_CUMULATIVE_THRESHOLD,zi as BASH_POLICY_SPEC,oh as BLOCKER_REQUIRED_CONSECUTIVE_TURNS,ki as BREAKER_ERROR_THRESHOLD,li as BREAKER_WINDOW_MS,xg as BUILTIN_WORKFLOWS,Rb as CANCELLED_TOOL_RESULT_MESSAGE,Qb as CANCELLED_TOOL_RESULT_PREFIX,Th as CODING_AGENT_MARKER,gh as CODING_INVARIANTS,Xg as CODING_SUMMARY_PROMPT,Yg as CODING_UPDATE_SUMMARY_PROMPT,Rd as CapabilityDeniedError,ih as Client,$f as CodingActorSession,Ae as CombinedExtensionRuntime,Sd as ConstructionManifestError,Zh as DEFAULT_CLASSIFIER_TIMEOUT_MS,Zg as DEFAULT_CODING_AGENT_NAME,Ih as DEFAULT_DANGEROUS_PATTERNS,Pd as DEFAULT_HANDLER_TIMEOUT_MS,Ef as DEFAULT_RESILIENCE_CONFIG,Hh as DEFAULT_SAFE_PATTERNS,ae as DEFAULT_SELF_MODIFY_BUDGET,vi as DEFAULT_SPECULATIVE_WINDOW_MS,Tb as DEFAULT_TOOL_OUTPUT_MAX_BYTES,Sb as DEFAULT_TOOL_OUTPUT_MAX_LINES,eg as DEFAULT_WORKFLOW_GENERATION_TIMEOUT_MS,qa as DefaultSummaryCompaction,Qh as EMIT_VERDICT_TOOL_NAME,Ob as ErrorCategory,pg as FINDING_VERIFICATION_OUTPUT_SCHEMA,hd as GENERATOR_AGENT_NAME,za as ImageResizeError,ja as KODAX_API_MIN_INTERVAL,s as KODAX_DEFAULT_PROVIDER,da as KODAX_DEFAULT_TIMEOUT,Qa as KODAX_FILE_MEDIA_TYPES,ea as KODAX_HARD_TIMEOUT,Oa as KODAX_IMAGE_MEDIA_TYPES,ha as KODAX_MAX_INCOMPLETE_RETRIES,fa as KODAX_MAX_RETRIES,ca as KODAX_MAX_TOKENS,r as KODAX_PROVIDERS,q as KODAX_PROVIDER_SNAPSHOTS,f as KODAX_REASONING_MODE_SEQUENCE,ga as KODAX_RETRY_BASE_DELAY,g as KODAX_STABLE_EFFORT_INTENTS,ia as KODAX_STAGGER_DELAY,Fe as KODAX_TOOLS,dc as KODAX_UNDERLYING_CAPABILITY_TOPICS,Pa as KODAX_VIDEO_MEDIA_TYPES,o as KodaXAnthropicCompatProvider,n as KodaXBaseProvider,ih as KodaXClient,a as KodaXError,ze as KodaXExtensionRuntime,ya as KodaXMediaError,p as KodaXOpenAICompatProvider,b as KodaXProviderError,c as KodaXRateLimitError,Mb as KodaXSessionError,Nb as KodaXTerminalError,Lb as KodaXToolError,qb as LINEAGE_ENTRY_TYPES,Xf as LSP_SERVERS,sb as LineageCompaction,rb as LineageExtension,Yf as LspService,ec as MANUAL_REGISTRY,cc as MANUAL_TOPIC_IDS,Fa as MAX_DIMENSION,Eh as MEMORY_INTERVENTION_SELECTOR_PROMPT,Fh as MEMORY_INTERVENTION_SELECTOR_SHA256,bb as McpAuthRequiredError,nb as McpCapabilityProvider,ab as McpExpiredSessionError,ob as McpManager,mb as McpServerRuntime,Ka as PASTE_TMP_DIR_ENV,La as PASTE_TMP_TTL_MS,gd as PLANNER_AGENT_NAME,ka as PROMISE_PATTERN,ef as PROMPT_SECTION_REGISTRY,Sh as PROTOCOL_EMITTER_TOOLS,Kf as ProviderRecoveryCoordinator,Ub as READ_DEFAULT_LIMIT,Wb as READ_MAX_LINE_CHARS,Vb as READ_PREFLIGHT_SIZE_BYTES,ve as REPO_EXPLORER_AGENT_NAME,we as REPO_EXPLORER_TOOL_NAMES,sa as Runner,og as SCOPED_REVIEW_OUTPUT_SCHEMA,fd as SCOUT_AGENT_NAME,Ji as SCOUT_THEN_AUTHOR_PROMPT_LINES,of as SELF_KNOWLEDGE_ROUTING_RULE,df as SYSTEM_PROMPT,Og as SYSTEM_WORKFLOW_LIMITS,If as StableBoundaryTracker,Ga as TARGET_RAW_SIZE_BYTES,kd as TASK_ENGINE_ROLE_AGENTS,Uh as TOOL_RESULT_TRUNCATION_GUARDRAIL_NAME,Ci as TRACING_ENV,id as WORKER_AGENT_NAME,dg as WORKFLOW_GENERATION_SYSTEM_PROMPT,he as _resetRuntimeForTesting,ke as activate,xa as actorQueueId,zc as analyzeChangedScope,_d as appendAuditEntry,Cb as appendSessionLineageLabel,vd as applyAccountingDelta,sg as applyFindingVerification,Db as applySessionCompaction,oc as applyToolResultGuardrail,Jb as archiveOldIslands,Li as authorWorkflowViaWorker,ji as autoModeDenialShouldFallback,si as bashSignalCollector,Di as bootstrapTracing,ch as boundedRevise,oi as breakerShouldFallback,dh as budgetCeiling,Pg as buildApprovalSummary,yd as buildBlockedGoal,pf as buildCapabilityContextSections,Wh as buildClassifierPrompt,zd as buildCompleteGoal,ud as buildCreatedGoal,Rf as buildFallbackRoutingDecision,sh as buildGoalRuntimeBinding,lb as buildInitializeCapabilities,Xd as buildLlmReviewPrompt,gc as buildManualToolDescription,xh as buildMcpReverseCapabilities,wd as buildPausedGoal,tf as buildPromptMessageContent,jf as buildPromptSnapshot,Lf as buildProviderCapabilitySnapshot,Sf as buildProviderPolicyHintsForDecision,Mf as buildProviderPolicyPromptNotes,yc as buildRepoIntelligenceContext,Lc as buildRepoIntelligenceIndex,vc as buildRepoOverview,xd as buildResumedGoal,vg as buildScopedReviewFinalPrompt,tg as buildScopedReviewPrimaryPrompt,ug as buildScopedReviewVerificationPrompt,Ki as buildScoutThenAuthorPrompt,nf as buildSelfKnowledgeRoutingRule,Hb as buildSessionTree,rf as buildSystemPrompt,qf as buildSystemPromptSnapshot,af as buildToolResultBudget,bf as buildToolResultBudgetFromUsage,Cd as buildToolSearchIndex,Lg as buildWorkflowCostReport,ig as buildWorkflowGenerationSkillContext,hg as buildWorkflowGenerationUserPrompt,ri as checkAbsoluteDeny,sf as checkIncompleteToolCalls,Uf as checkPromiseSignal,cf as clampToolResultPolicyToBudget,Qg as clampWorkflowLimits,_h as classify,Kh as classifyBashCommand,Pb as classifyError,uc as classifyFileCategory,Gf as classifyResilienceError,Ye as cleanupExpiredToolOutputs,Va as cleanupIncompleteToolCalls,Ze as cleanupUnreferencedToolOutputs,T as clearRuntimeModelProviders,Kb as clearShellExecutionEnvironmentCache,ui as collectAllSignals,Be as combineExtensionRuntimes,Mh as computeInputSignature,$h as computeRulesFingerprint,ge as configureRuntime,Cf as consumeCompactionCooldown,_c as convertCapabilityReadResult,Zc as convertProviderSearchResults,Ib as countActiveLineageMessages,ma as countTokens,na as createAgent,gi as createAutoModeDenialTracker,yi as createAutoModeToolGuardrail,Jh as createBashClassifierConfig,Bi as createBashPrefixExtractor,Ne as createBuiltinToolDefinition,mi as createCircuitBreaker,Gh as createCodingMemoryInterventionRunner,mg as createCodingWorkflowBackend,Af as createCompactionAntiThrashState,Td as createCtxProxy,F as createCustomProvider,_g as createDefaultCodingAgent,Lh as createDenialTracker,Ce as createExtensionRuntime,bg as createExternalActorTurnExecutor,Da as createFileArtifactFromPath,oa as createHandoff,Ca as createImageArtifactFromPath,pa as createInMemorySession,Ah as createKodaXTaskRunner,ag as createLocalCodingActorControl,Xa as createMcpCapabilityId,pb as createMcpManager,cb as createMcpTransport,ff as createPromptSection,Tf as createReasoningPlan,Ng as createRunGraphWriter,xf as createRuntimeContextBudgetSnapshot,ah as createSessionControl,xb as createSessionLineage,Vh as createToolResultTruncationGuardrail,Ea as createVideoArtifactFromPath,Fi as createWorkflowLifecycleController,Ii as createWorkflowPatternTemplateModule,Ug as createWorkflowRunManager,kh as decideWorkflowInvocation,Kd as dedupeExtensionPathsByEntrypoint,Wa as defaultMcpCacheDir,Qd as defaultPolicy,Gg as deleteSavedWorkflow,fe as disableSelfModify,gb as discoverAuthorizationServerMetadata,Od as discoverDefaultExtensions,Nd as discoverExtensionsInDirectory,Md as discoverExtensionsInDirectoryDetailed,ue as discoverMarkdownAgents,hb as discoverOAuthEndpoints,fb as discoverProtectedResourceMetadata,Ag as discoverSavedWorkflows,nd as drainPendingSwaps,j as effortToLegacyReasoningMode,Rh as emitVerdict,Sg as emitWorkflowAgentDigest,Ta as enqueueWithArtifacts,xe as ensureBuiltinRepoExplorerAgent,la as estimateTokens,wf as estimateToolSchemaTokens,Nf as evaluateProviderPolicy,Ld as excludeExtensionPathsByEntrypoint,Fd as exec,Xe as executeTool,vb as extractArtifactLedger,Ai as extractCommandPrefix,vf as extractComparableUserMessageText,Yc as extractHtmlTitle,eb as extractInsufficientScope,uf as extractPromptComparableText,db as extractResourceMetadataUrl,ub as extractTitleFromMessages,ti as fileSignalCollector,ad as finalizeRetrievalResult,qe as findByVersion,Eb as findPreviousUserEntryId,Gb as forkSessionLineage,mf as formatAgentsForPrompt,Ch as formatParallelDispatchResult,Xb as formatSize,tb as generateSessionId,kg as generateWorkflow,lg as generateWorkflowFromOptions,Ee as getActiveExtensionRuntime,ua as getAgentConfigHome,va as getAgentConfigPath,Pe as getAllRegisteredTools,wa as getAppDataDir,W as getAvailableProviderNames,Me as getBuiltinRegisteredToolDefinition,Le as getBuiltinToolDefinition,yg as getBuiltinWorkflow,N as getCustomModelCapabilities,H as getCustomProvider,K as getCustomProviderList,M as getCustomProviderModelDescriptors,L as getCustomProviderModels,J as getCustomProviderNames,Id as getDefaultExtensionDirectory,Zf as getDefaultLspService,Vg as getDefaultWorkflowRunManager,Ph as getDenialContext,Qc as getImpactEstimate,kf as getKodaxGlobalDir,$a as getMcpCachePaths,C as getModelCapabilities,Ra as getModelInputCapabilities,Nc as getModuleContext,Pc as getProcessContext,t as getProvider,x as getProviderConfiguredCapabilityProfile,w as getProviderConfiguredReasoningCapability,y as getProviderList,v as getProviderModel,B as getProviderModelDescriptors,z as getProviderModels,Je as getRegisteredToolDefinition,Mc as getRepoIntelligenceIndex,wc as getRepoOverview,Rc as getRepoRoutingSignals,Ue as getRequiredToolParams,Q as getRuntimeModelProvider,S as getRuntimeModelProviderNames,yb as getSessionLineagePath,zb as getSessionMessagesFromLineage,Oc as getSymbolContext,He as getTool,Ie as getToolDefinition,Ke as getToolRegistrations,nc as getToolResultPolicy,Hi as getWorkflowPatternTemplate,rd as goalTokenDelta,jh as hasExplicitNaturalLanguageWorkflowIntent,md as hasPendingSwap,Aa as inferImageMediaType,Qf as inferTaskType,Ba as inferVideoMediaType,lc as inspectEditFailure,Kc as inspectRepoIntelligenceRuntime,I as isCustomProviderName,Oh as isDeniedRecently,V as isKnownProvider,Bh as isParallelDispatchDirective,u as isProviderConfigured,A as isProviderName,R as isRuntimeModelProviderName,Hf as isSessionRecoveryCandidateError,Hd as isSupportedExtensionModulePath,Re as isToolFileMutation,Te as isToolMutation,Se as isToolNetworkRead,Qe as isToolPlanModeAllowed,Ad as isValidTokenBudget,Vf as languageIdForPath,re as listAll,Z as listAllModelCapabilities,ne as listArtifacts,D as listBuiltinModelCapabilities,Oe as listBuiltinToolDefinitions,zg as listBuiltinWorkflows,od as listCodingDispatchableAgents,pe as listConstructed,O as listCustomProviderModelCapabilities,We as listToolDefinitions,Ve as listTools,Gi as listWorkflowPatternTemplates,lf as loadAgentsFiles,se as loadAgentsFromMarkdown,di as loadAutoRules,Ig as loadGeneratedWorkflowFromRun,Ud as loadHandler,te as loadMarkdownAgentScope,Dg as loadSavedWorkflow,Cg as loadSavedWorkflowCapsule,kb as loadValidToken,qd as makeDisabledGoalToolsContext,i as mapLegacyReasoningModeToEffortIntent,$e as maybeRunReferenceAwareToolOutputGc,_e as maybeRunToolOutputGc,wh as mcpRootsFromWorkspace,wb as mergeArtifactLedger,rg as mergeScopedReviewResults,$ as normalizeKodaXAgentMode,Ya as normalizeMcpCapabilityId,Ha as normalizePastedImage,h as normalizeReasoningEffortValue,qg as normalizeScopedReviewResult,aa as normalizeShellExecutionContract,Bg as normalizeWorkflowModule,gf as orderPromptSections,ng as parallelInvestigation,ci as parseAutoRules,Xh as parseClassifierOutput,kc as parseEditToolError,Yd as parseLlmReviewVerdict,Za as parseMcpCapabilityId,pi as parseModelSpec,k as parseReasoningEffortEnv,e as parseTimeoutSecEnvMs,Ed as parseToolSearchQuery,jg as parseWorkflowGeneration,jb as performOAuthLogin,Ma as persistImageAsBlock,ac as persistToolOutput,zf as planToolExposure,Kg as preflightWorkflowCapsule,Sc as prewarmRepoIntelligenceCaches,cg as providerResilienceConfigFromTimeouts,Na as prunePasteTmpDir,Ja as readAndNormalizeClipboardImage,oe as readArtifact,$d as readAuditEntries,be as readBudget,Ia as readClipboardImage,ee as readDisableState,wi as readSpeculativeWindowFromEnv,ai as readTrustState,Pf as reasoningModeToDepth,Jf as reconstructMessagesWithToolGuard,ii as recordAutoModeAllow,hi as recordAutoModeBlock,mh as recordBlockerAttempt,ni as recordBreakerError,Df as recordCompactionSavings,Nh as recordDenial,hh as registerCodingInvariants,uh as registerConfiguredMcpCapabilityProvider,G as registerCustomProviders,P as registerModelProvider,ib as registerOAuthClient,yh as registerOfficialSandboxExtension,ra as registerPresetDispatcher,Ge as registerTool,le as rehydrateActiveArtifacts,ce as remainingSelfModifyBudget,Fg as renameSavedWorkflow,Ac as renderChangedScope,Hc as renderImpactEstimate,Ec as renderModuleContext,Gc as renderProcessContext,hf as renderPromptSections,xc as renderRepoOverview,$c as renderRetrievalResult,Fc as renderSymbolContext,vh as replaceConfiguredMcpCapabilityProvider,Hg as replaceSavedWorkflow,Wf as reportLspDiagnostics,nh as resetBlockerCounter,de as resetBudget,qi as resolveClassifierModel,pd as resolveCodingDispatchableAgent,ld as resolveConstructedAgent,Jd as resolveExtensionEntrypoint,fc as resolveKodaXManual,Y as resolveModelCapabilities,U as resolveProvider,X as resolveProviderModelDescriptors,l as resolveReasoningEffort,m as resolveReasoningEffortForModelSwitch,Of as resolveReasoningMode,Jc as resolveRepoIntelligenceMode,Ic as resolveRepoIntelligenceRuntimeConfig,Ff as resolveResilienceConfig,Ab as resolveSessionLineageTarget,Bd as resolveToolBridgeTarget,eh as resolveToolCapability,$b as resolveToolOutputDir,_ as resolveWireEffort,fg as resolveWorkflowGenerationTimeoutMs,Ei as resolveWorkflowIdentity,me as revoke,Fb as rewindSessionLineage,ye as rollbackSelfModify,Vd as runAstRules,$g as runKodaX,Zd as runLlmReview,th as runManagedTask,zh as runOrchestration,Tg as runWorkflowFromOptions,Rg as runWorkflowModule,Mg as safeWorkflowArtifactName,Eg as saveGeneratedWorkflow,Jg as saveGeneratedWorkflowFromRun,wg as scopedReview,_a as searchMcpCatalog,Dd as searchToolIndex,De as setActiveExtensionRuntime,ta as setAgentConfigHome,Bb as setSessionLineageActiveEntry,ba as shellExecutionContractFingerprint,td as shouldFlipBudgetLimited,Bf as shouldSkipLlmCompaction,_f as shutdownDefaultLspService,xi as speculativeRace,ie as stage,bh as startKodaX,Wg as startManagedWorkflow,Yh as stripAssistantText,Xc as stripHtmlToText,je as testArtifact,d as timeoutSecToMs,tc as toolAskUserQuestion,pc as toolBash,Dc as toolChangedDiff,Cc as toolChangedScope,dd as toolCodeSearch,jc as toolEdit,qc as toolGlob,rc as toolGrep,Wc as toolImpactEstimate,mc as toolInsertAfterAnchor,Tc as toolModuleContext,fh as toolPermission,Vc as toolProcessContext,bc as toolRead,Bc as toolRepoOverview,ed as toolSemanticLookup,Uc as toolSymbolContext,sc as toolUndo,cd as toolWebFetch,bd as toolWebSearch,ic as toolWrite,Yb as truncateHead,_b as truncateLine,Zb as truncateTail,bi as trustProjectRules,sd as turnWallTimeDelta,Ua as validateAndFixToolHistory,E as validateCustomProviderConfig,gg as validateGeneratedWorkflowSource,Sa as validateInputArtifactsForModel,Dh as validateSubtaskIndependence,Wd as validateToolSchemaForProvider,rh as verifyGoalCompletion,Gd as webhook,ph as withGoalBeforeNextTurn,qh as withGoalStopHook,hc as withManualToolBranding,jd as workerAgent,lh as workflowStartOutcomeConsumesTurn,Mi as writeReviewPackets};
@@ -0,0 +1,2 @@
1
+ // @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
2
+ import{j as a}from"./chunk-FNW2XUL5.js";import"./chunk-3DD4QEBH.js";import"./chunk-EH7AOMJ7.js";import"./chunk-OAMKECRG.js";import"./chunk-27QLRH3D.js";import"./chunk-FSXI4MAV.js";import"./chunk-2MQPVY6P.js";import"./chunk-TGCG7U2W.js";import"./chunk-XSA37BVM.js";import"./chunk-IQT4RPCE.js";import"./chunk-ONUPGMER.js";export{a as startManagedWorkflow};
@@ -0,0 +1,2 @@
1
+ // @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
2
+ import{I as a,J as b}from"./chunk-3DD4QEBH.js";import"./chunk-OAMKECRG.js";import"./chunk-27QLRH3D.js";import"./chunk-FSXI4MAV.js";import"./chunk-2MQPVY6P.js";import"./chunk-TGCG7U2W.js";import"./chunk-XSA37BVM.js";import"./chunk-IQT4RPCE.js";import"./chunk-ONUPGMER.js";export{a as createWorkflowRunManager,b as getDefaultWorkflowRunManager};
@@ -1,2 +1,2 @@
1
1
  // @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
2
- import{$ as R,A as q,B as r,C as s,D as t,E as u,F as v,G as w,H as x,I as y,J as z,K as A,L as B,M as C,N as D,O as E,P as F,Q as G,R as H,S as I,T as J,U as K,V as L,W as M,X as N,Y as O,Z as P,_ as Q,aa as S,b as a,ba as T,c as b,ca as U,m as c,n as d,o as e,p as f,q as g,r as h,s as i,t as j,u as k,v as l,w as m,x as n,y as o,z as p}from"./chunk-4PWPNCNK.js";import"./chunk-TGMBHGZO.js";import"./chunk-SMT2JSM3.js";import"./chunk-OSF3H4RR.js";import"./chunk-OD6LVXU6.js";import"./chunk-IDCGNQ4H.js";import"./chunk-PXKSE54E.js";import"./chunk-7FJNLJLF.js";import"./chunk-D3T24FJW.js";import"./chunk-VWSLC2WO.js";import"./chunk-Y3AMP22L.js";import"./chunk-COQYLD4U.js";import"./chunk-EI4JBQKL.js";import"./chunk-ONUPGMER.js";export{a as CONFIG_TEMPLATES,H as KODAX_CONFIG_ENV_BINDINGS,e as KODAX_CONFIG_FILE,c as KODAX_DIR,D as KODAX_EXAMPLE_CONFIG_FILE,E as KODAX_INTEGRATION_EXAMPLE_FILES,d as KODAX_SESSIONS_DIR,k as KODAX_VERSION,f as PREVIEW_MAX_LENGTH,I as applyConfigEnvironment,r as describeProviderCapabilitySummary,y as describeReasoningCapabilityControl,z as describeReasoningExecution,G as ensureExampleConfigFile,F as ensureExampleConfigFiles,S as formatProviderCapabilityDetailLines,R as formatProviderSourceKind,s as formatReasoningCapabilityShort,t as formatReasoningEffortForDisplay,w as formatReasoningEffortStatusLabel,b as getConfigTemplate,Q as getGitRoot,m as getProviderAvailableModels,o as getProviderCapabilityProfile,p as getProviderCapabilitySnapshot,T as getProviderCommonPolicyScenarios,A as getProviderList,l as getProviderModel,q as getProviderPolicyDecision,n as getProviderReasoningCapability,v as getProviderReasoningEffortCycle,u as getProviderReasoningEffortOptions,j as getVersion,g as hydrateProcessEnvFromShell,B as isProviderConfigured,C as loadConfig,J as prepareRuntimeConfig,U as rateLimitedCall,i as registerConfiguredCustomProviders,h as resetShellEnvironmentHydrationForTesting,L as resolveInitialEffortOverride,P as resolvePermissionModeEffort,x as resolveProviderReasoningRuntimeEffort,O as resolveRuntimeEffortSelection,N as resolveRuntimeModelSelection,M as resolveRuntimeProviderSelection,K as saveConfig};
2
+ import{$ as R,A as q,B as r,C as s,D as t,E as u,F as v,G as w,H as x,I as y,J as z,K as A,L as B,M as C,N as D,O as E,P as F,Q as G,R as H,S as I,T as J,U as K,V as L,W as M,X as N,Y as O,Z as P,_ as Q,aa as S,b as a,ba as T,c as b,ca as U,m as c,n as d,o as e,p as f,q as g,r as h,s as i,t as j,u as k,v as l,w as m,x as n,y as o,z as p}from"./chunk-JS2BHGJP.js";import"./chunk-AOENDSVN.js";import"./chunk-FNW2XUL5.js";import"./chunk-3DD4QEBH.js";import"./chunk-HV2GMZUZ.js";import"./chunk-EH7AOMJ7.js";import"./chunk-OAMKECRG.js";import"./chunk-27QLRH3D.js";import"./chunk-FSXI4MAV.js";import"./chunk-2MQPVY6P.js";import"./chunk-TGCG7U2W.js";import"./chunk-XSA37BVM.js";import"./chunk-IQT4RPCE.js";import"./chunk-ONUPGMER.js";export{a as CONFIG_TEMPLATES,H as KODAX_CONFIG_ENV_BINDINGS,e as KODAX_CONFIG_FILE,c as KODAX_DIR,D as KODAX_EXAMPLE_CONFIG_FILE,E as KODAX_INTEGRATION_EXAMPLE_FILES,d as KODAX_SESSIONS_DIR,k as KODAX_VERSION,f as PREVIEW_MAX_LENGTH,I as applyConfigEnvironment,r as describeProviderCapabilitySummary,y as describeReasoningCapabilityControl,z as describeReasoningExecution,G as ensureExampleConfigFile,F as ensureExampleConfigFiles,S as formatProviderCapabilityDetailLines,R as formatProviderSourceKind,s as formatReasoningCapabilityShort,t as formatReasoningEffortForDisplay,w as formatReasoningEffortStatusLabel,b as getConfigTemplate,Q as getGitRoot,m as getProviderAvailableModels,o as getProviderCapabilityProfile,p as getProviderCapabilitySnapshot,T as getProviderCommonPolicyScenarios,A as getProviderList,l as getProviderModel,q as getProviderPolicyDecision,n as getProviderReasoningCapability,v as getProviderReasoningEffortCycle,u as getProviderReasoningEffortOptions,j as getVersion,g as hydrateProcessEnvFromShell,B as isProviderConfigured,C as loadConfig,J as prepareRuntimeConfig,U as rateLimitedCall,i as registerConfiguredCustomProviders,h as resetShellEnvironmentHydrationForTesting,L as resolveInitialEffortOverride,P as resolvePermissionModeEffort,x as resolveProviderReasoningRuntimeEffort,O as resolveRuntimeEffortSelection,N as resolveRuntimeModelSelection,M as resolveRuntimeProviderSelection,K as saveConfig};