@myagentroam/node 0.9.9 → 0.9.10

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 (214) hide show
  1. package/dist/capabilities.js +2 -92
  2. package/dist/claude-agent-sdk.js +2 -330
  3. package/dist/claude-channel.js +2 -44
  4. package/dist/codex-app-server.js +2 -503
  5. package/dist/config.js +2 -56
  6. package/dist/connector/node-connector-options.js +2 -1
  7. package/dist/connector/node-operation-router.js +2 -22
  8. package/dist/connector.js +2 -845
  9. package/dist/control-outbound-scheduler.js +2 -154
  10. package/dist/database.js +2 -1418
  11. package/dist/event-buffer.js +2 -19
  12. package/dist/fake-runner.js +2 -129
  13. package/dist/health.js +2 -3
  14. package/dist/main.js +2 -54
  15. package/dist/migrations/v001.js +3 -144
  16. package/dist/migrations/v002.js +2 -143
  17. package/dist/migrations/v003.js +2 -44
  18. package/dist/migrations/v004.js +34 -30
  19. package/dist/native-jsonl-reader.js +2 -186
  20. package/dist/native-session-history.js +2 -1119
  21. package/dist/opencode-runtime.js +2 -80
  22. package/dist/opencode-server.js +2 -263
  23. package/dist/operational.js +2 -122
  24. package/dist/process-tree.js +2 -18
  25. package/dist/rotating-log.js +2 -67
  26. package/dist/runner/abstract-runner.js +2 -232
  27. package/dist/runner/claude/managed-run-controller.js +2 -345
  28. package/dist/runner/claude-code-runner.js +2 -303
  29. package/dist/runner/codex/composer-image-markers.js +2 -0
  30. package/dist/runner/codex/conversation-parser.js +2 -861
  31. package/dist/runner/codex/managed-run-controller.js +2 -460
  32. package/dist/runner/codex-runner.js +2 -628
  33. package/dist/runner/fake-test-runner.js +2 -47
  34. package/dist/runner/opencode/conversation-parser.js +2 -221
  35. package/dist/runner/opencode/managed-run-controller.js +2 -537
  36. package/dist/runner/opencode-runner.js +2 -448
  37. package/dist/runner/runner-registry.js +2 -90
  38. package/dist/runner-command-engine.js +2 -70
  39. package/dist/runner-profiles.js +2 -215
  40. package/dist/runner-usage.js +2 -190
  41. package/dist/runtime-command-detector.js +2 -73
  42. package/dist/runtime-state.js +2 -982
  43. package/dist/service/attachment-domain-state.js +2 -7
  44. package/dist/service/conversation-history-service.js +2 -457
  45. package/dist/service/conversation-segment-service.js +2 -162
  46. package/dist/service/external-session-resume-service.js +2 -118
  47. package/dist/service/fake-managed-run-service.js +2 -60
  48. package/dist/service/managed-runner-session-service.js +2 -35
  49. package/dist/service/mcp-installation-verifier.js +2 -87
  50. package/dist/service/mcp-node-operation-service.js +2 -90
  51. package/dist/service/mcp-package-installer.js +2 -136
  52. package/dist/service/native-session-projection-service.js +2 -280
  53. package/dist/service/native-session-watch-service.js +2 -383
  54. package/dist/service/node-connection-lifecycle-service.js +2 -84
  55. package/dist/service/node-control-channel.js +2 -85
  56. package/dist/service/node-control-message-service.js +2 -107
  57. package/dist/service/node-request-service.js +2 -52
  58. package/dist/service/node-run-event-bridge.js +2 -83
  59. package/dist/service/node-terminal-channel.js +2 -182
  60. package/dist/service/node-upgrade-coordinator.js +2 -137
  61. package/dist/service/node-workspace-coordinator.js +2 -70
  62. package/dist/service/recent-run-projection-service.js +2 -78
  63. package/dist/service/run-attachment-service.js +2 -194
  64. package/dist/service/run-domain-state.js +2 -4
  65. package/dist/service/run-event-service.js +2 -193
  66. package/dist/service/run-workbench-service.js +2 -104
  67. package/dist/service/runner-channel-message-service.js +2 -20
  68. package/dist/service/runner-interaction-service.js +2 -243
  69. package/dist/service/runner-service.js +2 -71
  70. package/dist/service/session-catalog-service.js +2 -224
  71. package/dist/service/session-command-service.js +2 -76
  72. package/dist/service/session-context-service.js +2 -101
  73. package/dist/service/session-domain-state.js +2 -9
  74. package/dist/service/session-identity-service.js +2 -86
  75. package/dist/service/session-lifecycle-service.js +2 -240
  76. package/dist/service/session-message-service.js +2 -173
  77. package/dist/service/session-presentation-service.js +2 -43
  78. package/dist/service/session-query-service.js +2 -82
  79. package/dist/service/skill-directory-service.js +2 -238
  80. package/dist/service/skill-install-service.js +2 -434
  81. package/dist/service/skill-node-operation-service.js +2 -206
  82. package/dist/service/terminal-relay-state.js +2 -3
  83. package/dist/service/terminal-service.js +2 -52
  84. package/dist/service/workbench-event-service.js +2 -19
  85. package/dist/service/workbench-manifest-service.js +2 -69
  86. package/dist/service/workspace-change-service.js +2 -86
  87. package/dist/service/workspace-content-search-service.js +2 -477
  88. package/dist/service/workspace-domain-state.js +2 -41
  89. package/dist/service/workspace-file-service.js +2 -122
  90. package/dist/service/workspace-git-exclude-service.js +2 -119
  91. package/dist/service/workspace-queue-workbench-service.js +2 -304
  92. package/dist/service/workspace-service.js +2 -69
  93. package/dist/service/workspace-session-service.js +2 -139
  94. package/dist/service/workspace-upload-service.js +2 -262
  95. package/dist/service/workspace-watch-service.js +2 -146
  96. package/dist/service/workspace-workbench-service.js +2 -405
  97. package/dist/service.js +2 -38
  98. package/dist/storage.js +2 -32
  99. package/dist/supervisor.js +2 -136
  100. package/dist/terminal.js +2 -416
  101. package/dist/util/node-operation-parsers.js +2 -382
  102. package/dist/util/personal-instructions.js +2 -31
  103. package/dist/util/runner-error.js +2 -52
  104. package/dist/util/runner-native-session-parsers.js +2 -490
  105. package/dist/util/safe-error.js +2 -5
  106. package/dist/util/secret-environment.js +2 -25
  107. package/dist/workspace.js +2 -1519
  108. package/package.json +3 -3
  109. package/dist/capabilities.d.ts +0 -12
  110. package/dist/claude-agent-sdk.d.ts +0 -92
  111. package/dist/claude-channel.d.ts +0 -28
  112. package/dist/codex-app-server.d.ts +0 -133
  113. package/dist/config.d.ts +0 -18
  114. package/dist/connector/node-connector-options.d.ts +0 -27
  115. package/dist/connector/node-operation-router.d.ts +0 -9
  116. package/dist/connector.d.ts +0 -94
  117. package/dist/control-outbound-scheduler.d.ts +0 -29
  118. package/dist/database.d.ts +0 -305
  119. package/dist/event-buffer.d.ts +0 -9
  120. package/dist/fake-runner.d.ts +0 -42
  121. package/dist/health.d.ts +0 -4
  122. package/dist/main.d.ts +0 -2
  123. package/dist/migrations/v001.d.ts +0 -3
  124. package/dist/migrations/v002.d.ts +0 -4
  125. package/dist/migrations/v003.d.ts +0 -4
  126. package/dist/migrations/v004.d.ts +0 -4
  127. package/dist/native-jsonl-reader.d.ts +0 -35
  128. package/dist/native-session-history.d.ts +0 -126
  129. package/dist/opencode-runtime.d.ts +0 -33
  130. package/dist/opencode-server.d.ts +0 -49
  131. package/dist/operational.d.ts +0 -39
  132. package/dist/process-tree.d.ts +0 -9
  133. package/dist/rotating-log.d.ts +0 -17
  134. package/dist/runner/abstract-runner.d.ts +0 -172
  135. package/dist/runner/claude/managed-run-controller.d.ts +0 -51
  136. package/dist/runner/claude-code-runner.d.ts +0 -72
  137. package/dist/runner/codex/conversation-parser.d.ts +0 -59
  138. package/dist/runner/codex/managed-run-controller.d.ts +0 -90
  139. package/dist/runner/codex-runner.d.ts +0 -103
  140. package/dist/runner/fake-test-runner.d.ts +0 -26
  141. package/dist/runner/opencode/conversation-parser.d.ts +0 -31
  142. package/dist/runner/opencode/managed-run-controller.d.ts +0 -82
  143. package/dist/runner/opencode-runner.d.ts +0 -71
  144. package/dist/runner/runner-registry.d.ts +0 -19
  145. package/dist/runner-command-engine.d.ts +0 -28
  146. package/dist/runner-profiles.d.ts +0 -15
  147. package/dist/runner-usage.d.ts +0 -33
  148. package/dist/runtime-command-detector.d.ts +0 -3
  149. package/dist/runtime-state.d.ts +0 -171
  150. package/dist/service/attachment-domain-state.d.ts +0 -7
  151. package/dist/service/conversation-history-service.d.ts +0 -43
  152. package/dist/service/conversation-segment-service.d.ts +0 -20
  153. package/dist/service/external-session-resume-service.d.ts +0 -34
  154. package/dist/service/fake-managed-run-service.d.ts +0 -28
  155. package/dist/service/managed-runner-session-service.d.ts +0 -12
  156. package/dist/service/mcp-installation-verifier.d.ts +0 -9
  157. package/dist/service/mcp-node-operation-service.d.ts +0 -11
  158. package/dist/service/mcp-package-installer.d.ts +0 -8
  159. package/dist/service/native-session-projection-service.d.ts +0 -52
  160. package/dist/service/native-session-watch-service.d.ts +0 -62
  161. package/dist/service/node-connection-lifecycle-service.d.ts +0 -36
  162. package/dist/service/node-control-channel.d.ts +0 -32
  163. package/dist/service/node-control-message-service.d.ts +0 -27
  164. package/dist/service/node-request-service.d.ts +0 -14
  165. package/dist/service/node-run-event-bridge.d.ts +0 -40
  166. package/dist/service/node-terminal-channel.d.ts +0 -29
  167. package/dist/service/node-upgrade-coordinator.d.ts +0 -29
  168. package/dist/service/node-workspace-coordinator.d.ts +0 -29
  169. package/dist/service/recent-run-projection-service.d.ts +0 -14
  170. package/dist/service/run-attachment-service.d.ts +0 -38
  171. package/dist/service/run-domain-state.d.ts +0 -4
  172. package/dist/service/run-event-service.d.ts +0 -33
  173. package/dist/service/run-workbench-service.d.ts +0 -25
  174. package/dist/service/runner-channel-message-service.d.ts +0 -13
  175. package/dist/service/runner-interaction-service.d.ts +0 -39
  176. package/dist/service/runner-service.d.ts +0 -46
  177. package/dist/service/session-catalog-service.d.ts +0 -45
  178. package/dist/service/session-command-service.d.ts +0 -24
  179. package/dist/service/session-context-service.d.ts +0 -35
  180. package/dist/service/session-domain-state.d.ts +0 -9
  181. package/dist/service/session-identity-service.d.ts +0 -24
  182. package/dist/service/session-lifecycle-service.d.ts +0 -31
  183. package/dist/service/session-message-service.d.ts +0 -33
  184. package/dist/service/session-presentation-service.d.ts +0 -34
  185. package/dist/service/session-query-service.d.ts +0 -35
  186. package/dist/service/skill-directory-service.d.ts +0 -20
  187. package/dist/service/skill-install-service.d.ts +0 -21
  188. package/dist/service/skill-node-operation-service.d.ts +0 -44
  189. package/dist/service/terminal-relay-state.d.ts +0 -6
  190. package/dist/service/terminal-service.d.ts +0 -12
  191. package/dist/service/workbench-event-service.d.ts +0 -9
  192. package/dist/service/workbench-manifest-service.d.ts +0 -90
  193. package/dist/service/workspace-change-service.d.ts +0 -9
  194. package/dist/service/workspace-content-search-service.d.ts +0 -14
  195. package/dist/service/workspace-domain-state.d.ts +0 -79
  196. package/dist/service/workspace-file-service.d.ts +0 -18
  197. package/dist/service/workspace-git-exclude-service.d.ts +0 -4
  198. package/dist/service/workspace-queue-workbench-service.d.ts +0 -86
  199. package/dist/service/workspace-service.d.ts +0 -15
  200. package/dist/service/workspace-session-service.d.ts +0 -23
  201. package/dist/service/workspace-upload-service.d.ts +0 -39
  202. package/dist/service/workspace-watch-service.d.ts +0 -23
  203. package/dist/service/workspace-workbench-service.d.ts +0 -58
  204. package/dist/service.d.ts +0 -4
  205. package/dist/storage.d.ts +0 -2
  206. package/dist/supervisor.d.ts +0 -1
  207. package/dist/terminal.d.ts +0 -133
  208. package/dist/util/node-operation-parsers.d.ts +0 -92
  209. package/dist/util/personal-instructions.d.ts +0 -2
  210. package/dist/util/runner-error.d.ts +0 -6
  211. package/dist/util/runner-native-session-parsers.d.ts +0 -74
  212. package/dist/util/safe-error.d.ts +0 -2
  213. package/dist/util/secret-environment.d.ts +0 -1
  214. package/dist/workspace.d.ts +0 -217
