@kodax-ai/kodax 0.7.72 → 0.7.74

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 (91) hide show
  1. package/CHANGELOG.md +226 -0
  2. package/README.md +72 -18
  3. package/README_CN.md +55 -14
  4. package/config-templates/config.example.jsonc +7 -0
  5. package/dist/chunks/agent-2ABIG5NW.js +2 -0
  6. package/dist/chunks/argument-completer-C45DEO34.js +2 -0
  7. package/dist/chunks/chunk-5GH3SVI3.js +74 -0
  8. package/dist/chunks/{chunk-SQODXBLX.js → chunk-64M5HOCA.js} +1 -1
  9. package/dist/chunks/{chunk-PKQOEDHJ.js → chunk-7W6KYJU2.js} +224 -230
  10. package/dist/chunks/chunk-C7TZAT3S.js +369 -0
  11. package/dist/chunks/chunk-F7AIEHSS.js +46 -0
  12. package/dist/chunks/{chunk-E27LHEIP.js → chunk-GAFFYJU3.js} +1 -1
  13. package/dist/chunks/chunk-KPGVY6PF.js +321 -0
  14. package/dist/chunks/{chunk-44QXPEEE.js → chunk-MBAPT2R5.js} +1 -1
  15. package/dist/chunks/{chunk-IR5KIK7E.js → chunk-MVCAFD6M.js} +1 -1
  16. package/dist/chunks/chunk-PP53SIIL.js +5 -0
  17. package/dist/chunks/chunk-QH56WEHK.js +2 -0
  18. package/dist/chunks/chunk-UJS7JAO6.js +770 -0
  19. package/dist/chunks/{chunk-MVARIMQV.js → chunk-VK5QTHS6.js} +6 -6
  20. package/dist/chunks/chunk-VPURXE2F.js +427 -0
  21. package/dist/chunks/chunk-XM724XAA.js +329 -0
  22. package/dist/chunks/{chunk-WIBLZK4G.js → chunk-XMP66YWG.js} +11 -4
  23. package/dist/chunks/chunk-XXQLPTAN.js +78 -0
  24. package/dist/chunks/compaction-config-QYCDOW3Q.js +2 -0
  25. package/dist/chunks/{construction-bootstrap-ZJPXUPXQ.js → construction-bootstrap-BKNPJI7O.js} +1 -1
  26. package/dist/chunks/dist-6EK4H7TP.js +2 -0
  27. package/dist/chunks/{dist-GOUP4YVE.js → dist-EVEJAII2.js} +1 -1
  28. package/dist/chunks/host-KS4TJKWQ.js +2 -0
  29. package/dist/chunks/run-manager-L7MKGQNX.js +2 -0
  30. package/dist/chunks/{utils-OTT5CG5J.js → utils-GTJLL4GT.js} +1 -1
  31. package/dist/index.d.ts +17 -16
  32. package/dist/index.js +5 -5
  33. package/dist/kodax_cli.js +1357 -1294
  34. package/dist/provider-capabilities.json +184 -5
  35. package/dist/runtime-worker.js +1277 -1224
  36. package/dist/sdk-a2a.d.ts +11 -10
  37. package/dist/sdk-a2a.js +1 -1
  38. package/dist/sdk-agent.d.ts +110 -62
  39. package/dist/sdk-agent.js +1 -1
  40. package/dist/sdk-coding.d.ts +114 -32
  41. package/dist/sdk-coding.js +1 -1
  42. package/dist/sdk-experimental-memory.d.ts +1 -1
  43. package/dist/sdk-experimental-memory.js +1 -1
  44. package/dist/sdk-llm.d.ts +8 -49
  45. package/dist/sdk-llm.js +1 -1
  46. package/dist/sdk-mcp.js +1 -1
  47. package/dist/sdk-media.d.ts +1 -1
  48. package/dist/sdk-media.js +1 -1
  49. package/dist/sdk-repl.d.ts +153 -24
  50. package/dist/sdk-repl.js +2 -2
  51. package/dist/sdk-runtime.d.ts +238 -19
  52. package/dist/sdk-runtime.js +1 -1
  53. package/dist/sdk-session.d.ts +6 -6
  54. package/dist/sdk-session.js +1 -1
  55. package/dist/sdk-skills.js +1 -1
  56. package/dist/semantic-worker.js +16 -14
  57. package/dist/types-chunks/{base.d-Cz_rwpOi.d.ts → base.d-ChvpaKjZ.d.ts} +1 -1
  58. package/dist/types-chunks/{bash-prefix-extractor.d-CHJO5y94.d.ts → bash-prefix-extractor.d-r1beOESM.d.ts} +50 -14
  59. package/dist/types-chunks/{capability-learning.d-_lR0J4iR.d.ts → capability-learning.d-DPrYxRjF.d.ts} +1 -1
  60. package/dist/types-chunks/{capsule.d-DxtdE-GD.d.ts → capsule.d-zeqV4IQX.d.ts} +11 -3
  61. package/dist/types-chunks/{commands.d-DZxHzH5-.d.ts → commands.d-DUxnK2TU.d.ts} +67 -8
  62. package/dist/types-chunks/{guardrail.d-DlpMnd-Y.d.ts → guardrail.d-CWYD1bdL.d.ts} +2 -1
  63. package/dist/types-chunks/{guardrail.d-auV61_h5.d.ts → guardrail.d-qjuKJZ31.d.ts} +79 -18
  64. package/dist/types-chunks/history-retrieval.d-BKTJIrVd.d.ts +57 -0
  65. package/dist/types-chunks/{public-api.d--IDNJsu1.d.ts → public-api.d-CX4B11qY.d.ts} +19 -5
  66. package/dist/types-chunks/{run-manager.d-Bh50OdVl.d.ts → run-manager.d-B9fEIjZk.d.ts} +1 -1
  67. package/dist/types-chunks/{sdk-session-Cfw6NFu-.d.ts → sdk-session-B0fhAOPa.d.ts} +3 -3
  68. package/dist/types-chunks/{resolver.d-ssgNSlrh.d.ts → side-query.d-DWTMsndP.d.ts} +68 -5
  69. package/dist/types-chunks/{types.d-EqQmHztg.d.ts → types.d-Bm_y6YuM.d.ts} +16 -9
  70. package/dist/types-chunks/{types.d-Cqaw71Ax.d.ts → types.d-CSmF0t0n.d.ts} +6 -5
  71. package/dist/types-chunks/{types.d-CNZgY52F.d.ts → types.d-DEctY20M.d.ts} +10 -3
  72. package/dist/types-chunks/{types.d-DH1mvdcl.d.ts → types.d-sRLugmjy.d.ts} +64 -15
  73. package/dist/types-chunks/{utils.d-gmn3c5U4.d.ts → utils.d-D0wPxz8y.d.ts} +94 -10
  74. package/docs/SDK_EMBEDDER_GUIDE.md +1952 -1573
  75. package/package.json +9 -2
  76. package/dist/chunks/agent-YKGU4USA.js +0 -2
  77. package/dist/chunks/argument-completer-QZETLNAB.js +0 -2
  78. package/dist/chunks/chunk-23X6REO4.js +0 -46
  79. package/dist/chunks/chunk-2RI252RN.js +0 -2
  80. package/dist/chunks/chunk-CLFP6UGU.js +0 -71
  81. package/dist/chunks/chunk-EDZ5KJFT.js +0 -5
  82. package/dist/chunks/chunk-GIK4SGAT.js +0 -364
  83. package/dist/chunks/chunk-GVWPHE23.js +0 -310
  84. package/dist/chunks/chunk-JSDLBXME.js +0 -755
  85. package/dist/chunks/chunk-VDGCGOQH.js +0 -328
  86. package/dist/chunks/chunk-VVE3UM4F.js +0 -410
  87. package/dist/chunks/chunk-ZJIMT5I3.js +0 -78
  88. package/dist/chunks/compaction-config-TWCDFLX6.js +0 -2
  89. package/dist/chunks/dist-JT4ATXVM.js +0 -2
  90. package/dist/chunks/host-SVEDZUC5.js +0 -2
  91. package/dist/chunks/run-manager-RX42UNEM.js +0 -2
@@ -1,5 +1,5 @@
1
1
  // @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
