@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.
- package/LICENSE +202 -0
- package/NOTICE +4 -0
- package/dist/capabilities.js +110 -2
- package/dist/claude-agent-sdk.js +330 -2
- package/dist/claude-channel.js +44 -2
- package/dist/codex-app-server.js +510 -2
- package/dist/config.js +106 -2
- package/dist/connector/node-connector-options.js +1 -2
- package/dist/connector/node-operation-router.js +22 -2
- package/dist/connector.js +1736 -2
- package/dist/control-outbound-scheduler.js +153 -2
- package/dist/database.js +639 -2
- package/dist/fake-runner.js +129 -2
- package/dist/git-askpass.js +12 -0
- package/dist/git-execution-helper.js +266 -0
- package/dist/health.js +3 -2
- package/dist/main.js +57 -2
- package/dist/mcp-installation-model.js +1 -2
- package/dist/migrations/v004.js +55 -3
- package/dist/migrations/v005.js +13 -3
- package/dist/migrations/v006.js +90 -3
- package/dist/migrations/v007.js +22 -3
- package/dist/migrations/v008.js +18 -3
- package/dist/migrations/v009.js +70 -4
- package/dist/migrations/v010.js +43 -3
- package/dist/migrations/v011.js +20 -3
- package/dist/migrations/v012.js +8 -0
- package/dist/native-jsonl-reader.js +186 -2
- package/dist/native-session-history.js +1143 -2
- package/dist/opencode-runtime.js +80 -2
- package/dist/opencode-server.js +259 -2
- package/dist/operational.js +122 -2
- package/dist/process-tree.js +18 -2
- package/dist/ripgrep-binary.js +31 -2
- package/dist/rotating-log.js +67 -2
- package/dist/runner/abstract-runner.js +260 -2
- package/dist/runner/claude/managed-run-controller.js +355 -2
- package/dist/runner/claude/tool-normalizer.js +120 -2
- package/dist/runner/claude-code-runner.js +303 -2
- package/dist/runner/codex/composer-image-markers.js +8 -2
- package/dist/runner/codex/conversation-parser.js +913 -2
- package/dist/runner/codex/managed-run-controller.js +494 -2
- package/dist/runner/codex/tool-normalizer.js +214 -2
- package/dist/runner/codex-runner.js +585 -2
- package/dist/runner/fake-test-runner.js +47 -2
- package/dist/runner/mar-agent/conversation-normalizer.js +644 -2
- package/dist/runner/mar-agent/executor-stdio-client-transport.js +139 -2
- package/dist/runner/mar-agent/generated-images.js +41 -2
- package/dist/runner/mar-agent/history-projection.js +106 -2
- package/dist/runner/mar-agent/hosted-conversation-runtime.js +446 -2
- package/dist/runner/mar-agent/managed-run-controller.js +785 -2
- package/dist/runner/mar-agent/mcp-client-pool.js +233 -2
- package/dist/runner/mar-agent/runtime-model-factory.js +326 -2
- package/dist/runner/mar-agent-runner.js +458 -2
- package/dist/runner/opencode/conversation-parser.js +221 -2
- package/dist/runner/opencode/managed-run-controller.js +588 -2
- package/dist/runner/opencode/tool-normalizer.js +80 -2
- package/dist/runner/opencode-runner.js +426 -2
- package/dist/runner/runner-registry.js +87 -2
- package/dist/runner-command-engine.js +71 -2
- package/dist/runner-profiles.js +323 -2
- package/dist/runner-usage.js +190 -2
- package/dist/runtime-command-detector.js +73 -2
- package/dist/runtime-model.js +1 -2
- package/dist/runtime-state.js +1509 -2
- package/dist/service/attachment-domain-state.js +7 -2
- package/dist/service/bubblewrap-sandbox-executor.js +543 -2
- package/dist/service/continuous-run-coordinator.js +425 -2
- package/dist/service/conversation-history-service.js +552 -2
- package/dist/service/conversation-hosting-capability-service.js +61 -2
- package/dist/service/conversation-hosting-enablement-service.js +91 -2
- package/dist/service/conversation-hosting-maintenance-service.js +174 -2
- package/dist/service/conversation-segment-service.js +162 -2
- package/dist/service/conversation-template-node-service.js +992 -2
- package/dist/service/external-session-resume-service.js +152 -2
- package/dist/service/fake-managed-run-service.js +60 -2
- package/dist/service/git-execution-service.js +418 -0
- package/dist/service/git-operation-service.js +57 -0
- package/dist/service/hosted-conversation-node-service.js +1982 -2
- package/dist/service/hosted-conversation-store.js +1405 -2
- package/dist/service/managed-runner-session-service.js +35 -2
- package/dist/service/mar-agent-model-transport-test-service.js +88 -2
- package/dist/service/mcp-installation-verifier.js +87 -2
- package/dist/service/mcp-node-operation-service.js +90 -2
- package/dist/service/mission-mcp-server.js +124 -2
- package/dist/service/mission-mcp-stdio.js +40 -2
- package/dist/service/mission-runtime.js +142 -2
- package/dist/service/native-session-projection-service.js +274 -2
- package/dist/service/native-session-watch-service.js +683 -2
- package/dist/service/node-connection-lifecycle-service.js +88 -2
- package/dist/service/node-control-channel.js +85 -2
- package/dist/service/node-control-message-service.js +109 -2
- package/dist/service/node-request-service.js +62 -2
- package/dist/service/node-run-event-bridge.js +88 -2
- package/dist/service/node-terminal-channel.js +202 -2
- package/dist/service/node-upgrade-coordinator.js +137 -2
- package/dist/service/node-workspace-coordinator.js +97 -2
- package/dist/service/recent-run-projection-service.js +99 -2
- package/dist/service/run-attachment-service.js +321 -2
- package/dist/service/run-domain-state.js +4 -2
- package/dist/service/run-event-service.js +246 -2
- package/dist/service/run-ownership-policy.js +22 -2
- package/dist/service/run-workbench-service.js +120 -2
- package/dist/service/runner-channel-message-service.js +20 -2
- package/dist/service/runner-interaction-service.js +243 -2
- package/dist/service/runner-service.js +69 -2
- package/dist/service/runtime-credential-control-service.js +95 -2
- package/dist/service/session-catalog-service.js +404 -2
- package/dist/service/session-command-service.js +125 -2
- package/dist/service/session-context-service.js +128 -2
- package/dist/service/session-domain-state.js +9 -2
- package/dist/service/session-identity-service.js +86 -2
- package/dist/service/session-lifecycle-service.js +248 -2
- package/dist/service/session-message-service.js +270 -2
- package/dist/service/session-presentation-service.js +43 -2
- package/dist/service/session-query-service.js +82 -2
- package/dist/service/session-watch-slot-coordinator.js +21 -2
- package/dist/service/skill-directory-service.js +238 -2
- package/dist/service/skill-install-service.js +434 -2
- package/dist/service/skill-node-operation-service.js +206 -2
- package/dist/service/terminal-relay-state.js +3 -2
- package/dist/service/terminal-service.js +90 -2
- package/dist/service/web-search-error.js +40 -2
- package/dist/service/workbench-event-service.js +21 -2
- package/dist/service/workbench-manifest-service.js +69 -2
- package/dist/service/workspace-change-service.js +290 -2
- package/dist/service/workspace-content-search-service.js +457 -2
- package/dist/service/workspace-domain-state.js +41 -2
- package/dist/service/workspace-file-service.js +150 -2
- package/dist/service/workspace-git-exclude-service.js +119 -2
- package/dist/service/workspace-queue-workbench-service.js +176 -2
- package/dist/service/workspace-service.js +92 -2
- package/dist/service/workspace-session-service.js +154 -2
- package/dist/service/workspace-upload-service.js +262 -2
- package/dist/service/workspace-watch-controller.js +68 -2
- package/dist/service/workspace-watch-service.js +170 -2
- package/dist/service/workspace-watch-snapshot-service.js +218 -2
- package/dist/service/workspace-workbench-service.js +239 -2
- package/dist/service.js +91 -2
- package/dist/storage.js +32 -2
- package/dist/supervisor.js +136 -2
- package/dist/terminal.js +496 -2
- package/dist/util/git-credential-client.js +32 -0
- package/dist/util/node-operation-data.js +9 -2
- package/dist/util/node-operation-parsers.js +382 -2
- package/dist/util/personal-instructions.js +34 -2
- package/dist/util/runner-error.js +70 -2
- package/dist/util/runner-native-session-parsers.js +510 -2
- package/dist/util/safe-error.js +8 -2
- package/dist/util/secret-environment.js +25 -2
- package/dist/workspace.js +1793 -2
- package/package.json +11 -8
- package/vendor/ripgrep/darwin-arm64/rg +0 -0
- package/vendor/ripgrep/darwin-x64/rg +0 -0
- package/vendor/ripgrep/manifest.json +12 -0
- package/README.md +0 -42
- package/dist/event-buffer.js +0 -2
- package/dist/migrations/v001.js +0 -107
- package/dist/migrations/v002.js +0 -2
- package/dist/migrations/v003.js +0 -2
- package/dist/service/mcp-package-installer.js +0 -2
|
@@ -1,2 +1,425 @@
|
|
|
1
|
-
|
|
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
|
+
}
|