@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
@@ -1,5 +1,373 @@
1
- /* mar-release-protected */
2
- const _0x25af7d=_0x137a;(function(_0x386e28,_0x19108f){const _0x36ef72=_0x137a,_0x5dbcc0=_0x386e28();while(!![]){try{const _0x2a6c37=parseInt(_0x36ef72(0x134))/(0x3*-0xbed+0x2*-0xb3e+0x3a44*0x1)*(-parseInt(_0x36ef72(0x10e))/(0xbe2+0x5c4+-0x11a4))+parseInt(_0x36ef72(0x1b2))/(-0xf*-0x23d+0x3*0x39a+0x2*-0x162f)+-parseInt(_0x36ef72(0x166))/(-0x981*0x1+-0xccf+0x2*0xb2a)+parseInt(_0x36ef72(0x1a4))/(0x2*0x4d5+0x2314+-0x2cb9)*(parseInt(_0x36ef72(0x1a2))/(0xf9d+0x11e7+-0x10bf*0x2))+parseInt(_0x36ef72(0x131))/(-0x1087+0xa+0x1084)+parseInt(_0x36ef72(0x13a))/(0x2658+0x1*-0x26c9+0x79)*(-parseInt(_0x36ef72(0x152))/(0xe0e+-0x71f*-0x1+-0x42*0x52))+-parseInt(_0x36ef72(0x172))/(-0x3*0x9b1+0x31*-0x3d+0x28ca)*(-parseInt(_0x36ef72(0x124))/(0x1d5b+0x16f*0xe+-0x1*0x3162));if(_0x2a6c37===_0x19108f)break;else _0x5dbcc0['push'](_0x5dbcc0['shift']());}catch(_0x520ee1){_0x5dbcc0['push'](_0x5dbcc0['shift']());}}}(_0x1b6a,-0x16de9+0xac4cd*0x1+-0x1d*0x22e6));import{randomUUID}from'node:crypto';function _0x1b6a(){const _0x1597bd=['Aw50zwDLCG','ywjVCNq','zxHLy3v0B3i','ls1LDMfS','y29Kzu1HEe91Dhb1Dej5DgvZ','zw52AxjVBM1LBNq','ndK2nZfvDe9Tvgm','DMLLD0LTywDLtwf4qNL0zxm','ywrKrxzLBNrmAxn0zw5LCG','y29Kzu1HEenHBgXZ','tenFquXm','q29KzsbnB2rLihnLBNqGzgf0ysbHzNrLCIbJB21WBgv0Aw9UlG','C3rKAw4','zgvZDhjVEq','q29KzsbnB2rLigv4y2vLzgvKigL0CYbTzxnZywDLihrYyw5ZzMvYigXPBwL0lG','CgfYC2u','uMvJB3jKphn0CMLUzYWGDw5RBM93BJ4','B2jQzwn0','C3rYAw5N','y2fSBa','CMf3','yMfZzty0','tufsx0fhru5ux1bst0nfu1nFteLnsvq','zxHPDa','y29Kzu1HEfrYyw5ZCg9YDej5DgvZ','tufsx0fhru5ux0LnquDfx0zpuK1bvf9vtLnvufbpuLrfra','mtqXodiYohD0BMX4rW','yNL0zuXLBMD0Aa','CMvXDwLYzwq','u3LZDgvTuM9VDa','zgf0yq','D3jPDgu','Cgf0Ahm','q29KzsbnB2rLigvTAxr0zwqGDg9Vig1HBNKGAw1Hz2vZlG','B3v0Chv0u2nOzw1H','AM9PBG','BMfTzq','C3bHD24','nJu2mJb3Dw92qw8','y29Kzu1Vzgu','BwvZC2fNzq','CMvHC29U','vevnua','q29KzsbnB2rLigv4AxrLzcb3AxrOB3v0igeGy29TCgXLDgLVBIbTzxnZywDLlG','cN07cMbGya','zgvSzxrL','q29KzsbnB2rLigv4AxrLzcb3AxrOia','Aw1Hz2u','tufsx0fhru5ux0nprevFsu5dt01qtevurq','tufsx0fhru5ux0Hpu1rFt1bfuKfusu9ox0zbsuXfra','y2vPBa','ChvZAa','ls1PBNb1Dc10ExbLpw1VzhvSzq','tufsx0fhru5ux0nprevFq0foq0vmteve','AxntywzLsw50zwDLCG','zMLSDgvY','DxrMoa','y29Kzv9TB2rL','q29KzsbnB2rLihnLBNqGyw4GAw52ywXPzcbTzxnZywDLlG','yM9VBgvHBG','q29KzsbnB2rLihjLC291CMnLCYb3zxjLihjLBgvHC2vKlG','AxnbCNjHEq','ve1q','ywXS','y29KzvrPBwvVDxrnCW','CMvZB2X2zq','q29KzsbnB2rLignHBgWGsuqGB3iGy2fSBcbJB3vUDcbPCYbPBNzHBgLKlG','C3rKzxjY','C2vZC2LVBKLK','vgHLihjLCxvLC3rLzcbUzxn0zwqGDg9VBcbPCYb1BMf2ywLSywjSzs4','ls1TyxGTB2XKlxnWywnLlxnPEMu9','q29KzsbnB2rLignVBxbSzxrLzcb3AxrOB3v0igvTAxr0zwqGDgv4Dc4','DgHYB3DjzKfIB3j0zwq','zg9Uzq','ywXSu2v0DgXLza','q29KzsbnB2rLigv4y2vLzgvKigL0CYbLEgvJDxrPB24GDgLTzsbSAw1PDc4','cGP0B29SCY5oqu1fkgLUChv0ksbYzxr1CM5ZigeGCMvZDwX0igvUDMvSB3bLlcbUB3qGAxrZigrHDgeGzMLLBgrZigrPCMvJDgX5lIbJB250zw50igLZihjLBMrLCMvKihrVB2WGDgv4DcWGBM90ihjHDYbMAwXLigj5DgvZoYbYzwfKignVBNrLBNqGAw5JBhvKzxmGBgLUzsbUDw1IzxjZigfUzcbTzxrHzgf0ys4Gvg9VBc1ZCgvJAwzPyYbMAwvSzhmGyxjLigLUigrHDgeGkgzVCIbLEgfTCgXLlcbHBIbLEgvJihjLC3vSDcb1C2vZihjLC3vSDc5KyxrHlMv4AxrdB2rLigfUzcbYzxn1BhqUzgf0ys5ZDgrVDxqPlIboyw1LCYbUB3qGBgLZDgvKigjLBg93ihjLDhvYBIb7ignVBNrLBNq6ihn0CMLUzZSGzgf0yt86ihvUA25VD247igLTywDLCZ86iefYCMf5phSGBwLTzvr5Cgu6ihn0CMLUzZSGzgf0yujHC2u2ndOGC3rYAw5Nih0+oYb0CNvUy2f0zwq/oIbIB29SzwfUih0UcLjLDhvYBIb0ExbLCYbMB3iGyxzHAwXHyMXLihrVB2XZoYb1C2uGDgHLAxiGzxHPC3rPBMCGAw5WDxqGC2nOzw1HCYbMB3iGyxjNDw1LBNrZoGPGygb0CWP0ExbLifrVB2Xszxn1BhrZid0GEWO','zMLUywXSEq','C3vWCg9YDhnjBwfNzxm','ihWG','AgfZ','C3rYAw5NAwz5','zw51Bq','C2XPy2u','zgvZy3jPChrPB24','y29Kzu1HEenVBMn1CNjLBNrdzwXSCW','nJCYmgjrALv5qq','zgLZCg9Zzq','ndm1z01Lzw5V','qxjYyxK8','q29KzsbnB2rLihrVB2WGzgLZCgf0y2GGAxmGDw5HDMfPBgfIBguU','Dgv4Da','DhjPBq','DhLWzq','ywrK','uNvUihjHDYbkyxzHu2nYAxb0igLUigeGzNjLC2GGtM9Kzs5QCYbWCM9JzxnZihrVignVBxbVC2uGDg9VBcbJywXSCYbHBMqGChjVy2vZCYbYzxn1BhrZigLUig9UzsbTB2rLBcb0DxjUlIbuB3aTBgv2zwWGyxDHAxqGyw5Kigr5BMfTAwmGtM9KzsbTB2r1BguGAw1WB3j0CYb2AweGyxDHAxqGAw1WB3j0kc4UlIKGyxjLihn1ChbVCNrLzc4Gq2fSBcb0B29SCY5oqu1fkgLUChv0ksb1C2LUzYb0AguGyxzHAwXHyMXLihrVB2WGC2nOzw1HCZSGzNjLzwzVCM0GDg9VBhmGywnJzxb0ihrOzwLYihjHDYbZDhjPBMCUifjLC3vSDhmGAgf2zsbJB250zw50igfUzcbVChrPB25HBcbKyxrHl2LTywDLCY90CNvUy2f0zwqUifvZzsbqCM9TAxnLlMfSBcbMB3iGAw5KzxbLBMrLBNqGy2fSBhmGyw5Kigf3ywL0igrLCgvUzgvUy2LLCY4GuNvUDgLTzsbLBMzVCMnLCYbZywzLl3nLCMLHBcb0B29SigjHCNjPzxjZlIb0zxH0khzHBhvLksbVCIbJB25ZB2XLlMXVzYH2ywX1zsKGzw1PDhmGC2vSzwn0zwqGB3v0Chv0oYbPBwfNzsH2ywX1zsKGzw1PDhmGB25LihjLDhvYBMvKihTTAw1LvhLWzsXKyxrHqMfZzty0FsbPBwfNzs4Gvg9VBcbLCNjVCNmGCMvQzwn0ihDPDgGGy29Kzs9TzxnZywDLigfUzcbTyxKGyMuGy2f1z2H0lIbbD2fPDcbLDMvYEsb0B29SignHBgW7ig5ViePtihn0yxrLihn1CNzPDMvZigeGy2vSBc4Gv2HVBguTy2vSBcbLEgvJDxrPB24GAgfZihrOzsbZyw1LieHVC3qGyxbWCM92ywWGyw5Kie9tihbLCM1PC3nPB25ZigfZigv4zwmSig5VDcbHihjLC3rYAwn0zwqGsMf2yvnJCMLWDcbZyw5KyM94lIbeBYbUB3qGywnJzxnZig9YigrPC2nSB3nLihnLy3jLDhmUifvZzsb0B29SCYbMB3iGBwfUywDLzcbWCM9JzxnZzxmGyw5KihrHC2TZihrOyxqGBxvZDcbZDxj2AxzLihrOAxmGy2vSBdSGy2vSBcbJBgvHBNvWigzVBgXVD3mGDgHLieHVC3qGChjVy2vZCY10CMvLig1Ly2HHBMLZBsbHBMqGAxmGBM90ignVBNrHAw5Tzw50igzVCIbKzxrHy2HLzcbKzxnJzw5Kyw50CY4Grg8GBM90ignHBgWGy29Kzv9TB2rLihjLy3vYC2L2zwX5lIbjBNb1DcbTyxGGmsbnAuiSigvTAxr0zwqGDgv4DcbTyxGGmsbnAuiSig1HEcaXmJGGBMvZDgvKignHBgXZlcb3ywXSihrPBwuGmtiWihnLy29UzhmUie91Dhb1Dc1SAw1PDcbHBMqGCNvUDgLTzsbMywLSDxjLCYbKBYbUB3qGCM9SBcbIywnRignVBxbSzxrLzcb3B3jRlG','Aw5JBhvKzxm','teforW','tufsx0fhru5ux1rpt0XFtK9ux0fwquLmqujmrq','tufsx0fhru5ux0nprevFrKfjteve','Dg9VBhm','DMfSDwu','mty0mdm4nxnWthnUDW','zxHLy3v0Aw9Uswq','tufsx0fhru5ux1rpt0XFt1vuufvux0XjtuLu','q29KzsbTDxn0igjLigeGBM9Uzw1WDhKGsMf2yvnJCMLWDcbZDhjPBMCGD2L0AgLUihrOzsbJzwXSigLUChv0igXPBwL0lG','mZu2mtzyzunfCwS','B25Jzq','ywjVCNrLza','uefusa','A2v5CW','D2LUmZi','y29Kzq','zMXHDe1HCa','tufsx0fhru5ux1rpt0XFsu5qvvrFsu5wquXjra','tufsx0fhru5ux0nprevFufjpve9dt0XFrvjst1i','ChjVCgvYDgLLCW','C2vYAwfS','CgXHDgzVCM0','yw55t2y','BgvUz3rO','zNjLzwzVCM0','ugf0Aa','zxHLy3v0zq','BNvSBa','BwLTzvr5Cgu','v0LoreLs','q29KzsbnB2rLihnLBNqGAw52ywXPzcbku09olG','mJj0rKHTDg0','yxjNDw1LBNrZ','q29KzsbnB2rLihjLDhvYBMvKihDPDgGGDw5HD2fPDgvKihrVB2WGy2fSBhm7ignVBxbSzxrLzcbVCgvYyxrPB25ZigfYzsbUB3qGCM9SBgvKigjHy2SU','A2LUza','C2v0','CMvTB3zLrxzLBNrmAxn0zw5LCG','BNvTyMvY','q29KzsbnB2rLigLTywDLig11C3qGy29UDgfPBIb2ywXPzcbqtKCSiePqruCGB3iGv2vIucbIyxnLnJqGD2L0AcbTyxrJAgLUzYbnsu1flG','q29KzsbnB2rLignLBgWGAgfZigvUzgvKlG','u0Lhs0Lmta','C2L6zq','AxrLBxm','yw55','mJu3otyXmLHtwxz3tq','tufsx0fhru5ux0nprevFveLnru9vva','vgHLign1CNjLBNqGq29KzsbnB2rLignVBNrLEhqGzg9LCYbUB3qGC3vWCg9YDcbPBwfNzsbVDxrWDxqU','m25bwwz6sW','Dg9tDhjPBMC','y29KzuHLyxbnzwDHyNL0zxm','y29Kzu1HEeLUChv0qNL0zxm','C2LNBMfS','tufsx0fhru5ux0Loufvux0nbuefcsuXjvfLFvu5tvvbqt1juruq','mZG0ChfuwKnh','Aw5KzxHpzG','q29KzsbnB2rLigvTAxr0zwqGDg9Vig11y2GGDgv4Dc4','C29Tzq','y2f0y2G','zw50CMLLCW','y29Kzu1HEezYyw1LqNL0zxm','Aw52B2TL','zNjVBuvUDhjPzxm','zgf0yujHC2u2na','zxjYB3i','Dw5RBM93BG','zxHLy1bHDgG','zNjVBq','C3rKB3v0','yxjYyxK','vgHLienVzguGtw9KzsbWCM9JzxnZigXPBwL0ihDHCYbYzwfJAgvKlG','BwfW'];_0x1b6a=function(){return _0x1597bd;};return _0x1b6a();}import{StringDecoder}from'node:string_decoder';import{MarAgentError,describeMarAgentError}from'../error.js';import{directLocalProcessExecutor,signalProcessTree}from'../host/local-process-executor.js';import{TOOL_EXECUTION_LIMITS as _0x478246}from'./execution-limits.js';import{createToolCallScheduler}from'./scheduler.js';import{detectImageMime}from'./view-image.js';export const codeModeToolDefinition={'name':_0x25af7d(0x185),'description':_0x25af7d(0x1ab),'inputMode':_0x25af7d(0x11d),'inputSchema':{'type':_0x25af7d(0x15d),'properties':{'code':{'type':_0x25af7d(0x15e)}},'required':[_0x25af7d(0x114)],'additionalProperties':![]},'parallelSafety':_0x25af7d(0x119)};export function withCodeModeResultTypes(_0x3daa61){const _0x2eb9c1=_0x25af7d;if(!_0x3daa61[_0x2eb9c1(0x13d)](_0x3ea608=>_0x3ea608[_0x2eb9c1(0x170)]===_0x2eb9c1(0x185)))return[..._0x3daa61];const _0x58816b=[];let _0x9c568b=0x1b62+-0xf1d*-0x1+0x1d9*-0x17;for(const _0xecccfd of _0x3daa61){if(_0xecccfd[_0x2eb9c1(0x170)]===_0x2eb9c1(0x185)||!_0xecccfd[_0x2eb9c1(0x16e)])continue;const _0x3e575c=JSON[_0x2eb9c1(0x19d)](_0xecccfd[_0x2eb9c1(0x170)])+':\x20'+schemaType(_0xecccfd[_0x2eb9c1(0x16e)])+';',_0x5e3aa6=Buffer[_0x2eb9c1(0x167)](_0x3e575c);if(_0x9c568b+_0x5e3aa6>(0x23f3+0x45+-0x2428)*(0x79*-0x38+0x129e*-0x2+0x4*0x10ed))continue;_0x58816b[_0x2eb9c1(0x17f)](_0x3e575c),_0x9c568b+=_0x5e3aa6;}const _0x44dd5d=codeModeToolDefinition[_0x2eb9c1(0x1a0)]+_0x2eb9c1(0x198)+_0x58816b[_0x2eb9c1(0x16f)]('\x0a')+_0x2eb9c1(0x178);return _0x3daa61[_0x2eb9c1(0x14b)](_0x17101c=>_0x17101c[_0x2eb9c1(0x170)]===_0x2eb9c1(0x185)?{..._0x17101c,'description':_0x44dd5d}:_0x17101c);}function _0x137a(_0x45298a,_0xbbcb6e){_0x45298a=_0x45298a-(-0x4a5+0x327+-0xa3*-0x4);const _0x1ab2f4=_0x1b6a();let _0x460658=_0x1ab2f4[_0x45298a];if(_0x137a['TrErpu']===undefined){var _0x504cab=function(_0x568d6f){const _0x363305='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x293152='',_0x77dd42='';for(let _0x21332f=0x1a56+-0x11d0+0x2*-0x443,_0x51c48e,_0x577845,_0x3ce0c9=-0x5a6+0x1feb*0x1+0x1*-0x1a45;_0x577845=_0x568d6f['charAt'](_0x3ce0c9++);~_0x577845&&(_0x51c48e=_0x21332f%(-0x1f65+-0xe3+0x204c)?_0x51c48e*(0xb03*0x1+0xd*0x1b3+-0x106d*0x2)+_0x577845:_0x577845,_0x21332f++%(-0xa5c+0x16*0x52+0x354))?_0x293152+=String['fromCharCode'](-0x11c9*-0x1+-0x1621+-0x1*-0x557&_0x51c48e>>(-(-0x6a9*0x3+0x1ea*-0x7+0x4c5*0x7)*_0x21332f&0xc9c+-0x95*0x43+0x1*0x1a69)):-0x684+-0x1cee+0x2372){_0x577845=_0x363305['indexOf'](_0x577845);}for(let _0x30b780=-0x696+0x6bc*-0x1+0x2aa*0x5,_0x3c0897=_0x293152['length'];_0x30b780<_0x3c0897;_0x30b780++){_0x77dd42+='%'+('00'+_0x293152['charCodeAt'](_0x30b780)['toString'](-0x75*0x2b+-0x247c+0x3833))['slice'](-(0x1c56+-0xe3*-0x22+-0x1d3d*0x2));}return decodeURIComponent(_0x77dd42);};_0x137a['pNssIS']=_0x504cab,_0x137a['seOJyG']={},_0x137a['TrErpu']=!![];}const _0x163b48=_0x1ab2f4[-0xd*-0x111+-0xb2f+-0x2ae];_0x137a['tPmRJn']!==_0x163b48&&(_0x137a['seOJyG']={},_0x137a['tPmRJn']=_0x163b48);const _0x5acc4c=_0x137a['seOJyG'][_0x45298a];return _0x5acc4c===undefined?(_0x460658=_0x137a['pNssIS'](_0x460658),_0x137a['seOJyG'][_0x45298a]=_0x460658):_0x460658=_0x5acc4c,_0x460658;}function schemaType(_0x2d1ee0,_0x3a31b5=0x8d8+-0x1*0x22ed+0xb*0x25f){const _0x2227e2=_0x25af7d;if(!_0x2d1ee0||typeof _0x2d1ee0!==_0x2227e2(0x15d)||Array[_0x2227e2(0x189)](_0x2d1ee0)||_0x3a31b5>-0xd34+-0x11c9*-0x1+-0x48d)return _0x2227e2(0x145);const _0x2d798e=_0x2d1ee0;if(Array[_0x2227e2(0x189)](_0x2d798e[_0x2227e2(0x19e)]))return _0x2d798e[_0x2227e2(0x19e)][_0x2227e2(0x19f)](0x2383+-0xa9d+-0x18e6*0x1,0x31d*0x1+-0x1d59*-0x1+-0x2056)[_0x2227e2(0x14b)](_0x12e453=>JSON[_0x2227e2(0x19d)](_0x12e453))[_0x2227e2(0x16f)](_0x2227e2(0x19b))||_0x2227e2(0x145);if(Array[_0x2227e2(0x189)](_0x2d798e[_0x2227e2(0x11b)]))return _0x2d798e[_0x2227e2(0x11b)][_0x2227e2(0x19f)](0x1*0x196+-0x1a6d+0x18d7,-0x103a+-0x168e+0x26d0)[_0x2227e2(0x14b)](_0x4170a2=>schemaType(_0x4170a2,_0x3a31b5+(0x1*-0x1501+-0xe3*-0xb+0xb41)))[_0x2227e2(0x16f)](_0x2227e2(0x19b))||_0x2227e2(0x145);if(Array[_0x2227e2(0x189)](_0x2d798e[_0x2227e2(0x1a9)]))return _0x2d798e[_0x2227e2(0x1a9)][_0x2227e2(0x19f)](0x1f02+-0x155c+0xf7*-0xa,-0x1089+-0x6c9*-0x2+-0xd*-0x3b)[_0x2227e2(0x14b)](_0x11fc2b=>schemaType({..._0x2d798e,'type':_0x11fc2b},_0x3a31b5+(0x2570+-0xc0b+-0x1f4*0xd)))[_0x2227e2(0x16f)](_0x2227e2(0x19b));if(_0x2d798e[_0x2227e2(0x1a9)]===_0x2227e2(0x149))return _0x2227e2(0x1a5)+schemaType(_0x2d798e[_0x2227e2(0x12f)],_0x3a31b5+(-0x1132+0x124d+0x8d*-0x2))+'>';if(_0x2d798e[_0x2227e2(0x1a9)]===_0x2227e2(0x15d)){const _0x54d091=_0x2d798e[_0x2227e2(0x118)];if(!_0x54d091||typeof _0x54d091!==_0x2227e2(0x15d)||Array[_0x2227e2(0x189)](_0x54d091))return _0x2227e2(0x15c);const _0x2eee18=new Set(Array[_0x2227e2(0x189)](_0x2d798e[_0x2227e2(0x168)])?_0x2d798e[_0x2227e2(0x168)]:[]);return'{\x20'+Object[_0x2227e2(0x13f)](_0x54d091)[_0x2227e2(0x19f)](0x556+-0x552+0x4*-0x1,0x3*0x39a+0x6c*0x2+-0xb86)[_0x2227e2(0x14b)](([_0x2e73fb,_0x200b49])=>''+JSON[_0x2227e2(0x19d)](_0x2e73fb)+(_0x2eee18[_0x2227e2(0x19c)](_0x2e73fb)?'':'?')+':\x20'+schemaType(_0x200b49,_0x3a31b5+(-0x1*0x1ab1+0x1ce0+-0x22e))+';')[_0x2227e2(0x16f)]('\x20')+'\x20}';}if(_0x2d798e[_0x2227e2(0x1a9)]===_0x2227e2(0x14c)||_0x2d798e[_0x2227e2(0x1a9)]===_0x2227e2(0x12a))return _0x2227e2(0x12a);return[_0x2227e2(0x15e),_0x2227e2(0x187),_0x2227e2(0x120)][_0x2227e2(0x1ac)](String(_0x2d798e[_0x2227e2(0x1a9)]))?String(_0x2d798e[_0x2227e2(0x1a9)]):_0x2227e2(0x145);}const environmentKeys=[_0x25af7d(0x111),_0x25af7d(0x11e),_0x25af7d(0x169),_0x25af7d(0x122),_0x25af7d(0x176),_0x25af7d(0x18a),_0x25af7d(0x1ad),_0x25af7d(0x156),'TZ'];export class CodeModeTool{[_0x25af7d(0x16c)];[_0x25af7d(0x151)];[_0x25af7d(0x14e)];#active=new Map();constructor(_0x1917cb,_0x54d9f1={},_0x786cd2=directLocalProcessExecutor){const _0x46c217=_0x25af7d;this[_0x46c217(0x16c)]=_0x1917cb,this[_0x46c217(0x151)]=_0x54d9f1,this[_0x46c217(0x14e)]=_0x786cd2;}async[_0x25af7d(0x11f)](_0x152264,_0xa794f8){const _0x1b76cf=_0x25af7d,_0x4a0591=typeof _0x152264===_0x1b76cf(0x15e)?_0x152264:_0x152264&&typeof _0x152264===_0x1b76cf(0x15d)&&!Array[_0x1b76cf(0x189)](_0x152264)&&Object[_0x1b76cf(0x112)](_0x152264)[_0x1b76cf(0x11c)]===0x11ae+-0xb0d+0x350*-0x2&&_0x1b76cf(0x114)in _0x152264?_0x152264[_0x1b76cf(0x114)]:undefined;if(typeof _0x4a0591!==_0x1b76cf(0x15e)||!_0x4a0591[_0x1b76cf(0x1a8)]()||Buffer[_0x1b76cf(0x167)](_0x4a0591)>_0x478246[_0x1b76cf(0x137)])throw new MarAgentError(_0x1b76cf(0x116),_0x1b76cf(0x1b5));if(!_0xa794f8[_0x1b76cf(0x173)])throw new MarAgentError(_0x1b76cf(0x1ae),_0x1b76cf(0x1a6));_0xa794f8[_0x1b76cf(0x138)][_0x1b76cf(0x194)]();if(this.#active[_0x1b76cf(0x12e)]>=_0x478246[_0x1b76cf(0x1a1)])throw new MarAgentError(_0x1b76cf(0x162),_0x1b76cf(0x14a));const _0x544027=new AbortController(),_0x37d11d=AbortSignal[_0x1b76cf(0x130)]([_0xa794f8[_0x1b76cf(0x138)],_0x544027[_0x1b76cf(0x138)]]);let _0x5a3d96;const _0x5281e8=new Promise(_0x19a50f=>{_0x5a3d96=_0x19a50f;});this.#active[_0x1b76cf(0x128)](_0x544027,{'sessionId':_0xa794f8[_0x1b76cf(0x190)],'done':_0x5281e8});const _0x2ffbd7=setTimeout(()=>_0x544027[_0x1b76cf(0x14d)](new MarAgentError(_0x1b76cf(0x132),_0x1b76cf(0x197))),_0x478246[_0x1b76cf(0x18c)]);try{return await this.#run(_0x4a0591,{..._0xa794f8,'signal':_0x37d11d},_0x544027);}finally{clearTimeout(_0x2ffbd7),this.#active[_0x1b76cf(0x179)](_0x544027),_0x5a3d96();}}async[_0x25af7d(0x1a3)](_0xb0510e){const _0x46a389=_0x25af7d,_0xbae56f=[...this.#active][_0x46a389(0x183)](([,_0xd44702])=>_0xb0510e===undefined||_0xd44702[_0x46a389(0x190)]===_0xb0510e);for(const [_0x26e1d7]of _0xbae56f)_0x26e1d7[_0x46a389(0x14d)](new MarAgentError(_0x46a389(0x181),_0x46a389(0x188)));await Promise[_0x46a389(0x18b)](_0xbae56f[_0x46a389(0x14b)](([,_0x517219])=>_0x517219[_0x46a389(0x195)]));}async #run(_0x3d61f6,_0xf50636,_0x5283c7){const _0x4f6e4d=_0x25af7d,_0x51546b=await this[_0x4f6e4d(0x16c)][_0x4f6e4d(0x18d)]('.');_0xf50636[_0x4f6e4d(0x138)][_0x4f6e4d(0x194)]();const _0x351214=Object[_0x4f6e4d(0x142)](environmentKeys[_0x4f6e4d(0x115)](_0x333efc=>{const _0x6ab6a5=_0x4f6e4d,_0x1a157c=this[_0x6ab6a5(0x151)][_0x333efc];return _0x1a157c===undefined?[]:[[_0x333efc,_0x1a157c]];})),_0x1b53aa=await this[_0x4f6e4d(0x14e)][_0x4f6e4d(0x171)]({'command':process[_0x4f6e4d(0x146)],'args':[_0x4f6e4d(0x192)+_0x478246[_0x4f6e4d(0x136)],_0x4f6e4d(0x180),_0x4f6e4d(0x14f),nodeCell],'cwd':_0x51546b,'shell':![],'environment':_0x351214,'environmentKeys':Object[_0x4f6e4d(0x112)](_0x351214),'detached':process[_0x4f6e4d(0x11a)]!==_0x4f6e4d(0x113),'owner':{'sessionId':_0xf50636[_0x4f6e4d(0x190)],'executionId':_0xf50636[_0x4f6e4d(0x1b3)]},'signal':_0xf50636[_0x4f6e4d(0x138)]}),_0xa9b97c=[],_0x388cc5=[];let _0xb80c49=0x24e9+0x1701*0x1+0x2*-0x1df5,_0x39f2c7=-0x12c+0x588+0x24*-0x1f,_0x29e890=0x29b+-0x952*0x4+0x22ad,_0x29e452=![],_0x3e5dd8,_0x213dc2='',_0x20f92f='';const _0xc80a59=new StringDecoder(_0x4f6e4d(0x184)),_0x44a067=new Set(),_0x569d56=new Set();let _0x28731c;const _0x48adee=new Promise(_0x265c0c=>{_0x28731c=_0x265c0c;}),_0x98b655=_0x1cbb75=>{const _0x52fb62=_0x4f6e4d;if(_0x3e5dd8===undefined)_0x3e5dd8=_0x1cbb75;if(!_0x5283c7[_0x52fb62(0x138)][_0x52fb62(0x110)])_0x5283c7[_0x52fb62(0x14d)](_0x1cbb75);},_0x452617=()=>{const _0x420e17=_0x4f6e4d;if(_0x3e5dd8===undefined)_0x3e5dd8=_0xf50636[_0x420e17(0x138)][_0x420e17(0x175)];void signalProcessTree(_0x1b53aa,_0x420e17(0x12d))[_0x420e17(0x13e)](_0x431dcf=>{_0x3e5dd8??=_0x431dcf;});};_0xf50636[_0x4f6e4d(0x138)][_0x4f6e4d(0x154)](_0x4f6e4d(0x14d),_0x452617,{'once':!![]});const _0x2728a1=async _0x1a10b8=>{const _0x231eb2=_0x4f6e4d;_0xf50636[_0x231eb2(0x138)][_0x231eb2(0x194)]();const _0x1821e5=JSON[_0x231eb2(0x19d)](_0x1a10b8)+'\x0a',_0x579dfc=Buffer[_0x231eb2(0x167)](_0x1821e5);_0x39f2c7+=_0x579dfc;if(_0x579dfc>_0x478246[_0x231eb2(0x140)]||_0x39f2c7>_0x478246[_0x231eb2(0x164)])throw new MarAgentError(_0x231eb2(0x1b4),_0x231eb2(0x15a));await new Promise((_0x2e066a,_0x254288)=>{const _0x4f64dd=_0x231eb2;_0x1b53aa[_0x4f64dd(0x158)][_0x4f64dd(0x16b)](_0x1821e5,_0x3c4bc8=>_0x3c4bc8?_0x254288(_0x3c4bc8):_0x2e066a());});},_0xf91e07=createToolCallScheduler(_0xf50636[_0x4f6e4d(0x173)][_0x4f6e4d(0x1b0)],async _0x64fbc6=>{const _0x13295e=_0x4f6e4d;return _0xf50636[_0x13295e(0x138)][_0x13295e(0x194)](),_0xf50636[_0x13295e(0x173)][_0x13295e(0x141)](_0x64fbc6,_0xf50636[_0x13295e(0x138)]);}),_0x16b81f=new Set(_0xf50636[_0x4f6e4d(0x173)][_0x4f6e4d(0x1b0)][_0x4f6e4d(0x14b)](_0x1a68f5=>_0x1a68f5[_0x4f6e4d(0x170)])),_0x39bc44=_0x41cbff=>{const _0x37972d=_0x4f6e4d;if(_0x29e452)throw new MarAgentError(_0x37972d(0x117),_0x37972d(0x157));if(_0x41cbff[_0x37972d(0x127)]===_0x37972d(0x1a7)&&typeof _0x41cbff[_0x37972d(0x1b1)]===_0x37972d(0x15e)){_0xb80c49+=Buffer[_0x37972d(0x167)](_0x41cbff[_0x37972d(0x1b1)])+(0xa08+0x61d*-0x2+0x233);if(_0xb80c49>_0x478246[_0x37972d(0x150)])throw new MarAgentError(_0x37972d(0x1b4),_0x37972d(0x13c));_0xa9b97c[_0x37972d(0x17f)](_0x41cbff[_0x37972d(0x1b1)]);}else{if(_0x41cbff[_0x37972d(0x127)]===_0x37972d(0x17b)){if(!_0xf50636[_0x37972d(0x173)]?.[_0x37972d(0x19a)])throw new MarAgentError(_0x37972d(0x139),_0x37972d(0x133));const _0x69a924=parseImage(_0x41cbff[_0x37972d(0x1b1)]);if(_0x388cc5[_0x37972d(0x11c)]>=0x2683*-0x1+0x1*0x241f+0x269)throw new MarAgentError(_0x37972d(0x1b4),_0x37972d(0x16d));_0x388cc5[_0x37972d(0x17f)](_0x69a924);}else{if(_0x41cbff[_0x37972d(0x127)]===_0x37972d(0x15f)&&Number[_0x37972d(0x182)](_0x41cbff['id'])&&typeof _0x41cbff[_0x37972d(0x170)]===_0x37972d(0x15e)){const _0x5d52dc=_0x41cbff['id'];if(_0x44a067[_0x37972d(0x19c)](_0x5d52dc)||++_0x29e890>_0x478246[_0x37972d(0x155)])throw new MarAgentError(_0x37972d(0x117),_0x37972d(0x18e));_0x44a067[_0x37972d(0x1aa)](_0x5d52dc);const _0x5b5d66=(async()=>{const _0x5aff87=_0x37972d;try{if(_0x41cbff[_0x5aff87(0x170)]===_0x5aff87(0x185)||!_0x16b81f[_0x5aff87(0x19c)](_0x41cbff[_0x5aff87(0x170)]))throw new MarAgentError(_0x5aff87(0x1ae),_0x5aff87(0x191));const _0x5f0cc2=await _0xf91e07({'name':_0x41cbff[_0x5aff87(0x170)],'arguments':_0x41cbff[_0x5aff87(0x125)],'callId':randomUUID()});await _0x2728a1({'id':_0x5d52dc,'ok':!![],'output':_0x5f0cc2});}catch(_0x2e96bb){if(_0xf50636[_0x5aff87(0x138)][_0x5aff87(0x110)])return;const _0x204c9c=describeMarAgentError(_0x2e96bb,_0x5aff87(0x17d));await _0x2728a1({'id':_0x5d52dc,'ok':![],'error':{'code':_0x204c9c[_0x5aff87(0x114)],'message':_0x204c9c[_0x5aff87(0x174)]}});}})()[_0x37972d(0x13e)](_0x98b655);_0x569d56[_0x37972d(0x1aa)](_0x5b5d66),void _0x5b5d66[_0x37972d(0x199)](()=>_0x569d56[_0x37972d(0x179)](_0x5b5d66));}else{if(_0x41cbff[_0x37972d(0x127)]===_0x37972d(0x195)){if(_0x569d56[_0x37972d(0x12e)])throw new MarAgentError(_0x37972d(0x17c),_0x37972d(0x126));_0x29e452=!![],void signalProcessTree(_0x1b53aa,_0x37972d(0x12d))[_0x37972d(0x13e)](_0x98b655);}else{if(_0x41cbff[_0x37972d(0x127)]===_0x37972d(0x144)&&typeof _0x41cbff[_0x37972d(0x174)]===_0x37972d(0x15e))throw new MarAgentError(typeof _0x41cbff[_0x37972d(0x114)]===_0x37972d(0x15e)?_0x41cbff[_0x37972d(0x114)][_0x37972d(0x19f)](-0x16e8+0x261+0x5*0x41b,-0x1*0x1b6a+-0xd+0x1bf7):_0x37972d(0x1af),_0x41cbff[_0x37972d(0x174)][_0x37972d(0x19f)](-0x16e8*0x1+-0x1*0x81f+0x1*0x1f07,0x9db+0x290+-0x83*-0x7));else throw new MarAgentError(_0x37972d(0x117),_0x37972d(0x186));}}}}};_0x1b53aa[_0x4f6e4d(0x148)]['on'](_0x4f6e4d(0x16a),_0x432962=>{const _0x236fc3=_0x4f6e4d;if(_0xf50636[_0x236fc3(0x138)][_0x236fc3(0x110)])return;try{_0x39f2c7+=_0x432962[_0x236fc3(0x11c)];if(_0x39f2c7>_0x478246[_0x236fc3(0x164)]||Buffer[_0x236fc3(0x167)](_0x20f92f)+_0x432962[_0x236fc3(0x11c)]>_0x478246[_0x236fc3(0x140)])throw new MarAgentError(_0x236fc3(0x1b4),_0x236fc3(0x15a));_0x20f92f+=_0xc80a59[_0x236fc3(0x16b)](_0x432962);let _0x25ab0c;while((_0x25ab0c=_0x20f92f[_0x236fc3(0x13b)]('\x0a'))>=-0x17c1*-0x1+-0xc31+0x8*-0x172){const _0x52eab7=_0x20f92f[_0x236fc3(0x19f)](-0x167*0x18+0x419*-0x8+0x4270,_0x25ab0c);_0x20f92f=_0x20f92f[_0x236fc3(0x19f)](_0x25ab0c+(0x2126+-0x1467+-0xcbe));let _0x1e4863;try{_0x1e4863=JSON[_0x236fc3(0x15b)](_0x52eab7);}catch{throw new MarAgentError(_0x236fc3(0x117),_0x236fc3(0x123));}if(!_0x1e4863||typeof _0x1e4863!==_0x236fc3(0x15d)||Array[_0x236fc3(0x189)](_0x1e4863))throw new MarAgentError(_0x236fc3(0x117),_0x236fc3(0x186));_0x39bc44(_0x1e4863);}}catch(_0x13ae36){_0x98b655(_0x13ae36);}}),_0x1b53aa[_0x4f6e4d(0x18f)]['on'](_0x4f6e4d(0x16a),_0xdefad3=>{const _0x354113=_0x4f6e4d;_0x213dc2=(_0x213dc2+_0xdefad3[_0x354113(0x135)](_0x354113(0x184)))[_0x354113(0x19f)](-0x412+0x1*-0x19f+0x2f*0x1f,-0x1*-0x1387+0x5*-0x61f+0x1b14);}),_0x1b53aa[_0x4f6e4d(0x158)]['on'](_0x4f6e4d(0x144),_0x4fb0f3=>{if(!_0x29e452)_0x98b655(_0x4fb0f3);}),_0x1b53aa[_0x4f6e4d(0x10f)](_0x4f6e4d(0x144),_0x71a6c9=>{_0x98b655(_0x71a6c9),_0x28731c();}),_0x1b53aa[_0x4f6e4d(0x10f)](_0x4f6e4d(0x163),(_0x5919c9,_0x46f81f)=>{const _0x317798=_0x4f6e4d;if(_0x5919c9!==-0x14*0x1cf+-0x2167+-0x7bb*-0x9&&!_0x29e452&&_0x3e5dd8===undefined)_0x3e5dd8=new MarAgentError(_0x317798(0x1af),(_0x317798(0x17a)+(_0x46f81f??_0x5919c9)+'.\x20'+_0x213dc2)[_0x317798(0x1a8)]());_0x28731c();});try{if(_0xf50636[_0x4f6e4d(0x138)][_0x4f6e4d(0x110)])_0x452617();else await _0x2728a1({'code':_0x3d61f6});await _0x48adee;if(_0x3e5dd8!==undefined)throw _0x3e5dd8;if(!_0x29e452)throw new MarAgentError(_0x4f6e4d(0x17c),_0x4f6e4d(0x177));return{'content':_0xa9b97c[_0x4f6e4d(0x16f)]('\x0a')||_0x4f6e4d(0x193),'data':{'toolCalls':_0x29e890},..._0x388cc5[_0x4f6e4d(0x11c)]?{'images':_0x388cc5}:{}};}finally{_0x5283c7[_0x4f6e4d(0x14d)](new MarAgentError(_0x4f6e4d(0x181),_0x4f6e4d(0x12c))),await signalProcessTree(_0x1b53aa,_0x4f6e4d(0x12d)),await _0x48adee,_0x1b53aa[_0x4f6e4d(0x158)][_0x4f6e4d(0x159)](),_0x1b53aa[_0x4f6e4d(0x148)][_0x4f6e4d(0x159)](),_0x1b53aa[_0x4f6e4d(0x18f)][_0x4f6e4d(0x159)](),_0xf50636[_0x4f6e4d(0x138)][_0x4f6e4d(0x129)](_0x4f6e4d(0x14d),_0x452617),await Promise[_0x4f6e4d(0x196)](_0x569d56);}}}function parseImage(_0x51a0e2){const _0x497406=_0x25af7d,_0x34f61a=()=>new MarAgentError(_0x497406(0x165),_0x497406(0x12b));if(!_0x51a0e2||typeof _0x51a0e2!==_0x497406(0x15d)||Array[_0x497406(0x189)](_0x51a0e2))throw _0x34f61a();const _0x1a1b78=_0x51a0e2;if(Object[_0x497406(0x112)](_0x1a1b78)[_0x497406(0x13d)](_0x17a36c=>_0x17a36c!==_0x497406(0x121)&&_0x17a36c!==_0x497406(0x143))||typeof _0x1a1b78[_0x497406(0x121)]!==_0x497406(0x15e)||typeof _0x1a1b78[_0x497406(0x143)]!==_0x497406(0x15e)||_0x1a1b78[_0x497406(0x143)][_0x497406(0x11c)]===0x28b+0x963+-0xbee||_0x1a1b78[_0x497406(0x143)][_0x497406(0x11c)]>Math[_0x497406(0x17e)](_0x478246[_0x497406(0x153)]/(-0x133d*-0x1+0x1a5+-0x14df))*(0x758+-0x103*-0x25+-0x2cc3)||_0x1a1b78[_0x497406(0x143)][_0x497406(0x11c)]%(0x1cdd+-0x2485*0x1+0x7ac)!==0xf*0x14f+-0x1181+-0x220)throw _0x34f61a();const _0x33e173=Buffer[_0x497406(0x147)](_0x1a1b78[_0x497406(0x143)],_0x497406(0x161));if(_0x33e173[_0x497406(0x11c)]>_0x478246[_0x497406(0x153)]||_0x33e173[_0x497406(0x135)](_0x497406(0x161))!==_0x1a1b78[_0x497406(0x143)]||detectImageMime(_0x33e173)!==_0x1a1b78[_0x497406(0x121)])throw _0x34f61a();return{'mimeType':_0x1a1b78[_0x497406(0x121)],'dataBase64':_0x1a1b78[_0x497406(0x143)]};}const nodeCell=String[_0x25af7d(0x160)]`
1
+ import { randomUUID } from 'node:crypto';
2
+ import { StringDecoder } from 'node:string_decoder';
3
+ import { MarAgentError, describeMarAgentError } from '../error.js';
4
+ import { directLocalProcessExecutor, signalProcessTree } from '../host/local-process-executor.js';
5
+ import { TOOL_EXECUTION_LIMITS as limits } from './execution-limits.js';
6
+ import { createToolCallScheduler } from './scheduler.js';
7
+ import { detectImageMime } from './view-image.js';
8
+ export const codeModeToolDefinition = {
9
+ name: 'code_mode',
10
+ description: 'Run raw JavaScript in a fresh Node.js process to compose tool calls and process results in one model turn. Top-level await and dynamic Node module imports via await import(...) are supported. Call tools.NAME(input) using the available tool schemas; freeform tools accept their raw string. Results have content and optional data/images/truncated. Use Promise.all for independent calls and await dependencies. Runtime enforces safe/serial tool barriers. text(value) or console.log(value) emits selected output; image(value) emits one returned {mimeType,dataBase64} image. Tool errors reject with code/message and may be caught. Await every tool call; no JS state survives a cell. Whole-cell execution has the same Host approval and OS permissions as exec, not a restricted JavaScript sandbox. Do not access or disclose secrets. Use tools for managed processes and tasks that must survive this cell; cell cleanup follows the Host process-tree mechanism and is not containment for detached descendants. Do not call code_mode recursively. Input max 1 MiB, emitted text max 1 MiB, max 128 nested calls, wall time 120 seconds. Output-limit and runtime failures do not roll back completed work.',
11
+ inputMode: 'freeform',
12
+ inputSchema: {
13
+ type: 'object',
14
+ properties: { code: { type: 'string' } },
15
+ required: ['code'],
16
+ additionalProperties: false
17
+ },
18
+ parallelSafety: 'serial'
19
+ };
20
+ /** Render tool-owned result contracts without changing provider schemas or tool execution. */
21
+ export function withCodeModeResultTypes(tools) {
22
+ if (!tools.some((tool) => tool.name === 'code_mode'))
23
+ return [...tools];
24
+ const declarations = [];
25
+ let bytes = 0;
26
+ for (const tool of tools) {
27
+ if (tool.name === 'code_mode' || !tool.outputSchema)
28
+ continue;
29
+ const declaration = `${JSON.stringify(tool.name)}: ${schemaType(tool.outputSchema)};`;
30
+ const size = Buffer.byteLength(declaration);
31
+ if (bytes + size > 16 * 1024)
32
+ continue;
33
+ declarations.push(declaration);
34
+ bytes += size;
35
+ }
36
+ const description = `${codeModeToolDefinition.description}
37
+
38
+ tools.NAME(input) returns a result envelope, not its data fields directly. content is rendered tool text, not raw file bytes; read content includes line numbers and metadata. Tool-specific fields are in data (for example, an exec result uses result.data.exitCode and result.data.stdout). Names not listed below return { content: string; data?: unknown; images?: Array<{ mimeType: string; dataBase64: string }>; truncated?: boolean }.
39
+ Return types for available tools; use their existing input schemas for arguments:
40
+ \`\`\`ts
41
+ type ToolResults = {
42
+ ${declarations.join('\n')}
43
+ };
44
+ \`\`\``;
45
+ return tools.map((tool) => (tool.name === 'code_mode' ? { ...tool, description } : tool));
46
+ }
47
+ function schemaType(value, depth = 0) {
48
+ if (!value || typeof value !== 'object' || Array.isArray(value) || depth > 8)
49
+ return 'unknown';
50
+ const schema = value;
51
+ if (Array.isArray(schema.enum))
52
+ return (schema.enum
53
+ .slice(0, 32)
54
+ .map((item) => JSON.stringify(item))
55
+ .join(' | ') || 'unknown');
56
+ if (Array.isArray(schema.anyOf))
57
+ return (schema.anyOf
58
+ .slice(0, 8)
59
+ .map((item) => schemaType(item, depth + 1))
60
+ .join(' | ') || 'unknown');
61
+ if (Array.isArray(schema.type))
62
+ return schema.type
63
+ .slice(0, 8)
64
+ .map((type) => schemaType({ ...schema, type }, depth + 1))
65
+ .join(' | ');
66
+ if (schema.type === 'array')
67
+ return `Array<${schemaType(schema.items, depth + 1)}>`;
68
+ if (schema.type === 'object') {
69
+ const properties = schema.properties;
70
+ if (!properties || typeof properties !== 'object' || Array.isArray(properties))
71
+ return 'Record<string, unknown>';
72
+ const required = new Set(Array.isArray(schema.required) ? schema.required : []);
73
+ return `{ ${Object.entries(properties)
74
+ .slice(0, 32)
75
+ .map(([name, property]) => `${JSON.stringify(name)}${required.has(name) ? '' : '?'}: ${schemaType(property, depth + 1)};`)
76
+ .join(' ')} }`;
77
+ }
78
+ if (schema.type === 'integer' || schema.type === 'number')
79
+ return 'number';
80
+ return ['string', 'boolean', 'null'].includes(String(schema.type))
81
+ ? String(schema.type)
82
+ : 'unknown';
83
+ }
84
+ const environmentKeys = [
85
+ 'PATH',
86
+ 'Path',
87
+ 'SystemRoot',
88
+ 'WINDIR',
89
+ 'TEMP',
90
+ 'TMP',
91
+ 'LANG',
92
+ 'LC_ALL',
93
+ 'TZ'
94
+ ];
95
+ export class CodeModeTool {
96
+ paths;
97
+ environment;
98
+ executor;
99
+ #active = new Map();
100
+ constructor(paths, environment = {}, executor = directLocalProcessExecutor) {
101
+ this.paths = paths;
102
+ this.environment = environment;
103
+ this.executor = executor;
104
+ }
105
+ async execute(value, context) {
106
+ const code = typeof value === 'string'
107
+ ? value
108
+ : value &&
109
+ typeof value === 'object' &&
110
+ !Array.isArray(value) &&
111
+ Object.keys(value).length === 1 &&
112
+ 'code' in value
113
+ ? value.code
114
+ : undefined;
115
+ if (typeof code !== 'string' ||
116
+ !code.trim() ||
117
+ Buffer.byteLength(code) > limits.codeMaxInputBytes)
118
+ throw new MarAgentError('MAR_AGENT_TOOL_INPUT_INVALID', 'Code must be a nonempty JavaScript string within the cell input limit.');
119
+ if (!context.codeMode)
120
+ throw new MarAgentError('MAR_AGENT_TOOL_NOT_AVAILABLE', 'Code Mode tool dispatch is unavailable.');
121
+ context.signal.throwIfAborted();
122
+ if (this.#active.size >= limits.codeMaxConcurrentCells)
123
+ throw new MarAgentError('MAR_AGENT_PROCESS_LIMIT', 'The Code Mode process limit was reached.');
124
+ const controller = new AbortController();
125
+ const signal = AbortSignal.any([context.signal, controller.signal]);
126
+ let release;
127
+ const done = new Promise((resolve) => {
128
+ release = resolve;
129
+ });
130
+ this.#active.set(controller, { sessionId: context.sessionId, done });
131
+ const timer = setTimeout(() => controller.abort(new MarAgentError('MAR_AGENT_CODE_TIMEOUT', 'Code Mode exceeded its execution time limit.')), limits.codeTimeoutMs);
132
+ try {
133
+ return await this.#run(code, { ...context, signal }, controller);
134
+ }
135
+ finally {
136
+ clearTimeout(timer);
137
+ this.#active.delete(controller);
138
+ release();
139
+ }
140
+ }
141
+ async dispose(sessionId) {
142
+ const active = [...this.#active].filter(([, entry]) => sessionId === undefined || entry.sessionId === sessionId);
143
+ for (const [controller] of active)
144
+ controller.abort(new MarAgentError('MAR_AGENT_CODE_CANCELLED', 'Code Mode resources were released.'));
145
+ await Promise.all(active.map(([, entry]) => entry.done));
146
+ }
147
+ async #run(code, context, controller) {
148
+ const cwd = await this.paths.resolve('.');
149
+ context.signal.throwIfAborted();
150
+ const environment = Object.fromEntries(environmentKeys.flatMap((key) => {
151
+ const value = this.environment[key];
152
+ return value === undefined ? [] : [[key, value]];
153
+ }));
154
+ const child = await this.executor.spawn({
155
+ command: process.execPath,
156
+ args: [
157
+ `--max-old-space-size=${limits.codeHeapMegabytes}`,
158
+ '--input-type=module',
159
+ '--eval',
160
+ nodeCell
161
+ ],
162
+ cwd,
163
+ shell: false,
164
+ environment,
165
+ environmentKeys: Object.keys(environment),
166
+ detached: process.platform !== 'win32',
167
+ owner: { sessionId: context.sessionId, executionId: context.executionId },
168
+ signal: context.signal
169
+ });
170
+ const text = [];
171
+ const images = [];
172
+ let outputBytes = 0;
173
+ let transportBytes = 0;
174
+ let calls = 0;
175
+ let complete = false;
176
+ let failure;
177
+ let stderr = '';
178
+ let buffered = '';
179
+ const decoder = new StringDecoder('utf8');
180
+ const seen = new Set();
181
+ const pending = new Set();
182
+ let exited;
183
+ const exit = new Promise((resolve) => {
184
+ exited = resolve;
185
+ });
186
+ const fail = (error) => {
187
+ if (failure === undefined)
188
+ failure = error;
189
+ if (!controller.signal.aborted)
190
+ controller.abort(error);
191
+ };
192
+ const abort = () => {
193
+ if (failure === undefined)
194
+ failure = context.signal.reason;
195
+ void signalProcessTree(child, 'SIGKILL').catch((error) => {
196
+ failure ??= error;
197
+ });
198
+ };
199
+ context.signal.addEventListener('abort', abort, { once: true });
200
+ const write = async (message) => {
201
+ context.signal.throwIfAborted();
202
+ const frame = JSON.stringify(message) + '\n';
203
+ const bytes = Buffer.byteLength(frame);
204
+ transportBytes += bytes;
205
+ if (bytes > limits.codeMaxFrameBytes || transportBytes > limits.codeMaxTransportBytes)
206
+ throw new MarAgentError('MAR_AGENT_TOOL_OUTPUT_LIMIT', 'Code Mode exceeded its message transfer limit.');
207
+ await new Promise((resolve, reject) => {
208
+ child.stdin.write(frame, (error) => (error ? reject(error) : resolve()));
209
+ });
210
+ };
211
+ const invoke = createToolCallScheduler(context.codeMode.tools, async (call) => {
212
+ context.signal.throwIfAborted();
213
+ return context.codeMode.invoke(call, context.signal);
214
+ });
215
+ const available = new Set(context.codeMode.tools.map((tool) => tool.name));
216
+ const receive = (frame) => {
217
+ if (complete)
218
+ throw new MarAgentError('MAR_AGENT_CODE_PROTOCOL_ERROR', 'Code Mode sent data after completion.');
219
+ if (frame.kind === 'text' && typeof frame.value === 'string') {
220
+ outputBytes += Buffer.byteLength(frame.value) + 1;
221
+ if (outputBytes > limits.codeMaxOutputBytes)
222
+ throw new MarAgentError('MAR_AGENT_TOOL_OUTPUT_LIMIT', 'Code Mode emitted too much text.');
223
+ text.push(frame.value);
224
+ }
225
+ else if (frame.kind === 'image') {
226
+ if (!context.codeMode?.supportsImages)
227
+ throw new MarAgentError('MAR_AGENT_INPUT_CAPABILITY_UNSUPPORTED', 'The current Code Mode context does not support image output.');
228
+ const image = parseImage(frame.value);
229
+ if (images.length >= 5)
230
+ throw new MarAgentError('MAR_AGENT_TOOL_OUTPUT_LIMIT', 'Code Mode emitted too many images.');
231
+ images.push(image);
232
+ }
233
+ else if (frame.kind === 'call' &&
234
+ Number.isSafeInteger(frame.id) &&
235
+ typeof frame.name === 'string') {
236
+ const id = frame.id;
237
+ if (seen.has(id) || ++calls > limits.codeMaxCalls)
238
+ throw new MarAgentError('MAR_AGENT_CODE_PROTOCOL_ERROR', 'Code Mode call ID or call count is invalid.');
239
+ seen.add(id);
240
+ const job = (async () => {
241
+ try {
242
+ if (frame.name === 'code_mode' || !available.has(frame.name))
243
+ throw new MarAgentError('MAR_AGENT_TOOL_NOT_AVAILABLE', 'The requested nested tool is unavailable.');
244
+ const output = await invoke({
245
+ name: frame.name,
246
+ arguments: frame.arguments,
247
+ callId: randomUUID()
248
+ });
249
+ await write({ id, ok: true, output });
250
+ }
251
+ catch (error) {
252
+ if (context.signal.aborted)
253
+ return;
254
+ const diagnostic = describeMarAgentError(error, 'MAR_AGENT_HOST_OPERATION_FAILED');
255
+ await write({
256
+ id,
257
+ ok: false,
258
+ error: { code: diagnostic.code, message: diagnostic.message }
259
+ });
260
+ }
261
+ })().catch(fail);
262
+ pending.add(job);
263
+ void job.finally(() => pending.delete(job));
264
+ }
265
+ else if (frame.kind === 'done') {
266
+ if (pending.size)
267
+ throw new MarAgentError('MAR_AGENT_CODE_INCOMPLETE', 'Code Mode returned with unawaited tool calls; completed operations are not rolled back.');
268
+ complete = true;
269
+ void signalProcessTree(child, 'SIGKILL').catch(fail);
270
+ }
271
+ else if (frame.kind === 'error' && typeof frame.message === 'string') {
272
+ throw new MarAgentError(typeof frame.code === 'string' ? frame.code.slice(0, 128) : 'MAR_AGENT_CODE_FAILED', frame.message.slice(0, 4096));
273
+ }
274
+ else
275
+ throw new MarAgentError('MAR_AGENT_CODE_PROTOCOL_ERROR', 'Code Mode sent an invalid message.');
276
+ };
277
+ child.stdout.on('data', (chunk) => {
278
+ if (context.signal.aborted)
279
+ return;
280
+ try {
281
+ transportBytes += chunk.length;
282
+ if (transportBytes > limits.codeMaxTransportBytes ||
283
+ Buffer.byteLength(buffered) + chunk.length > limits.codeMaxFrameBytes)
284
+ throw new MarAgentError('MAR_AGENT_TOOL_OUTPUT_LIMIT', 'Code Mode exceeded its message transfer limit.');
285
+ buffered += decoder.write(chunk);
286
+ let end;
287
+ while ((end = buffered.indexOf('\n')) >= 0) {
288
+ const line = buffered.slice(0, end);
289
+ buffered = buffered.slice(end + 1);
290
+ let frame;
291
+ try {
292
+ frame = JSON.parse(line);
293
+ }
294
+ catch {
295
+ throw new MarAgentError('MAR_AGENT_CODE_PROTOCOL_ERROR', 'Code Mode sent invalid JSON.');
296
+ }
297
+ if (!frame || typeof frame !== 'object' || Array.isArray(frame))
298
+ throw new MarAgentError('MAR_AGENT_CODE_PROTOCOL_ERROR', 'Code Mode sent an invalid message.');
299
+ receive(frame);
300
+ }
301
+ }
302
+ catch (error) {
303
+ fail(error);
304
+ }
305
+ });
306
+ child.stderr.on('data', (chunk) => {
307
+ stderr = (stderr + chunk.toString('utf8')).slice(0, 4096);
308
+ });
309
+ child.stdin.on('error', (error) => {
310
+ if (!complete)
311
+ fail(error);
312
+ });
313
+ child.once('error', (error) => {
314
+ fail(error);
315
+ exited();
316
+ });
317
+ child.once('exit', (code, signal) => {
318
+ if (code !== 0 && !complete && failure === undefined)
319
+ failure = new MarAgentError('MAR_AGENT_CODE_FAILED', `Code Mode exited with ${signal ?? code}. ${stderr}`.trim());
320
+ exited();
321
+ });
322
+ try {
323
+ if (context.signal.aborted)
324
+ abort();
325
+ else
326
+ await write({ code });
327
+ await exit;
328
+ if (failure !== undefined)
329
+ throw failure;
330
+ if (!complete)
331
+ throw new MarAgentError('MAR_AGENT_CODE_INCOMPLETE', 'Code Mode exited without a completion message.');
332
+ return {
333
+ content: text.join('\n') || 'Code Mode completed without emitted text.',
334
+ data: { toolCalls: calls },
335
+ ...(images.length ? { images } : {})
336
+ };
337
+ }
338
+ finally {
339
+ controller.abort(new MarAgentError('MAR_AGENT_CODE_CANCELLED', 'Code Mode cell has ended.'));
340
+ await signalProcessTree(child, 'SIGKILL');
341
+ await exit;
342
+ child.stdin.destroy();
343
+ child.stdout.destroy();
344
+ child.stderr.destroy();
345
+ context.signal.removeEventListener('abort', abort);
346
+ await Promise.allSettled(pending);
347
+ }
348
+ }
349
+ }
350
+ function parseImage(value) {
351
+ const invalid = () => new MarAgentError('MAR_AGENT_IMAGE_FORMAT_UNSUPPORTED', 'Code Mode image must contain valid PNG, JPEG or WebP base64 with matching MIME.');
352
+ if (!value || typeof value !== 'object' || Array.isArray(value))
353
+ throw invalid();
354
+ const image = value;
355
+ if (Object.keys(image).some((key) => key !== 'mimeType' && key !== 'dataBase64') ||
356
+ typeof image.mimeType !== 'string' ||
357
+ typeof image.dataBase64 !== 'string' ||
358
+ image.dataBase64.length === 0 ||
359
+ image.dataBase64.length > Math.ceil(limits.viewImageMaxBytes / 3) * 4 ||
360
+ image.dataBase64.length % 4 !== 0)
361
+ throw invalid();
362
+ const bytes = Buffer.from(image.dataBase64, 'base64');
363
+ if (bytes.length > limits.viewImageMaxBytes ||
364
+ bytes.toString('base64') !== image.dataBase64 ||
365
+ detectImageMime(bytes) !== image.mimeType)
366
+ throw invalid();
367
+ return { mimeType: image.mimeType, dataBase64: image.dataBase64 };
368
+ }
369
+ // The cell runs only in a Host-approved child process, never in the credential-bearing runtime.
370
+ const nodeCell = String.raw `
3
371
  import { createInterface } from 'node:readline';
4
372
  import { formatWithOptions } from 'node:util';
5
373
  const lines = createInterface({ input: process.stdin, crlfDelay: Infinity });