@myagentroam/node 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 (161) hide show
  1. package/LICENSE +202 -0
  2. package/NOTICE +4 -0
  3. package/dist/capabilities.js +110 -2
  4. package/dist/claude-agent-sdk.js +330 -2
  5. package/dist/claude-channel.js +44 -2
  6. package/dist/codex-app-server.js +510 -2
  7. package/dist/config.js +106 -2
  8. package/dist/connector/node-connector-options.js +1 -2
  9. package/dist/connector/node-operation-router.js +22 -2
  10. package/dist/connector.js +1736 -2
  11. package/dist/control-outbound-scheduler.js +153 -2
  12. package/dist/database.js +639 -2
  13. package/dist/fake-runner.js +129 -2
  14. package/dist/git-askpass.js +12 -0
  15. package/dist/git-execution-helper.js +266 -0
  16. package/dist/health.js +3 -2
  17. package/dist/main.js +57 -2
  18. package/dist/mcp-installation-model.js +1 -2
  19. package/dist/migrations/v004.js +55 -3
  20. package/dist/migrations/v005.js +13 -3
  21. package/dist/migrations/v006.js +90 -3
  22. package/dist/migrations/v007.js +22 -3
  23. package/dist/migrations/v008.js +18 -3
  24. package/dist/migrations/v009.js +70 -4
  25. package/dist/migrations/v010.js +43 -3
  26. package/dist/migrations/v011.js +20 -3
  27. package/dist/migrations/v012.js +8 -0
  28. package/dist/native-jsonl-reader.js +186 -2
  29. package/dist/native-session-history.js +1143 -2
  30. package/dist/opencode-runtime.js +80 -2
  31. package/dist/opencode-server.js +259 -2
  32. package/dist/operational.js +122 -2
  33. package/dist/process-tree.js +18 -2
  34. package/dist/ripgrep-binary.js +31 -2
  35. package/dist/rotating-log.js +67 -2
  36. package/dist/runner/abstract-runner.js +260 -2
  37. package/dist/runner/claude/managed-run-controller.js +355 -2
  38. package/dist/runner/claude/tool-normalizer.js +120 -2
  39. package/dist/runner/claude-code-runner.js +303 -2
  40. package/dist/runner/codex/composer-image-markers.js +8 -2
  41. package/dist/runner/codex/conversation-parser.js +913 -2
  42. package/dist/runner/codex/managed-run-controller.js +494 -2
  43. package/dist/runner/codex/tool-normalizer.js +214 -2
  44. package/dist/runner/codex-runner.js +585 -2
  45. package/dist/runner/fake-test-runner.js +47 -2
  46. package/dist/runner/mar-agent/conversation-normalizer.js +644 -2
  47. package/dist/runner/mar-agent/executor-stdio-client-transport.js +139 -2
  48. package/dist/runner/mar-agent/generated-images.js +41 -2
  49. package/dist/runner/mar-agent/history-projection.js +106 -2
  50. package/dist/runner/mar-agent/hosted-conversation-runtime.js +446 -2
  51. package/dist/runner/mar-agent/managed-run-controller.js +785 -2
  52. package/dist/runner/mar-agent/mcp-client-pool.js +233 -2
  53. package/dist/runner/mar-agent/runtime-model-factory.js +326 -2
  54. package/dist/runner/mar-agent-runner.js +458 -2
  55. package/dist/runner/opencode/conversation-parser.js +221 -2
  56. package/dist/runner/opencode/managed-run-controller.js +588 -2
  57. package/dist/runner/opencode/tool-normalizer.js +80 -2
  58. package/dist/runner/opencode-runner.js +426 -2
  59. package/dist/runner/runner-registry.js +87 -2
  60. package/dist/runner-command-engine.js +71 -2
  61. package/dist/runner-profiles.js +323 -2
  62. package/dist/runner-usage.js +190 -2
  63. package/dist/runtime-command-detector.js +73 -2
  64. package/dist/runtime-model.js +1 -2
  65. package/dist/runtime-state.js +1509 -2
  66. package/dist/service/attachment-domain-state.js +7 -2
  67. package/dist/service/bubblewrap-sandbox-executor.js +543 -2
  68. package/dist/service/continuous-run-coordinator.js +425 -2
  69. package/dist/service/conversation-history-service.js +552 -2
  70. package/dist/service/conversation-hosting-capability-service.js +61 -2
  71. package/dist/service/conversation-hosting-enablement-service.js +91 -2
  72. package/dist/service/conversation-hosting-maintenance-service.js +174 -2
  73. package/dist/service/conversation-segment-service.js +162 -2
  74. package/dist/service/conversation-template-node-service.js +992 -2
  75. package/dist/service/external-session-resume-service.js +152 -2
  76. package/dist/service/fake-managed-run-service.js +60 -2
  77. package/dist/service/git-execution-service.js +418 -0
  78. package/dist/service/git-operation-service.js +57 -0
  79. package/dist/service/hosted-conversation-node-service.js +1982 -2
  80. package/dist/service/hosted-conversation-store.js +1405 -2
  81. package/dist/service/managed-runner-session-service.js +35 -2
  82. package/dist/service/mar-agent-model-transport-test-service.js +88 -2
  83. package/dist/service/mcp-installation-verifier.js +87 -2
  84. package/dist/service/mcp-node-operation-service.js +90 -2
  85. package/dist/service/mission-mcp-server.js +124 -2
  86. package/dist/service/mission-mcp-stdio.js +40 -2
  87. package/dist/service/mission-runtime.js +142 -2
  88. package/dist/service/native-session-projection-service.js +274 -2
  89. package/dist/service/native-session-watch-service.js +683 -2
  90. package/dist/service/node-connection-lifecycle-service.js +88 -2
  91. package/dist/service/node-control-channel.js +85 -2
  92. package/dist/service/node-control-message-service.js +109 -2
  93. package/dist/service/node-request-service.js +62 -2
  94. package/dist/service/node-run-event-bridge.js +88 -2
  95. package/dist/service/node-terminal-channel.js +202 -2
  96. package/dist/service/node-upgrade-coordinator.js +137 -2
  97. package/dist/service/node-workspace-coordinator.js +97 -2
  98. package/dist/service/recent-run-projection-service.js +99 -2
  99. package/dist/service/run-attachment-service.js +321 -2
  100. package/dist/service/run-domain-state.js +4 -2
  101. package/dist/service/run-event-service.js +246 -2
  102. package/dist/service/run-ownership-policy.js +22 -2
  103. package/dist/service/run-workbench-service.js +120 -2
  104. package/dist/service/runner-channel-message-service.js +20 -2
  105. package/dist/service/runner-interaction-service.js +243 -2
  106. package/dist/service/runner-service.js +69 -2
  107. package/dist/service/runtime-credential-control-service.js +95 -2
  108. package/dist/service/session-catalog-service.js +404 -2
  109. package/dist/service/session-command-service.js +125 -2
  110. package/dist/service/session-context-service.js +128 -2
  111. package/dist/service/session-domain-state.js +9 -2
  112. package/dist/service/session-identity-service.js +86 -2
  113. package/dist/service/session-lifecycle-service.js +248 -2
  114. package/dist/service/session-message-service.js +270 -2
  115. package/dist/service/session-presentation-service.js +43 -2
  116. package/dist/service/session-query-service.js +82 -2
  117. package/dist/service/session-watch-slot-coordinator.js +21 -2
  118. package/dist/service/skill-directory-service.js +238 -2
  119. package/dist/service/skill-install-service.js +434 -2
  120. package/dist/service/skill-node-operation-service.js +206 -2
  121. package/dist/service/terminal-relay-state.js +3 -2
  122. package/dist/service/terminal-service.js +90 -2
  123. package/dist/service/web-search-error.js +40 -2
  124. package/dist/service/workbench-event-service.js +21 -2
  125. package/dist/service/workbench-manifest-service.js +69 -2
  126. package/dist/service/workspace-change-service.js +290 -2
  127. package/dist/service/workspace-content-search-service.js +457 -2
  128. package/dist/service/workspace-domain-state.js +41 -2
  129. package/dist/service/workspace-file-service.js +150 -2
  130. package/dist/service/workspace-git-exclude-service.js +119 -2
  131. package/dist/service/workspace-queue-workbench-service.js +176 -2
  132. package/dist/service/workspace-service.js +92 -2
  133. package/dist/service/workspace-session-service.js +154 -2
  134. package/dist/service/workspace-upload-service.js +262 -2
  135. package/dist/service/workspace-watch-controller.js +68 -2
  136. package/dist/service/workspace-watch-service.js +170 -2
  137. package/dist/service/workspace-watch-snapshot-service.js +218 -2
  138. package/dist/service/workspace-workbench-service.js +239 -2
  139. package/dist/service.js +91 -2
  140. package/dist/storage.js +32 -2
  141. package/dist/supervisor.js +136 -2
  142. package/dist/terminal.js +496 -2
  143. package/dist/util/git-credential-client.js +32 -0
  144. package/dist/util/node-operation-data.js +9 -2
  145. package/dist/util/node-operation-parsers.js +382 -2
  146. package/dist/util/personal-instructions.js +34 -2
  147. package/dist/util/runner-error.js +70 -2
  148. package/dist/util/runner-native-session-parsers.js +510 -2
  149. package/dist/util/safe-error.js +8 -2
  150. package/dist/util/secret-environment.js +25 -2
  151. package/dist/workspace.js +1793 -2
  152. package/package.json +11 -8
  153. package/vendor/ripgrep/darwin-arm64/rg +0 -0
  154. package/vendor/ripgrep/darwin-x64/rg +0 -0
  155. package/vendor/ripgrep/manifest.json +12 -0
  156. package/README.md +0 -42
  157. package/dist/event-buffer.js +0 -2
  158. package/dist/migrations/v001.js +0 -107
  159. package/dist/migrations/v002.js +0 -2
  160. package/dist/migrations/v003.js +0 -2
  161. package/dist/service/mcp-package-installer.js +0 -2
