@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.
Files changed (214) hide show
  1. package/dist/capabilities.js +2 -92
  2. package/dist/claude-agent-sdk.js +2 -330
  3. package/dist/claude-channel.js +2 -44
  4. package/dist/codex-app-server.js +2 -503
  5. package/dist/config.js +2 -56
  6. package/dist/connector/node-connector-options.js +2 -1
  7. package/dist/connector/node-operation-router.js +2 -22
  8. package/dist/connector.js +2 -845
  9. package/dist/control-outbound-scheduler.js +2 -154
  10. package/dist/database.js +2 -1418
  11. package/dist/event-buffer.js +2 -19
  12. package/dist/fake-runner.js +2 -129
  13. package/dist/health.js +2 -3
  14. package/dist/main.js +2 -54
  15. package/dist/migrations/v001.js +3 -144
  16. package/dist/migrations/v002.js +2 -143
  17. package/dist/migrations/v003.js +2 -44
  18. package/dist/migrations/v004.js +34 -30
  19. package/dist/native-jsonl-reader.js +2 -186
  20. package/dist/native-session-history.js +2 -1119
  21. package/dist/opencode-runtime.js +2 -80
  22. package/dist/opencode-server.js +2 -263
  23. package/dist/operational.js +2 -122
  24. package/dist/process-tree.js +2 -18
  25. package/dist/rotating-log.js +2 -67
  26. package/dist/runner/abstract-runner.js +2 -232
  27. package/dist/runner/claude/managed-run-controller.js +2 -345
  28. package/dist/runner/claude-code-runner.js +2 -303
  29. package/dist/runner/codex/composer-image-markers.js +2 -0
  30. package/dist/runner/codex/conversation-parser.js +2 -861
  31. package/dist/runner/codex/managed-run-controller.js +2 -460
  32. package/dist/runner/codex-runner.js +2 -628
  33. package/dist/runner/fake-test-runner.js +2 -47
  34. package/dist/runner/opencode/conversation-parser.js +2 -221
  35. package/dist/runner/opencode/managed-run-controller.js +2 -537
  36. package/dist/runner/opencode-runner.js +2 -448
  37. package/dist/runner/runner-registry.js +2 -90
  38. package/dist/runner-command-engine.js +2 -70
  39. package/dist/runner-profiles.js +2 -215
  40. package/dist/runner-usage.js +2 -190
  41. package/dist/runtime-command-detector.js +2 -73
  42. package/dist/runtime-state.js +2 -982
  43. package/dist/service/attachment-domain-state.js +2 -7
  44. package/dist/service/conversation-history-service.js +2 -457
  45. package/dist/service/conversation-segment-service.js +2 -162
  46. package/dist/service/external-session-resume-service.js +2 -118
  47. package/dist/service/fake-managed-run-service.js +2 -60
  48. package/dist/service/managed-runner-session-service.js +2 -35
  49. package/dist/service/mcp-installation-verifier.js +2 -87
  50. package/dist/service/mcp-node-operation-service.js +2 -90
  51. package/dist/service/mcp-package-installer.js +2 -136
  52. package/dist/service/native-session-projection-service.js +2 -280
  53. package/dist/service/native-session-watch-service.js +2 -383
  54. package/dist/service/node-connection-lifecycle-service.js +2 -84
  55. package/dist/service/node-control-channel.js +2 -85
  56. package/dist/service/node-control-message-service.js +2 -107
  57. package/dist/service/node-request-service.js +2 -52
  58. package/dist/service/node-run-event-bridge.js +2 -83
  59. package/dist/service/node-terminal-channel.js +2 -182
  60. package/dist/service/node-upgrade-coordinator.js +2 -137
  61. package/dist/service/node-workspace-coordinator.js +2 -70
  62. package/dist/service/recent-run-projection-service.js +2 -78
  63. package/dist/service/run-attachment-service.js +2 -194
  64. package/dist/service/run-domain-state.js +2 -4
  65. package/dist/service/run-event-service.js +2 -193
  66. package/dist/service/run-workbench-service.js +2 -104
  67. package/dist/service/runner-channel-message-service.js +2 -20
  68. package/dist/service/runner-interaction-service.js +2 -243
  69. package/dist/service/runner-service.js +2 -71
  70. package/dist/service/session-catalog-service.js +2 -224
  71. package/dist/service/session-command-service.js +2 -76
  72. package/dist/service/session-context-service.js +2 -101
  73. package/dist/service/session-domain-state.js +2 -9
  74. package/dist/service/session-identity-service.js +2 -86
  75. package/dist/service/session-lifecycle-service.js +2 -240
  76. package/dist/service/session-message-service.js +2 -173
  77. package/dist/service/session-presentation-service.js +2 -43
  78. package/dist/service/session-query-service.js +2 -82
  79. package/dist/service/skill-directory-service.js +2 -238
  80. package/dist/service/skill-install-service.js +2 -434
  81. package/dist/service/skill-node-operation-service.js +2 -206
  82. package/dist/service/terminal-relay-state.js +2 -3
  83. package/dist/service/terminal-service.js +2 -52
  84. package/dist/service/workbench-event-service.js +2 -19
  85. package/dist/service/workbench-manifest-service.js +2 -69
  86. package/dist/service/workspace-change-service.js +2 -86
  87. package/dist/service/workspace-content-search-service.js +2 -477
  88. package/dist/service/workspace-domain-state.js +2 -41
  89. package/dist/service/workspace-file-service.js +2 -122
  90. package/dist/service/workspace-git-exclude-service.js +2 -119
  91. package/dist/service/workspace-queue-workbench-service.js +2 -304
  92. package/dist/service/workspace-service.js +2 -69
  93. package/dist/service/workspace-session-service.js +2 -139
  94. package/dist/service/workspace-upload-service.js +2 -262
  95. package/dist/service/workspace-watch-service.js +2 -146
  96. package/dist/service/workspace-workbench-service.js +2 -405
  97. package/dist/service.js +2 -38
  98. package/dist/storage.js +2 -32
  99. package/dist/supervisor.js +2 -136
  100. package/dist/terminal.js +2 -416
  101. package/dist/util/node-operation-parsers.js +2 -382
  102. package/dist/util/personal-instructions.js +2 -31
  103. package/dist/util/runner-error.js +2 -52
  104. package/dist/util/runner-native-session-parsers.js +2 -490
  105. package/dist/util/safe-error.js +2 -5
  106. package/dist/util/secret-environment.js +2 -25
  107. package/dist/workspace.js +2 -1519
  108. package/package.json +3 -3
  109. package/dist/capabilities.d.ts +0 -12
  110. package/dist/claude-agent-sdk.d.ts +0 -92
  111. package/dist/claude-channel.d.ts +0 -28
  112. package/dist/codex-app-server.d.ts +0 -133
  113. package/dist/config.d.ts +0 -18
  114. package/dist/connector/node-connector-options.d.ts +0 -27
  115. package/dist/connector/node-operation-router.d.ts +0 -9
  116. package/dist/connector.d.ts +0 -94
  117. package/dist/control-outbound-scheduler.d.ts +0 -29
  118. package/dist/database.d.ts +0 -305
  119. package/dist/event-buffer.d.ts +0 -9
  120. package/dist/fake-runner.d.ts +0 -42
  121. package/dist/health.d.ts +0 -4
  122. package/dist/main.d.ts +0 -2
  123. package/dist/migrations/v001.d.ts +0 -3
  124. package/dist/migrations/v002.d.ts +0 -4
  125. package/dist/migrations/v003.d.ts +0 -4
  126. package/dist/migrations/v004.d.ts +0 -4
  127. package/dist/native-jsonl-reader.d.ts +0 -35
  128. package/dist/native-session-history.d.ts +0 -126
  129. package/dist/opencode-runtime.d.ts +0 -33
  130. package/dist/opencode-server.d.ts +0 -49
  131. package/dist/operational.d.ts +0 -39
  132. package/dist/process-tree.d.ts +0 -9
  133. package/dist/rotating-log.d.ts +0 -17
  134. package/dist/runner/abstract-runner.d.ts +0 -172
  135. package/dist/runner/claude/managed-run-controller.d.ts +0 -51
  136. package/dist/runner/claude-code-runner.d.ts +0 -72
  137. package/dist/runner/codex/conversation-parser.d.ts +0 -59
  138. package/dist/runner/codex/managed-run-controller.d.ts +0 -90
  139. package/dist/runner/codex-runner.d.ts +0 -103
  140. package/dist/runner/fake-test-runner.d.ts +0 -26
  141. package/dist/runner/opencode/conversation-parser.d.ts +0 -31
  142. package/dist/runner/opencode/managed-run-controller.d.ts +0 -82
  143. package/dist/runner/opencode-runner.d.ts +0 -71
  144. package/dist/runner/runner-registry.d.ts +0 -19
  145. package/dist/runner-command-engine.d.ts +0 -28
  146. package/dist/runner-profiles.d.ts +0 -15
  147. package/dist/runner-usage.d.ts +0 -33
  148. package/dist/runtime-command-detector.d.ts +0 -3
  149. package/dist/runtime-state.d.ts +0 -171
  150. package/dist/service/attachment-domain-state.d.ts +0 -7
  151. package/dist/service/conversation-history-service.d.ts +0 -43
  152. package/dist/service/conversation-segment-service.d.ts +0 -20
  153. package/dist/service/external-session-resume-service.d.ts +0 -34
  154. package/dist/service/fake-managed-run-service.d.ts +0 -28
  155. package/dist/service/managed-runner-session-service.d.ts +0 -12
  156. package/dist/service/mcp-installation-verifier.d.ts +0 -9
  157. package/dist/service/mcp-node-operation-service.d.ts +0 -11
  158. package/dist/service/mcp-package-installer.d.ts +0 -8
  159. package/dist/service/native-session-projection-service.d.ts +0 -52
  160. package/dist/service/native-session-watch-service.d.ts +0 -62
  161. package/dist/service/node-connection-lifecycle-service.d.ts +0 -36
  162. package/dist/service/node-control-channel.d.ts +0 -32
  163. package/dist/service/node-control-message-service.d.ts +0 -27
  164. package/dist/service/node-request-service.d.ts +0 -14
  165. package/dist/service/node-run-event-bridge.d.ts +0 -40
  166. package/dist/service/node-terminal-channel.d.ts +0 -29
  167. package/dist/service/node-upgrade-coordinator.d.ts +0 -29
  168. package/dist/service/node-workspace-coordinator.d.ts +0 -29
  169. package/dist/service/recent-run-projection-service.d.ts +0 -14
  170. package/dist/service/run-attachment-service.d.ts +0 -38
  171. package/dist/service/run-domain-state.d.ts +0 -4
  172. package/dist/service/run-event-service.d.ts +0 -33
  173. package/dist/service/run-workbench-service.d.ts +0 -25
  174. package/dist/service/runner-channel-message-service.d.ts +0 -13
  175. package/dist/service/runner-interaction-service.d.ts +0 -39
  176. package/dist/service/runner-service.d.ts +0 -46
  177. package/dist/service/session-catalog-service.d.ts +0 -45
  178. package/dist/service/session-command-service.d.ts +0 -24
  179. package/dist/service/session-context-service.d.ts +0 -35
  180. package/dist/service/session-domain-state.d.ts +0 -9
  181. package/dist/service/session-identity-service.d.ts +0 -24
  182. package/dist/service/session-lifecycle-service.d.ts +0 -31
  183. package/dist/service/session-message-service.d.ts +0 -33
  184. package/dist/service/session-presentation-service.d.ts +0 -34
  185. package/dist/service/session-query-service.d.ts +0 -35
  186. package/dist/service/skill-directory-service.d.ts +0 -20
  187. package/dist/service/skill-install-service.d.ts +0 -21
  188. package/dist/service/skill-node-operation-service.d.ts +0 -44
  189. package/dist/service/terminal-relay-state.d.ts +0 -6
  190. package/dist/service/terminal-service.d.ts +0 -12
  191. package/dist/service/workbench-event-service.d.ts +0 -9
  192. package/dist/service/workbench-manifest-service.d.ts +0 -90
  193. package/dist/service/workspace-change-service.d.ts +0 -9
  194. package/dist/service/workspace-content-search-service.d.ts +0 -14
  195. package/dist/service/workspace-domain-state.d.ts +0 -79
  196. package/dist/service/workspace-file-service.d.ts +0 -18
  197. package/dist/service/workspace-git-exclude-service.d.ts +0 -4
  198. package/dist/service/workspace-queue-workbench-service.d.ts +0 -86
  199. package/dist/service/workspace-service.d.ts +0 -15
  200. package/dist/service/workspace-session-service.d.ts +0 -23
  201. package/dist/service/workspace-upload-service.d.ts +0 -39
  202. package/dist/service/workspace-watch-service.d.ts +0 -23
  203. package/dist/service/workspace-workbench-service.d.ts +0 -58
  204. package/dist/service.d.ts +0 -4
  205. package/dist/storage.d.ts +0 -2
  206. package/dist/supervisor.d.ts +0 -1
  207. package/dist/terminal.d.ts +0 -133
  208. package/dist/util/node-operation-parsers.d.ts +0 -92
  209. package/dist/util/personal-instructions.d.ts +0 -2
  210. package/dist/util/runner-error.d.ts +0 -6
  211. package/dist/util/runner-native-session-parsers.d.ts +0 -74
  212. package/dist/util/safe-error.d.ts +0 -2
  213. package/dist/util/secret-environment.d.ts +0 -1
  214. package/dist/workspace.d.ts +0 -217
@@ -1,7 +1,2 @@
1
- export class AttachmentDomainState {
2
- runDirectories = new Map();
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
- import { discoverNativeSessions, readNativeSession } from '../native-session-history.js';
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;}