@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.
- 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 -841
- 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 -973
- 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 -83
- 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 -0
- 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 -93
- 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 -169
- 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 -35
- 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/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,280 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
export class NativeSessionProjectionService {
|
|
3
|
-
options;
|
|
4
|
-
constructor(options) {
|
|
5
|
-
this.options = options;
|
|
6
|
-
}
|
|
7
|
-
async discover(runnerName, workspaceId) {
|
|
8
|
-
const database = this.requireDatabase();
|
|
9
|
-
const workspace = workspaceId === undefined ? undefined : database.getWorkspace(workspaceId);
|
|
10
|
-
if (workspaceId !== undefined && workspace === undefined)
|
|
11
|
-
throw new Error('WORKSPACE_NOT_FOUND');
|
|
12
|
-
const runner = this.options.runners.product(runnerName);
|
|
13
|
-
if (runner === undefined || !runner.available(this.options.capabilities()))
|
|
14
|
-
throw new Error('RUNNER_UNAVAILABLE');
|
|
15
|
-
const sessions = await runner.discoverSessions({
|
|
16
|
-
workspaces: database.listWorkspaces(),
|
|
17
|
-
createProjection: (input) => this.project(input)
|
|
18
|
-
}, workspace);
|
|
19
|
-
const ordered = deduplicateDirectSessions(sessions);
|
|
20
|
-
this.remember(ordered);
|
|
21
|
-
return ordered;
|
|
22
|
-
}
|
|
23
|
-
async discoverCodex(workspaceId) {
|
|
24
|
-
const sessions = await this.discover('codex', workspaceId);
|
|
25
|
-
return { sessions: sessions.map(this.options.present) };
|
|
26
|
-
}
|
|
27
|
-
async list() {
|
|
28
|
-
const discovered = await Promise.all(this.options.runners
|
|
29
|
-
.advertised()
|
|
30
|
-
.filter((runner) => runner.available(this.options.capabilities()))
|
|
31
|
-
.map((runner) => this.discover(runner.name)));
|
|
32
|
-
const sessions = deduplicateDirectSessions(discovered.flat());
|
|
33
|
-
this.remember(sessions);
|
|
34
|
-
return sessions.map(this.options.present);
|
|
35
|
-
}
|
|
36
|
-
async discoverWorkspace(workspaceId) {
|
|
37
|
-
const discovered = await Promise.all(this.options.runners
|
|
38
|
-
.advertised()
|
|
39
|
-
.filter((runner) => runner.available(this.options.capabilities()))
|
|
40
|
-
.map((runner) => this.discover(runner.name, workspaceId)));
|
|
41
|
-
const sessions = deduplicateDirectSessions(discovered.flat());
|
|
42
|
-
this.remember(sessions);
|
|
43
|
-
return sessions;
|
|
44
|
-
}
|
|
45
|
-
async resolve(sessionId) {
|
|
46
|
-
const cached = this.options.state.directNative.get(sessionId);
|
|
47
|
-
if (cached !== undefined)
|
|
48
|
-
return cached;
|
|
49
|
-
const discovered = (await this.list()).find((session) => session.id === sessionId);
|
|
50
|
-
if (discovered !== undefined)
|
|
51
|
-
return discovered;
|
|
52
|
-
const database = this.options.database();
|
|
53
|
-
const record = database
|
|
54
|
-
?.listWorkspaces()
|
|
55
|
-
.flatMap((workspace) => database.listSessionRecords(workspace.id))
|
|
56
|
-
.find((candidate) => candidate.id === sessionId);
|
|
57
|
-
if (record === undefined)
|
|
58
|
-
return undefined;
|
|
59
|
-
const workspace = database?.getWorkspace(record.workspaceId);
|
|
60
|
-
if (workspace === undefined)
|
|
61
|
-
return undefined;
|
|
62
|
-
return {
|
|
63
|
-
id: record.id,
|
|
64
|
-
nodeId: this.options.nodeId(),
|
|
65
|
-
workspaceId: record.workspaceId,
|
|
66
|
-
runner: record.runner,
|
|
67
|
-
externalSessionId: record.id,
|
|
68
|
-
nativeControl: 'EXTERNAL',
|
|
69
|
-
channelToken: null,
|
|
70
|
-
cwd: workspace.path,
|
|
71
|
-
model: record.metadata.model,
|
|
72
|
-
effort: record.metadata.effort,
|
|
73
|
-
access: record.metadata.access,
|
|
74
|
-
customTitle: record.metadata.customTitle,
|
|
75
|
-
runnerTitle: record.metadata.runnerTitle,
|
|
76
|
-
pinnedAt: record.pinOrder === null ? null : 1,
|
|
77
|
-
pinOrder: record.pinOrder,
|
|
78
|
-
externalDiscovered: false,
|
|
79
|
-
titleSource: record.metadata.customTitle === null ? 'RUNNER' : 'CUSTOM',
|
|
80
|
-
lastActivityAt: 0,
|
|
81
|
-
createdAt: 0
|
|
82
|
-
};
|
|
83
|
-
}
|
|
84
|
-
async resolveCurrent(sessionId) {
|
|
85
|
-
const direct = await this.resolve(sessionId);
|
|
86
|
-
return direct === undefined ? undefined : (this.projectionForNative(direct) ?? direct);
|
|
87
|
-
}
|
|
88
|
-
async createMetadataProjection(sessionId) {
|
|
89
|
-
const direct = await this.resolve(sessionId);
|
|
90
|
-
if (direct === undefined || direct.externalSessionId === null)
|
|
91
|
-
return undefined;
|
|
92
|
-
const existing = this.options.runtime.findAgentSessionByExternalSession(direct.runner, direct.externalSessionId);
|
|
93
|
-
if (existing !== undefined && existing.workspaceId === direct.workspaceId)
|
|
94
|
-
return existing;
|
|
95
|
-
return this.options.runtime.createAgentSession({
|
|
96
|
-
workspaceId: direct.workspaceId,
|
|
97
|
-
runner: direct.runner,
|
|
98
|
-
externalSessionId: direct.externalSessionId,
|
|
99
|
-
nativeControl: 'EXTERNAL',
|
|
100
|
-
cwd: direct.cwd,
|
|
101
|
-
...(direct.runnerTitle === null ? {} : { title: direct.runnerTitle })
|
|
102
|
-
});
|
|
103
|
-
}
|
|
104
|
-
resumedConfiguration(session) {
|
|
105
|
-
const workspace = this.options.database()?.getWorkspace(session.workspaceId);
|
|
106
|
-
const current = {
|
|
107
|
-
runner: session.runner,
|
|
108
|
-
model: session.model,
|
|
109
|
-
effort: session.effort,
|
|
110
|
-
access: session.access
|
|
111
|
-
};
|
|
112
|
-
if (typeof current.model === 'string' &&
|
|
113
|
-
typeof current.effort === 'string' &&
|
|
114
|
-
typeof current.access === 'string' &&
|
|
115
|
-
this.options.runners.supportsConfiguration({
|
|
116
|
-
runner: current.runner,
|
|
117
|
-
model: current.model,
|
|
118
|
-
effort: current.effort,
|
|
119
|
-
access: current.access
|
|
120
|
-
}, workspace))
|
|
121
|
-
return current;
|
|
122
|
-
const saved = this.options
|
|
123
|
-
.database()
|
|
124
|
-
?.getRunnerDefaults()
|
|
125
|
-
.find((value) => value.runner === session.runner &&
|
|
126
|
-
this.options.runners.supportsConfiguration(value, workspace));
|
|
127
|
-
return saved ?? this.options.runners.require(session.runner).defaultConfiguration(workspace);
|
|
128
|
-
}
|
|
129
|
-
ensureResumedConfiguration(session) {
|
|
130
|
-
const configuration = this.resumedConfiguration(session);
|
|
131
|
-
if (session.model === configuration.model &&
|
|
132
|
-
session.effort === configuration.effort &&
|
|
133
|
-
session.access === configuration.access)
|
|
134
|
-
return session;
|
|
135
|
-
return this.options.runtime.updateAgentSessionConfiguration({
|
|
136
|
-
sessionId: session.id,
|
|
137
|
-
model: configuration.model,
|
|
138
|
-
effort: configuration.effort,
|
|
139
|
-
access: configuration.access
|
|
140
|
-
});
|
|
141
|
-
}
|
|
142
|
-
async rename(session, input) {
|
|
143
|
-
if (session.externalSessionId === null)
|
|
144
|
-
return;
|
|
145
|
-
await this.options.runners
|
|
146
|
-
.require(session.runner)
|
|
147
|
-
.renameNative(session, input, this.requireDatabase());
|
|
148
|
-
}
|
|
149
|
-
project(input) {
|
|
150
|
-
const timestamp = input.lastActivityAt ?? 0;
|
|
151
|
-
const database = this.options.database();
|
|
152
|
-
const metadata = database?.getNativeSessionMetadata(input.runner, input.externalSessionId, input.workspace.id);
|
|
153
|
-
const runnerTitle = this.options.runners.require(input.runner).projectedRunnerTitle(metadata, {
|
|
154
|
-
externalSessionId: input.externalSessionId,
|
|
155
|
-
workspaceId: input.workspace.id,
|
|
156
|
-
...(input.title === undefined ? {} : { title: input.title }),
|
|
157
|
-
...(input.titleOrigin === undefined ? {} : { titleOrigin: input.titleOrigin })
|
|
158
|
-
}, database);
|
|
159
|
-
return {
|
|
160
|
-
id: input.externalSessionId,
|
|
161
|
-
nodeId: this.options.nodeId(),
|
|
162
|
-
workspaceId: input.workspace.id,
|
|
163
|
-
runner: input.runner,
|
|
164
|
-
externalSessionId: input.externalSessionId,
|
|
165
|
-
nativeControl: 'EXTERNAL',
|
|
166
|
-
channelToken: null,
|
|
167
|
-
cwd: input.cwd,
|
|
168
|
-
model: metadata?.model ?? null,
|
|
169
|
-
effort: metadata?.effort ?? null,
|
|
170
|
-
access: metadata?.access ?? null,
|
|
171
|
-
customTitle: metadata?.customTitle ?? null,
|
|
172
|
-
runnerTitle,
|
|
173
|
-
pinnedAt: metadata?.pinnedAt ?? null,
|
|
174
|
-
pinOrder: metadata?.pinOrder ?? null,
|
|
175
|
-
externalDiscovered: true,
|
|
176
|
-
titleSource: metadata?.customTitle === null || metadata?.customTitle === undefined
|
|
177
|
-
? runnerTitle === null
|
|
178
|
-
? 'AUTO'
|
|
179
|
-
: 'RUNNER'
|
|
180
|
-
: 'CUSTOM',
|
|
181
|
-
lastActivityAt: timestamp,
|
|
182
|
-
createdAt: timestamp
|
|
183
|
-
};
|
|
184
|
-
}
|
|
185
|
-
remember(sessions) {
|
|
186
|
-
for (const session of sessions)
|
|
187
|
-
this.options.state.directNative.set(session.id, session);
|
|
188
|
-
}
|
|
189
|
-
projectionForNative(native) {
|
|
190
|
-
if (native.externalSessionId === null)
|
|
191
|
-
return undefined;
|
|
192
|
-
const exact = this.options.runtime.findAgentSessionByExternalSession(native.runner, native.externalSessionId);
|
|
193
|
-
if (exact !== undefined &&
|
|
194
|
-
exact.runner === native.runner &&
|
|
195
|
-
exact.workspaceId === native.workspaceId &&
|
|
196
|
-
exact.externalSessionId === native.externalSessionId)
|
|
197
|
-
return exact;
|
|
198
|
-
return this.managedForNative(native);
|
|
199
|
-
}
|
|
200
|
-
managedForNative(native) {
|
|
201
|
-
if (native.externalSessionId === null)
|
|
202
|
-
return undefined;
|
|
203
|
-
const exact = this.options.runtime.findAgentSessionByExternalSession(native.runner, native.externalSessionId);
|
|
204
|
-
if (this.isManagedProjection(exact, native, false))
|
|
205
|
-
return exact;
|
|
206
|
-
const aliasId = this.options.runners
|
|
207
|
-
.require(native.runner)
|
|
208
|
-
.managedAliasId(native.externalSessionId);
|
|
209
|
-
const alias = aliasId === undefined ? undefined : this.options.runtime.getAgentSession(aliasId);
|
|
210
|
-
return this.isManagedProjection(alias, native, true) ? alias : undefined;
|
|
211
|
-
}
|
|
212
|
-
nativeIds(session) {
|
|
213
|
-
const ids = new Set();
|
|
214
|
-
if (session.externalSessionId !== null)
|
|
215
|
-
ids.add(session.externalSessionId);
|
|
216
|
-
for (const nativeId of this.options.runners
|
|
217
|
-
.require(session.runner)
|
|
218
|
-
.nativeAliasesFor(session.id))
|
|
219
|
-
ids.add(nativeId);
|
|
220
|
-
return ids;
|
|
221
|
-
}
|
|
222
|
-
forget(session, knownNativeIds) {
|
|
223
|
-
if (session.externalSessionId === null)
|
|
224
|
-
return;
|
|
225
|
-
const projectionIds = new Set([session.id]);
|
|
226
|
-
const nativeIds = new Set(knownNativeIds);
|
|
227
|
-
const runner = this.options.runners.require(session.runner);
|
|
228
|
-
for (const nativeId of runner.nativeAliasesFor(session.id)) {
|
|
229
|
-
const managedId = runner.managedAliasId(nativeId);
|
|
230
|
-
if (managedId !== undefined && (nativeIds.has(nativeId) || managedId === session.id)) {
|
|
231
|
-
projectionIds.add(managedId);
|
|
232
|
-
nativeIds.add(nativeId);
|
|
233
|
-
runner.forgetNativeAlias(nativeId);
|
|
234
|
-
}
|
|
235
|
-
}
|
|
236
|
-
for (const [directId, direct] of this.options.state.directNative) {
|
|
237
|
-
if (direct.runner === session.runner &&
|
|
238
|
-
direct.cwd === session.cwd &&
|
|
239
|
-
direct.externalSessionId !== null &&
|
|
240
|
-
nativeIds.has(direct.externalSessionId)) {
|
|
241
|
-
this.options.state.directNative.delete(directId);
|
|
242
|
-
this.options.state.externalActivity.delete(directId);
|
|
243
|
-
this.options.state.resumedByDirectId.delete(directId);
|
|
244
|
-
this.options.state.resumeFailures.delete(directId);
|
|
245
|
-
this.options.state.messageResumeFailures.delete(directId);
|
|
246
|
-
this.options.state.resumeFailureDetails.delete(directId);
|
|
247
|
-
const timer = this.options.state.failureTimers.get(directId);
|
|
248
|
-
if (timer !== undefined)
|
|
249
|
-
clearTimeout(timer);
|
|
250
|
-
this.options.state.failureTimers.delete(directId);
|
|
251
|
-
}
|
|
252
|
-
}
|
|
253
|
-
for (const [directId, resumedId] of this.options.state.resumedByDirectId)
|
|
254
|
-
if (projectionIds.has(resumedId))
|
|
255
|
-
this.options.state.resumedByDirectId.delete(directId);
|
|
256
|
-
for (const projectionId of projectionIds) {
|
|
257
|
-
if (this.options.runtime.getAgentSession(projectionId) !== undefined)
|
|
258
|
-
this.options.runtime.removeAgentSession(projectionId);
|
|
259
|
-
this.options.commands.removeSession(projectionId);
|
|
260
|
-
this.options.state.externalActivity.delete(projectionId);
|
|
261
|
-
}
|
|
262
|
-
}
|
|
263
|
-
isManagedProjection(candidate, native, allowAlias) {
|
|
264
|
-
const exactNativeId = candidate?.externalSessionId === native.externalSessionId;
|
|
265
|
-
const verifiedAlias = allowAlias &&
|
|
266
|
-
this.options.runners.require(native.runner).managedAliasId(native.externalSessionId ?? '') ===
|
|
267
|
-
candidate?.id;
|
|
268
|
-
return (candidate !== undefined &&
|
|
269
|
-
candidate.nativeControl === 'MAR_MANAGED' &&
|
|
270
|
-
candidate.runner === native.runner &&
|
|
271
|
-
candidate.workspaceId === native.workspaceId &&
|
|
272
|
-
(exactNativeId || verifiedAlias));
|
|
273
|
-
}
|
|
274
|
-
requireDatabase() {
|
|
275
|
-
const database = this.options.database();
|
|
276
|
-
if (database === undefined)
|
|
277
|
-
throw new Error('NODE_DATABASE_UNAVAILABLE');
|
|
278
|
-
return database;
|
|
279
|
-
}
|
|
280
|
-
}
|
|
1
|
+
/* mar-release-protected */
|
|
2
|
+
const _0x329b46=_0x194c;function _0x194c(_0x2974f6,_0x5144ed){_0x2974f6=_0x2974f6-(0xaa7+-0x7c0+-0x16c);const _0x56bc06=_0x2146();let _0x532cb3=_0x56bc06[_0x2974f6];if(_0x194c['HNeTTN']===undefined){var _0x59263e=function(_0x494a35){const _0x4f5f3a='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x4c3042='',_0x203ed1='';for(let _0x761776=0x11*0x1f9+0x266*-0xd+-0x43*0x9,_0x4cf2b3,_0x4d8153,_0x2bfe39=-0x8d3*0x3+0x801+-0x314*-0x6;_0x4d8153=_0x494a35['charAt'](_0x2bfe39++);~_0x4d8153&&(_0x4cf2b3=_0x761776%(-0x1dcd+0x3*0x8cf+0x364)?_0x4cf2b3*(-0x844*-0x3+0x490+-0x1d1c)+_0x4d8153:_0x4d8153,_0x761776++%(-0x1c06+0x1*0x430+0x17da))?_0x4c3042+=String['fromCharCode'](-0x88*-0x9+-0xda*0x29+-0x1f21*-0x1&_0x4cf2b3>>(-(-0x250f*0x1+0x2*-0x20b+-0x1*-0x2927)*_0x761776&-0x229e*0x1+-0x672+0x2916)):-0x1*-0x119a+-0x1b50+0x9b6){_0x4d8153=_0x4f5f3a['indexOf'](_0x4d8153);}for(let _0x2b6297=-0x471*0x2+-0xf53+0x1835*0x1,_0x65ca22=_0x4c3042['length'];_0x2b6297<_0x65ca22;_0x2b6297++){_0x203ed1+='%'+('00'+_0x4c3042['charCodeAt'](_0x2b6297)['toString'](-0x1*-0xeb8+0x561*-0x4+-0x4*-0x1b7))['slice'](-(0x8*0x2b0+0x23e0+-0x395e));}return decodeURIComponent(_0x203ed1);};_0x194c['DvdaMp']=_0x59263e,_0x194c['wNeTOB']={},_0x194c['HNeTTN']=!![];}const _0x32c429=_0x56bc06[-0x1cbb+0x1*-0x177a+0xa71*0x5];_0x194c['ZtzztJ']!==_0x32c429&&(_0x194c['wNeTOB']={},_0x194c['ZtzztJ']=_0x32c429);const _0x3cb4fd=_0x194c['wNeTOB'][_0x2974f6];return _0x3cb4fd===undefined?(_0x532cb3=_0x194c['DvdaMp'](_0x532cb3),_0x194c['wNeTOB'][_0x2974f6]=_0x532cb3):_0x532cb3=_0x3cb4fd,_0x532cb3;}(function(_0x1c0e42,_0x1fbf19){const _0x40db48=_0x194c,_0x2889e9=_0x1c0e42();while(!![]){try{const _0x293093=parseInt(_0x40db48(0x196))/(0x1d36+0x19c+0x1ed1*-0x1)+parseInt(_0x40db48(0x1e0))/(-0x3*0x2bd+0x5b4+0x285)+-parseInt(_0x40db48(0x189))/(-0xbc3*-0x1+-0xf75+0x3b5)+-parseInt(_0x40db48(0x1b7))/(0x35+-0xc73+0xc42)+-parseInt(_0x40db48(0x197))/(-0x2100+0x8*-0x419+0x3*0x15ef)*(-parseInt(_0x40db48(0x191))/(0x29d+0x3d7*0x9+0x27a*-0xf))+parseInt(_0x40db48(0x1cb))/(-0x28a+-0x1187+-0x4*-0x506)+parseInt(_0x40db48(0x1b1))/(-0x30f*-0xb+0x8cd*-0x1+-0x18d0*0x1)*(-parseInt(_0x40db48(0x1a9))/(-0x1582+-0x5*-0x187+0x2*0x6f4));if(_0x293093===_0x1fbf19)break;else _0x2889e9['push'](_0x2889e9['shift']());}catch(_0xb3480d){_0x2889e9['push'](_0x2889e9['shift']());}}}(_0x2146,0xb6779+-0x13514c*-0x1+-0x154e4*0xe));function _0x2146(){const _0xebf799=['BwfUywDLzefSAwfZswq','ywr2zxj0AxnLza','tufsx01btKfhruq','BMf0AxzLqwXPyxnLC0zVCG','zgLZy292zxjdB2rLEa','Bw9KzwW','BgLZDfnLC3nPB25szwnVCMrZ','BMf0AxzLq29UDhjVBa','BgLZDa','ywXS','C3rHDgu','CMvTzw1Izxi','nJKZmdC5muPAELrdsW','CMvZDw1LzenVBMzPz3vYyxrPB24','y3DK','y3jLyxrLqwDLBNrtzxnZAw9U','zMXHDa','D29YA3nWywnL','zgLZy292zxjtzxnZAw9UCW','zM9Yz2v0','ChjVzhvJDa','zgLZy292zxjxB3jRC3bHy2u','zMLUzefNzw50u2vZC2LVBKj5rxH0zxjUywXtzxnZAw9U','yxzHAwXHyMXL','z2v0uNvUBMvYrgvMyxvSDhm','zM9Yz2v0tMf0AxzLqwXPyxm','CNvUBMvYCW','ChjVAMvJDa','zMfPBhvYzvrPBwvYCW','z2v0','CMvTB3zLu2vZC2LVBG','C3rYAw5N','DxbKyxrLqwDLBNrtzxnZAw9Uq29UzMLNDxjHDgLVBG','mtG5mJC4mLnYCM9rza','B3b0Aw9UCW','z2v0tMf0AxzLu2vZC2LVBK1LDgfKyxrH','BMf0AxzLswrZ','y3jLyxrLtwv0ywrHDgfqCM9Qzwn0Aw9U','CMvZB2X2zq','CMvZDw1LrMfPBhvYzxm','tK9erv9eqvrbqKftrv9vtKfwquLmqujmrq','zxH0zxjUywXtzxnZAw9Uswq','y29TBwfUzhm','CNvUDgLTzq','CgLUt3jKzxi','CMvZDw1Lzej5rgLYzwn0swq','rvHurvjoquW','AgfZ','qvvutW','BM9KzuLK','zMXHDe1HCa','D29YA3nWywnLswq','mtuZodq0mKTirNjQva','CgLUBMvKqxq','zgLZy292zxi','BgLZDfDVCMTZCgfJzxm','C2v0','y2fWywjPBgL0AwvZ','ChjVAMvJDgLVBKzVCK5HDgL2zq','CMvZB2X2zun1CNjLBNq','mtqXnML6Exjlsq','zgvMyxvSDenVBMzPz3vYyxrPB24','ChjLC2vUDa','zgLYzwn0tMf0AxzL','CMvZDw1LrMfPBhvYzurLDgfPBhm','mta1mJeWm0T3u05hva','mJa1odvPAe9YzMK','zxH0zxjUywXby3rPDML0Eq','Bwv0ywrHDge','BwfW','DgL0BgvpCMLNAw4','Cgf0Aa','DgL0Bgu','BMfTzq','CMvTB3zLqwDLBNrtzxnZAw9U','ChjVAMvJDgvKuNvUBMvYvgL0Bgu','y29KzxG','CMvUyw1LtMf0AxzL','ywrK','zgf0ywjHC2u','zw5ZDxjLuMvZDw1LzenVBMzPz3vYyxrPB24','y3vZDg9TvgL0Bgu','uLvotKvsx1voqvzbsuXbqKXf','Axnnyw5Hz2vKuhjVAMvJDgLVBG','ntKYnZGWnxDyqxLVzq','ywnJzxnZ','BwfUywDLzezVCK5HDgL2zq','zwzMB3j0','CMvXDwLYzurHDgfIyxnL','z2v0v29YA3nWywnL','q1vtve9n','zMLSDgvY','mtztDujhzM8','C3vWCg9YDhndB25MAwD1CMf0Aw9U','CMvXDwLYzq','zMLUza','CNvUBMvY','uLvotKvs','ntm1mZK0nhn0teTVsa','z2v0qwDLBNrtzxnZAw9U','zgvSzxrL','v09ss1nqqunfx05pvf9gt1vora','CMvUyw1L','BgfZDefJDgL2Axr5qxq','BwvZC2fNzvjLC3vTzuzHAwX1CMvZ','CNvUBMvYvgL0Bgu'];_0x2146=function(){return _0xebf799;};return _0x2146();}import{deduplicateDirectSessions}from'../util/runner-native-session-parsers.js';export class NativeSessionProjectionService{[_0x329b46(0x1e1)];constructor(_0x5ea450){const _0x521f96=_0x329b46;this[_0x521f96(0x1e1)]=_0x5ea450;}async[_0x329b46(0x18b)](_0x345d48,_0x136704){const _0x24e342=_0x329b46,_0x4df3bd=this[_0x24e342(0x1ad)](),_0x354170=_0x136704===undefined?undefined:_0x4df3bd[_0x24e342(0x1ae)](_0x136704);if(_0x136704!==undefined&&_0x354170===undefined)throw new Error(_0x24e342(0x1ba));const _0x5f34f2=this[_0x24e342(0x1e1)][_0x24e342(0x1d9)][_0x24e342(0x1d3)](_0x345d48);if(_0x5f34f2===undefined||!_0x5f34f2[_0x24e342(0x1d6)](this[_0x24e342(0x1e1)][_0x24e342(0x18e)]()))throw new Error(_0x24e342(0x1a7));const _0x743927=await _0x5f34f2[_0x24e342(0x1d1)]({'workspaces':_0x4df3bd[_0x24e342(0x18c)](),'createProjection':_0x15badc=>this[_0x24e342(0x1da)](_0x15badc)},_0x354170),_0x32c0f6=deduplicateDirectSessions(_0x743927);return this[_0x24e342(0x1ca)](_0x32c0f6),_0x32c0f6;}async[_0x329b46(0x1c3)](_0xd7c537){const _0x74acaf=_0x329b46,_0x34cc3e=await this[_0x74acaf(0x18b)](_0x74acaf(0x1a1),_0xd7c537);return{'sessions':_0x34cc3e[_0x74acaf(0x19a)](this[_0x74acaf(0x1e1)][_0x74acaf(0x193)])};}async[_0x329b46(0x1c7)](){const _0x34a24c=_0x329b46,_0x1ea307=await Promise[_0x34a24c(0x1c8)](this[_0x34a24c(0x1e1)][_0x34a24c(0x1d9)][_0x34a24c(0x1c0)]()[_0x34a24c(0x1b0)](_0x316060=>_0x316060[_0x34a24c(0x1d6)](this[_0x34a24c(0x1e1)][_0x34a24c(0x18e)]()))[_0x34a24c(0x19a)](_0x79c6a0=>this[_0x34a24c(0x18b)](_0x79c6a0[_0x34a24c(0x19e)]))),_0x550de4=deduplicateDirectSessions(_0x1ea307[_0x34a24c(0x1cf)]());return this[_0x34a24c(0x1ca)](_0x550de4),_0x550de4[_0x34a24c(0x19a)](this[_0x34a24c(0x1e1)][_0x34a24c(0x193)]);}async[_0x329b46(0x1d4)](_0x3585b1){const _0x5a23b9=_0x329b46,_0x51377f=await Promise[_0x5a23b9(0x1c8)](this[_0x5a23b9(0x1e1)][_0x5a23b9(0x1d9)][_0x5a23b9(0x1c0)]()[_0x5a23b9(0x1b0)](_0xd423ba=>_0xd423ba[_0x5a23b9(0x1d6)](this[_0x5a23b9(0x1e1)][_0x5a23b9(0x18e)]()))[_0x5a23b9(0x19a)](_0x5734dc=>this[_0x5a23b9(0x18b)](_0x5734dc[_0x5a23b9(0x19e)],_0x3585b1))),_0x51de42=deduplicateDirectSessions(_0x51377f[_0x5a23b9(0x1cf)]());return this[_0x5a23b9(0x1ca)](_0x51de42),_0x51de42;}async[_0x329b46(0x17b)](_0xc72867){const _0x16ef56=_0x329b46,_0x587c86=this[_0x16ef56(0x1e1)][_0x16ef56(0x1c9)][_0x16ef56(0x194)][_0x16ef56(0x1dc)](_0xc72867);if(_0x587c86!==undefined)return _0x587c86;const _0xb51725=(await this[_0x16ef56(0x1c7)]())[_0x16ef56(0x1b4)](_0x6aee5d=>_0x6aee5d['id']===_0xc72867);if(_0xb51725!==undefined)return _0xb51725;const _0x2753e1=this[_0x16ef56(0x1e1)][_0x16ef56(0x1a4)](),_0x2ab3fc=_0x2753e1?.[_0x16ef56(0x18c)]()[_0x16ef56(0x187)](_0x5128cc=>_0x2753e1[_0x16ef56(0x1c5)](_0x5128cc['id']))[_0x16ef56(0x1b4)](_0x424967=>_0x424967['id']===_0xc72867);if(_0x2ab3fc===undefined)return undefined;const _0x357421=_0x2753e1?.[_0x16ef56(0x1ae)](_0x2ab3fc[_0x16ef56(0x188)]);if(_0x357421===undefined)return undefined;return{'id':_0x2ab3fc['id'],'nodeId':this[_0x16ef56(0x1e1)][_0x16ef56(0x186)](),'workspaceId':_0x2ab3fc[_0x16ef56(0x188)],'runner':_0x2ab3fc[_0x16ef56(0x1b5)],'externalSessionId':_0x2ab3fc['id'],'nativeControl':_0x16ef56(0x183),'channelToken':null,'cwd':_0x357421[_0x16ef56(0x19c)],'model':_0x2ab3fc[_0x16ef56(0x199)][_0x16ef56(0x1c4)],'effort':_0x2ab3fc[_0x16ef56(0x199)][_0x16ef56(0x1ac)],'access':_0x2ab3fc[_0x16ef56(0x199)][_0x16ef56(0x1aa)],'customTitle':_0x2ab3fc[_0x16ef56(0x199)][_0x16ef56(0x1a6)],'runnerTitle':_0x2ab3fc[_0x16ef56(0x199)][_0x16ef56(0x1be)],'pinnedAt':_0x2ab3fc[_0x16ef56(0x181)]===null?null:0x1c55+0x26f2+0x4346*-0x1,'pinOrder':_0x2ab3fc[_0x16ef56(0x181)],'externalDiscovered':![],'titleSource':_0x2ab3fc[_0x16ef56(0x199)][_0x16ef56(0x1a6)]===null?_0x16ef56(0x1b6):_0x16ef56(0x1af),'lastActivityAt':0x0,'createdAt':0x0};}async[_0x329b46(0x190)](_0x34fe47){const _0x5ddb13=_0x329b46,_0x2d04fe=await this[_0x5ddb13(0x17b)](_0x34fe47);return _0x2d04fe===undefined?undefined:this[_0x5ddb13(0x18f)](_0x2d04fe)??_0x2d04fe;}async[_0x329b46(0x1e4)](_0x56fc9b){const _0x46627d=_0x329b46,_0x27d212=await this[_0x46627d(0x17b)](_0x56fc9b);if(_0x27d212===undefined||_0x27d212[_0x46627d(0x17e)]===null)return undefined;const _0x470912=this[_0x46627d(0x1e1)][_0x46627d(0x180)][_0x46627d(0x1d5)](_0x27d212[_0x46627d(0x1b5)],_0x27d212[_0x46627d(0x17e)]);if(_0x470912!==undefined&&_0x470912[_0x46627d(0x188)]===_0x27d212[_0x46627d(0x188)])return _0x470912;return this[_0x46627d(0x1e1)][_0x46627d(0x180)][_0x46627d(0x1ce)]({'workspaceId':_0x27d212[_0x46627d(0x188)],'runner':_0x27d212[_0x46627d(0x1b5)],'externalSessionId':_0x27d212[_0x46627d(0x17e)],'nativeControl':_0x46627d(0x183),'cwd':_0x27d212[_0x46627d(0x1cd)],..._0x27d212[_0x46627d(0x1be)]===null?{}:{'title':_0x27d212[_0x46627d(0x1be)]}});}[_0x329b46(0x1cc)](_0x23f00f){const _0x4b9bfb=_0x329b46,_0x9e6689=this[_0x4b9bfb(0x1e1)][_0x4b9bfb(0x1a4)]()?.[_0x4b9bfb(0x1ae)](_0x23f00f[_0x4b9bfb(0x188)]),_0x2a4078={'runner':_0x23f00f[_0x4b9bfb(0x1b5)],'model':_0x23f00f[_0x4b9bfb(0x1c4)],'effort':_0x23f00f[_0x4b9bfb(0x1ac)],'access':_0x23f00f[_0x4b9bfb(0x1aa)]};if(typeof _0x2a4078[_0x4b9bfb(0x1c4)]===_0x4b9bfb(0x1de)&&typeof _0x2a4078[_0x4b9bfb(0x1ac)]===_0x4b9bfb(0x1de)&&typeof _0x2a4078[_0x4b9bfb(0x1aa)]===_0x4b9bfb(0x1de)&&this[_0x4b9bfb(0x1e1)][_0x4b9bfb(0x1d9)][_0x4b9bfb(0x1b2)]({'runner':_0x2a4078[_0x4b9bfb(0x1b5)],'model':_0x2a4078[_0x4b9bfb(0x1c4)],'effort':_0x2a4078[_0x4b9bfb(0x1ac)],'access':_0x2a4078[_0x4b9bfb(0x1aa)]},_0x9e6689))return _0x2a4078;const _0x452be7=this[_0x4b9bfb(0x1e1)][_0x4b9bfb(0x1a4)]()?.[_0x4b9bfb(0x1d7)]()[_0x4b9bfb(0x1b4)](_0xe5a105=>_0xe5a105[_0x4b9bfb(0x1b5)]===_0x23f00f[_0x4b9bfb(0x1b5)]&&this[_0x4b9bfb(0x1e1)][_0x4b9bfb(0x1d9)][_0x4b9bfb(0x1b2)](_0xe5a105,_0x9e6689));return _0x452be7??this[_0x4b9bfb(0x1e1)][_0x4b9bfb(0x1d9)][_0x4b9bfb(0x1b3)](_0x23f00f[_0x4b9bfb(0x1b5)])[_0x4b9bfb(0x192)](_0x9e6689);}[_0x329b46(0x1a5)](_0x542d04){const _0x265329=_0x329b46,_0x2d29c3=this[_0x265329(0x1cc)](_0x542d04);if(_0x542d04[_0x265329(0x1c4)]===_0x2d29c3[_0x265329(0x1c4)]&&_0x542d04[_0x265329(0x1ac)]===_0x2d29c3[_0x265329(0x1ac)]&&_0x542d04[_0x265329(0x1aa)]===_0x2d29c3[_0x265329(0x1aa)])return _0x542d04;return this[_0x265329(0x1e1)][_0x265329(0x180)][_0x265329(0x1df)]({'sessionId':_0x542d04['id'],'model':_0x2d29c3[_0x265329(0x1c4)],'effort':_0x2d29c3[_0x265329(0x1ac)],'access':_0x2d29c3[_0x265329(0x1aa)]});}async[_0x329b46(0x1bb)](_0x24aae9,_0x1e132c){const _0x631870=_0x329b46;if(_0x24aae9[_0x631870(0x17e)]===null)return;await this[_0x631870(0x1e1)][_0x631870(0x1d9)][_0x631870(0x1b3)](_0x24aae9[_0x631870(0x1b5)])[_0x631870(0x1a2)](_0x24aae9,_0x1e132c,this[_0x631870(0x1ad)]());}[_0x329b46(0x1da)](_0x24d839){const _0xb05a8a=_0x329b46,_0x1cfbd9=_0x24d839[_0xb05a8a(0x1bc)]??-0x10e7*0x2+-0x2560+-0x6*-0xbdd,_0x3a064f=this[_0xb05a8a(0x1e1)][_0xb05a8a(0x1a4)](),_0xb8ce7b=_0x3a064f?.[_0xb05a8a(0x1e2)](_0x24d839[_0xb05a8a(0x1b5)],_0x24d839[_0xb05a8a(0x17e)],_0x24d839[_0xb05a8a(0x1d0)]['id']),_0x1f1ff9=this[_0xb05a8a(0x1e1)][_0xb05a8a(0x1d9)][_0xb05a8a(0x1b3)](_0x24d839[_0xb05a8a(0x1b5)])[_0xb05a8a(0x1a0)](_0xb8ce7b,{'externalSessionId':_0x24d839[_0xb05a8a(0x17e)],'workspaceId':_0x24d839[_0xb05a8a(0x1d0)]['id'],..._0x24d839[_0xb05a8a(0x19d)]===undefined?{}:{'title':_0x24d839[_0xb05a8a(0x19d)]},..._0x24d839[_0xb05a8a(0x19b)]===undefined?{}:{'titleOrigin':_0x24d839[_0xb05a8a(0x19b)]}},_0x3a064f);return{'id':_0x24d839[_0xb05a8a(0x17e)],'nodeId':this[_0xb05a8a(0x1e1)][_0xb05a8a(0x186)](),'workspaceId':_0x24d839[_0xb05a8a(0x1d0)]['id'],'runner':_0x24d839[_0xb05a8a(0x1b5)],'externalSessionId':_0x24d839[_0xb05a8a(0x17e)],'nativeControl':_0xb05a8a(0x183),'channelToken':null,'cwd':_0x24d839[_0xb05a8a(0x1cd)],'model':_0xb8ce7b?.[_0xb05a8a(0x1c4)]??null,'effort':_0xb8ce7b?.[_0xb05a8a(0x1ac)]??null,'access':_0xb8ce7b?.[_0xb05a8a(0x1aa)]??null,'customTitle':_0xb8ce7b?.[_0xb05a8a(0x1a6)]??null,'runnerTitle':_0x1f1ff9,'pinnedAt':_0xb8ce7b?.[_0xb05a8a(0x18a)]??null,'pinOrder':_0xb8ce7b?.[_0xb05a8a(0x181)]??null,'externalDiscovered':!![],'titleSource':_0xb8ce7b?.[_0xb05a8a(0x1a6)]===null||_0xb8ce7b?.[_0xb05a8a(0x1a6)]===undefined?_0x1f1ff9===null?_0xb05a8a(0x185):_0xb05a8a(0x1b6):_0xb05a8a(0x1af),'lastActivityAt':_0x1cfbd9,'createdAt':_0x1cfbd9};}[_0x329b46(0x1ca)](_0x5292c6){const _0x429049=_0x329b46;for(const _0x5b3de0 of _0x5292c6)this[_0x429049(0x1e1)][_0x429049(0x1c9)][_0x429049(0x194)][_0x429049(0x18d)](_0x5b3de0['id'],_0x5b3de0);}[_0x329b46(0x18f)](_0x41a76e){const _0x105280=_0x329b46;if(_0x41a76e[_0x105280(0x17e)]===null)return undefined;const _0x156e25=this[_0x105280(0x1e1)][_0x105280(0x180)][_0x105280(0x1d5)](_0x41a76e[_0x105280(0x1b5)],_0x41a76e[_0x105280(0x17e)]);if(_0x156e25!==undefined&&_0x156e25[_0x105280(0x1b5)]===_0x41a76e[_0x105280(0x1b5)]&&_0x156e25[_0x105280(0x188)]===_0x41a76e[_0x105280(0x188)]&&_0x156e25[_0x105280(0x17e)]===_0x41a76e[_0x105280(0x17e)])return _0x156e25;return this[_0x105280(0x1ab)](_0x41a76e);}[_0x329b46(0x1ab)](_0x580d4f){const _0x3516bf=_0x329b46;if(_0x580d4f[_0x3516bf(0x17e)]===null)return undefined;const _0x2d6ae1=this[_0x3516bf(0x1e1)][_0x3516bf(0x180)][_0x3516bf(0x1d5)](_0x580d4f[_0x3516bf(0x1b5)],_0x580d4f[_0x3516bf(0x17e)]);if(this[_0x3516bf(0x1a8)](_0x2d6ae1,_0x580d4f,![]))return _0x2d6ae1;const _0x44d089=this[_0x3516bf(0x1e1)][_0x3516bf(0x1d9)][_0x3516bf(0x1b3)](_0x580d4f[_0x3516bf(0x1b5)])[_0x3516bf(0x1bf)](_0x580d4f[_0x3516bf(0x17e)]),_0x59e695=_0x44d089===undefined?undefined:this[_0x3516bf(0x1e1)][_0x3516bf(0x180)][_0x3516bf(0x1b8)](_0x44d089);return this[_0x3516bf(0x1a8)](_0x59e695,_0x580d4f,!![])?_0x59e695:undefined;}[_0x329b46(0x1e3)](_0x4c0cfa){const _0x54f717=_0x329b46,_0x1d0cc0=new Set();if(_0x4c0cfa[_0x54f717(0x17e)]!==null)_0x1d0cc0[_0x54f717(0x1a3)](_0x4c0cfa[_0x54f717(0x17e)]);for(const _0x49edce of this[_0x54f717(0x1e1)][_0x54f717(0x1d9)][_0x54f717(0x1b3)](_0x4c0cfa[_0x54f717(0x1b5)])[_0x54f717(0x1c2)](_0x4c0cfa['id']))_0x1d0cc0[_0x54f717(0x1a3)](_0x49edce);return _0x1d0cc0;}[_0x329b46(0x1d2)](_0x5b7929,_0x5da62a){const _0x149f35=_0x329b46;if(_0x5b7929[_0x149f35(0x17e)]===null)return;const _0x39ad5c=new Set([_0x5b7929['id']]),_0x1549aa=new Set(_0x5da62a),_0x16a2dc=this[_0x149f35(0x1e1)][_0x149f35(0x1d9)][_0x149f35(0x1b3)](_0x5b7929[_0x149f35(0x1b5)]);for(const _0xc9f2cf of _0x16a2dc[_0x149f35(0x1c2)](_0x5b7929['id'])){const _0x13095f=_0x16a2dc[_0x149f35(0x1bf)](_0xc9f2cf);_0x13095f!==undefined&&(_0x1549aa[_0x149f35(0x184)](_0xc9f2cf)||_0x13095f===_0x5b7929['id'])&&(_0x39ad5c[_0x149f35(0x1a3)](_0x13095f),_0x1549aa[_0x149f35(0x1a3)](_0xc9f2cf),_0x16a2dc[_0x149f35(0x1d8)](_0xc9f2cf));}for(const [_0x88c4d6,_0x3b79ce]of this[_0x149f35(0x1e1)][_0x149f35(0x1c9)][_0x149f35(0x194)]){if(_0x3b79ce[_0x149f35(0x1b5)]===_0x5b7929[_0x149f35(0x1b5)]&&_0x3b79ce[_0x149f35(0x1cd)]===_0x5b7929[_0x149f35(0x1cd)]&&_0x3b79ce[_0x149f35(0x17e)]!==null&&_0x1549aa[_0x149f35(0x184)](_0x3b79ce[_0x149f35(0x17e)])){this[_0x149f35(0x1e1)][_0x149f35(0x1c9)][_0x149f35(0x194)][_0x149f35(0x1b9)](_0x88c4d6),this[_0x149f35(0x1e1)][_0x149f35(0x1c9)][_0x149f35(0x198)][_0x149f35(0x1b9)](_0x88c4d6),this[_0x149f35(0x1e1)][_0x149f35(0x1c9)][_0x149f35(0x182)][_0x149f35(0x1b9)](_0x88c4d6),this[_0x149f35(0x1e1)][_0x149f35(0x1c9)][_0x149f35(0x17c)][_0x149f35(0x1b9)](_0x88c4d6),this[_0x149f35(0x1e1)][_0x149f35(0x1c9)][_0x149f35(0x1bd)][_0x149f35(0x1b9)](_0x88c4d6),this[_0x149f35(0x1e1)][_0x149f35(0x1c9)][_0x149f35(0x195)][_0x149f35(0x1b9)](_0x88c4d6);const _0x350321=this[_0x149f35(0x1e1)][_0x149f35(0x1c9)][_0x149f35(0x1db)][_0x149f35(0x1dc)](_0x88c4d6);if(_0x350321!==undefined)clearTimeout(_0x350321);this[_0x149f35(0x1e1)][_0x149f35(0x1c9)][_0x149f35(0x1db)][_0x149f35(0x1b9)](_0x88c4d6);}}for(const [_0x314ae0,_0x5aa1f5]of this[_0x149f35(0x1e1)][_0x149f35(0x1c9)][_0x149f35(0x182)])if(_0x39ad5c[_0x149f35(0x184)](_0x5aa1f5))this[_0x149f35(0x1e1)][_0x149f35(0x1c9)][_0x149f35(0x182)][_0x149f35(0x1b9)](_0x314ae0);for(const _0x2974f6 of _0x39ad5c){if(this[_0x149f35(0x1e1)][_0x149f35(0x180)][_0x149f35(0x1b8)](_0x2974f6)!==undefined)this[_0x149f35(0x1e1)][_0x149f35(0x180)][_0x149f35(0x19f)](_0x2974f6);this[_0x149f35(0x1e1)][_0x149f35(0x17f)][_0x149f35(0x1dd)](_0x2974f6),this[_0x149f35(0x1e1)][_0x149f35(0x1c9)][_0x149f35(0x198)][_0x149f35(0x1b9)](_0x2974f6);}}[_0x329b46(0x1a8)](_0x5144ed,_0x56bc06,_0x532cb3){const _0xfef403=_0x329b46,_0x59263e=_0x5144ed?.[_0xfef403(0x17e)]===_0x56bc06[_0xfef403(0x17e)],_0x32c429=_0x532cb3&&this[_0xfef403(0x1e1)][_0xfef403(0x1d9)][_0xfef403(0x1b3)](_0x56bc06[_0xfef403(0x1b5)])[_0xfef403(0x1bf)](_0x56bc06[_0xfef403(0x17e)]??'')===_0x5144ed?.['id'];return _0x5144ed!==undefined&&_0x5144ed[_0xfef403(0x1c6)]===_0xfef403(0x1c1)&&_0x5144ed[_0xfef403(0x1b5)]===_0x56bc06[_0xfef403(0x1b5)]&&_0x5144ed[_0xfef403(0x188)]===_0x56bc06[_0xfef403(0x188)]&&(_0x59263e||_0x32c429);}[_0x329b46(0x1ad)](){const _0x51639d=_0x329b46,_0x3cb4fd=this[_0x51639d(0x1e1)][_0x51639d(0x1a4)]();if(_0x3cb4fd===undefined)throw new Error(_0x51639d(0x17d));return _0x3cb4fd;}}
|