@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.
- package/dist/capabilities.js +2 -92
- package/dist/claude-agent-sdk.js +2 -330
- package/dist/claude-channel.js +2 -44
- package/dist/codex-app-server.js +2 -503
- package/dist/config.js +2 -56
- package/dist/connector/node-connector-options.js +2 -1
- package/dist/connector/node-operation-router.js +2 -22
- package/dist/connector.js +2 -845
- package/dist/control-outbound-scheduler.js +2 -154
- package/dist/database.js +2 -1418
- package/dist/event-buffer.js +2 -19
- package/dist/fake-runner.js +2 -129
- package/dist/health.js +2 -3
- package/dist/main.js +2 -54
- package/dist/migrations/v001.js +3 -144
- package/dist/migrations/v002.js +2 -143
- package/dist/migrations/v003.js +2 -44
- package/dist/migrations/v004.js +34 -30
- package/dist/native-jsonl-reader.js +2 -186
- package/dist/native-session-history.js +2 -1119
- package/dist/opencode-runtime.js +2 -80
- package/dist/opencode-server.js +2 -263
- package/dist/operational.js +2 -122
- package/dist/process-tree.js +2 -18
- package/dist/rotating-log.js +2 -67
- package/dist/runner/abstract-runner.js +2 -232
- package/dist/runner/claude/managed-run-controller.js +2 -345
- package/dist/runner/claude-code-runner.js +2 -303
- package/dist/runner/codex/composer-image-markers.js +2 -0
- package/dist/runner/codex/conversation-parser.js +2 -861
- package/dist/runner/codex/managed-run-controller.js +2 -460
- package/dist/runner/codex-runner.js +2 -628
- package/dist/runner/fake-test-runner.js +2 -47
- package/dist/runner/opencode/conversation-parser.js +2 -221
- package/dist/runner/opencode/managed-run-controller.js +2 -537
- package/dist/runner/opencode-runner.js +2 -448
- package/dist/runner/runner-registry.js +2 -90
- package/dist/runner-command-engine.js +2 -70
- package/dist/runner-profiles.js +2 -215
- package/dist/runner-usage.js +2 -190
- package/dist/runtime-command-detector.js +2 -73
- package/dist/runtime-state.js +2 -982
- package/dist/service/attachment-domain-state.js +2 -7
- package/dist/service/conversation-history-service.js +2 -457
- package/dist/service/conversation-segment-service.js +2 -162
- package/dist/service/external-session-resume-service.js +2 -118
- package/dist/service/fake-managed-run-service.js +2 -60
- package/dist/service/managed-runner-session-service.js +2 -35
- package/dist/service/mcp-installation-verifier.js +2 -87
- package/dist/service/mcp-node-operation-service.js +2 -90
- package/dist/service/mcp-package-installer.js +2 -136
- package/dist/service/native-session-projection-service.js +2 -280
- package/dist/service/native-session-watch-service.js +2 -383
- package/dist/service/node-connection-lifecycle-service.js +2 -84
- package/dist/service/node-control-channel.js +2 -85
- package/dist/service/node-control-message-service.js +2 -107
- package/dist/service/node-request-service.js +2 -52
- package/dist/service/node-run-event-bridge.js +2 -83
- package/dist/service/node-terminal-channel.js +2 -182
- package/dist/service/node-upgrade-coordinator.js +2 -137
- package/dist/service/node-workspace-coordinator.js +2 -70
- package/dist/service/recent-run-projection-service.js +2 -78
- package/dist/service/run-attachment-service.js +2 -194
- package/dist/service/run-domain-state.js +2 -4
- package/dist/service/run-event-service.js +2 -193
- package/dist/service/run-workbench-service.js +2 -104
- package/dist/service/runner-channel-message-service.js +2 -20
- package/dist/service/runner-interaction-service.js +2 -243
- package/dist/service/runner-service.js +2 -71
- package/dist/service/session-catalog-service.js +2 -224
- package/dist/service/session-command-service.js +2 -76
- package/dist/service/session-context-service.js +2 -101
- package/dist/service/session-domain-state.js +2 -9
- package/dist/service/session-identity-service.js +2 -86
- package/dist/service/session-lifecycle-service.js +2 -240
- package/dist/service/session-message-service.js +2 -173
- package/dist/service/session-presentation-service.js +2 -43
- package/dist/service/session-query-service.js +2 -82
- package/dist/service/skill-directory-service.js +2 -238
- package/dist/service/skill-install-service.js +2 -434
- package/dist/service/skill-node-operation-service.js +2 -206
- package/dist/service/terminal-relay-state.js +2 -3
- package/dist/service/terminal-service.js +2 -52
- package/dist/service/workbench-event-service.js +2 -19
- package/dist/service/workbench-manifest-service.js +2 -69
- package/dist/service/workspace-change-service.js +2 -86
- package/dist/service/workspace-content-search-service.js +2 -477
- package/dist/service/workspace-domain-state.js +2 -41
- package/dist/service/workspace-file-service.js +2 -122
- package/dist/service/workspace-git-exclude-service.js +2 -119
- package/dist/service/workspace-queue-workbench-service.js +2 -304
- package/dist/service/workspace-service.js +2 -69
- package/dist/service/workspace-session-service.js +2 -139
- package/dist/service/workspace-upload-service.js +2 -262
- package/dist/service/workspace-watch-service.js +2 -146
- package/dist/service/workspace-workbench-service.js +2 -405
- package/dist/service.js +2 -38
- package/dist/storage.js +2 -32
- package/dist/supervisor.js +2 -136
- package/dist/terminal.js +2 -416
- package/dist/util/node-operation-parsers.js +2 -382
- package/dist/util/personal-instructions.js +2 -31
- package/dist/util/runner-error.js +2 -52
- package/dist/util/runner-native-session-parsers.js +2 -490
- package/dist/util/safe-error.js +2 -5
- package/dist/util/secret-environment.js +2 -25
- package/dist/workspace.js +2 -1519
- package/package.json +3 -3
- package/dist/capabilities.d.ts +0 -12
- package/dist/claude-agent-sdk.d.ts +0 -92
- package/dist/claude-channel.d.ts +0 -28
- package/dist/codex-app-server.d.ts +0 -133
- package/dist/config.d.ts +0 -18
- package/dist/connector/node-connector-options.d.ts +0 -27
- package/dist/connector/node-operation-router.d.ts +0 -9
- package/dist/connector.d.ts +0 -94
- package/dist/control-outbound-scheduler.d.ts +0 -29
- package/dist/database.d.ts +0 -305
- package/dist/event-buffer.d.ts +0 -9
- package/dist/fake-runner.d.ts +0 -42
- package/dist/health.d.ts +0 -4
- package/dist/main.d.ts +0 -2
- package/dist/migrations/v001.d.ts +0 -3
- package/dist/migrations/v002.d.ts +0 -4
- package/dist/migrations/v003.d.ts +0 -4
- package/dist/migrations/v004.d.ts +0 -4
- package/dist/native-jsonl-reader.d.ts +0 -35
- package/dist/native-session-history.d.ts +0 -126
- package/dist/opencode-runtime.d.ts +0 -33
- package/dist/opencode-server.d.ts +0 -49
- package/dist/operational.d.ts +0 -39
- package/dist/process-tree.d.ts +0 -9
- package/dist/rotating-log.d.ts +0 -17
- package/dist/runner/abstract-runner.d.ts +0 -172
- package/dist/runner/claude/managed-run-controller.d.ts +0 -51
- package/dist/runner/claude-code-runner.d.ts +0 -72
- package/dist/runner/codex/conversation-parser.d.ts +0 -59
- package/dist/runner/codex/managed-run-controller.d.ts +0 -90
- package/dist/runner/codex-runner.d.ts +0 -103
- package/dist/runner/fake-test-runner.d.ts +0 -26
- package/dist/runner/opencode/conversation-parser.d.ts +0 -31
- package/dist/runner/opencode/managed-run-controller.d.ts +0 -82
- package/dist/runner/opencode-runner.d.ts +0 -71
- package/dist/runner/runner-registry.d.ts +0 -19
- package/dist/runner-command-engine.d.ts +0 -28
- package/dist/runner-profiles.d.ts +0 -15
- package/dist/runner-usage.d.ts +0 -33
- package/dist/runtime-command-detector.d.ts +0 -3
- package/dist/runtime-state.d.ts +0 -171
- package/dist/service/attachment-domain-state.d.ts +0 -7
- package/dist/service/conversation-history-service.d.ts +0 -43
- package/dist/service/conversation-segment-service.d.ts +0 -20
- package/dist/service/external-session-resume-service.d.ts +0 -34
- package/dist/service/fake-managed-run-service.d.ts +0 -28
- package/dist/service/managed-runner-session-service.d.ts +0 -12
- package/dist/service/mcp-installation-verifier.d.ts +0 -9
- package/dist/service/mcp-node-operation-service.d.ts +0 -11
- package/dist/service/mcp-package-installer.d.ts +0 -8
- package/dist/service/native-session-projection-service.d.ts +0 -52
- package/dist/service/native-session-watch-service.d.ts +0 -62
- package/dist/service/node-connection-lifecycle-service.d.ts +0 -36
- package/dist/service/node-control-channel.d.ts +0 -32
- package/dist/service/node-control-message-service.d.ts +0 -27
- package/dist/service/node-request-service.d.ts +0 -14
- package/dist/service/node-run-event-bridge.d.ts +0 -40
- package/dist/service/node-terminal-channel.d.ts +0 -29
- package/dist/service/node-upgrade-coordinator.d.ts +0 -29
- package/dist/service/node-workspace-coordinator.d.ts +0 -29
- package/dist/service/recent-run-projection-service.d.ts +0 -14
- package/dist/service/run-attachment-service.d.ts +0 -38
- package/dist/service/run-domain-state.d.ts +0 -4
- package/dist/service/run-event-service.d.ts +0 -33
- package/dist/service/run-workbench-service.d.ts +0 -25
- package/dist/service/runner-channel-message-service.d.ts +0 -13
- package/dist/service/runner-interaction-service.d.ts +0 -39
- package/dist/service/runner-service.d.ts +0 -46
- package/dist/service/session-catalog-service.d.ts +0 -45
- package/dist/service/session-command-service.d.ts +0 -24
- package/dist/service/session-context-service.d.ts +0 -35
- package/dist/service/session-domain-state.d.ts +0 -9
- package/dist/service/session-identity-service.d.ts +0 -24
- package/dist/service/session-lifecycle-service.d.ts +0 -31
- package/dist/service/session-message-service.d.ts +0 -33
- package/dist/service/session-presentation-service.d.ts +0 -34
- package/dist/service/session-query-service.d.ts +0 -35
- package/dist/service/skill-directory-service.d.ts +0 -20
- package/dist/service/skill-install-service.d.ts +0 -21
- package/dist/service/skill-node-operation-service.d.ts +0 -44
- package/dist/service/terminal-relay-state.d.ts +0 -6
- package/dist/service/terminal-service.d.ts +0 -12
- package/dist/service/workbench-event-service.d.ts +0 -9
- package/dist/service/workbench-manifest-service.d.ts +0 -90
- package/dist/service/workspace-change-service.d.ts +0 -9
- package/dist/service/workspace-content-search-service.d.ts +0 -14
- package/dist/service/workspace-domain-state.d.ts +0 -79
- package/dist/service/workspace-file-service.d.ts +0 -18
- package/dist/service/workspace-git-exclude-service.d.ts +0 -4
- package/dist/service/workspace-queue-workbench-service.d.ts +0 -86
- package/dist/service/workspace-service.d.ts +0 -15
- package/dist/service/workspace-session-service.d.ts +0 -23
- package/dist/service/workspace-upload-service.d.ts +0 -39
- package/dist/service/workspace-watch-service.d.ts +0 -23
- package/dist/service/workspace-workbench-service.d.ts +0 -58
- package/dist/service.d.ts +0 -4
- package/dist/storage.d.ts +0 -2
- package/dist/supervisor.d.ts +0 -1
- package/dist/terminal.d.ts +0 -133
- package/dist/util/node-operation-parsers.d.ts +0 -92
- package/dist/util/personal-instructions.d.ts +0 -2
- package/dist/util/runner-error.d.ts +0 -6
- package/dist/util/runner-native-session-parsers.d.ts +0 -74
- package/dist/util/safe-error.d.ts +0 -2
- package/dist/util/secret-environment.d.ts +0 -1
- package/dist/workspace.d.ts +0 -217
|
@@ -1,232 +1,2 @@
|
|
|
1
|
-
|
|
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
|
-
|
|
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));}}}
|