2
- import{T as xe,V as be}from"./chunk-VDGCGOQH.js";import{C as z,Ca as H,F as V,G as ue,H as q,Ma as ve,Qa as ye,ma as de,na as fe,oa as pe,pa as me,q as le,qa as ge,ra as W,ya as he,za as C}from"./chunk-ZJIMT5I3.js";import{Fa as we}from"./chunk-JSDLBXME.js";import{e as Ee}from"./chunk-E27LHEIP.js";import{a as o}from"./chunk-ONUPGMER.js";import u from"fs";import p from"path";import{exec as tt,spawnSync as nt}from"child_process";import{promisify as rt}from"util";import{fileURLToPath as ot}from"url";var J="en";function Ue(){return(process.env.LC_ALL||process.env.LC_MESSAGES||process.env.LANG||"").toLowerCase().startsWith("zh")?"zh":"en"}o(Ue,"detectSystemLocale");function Se(e){if(!e||e==="auto"){J=Ue();return}J=e.toLowerCase().replace(/[-_].*/,"")==="zh"?"zh":"en"}o(Se,"setLocale");var Pe={en:{"dialog.confirm":"[Confirm]","dialog.select":"[Select]","dialog.input":"[Input]","confirm.instruction.basic":"Press (y) yes, (n) no","confirm.instruction.always":"Press (y) yes, (a) always yes for this tool, (n) no","confirm.instruction.protected":"Press (y) to confirm, (n) to cancel (protected path)","confirm.result.approved":"Approved","confirm.result.approved_always":"Approved (always)","confirm.result.denied":"Denied","tool.bash.title":"Execute bash command?","tool.shell.title":"Execute shell command?","tool.write.title":"Write to file?","tool.edit.title":"Edit file?","tool.generic.title":"Execute {tool}?","field.reason":"Reason","field.intent":"Intent","field.target":"Target","field.scope":"Scope","field.risk":"Risk","field.summary":"Summary","intent.read":"Read project files","intent.delete":"Delete files","intent.deps":"Modify dependencies or environment","intent.modify":"Modify files","intent.execute":"Execute command","intent.write_file":"Write file","intent.edit_file":"Edit file","intent.use_tool":"Use {tool}","risk.destructive":"Destructive change","risk.deps":"May change dependencies or local tools","risk.modify":"May modify files","risk.unknown":"Command effects depend on its arguments","risk.network":"May access network","scope.outside":"Outside project","scope.protected":"Protected path","waiting.confirm":"Waiting: approval required","waiting.select":"Waiting: choose an option","waiting.input":"Waiting: answer the prompt","placeholder.confirm":"Respond to the approval prompt above...","placeholder.select":"Choose an option above...","placeholder.input":"Answer the prompt above...","placeholder.busy":"Agent is busy...","placeholder.queue":"Queue a follow-up for the next round...","placeholder.idle":"Type a message...","select.choice":"Choice:","select.type_number":"(type a number)","select.more":"{count} more choices...","select.more_above":"\u2191 {count} more above","select.more_below":"\u2193 {count} more below","select.confirm_hint":"Press Enter to confirm, Esc to cancel","select.navigate_hint":"Use \u2191\u2193 to navigate, Enter to confirm, Esc to cancel","select.multiselect_hint":"Use \u2191\u2193 to navigate, Space to toggle, Enter to confirm, Esc to cancel","select.multiselect_empty":"Select at least one option with Space before confirming.","select.multiselect_min":"Select at least {min} option(s) with Space before confirming.","select.multiselect_max":"Select at most {max} option(s) with Space before confirming.","select.back_prev":"\u2190 Back to previous question","input.default":"Default:","input.value":"Value:","input.type_response":"(type your response)","managed.completed":"Task completed","managed.completed.blocked":"Task blocked","managed.completed.continuation":"Task needs continuation",cancelled:"[Cancelled] Operation cancelled by user"},zh:{"dialog.confirm":"[\u786E\u8BA4]","dialog.select":"[\u9009\u62E9]","dialog.input":"[\u8F93\u5165]","confirm.instruction.basic":"\u6309 (y) \u786E\u8BA4, (n) \u62D2\u7EDD","confirm.instruction.always":"\u6309 (y) \u786E\u8BA4, (a) \u59CB\u7EC8\u5141\u8BB8\u6B64\u5DE5\u5177, (n) \u62D2\u7EDD","confirm.instruction.protected":"\u6309 (y) \u786E\u8BA4, (n) \u53D6\u6D88 (\u53D7\u4FDD\u62A4\u8DEF\u5F84)","confirm.result.approved":"\u5DF2\u6279\u51C6","confirm.result.approved_always":"\u5DF2\u6279\u51C6 (\u59CB\u7EC8\u5141\u8BB8)","confirm.result.denied":"\u5DF2\u62D2\u7EDD","tool.bash.title":"\u6267\u884C bash \u547D\u4EE4\uFF1F","tool.shell.title":"\u6267\u884C shell \u547D\u4EE4\uFF1F","tool.write.title":"\u5199\u5165\u6587\u4EF6\uFF1F","tool.edit.title":"\u7F16\u8F91\u6587\u4EF6\uFF1F","tool.generic.title":"\u6267\u884C {tool}\uFF1F","field.reason":"\u539F\u56E0","field.intent":"\u610F\u56FE","field.target":"\u76EE\u6807","field.scope":"\u8303\u56F4","field.risk":"\u98CE\u9669","field.summary":"\u6458\u8981","intent.read":"\u8BFB\u53D6\u9879\u76EE\u6587\u4EF6","intent.delete":"\u5220\u9664\u6587\u4EF6","intent.deps":"\u4FEE\u6539\u4F9D\u8D56\u6216\u73AF\u5883","intent.modify":"\u4FEE\u6539\u6587\u4EF6","intent.execute":"\u6267\u884C\u547D\u4EE4","intent.write_file":"\u5199\u5165\u6587\u4EF6","intent.edit_file":"\u7F16\u8F91\u6587\u4EF6","intent.use_tool":"\u4F7F\u7528 {tool}","risk.destructive":"\u7834\u574F\u6027\u53D8\u66F4","risk.deps":"\u53EF\u80FD\u4FEE\u6539\u4F9D\u8D56\u6216\u672C\u5730\u5DE5\u5177","risk.modify":"\u53EF\u80FD\u4FEE\u6539\u6587\u4EF6","risk.unknown":"\u547D\u4EE4\u6548\u679C\u53D6\u51B3\u4E8E\u53C2\u6570","risk.network":"\u53EF\u80FD\u8BBF\u95EE\u7F51\u7EDC","scope.outside":"\u9879\u76EE\u5916\u90E8","scope.protected":"\u53D7\u4FDD\u62A4\u8DEF\u5F84","waiting.confirm":"\u7B49\u5F85\u4E2D\uFF1A\u9700\u8981\u5BA1\u6279","waiting.select":"\u7B49\u5F85\u4E2D\uFF1A\u8BF7\u9009\u62E9","waiting.input":"\u7B49\u5F85\u4E2D\uFF1A\u8BF7\u56DE\u7B54","placeholder.confirm":"\u8BF7\u56DE\u5E94\u4E0A\u65B9\u7684\u5BA1\u6279\u63D0\u793A...","placeholder.select":"\u8BF7\u5728\u4E0A\u65B9\u9009\u62E9\u4E00\u4E2A\u9009\u9879...","placeholder.input":"\u8BF7\u56DE\u7B54\u4E0A\u65B9\u7684\u63D0\u793A...","placeholder.busy":"\u667A\u80FD\u4F53\u6B63\u5728\u5DE5\u4F5C\u4E2D...","placeholder.queue":"\u6392\u961F\u7B49\u5F85\u4E0B\u4E00\u8F6E\u8DDF\u8FDB...","placeholder.idle":"\u8F93\u5165\u6D88\u606F...","select.choice":"\u9009\u9879\uFF1A","select.type_number":"(\u8F93\u5165\u7F16\u53F7)","select.more":"\u8FD8\u6709 {count} \u4E2A\u9009\u9879...","select.more_above":"\u2191 \u4E0A\u65B9\u8FD8\u6709 {count} \u4E2A","select.more_below":"\u2193 \u4E0B\u65B9\u8FD8\u6709 {count} \u4E2A","select.confirm_hint":"\u6309 Enter \u786E\u8BA4\uFF0CEsc \u53D6\u6D88","select.navigate_hint":"\u4F7F\u7528 \u2191\u2193 \u5BFC\u822A\uFF0CEnter \u786E\u8BA4\uFF0CEsc \u53D6\u6D88","select.multiselect_hint":"\u4F7F\u7528 \u2191\u2193 \u5BFC\u822A\uFF0C\u7A7A\u683C \u5207\u6362\u9009\u4E2D\uFF0CEnter \u786E\u8BA4\uFF0CEsc \u53D6\u6D88","select.multiselect_empty":"\u8BF7\u5148\u4F7F\u7528\u7A7A\u683C\u9009\u62E9\u81F3\u5C11\u4E00\u4E2A\u9009\u9879\u3002","select.multiselect_min":"\u8BF7\u5148\u4F7F\u7528\u7A7A\u683C\u81F3\u5C11\u9009\u62E9 {min} \u4E2A\u9009\u9879\u3002","select.multiselect_max":"\u6700\u591A\u53EA\u80FD\u9009\u62E9 {max} \u4E2A\u9009\u9879\u3002","select.back_prev":"\u2190 \u8FD4\u56DE\u4E0A\u4E00\u9898","input.default":"\u9ED8\u8BA4\u503C\uFF1A","input.value":"\u503C\uFF1A","input.type_response":"(\u8F93\u5165\u4F60\u7684\u56DE\u7B54)","managed.completed":"\u4EFB\u52A1\u5B8C\u6210","managed.completed.blocked":"\u4EFB\u52A1\u53D7\u963B","managed.completed.continuation":"\u4EFB\u52A1\u9700\u8981\u7EE7\u7EED",cancelled:"[\u5DF2\u53D6\u6D88] \u64CD\u4F5C\u5DF2\u88AB\u7528\u6237\u53D6\u6D88"}};function Dt(e,t){let r=Pe[J][e]??Pe.en[e]??e;if(t)for(let[i,s]of Object.entries(t))r=r.replace(`{${i}}`,String(s));return r}o(Dt,"t");var _e={core:`// KodaX core configuration template.
2
+ import{T as xe,V as be}from"./chunk-XM724XAA.js";import{C as z,Ca as H,F as V,G as ue,H as q,Ma as ve,Qa as ye,ma as de,na as fe,oa as pe,pa as me,q as le,qa as ge,ra as W,ya as he,za as C}from"./chunk-XXQLPTAN.js";import{Fa as we}from"./chunk-UJS7JAO6.js";import{e as Ee}from"./chunk-GAFFYJU3.js";import{a as o}from"./chunk-ONUPGMER.js";import u from"fs";import p from"path";import{exec as tt,spawnSync as nt}from"child_process";import{promisify as rt}from"util";import{fileURLToPath as ot}from"url";var J="en";function Ue(){return(process.env.LC_ALL||process.env.LC_MESSAGES||process.env.LANG||"").toLowerCase().startsWith("zh")?"zh":"en"}o(Ue,"detectSystemLocale");function Se(e){if(!e||e==="auto"){J=Ue();return}J=e.toLowerCase().replace(/[-_].*/,"")==="zh"?"zh":"en"}o(Se,"setLocale");var Pe={en:{"dialog.confirm":"[Confirm]","dialog.select":"[Select]","dialog.input":"[Input]","confirm.instruction.basic":"Press (y) yes, (n) no","confirm.instruction.always":"Press (y) yes, (a) always yes for this tool, (n) no","confirm.instruction.runtime_session":"Press (y) allow once, (s) allow this Runtime scope for the session, (n) no","confirm.instruction.runtime_persistent":"Press (y) allow once, (s) allow this Runtime scope for the session, (a) always allow this Runtime scope, (n) no","confirm.instruction.protected":"Press (y) to confirm, (n) to cancel (protected path)","confirm.result.approved":"Approved","confirm.result.approved_always":"Approved (always)","confirm.result.approved_session":"Approved (this session)","confirm.result.denied":"Denied","tool.bash.title":"Execute bash command?","tool.shell.title":"Execute shell command?","tool.write.title":"Write to file?","tool.edit.title":"Edit file?","tool.generic.title":"Execute {tool}?","field.reason":"Reason","field.intent":"Intent","field.target":"Target","field.scope":"Scope","field.risk":"Risk","field.summary":"Summary","intent.read":"Read project files","intent.delete":"Delete files","intent.deps":"Modify dependencies or environment","intent.modify":"Modify files","intent.execute":"Execute command","intent.write_file":"Write file","intent.edit_file":"Edit file","intent.use_tool":"Use {tool}","risk.destructive":"Destructive change","risk.deps":"May change dependencies or local tools","risk.modify":"May modify files","risk.unknown":"Command effects depend on its arguments","risk.network":"May access network","scope.outside":"Outside project","scope.protected":"Protected path","waiting.confirm":"Waiting: approval required","waiting.select":"Waiting: choose an option","waiting.input":"Waiting: answer the prompt","placeholder.confirm":"Respond to the approval prompt above...","placeholder.select":"Choose an option above...","placeholder.input":"Answer the prompt above...","placeholder.busy":"Agent is busy...","placeholder.queue":"Queue a follow-up for the next round...","placeholder.idle":"Type a message...","select.choice":"Choice:","select.type_number":"(type a number)","select.more":"{count} more choices...","select.more_above":"\u2191 {count} more above","select.more_below":"\u2193 {count} more below","select.confirm_hint":"Press Enter to confirm, Esc to cancel","select.navigate_hint":"Use \u2191\u2193 to navigate, Enter to confirm, Esc to cancel","select.multiselect_hint":"Use \u2191\u2193 to navigate, Space to toggle, Enter to confirm, Esc to cancel","select.multiselect_empty":"Select at least one option with Space before confirming.","select.multiselect_min":"Select at least {min} option(s) with Space before confirming.","select.multiselect_max":"Select at most {max} option(s) with Space before confirming.","select.back_prev":"\u2190 Back to previous question","input.default":"Default:","input.value":"Value:","input.type_response":"(type your response)","managed.completed":"Task completed","managed.completed.blocked":"Task blocked","managed.completed.continuation":"Task needs continuation",cancelled:"[Cancelled] Operation cancelled by user"},zh:{"dialog.confirm":"[\u786E\u8BA4]","dialog.select":"[\u9009\u62E9]","dialog.input":"[\u8F93\u5165]","confirm.instruction.basic":"\u6309 (y) \u786E\u8BA4, (n) \u62D2\u7EDD","confirm.instruction.always":"\u6309 (y) \u786E\u8BA4, (a) \u59CB\u7EC8\u5141\u8BB8\u6B64\u5DE5\u5177, (n) \u62D2\u7EDD","confirm.instruction.runtime_session":"\u6309 (y) \u4EC5\u5141\u8BB8\u4E00\u6B21, (s) \u672C\u4F1A\u8BDD\u59CB\u7EC8\u5141\u8BB8\u8FD9\u9879\u7CBE\u786E\u64CD\u4F5C, (n) \u62D2\u7EDD","confirm.instruction.runtime_persistent":"\u6309 (y) \u4EC5\u5141\u8BB8\u4E00\u6B21, (s) \u672C\u4F1A\u8BDD\u59CB\u7EC8\u5141\u8BB8\u8FD9\u9879\u7CBE\u786E\u64CD\u4F5C, (a) \u59CB\u7EC8\u5141\u8BB8\u8FD9\u9879\u7CBE\u786E\u64CD\u4F5C, (n) \u62D2\u7EDD","confirm.instruction.protected":"\u6309 (y) \u786E\u8BA4, (n) \u53D6\u6D88 (\u53D7\u4FDD\u62A4\u8DEF\u5F84)","confirm.result.approved":"\u5DF2\u6279\u51C6","confirm.result.approved_always":"\u5DF2\u6279\u51C6 (\u59CB\u7EC8\u5141\u8BB8)","confirm.result.approved_session":"\u5DF2\u6279\u51C6 (\u672C\u4F1A\u8BDD)","confirm.result.denied":"\u5DF2\u62D2\u7EDD","tool.bash.title":"\u6267\u884C bash \u547D\u4EE4\uFF1F","tool.shell.title":"\u6267\u884C shell \u547D\u4EE4\uFF1F","tool.write.title":"\u5199\u5165\u6587\u4EF6\uFF1F","tool.edit.title":"\u7F16\u8F91\u6587\u4EF6\uFF1F","tool.generic.title":"\u6267\u884C {tool}\uFF1F","field.reason":"\u539F\u56E0","field.intent":"\u610F\u56FE","field.target":"\u76EE\u6807","field.scope":"\u8303\u56F4","field.risk":"\u98CE\u9669","field.summary":"\u6458\u8981","intent.read":"\u8BFB\u53D6\u9879\u76EE\u6587\u4EF6","intent.delete":"\u5220\u9664\u6587\u4EF6","intent.deps":"\u4FEE\u6539\u4F9D\u8D56\u6216\u73AF\u5883","intent.modify":"\u4FEE\u6539\u6587\u4EF6","intent.execute":"\u6267\u884C\u547D\u4EE4","intent.write_file":"\u5199\u5165\u6587\u4EF6","intent.edit_file":"\u7F16\u8F91\u6587\u4EF6","intent.use_tool":"\u4F7F\u7528 {tool}","risk.destructive":"\u7834\u574F\u6027\u53D8\u66F4","risk.deps":"\u53EF\u80FD\u4FEE\u6539\u4F9D\u8D56\u6216\u672C\u5730\u5DE5\u5177","risk.modify":"\u53EF\u80FD\u4FEE\u6539\u6587\u4EF6","risk.unknown":"\u547D\u4EE4\u6548\u679C\u53D6\u51B3\u4E8E\u53C2\u6570","risk.network":"\u53EF\u80FD\u8BBF\u95EE\u7F51\u7EDC","scope.outside":"\u9879\u76EE\u5916\u90E8","scope.protected":"\u53D7\u4FDD\u62A4\u8DEF\u5F84","waiting.confirm":"\u7B49\u5F85\u4E2D\uFF1A\u9700\u8981\u5BA1\u6279","waiting.select":"\u7B49\u5F85\u4E2D\uFF1A\u8BF7\u9009\u62E9","waiting.input":"\u7B49\u5F85\u4E2D\uFF1A\u8BF7\u56DE\u7B54","placeholder.confirm":"\u8BF7\u56DE\u5E94\u4E0A\u65B9\u7684\u5BA1\u6279\u63D0\u793A...","placeholder.select":"\u8BF7\u5728\u4E0A\u65B9\u9009\u62E9\u4E00\u4E2A\u9009\u9879...","placeholder.input":"\u8BF7\u56DE\u7B54\u4E0A\u65B9\u7684\u63D0\u793A...","placeholder.busy":"\u667A\u80FD\u4F53\u6B63\u5728\u5DE5\u4F5C\u4E2D...","placeholder.queue":"\u6392\u961F\u7B49\u5F85\u4E0B\u4E00\u8F6E\u8DDF\u8FDB...","placeholder.idle":"\u8F93\u5165\u6D88\u606F...","select.choice":"\u9009\u9879\uFF1A","select.type_number":"(\u8F93\u5165\u7F16\u53F7)","select.more":"\u8FD8\u6709 {count} \u4E2A\u9009\u9879...","select.more_above":"\u2191 \u4E0A\u65B9\u8FD8\u6709 {count} \u4E2A","select.more_below":"\u2193 \u4E0B\u65B9\u8FD8\u6709 {count} \u4E2A","select.confirm_hint":"\u6309 Enter \u786E\u8BA4\uFF0CEsc \u53D6\u6D88","select.navigate_hint":"\u4F7F\u7528 \u2191\u2193 \u5BFC\u822A\uFF0CEnter \u786E\u8BA4\uFF0CEsc \u53D6\u6D88","select.multiselect_hint":"\u4F7F\u7528 \u2191\u2193 \u5BFC\u822A\uFF0C\u7A7A\u683C \u5207\u6362\u9009\u4E2D\uFF0CEnter \u786E\u8BA4\uFF0CEsc \u53D6\u6D88","select.multiselect_empty":"\u8BF7\u5148\u4F7F\u7528\u7A7A\u683C\u9009\u62E9\u81F3\u5C11\u4E00\u4E2A\u9009\u9879\u3002","select.multiselect_min":"\u8BF7\u5148\u4F7F\u7528\u7A7A\u683C\u81F3\u5C11\u9009\u62E9 {min} \u4E2A\u9009\u9879\u3002","select.multiselect_max":"\u6700\u591A\u53EA\u80FD\u9009\u62E9 {max} \u4E2A\u9009\u9879\u3002","select.back_prev":"\u2190 \u8FD4\u56DE\u4E0A\u4E00\u9898","input.default":"\u9ED8\u8BA4\u503C\uFF1A","input.value":"\u503C\uFF1A","input.type_response":"(\u8F93\u5165\u4F60\u7684\u56DE\u7B54)","managed.completed":"\u4EFB\u52A1\u5B8C\u6210","managed.completed.blocked":"\u4EFB\u52A1\u53D7\u963B","managed.completed.continuation":"\u4EFB\u52A1\u9700\u8981\u7EE7\u7EED",cancelled:"[\u5DF2\u53D6\u6D88] \u64CD\u4F5C\u5DF2\u88AB\u7528\u6237\u53D6\u6D88"}};function Dt(e,t){let r=Pe[J][e]??Pe.en[e]??e;if(t)for(let[i,s]of Object.entries(t))r=r.replace(`{${i}}`,String(s));return r}o(Dt,"t");var _e={core:`// KodaX core configuration template.
3
3
  // Copy only the fields you need to ~/.kodax/config.json (strict JSON).
4
4
  // MCP, A2A, and Extensions live in ~/.kodax/integrations/*.json; use
5
5
  // \`kodax integrations migrate --dry-run\` for legacy declarations.
@@ -22,6 +22,13 @@ import{T as xe,V as be}from"./chunk-VDGCGOQH.js";import{C as z,Ca as H,F as V,G
22
22
  // }
23
23
  // ],
24
24
  // "repoIntelligenceMode": "auto",
25
+ // Automatic large compaction is always enabled. Percentage defaults to 75
26
+ // and is clamped to 15..90. A missing/zero absolute threshold is inactive;
27
+ // otherwise the smaller percentage, absolute, and physical limit wins.
28
+ // "compaction": {
29
+ // "triggerPercent": 75,
30
+ // "triggerTokens": 0
31
+ // },
25
32
  // "sessionRetentionDays": 0,
26
33
  // "workflow": { "maxConcurrency": 8 }
27
34
  }
@@ -146,6 +153,6 @@ import{T as xe,V as be}from"./chunk-VDGCGOQH.js";import{C as z,Ca as H,F as V,G
146
153
  "version": 1,
147
154
  "paths": []
148
155
  }
149
- `};function Ce(e){return _e[e]}o(Ce,"getConfigTemplate");import{closeSync as Y,existsSync as m,fsyncSync as Ae,mkdirSync as ee,openSync as te,readFileSync as Ie,renameSync as Re,statSync as Ge,unlinkSync as Q,watch as ze,writeFileSync as De}from"node:fs";import{createHash as Ve}from"node:crypto";import g from"node:path";var qe={mcp:"mcp.json",a2a:"a2a.json",extensions:"extensions.json"},We=new Set(["type","command","args","cwd","env","url","headers","connect","startupTimeoutMs","requestTimeoutMs","auth"]);function E(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}o(E,"isRecord");function w(e,t){if(!E(e))throw new Error(`${t} must be an object.`);return e}o(w,"requireRecord");function T(e,t,n){let r=Object.keys(e).find(i=>!t.has(i));if(r!==void 0)throw new Error(`${n} has unknown field "${r}".`)}o(T,"assertNoUnknownKeys");function Le(e,t){if(e.version!==1)throw new Error(`${t} version must be 1.`)}o(Le,"requireVersionOne");function ke(e,t){let n=w(e,t);for(let[r,i]of Object.entries(n))if(r.trim().length===0||typeof i!="string")throw new Error(`${t} must contain non-empty string keys and string values.`);return structuredClone(n)}o(ke,"requireStringMap");function Z(e,t){if(!Array.isArray(e)||!e.every(n=>typeof n=="string"&&n.trim().length>0))throw new Error(`${t} must be an array of non-empty strings.`);return e.map(n=>n.trim())}o(Z,"requireStringArray");function B(e,t){if(e!==void 0&&(!Number.isFinite(e)||Number(e)<=0))throw new Error(`${t} must be a positive number.`)}o(B,"validatePositiveNumber");function He(e,t){if(e.trim().length===0)throw new Error("MCP server names must not be empty.");let n=w(t,`MCP server "${e}"`);T(n,We,`MCP server "${e}"`);let r=n.type??"stdio";if(!["stdio","sse","streamable-http","http"].includes(String(r)))throw new Error(`MCP server "${e}" has an unsupported transport type.`);if(r==="stdio"){if(typeof n.command!="string"||n.command.trim().length===0)throw new Error(`MCP server "${e}" stdio transport requires command.`)}else if(typeof n.url!="string"||n.url.trim().length===0)throw new Error(`MCP server "${e}" ${String(r)} transport requires url.`);if(n.args!==void 0&&Z(n.args,`MCP server "${e}" args`),n.cwd!==void 0&&typeof n.cwd!="string")throw new Error(`MCP server "${e}" cwd must be a string.`);if(n.env!==void 0&&ke(n.env,`MCP server "${e}" env`),n.headers!==void 0&&ke(n.headers,`MCP server "${e}" headers`),n.connect!==void 0&&!["lazy","prewarm","disabled"].includes(String(n.connect)))throw new Error(`MCP server "${e}" has an unsupported connect mode.`);if(B(n.startupTimeoutMs,`MCP server "${e}" startupTimeoutMs`),B(n.requestTimeoutMs,`MCP server "${e}" requestTimeoutMs`),n.auth!==void 0){let i=w(n.auth,`MCP server "${e}" auth`);if(T(i,new Set(["type","clientId","authorizationUrl","tokenUrl","scopes","redirectPort"]),`MCP server "${e}" auth`),i.type!=="oauth2")throw new Error(`MCP server "${e}" auth type must be oauth2.`);for(let a of["clientId","authorizationUrl","tokenUrl"])if(i[a]!==void 0&&typeof i[a]!="string")throw new Error(`MCP server "${e}" auth.${a} must be a string.`);i.scopes!==void 0&&Z(i.scopes,`MCP server "${e}" auth.scopes`),B(i.redirectPort,`MCP server "${e}" auth.redirectPort`)}return structuredClone(n)}o(He,"parseMcpServer");function k(e){let t=w(e,"MCP integration config");T(t,new Set(["version","servers"]),"MCP integration config"),Le(t,"MCP integration config");let n=w(t.servers,"MCP integration config servers"),r={};for(let[i,s]of Object.entries(n))r[i]=He(i,s);return{version:1,servers:r}}o(k,"parseMcpIntegrationDocument");function M(e){let t=w(e,"Extensions integration config");T(t,new Set(["version","paths"]),"Extensions integration config"),Le(t,"Extensions integration config");let n=Z(t.paths,"Extensions integration config paths");if(new Set(n).size!==n.length)throw new Error("Extensions integration config paths must not contain duplicates.");return{version:1,paths:n}}o(M,"parseExtensionsIntegrationDocument");function P(e,t){return g.join(g.resolve(t),"integrations",qe[e])}o(P,"resolveIntegrationConfigPath");function ne(e){return g.join(g.resolve(e),"config.json")}o(ne,"coreConfigPath");function Te(e){return Ve("sha256").update(e).digest("hex")}o(Te,"hashText");function re(e){let t=Ie(e,"utf8");try{return{raw:t,value:JSON.parse(t)}}catch(n){let r=n instanceof Error?n.message:String(n);throw new Error(`Invalid JSON: ${r}`)}}o(re,"readJsonFile");function O(e){return{domain:e.domain,source:e.source,path:e.path,revision:Te(e.raw),document:structuredClone(e.document),loadedAt:new Date().toISOString()}}o(O,"snapshot");function N(e){let t=ne(e);return m(t)?w(re(t).value,"Core config"):{}}o(N,"readCoreConfig");function $(e){let t=P("mcp",e);if(m(t)){let i=re(t);return O({domain:"mcp",source:"user",path:t,raw:i.raw,document:k(i.value)})}let n=N(e).mcpServers,r=k({version:1,servers:E(n)?n:{}});return O({domain:"mcp",source:n===void 0?"default":"legacy-user",path:t,raw:JSON.stringify(r),document:r})}o($,"readMcpIntegration");function K(e){let t=P("extensions",e);if(m(t)){let i=re(t);return O({domain:"extensions",source:"user",path:t,raw:i.raw,document:M(i.value)})}let n=N(e).extensions,r=M({version:1,paths:Array.isArray(n)?n:[]});return O({domain:"extensions",source:n===void 0?"default":"legacy-user",path:t,raw:JSON.stringify(r),document:r})}o(K,"readExtensionsIntegration");function Je(e){if(!E(e))return[];let t=[],n=/(token|secret|password|api[_-]?key|authorization)/i;for(let[r,i]of Object.entries(e))if(E(i))for(let s of["env","headers"]){let a=i[s];if(E(a))for(let[l,c]of Object.entries(a))n.test(l)&&typeof c=="string"&&!c.startsWith("${env:")&&t.push(`MCP server "${r}" ${s}.${l} may contain a literal secret.`)}return t}o(Je,"likelySecretWarnings");function Be(e){let t=N(e),n=P("mcp",e),r=P("extensions",e),i=t.mcpServers,s=t.extensions,a=E(i)?Object.keys(i).length:0,l=Array.isArray(s)?s.length:0,c=o((b,R,D)=>m(b)?{action:"none",entries:R,destination:b,reason:"destination-exists"}:D?{action:"create",entries:R,destination:b}:{action:"none",entries:0,destination:b,reason:"legacy-absent"},"domainPlan");return{mcp:c(n,a,i!==void 0),extensions:c(r,l,s!==void 0),warnings:Je(i)}}o(Be,"planLegacyIntegrationMigration");function Ye(e,t){let n=ne(e);ee(g.dirname(n),{recursive:!0,mode:448});let r=`${n}.${process.pid}.${Date.now()}.tmp`,i=te(r,"wx",384);try{De(i,`${JSON.stringify(t,null,2)}
150
- `,"utf8"),Ae(i)}finally{Y(i)}try{Re(r,n)}catch(s){throw m(r)&&Q(r),new Error("Failed to atomically clean legacy integration fields.",{cause:s})}}o(Ye,"writeCoreConfigAtomically");function Ft(e){let t=Be(e.configHome),n=N(e.configHome),r=[];t.mcp.action==="create"&&(A({domain:"mcp",configHome:e.configHome,document:{version:1,servers:E(n.mcpServers)?n.mcpServers:{}},validate:k}),r.push("mcp")),t.extensions.action==="create"&&(A({domain:"extensions",configHome:e.configHome,document:{version:1,paths:Array.isArray(n.extensions)?n.extensions:[]},validate:M}),r.push("extensions"));let i=!1;if(e.cleanupLegacy&&m(ne(e.configHome))){let s={...n};m(t.mcp.destination)&&delete s.mcpServers,m(t.extensions.destination)&&delete s.extensions,Qe(n,s)||(Ye(e.configHome,s),i=!0)}return{...t,applied:r,cleanedLegacy:i}}o(Ft,"migrateLegacyIntegrationConfig");function Qe(e,t){return JSON.stringify(e)===JSON.stringify(t)}o(Qe,"isDeepStrictEqualForConfig");function Ze(e){return m(e)?Te(Ie(e,"utf8")):void 0}o(Ze,"currentUserRevision");function et(e){let t=`${e}.lock`;try{return{fd:te(t,"wx",384),path:t}}catch(n){throw new Error(`Integration configuration is busy: ${g.basename(e)}`,{cause:n})}}o(et,"acquireWriteLock");function A(e){let t=P(e.domain,e.configHome),n=e.validate(e.document);ee(g.dirname(t),{recursive:!0,mode:448});let r=et(t);try{let i=Ze(t);if(e.expectedRevision!==void 0&&i!==e.expectedRevision)throw new Error(`Integration configuration revision changed (expected ${e.expectedRevision}, actual ${i??"missing"}).`);let s=`${JSON.stringify(n,null,2)}
151
- `,a=`${t}.${process.pid}.${Date.now()}.tmp`,l=te(a,"wx",384);try{De(l,s,"utf8"),Ae(l)}finally{Y(l)}try{Re(a,t)}catch(c){throw m(a)&&Q(a),new Error(`Failed to atomically replace ${g.basename(t)}.`,{cause:c})}return O({domain:e.domain,source:"user",path:t,raw:s,document:n})}finally{Y(r.fd),m(r.path)&&Q(r.path)}}o(A,"writeIntegrationDocument");function Me(e){if(!m(e))return"missing";let t=Ge(e);return`${t.dev}:${t.ino}:${t.size}:${t.mtimeMs}`}o(Me,"metadataSignature");function L(e,t){return{code:e,message:t,time:new Date().toISOString()}}o(L,"safeDiagnostic");var Oe=class{static{o(this,"IntegrationConfigController")}#a;#r;#c;#l;#e;#t;#u="";#o;#n;#i;#d=Promise.resolve();#s=new Set;constructor(t){this.#a=t.domain,this.#r=P(t.domain,t.configHome),this.#l=t.validate,this.#c=t.read}async initialize(){let t=await this.reload();if(!t.ok||!this.#e)throw new Error(t.ok?"Integration configuration did not produce a snapshot.":t.error);return structuredClone(this.#e)}snapshot(){return this.#e?structuredClone(this.#e):void 0}status(){return{domain:this.#a,path:this.#r,...this.#e?{revision:this.#e.revision,source:this.#e.source,lastReloadAt:this.#e.loadedAt}:{},...this.#t?{diagnostic:this.#t}:{},watching:this.#o!==void 0}}subscribe(t){return this.#s.add(t),()=>{this.#s.delete(t)}}reload(){let t=this.#d.then(()=>this.#f());return this.#d=t.then(()=>{},()=>{}),t}async#f(){this.#u=Me(this.#r);let t;try{t=this.#c(),this.#l(t.document)}catch{return this.#t=L("invalid-config","Integration configuration is invalid; check the file against its versioned schema."),{ok:!1,error:this.#t.message}}let n=this.#e?structuredClone(this.#e):void 0;try{for(let r of this.#s)await r(structuredClone(t),n)}catch{return this.#t=L("activation-failed","Integration configuration could not be activated; the previous configuration remains active."),{ok:!1,error:this.#t.message}}return this.#e=t,this.#t=void 0,{ok:!0,snapshot:structuredClone(t)}}async ensureCurrent(){return Me(this.#r)===this.#u&&this.#e?{ok:!0,snapshot:structuredClone(this.#e)}:this.reload()}startWatching(t=100,n=2e3){if(!(this.#o||this.#i)){ee(g.dirname(this.#r),{recursive:!0,mode:448});try{this.#o=ze(g.dirname(this.#r),(r,i)=>{i!==null&&i.toString()!==g.basename(this.#r)||(this.#n&&clearTimeout(this.#n),this.#n=setTimeout(()=>{this.#n=void 0,this.reload()},t),this.#n.unref?.())}),this.#o.unref(),this.#o.on("error",()=>{this.#t=L("watcher-degraded","Integration watcher is degraded; metadata polling remains active.")})}catch{this.#t=L("watcher-degraded","Integration watcher is degraded; metadata polling remains active.")}this.#i=setInterval(()=>{this.ensureCurrent()},n),this.#i.unref?.()}}close(){this.#n&&clearTimeout(this.#n),this.#n=void 0,this.#i&&clearInterval(this.#i),this.#i=void 0,this.#o?.close(),this.#o=void 0,this.#s.clear()}};var it=rt(tt),st=2,Ne=!1,d=Ee(),tn=p.join(d,"sessions"),f=p.join(d,"config.json"),nn=60,h=null,ie=!1,at="dumb";function ct(e){let t=p.basename(e).toLowerCase(),n="__KODAX_SHELL_ENV_START__",r=`printf '%s\\0' '${n}'; env -0`;return t==="fish"?{args:["-i","-c",r],sentinel:n}:{args:t==="bash"||t==="zsh"?["-ic",r]:["-lc",r],sentinel:n}}o(ct,"buildShellEnvCommand");function lt(e,t){let n=`${t}\0`,r=e.lastIndexOf(n);if(r===-1)return{};let i=e.slice(r+n.length),s={};for(let a of i.split("\0")){if(!a)continue;let l=a.indexOf("=");l<=0||(s[a.slice(0,l)]=a.slice(l+1))}return s}o(lt,"parseNullDelimitedShellEnv");function ut(e={}){let t=e.env??process.env;if((e.platform??process.platform)==="win32"||t.KODAX_DISABLE_SHELL_ENV_HYDRATION==="1")return!1;let r=e.shell??t.SHELL;if(!r||!p.isAbsolute(r))return!1;let{args:i,sentinel:s}=ct(r),a=e.run??nt,l={...t,TERM:at},c=a(r,i,{encoding:"utf8",env:l,maxBuffer:1024*1024,timeout:5e3,windowsHide:!0,detached:!0,stdio:["ignore","pipe","pipe"]});if(c.status!==0||!c.stdout)return!1;let b=typeof c.stdout=="string"?c.stdout:c.stdout.toString("utf8"),R=lt(b,s),D=!1;for(let[G,Fe]of Object.entries(R))G!=="TERM"&&t[G]===void 0&&(t[G]=Fe,D=!0);return D}o(ut,"hydrateProcessEnvFromShell");function dt(){if(!ie){ie=!0;try{ut()}catch{}}}o(dt,"ensureShellEnvironmentHydrated");function rn(){ie=!1}o(rn,"resetShellEnvironmentHydrationForTesting");function ft(e){he(e.customProviders??[])}o(ft,"registerConfiguredCustomProviders");function se(e){if(!Array.isArray(e))return;let t=e.filter(n=>typeof n=="string").map(n=>n.trim()).filter(n=>n.length>0);return t.length>0?t:[]}o(se,"normalizeConfiguredExtensions");function pt(e){if(e.permissionMode!=="default")return e;let t={...e,permissionMode:"accept-edits"};try{u.mkdirSync(p.dirname(f),{recursive:!0}),u.writeFileSync(f,JSON.stringify(t,null,2))}catch{}return t}o(pt,"migrateLegacyPermissionModeInConfig");function mt(e){if(e.permissionMode!=="auto-in-project")return e;try{let t=u.readFileSync(f,"utf-8"),n=t.replace(/("permissionMode"\s*:\s*)"auto-in-project"/,'$1"auto"');n!==t&&u.writeFileSync(f,n)}catch{}return{...e,permissionMode:"auto"}}o(mt,"migrateAutoInProjectAliasInConfig");function gt(){if(h)return h;let e="0.7.72";if(e)return h=e,h;let t=p.join(p.dirname(ot(import.meta.url)),"../../package.json");if(u.existsSync(t))try{return h=JSON.parse(u.readFileSync(t,"utf-8")).version??"0.0.0",h??"0.0.0"}catch{}return h="0.0.0",h}o(gt,"getVersion");var on=gt();function ht(e){return fe(e)}o(ht,"getProviderModel");function ae(e,t){let n=new Set(e.map(i=>i.toLowerCase())),r=[...e];for(let i of t)n.has(i.toLowerCase())||r.push(i);return r}o(ae,"mergeModels");function vt(e,t){t||(t=ce().providerModels);let n=t?.[e];if(n&&n.length>0){try{let r=W(e);if(r.length>0)return ae(n,r)}catch{}try{let r=C(e);if(r)return ae(n,r.getAvailableModels())}catch{}return n}try{let r=W(e);if(r.length>0)return r}catch{}try{let r=C(e);if(r)return r.getAvailableModels()}catch{}return[]}o(vt,"getProviderAvailableModels");function yt(e,t){let n=pe(e,t);if(n!=="unknown")return n;try{let r=C(e);if(r)return r.getReasoningCapability(t)}catch{}return"unknown"}o(yt,"getProviderReasoningCapability");function Et(e){let t=me(e);if(t)return t;try{return H().find(r=>r.name===e)?.capabilityProfile??null}catch{return null}}o(Et,"getProviderCapabilityProfile");function je(e,t){let n=Et(e),r=yt(e,t);if(n)return{capabilityProfile:n,reasoningCapability:r};try{let i=ve(e);return{capabilityProfile:i.getCapabilityProfile(),reasoningCapability:i.getReasoningCapability(t)}}catch{return null}}o(je,"getProviderCapabilityMetadata");function sn(e,t){let n=je(e,t);return n?xe({providerName:e,model:t,capabilityProfile:n.capabilityProfile,reasoningCapability:n.reasoningCapability==="unknown"?void 0:n.reasoningCapability}):null}o(sn,"getProviderCapabilitySnapshot");function wt(e,t,n,r){let i=je(e,t);return i?be({providerName:e,model:t,capabilityProfile:i.capabilityProfile,reasoningCapability:i.reasoningCapability==="unknown"?void 0:i.reasoningCapability,reasoningMode:n,hints:r}):null}o(wt,"getProviderPolicyDecision");function an(e){let t=e.transport==="cli-bridge"?"CLI bridge":"Native API",n=e.conversationSemantics==="last-user-message"?"forwards only the latest user message":"preserves full conversation history",r=e.mcpSupport==="native"?"MCP available":"MCP unavailable";return`${t}; ${n}; ${r}`}o(an,"describeProviderCapabilitySummary");function cn(e){switch(e){case"native-budget":return"B";case"native-effort":return"E";case"native-toggle":return"T";case"native-adaptive":return"A";default:return"-"}}o(cn,"formatReasoningCapabilityShort");function _(e){if(e)return e==="none"?"off":e}o(_,"formatReasoningEffortForDisplay");function X(e,t){let n=_(t);n&&!e.includes(n)&&e.push(n)}o(X,"pushUniqueEffortDisplay");function ln(e,t){let n=["auto"],i=U(e,t)?.supportedEfforts?.filter(s=>s.isUserVisible!==!1);if(!i||i.length===0){for(let s of["off","low","medium","high"])X(n,s);return n}for(let s of i)X(n,s.value);return n}o(ln,"getProviderReasoningEffortOptions");function un(e,t){let n=U(e,t),r=new Set(n?.disabledEfforts??[]),i=n?.supportedEfforts?.filter(c=>c.isUserVisible!==!1),s=[],a=n?.supportsDisabledThinking===!0;if(!i||i.length===0){for(let c of["low","medium","high"])X(s,c);a=!0}else for(let c of i){if(c.value==="none"){a=!0;continue}if(r.has(c.value)){a=!0;continue}X(s,c.value)}let l=[];return a&&l.push("off"),l.push(...s),l.push("auto"),l}o(un,"getProviderReasoningEffortCycle");function xt(e,t){if(t===!1)return"off";switch(e){case"off":return"off";case"quick":return"low";case"balanced":return"medium";case"deep":return"high";default:return"auto"}}o(xt,"legacyReasoningModeToEffortDisplay");function U(e,t){let n=t??ht(e);if(!n)return;let r=ye(e,n)?.reasoningProfile;if(r)return le(r,we(e,n))}o(U,"resolveReasoningProfileForDisplay");function dn(e){let t=_(e.effort)??xt(e.reasoningMode,e.thinking),n=U(e.provider,e.model);if(!n)return t;try{let r=ue({capability:n,explicitEffort:e.effortOverride?e.effort:void 0,sessionEffort:e.effortOverride?void 0:e.effort,legacyReasoningMode:e.reasoningMode,thinking:e.thinking}),i=_(r.configuredEffort)??t,a=r.configuredEffort!==void 0&&n.disabledEfforts?.includes(r.configuredEffort)===!0?"off":_(r.effectiveEffort);return a&&a!==i?`${i}->${a}`:i}catch{if(e.effort)try{let r=q({currentEffort:e.effort,capability:n}),i=_(e.effort)??t,s=_(r.effectiveEffort);return s&&s!==i?`${i}->${s}`:i}catch{return t}return t}}o(dn,"formatReasoningEffortStatusLabel");function fn(e){let t=It(e);if(!t)return{preserved:!0};let n=U(e.provider,e.model);if(!n)return{configuredEffort:t,runtimeEffort:t,preserved:!0};let r=q({currentEffort:t,capability:n});return{configuredEffort:t,runtimeEffort:r.effectiveEffort,preserved:r.preserved,diagnostic:r.diagnostic}}o(fn,"resolveProviderReasoningRuntimeEffort");function bt(e){switch(e){case"native-budget":return"budget";case"native-effort":return"effort";case"native-toggle":return"toggle";case"native-adaptive":return"adaptive";default:return"none"}}o(bt,"describeReasoningCapabilityControl");function pn(e,t){if(e==="off")return"Reasoning disabled";switch(t){case"native-budget":return"Uses native thinking budget control";case"native-effort":return"Uses native reasoning effort control";case"native-toggle":return"Uses provider-native thinking toggle only";case"native-adaptive":return"Model adaptively decides thinking depth (Opus 4.7+)";case"none":return"Runs without native reasoning parameters";case"prompt-only":return"Uses prompt overlays only; no native reasoning parameter";default:return"Runs without native reasoning parameters"}}o(pn,"describeReasoningExecution");function mn(e){let t=[];e||(e=ce().providerModels);for(let n of ge())t.push({name:n.name,model:n.model,models:vt(n.name,e),configured:n.capabilityProfile.transport==="cli-bridge"?!0:n.configured,reasoningCapability:n.reasoningCapability,capabilityProfile:n.capabilityProfile});try{let n=H().map(r=>({...r,models:(()=>{let i=e?.[r.name];return i&&i.length>0?ae(i,r.models):r.models})()}));t.push(...n)}catch{}return t}o(mn,"getProviderList");function gn(e){if(de(e))return!0;try{return C(e)?.isConfigured()??!1}catch{return!1}}o(gn,"isProviderConfigured");var F=class extends Error{static{o(this,"InvalidAgentModeConfigError")}};function Pt(e){let t=e.agentMode;if(t===void 0||t==="ama"||t==="sa")return e;if(t!=="amaw"&&t!=="ama-workflow")throw new F(`Invalid agentMode "${t}" in ${f}. Expected "ama" or "sa".`);let n={...e,agentMode:"ama",schemaVersion:Math.max(e.schemaVersion??0,st)},r=`${f}.migrate-${process.pid}.tmp`;try{u.writeFileSync(r,JSON.stringify(n,null,2),{mode:384}),u.renameSync(r,f)}catch{u.rmSync(r,{force:!0})}return Ne||(process.emitWarning(`Migrated persisted agentMode "${t}" to "ama". Workflow use is now explicit intent.`,{code:"KODAX_AGENT_MODE_MIGRATED"}),Ne=!0),n}o(Pt,"migrateLegacyAgentModeConfig");function ce(){try{if(u.existsSync(f)){let n=JSON.parse(u.readFileSync(f,"utf-8")),r=Pt(n),i=r.reasoningCeiling??r.reasoningMode,s=[],a={};try{s=[...K(d).document.paths]}catch{}try{a=$(d).document.servers}catch{}return mt(pt({...r,reasoningMode:i,extensions:se(s),mcpServers:a}))}}catch(n){if(n instanceof F)throw n}let e,t;try{let n=K(d);n.source!=="default"&&(e=se([...n.document.paths]))}catch{}try{let n=$(d);n.source!=="default"&&(t=n.document.servers)}catch{}return{...e===void 0?{}:{extensions:e},...t===void 0?{}:{mcpServers:t}}}o(ce,"loadConfig");var St=p.join(d,"config.example.jsonc"),oe={mcp:p.join(d,"integrations","mcp.example.jsonc"),a2a:p.join(d,"integrations","a2a.example.jsonc"),extensions:p.join(d,"integrations","extensions.example.jsonc")},_t=[{name:"core",path:St},{name:"mcp",path:oe.mcp},{name:"a2a",path:oe.a2a},{name:"extensions",path:oe.extensions}];function Ct(){let e=[];for(let t of _t)try{if(u.existsSync(t.path))continue;u.mkdirSync(p.dirname(t.path),{recursive:!0}),u.writeFileSync(t.path,Ce(t.name),"utf8"),e.push(t.path)}catch{}return e}o(Ct,"ensureExampleConfigFiles");function hn(){return Ct()[0]}o(hn,"ensureExampleConfigFile");var j=new Map;function kt(e,t){let n=process.env[e],r=j.get(e),i=r!==void 0&&n===r;if(n!==void 0&&!i){j.delete(e);return}if(t===void 0){i&&delete process.env[e],j.delete(e);return}process.env[e]=t,j.set(e,t)}o(kt,"projectConfigEnvironment");var Xe=[{configPath:"streamIdleTimeoutMs",env:"KODAX_STREAM_IDLE_TIMEOUT_MS",value:o(e=>x(e.streamIdleTimeoutMs),"value")},{configPath:"repoIntelligenceMode",env:"KODAX_REPO_INTELLIGENCE",value:o(e=>e.repoIntelligenceMode,"value")},{configPath:"repoIntelligenceTrace",env:"KODAX_REPO_INTELLIGENCE_TRACE",value:o(e=>S(e.repoIntelligenceTrace),"value")},{configPath:"verifierLog",env:"KODAX_VERIFIER_LOG",value:o(e=>S(e.verifierLog),"value")},{configPath:"stallLog",env:"KODAX_STALL_LOG",value:o(e=>S(e.stallLog),"value")},{configPath:"fallbackProviders",env:"KODAX_FALLBACK_PROVIDERS",value:o(e=>Ot(e.fallbackProviders),"value")},{configPath:"fastProvider",env:"KODAX_FAST_PROVIDER",value:o(e=>v(e.fastProvider),"value")},{configPath:"fastModel",env:"KODAX_FAST_MODEL",value:o(e=>v(e.fastModel),"value")},{configPath:"deepProvider",env:"KODAX_DEEP_PROVIDER",value:o(e=>v(e.deepProvider),"value")},{configPath:"deepModel",env:"KODAX_DEEP_MODEL",value:o(e=>v(e.deepModel),"value")},{configPath:"provider",env:"KODAX_PROVIDER",value:o(e=>v(e.provider),"value")},{configPath:"effort",env:"KODAX_EFFORT",value:o(e=>v(e.effort),"value")},{configPath:"runtimeMode",env:"KODAX_RUNTIME_MODE",value:o(e=>e.runtimeMode,"value")},{configPath:"sessionRetentionDays",env:"KODAX_SESSION_RETENTION_DAYS",value:o(e=>x(e.sessionRetentionDays),"value")},{configPath:"maxOutputTokens",env:"KODAX_MAX_OUTPUT_TOKENS",value:o(e=>x(e.maxOutputTokens),"value")},{configPath:"disablePromptCache",env:"KODAX_DISABLE_PROMPT_CACHE",value:o(e=>S(e.disablePromptCache),"value")},{configPath:"lsp",env:"KODAX_LSP",value:o(e=>S(e.lsp),"value")},{configPath:"lspAutoDownload",env:"KODAX_LSP_DOWNLOAD",value:o(e=>S(e.lspAutoDownload),"value")},{configPath:"acpLogLevel",env:"KODAX_ACP_LOG",value:o(e=>v(e.acpLogLevel),"value")},{configPath:"repoIntelligence.toolWaitMs",env:"KODAX_REPO_INTELLIGENCE_TOOL_WAIT_MS",value:o(e=>x(e.repoIntelligence?.toolWaitMs),"value")},{configPath:"repoIntelligence.workerTimeoutMs",env:"KODAX_REPO_INTELLIGENCE_WORKER_TIMEOUT_MS",value:o(e=>x(e.repoIntelligence?.workerTimeoutMs),"value")},{configPath:"repoIntelligence.workerOldSpaceMb",env:"KODAX_REPO_INTELLIGENCE_WORKER_OLD_SPACE_MB",value:o(e=>x(e.repoIntelligence?.workerOldSpaceMb),"value")},{configPath:"repoIntelligence.storageDir",env:"KODAX_REPO_INTELLIGENCE_STORAGE_DIR",value:o(e=>v(e.repoIntelligence?.storageDir),"value")},{configPath:"workflow.maxConcurrency",env:"KODAX_WORKFLOW_MAX_CONCURRENCY",value:o(e=>x(e.workflow?.maxConcurrency),"value")}];function Mt(e){for(let t of Xe)kt(t.env,t.value(e))}o(Mt,"applyConfigSurfaceBridges");function v(e){return e?.trim()||void 0}o(v,"normalizedConfigString");function x(e){return typeof e=="number"&&Number.isFinite(e)?String(e):void 0}o(x,"configNumberString");function S(e){return e===void 0?void 0:e?"1":"0"}o(S,"configBooleanString");function Ot(e){return e?.filter(t=>t.trim().length>0).join(",")}o(Ot,"configStringList");var vn=[...Xe.map(({configPath:e,env:t})=>({configPath:e,env:t}))];function At(e){Mt(e)}o(At,"applyConfigEnvironment");function yn(){dt();let e=ce();return At(e),ft(e),Se(e.locale),e}o(yn,"prepareRuntimeConfig");function En(e){let t={};if(u.existsSync(f))try{let a=JSON.parse(u.readFileSync(f,"utf8"));a&&typeof a=="object"&&!Array.isArray(a)&&(t=a)}catch{}let{extensions:n,mcpServers:r,...i}=e,s={...t,...i};for(let a of Object.keys(i))i[a]===void 0&&delete s[a];if(u.mkdirSync(p.dirname(f),{recursive:!0}),u.writeFileSync(f,JSON.stringify(s,null,2)),n!==void 0){let a=K(d);A({domain:"extensions",configHome:d,...a.source==="user"?{expectedRevision:a.revision}:{},document:{version:1,paths:se(n)??[]},validate:M})}if(r!==void 0){let a=$(d);A({domain:"mcp",configHome:d,...a.source==="user"?{expectedRevision:a.revision}:{},document:{version:1,servers:r},validate:k})}}o(En,"saveConfig");function wn(e,t,n){return e.effort!==void 0||V(n).kind==="value"||t.effort!==void 0}o(wn,"resolveInitialEffortOverride");function y(e){return e?.trim()?e:void 0}o(y,"nonEmptySelection");function xn(e){return y(e.explicitProvider)??y(e.environmentProvider)??y(e.configuredProvider)??e.defaultProvider}o(xn,"resolveRuntimeProviderSelection");function bn(e){let t=y(e.explicitModel);if(t)return t;let n=y(e.configuredModel);if(!n)return;let r=y(e.explicitProvider)??y(e.environmentProvider);return r?y(e.configuredProvider)===r?n:void 0:n}o(bn,"resolveRuntimeModelSelection");function Pn(e){if(e.explicitEffort!==void 0)return z(e.explicitEffort);let t=V(e.environmentEffort);return t.kind==="value"?t.value:e.configuredEffort===void 0?void 0:z(e.configuredEffort)}o(Pn,"resolveRuntimeEffortSelection");function It(e){return e.permissionMode==="plan"&&e.effortOverride!==!0&&e.planModeEffort!==void 0?e.planModeEffort:e.effort}o(It,"resolvePermissionModeEffort");async function Sn(e){try{let{stdout:t}=await it("git rev-parse --show-toplevel",{cwd:e});return t.trim()}catch{return null}}o(Sn,"getGitRoot");function Rt(e){switch(e){case"builtin":return"Built-in";case"runtime":return"Runtime extension";case"custom":return"Custom config";default:return"Unknown"}}o(Rt,"formatProviderSourceKind");function _n(e){let t=e.transport==="cli-bridge"?"CLI bridge":"Native API",n=e.conversationSemantics==="last-user-message"?"latest-user-message only":"full conversation history";return[`Source: ${Rt(e.sourceKind)}`,`Transport: ${t}`,`Conversation semantics: ${n}`,`Context fidelity: ${e.contextFidelity}`,`Tool calling: ${e.toolCallingFidelity}`,`Session behavior: ${e.sessionSupport}`,`Long-running support: ${e.longRunningSupport}`,`Evidence-heavy flows: ${e.evidenceSupport}`,`Multimodal support: ${e.multimodalSupport}`,`MCP support: ${e.mcpSupport}`,`Reasoning control: ${bt(e.reasoningCapability)}`]}o(_n,"formatProviderCapabilityDetailLines");function Cn(e,t,n){return[{label:"General coding",hints:{}},{label:"Evidence-heavy review",hints:{evidenceHeavy:!0}},{label:"Long-running task",hints:{longRunning:!0}}].map(i=>({label:i.label,decision:wt(e,t,n,i.hints)})).filter(i=>i.decision!==null)}o(Cn,"getProviderCommonPolicyScenarios");var $e=.5,Ke=0,I={locked:!1,queue:[]};async function kn(e){for(;I.locked;)await new Promise(t=>I.queue.push(t));I.locked=!0;try{let t=(Date.now()-Ke)/1e3;t<$e&&await new Promise(r=>setTimeout(r,($e-t)*1e3));let n=await e();return Ke=Date.now(),n}finally{I.locked=!1;let t=I.queue.shift();t&&t()}}o(kn,"rateLimitedCall");export{Dt as a,_e as b,Ce as c,k as d,M as e,P as f,$ as g,K as h,Be as i,Ft as j,A as k,Oe as l,d as m,tn as n,f as o,nn as p,ut as q,rn as r,ft as s,gt as t,on as u,ht as v,vt as w,yt as x,Et as y,sn as z,wt as A,an as B,cn as C,_ as D,ln as E,un as F,dn as G,fn as H,bt as I,pn as J,mn as K,gn as L,ce as M,St as N,oe as O,Ct as P,hn as Q,vn as R,At as S,yn as T,En as U,wn as V,xn as W,bn as X,Pn as Y,It as Z,Sn as _,Rt as $,_n as aa,Cn as ba,kn as ca};
156
+ `};function Ce(e){return _e[e]}o(Ce,"getConfigTemplate");import{closeSync as Y,existsSync as m,fsyncSync as Oe,mkdirSync as ee,openSync as te,readFileSync as Ie,renameSync as Re,statSync as Ge,unlinkSync as Q,watch as ze,writeFileSync as De}from"node:fs";import{createHash as Ve}from"node:crypto";import g from"node:path";var qe={mcp:"mcp.json",a2a:"a2a.json",extensions:"extensions.json"},We=new Set(["type","command","args","cwd","env","url","headers","connect","startupTimeoutMs","requestTimeoutMs","auth"]);function E(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}o(E,"isRecord");function w(e,t){if(!E(e))throw new Error(`${t} must be an object.`);return e}o(w,"requireRecord");function T(e,t,n){let r=Object.keys(e).find(i=>!t.has(i));if(r!==void 0)throw new Error(`${n} has unknown field "${r}".`)}o(T,"assertNoUnknownKeys");function Le(e,t){if(e.version!==1)throw new Error(`${t} version must be 1.`)}o(Le,"requireVersionOne");function ke(e,t){let n=w(e,t);for(let[r,i]of Object.entries(n))if(r.trim().length===0||typeof i!="string")throw new Error(`${t} must contain non-empty string keys and string values.`);return structuredClone(n)}o(ke,"requireStringMap");function Z(e,t){if(!Array.isArray(e)||!e.every(n=>typeof n=="string"&&n.trim().length>0))throw new Error(`${t} must be an array of non-empty strings.`);return e.map(n=>n.trim())}o(Z,"requireStringArray");function B(e,t){if(e!==void 0&&(!Number.isFinite(e)||Number(e)<=0))throw new Error(`${t} must be a positive number.`)}o(B,"validatePositiveNumber");function He(e,t){if(e.trim().length===0)throw new Error("MCP server names must not be empty.");let n=w(t,`MCP server "${e}"`);T(n,We,`MCP server "${e}"`);let r=n.type??"stdio";if(!["stdio","sse","streamable-http","http"].includes(String(r)))throw new Error(`MCP server "${e}" has an unsupported transport type.`);if(r==="stdio"){if(typeof n.command!="string"||n.command.trim().length===0)throw new Error(`MCP server "${e}" stdio transport requires command.`)}else if(typeof n.url!="string"||n.url.trim().length===0)throw new Error(`MCP server "${e}" ${String(r)} transport requires url.`);if(n.args!==void 0&&Z(n.args,`MCP server "${e}" args`),n.cwd!==void 0&&typeof n.cwd!="string")throw new Error(`MCP server "${e}" cwd must be a string.`);if(n.env!==void 0&&ke(n.env,`MCP server "${e}" env`),n.headers!==void 0&&ke(n.headers,`MCP server "${e}" headers`),n.connect!==void 0&&!["lazy","prewarm","disabled"].includes(String(n.connect)))throw new Error(`MCP server "${e}" has an unsupported connect mode.`);if(B(n.startupTimeoutMs,`MCP server "${e}" startupTimeoutMs`),B(n.requestTimeoutMs,`MCP server "${e}" requestTimeoutMs`),n.auth!==void 0){let i=w(n.auth,`MCP server "${e}" auth`);if(T(i,new Set(["type","clientId","authorizationUrl","tokenUrl","scopes","redirectPort"]),`MCP server "${e}" auth`),i.type!=="oauth2")throw new Error(`MCP server "${e}" auth type must be oauth2.`);for(let a of["clientId","authorizationUrl","tokenUrl"])if(i[a]!==void 0&&typeof i[a]!="string")throw new Error(`MCP server "${e}" auth.${a} must be a string.`);i.scopes!==void 0&&Z(i.scopes,`MCP server "${e}" auth.scopes`),B(i.redirectPort,`MCP server "${e}" auth.redirectPort`)}return structuredClone(n)}o(He,"parseMcpServer");function k(e){let t=w(e,"MCP integration config");T(t,new Set(["version","servers"]),"MCP integration config"),Le(t,"MCP integration config");let n=w(t.servers,"MCP integration config servers"),r={};for(let[i,s]of Object.entries(n))r[i]=He(i,s);return{version:1,servers:r}}o(k,"parseMcpIntegrationDocument");function M(e){let t=w(e,"Extensions integration config");T(t,new Set(["version","paths"]),"Extensions integration config"),Le(t,"Extensions integration config");let n=Z(t.paths,"Extensions integration config paths");if(new Set(n).size!==n.length)throw new Error("Extensions integration config paths must not contain duplicates.");return{version:1,paths:n}}o(M,"parseExtensionsIntegrationDocument");function P(e,t){return g.join(g.resolve(t),"integrations",qe[e])}o(P,"resolveIntegrationConfigPath");function ne(e){return g.join(g.resolve(e),"config.json")}o(ne,"coreConfigPath");function Te(e){return Ve("sha256").update(e).digest("hex")}o(Te,"hashText");function re(e){let t=Ie(e,"utf8");try{return{raw:t,value:JSON.parse(t)}}catch(n){let r=n instanceof Error?n.message:String(n);throw new Error(`Invalid JSON: ${r}`)}}o(re,"readJsonFile");function A(e){return{domain:e.domain,source:e.source,path:e.path,revision:Te(e.raw),document:structuredClone(e.document),loadedAt:new Date().toISOString()}}o(A,"snapshot");function N(e){let t=ne(e);return m(t)?w(re(t).value,"Core config"):{}}o(N,"readCoreConfig");function $(e){let t=P("mcp",e);if(m(t)){let i=re(t);return A({domain:"mcp",source:"user",path:t,raw:i.raw,document:k(i.value)})}let n=N(e).mcpServers,r=k({version:1,servers:E(n)?n:{}});return A({domain:"mcp",source:n===void 0?"default":"legacy-user",path:t,raw:JSON.stringify(r),document:r})}o($,"readMcpIntegration");function K(e){let t=P("extensions",e);if(m(t)){let i=re(t);return A({domain:"extensions",source:"user",path:t,raw:i.raw,document:M(i.value)})}let n=N(e).extensions,r=M({version:1,paths:Array.isArray(n)?n:[]});return A({domain:"extensions",source:n===void 0?"default":"legacy-user",path:t,raw:JSON.stringify(r),document:r})}o(K,"readExtensionsIntegration");function Je(e){if(!E(e))return[];let t=[],n=/(token|secret|password|api[_-]?key|authorization)/i;for(let[r,i]of Object.entries(e))if(E(i))for(let s of["env","headers"]){let a=i[s];if(E(a))for(let[l,c]of Object.entries(a))n.test(l)&&typeof c=="string"&&!c.startsWith("${env:")&&t.push(`MCP server "${r}" ${s}.${l} may contain a literal secret.`)}return t}o(Je,"likelySecretWarnings");function Be(e){let t=N(e),n=P("mcp",e),r=P("extensions",e),i=t.mcpServers,s=t.extensions,a=E(i)?Object.keys(i).length:0,l=Array.isArray(s)?s.length:0,c=o((b,R,D)=>m(b)?{action:"none",entries:R,destination:b,reason:"destination-exists"}:D?{action:"create",entries:R,destination:b}:{action:"none",entries:0,destination:b,reason:"legacy-absent"},"domainPlan");return{mcp:c(n,a,i!==void 0),extensions:c(r,l,s!==void 0),warnings:Je(i)}}o(Be,"planLegacyIntegrationMigration");function Ye(e,t){let n=ne(e);ee(g.dirname(n),{recursive:!0,mode:448});let r=`${n}.${process.pid}.${Date.now()}.tmp`,i=te(r,"wx",384);try{De(i,`${JSON.stringify(t,null,2)}
157
+ `,"utf8"),Oe(i)}finally{Y(i)}try{Re(r,n)}catch(s){throw m(r)&&Q(r),new Error("Failed to atomically clean legacy integration fields.",{cause:s})}}o(Ye,"writeCoreConfigAtomically");function Ft(e){let t=Be(e.configHome),n=N(e.configHome),r=[];t.mcp.action==="create"&&(O({domain:"mcp",configHome:e.configHome,document:{version:1,servers:E(n.mcpServers)?n.mcpServers:{}},validate:k}),r.push("mcp")),t.extensions.action==="create"&&(O({domain:"extensions",configHome:e.configHome,document:{version:1,paths:Array.isArray(n.extensions)?n.extensions:[]},validate:M}),r.push("extensions"));let i=!1;if(e.cleanupLegacy&&m(ne(e.configHome))){let s={...n};m(t.mcp.destination)&&delete s.mcpServers,m(t.extensions.destination)&&delete s.extensions,Qe(n,s)||(Ye(e.configHome,s),i=!0)}return{...t,applied:r,cleanedLegacy:i}}o(Ft,"migrateLegacyIntegrationConfig");function Qe(e,t){return JSON.stringify(e)===JSON.stringify(t)}o(Qe,"isDeepStrictEqualForConfig");function Ze(e){return m(e)?Te(Ie(e,"utf8")):void 0}o(Ze,"currentUserRevision");function et(e){let t=`${e}.lock`;try{return{fd:te(t,"wx",384),path:t}}catch(n){throw new Error(`Integration configuration is busy: ${g.basename(e)}`,{cause:n})}}o(et,"acquireWriteLock");function O(e){let t=P(e.domain,e.configHome),n=e.validate(e.document);ee(g.dirname(t),{recursive:!0,mode:448});let r=et(t);try{let i=Ze(t);if(e.expectedRevision!==void 0&&i!==e.expectedRevision)throw new Error(`Integration configuration revision changed (expected ${e.expectedRevision}, actual ${i??"missing"}).`);let s=`${JSON.stringify(n,null,2)}
158
+ `,a=`${t}.${process.pid}.${Date.now()}.tmp`,l=te(a,"wx",384);try{De(l,s,"utf8"),Oe(l)}finally{Y(l)}try{Re(a,t)}catch(c){throw m(a)&&Q(a),new Error(`Failed to atomically replace ${g.basename(t)}.`,{cause:c})}return A({domain:e.domain,source:"user",path:t,raw:s,document:n})}finally{Y(r.fd),m(r.path)&&Q(r.path)}}o(O,"writeIntegrationDocument");function Me(e){if(!m(e))return"missing";let t=Ge(e);return`${t.dev}:${t.ino}:${t.size}:${t.mtimeMs}`}o(Me,"metadataSignature");function L(e,t){return{code:e,message:t,time:new Date().toISOString()}}o(L,"safeDiagnostic");var Ae=class{static{o(this,"IntegrationConfigController")}#a;#r;#c;#l;#e;#t;#u="";#o;#n;#i;#d=Promise.resolve();#s=new Set;constructor(t){this.#a=t.domain,this.#r=P(t.domain,t.configHome),this.#l=t.validate,this.#c=t.read}async initialize(){let t=await this.reload();if(!t.ok||!this.#e)throw new Error(t.ok?"Integration configuration did not produce a snapshot.":t.error);return structuredClone(this.#e)}snapshot(){return this.#e?structuredClone(this.#e):void 0}status(){return{domain:this.#a,path:this.#r,...this.#e?{revision:this.#e.revision,source:this.#e.source,lastReloadAt:this.#e.loadedAt}:{},...this.#t?{diagnostic:this.#t}:{},watching:this.#o!==void 0}}subscribe(t){return this.#s.add(t),()=>{this.#s.delete(t)}}reload(){let t=this.#d.then(()=>this.#f());return this.#d=t.then(()=>{},()=>{}),t}async#f(){this.#u=Me(this.#r);let t;try{t=this.#c(),this.#l(t.document)}catch{return this.#t=L("invalid-config","Integration configuration is invalid; check the file against its versioned schema."),{ok:!1,error:this.#t.message}}let n=this.#e?structuredClone(this.#e):void 0;try{for(let r of this.#s)await r(structuredClone(t),n)}catch{return this.#t=L("activation-failed","Integration configuration could not be activated; the previous configuration remains active."),{ok:!1,error:this.#t.message}}return this.#e=t,this.#t=void 0,{ok:!0,snapshot:structuredClone(t)}}async ensureCurrent(){return Me(this.#r)===this.#u&&this.#e?{ok:!0,snapshot:structuredClone(this.#e)}:this.reload()}startWatching(t=100,n=2e3){if(!(this.#o||this.#i)){ee(g.dirname(this.#r),{recursive:!0,mode:448});try{this.#o=ze(g.dirname(this.#r),(r,i)=>{i!==null&&i.toString()!==g.basename(this.#r)||(this.#n&&clearTimeout(this.#n),this.#n=setTimeout(()=>{this.#n=void 0,this.reload()},t),this.#n.unref?.())}),this.#o.unref(),this.#o.on("error",()=>{this.#t=L("watcher-degraded","Integration watcher is degraded; metadata polling remains active.")})}catch{this.#t=L("watcher-degraded","Integration watcher is degraded; metadata polling remains active.")}this.#i=setInterval(()=>{this.ensureCurrent()},n),this.#i.unref?.()}}close(){this.#n&&clearTimeout(this.#n),this.#n=void 0,this.#i&&clearInterval(this.#i),this.#i=void 0,this.#o?.close(),this.#o=void 0,this.#s.clear()}};var it=rt(tt),st=2,Ne=!1,d=Ee(),tn=p.join(d,"sessions"),f=p.join(d,"config.json"),nn=60,h=null,ie=!1,at="dumb";function ct(e){let t=p.basename(e).toLowerCase(),n="__KODAX_SHELL_ENV_START__",r=`printf '%s\\0' '${n}'; env -0`;return t==="fish"?{args:["-i","-c",r],sentinel:n}:{args:t==="bash"||t==="zsh"?["-ic",r]:["-lc",r],sentinel:n}}o(ct,"buildShellEnvCommand");function lt(e,t){let n=`${t}\0`,r=e.lastIndexOf(n);if(r===-1)return{};let i=e.slice(r+n.length),s={};for(let a of i.split("\0")){if(!a)continue;let l=a.indexOf("=");l<=0||(s[a.slice(0,l)]=a.slice(l+1))}return s}o(lt,"parseNullDelimitedShellEnv");function ut(e={}){let t=e.env??process.env;if((e.platform??process.platform)==="win32"||t.KODAX_DISABLE_SHELL_ENV_HYDRATION==="1")return!1;let r=e.shell??t.SHELL;if(!r||!p.isAbsolute(r))return!1;let{args:i,sentinel:s}=ct(r),a=e.run??nt,l={...t,TERM:at},c=a(r,i,{encoding:"utf8",env:l,maxBuffer:1024*1024,timeout:5e3,windowsHide:!0,detached:!0,stdio:["ignore","pipe","pipe"]});if(c.status!==0||!c.stdout)return!1;let b=typeof c.stdout=="string"?c.stdout:c.stdout.toString("utf8"),R=lt(b,s),D=!1;for(let[G,Fe]of Object.entries(R))G!=="TERM"&&t[G]===void 0&&(t[G]=Fe,D=!0);return D}o(ut,"hydrateProcessEnvFromShell");function dt(){if(!ie){ie=!0;try{ut()}catch{}}}o(dt,"ensureShellEnvironmentHydrated");function rn(){ie=!1}o(rn,"resetShellEnvironmentHydrationForTesting");function ft(e){he(e.customProviders??[])}o(ft,"registerConfiguredCustomProviders");function se(e){if(!Array.isArray(e))return;let t=e.filter(n=>typeof n=="string").map(n=>n.trim()).filter(n=>n.length>0);return t.length>0?t:[]}o(se,"normalizeConfiguredExtensions");function pt(e){if(e.permissionMode!=="default")return e;let t={...e,permissionMode:"accept-edits"};try{u.mkdirSync(p.dirname(f),{recursive:!0}),u.writeFileSync(f,JSON.stringify(t,null,2))}catch{}return t}o(pt,"migrateLegacyPermissionModeInConfig");function mt(e){if(e.permissionMode!=="auto-in-project")return e;try{let t=u.readFileSync(f,"utf-8"),n=t.replace(/("permissionMode"\s*:\s*)"auto-in-project"/,'$1"auto"');n!==t&&u.writeFileSync(f,n)}catch{}return{...e,permissionMode:"auto"}}o(mt,"migrateAutoInProjectAliasInConfig");function gt(){if(h)return h;let e="0.7.74";if(e)return h=e,h;let t=p.join(p.dirname(ot(import.meta.url)),"../../package.json");if(u.existsSync(t))try{return h=JSON.parse(u.readFileSync(t,"utf-8")).version??"0.0.0",h??"0.0.0"}catch{}return h="0.0.0",h}o(gt,"getVersion");var on=gt();function ht(e){return fe(e)}o(ht,"getProviderModel");function ae(e,t){let n=new Set(e.map(i=>i.toLowerCase())),r=[...e];for(let i of t)n.has(i.toLowerCase())||r.push(i);return r}o(ae,"mergeModels");function vt(e,t){t||(t=ce().providerModels);let n=t?.[e];if(n&&n.length>0){try{let r=W(e);if(r.length>0)return ae(n,r)}catch{}try{let r=C(e);if(r)return ae(n,r.getAvailableModels())}catch{}return n}try{let r=W(e);if(r.length>0)return r}catch{}try{let r=C(e);if(r)return r.getAvailableModels()}catch{}return[]}o(vt,"getProviderAvailableModels");function yt(e,t){let n=pe(e,t);if(n!=="unknown")return n;try{let r=C(e);if(r)return r.getReasoningCapability(t)}catch{}return"unknown"}o(yt,"getProviderReasoningCapability");function Et(e){let t=me(e);if(t)return t;try{return H().find(r=>r.name===e)?.capabilityProfile??null}catch{return null}}o(Et,"getProviderCapabilityProfile");function je(e,t){let n=Et(e),r=yt(e,t);if(n)return{capabilityProfile:n,reasoningCapability:r};try{let i=ve(e);return{capabilityProfile:i.getCapabilityProfile(),reasoningCapability:i.getReasoningCapability(t)}}catch{return null}}o(je,"getProviderCapabilityMetadata");function sn(e,t){let n=je(e,t);return n?xe({providerName:e,model:t,capabilityProfile:n.capabilityProfile,reasoningCapability:n.reasoningCapability==="unknown"?void 0:n.reasoningCapability}):null}o(sn,"getProviderCapabilitySnapshot");function wt(e,t,n,r){let i=je(e,t);return i?be({providerName:e,model:t,capabilityProfile:i.capabilityProfile,reasoningCapability:i.reasoningCapability==="unknown"?void 0:i.reasoningCapability,reasoningMode:n,hints:r}):null}o(wt,"getProviderPolicyDecision");function an(e){let t=e.transport==="cli-bridge"?"CLI bridge":"Native API",n=e.conversationSemantics==="last-user-message"?"forwards only the latest user message":"preserves full conversation history",r=e.mcpSupport==="native"?"MCP available":"MCP unavailable";return`${t}; ${n}; ${r}`}o(an,"describeProviderCapabilitySummary");function cn(e){switch(e){case"native-budget":return"B";case"native-effort":return"E";case"native-toggle":return"T";case"native-adaptive":return"A";default:return"-"}}o(cn,"formatReasoningCapabilityShort");function _(e){if(e)return e==="none"?"off":e}o(_,"formatReasoningEffortForDisplay");function X(e,t){let n=_(t);n&&!e.includes(n)&&e.push(n)}o(X,"pushUniqueEffortDisplay");function ln(e,t){let n=["auto"],i=U(e,t)?.supportedEfforts?.filter(s=>s.isUserVisible!==!1);if(!i||i.length===0){for(let s of["off","low","medium","high"])X(n,s);return n}for(let s of i)X(n,s.value);return n}o(ln,"getProviderReasoningEffortOptions");function un(e,t){let n=U(e,t),r=new Set(n?.disabledEfforts??[]),i=n?.supportedEfforts?.filter(c=>c.isUserVisible!==!1),s=[],a=n?.supportsDisabledThinking===!0;if(!i||i.length===0){for(let c of["low","medium","high"])X(s,c);a=!0}else for(let c of i){if(c.value==="none"){a=!0;continue}if(r.has(c.value)){a=!0;continue}X(s,c.value)}let l=[];return a&&l.push("off"),l.push(...s),l.push("auto"),l}o(un,"getProviderReasoningEffortCycle");function xt(e,t){if(t===!1)return"off";switch(e){case"off":return"off";case"quick":return"low";case"balanced":return"medium";case"deep":return"high";default:return"auto"}}o(xt,"legacyReasoningModeToEffortDisplay");function U(e,t){let n=t??ht(e);if(!n)return;let r=ye(e,n)?.reasoningProfile;if(r)return le(r,we(e,n))}o(U,"resolveReasoningProfileForDisplay");function dn(e){let t=_(e.effort)??xt(e.reasoningMode,e.thinking),n=U(e.provider,e.model);if(!n)return t;try{let r=ue({capability:n,explicitEffort:e.effortOverride?e.effort:void 0,sessionEffort:e.effortOverride?void 0:e.effort,legacyReasoningMode:e.reasoningMode,thinking:e.thinking}),i=_(r.configuredEffort)??t,a=r.configuredEffort!==void 0&&n.disabledEfforts?.includes(r.configuredEffort)===!0?"off":_(r.effectiveEffort);return a&&a!==i?`${i}->${a}`:i}catch{if(e.effort)try{let r=q({currentEffort:e.effort,capability:n}),i=_(e.effort)??t,s=_(r.effectiveEffort);return s&&s!==i?`${i}->${s}`:i}catch{return t}return t}}o(dn,"formatReasoningEffortStatusLabel");function fn(e){let t=It(e);if(!t)return{preserved:!0};let n=U(e.provider,e.model);if(!n)return{configuredEffort:t,runtimeEffort:t,preserved:!0};let r=q({currentEffort:t,capability:n});return{configuredEffort:t,runtimeEffort:r.effectiveEffort,preserved:r.preserved,diagnostic:r.diagnostic}}o(fn,"resolveProviderReasoningRuntimeEffort");function bt(e){switch(e){case"native-budget":return"budget";case"native-effort":return"effort";case"native-toggle":return"toggle";case"native-adaptive":return"adaptive";default:return"none"}}o(bt,"describeReasoningCapabilityControl");function pn(e,t){if(e==="off")return"Reasoning disabled";switch(t){case"native-budget":return"Uses native thinking budget control";case"native-effort":return"Uses native reasoning effort control";case"native-toggle":return"Uses provider-native thinking toggle only";case"native-adaptive":return"Model adaptively decides thinking depth (Opus 4.7+)";case"none":return"Runs without native reasoning parameters";case"prompt-only":return"Uses prompt overlays only; no native reasoning parameter";default:return"Runs without native reasoning parameters"}}o(pn,"describeReasoningExecution");function mn(e){let t=[];e||(e=ce().providerModels);for(let n of ge())t.push({name:n.name,model:n.model,models:vt(n.name,e),configured:n.capabilityProfile.transport==="cli-bridge"?!0:n.configured,reasoningCapability:n.reasoningCapability,capabilityProfile:n.capabilityProfile});try{let n=H().map(r=>({...r,models:(()=>{let i=e?.[r.name];return i&&i.length>0?ae(i,r.models):r.models})()}));t.push(...n)}catch{}return t}o(mn,"getProviderList");function gn(e){if(de(e))return!0;try{return C(e)?.isConfigured()??!1}catch{return!1}}o(gn,"isProviderConfigured");var F=class extends Error{static{o(this,"InvalidAgentModeConfigError")}};function Pt(e){let t=e.agentMode;if(t===void 0||t==="ama"||t==="sa")return e;if(t!=="amaw"&&t!=="ama-workflow")throw new F(`Invalid agentMode "${t}" in ${f}. Expected "ama" or "sa".`);let n={...e,agentMode:"ama",schemaVersion:Math.max(e.schemaVersion??0,st)},r=`${f}.migrate-${process.pid}.tmp`;try{u.writeFileSync(r,JSON.stringify(n,null,2),{mode:384}),u.renameSync(r,f)}catch{u.rmSync(r,{force:!0})}return Ne||(process.emitWarning(`Migrated persisted agentMode "${t}" to "ama". Workflow use is now explicit intent.`,{code:"KODAX_AGENT_MODE_MIGRATED"}),Ne=!0),n}o(Pt,"migrateLegacyAgentModeConfig");function ce(){try{if(u.existsSync(f)){let n=JSON.parse(u.readFileSync(f,"utf-8")),r=Pt(n),i=r.reasoningCeiling??r.reasoningMode,s=[],a={};try{s=[...K(d).document.paths]}catch{}try{a=$(d).document.servers}catch{}return mt(pt({...r,reasoningMode:i,extensions:se(s),mcpServers:a}))}}catch(n){if(n instanceof F)throw n}let e,t;try{let n=K(d);n.source!=="default"&&(e=se([...n.document.paths]))}catch{}try{let n=$(d);n.source!=="default"&&(t=n.document.servers)}catch{}return{...e===void 0?{}:{extensions:e},...t===void 0?{}:{mcpServers:t}}}o(ce,"loadConfig");var St=p.join(d,"config.example.jsonc"),oe={mcp:p.join(d,"integrations","mcp.example.jsonc"),a2a:p.join(d,"integrations","a2a.example.jsonc"),extensions:p.join(d,"integrations","extensions.example.jsonc")},_t=[{name:"core",path:St},{name:"mcp",path:oe.mcp},{name:"a2a",path:oe.a2a},{name:"extensions",path:oe.extensions}];function Ct(){let e=[];for(let t of _t)try{if(u.existsSync(t.path))continue;u.mkdirSync(p.dirname(t.path),{recursive:!0}),u.writeFileSync(t.path,Ce(t.name),"utf8"),e.push(t.path)}catch{}return e}o(Ct,"ensureExampleConfigFiles");function hn(){return Ct()[0]}o(hn,"ensureExampleConfigFile");var j=new Map;function kt(e,t){let n=process.env[e],r=j.get(e),i=r!==void 0&&n===r;if(n!==void 0&&!i){j.delete(e);return}if(t===void 0){i&&delete process.env[e],j.delete(e);return}process.env[e]=t,j.set(e,t)}o(kt,"projectConfigEnvironment");var Xe=[{configPath:"streamIdleTimeoutMs",env:"KODAX_STREAM_IDLE_TIMEOUT_MS",value:o(e=>x(e.streamIdleTimeoutMs),"value")},{configPath:"repoIntelligenceMode",env:"KODAX_REPO_INTELLIGENCE",value:o(e=>e.repoIntelligenceMode,"value")},{configPath:"repoIntelligenceTrace",env:"KODAX_REPO_INTELLIGENCE_TRACE",value:o(e=>S(e.repoIntelligenceTrace),"value")},{configPath:"verifierLog",env:"KODAX_VERIFIER_LOG",value:o(e=>S(e.verifierLog),"value")},{configPath:"stallLog",env:"KODAX_STALL_LOG",value:o(e=>S(e.stallLog),"value")},{configPath:"fallbackProviders",env:"KODAX_FALLBACK_PROVIDERS",value:o(e=>At(e.fallbackProviders),"value")},{configPath:"fastProvider",env:"KODAX_FAST_PROVIDER",value:o(e=>v(e.fastProvider),"value")},{configPath:"fastModel",env:"KODAX_FAST_MODEL",value:o(e=>v(e.fastModel),"value")},{configPath:"deepProvider",env:"KODAX_DEEP_PROVIDER",value:o(e=>v(e.deepProvider),"value")},{configPath:"deepModel",env:"KODAX_DEEP_MODEL",value:o(e=>v(e.deepModel),"value")},{configPath:"provider",env:"KODAX_PROVIDER",value:o(e=>v(e.provider),"value")},{configPath:"effort",env:"KODAX_EFFORT",value:o(e=>v(e.effort),"value")},{configPath:"runtimeMode",env:"KODAX_RUNTIME_MODE",value:o(e=>e.runtimeMode,"value")},{configPath:"sessionRetentionDays",env:"KODAX_SESSION_RETENTION_DAYS",value:o(e=>x(e.sessionRetentionDays),"value")},{configPath:"maxOutputTokens",env:"KODAX_MAX_OUTPUT_TOKENS",value:o(e=>x(e.maxOutputTokens),"value")},{configPath:"disablePromptCache",env:"KODAX_DISABLE_PROMPT_CACHE",value:o(e=>S(e.disablePromptCache),"value")},{configPath:"lsp",env:"KODAX_LSP",value:o(e=>S(e.lsp),"value")},{configPath:"lspAutoDownload",env:"KODAX_LSP_DOWNLOAD",value:o(e=>S(e.lspAutoDownload),"value")},{configPath:"acpLogLevel",env:"KODAX_ACP_LOG",value:o(e=>v(e.acpLogLevel),"value")},{configPath:"repoIntelligence.toolWaitMs",env:"KODAX_REPO_INTELLIGENCE_TOOL_WAIT_MS",value:o(e=>x(e.repoIntelligence?.toolWaitMs),"value")},{configPath:"repoIntelligence.workerTimeoutMs",env:"KODAX_REPO_INTELLIGENCE_WORKER_TIMEOUT_MS",value:o(e=>x(e.repoIntelligence?.workerTimeoutMs),"value")},{configPath:"repoIntelligence.workerOldSpaceMb",env:"KODAX_REPO_INTELLIGENCE_WORKER_OLD_SPACE_MB",value:o(e=>x(e.repoIntelligence?.workerOldSpaceMb),"value")},{configPath:"repoIntelligence.storageDir",env:"KODAX_REPO_INTELLIGENCE_STORAGE_DIR",value:o(e=>v(e.repoIntelligence?.storageDir),"value")},{configPath:"workflow.maxConcurrency",env:"KODAX_WORKFLOW_MAX_CONCURRENCY",value:o(e=>x(e.workflow?.maxConcurrency),"value")}];function Mt(e){for(let t of Xe)kt(t.env,t.value(e))}o(Mt,"applyConfigSurfaceBridges");function v(e){return e?.trim()||void 0}o(v,"normalizedConfigString");function x(e){return typeof e=="number"&&Number.isFinite(e)?String(e):void 0}o(x,"configNumberString");function S(e){return e===void 0?void 0:e?"1":"0"}o(S,"configBooleanString");function At(e){return e?.filter(t=>t.trim().length>0).join(",")}o(At,"configStringList");var vn=[...Xe.map(({configPath:e,env:t})=>({configPath:e,env:t}))];function Ot(e){Mt(e)}o(Ot,"applyConfigEnvironment");function yn(){dt();let e=ce();return Ot(e),ft(e),Se(e.locale),e}o(yn,"prepareRuntimeConfig");function En(e){let t={};if(u.existsSync(f))try{let a=JSON.parse(u.readFileSync(f,"utf8"));a&&typeof a=="object"&&!Array.isArray(a)&&(t=a)}catch{}let{extensions:n,mcpServers:r,...i}=e,s={...t,...i};for(let a of Object.keys(i))i[a]===void 0&&delete s[a];if(u.mkdirSync(p.dirname(f),{recursive:!0}),u.writeFileSync(f,JSON.stringify(s,null,2)),n!==void 0){let a=K(d);O({domain:"extensions",configHome:d,...a.source==="user"?{expectedRevision:a.revision}:{},document:{version:1,paths:se(n)??[]},validate:M})}if(r!==void 0){let a=$(d);O({domain:"mcp",configHome:d,...a.source==="user"?{expectedRevision:a.revision}:{},document:{version:1,servers:r},validate:k})}}o(En,"saveConfig");function wn(e,t,n){return e.effort!==void 0||V(n).kind==="value"||t.effort!==void 0}o(wn,"resolveInitialEffortOverride");function y(e){return e?.trim()?e:void 0}o(y,"nonEmptySelection");function xn(e){return y(e.explicitProvider)??y(e.environmentProvider)??y(e.configuredProvider)??e.defaultProvider}o(xn,"resolveRuntimeProviderSelection");function bn(e){let t=y(e.explicitModel);if(t)return t;let n=y(e.configuredModel);if(!n)return;let r=y(e.explicitProvider)??y(e.environmentProvider);return r?y(e.configuredProvider)===r?n:void 0:n}o(bn,"resolveRuntimeModelSelection");function Pn(e){if(e.explicitEffort!==void 0)return z(e.explicitEffort);let t=V(e.environmentEffort);return t.kind==="value"?t.value:e.configuredEffort===void 0?void 0:z(e.configuredEffort)}o(Pn,"resolveRuntimeEffortSelection");function It(e){return e.permissionMode==="plan"&&e.effortOverride!==!0&&e.planModeEffort!==void 0?e.planModeEffort:e.effort}o(It,"resolvePermissionModeEffort");async function Sn(e){try{let{stdout:t}=await it("git rev-parse --show-toplevel",{cwd:e});return t.trim()}catch{return null}}o(Sn,"getGitRoot");function Rt(e){switch(e){case"builtin":return"Built-in";case"runtime":return"Runtime extension";case"custom":return"Custom config";default:return"Unknown"}}o(Rt,"formatProviderSourceKind");function _n(e){let t=e.transport==="cli-bridge"?"CLI bridge":"Native API",n=e.conversationSemantics==="last-user-message"?"latest-user-message only":"full conversation history";return[`Source: ${Rt(e.sourceKind)}`,`Transport: ${t}`,`Conversation semantics: ${n}`,`Context fidelity: ${e.contextFidelity}`,`Tool calling: ${e.toolCallingFidelity}`,`Session behavior: ${e.sessionSupport}`,`Long-running support: ${e.longRunningSupport}`,`Evidence-heavy flows: ${e.evidenceSupport}`,`Multimodal support: ${e.multimodalSupport}`,`MCP support: ${e.mcpSupport}`,`Reasoning control: ${bt(e.reasoningCapability)}`]}o(_n,"formatProviderCapabilityDetailLines");function Cn(e,t,n){return[{label:"General coding",hints:{}},{label:"Evidence-heavy review",hints:{evidenceHeavy:!0}},{label:"Long-running task",hints:{longRunning:!0}}].map(i=>({label:i.label,decision:wt(e,t,n,i.hints)})).filter(i=>i.decision!==null)}o(Cn,"getProviderCommonPolicyScenarios");var $e=.5,Ke=0,I={locked:!1,queue:[]};async function kn(e){for(;I.locked;)await new Promise(t=>I.queue.push(t));I.locked=!0;try{let t=(Date.now()-Ke)/1e3;t<$e&&await new Promise(r=>setTimeout(r,($e-t)*1e3));let n=await e();return Ke=Date.now(),n}finally{I.locked=!1;let t=I.queue.shift();t&&t()}}o(kn,"rateLimitedCall");export{Dt as a,_e as b,Ce as c,k as d,M as e,P as f,$ as g,K as h,Be as i,Ft as j,O as k,Ae as l,d as m,tn as n,f as o,nn as p,ut as q,rn as r,ft as s,gt as t,on as u,ht as v,vt as w,yt as x,Et as y,sn as z,wt as A,an as B,cn as C,_ as D,ln as E,un as F,dn as G,fn as H,bt as I,pn as J,mn as K,gn as L,ce as M,St as N,oe as O,Ct as P,hn as Q,vn as R,Ot as S,yn as T,En as U,wn as V,xn as W,bn as X,Pn as Y,It as Z,Sn as _,Rt as $,_n as aa,Cn as ba,kn as ca};