@myagentroam/agent 0.9.62 → 0.9.65

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 (119) hide show
  1. package/LICENSE +202 -0
  2. package/NOTICE +4 -0
  3. package/dist/cli/codex-auth-file.js +268 -3
  4. package/dist/cli/main.js +431 -2
  5. package/dist/error.js +66 -2
  6. package/dist/host/contracts.js +20 -2
  7. package/dist/host/local-agent-host.js +146 -2
  8. package/dist/host/local-process-executor.js +39 -2
  9. package/dist/index.d.ts +1 -1
  10. package/dist/index.js +12 -2
  11. package/dist/model/anthropic-messages.js +474 -2
  12. package/dist/model/anthropic-thinking.js +33 -2
  13. package/dist/model/catalog-file.js +88 -2
  14. package/dist/model/configuration.js +137 -2
  15. package/dist/model/contracts.d.ts +2 -0
  16. package/dist/model/contracts.js +1 -2
  17. package/dist/model/http.js +529 -2
  18. package/dist/model/openai-responses.d.ts +2 -0
  19. package/dist/model/openai-responses.js +1602 -2
  20. package/dist/model/runtime-credential.js +35 -2
  21. package/dist/model/sse.js +199 -2
  22. package/dist/prompts/compact.js +25 -2
  23. package/dist/prompts/core.js +37 -2
  24. package/dist/prompts/execution-budget.js +10 -2
  25. package/dist/prompts/index.d.ts +3 -2
  26. package/dist/prompts/index.js +47 -2
  27. package/dist/prompts/modes.js +25 -2
  28. package/dist/prompts/output.js +1 -2
  29. package/dist/prompts/resources.d.ts +1 -1
  30. package/dist/prompts/resources.js +31 -2
  31. package/dist/prompts/subagent.d.ts +6 -0
  32. package/dist/prompts/subagent.js +29 -2
  33. package/dist/prompts/title.js +9 -2
  34. package/dist/prompts/workflow.js +32 -2
  35. package/dist/runtime/async-queue.js +62 -2
  36. package/dist/runtime/builtin-skills.js +19 -2
  37. package/dist/runtime/byted-ark-imagegen-skill.js +18 -2
  38. package/dist/runtime/codex-imagegen-skill.js +35 -2
  39. package/dist/runtime/compact.js +225 -2
  40. package/dist/runtime/context-gc-runtime.d.ts +35 -0
  41. package/dist/runtime/context-gc-runtime.js +163 -0
  42. package/dist/runtime/context-gc-tokens.d.ts +24 -0
  43. package/dist/runtime/context-gc-tokens.js +83 -0
  44. package/dist/runtime/context-gc.d.ts +66 -0
  45. package/dist/runtime/context-gc.js +909 -0
  46. package/dist/runtime/context-projection.d.ts +23 -0
  47. package/dist/runtime/context-projection.js +203 -0
  48. package/dist/runtime/environment-context.js +41 -2
  49. package/dist/runtime/execution-policy.js +13 -2
  50. package/dist/runtime/instructions.js +298 -2
  51. package/dist/runtime/normalize.js +40 -2
  52. package/dist/runtime/plan-output.js +95 -2
  53. package/dist/runtime/rollout-budget.d.ts +2 -0
  54. package/dist/runtime/rollout-budget.js +92 -2
  55. package/dist/runtime/token-budget.d.ts +2 -0
  56. package/dist/runtime/token-budget.js +44 -2
  57. package/dist/sdk/agent.js +1804 -2
  58. package/dist/sdk/types.d.ts +15 -5
  59. package/dist/sdk/types.js +1 -2
  60. package/dist/session/catalog.d.ts +5 -4
  61. package/dist/session/catalog.js +133 -2
  62. package/dist/session/context-gc-checkpoint.d.ts +148 -0
  63. package/dist/session/context-gc-checkpoint.js +665 -0
  64. package/dist/session/context-gc-replacements.d.ts +52 -0
  65. package/dist/session/context-gc-replacements.js +226 -0
  66. package/dist/session/context-gc-subagent.d.ts +43 -0
  67. package/dist/session/context-gc-subagent.js +267 -0
  68. package/dist/session/jsonl-store.d.ts +42 -4
  69. package/dist/session/jsonl-store.js +1657 -2
  70. package/dist/subagent/scheduler.d.ts +35 -2
  71. package/dist/subagent/scheduler.js +249 -2
  72. package/dist/subagent/session-controller.d.ts +94 -0
  73. package/dist/subagent/session-controller.js +675 -0
  74. package/dist/tools/agent-cancel.js +28 -2
  75. package/dist/tools/{task.d.ts → agent-message.d.ts} +2 -2
  76. package/dist/tools/agent-message.js +51 -0
  77. package/dist/tools/agent-start.js +84 -2
  78. package/dist/tools/agent-wait.js +53 -2
  79. package/dist/tools/apply-patch.js +478 -2
  80. package/dist/tools/code-mode.js +370 -2
  81. package/dist/tools/codex-image-gen.js +312 -2
  82. package/dist/tools/exec.js +455 -2
  83. package/dist/tools/execution-limits.d.ts +1 -0
  84. package/dist/tools/execution-limits.js +44 -2
  85. package/dist/tools/local-registry.js +233 -2
  86. package/dist/tools/local-workspace-tools.js +28 -2
  87. package/dist/tools/question.js +124 -2
  88. package/dist/tools/read-context.d.ts +16 -0
  89. package/dist/tools/read-context.js +85 -0
  90. package/dist/tools/read.d.ts +13 -0
  91. package/dist/tools/read.js +294 -2
  92. package/dist/tools/registry.js +76 -2
  93. package/dist/tools/runtime-context.d.ts +9 -2
  94. package/dist/tools/runtime-context.js +1 -2
  95. package/dist/tools/runtime.js +21 -2
  96. package/dist/tools/scheduler.js +41 -2
  97. package/dist/tools/shared/path-resolver.js +133 -2
  98. package/dist/tools/skill.js +37 -2
  99. package/dist/tools/todo-read.js +10 -2
  100. package/dist/tools/todo-write.js +65 -2
  101. package/dist/tools/todo.js +67 -2
  102. package/dist/tools/view-image.js +81 -2
  103. package/dist/tools/web-fetch.js +11 -2
  104. package/dist/tools/web-search.js +14 -2
  105. package/package.json +9 -7
  106. package/README.md +0 -3
  107. package/dist/runtime/prompt.d.ts +0 -9
  108. package/dist/runtime/prompt.js +0 -2
  109. package/dist/tools/shared/secret-redaction.d.ts +0 -4
  110. package/dist/tools/shared/secret-redaction.js +0 -2
  111. package/dist/tools/task-cancel.d.ts +0 -7
  112. package/dist/tools/task-cancel.js +0 -2
  113. package/dist/tools/task-output.d.ts +0 -7
  114. package/dist/tools/task-output.js +0 -2
  115. package/dist/tools/task-tools.d.ts +0 -36
  116. package/dist/tools/task-tools.js +0 -2
  117. package/dist/tools/task.js +0 -2
  118. package/dist/tools/todo-tools.d.ts +0 -25
  119. package/dist/tools/todo-tools.js +0 -2
package/dist/cli/main.js CHANGED
@@ -1,3 +1,432 @@
1
1
  #!/usr/bin/env node
