@myagentroam/node 0.9.8 → 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 (213) 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 -841
  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 -973
  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 -83
  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 -0
  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 -93
  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 -169
  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 -35
  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/run-attachment-service.d.ts +0 -38
  170. package/dist/service/run-domain-state.d.ts +0 -4
  171. package/dist/service/run-event-service.d.ts +0 -33
  172. package/dist/service/run-workbench-service.d.ts +0 -25
  173. package/dist/service/runner-channel-message-service.d.ts +0 -13
  174. package/dist/service/runner-interaction-service.d.ts +0 -39
  175. package/dist/service/runner-service.d.ts +0 -46
  176. package/dist/service/session-catalog-service.d.ts +0 -45
  177. package/dist/service/session-command-service.d.ts +0 -24
  178. package/dist/service/session-context-service.d.ts +0 -35
  179. package/dist/service/session-domain-state.d.ts +0 -9
  180. package/dist/service/session-identity-service.d.ts +0 -24
  181. package/dist/service/session-lifecycle-service.d.ts +0 -31
  182. package/dist/service/session-message-service.d.ts +0 -33
  183. package/dist/service/session-presentation-service.d.ts +0 -34
  184. package/dist/service/session-query-service.d.ts +0 -35
  185. package/dist/service/skill-directory-service.d.ts +0 -20
  186. package/dist/service/skill-install-service.d.ts +0 -21
  187. package/dist/service/skill-node-operation-service.d.ts +0 -44
  188. package/dist/service/terminal-relay-state.d.ts +0 -6
  189. package/dist/service/terminal-service.d.ts +0 -12
  190. package/dist/service/workbench-event-service.d.ts +0 -9
  191. package/dist/service/workbench-manifest-service.d.ts +0 -90
  192. package/dist/service/workspace-change-service.d.ts +0 -9
  193. package/dist/service/workspace-content-search-service.d.ts +0 -14
  194. package/dist/service/workspace-domain-state.d.ts +0 -79
  195. package/dist/service/workspace-file-service.d.ts +0 -18
  196. package/dist/service/workspace-git-exclude-service.d.ts +0 -4
  197. package/dist/service/workspace-queue-workbench-service.d.ts +0 -86
  198. package/dist/service/workspace-service.d.ts +0 -15
  199. package/dist/service/workspace-session-service.d.ts +0 -23
  200. package/dist/service/workspace-upload-service.d.ts +0 -39
  201. package/dist/service/workspace-watch-service.d.ts +0 -23
  202. package/dist/service/workspace-workbench-service.d.ts +0 -58
  203. package/dist/service.d.ts +0 -4
  204. package/dist/storage.d.ts +0 -2
  205. package/dist/supervisor.d.ts +0 -1
  206. package/dist/terminal.d.ts +0 -133
  207. package/dist/util/node-operation-parsers.d.ts +0 -92
  208. package/dist/util/personal-instructions.d.ts +0 -2
  209. package/dist/util/runner-error.d.ts +0 -6
  210. package/dist/util/runner-native-session-parsers.d.ts +0 -74
  211. package/dist/util/safe-error.d.ts +0 -2
  212. package/dist/util/secret-environment.d.ts +0 -1
  213. package/dist/workspace.d.ts +0 -217