@@ -1,2 +1,139 @@
1
- /* mar-release-protected */
2
- const _0x230cb1=_0x2e9d;(function(_0x4a7359,_0x385ac5){const _0x2e8f1a=_0x2e9d,_0x3d1801=_0x4a7359();while(!![]){try{const _0x551581=-parseInt(_0x2e8f1a(0x19e))/(0x2f*-0xcb+0x1176+0x13d0)*(parseInt(_0x2e8f1a(0x1a4))/(-0x1*-0x22e4+0x8b4*0x4+0x16*-0x32b))+parseInt(_0x2e8f1a(0x1b0))/(0x1d2f*-0x1+0xf4*0x8+0x1592)*(parseInt(_0x2e8f1a(0x1b3))/(-0x14*0x1e3+0x1103+-0x14bd*-0x1))+parseInt(_0x2e8f1a(0x1b4))/(-0x381*0x4+-0x1cb2+0x2abb)*(parseInt(_0x2e8f1a(0x1bf))/(-0xb*-0x387+0xb6f*0x3+-0xc2e*0x6))+parseInt(_0x2e8f1a(0x1c2))/(-0x1*0x6a5+-0x53e+0xbea)*(parseInt(_0x2e8f1a(0x1aa))/(0x1*-0x183b+-0x5d*-0xe+0x132d))+parseInt(_0x2e8f1a(0x1ce))/(-0x1*-0x1967+0x2059+-0x39b7)+-parseInt(_0x2e8f1a(0x1b1))/(0x1d98+0xc*0x245+-0x38ca)+-parseInt(_0x2e8f1a(0x1a6))/(0x77*0x1c+0xa56+-0x174f);if(_0x551581===_0x385ac5)break;else _0x3d1801['push'](_0x3d1801['shift']());}catch(_0x168e76){_0x3d1801['push'](_0x3d1801['shift']());}}}(_0xac7f,-0x1*-0xff392+-0x29*-0x4e29+-0x1d*0x7795));import{PassThrough}from'node:stream';function _0x2e9d(_0x362703,_0x216e82){_0x362703=_0x362703-(0x105c+0x162a+-0x24ed);const _0x20fa02=_0xac7f();let _0x4a8124=_0x20fa02[_0x362703];if(_0x2e9d['LPvKIZ']===undefined){var _0x1f1c25=function(_0x1808b5){const _0x560768='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x15c392='',_0x57691b='';for(let _0x559b25=-0x9*-0x441+0x2112+0x475b*-0x1,_0x1160bb,_0x33923c,_0x45b9fb=0x1eef+-0x1768+-0x787;_0x33923c=_0x1808b5['charAt'](_0x45b9fb++);~_0x33923c&&(_0x1160bb=_0x559b25%(0x2382+-0x19*0x3b+-0x1dbb)?_0x1160bb*(-0x1245+0x22*-0xbc+-0x3*-0xe7f)+_0x33923c:_0x33923c,_0x559b25++%(-0x1*-0x1d7b+0x15e*0x18+0x3e47*-0x1))?_0x15c392+=String['fromCharCode'](-0x1*-0x12c3+0x8*-0x232+-0x34&_0x1160bb>>(-(-0x1*-0xdb9+0x1*-0xd9+0x6*-0x225)*_0x559b25&-0x613+0x7*0x4c7+0x1b58*-0x1)):0x12fa+0x1701+-0x29fb){_0x33923c=_0x560768['indexOf'](_0x33923c);}for(let _0x4bac63=0x448+-0xcbb+0x67*0x15,_0x4cc863=_0x15c392['length'];_0x4bac63<_0x4cc863;_0x4bac63++){_0x57691b+='%'+('00'+_0x15c392['charCodeAt'](_0x4bac63)['toString'](0x8a2*0x2+0xda9*0x1+-0x1edd))['slice'](-(-0x9f2+-0x1*0x1354+0x8*0x3a9));}return decodeURIComponent(_0x57691b);};_0x2e9d['ONPOAv']=_0x1f1c25,_0x2e9d['sJNjYr']={},_0x2e9d['LPvKIZ']=!![];}const _0x876fc5=_0x20fa02[-0x21f8+0x17*0x70+0x17e8];_0x2e9d['fvGbRh']!==_0x876fc5&&(_0x2e9d['sJNjYr']={},_0x2e9d['fvGbRh']=_0x876fc5);const _0x4faa41=_0x2e9d['sJNjYr'][_0x362703];return _0x4faa41===undefined?(_0x4a8124=_0x2e9d['ONPOAv'](_0x4a8124),_0x2e9d['sJNjYr'][_0x362703]=_0x4a8124):_0x4a8124=_0x4faa41,_0x4a8124;}import{ReadBuffer,serializeMessage}from'@modelcontextprotocol/sdk/shared/stdio.js';function _0xac7f(){const _0x3fa456=['CgXHDgzVCM0','B25TzxnZywDL','m3r0BMvgEq','mZa0mtGYmerlrhbQtq','CgLWzq','nZuZotmZmKLnzeD4sW','mta2odqXmeP5rhnYtW','D3jPDgu','B2zM','y29TBwfUza','C3rKAw4','u0Lhvevstq','y29Kzq','zw52AxjVBM1LBNq','B25Jzq','B3DUzxi','Dw5Yzwy','nNfLuM5vBa','CMvHze1LC3nHz2u','C3rHCNq','mJm1otDwvwPdtva','CMfJzq','ChjVy2vZC0v4zwn1Dg9Y','C3rKzxjY','tunqx0vyrunvve9sx1rsqu5tue9svf9btfjfqurzx1nuqvjuruq','zw5K','y2XVC2u','zgf0yq','B3b0Aw9UCW','tunqx0vyrunvve9sx1rsqu5tue9svf9ot1rFq09otKvdveve','y3DK','rvnsq0G','mZyXntm5meTWqxPlyG','yxbWzw5K','zw52AxjVBM1LBNrlzxLZ','zxHPDenVzgu','B25JBg9Zzq','C3rKB3v0','munYEM1dtW','yxjNCW','zxjYB3i','Bwf4qNvMzMvYu2L6zq','CgLK','u0Lhs0Lmta','mZi2mZKWtePqwvzy','C2vUza','mty4nJG5odriufnuvKG','A2LSBa','B25LCNjVCG','C3bHD24','mteZnLbUEevTsa','D2LUmZi','zhjHAw4','y2XLyxi'];_0xac7f=function(){return _0x3fa456;};return _0xac7f();}export class ExecutorStdioClientTransport{[_0x230cb1(0x1ca)];[_0x230cb1(0x19c)];[_0x230cb1(0x1a8)];[_0x230cb1(0x1af)];#readBuffer;#stderr=new PassThrough();#child;#closing;constructor(_0x191bbb){const _0x2faf34=_0x230cb1;this[_0x2faf34(0x1ca)]=_0x191bbb,this.#readBuffer=new ReadBuffer(_0x191bbb[_0x2faf34(0x1a1)]===undefined?{}:{'maxBufferSize':_0x191bbb[_0x2faf34(0x1a1)]});}get[_0x230cb1(0x1c5)](){return this.#stderr;}get[_0x230cb1(0x1a2)](){const _0x305194=_0x230cb1;return this.#child?.[_0x305194(0x1a2)]??null;}async[_0x230cb1(0x1c1)](){const _0x46cb25=_0x230cb1;if(this.#child!==undefined)throw new Error(_0x46cb25(0x1c6));const _0x19641b=await this[_0x46cb25(0x1ca)][_0x46cb25(0x1c4)][_0x46cb25(0x1a9)]({'command':this[_0x46cb25(0x1ca)][_0x46cb25(0x1b7)],...this[_0x46cb25(0x1ca)][_0x46cb25(0x19f)]===undefined?{}:{'args':this[_0x46cb25(0x1ca)][_0x46cb25(0x19f)]},'cwd':this[_0x46cb25(0x1ca)][_0x46cb25(0x1cc)],'shell':![],'environment':this[_0x46cb25(0x1ca)][_0x46cb25(0x1bb)],'environmentKeys':this[_0x46cb25(0x1ca)][_0x46cb25(0x19a)],'detached':process[_0x46cb25(0x1ae)]!==_0x46cb25(0x1ab),'owner':this[_0x46cb25(0x1ca)][_0x46cb25(0x1bd)]});this.#child=_0x19641b,_0x19641b[_0x46cb25(0x1bc)](_0x46cb25(0x1a0),_0x113684=>this[_0x46cb25(0x1a8)]?.(_0x113684)),_0x19641b[_0x46cb25(0x1bc)](_0x46cb25(0x1c8),()=>{const _0x8db3ec=_0x46cb25;if(this.#child===_0x19641b)this.#child=undefined;this[_0x8db3ec(0x19c)]?.();}),_0x19641b[_0x46cb25(0x1b8)]['on'](_0x46cb25(0x1a0),_0x274b6a=>this[_0x46cb25(0x1a8)]?.(_0x274b6a)),_0x19641b[_0x46cb25(0x19d)]['on'](_0x46cb25(0x1a0),_0x557e3a=>this[_0x46cb25(0x1a8)]?.(_0x557e3a)),_0x19641b[_0x46cb25(0x19d)]['on'](_0x46cb25(0x1c9),_0x3ea5c0=>{const _0x53e5e1=_0x46cb25;try{this.#readBuffer[_0x53e5e1(0x199)](_0x3ea5c0),this.#processReadBuffer();}catch(_0x3af400){this[_0x53e5e1(0x1a8)]?.(asError(_0x3af400)),void this[_0x53e5e1(0x1c8)]();}}),_0x19641b[_0x46cb25(0x1c5)][_0x46cb25(0x1b2)](this.#stderr);}async[_0x230cb1(0x1a5)](_0x26a8ca){const _0x1dce07=_0x230cb1,_0x53aaee=this.#child;if(_0x53aaee===undefined)throw new Error(_0x1dce07(0x1cb));const _0x57bd3a=serializeMessage(_0x26a8ca);if(_0x53aaee[_0x1dce07(0x1b8)][_0x1dce07(0x1b5)](_0x57bd3a))return;await new Promise((_0x526913,_0x1a272c)=>{const _0xcab7f=_0x1dce07,_0x3f2ec9=_0x52dbd0=>{const _0x378368=_0x2e9d;_0x53aaee[_0x378368(0x1b8)][_0x378368(0x1b6)](_0x378368(0x1ac),_0x526913),_0x1a272c(_0x52dbd0);};_0x53aaee[_0xcab7f(0x1b8)][_0xcab7f(0x1bc)](_0xcab7f(0x1a0),_0x3f2ec9),_0x53aaee[_0xcab7f(0x1b8)][_0xcab7f(0x1bc)](_0xcab7f(0x1ac),()=>{const _0x4bd025=_0xcab7f;_0x53aaee[_0x4bd025(0x1b8)][_0x4bd025(0x1b6)](_0x4bd025(0x1a0),_0x3f2ec9),_0x526913();});});}[_0x230cb1(0x1c8)](){if(this.#closing!==undefined)return this.#closing;return this.#closing=this.#close(),this.#closing;}async #close(){const _0x36132c=_0x230cb1,_0x389980=this.#child;this.#child=undefined,this.#readBuffer[_0x36132c(0x1ad)]();if(_0x389980===undefined)return;_0x389980[_0x36132c(0x1b8)][_0x36132c(0x1c7)]();if(_0x389980[_0x36132c(0x19b)]===null)await signalProcessTree(_0x389980,_0x36132c(0x1b9));if(!await waitForClose(_0x389980,-0x509*-0x4+0x26e7+-0x333b))await signalProcessTree(_0x389980,_0x36132c(0x1a3));await waitForClose(_0x389980,-0x268f+0x2382+-0x1b*-0x67);}#processReadBuffer(){const _0x37da03=_0x230cb1;while(!![]){const _0x5d7fd1=this.#readBuffer[_0x37da03(0x1c0)]();if(_0x5d7fd1===null)return;this[_0x37da03(0x1af)]?.(_0x5d7fd1);}}}async function signalProcessTree(_0x4695fa,_0x1a4096){const _0x30e302=_0x230cb1;if(_0x4695fa[_0x30e302(0x1a2)]===undefined)return;if(process[_0x30e302(0x1ae)]!==_0x30e302(0x1ab))try{process[_0x30e302(0x1a7)](-_0x4695fa[_0x30e302(0x1a2)],_0x1a4096);return;}catch(_0x4d919b){if(_0x4d919b[_0x30e302(0x1ba)]===_0x30e302(0x1cd))return;}_0x4695fa[_0x30e302(0x1a7)](_0x1a4096);}async function waitForClose(_0x299222,_0x48271b){const _0x27a3a1=_0x230cb1;if(_0x299222[_0x27a3a1(0x19b)]!==null)return!![];let _0x40cb1a;try{return await Promise[_0x27a3a1(0x1c3)]([new Promise(_0x71b305=>_0x299222[_0x27a3a1(0x1bc)](_0x27a3a1(0x1c8),()=>_0x71b305(!![]))),new Promise(_0x406ffb=>{const _0x195932=_0x27a3a1;_0x40cb1a=setTimeout(()=>_0x406ffb(![]),_0x48271b),_0x40cb1a[_0x195932(0x1be)]();})]);}finally{if(_0x40cb1a!==undefined)clearTimeout(_0x40cb1a);}}function asError(_0x2ea6e9){return _0x2ea6e9 instanceof Error?_0x2ea6e9:new Error(String(_0x2ea6e9));}
1
+ import { PassThrough } from 'node:stream';
2
+ import { ReadBuffer, serializeMessage } from '@modelcontextprotocol/sdk/shared/stdio.js';
3
+ /** MCP stdio transport whose process creation is delegated to the Host executor. */
4
+ export class ExecutorStdioClientTransport {
5
+ options;
6
+ onclose;
7
+ onerror;
8
+ onmessage;
9
+ #readBuffer;
10
+ #stderr = new PassThrough();
11
+ #child;
12
+ #closing;
13
+ constructor(options) {
14
+ this.options = options;
15
+ this.#readBuffer = new ReadBuffer(options.maxBufferSize === undefined ? {} : { maxBufferSize: options.maxBufferSize });
16
+ }
17
+ get stderr() {
18
+ return this.#stderr;
19
+ }
20
+ get pid() {
21
+ return this.#child?.pid ?? null;
22
+ }
23
+ async start() {
24
+ if (this.#child !== undefined)
25
+ throw new Error('MCP_EXECUTOR_TRANSPORT_ALREADY_STARTED');
26
+ const child = await this.options.processExecutor.spawn({
27
+ command: this.options.command,
28
+ ...(this.options.args === undefined ? {} : { args: this.options.args }),
29
+ cwd: this.options.cwd,
30
+ shell: false,
31
+ environment: this.options.environment,
32
+ environmentKeys: this.options.environmentKeys,
33
+ detached: process.platform !== 'win32',
34
+ owner: this.options.owner
35
+ });
36
+ this.#child = child;
37
+ child.once('error', (error) => this.onerror?.(error));
38
+ child.once('close', () => {
39
+ if (this.#child === child)
40
+ this.#child = undefined;
41
+ this.onclose?.();
42
+ });
43
+ child.stdin.on('error', (error) => this.onerror?.(error));
44
+ child.stdout.on('error', (error) => this.onerror?.(error));
45
+ child.stdout.on('data', (chunk) => {
46
+ try {
47
+ this.#readBuffer.append(chunk);
48
+ this.#processReadBuffer();
49
+ }
50
+ catch (error) {
51
+ this.onerror?.(asError(error));
52
+ void this.close();
53
+ }
54
+ });
55
+ child.stderr.pipe(this.#stderr);
56
+ }
57
+ async send(message) {
58
+ const child = this.#child;
59
+ if (child === undefined)
60
+ throw new Error('MCP_EXECUTOR_TRANSPORT_NOT_CONNECTED');
61
+ const content = serializeMessage(message);
62
+ if (child.stdin.write(content))
63
+ return;
64
+ await new Promise((resolve, reject) => {
65
+ const error = (value) => {
66
+ child.stdin.off('drain', resolve);
67
+ reject(value);
68
+ };
69
+ child.stdin.once('error', error);
70
+ child.stdin.once('drain', () => {
71
+ child.stdin.off('error', error);
72
+ resolve();
73
+ });
74
+ });
75
+ }
76
+ close() {
77
+ if (this.#closing !== undefined)
78
+ return this.#closing;
79
+ this.#closing = this.#close();
80
+ return this.#closing;
81
+ }
82
+ async #close() {
83
+ const child = this.#child;
84
+ this.#child = undefined;
85
+ this.#readBuffer.clear();
86
+ if (child === undefined)
87
+ return;
88
+ child.stdin.end();
89
+ if (child.exitCode === null)
90
+ await signalProcessTree(child, 'SIGTERM');
91
+ if (!(await waitForClose(child, 2_000)))
92
+ await signalProcessTree(child, 'SIGKILL');
93
+ await waitForClose(child, 2_000);
94
+ }
95
+ #processReadBuffer() {
96
+ while (true) {
97
+ const message = this.#readBuffer.readMessage();
98
+ if (message === null)
99
+ return;
100
+ this.onmessage?.(message);
101
+ }
102
+ }
103
+ }
104
+ async function signalProcessTree(child, signal) {
105
+ if (child.pid === undefined)
106
+ return;
107
+ if (process.platform !== 'win32') {
108
+ try {
109
+ process.kill(-child.pid, signal);
110
+ return;
111
+ }
112
+ catch (error) {
113
+ if (error.code === 'ESRCH')
114
+ return;
115
+ }
116
+ }
117
+ child.kill(signal);
118
+ }
119
+ async function waitForClose(child, timeoutMs) {
120
+ if (child.exitCode !== null)
121
+ return true;
122
+ let timer;
123
+ try {
124
+ return await Promise.race([
125
+ new Promise((resolve) => child.once('close', () => resolve(true))),
126
+ new Promise((resolve) => {
127
+ timer = setTimeout(() => resolve(false), timeoutMs);
128
+ timer.unref();
129
+ })
130
+ ]);
131
+ }
132
+ finally {
133
+ if (timer !== undefined)
134
+ clearTimeout(timer);
135
+ }
136
+ }
137
+ function asError(value) {
138
+ return value instanceof Error ? value : new Error(String(value));
139
+ }
@@ -1,2 +1,41 @@
1
- /* mar-release-protected */
2
- const _0x2bead7=_0x36f9;(function(_0xd02902,_0x5c8d43){const _0x54686f=_0x36f9,_0x3b95b8=_0xd02902();while(!![]){try{const _0x3efb4c=-parseInt(_0x54686f(0x1d2))/(0x3c*0x9b+-0x1*-0xd81+0x3*-0x109c)+-parseInt(_0x54686f(0x1c6))/(0x84c+0x77f+-0xfc9*0x1)+-parseInt(_0x54686f(0x1d4))/(-0xc1a+-0x68c+0x12a9)+-parseInt(_0x54686f(0x1cf))/(0x67*0xf+0x516+-0x1*0xb1b)*(parseInt(_0x54686f(0x1c3))/(-0x1*0x19c6+-0xddf+0x27aa))+parseInt(_0x54686f(0x1c5))/(-0x1acf*-0x1+0x1*0x107+-0x1bd0)+parseInt(_0x54686f(0x1ce))/(0x117d*0x1+-0x832*0x2+-0x1*0x112)*(-parseInt(_0x54686f(0x1c8))/(0xea3*-0x1+0xcda+-0x1*-0x1d1))+parseInt(_0x54686f(0x1c9))/(0x229d*-0x1+0xe78+0x142e)*(parseInt(_0x54686f(0x1ca))/(-0x87c+0x979+-0xf3));if(_0x3efb4c===_0x5c8d43)break;else _0x3b95b8['push'](_0x3b95b8['shift']());}catch(_0x5deb4a){_0x3b95b8['push'](_0x3b95b8['shift']());}}}(_0x15f9,0x4d6d+0x248c2+0xc558));import{posix,resolve}from'node:path';const HOSTED_CONVERSATION_IMAGE_RUN_PREFIX=_0x2bead7(0x1d0),HOSTED_CONVERSATION_SANDBOX_HOME=_0x2bead7(0x1c7);export function marAgentGeneratedImagesDirectory(_0x414051,_0x522b3e){const _0x4d8781=_0x2bead7;if(!safePathSegment(_0x522b3e))return undefined;return resolve(_0x414051,_0x4d8781(0x1d6),_0x4d8781(0x1cc),_0x4d8781(0x1cd),_0x522b3e,_0x4d8781(0x1cb));}function _0x36f9(_0x116ddb,_0x44f19d){_0x116ddb=_0x116ddb-(0x690+0x1*0xc5f+0x1*-0x112d);const _0x57fbd8=_0x15f9();let _0x1c9a87=_0x57fbd8[_0x116ddb];if(_0x36f9['tYviZG']===undefined){var _0x371936=function(_0x973947){const _0x5e5b3a='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x83f2='',_0x113337='';for(let _0x4c682a=0x1e49+0x23c7+-0x4210,_0x7908bb,_0x50866e,_0x684679=0x1325*0x2+0x377+-0x15*0x1fd;_0x50866e=_0x973947['charAt'](_0x684679++);~_0x50866e&&(_0x7908bb=_0x4c682a%(0x1ff1+-0x8ad+0x174*-0x10)?_0x7908bb*(0xdb3+0x21b7*0x1+-0x2f2a)+_0x50866e:_0x50866e,_0x4c682a++%(0x191b+-0x19f4+0xdd))?_0x83f2+=String['fromCharCode'](-0x6b9+-0x74b*0x3+0x1d99&_0x7908bb>>(-(-0x27b*0x8+-0x22c0+0x3a*0xf1)*_0x4c682a&-0x1c5d*-0x1+-0x80*-0x4c+-0x4257)):-0xd12+0x1f4b+-0x1239){_0x50866e=_0x5e5b3a['indexOf'](_0x50866e);}for(let _0xa22c86=-0x19*-0x7c+0x226e+-0x2e8a,_0x17ebdd=_0x83f2['length'];_0xa22c86<_0x17ebdd;_0xa22c86++){_0x113337+='%'+('00'+_0x83f2['charCodeAt'](_0xa22c86)['toString'](0x30*-0x61+-0x1fca*-0x1+0x1*-0xd8a))['slice'](-(-0x206f+-0x151e+0x358f));}return decodeURIComponent(_0x113337);};_0x36f9['rsJwyW']=_0x371936,_0x36f9['fyLTyP']={},_0x36f9['tYviZG']=!![];}const _0x59d247=_0x57fbd8[-0x9b9+0x1*-0xb0+0xcd*0xd];_0x36f9['uYqNSU']!==_0x59d247&&(_0x36f9['fyLTyP']={},_0x36f9['uYqNSU']=_0x59d247);const _0x2203c3=_0x36f9['fyLTyP'][_0x116ddb];return _0x2203c3===undefined?(_0x1c9a87=_0x36f9['rsJwyW'](_0x1c9a87),_0x36f9['fyLTyP'][_0x116ddb]=_0x1c9a87):_0x1c9a87=_0x2203c3,_0x1c9a87;}export function hostedConversationImageRunId(_0x406802){return''+HOSTED_CONVERSATION_IMAGE_RUN_PREFIX+_0x406802;}export function hostedConversationGeneratedImagesDisplayDirectory(_0x58d633){const _0x53c75e=_0x2bead7;if(!safePathSegment(_0x58d633))return undefined;return posix[_0x53c75e(0x1d1)](HOSTED_CONVERSATION_SANDBOX_HOME,_0x53c75e(0x1d6),_0x53c75e(0x1cc),_0x53c75e(0x1cd),_0x58d633,_0x53c75e(0x1cb));}export function isHostedConversationImageRunId(_0x335824){const _0x1223f7=_0x2bead7;return _0x335824[_0x1223f7(0x1d9)](HOSTED_CONVERSATION_IMAGE_RUN_PREFIX);}export function marAgentGeneratedImageSources(_0x34d97b,_0x5f1605,_0x2af7ee){const _0xec5e79=_0x2bead7,_0x4e54b9=marAgentGeneratedImagesDirectory(_0x34d97b,_0x5f1605);if(_0x4e54b9===undefined)return[];return _0x2af7ee[_0xec5e79(0x1d3)](_0x1002db=>safePathSegment(_0x1002db[_0xec5e79(0x1d5)])?[{'name':_0x1002db[_0xec5e79(0x1c2)],'mime':_0x1002db[_0xec5e79(0x1d8)],'localPath':resolve(_0x4e54b9,_0x1002db[_0xec5e79(0x1d5)])}]:[]);}function _0x15f9(){const _0x31ee3e=['BgvUz3rO','mtKXmZC2EM9lqu1t','mtuXnta0vxz2CeLx','l2HVBwuVBwfY','ntCWmtzZzLPHALa','mteZnZiYmJLLy2rMBLm','mtbpyvnNs3y','z2vUzxjHDgvKx2LTywDLCW','ywDLBNq','C2vZC2LVBNm','mJG3AKXwCevx','mJCWodK2uu1qyuTe','BMf0AxzLlwHPC3rVCNK6Ag9ZDgvKoG','AM9PBG','mtiYmZKYtwDABwLY','zMXHDe1HCa','nZm5ndaXvxjOyw5w','zMLSzu5HBwu','lM1HCG','Aw5JBhvKzxm','BwLTzq','C3rHCNrZv2L0Aa','BMfTzq','mJvLBgf1zhq'];_0x15f9=function(){return _0x31ee3e;};return _0x15f9();}function safePathSegment(_0x20f9a2){const _0x4e799d=_0x2bead7;return _0x20f9a2[_0x4e799d(0x1c4)]>0x1*-0x1eca+0x2ac*-0x8+0x342a&&_0x20f9a2[_0x4e799d(0x1c4)]<=-0x5*-0x6ff+-0x111d+-0x10df&&_0x20f9a2!=='.'&&_0x20f9a2!=='..'&&!_0x20f9a2[_0x4e799d(0x1d7)]('/')&&!_0x20f9a2[_0x4e799d(0x1d7)]('\x5c');}
1
+ import { posix, resolve } from 'node:path';
2
+ const HOSTED_CONVERSATION_IMAGE_RUN_PREFIX = 'native-history:hosted:';
3
+ const HOSTED_CONVERSATION_SANDBOX_HOME = '/home/mar';
4
+ export function marAgentGeneratedImagesDirectory(homeDirectory, sessionId) {
5
+ if (!safePathSegment(sessionId))
6
+ return undefined;
7
+ return resolve(homeDirectory, '.mar', 'agent', 'sessions', sessionId, 'generated_images');
8
+ }
9
+ export function hostedConversationImageRunId(conversationId) {
10
+ return `${HOSTED_CONVERSATION_IMAGE_RUN_PREFIX}${conversationId}`;
11
+ }
12
+ export function hostedConversationGeneratedImagesDisplayDirectory(sessionId) {
13
+ if (!safePathSegment(sessionId))
14
+ return undefined;
15
+ return posix.join(HOSTED_CONVERSATION_SANDBOX_HOME, '.mar', 'agent', 'sessions', sessionId, 'generated_images');
16
+ }
17
+ export function isHostedConversationImageRunId(runId) {
18
+ return runId.startsWith(HOSTED_CONVERSATION_IMAGE_RUN_PREFIX);
19
+ }
20
+ export function marAgentGeneratedImageSources(homeDirectory, sessionId, artifacts) {
21
+ const directory = marAgentGeneratedImagesDirectory(homeDirectory, sessionId);
22
+ if (directory === undefined)
23
+ return [];
24
+ return artifacts.flatMap((artifact) => safePathSegment(artifact.fileName)
25
+ ? [
26
+ {
27
+ name: artifact.name,
28
+ mime: artifact.mime,
29
+ localPath: resolve(directory, artifact.fileName)
30
+ }
31
+ ]
32
+ : []);
33
+ }
34
+ function safePathSegment(value) {
35
+ return (value.length > 0 &&
36
+ value.length <= 255 &&
37
+ value !== '.' &&
38
+ value !== '..' &&
39
+ !value.includes('/') &&
40
+ !value.includes('\\'));
41
+ }
@@ -1,2 +1,106 @@
1
- /* mar-release-protected */
2
- function _0x547e(){const _0x259014=['CNvUswq','nta0zfryC3Ll','zxHLy3v0Aw9UlMnVBxbSzxrLza','mZi2mNrAyNfHBa','nJKXnZb4BvPTt0O','mJC4mdqZww92sxn4','CgfYC2u','DMfSDwvZ','DhvYBKLK','ntaXnte5nM5dt1rkuq','yNL0zvnPEMu','Dgv4Da','BM9YBwfSAxPL','su5Fufjpr1jfu1m','BMfTzq','ywnJzxnZ','C3rHDhvZ','C2vZC2LVBKLK','ChvZAa','DxnLCL9TzxnZywDL','CMvNAxn0zxjhzw5LCMf0zwrjBwfNzxm','zxHLy3v0Aw9UlMnHBMnLBgXLza','qundrvburuq','ote3nJCWwfvftg92','CMvNAxn0zxjjBNb1DeLTywDLCW','Aw1Hz2vZ','mJrRyNfYyuu','zwzMB3j0','BwLTzvr5Cgu','zxHLy3v0Aw9UlMzHAwXLza','oti3mMfuww1NDq','Bw9KzwW','z2v0','z2vUzxjHDgvKsw1Hz2vZ','A2LUza','C2v0','BgvUz3rO','y29TCgXLDgvKqxq','AxrLBuLK','zxzLBNq','nteXmJGWs2XiB2Px','u1vdq0vfreve','DxnLCG','q09nueXfveve','AxrLBxm','zMLUzeLUzgv4','oNvZzxi','su5urvjsvvburuq','C3rHCNrLzef0','y2XPzw50twvZC2fNzuLK','nJa1nZG5nw5ID0nvDa','DhLWzq','Cgf5Bg9Hza','BwfW','rKfjteve','DgLTzxn0yw1W'];_0x547e=function(){return _0x259014;};return _0x547e();}(function(_0x5b2cb1,_0x3ca91f){const _0x5ba19d=_0x442d,_0x51b493=_0x5b2cb1();while(!![]){try{const _0x137b13=-parseInt(_0x5ba19d(0xb3))/(-0x3*0x234+-0x234+0x8d1)+parseInt(_0x5ba19d(0xa2))/(-0x117c+0x1f3f*-0x1+0x30bd*0x1)+parseInt(_0x5ba19d(0x90))/(0xb0c+-0x2*-0xe2d+-0x2763*0x1)*(parseInt(_0x5ba19d(0xa5))/(-0x73*-0xd+0x220e+0x53*-0x7b))+parseInt(_0x5ba19d(0xbd))/(0x31d*-0xb+0x1cd3+0x571)+-parseInt(_0x5ba19d(0x94))/(-0xdb1*0x1+0x1d53+-0x94*0x1b)+-parseInt(_0x5ba19d(0x8e))/(-0x1cfd+0x1583+0x781)*(parseInt(_0x5ba19d(0xa9))/(-0x134c+0x2391+-0x103d))+parseInt(_0x5ba19d(0x8c))/(-0x2*-0x1129+0x4c7*0x1+-0x2710)*(parseInt(_0x5ba19d(0x8f))/(-0x7a2+0x2407*0x1+-0x1c5b));if(_0x137b13===_0x3ca91f)break;else _0x51b493['push'](_0x51b493['shift']());}catch(_0x53aa94){_0x51b493['push'](_0x51b493['shift']());}}}(_0x547e,0x2c6ff+0x1*0x13cbf5+-0xb7ca0));import{MarAgentConversationNormalizer}from'./conversation-normalizer.js';function _0x442d(_0x276f88,_0x5c6c4b){_0x276f88=_0x276f88-(0x3f*0x6e+0x1d26+-0x37b2);const _0x1ad612=_0x547e();let _0x26fbb7=_0x1ad612[_0x276f88];if(_0x442d['dsjRDV']===undefined){var _0x3e71d8=function(_0x128c30){const _0x3552a1='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x1e1877='',_0x20b69e='';for(let _0x115843=-0x1*-0x4c1+0x2350+-0xd*0x315,_0x370d91,_0x18ff6a,_0x38449c=0x1353+-0x16ea*-0x1+-0x1*0x2a3d;_0x18ff6a=_0x128c30['charAt'](_0x38449c++);~_0x18ff6a&&(_0x370d91=_0x115843%(0x3*-0xa47+0x650+-0x23b*-0xb)?_0x370d91*(0x5*-0x362+-0x452*0x9+0xe03*0x4)+_0x18ff6a:_0x18ff6a,_0x115843++%(-0x1*0x39b+0x1ae2+-0x1743))?_0x1e1877+=String['fromCharCode'](0x35*0x9f+0x1803+-0x37ef&_0x370d91>>(-(0x1f6b+0xa1*-0xb+-0x21*0xbe)*_0x115843&0x9*0x2e7+-0x1c38+-0x1*-0x21f)):0x265d+0xec8*0x1+-0x1*0x3525){_0x18ff6a=_0x3552a1['indexOf'](_0x18ff6a);}for(let _0x28fc47=0x19*0x9d+-0x6df*0x2+-0x197,_0x3381d6=_0x1e1877['length'];_0x28fc47<_0x3381d6;_0x28fc47++){_0x20b69e+='%'+('00'+_0x1e1877['charCodeAt'](_0x28fc47)['toString'](0x25*-0x1+-0xfa7+0xfdc))['slice'](-(0x1a*0x17b+-0xad*0x1c+-0x10*0x139));}return decodeURIComponent(_0x20b69e);};_0x442d['SXHCmt']=_0x3e71d8,_0x442d['ZXUqLq']={},_0x442d['dsjRDV']=!![];}const _0x21aee6=_0x1ad612[0x1917*-0x1+0x6*0x58f+-0x843];_0x442d['CBNKbr']!==_0x21aee6&&(_0x442d['ZXUqLq']={},_0x442d['CBNKbr']=_0x21aee6);const _0x2ab984=_0x442d['ZXUqLq'][_0x276f88];return _0x2ab984===undefined?(_0x26fbb7=_0x442d['SXHCmt'](_0x26fbb7),_0x442d['ZXUqLq'][_0x276f88]=_0x26fbb7):_0x26fbb7=_0x2ab984,_0x26fbb7;}export function projectMarAgentHistory(_0x3ca36e,_0x3ea721,_0x4a2202={}){const _0x325b79=_0x442d,_0xb3291c=new Map(),_0x46aeee=new Map(),_0x54d9dc=(_0x507fc2,_0x410a34)=>{const _0x50bde2=_0x442d,_0x299825=_0xb3291c[_0x50bde2(0xab)](_0x507fc2);if(_0x299825)return _0x299825;const _0x26486f=[..._0xb3291c[_0x50bde2(0x92)]()]['at'](-(-0xbe1+0x773*0x3+-0xa77)),_0x1b9c81={'id':_0x507fc2,'sessionId':_0x3ca36e['id'],'runId':null,'userItemId':null,'status':_0x50bde2(0xba),'model':_0x3ca36e[_0x50bde2(0xaa)],'effort':_0x3ca36e[_0x50bde2(0xa6)],'access':_0x3ca36e[_0x50bde2(0x9a)],'rewind':{'before':_0x26486f?.['id']??null,'after':_0x507fc2},'items':[],'startedAt':_0x410a34,'completedAt':_0x410a34};return _0xb3291c[_0x50bde2(0xae)](_0x507fc2,_0x1b9c81),_0x1b9c81;},_0x2b49ef=(_0x57dd2f,_0x4cff41)=>{const _0x343f5e=_0x442d,_0x52062e=_0x57dd2f[_0x343f5e(0xb7)][_0x343f5e(0xb8)](_0xe05443=>_0xe05443['id']===_0x4cff41['id']),_0x40ebd8=[..._0x57dd2f[_0x343f5e(0xb7)]];if(_0x52062e<-0x1*-0x1dde+-0x253b+0x75d*0x1)_0x40ebd8[_0x343f5e(0x9d)](_0x4cff41);else _0x40ebd8[_0x52062e]={..._0x40ebd8[_0x52062e],..._0x4cff41,'startedAt':_0x40ebd8[_0x52062e][_0x343f5e(0xbb)]};_0xb3291c[_0x343f5e(0xae)](_0x57dd2f['id'],{..._0x57dd2f,'items':_0x40ebd8,'completedAt':_0x4cff41[_0x343f5e(0xb0)]??_0x57dd2f[_0x343f5e(0xb0)]});};for(const _0x1248e7 of _0x3ea721){if(_0x1248e7[_0x325b79(0xad)]===_0x325b79(0xb5)){const _0x4cf4d5=Date[_0x325b79(0x91)](_0x1248e7[_0x325b79(0x8a)]),_0x1e0a0c=_0x54d9dc(_0x1248e7[_0x325b79(0x93)],_0x4cf4d5),_0x4f9157=_0x1248e7[_0x325b79(0x93)]+_0x325b79(0xb9),_0xd3ec15=_0x1248e7[_0x325b79(0xa4)],_0x432b9e=_0xd3ec15===undefined?[]:_0x4a2202[_0x325b79(0xa3)]?.(_0x1248e7)??[];_0x2b49ef(_0x1e0a0c,historyItem(_0x3ca36e,_0x1e0a0c,_0x4f9157,_0x325b79(0x9e),_0x325b79(0xb6),{'clientMessageId':_0x1248e7[_0x325b79(0xbc)]??null,'text':_0x1248e7[_0x325b79(0x96)],'contexts':[],'delivery':_0x325b79(0xa1),..._0xd3ec15?.[_0x325b79(0xaf)]?{'attachments':_0xd3ec15[_0x325b79(0x88)]((_0x403dd4,_0x15a4fb)=>_0x432b9e[_0x15a4fb]??{'name':_0x403dd4[_0x325b79(0x99)],'mime':_0x403dd4[_0x325b79(0xa7)],'byteSize':_0x403dd4[_0x325b79(0x95)]})}:{}},_0x4cf4d5)),_0xb3291c[_0x325b79(0xae)](_0x1248e7[_0x325b79(0x93)],{..._0xb3291c[_0x325b79(0xab)](_0x1248e7[_0x325b79(0x93)]),'userItemId':_0x4f9157});continue;}const _0x5608ac=_0x1248e7[_0x325b79(0xb2)];if(_0x5608ac[_0x325b79(0x93)]===undefined)continue;const _0x273ec1=Date[_0x325b79(0x91)](_0x5608ac[_0x325b79(0x8a)]),_0x18bd69=_0x54d9dc(_0x5608ac[_0x325b79(0x93)],_0x273ec1);if(_0x5608ac[_0x325b79(0x86)]===_0x325b79(0x8d)||_0x5608ac[_0x325b79(0x86)]===_0x325b79(0xa8)||_0x5608ac[_0x325b79(0x86)]===_0x325b79(0xa0)){_0xb3291c[_0x325b79(0xae)](_0x5608ac[_0x325b79(0x93)],{..._0x18bd69,'status':_0x5608ac[_0x325b79(0x86)]===_0x325b79(0x8d)?_0x325b79(0xb4):_0x5608ac[_0x325b79(0x86)]===_0x325b79(0xa8)?_0x325b79(0x89):_0x325b79(0xba),'completedAt':_0x273ec1});if(_0x5608ac[_0x325b79(0x86)]!==_0x325b79(0xa8))continue;}let _0x3088b6=_0x46aeee[_0x325b79(0xab)](_0x5608ac[_0x325b79(0x93)]);_0x3088b6===undefined&&(_0x3088b6=new MarAgentConversationNormalizer(),_0x46aeee[_0x325b79(0xae)](_0x5608ac[_0x325b79(0x93)],_0x3088b6));const _0x4fce83=_0xb3291c[_0x325b79(0xab)](_0x5608ac[_0x325b79(0x93)])??_0x18bd69;for(const _0x349572 of _0x3088b6[_0x325b79(0x97)](_0x5608ac)){const _0x24394a=_0x349572[_0x325b79(0xac)]===undefined?[]:_0x4a2202[_0x325b79(0x9f)]?.(_0x5608ac[_0x325b79(0x9c)],_0x349572[_0x325b79(0xac)])??[];_0x2b49ef(_0x4fce83,historyItem(_0x3ca36e,_0x4fce83,_0x349572[_0x325b79(0xb1)],_0x349572[_0x325b79(0xad)],_0x349572[_0x325b79(0x9b)],_0x24394a[_0x325b79(0xaf)]===-0x641*-0x2+-0x1c90+0x100e?_0x349572[_0x325b79(0x87)]:{..._0x349572[_0x325b79(0x87)],'attachments':_0x24394a},_0x273ec1));}}return[..._0xb3291c[_0x325b79(0x92)]()];}function historyItem(_0x5e82a6,_0x41ba86,_0x2c52f9,_0x53601b,_0x5e93da,_0x30caa7,_0x2f4dfb){const _0x5b1071=_0x442d;return{'id':_0x2c52f9,'sessionId':_0x5e82a6['id'],'turnId':_0x41ba86['id'],'runId':_0x41ba86[_0x5b1071(0x8b)],'parentItemId':null,'sourceSequence':null,'revision':0x0,'kind':_0x53601b,'status':_0x5e93da,'payload':_0x30caa7,'startedAt':_0x2f4dfb,'completedAt':_0x5e93da===_0x5b1071(0x98)?null:_0x2f4dfb};}
1
+ import { MarAgentConversationNormalizer } from './conversation-normalizer.js';
2
+ export function projectMarAgentHistory(session, entries, options = {}) {
3
+ const turns = new Map();
4
+ const normalizer = new MarAgentConversationNormalizer();
5
+ const ensure = (turnId, at) => {
6
+ const existing = turns.get(turnId);
7
+ if (existing)
8
+ return existing;
9
+ const previous = [...turns.values()].at(-1);
10
+ const created = {
11
+ id: turnId,
12
+ sessionId: session.id,
13
+ runId: null,
14
+ userItemId: null,
15
+ status: 'INTERRUPTED',
16
+ model: session.model,
17
+ effort: session.effort,
18
+ access: session.access,
19
+ rewind: { before: previous?.id ?? null, after: turnId },
20
+ items: [],
21
+ startedAt: at,
22
+ completedAt: at
23
+ };
24
+ turns.set(turnId, created);
25
+ return created;
26
+ };
27
+ const replace = (turn, item) => {
28
+ const index = turn.items.findIndex((candidate) => candidate.id === item.id);
29
+ const items = [...turn.items];
30
+ if (index < 0)
31
+ items.push(item);
32
+ else
33
+ items[index] = { ...items[index], ...item, startedAt: items[index].startedAt };
34
+ turns.set(turn.id, { ...turn, items, completedAt: item.completedAt ?? turn.completedAt });
35
+ };
36
+ for (const entry of entries) {
37
+ if (entry.kind === 'user') {
38
+ const at = Date.parse(entry.timestamp);
39
+ const turn = ensure(entry.turnId, at);
40
+ const id = `${entry.turnId}:user`;
41
+ const images = entry.images;
42
+ const registeredImages = images === undefined ? [] : (options.registerInputImages?.(entry) ?? []);
43
+ replace(turn, historyItem(session, turn, id, 'user_message', 'COMPLETED', {
44
+ clientMessageId: entry.clientMessageId ?? null,
45
+ text: entry.text,
46
+ contexts: [],
47
+ delivery: 'ACCEPTED',
48
+ ...(images?.length
49
+ ? {
50
+ attachments: images.map((image, imageIndex) => registeredImages[imageIndex] ?? {
51
+ name: image.name,
52
+ mime: image.mimeType,
53
+ byteSize: image.byteSize
54
+ })
55
+ }
56
+ : {})
57
+ }, at));
58
+ turns.set(entry.turnId, { ...turns.get(entry.turnId), userItemId: id });
59
+ continue;
60
+ }
61
+ const event = entry.event;
62
+ if (event.turnId === undefined)
63
+ continue;
64
+ const at = Date.parse(event.timestamp);
65
+ const turn = ensure(event.turnId, at);
66
+ if (event.type === 'execution.completed' ||
67
+ event.type === 'execution.failed' ||
68
+ event.type === 'execution.cancelled') {
69
+ turns.set(event.turnId, {
70
+ ...turn,
71
+ status: event.type === 'execution.completed'
72
+ ? 'SUCCEEDED'
73
+ : event.type === 'execution.failed'
74
+ ? 'FAILED'
75
+ : 'INTERRUPTED',
76
+ completedAt: at
77
+ });
78
+ if (event.type !== 'execution.failed')
79
+ continue;
80
+ }
81
+ const projectionTurn = turns.get(event.turnId) ?? turn;
82
+ for (const projected of normalizer.normalize(event)) {
83
+ const attachments = projected.generatedImages === undefined
84
+ ? []
85
+ : (options.registerGeneratedImages?.(event.sessionId, projected.generatedImages) ?? []);
86
+ replace(projectionTurn, historyItem(session, projectionTurn, projected.itemId, projected.kind, projected.status, attachments.length === 0 ? projected.payload : { ...projected.payload, attachments }, at));
87
+ }
88
+ }
89
+ return [...turns.values()];
90
+ }
91
+ function historyItem(session, turn, id, kind, status, payload, at) {
92
+ return {
93
+ id,
94
+ sessionId: session.id,
95
+ turnId: turn.id,
96
+ runId: turn.runId,
97
+ parentItemId: null,
98
+ sourceSequence: null,
99
+ revision: 0,
100
+ kind,
101
+ status,
102
+ payload,
103
+ startedAt: at,
104
+ completedAt: status === 'IN_PROGRESS' ? null : at
105
+ };
106
+ }