2
- /* mar-release-protected */
3
- const _0x12fdd3=_0x1c1d;function _0x10e7(){const _0x4d7e3c=['CMvZDw1L','zMLUza','q09ervHFqvvusf9gsuXf','ls1YzxnWB25ZzxmTDhjHBNnWB3j0igLZigLUDMfSAwqU','qvbquK9wquW','ls1LBMfIBgvK','ihjLCxvPCMvZigeGDMfSDwuU','mJq2otKYnhfozxfUAq','oti0meLcww1ODG','ignHBM5VDcbIzsbJB21IAw5Lzc4','CMvTB3zL','Bw9Kzq','C2XPy2u','ChjVDg9JB2W','ls1HCgKTA2v5lxn0zgLUihjLCxvPCMvZihbPCgvKihn0zgLUlG','zgvMyxvSDfjLyxnVBMLUz0vMzM9YDa','ls1YzxnWB25ZzxmTzw5JB2rPBMC','veLnru9vva','q1jfrevoveLbta','pYbBEs9oxsa','y29TCgfJDa','nZi1mJq0EKvkv2Pz','ls1YzxnWB25ZzxmTy29UDgLUDwf0Aw9U','q09otKvdveLptG','BwvZC2fNzq','yxbWCM92zwq','DgL0Bgvhzw5LCMf0Aw9U','Bw9KzwXjza','cwnYzwrLBNrPywW9','sw50zxjHy3rPDMuGAw5WDxqGAxmGDw5HDMfPBgfIBguU','sfruua','zMXHDe1HCa','iIbPCYbUB3qGC3vWCg9YDgvKigj5ig1VzgvSici','ls1PBwfNzq','y2XVC2u','Dgv4Da','D2vIC29JA2v0','C3rKzxjY','qvvusa','ls1TB2rLBa','ls1TyxGTB3v0Chv0','CMvZDwX0','DxnLCG','tM9UlwLUDgvYywn0AxzLigrLBgv0Aw9UihjLCxvPCMvZic0TEwvZlG','C29Tzq','zgvSzxrL','vw5RBM93BIbTB2rLBcbJB21Tyw5KlG','otmZnuzMqxjIAq','C2fMzvbHCNnL','AxnuvfK','DgLTzw91Da','C3rHDhvZ','B2zM','ls1Uyw1L','y2fUy2vS','y2f0y2G','u2vZC2LVBIbjrdOG','zwrPDa','qvjhvu1ftLq','ls1KAxnHyMXLza','ls1YzxnWB25ZzxmTzw5JB2rPBMCGAxmGAw52ywXPzc4','tw9KzwWGAwqGAxmGCMvXDwLYzwqU','ignHBM5VDcbIzsbYzxbLyxrLzc4','tufsx0fhru5ux01prevmx0fvveHFrKfjteve','ChjVBxb0','Bwf4t3v0Chv0vg9Rzw5Z','ls15zxm','mZC0mtuWn0j4wuDXrq','Ahr0Cde','C3rHBMrHCMq','ls1JB250zxH0','y3DK','ChjVDMLKzxjZ','ls1YzxnWB25ZzxmTDhjHBNnWB3j0','igLZigLUDMfSAwqU','mJyZnNDeuuz4yq','B3bLBLnLC3nPB24','C2v0rw5JB2rPBMC','uMvWBhKGt0SU','A2v5CW','v0vcu09ds0vu','yMfZzvvYBa','DgvZDa','qu5usfjpueLdx01fu1nbr0vt','mti4mZu0otzZvxfjqxC','C3vJy2vZCW','CMvHC29UAw5NrwzMB3j0CW','BgL0zq','Dg9vChbLCKnHC2u','zgf0yq','yxjNDG','Dgv4Dc5JB21WBgv0zwq','C3rYzwfTlwPZB24','zgvSzxrLu2vZC2LVBG','ls13zwiTC2vHCMnO','tw9KzwWGAwqGywXYzwfKEsbLEgLZDhmU','B24TCMvXDwvZDa','C3bSAxq','qvbjigTLEsbZDgrPBIb3yxmGzw1WDhKU','BM9YBwfS','AxntywzLsw50zwDLCG','D3jPDgu','y3jLzgvUDgLHBfnVDxjJzq','y29Kzu1Vzgu','vevyva','y3jLyxrLu2vZC2LVBG','ls1OzwXW','ls1QC29U','q0XjignVBw1HBMqGzMfPBgvKlG','ls1JB2rLlw1Vzgu','y29Kzq','ANnVBG','ls1UBY1YzxnWB25ZzxmTy29UDgLUDwf0Aw9U','ls1UBY13zwiTC2vHCMnO','igfUzca','CMvZCg9UC2vZrw5JB2rPBMC','sw52zxn0AwDHDguGDgHLign1CNjLBNqGB2jQzwn0AxzLlcbYzxnVBhzLigrPC2nVDMvYywjSzsb1BMnLCNrHAw50EsWGyw5KihbYB2r1y2uGyw4GzxHLy3v0ywjSzsbPBxbSzw1LBNrHDgLVBIbHBMqGDMvYAwzPy2f0Aw9UihbSyw4GD2L0Ag91DcbJBgfPBwLUzYb0AguGD29YAYbPCYbJB21WBgv0zs4','zxHLyW','u1rbtKrbuKq','Ahr0CdeUmq','ls1HCgKTA2v5lxn0zgLUignHBM5VDcbIzsbJB21IAw5Lzcb3AxrOigfUigv4DgvYBMfSignYzwrLBNrPywWU','ls11CMW','Ahr0Cdi','zw5HyMXLza','vw5RBM93BIbZzxnZAw9UCYbJB21Tyw5KlG','zgvSDge','tM9UlwLUDgvYywn0AxzLihjLBw92ywWGCMvXDwLYzxmGls15zxmU','y29TCgXLDgvK','ls1WCM90B2nVBa','ls1MB3jTyxq','igLZihjLCxvPCMvKlG','qwnJzxnZig11C3qGyMuGB24TCMvXDwvZDcbVCIbMDwXSlwfJy2vZCY4','DgL0Bgu','CMvZDw1LihjLCxvPCMvZigeGC2vZC2LVBIbPzc4','BgLZDa','ls1YzwfZB25PBMCTzwzMB3j0','ls1YzwfZB25PBMCTzwzMB3j0CW','mte2ouf5suH6yq','ls1YzxnWB25ZzxmTDhjHBNnWB3j0ihjLCxvPCMvZie9qru5bsv9srvnqt05trvmU','ls1OB21L','zMLSDgvY','Ag9ZDgvKv2vIu2vHCMnO','BwfYywDLBNqGlsbnqviGy29KAw5NigfNzw50cGPvC2fNztOkicbTyxjHz2vUDcbBls1TB2rLBcbjrf0GwY0TCMvHC29UAw5NlwvMzM9YDcbfrKzpuLrDifSTlwfJy2vZCYbVBI1Yzxf1zxn0Fgz1BgWTywnJzxnZxsbBls1JB2rLEc1HDxrOlwzPBguGuefusf0kicbTyxjHz2vUDcbYDw4GphbYB21WDd4GwY0TCMvHC29UAw5NlwvMzM9YDcbfrKzpuLrDifSTlwzVCM1HDcb0zxH0FgPZB258C3rYzwfTlwPZB25DifSTlwnVzgv4lwf1DgGTzMLSzsbqqvrixqOGig1HCMfNzw50ihjLC3vTzsbBC2vZC2LVBKLKxsbBls1YzwfZB25PBMCTzwzMB3j0ievgrK9svf0GwY0Ty29KzxGTyxv0Ac1MAwXLifbbveHDcIaGBwfYywDLBNqGC2vZC2LVBNmGBgLZDhXKzwXLDguGphnLC3nPB25jzd4kicbTyxjHz2vUDcbTB2rLBhmGBgLZDhXHzgr8zwrPDhXYzw1VDMv8DgvZDcbBAwrDifSTlwrLzMf1BhqTCMvHC29UAw5NlwvMzM9YDcbfrKzpuLrDifSTlwnVzguTBw9KzxWTlw5VlwnVzguTBw9Kzv0GwY0TCMvZCg9UC2vZlwvUy29KAw5Nihn0yw5KyxjKFgXPDgvDifSTlwnVzgv4lwf1DgGTzMLSzsbqqvrixqO','BwvZC2fNzs5KzwX0yq','AM9PBG','C3rYAw5NAwz5','ls1Hy2nLC3m','tufsx0fhru5ux01prevmx05pvf9gt1vora','tw9KzwWGD2fZig5VDcbMB3vUzc4','revosuve','ywrK','CMv2zwfS','ls1UBY1PBwfNzq','ms4X','Aw5KzxHpzG','su1br0u','y29KzxGTyxv0Ac1MAwXL','uMvHC29UAw5NigvMzM9YDcaI','Aw5JBhvKzxm','t1bftKfjx1jfu1bptLnfuW','Aw5WDxrdyxbHyMLSAxrPzxm','q09orKLh','BgLZDfnLC3nPB25Z','BgvUz3rO','tufsx0fhru5ux1vtrvjFsu5qvvrFvu5bvKfjtefcteu','zgvUAwvK','ls1JB2rLEc1HDxrOlwzPBgu','q29KzxGGyxv0AcbMAwXLigLZihjLCxvPCMvKigzVCIb0AguGC2vSzwn0zwqGBw9KzwWU','ls1UBY1JB2rLlw1Vzgu','vvnfuL9jtLbvvf9vtKfwquLmqujmrq','CMvZCg9UC2vZvhjHBNnWB3j0','zgLZCg9Zzq','ls1KzwzHDwX0lxjLyxnVBMLUzY1LzMzVCNq','DhjPBq','tufsx0fhru5ux0nmsv9gquLmruq','ls1JCMvKzw50AwfSigLZigLUDMfSAwqU','CxvLC3rPB25Z','C3bSAwnL','BMfTzq','yxbPlwTLEq','C3rHCNq','CNvU','yxbPs2v5','tufsx0fhru5ux0nmsv9buKDvtuvovf9jtLzbteLe','C2vZC2LVBNm','DxrMoa','mtuYodyXmuDpuxnXuW','BwfW','Dg9mB3DLCKnHC2u','BgfZDefJDgL2Axr5qxq','zxjYB3jdB2rL','CxvLC3rPB24','ywXS','qxbWCM92zsa','DhLWzq','ls1WCM90B2nVBcbPCYbPBNzHBgLKlG','y29UDgv4DfDPBMrVD1rVA2vUCW','ls1JCMvKzw50AwfS','ls1HCgKTA2v5lxn0zgLU','u0Lhsu5u','C3rYAw5N','CMvZCg9UC2vZuhjLDMLVDxnszxnWB25ZzuLK','zgvMyxvSDe1VzgvSswq','zNvSBc1Hy2nLC3m','u2vZC2LVBIbPzcbPCYbYzxf1AxjLzc4','Bw9KzwXZ','zxHPDenVzgu','CgXHBG'];_0x10e7=function(){return _0x4d7e3c;};return _0x10e7();}(function(_0x292f55,_0x4d53fc){const _0x12380d=_0x1c1d,_0x1e840f=_0x292f55();while(!![]){try{const _0x3b4bec=parseInt(_0x12380d(0x1e0))/(0x34*0x55+-0xbf+-0x1*0x1084)+-parseInt(_0x12380d(0x20b))/(0x1287+0x13b8+0x3*-0xcbf)+-parseInt(_0x12380d(0x239))/(0x1ab4+-0x21*0x92+-0x7df)+parseInt(_0x12380d(0x241))/(-0x348+-0x4*0x153+0x898)*(-parseInt(_0x12380d(0x225))/(-0x2d6+-0x1dbb*0x1+0x2096))+-parseInt(_0x12380d(0x1fe))/(-0x2297+-0x103d*-0x1+0x1260)*(-parseInt(_0x12380d(0x1af))/(0x5f*-0x4f+0x2*0xaf6+0x4c*0x19))+parseInt(_0x12380d(0x24a))/(0x1*-0x186f+0x3d*-0x5f+0x2*0x178d)+parseInt(_0x12380d(0x1fd))/(0xa4d+-0x5bc*-0x6+-0x2cac);if(_0x3b4bec===_0x4d53fc)break;else _0x1e840f['push'](_0x1e840f['shift']());}catch(_0x2fbbf3){_0x1e840f['push'](_0x1e840f['shift']());}}}(_0x10e7,-0x13646a+-0x9acdf*-0x2+0x1*0xc9f74));import{homedir}from'node:os';import{resolve}from'node:path';import{createInterface}from'node:readline/promises';import{stdin,stdout}from'node:process';import{CodexAuthFileCredentialProvider}from'./codex-auth-file.js';import{describeMarAgentError,MarAgentError}from'../error.js';import{LocalAgentHost}from'../host/local-agent-host.js';import{readModelCatalog,writeModelCatalog}from'../model/catalog-file.js';import{marAgentReasoningEffortSchema,resolveModelDefaultReasoningEffort,SecretValue}from'../model/configuration.js';import{AnthropicMessagesAdapter}from'../model/anthropic-messages.js';import{OpenAiResponsesAdapter}from'../model/openai-responses.js';import{DEFAULT_COMPACTION_FOCUS}from'../runtime/compact.js';import{createMarAgent}from'../sdk/agent.js';const HELP=_0x12fdd3(0x1b4);function takeOption(_0x384212,_0x5c5c84){const _0x2892c9=_0x12fdd3,_0x3889a4=_0x384212[_0x2892c9(0x1c0)](_0x5c5c84);if(_0x3889a4<-0x1*-0x1989+-0x1*0xdd9+0xb0*-0x11)return undefined;if(_0x384212[_0x2892c9(0x1c0)](_0x5c5c84,_0x3889a4+(0x3*0xcc9+0xf25*-0x2+-0x810))>=-0x7b5*0x2+-0xd*0xdc+0x52*0x53)throw new MarAgentError(_0x2892c9(0x1dd),_0x5c5c84+_0x2892c9(0x234));const _0xbb1505=_0x384212[_0x3889a4+(-0x13c2+-0x11b6+0x2579)];if(!_0xbb1505)throw new MarAgentError(_0x2892c9(0x1dd),_0x5c5c84+_0x2892c9(0x1fc));return _0x384212[_0x2892c9(0x1d7)](_0x3889a4,0x5*-0x77e+0x5b3+0x3*0xa97),_0xbb1505;}function _0x1c1d(_0x49405d,_0x5babe1){_0x49405d=_0x49405d-(-0x1a7f+-0xe04+0x2a29*0x1);const _0x4c52b1=_0x10e7();let _0x3f5fc9=_0x4c52b1[_0x49405d];if(_0x1c1d['fGSVat']===undefined){var _0xab0c47=function(_0x3df189){const _0x2d7aeb='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x2c0d90='',_0x5b5c0a='';for(let _0x33c0a7=-0x2*-0xa86+-0x3*-0x8e9+-0x9*0x54f,_0x597a4d,_0x401ceb,_0x4213e0=0x315*0x7+-0x931*0x1+0x5*-0x27a;_0x401ceb=_0x3df189['charAt'](_0x4213e0++);~_0x401ceb&&(_0x597a4d=_0x33c0a7%(0xf04+0x1c69+-0x2b69)?_0x597a4d*(-0x2f*-0x49+0x14*-0xfe+0x6b1)+_0x401ceb:_0x401ceb,_0x33c0a7++%(-0x11b6+-0x7fc+0x19b6))?_0x2c0d90+=String['fromCharCode'](-0x5b3*-0x1+0x1d*0xb6+-0x2*0xca9&_0x597a4d>>(-(0xa9e*-0x1+-0x997*-0x2+-0x16d*0x6)*_0x33c0a7&0xd9a+0x10*-0x13a+0x60c)):0x1883+0x1c16*0x1+-0x3499){_0x401ceb=_0x2d7aeb['indexOf'](_0x401ceb);}for(let _0x23c6da=-0x1024+-0x15be+0x25e2,_0x1cd2e5=_0x2c0d90['length'];_0x23c6da<_0x1cd2e5;_0x23c6da++){_0x5b5c0a+='%'+('00'+_0x2c0d90['charCodeAt'](_0x23c6da)['toString'](-0x20ed*0x1+0x19f0+0x70d))['slice'](-(0x1e7a+-0x1a83*-0x1+-0x1*0x38fb));}return decodeURIComponent(_0x5b5c0a);};_0x1c1d['LDPmHB']=_0xab0c47,_0x1c1d['dAKJfE']={},_0x1c1d['fGSVat']=!![];}const _0x2c17be=_0x4c52b1[0x58+0x336+0x1c7*-0x2];_0x1c1d['jEhwCV']!==_0x2c17be&&(_0x1c1d['dAKJfE']={},_0x1c1d['jEhwCV']=_0x2c17be);const _0x4a4a65=_0x1c1d['dAKJfE'][_0x49405d];return _0x4a4a65===undefined?(_0x3f5fc9=_0x1c1d['LDPmHB'](_0x3f5fc9),_0x1c1d['dAKJfE'][_0x49405d]=_0x3f5fc9):_0x3f5fc9=_0x4a4a65,_0x3f5fc9;}async function loadCatalog(_0x7034b4){return readModelCatalog(_0x7034b4);}function takeFlag(_0x1bf8e6,_0x3d09a4){const _0x272422=_0x12fdd3,_0x56075b=_0x1bf8e6[_0x272422(0x1c0)](_0x3d09a4);if(_0x56075b<0x2169+0x1*-0x565+0x146*-0x16)return![];return _0x1bf8e6[_0x272422(0x1d7)](_0x56075b,-0x1e74+-0x217d*-0x1+-0x308),!![];}function booleanFlag(_0x448202,_0x14db2e,_0x21cb9,_0x19cdd9){const _0x2f7380=_0x12fdd3,_0x39f49e=takeFlag(_0x448202,_0x14db2e),_0x1aead2=takeFlag(_0x448202,_0x21cb9);if(_0x39f49e&&_0x1aead2)throw new MarAgentError(_0x2f7380(0x1dd),_0x14db2e+_0x2f7380(0x268)+_0x21cb9+_0x2f7380(0x1ff));return _0x39f49e?!![]:_0x1aead2?![]:_0x19cdd9;}async function readApiKey(){const _0x524350=_0x12fdd3;if(stdin[_0x524350(0x227)])throw new MarAgentError(_0x524350(0x1dd),_0x524350(0x204));stdin[_0x524350(0x243)](_0x524350(0x1df));let _0x2dc0a1='';for await(const _0x3aae13 of stdin)_0x2dc0a1+=_0x3aae13;if(!_0x2dc0a1[_0x524350(0x1d3)]())throw new MarAgentError(_0x524350(0x1dd),_0x524350(0x258));return _0x2dc0a1[_0x524350(0x1d3)]();}async function modelsCommand(_0x236ae8,_0x241838,_0x18c382){const _0x26713e=_0x12fdd3,_0x2dd2dd=_0x241838[0x23e0+0x102b*0x1+-0x340a],_0x1b8bb4=await loadCatalog(_0x236ae8);if(_0x2dd2dd===_0x26713e(0x1ac)){for(const _0x31b1bb of _0x1b8bb4[_0x26713e(0x1f3)])stdout[_0x26713e(0x25b)](_0x31b1bb['id']+'\x09'+_0x31b1bb[_0x26713e(0x1d8)]+'\x09'+_0x31b1bb[_0x26713e(0x203)]+'\x09'+_0x31b1bb[_0x26713e(0x211)]+_0x26713e(0x212)+(_0x31b1bb[_0x26713e(0x1dc)]===undefined?_0x26713e(0x1c2):_0x26713e(0x1d9))+'\x0a');return;}const _0x20a41e=_0x241838[0xc88+0x24c8+-0x314e];if(!_0x20a41e)throw new MarAgentError(_0x26713e(0x1dd),_0x26713e(0x233));const _0x58f009=_0x1b8bb4[_0x26713e(0x1f3)][_0x26713e(0x1f7)](_0xa35caf=>_0xa35caf['id']===_0x20a41e);if(_0x2dd2dd===_0x26713e(0x200)){if(!_0x58f009)throw new MarAgentError(_0x26713e(0x1b9),_0x26713e(0x1ba));if(!takeFlag(_0x241838,_0x26713e(0x238))&&!stdin[_0x26713e(0x227)])throw new MarAgentError(_0x26713e(0x1dd),_0x26713e(0x274));await writeModelCatalog(_0x236ae8,{'version':0x1,'models':_0x1b8bb4[_0x26713e(0x1f3)][_0x26713e(0x1b2)](_0x7723f1=>_0x7723f1['id']!==_0x20a41e),..._0x1b8bb4[_0x26713e(0x1f0)]&&_0x1b8bb4[_0x26713e(0x1f0)]!==_0x20a41e?{'defaultModelId':_0x1b8bb4[_0x26713e(0x1f0)]}:{}});return;}if(_0x2dd2dd===_0x26713e(0x248)){if(!_0x58f009)throw new MarAgentError(_0x26713e(0x1b9),_0x26713e(0x1ba));assertExternalCredentialAvailable(_0x58f009,_0x18c382);const _0xcfb7f4=runtimeModels([_0x58f009],_0x18c382),_0x5cf53d=_0x58f009[_0x26713e(0x203)]===_0x26713e(0x1c5)?new OpenAiResponsesAdapter(_0xcfb7f4[_0x26713e(0x1f3)][-0x3e6+-0x1205+0x1f*0xb5]):new AnthropicMessagesAdapter(_0xcfb7f4[_0x26713e(0x1f3)][-0x2461+0xb3*-0x25+0x3e40]);try{let _0x52ee8e='';for await(const _0x3d250b of _0x5cf53d[_0x26713e(0x1da)]({'system':_0x26713e(0x244),'messages':[{'role':_0x26713e(0x220),'content':_0x26713e(0x244)}],'tools':[]},AbortSignal[_0x26713e(0x228)](-0x1*-0xa1db+0x2*-0x60d6+0x9501)))if(_0x3d250b[_0x26713e(0x1e8)]===_0x26713e(0x251))_0x52ee8e=_0x3d250b[_0x26713e(0x219)];stdout[_0x26713e(0x25b)](JSON[_0x26713e(0x1b7)]({'success':!![],'modelId':_0x20a41e,'response':_0x52ee8e[_0x26713e(0x202)](0x3f*-0x1d+-0x2419*-0x1+-0xe7b*0x2,-0x1*0x2f2+0x15cc+0x2*-0x945)})+'\x0a');return;}finally{await Promise[_0x26713e(0x1e6)](_0xcfb7f4[_0x26713e(0x23e)][_0x26713e(0x1e1)](_0x4270d5=>_0x4270d5[_0x26713e(0x218)]()));}}if(_0x2dd2dd!==_0x26713e(0x1bc)&&_0x2dd2dd!==_0x26713e(0x22f))throw new MarAgentError(_0x26713e(0x1dd),_0x26713e(0x224));if(_0x2dd2dd===_0x26713e(0x1bc)&&_0x58f009)throw new MarAgentError(_0x26713e(0x1dd),_0x26713e(0x255));if(_0x2dd2dd===_0x26713e(0x22f)&&!_0x58f009)throw new MarAgentError(_0x26713e(0x1b9),_0x26713e(0x1ba));const _0x3065ec=(_0x444eb0,_0x1f1bff)=>takeOption(_0x241838,_0x444eb0)??_0x1f1bff,_0x35f38b=(_0xde37b9,_0x2bff8b)=>{const _0x17881c=_0x26713e,_0x2beca0=takeOption(_0x241838,_0xde37b9),_0x24986d=_0x2beca0===undefined?_0x2bff8b:Number(_0x2beca0);if(!Number[_0x17881c(0x25a)](_0x24986d)||_0x24986d<=-0x1*-0x223d+0xd75+-0x4a*0xa5)throw new MarAgentError(_0x17881c(0x1dd),_0xde37b9+_0x17881c(0x240));return _0x24986d;},_0x555e19=_0x3065ec(_0x26713e(0x1a6),_0x58f009?.[_0x26713e(0x203)]??_0x26713e(0x249));if(_0x555e19!==_0x26713e(0x1c5)&&_0x555e19!==_0x26713e(0x249))throw new MarAgentError(_0x26713e(0x1dd),_0x26713e(0x1e9));const _0x4e2c5e=(_0x1864e9,_0x3ddebf)=>{const _0x49477f=_0x26713e;if(!_0x1864e9)throw new MarAgentError(_0x49477f(0x1dd),_0x3ddebf+_0x49477f(0x1a8));return _0x1864e9;},_0x198398=_0x3065ec(_0x26713e(0x1eb),_0x58f009?.[_0x26713e(0x25c)]===_0x26713e(0x1f8)?_0x26713e(0x1c2):_0x26713e(0x1d9))??_0x26713e(0x1d9);if(_0x198398!==_0x26713e(0x1d9)&&_0x198398!==_0x26713e(0x1c2))throw new MarAgentError(_0x26713e(0x1dd),_0x26713e(0x1d5));const _0x1a8820=takeFlag(_0x241838,_0x26713e(0x1ec));if(_0x198398===_0x26713e(0x1c2)&&_0x1a8820)throw new MarAgentError(_0x26713e(0x1dd),_0x26713e(0x26e));const _0x59450a=parseResponsesTransport(_0x3065ec(_0x26713e(0x23f)),_0x555e19,_0x58f009?.[_0x26713e(0x1d0)]),_0x1c3c15=_0x3065ec(_0x26713e(0x206));if(_0x1c3c15!==undefined&&(_0x555e19!==_0x26713e(0x1c5)||![_0x26713e(0x23b),_0x26713e(0x24d)][_0x26713e(0x1c4)](_0x1c3c15)))throw new MarAgentError(_0x26713e(0x1dd),_0x26713e(0x232));const _0x515c10=_0x555e19===_0x26713e(0x1c5)?_0x1c3c15?.[_0x26713e(0x24e)]()??_0x58f009?.[_0x26713e(0x269)]??_0x26713e(0x26c):undefined,_0x3a54ea=_0x3065ec(_0x26713e(0x1ae)),_0x2ed423=_0x3a54ea===undefined?_0x58f009?.[_0x26713e(0x24c)]??[]:_0x3a54ea[_0x26713e(0x257)](',')[_0x26713e(0x1b2)](Boolean)[_0x26713e(0x1e1)](_0x4d348c=>parseReasoningEffort(_0x4d348c,_0x26713e(0x1ae))),_0x51f260=_0x3065ec(_0x26713e(0x1d2)),_0x380ecb={'id':_0x20a41e,'name':_0x4e2c5e(_0x3065ec(_0x26713e(0x22b),_0x58f009?.[_0x26713e(0x1d8)]),_0x26713e(0x22b)),'protocol':_0x555e19,'baseUrl':_0x4e2c5e(_0x3065ec(_0x26713e(0x26f),_0x58f009?.[_0x26713e(0x247)]),_0x26713e(0x26f)),..._0x198398===_0x26713e(0x1c2)?{'credentialSource':_0x26713e(0x1f8)}:{'apiKey':new SecretValue(_0x1a8820?await readApiKey():_0x4e2c5e(_0x58f009?.[_0x26713e(0x1dc)]?.[_0x26713e(0x1bd)](),_0x26713e(0x1ec)))},'modelId':_0x4e2c5e(_0x3065ec(_0x26713e(0x21d),_0x58f009?.[_0x26713e(0x211)]),_0x26713e(0x21d)),'contextWindowTokens':_0x35f38b(_0x26713e(0x23c),_0x58f009?.[_0x26713e(0x1ea)]??0x216a1+-0x42887+0x51f26),'maxOutputTokens':_0x35f38b(_0x26713e(0x21e),_0x58f009?.[_0x26713e(0x237)]??-0x24*-0x8a+-0x9cd*0x5+0x5d99),'inputCapabilities':booleanFlag(_0x241838,_0x26713e(0x217),_0x26713e(0x1be),_0x58f009?.[_0x26713e(0x1c6)][_0x26713e(0x1c4)](_0x26713e(0x1c1))??![])?[_0x26713e(0x25e),_0x26713e(0x1c1)]:[_0x26713e(0x25e)],'outputCapabilities':[_0x26713e(0x25e)],'reasoningEfforts':_0x2ed423,'defaultReasoningEffort':_0x51f260===undefined?resolveModelDefaultReasoningEffort({'reasoningEfforts':_0x2ed423,'defaultReasoningEffort':_0x58f009?.[_0x26713e(0x205)]}):parseReasoningEffort(_0x51f260,_0x26713e(0x1d2)),'titleGeneration':_0x58f009?.[_0x26713e(0x210)]??![],'codeMode':booleanFlag(_0x241838,_0x26713e(0x263),_0x26713e(0x1ce),_0x58f009?.[_0x26713e(0x25d)]??![]),'hostedWebSearch':booleanFlag(_0x241838,_0x26713e(0x254),_0x26713e(0x267),_0x58f009?.[_0x26713e(0x1b3)]??![]),..._0x59450a===undefined?{}:{'responsesTransport':_0x59450a},..._0x515c10===undefined?{}:{'responsesEncoding':_0x515c10},'responsesPreviousResponseId':booleanFlag(_0x241838,_0x26713e(0x20c),_0x26713e(0x266),_0x58f009?.[_0x26713e(0x1ef)]??![]),'enabled':booleanFlag(_0x241838,_0x26713e(0x1fb),_0x26713e(0x231),_0x58f009?.[_0x26713e(0x271)]??!![])};await writeModelCatalog(_0x236ae8,{'version':0x1,'defaultModelId':_0x1b8bb4[_0x26713e(0x1f0)]??_0x20a41e,'models':_0x58f009?_0x1b8bb4[_0x26713e(0x1f3)][_0x26713e(0x1e1)](_0x3ba835=>_0x3ba835['id']===_0x20a41e?_0x380ecb:_0x3ba835):[..._0x1b8bb4[_0x26713e(0x1f3)],_0x380ecb]});}function parseReasoningEffort(_0x415f33,_0x4c1ec0){const _0x14d1c9=_0x12fdd3,_0xbdb4ad=marAgentReasoningEffortSchema[_0x14d1c9(0x226)](_0x415f33[_0x14d1c9(0x1d3)]());if(!_0xbdb4ad[_0x14d1c9(0x24b)])throw new MarAgentError(_0x14d1c9(0x1dd),_0x4c1ec0+_0x14d1c9(0x240));return _0xbdb4ad[_0x14d1c9(0x24f)];}function parseResponsesTransport(_0x21af76,_0x2228b6,_0x1f114a){const _0x196c60=_0x12fdd3;if(_0x2228b6!==_0x196c60(0x1c5)){if(_0x21af76!==undefined)throw new MarAgentError(_0x196c60(0x1dd),_0x196c60(0x1b0));return undefined;}const _0x25ec94=_0x21af76?.[_0x196c60(0x1e2)]();if(_0x25ec94===undefined)return _0x1f114a;if(_0x25ec94===_0x196c60(0x21a))return{'transport':_0x196c60(0x246)};if(_0x25ec94===_0x196c60(0x270))return{'transport':_0x196c60(0x214),'httpVersion':'2'};if(_0x25ec94===_0x196c60(0x23a)||_0x25ec94===_0x196c60(0x26d))return{'transport':_0x196c60(0x214),'httpVersion':_0x196c60(0x1bf)};throw new MarAgentError(_0x196c60(0x1dd),_0x196c60(0x1f9));}async function main(){const _0x284bd3=_0x12fdd3,_0x2242ba=process[_0x284bd3(0x250)][_0x284bd3(0x202)](-0x891*0x1+0xcbd*-0x1+0x1550),_0x35c90b=resolve(takeOption(_0x2242ba,_0x284bd3(0x1b1))??homedir()),_0x3d43c1=takeOption(_0x2242ba,_0x284bd3(0x1cc));if(_0x2242ba[_0x284bd3(0x1c4)](_0x284bd3(0x260))||_0x2242ba[_0x284bd3(0x1c4)]('-h')){stdout[_0x284bd3(0x25b)](HELP);return;}const _0x56a716=_0x2242ba[0x207e+-0x1*-0x1605+0x5*-0xae7];if(_0x56a716===_0x284bd3(0x1f3)){await modelsCommand(_0x35c90b,_0x2242ba,_0x3d43c1);return;}const _0x1f5c7c=process[_0x284bd3(0x23d)](),_0x391c8d=await loadCatalog(_0x35c90b),_0xa73162=takeOption(_0x2242ba,_0x284bd3(0x21d))??_0x391c8d[_0x284bd3(0x1f0)],_0x1ed16c=takeOption(_0x2242ba,_0x284bd3(0x1ad)),_0x517602=_0x1ed16c===undefined?undefined:parseReasoningEffort(_0x1ed16c,_0x284bd3(0x1ad)),_0x17df4e=takeOption(_0x2242ba,_0x284bd3(0x1b8))??_0x284bd3(0x256),_0x286198=takeOption(_0x2242ba,_0x284bd3(0x1a7))??_0x284bd3(0x219);if(_0x17df4e!==_0x284bd3(0x256)&&_0x17df4e!==_0x284bd3(0x1f1))throw new MarAgentError(_0x284bd3(0x1dd),_0x284bd3(0x1a9));const _0x2eb373=_0x391c8d[_0x284bd3(0x1f3)][_0x284bd3(0x1f7)](_0x1a0dd7=>_0x1a0dd7['id']===_0xa73162&&_0x1a0dd7[_0x284bd3(0x271)]);if(_0x2eb373!==undefined)assertExternalCredentialAvailable(_0x2eb373,_0x3d43c1);if(_0x517602&&_0x2eb373&&!_0x2eb373[_0x284bd3(0x24c)][_0x284bd3(0x1c4)](_0x517602))throw new MarAgentError(_0x284bd3(0x1dd),_0x284bd3(0x1c3)+_0x517602+_0x284bd3(0x216)+_0x2eb373['id']+'\x22.');const _0x10afba=_0x56a716!==_0x284bd3(0x1db);let _0x33262b=_0x56a716===_0x284bd3(0x1db)?_0x2242ba[_0x284bd3(0x202)](-0xa3*0x25+0x9e5*0x2+0x8a*0x7)[_0x284bd3(0x1b6)]('\x20'):'';const _0x22e831=createInterface({'input':stdin,'output':stdout}),_0x51fea4=new LocalAgentHost({'homeDirectory':_0x35c90b,'workspace':_0x1f5c7c,'approve':async _0x401a5d=>{const _0x31f8e2=_0x284bd3;if(!stdin[_0x31f8e2(0x227)])return _0x31f8e2(0x1cb);const _0x240b2e=await _0x22e831[_0x31f8e2(0x1e5)](_0x31f8e2(0x1e7)+_0x401a5d[_0x31f8e2(0x1d8)]+_0x31f8e2(0x209));return/^y(es)?$/i[_0x31f8e2(0x248)](_0x240b2e[_0x31f8e2(0x1d3)]())?_0x31f8e2(0x20f):_0x31f8e2(0x1cb);},'question':async _0x337946=>{const _0x4cbcde=_0x284bd3;if(!stdin[_0x4cbcde(0x227)])throw new MarAgentError(_0x4cbcde(0x1ca),_0x4cbcde(0x213));const _0x534c2b={};for(const _0x567e54 of _0x337946[_0x4cbcde(0x1d6)]){const _0x2aa7af=_0x567e54,_0x6ca105=typeof _0x2aa7af['id']===_0x4cbcde(0x1ee)?_0x2aa7af['id']:String(Object[_0x4cbcde(0x245)](_0x534c2b)[_0x4cbcde(0x1c9)]);_0x534c2b[_0x6ca105]=await _0x22e831[_0x4cbcde(0x1e5)]((typeof _0x2aa7af[_0x4cbcde(0x1e5)]===_0x4cbcde(0x1ee)?_0x2aa7af[_0x4cbcde(0x1e5)]:JSON[_0x4cbcde(0x1b7)](_0x567e54))+'\x20');}return _0x534c2b;}}),_0x47bc54=runtimeModels(_0x391c8d[_0x284bd3(0x1f3)],_0x3d43c1),_0x44c25d=await createMarAgent({'mode':_0x284bd3(0x259),'host':_0x51fea4,'models':_0x47bc54[_0x284bd3(0x1f3)],..._0xa73162===undefined?{}:{'defaultModelId':_0xa73162}});try{if(_0x56a716===_0x284bd3(0x1de)&&_0x2242ba[-0x39*0x38+0x12a9+-0x630]===_0x284bd3(0x1ac)){stdout[_0x284bd3(0x25b)](JSON[_0x284bd3(0x1b7)](await _0x44c25d[_0x284bd3(0x1c8)](),null,takeFlag(_0x2242ba,_0x284bd3(0x261))?-0x1b4b+-0xd1*0x14+0x2b9f*0x1:0x8c3*0x1+-0x1*-0x1303+-0x1bc4)+'\x0a');return;}if(_0x56a716===_0x284bd3(0x1de)&&_0x2242ba[-0xd2d+-0x9*0x39e+0x2dbc]===_0x284bd3(0x223)&&_0x2242ba[-0x1b56+-0x49*-0x1+0x1b0f]){if(!takeFlag(_0x2242ba,_0x284bd3(0x238))&&!stdin[_0x284bd3(0x227)])throw new MarAgentError(_0x284bd3(0x1dd),_0x284bd3(0x221));await _0x44c25d[_0x284bd3(0x253)](_0x2242ba[0x1bc8+-0x257*-0x2+-0x2074]);return;}if(_0x56a716===_0x284bd3(0x1de))throw new MarAgentError(_0x284bd3(0x1dd),_0x284bd3(0x272));let _0xacf903=_0x56a716===_0x284bd3(0x1f6)?_0x2242ba[-0x1f3b+-0x4a+0x1f86]:undefined;if(_0x56a716===_0x284bd3(0x1f6)&&!_0xacf903){if(!stdin[_0x284bd3(0x227)])throw new MarAgentError(_0x284bd3(0x1dd),_0x284bd3(0x1ab));const _0x13553a=await _0x44c25d[_0x284bd3(0x1c8)]();for(const _0x69145 of _0x13553a[_0x284bd3(0x1de)]??[])stdout[_0x284bd3(0x25b)](_0x69145['id']+'\x09'+_0x69145[_0x284bd3(0x1aa)]+'\x09'+_0x69145[_0x284bd3(0x1e3)]+'\x0a');_0xacf903=(await _0x22e831[_0x284bd3(0x1e5)](_0x284bd3(0x22e)))[_0x284bd3(0x1d3)]();if(!_0xacf903)throw new MarAgentError(_0x284bd3(0x1dd),_0x284bd3(0x1f2));}const _0xf14f25=_0xacf903?await _0x44c25d[_0x284bd3(0x242)](_0xacf903):await _0x44c25d[_0x284bd3(0x25f)]({'workspace':_0x1f5c7c});let _0x536fda,_0x4d803e=0x626+0x16dd+-0x1d03;const _0x2972de=()=>{const _0x4dae51=_0x284bd3;_0x4d803e++;if(_0x536fda)_0x536fda[_0x4dae51(0x22c)]();else _0x22e831[_0x4dae51(0x218)]();process[_0x4dae51(0x1f4)]=-0x35*0x5e+0x1820+-0x428;if(_0x4d803e>0x64d*-0x2+-0x82f+0x14ca)_0x536fda?.[_0x4dae51(0x22c)]();};process['on'](_0x284bd3(0x1ed),_0x2972de);try{do{if(_0x10afba)_0x33262b=await _0x22e831[_0x284bd3(0x1e5)]('>\x20');if(!_0x33262b[_0x284bd3(0x1d3)]())break;const _0x408b92=parseExecutionInvocation(_0x33262b),_0x515487={'prompt':_0x408b92[_0x284bd3(0x236)],'access':_0x17df4e,..._0xa73162===undefined?{}:{'modelId':_0xa73162},..._0x517602===undefined?{}:{'reasoningEffort':_0x517602}},_0x18e397=_0x408b92[_0x284bd3(0x201)]===_0x284bd3(0x1f5)?_0xf14f25[_0x284bd3(0x1f5)](_0x515487):_0x408b92[_0x284bd3(0x201)]===_0x284bd3(0x20a)?_0xf14f25[_0x284bd3(0x20a)](_0x515487):_0xf14f25[_0x284bd3(0x1db)](_0x515487);_0x536fda=_0x18e397;for await(const _0x2607c2 of _0x18e397){if(_0x286198===_0x284bd3(0x252))stdout[_0x284bd3(0x25b)](JSON[_0x284bd3(0x1b7)](_0x2607c2)+'\x0a');else{if(_0x2607c2[_0x284bd3(0x1e8)]===_0x284bd3(0x1b5))stdout[_0x284bd3(0x25b)](_0x2607c2[_0x284bd3(0x273)]);}}const _0x5a6674=await _0x18e397[_0x284bd3(0x21f)]();_0x536fda=undefined;if(_0x286198===_0x284bd3(0x265))stdout[_0x284bd3(0x25b)](JSON[_0x284bd3(0x1b7)](_0x5a6674)+'\x0a');else{if(_0x286198===_0x284bd3(0x219))stdout[_0x284bd3(0x25b)]('\x0a');}if(_0x5a6674[_0x284bd3(0x229)]!==_0x284bd3(0x275))process[_0x284bd3(0x1f4)]=cliExitCode(_0x5a6674[_0x284bd3(0x1e4)]);}while(_0x10afba);}finally{process[_0x284bd3(0x22a)](_0x284bd3(0x1ed),_0x2972de);}}finally{_0x22e831[_0x284bd3(0x218)](),await _0x44c25d[_0x284bd3(0x1d1)]();}}function runtimeModels(_0x2c3a7a,_0x19d2a4){const _0x1a2970=_0x12fdd3,_0x465728=_0x19d2a4!==undefined&&_0x2c3a7a[_0x1a2970(0x222)](_0x4bf9a1=>_0x4bf9a1[_0x1a2970(0x25c)]===_0x1a2970(0x1f8))?new CodexAuthFileCredentialProvider(_0x19d2a4):undefined;return{'models':_0x2c3a7a[_0x1a2970(0x215)](_0x3f766b=>{const _0x310311=_0x1a2970,{credentialSource:_0x1c8e19,..._0x19bfed}=_0x3f766b;if(_0x1c8e19===undefined)return[_0x19bfed];return _0x465728===undefined?[]:[{..._0x19bfed,'responsesEncoding':_0x19bfed[_0x310311(0x269)]??_0x310311(0x26c),'credentialProvider':_0x465728}];}),'providers':_0x465728===undefined?[]:[_0x465728]};}function assertExternalCredentialAvailable(_0x13e85a,_0x449ba9){const _0x5a2b10=_0x12fdd3;if(_0x13e85a[_0x5a2b10(0x25c)]===_0x5a2b10(0x1f8)&&_0x449ba9===undefined)throw new MarAgentError(_0x5a2b10(0x235),_0x5a2b10(0x1cd));}function cliExitCode(_0xec33ba){const _0x23582f=_0x12fdd3;if(_0xec33ba===undefined)return-0x1237*-0x1+0x845+-0x1a7b;if(_0xec33ba[_0x23582f(0x1c4)](_0x23582f(0x1fa))||_0xec33ba[_0x23582f(0x1c4)](_0x23582f(0x1cf))||_0xec33ba[_0x23582f(0x1c4)](_0x23582f(0x1bb)))return-0x16*-0x84+-0x9ff*-0x2+-0x1f53;if(_0xec33ba[_0x23582f(0x1c4)](_0x23582f(0x21c))||_0xec33ba[_0x23582f(0x1c4)](_0x23582f(0x208))||_0xec33ba[_0x23582f(0x1c4)](_0x23582f(0x20d))||_0xec33ba[_0x23582f(0x1c4)](_0x23582f(0x207)))return-0x16fb*0x1+0x483+0x127c;if(_0xec33ba[_0x23582f(0x1c4)](_0x23582f(0x230))||_0xec33ba[_0x23582f(0x1c4)](_0x23582f(0x1c7)))return 0x1f12+0x20e+0x36*-0x9d;return-0x1f25+-0x9*0x22d+-0x5a3*-0x9;}function parseExecutionInvocation(_0x2b3e51){const _0x52a5d1=_0x12fdd3,_0x4434cb=/^\/(plan|compact)(?:\s+([\s\S]*))?$/u[_0x52a5d1(0x26b)](_0x2b3e51[_0x52a5d1(0x1d3)]());if(!_0x4434cb)return{'mode':_0x52a5d1(0x1db),'prompt':_0x2b3e51};const _0x54c478=_0x4434cb[0x20b9+0x1bb2+0x1a2*-0x25],_0x1dac2b=_0x4434cb[-0x18e+-0x1190*-0x1+-0x1000]?.[_0x52a5d1(0x1d3)]();return{'mode':_0x54c478,'prompt':_0x1dac2b||(_0x54c478===_0x52a5d1(0x1f5)?_0x52a5d1(0x26a):DEFAULT_COMPACTION_FOCUS)};}main()[_0x12fdd3(0x22d)](_0x472d1d=>{const _0xca8f6=_0x12fdd3,_0x3e4c90=describeMarAgentError(_0x472d1d,_0xca8f6(0x1d4),_0xca8f6(0x262));process[_0xca8f6(0x21b)][_0xca8f6(0x25b)](_0x3e4c90[_0xca8f6(0x20e)]+'\x0a'),process[_0xca8f6(0x1f4)]=cliExitCode(_0x3e4c90[_0xca8f6(0x264)]);});
2
+ import { homedir } from 'node:os';
3
+ import { resolve } from 'node:path';
4
+ import { createInterface } from 'node:readline/promises';
5
+ import { stdin, stdout } from 'node:process';
6
+ import { CodexAuthFileCredentialProvider } from './codex-auth-file.js';
7
+ import { describeMarAgentError, MarAgentError } from '../error.js';
8
+ import { LocalAgentHost } from '../host/local-agent-host.js';
9
+ import { readModelCatalog, writeModelCatalog } from '../model/catalog-file.js';
10
+ import { marAgentReasoningEffortSchema, resolveModelDefaultReasoningEffort, SecretValue } from '../model/configuration.js';
11
+ import { AnthropicMessagesAdapter } from '../model/anthropic-messages.js';
12
+ import { OpenAiResponsesAdapter } from '../model/openai-responses.js';
13
+ import { DEFAULT_COMPACTION_FOCUS } from '../runtime/compact.js';
14
+ import { createMarAgent } from '../sdk/agent.js';
15
+ const HELP = `maragent - MAR coding agent
16
+
17
+ Usage:
18
+ maragent [--model ID] [--reasoning-effort EFFORT] [--access on-request|full-access] [--codex-auth-file PATH]
19
+ maragent run <prompt> [--reasoning-effort EFFORT] [--format text|json|stream-json] [--codex-auth-file PATH]
20
+ maragent resume [sessionId] [--reasoning-effort EFFORT] [--codex-auth-file PATH]
21
+ maragent sessions list|delete <sessionId>
22
+ maragent models list|add|edit|remove|test [id] [--default-reasoning-effort EFFORT] [--code-mode|--no-code-mode] [--responses-encoding standard|lite] [--codex-auth-file PATH]
23
+ `;
24
+ function takeOption(arguments_, name) {
25
+ const index = arguments_.indexOf(name);
26
+ if (index < 0)
27
+ return undefined;
28
+ if (arguments_.indexOf(name, index + 1) >= 0)
29
+ throw new MarAgentError('MAR_AGENT_CLI_ARGUMENT_INVALID', `${name} cannot be repeated.`);
30
+ const value = arguments_[index + 1];
31
+ if (!value)
32
+ throw new MarAgentError('MAR_AGENT_CLI_ARGUMENT_INVALID', `${name} requires a value.`);
33
+ arguments_.splice(index, 2);
34
+ return value;
35
+ }
36
+ async function loadCatalog(home) {
37
+ return readModelCatalog(home);
38
+ }
39
+ function takeFlag(arguments_, name) {
40
+ const index = arguments_.indexOf(name);
41
+ if (index < 0)
42
+ return false;
43
+ arguments_.splice(index, 1);
44
+ return true;
45
+ }
46
+ function booleanFlag(arguments_, enabled, disabled, fallback) {
47
+ const on = takeFlag(arguments_, enabled);
48
+ const off = takeFlag(arguments_, disabled);
49
+ if (on && off)
50
+ throw new MarAgentError('MAR_AGENT_CLI_ARGUMENT_INVALID', `${enabled} and ${disabled} cannot be combined.`);
51
+ return on ? true : off ? false : fallback;
52
+ }
53
+ async function readApiKey() {
54
+ if (stdin.isTTY)
55
+ throw new MarAgentError('MAR_AGENT_CLI_ARGUMENT_INVALID', '--api-key-stdin requires piped stdin.');
56
+ stdin.setEncoding('utf8');
57
+ let value = '';
58
+ for await (const chunk of stdin)
59
+ value += chunk;
60
+ if (!value.trim())
61
+ throw new MarAgentError('MAR_AGENT_CLI_ARGUMENT_INVALID', 'API key stdin was empty.');
62
+ return value.trim();
63
+ }
64
+ async function modelsCommand(home, arguments_, codexAuthFile) {
65
+ const action = arguments_[1];
66
+ const catalog = await loadCatalog(home);
67
+ if (action === 'list') {
68
+ for (const model of catalog.models)
69
+ stdout.write(`${model.id}\t${model.name}\t${model.protocol}\t${model.modelId}\tcredential=${model.apiKey === undefined ? 'codex-auth-file' : 'api-key'}\n`);
70
+ return;
71
+ }
72
+ const id = arguments_[2];
73
+ if (!id)
74
+ throw new MarAgentError('MAR_AGENT_CLI_ARGUMENT_INVALID', 'Model id is required.');
75
+ const existing = catalog.models.find((model) => model.id === id);
76
+ if (action === 'remove') {
77
+ if (!existing)
78
+ throw new MarAgentError('MAR_AGENT_MODEL_NOT_FOUND', 'Model was not found.');
79
+ if (!takeFlag(arguments_, '--yes') && !stdin.isTTY)
80
+ throw new MarAgentError('MAR_AGENT_CLI_ARGUMENT_INVALID', 'Non-interactive removal requires --yes.');
81
+ await writeModelCatalog(home, {
82
+ version: 1,
83
+ models: catalog.models.filter((model) => model.id !== id),
84
+ ...(catalog.defaultModelId && catalog.defaultModelId !== id
85
+ ? { defaultModelId: catalog.defaultModelId }
86
+ : {})
87
+ });
88
+ return;
89
+ }
90
+ if (action === 'test') {
91
+ if (!existing)
92
+ throw new MarAgentError('MAR_AGENT_MODEL_NOT_FOUND', 'Model was not found.');
93
+ assertExternalCredentialAvailable(existing, codexAuthFile);
94
+ const runtime = runtimeModels([existing], codexAuthFile);
95
+ const adapter = existing.protocol === 'OPENAI_RESPONSES'
96
+ ? new OpenAiResponsesAdapter(runtime.models[0])
97
+ : new AnthropicMessagesAdapter(runtime.models[0]);
98
+ try {
99
+ let response = '';
100
+ for await (const event of adapter.start({ system: 'Reply OK.', messages: [{ role: 'user', content: 'Reply OK.' }], tools: [] }, AbortSignal.timeout(30_000)))
101
+ if (event.type === 'text.completed')
102
+ response = event.text;
103
+ stdout.write(`${JSON.stringify({ success: true, modelId: id, response: response.slice(0, 80) })}\n`);
104
+ return;
105
+ }
106
+ finally {
107
+ await Promise.all(runtime.providers.map((provider) => provider.close()));
108
+ }
109
+ }
110
+ if (action !== 'add' && action !== 'edit')
111
+ throw new MarAgentError('MAR_AGENT_CLI_ARGUMENT_INVALID', 'Unknown model command.');
112
+ if (action === 'add' && existing)
113
+ throw new MarAgentError('MAR_AGENT_CLI_ARGUMENT_INVALID', 'Model id already exists.');
114
+ if (action === 'edit' && !existing)
115
+ throw new MarAgentError('MAR_AGENT_MODEL_NOT_FOUND', 'Model was not found.');
116
+ const option = (name, fallback) => takeOption(arguments_, name) ?? fallback;
117
+ const integer = (name, fallback) => {
118
+ const raw = takeOption(arguments_, name);
119
+ const value = raw === undefined ? fallback : Number(raw);
120
+ if (!Number.isSafeInteger(value) || value <= 0)
121
+ throw new MarAgentError('MAR_AGENT_CLI_ARGUMENT_INVALID', `${name} is invalid.`);
122
+ return value;
123
+ };
124
+ const protocol = option('--protocol', existing?.protocol ?? 'ANTHROPIC_MESSAGES');
125
+ if (protocol !== 'OPENAI_RESPONSES' && protocol !== 'ANTHROPIC_MESSAGES')
126
+ throw new MarAgentError('MAR_AGENT_CLI_ARGUMENT_INVALID', '--protocol is invalid.');
127
+ const required = (value, name) => {
128
+ if (!value)
129
+ throw new MarAgentError('MAR_AGENT_CLI_ARGUMENT_INVALID', `${name} is required.`);
130
+ return value;
131
+ };
132
+ const credential = option('--credential', existing?.credentialSource === 'CODEX_AUTH_FILE' ? 'codex-auth-file' : 'api-key') ?? 'api-key';
133
+ if (credential !== 'api-key' && credential !== 'codex-auth-file')
134
+ throw new MarAgentError('MAR_AGENT_CLI_ARGUMENT_INVALID', '--credential is invalid.');
135
+ const readsApiKey = takeFlag(arguments_, '--api-key-stdin');
136
+ if (credential === 'codex-auth-file' && readsApiKey)
137
+ throw new MarAgentError('MAR_AGENT_CLI_ARGUMENT_INVALID', '--api-key-stdin cannot be combined with an external credential.');
138
+ const responsesTransport = parseResponsesTransport(option('--responses-transport'), protocol, existing?.responsesTransport);
139
+ const encodingOption = option('--responses-encoding');
140
+ if (encodingOption !== undefined &&
141
+ (protocol !== 'OPENAI_RESPONSES' || !['standard', 'lite'].includes(encodingOption)))
142
+ throw new MarAgentError('MAR_AGENT_CLI_ARGUMENT_INVALID', '--responses-encoding is invalid.');
143
+ const responsesEncoding = protocol === 'OPENAI_RESPONSES'
144
+ ? (encodingOption?.toUpperCase() ??
145
+ existing?.responsesEncoding ??
146
+ 'STANDARD')
147
+ : undefined;
148
+ const reasoningEffortsOption = option('--reasoning-efforts');
149
+ const reasoningEfforts = reasoningEffortsOption === undefined
150
+ ? (existing?.reasoningEfforts ?? [])
151
+ : reasoningEffortsOption
152
+ .split(',')
153
+ .filter(Boolean)
154
+ .map((effort) => parseReasoningEffort(effort, '--reasoning-efforts'));
155
+ const defaultReasoningEffortOption = option('--default-reasoning-effort');
156
+ const model = {
157
+ id,
158
+ name: required(option('--name', existing?.name), '--name'),
159
+ protocol,
160
+ baseUrl: required(option('--url', existing?.baseUrl), '--url'),
161
+ ...(credential === 'codex-auth-file'
162
+ ? { credentialSource: 'CODEX_AUTH_FILE' }
163
+ : {
164
+ apiKey: new SecretValue(readsApiKey
165
+ ? await readApiKey()
166
+ : required(existing?.apiKey?.reveal(), '--api-key-stdin'))
167
+ }),
168
+ modelId: required(option('--model', existing?.modelId), '--model'),
169
+ contextWindowTokens: integer('--context', existing?.contextWindowTokens ?? 200_000),
170
+ maxOutputTokens: integer('--max-output', existing?.maxOutputTokens ?? 16_384),
171
+ inputCapabilities: booleanFlag(arguments_, '--image', '--no-image', existing?.inputCapabilities.includes('IMAGE') ?? false)
172
+ ? ['TEXT', 'IMAGE']
173
+ : ['TEXT'],
174
+ outputCapabilities: ['TEXT'],
175
+ reasoningEfforts,
176
+ defaultReasoningEffort: defaultReasoningEffortOption === undefined
177
+ ? resolveModelDefaultReasoningEffort({
178
+ reasoningEfforts,
179
+ defaultReasoningEffort: existing?.defaultReasoningEffort
180
+ })
181
+ : parseReasoningEffort(defaultReasoningEffortOption, '--default-reasoning-effort'),
182
+ titleGeneration: existing?.titleGeneration ?? false,
183
+ codeMode: booleanFlag(arguments_, '--code-mode', '--no-code-mode', existing?.codeMode ?? false),
184
+ hostedWebSearch: booleanFlag(arguments_, '--web-search', '--no-web-search', existing?.hostedWebSearch ?? false),
185
+ ...(responsesTransport === undefined ? {} : { responsesTransport }),
186
+ ...(responsesEncoding === undefined ? {} : { responsesEncoding }),
187
+ responsesPreviousResponseId: booleanFlag(arguments_, '--responses-continuation', '--no-responses-continuation', existing?.responsesPreviousResponseId ?? false),
188
+ enabled: booleanFlag(arguments_, '--enabled', '--disabled', existing?.enabled ?? true)
189
+ };
190
+ await writeModelCatalog(home, {
191
+ version: 1,
192
+ defaultModelId: catalog.defaultModelId ?? id,
193
+ models: existing
194
+ ? catalog.models.map((candidate) => (candidate.id === id ? model : candidate))
195
+ : [...catalog.models, model]
196
+ });
197
+ }
198
+ function parseReasoningEffort(value, optionName) {
199
+ const parsed = marAgentReasoningEffortSchema.safeParse(value.trim());
200
+ if (!parsed.success)
201
+ throw new MarAgentError('MAR_AGENT_CLI_ARGUMENT_INVALID', `${optionName} is invalid.`);
202
+ return parsed.data;
203
+ }
204
+ function parseResponsesTransport(value, protocol, existing) {
205
+ if (protocol !== 'OPENAI_RESPONSES') {
206
+ if (value !== undefined)
207
+ throw new MarAgentError('MAR_AGENT_CLI_ARGUMENT_INVALID', '--responses-transport requires OPENAI_RESPONSES.');
208
+ return undefined;
209
+ }
210
+ const selected = value?.toLowerCase();
211
+ if (selected === undefined)
212
+ return existing;
213
+ if (selected === 'websocket')
214
+ return { transport: 'WEBSOCKET' };
215
+ if (selected === 'http2')
216
+ return { transport: 'HTTP', httpVersion: '2' };
217
+ if (selected === 'http1' || selected === 'http1.1')
218
+ return { transport: 'HTTP', httpVersion: '1.1' };
219
+ throw new MarAgentError('MAR_AGENT_CLI_ARGUMENT_INVALID', '--responses-transport is invalid.');
220
+ }
221
+ async function main() {
222
+ const arguments_ = process.argv.slice(2);
223
+ const home = resolve(takeOption(arguments_, '--home') ?? homedir());
224
+ const codexAuthFile = takeOption(arguments_, '--codex-auth-file');
225
+ if (arguments_.includes('--help') || arguments_.includes('-h')) {
226
+ stdout.write(HELP);
227
+ return;
228
+ }
229
+ if (arguments_[0] === 'models') {
230
+ await modelsCommand(home, arguments_, codexAuthFile);
231
+ return;
232
+ }
233
+ const workspace = process.cwd();
234
+ const catalog = await loadCatalog(home);
235
+ const modelId = takeOption(arguments_, '--model') ?? catalog.defaultModelId;
236
+ const reasoningEffortOption = takeOption(arguments_, '--reasoning-effort');
237
+ const reasoningEffort = reasoningEffortOption === undefined
238
+ ? undefined
239
+ : parseReasoningEffort(reasoningEffortOption, '--reasoning-effort');
240
+ const access = (takeOption(arguments_, '--access') ?? 'on-request');
241
+ const format = takeOption(arguments_, '--format') ?? 'text';
242
+ const command = arguments_[0];
243
+ if (access !== 'on-request' && access !== 'full-access')
244
+ throw new MarAgentError('MAR_AGENT_CLI_ARGUMENT_INVALID', 'Access must be on-request or full-access.');
245
+ const selectedModel = catalog.models.find((model) => model.id === modelId && model.enabled);
246
+ if (selectedModel !== undefined)
247
+ assertExternalCredentialAvailable(selectedModel, codexAuthFile);
248
+ if (reasoningEffort && selectedModel && !selectedModel.reasoningEfforts.includes(reasoningEffort))
249
+ throw new MarAgentError('MAR_AGENT_CLI_ARGUMENT_INVALID', `Reasoning effort "${reasoningEffort}" is not supported by model "${selectedModel.id}".`);
250
+ const interactive = command !== 'run';
251
+ let prompt = command === 'run' ? arguments_.slice(1).join(' ') : '';
252
+ // `run` does not need stdin until an approval or question occurs. Create
253
+ // readline lazily so a closed or pseudo-TTY stream in an external harness
254
+ // cannot fail the execution before its first model request.
255
+ let terminal;
256
+ const requireTerminal = () => (terminal ??= createInterface({ input: stdin, output: stdout }));
257
+ const host = new LocalAgentHost({
258
+ homeDirectory: home,
259
+ workspace,
260
+ approve: async (call) => {
261
+ if (!stdin.isTTY)
262
+ return 'denied';
263
+ const answer = await requireTerminal().question(`Approve ${call.name}? [y/N] `);
264
+ return /^y(es)?$/i.test(answer.trim()) ? 'approved' : 'denied';
265
+ },
266
+ question: async (request) => {
267
+ if (!stdin.isTTY)
268
+ throw new MarAgentError('MAR_AGENT_USER_INPUT_UNAVAILABLE', 'Interactive input is unavailable.');
269
+ const answers = {};
270
+ for (const question of request.questions) {
271
+ const value = question;
272
+ const id = typeof value.id === 'string' ? value.id : String(Object.keys(answers).length);
273
+ answers[id] = await requireTerminal().question(`${typeof value.question === 'string' ? value.question : JSON.stringify(question)} `);
274
+ }
275
+ return answers;
276
+ }
277
+ });
278
+ const runtime = runtimeModels(catalog.models, codexAuthFile);
279
+ const agent = await createMarAgent({
280
+ mode: 'normal',
281
+ host,
282
+ models: runtime.models,
283
+ ...(modelId === undefined ? {} : { defaultModelId: modelId })
284
+ });
285
+ try {
286
+ if (command === 'sessions' && arguments_[1] === 'list') {
287
+ stdout.write(`${JSON.stringify(await agent.listSessions(), null, takeFlag(arguments_, '--json') ? 0 : 2)}\n`);
288
+ return;
289
+ }
290
+ if (command === 'sessions' && arguments_[1] === 'delete' && arguments_[2]) {
291
+ if (!takeFlag(arguments_, '--yes') && !stdin.isTTY)
292
+ throw new MarAgentError('MAR_AGENT_CLI_ARGUMENT_INVALID', 'Non-interactive deletion requires --yes.');
293
+ await agent.deleteSession(arguments_[2]);
294
+ return;
295
+ }
296
+ if (command === 'sessions')
297
+ throw new MarAgentError('MAR_AGENT_CLI_ARGUMENT_INVALID', 'Unknown sessions command.');
298
+ let resumeId = command === 'resume' ? arguments_[1] : undefined;
299
+ if (command === 'resume' && !resumeId) {
300
+ if (!stdin.isTTY)
301
+ throw new MarAgentError('MAR_AGENT_CLI_ARGUMENT_INVALID', 'resume requires a session id.');
302
+ const listed = (await agent.listSessions());
303
+ for (const item of listed.sessions ?? [])
304
+ stdout.write(`${item.id}\t${item.title}\t${item.lastActivityAt}\n`);
305
+ resumeId = (await requireTerminal().question('Session ID: ')).trim();
306
+ if (!resumeId)
307
+ throw new MarAgentError('MAR_AGENT_CLI_ARGUMENT_INVALID', 'Session id is required.');
308
+ }
309
+ const session = resumeId
310
+ ? await agent.openSession(resumeId)
311
+ : await agent.createSession({
312
+ workspace
313
+ });
314
+ let activeHandle;
315
+ let interrupts = 0;
316
+ const interrupt = () => {
317
+ interrupts++;
318
+ if (activeHandle)
319
+ activeHandle.cancel();
320
+ else
321
+ terminal?.close();
322
+ process.exitCode = 130;
323
+ if (interrupts > 1)
324
+ activeHandle?.cancel();
325
+ };
326
+ process.on('SIGINT', interrupt);
327
+ try {
328
+ do {
329
+ if (interactive)
330
+ prompt = await requireTerminal().question('> ');
331
+ if (!prompt.trim())
332
+ break;
333
+ const invocation = parseExecutionInvocation(prompt);
334
+ const runInput = {
335
+ prompt: invocation.prompt,
336
+ access,
337
+ ...(modelId === undefined ? {} : { modelId }),
338
+ ...(reasoningEffort === undefined ? {} : { reasoningEffort })
339
+ };
340
+ const handle = invocation.mode === 'plan'
341
+ ? session.plan(runInput)
342
+ : invocation.mode === 'compact'
343
+ ? session.compact(runInput)
344
+ : session.run(runInput);
345
+ activeHandle = handle;
346
+ for await (const event of handle) {
347
+ if (format === 'stream-json')
348
+ stdout.write(`${JSON.stringify(event)}\n`);
349
+ else if (event.type === 'message.delta')
350
+ stdout.write(event.delta);
351
+ }
352
+ const result = await handle.result();
353
+ activeHandle = undefined;
354
+ if (format === 'json')
355
+ stdout.write(`${JSON.stringify(result)}\n`);
356
+ else if (format === 'text')
357
+ stdout.write('\n');
358
+ if (result.status !== 'completed')
359
+ process.exitCode = cliExitCode(result.errorCode);
360
+ } while (interactive);
361
+ }
362
+ finally {
363
+ process.off('SIGINT', interrupt);
364
+ }
365
+ }
366
+ finally {
367
+ terminal?.close();
368
+ await agent.dispose();
369
+ }
370
+ }
371
+ function runtimeModels(models, codexAuthFile) {
372
+ const provider = codexAuthFile !== undefined &&
373
+ models.some((model) => model.credentialSource === 'CODEX_AUTH_FILE')
374
+ ? new CodexAuthFileCredentialProvider(codexAuthFile)
375
+ : undefined;
376
+ return {
377
+ models: models.flatMap((model) => {
378
+ const { credentialSource, ...configuration } = model;
379
+ if (credentialSource === undefined)
380
+ return [configuration];
381
+ return provider === undefined
382
+ ? []
383
+ : [
384
+ {
385
+ ...configuration,
386
+ responsesEncoding: configuration.responsesEncoding ?? 'STANDARD',
387
+ credentialProvider: provider
388
+ }
389
+ ];
390
+ }),
391
+ providers: provider === undefined ? [] : [provider]
392
+ };
393
+ }
394
+ function assertExternalCredentialAvailable(model, codexAuthFile) {
395
+ if (model.credentialSource === 'CODEX_AUTH_FILE' && codexAuthFile === undefined)
396
+ throw new MarAgentError('MAR_AGENT_MODEL_AUTH_FAILED', 'Codex auth file is required for the selected model.');
397
+ }
398
+ function cliExitCode(code) {
399
+ if (code === undefined)
400
+ return 1;
401
+ if (code.includes('APPROVAL') ||
402
+ code.includes('USER_INPUT_UNAVAILABLE') ||
403
+ code.includes('DENIED'))
404
+ return 3;
405
+ if (code.includes('AUTH') ||
406
+ code.includes('CREDENTIAL') ||
407
+ code.includes('CONNECTION') ||
408
+ code.includes('TIMEOUT'))
409
+ return 4;
410
+ if (code.includes('ARGUMENT') || code.includes('CONFIG'))
411
+ return 2;
412
+ return 1;
413
+ }
414
+ function parseExecutionInvocation(input) {
415
+ const match = /^\/(plan|compact)(?:\s+([\s\S]*))?$/u.exec(input.trim());
416
+ if (!match)
417
+ return { mode: 'run', prompt: input };
418
+ const mode = match[1];
419
+ const argument = match[2]?.trim();
420
+ return {
421
+ mode,
422
+ prompt: argument ||
423
+ (mode === 'plan'
424
+ ? 'Investigate the current objective, resolve discoverable uncertainty, and produce an executable implementation and verification plan without claiming the work is complete.'
425
+ : DEFAULT_COMPACTION_FOCUS)
426
+ };
427
+ }
428
+ main().catch((error) => {
429
+ const diagnostic = describeMarAgentError(error, 'MAR_AGENT_CLI_FAILED', 'CLI command failed.');
430
+ process.stderr.write(`${diagnostic.message}\n`);
431
+ process.exitCode = cliExitCode(diagnostic.code);
432
+ });
package/dist/error.js CHANGED
@@ -1,2 +1,66 @@
1
- /* mar-release-protected */
2
- const _0x1520c5=_0x2870;(function(_0x14d3b9,_0x50fd0f){const _0x222534=_0x2870,_0x449c1c=_0x14d3b9();while(!![]){try{const _0xa57a83=parseInt(_0x222534(0x19c))/(0x109*-0x1d+-0x18e8+-0x1b77*-0x2)+parseInt(_0x222534(0x199))/(0x9c*0x4+-0x174f+-0x14e1*-0x1)*(parseInt(_0x222534(0x191))/(-0x2*-0x950+0x268e+-0x392b))+parseInt(_0x222534(0x188))/(0x6f*-0x13+-0x815+0x1056)*(parseInt(_0x222534(0x18f))/(-0x3f1*0x1+-0x1*0x24c5+-0x28bb*-0x1))+-parseInt(_0x222534(0x186))/(0x7*-0x23e+0x1e2f*-0x1+0x2de7)+-parseInt(_0x222534(0x192))/(0x18b*0x15+-0x12*-0xfa+-0x31f4*0x1)*(parseInt(_0x222534(0x189))/(0x884+-0x133a+0xabe))+parseInt(_0x222534(0x19b))/(0xbf3+0x2326+-0x3*0xfb0)+-parseInt(_0x222534(0x19e))/(-0xf6c+0x1*0x13c3+0x44d*-0x1)*(-parseInt(_0x222534(0x1a3))/(0x1*0x2479+-0x7f*-0x3e+-0x4330));if(_0xa57a83===_0x50fd0f)break;else _0x449c1c['push'](_0x449c1c['shift']());}catch(_0x570e47){_0x449c1c['push'](_0x449c1c['shift']());}}}(_0x53b5,0x125*0x9+-0x1b49a*-0x3+-0x2*0xa2eb));export class MarAgentError extends Error{[_0x1520c5(0x185)];[_0x1520c5(0x194)];[_0x1520c5(0x19f)];constructor(_0x27d909,_0x4b8aa5,_0x2b9f15={}){const _0x266cc1=_0x1520c5;super(_0x27d909+':\x20'+_0x4b8aa5,{'cause':_0x2b9f15[_0x266cc1(0x196)]}),this[_0x266cc1(0x1a2)]=_0x266cc1(0x197),this[_0x266cc1(0x185)]=_0x27d909,this[_0x266cc1(0x194)]=_0x2b9f15[_0x266cc1(0x194)],this[_0x266cc1(0x19f)]=_0x2b9f15[_0x266cc1(0x19f)]??![];}}const MAX_ERROR_MESSAGE_CHARACTERS=0x23c6+0x1*-0x1244+0xd9a*-0x1;export function describeMarAgentError(_0x1f1674,_0x383f21,_0x9b6eac=_0x1520c5(0x195)){const _0x481c3c=_0x1520c5,_0x619276=diagnosticCode(_0x1f1674)??_0x383f21,_0x488780=[],_0x373a48=new Set();let _0x134c8c=_0x1f1674;while(_0x134c8c!==undefined&&_0x134c8c!==null&&!_0x373a48[_0x481c3c(0x1a1)](_0x134c8c)&&_0x488780[_0x481c3c(0x18e)]<0x1*-0x1b5d+0x26df+-0xb7e){_0x373a48[_0x481c3c(0x18b)](_0x134c8c);const _0xa9c6de=diagnosticCode(_0x134c8c),_0x4361f8=diagnosticMessage(_0x134c8c,_0xa9c6de);if(_0x4361f8&&!_0x488780[_0x481c3c(0x18c)](_0x4361f8))_0x488780[_0x481c3c(0x19a)](_0x4361f8);_0x134c8c=diagnosticCause(_0x134c8c);}return{'code':_0x619276,'message':truncateErrorMessage(_0x488780[_0x481c3c(0x187)](_0x481c3c(0x1a0))||_0x9b6eac)};}function diagnosticCode(_0x4e8b61){const _0x2b4cd6=_0x1520c5;if(_0x4e8b61 instanceof MarAgentError)return _0x4e8b61[_0x2b4cd6(0x185)];if(_0x4e8b61===null||typeof _0x4e8b61!==_0x2b4cd6(0x193)||!(_0x2b4cd6(0x185)in _0x4e8b61))return undefined;const _0x533998=_0x4e8b61[_0x2b4cd6(0x185)];return typeof _0x533998===_0x2b4cd6(0x190)&&_0x533998[_0x2b4cd6(0x198)]()[_0x2b4cd6(0x18e)]>0x1*-0x1d81+-0x1f82+0x3d03?_0x533998[_0x2b4cd6(0x198)]()[_0x2b4cd6(0x18a)](-0xd4f*0x1+0x220*-0xb+0x24af*0x1,0x1a01+0x1*-0x199f+-0x12):undefined;}function diagnosticMessage(_0x39b541,_0x5d96dc){const _0x509c52=_0x1520c5,_0x993bfc=_0x39b541 instanceof Error?_0x39b541[_0x509c52(0x19d)]:_0x39b541!==null&&typeof _0x39b541===_0x509c52(0x193)&&_0x509c52(0x19d)in _0x39b541&&typeof _0x39b541[_0x509c52(0x19d)]===_0x509c52(0x190)?_0x39b541[_0x509c52(0x19d)]:typeof _0x39b541===_0x509c52(0x190)?_0x39b541:undefined,_0x4c2e3c=_0x993bfc?.[_0x509c52(0x198)]();if(!_0x4c2e3c)return undefined;const _0x1d79e0=_0x5d96dc!==undefined&&_0x4c2e3c[_0x509c52(0x18d)](_0x5d96dc+':\x20')?_0x4c2e3c[_0x509c52(0x18a)](_0x5d96dc[_0x509c52(0x18e)]+(0x16c4+-0xf*-0x51+-0x1b81)):_0x4c2e3c;return _0x5d96dc===undefined?_0x1d79e0:_0x5d96dc+':\x20'+_0x1d79e0;}function _0x53b5(){const _0x876c63=['ChvZAa','mtCZmZG1yvrUExjp','mZK1m2DgEhDSCW','BwvZC2fNzq','ndb0wvDcEee','CMv0CNLHyMXL','ienHDxnLzcbIEtOG','AgfZ','BMfTzq','odqYmZy5EvDfDhPc','y29Kzq','mZa0nZC5mfDQD3z0za','AM9PBG','otaXnJr4DLbhrwG','ndm5ntC2DMLnD0nU','C2XPy2u','ywrK','Aw5JBhvKzxm','C3rHCNrZv2L0Aa','BgvUz3rO','mtbUv0HpEey','C3rYAw5N','m01JBg1TDq','n2XZC3DJza','B2jQzwn0','zgv0ywLSCW','tufsiefNzw50ig9WzxjHDgLVBIbMywLSzwqU','y2f1C2u','twfYqwDLBNrfCNjVCG','DhjPBq','odG1nJu4BuzADhnf'];_0x53b5=function(){return _0x876c63;};return _0x53b5();}function _0x2870(_0x4a9482,_0x254e5f){_0x4a9482=_0x4a9482-(-0x4*-0x94b+-0x1a23+-0x984);const _0x245faf=_0x53b5();let _0x4d7b6a=_0x245faf[_0x4a9482];if(_0x2870['eeYjxV']===undefined){var _0x1a8b64=function(_0x2a41a6){const _0x286bd3='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x143ace='',_0x22d90a='';for(let _0x16330d=0x14f8+-0x110f+-0xd*0x4d,_0x39571c,_0x5f195f,_0x234ab9=0x12c1*-0x2+-0x513*-0x4+0x1136*0x1;_0x5f195f=_0x2a41a6['charAt'](_0x234ab9++);~_0x5f195f&&(_0x39571c=_0x16330d%(0xe5+-0x2627+0x2546)?_0x39571c*(0x10b7+0x4a4+-0x151b)+_0x5f195f:_0x5f195f,_0x16330d++%(-0x1760+0xea4*0x2+0x179*-0x4))?_0x143ace+=String['fromCharCode'](0x1a01+0x1*-0x199f+0x9d&_0x39571c>>(-(0x16c4+-0xf*-0x51+-0x1b81)*_0x16330d&0x1*0x803+0x1df8+0x4f*-0x7b)):-0x66d+0x16d2+-0x1065*0x1){_0x5f195f=_0x286bd3['indexOf'](_0x5f195f);}for(let _0x2126b7=-0x2213*0x1+0x145a+0x493*0x3,_0x385965=_0x143ace['length'];_0x2126b7<_0x385965;_0x2126b7++){_0x22d90a+='%'+('00'+_0x143ace['charCodeAt'](_0x2126b7)['toString'](-0x1d1e*-0x1+-0x2*-0x41b+0x4*-0x951))['slice'](-(0x2*-0xcd3+0x4e+0x195a));}return decodeURIComponent(_0x22d90a);};_0x2870['PWaWGi']=_0x1a8b64,_0x2870['agxQZA']={},_0x2870['eeYjxV']=!![];}const _0xb3b1bb=_0x245faf[0x7e*0x3+0x76*-0x43+0x1d68];_0x2870['fBqoQn']!==_0xb3b1bb&&(_0x2870['agxQZA']={},_0x2870['fBqoQn']=_0xb3b1bb);const _0x3a148a=_0x2870['agxQZA'][_0x4a9482];return _0x3a148a===undefined?(_0x4d7b6a=_0x2870['PWaWGi'](_0x4d7b6a),_0x2870['agxQZA'][_0x4a9482]=_0x4d7b6a):_0x4d7b6a=_0x3a148a,_0x4d7b6a;}function diagnosticCause(_0x5a8df1){const _0x4b84f4=_0x1520c5;if(_0x5a8df1===null||typeof _0x5a8df1!==_0x4b84f4(0x193)||!(_0x4b84f4(0x196)in _0x5a8df1))return undefined;return _0x5a8df1[_0x4b84f4(0x196)];}function truncateErrorMessage(_0x34a6f1){const _0x563e4a=_0x1520c5;return[..._0x34a6f1][_0x563e4a(0x18a)](0x1*0x803+0x1df8+0x15*-0x1cf,MAX_ERROR_MESSAGE_CHARACTERS)[_0x563e4a(0x187)]('');}
1
+ export class MarAgentError extends Error {
2
+ code;
3
+ details;
4
+ retryable;
5
+ constructor(code, message, options = {}) {
6
+ super(`${code}: ${message}`, { cause: options.cause });
7
+ this.name = 'MarAgentError';
8
+ this.code = code;
9
+ this.details = options.details;
10
+ this.retryable = options.retryable ?? false;
11
+ }
12
+ }
13
+ const MAX_ERROR_MESSAGE_CHARACTERS = 1_000;
14
+ export function describeMarAgentError(error, fallbackCode, fallbackMessage = 'MAR Agent operation failed.') {
15
+ const code = diagnosticCode(error) ?? fallbackCode;
16
+ const messages = [];
17
+ const seen = new Set();
18
+ let current = error;
19
+ while (current !== undefined && current !== null && !seen.has(current) && messages.length < 4) {
20
+ seen.add(current);
21
+ const currentCode = diagnosticCode(current);
22
+ const message = diagnosticMessage(current, currentCode);
23
+ if (message && !messages.includes(message))
24
+ messages.push(message);
25
+ current = diagnosticCause(current);
26
+ }
27
+ return {
28
+ code,
29
+ message: truncateErrorMessage(messages.join(' Caused by: ') || fallbackMessage)
30
+ };
31
+ }
32
+ function diagnosticCode(value) {
33
+ if (value instanceof MarAgentError)
34
+ return value.code;
35
+ if (value === null || typeof value !== 'object' || !('code' in value))
36
+ return undefined;
37
+ const code = value.code;
38
+ return typeof code === 'string' && code.trim().length > 0 ? code.trim().slice(0, 80) : undefined;
39
+ }
40
+ function diagnosticMessage(value, code) {
41
+ const message = value instanceof Error
42
+ ? value.message
43
+ : value !== null &&
44
+ typeof value === 'object' &&
45
+ 'message' in value &&
46
+ typeof value.message === 'string'
47
+ ? value.message
48
+ : typeof value === 'string'
49
+ ? value
50
+ : undefined;
51
+ const normalized = message?.trim();
52
+ if (!normalized)
53
+ return undefined;
54
+ const withoutDuplicatedCode = code !== undefined && normalized.startsWith(`${code}: `)
55
+ ? normalized.slice(code.length + 2)
56
+ : normalized;
57
+ return code === undefined ? withoutDuplicatedCode : `${code}: ${withoutDuplicatedCode}`;
58
+ }
59
+ function diagnosticCause(value) {
60
+ if (value === null || typeof value !== 'object' || !('cause' in value))
61
+ return undefined;
62
+ return value.cause;
63
+ }
64
+ function truncateErrorMessage(value) {
65
+ return [...value].slice(0, MAX_ERROR_MESSAGE_CHARACTERS).join('');
66
+ }
@@ -1,2 +1,20 @@
1
- /* mar-release-protected */
2
- const _0xdd1e66=_0x58f3;(function(_0x47d4a6,_0x4329fb){const _0x10fd3f=_0x58f3,_0x174f2b=_0x47d4a6();while(!![]){try{const _0x3a22f1=-parseInt(_0x10fd3f(0x119))/(0x1db0+0x14f7+0x871*-0x6)+parseInt(_0x10fd3f(0x115))/(0x4fa+-0x1a0e+-0x2*-0xa8b)+-parseInt(_0x10fd3f(0x11a))/(0x4*0x204+-0xd54+0x547)+parseInt(_0x10fd3f(0x10c))/(0x19bd+-0x2249*0x1+0x890)+-parseInt(_0x10fd3f(0x10d))/(0x22d3*-0x1+0x1651+0xc87)*(-parseInt(_0x10fd3f(0x106))/(-0x13*-0x19e+0x8c7+0x3*-0xd29))+parseInt(_0x10fd3f(0x109))/(0x181*0xb+0x1eaa+-0x2f2e)*(-parseInt(_0x10fd3f(0x103))/(-0x7*0x25+-0x55*0x4+0x25f))+parseInt(_0x10fd3f(0x114))/(-0x165e+-0x1*-0x2387+0xe*-0xf0);if(_0x3a22f1===_0x4329fb)break;else _0x174f2b['push'](_0x174f2b['shift']());}catch(_0x26bc7c){_0x174f2b['push'](_0x174f2b['shift']());}}}(_0x553e,-0x91f09+-0x111718+0x2390d0));import{MarAgentError}from'../error.js';export const MAR_AGENT_HOST_API_VERSION=_0xdd1e66(0x112);function _0x58f3(_0x3176cf,_0x2f05de){_0x3176cf=_0x3176cf-(0x1a9e*0x1+-0xb60+-0xe3c);const _0x115ddb=_0x553e();let _0x4f4e69=_0x115ddb[_0x3176cf];if(_0x58f3['jcWbwC']===undefined){var _0x673312=function(_0x406fe4){const _0x562dd8='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x3bf6b6='',_0xb31888='';for(let _0x187933=-0x224d+-0x22eb*-0x1+-0x9e,_0xf207c0,_0x24d9c7,_0x5cf2f0=0x64d*-0x2+-0x94*0x3d+0x2fde;_0x24d9c7=_0x406fe4['charAt'](_0x5cf2f0++);~_0x24d9c7&&(_0xf207c0=_0x187933%(-0x1*0xa59+-0x18e5+-0x2*-0x11a1)?_0xf207c0*(-0x1*0xbb3+-0x37b+0x32*0x4f)+_0x24d9c7:_0x24d9c7,_0x187933++%(0x2521+0x1de6+-0x4303))?_0x3bf6b6+=String['fromCharCode'](-0x18f*-0x7+-0x713*-0x2+-0xa*0x268&_0xf207c0>>(-(0x9b7+0xbde+-0x1593)*_0x187933&-0xbaf*0x1+0x5cd*-0x6+0x2e83)):0x225b+-0xa6*0x10+-0x36d*0x7){_0x24d9c7=_0x562dd8['indexOf'](_0x24d9c7);}for(let _0x2363b8=0x1*-0x52c+0xc8*-0x1+0x2*0x2fa,_0x231ffb=_0x3bf6b6['length'];_0x2363b8<_0x231ffb;_0x2363b8++){_0xb31888+='%'+('00'+_0x3bf6b6['charCodeAt'](_0x2363b8)['toString'](-0x21c7+-0x5a1+-0x2*-0x13bc))['slice'](-(0x7ba*0x2+-0x1*-0x749+-0x16bb));}return decodeURIComponent(_0xb31888);};_0x58f3['RETQmn']=_0x673312,_0x58f3['fgpIfx']={},_0x58f3['jcWbwC']=!![];}const _0x8c476c=_0x115ddb[0x1f1f+0x5*0x33d+-0x2f50];_0x58f3['ucQkNz']!==_0x8c476c&&(_0x58f3['fgpIfx']={},_0x58f3['ucQkNz']=_0x8c476c);const _0x2d73fe=_0x58f3['fgpIfx'][_0x3176cf];return _0x2d73fe===undefined?(_0x4f4e69=_0x58f3['RETQmn'](_0x4f4e69),_0x58f3['fgpIfx'][_0x3176cf]=_0x4f4e69):_0x4f4e69=_0x2d73fe,_0x4f4e69;}const requiredCapabilities=[_0xdd1e66(0x105),_0xdd1e66(0x10b),_0xdd1e66(0x108),_0xdd1e66(0x117),_0xdd1e66(0x116),_0xdd1e66(0x110),_0xdd1e66(0x102)];export function negotiateHost(_0x3d011b){const _0x3a37fc=_0xdd1e66,_0x40f54b=/^(\d+)\.(\d+)$/[_0x3a37fc(0x104)](_0x3d011b[_0x3a37fc(0x111)]),_0x38d9cf=requiredCapabilities[_0x3a37fc(0x10e)](_0x964b6e=>!_0x3d011b[_0x3a37fc(0x107)][_0x3a37fc(0x10f)](_0x964b6e));if(_0x40f54b===null||Number(_0x40f54b[-0x219a+-0x1eb0+0x97*0x6d])!==0x1c97+-0x1904+-0x392||Number(_0x40f54b[0x1a9b+-0x3*0x1f5+-0x14ba])<-0x37b+0x24e0+0x53*-0x67||_0x38d9cf[_0x3a37fc(0x118)]>0x2521+0x1de6+-0x4307)throw new MarAgentError(_0x3a37fc(0x10a),_0x3a37fc(0x113),{'details':{'expected':MAR_AGENT_HOST_API_VERSION,'actual':_0x3d011b[_0x3a37fc(0x111)],'missing':_0x38d9cf}});return _0x3d011b;}function _0x553e(){const _0x2b30b7=['D29YA3nWywnLlNjLywq','nMjxsgfbEG','y2fWywjPBgL0AwvZ','ChjVy2vZCY5Tyw5Hz2u','ndeZotiXowPszgv5sG','tufsx0fhru5ux0Hpu1rFsu5dt01qqvrjqKXf','D29YA3nWywnLlNbHDgnO','mtiXotG4mhbzEuTfuq','mtG2mJm1nvDbDM1vsW','zMLSDgvY','Aw5JBhvKzxm','zxzLBNqUChvIBgLZAa','yxbPvMvYC2LVBG','ms4W','sg9ZDcbbueKGAxmGAw5JB21WyxrPyMXLlG','nde1mduWm1L0yKnMDW','mJaYmdaYog13EKDbwq','DxnLCI1PBNb1Dc5Yzxf1zxn0','yxbWCM92ywWUCMvXDwvZDa','BgvUz3rO','nZmWnJGXv3rJqwPr','nJqWnZu1wvPezhDH','C2vZC2LVBI5ZDg9Yzq','ofvhz25PDq','zxHLyW'];_0x553e=function(){return _0x2b30b7;};return _0x553e();}
1
+ import { MarAgentError } from '../error.js';
2
+ export const MAR_AGENT_HOST_API_VERSION = '1.0';
3
+ const requiredCapabilities = [
4
+ 'workspace.read',
5
+ 'workspace.patch',
6
+ 'process.manage',
7
+ 'approval.request',
8
+ 'user-input.request',
9
+ 'event.publish',
10
+ 'session.store'
11
+ ];
12
+ export function negotiateHost(description) {
13
+ const match = /^(\d+)\.(\d+)$/.exec(description.apiVersion);
14
+ const missing = requiredCapabilities.filter((capability) => !description.capabilities.includes(capability));
15
+ if (match === null || Number(match[1]) !== 1 || Number(match[2]) < 0 || missing.length > 0)
16
+ throw new MarAgentError('MAR_AGENT_HOST_INCOMPATIBLE', 'Host API is incompatible.', {
17
+ details: { expected: MAR_AGENT_HOST_API_VERSION, actual: description.apiVersion, missing }
18
+ });
19
+ return description;
20
+ }