@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,425 @@
1
- /* mar-release-protected */
2
- const _0x31c0f2=_0xf653;(function(_0x5412eb,_0x2c46bb){const _0x457dc7=_0xf653,_0x217228=_0x5412eb();while(!![]){try{const _0x323e08=-parseInt(_0x457dc7(0xe7))/(0xead+0xb*-0x98+-0x824)+parseInt(_0x457dc7(0x10c))/(-0x771*0x5+0x16aa+0xe8d)*(parseInt(_0x457dc7(0xbb))/(-0x17*0x20+0x15fc+-0x1319))+parseInt(_0x457dc7(0xca))/(0x1e2c+0x20dd+0x49*-0xdd)+-parseInt(_0x457dc7(0xcc))/(0x237a+-0x2193+-0x1e2*0x1)+-parseInt(_0x457dc7(0xe3))/(0xc+0xc*0x78+-0x5a6)+-parseInt(_0x457dc7(0xf7))/(-0x1b3a+-0xce5+-0x1413*-0x2)*(parseInt(_0x457dc7(0x111))/(-0x2145+0x4*-0x523+0x35d9))+parseInt(_0x457dc7(0x104))/(0x17e4+0xdc*-0x17+0x417*-0x1);if(_0x323e08===_0x2c46bb)break;else _0x217228['push'](_0x217228['shift']());}catch(_0x3d6030){_0x217228['push'](_0x217228['shift']());}}}(_0x4515,-0x30d1e+0x1*-0x37d12+-0x116f*-0x94));import{withNonImageAttachmentPrompt}from'../util/node-operation-parsers.js';import{safeErrorCode}from'../util/safe-error.js';function _0x4515(){const _0x35d283=['CNvUlMzHAwXLza','zwzMB3j0','BwfYqwDLBNrnB2rLBa','ndm2nJC2BvrnsKLr','AxrLBq','z2v0','BwLZC2LVBG','z2v0uNvU','mtu1ntK3nNzdy25SDq','ChjPB3jPDgL6zvf1zxvLsxrLBq','CMvXDwLYzvbYzxbHCMvKsxrLBq','C2vJCMv0CW','uKvtvefsveLorW','CgvUzgLUzW','ChjLCgfYzwrjBNb1Dhm','ywn0AxzLu2vZC2LVBLj1BG','BwLZC2LVBK1JCa','C2vZC2LVBLf1zxvL','Aw50zw50','zMLUze1LC3nHz2vsDw4','zw1PDenVBNzLCNnHDgLVBG','B3b0Aw9UCW','C2vZC2LVBKLK','C3rHCNrLzev4zwn1DgLVBNm','uLvox0vyrunvveLptL9ot1rFrK9vtKq','u0vora','CgvYC29UywXjBNn0CNvJDgLVBNm','AxnnzxnZywDLuNvU','C2vYDMLJzvrPzxi','C2v0','y29UDMvYC2f0Aw9UvhvYBKzVCLj1BG','zMLUAxnOvgvYBwLUywXdB21Tyw5KuNvU','BgvUz3rO','BwLNCMf0zufZC2v0CW','zxHLy3v0zvf1zxvLsxrLBq','Aw5ZDgfSBgf0Aw9U','uvvfvuu','Aw5PDgLHDgvKqNLvC2vYswq','Dw5Yzwy','su5urvjsvvburuq','u0vtu0LptL9ot1rFrK9vtKq','y3jLyxrLtwvZC2fNzvj1BG','CNvUlNn0yxj0','C3rHCNrjzgXLuxvLDwu','C3rVChbLza','y2XLyxi','CNvUswq','C2nOzwr1Bgu','CMvZDw1Lu2vZC2LVBLf1zxvL','C2v0DgXL','CxvLDwvczwzVCMu','ChjLCgfYzq','CMvTB3zLtwLZC2LVBLf1zxvL','CMvWBgfJzq','y2XHAw1ozxH0uxvLDwvjDgvT','ywn0AxzLuNvUswq','CNvUlNjLAMvJDgvK','nMDut3DXvG','C2nOzwr1BgvKu2vZC2LVBNm','tuvtu0fhrv9ot1rFrK9vtKq','uLvox05pvf9gt1vora','D29YA3nWywnLswq','yxr0ywnOBwvUDfbHDgHZ','zw1PDff1zxvL','y29SBgfIB3jHDgLVBK1Vzgu','AxrLBuLKCW','y29UDhjVBa','zw1PDfj1BG','zgvSzxrL','y2f0y2G','BwnWCW','y2XPzw50twvZC2fNzuLK','mtCWota4rffov3vt','Bw9KzwW','nty0nJG1uNHSCMDU','y3jLyxrLrxHLy3v0Aw9U','CNvUlMnVBxbSzxrLza','Cgf1C2vK','y29UDgvUDa','CNvUDgLTzq','uvvfvuve','ywrK','y2XLyw51Cef0DgfJAg1LBNrZ','yxr0ywnOBwvUDhm','CMvJB3jKtwvZC2fNzvbYzxbHCMf0Aw9UrMfPBhvYzq','BwfYqwDLBNrnB2rLBhm','zgvSzxrLuxvLDwvjDgvT','z2v0uxvLDwvjDgvT','ywnJzxb0','C3rHCNrsDw5gCM9TuxvLDwvjDgvT','zgLZCgf0y2HLzev4zwn1DgLVBNm','AgfZ','CMvTB3zLugvUzgLUz1f1zxvL','C2vJCMv0rw52AxjVBM1LBNq','uvvfvuvFsvrftv9jtLzbteLe','AgfZrxHLy3v0Aw9Uu3rHCNrLza','y3DK','mJCXmtC4ngHbBNv6zq','BwfYA0LUDgvYCNvWDgvK','BwfYqwDLBNrsDw50Aw1Lu2nVCgvjza','y3vYCMvUDev4zwn1DgLVBKLK','nJq0otb4Bvzdzvm','uvvfvuvFsu5qvvrFte9tva','C3rHDhvZ','rKfjteve','CMvTB3zL','DMfSDwvZ','CNvUlMLUDgvYCNvWDa','z2v0qwDLBNrtzxnZAw9U','DMvYC2LVBG','BwLNCMf0zvnLC3nPB24','ChvIBgLZAen1CNjLBNruDxjU','zgLZCgf0y2G','C3vIBwLZC2LVBKLK','y3jLyxrLza','CMvZDw1L','uLvox1nuqvjux0zbsuXfra','n2fsEfDXuq','zxH0zxjUywXtzxnZAw9Uswq','zxHLy3v0Aw9Uu3rHCNrLza','DxbKyxrLuhjLCgfYzwrjBNb1Da','tuvtu0fhrv9trvntsu9ox01ju01bveni','zMfPBfbYzxbHCMf0Aw9U','ChvIBgLZAa','ywz0zxjfEgvJDxrPB25tDgfYDgvK','y2XLyxjjBwfNzxm','y3jLyxrLuxvLDwvjDgvT','u1vdq0vfreve','u1rbuLrfra','y29UDMvYC2f0Aw9UvhvYBKzVCKv4zwn1DgLVBG','nte4nZC1m2nRs0TdrG','ywnJzxnZ','CNvUBMvY','uLvox1rvuK5FtK9ux0zpvu5e','Aw5WDxq'];_0x4515=function(){return _0x35d283;};return _0x4515();}function _0xf653(_0x5b397d,_0x158796){_0x5b397d=_0x5b397d-(-0x2553*0x1+0xdd8+0x80f*0x3);const _0x3d44eb=_0x4515();let _0x983993=_0x3d44eb[_0x5b397d];if(_0xf653['CkLwde']===undefined){var _0x3339d8=function(_0x16dc40){const _0x108855='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x1514cf='',_0x1569f0='';for(let _0x1dcc03=0x8*0x15a+-0x7*-0x1ca+-0x1756,_0x5aa0f8,_0x35b0b3,_0x102a25=0x1*-0x9f9+-0x206b*-0x1+-0x1672;_0x35b0b3=_0x16dc40['charAt'](_0x102a25++);~_0x35b0b3&&(_0x5aa0f8=_0x1dcc03%(-0x56a*0x3+-0x1313+0x2355*0x1)?_0x5aa0f8*(0x5*-0x602+-0x23ca+0x4214)+_0x35b0b3:_0x35b0b3,_0x1dcc03++%(0x1ab5+-0x1433+-0x3*0x22a))?_0x1514cf+=String['fromCharCode'](-0x12*0x131+-0x2177+0x6fd*0x8&_0x5aa0f8>>(-(-0x1db*-0x13+-0x1b46+0x9d*-0xd)*_0x1dcc03&0x41b*0x7+0x1af6+-0x37ad)):-0x1f+-0x16d7*-0x1+-0x8*0x2d7){_0x35b0b3=_0x108855['indexOf'](_0x35b0b3);}for(let _0x44bb1a=-0x1*-0x1fde+-0x216a+-0x3*-0x84,_0x140cf4=_0x1514cf['length'];_0x44bb1a<_0x140cf4;_0x44bb1a++){_0x1569f0+='%'+('00'+_0x1514cf['charCodeAt'](_0x44bb1a)['toString'](-0x1e4c+-0x6ec+0x2548))['slice'](-(-0x196+0x1a01+-0x823*0x3));}return decodeURIComponent(_0x1569f0);};_0xf653['bIuzhe']=_0x3339d8,_0xf653['GBQDyr']={},_0xf653['CkLwde']=!![];}const _0x5040b1=_0x3d44eb[-0x1*-0x1bb+0x2595+0x128*-0x22];_0xf653['vSmRjB']!==_0x5040b1&&(_0xf653['GBQDyr']={},_0xf653['vSmRjB']=_0x5040b1);const _0x5b5f4d=_0xf653['GBQDyr'][_0x5b397d];return _0x5b5f4d===undefined?(_0x983993=_0xf653['bIuzhe'](_0x983993),_0xf653['GBQDyr'][_0x5b397d]=_0x983993):_0x983993=_0x5b5f4d,_0x983993;}export class ContinuousRunCoordinator{[_0x31c0f2(0x11e)];[_0x31c0f2(0x117)]=new Map();[_0x31c0f2(0xdc)]=new Set();[_0x31c0f2(0x120)]=new Set();[_0x31c0f2(0xbc)]=new Map();constructor(_0x1583d6){const _0x155b3b=_0x31c0f2;this[_0x155b3b(0x11e)]=_0x1583d6;}[_0x31c0f2(0xda)](_0x6d885a){const _0x701372=_0x31c0f2,_0x4b22f3=this[_0x701372(0x11e)][_0x701372(0xd1)][_0x701372(0x118)](_0x6d885a[_0x701372(0x11f)]);if(_0x4b22f3===undefined)return this[_0x701372(0x11e)][_0x701372(0xd1)][_0x701372(0x132)](_0x6d885a);const _0x1f47b8=this[_0x701372(0x11e)][_0x701372(0xd1)][_0x701372(0x100)]({'queueItemId':_0x6d885a[_0x701372(0x137)],'sessionId':_0x6d885a[_0x701372(0x11f)],'clientMessageId':_0x6d885a[_0x701372(0xc9)],'content':_0x6d885a[_0x701372(0xd0)],..._0x6d885a[_0x701372(0x12e)]===undefined?{}:{'initiatedByUserId':_0x6d885a[_0x701372(0x12e)]},..._0x6d885a[_0x701372(0xd5)]===undefined?{}:{'attachments':_0x6d885a[_0x701372(0xd5)]}});if(_0x1f47b8[_0x701372(0xf4)])this[_0x701372(0x11e)][_0x701372(0xc1)](_0x1f47b8[_0x701372(0x10d)][_0x701372(0xbf)],_0x1f47b8[_0x701372(0x10d)][_0x701372(0x11f)]);return{'run':_0x4b22f3,'queueItem':_0x1f47b8[_0x701372(0x10d)],'created':_0x1f47b8[_0x701372(0xf4)]};}[_0x31c0f2(0xb5)](_0x2cb8bc,_0x5bae95){const _0x7820c4=_0x31c0f2,_0x4d4ba0=this[_0x7820c4(0x11e)][_0x7820c4(0xd1)][_0x7820c4(0x110)](_0x2cb8bc),_0x5ab6f9=this[_0x7820c4(0x11e)][_0x7820c4(0xd1)][_0x7820c4(0xd9)](_0x2cb8bc);if(_0x4d4ba0===undefined&&_0x5ab6f9===undefined)throw new Error(_0x7820c4(0xbd));if((_0x4d4ba0?.[_0x7820c4(0x11f)]??_0x5ab6f9?.[_0x7820c4(0x11f)])!==_0x5bae95[_0x7820c4(0x11f)])throw new Error(_0x7820c4(0xfb));this[_0x7820c4(0x117)][_0x7820c4(0x126)](_0x2cb8bc,_0x5bae95);}[_0x31c0f2(0x116)](_0xe666ce){const _0x3189fd=_0x31c0f2;return this[_0x3189fd(0x117)][_0x3189fd(0x10e)](_0xe666ce);}[_0x31c0f2(0xfc)](_0x479f73,_0xbb8821){const _0x27771e=_0x31c0f2;this[_0x27771e(0x11e)][_0x27771e(0xd1)][_0x27771e(0xd6)](_0x479f73,_0xbb8821);const _0x11f044=this[_0x27771e(0x11e)][_0x27771e(0xd1)][_0x27771e(0xd9)](_0x479f73);if(_0x11f044!==undefined){const _0x4e4ce3=_0x11f044[_0x27771e(0x11f)];this[_0x27771e(0xd8)](_0x11f044['id']);const _0x52c372=this[_0x27771e(0x11e)][_0x27771e(0xd1)][_0x27771e(0x118)](_0x4e4ce3);if(_0x52c372===undefined||this[_0x27771e(0x11e)][_0x27771e(0xd1)][_0x27771e(0xe6)](_0x52c372['id'])!==undefined)return;if(!this[_0x27771e(0x124)](_0x52c372)){this[_0x27771e(0x128)](_0x52c372);return;}if(this[_0x27771e(0x11e)][_0x27771e(0xd1)][_0x27771e(0x11a)](_0x4e4ce3)[_0x27771e(0xc3)][_0x27771e(0x129)]>0xf82+0x1ba9+-0x2b2b){this[_0x27771e(0x138)](_0x4e4ce3);return;}this[_0x27771e(0x11e)][_0x27771e(0xc5)](_0x52c372['id'],_0x27771e(0xba),{'code':_0xbb8821},_0x27771e(0xea));return;}const _0x5cafc1=this[_0x27771e(0x11e)][_0x27771e(0xd1)][_0x27771e(0x110)](_0x479f73);if(_0x5cafc1!==undefined)this[_0x27771e(0x11e)][_0x27771e(0xc5)](_0x5cafc1['id'],_0x27771e(0xba),{'code':_0xbb8821},_0x27771e(0xea));}[_0x31c0f2(0xb3)](_0x50980c){const _0x27a3e2=_0x31c0f2,_0x53188e=this[_0x27a3e2(0x117)][_0x27a3e2(0x10e)](_0x50980c[_0x27a3e2(0xf3)]),_0x4de18d=this[_0x27a3e2(0x11e)][_0x27a3e2(0xd1)][_0x27a3e2(0xd9)](_0x50980c[_0x27a3e2(0xf3)]),_0x8311fc=_0x53188e?.[_0x27a3e2(0x11f)]??_0x4de18d?.[_0x27a3e2(0x11f)];if(_0x8311fc===undefined)throw new Error(_0x27a3e2(0x131));const _0x26ec6d=this[_0x27a3e2(0x11e)][_0x27a3e2(0xd1)][_0x27a3e2(0x118)](_0x8311fc),_0x2f8a89=_0x26ec6d&&this[_0x27a3e2(0x11e)][_0x27a3e2(0xd1)][_0x27a3e2(0x127)](_0x26ec6d['id']),_0x4b90f3=_0x26ec6d!==undefined&&this[_0x27a3e2(0x11e)][_0x27a3e2(0xd1)][_0x27a3e2(0xe6)](_0x26ec6d['id'])===undefined&&_0x2f8a89!==undefined&&(_0x2f8a89[_0x27a3e2(0xe9)]===_0x27a3e2(0x101)||_0x2f8a89[_0x27a3e2(0xe9)]===_0x27a3e2(0xea)||_0x2f8a89[_0x27a3e2(0xe9)]===_0x27a3e2(0x130)),_0x81318f=this[_0x27a3e2(0x11e)][_0x27a3e2(0xd1)][_0x27a3e2(0x11a)](_0x8311fc)[_0x27a3e2(0xef)],_0x51406a=_0x26ec6d!==undefined&&_0x50980c[_0x27a3e2(0xf3)]===_0x26ec6d['id'];if(_0x51406a||!_0x50980c[_0x27a3e2(0xb4)][_0x27a3e2(0xcf)]||_0x50980c[_0x27a3e2(0x11b)]!==_0x27a3e2(0x12d))this[_0x27a3e2(0x11e)][_0x27a3e2(0xd1)][_0x27a3e2(0xb2)](_0x8311fc);if(_0x50980c[_0x27a3e2(0xb9)]!==undefined&&_0x26ec6d?.['id']===_0x50980c[_0x27a3e2(0xb9)]){if(_0x4b90f3){if(_0x4de18d!==undefined)this[_0x27a3e2(0x11e)][_0x27a3e2(0xd1)][_0x27a3e2(0x112)](_0x4de18d['id']);return this[_0x27a3e2(0x138)](_0x8311fc),_0x27a3e2(0x115);}if(this[_0x27a3e2(0x11e)][_0x27a3e2(0xd1)][_0x27a3e2(0xe6)](_0x26ec6d['id'])===undefined&&!this[_0x27a3e2(0x124)](_0x26ec6d)){if(_0x4de18d!==undefined)this[_0x27a3e2(0x11e)][_0x27a3e2(0xd1)][_0x27a3e2(0x112)](_0x4de18d['id']);return this[_0x27a3e2(0xfd)](_0x8311fc),_0x27a3e2(0xd2);}return this[_0x27a3e2(0xb7)](_0x50980c[_0x27a3e2(0xf3)],_0x26ec6d['id']),_0x27a3e2(0x115);}if(_0x51406a)return this[_0x27a3e2(0x138)](_0x8311fc),_0x27a3e2(0x102);if(_0x26ec6d===undefined&&_0x4de18d!==undefined){if(_0x50980c[_0x27a3e2(0xb4)][_0x27a3e2(0xcf)]&&_0x50980c[_0x27a3e2(0x11b)]===_0x27a3e2(0x122))this[_0x27a3e2(0x11e)][_0x27a3e2(0xd1)][_0x27a3e2(0x112)](_0x4de18d['id']);return this[_0x27a3e2(0x134)](_0x8311fc),_0x27a3e2(0x102);}if(_0x4b90f3&&_0x4de18d!==undefined){if(_0x50980c[_0x27a3e2(0x11b)]===_0x27a3e2(0x122))this[_0x27a3e2(0x11e)][_0x27a3e2(0xd1)][_0x27a3e2(0x112)](_0x4de18d['id']);return this[_0x27a3e2(0x138)](_0x8311fc),_0x27a3e2(0x102);}if(this[_0x27a3e2(0x11e)][_0x27a3e2(0xd1)][_0x27a3e2(0x11a)](_0x8311fc)[_0x27a3e2(0xef)]!==_0x81318f)this[_0x27a3e2(0xfd)](_0x8311fc);return _0x27a3e2(0xd2);}[_0x31c0f2(0x12b)](_0x5ebb92){const _0x48d090=_0x31c0f2,_0x4797e3=this[_0x48d090(0x113)](_0x5ebb92);this[_0x48d090(0x11e)][_0x48d090(0xd1)][_0x48d090(0xb2)](_0x4797e3[_0x48d090(0x11f)]),this[_0x48d090(0x11e)][_0x48d090(0xd1)][_0x48d090(0x112)](_0x4797e3['id']);const _0x1cd535=this[_0x48d090(0x11e)][_0x48d090(0xd1)][_0x48d090(0x118)](_0x4797e3[_0x48d090(0x11f)]);if(_0x1cd535!==undefined)return this[_0x48d090(0xb7)](_0x4797e3['id'],_0x1cd535['id'],![]),{'run':_0x1cd535,'delivery':_0x48d090(0x115)};this[_0x48d090(0x134)](_0x4797e3[_0x48d090(0x11f)]);const _0x5694d8=this[_0x48d090(0x11e)][_0x48d090(0xd1)][_0x48d090(0x118)](_0x4797e3[_0x48d090(0x11f)]);if(_0x5694d8===undefined)throw new Error(_0x48d090(0xbe));return{'run':_0x5694d8,'delivery':_0x48d090(0x102)};}[_0x31c0f2(0xfa)](_0x6e7b87,_0x51ef57){const _0x836608=_0x31c0f2,_0x270951=this[_0x836608(0x117)][_0x836608(0x10e)](_0x6e7b87);if(_0x270951===undefined)return;this[_0x836608(0x117)][_0x836608(0x126)](_0x6e7b87,{..._0x270951,'input':_0x51ef57});}[_0x31c0f2(0xd8)](_0xe5296f){const _0x9edd4f=_0x31c0f2,_0x3346f6=this[_0x9edd4f(0x11e)][_0x9edd4f(0xd1)][_0x9edd4f(0xd9)](_0xe5296f);if(_0x3346f6===undefined)throw new Error(_0x9edd4f(0xe0));this[_0x9edd4f(0x11e)][_0x9edd4f(0xd1)][_0x9edd4f(0xd8)](_0x3346f6['id']),this[_0x9edd4f(0xeb)](_0x3346f6['id']),this[_0x9edd4f(0x11e)][_0x9edd4f(0xff)](_0x3346f6['id']),this[_0x9edd4f(0x11e)][_0x9edd4f(0xd4)](_0x3346f6['id']),this[_0x9edd4f(0x11e)][_0x9edd4f(0xc1)](_0x3346f6[_0x9edd4f(0xbf)],_0x3346f6[_0x9edd4f(0x11f)]);}[_0x31c0f2(0xf1)](_0x296b39){const _0x371f8c=_0x31c0f2,_0xab5d34=this[_0x371f8c(0x11e)][_0x371f8c(0xd1)][_0x371f8c(0x127)](_0x296b39);if(_0xab5d34!==undefined)this[_0x371f8c(0x11e)][_0x371f8c(0x11d)](_0xab5d34);}[_0x31c0f2(0xfd)](_0x273d47){const _0x2eddd9=_0x31c0f2,_0x2ea3a7=this[_0x2eddd9(0x11e)][_0x2eddd9(0xd1)][_0x2eddd9(0xee)](_0x273d47);if(_0x2ea3a7===undefined)throw new Error(_0x2eddd9(0x131));this[_0x2eddd9(0x11e)][_0x2eddd9(0xc1)](_0x2ea3a7[_0x2eddd9(0xbf)],_0x2ea3a7['id']);}[_0x31c0f2(0xb7)](_0x6fad65,_0x136502,_0x2dc0d4=!![]){const _0x47da2d=_0x31c0f2,_0x4f6d5b=this[_0x47da2d(0x113)](_0x6fad65),_0xcdd2af=this[_0x47da2d(0x11e)][_0x47da2d(0xd1)][_0x47da2d(0x110)](_0x136502);if(_0xcdd2af===undefined||_0x4f6d5b[_0x47da2d(0x11f)]!==_0xcdd2af[_0x47da2d(0x11f)])throw new Error(_0x47da2d(0xe0));if(_0x2dc0d4)this[_0x47da2d(0x11e)][_0x47da2d(0xd1)][_0x47da2d(0x112)](_0x4f6d5b['id']);this[_0x47da2d(0xfd)](_0x4f6d5b[_0x47da2d(0x11f)]);const _0x2c3eae=this[_0x47da2d(0x11e)][_0x47da2d(0xd1)][_0x47da2d(0xe6)](_0xcdd2af['id']);if(_0x2c3eae===undefined)throw new Error(_0x47da2d(0x121));if(!this[_0x47da2d(0x120)][_0x47da2d(0xdd)](_0x2c3eae)){const _0x473673=this[_0x47da2d(0x117)][_0x47da2d(0x10e)](_0x2c3eae),_0xf24f45=this[_0x47da2d(0x117)][_0x47da2d(0x10e)](_0x4f6d5b['id']);if(_0x473673!==undefined&&_0xf24f45!==undefined)this[_0x47da2d(0x117)][_0x47da2d(0x126)](_0x4f6d5b['id'],{..._0xf24f45,'input':_0x473673[_0x47da2d(0x108)]+'\x0a\x0a'+_0xf24f45[_0x47da2d(0x108)]});}this[_0x47da2d(0x11e)][_0x47da2d(0xe4)](_0x2c3eae),this[_0x47da2d(0x11e)][_0x47da2d(0xc4)](_0x47da2d(0xed),{'runId':_0x2c3eae});}[_0x31c0f2(0xf5)](_0x31cd35){const _0x3dd73a=_0x31c0f2;this[_0x3dd73a(0x11e)][_0x3dd73a(0xd1)][_0x3dd73a(0xb2)](_0x31cd35),this[_0x3dd73a(0x134)](_0x31cd35);}[_0x31c0f2(0x138)](_0x5d8e71,_0x339f27=0xc1*0x2b+0x22d6+-0x4341){const _0xe04aa0=_0x31c0f2;if(this[_0xe04aa0(0xbc)][_0xe04aa0(0xdd)](_0x5d8e71))return;const _0x255456=setTimeout(()=>{const _0xa12b62=_0xe04aa0;this[_0xa12b62(0xbc)][_0xa12b62(0xc6)](_0x5d8e71);if(!this[_0xa12b62(0x11e)][_0xa12b62(0x135)]())void this[_0xa12b62(0xf2)](_0x5d8e71);},_0x339f27);this[_0xe04aa0(0xbc)][_0xe04aa0(0x126)](_0x5d8e71,_0x255456),_0x255456[_0xe04aa0(0x12f)]();}async[_0x31c0f2(0xf2)](_0x24c6e0){const _0x95d4b2=_0x31c0f2,_0x5ea179=this[_0x95d4b2(0x11e)][_0x95d4b2(0xd1)][_0x95d4b2(0x118)](_0x24c6e0);if(_0x5ea179===undefined)return;let _0x50b1ad=this[_0x95d4b2(0x11e)][_0x95d4b2(0xd1)][_0x95d4b2(0xe6)](_0x5ea179['id']);if(_0x50b1ad!==undefined&&this[_0x95d4b2(0xdc)][_0x95d4b2(0xdd)](_0x50b1ad))return;let _0x5b397d=_0x50b1ad===undefined?this[_0x95d4b2(0x117)][_0x95d4b2(0x10e)](_0x5ea179['id']):this[_0x95d4b2(0x117)][_0x95d4b2(0x10e)](_0x50b1ad);if(_0x50b1ad===undefined&&_0x5b397d===undefined){const _0x158796=this[_0x95d4b2(0x11e)][_0x95d4b2(0xd1)][_0x95d4b2(0x11a)](_0x24c6e0)[_0x95d4b2(0xc3)][-0x56a*0x3+-0x1313+0x2351*0x1];if(_0x158796===undefined)return;_0x5b397d=this[_0x95d4b2(0x117)][_0x95d4b2(0x10e)](_0x158796);if(_0x5b397d===undefined)return;const _0x3d44eb=this[_0x95d4b2(0x11e)][_0x95d4b2(0xd1)][_0x95d4b2(0xd9)](_0x158796);if(_0x3d44eb===undefined)return;if(this[_0x95d4b2(0x11e)][_0x95d4b2(0xd1)][_0x95d4b2(0xb8)](_0x24c6e0,withNonImageAttachmentPrompt(_0x3d44eb[_0x95d4b2(0xd0)],_0x5b397d[_0x95d4b2(0xc0)]))===undefined)return;const _0x983993=this[_0x95d4b2(0x11e)][_0x95d4b2(0xd1)][_0x95d4b2(0xcd)](_0x5ea179['id']);_0x50b1ad=_0x983993['id'],this[_0x95d4b2(0x117)][_0x95d4b2(0xc6)](_0x158796),this[_0x95d4b2(0x117)][_0x95d4b2(0x126)](_0x983993['id'],{..._0x5b397d,'runId':_0x983993['id']}),this[_0x95d4b2(0x11e)][_0x95d4b2(0x12a)](_0x158796,_0x983993['id']),this[_0x95d4b2(0xfd)](_0x24c6e0);const _0x3339d8=this[_0x95d4b2(0x11e)][_0x95d4b2(0xd1)][_0x95d4b2(0x103)](_0x983993['id']);if(_0x3339d8===undefined)throw new Error(_0x95d4b2(0x107));this[_0x95d4b2(0x11e)][_0x95d4b2(0x11d)](_0x3339d8);}else{if(_0x50b1ad===undefined&&_0x5b397d!==undefined){const _0x5040b1=this[_0x95d4b2(0x11e)][_0x95d4b2(0xd1)][_0x95d4b2(0xcd)](_0x5ea179['id']);_0x50b1ad=_0x5040b1['id'],this[_0x95d4b2(0x117)][_0x95d4b2(0xc6)](_0x5ea179['id']),this[_0x95d4b2(0x117)][_0x95d4b2(0x126)](_0x5040b1['id'],{..._0x5b397d,'runId':_0x5040b1['id']}),this[_0x95d4b2(0x11e)][_0x95d4b2(0x12a)](_0x5ea179['id'],_0x5040b1['id']);}}if(_0x50b1ad===undefined||_0x5b397d===undefined)return;if(this[_0x95d4b2(0xdc)][_0x95d4b2(0xdd)](_0x50b1ad))return;this[_0x95d4b2(0xdc)][_0x95d4b2(0xd3)](_0x50b1ad);try{const _0x5b5f4d=_0x5b397d[_0x95d4b2(0x10f)]===undefined?undefined:await this[_0x95d4b2(0x11e)][_0x95d4b2(0x119)]?.(_0x5b397d);this[_0x95d4b2(0x11e)][_0x95d4b2(0xc4)](_0x95d4b2(0x133),{'runId':_0x50b1ad,'sessionId':_0x5b397d[_0x95d4b2(0x11f)],'workspaceId':_0x5b397d[_0x95d4b2(0xbf)],'runner':_0x5b397d[_0x95d4b2(0x106)],'input':_0x5b397d[_0x95d4b2(0x108)],..._0x5b397d[_0x95d4b2(0xc9)]===undefined?{}:{'clientMessageId':_0x5b397d[_0x95d4b2(0xc9)]},..._0x5b397d[_0x95d4b2(0xd5)][_0x95d4b2(0x129)]===0x5*-0x602+-0x23ca+0x41d4?{}:{'attachments':_0x5b397d[_0x95d4b2(0xd5)]},'cwd':_0x5b397d[_0x95d4b2(0xe2)],..._0x5b397d[_0x95d4b2(0xf8)]===null?{}:{'externalSessionId':_0x5b397d[_0x95d4b2(0xf8)]},..._0x5b397d[_0x95d4b2(0xcb)]===null?{}:{'model':_0x5b397d[_0x95d4b2(0xcb)]},..._0x5b397d[_0x95d4b2(0x10a)]===null?{}:{'effort':_0x5b397d[_0x95d4b2(0x10a)]},..._0x5b397d[_0x95d4b2(0x105)]===null?{}:{'access':_0x5b397d[_0x95d4b2(0x105)]},'collaborationMode':_0x5b397d[_0x95d4b2(0xc2)],..._0x5b397d[_0x95d4b2(0x125)]===undefined?{}:{'serviceTier':_0x5b397d[_0x95d4b2(0x125)]},'secretEnvironment':_0x5b397d[_0x95d4b2(0xdf)],..._0x5b5f4d===undefined?{}:{'mcpSecretEnvironment':_0x5b5f4d[_0x95d4b2(0x114)]},..._0x5b397d[_0x95d4b2(0x123)]===undefined?{}:{'personalInstructions':_0x5b397d[_0x95d4b2(0x123)]},..._0x5b397d[_0x95d4b2(0x10b)]===undefined?{}:{'marAgentModel':_0x5b397d[_0x95d4b2(0x10b)]},..._0x5b397d[_0x95d4b2(0xd7)]===undefined?{}:{'marAgentModels':_0x5b397d[_0x95d4b2(0xd7)]},..._0x5b397d[_0x95d4b2(0xe5)]===undefined?{}:{'marAgentRuntimeScopeId':_0x5b397d[_0x95d4b2(0xe5)]},'mcpInstallations':[...this[_0x95d4b2(0x11e)][_0x95d4b2(0xc8)](_0x5b397d[_0x95d4b2(0xbf)]),..._0x5b5f4d===undefined?[]:[_0x5b5f4d[_0x95d4b2(0x12c)]]]});}catch(_0x16dc40){this[_0x95d4b2(0x11e)][_0x95d4b2(0xc5)](_0x50b1ad,_0x95d4b2(0xba),{'code':safeErrorCode(_0x16dc40,_0x95d4b2(0xf6))},_0x95d4b2(0xea));}}[_0x31c0f2(0xf9)](_0x108855){const _0xf82cf8=_0x31c0f2;if(this[_0xf82cf8(0x120)][_0xf82cf8(0xdd)](_0x108855))return;const _0x1514cf=this[_0xf82cf8(0x117)][_0xf82cf8(0x10e)](_0x108855);if(_0x1514cf===undefined)return;this[_0xf82cf8(0x120)][_0xf82cf8(0xd3)](_0x108855),void this[_0xf82cf8(0x11e)][_0xf82cf8(0xfe)]?.(_0x1514cf)[_0xf82cf8(0xc7)](()=>undefined);}[_0x31c0f2(0xe1)](_0x1569f0){const _0x6f0120=_0x31c0f2;return this[_0x6f0120(0x120)][_0x6f0120(0xdd)](_0x1569f0);}[_0x31c0f2(0xf0)](_0x1dcc03,_0x5aa0f8){const _0x3922bd=_0x31c0f2;for(const [_0x102a25,_0x44bb1a]of this[_0x3922bd(0x117)])if(_0x44bb1a[_0x3922bd(0x11f)]===_0x1dcc03)this[_0x3922bd(0x117)][_0x3922bd(0x126)](_0x102a25,{..._0x44bb1a,'sessionId':_0x5aa0f8,'externalSessionId':_0x5aa0f8});const _0x35b0b3=this[_0x3922bd(0xbc)][_0x3922bd(0x10e)](_0x1dcc03);_0x35b0b3!==undefined&&(clearTimeout(_0x35b0b3),this[_0x3922bd(0xbc)][_0x3922bd(0xc6)](_0x1dcc03),this[_0x3922bd(0x138)](_0x5aa0f8));}[_0x31c0f2(0xeb)](_0x140cf4){const _0x2e48ea=_0x31c0f2;this[_0x2e48ea(0x117)][_0x2e48ea(0xc6)](_0x140cf4),this[_0x2e48ea(0xdc)][_0x2e48ea(0xc6)](_0x140cf4),this[_0x2e48ea(0x120)][_0x2e48ea(0xc6)](_0x140cf4);}[_0x31c0f2(0xb6)](_0x3023dd){const _0x4ef7c9=_0x31c0f2;for(const [_0x1c39c2,_0x244a55]of this[_0x4ef7c9(0x117)]){if(_0x244a55[_0x4ef7c9(0x11f)]!==_0x3023dd||_0x244a55[_0x4ef7c9(0x10f)]===undefined)continue;const _0x45fd36=this[_0x4ef7c9(0x11e)][_0x4ef7c9(0xd1)][_0x4ef7c9(0xd9)](_0x1c39c2);if(_0x45fd36!==undefined)this[_0x4ef7c9(0xd8)](_0x1c39c2);}}[_0x31c0f2(0xde)](_0x5d0bdd,_0x590f6f){const _0x12f7db=_0x31c0f2;for(const _0x40dc31 of[...this[_0x12f7db(0x11e)][_0x12f7db(0xd1)][_0x12f7db(0x11a)](_0x5d0bdd)[_0x12f7db(0xc3)]]){if(_0x40dc31===_0x590f6f)continue;this[_0x12f7db(0xd8)](_0x40dc31);}}[_0x31c0f2(0x136)](){const _0x3ad53e=_0x31c0f2;this[_0x3ad53e(0x117)][_0x3ad53e(0x136)](),this[_0x3ad53e(0xdc)][_0x3ad53e(0x136)](),this[_0x3ad53e(0x120)][_0x3ad53e(0x136)]();for(const _0x4a8049 of this[_0x3ad53e(0xbc)][_0x3ad53e(0xec)]())clearTimeout(_0x4a8049);this[_0x3ad53e(0xbc)][_0x3ad53e(0x136)]();}[_0x31c0f2(0x134)](_0x1253c7){const _0x5e8542=_0x31c0f2;if(this[_0x5e8542(0x11e)][_0x5e8542(0xd1)][_0x5e8542(0x118)](_0x1253c7)!==undefined){this[_0x5e8542(0x138)](_0x1253c7);return;}const _0x18b88a=this[_0x5e8542(0x11e)][_0x5e8542(0xd1)][_0x5e8542(0x11a)](_0x1253c7),_0x30171b=_0x18b88a[_0x5e8542(0xcf)]?undefined:_0x18b88a[_0x5e8542(0xc3)][0x1ab5+-0x1433+-0x11*0x62];if(_0x30171b===undefined)return;const _0x1c7d72=this[_0x5e8542(0x117)][_0x5e8542(0x10e)](_0x30171b);if(_0x1c7d72===undefined)throw new Error(_0x5e8542(0xe8));const _0x53a10f=this[_0x5e8542(0x11e)][_0x5e8542(0xd1)][_0x5e8542(0xd9)](_0x30171b);if(_0x53a10f===undefined)throw new Error(_0x5e8542(0xe0));const {run:_0x5aaeba,turn:_0x691c15}=this[_0x5e8542(0x11e)][_0x5e8542(0xd1)][_0x5e8542(0xdb)](_0x30171b,withNonImageAttachmentPrompt(_0x53a10f[_0x5e8542(0xd0)],_0x1c7d72[_0x5e8542(0xc0)]));this[_0x5e8542(0x117)][_0x5e8542(0xc6)](_0x30171b),this[_0x5e8542(0x117)][_0x5e8542(0x126)](_0x5aaeba['id'],{..._0x1c7d72,'runId':_0x5aaeba['id']}),this[_0x5e8542(0x11e)][_0x5e8542(0xc1)](_0x5aaeba[_0x5e8542(0xbf)],_0x1253c7),this[_0x5e8542(0x11e)][_0x5e8542(0x11d)](_0x691c15),this[_0x5e8542(0x138)](_0x1253c7);}[_0x31c0f2(0x113)](_0x364423){const _0x58ecf0=_0x31c0f2,_0x33a8f5=this[_0x58ecf0(0x11e)][_0x58ecf0(0xd1)][_0x58ecf0(0xd9)](_0x364423);if(_0x33a8f5===undefined)throw new Error(_0x58ecf0(0xe0));if(!this[_0x58ecf0(0x117)][_0x58ecf0(0xdd)](_0x364423))throw new Error(_0x58ecf0(0xe8));return _0x33a8f5;}[_0x31c0f2(0x124)](_0x350fb7){const _0x3552a7=_0x31c0f2;return this[_0x3552a7(0x11e)][_0x3552a7(0xd1)][_0x3552a7(0x11c)](_0x350fb7[_0x3552a7(0x11f)],_0x350fb7[_0x3552a7(0xc9)])?.['id']===_0x350fb7['id'];}[_0x31c0f2(0x128)](_0x251bd0){const _0x485d90=_0x31c0f2,_0x26fc34=this[_0x485d90(0x11e)][_0x485d90(0xd1)][_0x485d90(0x127)](_0x251bd0['id'])?.[_0x485d90(0xe9)];if(_0x26fc34===_0x485d90(0x101))this[_0x485d90(0x11e)][_0x485d90(0xc5)](_0x251bd0['id'],_0x485d90(0xce),{},_0x485d90(0x101));else{if(_0x26fc34===_0x485d90(0xea))this[_0x485d90(0x11e)][_0x485d90(0xc5)](_0x251bd0['id'],_0x485d90(0x109),{},_0x485d90(0xea));else{if(_0x26fc34===_0x485d90(0x130))this[_0x485d90(0x11e)][_0x485d90(0xc5)](_0x251bd0['id'],_0x485d90(0xce),{},_0x485d90(0x130));}}}}
1
+ import { withNonImageAttachmentPrompt } from '../util/node-operation-parsers.js';
2
+ import { safeErrorCode } from '../util/safe-error.js';
3
+ export class ContinuousRunCoordinator {
4
+ options;
5
+ preparedInputs = new Map();
6
+ environmentLeases = new Map();
7
+ dispatchedExecutions = new Set();
8
+ startedExecutions = new Set();
9
+ scheduledSessions = new Map();
10
+ constructor(options) {
11
+ this.options = options;
12
+ }
13
+ accept(message, environment = {}) {
14
+ const release = this.options.retainEnvironment?.(environment);
15
+ let retained = false;
16
+ try {
17
+ const active = this.options.runtime.activeSessionRun(message.sessionId);
18
+ if (active === undefined) {
19
+ const created = this.options.runtime.createMessageRun(message);
20
+ if (created.created && release !== undefined) {
21
+ this.environmentLeases.set(created.run.id, release);
22
+ retained = true;
23
+ }
24
+ return created;
25
+ }
26
+ const created = this.options.runtime.createQueueItem({
27
+ queueItemId: message.runId,
28
+ sessionId: message.sessionId,
29
+ clientMessageId: message.clientMessageId,
30
+ content: message.content,
31
+ ...(message.initiatedByUserId === undefined
32
+ ? {}
33
+ : { initiatedByUserId: message.initiatedByUserId }),
34
+ ...(message.attachments === undefined ? {} : { attachments: message.attachments })
35
+ });
36
+ if (created.created && release !== undefined) {
37
+ this.environmentLeases.set(created.item.id, release);
38
+ retained = true;
39
+ }
40
+ if (created.created)
41
+ this.options.emitQueue(created.item.workspaceId, created.item.sessionId);
42
+ return { run: active, queueItem: created.item, created: created.created };
43
+ }
44
+ finally {
45
+ if (!retained)
46
+ release?.();
47
+ }
48
+ }
49
+ prepare(submissionId, input) {
50
+ const run = this.options.runtime.getRun(submissionId);
51
+ const item = this.options.runtime.getQueueItem(submissionId);
52
+ if (run === undefined && item === undefined)
53
+ throw new Error('MESSAGE_NOT_FOUND');
54
+ if ((run?.sessionId ?? item?.sessionId) !== input.sessionId)
55
+ throw new Error('MESSAGE_SESSION_MISMATCH');
56
+ const release = this.options.retainEnvironment?.(input.secretEnvironment);
57
+ this.environmentLeases.get(submissionId)?.();
58
+ if (release !== undefined)
59
+ this.environmentLeases.set(submissionId, release);
60
+ this.preparedInputs.set(submissionId, input);
61
+ }
62
+ pending(submissionId) {
63
+ return this.preparedInputs.get(submissionId);
64
+ }
65
+ failPreparation(submissionId, code) {
66
+ this.remove(submissionId);
67
+ this.options.runtime.recordMessagePreparationFailure(submissionId, code);
68
+ const item = this.options.runtime.getQueueItem(submissionId);
69
+ if (item !== undefined) {
70
+ const sessionId = item.sessionId;
71
+ this.deleteQueueItem(item.id);
72
+ const active = this.options.runtime.activeSessionRun(sessionId);
73
+ if (active === undefined || this.options.runtime.currentExecutionId(active.id) !== undefined)
74
+ return;
75
+ if (!this.isMessageRun(active)) {
76
+ this.finishTerminalCommandRun(active);
77
+ return;
78
+ }
79
+ if (this.options.runtime.sessionQueue(sessionId).itemIds.length > 0) {
80
+ this.schedule(sessionId);
81
+ return;
82
+ }
83
+ this.options.emitRun(active.id, 'run.rejected', { code }, 'FAILED');
84
+ return;
85
+ }
86
+ const run = this.options.runtime.getRun(submissionId);
87
+ if (run !== undefined)
88
+ this.options.emitRun(run.id, 'run.rejected', { code }, 'FAILED');
89
+ }
90
+ settle(input) {
91
+ const prepared = this.preparedInputs.get(input.submissionId);
92
+ const item = this.options.runtime.getQueueItem(input.submissionId);
93
+ const sessionId = prepared?.sessionId ?? item?.sessionId;
94
+ if (sessionId === undefined)
95
+ throw new Error('SESSION_NOT_FOUND');
96
+ const active = this.options.runtime.activeSessionRun(sessionId);
97
+ const activeTurn = active && this.options.runtime.conversationTurnForRun(active.id);
98
+ const executionEnded = active !== undefined &&
99
+ this.options.runtime.currentExecutionId(active.id) === undefined &&
100
+ activeTurn !== undefined &&
101
+ (activeTurn.status === 'SUCCEEDED' ||
102
+ activeTurn.status === 'FAILED' ||
103
+ activeTurn.status === 'INTERRUPTED');
104
+ const queueVersionBeforeSettle = this.options.runtime.sessionQueue(sessionId).version;
105
+ const startsAcceptedRun = active !== undefined && input.submissionId === active.id;
106
+ if (startsAcceptedRun || !input.queueBefore.paused || input.intent !== 'QUEUE')
107
+ this.options.runtime.resumeSessionQueue(sessionId);
108
+ if (input.activeRunId !== undefined && active?.id === input.activeRunId) {
109
+ if (executionEnded) {
110
+ if (item !== undefined)
111
+ this.options.runtime.prioritizeQueueItem(item.id);
112
+ this.schedule(sessionId);
113
+ return 'RESTARTING';
114
+ }
115
+ if (this.options.runtime.currentExecutionId(active.id) === undefined &&
116
+ !this.isMessageRun(active)) {
117
+ if (item !== undefined)
118
+ this.options.runtime.prioritizeQueueItem(item.id);
119
+ this.publish(sessionId);
120
+ return 'QUEUED';
121
+ }
122
+ this.replace(input.submissionId, active.id);
123
+ return 'RESTARTING';
124
+ }
125
+ if (startsAcceptedRun) {
126
+ this.schedule(sessionId);
127
+ return 'STARTED';
128
+ }
129
+ if (active === undefined && item !== undefined) {
130
+ if (input.queueBefore.paused && input.intent === 'SEND')
131
+ this.options.runtime.prioritizeQueueItem(item.id);
132
+ this.startIdleQueue(sessionId);
133
+ return 'STARTED';
134
+ }
135
+ if (executionEnded && item !== undefined) {
136
+ if (input.intent === 'SEND')
137
+ this.options.runtime.prioritizeQueueItem(item.id);
138
+ this.schedule(sessionId);
139
+ return 'STARTED';
140
+ }
141
+ if (this.options.runtime.sessionQueue(sessionId).version !== queueVersionBeforeSettle)
142
+ this.publish(sessionId);
143
+ return 'QUEUED';
144
+ }
145
+ executeQueueItem(itemId) {
146
+ const item = this.requirePreparedItem(itemId);
147
+ this.options.runtime.resumeSessionQueue(item.sessionId);
148
+ this.options.runtime.prioritizeQueueItem(item.id);
149
+ const active = this.options.runtime.activeSessionRun(item.sessionId);
150
+ if (active !== undefined) {
151
+ this.replace(item.id, active.id, false);
152
+ return { run: active, delivery: 'RESTARTING' };
153
+ }
154
+ this.startIdleQueue(item.sessionId);
155
+ const started = this.options.runtime.activeSessionRun(item.sessionId);
156
+ if (started === undefined)
157
+ throw new Error('RUN_NOT_FOUND');
158
+ return { run: started, delivery: 'STARTED' };
159
+ }
160
+ updatePreparedInput(itemId, input) {
161
+ const pending = this.preparedInputs.get(itemId);
162
+ if (pending === undefined)
163
+ return;
164
+ this.preparedInputs.set(itemId, { ...pending, input });
165
+ }
166
+ deleteQueueItem(itemId) {
167
+ const item = this.options.runtime.getQueueItem(itemId);
168
+ if (item === undefined)
169
+ throw new Error('QUEUE_ITEM_INVALID');
170
+ this.options.runtime.deleteQueueItem(item.id);
171
+ this.remove(item.id);
172
+ this.options.clearImages(item.id);
173
+ this.options.cleanupAttachments(item.id);
174
+ this.options.emitQueue(item.workspaceId, item.sessionId);
175
+ }
176
+ publishCurrentTurn(runId) {
177
+ const turn = this.options.runtime.conversationTurnForRun(runId);
178
+ if (turn !== undefined)
179
+ this.options.emitConversation(turn);
180
+ }
181
+ publish(sessionId) {
182
+ const session = this.options.runtime.getAgentSession(sessionId);
183
+ if (session === undefined)
184
+ throw new Error('SESSION_NOT_FOUND');
185
+ this.options.emitQueue(session.workspaceId, session.id);
186
+ }
187
+ replace(itemId, activeRunId, prioritize = true) {
188
+ const item = this.requirePreparedItem(itemId);
189
+ const active = this.options.runtime.getRun(activeRunId);
190
+ if (active === undefined || item.sessionId !== active.sessionId)
191
+ throw new Error('QUEUE_ITEM_INVALID');
192
+ if (prioritize)
193
+ this.options.runtime.prioritizeQueueItem(item.id);
194
+ this.publish(item.sessionId);
195
+ const executionId = this.options.runtime.currentExecutionId(active.id);
196
+ if (executionId === undefined)
197
+ throw new Error('RUN_EXECUTION_NOT_FOUND');
198
+ if (!this.startedExecutions.has(executionId)) {
199
+ const current = this.preparedInputs.get(executionId);
200
+ const replacement = this.preparedInputs.get(item.id);
201
+ if (current !== undefined && replacement !== undefined)
202
+ this.preparedInputs.set(item.id, {
203
+ ...replacement,
204
+ input: `${current.input}\n\n${replacement.input}`
205
+ });
206
+ }
207
+ this.options.markInterrupted(executionId);
208
+ this.options.control('run.interrupt', { runId: executionId });
209
+ }
210
+ resume(sessionId) {
211
+ this.options.runtime.resumeSessionQueue(sessionId);
212
+ this.startIdleQueue(sessionId);
213
+ }
214
+ schedule(sessionId, delayMs = 0) {
215
+ if (this.scheduledSessions.has(sessionId))
216
+ return;
217
+ const timer = setTimeout(() => {
218
+ this.scheduledSessions.delete(sessionId);
219
+ if (!this.options.stopped())
220
+ void this.dispatch(sessionId);
221
+ }, delayMs);
222
+ this.scheduledSessions.set(sessionId, timer);
223
+ timer.unref();
224
+ }
225
+ async dispatch(sessionId) {
226
+ const active = this.options.runtime.activeSessionRun(sessionId);
227
+ if (active === undefined)
228
+ return;
229
+ let executionId = this.options.runtime.currentExecutionId(active.id);
230
+ if (executionId !== undefined && this.dispatchedExecutions.has(executionId))
231
+ return;
232
+ let pending = executionId === undefined
233
+ ? this.preparedInputs.get(active.id)
234
+ : this.preparedInputs.get(executionId);
235
+ if (executionId === undefined && pending === undefined) {
236
+ const itemId = this.options.runtime.sessionQueue(sessionId).itemIds[0];
237
+ if (itemId === undefined)
238
+ return;
239
+ pending = this.preparedInputs.get(itemId);
240
+ if (pending === undefined)
241
+ return;
242
+ const item = this.options.runtime.getQueueItem(itemId);
243
+ if (item === undefined)
244
+ return;
245
+ if (this.options.runtime.claimNextQueueItem(sessionId, withNonImageAttachmentPrompt(item.content, pending.attachmentPaths)) === undefined)
246
+ return;
247
+ const execution = this.options.runtime.createExecution(active.id);
248
+ executionId = execution.id;
249
+ this.preparedInputs.delete(itemId);
250
+ this.moveEnvironmentLease(itemId, execution.id);
251
+ this.preparedInputs.set(execution.id, { ...pending, runId: execution.id });
252
+ this.options.migrateAssets(itemId, execution.id);
253
+ this.publish(sessionId);
254
+ const turn = this.options.runtime.conversationTurnForExecution(execution.id);
255
+ if (turn === undefined)
256
+ throw new Error('RUN_TURN_NOT_FOUND');
257
+ this.options.emitConversation(turn);
258
+ }
259
+ else if (executionId === undefined && pending !== undefined) {
260
+ const execution = this.options.runtime.createExecution(active.id);
261
+ executionId = execution.id;
262
+ this.preparedInputs.delete(active.id);
263
+ this.moveEnvironmentLease(active.id, execution.id);
264
+ this.preparedInputs.set(execution.id, { ...pending, runId: execution.id });
265
+ this.options.migrateAssets(active.id, execution.id);
266
+ }
267
+ if (executionId === undefined || pending === undefined)
268
+ return;
269
+ if (this.dispatchedExecutions.has(executionId))
270
+ return;
271
+ this.dispatchedExecutions.add(executionId);
272
+ try {
273
+ const missionMcp = pending.mission === undefined
274
+ ? undefined
275
+ : await this.options.missionMcp?.(pending);
276
+ this.options.control('run.start', {
277
+ runId: executionId,
278
+ sessionId: pending.sessionId,
279
+ workspaceId: pending.workspaceId,
280
+ runner: pending.runner,
281
+ input: pending.input,
282
+ ...(pending.clientMessageId === undefined
283
+ ? {}
284
+ : { clientMessageId: pending.clientMessageId }),
285
+ ...(pending.attachments.length === 0 ? {} : { attachments: pending.attachments }),
286
+ cwd: pending.cwd,
287
+ ...(pending.externalSessionId === null
288
+ ? {}
289
+ : { externalSessionId: pending.externalSessionId }),
290
+ ...(pending.model === null ? {} : { model: pending.model }),
291
+ ...(pending.effort === null ? {} : { effort: pending.effort }),
292
+ ...(pending.access === null ? {} : { access: pending.access }),
293
+ collaborationMode: pending.collaborationMode,
294
+ ...(pending.serviceTier === undefined ? {} : { serviceTier: pending.serviceTier }),
295
+ secretEnvironment: pending.secretEnvironment,
296
+ ...(missionMcp === undefined ? {} : { mcpSecretEnvironment: missionMcp.secrets }),
297
+ ...(pending.personalInstructions === undefined
298
+ ? {}
299
+ : { personalInstructions: pending.personalInstructions }),
300
+ ...(pending.marAgentModel === undefined ? {} : { marAgentModel: pending.marAgentModel }),
301
+ ...(pending.marAgentModels === undefined ? {} : { marAgentModels: pending.marAgentModels }),
302
+ ...(pending.marAgentRuntimeScopeId === undefined
303
+ ? {}
304
+ : { marAgentRuntimeScopeId: pending.marAgentRuntimeScopeId }),
305
+ mcpInstallations: [
306
+ ...this.options.mcps(pending.workspaceId),
307
+ ...(missionMcp === undefined ? [] : [missionMcp.installation])
308
+ ]
309
+ });
310
+ }
311
+ catch (error) {
312
+ this.options.emitRun(executionId, 'run.rejected', { code: safeErrorCode(error, 'RUN_START_FAILED') }, 'FAILED');
313
+ }
314
+ }
315
+ executionStarted(executionId) {
316
+ if (this.startedExecutions.has(executionId))
317
+ return;
318
+ const pending = this.preparedInputs.get(executionId);
319
+ if (pending === undefined)
320
+ return;
321
+ this.startedExecutions.add(executionId);
322
+ void this.options
323
+ .afterExecutionStarted?.(pending)
324
+ .catch(() => undefined);
325
+ }
326
+ hasExecutionStarted(executionId) {
327
+ return this.startedExecutions.has(executionId);
328
+ }
329
+ migrateSession(previousId, nextId) {
330
+ for (const [id, pending] of this.preparedInputs)
331
+ if (pending.sessionId === previousId)
332
+ this.preparedInputs.set(id, { ...pending, sessionId: nextId, externalSessionId: nextId });
333
+ const timer = this.scheduledSessions.get(previousId);
334
+ if (timer !== undefined) {
335
+ clearTimeout(timer);
336
+ this.scheduledSessions.delete(previousId);
337
+ this.schedule(nextId);
338
+ }
339
+ }
340
+ remove(id) {
341
+ this.environmentLeases.get(id)?.();
342
+ this.environmentLeases.delete(id);
343
+ this.preparedInputs.delete(id);
344
+ this.dispatchedExecutions.delete(id);
345
+ this.startedExecutions.delete(id);
346
+ }
347
+ moveEnvironmentLease(previousId, nextId) {
348
+ const lease = this.environmentLeases.get(previousId);
349
+ this.environmentLeases.delete(previousId);
350
+ if (lease !== undefined)
351
+ this.environmentLeases.set(nextId, lease);
352
+ }
353
+ removeMissionQueue(sessionId, preservedMission) {
354
+ for (const [id, pending] of this.preparedInputs) {
355
+ if (pending.sessionId !== sessionId || pending.mission === undefined)
356
+ continue;
357
+ if (pending.mission.id === preservedMission?.id &&
358
+ pending.mission.revision === preservedMission.revision)
359
+ continue;
360
+ const item = this.options.runtime.getQueueItem(id);
361
+ if (item !== undefined)
362
+ this.deleteQueueItem(id);
363
+ }
364
+ }
365
+ removePendingQueue(sessionId, preservedItemId) {
366
+ for (const itemId of [...this.options.runtime.sessionQueue(sessionId).itemIds]) {
367
+ if (itemId === preservedItemId)
368
+ continue;
369
+ this.deleteQueueItem(itemId);
370
+ }
371
+ }
372
+ clear() {
373
+ for (const release of this.environmentLeases.values())
374
+ release();
375
+ this.environmentLeases.clear();
376
+ this.preparedInputs.clear();
377
+ this.dispatchedExecutions.clear();
378
+ this.startedExecutions.clear();
379
+ for (const timer of this.scheduledSessions.values())
380
+ clearTimeout(timer);
381
+ this.scheduledSessions.clear();
382
+ }
383
+ startIdleQueue(sessionId) {
384
+ if (this.options.runtime.activeSessionRun(sessionId) !== undefined) {
385
+ this.schedule(sessionId);
386
+ return;
387
+ }
388
+ const queue = this.options.runtime.sessionQueue(sessionId);
389
+ const itemId = queue.paused ? undefined : queue.itemIds[0];
390
+ if (itemId === undefined)
391
+ return;
392
+ const pending = this.preparedInputs.get(itemId);
393
+ if (pending === undefined)
394
+ throw new Error('QUEUE_INPUT_LOST');
395
+ const item = this.options.runtime.getQueueItem(itemId);
396
+ if (item === undefined)
397
+ throw new Error('QUEUE_ITEM_INVALID');
398
+ const { run, turn } = this.options.runtime.startRunFromQueueItem(itemId, withNonImageAttachmentPrompt(item.content, pending.attachmentPaths));
399
+ this.preparedInputs.delete(itemId);
400
+ this.preparedInputs.set(run.id, { ...pending, runId: run.id });
401
+ this.options.emitQueue(run.workspaceId, sessionId);
402
+ this.options.emitConversation(turn);
403
+ this.schedule(sessionId);
404
+ }
405
+ requirePreparedItem(itemId) {
406
+ const item = this.options.runtime.getQueueItem(itemId);
407
+ if (item === undefined)
408
+ throw new Error('QUEUE_ITEM_INVALID');
409
+ if (!this.preparedInputs.has(itemId))
410
+ throw new Error('QUEUE_INPUT_LOST');
411
+ return item;
412
+ }
413
+ isMessageRun(run) {
414
+ return this.options.runtime.findMessageRun(run.sessionId, run.clientMessageId)?.id === run.id;
415
+ }
416
+ finishTerminalCommandRun(run) {
417
+ const status = this.options.runtime.conversationTurnForRun(run.id)?.status;
418
+ if (status === 'SUCCEEDED')
419
+ this.options.emitRun(run.id, 'run.completed', {}, 'SUCCEEDED');
420
+ else if (status === 'FAILED')
421
+ this.options.emitRun(run.id, 'run.failed', {}, 'FAILED');
422
+ else if (status === 'INTERRUPTED')
423
+ this.options.emitRun(run.id, 'run.completed', {}, 'INTERRUPTED');
424
+ }
425
+ }