@myagentroam/agent 0.9.61 → 0.9.64

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 +427 -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 +17 -15
  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,2 +1,146 @@
1
- /* mar-release-protected */
2
- const _0x4a8ee7=_0x1501;(function(_0x134f9d,_0x4ec988){const _0x4cc806=_0x1501,_0x488b08=_0x134f9d();while(!![]){try{const _0x59467b=-parseInt(_0x4cc806(0xc3))/(-0xd0f+0x407*0x9+-0x172f)*(parseInt(_0x4cc806(0x87))/(-0x106*-0x1+-0xfb2+0xeae))+-parseInt(_0x4cc806(0x80))/(-0x1*-0x2cd+-0x197b+0x16b1)*(parseInt(_0x4cc806(0x86))/(-0x408*-0x3+-0x23c9+0x165*0x11))+parseInt(_0x4cc806(0x8f))/(0x292*0x1+0x1d14+-0x1fa1)+-parseInt(_0x4cc806(0x99))/(-0x2224+-0xb*0x8e+0x2844)+-parseInt(_0x4cc806(0x97))/(-0x3*0x239+0x893*0x2+0x1*-0xa74)+parseInt(_0x4cc806(0x8e))/(0x1dd7+-0x5*-0x308+-0x2cf7)+-parseInt(_0x4cc806(0x9a))/(0x137*0x18+0x16f*0xd+-0x2fc2)*(-parseInt(_0x4cc806(0x89))/(-0x2326+-0x17+-0x335*-0xb));if(_0x59467b===_0x4ec988)break;else _0x488b08['push'](_0x488b08['shift']());}catch(_0x2d9271){_0x488b08['push'](_0x488b08['shift']());}}}(_0x393a,0x57ab7*-0x1+-0x7*0xdcaf+0xebcfb));import{existsSync}from'node:fs';import{mkdir}from'node:fs/promises';import{basename,delimiter,isAbsolute,join,resolve,win32}from'node:path';import{MAR_AGENT_HOST_API_VERSION}from'./contracts.js';import{MarAgentError}from'../error.js';import{LocalToolRegistry}from'../tools/local-registry.js';import{TOOL_EXECUTION_LIMITS}from'../tools/execution-limits.js';export class LocalAgentHost{#home;#workspace;#tools;#approve;#question;#mcpTools;#callMcp;[_0x4a8ee7(0x83)]=[];#mode;#environment;#guaranteedCommands;#shell;#hasWebSearch;#hasWebFetch;#resourceIdleTtlMs;constructor(_0xa2e9b){const _0x46c116=_0x4a8ee7;this.#home=resolve(_0xa2e9b[_0x46c116(0xa8)]),this.#workspace=resolve(_0xa2e9b[_0x46c116(0x9d)]),this.#environment=_0xa2e9b[_0x46c116(0xbc)]??process.env,this.#guaranteedCommands=_0xa2e9b[_0x46c116(0x88)]??{},this.#shell=selectExecutionShell(this.#environment),this.#hasWebSearch=_0xa2e9b[_0x46c116(0xb0)]!==undefined,this.#hasWebFetch=_0xa2e9b[_0x46c116(0xa9)]!==![],this.#resourceIdleTtlMs=_0xa2e9b[_0x46c116(0xc5)],this.#tools=new LocalToolRegistry(this.#workspace,this.#environment,this.#shell[_0x46c116(0x81)],{..._0xa2e9b[_0x46c116(0xb0)]?{'webSearch':_0xa2e9b[_0x46c116(0xb0)]}:{},'webFetch':this.#hasWebFetch,'allowUntrustedTls':_0xa2e9b[_0x46c116(0xa5)]??this.#environment[_0x46c116(0xa7)]==='1',..._0xa2e9b[_0x46c116(0x9f)]===undefined?{}:{'processExecutor':_0xa2e9b[_0x46c116(0x9f)]},..._0xa2e9b[_0x46c116(0xa6)]===undefined?{}:{'restrictPaths':_0xa2e9b[_0x46c116(0xa6)]},..._0xa2e9b[_0x46c116(0xc4)]===undefined?{}:{'workspaceWritable':_0xa2e9b[_0x46c116(0xc4)]},..._0xa2e9b[_0x46c116(0x94)]===undefined?{}:{'pathMounts':_0xa2e9b[_0x46c116(0x94)]}}),this.#approve=_0xa2e9b[_0x46c116(0x95)],this.#mode=_0xa2e9b[_0x46c116(0xc9)]??_0x46c116(0x8b),this.#question=_0xa2e9b[_0x46c116(0xad)],this.#mcpTools=_0xa2e9b[_0x46c116(0xb3)]??[],this.#callMcp=_0xa2e9b[_0x46c116(0xcf)];}async[_0x4a8ee7(0x7e)](){const _0xaf5615=_0x4a8ee7;return await mkdir(this.#home,{'recursive':!![]}),await mkdir(this.#workspace,{'recursive':!![]}),{'apiVersion':MAR_AGENT_HOST_API_VERSION,'mode':this.#mode,'homeDirectory':this.#home,'platform':process[_0xaf5615(0xb1)],'architecture':process[_0xaf5615(0x8d)],'shell':this.#shell,'guaranteedCommands':this.#guaranteedCommands,'capabilities':[_0xaf5615(0xc7),_0xaf5615(0x93),_0xaf5615(0xc0),_0xaf5615(0xce),_0xaf5615(0xd0),_0xaf5615(0xbb),_0xaf5615(0xa0),_0xaf5615(0xaf),...this.#hasWebFetch?[_0xaf5615(0x7d)]:[],...this.#hasWebSearch?[_0xaf5615(0xa1)]:[]],'limits':{'maxProcesses':TOOL_EXECUTION_LIMITS[_0xaf5615(0xd3)],'maxOutputBytes':TOOL_EXECUTION_LIMITS[_0xaf5615(0xd4)],'maxExecutionMs':TOOL_EXECUTION_LIMITS[_0xaf5615(0x98)]}};}async[_0x4a8ee7(0xb5)](_0x5ca67d,_0x262033){const _0xfafb19=_0x4a8ee7,_0x3ed4d2=_0x5ca67d[_0xfafb19(0xcc)]===_0xfafb19(0xca)||_0x5ca67d[_0xfafb19(0xcc)]===_0xfafb19(0x8c)||_0x5ca67d[_0xfafb19(0xcc)]===_0xfafb19(0xbf);if(_0x262033[_0xfafb19(0xbd)]===_0xfafb19(0xd6)&&_0x3ed4d2&&await this.#approve?.(_0x5ca67d,_0x262033[_0xfafb19(0xcb)])!==_0xfafb19(0x85))throw new MarAgentError(_0xfafb19(0xd5),_0xfafb19(0xb4));return this.#tools[_0xfafb19(0xd1)](_0x5ca67d,_0x262033);}[_0x4a8ee7(0xa2)](_0x2514d9){const _0x1907f4=_0x4a8ee7;this[_0x1907f4(0x83)][_0x1907f4(0x84)](_0x2514d9);}async[_0x4a8ee7(0xc1)](_0x30409d,_0x14c884){const _0x10e84f=_0x4a8ee7;if(!this.#question)throw new MarAgentError(_0x10e84f(0xb2),_0x10e84f(0x9b));return this.#question(_0x30409d,_0x14c884);}[_0x4a8ee7(0xc6)](){const _0x4aac98=_0x4a8ee7;return Promise[_0x4aac98(0x91)](this.#mcpTools);}async[_0x4a8ee7(0xa4)](_0x10a462,_0x16f5a8){const _0x1496ba=_0x4a8ee7;if(!this.#callMcp)throw new MarAgentError(_0x1496ba(0xc2),_0x1496ba(0x92));return this.#callMcp(_0x10a462,_0x16f5a8);}[_0x4a8ee7(0x7f)](_0x548a3a){const _0x33a5b6=_0x4a8ee7;return Promise[_0x33a5b6(0x91)]({...this.#resourceIdleTtlMs===undefined?{}:{'idleTtlMs':this.#resourceIdleTtlMs},'processes':this.#tools[_0x33a5b6(0x7f)](_0x548a3a)});}[_0x4a8ee7(0xbe)](_0x423063){const _0x10ef61=_0x4a8ee7;return this.#tools[_0x10ef61(0xbe)](_0x423063);}async[_0x4a8ee7(0xb9)](){const _0x170edf=_0x4a8ee7;await this.#tools[_0x170edf(0xb9)]();}}export function selectExecutionShell(_0x2d097e=process.env,_0x468238=process[_0x4a8ee7(0xb1)],_0xcbcbf7=existsSync){const _0x538556=_0x4a8ee7,_0x2f048e=_0x468238===_0x538556(0x8a)?[resolveCommand(_0x538556(0xb6),_0x2d097e,_0x468238,_0xcbcbf7),resolveCommand(_0x538556(0xac),_0x2d097e,_0x468238,_0xcbcbf7),_0x2d097e[_0x538556(0xb7)],_0x2d097e[_0x538556(0x82)],_0x538556(0x9c)]:[_0x538556(0xd2),resolveCommand(_0x538556(0xaa),_0x2d097e,_0x468238,_0xcbcbf7),_0x538556(0xae)],_0x52090d=_0x2f048e[_0x538556(0xab)](_0x35e58b=>_0x35e58b&&_0xcbcbf7(_0x35e58b))??_0x2f048e['at'](-(-0x107c+-0x82+0x13*0xe5)),_0x27c46b=(_0x468238===_0x538556(0x8a)?win32[_0x538556(0xa3)](_0x52090d):basename(_0x52090d))[_0x538556(0x9e)](/\.exe$/iu,'');return{'name':_0x27c46b,'path':_0x52090d};}function _0x393a(){const _0x302bc6=['BgLZDfnLC3nPB25szxnVDxjJzxm','oxntsKPiAG','Cgf0Aa','q09nu1bfqW','zxzLBNrZ','ChvZAa','yxbWCM92zwq','mJG3mZK2A2jMvfff','ngj0tfPWDG','z3vHCMfUDgvLzenVBw1HBMrZ','mJi3otK1mgzxBxPYEG','D2LUmZi','BM9YBwfS','zxHLyW','yxjJAa','mJy2mJuWnhrUBKvTDW','mJaXnJG1nuTYsuLsuq','ugf0Aa','CMvZB2X2zq','tunqihrVB2WGzxHLy3v0Aw9UigLZihvUyxzHAwXHyMXLlG','D29YA3nWywnLlNbHDgnO','Cgf0Ae1VDw50CW','yxbWCM92zq','AM9PBG','mJaYoda1nhzSCKjVzG','zxHLy01HEfrPBwvVDxrnCW','mJi2ode5ogLVt01XvW','mJD5y3zfrgK','vxnLCIbPBNb1DcbPCYb1BMf2ywLSywjSzs4','y21KlMv4zq','D29YA3nWywnL','CMvWBgfJzq','ChjVy2vZC0v4zwn1Dg9Y','zxzLBNqUChvIBgLZAa','D2vIlNnLyxjJAa','zw1PDa','yMfZzw5HBwu','y2fSBe1JCfrVB2W','ywXSB3DvBNrYDxn0zwruBhm','CMvZDhjPy3rqyxrOCW','tufsx0fhru5ux1DfqL9grvrdsf9bteXpv19vtLrsvvnururFveXt','Ag9TzurPCMvJDg9YEq','D2vIrMv0y2G','yMfZAa','zMLUza','Cg93zxjZAgvSBc5LEgu','CxvLC3rPB24','l2jPBI9ZAa','C2vZC2LVBI5ZDg9Yzq','D2vIu2vHCMnO','CgXHDgzVCM0','tufsx0fhru5ux1vtrvjFsu5qvvrFvu5bvKfjtefcteu','BwnWvg9VBhm','vg9VBcbHChbYB3zHBcb3yxmGzgvUAwvKig9YihvUyxzHAwXHyMXLlG','zxHLy3v0zvrVB2W','ChDZAc5LEgu','q29Tu3bLyW','zMLSDgvY','zgLZCg9Zzq','zgvSAw1PDgvY','DxnLCI1PBNb1Dc5Yzxf1zxn0','zw52AxjVBM1LBNq','ywnJzxnZ','zgLZCg9ZzvnLC3nPB25szxnVDxjJzxm','y29Kzv9TB2rL','ChjVy2vZCY5Tyw5Hz2u','CMvXDwvZDfvZzxjjBNb1Da','tufsx0fhru5ux01duf9gquLmruq','mtyYnZCYs3nwwfnY','D29YA3nWywnLv3jPDgfIBgu','CMvZB3vYy2vjzgXLvhrStxm','BgLZDe1JCfrVB2XZ','D29YA3nWywnLlNjLywq','C3bSAxq','Bw9Kzq','yxbWBhLFCgf0y2G','C2LNBMfS','BMfTzq','uefusa','y29Kzs5LEgvJDxrL','y2fSBe1JCa','yxbWCM92ywWUCMvXDwvZDa','zxHLy3v0zq','l2jPBI9IyxnO','Bwf4uhjVy2vZC2vZ','zxHLy0rLzMf1BhrnyxHpDxrWDxrcExrLCW','tufsx0fhru5ux1rpt0XFqvbquK9wquXFrevosuve','B24TCMvXDwvZDa','D2vIlMzLDgnO','zgvZy3jPyMu'];_0x393a=function(){return _0x302bc6;};return _0x393a();}function _0x1501(_0xfd8e87,_0x1aae66){_0xfd8e87=_0xfd8e87-(-0x119*-0x1c+-0x1*0x1829+-0x616);const _0x4a5b31=_0x393a();let _0x471041=_0x4a5b31[_0xfd8e87];if(_0x1501['WmqYJC']===undefined){var _0x1dd11f=function(_0x14c0e3){const _0x1fc1f5='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x31a1cb='',_0x1b2a2a='';for(let _0xa71cc1=-0x1*0xa21+-0x2383+0x2da4,_0x24ad96,_0x18a502,_0x18d8ce=-0x24e2*0x1+-0x2*-0xcca+0xb4e;_0x18a502=_0x14c0e3['charAt'](_0x18d8ce++);~_0x18a502&&(_0x24ad96=_0xa71cc1%(-0x8b1+0x76+0x83f)?_0x24ad96*(0x1e31+-0x1e5*-0x8+-0x2d19)+_0x18a502:_0x18a502,_0xa71cc1++%(0x2*0xe12+-0x67d+-0xbf*0x1d))?_0x31a1cb+=String['fromCharCode'](-0x25*-0xc+-0xf8f*0x2+0x1e61&_0x24ad96>>(-(-0x13ec+0x2548+0x115a*-0x1)*_0xa71cc1&-0x1e07+0x2518+-0x70b)):-0x1*0x180f+-0xa*0x389+0x3b69*0x1){_0x18a502=_0x1fc1f5['indexOf'](_0x18a502);}for(let _0x371f61=0x1c35+-0xcd4+0xf61*-0x1,_0x16a757=_0x31a1cb['length'];_0x371f61<_0x16a757;_0x371f61++){_0x1b2a2a+='%'+('00'+_0x31a1cb['charCodeAt'](_0x371f61)['toString'](-0x101c+0x1*-0x65b+0x49*0x4f))['slice'](-(-0x18ea+-0x1693+0x243*0x15));}return decodeURIComponent(_0x1b2a2a);};_0x1501['UQZAcc']=_0x1dd11f,_0x1501['uJrxqO']={},_0x1501['WmqYJC']=!![];}const _0x582455=_0x4a5b31[0x777+0x1*0x1087+0xa6*-0x25];_0x1501['iipwsd']!==_0x582455&&(_0x1501['uJrxqO']={},_0x1501['iipwsd']=_0x582455);const _0x26e8b1=_0x1501['uJrxqO'][_0xfd8e87];return _0x26e8b1===undefined?(_0x471041=_0x1501['UQZAcc'](_0x471041),_0x1501['uJrxqO'][_0xfd8e87]=_0x471041):_0x471041=_0x26e8b1,_0x471041;}function resolveCommand(_0x3c3eba,_0x2e1300,_0x5ce38e,_0x10258c){const _0x45c726=_0x4a8ee7;if(isAbsolute(_0x3c3eba))return _0x10258c(_0x3c3eba)?_0x3c3eba:undefined;const _0x31ce7c=_0x2e1300[_0x5ce38e===_0x45c726(0x8a)?_0x45c726(0x90):_0x45c726(0xcd)]??_0x2e1300[_0x45c726(0xcd)];if(!_0x31ce7c)return undefined;const _0x9b53c3=_0x5ce38e===_0x45c726(0x8a)?win32[_0x45c726(0xba)]:delimiter,_0x3eb0f1=_0x5ce38e===_0x45c726(0x8a)?win32[_0x45c726(0x96)]:join;for(const _0x13e251 of _0x31ce7c[_0x45c726(0xc8)](_0x9b53c3)[_0x45c726(0xb8)](Boolean)){const _0x485f88=_0x3eb0f1(_0x13e251,_0x3c3eba);if(_0x10258c(_0x485f88))return _0x485f88;}return undefined;}
1
+ import { existsSync } from 'node:fs';
2
+ import { mkdir } from 'node:fs/promises';
3
+ import { basename, delimiter, isAbsolute, join, resolve, win32 } from 'node:path';
4
+ import { MAR_AGENT_HOST_API_VERSION } from './contracts.js';
5
+ import { MarAgentError } from '../error.js';
6
+ import { LocalToolRegistry } from '../tools/local-registry.js';
7
+ import { TOOL_EXECUTION_LIMITS } from '../tools/execution-limits.js';
8
+ export class LocalAgentHost {
9
+ #home;
10
+ #workspace;
11
+ #tools;
12
+ #approve;
13
+ #question;
14
+ #mcpTools;
15
+ #callMcp;
16
+ events = [];
17
+ #mode;
18
+ #environment;
19
+ #guaranteedCommands;
20
+ #shell;
21
+ #hasWebSearch;
22
+ #hasWebFetch;
23
+ #resourceIdleTtlMs;
24
+ constructor(input) {
25
+ this.#home = resolve(input.homeDirectory);
26
+ this.#workspace = resolve(input.workspace);
27
+ this.#environment = input.environment ?? process.env;
28
+ this.#guaranteedCommands = input.guaranteedCommands ?? {};
29
+ this.#shell = selectExecutionShell(this.#environment);
30
+ this.#hasWebSearch = input.webSearch !== undefined;
31
+ this.#hasWebFetch = input.webFetch !== false;
32
+ this.#resourceIdleTtlMs = input.resourceIdleTtlMs;
33
+ this.#tools = new LocalToolRegistry(this.#workspace, this.#environment, this.#shell.path, {
34
+ ...(input.webSearch ? { webSearch: input.webSearch } : {}),
35
+ webFetch: this.#hasWebFetch,
36
+ allowUntrustedTls: input.allowUntrustedTls ??
37
+ this.#environment['MAR_AGENT_WEB_FETCH_ALLOW_UNTRUSTED_TLS'] === '1',
38
+ ...(input.processExecutor === undefined ? {} : { processExecutor: input.processExecutor }),
39
+ ...(input.restrictPaths === undefined ? {} : { restrictPaths: input.restrictPaths }),
40
+ ...(input.workspaceWritable === undefined
41
+ ? {}
42
+ : { workspaceWritable: input.workspaceWritable }),
43
+ ...(input.pathMounts === undefined ? {} : { pathMounts: input.pathMounts })
44
+ });
45
+ this.#approve = input.approve;
46
+ this.#mode = input.mode ?? 'normal';
47
+ this.#question = input.question;
48
+ this.#mcpTools = input.mcpTools ?? [];
49
+ this.#callMcp = input.callMcp;
50
+ }
51
+ async describe() {
52
+ await mkdir(this.#home, { recursive: true });
53
+ await mkdir(this.#workspace, { recursive: true });
54
+ return {
55
+ apiVersion: MAR_AGENT_HOST_API_VERSION,
56
+ mode: this.#mode,
57
+ homeDirectory: this.#home,
58
+ platform: process.platform,
59
+ architecture: process.arch,
60
+ shell: this.#shell,
61
+ guaranteedCommands: this.#guaranteedCommands,
62
+ capabilities: [
63
+ 'workspace.read',
64
+ 'workspace.patch',
65
+ 'process.manage',
66
+ 'code.execute',
67
+ 'approval.request',
68
+ 'user-input.request',
69
+ 'event.publish',
70
+ 'session.store',
71
+ ...(this.#hasWebFetch ? ['web.fetch'] : []),
72
+ ...(this.#hasWebSearch ? ['web.search'] : [])
73
+ ],
74
+ limits: {
75
+ maxProcesses: TOOL_EXECUTION_LIMITS.maxProcesses,
76
+ maxOutputBytes: TOOL_EXECUTION_LIMITS.execDefaultMaxOutputBytes,
77
+ maxExecutionMs: TOOL_EXECUTION_LIMITS.execMaxTimeoutMs
78
+ }
79
+ };
80
+ }
81
+ async executeTool(call, context) {
82
+ const needsApproval = call.name === 'apply_patch' || call.name === 'exec' || call.name === 'code_mode';
83
+ if (context.access === 'on-request' &&
84
+ needsApproval &&
85
+ (await this.#approve?.(call, context.signal)) !== 'approved')
86
+ throw new MarAgentError('MAR_AGENT_TOOL_APPROVAL_DENIED', 'Tool approval was denied or unavailable.');
87
+ return this.#tools.execute(call, context);
88
+ }
89
+ emit(event) {
90
+ this.events.push(event);
91
+ }
92
+ async requestUserInput(input, signal) {
93
+ if (!this.#question)
94
+ throw new MarAgentError('MAR_AGENT_USER_INPUT_UNAVAILABLE', 'User input is unavailable.');
95
+ return this.#question(input, signal);
96
+ }
97
+ listMcpTools() {
98
+ return Promise.resolve(this.#mcpTools);
99
+ }
100
+ async callMcpTool(call, signal) {
101
+ if (!this.#callMcp)
102
+ throw new MarAgentError('MAR_AGENT_MCP_FAILED', 'MCP tool execution is unavailable.');
103
+ return this.#callMcp(call, signal);
104
+ }
105
+ listSessionResources(sessionId) {
106
+ return Promise.resolve({
107
+ ...(this.#resourceIdleTtlMs === undefined ? {} : { idleTtlMs: this.#resourceIdleTtlMs }),
108
+ processes: this.#tools.listSessionResources(sessionId)
109
+ });
110
+ }
111
+ disposeSessionResources(sessionId) {
112
+ return this.#tools.disposeSessionResources(sessionId);
113
+ }
114
+ async dispose() {
115
+ await this.#tools.dispose();
116
+ }
117
+ }
118
+ export function selectExecutionShell(environment = process.env, platform = process.platform, available = existsSync) {
119
+ const candidates = platform === 'win32'
120
+ ? [
121
+ resolveCommand('pwsh.exe', environment, platform, available),
122
+ resolveCommand('powershell.exe', environment, platform, available),
123
+ environment['ComSpec'],
124
+ environment['COMSPEC'],
125
+ 'cmd.exe'
126
+ ]
127
+ : ['/bin/bash', resolveCommand('bash', environment, platform, available), '/bin/sh'];
128
+ const path = candidates.find((candidate) => candidate && available(candidate)) ?? candidates.at(-1);
129
+ const name = (platform === 'win32' ? win32.basename(path) : basename(path)).replace(/\.exe$/iu, '');
130
+ return { name, path };
131
+ }
132
+ function resolveCommand(name, environment, platform, available) {
133
+ if (isAbsolute(name))
134
+ return available(name) ? name : undefined;
135
+ const pathValue = environment[platform === 'win32' ? 'Path' : 'PATH'] ?? environment['PATH'];
136
+ if (!pathValue)
137
+ return undefined;
138
+ const separator = platform === 'win32' ? win32.delimiter : delimiter;
139
+ const combine = platform === 'win32' ? win32.join : join;
140
+ for (const directory of pathValue.split(separator).filter(Boolean)) {
141
+ const candidate = combine(directory, name);
142
+ if (available(candidate))
143
+ return candidate;
144
+ }
145
+ return undefined;
146
+ }
@@ -1,2 +1,39 @@
1
- /* mar-release-protected */
2
- function _0x286f(_0x61ff20,_0x29c5ff){_0x61ff20=_0x61ff20-(-0xe81+-0x21b1+-0x4d*-0xa6);const _0x201623=_0x4e54();let _0x1ca42e=_0x201623[_0x61ff20];if(_0x286f['QXrztT']===undefined){var _0x3fa07f=function(_0x5501b8){const _0x24d9d9='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x41b5c4='',_0x348438='';for(let _0x57d478=-0xd10+0xd4b+0x3b*-0x1,_0x50ec78,_0x4b4dd9,_0x4ca761=-0x7f6+0x197+-0xe9*-0x7;_0x4b4dd9=_0x5501b8['charAt'](_0x4ca761++);~_0x4b4dd9&&(_0x50ec78=_0x57d478%(0x1*0x602+0x924+-0xf22)?_0x50ec78*(-0x15b*0x14+0x14b8+0x6a4)+_0x4b4dd9:_0x4b4dd9,_0x57d478++%(-0x791*-0x3+-0x38d+-0x1322))?_0x41b5c4+=String['fromCharCode'](0x23a*0x11+-0x321*0x4+0x1*-0x1857&_0x50ec78>>(-(-0xeac+-0x23ef*-0x1+0x1541*-0x1)*_0x57d478&0x20f*-0xb+0xe80+0x82b)):0x121*-0x1b+0xb0*0x3+-0x1*-0x1c6b){_0x4b4dd9=_0x24d9d9['indexOf'](_0x4b4dd9);}for(let _0x243c1e=0x1*-0x2a3+-0x9e9+-0x16*-0x92,_0x37c2a0=_0x41b5c4['length'];_0x243c1e<_0x37c2a0;_0x243c1e++){_0x348438+='%'+('00'+_0x41b5c4['charCodeAt'](_0x243c1e)['toString'](0x641*0x4+0x1f*-0x44+0x6b*-0x28))['slice'](-(-0x206b+-0x4f1*-0x7+-0x22a));}return decodeURIComponent(_0x348438);};_0x286f['LUPvVU']=_0x3fa07f,_0x286f['XZZRFR']={},_0x286f['QXrztT']=!![];}const _0x316e51=_0x201623[0x1e12+-0xd3*-0x26+-0x3d64];_0x286f['mYxSzz']!==_0x316e51&&(_0x286f['XZZRFR']={},_0x286f['mYxSzz']=_0x316e51);const _0x5b921a=_0x286f['XZZRFR'][_0x61ff20];return _0x5b921a===undefined?(_0x1ca42e=_0x286f['LUPvVU'](_0x1ca42e),_0x286f['XZZRFR'][_0x61ff20]=_0x1ca42e):_0x1ca42e=_0x5b921a,_0x1ca42e;}(function(_0x1101bf,_0x51fb0f){const _0x53e490=_0x286f,_0x259bb6=_0x1101bf();while(!![]){try{const _0x16faae=-parseInt(_0x53e490(0x1d1))/(0x1e12+-0xd3*-0x26+-0x3d63)+parseInt(_0x53e490(0x1d0))/(-0x220e+-0x4d9+0x1*0x26e9)+parseInt(_0x53e490(0x1d3))/(0x23f4+0x1*0x1e93+-0x4284)*(parseInt(_0x53e490(0x1ca))/(-0x1*-0x1b3b+-0x2d4*-0x8+-0x31d7*0x1))+parseInt(_0x53e490(0x1c5))/(-0x1a0a+-0x4*0x595+0x3063)+parseInt(_0x53e490(0x1c9))/(0xeb*0xe+0x13*-0x171+-0x1*-0xe8f)+-parseInt(_0x53e490(0x1c0))/(0x1*-0x12d2+0xe*0x28f+-0x10f9)+-parseInt(_0x53e490(0x1c4))/(0x2b0+0x807+-0x223*0x5)*(-parseInt(_0x53e490(0x1cf))/(0x1*0x1f09+0x1*-0x161b+-0x8e5));if(_0x16faae===_0x51fb0f)break;else _0x259bb6['push'](_0x259bb6['shift']());}catch(_0x5206fc){_0x259bb6['push'](_0x259bb6['shift']());}}}(_0x4e54,-0x122cbf+0x1ac34+-0x1d*-0xedea));import{spawn}from'node:child_process';export const directLocalProcessExecutor={async 'spawn'(_0x414db4){const _0x916edf=_0x286f;return spawn(_0x414db4[_0x916edf(0x1bc)],[..._0x414db4[_0x916edf(0x1c7)]??[]],{'cwd':_0x414db4[_0x916edf(0x1be)],'shell':_0x414db4[_0x916edf(0x1bd)]??![],'stdio':[_0x916edf(0x1cb),_0x916edf(0x1cb),_0x916edf(0x1cb)],'windowsHide':!![],'detached':_0x414db4[_0x916edf(0x1ce)],'env':_0x414db4[_0x916edf(0x1d4)]});}};function _0x4e54(){const _0x27ce3c=['nfjRsLfuyW','CgLWzq','CgXHDgzVCM0','B25Jzq','zgv0ywnOzwq','nJiYodyZzvH5uMrS','ndiXmtu0t1rpzLnc','mtaWndyYmLrLC2nACG','rvnsq0G','otyXmZy1CvH1uwzn','zw52AxjVBM1LBNq','y29Kzq','CgLK','l3bPza','y29TBwfUza','C2HLBgW','y3DK','A2LSBa','mJe1nJy5m0nLqxfrDq','AwDUB3jL','zxjYB3i','zxHPDa','otzzt0jlru4','mJaZntuZnw1MqK5rqq','DgfZA2TPBgW','yxjNCW','D2LUmZi','mtm3mZmZnfDzEhL0va'];_0x4e54=function(){return _0x27ce3c;};return _0x4e54();}export async function signalProcessTree(_0x50a9df,_0x25f83b){const _0x546702=_0x286f;if(!_0x50a9df[_0x546702(0x1d6)])return;if(process[_0x546702(0x1cc)]!==_0x546702(0x1c8)){try{process[_0x546702(0x1bf)](-_0x50a9df[_0x546702(0x1d6)],_0x25f83b);}catch(_0x31a12e){if(_0x31a12e[_0x546702(0x1d5)]!==_0x546702(0x1d2))_0x50a9df[_0x546702(0x1bf)](_0x25f83b);}return;}await new Promise(_0x227b52=>{const _0x2d1129=_0x546702,_0xe5c9a2=spawn(_0x2d1129(0x1c6),[_0x2d1129(0x1d7),String(_0x50a9df[_0x2d1129(0x1d6)]),'/T','/F'],{'stdio':_0x2d1129(0x1c1),'windowsHide':!![]});_0xe5c9a2[_0x2d1129(0x1cd)](_0x2d1129(0x1c2),()=>{const _0x530a25=_0x2d1129;_0x50a9df[_0x530a25(0x1bf)](),_0x227b52();}),_0xe5c9a2[_0x2d1129(0x1cd)](_0x2d1129(0x1c3),()=>_0x227b52());});}
1
+ import { spawn } from 'node:child_process';
2
+ /** Preserves the direct local execution behavior used by the CLI and normal Node Workbench. */
3
+ export const directLocalProcessExecutor = {
4
+ async spawn(request) {
5
+ return spawn(request.command, [...(request.args ?? [])], {
6
+ cwd: request.cwd,
7
+ shell: request.shell ?? false,
8
+ stdio: ['pipe', 'pipe', 'pipe'],
9
+ windowsHide: true,
10
+ detached: request.detached,
11
+ env: request.environment
12
+ });
13
+ }
14
+ };
15
+ export async function signalProcessTree(child, signal) {
16
+ if (!child.pid)
17
+ return;
18
+ if (process.platform !== 'win32') {
19
+ try {
20
+ process.kill(-child.pid, signal);
21
+ }
22
+ catch (error) {
23
+ if (error.code !== 'ESRCH')
24
+ child.kill(signal);
25
+ }
26
+ return;
27
+ }
28
+ await new Promise((resolve) => {
29
+ const killer = spawn('taskkill', ['/pid', String(child.pid), '/T', '/F'], {
30
+ stdio: 'ignore',
31
+ windowsHide: true
32
+ });
33
+ killer.once('error', () => {
34
+ child.kill();
35
+ resolve();
36
+ });
37
+ killer.once('exit', () => resolve());
38
+ });
39
+ }
package/dist/index.d.ts CHANGED
@@ -13,5 +13,5 @@ export type { WorkspacePathMount } from './tools/shared/path-resolver.js';
13
13
  export { createMarAgent } from './sdk/agent.js';
14
14
  export { MAR_AGENT_PROMPT_VERSION, buildSystemPrompt } from './prompts/index.js';
15
15
  export { TodoStore, type TodoItem } from './tools/todo.js';
16
- export { SubagentScheduler, type SubagentOutputOptions, type SubagentRunOptions, type SubagentTaskInput, type SubagentTaskResult, type SubagentTaskSnapshot } from './subagent/scheduler.js';
16
+ export { SubagentScheduler, type SubagentOutputOptions, type SubagentMessageOptions, type SubagentRunOptions, type SubagentTaskInput, type SubagentTaskResult, type SubagentTaskSnapshot } from './subagent/scheduler.js';
17
17
  export type { AccessMode, CreateMarAgentOptions, CreateSessionInput, ExecutionHandle, ExecutionMode, ExecutionResult, HostSessionResourceSnapshot, MarAgent, MarAgentEvent, MarAgentHost, MarAgentImageMetadata, MarAgentSession, MarAgentToolArtifact, MarAgentToolImageArtifact, RolloutBudgetOptions, RunInput, RunInputImage, ToolCall, ToolExecutionContext, ToolExecutionResult } from './sdk/types.js';
package/dist/index.js CHANGED
@@ -1,2 +1,12 @@
1
- /* mar-release-protected */
2
- (function(_0x20ade2,_0xb75f1c){var _0x62abfa=_0x299e,_0x3d8b01=_0x20ade2();while(!![]){try{var _0x11cdbc=-parseInt(_0x62abfa(0xdb))/(0x19ed+0x1*-0x238f+0x9a3)+-parseInt(_0x62abfa(0xdd))/(0x19*0xe0+-0x1813+0x235)*(parseInt(_0x62abfa(0xde))/(0x148e+0x24a1+-0x1c96*0x2))+-parseInt(_0x62abfa(0xe0))/(0x265*-0x4+-0xb3+0x1*0xa4b)+-parseInt(_0x62abfa(0xda))/(0x1*-0x6ee+0x1a46+-0x11*0x123)+-parseInt(_0x62abfa(0xdc))/(-0x5*-0x296+-0x4*-0x4d1+-0x202c)*(parseInt(_0x62abfa(0xd9))/(-0x1c12+0x1904+0x315))+parseInt(_0x62abfa(0xdf))/(-0x1c2a+0x38f+0x18a3)+parseInt(_0x62abfa(0xd8))/(0xacf*0x1+0xa69+-0x152f);if(_0x11cdbc===_0xb75f1c)break;else _0x3d8b01['push'](_0x3d8b01['shift']());}catch(_0x20b6e3){_0x3d8b01['push'](_0x3d8b01['shift']());}}}(_0x375c,-0x733f1+-0x2*-0xf212+0x5*0x2f4ef));function _0x299e(_0x1f2b03,_0x15c81c){_0x1f2b03=_0x1f2b03-(0xfa5+0x682+-0x5*0x443);var _0x48c724=_0x375c();var _0x5c6544=_0x48c724[_0x1f2b03];if(_0x299e['rcopzf']===undefined){var _0x20415b=function(_0x9afd39){var _0x240011='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x2ed5a4='',_0x4e2a6f='';for(var _0x4dc325=0x507+0x2*0x126d+-0x29e1,_0x190bab,_0x3bed72,_0x316a64=-0x2216+-0xbae+-0x74*-0x65;_0x3bed72=_0x9afd39['charAt'](_0x316a64++);~_0x3bed72&&(_0x190bab=_0x4dc325%(0x110a+-0x13db+-0x2d5*-0x1)?_0x190bab*(-0xb65+0x1*-0x1083+-0x88*-0x35)+_0x3bed72:_0x3bed72,_0x4dc325++%(-0x4ea+-0x5*-0x745+-0x1f6b))?_0x2ed5a4+=String['fromCharCode'](0x2e*0x6d+0x2622+-0x1*0x38b9&_0x190bab>>(-(0xe*0x1b4+-0x10d*0x2+-0x56f*0x4)*_0x4dc325&-0xb51+0x402+0x1*0x755)):0x133*-0x3+0xc6d+0x14*-0x71){_0x3bed72=_0x240011['indexOf'](_0x3bed72);}for(var _0x273b3a=0x1f27+-0x2*-0x1bd+-0x22a1,_0x4fc1ce=_0x2ed5a4['length'];_0x273b3a<_0x4fc1ce;_0x273b3a++){_0x4e2a6f+='%'+('00'+_0x2ed5a4['charCodeAt'](_0x273b3a)['toString'](-0x1b38+0x16bd+0x1*0x48b))['slice'](-(0x566*-0x5+-0x2674+0x4174));}return decodeURIComponent(_0x4e2a6f);};_0x299e['fHlGdC']=_0x20415b,_0x299e['xmehAg']={},_0x299e['rcopzf']=!![];}var _0x19f029=_0x48c724[0xc25+-0x17f*-0xb+0x7*-0x416];_0x299e['roZJnM']!==_0x19f029&&(_0x299e['xmehAg']={},_0x299e['roZJnM']=_0x19f029);var _0x376d93=_0x299e['xmehAg'][_0x1f2b03];return _0x376d93===undefined?(_0x5c6544=_0x299e['fHlGdC'](_0x5c6544),_0x299e['xmehAg'][_0x1f2b03]=_0x5c6544):_0x5c6544=_0x376d93,_0x5c6544;}export{MarAgentError}from'./error.js';export{SecretValue,marAgentReasoningEffortSchema,parseModelCatalog,resolveModelDefaultReasoningEffort}from'./model/configuration.js';function _0x375c(){var _0x3ff03c=['mZaXmduWndvNq0vPyvm','n2jitfvdEa','mZK5mtC4nu9NC0nPAG','nJu3ntC5CKnev2X3','mJu5mdG4nfbkEeLqtW','mti3ndu0wxDtBMHo','ntfAt0TWvNy','ndK0ndKYmej1DwHqzq','mtq4ndK4mfb5uuPwAW'];_0x375c=function(){return _0x3ff03c;};return _0x375c();}export{MAR_AGENT_HOST_API_VERSION,negotiateHost}from'./host/contracts.js';export{OpenAiResponsesAdapter}from'./model/openai-responses.js';export{AnthropicMessagesAdapter}from'./model/anthropic-messages.js';export{LocalWorkspaceTools}from'./tools/local-workspace-tools.js';export{openMarAgentSessionCatalog}from'./session/catalog.js';export{LocalAgentHost,selectExecutionShell}from'./host/local-agent-host.js';export{createMarAgent}from'./sdk/agent.js';export{MAR_AGENT_PROMPT_VERSION,buildSystemPrompt}from'./prompts/index.js';export{TodoStore}from'./tools/todo.js';export{SubagentScheduler}from'./subagent/scheduler.js';
1
+ export { MarAgentError } from './error.js';
2
+ export { SecretValue, marAgentReasoningEffortSchema, parseModelCatalog, resolveModelDefaultReasoningEffort } from './model/configuration.js';
3
+ export { MAR_AGENT_HOST_API_VERSION, negotiateHost } from './host/contracts.js';
4
+ export { OpenAiResponsesAdapter } from './model/openai-responses.js';
5
+ export { AnthropicMessagesAdapter } from './model/anthropic-messages.js';
6
+ export { LocalWorkspaceTools } from './tools/local-workspace-tools.js';
7
+ export { openMarAgentSessionCatalog } from './session/catalog.js';
8
+ export { LocalAgentHost, selectExecutionShell } from './host/local-agent-host.js';
9
+ export { createMarAgent } from './sdk/agent.js';
10
+ export { MAR_AGENT_PROMPT_VERSION, buildSystemPrompt } from './prompts/index.js';
11
+ export { TodoStore } from './tools/todo.js';
12
+ export { SubagentScheduler } from './subagent/scheduler.js';