@@ -1,107 +1,2 @@
1
- import { nodeEnvelopeSchema } from '@myagentroam/protocol';
2
- /** Owns parsing and dispatch of the closed Node control-message protocol. */
3
- export class NodeControlMessageService {
4
- options;
5
- constructor(options) {
6
- this.options = options;
7
- }
8
- handle(raw) {
9
- let envelope;
10
- try {
11
- envelope = nodeEnvelopeSchema.parse(JSON.parse(raw));
12
- }
13
- catch {
14
- this.options.close(4002, 'MESSAGE_INVALID');
15
- return;
16
- }
17
- this.dispatch(envelope);
18
- }
19
- dispatch(envelope) {
20
- if (envelope.type === 'registered') {
21
- this.register(envelope);
22
- return;
23
- }
24
- if (envelope.type === 'authenticated') {
25
- this.options.connected();
26
- return;
27
- }
28
- if (envelope.type === 'workspace.inspect') {
29
- void this.options.inspectWorkspace(envelope);
30
- return;
31
- }
32
- if (envelope.type === 'node.request') {
33
- void this.options.handleNodeRequest(envelope);
34
- return;
35
- }
36
- if (envelope.type === 'ack')
37
- return;
38
- if (envelope.type === 'runs.reconcile') {
39
- this.options.reconcileRuns(envelope);
40
- return;
41
- }
42
- if (envelope.type === 'run.approval.decision') {
43
- this.decideApproval(envelope);
44
- return;
45
- }
46
- if (envelope.type === 'run.start') {
47
- this.options.send('ack', { type: envelope.type }, envelope.id);
48
- try {
49
- this.options.runners.startManagedRun(envelope);
50
- }
51
- catch (error) {
52
- // A delayed internal start may arrive after the terminal projection was removed.
53
- if (!(error instanceof Error) || error.message !== 'RUN_TERMINAL')
54
- throw error;
55
- }
56
- return;
57
- }
58
- if (envelope.type === 'session.channel.message') {
59
- this.options.deliverSessionChannelMessage(envelope);
60
- return;
61
- }
62
- if (envelope.type === 'run.cancel' || envelope.type === 'run.interrupt') {
63
- this.cancelRun(envelope);
64
- return;
65
- }
66
- if (envelope.type === 'session.resume' || envelope.type === 'lease.reconcile') {
67
- this.options.send('ack', { type: envelope.type }, envelope.id);
68
- return;
69
- }
70
- if (envelope.type !== 'error')
71
- this.options.send('error', { code: 'MESSAGE_TYPE_UNKNOWN' }, envelope.id);
72
- }
73
- register(envelope) {
74
- const payload = envelope.payload;
75
- if (typeof payload.nodeId !== 'string' ||
76
- typeof payload.credential !== 'string' ||
77
- this.options.config() === undefined) {
78
- this.options.close(4002, 'MESSAGE_INVALID');
79
- return;
80
- }
81
- void this.options.register(payload.nodeId, payload.credential);
82
- }
83
- decideApproval(envelope) {
84
- const payload = envelope.payload;
85
- if (typeof payload.runId !== 'string' ||
86
- typeof payload.approvalId !== 'string' ||
87
- (payload.decision !== 'APPROVED' && payload.decision !== 'REJECTED')) {
88
- this.options.send('error', { code: 'MESSAGE_INVALID' }, envelope.id);
89
- return;
90
- }
91
- this.options.runners.decideApproval({
92
- runId: payload.runId,
93
- approvalId: payload.approvalId,
94
- decision: payload.decision
95
- });
96
- this.options.send('ack', { type: envelope.type }, envelope.id);
97
- }
98
- cancelRun(envelope) {
99
- const payload = envelope.payload;
100
- if (typeof payload.runId === 'string') {
101
- const handled = this.options.runners.cancelManagedRun(payload.runId, envelope.type === 'run.cancel' ? 'CANCEL' : 'INTERRUPT');
102
- if (!handled)
103
- this.options.completeUncontrolledCancellation(payload.runId);
104
- }
105
- this.options.send('ack', { type: envelope.type }, envelope.id);
106
- }
107
- }
1
+ /* mar-release-protected */
2
+ const _0x206f3e=_0x3064;(function(_0x543b58,_0xbc16d6){const _0x505bfe=_0x3064,_0x2b0e2f=_0x543b58();while(!![]){try{const _0x1367e1=-parseInt(_0x505bfe(0x16f))/(0xde+-0x163a+0x155d)+parseInt(_0x505bfe(0x196))/(0x29*-0x2d+-0x1ae8+0x221f*0x1)+-parseInt(_0x505bfe(0x172))/(-0x22a5+0xc94+-0x9*-0x274)+-parseInt(_0x505bfe(0x19a))/(-0x1823+0x2029+-0xcd*0xa)*(-parseInt(_0x505bfe(0x189))/(-0x1438+0xbe7+0x856*0x1))+-parseInt(_0x505bfe(0x184))/(-0x6*-0x11+0x98f*-0x2+-0x1*-0x12be)+parseInt(_0x505bfe(0x191))/(0xe08+0x11*0x6b+-0x151c)+parseInt(_0x505bfe(0x1a4))/(0x2c3*0x3+0x1157*-0x2+0x1a6d);if(_0x1367e1===_0xbc16d6)break;else _0x2b0e2f['push'](_0x2b0e2f['shift']());}catch(_0x47b758){_0x2b0e2f['push'](_0x2b0e2f['shift']());}}}(_0x5b51,0x2eb5d+-0x153b*0x89+0x123ed6));function _0x5b51(){const _0x3a8f91=['yxbWCM92ywXjza','yxv0AgvUDgLJyxrLza','CNvUCY5YzwnVBMnPBgu','otG1odi4swrmr0jx','CNvUlNn0yxj0','CNvUswq','mteWnJuYowfoAK9tAq','su5urvjsvvbu','uKvkrunuruq','C3rYAw5N','Aw5ZCgvJDfDVCMTZCgfJzq','AgfUzgXL','y3jLzgvUDgLHBa','BwvZC2fNzq','tuvtu0fhrv9jtLzbteLe','qvbquK9wruq','y2XVC2u','D29YA3nWywnLlMLUC3bLy3q','BM9KzuLK','q0foq0vm','AgfUzgXLtM9KzvjLCxvLC3q','y29UBMvJDgvK','CNvUBMvYCW','CgfYC2u','nJK3ntC3nhHlENzdwG','y2fUy2vStwfUywDLzfj1BG','CMvJB25JAwXLuNvUCW','CNvUlMnHBMnLBa','zgvJAxnPB24','mJvVz3DNrwi','BgvHC2uUCMvJB25JAwXL','CMvNAxn0zxi','zgvSAxzLCLnLC3nPB25dAgfUBMvStwvZC2fNzq','tuvtu0fhrv9uwvbfx1vos05pv04','y2fUy2vSuNvU','CNvUlMfWChjVDMfSlMrLy2LZAw9U','B3b0Aw9UCW','mtm1otyXrKPcB1Hl','CMvNAxn0zxjLza','Cgf5Bg9Hza','CNvUlMLUDgvYCNvWDa','ywnR','mJm2mZGXnKnptKXfqW','zxjYB3i','C2vZC2LVBI5Yzxn1Bwu','y29TCgXLDgvvBMnVBNrYB2XSzwrdyw5JzwXSyxrPB24','nZi3mtmYwez6rhzj','DhLWzq','C2vZC2LVBI5JAgfUBMvSlM1LC3nHz2u','y29UzMLN','zgvJAwrLqxbWCM92ywW','C2vUza','C3rHCNrnyw5Hz2vKuNvU','uLvox1rfuK1jtKfm','zgLZCgf0y2G','BM9Kzs5Yzxf1zxn0','odm5nJe0nfP0Den0sW'];_0x5b51=function(){return _0x3a8f91;};return _0x5b51();}import{nodeEnvelopeSchema}from'@myagentroam/protocol';function _0x3064(_0x43d474,_0x30bfc2){_0x43d474=_0x43d474-(0x1*0x1309+-0x1ecd+0xd30);const _0x148ee3=_0x5b51();let _0x166110=_0x148ee3[_0x43d474];if(_0x3064['rAvKWz']===undefined){var _0x2c0bae=function(_0xed9965){const _0x4aa9ba='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x444231='',_0x14224d='';for(let _0x5d4179=0x1c*0x162+-0xb*0x9b+-0x200f,_0x59d59b,_0x567c9d,_0x3f0a74=0x1066*-0x2+-0x1345*0x1+0x3411;_0x567c9d=_0xed9965['charAt'](_0x3f0a74++);~_0x567c9d&&(_0x59d59b=_0x5d4179%(0x1be7+0x1*-0x213f+0x55c)?_0x59d59b*(-0x1d*-0xc6+0xbf6*-0x2+0x1*0x1be)+_0x567c9d:_0x567c9d,_0x5d4179++%(-0x5*-0x19b+-0x1df9*0x1+-0x752*-0x3))?_0x444231+=String['fromCharCode'](-0xb27*0x1+-0x1b92+0x27b8&_0x59d59b>>(-(-0x25ee+0x2b*0x49+0x88f*0x3)*_0x5d4179&0x1*0x313+0x1*0x1561+-0x186e)):0x18b*0xd+-0x185d+0x2*0x227){_0x567c9d=_0x4aa9ba['indexOf'](_0x567c9d);}for(let _0x22f314=-0x158+-0xd*-0x6d+-0x431,_0x2ce511=_0x444231['length'];_0x22f314<_0x2ce511;_0x22f314++){_0x14224d+='%'+('00'+_0x444231['charCodeAt'](_0x22f314)['toString'](-0x4ce*0x1+-0x1dfd+-0x1*-0x22db))['slice'](-(0x1*-0x749+0x1*0x372+0x3d9));}return decodeURIComponent(_0x14224d);};_0x3064['cUTWPV']=_0x2c0bae,_0x3064['Kcxwvw']={},_0x3064['rAvKWz']=!![];}const _0x214b07=_0x148ee3[-0x5*-0x701+0xfdf+-0x2*0x1972];_0x3064['AJTuEW']!==_0x214b07&&(_0x3064['Kcxwvw']={},_0x3064['AJTuEW']=_0x214b07);const _0x26e4ea=_0x3064['Kcxwvw'][_0x43d474];return _0x26e4ea===undefined?(_0x166110=_0x3064['cUTWPV'](_0x166110),_0x3064['Kcxwvw'][_0x43d474]=_0x166110):_0x166110=_0x26e4ea,_0x166110;}export class NodeControlMessageService{[_0x206f3e(0x190)];constructor(_0x5f01d4){const _0x472f0c=_0x206f3e;this[_0x472f0c(0x190)]=_0x5f01d4;}[_0x206f3e(0x177)](_0x400beb){const _0x579215=_0x206f3e;let _0x35ee7c;try{_0x35ee7c=nodeEnvelopeSchema[_0x579215(0x183)](JSON[_0x579215(0x183)](_0x400beb));}catch{this[_0x579215(0x190)][_0x579215(0x17c)](0x1f98+-0xb23+-0x4d3,_0x579215(0x17a));return;}this[_0x579215(0x1a2)](_0x35ee7c);}[_0x206f3e(0x1a2)](_0x477e50){const _0x606489=_0x206f3e;if(_0x477e50[_0x606489(0x19b)]===_0x606489(0x192)){this[_0x606489(0x18b)](_0x477e50);return;}if(_0x477e50[_0x606489(0x19b)]===_0x606489(0x16d)){this[_0x606489(0x190)][_0x606489(0x181)]();return;}if(_0x477e50[_0x606489(0x19b)]===_0x606489(0x17d)){void this[_0x606489(0x190)][_0x606489(0x176)](_0x477e50);return;}if(_0x477e50[_0x606489(0x19b)]===_0x606489(0x1a3)){void this[_0x606489(0x190)][_0x606489(0x180)](_0x477e50);return;}if(_0x477e50[_0x606489(0x19b)]===_0x606489(0x195))return;if(_0x477e50[_0x606489(0x19b)]===_0x606489(0x16e)){this[_0x606489(0x190)][_0x606489(0x186)](_0x477e50);return;}if(_0x477e50[_0x606489(0x19b)]===_0x606489(0x18f)){this[_0x606489(0x19e)](_0x477e50);return;}if(_0x477e50[_0x606489(0x19b)]===_0x606489(0x170)){this[_0x606489(0x190)][_0x606489(0x19f)](_0x606489(0x195),{'type':_0x477e50[_0x606489(0x19b)]},_0x477e50['id']);try{this[_0x606489(0x190)][_0x606489(0x182)][_0x606489(0x1a0)](_0x477e50);}catch(_0x4b1089){if(!(_0x4b1089 instanceof Error)||_0x4b1089[_0x606489(0x179)]!==_0x606489(0x1a1))throw _0x4b1089;}return;}if(_0x477e50[_0x606489(0x19b)]===_0x606489(0x19c)){this[_0x606489(0x190)][_0x606489(0x18c)](_0x477e50);return;}if(_0x477e50[_0x606489(0x19b)]===_0x606489(0x187)||_0x477e50[_0x606489(0x19b)]===_0x606489(0x194)){this[_0x606489(0x18e)](_0x477e50);return;}if(_0x477e50[_0x606489(0x19b)]===_0x606489(0x198)||_0x477e50[_0x606489(0x19b)]===_0x606489(0x18a)){this[_0x606489(0x190)][_0x606489(0x19f)](_0x606489(0x195),{'type':_0x477e50[_0x606489(0x19b)]},_0x477e50['id']);return;}if(_0x477e50[_0x606489(0x19b)]!==_0x606489(0x197))this[_0x606489(0x190)][_0x606489(0x19f)](_0x606489(0x197),{'code':_0x606489(0x18d)},_0x477e50['id']);}[_0x206f3e(0x18b)](_0x127da5){const _0x242405=_0x206f3e,_0x56eccf=_0x127da5[_0x242405(0x193)];if(typeof _0x56eccf[_0x242405(0x17e)]!==_0x242405(0x175)||typeof _0x56eccf[_0x242405(0x178)]!==_0x242405(0x175)||this[_0x242405(0x190)][_0x242405(0x19d)]()===undefined){this[_0x242405(0x190)][_0x242405(0x17c)](-0x24b*-0x11+0x1cbc+-0x3415*0x1,_0x242405(0x17a));return;}void this[_0x242405(0x190)][_0x242405(0x18b)](_0x56eccf[_0x242405(0x17e)],_0x56eccf[_0x242405(0x178)]);}[_0x206f3e(0x19e)](_0x1de0b1){const _0x5cf097=_0x206f3e,_0x505364=_0x1de0b1[_0x5cf097(0x193)];if(typeof _0x505364[_0x5cf097(0x171)]!==_0x5cf097(0x175)||typeof _0x505364[_0x5cf097(0x16c)]!==_0x5cf097(0x175)||_0x505364[_0x5cf097(0x188)]!==_0x5cf097(0x17b)&&_0x505364[_0x5cf097(0x188)]!==_0x5cf097(0x174)){this[_0x5cf097(0x190)][_0x5cf097(0x19f)](_0x5cf097(0x197),{'code':_0x5cf097(0x17a)},_0x1de0b1['id']);return;}this[_0x5cf097(0x190)][_0x5cf097(0x182)][_0x5cf097(0x19e)]({'runId':_0x505364[_0x5cf097(0x171)],'approvalId':_0x505364[_0x5cf097(0x16c)],'decision':_0x505364[_0x5cf097(0x188)]}),this[_0x5cf097(0x190)][_0x5cf097(0x19f)](_0x5cf097(0x195),{'type':_0x1de0b1[_0x5cf097(0x19b)]},_0x1de0b1['id']);}[_0x206f3e(0x18e)](_0x4fb1de){const _0x316f70=_0x206f3e,_0x5003a7=_0x4fb1de[_0x316f70(0x193)];if(typeof _0x5003a7[_0x316f70(0x171)]===_0x316f70(0x175)){const _0x3987c8=this[_0x316f70(0x190)][_0x316f70(0x182)][_0x316f70(0x185)](_0x5003a7[_0x316f70(0x171)],_0x4fb1de[_0x316f70(0x19b)]===_0x316f70(0x187)?_0x316f70(0x17f):_0x316f70(0x173));if(!_0x3987c8)this[_0x316f70(0x190)][_0x316f70(0x199)](_0x5003a7[_0x316f70(0x171)]);}this[_0x316f70(0x190)][_0x316f70(0x19f)](_0x316f70(0x195),{'type':_0x4fb1de[_0x316f70(0x19b)]},_0x4fb1de['id']);}}
@@ -1,52 +1,2 @@
1
- import { nodeLog } from '../operational.js';
2
- import { validUserAuthorization } from '../runner/codex/conversation-parser.js';
3
- import { safeErrorCode } from '../util/safe-error.js';
4
- /** Validates and executes the closed Admin-facing Node operation envelope. */
5
- export class NodeRequestService {
6
- options;
7
- constructor(options) {
8
- this.options = options;
9
- }
10
- async handle(envelope) {
11
- const payload = envelope.payload;
12
- if (typeof payload.operation !== 'string' || !this.options.databaseAvailable()) {
13
- this.options.send('node.response', { error: 'MESSAGE_INVALID' }, envelope.id);
14
- return;
15
- }
16
- if (!validUserAuthorization(payload.userAuthorization, envelope, payload.operation, this.options.nodeId())) {
17
- this.options.send('node.response', { error: 'USER_AUTHORIZATION_REQUIRED' }, envelope.id);
18
- return;
19
- }
20
- const startedAt = performance.now();
21
- try {
22
- const data = payload.data !== null && typeof payload.data === 'object'
23
- ? {
24
- ...payload.data,
25
- __workspaceWatchSessionHash: payload.userAuthorization
26
- .sessionHash,
27
- __requestUserId: payload.userAuthorization.userId
28
- }
29
- : payload.data;
30
- const result = await this.options.execute(payload.operation, data);
31
- this.options.send('node.response', { result }, envelope.id);
32
- const durationMs = Math.round(performance.now() - startedAt);
33
- if (durationMs >= 250)
34
- nodeLog('node.operation.completed', {
35
- nodeId: this.options.nodeId(),
36
- operation: payload.operation,
37
- requestId: envelope.id,
38
- durationMs
39
- });
40
- }
41
- catch (error) {
42
- nodeLog('node.operation.failed', {
43
- nodeId: this.options.nodeId(),
44
- operation: payload.operation,
45
- requestId: envelope.id,
46
- durationMs: Math.round(performance.now() - startedAt),
47
- error: error instanceof Error ? error.message : 'INTERNAL_ERROR'
48
- });
49
- this.options.send('node.response', { error: safeErrorCode(error, 'INTERNAL_ERROR') }, envelope.id);
50
- }
51
- }
52
- }
1
+ /* mar-release-protected */
2
+ const _0x1a79db=_0x10fa;(function(_0x1e4d7a,_0x2539c9){const _0x4e0a01=_0x10fa,_0x4e2d36=_0x1e4d7a();while(!![]){try{const _0x275f1e=parseInt(_0x4e0a01(0x1b7))/(-0x25fd+0xf*0x134+-0xde*-0x17)*(parseInt(_0x4e0a01(0x1a4))/(0x694+-0x1905+0x1*0x1273))+parseInt(_0x4e0a01(0x1b4))/(-0x2*0xa6f+-0x15f9*0x1+0x2ada*0x1)*(parseInt(_0x4e0a01(0x1af))/(-0x8*-0x8f+-0x1535+0x1*0x10c1))+parseInt(_0x4e0a01(0x1bb))/(0x1869*-0x1+-0x3*0xc3d+0x3d25)+parseInt(_0x4e0a01(0x1c1))/(0x9f8+-0x10c*-0x24+-0x2fa2)+parseInt(_0x4e0a01(0x1aa))/(-0x62e+0x1a16+0x2d7*-0x7)*(-parseInt(_0x4e0a01(0x1ba))/(0x36*-0x1+-0xce2+0xd20))+parseInt(_0x4e0a01(0x1b0))/(-0x1*0x12d5+0x3eb*0x1+0xef3)+-parseInt(_0x4e0a01(0x1b2))/(0x1124*-0x1+0xb35+-0x5f9*-0x1);if(_0x275f1e===_0x2539c9)break;else _0x4e2d36['push'](_0x4e2d36['shift']());}catch(_0x50a4d2){_0x4e2d36['push'](_0x4e2d36['shift']());}}}(_0x5bd3,-0xbf72+-0x19ed71+0x27d5c4*0x1));import{nodeLog}from'../operational.js';import{validUserAuthorization}from'../runner/codex/conversation-parser.js';import{safeErrorCode}from'../util/safe-error.js';function _0x10fa(_0x34164f,_0x4461e7){_0x34164f=_0x34164f-(-0x88*0x16+-0x1*0xc77+0x19cb);const _0xf94c01=_0x5bd3();let _0x4bc37c=_0xf94c01[_0x34164f];if(_0x10fa['MdmQKm']===undefined){var _0x5d165d=function(_0x45b77d){const _0x4f433='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x32883a='',_0x3aeffb='';for(let _0x42874a=0x28d*-0x3+-0x600*-0x4+-0x1059,_0xe31f25,_0x37b828,_0x112718=0x11ea+-0x2148+-0xe*-0x119;_0x37b828=_0x45b77d['charAt'](_0x112718++);~_0x37b828&&(_0xe31f25=_0x42874a%(0x1*-0x12ff+0x9e6*-0x2+0x26cf*0x1)?_0xe31f25*(0x13*0x7a+0x2*-0x10dc+-0x84e*-0x3)+_0x37b828:_0x37b828,_0x42874a++%(-0x69*0x19+0xf7b+-0x536))?_0x32883a+=String['fromCharCode'](0x6*-0xcb+0x9be+-0x3fd&_0xe31f25>>(-(-0x105f+-0x1e71*-0x1+-0xe10)*_0x42874a&0x1*-0x1c4e+-0x1873+0x1*0x34c7)):-0x793+-0x1*-0x1ee9+0xbab*-0x2){_0x37b828=_0x4f433['indexOf'](_0x37b828);}for(let _0x156fd7=0x1b7+0x3*0x703+0x1*-0x16c0,_0x1c34a4=_0x32883a['length'];_0x156fd7<_0x1c34a4;_0x156fd7++){_0x3aeffb+='%'+('00'+_0x32883a['charCodeAt'](_0x156fd7)['toString'](0x3c4*0x8+-0x1f47+-0x137*-0x1))['slice'](-(0x3c*0x74+0x31+-0x1b5f));}return decodeURIComponent(_0x3aeffb);};_0x10fa['ySBaXM']=_0x5d165d,_0x10fa['rbiRQn']={},_0x10fa['MdmQKm']=!![];}const _0x5451fe=_0xf94c01[-0xb*-0xc1+-0x2608+-0x17*-0x14b];_0x10fa['vcERQm']!==_0x5451fe&&(_0x10fa['rbiRQn']={},_0x10fa['vcERQm']=_0x5451fe);const _0x153154=_0x10fa['rbiRQn'][_0x34164f];return _0x153154===undefined?(_0x4bc37c=_0x10fa['ySBaXM'](_0x4bc37c),_0x10fa['rbiRQn'][_0x34164f]=_0x4bc37c):_0x4bc37c=_0x153154,_0x4bc37c;}export class NodeRequestService{[_0x1a79db(0x1a5)];constructor(_0x1d6f47){const _0x1dc98f=_0x1a79db;this[_0x1dc98f(0x1a5)]=_0x1d6f47;}async[_0x1a79db(0x1a6)](_0x48ef51){const _0x2b2b61=_0x1a79db,_0x348f4e=_0x48ef51[_0x2b2b61(0x1b1)];if(typeof _0x348f4e[_0x2b2b61(0x1b8)]!==_0x2b2b61(0x1b9)||!this[_0x2b2b61(0x1a5)][_0x2b2b61(0x1b3)]()){this[_0x2b2b61(0x1a5)][_0x2b2b61(0x1c2)](_0x2b2b61(0x1be),{'error':_0x2b2b61(0x1a8)},_0x48ef51['id']);return;}if(!validUserAuthorization(_0x348f4e[_0x2b2b61(0x1a7)],_0x48ef51,_0x348f4e[_0x2b2b61(0x1b8)],this[_0x2b2b61(0x1a5)][_0x2b2b61(0x1b6)]())){this[_0x2b2b61(0x1a5)][_0x2b2b61(0x1c2)](_0x2b2b61(0x1be),{'error':_0x2b2b61(0x1ab)},_0x48ef51['id']);return;}const _0x1c1fc3=performance[_0x2b2b61(0x1bf)]();try{const _0x188132=_0x348f4e[_0x2b2b61(0x1b5)]!==null&&typeof _0x348f4e[_0x2b2b61(0x1b5)]===_0x2b2b61(0x1ae)?{..._0x348f4e[_0x2b2b61(0x1b5)],'__workspaceWatchSessionHash':_0x348f4e[_0x2b2b61(0x1a7)][_0x2b2b61(0x1bd)],'__requestUserId':_0x348f4e[_0x2b2b61(0x1a7)][_0x2b2b61(0x1ac)]}:_0x348f4e[_0x2b2b61(0x1b5)],_0x1786b4=await this[_0x2b2b61(0x1a5)][_0x2b2b61(0x1bc)](_0x348f4e[_0x2b2b61(0x1b8)],_0x188132);this[_0x2b2b61(0x1a5)][_0x2b2b61(0x1c2)](_0x2b2b61(0x1be),{'result':_0x1786b4},_0x48ef51['id']);const _0x39e1e1=Math[_0x2b2b61(0x1c3)](performance[_0x2b2b61(0x1bf)]()-_0x1c1fc3);if(_0x39e1e1>=0x1b08+0x2629+-0x4037*0x1)nodeLog(_0x2b2b61(0x1c0),{'nodeId':this[_0x2b2b61(0x1a5)][_0x2b2b61(0x1b6)](),'operation':_0x348f4e[_0x2b2b61(0x1b8)],'requestId':_0x48ef51['id'],'durationMs':_0x39e1e1});}catch(_0x36a747){nodeLog(_0x2b2b61(0x1a9),{'nodeId':this[_0x2b2b61(0x1a5)][_0x2b2b61(0x1b6)](),'operation':_0x348f4e[_0x2b2b61(0x1b8)],'requestId':_0x48ef51['id'],'durationMs':Math[_0x2b2b61(0x1c3)](performance[_0x2b2b61(0x1bf)]()-_0x1c1fc3),'error':_0x36a747 instanceof Error?_0x36a747[_0x2b2b61(0x1c4)]:_0x2b2b61(0x1ad)}),this[_0x2b2b61(0x1a5)][_0x2b2b61(0x1c2)](_0x2b2b61(0x1be),{'error':safeErrorCode(_0x36a747,_0x2b2b61(0x1ad))},_0x48ef51['id']);}}}function _0x5bd3(){const _0x59cb91=['zgf0yq','BM9KzuLK','nti0mZK4DNDhuuzX','B3bLCMf0Aw9U','C3rYAw5N','ndu4mdK2quDmA3ng','ode3mZq0nxPpvujoDG','zxHLy3v0zq','C2vZC2LVBKHHC2G','BM9Kzs5YzxnWB25Zzq','BM93','BM9Kzs5VCgvYyxrPB24Uy29TCgXLDgvK','mJm5oduYnfvftufvzG','C2vUza','CM91BMq','BwvZC2fNzq','nMLWvxnqyG','B3b0Aw9UCW','AgfUzgXL','DxnLCKf1DgHVCML6yxrPB24','tuvtu0fhrv9jtLzbteLe','BM9Kzs5VCgvYyxrPB24UzMfPBgvK','mtGYqvnHsgPt','vvnfuL9bvvrit1jjwKfusu9ox1jfuvvjuKve','DxnLCKLK','su5urvjoquXFrvjst1i','B2jQzwn0','nZuYqun1vxvd','nZm4ntyWn2fvCgPxCW','Cgf5Bg9Hza','mJi3ndyWmZbdtgLqwvq','zgf0ywjHC2vbDMfPBgfIBgu','mZe1m2POALvdBq'];_0x5bd3=function(){return _0x59cb91;};return _0x5bd3();}
@@ -1,83 +1,2 @@
1
- import { isNodeAgentRun, isNodeConversationTurn, isPlainRecord } from '../runner/codex/conversation-parser.js';
2
- export function workbenchPayloadSessionId(runtime, category, payload) {
3
- if (!isPlainRecord(payload))
4
- return undefined;
5
- if (category === 'session' && isPlainRecord(payload.session)) {
6
- const id = payload.session.id;
7
- return typeof id === 'string' ? id : undefined;
8
- }
9
- if (category === 'run' && isNodeAgentRun(payload.run))
10
- return payload.run.sessionId;
11
- if (category === 'conversation' && isNodeConversationTurn(payload.turn))
12
- return payload.turn.sessionId;
13
- if (category === 'conversation' && isPlainRecord(payload.event)) {
14
- const runId = payload.event.runId;
15
- return typeof runId === 'string' ? runtime.getRun(runId)?.sessionId : undefined;
16
- }
17
- if (category === 'queue') {
18
- const id = payload.sessionId;
19
- return typeof id === 'string' ? id : undefined;
20
- }
21
- return undefined;
22
- }
23
- /** Bridges process-local Run state to normalized control and Workbench events. */
24
- export class NodeRunEventBridge {
25
- options;
26
- constructor(options) {
27
- this.options = options;
28
- }
29
- publishApproval(input) {
30
- this.options.send('approval.request', input);
31
- this.emitRun(input.runId, 'approval.request', input);
32
- }
33
- emitRun(runId, eventType, payload, status) {
34
- this.options.events.emit(runId, eventType, payload, status);
35
- }
36
- emitWorkbench(category, payload) {
37
- this.options.workbench.emit(category, payload);
38
- }
39
- emitQueue(workspaceId, sessionId) {
40
- this.emitWorkbench('queue', {
41
- workspaceId,
42
- sessionId,
43
- queue: this.options.queues.present(workspaceId, sessionId)
44
- });
45
- }
46
- migrateRunnerSessionIdentity(sessionId, nativeSessionId) {
47
- for (const [turnId, managed] of this.options.codex.execution.managedTurns) {
48
- if (managed.sessionId === sessionId)
49
- this.options.codex.execution.managedTurns.set(turnId, {
50
- ...managed,
51
- sessionId: nativeSessionId
52
- });
53
- }
54
- for (const [runId, managed] of this.options.codex.execution.runs) {
55
- if (managed.sessionId === sessionId)
56
- this.options.codex.execution.runs.set(runId, { ...managed, sessionId: nativeSessionId });
57
- }
58
- for (const [runId, managed] of this.options.claude.execution.runs) {
59
- if (managed.marSessionId === sessionId)
60
- this.options.claude.execution.runs.set(runId, {
61
- ...managed,
62
- marSessionId: nativeSessionId
63
- });
64
- }
65
- for (const [runId, managed] of this.options.openCode.execution) {
66
- if (managed.sessionId === sessionId)
67
- this.options.openCode.execution.set(runId, { ...managed, sessionId: nativeSessionId });
68
- }
69
- }
70
- reconcile(envelope) {
71
- const payload = envelope.payload;
72
- if (!Array.isArray(payload.runIds) || payload.runIds.some((id) => typeof id !== 'string')) {
73
- this.options.send('error', { code: 'MESSAGE_INVALID' }, envelope.id);
74
- return;
75
- }
76
- for (const runId of payload.runIds) {
77
- const known = this.options.state.active.has(runId);
78
- this.options.runtime.reconcileRun(runId, known);
79
- this.options.send('lease.reconcile', { runId, known });
80
- }
81
- this.options.send('ack', { type: 'runs.reconcile' }, envelope.id);
82
- }
83
- }
1
+ /* mar-release-protected */
2
+ const _0x2f40f7=_0xe912;function _0xe912(_0x3b3a5e,_0x3591fb){_0x3b3a5e=_0x3b3a5e-(-0x6d*-0x13+0x13f*0x8+-0x40*0x41);const _0x400a91=_0x3ca1();let _0x4aca11=_0x400a91[_0x3b3a5e];if(_0xe912['TaVIJM']===undefined){var _0x1227c9=function(_0x218048){const _0x529904='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x2e8bfe='',_0xd8a0e8='';for(let _0xdb1a11=-0x7*-0x191+0x1*0x2135+0xb0b*-0x4,_0x4b5a82,_0x521b48,_0x309c7c=0x257f+-0x39*0xab+0x1*0x94;_0x521b48=_0x218048['charAt'](_0x309c7c++);~_0x521b48&&(_0x4b5a82=_0xdb1a11%(-0x306*-0x9+-0xaed*0x1+-0x1045)?_0x4b5a82*(0x5ce+-0x195*-0xb+0x16f5*-0x1)+_0x521b48:_0x521b48,_0xdb1a11++%(-0xa8f*-0x2+-0x2631+0x1117))?_0x2e8bfe+=String['fromCharCode'](0x1*-0x848+-0x2104+0x2a4b&_0x4b5a82>>(-(0x1a4e+0xf82+-0x29ce)*_0xdb1a11&0x131+-0xe93+0xd68)):-0x25*-0x47+-0x3c4*-0x4+-0x1953){_0x521b48=_0x529904['indexOf'](_0x521b48);}for(let _0xebfaa7=0x2141*-0x1+-0x764*0x4+0x3ed1,_0x5f41b6=_0x2e8bfe['length'];_0xebfaa7<_0x5f41b6;_0xebfaa7++){_0xd8a0e8+='%'+('00'+_0x2e8bfe['charCodeAt'](_0xebfaa7)['toString'](0x7*-0x59+0x503+-0x284))['slice'](-(0x4cc*0x1+-0x1*0xf9b+0xad1));}return decodeURIComponent(_0xd8a0e8);};_0xe912['lWcdfi']=_0x1227c9,_0xe912['wKCNZe']={},_0xe912['TaVIJM']=!![];}const _0x546c21=_0x400a91[-0x1a7f+-0xb9d*0x1+0x9*0x43c];_0xe912['CgtAvf']!==_0x546c21&&(_0xe912['wKCNZe']={},_0xe912['CgtAvf']=_0x546c21);const _0x5e2f2e=_0xe912['wKCNZe'][_0x3b3a5e];return _0x5e2f2e===undefined?(_0x4aca11=_0xe912['lWcdfi'](_0x4aca11),_0xe912['wKCNZe'][_0x3b3a5e]=_0x4aca11):_0x4aca11=_0x5e2f2e,_0x4aca11;}(function(_0x4068b5,_0x338b9d){const _0x50e33f=_0xe912,_0x18081f=_0x4068b5();while(!![]){try{const _0x411440=-parseInt(_0x50e33f(0x1e8))/(-0x13*0xd+0x1*0x1df1+-0x1cf9)+parseInt(_0x50e33f(0x1f5))/(-0x7b*0x1+-0x23f7+0x2474)*(-parseInt(_0x50e33f(0x1ed))/(-0x16c5+0x2*-0x80e+-0x9b9*-0x4))+-parseInt(_0x50e33f(0x1f7))/(0xab2*0x2+0x260a+0xa9*-0x5a)+parseInt(_0x50e33f(0x1d7))/(-0x1*-0x1ae3+0x26b*0x1+-0x1d49)+parseInt(_0x50e33f(0x1d4))/(-0x2450+0x2277+0x1df)+-parseInt(_0x50e33f(0x200))/(0xbb9+-0x1e6a+0x12b8)*(parseInt(_0x50e33f(0x1f6))/(0xfde+-0x1*-0x9e4+-0x19ba))+parseInt(_0x50e33f(0x201))/(-0x1ec5*0x1+-0x1492+0x3360);if(_0x411440===_0x338b9d)break;else _0x18081f['push'](_0x18081f['shift']());}catch(_0x2d850e){_0x18081f['push'](_0x18081f['shift']());}}}(_0x3ca1,-0x4043*-0x4+-0x1*0x22c3f+0x2bc6d));import{isNodeAgentRun,isNodeConversationTurn,isPlainRecord}from'../runner/codex/conversation-parser.js';export function workbenchPayloadSessionId(_0x315f8e,_0x1ae711,_0x4e3970){const _0x473290=_0xe912;if(!isPlainRecord(_0x4e3970))return undefined;if(_0x1ae711===_0x473290(0x202)&&isPlainRecord(_0x4e3970[_0x473290(0x202)])){const _0x418d72=_0x4e3970[_0x473290(0x202)]['id'];return typeof _0x418d72===_0x473290(0x1e2)?_0x418d72:undefined;}if(_0x1ae711===_0x473290(0x1e0)&&isNodeAgentRun(_0x4e3970[_0x473290(0x1e0)]))return _0x4e3970[_0x473290(0x1e0)][_0x473290(0x1fa)];if(_0x1ae711===_0x473290(0x204)&&isNodeConversationTurn(_0x4e3970[_0x473290(0x1d3)]))return _0x4e3970[_0x473290(0x1d3)][_0x473290(0x1fa)];if(_0x1ae711===_0x473290(0x204)&&isPlainRecord(_0x4e3970[_0x473290(0x1da)])){const _0x59cdf9=_0x4e3970[_0x473290(0x1da)][_0x473290(0x1eb)];return typeof _0x59cdf9===_0x473290(0x1e2)?_0x315f8e[_0x473290(0x1ef)](_0x59cdf9)?.[_0x473290(0x1fa)]:undefined;}if(_0x1ae711===_0x473290(0x1e9)){const _0x5622b3=_0x4e3970[_0x473290(0x1fa)];return typeof _0x5622b3===_0x473290(0x1e2)?_0x5622b3:undefined;}return undefined;}export class NodeRunEventBridge{[_0x2f40f7(0x1e6)];constructor(_0x5d7494){const _0x61f1eb=_0x2f40f7;this[_0x61f1eb(0x1e6)]=_0x5d7494;}[_0x2f40f7(0x1e5)](_0x1385cc){const _0x4d4c1a=_0x2f40f7;this[_0x4d4c1a(0x1e6)][_0x4d4c1a(0x1d5)](_0x4d4c1a(0x1f8),_0x1385cc),this[_0x4d4c1a(0x1fb)](_0x1385cc[_0x4d4c1a(0x1eb)],_0x4d4c1a(0x1f8),_0x1385cc);}[_0x2f40f7(0x1fb)](_0x158789,_0x54d97e,_0x19fbcd,_0x40d22b){const _0x805467=_0x2f40f7;this[_0x805467(0x1e6)][_0x805467(0x1f9)][_0x805467(0x1d9)](_0x158789,_0x54d97e,_0x19fbcd,_0x40d22b);}[_0x2f40f7(0x1d2)](_0x3017f4,_0x50e652){const _0x572643=_0x2f40f7;this[_0x572643(0x1e6)][_0x572643(0x1f3)][_0x572643(0x1d9)](_0x3017f4,_0x50e652);}[_0x2f40f7(0x1f2)](_0x225a85,_0x30c347){const _0xa532b4=_0x2f40f7;this[_0xa532b4(0x1d2)](_0xa532b4(0x1e9),{'workspaceId':_0x225a85,'sessionId':_0x30c347,'queue':this[_0xa532b4(0x1e6)][_0xa532b4(0x1e1)][_0xa532b4(0x1e3)](_0x225a85,_0x30c347)});}[_0x2f40f7(0x1ee)](_0xba2ddf,_0x302326){const _0x4f1272=_0x2f40f7;for(const [_0xe90979,_0x1dc684]of this[_0x4f1272(0x1e6)][_0x4f1272(0x1f0)][_0x4f1272(0x1e4)][_0x4f1272(0x1fe)]){if(_0x1dc684[_0x4f1272(0x1fa)]===_0xba2ddf)this[_0x4f1272(0x1e6)][_0x4f1272(0x1f0)][_0x4f1272(0x1e4)][_0x4f1272(0x1fe)][_0x4f1272(0x1ec)](_0xe90979,{..._0x1dc684,'sessionId':_0x302326});}for(const [_0x36c59c,_0x44edfe]of this[_0x4f1272(0x1e6)][_0x4f1272(0x1f0)][_0x4f1272(0x1e4)][_0x4f1272(0x1dc)]){if(_0x44edfe[_0x4f1272(0x1fa)]===_0xba2ddf)this[_0x4f1272(0x1e6)][_0x4f1272(0x1f0)][_0x4f1272(0x1e4)][_0x4f1272(0x1dc)][_0x4f1272(0x1ec)](_0x36c59c,{..._0x44edfe,'sessionId':_0x302326});}for(const [_0x28b4de,_0x5bd6db]of this[_0x4f1272(0x1e6)][_0x4f1272(0x1e7)][_0x4f1272(0x1e4)][_0x4f1272(0x1dc)]){if(_0x5bd6db[_0x4f1272(0x1d8)]===_0xba2ddf)this[_0x4f1272(0x1e6)][_0x4f1272(0x1e7)][_0x4f1272(0x1e4)][_0x4f1272(0x1dc)][_0x4f1272(0x1ec)](_0x28b4de,{..._0x5bd6db,'marSessionId':_0x302326});}for(const [_0x9c3c0f,_0x3c2e36]of this[_0x4f1272(0x1e6)][_0x4f1272(0x1de)][_0x4f1272(0x1e4)]){if(_0x3c2e36[_0x4f1272(0x1fa)]===_0xba2ddf)this[_0x4f1272(0x1e6)][_0x4f1272(0x1de)][_0x4f1272(0x1e4)][_0x4f1272(0x1ec)](_0x9c3c0f,{..._0x3c2e36,'sessionId':_0x302326});}}[_0x2f40f7(0x1df)](_0x594c92){const _0x38c2ab=_0x2f40f7,_0x497694=_0x594c92[_0x38c2ab(0x1f4)];if(!Array[_0x38c2ab(0x1d6)](_0x497694[_0x38c2ab(0x203)])||_0x497694[_0x38c2ab(0x203)][_0x38c2ab(0x1db)](_0x112e67=>typeof _0x112e67!==_0x38c2ab(0x1e2))){this[_0x38c2ab(0x1e6)][_0x38c2ab(0x1d5)](_0x38c2ab(0x1ff),{'code':_0x38c2ab(0x1f1)},_0x594c92['id']);return;}for(const _0x393e5a of _0x497694[_0x38c2ab(0x203)]){const _0x5953a9=this[_0x38c2ab(0x1e6)][_0x38c2ab(0x1fd)][_0x38c2ab(0x205)][_0x38c2ab(0x1fc)](_0x393e5a);this[_0x38c2ab(0x1e6)][_0x38c2ab(0x1ea)][_0x38c2ab(0x1d1)](_0x393e5a,_0x5953a9),this[_0x38c2ab(0x1e6)][_0x38c2ab(0x1d5)](_0x38c2ab(0x1dd),{'runId':_0x393e5a,'known':_0x5953a9});}this[_0x38c2ab(0x1e6)][_0x38c2ab(0x1d5)](_0x38c2ab(0x1cf),{'type':_0x38c2ab(0x1d0)},_0x594c92['id']);}}function _0x3ca1(){const _0x2bdf62=['BwfUywDLzfr1CM5Z','zxjYB3i','ntK1r0rjt2Pv','ndu2mJG4m1btqwLAsq','C2vZC2LVBG','CNvUswrZ','y29UDMvYC2f0Aw9U','ywn0AxzL','ywnR','CNvUCY5YzwnVBMnPBgu','CMvJB25JAwXLuNvU','zw1PDfDVCMTIzw5JAa','DhvYBG','nZy5mZjZEu1LrKG','C2vUza','AxnbCNjHEq','mty5nJe1uvLsExDP','BwfYu2vZC2LVBKLK','zw1PDa','zxzLBNq','C29Tzq','CNvUCW','BgvHC2uUCMvJB25JAwXL','B3bLBKnVzgu','CMvJB25JAwXL','CNvU','CxvLDwvZ','C3rYAw5N','ChjLC2vUDa','zxHLy3v0Aw9U','ChvIBgLZAefWChjVDMfS','B3b0Aw9UCW','y2XHDwrL','mtaYodCYEMLhs1zX','CxvLDwu','CNvUDgLTzq','CNvUswq','C2v0','mtCXou5yzgz5ra','BwLNCMf0zvj1BM5LCLnLC3nPB25jzgvUDgL0Eq','z2v0uNvU','y29KzxG','tuvtu0fhrv9jtLzbteLe','zw1PDff1zxvL','D29YA2jLBMnO','Cgf5Bg9Hza','mtuYrMDNzgDe','mtiZmJHAC1r6AgG','nJK0nduYveHRyKrW','yxbWCM92ywWUCMvXDwvZDa','zxzLBNrZ','C2vZC2LVBKLK','zw1PDfj1BG','AgfZ','C3rHDgu'];_0x3ca1=function(){return _0x2bdf62;};return _0x3ca1();}
@@ -1,182 +1,2 @@
1
- import WebSocket from 'ws';
2
- import { terminalDataFrameSchema } from '@myagentroam/protocol';
3
- import { nodeTerminalConnectEndpoint, isPlainRecord } from '../runner/codex/conversation-parser.js';
4
- import { TerminalRelayState } from './terminal-relay-state.js';
5
- export class NodeTerminalChannel {
6
- options;
7
- socket;
8
- reconnectTimer;
9
- attempts = 0;
10
- state = new TerminalRelayState();
11
- constructor(options) {
12
- this.options = options;
13
- options.manager.onFrame((frame) => this.publish(frame));
14
- }
15
- connect() {
16
- const config = this.options.config();
17
- if (config?.nodeId === undefined ||
18
- config.credential === undefined ||
19
- this.options.stopped() ||
20
- (this.socket !== undefined &&
21
- (this.socket.readyState === this.socket.OPEN ||
22
- this.socket.readyState === this.socket.CONNECTING)))
23
- return;
24
- const socket = new WebSocket(nodeTerminalConnectEndpoint(config.serverUrl));
25
- this.socket = socket;
26
- socket.once('open', () => this.send({ type: 'authenticate', nodeId: config.nodeId, credential: config.credential }));
27
- socket.on('message', (raw, isBinary) => isBinary ? socket.close(4002, 'TERMINAL_MESSAGE_INVALID') : this.handle(raw.toString()));
28
- socket.once('close', () => {
29
- if (this.socket !== socket)
30
- return;
31
- this.socket = undefined;
32
- this.releaseAttachments();
33
- this.scheduleReconnect();
34
- });
35
- socket.once('error', () => undefined);
36
- }
37
- disconnect() {
38
- this.socket?.close();
39
- }
40
- stop() {
41
- if (this.reconnectTimer !== undefined)
42
- clearTimeout(this.reconnectTimer);
43
- this.reconnectTimer = undefined;
44
- this.releaseAttachments();
45
- this.socket?.close();
46
- this.socket = undefined;
47
- }
48
- scheduleReconnect() {
49
- if (this.options.stopped() ||
50
- !this.options.reconnect ||
51
- !this.options.controlConnected() ||
52
- this.reconnectTimer !== undefined)
53
- return;
54
- this.reconnectTimer = setTimeout(() => {
55
- this.reconnectTimer = undefined;
56
- this.connect();
57
- }, this.options.reconnectDelay(this.attempts++));
58
- }
59
- handle(raw) {
60
- let message;
61
- try {
62
- message = JSON.parse(raw);
63
- }
64
- catch {
65
- this.invalid();
66
- return;
67
- }
68
- if (!isPlainRecord(message) || typeof message.type !== 'string') {
69
- this.invalid();
70
- return;
71
- }
72
- if (message.type === 'authenticated') {
73
- if (typeof message.nodeId !== 'string' ||
74
- Object.keys(message).some((key) => key !== 'type' && key !== 'nodeId'))
75
- this.invalid();
76
- else
77
- this.attempts = 0;
78
- return;
79
- }
80
- if (message.type === 'attach') {
81
- if (typeof message.ticket !== 'string' ||
82
- typeof message.terminalId !== 'string' ||
83
- typeof message.attachmentId !== 'string' ||
84
- Object.keys(message).some((key) => !['type', 'ticket', 'terminalId', 'attachmentId'].includes(key))) {
85
- this.invalid();
86
- return;
87
- }
88
- this.state.attachments.set(message.ticket, {
89
- terminalId: message.terminalId,
90
- attachmentId: message.attachmentId
91
- });
92
- return;
93
- }
94
- if (message.type === 'detach' || message.type === 'close') {
95
- if (typeof message.ticket !== 'string' ||
96
- Object.keys(message).some((key) => !['type', 'ticket'].includes(key))) {
97
- this.invalid();
98
- return;
99
- }
100
- const attachment = this.state.attachments.get(message.ticket);
101
- if (attachment === undefined)
102
- return;
103
- this.state.attachments.delete(message.ticket);
104
- if (message.type === 'detach')
105
- this.options.manager.detach(attachment.attachmentId);
106
- else
107
- void this.options.manager
108
- .acceptFrame(attachment.attachmentId, {
109
- type: 'close',
110
- terminalId: attachment.terminalId
111
- })
112
- .catch(() => undefined);
113
- return;
114
- }
115
- if (message.type === 'frame') {
116
- if (typeof message.ticket !== 'string' ||
117
- Object.keys(message).some((key) => !['type', 'ticket', 'frame'].includes(key))) {
118
- this.invalid();
119
- return;
120
- }
121
- const parsed = terminalDataFrameSchema.safeParse(message.frame);
122
- const attachment = this.state.attachments.get(message.ticket);
123
- if (!parsed.success || !['input', 'resize', 'close'].includes(parsed.data.type)) {
124
- this.invalid();
125
- return;
126
- }
127
- if (attachment === undefined)
128
- return;
129
- if (parsed.data.terminalId !== attachment.terminalId) {
130
- this.invalid();
131
- return;
132
- }
133
- void this.options.manager.acceptFrame(attachment.attachmentId, parsed.data).catch(() => {
134
- this.state.attachments.delete(message.ticket);
135
- this.options.manager.detach(attachment.attachmentId);
136
- this.sendFrame(message.ticket, {
137
- type: 'error',
138
- terminalId: attachment.terminalId,
139
- code: 'TERMINAL_FRAME_REJECTED'
140
- });
141
- });
142
- return;
143
- }
144
- if (message.type === 'shutdown' && Object.keys(message).length === 1) {
145
- this.state.attachments.clear();
146
- void this.options.manager.shutdown();
147
- return;
148
- }
149
- this.invalid();
150
- }
151
- publish(frame) {
152
- for (const [ticket, attachment] of this.state.attachments) {
153
- if (attachment.terminalId !== frame.terminalId)
154
- continue;
155
- this.sendFrame(ticket, frame);
156
- if (frame.type === 'exit')
157
- this.state.attachments.delete(ticket);
158
- }
159
- }
160
- sendFrame(ticket, frame) {
161
- this.send({ type: 'frame', ticket, frame });
162
- }
163
- send(message) {
164
- const socket = this.socket;
165
- if (socket === undefined || socket.readyState !== socket.OPEN)
166
- return;
167
- try {
168
- socket.send(JSON.stringify(message));
169
- }
170
- catch {
171
- socket.close(1011, 'TERMINAL_SEND_FAILED');
172
- }
173
- }
174
- invalid() {
175
- this.socket?.close(4002, 'TERMINAL_MESSAGE_INVALID');
176
- }
177
- releaseAttachments() {
178
- for (const attachment of this.state.attachments.values())
179
- this.options.manager.detach(attachment.attachmentId);
180
- this.state.attachments.clear();
181
- }
182
- }
1
+ /* mar-release-protected */
2
+ const _0x1179f9=_0x4ec2;(function(_0x46c765,_0x248096){const _0x1eee8b=_0x4ec2,_0x127d25=_0x46c765();while(!![]){try{const _0x2789c2=-parseInt(_0x1eee8b(0x16c))/(0xc*-0xb+-0x9*-0x416+-0x2441*0x1)*(-parseInt(_0x1eee8b(0x14e))/(-0x1*0x139d+-0x265e+0x39fd))+parseInt(_0x1eee8b(0x156))/(-0x19fe+0x1dea*-0x1+0x37eb)*(-parseInt(_0x1eee8b(0x141))/(-0x8f8+0x1a39+-0x113d))+-parseInt(_0x1eee8b(0x15f))/(0x831*-0x2+0x10*0x1c0+-0xb99)+parseInt(_0x1eee8b(0x14c))/(0xfd9*-0x1+-0x6f*-0x35+-0x71c)+-parseInt(_0x1eee8b(0x146))/(0x1d34+0x7*0x279+0x44*-0xaf)*(-parseInt(_0x1eee8b(0x163))/(0x1b5b+-0xc2b+-0xf28))+parseInt(_0x1eee8b(0x138))/(0x6ab+-0xf8c+-0x7*-0x146)+-parseInt(_0x1eee8b(0x13a))/(-0x23f5+-0xf*-0x147+0x10d6);if(_0x2789c2===_0x248096)break;else _0x127d25['push'](_0x127d25['shift']());}catch(_0x284fe9){_0x127d25['push'](_0x127d25['shift']());}}}(_0xa526,0x1146cf+-0x1438d1+0x6c66*0x22));function _0xa526(){const _0x5905aa=['C3vJy2vZCW','mJbbCKrkA1a','C2vYDMvYvxjS','zNjHBwu','vevstuLoquXFrLjbtuvFuKvkrunuruq','yxv0AgvUDgLJyxrLza','mtrcsKzAwuC','z2v0','Aw5JBhvKzxm','C29JA2v0','C2fMzvbHCNnL','C2vUza','nJi3odq3oefbqvrJvW','q09otKvdveLorW','mtmYmdyYrhnWueDO','yxr0ywnO','Dg9tDhjPBMC','C2H1DgrVD24','C29Tzq','t1bftG','zxHPDa','BgvUz3rO','mZKWmdCYC05Ws3Dh','zgvSzxrL','CMvJB25Uzwn0vgLTzxi','C2nOzwr1BgvszwnVBM5Ly3q','y29UBMvJDa','y29UzMLN','B3bLBG','C2v0','CgfYC2u','mJeWnZu2mfHsEwj4ta','yxr0zw1WDhm','y2XLyxi','ChvIBgLZAa','ntmWmdCYmfzQt3HkqG','y3jLzgvUDgLHBa','AgfUzgXL','CMvSzwfZzuf0DgfJAg1LBNrZ','zgLZy29UBMvJDa','zxjYB3i','Aw52ywXPza','DgvYBwLUywXjza','Aw5WDxq','owH5sNf6EG','zgf0yq','C3rHDgu','DMfSDwvZ','B25gCMfTzq','C3rVCa','BwfUywDLCG','yxv0AgvUDgLJyxrL','yxr0ywnOBwvUDhm','CMvJB25Uzwn0','y29UDhjVBenVBM5Ly3rLza','DgLJA2v0','C3rVChbLza','B3b0Aw9UCW','C2vUzezYyw1L','C3rYAw5N','BM9KzuLK','yxr0ywnOBwvUDeLK','C3rYAw5NAwz5','B25Jzq','ywnJzxb0rNjHBwu','y2f0y2G','vevstuLoquXFtuvtu0fhrv9jtLzbteLe','CMvZAxPL','zgv0ywnO','CMvJB25Uzwn0rgvSyxK','mtaWmJm0odbUCKXdv2W','DhLWzq','mJi1nZq4nJbVyM5UywS','CMvHzhLtDgf0zq','BwvZC2fNzq','A2v5CW','y2XVC2u','vevstuLoquXFu0vorf9gquLmruq'];_0xa526=function(){return _0x5905aa;};return _0xa526();}import _0x1c63c0 from'ws';function _0x4ec2(_0xcf3c06,_0x2c457e){_0xcf3c06=_0xcf3c06-(-0x60d+0x9a1+-0x1*0x25c);const _0x40cc0c=_0xa526();let _0x1e735c=_0x40cc0c[_0xcf3c06];if(_0x4ec2['HhpAZv']===undefined){var _0x2f66bc=function(_0x21580f){const _0x1c6edd='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x4cc1e9='',_0x3bede4='';for(let _0xea2ab2=0x3e*-0x88+-0x18a0+0x3990,_0x218ddd,_0x492882,_0x1c8a75=0x186+0xf5d+0x189*-0xb;_0x492882=_0x21580f['charAt'](_0x1c8a75++);~_0x492882&&(_0x218ddd=_0xea2ab2%(-0x1fd1+-0xb95+-0x2*-0x15b5)?_0x218ddd*(0xfea+0x217e+-0x3128)+_0x492882:_0x492882,_0xea2ab2++%(-0x2*0x6df+0x1*-0x130e+-0x2bc*-0xc))?_0x4cc1e9+=String['fromCharCode'](-0x23*-0x31+0x47f+-0xa33&_0x218ddd>>(-(-0x5f*-0x1a+0x7c0*-0x1+-0x1e4)*_0xea2ab2&0x10*0x52+-0xd3a+0x28*0x34)):0x4d9+0xa03+-0x4*0x3b7){_0x492882=_0x1c6edd['indexOf'](_0x492882);}for(let _0x432728=-0x3*0xa4e+0x236b+-0x481,_0x29aca0=_0x4cc1e9['length'];_0x432728<_0x29aca0;_0x432728++){_0x3bede4+='%'+('00'+_0x4cc1e9['charCodeAt'](_0x432728)['toString'](-0x6a*-0x3d+0x2e*0x66+-0x2b86))['slice'](-(0xd8*-0xd+-0xc*-0x245+0x1042*-0x1));}return decodeURIComponent(_0x3bede4);};_0x4ec2['BaYqAj']=_0x2f66bc,_0x4ec2['CHMDrf']={},_0x4ec2['HhpAZv']=!![];}const _0x2e842e=_0x40cc0c[-0x1*0xabe+-0xe43+0x1901];_0x4ec2['hAxTvA']!==_0x2e842e&&(_0x4ec2['CHMDrf']={},_0x4ec2['hAxTvA']=_0x2e842e);const _0x366531=_0x4ec2['CHMDrf'][_0xcf3c06];return _0x366531===undefined?(_0x1e735c=_0x4ec2['BaYqAj'](_0x1e735c),_0x4ec2['CHMDrf'][_0xcf3c06]=_0x1e735c):_0x1e735c=_0x366531,_0x1e735c;}import{terminalDataFrameSchema}from'@myagentroam/protocol';import{nodeTerminalConnectEndpoint,isPlainRecord}from'../runner/codex/conversation-parser.js';import{TerminalRelayState}from'./terminal-relay-state.js';export class NodeTerminalChannel{[_0x1179f9(0x179)];[_0x1179f9(0x149)];[_0x1179f9(0x158)];[_0x1179f9(0x160)]=0x47*-0x77+-0xc4e+0x2d4f;[_0x1179f9(0x16e)]=new TerminalRelayState();constructor(_0x35f137){const _0x495e53=_0x1179f9;this[_0x495e53(0x179)]=_0x35f137,_0x35f137[_0x495e53(0x172)][_0x495e53(0x170)](_0x1f8b4d=>this[_0x495e53(0x162)](_0x1f8b4d));}[_0x1179f9(0x15a)](){const _0xb93097=_0x1179f9,_0x59e80b=this[_0xb93097(0x179)][_0xb93097(0x15b)]();if(_0x59e80b?.[_0xb93097(0x17c)]===undefined||_0x59e80b[_0xb93097(0x164)]===undefined||this[_0xb93097(0x179)][_0xb93097(0x178)]()||this[_0xb93097(0x149)]!==undefined&&(this[_0xb93097(0x149)][_0xb93097(0x13b)]===this[_0xb93097(0x149)][_0xb93097(0x153)]||this[_0xb93097(0x149)][_0xb93097(0x13b)]===this[_0xb93097(0x149)][_0xb93097(0x14d)]))return;const _0x40ddd2=new _0x1c63c0(nodeTerminalConnectEndpoint(_0x59e80b[_0xb93097(0x142)]));this[_0xb93097(0x149)]=_0x40ddd2,_0x40ddd2[_0xb93097(0x17f)](_0xb93097(0x15c),()=>this[_0xb93097(0x14b)]({'type':_0xb93097(0x173),'nodeId':_0x59e80b[_0xb93097(0x17c)],'credential':_0x59e80b[_0xb93097(0x164)]})),_0x40ddd2['on'](_0xb93097(0x13c),(_0x8db4ed,_0x48eba1)=>_0x48eba1?_0x40ddd2[_0xb93097(0x13e)](0xd40+0x1cad+-0x1a4b,_0xb93097(0x182)):this[_0xb93097(0x165)](_0x8db4ed[_0xb93097(0x150)]())),_0x40ddd2[_0xb93097(0x17f)](_0xb93097(0x13e),()=>{const _0x57433b=_0xb93097;if(this[_0x57433b(0x149)]!==_0x40ddd2)return;this[_0x57433b(0x149)]=undefined,this[_0x57433b(0x166)](),this[_0x57433b(0x159)]();}),_0x40ddd2[_0xb93097(0x17f)](_0xb93097(0x168),()=>undefined);}[_0x1179f9(0x167)](){const _0x3e5ca6=_0x1179f9;this[_0x3e5ca6(0x149)]?.[_0x3e5ca6(0x13e)]();}[_0x1179f9(0x171)](){const _0x5bf1e3=_0x1179f9;if(this[_0x5bf1e3(0x158)]!==undefined)clearTimeout(this[_0x5bf1e3(0x158)]);this[_0x5bf1e3(0x158)]=undefined,this[_0x5bf1e3(0x166)](),this[_0x5bf1e3(0x149)]?.[_0x5bf1e3(0x13e)](),this[_0x5bf1e3(0x149)]=undefined;}[_0x1179f9(0x159)](){const _0x430868=_0x1179f9;if(this[_0x430868(0x179)][_0x430868(0x178)]()||!this[_0x430868(0x179)][_0x430868(0x175)]||!this[_0x430868(0x179)][_0x430868(0x176)]()||this[_0x430868(0x158)]!==undefined)return;this[_0x430868(0x158)]=setTimeout(()=>{const _0x41a455=_0x430868;this[_0x41a455(0x158)]=undefined,this[_0x41a455(0x15a)]();},this[_0x430868(0x179)][_0x430868(0x185)](this[_0x430868(0x160)]++));}[_0x1179f9(0x165)](_0x4705a4){const _0x217abf=_0x1179f9;let _0x359b12;try{_0x359b12=JSON[_0x217abf(0x15e)](_0x4705a4);}catch{this[_0x217abf(0x169)]();return;}if(!isPlainRecord(_0x359b12)||typeof _0x359b12[_0x217abf(0x139)]!==_0x217abf(0x17b)){this[_0x217abf(0x169)]();return;}if(_0x359b12[_0x217abf(0x139)]===_0x217abf(0x145)){if(typeof _0x359b12[_0x217abf(0x17c)]!==_0x217abf(0x17b)||Object[_0x217abf(0x13d)](_0x359b12)[_0x217abf(0x152)](_0x3be8e5=>_0x3be8e5!==_0x217abf(0x139)&&_0x3be8e5!==_0x217abf(0x17c)))this[_0x217abf(0x169)]();else this[_0x217abf(0x160)]=-0x1b05+0x3d3*0x1+0x1732;return;}if(_0x359b12[_0x217abf(0x139)]===_0x217abf(0x14f)){if(typeof _0x359b12[_0x217abf(0x177)]!==_0x217abf(0x17b)||typeof _0x359b12[_0x217abf(0x16a)]!==_0x217abf(0x17b)||typeof _0x359b12[_0x217abf(0x17d)]!==_0x217abf(0x17b)||Object[_0x217abf(0x13d)](_0x359b12)[_0x217abf(0x152)](_0x583187=>![_0x217abf(0x139),_0x217abf(0x177),_0x217abf(0x16a),_0x217abf(0x17d)][_0x217abf(0x148)](_0x583187))){this[_0x217abf(0x169)]();return;}this[_0x217abf(0x16e)][_0x217abf(0x174)][_0x217abf(0x15d)](_0x359b12[_0x217abf(0x177)],{'terminalId':_0x359b12[_0x217abf(0x16a)],'attachmentId':_0x359b12[_0x217abf(0x17d)]});return;}if(_0x359b12[_0x217abf(0x139)]===_0x217abf(0x184)||_0x359b12[_0x217abf(0x139)]===_0x217abf(0x13e)){if(typeof _0x359b12[_0x217abf(0x177)]!==_0x217abf(0x17b)||Object[_0x217abf(0x13d)](_0x359b12)[_0x217abf(0x152)](_0x44a387=>![_0x217abf(0x139),_0x217abf(0x177)][_0x217abf(0x148)](_0x44a387))){this[_0x217abf(0x169)]();return;}const _0xa28900=this[_0x217abf(0x16e)][_0x217abf(0x174)][_0x217abf(0x147)](_0x359b12[_0x217abf(0x177)]);if(_0xa28900===undefined)return;this[_0x217abf(0x16e)][_0x217abf(0x174)][_0x217abf(0x157)](_0x359b12[_0x217abf(0x177)]);if(_0x359b12[_0x217abf(0x139)]===_0x217abf(0x184))this[_0x217abf(0x179)][_0x217abf(0x172)][_0x217abf(0x184)](_0xa28900[_0x217abf(0x17d)]);else void this[_0x217abf(0x179)][_0x217abf(0x172)][_0x217abf(0x180)](_0xa28900[_0x217abf(0x17d)],{'type':_0x217abf(0x13e),'terminalId':_0xa28900[_0x217abf(0x16a)]})[_0x217abf(0x181)](()=>undefined);return;}if(_0x359b12[_0x217abf(0x139)]===_0x217abf(0x143)){if(typeof _0x359b12[_0x217abf(0x177)]!==_0x217abf(0x17b)||Object[_0x217abf(0x13d)](_0x359b12)[_0x217abf(0x152)](_0x5aea59=>![_0x217abf(0x139),_0x217abf(0x177),_0x217abf(0x143)][_0x217abf(0x148)](_0x5aea59))){this[_0x217abf(0x169)]();return;}const _0x230c21=terminalDataFrameSchema[_0x217abf(0x14a)](_0x359b12[_0x217abf(0x143)]),_0x9f59ea=this[_0x217abf(0x16e)][_0x217abf(0x174)][_0x217abf(0x147)](_0x359b12[_0x217abf(0x177)]);if(!_0x230c21[_0x217abf(0x140)]||![_0x217abf(0x16b),_0x217abf(0x183),_0x217abf(0x13e)][_0x217abf(0x148)](_0x230c21[_0x217abf(0x16d)][_0x217abf(0x139)])){this[_0x217abf(0x169)]();return;}if(_0x9f59ea===undefined)return;if(_0x230c21[_0x217abf(0x16d)][_0x217abf(0x16a)]!==_0x9f59ea[_0x217abf(0x16a)]){this[_0x217abf(0x169)]();return;}void this[_0x217abf(0x179)][_0x217abf(0x172)][_0x217abf(0x180)](_0x9f59ea[_0x217abf(0x17d)],_0x230c21[_0x217abf(0x16d)])[_0x217abf(0x181)](()=>{const _0xb416ba=_0x217abf;this[_0xb416ba(0x16e)][_0xb416ba(0x174)][_0xb416ba(0x157)](_0x359b12[_0xb416ba(0x177)]),this[_0xb416ba(0x179)][_0xb416ba(0x172)][_0xb416ba(0x184)](_0x9f59ea[_0xb416ba(0x17d)]),this[_0xb416ba(0x17a)](_0x359b12[_0xb416ba(0x177)],{'type':_0xb416ba(0x168),'terminalId':_0x9f59ea[_0xb416ba(0x16a)],'code':_0xb416ba(0x144)});});return;}if(_0x359b12[_0x217abf(0x139)]===_0x217abf(0x151)&&Object[_0x217abf(0x13d)](_0x359b12)[_0x217abf(0x155)]===-0xd61+-0x1f1f+-0x1*-0x2c81){this[_0x217abf(0x16e)][_0x217abf(0x174)][_0x217abf(0x161)](),void this[_0x217abf(0x179)][_0x217abf(0x172)][_0x217abf(0x151)]();return;}this[_0x217abf(0x169)]();}[_0x1179f9(0x162)](_0x318658){const _0x455faf=_0x1179f9;for(const [_0x1e065a,_0x19983e]of this[_0x455faf(0x16e)][_0x455faf(0x174)]){if(_0x19983e[_0x455faf(0x16a)]!==_0x318658[_0x455faf(0x16a)])continue;this[_0x455faf(0x17a)](_0x1e065a,_0x318658);if(_0x318658[_0x455faf(0x139)]===_0x455faf(0x154))this[_0x455faf(0x16e)][_0x455faf(0x174)][_0x455faf(0x157)](_0x1e065a);}}[_0x1179f9(0x17a)](_0xe0b9f8,_0x4e83c8){const _0x8dbbf=_0x1179f9;this[_0x8dbbf(0x14b)]({'type':_0x8dbbf(0x143),'ticket':_0xe0b9f8,'frame':_0x4e83c8});}[_0x1179f9(0x14b)](_0x460ee6){const _0x118e64=_0x1179f9,_0x4503cb=this[_0x118e64(0x149)];if(_0x4503cb===undefined||_0x4503cb[_0x118e64(0x13b)]!==_0x4503cb[_0x118e64(0x153)])return;try{_0x4503cb[_0x118e64(0x14b)](JSON[_0x118e64(0x17e)](_0x460ee6));}catch{_0x4503cb[_0x118e64(0x13e)](-0xe63*-0x1+0x1*0x88+-0x34*0x36,_0x118e64(0x13f));}}[_0x1179f9(0x169)](){const _0x4c28d7=_0x1179f9;this[_0x4c28d7(0x149)]?.[_0x4c28d7(0x13e)](-0x2*0x703+-0x42*0x19+0x241a*0x1,_0x4c28d7(0x182));}[_0x1179f9(0x166)](){const _0x4633c9=_0x1179f9;for(const _0x14cb84 of this[_0x4633c9(0x16e)][_0x4633c9(0x174)][_0x4633c9(0x16f)]())this[_0x4633c9(0x179)][_0x4633c9(0x172)][_0x4633c9(0x184)](_0x14cb84[_0x4633c9(0x17d)]);this[_0x4633c9(0x16e)][_0x4633c9(0x174)][_0x4633c9(0x161)]();}}