@myagentroam/node 0.9.9 → 0.9.11
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,7 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
runFileDirectories = new Map();
|
|
4
|
-
runImages = new Map();
|
|
5
|
-
nativeHistoryImages = new Map();
|
|
6
|
-
nativeHistoryImageTimers = new Map();
|
|
7
|
-
}
|
|
1
|
+
/* mar-release-protected */
|
|
2
|
+
var _0x19952c=_0x1367;(function(_0x4655f1,_0x5967d3){var _0x3fa984=_0x1367,_0x29c96f=_0x4655f1();while(!![]){try{var _0x140e85=-parseInt(_0x3fa984(0x126))/(-0x21c2+-0x2*-0x10b5+0x1*0x59)+parseInt(_0x3fa984(0x12d))/(-0x1b4d*-0x1+0x5*0x59+-0x2*0xe84)+-parseInt(_0x3fa984(0x122))/(0x3*0xb35+0x10*0x40+-0x259c*0x1)+parseInt(_0x3fa984(0x123))/(0x8f5*0x2+-0x437*0x7+0xb9b)+-parseInt(_0x3fa984(0x129))/(-0x34e+0x118f+-0x1*0xe3c)*(-parseInt(_0x3fa984(0x12c))/(0x10be+-0x1*-0x222f+0x53*-0x9d))+-parseInt(_0x3fa984(0x12e))/(0x5d*-0x17+-0x331*-0x2+0x200)*(parseInt(_0x3fa984(0x125))/(0x1*-0x26ef+-0x1bd0+-0x42c7*-0x1))+parseInt(_0x3fa984(0x12f))/(-0x224a+0x2207+0x4c);if(_0x140e85===_0x5967d3)break;else _0x29c96f['push'](_0x29c96f['shift']());}catch(_0x36ff43){_0x29c96f['push'](_0x29c96f['shift']());}}}(_0x5565,-0x53367+0x8078e+0x409e5));function _0x1367(_0x510224,_0x31cf23){_0x510224=_0x510224-(-0x6d*0x53+0x1fd3+0x4a6);var _0x5bbf93=_0x5565();var _0x68879b=_0x5bbf93[_0x510224];if(_0x1367['iplQOw']===undefined){var _0x40dadd=function(_0x2400e4){var _0x58b941='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x34928c='',_0x32f11a='';for(var _0x3800a4=-0x16*0x4a+-0x52+0x6ae,_0x5a215b,_0x448dd6,_0x4ce908=0x324*0x5+-0xe5c+-0x158;_0x448dd6=_0x2400e4['charAt'](_0x4ce908++);~_0x448dd6&&(_0x5a215b=_0x3800a4%(-0x1c57+-0x173*0x7+-0x4*-0x9a0)?_0x5a215b*(0x13a*-0x17+0xf6b+0xd0b)+_0x448dd6:_0x448dd6,_0x3800a4++%(-0x2*-0xb7e+0x1939+0x49*-0xa9))?_0x34928c+=String['fromCharCode'](0xeed+0x1425+-0x2213&_0x5a215b>>(-(0x1c8d+0xe25+-0xaac*0x4)*_0x3800a4&0x1b59+0x21f0+-0x3d43*0x1)):-0x12ad+-0x15fc+-0x1*-0x28a9){_0x448dd6=_0x58b941['indexOf'](_0x448dd6);}for(var _0x1bbd4=-0x1cf5+-0xe9a+0x2b8f,_0x458dcc=_0x34928c['length'];_0x1bbd4<_0x458dcc;_0x1bbd4++){_0x32f11a+='%'+('00'+_0x34928c['charCodeAt'](_0x1bbd4)['toString'](0x1*0xa75+0x3*-0x7a2+0xc81))['slice'](-(0xec5+-0x1*0x112f+-0x9b*-0x4));}return decodeURIComponent(_0x32f11a);};_0x1367['ouaGuS']=_0x40dadd,_0x1367['NIdgqV']={},_0x1367['iplQOw']=!![];}var _0x4687fc=_0x5bbf93[-0x21c2+-0x2*-0x10b5+0x1*0x58];_0x1367['UCIYvR']!==_0x4687fc&&(_0x1367['NIdgqV']={},_0x1367['UCIYvR']=_0x4687fc);var _0x4c8a4c=_0x1367['NIdgqV'][_0x510224];return _0x4c8a4c===undefined?(_0x68879b=_0x1367['ouaGuS'](_0x68879b),_0x1367['NIdgqV'][_0x510224]=_0x68879b):_0x68879b=_0x4c8a4c,_0x68879b;}function _0x5565(){var _0x2bd8f9=['BMf0AxzLsgLZDg9YEuLTywDLvgLTzxjZ','BMf0AxzLsgLZDg9YEuLTywDLCW','mJmYnZiWv2zNwgzU','CNvUrgLYzwn0B3jPzxm','CNvUsw1Hz2vZ','otzSyMPcEgC','nZiZnJeWuvL1C1jj','n3f4EhnhAW','mtGWntC5nM9ZwNDAzq','otKYndC1sK5IA2Hu','mJe4mJKWoeP5AfLNuW','CNvUrMLSzurPCMvJDg9YAwvZ','mZqYmdi5nLbhuuPKsG','nJq0ndu4s0zsDM9q'];_0x5565=function(){return _0x2bd8f9;};return _0x5565();}export class AttachmentDomainState{[_0x19952c(0x12a)]=new Map();[_0x19952c(0x124)]=new Map();[_0x19952c(0x12b)]=new Map();[_0x19952c(0x128)]=new Map();[_0x19952c(0x127)]=new Map();}
|
|
@@ -1,457 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
import { coalesceImageGenerationItems } from '../runner/codex/conversation-parser.js';
|
|
3
|
-
import { nativeConversationPage } from '../util/runner-native-session-parsers.js';
|
|
4
|
-
import { isPlainRecord } from '../util/node-operation-parsers.js';
|
|
5
|
-
import { nodeLog } from '../operational.js';
|
|
6
|
-
export function hasManagedActiveRun(runtime, session) {
|
|
7
|
-
return (session.nativeControl === 'MAR_MANAGED' &&
|
|
8
|
-
runtime
|
|
9
|
-
.listRunsForSession(session.id)
|
|
10
|
-
.some((run) => run.status === 'STARTING' || run.status === 'RUNNING' || run.status === 'CANCELLING'));
|
|
11
|
-
}
|
|
12
|
-
export function convergeConversationWatchPage(previous, previousObserved, next, previousAuthority) {
|
|
13
|
-
const authority = isConversationHistorySource(previousAuthority)
|
|
14
|
-
? previousAuthority
|
|
15
|
-
: previous?.source;
|
|
16
|
-
if (previous === undefined ||
|
|
17
|
-
authority === undefined ||
|
|
18
|
-
sourceRank(next.source) >= sourceRank(authority))
|
|
19
|
-
return { page: next, authority: next.source };
|
|
20
|
-
if (previous.turns.length === 0)
|
|
21
|
-
return { page: next, authority };
|
|
22
|
-
const boundary = next.turns.findLastIndex((turn) => previous.turns.some((candidate) => sameConversationTurn(candidate, turn)));
|
|
23
|
-
const observedBoundary = boundary >= 0 || previousObserved === undefined
|
|
24
|
-
? -1
|
|
25
|
-
: next.turns.findLastIndex((turn) => previousObserved.turns.some((candidate) => sameConversationTurn(candidate, turn)));
|
|
26
|
-
const safeBoundary = Math.max(boundary, observedBoundary);
|
|
27
|
-
if (safeBoundary < 0)
|
|
28
|
-
return { page: previous, authority };
|
|
29
|
-
const additions = next.turns
|
|
30
|
-
.slice(safeBoundary + 1)
|
|
31
|
-
.filter((turn) => !previous.turns.some((candidate) => sameConversationTurn(candidate, turn)));
|
|
32
|
-
if (additions.length === 0)
|
|
33
|
-
return { page: previous, authority };
|
|
34
|
-
return {
|
|
35
|
-
page: {
|
|
36
|
-
...previous,
|
|
37
|
-
source: next.source,
|
|
38
|
-
snapshotSequence: Math.max(previous.snapshotSequence, next.snapshotSequence),
|
|
39
|
-
readAt: next.readAt,
|
|
40
|
-
latestVisibleAt: next.latestVisibleAt ?? previous.latestVisibleAt,
|
|
41
|
-
turns: [...previous.turns, ...additions]
|
|
42
|
-
},
|
|
43
|
-
authority
|
|
44
|
-
};
|
|
45
|
-
}
|
|
46
|
-
function isConversationHistorySource(value) {
|
|
47
|
-
return value === 'official' || value === 'native' || value === 'runtime';
|
|
48
|
-
}
|
|
49
|
-
export class ConversationHistoryService {
|
|
50
|
-
options;
|
|
51
|
-
activeHistoryReads = new Map();
|
|
52
|
-
constructor(options) {
|
|
53
|
-
this.options = options;
|
|
54
|
-
}
|
|
55
|
-
async read(session, input) {
|
|
56
|
-
const snapshotSequence = this.options.snapshotSequence();
|
|
57
|
-
const readAt = Date.now();
|
|
58
|
-
const activeCursor = decodeActiveHistoryCursor(input.cursor, session.id);
|
|
59
|
-
if (activeCursor !== undefined || this.options.hasManagedActiveRun(session))
|
|
60
|
-
return this.readManagedActive(session, input, activeCursor, snapshotSequence, readAt);
|
|
61
|
-
const selected = await this.readRunnerHistory(session, input);
|
|
62
|
-
if (selected.page?.source === 'native')
|
|
63
|
-
return this.page(selected.page.nextCursor, selected.page.turns, {
|
|
64
|
-
snapshotSequence,
|
|
65
|
-
source: 'native',
|
|
66
|
-
readAt
|
|
67
|
-
});
|
|
68
|
-
let official = selected.page?.source === 'official' ? selected.page : undefined;
|
|
69
|
-
if (official !== undefined) {
|
|
70
|
-
const limit = Math.min(Math.max(input.limit ?? 30, 1), 500);
|
|
71
|
-
const runtimeTurns = this.options.runtime.getAgentSession(session.id) === undefined
|
|
72
|
-
? []
|
|
73
|
-
: this.options.runtime.listConversationTurns({ sessionId: session.id, limit: 500 }).turns;
|
|
74
|
-
const initialOfficialRunIds = new Set(official.turns.flatMap((turn) => (turn.runId === null ? [] : [turn.runId])));
|
|
75
|
-
const lastRepresentedRuntimeIndex = runtimeTurns.findLastIndex((turn) => turn.runId !== null && initialOfficialRunIds.has(turn.runId));
|
|
76
|
-
const officialHasTurns = official.turns.length > 0;
|
|
77
|
-
const absentLocalTurns = runtimeTurns.filter((turn, index) => (turn.runId === null || !initialOfficialRunIds.has(turn.runId)) &&
|
|
78
|
-
(!officialHasTurns || index > lastRepresentedRuntimeIndex));
|
|
79
|
-
const missingLocalTurns = absentLocalTurns.slice(-limit);
|
|
80
|
-
if (input.cursor === undefined &&
|
|
81
|
-
missingLocalTurns.length > 0 &&
|
|
82
|
-
official.turns.length + missingLocalTurns.length > limit) {
|
|
83
|
-
const reserved = Math.min(missingLocalTurns.length, Math.max(0, limit - 1));
|
|
84
|
-
const narrowed = await this.readOfficial(session, { ...input, limit: limit - reserved });
|
|
85
|
-
if (narrowed !== undefined)
|
|
86
|
-
official = { ...narrowed, source: 'official' };
|
|
87
|
-
}
|
|
88
|
-
const officialTurns = await this.attachNativeImages(session, official.turns);
|
|
89
|
-
const officialRunIds = new Set(officialTurns.flatMap((turn) => (turn.runId === null ? [] : [turn.runId])));
|
|
90
|
-
const pendingItemsByRunId = new Map();
|
|
91
|
-
for (const turn of runtimeTurns) {
|
|
92
|
-
if (turn.runId === null || !officialRunIds.has(turn.runId))
|
|
93
|
-
continue;
|
|
94
|
-
const pendingItems = turn.items.filter((item) => item.kind === 'user_input_request' && item.status === 'PENDING');
|
|
95
|
-
if (pendingItems.length > 0)
|
|
96
|
-
pendingItemsByRunId.set(turn.runId, pendingItems);
|
|
97
|
-
}
|
|
98
|
-
const availableLocalSlots = Math.max(0, limit - officialTurns.length);
|
|
99
|
-
const localCandidates = input.cursor === undefined ? missingLocalTurns : [];
|
|
100
|
-
const localTurns = availableLocalSlots === 0 ? [] : localCandidates.slice(-availableLocalSlots);
|
|
101
|
-
const localRequestIds = new Set([
|
|
102
|
-
...localTurns.flatMap((turn) => turn.items.flatMap((item) => {
|
|
103
|
-
const requestId = item.kind === 'user_input_request' && isPlainRecord(item.payload)
|
|
104
|
-
? item.payload.requestId
|
|
105
|
-
: undefined;
|
|
106
|
-
return typeof requestId === 'string' ? [requestId] : [];
|
|
107
|
-
})),
|
|
108
|
-
...[...pendingItemsByRunId.values()].flatMap((items) => items.flatMap((item) => {
|
|
109
|
-
const requestId = isPlainRecord(item.payload) ? item.payload.requestId : undefined;
|
|
110
|
-
return typeof requestId === 'string' ? [requestId] : [];
|
|
111
|
-
}))
|
|
112
|
-
]);
|
|
113
|
-
const turns = [
|
|
114
|
-
...officialTurns
|
|
115
|
-
.map((turn) => {
|
|
116
|
-
const pendingItems = turn.runId === null ? [] : (pendingItemsByRunId.get(turn.runId) ?? []);
|
|
117
|
-
const items = [
|
|
118
|
-
...turn.items.filter((item) => item.kind !== 'user_input_request' ||
|
|
119
|
-
!isPlainRecord(item.payload) ||
|
|
120
|
-
typeof item.payload.requestId !== 'string' ||
|
|
121
|
-
!localRequestIds.has(item.payload.requestId)),
|
|
122
|
-
...pendingItems
|
|
123
|
-
];
|
|
124
|
-
return { ...turn, items };
|
|
125
|
-
})
|
|
126
|
-
.filter((turn) => turn.items.length > 0),
|
|
127
|
-
...localTurns
|
|
128
|
-
];
|
|
129
|
-
return this.page(official.nextCursor, turns, {
|
|
130
|
-
snapshotSequence,
|
|
131
|
-
source: 'official',
|
|
132
|
-
readAt
|
|
133
|
-
});
|
|
134
|
-
}
|
|
135
|
-
if (session.externalSessionId !== null && selected.incompleteNative) {
|
|
136
|
-
const runtimePage = this.options.runtime.listConversationTurns({
|
|
137
|
-
sessionId: session.id,
|
|
138
|
-
...input
|
|
139
|
-
});
|
|
140
|
-
if (runtimePage.turns.length === 0)
|
|
141
|
-
throw new Error('NATIVE_TRANSCRIPT_INCOMPLETE');
|
|
142
|
-
return this.page(runtimePage.nextCursor, runtimePage.turns, {
|
|
143
|
-
snapshotSequence,
|
|
144
|
-
source: 'runtime',
|
|
145
|
-
readAt
|
|
146
|
-
});
|
|
147
|
-
}
|
|
148
|
-
if (session.externalSessionId !== null && session.nativeControl === 'EXTERNAL')
|
|
149
|
-
throw new Error('NATIVE_TRANSCRIPT_UNAVAILABLE');
|
|
150
|
-
const page = this.options.runtime.listConversationTurns({ sessionId: session.id, ...input });
|
|
151
|
-
return this.page(page.nextCursor, page.turns, { snapshotSequence, source: 'runtime', readAt });
|
|
152
|
-
}
|
|
153
|
-
async readRunnerHistory(session, input) {
|
|
154
|
-
const runner = this.options.runners.require(session.runner);
|
|
155
|
-
let incompleteNative = false;
|
|
156
|
-
const page = await runner.readConversationHistory({
|
|
157
|
-
native: async () => {
|
|
158
|
-
const startedAt = performance.now();
|
|
159
|
-
let history;
|
|
160
|
-
try {
|
|
161
|
-
history = await this.readNative(session, input.cursor, input.limit);
|
|
162
|
-
}
|
|
163
|
-
catch {
|
|
164
|
-
return undefined;
|
|
165
|
-
}
|
|
166
|
-
finally {
|
|
167
|
-
const durationMs = Math.round(performance.now() - startedAt);
|
|
168
|
-
if (durationMs >= 250)
|
|
169
|
-
nodeLog('native.session.history.native-read.completed', {
|
|
170
|
-
runner: session.runner,
|
|
171
|
-
sessionId: session.id,
|
|
172
|
-
durationMs
|
|
173
|
-
});
|
|
174
|
-
}
|
|
175
|
-
if (history === undefined)
|
|
176
|
-
return undefined;
|
|
177
|
-
if (history.truncated === true &&
|
|
178
|
-
(!runner.acceptsTruncatedNativeHistory() || history.items.length === 0)) {
|
|
179
|
-
incompleteNative = true;
|
|
180
|
-
return undefined;
|
|
181
|
-
}
|
|
182
|
-
const runtimeTurns = this.options.runtime.getAgentSession(session.id) === undefined
|
|
183
|
-
? []
|
|
184
|
-
: this.options.runtime.listConversationTurns({ sessionId: session.id, limit: 500 })
|
|
185
|
-
.turns;
|
|
186
|
-
const native = nativeConversationPage(session, history, history.cursorReset === true
|
|
187
|
-
? input.limit === undefined
|
|
188
|
-
? {}
|
|
189
|
-
: { limit: input.limit }
|
|
190
|
-
: input, runtimeTurns, (images) => this.options.attachments.registerNative(session, images));
|
|
191
|
-
return native;
|
|
192
|
-
},
|
|
193
|
-
official: () => this.readOfficial(session, input)
|
|
194
|
-
});
|
|
195
|
-
return { page, incompleteNative };
|
|
196
|
-
}
|
|
197
|
-
async readManagedActive(session, input, cursor, snapshotSequence, readAt) {
|
|
198
|
-
const limit = Math.min(Math.max(input.limit ?? 30, 1), 500);
|
|
199
|
-
const runtimeTurns = this.options.runtime.listConversationTurns({
|
|
200
|
-
sessionId: session.id,
|
|
201
|
-
limit: 500
|
|
202
|
-
}).turns;
|
|
203
|
-
const beforeAt = cursor?.beforeAt ?? oldestTurnActivityAt(runtimeTurns);
|
|
204
|
-
if (cursor?.stage === 'OFFICIAL') {
|
|
205
|
-
const prefetched = this.takeActiveHistoryRead(session.id, limit, cursor.cursor);
|
|
206
|
-
const selected = await (prefetched ??
|
|
207
|
-
this.readRunnerHistory(session, {
|
|
208
|
-
...(cursor.cursor === null ? {} : { cursor: cursor.cursor }),
|
|
209
|
-
limit
|
|
210
|
-
}));
|
|
211
|
-
const history = selected.page;
|
|
212
|
-
if (history === undefined)
|
|
213
|
-
return this.page(null, [], { snapshotSequence, source: 'runtime', readAt });
|
|
214
|
-
const hydratedTurns = history.source === 'official'
|
|
215
|
-
? await this.attachNativeImages(session, history.turns)
|
|
216
|
-
: history.turns;
|
|
217
|
-
const turns = hydratedTurns.filter((turn) => latestTurnActivityAt(turn) < beforeAt);
|
|
218
|
-
return this.page(history.nextCursor === null
|
|
219
|
-
? null
|
|
220
|
-
: encodeActiveHistoryCursor({
|
|
221
|
-
sessionId: session.id,
|
|
222
|
-
stage: 'OFFICIAL',
|
|
223
|
-
beforeAt,
|
|
224
|
-
cursor: history.nextCursor
|
|
225
|
-
}), turns, { snapshotSequence, source: history.source, readAt });
|
|
226
|
-
}
|
|
227
|
-
if (cursor === undefined && session.externalSessionId !== null)
|
|
228
|
-
this.prefetchActiveHistory(session, limit);
|
|
229
|
-
const runtimePage = this.options.runtime.listConversationTurns({
|
|
230
|
-
sessionId: session.id,
|
|
231
|
-
...(cursor?.cursor === null || cursor === undefined ? {} : { cursor: cursor.cursor }),
|
|
232
|
-
limit
|
|
233
|
-
});
|
|
234
|
-
const nextCursor = runtimePage.nextCursor !== null
|
|
235
|
-
? encodeActiveHistoryCursor({
|
|
236
|
-
sessionId: session.id,
|
|
237
|
-
stage: 'RUNTIME',
|
|
238
|
-
beforeAt,
|
|
239
|
-
cursor: runtimePage.nextCursor
|
|
240
|
-
})
|
|
241
|
-
: session.externalSessionId === null
|
|
242
|
-
? null
|
|
243
|
-
: encodeActiveHistoryCursor({
|
|
244
|
-
sessionId: session.id,
|
|
245
|
-
stage: 'OFFICIAL',
|
|
246
|
-
beforeAt,
|
|
247
|
-
cursor: null
|
|
248
|
-
});
|
|
249
|
-
return this.page(nextCursor, runtimePage.turns, {
|
|
250
|
-
snapshotSequence,
|
|
251
|
-
source: 'runtime',
|
|
252
|
-
readAt,
|
|
253
|
-
deferredOlderHistory: true
|
|
254
|
-
});
|
|
255
|
-
}
|
|
256
|
-
prefetchActiveHistory(session, limit) {
|
|
257
|
-
const now = Date.now();
|
|
258
|
-
for (const [sessionId, read] of this.activeHistoryReads)
|
|
259
|
-
if (read.createdAt + 60_000 <= now)
|
|
260
|
-
this.activeHistoryReads.delete(sessionId);
|
|
261
|
-
const current = this.activeHistoryReads.get(session.id);
|
|
262
|
-
if (current !== undefined && current.limit === limit)
|
|
263
|
-
return;
|
|
264
|
-
this.activeHistoryReads.set(session.id, {
|
|
265
|
-
createdAt: now,
|
|
266
|
-
limit,
|
|
267
|
-
// The active Run fast path must stay independent from an optional
|
|
268
|
-
// background reader failure until the user explicitly requests older history.
|
|
269
|
-
page: this.readRunnerHistory(session, { limit }).catch(() => ({
|
|
270
|
-
page: undefined,
|
|
271
|
-
incompleteNative: false
|
|
272
|
-
}))
|
|
273
|
-
});
|
|
274
|
-
}
|
|
275
|
-
takeActiveHistoryRead(sessionId, limit, cursor) {
|
|
276
|
-
if (cursor !== null)
|
|
277
|
-
return undefined;
|
|
278
|
-
const read = this.activeHistoryReads.get(sessionId);
|
|
279
|
-
if (read === undefined || read.limit !== limit || read.createdAt + 60_000 <= Date.now())
|
|
280
|
-
return undefined;
|
|
281
|
-
this.activeHistoryReads.delete(sessionId);
|
|
282
|
-
return read.page;
|
|
283
|
-
}
|
|
284
|
-
async refreshExternalActivity(session) {
|
|
285
|
-
const runner = this.options.runners.require(session.runner);
|
|
286
|
-
if (!runner.available(this.options.capabilities())) {
|
|
287
|
-
this.options.setExternalActivity(session.id, 'UNAVAILABLE');
|
|
288
|
-
return;
|
|
289
|
-
}
|
|
290
|
-
const activity = await runner.readExternalActivity(session);
|
|
291
|
-
if (activity !== undefined)
|
|
292
|
-
this.options.setExternalActivity(session.id, activity);
|
|
293
|
-
}
|
|
294
|
-
async readNative(session, cursor, limit = 30) {
|
|
295
|
-
if (session.externalSessionId === null)
|
|
296
|
-
return undefined;
|
|
297
|
-
const page = nativeHistoryPageCursor(cursor, session.id);
|
|
298
|
-
const current = await readNativeSession(session.runner, session.cwd, session.externalSessionId, page, limit);
|
|
299
|
-
if (current !== undefined)
|
|
300
|
-
return current;
|
|
301
|
-
await discoverNativeSessions(session.runner, session.cwd);
|
|
302
|
-
return readNativeSession(session.runner, session.cwd, session.externalSessionId, page, limit);
|
|
303
|
-
}
|
|
304
|
-
async attachNativeImages(session, turns) {
|
|
305
|
-
const startedAt = performance.now();
|
|
306
|
-
const history = await this.readNative(session);
|
|
307
|
-
const readDurationMs = Math.round(performance.now() - startedAt);
|
|
308
|
-
if (readDurationMs >= 250)
|
|
309
|
-
nodeLog('native.session.history.attachment-source-read.completed', {
|
|
310
|
-
runner: session.runner,
|
|
311
|
-
sessionId: session.id,
|
|
312
|
-
durationMs: readDurationMs
|
|
313
|
-
});
|
|
314
|
-
if (history === undefined)
|
|
315
|
-
return turns;
|
|
316
|
-
const attachments = new Map();
|
|
317
|
-
for (const item of history.items) {
|
|
318
|
-
if (item.kind !== 'tool_call' || item.imageAttachments === undefined)
|
|
319
|
-
continue;
|
|
320
|
-
const registered = this.options.attachments.registerNative(session, item.imageAttachments);
|
|
321
|
-
if (registered.length > 0)
|
|
322
|
-
attachments.set(item.toolUseId, registered);
|
|
323
|
-
}
|
|
324
|
-
if (attachments.size === 0)
|
|
325
|
-
return turns;
|
|
326
|
-
return turns.map((turn) => ({
|
|
327
|
-
...turn,
|
|
328
|
-
items: coalesceImageGenerationItems(turn.items.map((item) => {
|
|
329
|
-
const registered = attachments.get(item.id.slice(item.id.lastIndexOf(':') + 1));
|
|
330
|
-
if (registered === undefined || !isPlainRecord(item.payload))
|
|
331
|
-
return item;
|
|
332
|
-
return { ...item, payload: { ...item.payload, attachments: registered } };
|
|
333
|
-
}))
|
|
334
|
-
}));
|
|
335
|
-
}
|
|
336
|
-
async readOfficial(session, input) {
|
|
337
|
-
const runner = this.options.runners.require(session.runner);
|
|
338
|
-
if (session.externalSessionId === null || !runner.available(this.options.capabilities()))
|
|
339
|
-
return undefined;
|
|
340
|
-
const startedAt = performance.now();
|
|
341
|
-
try {
|
|
342
|
-
return await runner.readOfficialConversation(session, input, (nativeTurnId) => this.managedRunnerTurn(session, nativeTurnId));
|
|
343
|
-
}
|
|
344
|
-
finally {
|
|
345
|
-
const durationMs = Math.round(performance.now() - startedAt);
|
|
346
|
-
if (durationMs >= 250)
|
|
347
|
-
nodeLog('native.session.history.official-read.completed', {
|
|
348
|
-
runner: session.runner,
|
|
349
|
-
sessionId: session.id,
|
|
350
|
-
durationMs
|
|
351
|
-
});
|
|
352
|
-
}
|
|
353
|
-
}
|
|
354
|
-
managedRunnerTurn(session, nativeTurnId) {
|
|
355
|
-
const runId = this.options.runners
|
|
356
|
-
.require(session.runner)
|
|
357
|
-
.managedRunForNativeTurn(nativeTurnId);
|
|
358
|
-
if (runId === undefined)
|
|
359
|
-
return undefined;
|
|
360
|
-
return this.options.runtime
|
|
361
|
-
.listConversationTurns({ sessionId: session.id, limit: 500 })
|
|
362
|
-
.turns.find((turn) => turn.runId === runId);
|
|
363
|
-
}
|
|
364
|
-
page(nextCursor, turns, metadata) {
|
|
365
|
-
return {
|
|
366
|
-
...metadata,
|
|
367
|
-
turns,
|
|
368
|
-
nextCursor,
|
|
369
|
-
latestVisibleAt: Math.max(0, ...turns.map((turn) => Math.max(turn.startedAt ?? 0, turn.completedAt ?? 0)))
|
|
370
|
-
};
|
|
371
|
-
}
|
|
372
|
-
}
|
|
373
|
-
function nativeHistoryPageCursor(cursor, sessionId) {
|
|
374
|
-
if (cursor === undefined)
|
|
375
|
-
return undefined;
|
|
376
|
-
try {
|
|
377
|
-
const value = JSON.parse(Buffer.from(cursor, 'base64url').toString('utf8'));
|
|
378
|
-
return value.sessionId === sessionId &&
|
|
379
|
-
Number.isInteger(value.snapshotEnd) &&
|
|
380
|
-
Number.isInteger(value.nextEnd) &&
|
|
381
|
-
Number.isInteger(value.anchorBytes) &&
|
|
382
|
-
value.snapshotEnd >= 0 &&
|
|
383
|
-
value.nextEnd >= 0 &&
|
|
384
|
-
value.nextEnd <= value.snapshotEnd &&
|
|
385
|
-
value.anchorBytes >= 0 &&
|
|
386
|
-
value.anchorBytes <= value.snapshotEnd &&
|
|
387
|
-
(value.readLimit === undefined ||
|
|
388
|
-
(Number.isInteger(value.readLimit) &&
|
|
389
|
-
value.readLimit >= 1 &&
|
|
390
|
-
value.readLimit <= 500)) &&
|
|
391
|
-
typeof value.fileAnchor === 'string'
|
|
392
|
-
? {
|
|
393
|
-
snapshotEnd: value.snapshotEnd,
|
|
394
|
-
nextEnd: value.nextEnd,
|
|
395
|
-
fileAnchor: value.fileAnchor,
|
|
396
|
-
anchorBytes: value.anchorBytes,
|
|
397
|
-
...(value.readLimit === undefined ? {} : { readLimit: value.readLimit })
|
|
398
|
-
}
|
|
399
|
-
: undefined;
|
|
400
|
-
}
|
|
401
|
-
catch {
|
|
402
|
-
return undefined;
|
|
403
|
-
}
|
|
404
|
-
}
|
|
405
|
-
const ACTIVE_HISTORY_CURSOR_PREFIX = 'mar-active-history:1:';
|
|
406
|
-
function encodeActiveHistoryCursor(cursor) {
|
|
407
|
-
return `${ACTIVE_HISTORY_CURSOR_PREFIX}${Buffer.from(JSON.stringify(cursor)).toString('base64url')}`;
|
|
408
|
-
}
|
|
409
|
-
function decodeActiveHistoryCursor(value, sessionId) {
|
|
410
|
-
if (value === undefined || !value.startsWith(ACTIVE_HISTORY_CURSOR_PREFIX))
|
|
411
|
-
return undefined;
|
|
412
|
-
try {
|
|
413
|
-
const decoded = JSON.parse(Buffer.from(value.slice(ACTIVE_HISTORY_CURSOR_PREFIX.length), 'base64url').toString('utf8'));
|
|
414
|
-
if (decoded.sessionId !== sessionId ||
|
|
415
|
-
(decoded.stage !== 'RUNTIME' && decoded.stage !== 'OFFICIAL') ||
|
|
416
|
-
typeof decoded.beforeAt !== 'number' ||
|
|
417
|
-
!Number.isFinite(decoded.beforeAt) ||
|
|
418
|
-
decoded.beforeAt < 0 ||
|
|
419
|
-
(decoded.cursor !== null && typeof decoded.cursor !== 'string'))
|
|
420
|
-
throw new Error('EVENT_CURSOR_INVALID');
|
|
421
|
-
return decoded;
|
|
422
|
-
}
|
|
423
|
-
catch {
|
|
424
|
-
throw new Error('EVENT_CURSOR_INVALID');
|
|
425
|
-
}
|
|
426
|
-
}
|
|
427
|
-
function latestTurnActivityAt(turn) {
|
|
428
|
-
return Math.max(turn.startedAt ?? 0, turn.completedAt ?? 0);
|
|
429
|
-
}
|
|
430
|
-
function oldestTurnActivityAt(turns) {
|
|
431
|
-
return turns.length === 0 ? 0 : Math.min(...turns.map(latestTurnActivityAt));
|
|
432
|
-
}
|
|
433
|
-
function sameConversationTurn(left, right) {
|
|
434
|
-
if (left.id === right.id)
|
|
435
|
-
return true;
|
|
436
|
-
if (left.runId !== null && left.runId === right.runId)
|
|
437
|
-
return true;
|
|
438
|
-
const leftMessageId = conversationClientMessageId(left);
|
|
439
|
-
return leftMessageId !== null && leftMessageId === conversationClientMessageId(right);
|
|
440
|
-
}
|
|
441
|
-
function conversationClientMessageId(turn) {
|
|
442
|
-
for (const item of turn.items) {
|
|
443
|
-
if (item.kind !== 'user_message' || !isPlainRecord(item.payload))
|
|
444
|
-
continue;
|
|
445
|
-
const value = item.payload.clientMessageId;
|
|
446
|
-
if (typeof value === 'string' && value.length > 0)
|
|
447
|
-
return value;
|
|
448
|
-
}
|
|
449
|
-
return null;
|
|
450
|
-
}
|
|
451
|
-
function sourceRank(source) {
|
|
452
|
-
if (source === 'official')
|
|
453
|
-
return 3;
|
|
454
|
-
if (source === 'native')
|
|
455
|
-
return 2;
|
|
456
|
-
return 1;
|
|
457
|
-
}
|
|
1
|
+
/* mar-release-protected */
|
|
2
|
+
const _0x2beec3=_0x4960;(function(_0x5bb12a,_0x4d3237){const _0x13539=_0x4960,_0x804daa=_0x5bb12a();while(!![]){try{const _0x4ba80d=-parseInt(_0x13539(0x160))/(-0x26e7*0x1+0x1008+-0x3d*-0x60)*(parseInt(_0x13539(0x15c))/(-0xb7f+-0x14bd*0x1+0x1*0x203e))+-parseInt(_0x13539(0x124))/(0x615+-0x87*0x5+0x125*-0x3)+-parseInt(_0x13539(0x151))/(-0x1229*-0x2+0x4*0x88f+-0x468a)*(parseInt(_0x13539(0x138))/(-0x140e+-0x65*0x12+0x1b2d))+-parseInt(_0x13539(0x11f))/(-0x1649+-0x24f6+0x3b45)*(parseInt(_0x13539(0x101))/(0x1*0x13e1+0x1216+-0x25f0))+parseInt(_0x13539(0x10c))/(0x1a04+-0x524*-0x2+-0x2444)*(-parseInt(_0x13539(0x12c))/(-0x25*0x75+-0x287*-0x6+-0x2*-0xe4))+-parseInt(_0x13539(0x110))/(0x7*0x51b+-0xb6a+-0x1849)+parseInt(_0x13539(0x123))/(0x1*0x1d4b+-0x74a*0x3+-0x762);if(_0x4ba80d===_0x4d3237)break;else _0x804daa['push'](_0x804daa['shift']());}catch(_0x2b8b1f){_0x804daa['push'](_0x804daa['shift']());}}}(_0x370a,0xf972+0x76c9*0x5+-0x2*-0xd981));import{discoverNativeSessions,readNativeSession}from'../native-session-history.js';import{coalesceImageGenerationItems}from'../runner/codex/conversation-parser.js';import{nativeConversationPage}from'../util/runner-native-session-parsers.js';import{isPlainRecord}from'../util/node-operation-parsers.js';import{nodeLog}from'../operational.js';export function hasManagedActiveRun(_0x13f7ad,_0x456fda){const _0x2dd77b=_0x4960;return _0x456fda[_0x2dd77b(0x15a)]===_0x2dd77b(0x171)&&_0x13f7ad[_0x2dd77b(0x146)](_0x456fda['id'])[_0x2dd77b(0x11a)](_0x2aff47=>_0x2aff47[_0x2dd77b(0x135)]===_0x2dd77b(0xfd)||_0x2aff47[_0x2dd77b(0x135)]===_0x2dd77b(0x16f)||_0x2aff47[_0x2dd77b(0x135)]===_0x2dd77b(0x168));}export function convergeConversationWatchPage(_0x1470cd,_0xf4508,_0x3072df,_0x580da5){const _0x5585da=_0x4960,_0x4963ff=isConversationHistorySource(_0x580da5)?_0x580da5:_0x1470cd?.[_0x5585da(0x12e)];if(_0x1470cd===undefined||_0x4963ff===undefined||sourceRank(_0x3072df[_0x5585da(0x12e)])>=sourceRank(_0x4963ff))return{'page':_0x3072df,'authority':_0x3072df[_0x5585da(0x12e)]};if(_0x1470cd[_0x5585da(0xfc)][_0x5585da(0x121)]===0x2693+0x2*0x12af+-0x4bf1)return{'page':_0x3072df,'authority':_0x4963ff};const _0x441647=_0x3072df[_0x5585da(0xfc)][_0x5585da(0x126)](_0x12a468=>_0x1470cd[_0x5585da(0xfc)][_0x5585da(0x11a)](_0x59fa44=>sameConversationTurn(_0x59fa44,_0x12a468))),_0x3fdf96=_0x441647>=0xf5a+-0x1*0x20ac+0x1152||_0xf4508===undefined?-(0xad5*-0x2+-0x1*0x165b+0x2c06):_0x3072df[_0x5585da(0xfc)][_0x5585da(0x126)](_0x3fcf29=>_0xf4508[_0x5585da(0xfc)][_0x5585da(0x11a)](_0x3bacf0=>sameConversationTurn(_0x3bacf0,_0x3fcf29))),_0x1b94ec=Math[_0x5585da(0x122)](_0x441647,_0x3fdf96);if(_0x1b94ec<0x1195+0x1f51*0x1+0x1873*-0x2)return{'page':_0x1470cd,'authority':_0x4963ff};const _0x3a0e98=_0x3072df[_0x5585da(0xfc)][_0x5585da(0x113)](_0x1b94ec+(0x845*-0x3+0x41*0x68+-0x198))[_0x5585da(0x104)](_0x44765=>!_0x1470cd[_0x5585da(0xfc)][_0x5585da(0x11a)](_0x1f317e=>sameConversationTurn(_0x1f317e,_0x44765)));if(_0x3a0e98[_0x5585da(0x121)]===-0x65*0x4+0x2*-0x3fa+0x1e8*0x5)return{'page':_0x1470cd,'authority':_0x4963ff};return{'page':{..._0x1470cd,'source':_0x3072df[_0x5585da(0x12e)],'snapshotSequence':Math[_0x5585da(0x122)](_0x1470cd[_0x5585da(0x144)],_0x3072df[_0x5585da(0x144)]),'readAt':_0x3072df[_0x5585da(0x142)],'latestVisibleAt':_0x3072df[_0x5585da(0x15b)]??_0x1470cd[_0x5585da(0x15b)],'turns':[..._0x1470cd[_0x5585da(0xfc)],..._0x3a0e98]},'authority':_0x4963ff};}function isConversationHistorySource(_0x122c05){const _0x66dce6=_0x4960;return _0x122c05===_0x66dce6(0x170)||_0x122c05===_0x66dce6(0x10b)||_0x122c05===_0x66dce6(0x13c);}export class ConversationHistoryService{[_0x2beec3(0x140)];[_0x2beec3(0x118)]=new Map();constructor(_0x46222d){const _0x266013=_0x2beec3;this[_0x266013(0x140)]=_0x46222d;}async[_0x2beec3(0x178)](_0x2f1195,_0x2f2123){const _0x5d4b1f=_0x2beec3,_0x1484c0=this[_0x5d4b1f(0x140)][_0x5d4b1f(0x144)](),_0x3d477e=Date[_0x5d4b1f(0x11b)](),_0x2d4fc9=decodeActiveHistoryCursor(_0x2f2123[_0x5d4b1f(0x13a)],_0x2f1195['id']);if(_0x2d4fc9!==undefined||this[_0x5d4b1f(0x140)][_0x5d4b1f(0x179)](_0x2f1195))return this[_0x5d4b1f(0x102)](_0x2f1195,_0x2f2123,_0x2d4fc9,_0x1484c0,_0x3d477e);const _0x3c7cd5=await this[_0x5d4b1f(0x12b)](_0x2f1195,_0x2f2123);if(_0x3c7cd5[_0x5d4b1f(0x131)]?.[_0x5d4b1f(0x12e)]===_0x5d4b1f(0x10b))return this[_0x5d4b1f(0x131)](_0x3c7cd5[_0x5d4b1f(0x131)][_0x5d4b1f(0x15f)],_0x3c7cd5[_0x5d4b1f(0x131)][_0x5d4b1f(0xfc)],{'snapshotSequence':_0x1484c0,'source':_0x5d4b1f(0x10b),'readAt':_0x3d477e});let _0x10f97e=_0x3c7cd5[_0x5d4b1f(0x131)]?.[_0x5d4b1f(0x12e)]===_0x5d4b1f(0x170)?_0x3c7cd5[_0x5d4b1f(0x131)]:undefined;if(_0x10f97e!==undefined){const _0x10c9bb=Math[_0x5d4b1f(0x112)](Math[_0x5d4b1f(0x122)](_0x2f2123[_0x5d4b1f(0x175)]??-0x16d3+-0x2*0xf40+0x1*0x3571,0x207b*-0x1+-0x1*0x36a+-0xa*-0x397),-0xff6+-0xc9b+0x1e85),_0x339671=this[_0x5d4b1f(0x140)][_0x5d4b1f(0x13c)][_0x5d4b1f(0x172)](_0x2f1195['id'])===undefined?[]:this[_0x5d4b1f(0x140)][_0x5d4b1f(0x13c)][_0x5d4b1f(0x158)]({'sessionId':_0x2f1195['id'],'limit':0x1f4})[_0x5d4b1f(0xfc)],_0x377dd8=new Set(_0x10f97e[_0x5d4b1f(0xfc)][_0x5d4b1f(0x11e)](_0xb5465d=>_0xb5465d[_0x5d4b1f(0x15d)]===null?[]:[_0xb5465d[_0x5d4b1f(0x15d)]])),_0x2ffe7f=_0x339671[_0x5d4b1f(0x126)](_0x240425=>_0x240425[_0x5d4b1f(0x15d)]!==null&&_0x377dd8[_0x5d4b1f(0x12a)](_0x240425[_0x5d4b1f(0x15d)])),_0x175947=_0x10f97e[_0x5d4b1f(0xfc)][_0x5d4b1f(0x121)]>0x76d+-0x1c47+0x14da,_0x239bbe=_0x339671[_0x5d4b1f(0x104)]((_0x462ef6,_0x17a565)=>(_0x462ef6[_0x5d4b1f(0x15d)]===null||!_0x377dd8[_0x5d4b1f(0x12a)](_0x462ef6[_0x5d4b1f(0x15d)]))&&(!_0x175947||_0x17a565>_0x2ffe7f)),_0x249196=_0x239bbe[_0x5d4b1f(0x113)](-_0x10c9bb);if(_0x2f2123[_0x5d4b1f(0x13a)]===undefined&&_0x249196[_0x5d4b1f(0x121)]>-0x1d2a+-0x83f+0x2569&&_0x10f97e[_0x5d4b1f(0xfc)][_0x5d4b1f(0x121)]+_0x249196[_0x5d4b1f(0x121)]>_0x10c9bb){const _0x4a54dc=Math[_0x5d4b1f(0x112)](_0x249196[_0x5d4b1f(0x121)],Math[_0x5d4b1f(0x122)](0xff8+-0x23dd*0x1+-0x13e5*-0x1,_0x10c9bb-(-0xa*-0x79+-0x4c4+0x1*0xb))),_0x370adc=await this[_0x5d4b1f(0x10d)](_0x2f1195,{..._0x2f2123,'limit':_0x10c9bb-_0x4a54dc});if(_0x370adc!==undefined)_0x10f97e={..._0x370adc,'source':_0x5d4b1f(0x170)};}const _0x40c907=await this[_0x5d4b1f(0x16c)](_0x2f1195,_0x10f97e[_0x5d4b1f(0xfc)]),_0x21f1a9=new Set(_0x40c907[_0x5d4b1f(0x11e)](_0x265689=>_0x265689[_0x5d4b1f(0x15d)]===null?[]:[_0x265689[_0x5d4b1f(0x15d)]])),_0x872f5e=new Map();for(const _0x30d4b7 of _0x339671){if(_0x30d4b7[_0x5d4b1f(0x15d)]===null||!_0x21f1a9[_0x5d4b1f(0x12a)](_0x30d4b7[_0x5d4b1f(0x15d)]))continue;const _0x59e4f4=_0x30d4b7[_0x5d4b1f(0x14e)][_0x5d4b1f(0x104)](_0x39e055=>_0x39e055[_0x5d4b1f(0x145)]===_0x5d4b1f(0x14a)&&_0x39e055[_0x5d4b1f(0x135)]===_0x5d4b1f(0x127));if(_0x59e4f4[_0x5d4b1f(0x121)]>-0x6d3*-0x2+0x7d3+-0x1579)_0x872f5e[_0x5d4b1f(0x10a)](_0x30d4b7[_0x5d4b1f(0x15d)],_0x59e4f4);}const _0x3fc342=Math[_0x5d4b1f(0x122)](0x31*0x70+0x22*-0xd+0x1d*-0xae,_0x10c9bb-_0x40c907[_0x5d4b1f(0x121)]),_0x89bc93=_0x2f2123[_0x5d4b1f(0x13a)]===undefined?_0x249196:[],_0x4adb80=_0x3fc342===-0x403*-0x3+0x1de1+0x91*-0x4a?[]:_0x89bc93[_0x5d4b1f(0x113)](-_0x3fc342),_0x4ec75c=new Set([..._0x4adb80[_0x5d4b1f(0x11e)](_0x1ebee3=>_0x1ebee3[_0x5d4b1f(0x14e)][_0x5d4b1f(0x11e)](_0x5744db=>{const _0x121a8e=_0x5d4b1f,_0x855b8b=_0x5744db[_0x121a8e(0x145)]===_0x121a8e(0x14a)&&isPlainRecord(_0x5744db[_0x121a8e(0x108)])?_0x5744db[_0x121a8e(0x108)][_0x121a8e(0x16b)]:undefined;return typeof _0x855b8b===_0x121a8e(0xfe)?[_0x855b8b]:[];})),...[..._0x872f5e[_0x5d4b1f(0x103)]()][_0x5d4b1f(0x11e)](_0x5d5650=>_0x5d5650[_0x5d4b1f(0x11e)](_0xed10ac=>{const _0x44763b=_0x5d4b1f,_0x47489d=isPlainRecord(_0xed10ac[_0x44763b(0x108)])?_0xed10ac[_0x44763b(0x108)][_0x44763b(0x16b)]:undefined;return typeof _0x47489d===_0x44763b(0xfe)?[_0x47489d]:[];}))]),_0x3bdf46=[..._0x40c907[_0x5d4b1f(0x130)](_0x55014d=>{const _0x3fbe00=_0x5d4b1f,_0x387066=_0x55014d[_0x3fbe00(0x15d)]===null?[]:_0x872f5e[_0x3fbe00(0x13d)](_0x55014d[_0x3fbe00(0x15d)])??[],_0x20794d=[..._0x55014d[_0x3fbe00(0x14e)][_0x3fbe00(0x104)](_0x1af8f9=>_0x1af8f9[_0x3fbe00(0x145)]!==_0x3fbe00(0x14a)||!isPlainRecord(_0x1af8f9[_0x3fbe00(0x108)])||typeof _0x1af8f9[_0x3fbe00(0x108)][_0x3fbe00(0x16b)]!==_0x3fbe00(0xfe)||!_0x4ec75c[_0x3fbe00(0x12a)](_0x1af8f9[_0x3fbe00(0x108)][_0x3fbe00(0x16b)])),..._0x387066];return{..._0x55014d,'items':_0x20794d};})[_0x5d4b1f(0x104)](_0x1ba2c6=>_0x1ba2c6[_0x5d4b1f(0x14e)][_0x5d4b1f(0x121)]>0x8*-0x32e+0x1bb*0x5+0x10c9),..._0x4adb80];return this[_0x5d4b1f(0x131)](_0x10f97e[_0x5d4b1f(0x15f)],_0x3bdf46,{'snapshotSequence':_0x1484c0,'source':_0x5d4b1f(0x170),'readAt':_0x3d477e});}if(_0x2f1195[_0x5d4b1f(0x13e)]!==null&&_0x3c7cd5[_0x5d4b1f(0x167)]){const _0x5be9f6=this[_0x5d4b1f(0x140)][_0x5d4b1f(0x13c)][_0x5d4b1f(0x158)]({'sessionId':_0x2f1195['id'],..._0x2f2123});if(_0x5be9f6[_0x5d4b1f(0xfc)][_0x5d4b1f(0x121)]===0x24fc+-0x19c5*0x1+-0x13f*0x9)throw new Error(_0x5d4b1f(0x115));return this[_0x5d4b1f(0x131)](_0x5be9f6[_0x5d4b1f(0x15f)],_0x5be9f6[_0x5d4b1f(0xfc)],{'snapshotSequence':_0x1484c0,'source':_0x5d4b1f(0x13c),'readAt':_0x3d477e});}if(_0x2f1195[_0x5d4b1f(0x13e)]!==null&&_0x2f1195[_0x5d4b1f(0x15a)]===_0x5d4b1f(0x132))throw new Error(_0x5d4b1f(0x155));const _0x486d90=this[_0x5d4b1f(0x140)][_0x5d4b1f(0x13c)][_0x5d4b1f(0x158)]({'sessionId':_0x2f1195['id'],..._0x2f2123});return this[_0x5d4b1f(0x131)](_0x486d90[_0x5d4b1f(0x15f)],_0x486d90[_0x5d4b1f(0xfc)],{'snapshotSequence':_0x1484c0,'source':_0x5d4b1f(0x13c),'readAt':_0x3d477e});}async[_0x2beec3(0x12b)](_0x32787d,_0x7ac0ae){const _0x36a5d0=_0x2beec3,_0x35d7a2=this[_0x36a5d0(0x140)][_0x36a5d0(0x11c)][_0x36a5d0(0x100)](_0x32787d[_0x36a5d0(0x14b)]);let _0x45705d=![];const _0x1db855=await _0x35d7a2[_0x36a5d0(0x111)]({'native':async()=>{const _0x3b39db=_0x36a5d0,_0x1ddb0e=performance[_0x3b39db(0x11b)]();let _0x2589ca;try{_0x2589ca=await this[_0x3b39db(0x125)](_0x32787d,_0x7ac0ae[_0x3b39db(0x13a)],_0x7ac0ae[_0x3b39db(0x175)]);}catch{return undefined;}finally{const _0x274c8f=Math[_0x3b39db(0x157)](performance[_0x3b39db(0x11b)]()-_0x1ddb0e);if(_0x274c8f>=-0x1aea+0x1825+0x3bf)nodeLog(_0x3b39db(0x17a),{'runner':_0x32787d[_0x3b39db(0x14b)],'sessionId':_0x32787d['id'],'durationMs':_0x274c8f});}if(_0x2589ca===undefined)return undefined;if(_0x2589ca[_0x3b39db(0x176)]===!![]&&(!_0x35d7a2[_0x3b39db(0x148)]()||_0x2589ca[_0x3b39db(0x14e)][_0x3b39db(0x121)]===0x15e7+0xe13+-0x5*0x732))return _0x45705d=!![],undefined;const _0x556c53=this[_0x3b39db(0x140)][_0x3b39db(0x13c)][_0x3b39db(0x172)](_0x32787d['id'])===undefined?[]:this[_0x3b39db(0x140)][_0x3b39db(0x13c)][_0x3b39db(0x158)]({'sessionId':_0x32787d['id'],'limit':0x1f4})[_0x3b39db(0xfc)],_0x1ed856=nativeConversationPage(_0x32787d,_0x2589ca,_0x2589ca[_0x3b39db(0x136)]===!![]?_0x7ac0ae[_0x3b39db(0x175)]===undefined?{}:{'limit':_0x7ac0ae[_0x3b39db(0x175)]}:_0x7ac0ae,_0x556c53,_0x44b3da=>this[_0x3b39db(0x140)][_0x3b39db(0x177)][_0x3b39db(0x156)](_0x32787d,_0x44b3da));return _0x1ed856;},'official':()=>this[_0x36a5d0(0x10d)](_0x32787d,_0x7ac0ae)});return{'page':_0x1db855,'incompleteNative':_0x45705d};}async[_0x2beec3(0x102)](_0x2bc642,_0x1d0f2e,_0x4eb5bb,_0x262e76,_0x201ef9){const _0x129013=_0x2beec3,_0x44f446=Math[_0x129013(0x112)](Math[_0x129013(0x122)](_0x1d0f2e[_0x129013(0x175)]??-0x5*0x38d+-0x1d0e+-0x29*-0x125,-0x25a1+0x24*0xd3+-0x7f6*-0x1),0x25af+-0x1b7+-0x7*0x4dc),_0x30be7e=this[_0x129013(0x140)][_0x129013(0x13c)][_0x129013(0x158)]({'sessionId':_0x2bc642['id'],'limit':0x1f4})[_0x129013(0xfc)],_0x4d30ff=_0x4eb5bb?.[_0x129013(0x11d)]??oldestTurnActivityAt(_0x30be7e);if(_0x4eb5bb?.[_0x129013(0x14f)]===_0x129013(0x12f)){const _0x1c52de=this[_0x129013(0x149)](_0x2bc642['id'],_0x44f446,_0x4eb5bb[_0x129013(0x13a)]),_0x517efb=await(_0x1c52de??this[_0x129013(0x12b)](_0x2bc642,{..._0x4eb5bb[_0x129013(0x13a)]===null?{}:{'cursor':_0x4eb5bb[_0x129013(0x13a)]},'limit':_0x44f446})),_0x14b2e6=_0x517efb[_0x129013(0x131)];if(_0x14b2e6===undefined)return this[_0x129013(0x131)](null,[],{'snapshotSequence':_0x262e76,'source':_0x129013(0x13c),'readAt':_0x201ef9});const _0x58d335=_0x14b2e6[_0x129013(0x12e)]===_0x129013(0x170)?await this[_0x129013(0x16c)](_0x2bc642,_0x14b2e6[_0x129013(0xfc)]):_0x14b2e6[_0x129013(0xfc)],_0x2a1c93=_0x58d335[_0x129013(0x104)](_0x33882a=>latestTurnActivityAt(_0x33882a)<_0x4d30ff);return this[_0x129013(0x131)](_0x14b2e6[_0x129013(0x15f)]===null?null:encodeActiveHistoryCursor({'sessionId':_0x2bc642['id'],'stage':_0x129013(0x12f),'beforeAt':_0x4d30ff,'cursor':_0x14b2e6[_0x129013(0x15f)]}),_0x2a1c93,{'snapshotSequence':_0x262e76,'source':_0x14b2e6[_0x129013(0x12e)],'readAt':_0x201ef9});}if(_0x4eb5bb===undefined&&_0x2bc642[_0x129013(0x13e)]!==null)this[_0x129013(0x119)](_0x2bc642,_0x44f446);const _0xe775eb=this[_0x129013(0x140)][_0x129013(0x13c)][_0x129013(0x158)]({'sessionId':_0x2bc642['id'],..._0x4eb5bb?.[_0x129013(0x13a)]===null||_0x4eb5bb===undefined?{}:{'cursor':_0x4eb5bb[_0x129013(0x13a)]},'limit':_0x44f446}),_0x60856=_0xe775eb[_0x129013(0x15f)]!==null?encodeActiveHistoryCursor({'sessionId':_0x2bc642['id'],'stage':_0x129013(0x106),'beforeAt':_0x4d30ff,'cursor':_0xe775eb[_0x129013(0x15f)]}):_0x2bc642[_0x129013(0x13e)]===null?null:encodeActiveHistoryCursor({'sessionId':_0x2bc642['id'],'stage':_0x129013(0x12f),'beforeAt':_0x4d30ff,'cursor':null});return this[_0x129013(0x131)](_0x60856,_0xe775eb[_0x129013(0xfc)],{'snapshotSequence':_0x262e76,'source':_0x129013(0x13c),'readAt':_0x201ef9,'deferredOlderHistory':!![]});}[_0x2beec3(0x119)](_0x1a03c7,_0xf00334){const _0x35fd29=_0x2beec3,_0x4fbd91=Date[_0x35fd29(0x11b)]();for(const [_0x2658bb,_0x2c8a6a]of this[_0x35fd29(0x118)])if(_0x2c8a6a[_0x35fd29(0x117)]+(0x37b5+0x3*-0x648e+0x1e055*0x1)<=_0x4fbd91)this[_0x35fd29(0x118)][_0x35fd29(0x162)](_0x2658bb);const _0x4b1e69=this[_0x35fd29(0x118)][_0x35fd29(0x13d)](_0x1a03c7['id']);if(_0x4b1e69!==undefined&&_0x4b1e69[_0x35fd29(0x175)]===_0xf00334)return;this[_0x35fd29(0x118)][_0x35fd29(0x10a)](_0x1a03c7['id'],{'createdAt':_0x4fbd91,'limit':_0xf00334,'page':this[_0x35fd29(0x12b)](_0x1a03c7,{'limit':_0xf00334})[_0x35fd29(0x133)](()=>({'page':undefined,'incompleteNative':![]}))});}[_0x2beec3(0x149)](_0x1cf0ab,_0x44e4d8,_0x4e5297){const _0xbc3869=_0x2beec3;if(_0x4e5297!==null)return undefined;const _0xa27ca3=this[_0xbc3869(0x118)][_0xbc3869(0x13d)](_0x1cf0ab);if(_0xa27ca3===undefined||_0xa27ca3[_0xbc3869(0x175)]!==_0x44e4d8||_0xa27ca3[_0xbc3869(0x117)]+(-0x3631+-0xcf*-0x20f+0x1f*-0x470)<=Date[_0xbc3869(0x11b)]())return undefined;return this[_0xbc3869(0x118)][_0xbc3869(0x162)](_0x1cf0ab),_0xa27ca3[_0xbc3869(0x131)];}async[_0x2beec3(0x147)](_0x36dd87){const _0x5d253d=_0x2beec3,_0x494fbe=this[_0x5d253d(0x140)][_0x5d253d(0x11c)][_0x5d253d(0x100)](_0x36dd87[_0x5d253d(0x14b)]);if(!_0x494fbe[_0x5d253d(0x129)](this[_0x5d253d(0x140)][_0x5d253d(0x169)]())){this[_0x5d253d(0x140)][_0x5d253d(0x114)](_0x36dd87['id'],_0x5d253d(0x16d));return;}const _0x29d7e1=await _0x494fbe[_0x5d253d(0x137)](_0x36dd87);if(_0x29d7e1!==undefined)this[_0x5d253d(0x140)][_0x5d253d(0x114)](_0x36dd87['id'],_0x29d7e1);}async[_0x2beec3(0x125)](_0x1d6b3e,_0x282cdc,_0x3e8d90=0x192c+0xecb+-0x27d9*0x1){const _0x2d0100=_0x2beec3;if(_0x1d6b3e[_0x2d0100(0x13e)]===null)return undefined;const _0x53c775=nativeHistoryPageCursor(_0x282cdc,_0x1d6b3e['id']),_0x2aceee=await readNativeSession(_0x1d6b3e[_0x2d0100(0x14b)],_0x1d6b3e[_0x2d0100(0x120)],_0x1d6b3e[_0x2d0100(0x13e)],_0x53c775,_0x3e8d90);if(_0x2aceee!==undefined)return _0x2aceee;return await discoverNativeSessions(_0x1d6b3e[_0x2d0100(0x14b)],_0x1d6b3e[_0x2d0100(0x120)]),readNativeSession(_0x1d6b3e[_0x2d0100(0x14b)],_0x1d6b3e[_0x2d0100(0x120)],_0x1d6b3e[_0x2d0100(0x13e)],_0x53c775,_0x3e8d90);}async[_0x2beec3(0x16c)](_0x23b585,_0x3d8518){const _0x15a237=_0x2beec3,_0xf7c45f=performance[_0x15a237(0x11b)](),_0x112d72=await this[_0x15a237(0x125)](_0x23b585),_0x382b12=Math[_0x15a237(0x157)](performance[_0x15a237(0x11b)]()-_0xf7c45f);if(_0x382b12>=-0x171c+0x4d5+0x5d*0x35)nodeLog(_0x15a237(0x12d),{'runner':_0x23b585[_0x15a237(0x14b)],'sessionId':_0x23b585['id'],'durationMs':_0x382b12});if(_0x112d72===undefined)return _0x3d8518;const _0x11b444=new Map();for(const _0x55fad4 of _0x112d72[_0x15a237(0x14e)]){if(_0x55fad4[_0x15a237(0x145)]!==_0x15a237(0x15e)||_0x55fad4[_0x15a237(0x173)]===undefined)continue;const _0x379531=this[_0x15a237(0x140)][_0x15a237(0x177)][_0x15a237(0x156)](_0x23b585,_0x55fad4[_0x15a237(0x173)]);if(_0x379531[_0x15a237(0x121)]>0x739+-0x745*-0x1+0x23*-0x6a)_0x11b444[_0x15a237(0x10a)](_0x55fad4[_0x15a237(0x128)],_0x379531);}if(_0x11b444[_0x15a237(0x17b)]===-0x1229+-0x864+0x1a8d)return _0x3d8518;return _0x3d8518[_0x15a237(0x130)](_0x3821f0=>({..._0x3821f0,'items':coalesceImageGenerationItems(_0x3821f0[_0x15a237(0x14e)][_0x15a237(0x130)](_0x19d457=>{const _0x2eee86=_0x15a237,_0x14a660=_0x11b444[_0x2eee86(0x13d)](_0x19d457['id'][_0x2eee86(0x113)](_0x19d457['id'][_0x2eee86(0x109)](':')+(-0x3*0xa0a+-0x7*0x296+0x3039)));if(_0x14a660===undefined||!isPlainRecord(_0x19d457[_0x2eee86(0x108)]))return _0x19d457;return{..._0x19d457,'payload':{..._0x19d457[_0x2eee86(0x108)],'attachments':_0x14a660}};}))}));}async[_0x2beec3(0x10d)](_0xa0e8df,_0x105ccf){const _0x3facc4=_0x2beec3,_0x401849=this[_0x3facc4(0x140)][_0x3facc4(0x11c)][_0x3facc4(0x100)](_0xa0e8df[_0x3facc4(0x14b)]);if(_0xa0e8df[_0x3facc4(0x13e)]===null||!_0x401849[_0x3facc4(0x129)](this[_0x3facc4(0x140)][_0x3facc4(0x169)]()))return undefined;const _0xa145f3=performance[_0x3facc4(0x11b)]();try{return await _0x401849[_0x3facc4(0x105)](_0xa0e8df,_0x105ccf,_0x1153e0=>this[_0x3facc4(0x10f)](_0xa0e8df,_0x1153e0));}finally{const _0x286608=Math[_0x3facc4(0x157)](performance[_0x3facc4(0x11b)]()-_0xa145f3);if(_0x286608>=-0x1fdd+-0x1ac8+0x3b9f)nodeLog(_0x3facc4(0x166),{'runner':_0xa0e8df[_0x3facc4(0x14b)],'sessionId':_0xa0e8df['id'],'durationMs':_0x286608});}}[_0x2beec3(0x10f)](_0x2db3ad,_0x530683){const _0x8a1ce1=_0x2beec3,_0x160c64=this[_0x8a1ce1(0x140)][_0x8a1ce1(0x11c)][_0x8a1ce1(0x100)](_0x2db3ad[_0x8a1ce1(0x14b)])[_0x8a1ce1(0x161)](_0x530683);if(_0x160c64===undefined)return undefined;return this[_0x8a1ce1(0x140)][_0x8a1ce1(0x13c)][_0x8a1ce1(0x158)]({'sessionId':_0x2db3ad['id'],'limit':0x1f4})[_0x8a1ce1(0xfc)][_0x8a1ce1(0x16a)](_0x3491e2=>_0x3491e2[_0x8a1ce1(0x15d)]===_0x160c64);}[_0x2beec3(0x131)](_0xa939cc,_0x24b1a7,_0x500dde){const _0x46873f=_0x2beec3;return{..._0x500dde,'turns':_0x24b1a7,'nextCursor':_0xa939cc,'latestVisibleAt':Math[_0x46873f(0x122)](-0x23ae+-0x3*0xc9d+-0x3b*-0x13f,..._0x24b1a7[_0x46873f(0x130)](_0x10493a=>Math[_0x46873f(0x122)](_0x10493a[_0x46873f(0x150)]??-0x102a+0x1b9a*-0x1+0x2bc4,_0x10493a[_0x46873f(0x116)]??0x1*0x22f7+-0xd*0x2cd+-0x1*-0x172)))};}}function nativeHistoryPageCursor(_0x2ef689,_0x3a96ce){const _0x2ade4d=_0x2beec3;if(_0x2ef689===undefined)return undefined;try{const _0x548c9b=JSON[_0x2ade4d(0x141)](Buffer[_0x2ade4d(0x153)](_0x2ef689,_0x2ade4d(0xff))[_0x2ade4d(0x159)](_0x2ade4d(0x163)));return _0x548c9b[_0x2ade4d(0x164)]===_0x3a96ce&&Number[_0x2ade4d(0x174)](_0x548c9b[_0x2ade4d(0x154)])&&Number[_0x2ade4d(0x174)](_0x548c9b[_0x2ade4d(0x143)])&&Number[_0x2ade4d(0x174)](_0x548c9b[_0x2ade4d(0x13f)])&&_0x548c9b[_0x2ade4d(0x154)]>=0x23a2+0xab0+-0x2e52&&_0x548c9b[_0x2ade4d(0x143)]>=0x1367*0x2+0x1976+-0x4044&&_0x548c9b[_0x2ade4d(0x143)]<=_0x548c9b[_0x2ade4d(0x154)]&&_0x548c9b[_0x2ade4d(0x13f)]>=0x269a+0x1049*-0x1+-0x1651&&_0x548c9b[_0x2ade4d(0x13f)]<=_0x548c9b[_0x2ade4d(0x154)]&&(_0x548c9b[_0x2ade4d(0x13b)]===undefined||Number[_0x2ade4d(0x174)](_0x548c9b[_0x2ade4d(0x13b)])&&_0x548c9b[_0x2ade4d(0x13b)]>=-0x1b99*0x1+-0x37e+-0x638*-0x5&&_0x548c9b[_0x2ade4d(0x13b)]<=-0x1b94*0x1+-0x1*-0x343+0x1a45)&&typeof _0x548c9b[_0x2ade4d(0x107)]===_0x2ade4d(0xfe)?{'snapshotEnd':_0x548c9b[_0x2ade4d(0x154)],'nextEnd':_0x548c9b[_0x2ade4d(0x143)],'fileAnchor':_0x548c9b[_0x2ade4d(0x107)],'anchorBytes':_0x548c9b[_0x2ade4d(0x13f)],..._0x548c9b[_0x2ade4d(0x13b)]===undefined?{}:{'readLimit':_0x548c9b[_0x2ade4d(0x13b)]}}:undefined;}catch{return undefined;}}const ACTIVE_HISTORY_CURSOR_PREFIX=_0x2beec3(0x134);function encodeActiveHistoryCursor(_0x2da069){const _0x53704a=_0x2beec3;return''+ACTIVE_HISTORY_CURSOR_PREFIX+Buffer[_0x53704a(0x153)](JSON[_0x53704a(0x14d)](_0x2da069))[_0x53704a(0x159)](_0x53704a(0xff));}function decodeActiveHistoryCursor(_0x2b7036,_0x5f848d){const _0x42065b=_0x2beec3;if(_0x2b7036===undefined||!_0x2b7036[_0x42065b(0x165)](ACTIVE_HISTORY_CURSOR_PREFIX))return undefined;try{const _0x4058fa=JSON[_0x42065b(0x141)](Buffer[_0x42065b(0x153)](_0x2b7036[_0x42065b(0x113)](ACTIVE_HISTORY_CURSOR_PREFIX[_0x42065b(0x121)]),_0x42065b(0xff))[_0x42065b(0x159)](_0x42065b(0x163)));if(_0x4058fa[_0x42065b(0x164)]!==_0x5f848d||_0x4058fa[_0x42065b(0x14f)]!==_0x42065b(0x106)&&_0x4058fa[_0x42065b(0x14f)]!==_0x42065b(0x12f)||typeof _0x4058fa[_0x42065b(0x11d)]!==_0x42065b(0x16e)||!Number[_0x42065b(0x10e)](_0x4058fa[_0x42065b(0x11d)])||_0x4058fa[_0x42065b(0x11d)]<0x6cf+-0x1310+0xc41||_0x4058fa[_0x42065b(0x13a)]!==null&&typeof _0x4058fa[_0x42065b(0x13a)]!==_0x42065b(0xfe))throw new Error(_0x42065b(0x152));return _0x4058fa;}catch{throw new Error(_0x42065b(0x152));}}function _0x4960(_0x405945,_0x393c97){_0x405945=_0x405945-(0x97*-0x38+-0x98c*-0x1+-0xc3c*-0x2);const _0x4cd2a7=_0x370a();let _0x11e44c=_0x4cd2a7[_0x405945];if(_0x4960['OLTGYH']===undefined){var _0x103604=function(_0x2d94a8){const _0x4d3ba2='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x4431a1='',_0x52ddec='';for(let _0x4d8b49=0x3f9*0x1+0x2b9+0x2*-0x359,_0x577017,_0x41c779,_0x3e6136=-0x14ab+0xf5a+-0x1*-0x551;_0x41c779=_0x2d94a8['charAt'](_0x3e6136++);~_0x41c779&&(_0x577017=_0x4d8b49%(-0x209a+0xad5*-0x2+-0x3*-0x1218)?_0x577017*(-0x2d4*0x6+0x283*0x7+0x5d*-0x1)+_0x41c779:_0x41c779,_0x4d8b49++%(0x845*-0x3+0x41*0x68+-0x195))?_0x4431a1+=String['fromCharCode'](-0x65*0x4+0x2*-0x3fa+0x181*0x7&_0x577017>>(-(-0x16d3+-0x2*0xf40+0x1*0x3555)*_0x4d8b49&0x207b*-0x1+-0x1*0x36a+-0xf*-0x265)):-0xff6+-0xc9b+0x1c91){_0x41c779=_0x4d3ba2['indexOf'](_0x41c779);}for(let _0x542838=0x76d+-0x1c47+0x14da,_0x5904ec=_0x4431a1['length'];_0x542838<_0x5904ec;_0x542838++){_0x52ddec+='%'+('00'+_0x4431a1['charCodeAt'](_0x542838)['toString'](-0x1d2a+-0x83f+0x2579))['slice'](-(0xff8+-0x23dd*0x1+-0x13e7*-0x1));}return decodeURIComponent(_0x52ddec);};_0x4960['JisKiL']=_0x103604,_0x4960['gjVQFl']={},_0x4960['OLTGYH']=!![];}const _0x12332d=_0x4cd2a7[-0xa*-0x79+-0x4c4+0x2*0x5];_0x4960['XQmFrF']!==_0x12332d&&(_0x4960['gjVQFl']={},_0x4960['XQmFrF']=_0x12332d);const _0x49da13=_0x4960['gjVQFl'][_0x405945];return _0x49da13===undefined?(_0x11e44c=_0x4960['JisKiL'](_0x11e44c),_0x4960['gjVQFl'][_0x405945]=_0x11e44c):_0x11e44c=_0x49da13,_0x11e44c;}function latestTurnActivityAt(_0x2dc104){const _0x4714bb=_0x2beec3;return Math[_0x4714bb(0x122)](_0x2dc104[_0x4714bb(0x150)]??0x25ea*0x1+-0x1*-0x5b5+-0x2b9f,_0x2dc104[_0x4714bb(0x116)]??-0x22e9*0x1+-0x1*0x943+0x2*0x1616);}function oldestTurnActivityAt(_0x16e024){const _0x10242d=_0x2beec3;return _0x16e024[_0x10242d(0x121)]===-0x17ee+0x1b7b+0x1*-0x38d?-0xfa3+-0x1d55+0x59f*0x8:Math[_0x10242d(0x112)](..._0x16e024[_0x10242d(0x130)](latestTurnActivityAt));}function sameConversationTurn(_0x35df50,_0x52538e){const _0x244e30=_0x2beec3;if(_0x35df50['id']===_0x52538e['id'])return!![];if(_0x35df50[_0x244e30(0x15d)]!==null&&_0x35df50[_0x244e30(0x15d)]===_0x52538e[_0x244e30(0x15d)])return!![];const _0x4d441c=conversationClientMessageId(_0x35df50);return _0x4d441c!==null&&_0x4d441c===conversationClientMessageId(_0x52538e);}function conversationClientMessageId(_0x537152){const _0x36792f=_0x2beec3;for(const _0x3f1de7 of _0x537152[_0x36792f(0x14e)]){if(_0x3f1de7[_0x36792f(0x145)]!==_0x36792f(0x139)||!isPlainRecord(_0x3f1de7[_0x36792f(0x108)]))continue;const _0x2ce272=_0x3f1de7[_0x36792f(0x108)][_0x36792f(0x14c)];if(typeof _0x2ce272===_0x36792f(0xfe)&&_0x2ce272[_0x36792f(0x121)]>-0x105*0x14+-0x91*0x31+-0x91*-0x55)return _0x2ce272;}return null;}function _0x370a(){const _0x2671c1=['z2v0qwDLBNrtzxnZAw9U','Aw1Hz2vbDhrHy2HTzw50CW','AxnjBNrLz2vY','BgLTAxq','Dhj1BMnHDgvK','yxr0ywnOBwvUDhm','CMvHza','AgfZtwfUywDLzefJDgL2zvj1BG','BMf0AxzLlNnLC3nPB24UAgLZDg9YEs5UyxrPDMuTCMvHzc5JB21WBgv0zwq','C2L6zq','DhvYBNm','u1rbuLrjtKC','C3rYAw5N','yMfZzty0DxjS','CMvXDwLYzq','ndi3uuPhCwLs','CMvHze1HBMfNzwrby3rPDMu','DMfSDwvZ','zMLSDgvY','CMvHze9MzMLJAwfSq29UDMvYC2f0Aw9U','uLvoveLnrq','zMLSzufUy2HVCG','Cgf5Bg9Hza','BgfZDeLUzgv4t2y','C2v0','BMf0AxzL','mJyYotiWAwjuyvPe','CMvHze9MzMLJAwfS','AxngAw5PDgu','BwfUywDLzfj1BM5LCLr1CM4','mZi0mdm4meDICeLnAq','CMvHzenVBNzLCNnHDgLVBKHPC3rVCNK','BwLU','C2XPy2u','C2v0rxH0zxjUywXby3rPDML0Eq','tKfusvzfx1rsqu5tq1jjufrFsu5dt01qtevurq','y29TCgXLDgvKqxq','y3jLyxrLzef0','ywn0AxzLsgLZDg9YEvjLywrZ','ChjLzMv0y2Hby3rPDMviAxn0B3j5','C29Tzq','BM93','CNvUBMvYCW','yMvMB3jLqxq','zMXHDe1HCa','ntu1ndjnyvfWCfe','y3DK','BgvUz3rO','Bwf4','mJKWmtGWmZnYBgXpv3u','mtqYndq5BNrxsK1Y','CMvHze5HDgL2zq','zMLUzeXHC3rjBMrLEa','uevoreLorW','Dg9VBfvZzuLK','yxzHAwXHyMXL','AgfZ','CMvHzfj1BM5LCKHPC3rVCNK','mtyYsNDuzKDH','BMf0AxzLlNnLC3nPB24UAgLZDg9YEs5HDhrHy2HTzw50lxnVDxjJzs1YzwfKlMnVBxbSzxrLza','C291CMnL','t0zgsunjquW','BwfW','CgfNzq','rvHurvjoquW','y2f0y2G','BwfYlwfJDgL2zs1OAxn0B3j5oJe6','C3rHDhvZ','y3vYC29YuMvZzxq','CMvHzev4DgvYBMfSqwn0AxzPDhK','mZvzCxvYqM0','DxnLCL9TzxnZywDL','y3vYC29Y','CMvHzeXPBwL0','CNvUDgLTzq','z2v0','zxH0zxjUywXtzxnZAw9Uswq','yw5JAg9YqNL0zxm','B3b0Aw9UCW','CgfYC2u','CMvHzef0','BMv4DevUza','C25HChnOB3rtzxf1zw5Jzq','A2LUza','BgLZDfj1BNngB3jtzxnZAw9U','CMvMCMvZAev4DgvYBMfSqwn0AxzPDhK','ywnJzxb0C1rYDw5JyxrLze5HDgL2zuHPC3rVCNK','DgfRzufJDgL2zuHPC3rVCNLszwfK','DxnLCL9PBNb1Df9Yzxf1zxn0','CNvUBMvY','y2XPzw50twvZC2fNzuLK','C3rYAw5NAwz5','AxrLBxm','C3rHz2u','C3rHCNrLzef0','odeYnJb1CwDps2C','rvzftLrFq1vsu09sx0LovKfmsuq','zNjVBq','C25HChnOB3rfBMq','tKfusvzfx1rsqu5tq1jjufrFvu5bvKfjtefcteu','CMvNAxn0zxjoyxrPDMu','CM91BMq','BgLZDenVBNzLCNnHDgLVBLr1CM5Z','Dg9tDhjPBMC','BMf0AxzLq29UDhjVBa','Bgf0zxn0vMLZAwjSzuf0','mtbSz2vNB2i','CNvUswq','Dg9VBf9JywXS','BMv4Den1CNnVCG','mti4mtuZELjswg9s','BwfUywDLzfj1BKzVCK5HDgL2zvr1CM4','zgvSzxrL','DxrMoa','C2vZC2LVBKLK','C3rHCNrZv2L0Aa','BMf0AxzLlNnLC3nPB24UAgLZDg9YEs5VzMzPy2LHBc1YzwfKlMnVBxbSzxrLza','Aw5JB21WBgv0zu5HDgL2zq','q0foq0vmteLorW','y2fWywjPBgL0AwvZ','zMLUza','CMvXDwvZDeLK','yxr0ywnOtMf0AxzLsw1Hz2vZ','vu5bvKfjtefcteu','BNvTyMvY','uLvotKLorW','B2zMAwnPywW','tufsx01btKfhruq'];_0x370a=function(){return _0x2671c1;};return _0x370a();}function sourceRank(_0x9547b2){const _0x290ace=_0x2beec3;if(_0x9547b2===_0x290ace(0x170))return 0x3*-0xa02+0xa55+-0x4*-0x4ed;if(_0x9547b2===_0x290ace(0x10b))return-0xd27*0x1+-0x1*0x1a49+0x2772;return-0x92*-0x16+-0x12e8+-0xb5*-0x9;}
|