@@ -1,232 +1,2 @@
1
- import { mcpRuntimeDescriptorSchema } from '@myagentroam/protocol';
2
- /**
3
- * Stable lifecycle boundary for every Node Runner implementation.
4
- *
5
- * Vendor clients and payload decoders stay behind subclasses. Domain services
6
- * depend on this boundary (or a capability interface implemented by it), never
7
- * on an SDK/App Server client directly.
8
- */
9
- export class AbstractRunner {
10
- control;
11
- commandControl;
12
- /** Test-only runners are registered explicitly but never advertised. */
13
- advertised = true;
14
- interceptsRuns = false;
15
- async refreshProfile(capabilities, workspace, environment = {}) {
16
- void [workspace, environment];
17
- return this.profile(capabilities);
18
- }
19
- supportsConfiguration(configuration, workspace, environment) {
20
- void [workspace, environment];
21
- const profile = this.profileForValidation();
22
- const model = profile.models.find((candidate) => candidate.id === configuration.model);
23
- return (configuration.runner === this.name &&
24
- model !== undefined &&
25
- model.supportedEfforts.includes(configuration.effort) &&
26
- profile.accessOptions.some((candidate) => candidate.id === configuration.access));
27
- }
28
- presentSession(session, capabilities, context) {
29
- void [session, capabilities, context];
30
- throw new RunnerCapabilityError(this.name, 'session.presentation');
31
- }
32
- prepareMessageInput(input, collaborationMode) {
33
- void collaborationMode;
34
- return input;
35
- }
36
- mcpConfiguration(rawInstallations, secretEnvironment) {
37
- return resolvedMcpServers(rawInstallations, secretEnvironment);
38
- }
39
- channelToken(sessionId) {
40
- void sessionId;
41
- return undefined;
42
- }
43
- deliverChannel(sessionId, messageId, senderId, token, content, notify) {
44
- void [sessionId, messageId, senderId, token, content, notify];
45
- return 'REJECTED';
46
- }
47
- executeGlobalCommand(commandId, input) {
48
- void [commandId, input];
49
- throw new RunnerCapabilityError(this.name, 'global-command');
50
- }
51
- serviceTier() {
52
- return undefined;
53
- }
54
- usesRunnerTitleForRename() {
55
- return false;
56
- }
57
- async renameNative(session, input, database) {
58
- if (session.externalSessionId === null)
59
- return;
60
- database.saveNativeSessionMetadata({
61
- runner: session.runner,
62
- externalSessionId: session.externalSessionId,
63
- workspaceId: session.workspaceId,
64
- ...(input.title === undefined ? {} : { customTitle: input.title }),
65
- ...(input.pinned === undefined ? {} : { pinned: input.pinned })
66
- });
67
- }
68
- async removeNative(session, nativeSessionId) {
69
- void [session, nativeSessionId];
70
- return false;
71
- }
72
- async forkNative(session, boundary, title) {
73
- void [session, boundary, title];
74
- throw new RunnerCapabilityError(this.name, 'session.rewind');
75
- }
76
- projectedRunnerTitle(metadata, input, database) {
77
- void database;
78
- return input.title ?? metadata?.runnerTitle ?? null;
79
- }
80
- managedAliasId(nativeSessionId) {
81
- void nativeSessionId;
82
- return undefined;
83
- }
84
- nativeAliasesFor(managedSessionId) {
85
- void managedSessionId;
86
- return [];
87
- }
88
- forgetNativeAlias(nativeSessionId) {
89
- void nativeSessionId;
90
- }
91
- rememberManagedNative(session, nativeSessionId) {
92
- void [session, nativeSessionId];
93
- }
94
- async readManagedRunnerTitle(session, nativeSessionId) {
95
- void [session, nativeSessionId];
96
- return undefined;
97
- }
98
- async readOfficialConversation(session, input, managedTurn) {
99
- void [session, input, managedTurn];
100
- return undefined;
101
- }
102
- async readConversationHistory(readers) {
103
- const page = await readers.native();
104
- return page === undefined ? undefined : { ...page, source: 'native' };
105
- }
106
- async readExternalActivity(session) {
107
- void session;
108
- return undefined;
109
- }
110
- acceptsTruncatedNativeHistory() {
111
- return true;
112
- }
113
- nativeImageRoots(session) {
114
- void session;
115
- return [];
116
- }
117
- managedRunForNativeTurn(nativeTurnId) {
118
- void nativeTurnId;
119
- return undefined;
120
- }
121
- bindControl(control) {
122
- if (this.control !== undefined)
123
- throw new Error(`RUNNER_CONTROL_ALREADY_BOUND:${this.name}`);
124
- this.control = control;
125
- }
126
- acceptsRun(runner) {
127
- return this.interceptsRuns || runner === this.name;
128
- }
129
- startManagedRun(envelope) {
130
- if (this.control === undefined)
131
- throw new Error(`RUNNER_CONTROL_NOT_BOUND:${this.name}`);
132
- this.control.start(envelope);
133
- }
134
- cancelManagedRun(runId, intent) {
135
- return this.control?.cancel(runId, intent) === true;
136
- }
137
- decideApproval(input) {
138
- return this.control?.decideApproval?.(input) === true;
139
- }
140
- respondUserInput(runId, requestId, answers) {
141
- return this.control?.respondUserInput?.(runId, requestId, answers) === true;
142
- }
143
- bindCommandControl(control) {
144
- if (this.commandControl !== undefined)
145
- throw new Error(`RUNNER_COMMAND_CONTROL_ALREADY_BOUND:${this.name}`);
146
- this.commandControl = control;
147
- }
148
- executeCommand(session, command, input, context) {
149
- if (this.commandControl === undefined)
150
- return Promise.reject(new Error('RUNNER_COMMAND_UNAVAILABLE'));
151
- return this.commandControl.execute(session, command, input, context);
152
- }
153
- }
154
- function resolvedMcpServers(raw, secrets) {
155
- if (!Array.isArray(raw))
156
- return [];
157
- const result = [];
158
- for (const value of raw) {
159
- if (value === null || typeof value !== 'object' || Array.isArray(value))
160
- continue;
161
- const record = value;
162
- if (typeof record['serverName'] !== 'string' || record['enabled'] !== true)
163
- continue;
164
- const runtime = mcpRuntimeDescriptorSchema.safeParse(record['runtime']);
165
- if (!runtime.success)
166
- continue;
167
- const configuration = isRecord(record['configuration']) ? record['configuration'] : {};
168
- const resolveReferences = (candidate) => {
169
- if (!isRecord(candidate))
170
- return {};
171
- const result = {};
172
- for (const [name, reference] of Object.entries(candidate)) {
173
- if (!isRecord(reference) || typeof reference['secretName'] !== 'string')
174
- return undefined;
175
- const secret = secrets[reference['secretName']];
176
- if (secret === undefined)
177
- return undefined;
178
- result[name] = secret;
179
- }
180
- return result;
181
- };
182
- if (runtime.data.transport === 'STDIO') {
183
- const runtimeEnvironment = resolveReferences(runtime.data.environment);
184
- const configuredEnvironment = resolveReferences(configuration['environment']);
185
- if (runtimeEnvironment === undefined || configuredEnvironment === undefined)
186
- continue;
187
- result.push({
188
- name: record['serverName'],
189
- transport: 'STDIO',
190
- command: runtime.data.command,
191
- args: [
192
- ...runtime.data.args,
193
- ...(Array.isArray(configuration['arguments'])
194
- ? configuration['arguments'].filter((item) => typeof item === 'string')
195
- : [])
196
- ],
197
- environment: {
198
- ...runtimeEnvironment,
199
- ...configuredEnvironment
200
- }
201
- });
202
- }
203
- else {
204
- const runtimeHeaders = resolveReferences(runtime.data.headers);
205
- const configuredHeaders = resolveReferences(configuration['headers']);
206
- if (runtimeHeaders === undefined || configuredHeaders === undefined)
207
- continue;
208
- result.push({
209
- name: record['serverName'],
210
- transport: 'HTTP',
211
- url: runtime.data.url,
212
- headers: {
213
- ...runtimeHeaders,
214
- ...configuredHeaders
215
- }
216
- });
217
- }
218
- }
219
- return result;
220
- }
221
- function isRecord(value) {
222
- return value !== null && typeof value === 'object' && !Array.isArray(value);
223
- }
224
- export class RunnerCapabilityError extends Error {
225
- runner;
226
- capability;
227
- constructor(runner, capability) {
228
- super('RUNNER_CAPABILITY_UNSUPPORTED');
229
- this.runner = runner;
230
- this.capability = capability;
231
- }
232
- }
1
+ /* mar-release-protected */
2
+ const _0x50083c=_0x27fe;(function(_0x1d4a9b,_0x41c0f8){const _0x3e3ae3=_0x27fe,_0x171c2e=_0x1d4a9b();while(!![]){try{const _0x564f3a=parseInt(_0x3e3ae3(0x1a4))/(-0x6a5+0x5*0xb+0x66f)*(parseInt(_0x3e3ae3(0x182))/(0x1306+0xf69+-0x226d))+parseInt(_0x3e3ae3(0x173))/(-0xb3*-0x23+-0x1091+-0x7e5)+-parseInt(_0x3e3ae3(0x19f))/(-0xec*0x1+-0x2*-0x652+-0xbb4)*(-parseInt(_0x3e3ae3(0x162))/(0x459+-0x1d69+0x1915))+-parseInt(_0x3e3ae3(0x175))/(0xf29+-0x1fc7+-0x3*-0x58c)*(parseInt(_0x3e3ae3(0x17b))/(0x4ac+-0xae2+0x63d))+parseInt(_0x3e3ae3(0x18c))/(0x1*-0x59f+0x2*0xfe+-0x3*-0x139)+-parseInt(_0x3e3ae3(0x190))/(0xcd1+-0x212+-0xab6*0x1)*(-parseInt(_0x3e3ae3(0x171))/(0x2469+-0x11af+0x958*-0x2))+-parseInt(_0x3e3ae3(0x16d))/(-0x268c+0x75e+0x1f39);if(_0x564f3a===_0x41c0f8)break;else _0x171c2e['push'](_0x171c2e['shift']());}catch(_0x552a1f){_0x171c2e['push'](_0x171c2e['shift']());}}}(_0x2a0d,0x2e842*0x1+-0xda5d6+0x171fdd));function _0x27fe(_0x326efd,_0x434eac){_0x326efd=_0x326efd-(-0x16db+-0x11dc+0x5*0x86a);const _0x30bea6=_0x2a0d();let _0x45826a=_0x30bea6[_0x326efd];if(_0x27fe['NdEHqc']===undefined){var _0x906fbb=function(_0x476e61){const _0x5776ad='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x97ad5f='',_0x44d9f3='';for(let _0x57c605=0xec*0x29+-0x29*0x7+0xe5*-0x29,_0x5f415a,_0x35e15f,_0x1a1e0f=0x4*-0x871+-0x1c80+0x14*0x31d;_0x35e15f=_0x476e61['charAt'](_0x1a1e0f++);~_0x35e15f&&(_0x5f415a=_0x57c605%(0x377*0x7+0x12aa*0x2+-0x3d91)?_0x5f415a*(0x2*0xc44+-0x1*-0x14de+-0x2d26)+_0x35e15f:_0x35e15f,_0x57c605++%(0x8d9+-0x2514+0x1c3f))?_0x97ad5f+=String['fromCharCode'](0x1*0x2314+-0x1*0x14cf+0x1*-0xd46&_0x5f415a>>(-(0xbeb+0x5*-0x605+0x1230)*_0x57c605&0x2540+-0x187c*-0x1+-0x3db6)):-0x1ba1+-0x1*0x1eb6+0x3a57){_0x35e15f=_0x5776ad['indexOf'](_0x35e15f);}for(let _0x4f0808=0x5*0x96+0x54b+-0x839,_0x8f8d83=_0x97ad5f['length'];_0x4f0808<_0x8f8d83;_0x4f0808++){_0x44d9f3+='%'+('00'+_0x97ad5f['charCodeAt'](_0x4f0808)['toString'](0x18*0x68+0x1c69+-0x2619))['slice'](-(-0x172*0x1+0x1885+0x49d*-0x5));}return decodeURIComponent(_0x44d9f3);};_0x27fe['VtwMlR']=_0x906fbb,_0x27fe['znpkhE']={},_0x27fe['NdEHqc']=!![];}const _0x4b67b1=_0x30bea6[-0x103f*-0x1+0x1*0x2051+-0x3090];_0x27fe['YDJENK']!==_0x4b67b1&&(_0x27fe['znpkhE']={},_0x27fe['YDJENK']=_0x4b67b1);const _0x51e313=_0x27fe['znpkhE'][_0x326efd];return _0x51e313===undefined?(_0x45826a=_0x27fe['VtwMlR'](_0x45826a),_0x27fe['znpkhE'][_0x326efd]=_0x45826a):_0x45826a=_0x51e313,_0x45826a;}import{mcpRuntimeDescriptorSchema}from'@myagentroam/protocol';function _0x2a0d(){const _0x5c9590=['ywnJzxb0C1rYDw5JyxrLze5HDgL2zuHPC3rVCNK','mJqYndG5nfjPrNDICq','CNvUDgLTzq','mZiXmtH6z0D3B3K','ChjLC2vUDfnLC3nPB24','y29UDhjVBa','y2fUy2vStwfUywDLzfj1BG','zxH0zxjUywXtzxnZAw9Uswq','yMLUzenVBw1HBMrdB250CM9S','mtCWmvnutgvqsG','zM9Yz2v0tMf0AxzLqwXPyxm','BwfUywDLzefSAwfZswq','ChjVzMLSzq','yxjNDw1LBNrZ','C2vJCMv0tMfTzq','BwnWq29UzMLNDxjHDgLVBG','mZG4mdG2D0rSBxP5','Bw9KzwW','BwfUywDLzfj1BKzVCK5HDgL2zvr1CM4','y29TBwfUzenVBNrYB2W','sfruua','C2vZC2LVBI5WCMvZzw50yxrPB24','y2fUy2vS','ywr2zxj0AxnLza','uLvotKvsx0nptLrst0XFquXsrufewv9ct1vordO','zw50CMLLCW','ntC2mZC3nKzxzfLfzq','CMvTB3zLtMf0AxzL','zgvJAwrLqxbWCM92ywW','BMf0AxzL','owT2zvrrAW','CMvTzw1Izxjnyw5Hz2vKtMf0AxzL','ywnJzxnZt3b0Aw9UCW','u1resu8','CNvUBMvY','CMvUyw1LtMf0AxzL','DxjS','uLvotKvsx0nbuefcsuXjvfLFvu5tvvbqt1juruq','C2vYDMvYtMfTzq','C3rHCNq','zMLSDgvY','zMLUza','C3vWCg9YDhndB25MAwD1CMf0Aw9U','Aw50zxjJzxb0C1j1BNm','CMvHzev4DgvYBMfSqwn0AxzPDhK','ntm2mJHNEMn6whi','DxnLC1j1BM5LCLrPDgXLrM9YuMvUyw1L','C3rYAw5N','C3vWCg9YDgvKrwzMB3j0CW','CMvHzenVBNzLCNnHDgLVBKHPC3rVCNK','nKjVr3vkAq','C3rHCNrnyw5Hz2vKuNvU','C2vYDMLJzvrPzxi','C3vJy2vZCW','y2HHBM5LBfrVA2vU','Aw5JBhvKzxm','C29Tzq','BMf0AxzLqwXPyxnLC0zVCG','AxnbCNjHEq','C2vZC2LVBI5YzxDPBMq','B2jQzwn0','zxHLy3v0zq','ChvZAa','zwzMB3j0','CgLUBMvK','uLvotKvsx0nptu1btKrFq09ovfjptf9btfjfqurzx0jpvu5eoG','uLvotKvsx0nptu1btKrFvu5bvKfjtefcteu','ChjVzMLSzuzVCLzHBgLKyxrPB24','CMvMCMvZAfbYB2zPBgu','zxHLy3v0zuDSB2jHBenVBw1HBMq','BMfTzq','CMvHze1HBMfNzwrsDw5UzxjuAxrSzq','CNvUBMvYvgL0Bgu','CMvQzwn0','D29YA3nWywnLswq','zw52AxjVBM1LBNq','yxjNCW','uLvotKvsx0nptLrst0XFtK9ux0jpvu5eoG','zM9YA05HDgL2zq','z2XVyMfSlwnVBw1HBMq','Bw9KzwXZ','C2f2zu5HDgL2zvnLC3nPB25nzxrHzgf0yq','ywnJzxnZ','yMLUzenVBNrYB2W','y2fWywjPBgL0Eq','ChjLCgfYzu1LC3nHz2vjBNb1Da','DgL0Bgu','DhjHBNnWB3j0','zxHLy3v0zunVBw1HBMq','nta1u0jAv3bf','ChjVAMvJDgvKuNvUBMvYvgL0Bgu','CMvZCg9UzfvZzxjjBNb1Da','CMvHze9MzMLJAwfSq29UDMvYC2f0Aw9U','zgvSAxzLCKnOyw5UzwW','uKvkrunuruq','y29TBwfUza','ywnJzxb0C1j1BG','AgvHzgvYCW','y29UzMLNDxjHDgLVBG','C2fMzvbHCNnL','mZyYotm2ndjJA1fZvNO','zw5HyMXLza','BMf0AxzLsw1Hz2vsB290CW','zgf0yq','mtm2ndy1otb1zurYyNe'];_0x2a0d=function(){return _0x5c9590;};return _0x2a0d();}export class AbstractRunner{[_0x50083c(0x177)];[_0x50083c(0x185)];[_0x50083c(0x189)]=!![];[_0x50083c(0x19d)]=![];async[_0x50083c(0x1b6)](_0x46894a,_0xdb77c1,_0x3fc21c={}){const _0x354e89=_0x50083c;return void[_0xdb77c1,_0x3fc21c],this[_0x354e89(0x17e)](_0x46894a);}[_0x50083c(0x19c)](_0x4e0bc8,_0x67a5f2,_0xce759f){const _0x10c50c=_0x50083c;void[_0x67a5f2,_0xce759f];const _0x314094=this[_0x10c50c(0x1b5)](),_0x448de6=_0x314094[_0x10c50c(0x1c2)][_0x10c50c(0x19b)](_0x132375=>_0x132375['id']===_0x4e0bc8[_0x10c50c(0x183)]);return _0x4e0bc8[_0x10c50c(0x194)]===this[_0x10c50c(0x1b8)]&&_0x448de6!==undefined&&_0x448de6[_0x10c50c(0x1a2)][_0x10c50c(0x1a9)](_0x4e0bc8[_0x10c50c(0x1b1)])&&_0x314094[_0x10c50c(0x192)][_0x10c50c(0x1aa)](_0x483c25=>_0x483c25['id']===_0x4e0bc8[_0x10c50c(0x15b)]);}[_0x50083c(0x176)](_0x441901,_0x4d49db,_0x5d3ff9){const _0x1fecbc=_0x50083c;void[_0x441901,_0x4d49db,_0x5d3ff9];throw new RunnerCapabilityError(this[_0x1fecbc(0x1b8)],_0x1fecbc(0x187));}[_0x50083c(0x15e)](_0x3c8f6c,_0x49da3e){return void _0x49da3e,_0x3c8f6c;}[_0x50083c(0x181)](_0x486e1b,_0x51ec28){return resolvedMcpServers(_0x486e1b,_0x51ec28);}[_0x50083c(0x1a8)](_0x5b923d){return void _0x5b923d,undefined;}[_0x50083c(0x166)](_0x4da0f6,_0x4927b9,_0x5f14df,_0x32d2a0,_0x597c9f,_0x2ec4f7){const _0x3bc3f3=_0x50083c;return void[_0x4da0f6,_0x4927b9,_0x5f14df,_0x32d2a0,_0x597c9f,_0x2ec4f7],_0x3bc3f3(0x167);}[_0x50083c(0x1b7)](_0x23e44e,_0x3a7cb2){const _0x513df2=_0x50083c;void[_0x23e44e,_0x3a7cb2];throw new RunnerCapabilityError(this[_0x513df2(0x1b8)],_0x513df2(0x1c1));}[_0x50083c(0x1a6)](){return undefined;}[_0x50083c(0x1a0)](){return![];}async[_0x50083c(0x195)](_0x26e774,_0xb1b581,_0x1f10b8){const _0xd4952a=_0x50083c;if(_0x26e774[_0xd4952a(0x179)]===null)return;_0x1f10b8[_0xd4952a(0x1c3)]({'runner':_0x26e774[_0xd4952a(0x194)],'externalSessionId':_0x26e774[_0xd4952a(0x179)],'workspaceId':_0x26e774[_0xd4952a(0x1bc)],..._0xb1b581[_0xd4952a(0x15f)]===undefined?{}:{'customTitle':_0xb1b581[_0xd4952a(0x15f)]},..._0xb1b581[_0xd4952a(0x1b2)]===undefined?{}:{'pinned':_0xb1b581[_0xd4952a(0x1b2)]}});}async[_0x50083c(0x18d)](_0x835abf,_0x5a8098){return void[_0x835abf,_0x5a8098],![];}async[_0x50083c(0x1c0)](_0x164ab2,_0x50e8b5,_0x331ee1){const _0x48ce33=_0x50083c;void[_0x164ab2,_0x50e8b5,_0x331ee1];throw new RunnerCapabilityError(this[_0x48ce33(0x1b8)],_0x48ce33(0x1ad));}[_0x50083c(0x163)](_0x3c96f3,_0x2f40b0,_0x487801){const _0x1a47c2=_0x50083c;return void _0x487801,_0x2f40b0[_0x1a47c2(0x15f)]??_0x3c96f3?.[_0x1a47c2(0x1ba)]??null;}[_0x50083c(0x17d)](_0x34a00d){return void _0x34a00d,undefined;}[_0x50083c(0x1ab)](_0x3e3c0a){return void _0x3e3c0a,[];}[_0x50083c(0x17c)](_0xaf4b2a){void _0xaf4b2a;}[_0x50083c(0x191)](_0x118f86,_0x3fb6ea){void[_0x118f86,_0x3fb6ea];}async[_0x50083c(0x1b9)](_0x3a1f95,_0x2a264f){return void[_0x3a1f95,_0x2a264f],undefined;}async[_0x50083c(0x165)](_0x5d2751,_0x4d926e,_0x21ac39){return void[_0x5d2751,_0x4d926e,_0x21ac39],undefined;}async[_0x50083c(0x1a3)](_0x4291a6){const _0xde79b5=_0x50083c,_0x7ad614=await _0x4291a6[_0xde79b5(0x18f)]();return _0x7ad614===undefined?undefined:{..._0x7ad614,'source':_0xde79b5(0x18f)};}async[_0x50083c(0x19e)](_0x160fe8){return void _0x160fe8,undefined;}[_0x50083c(0x172)](){return!![];}[_0x50083c(0x16f)](_0xdf7d43){return void _0xdf7d43,[];}[_0x50083c(0x184)](_0xa33fa0){return void _0xa33fa0,undefined;}[_0x50083c(0x15c)](_0x1574e6){const _0x10b88b=_0x50083c;if(this[_0x10b88b(0x177)]!==undefined)throw new Error(_0x10b88b(0x18a)+this[_0x10b88b(0x1b8)]);this[_0x10b88b(0x177)]=_0x1574e6;}[_0x50083c(0x169)](_0x43f9ad){const _0x4f6a72=_0x50083c;return this[_0x4f6a72(0x19d)]||_0x43f9ad===this[_0x4f6a72(0x1b8)];}[_0x50083c(0x1a5)](_0x253f20){const _0x5d99ca=_0x50083c;if(this[_0x5d99ca(0x177)]===undefined)throw new Error(_0x5d99ca(0x1bf)+this[_0x5d99ca(0x1b8)]);this[_0x5d99ca(0x177)][_0x5d99ca(0x199)](_0x253f20);}[_0x50083c(0x178)](_0x1170d9,_0x3343ea){const _0x24e62d=_0x50083c;return this[_0x24e62d(0x177)]?.[_0x24e62d(0x188)](_0x1170d9,_0x3343ea)===!![];}[_0x50083c(0x18e)](_0x36259d){const _0x5908dd=_0x50083c;return this[_0x5908dd(0x177)]?.[_0x5908dd(0x18e)]?.(_0x36259d)===!![];}[_0x50083c(0x164)](_0x568494,_0x3a0133,_0x1e2982){const _0x43458c=_0x50083c;return this[_0x43458c(0x177)]?.[_0x43458c(0x164)]?.(_0x568494,_0x3a0133,_0x1e2982)===!![];}[_0x50083c(0x17a)](_0x10ff94){const _0x5942ea=_0x50083c;if(this[_0x5942ea(0x185)]!==undefined)throw new Error(_0x5942ea(0x1b3)+this[_0x5942ea(0x1b8)]);this[_0x5942ea(0x185)]=_0x10ff94;}[_0x50083c(0x161)](_0x3b970d,_0x525d5d,_0x32340f,_0x3f781d){const _0x492c4f=_0x50083c;if(this[_0x492c4f(0x185)]===undefined)return Promise[_0x492c4f(0x1bb)](new Error(_0x492c4f(0x1b4)));return this[_0x492c4f(0x185)][_0x492c4f(0x1af)](_0x3b970d,_0x525d5d,_0x32340f,_0x3f781d);}}function resolvedMcpServers(_0x1adf54,_0x387ca3){const _0x2024b7=_0x50083c;if(!Array[_0x2024b7(0x1ac)](_0x1adf54))return[];const _0x2dece5=[];for(const _0x4d9ce3 of _0x1adf54){if(_0x4d9ce3===null||typeof _0x4d9ce3!==_0x2024b7(0x1ae)||Array[_0x2024b7(0x1ac)](_0x4d9ce3))continue;const _0x53ffa5=_0x4d9ce3;if(typeof _0x53ffa5[_0x2024b7(0x198)]!==_0x2024b7(0x1a1)||_0x53ffa5[_0x2024b7(0x16e)]!==!![])continue;const _0x16185e=mcpRuntimeDescriptorSchema[_0x2024b7(0x16c)](_0x53ffa5[_0x2024b7(0x174)]);if(!_0x16185e[_0x2024b7(0x1a7)])continue;const _0x631bae=isRecord(_0x53ffa5[_0x2024b7(0x16b)])?_0x53ffa5[_0x2024b7(0x16b)]:{},_0x3ef62b=_0x4e7b21=>{const _0x21258d=_0x2024b7;if(!isRecord(_0x4e7b21))return{};const _0x438402={};for(const [_0x572195,_0x418bc3]of Object[_0x21258d(0x18b)](_0x4e7b21)){if(!isRecord(_0x418bc3)||typeof _0x418bc3[_0x21258d(0x180)]!==_0x21258d(0x1a1))return undefined;const _0x159088=_0x387ca3[_0x418bc3[_0x21258d(0x180)]];if(_0x159088===undefined)return undefined;_0x438402[_0x572195]=_0x159088;}return _0x438402;};if(_0x16185e[_0x2024b7(0x170)][_0x2024b7(0x160)]===_0x2024b7(0x193)){const _0x4e6deb=_0x3ef62b(_0x16185e[_0x2024b7(0x170)][_0x2024b7(0x1bd)]),_0x3db1dd=_0x3ef62b(_0x631bae[_0x2024b7(0x1bd)]);if(_0x4e6deb===undefined||_0x3db1dd===undefined)continue;_0x2dece5[_0x2024b7(0x1b0)]({'name':_0x53ffa5[_0x2024b7(0x198)],'transport':_0x2024b7(0x193),'command':_0x16185e[_0x2024b7(0x170)][_0x2024b7(0x168)],'args':[..._0x16185e[_0x2024b7(0x170)][_0x2024b7(0x1be)],...Array[_0x2024b7(0x1ac)](_0x631bae[_0x2024b7(0x17f)])?_0x631bae[_0x2024b7(0x17f)][_0x2024b7(0x19a)](_0x2096d4=>typeof _0x2096d4===_0x2024b7(0x1a1)):[]],'environment':{..._0x4e6deb,..._0x3db1dd}});}else{const _0x326efd=_0x3ef62b(_0x16185e[_0x2024b7(0x170)][_0x2024b7(0x16a)]),_0x434eac=_0x3ef62b(_0x631bae[_0x2024b7(0x16a)]);if(_0x326efd===undefined||_0x434eac===undefined)continue;_0x2dece5[_0x2024b7(0x1b0)]({'name':_0x53ffa5[_0x2024b7(0x198)],'transport':_0x2024b7(0x186),'url':_0x16185e[_0x2024b7(0x170)][_0x2024b7(0x196)],'headers':{..._0x326efd,..._0x434eac}});}}return _0x2dece5;}function isRecord(_0x30bea6){const _0x4ed320=_0x50083c;return _0x30bea6!==null&&typeof _0x30bea6===_0x4ed320(0x1ae)&&!Array[_0x4ed320(0x1ac)](_0x30bea6);}export class RunnerCapabilityError extends Error{[_0x50083c(0x194)];[_0x50083c(0x15d)];constructor(_0x45826a,_0x906fbb){const _0x5efca0=_0x50083c;super(_0x5efca0(0x197)),this[_0x5efca0(0x194)]=_0x45826a,this[_0x5efca0(0x15d)]=_0x906fbb;}}
@@ -1,345 +1,2 @@
1
- import { createEnvelope } from '@myagentroam/protocol';
2
- import { ClaudeChannelGate } from '../../claude-channel.js';
3
- import { boundedConversationItemId, claudePlanText, compactRunnerText, compactRunnerValue, extractClaudeText, extractClaudeThinkingSummaries, extractClaudeToolResults, extractClaudeToolUses, isClaudeCommandTool } from '../codex/conversation-parser.js';
4
- import { claudeContentBlocks } from '../../util/node-operation-parsers.js';
5
- import { parseSecretEnvironment } from '../../util/secret-environment.js';
6
- import { safeErrorCode } from '../../util/safe-error.js';
7
- import { runnerErrorProjection } from '../../util/runner-error.js';
8
- export class ClaudeManagedRunController {
9
- runner;
10
- host;
11
- constructor(runner, host) {
12
- this.runner = runner;
13
- this.host = host;
14
- }
15
- async executeCommand(session, command, input, context) {
16
- if (command.id === 'compact')
17
- return this.compact(session, input, context.secretEnvironment);
18
- if (command.id !== 'plan' || session.access === 'plan')
19
- throw new Error('RUNNER_COMMAND_UNAVAILABLE');
20
- const current = this.host.commandState(session.id, 'plan');
21
- if (current?.active)
22
- this.host.clearCommandState(session.id, 'plan');
23
- else
24
- this.host.setCommandState(session.id, {
25
- commandId: 'plan',
26
- active: true,
27
- label: 'Plan Mode',
28
- detail: 'Subsequent messages run in read-only tagged Plan Mode and produce a plan card.',
29
- closable: true,
30
- closeInput: '/plan',
31
- continuation: { label: 'Implement', prompt: 'Implement the plan above.' }
32
- });
33
- return { command: command.id, states: this.host.commandStates(session.id) };
34
- }
35
- compact(session, input, secretEnvironment) {
36
- if (session.externalSessionId === null ||
37
- session.nativeControl !== 'MAR_MANAGED' ||
38
- this.host.hasActiveSessionLease(session.id))
39
- throw new Error('RUNNER_COMMAND_UNAVAILABLE');
40
- const runId = crypto.randomUUID();
41
- this.host.adopt({
42
- runId,
43
- sessionId: session.id,
44
- runner: 'claude-code',
45
- cwd: session.cwd,
46
- externalSessionId: session.externalSessionId
47
- });
48
- this.host.rememberNative(session.externalSessionId, session.id);
49
- this.start(createEnvelope('run.start', {
50
- runId,
51
- sessionId: session.id,
52
- runner: 'claude-code',
53
- input,
54
- cwd: session.cwd,
55
- externalSessionId: session.externalSessionId,
56
- model: session.model,
57
- effort: session.effort,
58
- access: session.access,
59
- secretEnvironment
60
- }));
61
- return {
62
- command: 'compact',
63
- run: this.host.run(runId),
64
- states: this.host.commandStates(session.id)
65
- };
66
- }
67
- start(envelope) {
68
- const payload = envelope.payload;
69
- if (payload.runner !== 'claude-code' ||
70
- typeof payload.runId !== 'string' ||
71
- typeof payload.sessionId !== 'string' ||
72
- typeof payload.input !== 'string' ||
73
- typeof payload.cwd !== 'string' ||
74
- this.host.intercepted() ||
75
- this.host.active.has(payload.runId))
76
- return;
77
- const runId = payload.runId;
78
- const sessionId = payload.sessionId;
79
- const cwd = payload.cwd;
80
- let attachments;
81
- let secretEnvironment;
82
- try {
83
- attachments = this.host.parseAttachments(payload.attachments);
84
- secretEnvironment = parseSecretEnvironment(payload.secretEnvironment);
85
- }
86
- catch (error) {
87
- this.host.emit(runId, 'run.rejected', { code: safeErrorCode(error, 'MESSAGE_ATTACHMENTS_INVALID') }, 'FAILED');
88
- return;
89
- }
90
- this.host.adopt({
91
- runId,
92
- sessionId,
93
- runner: 'claude-code',
94
- cwd,
95
- ...(typeof payload.externalSessionId === 'string'
96
- ? { externalSessionId: payload.externalSessionId }
97
- : {})
98
- });
99
- // An insert request may interrupt a Claude Run while its SDK Channel is
100
- // still starting. Do not start that stale Channel after the replacement
101
- // message has been accepted; emit its terminal projection to release the
102
- // replacement queued behind it.
103
- if (this.host.run(runId)?.status === 'INTERRUPTED') {
104
- this.host.emit(runId, 'run.completed', { status: 'INTERRUPTED' }, 'INTERRUPTED');
105
- return;
106
- }
107
- if (this.host.completeCancelled(runId, cwd))
108
- return;
109
- if (typeof payload.externalSessionId === 'string' &&
110
- !this.runner.execution.managedNativeIds.has(payload.externalSessionId)) {
111
- this.host.emit(runId, 'run.rejected', { code: 'EXTERNAL_SESSION_OBSERVE_ONLY' }, 'FAILED');
112
- return;
113
- }
114
- this.host.active.add(runId);
115
- this.host.emit(runId, 'run.started', {}, 'STARTING');
116
- let terminal = false;
117
- let handle;
118
- const toolKinds = new Map();
119
- const finish = (status, eventType, eventPayload, failure, fallbackCode = 'CLAUDE_RUN_FAILED') => {
120
- if (terminal)
121
- return;
122
- terminal = true;
123
- const projected = status === 'FAILED'
124
- ? runnerErrorProjection(failure ?? eventPayload, fallbackCode)
125
- : undefined;
126
- if (projected !== undefined) {
127
- this.host.emitItem(runId, {
128
- itemId: boundedConversationItemId('runner-error', runId),
129
- kind: 'error',
130
- status: 'FAILED',
131
- payload: { ...projected, recoverable: true, retryAfterMs: null }
132
- });
133
- }
134
- this.host.emit(runId, eventType, projected ?? eventPayload, status);
135
- this.runner.execution.runs.delete(runId);
136
- handle?.cancel();
137
- this.host.active.delete(runId);
138
- };
139
- try {
140
- const gate = new ClaudeChannelGate(sessionId);
141
- handle = this.runner.startChannel({
142
- prompt: payload.input,
143
- cwd,
144
- ...(typeof payload.externalSessionId === 'string'
145
- ? { resumeSessionId: payload.externalSessionId }
146
- : {}),
147
- ...(typeof payload.model === 'string' ? { model: payload.model } : {}),
148
- ...(typeof payload.effort === 'string' ? { effort: payload.effort } : {}),
149
- ...(typeof payload.access === 'string' ? { access: payload.access } : {}),
150
- environment: secretEnvironment,
151
- ...(typeof payload.personalInstructions === 'string'
152
- ? { personalInstructions: payload.personalInstructions }
153
- : {}),
154
- mcpServers: this.runner.mcpConfiguration(payload.mcpInstallations, secretEnvironment),
155
- ...(attachments.length === 0
156
- ? {}
157
- : {
158
- attachments: attachments.map((attachment) => ({
159
- mime: attachment.mime,
160
- dataBase64: attachment.dataBase64
161
- }))
162
- }),
163
- onPermission: (toolName, toolInput, options) => toolName === 'AskUserQuestion'
164
- ? (toolKinds.set(options.toolUseID, 'user_input_request'),
165
- this.host.requestUserInput(runId, toolInput, options.toolUseID))
166
- : this.host.requestApproval(runId, toolName, toolInput),
167
- onChannelReply: (content) => this.host.emit(runId, 'channel.reply', { content }),
168
- onMessage: (message) => {
169
- const record = message;
170
- const nativeSessionId = typeof record.session_id === 'string' ? record.session_id : undefined;
171
- const current = this.runner.execution.runs.get(runId);
172
- if (nativeSessionId !== undefined && current !== undefined) {
173
- const firstNativeSessionId = current.nativeSessionId === undefined;
174
- if (firstNativeSessionId)
175
- this.runner.execution.runs.set(runId, { ...current, nativeSessionId });
176
- const managed = this.host.session(sessionId);
177
- if (managed?.nativeControl === 'MAR_MANAGED')
178
- this.host.rememberNative(nativeSessionId, managed.id);
179
- if (firstNativeSessionId && typeof payload.externalSessionId !== 'string') {
180
- this.host.promote(sessionId, nativeSessionId);
181
- this.host.send('session.external-id', {
182
- sessionId,
183
- externalSessionId: nativeSessionId
184
- });
185
- const managed = this.runner.execution.runs.get(runId);
186
- if (managed !== undefined)
187
- this.runner.execution.runs.set(runId, {
188
- ...managed,
189
- marSessionId: nativeSessionId
190
- });
191
- }
192
- }
193
- if (record.type === 'assistant') {
194
- const text = extractClaudeText(record);
195
- const planText = claudePlanText(text);
196
- if (planText !== undefined)
197
- this.host.emitItem(runId, {
198
- itemId: boundedConversationItemId('claude-plan', typeof record.uuid === 'string' ? record.uuid : `${runId}:plan`),
199
- kind: 'plan',
200
- status: 'COMPLETED',
201
- payload: { explanation: compactRunnerText(planText, 20_000), steps: [] }
202
- });
203
- else if (text.length > 0)
204
- this.host.emit(runId, 'text.delta', { text });
205
- for (const [index, text] of extractClaudeThinkingSummaries(record).entries()) {
206
- this.host.emitItem(runId, {
207
- itemId: boundedConversationItemId('claude-reasoning', `${typeof record.uuid === 'string' ? record.uuid : runId}:${index}`),
208
- kind: 'reasoning_summary',
209
- status: 'COMPLETED',
210
- payload: { sections: [{ index, text }] }
211
- });
212
- }
213
- for (const tool of extractClaudeToolUses(record)) {
214
- if (tool.name === 'AskUserQuestion') {
215
- toolKinds.set(tool.id, 'user_input_request');
216
- continue;
217
- }
218
- const itemId = boundedConversationItemId('claude-tool', tool.id);
219
- const kind = isClaudeCommandTool(tool.name) ? 'command_execution' : 'tool_call';
220
- toolKinds.set(tool.id, kind);
221
- this.host.emitItem(runId, {
222
- itemId,
223
- kind,
224
- status: 'IN_PROGRESS',
225
- payload: kind === 'command_execution'
226
- ? {
227
- command: compactRunnerText(tool.command ?? tool.name, 10_000),
228
- cwd: null,
229
- outputPreview: '',
230
- outputRef: null,
231
- exitCode: null,
232
- durationMs: null,
233
- truncated: false
234
- }
235
- : {
236
- namespace: 'claude-code',
237
- toolName: compactRunnerText(tool.name, 128),
238
- title: compactRunnerText(tool.name, 500),
239
- inputSummary: compactRunnerValue(tool.input, 10_000).text || null,
240
- outputSummary: null,
241
- progressLabel: null,
242
- errorCode: null,
243
- truncated: tool.inputTruncated
244
- }
245
- });
246
- }
247
- for (const [index, block] of claudeContentBlocks(record).entries()) {
248
- const type = typeof block.type === 'string' ? block.type : 'unknown';
249
- if (type === 'text' ||
250
- type === 'thinking' ||
251
- type === 'redacted_thinking' ||
252
- type === 'encrypted_thinking' ||
253
- type === 'tool_use' ||
254
- type === 'tool_result')
255
- continue;
256
- this.host.emitItem(runId, {
257
- itemId: boundedConversationItemId('claude-item', `${typeof record.uuid === 'string' ? record.uuid : runId}:${index}`),
258
- kind: 'unknown',
259
- status: 'COMPLETED',
260
- payload: {
261
- sourceEventType: `claude-code:${type}`,
262
- label: `Claude Code ${compactRunnerText(type, 128)}`
263
- }
264
- });
265
- }
266
- }
267
- if (record.type === 'tool_progress' && typeof record.tool_use_id === 'string') {
268
- const kind = toolKinds.get(record.tool_use_id);
269
- if (kind === 'tool_call') {
270
- const elapsed = typeof record.elapsed_time_seconds === 'number'
271
- ? ` (${Math.max(0, Math.round(record.elapsed_time_seconds))} seconds)`
272
- : '';
273
- this.host.emitItem(runId, {
274
- itemId: boundedConversationItemId('claude-tool', record.tool_use_id),
275
- kind,
276
- status: 'IN_PROGRESS',
277
- payload: {
278
- progressLabel: compactRunnerText(`${typeof record.tool_name === 'string' ? record.tool_name : 'Tool'} is running${elapsed}`, 500),
279
- progressLabelCode: typeof record.elapsed_time_seconds === 'number'
280
- ? 'TOOL_RUNNING_WITH_DURATION'
281
- : 'TOOL_RUNNING',
282
- progressLabelParameters: {
283
- tool: typeof record.tool_name === 'string' ? record.tool_name : 'Tool',
284
- seconds: typeof record.elapsed_time_seconds === 'number'
285
- ? Math.max(0, Math.round(record.elapsed_time_seconds))
286
- : 0
287
- }
288
- },
289
- merge: true
290
- });
291
- }
292
- }
293
- if (record.type === 'user') {
294
- for (const result of extractClaudeToolResults(record)) {
295
- const kind = toolKinds.get(result.toolUseId) ?? 'tool_call';
296
- if (kind === 'user_input_request')
297
- continue;
298
- this.host.emitItem(runId, {
299
- itemId: boundedConversationItemId('claude-tool', result.toolUseId),
300
- kind,
301
- status: result.failed ? 'FAILED' : 'COMPLETED',
302
- payload: kind === 'command_execution'
303
- ? {
304
- outputPreview: result.output,
305
- exitCode: null,
306
- durationMs: null,
307
- truncated: result.truncated
308
- }
309
- : {
310
- outputSummary: result.output,
311
- progressLabel: null,
312
- errorCode: result.failed ? 'TOOL_EXECUTION_FAILED' : null,
313
- truncated: result.truncated
314
- },
315
- merge: true
316
- });
317
- }
318
- }
319
- if (record.type === 'result') {
320
- const subtype = typeof record.subtype === 'string' ? record.subtype : 'unknown';
321
- const completedNativeSessionId = this.runner.execution.runs.get(runId)?.nativeSessionId ?? nativeSessionId;
322
- this.host.emit(runId, 'turn.completed', {
323
- subtype
324
- });
325
- // A Channel uses a long-lived input iterable. Receiving an SDK
326
- // result completes this AgentRun even though that iterable can
327
- // remain open waiting for another user turn; waiting only for
328
- // stream closure would leave the WorkspaceLease permanently held.
329
- finish(subtype === 'success' && record.is_error !== true ? 'SUCCEEDED' : 'FAILED', subtype === 'success' && record.is_error !== true ? 'run.completed' : 'run.failed', { subtype }, record);
330
- if (completedNativeSessionId !== undefined)
331
- void this.host.syncTitle(sessionId, completedNativeSessionId, cwd);
332
- }
333
- }
334
- });
335
- this.runner.execution.runs.set(runId, { marSessionId: sessionId, cwd, handle, gate });
336
- this.host.setChannelToken(sessionId, gate.token);
337
- this.host.send('session.channel.ready', { sessionId, token: gate.token });
338
- this.host.emit(runId, 'run.running', {}, 'RUNNING');
339
- void handle.completed.then(() => finish('SUCCEEDED', 'run.completed', { subtype: 'stream_closed' }), (error) => finish('FAILED', 'run.failed', { code: safeErrorCode(error, 'CLAUDE_RUN_FAILED') }, error));
340
- }
341
- catch (error) {
342
- finish('FAILED', 'run.failed', { code: safeErrorCode(error, 'CLAUDE_RUN_START_FAILED') }, error, 'CLAUDE_RUN_START_FAILED');
343
- }
344
- }
345
- }
1
+ /* mar-release-protected */
2
+ const _0xa18250=_0x1807;function _0x4ae1(){const _0x5ce70a=['igLZihj1BM5PBMC','y29TCgXLDgvK','uLvotKvsx0nptu1btKrFvu5bvKfjtefcteu','ve9ptf9fwevdvvrjt05FrKfjteve','Ag9ZDa','CNvUswq','CNvUlNn0yxj0zwq','y2XHDwrLlxjLyxnVBMLUzW','Dg9VBfvZzuLK','y2XHDwrLlxbSyw4','CgXHBG','BwnWq29UzMLNDxjHDgLVBG','BgvUz3rO','ywrK','C3rYzwfTx2nSB3nLza','zxHLy3v0zunVBw1HBMq','C2vUza','y2HHBM5LBc5YzxbSEq','AgfZ','u3vIC2vXDwvUDcbTzxnZywDLCYbYDw4GAw4GCMvHzc1VBMX5ihrHz2DLzcbqBgfUie1VzguGyw5KihbYB2r1y2uGysbWBgfUignHCMqU','CNvU','CNvUlMnVBxbSzxrLza','y2XHDwrLlwnVzgu','Dgv4Dc5KzwX0yq','Dg9Rzw4','sw1WBgvTzw50ihrOzsbWBgfUigfIB3zLlG','BwnWsw5ZDgfSBgf0Aw9UCW','CMvZDwX0','C2vZC2LVBI5LEhrLCM5HBc1Pza','Dhj1BMnHDgvK','zMfPBgvK','y2XHDwrLlwnVzgu6','yxr0ywnOBwvUDhm','C2v0q29TBwfUzfn0yxrL','Dw5RBM93BG','CMfUzg9Tvvvjra','DhLWzq','CMvKywn0zwrFDgHPBMTPBMC','vg9VBa','AxnFzxjYB3i','zw1PDa','CNvUlNj1BM5PBMC','ntyXndq0qvbnuMjI','uLvotKLorW','y29TBwfUzf9LEgvJDxrPB24','Dg9VBfvZzuLe','q09nueXfveve','Dg9VBf9JywXS','q2XHDwrLienVzguG','ve9ptf9svu5osu5hx1DjveHFrfvsqvrjt04','y29TCgfJDa','DgHPBMTPBMC','yxnZAxn0yw50','C2v0','C3rHDhvZ','CMvXDwvZDfvZzxjjBNb1Da','ihnLy29UzhmP','DgHLBG','C3rHCNq','Cgf5Bg9Hza','z2v0','C2vJCMv0rw52AxjVBM1LBNq','BMfTzq','zgf0yujHC2u2na','Dg9VBf91C2u','Dg9VBf9Uyw1L','CM91BMq','CNvUlNjLAMvJDgvK','mZi3nZe1rLrRvfDz','nePKzuj6za','BMf0AxzLq29UDhjVBa','Bw9KzwW','BNvTyMvY','u1rbuLrjtKC','y29TBwfUzfn0yxrL','C3rHCNrdAgfUBMvS','y2XLyxjdB21Tyw5Ku3rHDgu','mJC5mZuXzuHLBMjq','DxnLCL9PBNb1Df9Yzxf1zxn0','oNbSyw4','y29TBwfUzfn0yxrLCW','qxnRvxnLCLf1zxn0Aw9U','ChjVBw90zq','CgfYC2vbDhrHy2HTzw50CW','ywrVChq','zwzMB3j0','mtzlvNDetK4','zwXHChnLzf90Aw1Lx3nLy29Uzhm','y2XHDwrLlxrVB2W','ywn0AxzL','zxHLy3v0Aw9U','mtj6AgPYuKC','tufsx01btKfhruq','Dg9VBf9WCM9NCMvZCW','rvHurvjoquXFu0vtu0LptL9pqLnfuLzfx09otfK','y2fUy2vS','ywnJzxnZ','B3v0Chv0','ve9ptf9svu5osu5h','BwfW','zxjYB3i','CMvXDwvZDefWChjVDMfS','su5urvjsvvburuq','nZbUCLHPBuK','sw1WBgvTzw50','C3LUy1rPDgXL','Aw5WDxq','CMvHC29UAw5Nx3n1Bw1HCNK','CNvUBMvYlwvYCM9Y','C2vZC2LVBL9Pza','DxvPza','mtq5mJqXAxHrvwHK','rKfjteve','DhvYBI5JB21WBgv0zwq','C2vZC2LVBKLK','otKXodKWoxjgzMfnqW','tuvtu0fhrv9bvfrbq0Hnru5uu19jtLzbteLe','C2vZC2LVBG','C3vIDhLWzq','BMf0AxzLu2vZC2LVBKLK','q0Xbvurfx1jvtL9tvefsvf9gquLmruq','odG3nZm5yNrWEeHt','Dgv4Da','zgvSzxrL','odaXoti3t1DeyLLl','CNvUBMvY','ugXHBIbnB2rL','DxnLCG','zw50CMLLCW','Aw50zxjJzxb0zwq','Bwf4','Dg9VBf9Yzxn1Bhq','l3bSyw4','su5Fufjpr1jfu1m','CgvYC29UywXjBNn0CNvJDgLVBNm','BwLTzq','zxH0zxjUywXtzxnZAw9Uswq','y29TCgXLDgvdyw5JzwXSzwq','CMvTzw1IzxjoyxrPDMu','u1vdq0vfreve','C2vZC2LVBI5JAgfUBMvSlNjLywr5','BwfUywDLze5HDgL2zuLKCW','y3DK','y29TBwfUza','y2XHDwrLlwL0zw0','C3vJy2vZCW','AgfZqwn0AxzLu2vZC2LVBKXLyxnL','CNvUCW','CNvUlNn0yxj0','zw1PDeL0zw0','Dg9VBf91C2vFAwq','q0Xbvurfx1jvtL9gquLmruq','C3rYAw5N','zw5JCNLWDgvKx3rOAw5RAw5N','Aw5WDxruCNvUy2f0zwq','C2v0q2HHBM5LBfrVA2vU','CNvUlMzHAwXLza'];_0x4ae1=function(){return _0x5ce70a;};return _0x4ae1();}(function(_0x26f960,_0x4af70d){const _0x20dc6f=_0x1807,_0x36cf1f=_0x26f960();while(!![]){try{const _0x1f7006=-parseInt(_0x20dc6f(0x1b8))/(-0x13fb+0x5*-0x2bd+0x25*0xe9)+parseInt(_0x20dc6f(0x173))/(0x2d*-0xce+-0x2193+0x11*0x41b)+-parseInt(_0x20dc6f(0x125))/(-0xd*-0x293+-0x1*0x1280+-0xef4)*(parseInt(_0x20dc6f(0x18e))/(-0x1937+0x12b7+0x684))+parseInt(_0x20dc6f(0x18d))/(0x1da7+-0x299+0x1*-0x1b09)*(-parseInt(_0x20dc6f(0x1a4))/(0x8c4*0x4+0xd8d*-0x1+0x1*-0x157d))+parseInt(_0x20dc6f(0x128))/(-0x20*-0x91+0x16e6*0x1+-0x28ff*0x1)*(-parseInt(_0x20dc6f(0x19f))/(-0x1868+-0x2a4+0x4*0x6c5))+parseInt(_0x20dc6f(0x196))/(-0x17*0x175+-0xd72+0x2efe)*(-parseInt(_0x20dc6f(0x1b0))/(-0x2081+-0x68d+0x2718))+parseInt(_0x20dc6f(0x11f))/(0x41f+0x1d*-0x3d+0x2d5);if(_0x1f7006===_0x4af70d)break;else _0x36cf1f['push'](_0x36cf1f['shift']());}catch(_0x18a98d){_0x36cf1f['push'](_0x36cf1f['shift']());}}}(_0x4ae1,0x4162d+-0x4cc68+0x32679));import{createEnvelope}from'@myagentroam/protocol';import{ClaudeChannelGate}from'../../claude-channel.js';function _0x1807(_0x534b3b,_0x4e76e8){_0x534b3b=_0x534b3b-(0x1a86+-0x18e4+-0x84);const _0x6ae21b=_0x4ae1();let _0x4450b3=_0x6ae21b[_0x534b3b];if(_0x1807['Qmpvbs']===undefined){var _0x5c2e6c=function(_0x3c892d){const _0x157767='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x4b5983='',_0x5dfbab='';for(let _0x285a67=0x5b*0x38+-0xef8+-0x4f0,_0x32bee6,_0x369b30,_0x145c09=0x2422+0x7*-0x1d5+-0x174f;_0x369b30=_0x3c892d['charAt'](_0x145c09++);~_0x369b30&&(_0x32bee6=_0x285a67%(-0x81+-0xb2d+0xbb2*0x1)?_0x32bee6*(0x23f9+-0x1109+-0xd0*0x17)+_0x369b30:_0x369b30,_0x285a67++%(-0x389*0xb+0x10c*-0x7+0x2e3b))?_0x4b5983+=String['fromCharCode'](-0x1a8+-0x3*-0xb88+0x1e1*-0x11&_0x32bee6>>(-(-0x82f*0x1+-0x51*0x64+0x27d5)*_0x285a67&-0x1*-0x11e6+0x171d+-0x5db*0x7)):-0xdc7*-0x1+0x25cd+-0x3394*0x1){_0x369b30=_0x157767['indexOf'](_0x369b30);}for(let _0xacd3f4=-0x940*0x4+0x3*-0xac8+0x27a*0x1c,_0x17626e=_0x4b5983['length'];_0xacd3f4<_0x17626e;_0xacd3f4++){_0x5dfbab+='%'+('00'+_0x4b5983['charCodeAt'](_0xacd3f4)['toString'](0x196a+-0x220c+0x8b2))['slice'](-(0x1b48+-0x4*0x7b8+0x39a));}return decodeURIComponent(_0x5dfbab);};_0x1807['frpLqN']=_0x5c2e6c,_0x1807['QiFQts']={},_0x1807['Qmpvbs']=!![];}const _0x57b8cb=_0x6ae21b[-0x2568+0x463*0x2+0x1ca2];_0x1807['nCVlfs']!==_0x57b8cb&&(_0x1807['QiFQts']={},_0x1807['nCVlfs']=_0x57b8cb);const _0x4b85b5=_0x1807['QiFQts'][_0x534b3b];return _0x4b85b5===undefined?(_0x4450b3=_0x1807['frpLqN'](_0x4450b3),_0x1807['QiFQts'][_0x534b3b]=_0x4450b3):_0x4450b3=_0x4b85b5,_0x4450b3;}import{boundedConversationItemId,claudePlanText,compactRunnerText,compactRunnerValue,extractClaudeText,extractClaudeThinkingSummaries,extractClaudeToolResults,extractClaudeToolUses,isClaudeCommandTool}from'../codex/conversation-parser.js';import{claudeContentBlocks}from'../../util/node-operation-parsers.js';import{parseSecretEnvironment}from'../../util/secret-environment.js';import{safeErrorCode}from'../../util/safe-error.js';import{runnerErrorProjection}from'../../util/runner-error.js';export class ClaudeManagedRunController{[_0xa18250(0x129)];[_0xa18250(0x14d)];constructor(_0x20902e,_0x3a6503){const _0x4e7a74=_0xa18250;this[_0x4e7a74(0x129)]=_0x20902e,this[_0x4e7a74(0x14d)]=_0x3a6503;}async[_0xa18250(0x158)](_0x2f1e6d,_0x5ad79f,_0x4fdbb3,_0x1bf160){const _0x39f6d2=_0xa18250;if(_0x5ad79f['id']===_0x39f6d2(0x17b))return this[_0x39f6d2(0x17b)](_0x2f1e6d,_0x4fdbb3,_0x1bf160[_0x39f6d2(0x186)]);if(_0x5ad79f['id']!==_0x39f6d2(0x153)||_0x2f1e6d[_0x39f6d2(0x1a9)]===_0x39f6d2(0x153))throw new Error(_0x39f6d2(0x14b));const _0x534b3b=this[_0x39f6d2(0x14d)][_0x39f6d2(0x193)](_0x2f1e6d['id'],_0x39f6d2(0x153));if(_0x534b3b?.[_0x39f6d2(0x1a2)])this[_0x39f6d2(0x14d)][_0x39f6d2(0x195)](_0x2f1e6d['id'],_0x39f6d2(0x153));else this[_0x39f6d2(0x14d)][_0x39f6d2(0x16a)](_0x2f1e6d['id'],{'commandId':_0x39f6d2(0x153),'active':!![],'label':_0x39f6d2(0x12a),'detail':_0x39f6d2(0x15c),'closable':!![],'closeInput':_0x39f6d2(0x130),'continuation':{'label':_0x39f6d2(0x1b1),'prompt':_0x39f6d2(0x162)}});return{'command':_0x5ad79f['id'],'states':this[_0x39f6d2(0x14d)][_0x39f6d2(0x199)](_0x2f1e6d['id'])};}[_0xa18250(0x17b)](_0x4e76e8,_0x6ae21b,_0x4450b3){const _0xf93df1=_0xa18250;if(_0x4e76e8[_0xf93df1(0x134)]===null||_0x4e76e8[_0xf93df1(0x18f)]!==_0xf93df1(0x1a5)||this[_0xf93df1(0x14d)][_0xf93df1(0x13e)](_0x4e76e8['id']))throw new Error(_0xf93df1(0x14b));const _0x5c2e6c=crypto[_0xf93df1(0x16c)]();return this[_0xf93df1(0x14d)][_0xf93df1(0x19d)]({'runId':_0x5c2e6c,'sessionId':_0x4e76e8['id'],'runner':_0xf93df1(0x15f),'cwd':_0x4e76e8[_0xf93df1(0x13a)],'externalSessionId':_0x4e76e8[_0xf93df1(0x134)]}),this[_0xf93df1(0x14d)][_0xf93df1(0x136)](_0x4e76e8[_0xf93df1(0x134)],_0x4e76e8['id']),this[_0xf93df1(0x183)](createEnvelope(_0xf93df1(0x140),{'runId':_0x5c2e6c,'sessionId':_0x4e76e8['id'],'runner':_0xf93df1(0x15f),'input':_0x6ae21b,'cwd':_0x4e76e8[_0xf93df1(0x13a)],'externalSessionId':_0x4e76e8[_0xf93df1(0x134)],'model':_0x4e76e8[_0xf93df1(0x190)],'effort':_0x4e76e8[_0xf93df1(0x19e)],'access':_0x4e76e8[_0xf93df1(0x1a9)],'secretEnvironment':_0x4450b3})),{'command':_0xf93df1(0x17b),'run':this[_0xf93df1(0x14d)][_0xf93df1(0x15d)](_0x5c2e6c),'states':this[_0xf93df1(0x14d)][_0xf93df1(0x199)](_0x4e76e8['id'])};}[_0xa18250(0x183)](_0x57b8cb){const _0xd998ba=_0xa18250,_0x4b85b5=_0x57b8cb[_0xd998ba(0x184)];if(_0x4b85b5[_0xd998ba(0x129)]!==_0xd998ba(0x15f)||typeof _0x4b85b5[_0xd998ba(0x14e)]!==_0xd998ba(0x144)||typeof _0x4b85b5[_0xd998ba(0x11e)]!==_0xd998ba(0x144)||typeof _0x4b85b5[_0xd998ba(0x1b3)]!==_0xd998ba(0x144)||typeof _0x4b85b5[_0xd998ba(0x13a)]!==_0xd998ba(0x144)||this[_0xd998ba(0x14d)][_0xd998ba(0x12d)]()||this[_0xd998ba(0x14d)][_0xd998ba(0x1a2)][_0xd998ba(0x15b)](_0x4b85b5[_0xd998ba(0x14e)]))return;const _0x3c892d=_0x4b85b5[_0xd998ba(0x14e)],_0x157767=_0x4b85b5[_0xd998ba(0x11e)],_0x4b5983=_0x4b85b5[_0xd998ba(0x13a)];let _0x5dfbab,_0x285a67;try{_0x5dfbab=this[_0xd998ba(0x14d)][_0xd998ba(0x19c)](_0x4b85b5[_0xd998ba(0x169)]),_0x285a67=parseSecretEnvironment(_0x4b85b5[_0xd998ba(0x186)]);}catch(_0x17626e){this[_0xd998ba(0x14d)][_0xd998ba(0x171)](_0x3c892d,_0xd998ba(0x18c),{'code':safeErrorCode(_0x17626e,_0xd998ba(0x120))},_0xd998ba(0x1b9));return;}this[_0xd998ba(0x14d)][_0xd998ba(0x19d)]({'runId':_0x3c892d,'sessionId':_0x157767,'runner':_0xd998ba(0x15f),'cwd':_0x4b5983,...typeof _0x4b85b5[_0xd998ba(0x134)]===_0xd998ba(0x144)?{'externalSessionId':_0x4b85b5[_0xd998ba(0x134)]}:{}});if(this[_0xd998ba(0x14d)][_0xd998ba(0x15d)](_0x3c892d)?.[_0xd998ba(0x17f)]===_0xd998ba(0x1af)){this[_0xd998ba(0x14d)][_0xd998ba(0x171)](_0x3c892d,_0xd998ba(0x15e),{'status':_0xd998ba(0x1af)},_0xd998ba(0x1af));return;}if(this[_0xd998ba(0x14d)][_0xd998ba(0x135)](_0x3c892d,_0x4b5983))return;if(typeof _0x4b85b5[_0xd998ba(0x134)]===_0xd998ba(0x144)&&!this[_0xd998ba(0x129)][_0xd998ba(0x1a3)][_0xd998ba(0x139)][_0xd998ba(0x15b)](_0x4b85b5[_0xd998ba(0x134)])){this[_0xd998ba(0x14d)][_0xd998ba(0x171)](_0x3c892d,_0xd998ba(0x18c),{'code':_0xd998ba(0x1a7)},_0xd998ba(0x1b9));return;}this[_0xd998ba(0x14d)][_0xd998ba(0x1a2)][_0xd998ba(0x156)](_0x3c892d),this[_0xd998ba(0x14d)][_0xd998ba(0x171)](_0x3c892d,_0xd998ba(0x14f),{},_0xd998ba(0x192));let _0x32bee6=![],_0x369b30;const _0x145c09=new Map(),_0xacd3f4=(_0x30a29e,_0x4ba562,_0x5a93f7,_0x1b38e8,_0x2a47e3=_0xd998ba(0x143))=>{const _0x374ddd=_0xd998ba;if(_0x32bee6)return;_0x32bee6=!![];const _0x12b93d=_0x30a29e===_0x374ddd(0x1b9)?runnerErrorProjection(_0x1b38e8??_0x5a93f7,_0x2a47e3):undefined;_0x12b93d!==undefined&&this[_0x374ddd(0x14d)][_0x374ddd(0x141)](_0x3c892d,{'itemId':boundedConversationItemId(_0x374ddd(0x1b5),_0x3c892d),'kind':_0x374ddd(0x1ad),'status':_0x374ddd(0x1b9),'payload':{..._0x12b93d,'recoverable':!![],'retryAfterMs':null}}),this[_0x374ddd(0x14d)][_0x374ddd(0x171)](_0x3c892d,_0x4ba562,_0x12b93d??_0x5a93f7,_0x30a29e),this[_0x374ddd(0x129)][_0x374ddd(0x1a3)][_0x374ddd(0x13f)][_0x374ddd(0x127)](_0x3c892d),_0x369b30?.[_0x374ddd(0x1a8)](),this[_0x374ddd(0x14d)][_0x374ddd(0x1a2)][_0x374ddd(0x127)](_0x3c892d);};try{const _0x55fceb=new ClaudeChannelGate(_0x157767);_0x369b30=this[_0xd998ba(0x129)][_0xd998ba(0x194)]({'prompt':_0x4b85b5[_0xd998ba(0x1b3)],'cwd':_0x4b5983,...typeof _0x4b85b5[_0xd998ba(0x134)]===_0xd998ba(0x144)?{'resumeSessionId':_0x4b85b5[_0xd998ba(0x134)]}:{},...typeof _0x4b85b5[_0xd998ba(0x190)]===_0xd998ba(0x144)?{'model':_0x4b85b5[_0xd998ba(0x190)]}:{},...typeof _0x4b85b5[_0xd998ba(0x19e)]===_0xd998ba(0x144)?{'effort':_0x4b85b5[_0xd998ba(0x19e)]}:{},...typeof _0x4b85b5[_0xd998ba(0x1a9)]===_0xd998ba(0x144)?{'access':_0x4b85b5[_0xd998ba(0x1a9)]}:{},'environment':_0x285a67,...typeof _0x4b85b5[_0xd998ba(0x132)]===_0xd998ba(0x144)?{'personalInstructions':_0x4b85b5[_0xd998ba(0x132)]}:{},'mcpServers':this[_0xd998ba(0x129)][_0xd998ba(0x154)](_0x4b85b5[_0xd998ba(0x163)],_0x285a67),..._0x5dfbab[_0xd998ba(0x155)]===-0xfa1+0x2422+0x1d*-0xb5?{}:{'attachments':_0x5dfbab[_0xd998ba(0x1ac)](_0x1e8112=>({'mime':_0x1e8112[_0xd998ba(0x133)],'dataBase64':_0x1e8112[_0xd998ba(0x188)]}))},'onPermission':(_0xa0aed2,_0x14dea7,_0xa0e1de)=>_0xa0aed2===_0xd998ba(0x19a)?(_0x145c09[_0xd998ba(0x17e)](_0xa0e1de[_0xd998ba(0x176)],_0xd998ba(0x197)),this[_0xd998ba(0x14d)][_0xd998ba(0x180)](_0x3c892d,_0x14dea7,_0xa0e1de[_0xd998ba(0x176)])):this[_0xd998ba(0x14d)][_0xd998ba(0x1ae)](_0x3c892d,_0xa0aed2,_0x14dea7),'onChannelReply':_0x2748b0=>this[_0xd998ba(0x14d)][_0xd998ba(0x171)](_0x3c892d,_0xd998ba(0x15a),{'content':_0x2748b0}),'onMessage':_0x291192=>{const _0x4519a5=_0xd998ba,_0x408534=_0x291192,_0x1e37f7=typeof _0x408534[_0x4519a5(0x1b6)]===_0x4519a5(0x144)?_0x408534[_0x4519a5(0x1b6)]:undefined,_0x17db0e=this[_0x4519a5(0x129)][_0x4519a5(0x1a3)][_0x4519a5(0x13f)][_0x4519a5(0x185)](_0x3c892d);if(_0x1e37f7!==undefined&&_0x17db0e!==undefined){const _0x384126=_0x17db0e[_0x4519a5(0x123)]===undefined;if(_0x384126)this[_0x4519a5(0x129)][_0x4519a5(0x1a3)][_0x4519a5(0x13f)][_0x4519a5(0x17e)](_0x3c892d,{..._0x17db0e,'nativeSessionId':_0x1e37f7});const _0x547e9e=this[_0x4519a5(0x14d)][_0x4519a5(0x121)](_0x157767);if(_0x547e9e?.[_0x4519a5(0x18f)]===_0x4519a5(0x1a5))this[_0x4519a5(0x14d)][_0x4519a5(0x136)](_0x1e37f7,_0x547e9e['id']);if(_0x384126&&typeof _0x4b85b5[_0x4519a5(0x134)]!==_0x4519a5(0x144)){this[_0x4519a5(0x14d)][_0x4519a5(0x19b)](_0x157767,_0x1e37f7),this[_0x4519a5(0x14d)][_0x4519a5(0x159)](_0x4519a5(0x165),{'sessionId':_0x157767,'externalSessionId':_0x1e37f7});const _0x1e2843=this[_0x4519a5(0x129)][_0x4519a5(0x1a3)][_0x4519a5(0x13f)][_0x4519a5(0x185)](_0x3c892d);if(_0x1e2843!==undefined)this[_0x4519a5(0x129)][_0x4519a5(0x1a3)][_0x4519a5(0x13f)][_0x4519a5(0x17e)](_0x3c892d,{..._0x1e2843,'marSessionId':_0x1e37f7});}}if(_0x408534[_0x4519a5(0x16d)]===_0x4519a5(0x17d)){const _0x554695=extractClaudeText(_0x408534),_0x160e37=claudePlanText(_0x554695);if(_0x160e37!==undefined)this[_0x4519a5(0x14d)][_0x4519a5(0x141)](_0x3c892d,{'itemId':boundedConversationItemId(_0x4519a5(0x152),typeof _0x408534[_0x4519a5(0x1b7)]===_0x4519a5(0x144)?_0x408534[_0x4519a5(0x1b7)]:_0x3c892d+_0x4519a5(0x198)),'kind':_0x4519a5(0x153),'status':_0x4519a5(0x177),'payload':{'explanation':compactRunnerText(_0x160e37,-0x3a8d+-0x204+0x8ab1),'steps':[]}});else{if(_0x554695[_0x4519a5(0x155)]>-0x38*-0x7a+0x2630+-0x40e0)this[_0x4519a5(0x14d)][_0x4519a5(0x171)](_0x3c892d,_0x4519a5(0x160),{'text':_0x554695});}for(const [_0x5083d0,_0x2f3607]of extractClaudeThinkingSummaries(_0x408534)[_0x4519a5(0x12c)]()){this[_0x4519a5(0x14d)][_0x4519a5(0x141)](_0x3c892d,{'itemId':boundedConversationItemId(_0x4519a5(0x150),(typeof _0x408534[_0x4519a5(0x1b7)]===_0x4519a5(0x144)?_0x408534[_0x4519a5(0x1b7)]:_0x3c892d)+':'+_0x5083d0),'kind':_0x4519a5(0x1b4),'status':_0x4519a5(0x177),'payload':{'sections':[{'index':_0x5083d0,'text':_0x2f3607}]}});}for(const _0x11e0af of extractClaudeToolUses(_0x408534)){if(_0x11e0af[_0x4519a5(0x187)]===_0x4519a5(0x19a)){_0x145c09[_0x4519a5(0x17e)](_0x11e0af['id'],_0x4519a5(0x197));continue;}const _0x2c2dc6=boundedConversationItemId(_0x4519a5(0x1a1),_0x11e0af['id']),_0x3c36cf=isClaudeCommandTool(_0x11e0af[_0x4519a5(0x187)])?_0x4519a5(0x175):_0x4519a5(0x178);_0x145c09[_0x4519a5(0x17e)](_0x11e0af['id'],_0x3c36cf),this[_0x4519a5(0x14d)][_0x4519a5(0x141)](_0x3c892d,{'itemId':_0x2c2dc6,'kind':_0x3c36cf,'status':_0x4519a5(0x131),'payload':_0x3c36cf===_0x4519a5(0x175)?{'command':compactRunnerText(_0x11e0af[_0x4519a5(0x13b)]??_0x11e0af[_0x4519a5(0x187)],0x9fc+-0x3455+-0x1b23*-0x3),'cwd':null,'outputPreview':'','outputRef':null,'exitCode':null,'durationMs':null,'truncated':![]}:{'namespace':_0x4519a5(0x15f),'toolName':compactRunnerText(_0x11e0af[_0x4519a5(0x187)],0x98a+0x1c3d+-0x3*0xc6d),'title':compactRunnerText(_0x11e0af[_0x4519a5(0x187)],0x45f*0x5+-0x379+-0x106e),'inputSummary':compactRunnerValue(_0x11e0af[_0x4519a5(0x1b3)],-0x1*-0x21c1+-0x3ac5+0xaae*0x6)[_0x4519a5(0x126)]||null,'outputSummary':null,'progressLabel':null,'errorCode':null,'truncated':_0x11e0af[_0x4519a5(0x146)]}});}for(const [_0x4d52c1,_0x2833d8]of claudeContentBlocks(_0x408534)[_0x4519a5(0x12c)]()){const _0x42a6a=typeof _0x2833d8[_0x4519a5(0x16d)]===_0x4519a5(0x144)?_0x2833d8[_0x4519a5(0x16d)]:_0x4519a5(0x16b);if(_0x42a6a===_0x4519a5(0x126)||_0x42a6a===_0x4519a5(0x17c)||_0x42a6a===_0x4519a5(0x16e)||_0x42a6a===_0x4519a5(0x145)||_0x42a6a===_0x4519a5(0x189)||_0x42a6a===_0x4519a5(0x12f))continue;this[_0x4519a5(0x14d)][_0x4519a5(0x141)](_0x3c892d,{'itemId':boundedConversationItemId(_0x4519a5(0x13c),(typeof _0x408534[_0x4519a5(0x1b7)]===_0x4519a5(0x144)?_0x408534[_0x4519a5(0x1b7)]:_0x3c892d)+':'+_0x4d52c1),'kind':_0x4519a5(0x16b),'status':_0x4519a5(0x177),'payload':{'sourceEventType':_0x4519a5(0x168)+_0x42a6a,'label':_0x4519a5(0x179)+compactRunnerText(_0x42a6a,0x1e12+-0xe3*0x2+0x1bcc*-0x1)}});}}if(_0x408534[_0x4519a5(0x16d)]===_0x4519a5(0x1a6)&&typeof _0x408534[_0x4519a5(0x142)]===_0x4519a5(0x144)){const _0x343971=_0x145c09[_0x4519a5(0x185)](_0x408534[_0x4519a5(0x142)]);if(_0x343971===_0x4519a5(0x178)){const _0x4291ba=typeof _0x408534[_0x4519a5(0x1a0)]===_0x4519a5(0x191)?'\x20('+Math[_0x4519a5(0x12e)](0x33d+-0x1ac8*0x1+0x178b,Math[_0x4519a5(0x18b)](_0x408534[_0x4519a5(0x1a0)]))+_0x4519a5(0x181):'';this[_0x4519a5(0x14d)][_0x4519a5(0x141)](_0x3c892d,{'itemId':boundedConversationItemId(_0x4519a5(0x1a1),_0x408534[_0x4519a5(0x142)]),'kind':_0x343971,'status':_0x4519a5(0x131),'payload':{'progressLabel':compactRunnerText((typeof _0x408534[_0x4519a5(0x18a)]===_0x4519a5(0x144)?_0x408534[_0x4519a5(0x18a)]:_0x4519a5(0x16f))+_0x4519a5(0x149)+_0x4291ba,-0x2058+0x1*0x97c+0x18d*0x10),'progressLabelCode':typeof _0x408534[_0x4519a5(0x1a0)]===_0x4519a5(0x191)?_0x4519a5(0x17a):_0x4519a5(0x1ab),'progressLabelParameters':{'tool':typeof _0x408534[_0x4519a5(0x18a)]===_0x4519a5(0x144)?_0x408534[_0x4519a5(0x18a)]:_0x4519a5(0x16f),'seconds':typeof _0x408534[_0x4519a5(0x1a0)]===_0x4519a5(0x191)?Math[_0x4519a5(0x12e)](0x196a+-0x220c+0x8a2,Math[_0x4519a5(0x18b)](_0x408534[_0x4519a5(0x1a0)])):0x1b48+-0x4*0x7b8+0x398}},'merge':!![]});}}if(_0x408534[_0x4519a5(0x16d)]===_0x4519a5(0x12b))for(const _0x45857d of extractClaudeToolResults(_0x408534)){const _0x145a05=_0x145c09[_0x4519a5(0x185)](_0x45857d[_0x4519a5(0x151)])??_0x4519a5(0x178);if(_0x145a05===_0x4519a5(0x197))continue;this[_0x4519a5(0x14d)][_0x4519a5(0x141)](_0x3c892d,{'itemId':boundedConversationItemId(_0x4519a5(0x1a1),_0x45857d[_0x4519a5(0x151)]),'kind':_0x145a05,'status':_0x45857d[_0x4519a5(0x167)]?_0x4519a5(0x1b9):_0x4519a5(0x177),'payload':_0x145a05===_0x4519a5(0x175)?{'outputPreview':_0x45857d[_0x4519a5(0x1aa)],'exitCode':null,'durationMs':null,'truncated':_0x45857d[_0x4519a5(0x166)]}:{'outputSummary':_0x45857d[_0x4519a5(0x1aa)],'progressLabel':null,'errorCode':_0x45857d[_0x4519a5(0x167)]?_0x4519a5(0x14c):null,'truncated':_0x45857d[_0x4519a5(0x166)]},'merge':!![]});}if(_0x408534[_0x4519a5(0x16d)]===_0x4519a5(0x164)){const _0xe77104=typeof _0x408534[_0x4519a5(0x122)]===_0x4519a5(0x144)?_0x408534[_0x4519a5(0x122)]:_0x4519a5(0x16b),_0x247065=this[_0x4519a5(0x129)][_0x4519a5(0x1a3)][_0x4519a5(0x13f)][_0x4519a5(0x185)](_0x3c892d)?.[_0x4519a5(0x123)]??_0x1e37f7;this[_0x4519a5(0x14d)][_0x4519a5(0x171)](_0x3c892d,_0x4519a5(0x1ba),{'subtype':_0xe77104}),_0xacd3f4(_0xe77104===_0x4519a5(0x13d)&&_0x408534[_0x4519a5(0x170)]!==!![]?_0x4519a5(0x137):_0x4519a5(0x1b9),_0xe77104===_0x4519a5(0x13d)&&_0x408534[_0x4519a5(0x170)]!==!![]?_0x4519a5(0x15e):_0x4519a5(0x148),{'subtype':_0xe77104},_0x408534);if(_0x247065!==undefined)void this[_0x4519a5(0x14d)][_0x4519a5(0x1b2)](_0x157767,_0x247065,_0x4b5983);}}}),this[_0xd998ba(0x129)][_0xd998ba(0x1a3)][_0xd998ba(0x13f)][_0xd998ba(0x17e)](_0x3c892d,{'marSessionId':_0x157767,'cwd':_0x4b5983,'handle':_0x369b30,'gate':_0x55fceb}),this[_0xd998ba(0x14d)][_0xd998ba(0x147)](_0x157767,_0x55fceb[_0xd998ba(0x161)]),this[_0xd998ba(0x14d)][_0xd998ba(0x159)](_0xd998ba(0x138),{'sessionId':_0x157767,'token':_0x55fceb[_0xd998ba(0x161)]}),this[_0xd998ba(0x14d)][_0xd998ba(0x171)](_0x3c892d,_0xd998ba(0x172),{},_0xd998ba(0x174)),void _0x369b30[_0xd998ba(0x14a)][_0xd998ba(0x182)](()=>_0xacd3f4(_0xd998ba(0x137),_0xd998ba(0x15e),{'subtype':_0xd998ba(0x157)}),_0x5de0d2=>_0xacd3f4(_0xd998ba(0x1b9),_0xd998ba(0x148),{'code':safeErrorCode(_0x5de0d2,_0xd998ba(0x143))},_0x5de0d2));}catch(_0x3e0669){_0xacd3f4(_0xd998ba(0x1b9),_0xd998ba(0x148),{'code':safeErrorCode(_0x3e0669,_0xd998ba(0x124))},_0x3e0669,_0xd998ba(0x124));}}}