@myagentroam/node 0.9.9 → 0.9.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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,490 +1,2 @@
1
- import { createHash } from 'node:crypto';
2
- import { fileURLToPath } from 'node:url';
3
- import { stripClaudePlanTag } from '../runner-command-engine.js';
4
- import { compactRunnerText, isClaudeCommandTool, isPlainRecord, nativeClaudeCommand, nativePageEnd } from './node-operation-parsers.js';
5
- export function extractId(result, key) {
6
- if (typeof result === 'object' &&
7
- result !== null &&
8
- key in result &&
9
- typeof result[key] === 'object' &&
10
- result[key] !== null &&
11
- typeof result[key]['id'] === 'string') {
12
- return result[key]['id'];
13
- }
14
- throw new Error(`CODEX_${key.toUpperCase()}_ID_MISSING`);
15
- }
16
- export async function settleWithin(promise, milliseconds) {
17
- let timer;
18
- try {
19
- return await Promise.race([
20
- promise,
21
- new Promise((resolve) => {
22
- timer = setTimeout(() => resolve(undefined), milliseconds);
23
- timer.unref();
24
- })
25
- ]);
26
- }
27
- finally {
28
- if (timer !== undefined)
29
- clearTimeout(timer);
30
- }
31
- }
32
- export function extractCodexThreads(result) {
33
- if (typeof result !== 'object' || result === null || !('data' in result))
34
- return [];
35
- const data = result.data;
36
- if (!Array.isArray(data))
37
- return [];
38
- return data.flatMap((entry) => {
39
- if (typeof entry !== 'object' || entry === null)
40
- return [];
41
- const value = entry;
42
- if (typeof value.id !== 'string')
43
- return [];
44
- const source = typeof value.sourceKind === 'string'
45
- ? value.sourceKind
46
- : typeof value.source === 'string'
47
- ? value.source
48
- : typeof value.source === 'object' &&
49
- value.source !== null &&
50
- typeof value.source.kind === 'string'
51
- ? value.source.kind
52
- : undefined;
53
- const sourceRecord = isPlainRecord(value.source) ? value.source : undefined;
54
- const derived = source === 'subagent' ||
55
- sourceRecord?.kind === 'subagent' ||
56
- isPlainRecord(sourceRecord?.subagent) ||
57
- isPlainRecord(sourceRecord?.subAgent);
58
- const title = typeof value.name === 'string' && value.name.trim().length > 0
59
- ? value.name.trim()
60
- : typeof value.preview === 'string' && value.preview.trim().length > 0
61
- ? value.preview.trim()
62
- : undefined;
63
- return [{ id: value.id, source, derived, cwd: value.cwd, title }];
64
- });
65
- }
66
- export function codexThreadActivity(result) {
67
- if (!isPlainRecord(result) || !isPlainRecord(result.thread))
68
- return 'UNAVAILABLE';
69
- const status = result.thread.status;
70
- if (!isPlainRecord(status) || typeof status.type !== 'string')
71
- return 'UNAVAILABLE';
72
- if (status.type === 'active')
73
- return 'EXTERNAL_ACTIVE';
74
- if (status.type === 'idle' || status.type === 'notLoaded')
75
- return 'IDLE';
76
- return 'UNAVAILABLE';
77
- }
78
- export function codexActiveTurnId(result) {
79
- if (!isPlainRecord(result) ||
80
- !isPlainRecord(result.thread) ||
81
- !Array.isArray(result.thread.turns))
82
- return undefined;
83
- const active = result.thread.turns.find((turn) => isPlainRecord(turn) &&
84
- typeof turn.id === 'string' &&
85
- (turn.status === 'active' || turn.status === 'inProgress'));
86
- return isPlainRecord(active) && typeof active.id === 'string' ? active.id : undefined;
87
- }
88
- export function codexThreadCwd(value) {
89
- if (typeof value !== 'string' || value.length === 0)
90
- throw new Error('CODEX_THREAD_CWD_INVALID');
91
- if (!value.startsWith('file:'))
92
- return value;
93
- try {
94
- return fileURLToPath(value);
95
- }
96
- catch {
97
- throw new Error('CODEX_THREAD_CWD_INVALID');
98
- }
99
- }
100
- export function isWithinWorkspace(cwd, workspacePath) {
101
- const normalize = (value) => {
102
- const compact = value.replace(/[\\/]+/g, '/').replace(/\/$/, '');
103
- return process.platform === 'win32' ? compact.toLowerCase() : compact;
104
- };
105
- const normalizedCwd = normalize(cwd);
106
- const normalizedWorkspace = normalize(workspacePath);
107
- if (normalizedCwd === normalizedWorkspace)
108
- return true;
109
- return normalizedCwd.startsWith(`${normalizedWorkspace}/`);
110
- }
111
- export function claudeDiscoveredSession(value, fallbackCwd) {
112
- if (typeof value !== 'object' || value === null)
113
- return undefined;
114
- const record = value;
115
- if (record.isSidechain === true)
116
- return undefined;
117
- const externalSessionId = typeof record.sessionId === 'string'
118
- ? record.sessionId
119
- : typeof record.id === 'string'
120
- ? record.id
121
- : undefined;
122
- if (externalSessionId === undefined || externalSessionId.length === 0)
123
- return undefined;
124
- const title = typeof record.summary === 'string'
125
- ? record.summary
126
- : typeof record.title === 'string'
127
- ? record.title
128
- : undefined;
129
- const cwd = typeof record.cwd === 'string' && record.cwd.length > 0 ? record.cwd : fallbackCwd;
130
- return { externalSessionId, cwd, ...(title === undefined ? {} : { title: title.slice(0, 80) }) };
131
- }
132
- export function latestNativeActivity(history) {
133
- return history.lastActivityAt;
134
- }
135
- export function sameContextUsage(left, right) {
136
- return (left.model === right.model &&
137
- left.usedTokens === right.usedTokens &&
138
- left.maxTokens === right.maxTokens);
139
- }
140
- export function isNativeHistory(value) {
141
- return (typeof value === 'object' &&
142
- value !== null &&
143
- Array.isArray(value.items));
144
- }
145
- export function deduplicateDirectSessions(sessions) {
146
- const values = new Map();
147
- for (const session of sessions) {
148
- const existing = values.get(session.id);
149
- if (existing === undefined || existing.lastActivityAt < session.lastActivityAt)
150
- values.set(session.id, session);
151
- }
152
- return [...values.values()].sort((left, right) => right.lastActivityAt - left.lastActivityAt);
153
- }
154
- export function nativeConversationPage(session, history, input, runtimeTurns = [], registerImages = () => []) {
155
- const limit = Math.min(Math.max(input.limit ?? 30, 1), 500);
156
- const effectiveCursor = history.cursorReset === true ? undefined : input.cursor;
157
- const nativeTurns = nativeTranscriptTurns(history.items);
158
- const nativeTurnIds = nativeTranscriptTurnIds(session.id, nativeTurns);
159
- const end = nativePageEnd(effectiveCursor, session.id, nativeTurns.length);
160
- const start = Math.max(0, end - limit);
161
- const nativePageTurns = nativeTurns
162
- .slice(start, end)
163
- .map((entries, relativeIndex) => {
164
- const nativeUser = entries.find(({ entry }) => entry.kind === 'message' && entry.role === 'USER')?.entry;
165
- const matchedClientMessageId = nativeUser?.kind === 'message'
166
- ? nativeUserClientMessageId(nativeUser, nativeUser.createdAt, runtimeTurns)
167
- : null;
168
- const runtimeTurn = typeof matchedClientMessageId === 'string'
169
- ? runtimeTurns.find((turn) => runtimeTurnClientMessageId(turn) === matchedClientMessageId)
170
- : undefined;
171
- const turnId = runtimeTurn?.id ?? nativeTurnIds[start + relativeIndex];
172
- const itemIdentities = nativeTranscriptItemIdentities(entries);
173
- const nativeItems = entries.map(({ entry, index }, entryIndex) => ({
174
- ...nativeTranscriptConversationItem(session, entry, index, itemIdentities[entryIndex], turnId, runtimeTurns, registerImages),
175
- runId: runtimeTurn?.runId ?? null
176
- }));
177
- const runtimeErrors = (runtimeTurn?.items ?? [])
178
- .filter((item) => item.kind === 'error')
179
- .map((item) => ({ ...item, turnId, runId: runtimeTurn?.runId ?? null }));
180
- const items = runtimeAssistantProjectionMoreComplete(runtimeTurn, nativeItems)
181
- ? runtimeTurn.items.map((item) => ({
182
- ...item,
183
- turnId,
184
- runId: runtimeTurn.runId
185
- }))
186
- : [
187
- ...nativeItems,
188
- ...runtimeErrors.filter((error) => !nativeItems.some((item) => item.id === error.id))
189
- ];
190
- const startedAt = items[0]?.startedAt ?? null;
191
- const completedAt = items.at(-1)?.completedAt ?? startedAt;
192
- const after = lastNativeItemId(entries);
193
- return {
194
- id: turnId,
195
- sessionId: session.id,
196
- runId: runtimeTurn?.runId ?? null,
197
- userItemId: items.find((item) => item.kind === 'user_message')?.id ?? null,
198
- status: runtimeErrors.length > 0 ? 'FAILED' : 'SUCCEEDED',
199
- model: null,
200
- effort: null,
201
- access: null,
202
- ...(after === undefined || session.runner !== 'claude-code'
203
- ? {}
204
- : {
205
- rewind: {
206
- before: lastNativeItemId(nativeTurns[start + relativeIndex - 1] ?? []) ?? null,
207
- after
208
- }
209
- }),
210
- items,
211
- startedAt,
212
- completedAt
213
- };
214
- });
215
- const turns = nativePageTurns;
216
- const nextEnd = start;
217
- const cursorBase = {
218
- sessionId: session.id,
219
- ...(history.snapshotEnd === undefined ? {} : { snapshotEnd: history.snapshotEnd }),
220
- ...(history.windowEnd === undefined ? {} : { nextEnd: history.windowEnd }),
221
- ...(history.fileAnchor === undefined ? {} : { fileAnchor: history.fileAnchor }),
222
- ...(history.anchorBytes === undefined ? {} : { anchorBytes: history.anchorBytes }),
223
- readLimit: history.windowReadLimit ?? limit
224
- };
225
- const precedingWindow = history.truncated === true &&
226
- history.windowStart !== undefined &&
227
- history.snapshotEnd !== undefined &&
228
- history.fileAnchor !== undefined &&
229
- history.anchorBytes !== undefined
230
- ? Buffer.from(JSON.stringify({
231
- sessionId: session.id,
232
- snapshotEnd: history.snapshotEnd,
233
- nextEnd: history.windowStart,
234
- fileAnchor: history.fileAnchor,
235
- anchorBytes: history.anchorBytes,
236
- readLimit: history.windowReadLimit ?? limit
237
- })).toString('base64url')
238
- : null;
239
- return {
240
- turns,
241
- nextCursor: nextEnd > 0
242
- ? Buffer.from(JSON.stringify({ ...cursorBase, end: nextEnd })).toString('base64url')
243
- : precedingWindow
244
- };
245
- }
246
- export function runtimeAssistantProjectionMoreComplete(runtimeTurn, projectedItems) {
247
- if (runtimeTurn === undefined)
248
- return false;
249
- const assistantStats = (items) => items.reduce((stats, item) => {
250
- if (item.kind !== 'assistant_message' || !isPlainRecord(item.payload))
251
- return stats;
252
- return {
253
- count: stats.count + 1,
254
- characters: stats.characters +
255
- (typeof item.payload.text === 'string' ? item.payload.text.length : 0)
256
- };
257
- }, { count: 0, characters: 0 });
258
- const runtime = assistantStats(runtimeTurn.items);
259
- const projected = assistantStats(projectedItems);
260
- return runtime.count > projected.count || runtime.characters > projected.characters;
261
- }
262
- function runtimeTurnClientMessageId(turn) {
263
- const user = turn.items.find((item) => item.kind === 'user_message');
264
- return isPlainRecord(user?.payload) && typeof user.payload.clientMessageId === 'string'
265
- ? user.payload.clientMessageId
266
- : undefined;
267
- }
268
- function lastNativeItemId(entries) {
269
- return entries.findLast(({ entry }) => entry.nativeId !== undefined)?.entry.nativeId;
270
- }
271
- function nativeTranscriptTurnIds(sessionId, turns) {
272
- const occurrences = new Map();
273
- return turns.map((entries) => {
274
- const user = entries.find(({ entry }) => entry.kind === 'message' && entry.role === 'USER')?.entry;
275
- const first = user ?? entries[0]?.entry;
276
- const base = first?.nativeId ?? nativeTranscriptItemFingerprint(first);
277
- const occurrence = occurrences.get(base) ?? 0;
278
- occurrences.set(base, occurrence + 1);
279
- return `${sessionId}:native:${base}${occurrence === 0 ? '' : `:${occurrence}`}`;
280
- });
281
- }
282
- function nativeTranscriptItemIdentities(entries) {
283
- const nativeIdCounts = new Map();
284
- for (const { entry } of entries)
285
- if (entry.nativeId !== undefined)
286
- nativeIdCounts.set(entry.nativeId, (nativeIdCounts.get(entry.nativeId) ?? 0) + 1);
287
- const occurrences = new Map();
288
- return entries.map(({ entry }) => {
289
- const base = entry.nativeId !== undefined && nativeIdCounts.get(entry.nativeId) === 1
290
- ? entry.nativeId
291
- : `${entry.nativeId === undefined ? '' : `${entry.nativeId}:`}${nativeTranscriptItemFingerprint(entry)}`;
292
- const occurrence = occurrences.get(base) ?? 0;
293
- occurrences.set(base, occurrence + 1);
294
- return occurrence === 0 ? base : `${base}:${occurrence}`;
295
- });
296
- }
297
- function nativeTranscriptItemFingerprint(entry) {
298
- return createHash('sha256')
299
- .update(JSON.stringify(entry ?? null))
300
- .digest('base64url')
301
- .slice(0, 24);
302
- }
303
- function nativeTranscriptTurns(items) {
304
- const turns = [];
305
- let current = [];
306
- for (const [index, entry] of items.entries()) {
307
- if (entry.kind === 'message' && entry.role === 'USER' && current.length > 0) {
308
- turns.push(current);
309
- current = [];
310
- }
311
- current.push({ entry, index });
312
- }
313
- if (current.length > 0)
314
- turns.push(current);
315
- return turns;
316
- }
317
- function nativeTranscriptConversationItem(session, entry, index, itemIdentity, turnId, runtimeTurns, registerImages) {
318
- const time = entry.createdAt;
319
- const isToolCall = entry.kind === 'tool_call';
320
- const isUnknown = entry.kind === 'unknown';
321
- const isReasoning = entry.kind === 'reasoning_summary';
322
- const isCommand = isToolCall && isClaudeCommandTool(entry.toolName);
323
- const userInputQuestions = session.runner === 'claude-code' &&
324
- isToolCall &&
325
- entry.toolName === 'AskUserQuestion' &&
326
- isPlainRecord(entry.input)
327
- ? claudeUserInputQuestions(entry.input)
328
- : [];
329
- const isUserInputRequest = userInputQuestions.length > 0;
330
- const clientMessageId = entry.kind === 'message' && entry.role === 'USER'
331
- ? nativeUserClientMessageId(entry, time, runtimeTurns)
332
- : null;
333
- // Claude tagged Plan Mode strips the injected planning instruction label from user content
334
- // and normalizes a complete <proposed_plan> Agent response into a plan card.
335
- const entryText = entry.kind === 'message'
336
- ? entry.role === 'USER'
337
- ? stripClaudePlanTag(entry.text)
338
- : entry.text
339
- : '';
340
- const planText = entry.kind === 'message' && entry.role !== 'USER' ? claudePlanText(entryText) : undefined;
341
- const item = {
342
- id: `${turnId}:item:${itemIdentity}`,
343
- sessionId: session.id,
344
- turnId,
345
- runId: null,
346
- parentItemId: null,
347
- sourceSequence: index,
348
- revision: 0,
349
- kind: isUserInputRequest
350
- ? 'user_input_request'
351
- : isReasoning
352
- ? 'reasoning_summary'
353
- : isToolCall
354
- ? isCommand
355
- ? 'command_execution'
356
- : 'tool_call'
357
- : isUnknown
358
- ? 'unknown'
359
- : entry.kind === 'message' && entry.role === 'USER'
360
- ? 'user_message'
361
- : planText !== undefined
362
- ? 'plan'
363
- : 'assistant_message',
364
- status: 'COMPLETED',
365
- payload: isUserInputRequest
366
- ? {
367
- requestId: `native:${entry.kind === 'tool_call' ? entry.toolUseId : `item-${itemIdentity}`}`,
368
- questions: userInputQuestions
369
- }
370
- : isReasoning
371
- ? { sections: entry.sections }
372
- : isToolCall
373
- ? isCommand
374
- ? {
375
- command: nativeClaudeCommand(entry),
376
- cwd: null,
377
- outputPreview: entry.outputSummary ?? '',
378
- outputRef: null,
379
- exitCode: null,
380
- durationMs: null,
381
- truncated: entry.inputTruncated || entry.outputTruncated
382
- }
383
- : {
384
- namespace: session.runner,
385
- toolName: entry.toolName,
386
- title: entry.toolName,
387
- inputSummary: entry.inputSummary,
388
- outputSummary: entry.outputSummary,
389
- progressLabel: null,
390
- errorCode: entry.failed ? 'TOOL_EXECUTION_FAILED' : null,
391
- truncated: entry.inputTruncated || entry.outputTruncated,
392
- ...(entry.imageAttachments === undefined
393
- ? {}
394
- : { attachments: registerImages(entry.imageAttachments) })
395
- }
396
- : isUnknown
397
- ? { sourceEventType: entry.sourceEventType, label: entry.label }
398
- : entry.kind === 'message' && entry.role === 'USER'
399
- ? { clientMessageId, text: entryText, contexts: [], delivery: 'ACCEPTED' }
400
- : planText !== undefined
401
- ? { explanation: compactRunnerText(planText, 20_000), steps: [] }
402
- : { text: entryText, format: 'markdown', source: 'native-file' },
403
- startedAt: time,
404
- completedAt: time
405
- };
406
- return item;
407
- }
408
- /**
409
- * Claude JSONL does not retain browser request IDs. While the Node process is alive, match current
410
- * runtime user messages by content and creation time so native history replaces the optimistic Turn.
411
- */
412
- export function nativeUserClientMessageId(entry, createdAt, runtimeTurns) {
413
- const candidates = [];
414
- for (const turn of runtimeTurns) {
415
- const user = turn.items.find((item) => item.kind === 'user_message');
416
- if (user === undefined || !isPlainRecord(user.payload))
417
- continue;
418
- const payload = user.payload;
419
- const clientMessageId = typeof payload.clientMessageId === 'string' ? payload.clientMessageId : null;
420
- // Tagged Plan Mode instruction labels exist only in native transcripts; runtime bubbles retain the original content.
421
- if (clientMessageId === null || payload.text !== stripClaudePlanTag(entry.text))
422
- continue;
423
- const runtimeCreatedAt = user.startedAt ?? turn.startedAt;
424
- candidates.push({ clientMessageId, createdAt: runtimeCreatedAt ?? null });
425
- }
426
- if (createdAt === null)
427
- return candidates.length === 1 ? candidates[0].clientMessageId : null;
428
- const timed = candidates
429
- .filter((candidate) => candidate.createdAt !== null)
430
- .map((candidate) => ({
431
- ...candidate,
432
- distance: Math.abs(createdAt - candidate.createdAt)
433
- }))
434
- .filter((candidate) => candidate.distance <= 60_000)
435
- .sort((left, right) => left.distance - right.distance);
436
- return timed[0]?.clientMessageId ?? null;
437
- }
438
- /**
439
- * Normalize the documented App Server `thread/read(includeTurns: true)`
440
- * result. Only items with a user-visible Workbench representation are kept;
441
- * raw protocol envelopes are deliberately never exposed to Web.
442
- */
443
- export function claudePlanText(text) {
444
- const trimmed = text.trim();
445
- if (!trimmed.startsWith('<proposed_plan>') || !/<\/proposed_plan>\s*$/.test(trimmed))
446
- return undefined;
447
- const plan = trimmed
448
- .slice('<proposed_plan>'.length)
449
- .replace(/<\/proposed_plan>\s*$/, '')
450
- .trim();
451
- return plan.length > 0 ? plan : undefined;
452
- }
453
- export function claudeUserInputQuestions(value) {
454
- if (!Array.isArray(value.questions) || value.questions.length === 0 || value.questions.length > 4)
455
- return [];
456
- const questions = value.questions.map((raw, index) => {
457
- if (!isPlainRecord(raw) || typeof raw.question !== 'string')
458
- return undefined;
459
- const options = Array.isArray(raw.options)
460
- ? raw.options.flatMap((option) => {
461
- if (!isPlainRecord(option) || typeof option.label !== 'string')
462
- return [];
463
- const label = compactRunnerText(option.label, 500);
464
- return label.length === 0
465
- ? []
466
- : [
467
- {
468
- value: label,
469
- label,
470
- description: typeof option.description === 'string'
471
- ? compactRunnerText(option.description, 1_000)
472
- : null
473
- }
474
- ];
475
- })
476
- : [];
477
- const multiSelect = raw.multiSelect === true;
478
- return {
479
- id: `claude-question-${index}`,
480
- prompt: compactRunnerText(raw.question, 5_000),
481
- input: options.length === 0 ? 'SHORT_TEXT' : multiSelect ? 'MULTI_SELECT' : 'SINGLE_SELECT',
482
- options,
483
- allowOther: true,
484
- multiSelect
485
- };
486
- });
487
- return questions.some((question) => question === undefined)
488
- ? []
489
- : questions;
490
- }
1
+ /* mar-release-protected */
2
+ (function(_0x2906b6,_0x56172a){const _0x5106c0=_0x1d2f,_0x2dc50d=_0x2906b6();while(!![]){try{const _0x3ff5d9=parseInt(_0x5106c0(0x1ce))/(-0x1357*-0x1+0xd51+-0x20a7)*(-parseInt(_0x5106c0(0x201))/(0x1d*-0x11+0x151f+-0x1330))+parseInt(_0x5106c0(0x24d))/(-0x2*-0xed5+-0x1*0x1c33+-0x174)*(-parseInt(_0x5106c0(0x1ff))/(0x2037*-0x1+0x1937+0x1c1*0x4))+parseInt(_0x5106c0(0x1dd))/(-0x14dc*-0x1+-0x10aa+0x42d*-0x1)*(parseInt(_0x5106c0(0x243))/(-0x10*0x1+0xc65+-0xc4f))+parseInt(_0x5106c0(0x24f))/(0xe3f+-0x1b32+0xcfa)+-parseInt(_0x5106c0(0x1de))/(0x1a*-0x157+-0x6*-0xcf+0x1e04*0x1)+parseInt(_0x5106c0(0x214))/(-0x1*-0xdd+-0x2655+0x2581)*(-parseInt(_0x5106c0(0x263))/(0x4*0x1af+-0x35*-0x53+-0x17e1))+-parseInt(_0x5106c0(0x22a))/(-0x1*-0x6c5+0xa84*0x1+0x1*-0x113e)*(-parseInt(_0x5106c0(0x226))/(-0x36*0x9e+-0x940+0x2aa0));if(_0x3ff5d9===_0x56172a)break;else _0x2dc50d['push'](_0x2dc50d['shift']());}catch(_0x2c045f){_0x2dc50d['push'](_0x2dc50d['shift']());}}}(_0x2f41,0x15223+0x5c*-0x109+0x6d645*0x1));import{createHash}from'node:crypto';import{fileURLToPath}from'node:url';import{stripClaudePlanTag}from'../runner-command-engine.js';import{parseCodexComposerImageMarkers}from'../runner/codex/composer-image-markers.js';function _0x2f41(){const _0x45a121=['zgLZDgfUy2u','zw50CMLLCW','Aw5WDxrtDw1Tyxj5','mZm0ndy5nvHvAwTAzG','mJC2nZK2ogjev3vRAW','ve9ptf9fwevdvvrjt05FrKfjteve','q09ervHFveHsrufex0nxrf9jtLzbteLe','vu5bvKfjtefcteu','C29Tzq','BwfYA2rVD24','CMvHC29UAw5Nx3n1Bw1HCNK','Bw9KzwW','u1vdq0vfreve','Aw5WDxruCNvUy2f0zwq','AxrLBxm','y29KzxG','zMLSztO','zgvZy3jPChrPB24','B3v0Chv0vhj1BMnHDgvK','DxnLCL9TzxnZywDL','zMLUzeXHC3q','CxvLC3rPB25Z','C3vIqwDLBNq','DhLWzq','Dg9mB3DLCKnHC2u','Dgv4Da','Dg9tDhjPBMC','phbYB3bVC2vKx3bSyw4+','y2XHDwrLlwnVzgu','zxjYB3i','BwfW','y291BNq','z2v0','BxvSDgLtzwXLy3q','CMvWBgfJzq','y3jLyxrLzef0','B2jQzwn0','odK2otq4DM9HEg1t','C2vJDgLVBNm','ntKXmJHytwnNqMy','u0Lor0Xfx1nftevdva','C291CMnL','BgLTAxq','C3rHCNrZv2L0Aa','ChvZAa','oML0zw06','Dg9vChbLCKnHC2u','C29YDa','yMfZzty0DxjS','BMfTzq','ywjZ','yxr0ywnOBwvUDhm','CM9Szq','D2LUzg93rw5K','yxnZAxn0yw50x21LC3nHz2u','CgXHDgzVCM0','DxbKyxrL','D2LUzg93u3rHCNq','mtq3nM9ID2H5vW','zMLSDgvY','DMfSDwvZ','C25HChnOB3rfBMq','AxntAwrLy2HHAw4','CMvKDwnL','qundrvburuq','q09nueXfveve','C2XPy2u','u0HpuLrFvevyva','AwrSzq','BgvUz3rO','Dg9VBf9JywXS','B3b0Aw9UCW','BMf0AxzLlwzPBgu','BwvZC2fNzq','DhvYBNm','BwLU','ndG0mdiZnMTYDurTwa','Aw5WDxq','zMLSzufUy2HVCG','y3vYC29Y','mZnWrevZCgC','y3DK','Dg9VBfvZzuLK','rKfjteve','BgfIzwW','DgL0Bgu','yw5JAg9YqNL0zxm','surmrq','y3vYC29YuMvZzxq','zgf0yq','C3rYAw5NAwz5','AxrLBs0','BMf0AxzLswq','DhjPBq','C3rYAw5N','D2LUzg93uMvHzeXPBwL0','zgLNzxn0','AxnbCNjHEq','Cgf5Bg9Hza','zMfPBgvK','DgvZDa','A2LUza','BMf0AxzLoG','Dg9VBe5HBwu','qxnRvxnLCLf1zxn0Aw9U','nLzPy1neyW','zw50CNK','CNvUBMvY','B3v0Chv0u3vTBwfYEq','zMLUza','oM5HDgL2ztO','y2XHDwrLlxf1zxn0Aw9Ulq','C291CMnLrxzLBNruExbL','Aw5qCM9NCMvZCW','C3rHCNrLzef0','mtjTyNzeEM4','C3vTBwfYEq','mJq5nZa1nfLIquPyyW','Dw5Yzwy','q09ervHF','D2LUmZi','zMXHDe1HCa','ywn0AxzL','C3rHDhvZ','BgfZDefJDgL2Axr5qxq','C3vIywDLBNq','y2XPzw50twvZC2fNzuLK','Dw5RBM93BG','ChjLDMLLDW','C2vZC2LVBKLK','C2HHmJu2','rvHurvjoquXFqunusvzf','CgXHBG','Aw1Hz2vbDhrHy2HTzw50CW','x0Lex01ju1njtKC','Bwf4vg9Rzw5Z','C291CMnLs2LUza','nZC5mevvEeP1yW','y2HHCMfJDgvYCW','CMfJzq','BM90tg9HzgvK','y29TCgXLDgvKqxq','C2v0','mtjlzMTjwNm','zNjVBq','vvnfuG','Dhj1BMnHDgvK','DxnLCL9PBNb1Df9Yzxf1zxn0','tvvmveLFu0vmrunu','y29TBwfUzf9LEgvJDxrPB24','CxvLC3rPB24','Bwf4','DxnLzfrVA2vUCW','CNvUswq','DgHYzwfK'];_0x2f41=function(){return _0x45a121;};return _0x2f41();}import{compactRunnerText,isClaudeCommandTool,isPlainRecord,nativeClaudeCommand,nativePageEnd}from'./node-operation-parsers.js';export function extractId(_0x25e2aa,_0x5641d1){const _0x35b7e7=_0x1d2f;if(typeof _0x25e2aa===_0x35b7e7(0x1fe)&&_0x25e2aa!==null&&_0x5641d1 in _0x25e2aa&&typeof _0x25e2aa[_0x5641d1]===_0x35b7e7(0x1fe)&&_0x25e2aa[_0x5641d1]!==null&&typeof _0x25e2aa[_0x5641d1]['id']===_0x35b7e7(0x238))return _0x25e2aa[_0x5641d1]['id'];throw new Error(_0x35b7e7(0x251)+_0x5641d1[_0x35b7e7(0x208)]()+_0x35b7e7(0x260));}export async function settleWithin(_0x2f4e10,_0x4446b9){const _0x576f11=_0x1d2f;let _0x1fa776;try{return await Promise[_0x576f11(0x1ca)]([_0x2f4e10,new Promise(_0x23c1a6=>{const _0x2a0d17=_0x576f11;_0x1fa776=setTimeout(()=>_0x23c1a6(undefined),_0x4446b9),_0x1fa776[_0x2a0d17(0x250)]();})]);}finally{if(_0x1fa776!==undefined)clearTimeout(_0x1fa776);}}export function extractCodexThreads(_0xa228f5){const _0x2328a=_0x1d2f;if(typeof _0xa228f5!==_0x2328a(0x1fe)||_0xa228f5===null||!(_0x2328a(0x233)in _0xa228f5))return[];const _0x5a1622=_0xa228f5[_0x2328a(0x233)];if(!Array[_0x2328a(0x23b)](_0x5a1622))return[];return _0x5a1622[_0x2328a(0x253)](_0x34f228=>{const _0xa6c34a=_0x2328a;if(typeof _0x34f228!==_0xa6c34a(0x1fe)||_0x34f228===null)return[];const _0x16aef9=_0x34f228;if(typeof _0x16aef9['id']!==_0xa6c34a(0x238))return[];const _0x260c1f=typeof _0x16aef9[_0xa6c34a(0x262)]===_0xa6c34a(0x238)?_0x16aef9[_0xa6c34a(0x262)]:typeof _0x16aef9[_0xa6c34a(0x203)]===_0xa6c34a(0x238)?_0x16aef9[_0xa6c34a(0x203)]:typeof _0x16aef9[_0xa6c34a(0x203)]===_0xa6c34a(0x1fe)&&_0x16aef9[_0xa6c34a(0x203)]!==null&&typeof _0x16aef9[_0xa6c34a(0x203)][_0xa6c34a(0x23f)]===_0xa6c34a(0x238)?_0x16aef9[_0xa6c34a(0x203)][_0xa6c34a(0x23f)]:undefined,_0x2a15f7=isPlainRecord(_0x16aef9[_0xa6c34a(0x203)])?_0x16aef9[_0xa6c34a(0x203)]:undefined,_0x176b4b=_0x260c1f===_0xa6c34a(0x257)||_0x2a15f7?.[_0xa6c34a(0x23f)]===_0xa6c34a(0x257)||isPlainRecord(_0x2a15f7?.[_0xa6c34a(0x257)])||isPlainRecord(_0x2a15f7?.[_0xa6c34a(0x1f0)]),_0x521040=typeof _0x16aef9[_0xa6c34a(0x20b)]===_0xa6c34a(0x238)&&_0x16aef9[_0xa6c34a(0x20b)][_0xa6c34a(0x237)]()[_0xa6c34a(0x21f)]>-0x13*0xd5+0x45+0xf8a?_0x16aef9[_0xa6c34a(0x20b)][_0xa6c34a(0x237)]():typeof _0x16aef9[_0xa6c34a(0x25a)]===_0xa6c34a(0x238)&&_0x16aef9[_0xa6c34a(0x25a)][_0xa6c34a(0x237)]()[_0xa6c34a(0x21f)]>-0x2f*0x8f+-0x91b+0x235c?_0x16aef9[_0xa6c34a(0x25a)][_0xa6c34a(0x237)]():undefined;return[{'id':_0x16aef9['id'],'source':_0x260c1f,'derived':_0x176b4b,'cwd':_0x16aef9[_0xa6c34a(0x22b)],'title':_0x521040}];});}export function codexThreadActivity(_0x503cce){const _0x5e2091=_0x1d2f;if(!isPlainRecord(_0x503cce)||!isPlainRecord(_0x503cce[_0x5e2091(0x1d9)]))return _0x5e2091(0x1e1);const _0x1b4bca=_0x503cce[_0x5e2091(0x1d9)][_0x5e2091(0x255)];if(!isPlainRecord(_0x1b4bca)||typeof _0x1b4bca[_0x5e2091(0x1f1)]!==_0x5e2091(0x238))return _0x5e2091(0x1e1);if(_0x1b4bca[_0x5e2091(0x1f1)]===_0x5e2091(0x254))return _0x5e2091(0x25d);if(_0x1b4bca[_0x5e2091(0x1f1)]===_0x5e2091(0x21e)||_0x1b4bca[_0x5e2091(0x1f1)]===_0x5e2091(0x1cb))return _0x5e2091(0x231);return _0x5e2091(0x1e1);}export function codexActiveTurnId(_0x193f81){const _0x1de737=_0x1d2f;if(!isPlainRecord(_0x193f81)||!isPlainRecord(_0x193f81[_0x1de737(0x1d9)])||!Array[_0x1de737(0x23b)](_0x193f81[_0x1de737(0x1d9)][_0x1de737(0x224)]))return undefined;const _0x5283fa=_0x193f81[_0x1de737(0x1d9)][_0x1de737(0x224)][_0x1de737(0x247)](_0x206645=>isPlainRecord(_0x206645)&&typeof _0x206645['id']===_0x1de737(0x238)&&(_0x206645[_0x1de737(0x255)]===_0x1de737(0x254)||_0x206645[_0x1de737(0x255)]===_0x1de737(0x24b)));return isPlainRecord(_0x5283fa)&&typeof _0x5283fa['id']===_0x1de737(0x238)?_0x5283fa['id']:undefined;}export function codexThreadCwd(_0x48927f){const _0xe7142e=_0x1d2f;if(typeof _0x48927f!==_0xe7142e(0x238)||_0x48927f[_0xe7142e(0x21f)]===0x13d2+0x113f+-0x2511)throw new Error(_0xe7142e(0x1e0));if(!_0x48927f[_0xe7142e(0x205)](_0xe7142e(0x1ea)))return _0x48927f;try{return fileURLToPath(_0x48927f);}catch{throw new Error(_0xe7142e(0x1e0));}}export function isWithinWorkspace(_0x550b07,_0x1890a4){const _0x1fb499=_0x1d2f,_0x366cf1=_0x319863=>{const _0x4100d3=_0x1d2f,_0x3d79ed=_0x319863[_0x4100d3(0x1fc)](/[\\/]+/g,'/')[_0x4100d3(0x1fc)](/\/$/,'');return process[_0x4100d3(0x211)]===_0x4100d3(0x252)?_0x3d79ed[_0x4100d3(0x1f2)]():_0x3d79ed;},_0x309680=_0x366cf1(_0x550b07),_0x323c94=_0x366cf1(_0x1890a4);if(_0x309680===_0x323c94)return!![];return _0x309680[_0x1fb499(0x205)](_0x323c94+'/');}export function claudeDiscoveredSession(_0x332e3e,_0x1de7aa){const _0x56c117=_0x1d2f;if(typeof _0x332e3e!==_0x56c117(0x1fe)||_0x332e3e===null)return undefined;const _0x519697=_0x332e3e;if(_0x519697[_0x56c117(0x218)]===!![])return undefined;const _0xcde662=typeof _0x519697[_0x56c117(0x25b)]===_0x56c117(0x238)?_0x519697[_0x56c117(0x25b)]:typeof _0x519697['id']===_0x56c117(0x238)?_0x519697['id']:undefined;if(_0xcde662===undefined||_0xcde662[_0x56c117(0x21f)]===-0x1*0x1181+-0x2459+0x35da)return undefined;const _0x38589b=typeof _0x519697[_0x56c117(0x24e)]===_0x56c117(0x238)?_0x519697[_0x56c117(0x24e)]:typeof _0x519697[_0x56c117(0x22f)]===_0x56c117(0x238)?_0x519697[_0x56c117(0x22f)]:undefined,_0x2b3d14=typeof _0x519697[_0x56c117(0x22b)]===_0x56c117(0x238)&&_0x519697[_0x56c117(0x22b)][_0x56c117(0x21f)]>-0x4*-0x6e2+-0x2fa*-0x6+0x67c*-0x7?_0x519697[_0x56c117(0x22b)]:_0x1de7aa;return{'externalSessionId':_0xcde662,'cwd':_0x2b3d14,..._0x38589b===undefined?{}:{'title':_0x38589b[_0x56c117(0x21c)](-0xf33+-0x1ef*0xd+0x6*0x6b9,0x116b*0x1+-0x162*-0x1+-0x127d)}};}export function latestNativeActivity(_0x3f9c7e){const _0x55c871=_0x1d2f;return _0x3f9c7e[_0x55c871(0x256)];}export function sameContextUsage(_0x2fcad9,_0x48b4c4){const _0x1697ed=_0x1d2f;return _0x2fcad9[_0x1697ed(0x1e5)]===_0x48b4c4[_0x1697ed(0x1e5)]&&_0x2fcad9[_0x1697ed(0x1d7)]===_0x48b4c4[_0x1697ed(0x1d7)]&&_0x2fcad9[_0x1697ed(0x261)]===_0x48b4c4[_0x1697ed(0x261)];}export function isNativeHistory(_0x1c6fe5){const _0x22ed94=_0x1d2f;return typeof _0x1c6fe5===_0x22ed94(0x1fe)&&_0x1c6fe5!==null&&Array[_0x22ed94(0x23b)](_0x1c6fe5[_0x22ed94(0x1e8)]);}export function deduplicateDirectSessions(_0x5dc8a2){const _0x6fea9=_0x1d2f,_0x3bdc4d=new Map();for(const _0x2c224c of _0x5dc8a2){const _0x3a7a02=_0x3bdc4d[_0x6fea9(0x1fa)](_0x2c224c['id']);if(_0x3a7a02===undefined||_0x3a7a02[_0x6fea9(0x256)]<_0x2c224c[_0x6fea9(0x256)])_0x3bdc4d[_0x6fea9(0x1cd)](_0x2c224c['id'],_0x2c224c);}return[..._0x3bdc4d[_0x6fea9(0x216)]()][_0x6fea9(0x209)]((_0x1538ee,_0x16ab00)=>_0x16ab00[_0x6fea9(0x256)]-_0x1538ee[_0x6fea9(0x256)]);}export function nativeConversationPage(_0x4d43e9,_0x467017,_0x186e3,_0xb3422c=[],_0x13d220=()=>[]){const _0x1b38d0=_0x1d2f,_0x42e765=Math[_0x1b38d0(0x225)](Math[_0x1b38d0(0x1d6)](_0x186e3[_0x1b38d0(0x204)]??-0x1a1d+0x16aa+0x53*0xb,-0x682+0x157*0x1+0x4*0x14b),0x7f3*0x2+-0x42c+-0x9c6),_0x27b0ca=_0x467017[_0x1b38d0(0x232)]===!![]?undefined:_0x186e3[_0x1b38d0(0x229)],_0x1e1782=nativeTranscriptTurns(_0x467017[_0x1b38d0(0x1e8)]),_0x1863b0=nativeTranscriptTurnIds(_0x4d43e9['id'],_0x1e1782),_0x50a6eb=nativePageEnd(_0x27b0ca,_0x4d43e9['id'],_0x1e1782[_0x1b38d0(0x21f)]),_0x3cb6b7=Math[_0x1b38d0(0x1d6)](0xa9+-0x297+0x26*0xd,_0x50a6eb-_0x42e765),_0x392eea=_0x1e1782[_0x1b38d0(0x21c)](_0x3cb6b7,_0x50a6eb)[_0x1b38d0(0x1f8)]((_0x3e5132,_0x171bcc)=>{const _0x1e67a9=_0x1b38d0,_0x279b32=_0x3e5132[_0x1e67a9(0x247)](({entry:_0x253111})=>_0x253111[_0x1e67a9(0x23f)]===_0x1e67a9(0x223)&&_0x253111[_0x1e67a9(0x20e)]===_0x1e67a9(0x1d0))?.[_0x1e67a9(0x244)],_0x1e3023=_0x279b32?.[_0x1e67a9(0x23f)]===_0x1e67a9(0x223)?nativeUserClientMessageId(_0x4d43e9[_0x1e67a9(0x245)],_0x279b32,_0x279b32[_0x1e67a9(0x1fd)],_0xb3422c):null,_0x2bf1f5=typeof _0x1e3023===_0x1e67a9(0x238)?_0xb3422c[_0x1e67a9(0x247)](_0x3a5957=>runtimeTurnClientMessageId(_0x3a5957)===_0x1e3023):undefined,_0x4bd3c0=_0x2bf1f5?.['id']??_0x1863b0[_0x3cb6b7+_0x171bcc],_0x569318=nativeTranscriptItemIdentities(_0x3e5132),_0x28ed70=_0x3e5132[_0x1e67a9(0x1f8)](({entry:_0x6a3dff,index:_0x542459},_0x467d8d)=>({...nativeTranscriptConversationItem(_0x4d43e9,_0x6a3dff,_0x542459,_0x569318[_0x467d8d],_0x4bd3c0,_0xb3422c,_0x13d220),'runId':_0x2bf1f5?.[_0x1e67a9(0x1d8)]??null})),_0x2359cc=(_0x2bf1f5?.[_0x1e67a9(0x1e8)]??[])[_0x1e67a9(0x215)](_0x1d34a2=>_0x1d34a2[_0x1e67a9(0x23f)]===_0x1e67a9(0x1f7))[_0x1e67a9(0x1f8)](_0x37424c=>({..._0x37424c,'turnId':_0x4bd3c0,'runId':_0x2bf1f5?.[_0x1e67a9(0x1d8)]??null})),_0x33eedc=runtimeAssistantProjectionMoreComplete(_0x2bf1f5,_0x28ed70)?_0x2bf1f5[_0x1e67a9(0x1e8)][_0x1e67a9(0x1f8)](_0x422f79=>({..._0x422f79,'turnId':_0x4bd3c0,'runId':_0x2bf1f5[_0x1e67a9(0x1d8)]})):[..._0x28ed70,..._0x2359cc[_0x1e67a9(0x215)](_0xdd5136=>!_0x28ed70[_0x1e67a9(0x1e2)](_0x1872d9=>_0x1872d9['id']===_0xdd5136['id']))],_0x982264=_0x33eedc[0xda*0x7+0xfd3*0x1+-0x15c9]?.[_0x1e67a9(0x24c)]??null,_0x41963b=_0x33eedc['at'](-(0x15f*-0x5+0xd22+-0x323*0x2))?.[_0x1e67a9(0x1cc)]??_0x982264,_0x3a5a84=lastNativeItemId(_0x3e5132);return{'id':_0x4bd3c0,'sessionId':_0x4d43e9['id'],'runId':_0x2bf1f5?.[_0x1e67a9(0x1d8)]??null,'userItemId':_0x33eedc[_0x1e67a9(0x247)](_0x86edf5=>_0x86edf5[_0x1e67a9(0x23f)]===_0x1e67a9(0x1ed))?.['id']??null,'status':_0x2359cc[_0x1e67a9(0x21f)]>0x10f9+0xa4+0xa7*-0x1b?_0x1e67a9(0x22d):_0x1e67a9(0x1e6),'model':null,'effort':null,'access':null,..._0x3a5a84===undefined||_0x4d43e9[_0x1e67a9(0x245)]!==_0x1e67a9(0x1f6)?{}:{'rewind':{'before':lastNativeItemId(_0x1e1782[_0x3cb6b7+_0x171bcc-(0x20b9+-0x1bec+-0x4cc)]??[])??null,'after':_0x3a5a84}},'items':_0x33eedc,'startedAt':_0x982264,'completedAt':_0x41963b};}),_0x36966a=_0x392eea,_0x27fcc3=_0x3cb6b7,_0x573c80={'sessionId':_0x4d43e9['id'],..._0x467017[_0x1b38d0(0x217)]===undefined?{}:{'snapshotEnd':_0x467017[_0x1b38d0(0x217)]},..._0x467017[_0x1b38d0(0x20f)]===undefined?{}:{'nextEnd':_0x467017[_0x1b38d0(0x20f)]},..._0x467017[_0x1b38d0(0x228)]===undefined?{}:{'fileAnchor':_0x467017[_0x1b38d0(0x228)]},..._0x467017[_0x1b38d0(0x230)]===undefined?{}:{'anchorBytes':_0x467017[_0x1b38d0(0x230)]},'readLimit':_0x467017[_0x1b38d0(0x239)]??_0x42e765},_0x246773=_0x467017[_0x1b38d0(0x1d1)]===!![]&&_0x467017[_0x1b38d0(0x213)]!==undefined&&_0x467017[_0x1b38d0(0x217)]!==undefined&&_0x467017[_0x1b38d0(0x228)]!==undefined&&_0x467017[_0x1b38d0(0x230)]!==undefined?Buffer[_0x1b38d0(0x1cf)](JSON[_0x1b38d0(0x234)]({'sessionId':_0x4d43e9['id'],'snapshotEnd':_0x467017[_0x1b38d0(0x217)],'nextEnd':_0x467017[_0x1b38d0(0x213)],'fileAnchor':_0x467017[_0x1b38d0(0x228)],'anchorBytes':_0x467017[_0x1b38d0(0x230)],'readLimit':_0x467017[_0x1b38d0(0x239)]??_0x42e765}))[_0x1b38d0(0x1f4)](_0x1b38d0(0x20a)):null;return{'turns':_0x36966a,'nextCursor':_0x27fcc3>0x1dc4+0xc09*-0x3+0x657?Buffer[_0x1b38d0(0x1cf)](JSON[_0x1b38d0(0x234)]({..._0x573c80,'end':_0x27fcc3}))[_0x1b38d0(0x1f4)](_0x1b38d0(0x20a)):_0x246773};}export function runtimeAssistantProjectionMoreComplete(_0x483382,_0x5e3b4a){const _0x4af72b=_0x1d2f;if(_0x483382===undefined)return![];const _0x3e6fc0=_0x998587=>_0x998587[_0x4af72b(0x219)]((_0x3525de,_0x574c25)=>{const _0x2fe3be=_0x4af72b;if(_0x574c25[_0x2fe3be(0x23f)]!==_0x2fe3be(0x210)||!isPlainRecord(_0x574c25[_0x2fe3be(0x23c)]))return _0x3525de;return{'count':_0x3525de[_0x2fe3be(0x1f9)]+(0x1706*-0x1+-0x80e+0x1f15),'characters':_0x3525de[_0x2fe3be(0x1c9)]+(typeof _0x574c25[_0x2fe3be(0x23c)][_0x2fe3be(0x1f3)]===_0x2fe3be(0x238)?_0x574c25[_0x2fe3be(0x23c)][_0x2fe3be(0x1f3)][_0x2fe3be(0x21f)]:0x1014+-0xff*-0x1d+0x3*-0xefd)};},{'count':0x0,'characters':0x0}),_0x20eb38=_0x3e6fc0(_0x483382[_0x4af72b(0x1e8)]),_0x1177e7=_0x3e6fc0(_0x5e3b4a);return _0x20eb38[_0x4af72b(0x1f9)]>_0x1177e7[_0x4af72b(0x1f9)]||_0x20eb38[_0x4af72b(0x1c9)]>_0x1177e7[_0x4af72b(0x1c9)];}function runtimeTurnClientMessageId(_0x36f1d3){const _0x42e0a7=_0x1d2f,_0x56df2b=_0x36f1d3[_0x42e0a7(0x1e8)][_0x42e0a7(0x247)](_0x45e882=>_0x45e882[_0x42e0a7(0x23f)]===_0x42e0a7(0x1ed));return isPlainRecord(_0x56df2b?.[_0x42e0a7(0x23c)])&&typeof _0x56df2b[_0x42e0a7(0x23c)][_0x42e0a7(0x258)]===_0x42e0a7(0x238)?_0x56df2b[_0x42e0a7(0x23c)][_0x42e0a7(0x258)]:undefined;}function lastNativeItemId(_0x11d110){const _0x594254=_0x1d2f;return _0x11d110[_0x594254(0x1ee)](({entry:_0x1c690f})=>_0x1c690f[_0x594254(0x236)]!==undefined)?.[_0x594254(0x244)][_0x594254(0x236)];}function nativeTranscriptTurnIds(_0x1ff67f,_0x36df50){const _0x7580ad=_0x1d2f,_0x3a7eb9=new Map();return _0x36df50[_0x7580ad(0x1f8)](_0x2e94d1=>{const _0x56e1f9=_0x7580ad,_0x4b7871=_0x2e94d1[_0x56e1f9(0x247)](({entry:_0xaed596})=>_0xaed596[_0x56e1f9(0x23f)]===_0x56e1f9(0x223)&&_0xaed596[_0x56e1f9(0x20e)]===_0x56e1f9(0x1d0))?.[_0x56e1f9(0x244)],_0x6c10d6=_0x4b7871??_0x2e94d1[-0x1*0x7eb+0x53*0x11+-0x1*-0x268]?.[_0x56e1f9(0x244)],_0x6b8ac4=_0x6c10d6?.[_0x56e1f9(0x236)]??nativeTranscriptItemFingerprint(_0x6c10d6),_0x433ce9=_0x3a7eb9[_0x56e1f9(0x1fa)](_0x6b8ac4)??0x20c0+0x140d+-0x7*0x78b;return _0x3a7eb9[_0x56e1f9(0x1cd)](_0x6b8ac4,_0x433ce9+(0x23ad+0x17*-0x173+-0x257)),_0x1ff67f+_0x56e1f9(0x248)+_0x6b8ac4+(_0x433ce9===-0x270e+-0x12ba*0x2+0x4c82?'':':'+_0x433ce9);});}function nativeTranscriptItemIdentities(_0x2ff0bb){const _0x20bd80=_0x1d2f,_0x2790e1=new Map();for(const {entry:_0x55a0c3}of _0x2ff0bb)if(_0x55a0c3[_0x20bd80(0x236)]!==undefined)_0x2790e1[_0x20bd80(0x1cd)](_0x55a0c3[_0x20bd80(0x236)],(_0x2790e1[_0x20bd80(0x1fa)](_0x55a0c3[_0x20bd80(0x236)])??-0x1135*-0x1+-0x2*-0x24d+-0x15cf)+(-0x676*0x1+-0x1432+0x8e3*0x3));const _0x478d81=new Map();return _0x2ff0bb[_0x20bd80(0x1f8)](({entry:_0x5dbb43})=>{const _0x819c9=_0x20bd80,_0x2d6dff=_0x5dbb43[_0x819c9(0x236)]!==undefined&&_0x2790e1[_0x819c9(0x1fa)](_0x5dbb43[_0x819c9(0x236)])===0x443*-0x9+0x10b*-0x23+0x4add?_0x5dbb43[_0x819c9(0x236)]:''+(_0x5dbb43[_0x819c9(0x236)]===undefined?'':_0x5dbb43[_0x819c9(0x236)]+':')+nativeTranscriptItemFingerprint(_0x5dbb43),_0x236f8c=_0x478d81[_0x819c9(0x1fa)](_0x2d6dff)??0x595*-0x6+0xe*0xb6+0x178a*0x1;return _0x478d81[_0x819c9(0x1cd)](_0x2d6dff,_0x236f8c+(0x1*0x8f+0x1*-0x1aad+0x1*0x1a1f)),_0x236f8c===-0x931*-0x4+-0x5d*0x29+-0x15df?_0x2d6dff:_0x2d6dff+':'+_0x236f8c;});}function nativeTranscriptItemFingerprint(_0x4468db){const _0x150acc=_0x1d2f;return createHash(_0x150acc(0x25c))[_0x150acc(0x212)](JSON[_0x150acc(0x234)](_0x4468db??null))[_0x150acc(0x23a)](_0x150acc(0x20a))[_0x150acc(0x21c)](0x1fcc+0x19fc+-0x158*0x2b,-0x4b4+-0xc35+0x1101);}function nativeTranscriptTurns(_0x2953a8){const _0x344d00=_0x1d2f,_0x4f163a=[];let _0x129710=[];for(const [_0x3125aa,_0x378af2]of _0x2953a8[_0x344d00(0x1db)]()){_0x378af2[_0x344d00(0x23f)]===_0x344d00(0x223)&&_0x378af2[_0x344d00(0x20e)]===_0x344d00(0x1d0)&&_0x129710[_0x344d00(0x21f)]>-0x311*-0xc+0x1113+-0x35df&&(_0x4f163a[_0x344d00(0x206)](_0x129710),_0x129710=[]),_0x129710[_0x344d00(0x206)]({'entry':_0x378af2,'index':_0x3125aa});}if(_0x129710[_0x344d00(0x21f)]>-0x901+-0x154f+-0xa*-0x308)_0x4f163a[_0x344d00(0x206)](_0x129710);return _0x4f163a;}function nativeTranscriptConversationItem(_0x5035f6,_0x3793e6,_0xa1a424,_0x23b27f,_0x1f6846,_0x263f61,_0xbcabea){const _0x172a48=_0x1d2f,_0x10d3cc=_0x3793e6[_0x172a48(0x1fd)],_0x488b4e=_0x3793e6[_0x172a48(0x23f)]===_0x172a48(0x220),_0x5d5a65=_0x3793e6[_0x172a48(0x23f)]===_0x172a48(0x259),_0x408681=_0x3793e6[_0x172a48(0x23f)]===_0x172a48(0x1e4),_0x19ec46=_0x488b4e&&isClaudeCommandTool(_0x3793e6[_0x172a48(0x241)]),_0x1e7026=_0x5035f6[_0x172a48(0x245)]===_0x172a48(0x1f6)&&_0x488b4e&&_0x3793e6[_0x172a48(0x241)]===_0x172a48(0x242)&&isPlainRecord(_0x3793e6[_0x172a48(0x227)])?claudeUserInputQuestions(_0x3793e6[_0x172a48(0x227)]):[],_0x297960=_0x1e7026[_0x172a48(0x21f)]>0xfb*0x7+0x2f5*0xc+-0x2a59,_0x53b93d=_0x3793e6[_0x172a48(0x23f)]===_0x172a48(0x223)&&_0x3793e6[_0x172a48(0x20e)]===_0x172a48(0x1d0)?nativeUserClientMessageId(_0x5035f6[_0x172a48(0x245)],_0x3793e6,_0x10d3cc,_0x263f61):null,_0x1c3a69=_0x3793e6[_0x172a48(0x23f)]===_0x172a48(0x223)?_0x3793e6[_0x172a48(0x20e)]===_0x172a48(0x1d0)?nativeUserMessageText(_0x5035f6[_0x172a48(0x245)],_0x3793e6[_0x172a48(0x1f3)]):_0x3793e6[_0x172a48(0x1f3)]:'',_0x2c4995=_0x53b93d===null?undefined:runtimeUserMessagePayload(_0x53b93d,_0x263f61),_0x2c87ed=Array[_0x172a48(0x23b)](_0x2c4995?.[_0x172a48(0x20d)])?_0x2c4995[_0x172a48(0x20d)]:_0x3793e6[_0x172a48(0x23f)]===_0x172a48(0x223)&&_0x3793e6[_0x172a48(0x20e)]===_0x172a48(0x1d0)&&_0x3793e6[_0x172a48(0x25f)]!==undefined?_0xbcabea(_0x3793e6[_0x172a48(0x25f)]):[],_0x4585a9=_0x3793e6[_0x172a48(0x23f)]===_0x172a48(0x223)&&_0x3793e6[_0x172a48(0x20e)]!==_0x172a48(0x1d0)?claudePlanText(_0x1c3a69):undefined,_0x509245={'id':_0x1f6846+_0x172a48(0x207)+_0x23b27f,'sessionId':_0x5035f6['id'],'turnId':_0x1f6846,'runId':null,'parentItemId':null,'sourceSequence':_0xa1a424,'revision':0x0,'kind':_0x297960?_0x172a48(0x1d2):_0x408681?_0x172a48(0x1e4):_0x488b4e?_0x19ec46?_0x172a48(0x1d4):_0x172a48(0x220):_0x5d5a65?_0x172a48(0x259):_0x3793e6[_0x172a48(0x23f)]===_0x172a48(0x223)&&_0x3793e6[_0x172a48(0x20e)]===_0x172a48(0x1d0)?_0x172a48(0x1ed):_0x4585a9!==undefined?_0x172a48(0x25e):_0x172a48(0x210),'status':_0x172a48(0x21b),'payload':_0x297960?{'requestId':_0x172a48(0x240)+(_0x3793e6[_0x172a48(0x23f)]===_0x172a48(0x220)?_0x3793e6[_0x172a48(0x22c)]:_0x172a48(0x235)+_0x23b27f),'questions':_0x1e7026}:_0x408681?{'sections':_0x3793e6[_0x172a48(0x200)]}:_0x488b4e?_0x19ec46?{'command':nativeClaudeCommand(_0x3793e6),'cwd':null,'outputPreview':_0x3793e6[_0x172a48(0x246)]??'','outputRef':null,'exitCode':null,'durationMs':null,'truncated':_0x3793e6[_0x172a48(0x1e7)]||_0x3793e6[_0x172a48(0x1ec)]}:{'namespace':_0x5035f6[_0x172a48(0x245)],'toolName':_0x3793e6[_0x172a48(0x241)],'title':_0x3793e6[_0x172a48(0x241)],'inputSummary':_0x3793e6[_0x172a48(0x1dc)],'outputSummary':_0x3793e6[_0x172a48(0x246)],'progressLabel':null,'errorCode':_0x3793e6[_0x172a48(0x23d)]?_0x172a48(0x1df):null,'truncated':_0x3793e6[_0x172a48(0x1e7)]||_0x3793e6[_0x172a48(0x1ec)],..._0x3793e6[_0x172a48(0x25f)]===undefined?{}:{'attachments':_0xbcabea(_0x3793e6[_0x172a48(0x25f)])}}:_0x5d5a65?{'sourceEventType':_0x3793e6[_0x172a48(0x24a)],'label':_0x3793e6[_0x172a48(0x22e)]}:_0x3793e6[_0x172a48(0x23f)]===_0x172a48(0x223)&&_0x3793e6[_0x172a48(0x20e)]===_0x172a48(0x1d0)?{'clientMessageId':_0x53b93d,'text':_0x1c3a69,'contexts':[],'delivery':_0x172a48(0x21a),..._0x2c87ed[_0x172a48(0x21f)]===0x1d16+0xf0+-0x7*0x44a?{}:{'attachments':_0x2c87ed}}:_0x4585a9!==undefined?{'explanation':compactRunnerText(_0x4585a9,-0x84ce+0x9bc5*-0x1+0x16eb3),'steps':[]}:{'text':_0x1c3a69,'format':_0x172a48(0x1e3),'source':_0x172a48(0x222)},'startedAt':_0x10d3cc,'completedAt':_0x10d3cc};return _0x509245;}export function nativeUserClientMessageId(_0x132e31,_0x4fd9c5,_0x6cb16b,_0x5f4a66){const _0x32a145=_0x1d2f,_0x466abb=[];for(const _0x25a784 of _0x5f4a66){const _0x29fa1e=_0x25a784[_0x32a145(0x1e8)][_0x32a145(0x247)](_0x2f5c4f=>_0x2f5c4f[_0x32a145(0x23f)]===_0x32a145(0x1ed));if(_0x29fa1e===undefined||!isPlainRecord(_0x29fa1e[_0x32a145(0x23c)]))continue;const _0x4acd9c=_0x29fa1e[_0x32a145(0x23c)],_0x41a9b8=typeof _0x4acd9c[_0x32a145(0x258)]===_0x32a145(0x238)?_0x4acd9c[_0x32a145(0x258)]:null;if(_0x41a9b8===null||_0x4acd9c[_0x32a145(0x1f3)]!==nativeUserMessageText(_0x132e31,_0x4fd9c5[_0x32a145(0x1f3)]))continue;const _0x1e6e90=_0x29fa1e[_0x32a145(0x24c)]??_0x25a784[_0x32a145(0x24c)];_0x466abb[_0x32a145(0x206)]({'clientMessageId':_0x41a9b8,'createdAt':_0x1e6e90??null});}if(_0x6cb16b===null)return _0x466abb[_0x32a145(0x21f)]===0x9*0x347+-0x1a2d+-0x11b*0x3?_0x466abb[0x1*-0x17a5+0x55*-0x2f+0x2740][_0x32a145(0x258)]:null;const _0x4d4da6=_0x466abb[_0x32a145(0x215)](_0x40675b=>_0x40675b[_0x32a145(0x1fd)]!==null)[_0x32a145(0x1f8)](_0x20b26a=>({..._0x20b26a,'distance':Math[_0x32a145(0x20c)](_0x6cb16b-_0x20b26a[_0x32a145(0x1fd)])}))[_0x32a145(0x215)](_0x113c35=>_0x113c35[_0x32a145(0x1da)]<=-0x1a*-0xe5e+0x2d16+-0xb842)[_0x32a145(0x209)]((_0x5b7bcc,_0x19d4aa)=>_0x5b7bcc[_0x32a145(0x1da)]-_0x19d4aa[_0x32a145(0x1da)]);return _0x4d4da6[0x245d+-0x2ae+0x1*-0x21af]?.[_0x32a145(0x258)]??null;}function runtimeUserMessagePayload(_0x39fd8c,_0x76c15d){const _0x5ccefd=_0x1d2f;for(const _0x4fde9b of _0x76c15d){const _0x4a5611=_0x4fde9b[_0x5ccefd(0x1e8)][_0x5ccefd(0x247)](_0x3e3e36=>_0x3e3e36[_0x5ccefd(0x23f)]===_0x5ccefd(0x1ed));if(!isPlainRecord(_0x4a5611?.[_0x5ccefd(0x23c)])||_0x4a5611[_0x5ccefd(0x23c)][_0x5ccefd(0x258)]!==_0x39fd8c)continue;return _0x4a5611[_0x5ccefd(0x23c)];}return undefined;}function _0x1d2f(_0x56d611,_0x14aeda){_0x56d611=_0x56d611-(-0xacc+0x186e+0xbd9*-0x1);const _0x5070ad=_0x2f41();let _0xa91868=_0x5070ad[_0x56d611];if(_0x1d2f['pbDyfF']===undefined){var _0x446796=function(_0x103f5a){const _0x52bb00='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x4827b0='',_0x57a0a2='';for(let _0xd9c8eb=0x6f*-0x3f+0x2414+0x1*-0x8c3,_0x2278ac,_0xa4e0fa,_0x44fe97=-0xe7b+-0x51+0xecc;_0xa4e0fa=_0x103f5a['charAt'](_0x44fe97++);~_0xa4e0fa&&(_0x2278ac=_0xd9c8eb%(0x1622+-0x1134+0x22*-0x25)?_0x2278ac*(-0x23b9+-0x236c+0x4765)+_0xa4e0fa:_0xa4e0fa,_0xd9c8eb++%(0x1417+-0x3f4+0x1*-0x101f))?_0x4827b0+=String['fromCharCode'](-0x2a2*-0x2+0x6ec*-0x2+0x993&_0x2278ac>>(-(-0x1ef*0xd+0x3*-0x101+0x1*0x1c28)*_0xd9c8eb&-0x5*-0x1+0x24ff+-0x24fe)):0x16aa+0x125*-0x8+-0xd82){_0xa4e0fa=_0x52bb00['indexOf'](_0xa4e0fa);}for(let _0x54042b=0x157*0x1+0xd*-0xb1+-0x1*-0x7a6,_0x39e694=_0x4827b0['length'];_0x54042b<_0x39e694;_0x54042b++){_0x57a0a2+='%'+('00'+_0x4827b0['charCodeAt'](_0x54042b)['toString'](0xa61+0x2239+-0x1*0x2c8a))['slice'](-(0x75a*-0x3+0x5*-0x25+0x133*0x13));}return decodeURIComponent(_0x57a0a2);};_0x1d2f['htnbMs']=_0x446796,_0x1d2f['PeYNTe']={},_0x1d2f['pbDyfF']=!![];}const _0x30781f=_0x5070ad[0x168e+0x2138+0x1*-0x37c6];_0x1d2f['RCqIoB']!==_0x30781f&&(_0x1d2f['PeYNTe']={},_0x1d2f['RCqIoB']=_0x30781f);const _0x1f1dce=_0x1d2f['PeYNTe'][_0x56d611];return _0x1f1dce===undefined?(_0xa91868=_0x1d2f['htnbMs'](_0xa91868),_0x1d2f['PeYNTe'][_0x56d611]=_0xa91868):_0xa91868=_0x1f1dce,_0xa91868;}function nativeUserMessageText(_0x5d6ced,_0x2f1e48){const _0x45abb2=_0x1d2f,_0x107d36=_0x5d6ced===_0x45abb2(0x1f6)?stripClaudePlanTag(_0x2f1e48):_0x2f1e48;if(_0x5d6ced!==_0x45abb2(0x1e9))return _0x107d36;return parseCodexComposerImageMarkers(_0x107d36)[_0x45abb2(0x1f3)];}export function claudePlanText(_0x24f2f2){const _0x3edf3e=_0x1d2f,_0x3cbc33=_0x24f2f2[_0x3edf3e(0x237)]();if(!_0x3cbc33[_0x3edf3e(0x205)](_0x3edf3e(0x1f5))||!/<\/proposed_plan>\s*$/[_0x3edf3e(0x23e)](_0x3cbc33))return undefined;const _0x2dd15d=_0x3cbc33[_0x3edf3e(0x21c)](_0x3edf3e(0x1f5)[_0x3edf3e(0x21f)])[_0x3edf3e(0x1fc)](/<\/proposed_plan>\s*$/,'')[_0x3edf3e(0x237)]();return _0x2dd15d[_0x3edf3e(0x21f)]>-0xc7*-0x2f+0x1*0x15d9+-0x3a62?_0x2dd15d:undefined;}export function claudeUserInputQuestions(_0x16b4cd){const _0x16ef5c=_0x1d2f;if(!Array[_0x16ef5c(0x23b)](_0x16b4cd[_0x16ef5c(0x1ef)])||_0x16b4cd[_0x16ef5c(0x1ef)][_0x16ef5c(0x21f)]===-0x6*0x294+0xb7c+0x3fc||_0x16b4cd[_0x16ef5c(0x1ef)][_0x16ef5c(0x21f)]>0x1ecd+-0x4b7+0x1*-0x1a12)return[];const _0x4dceae=_0x16b4cd[_0x16ef5c(0x1ef)][_0x16ef5c(0x1f8)]((_0x3ad24b,_0x1d9d07)=>{const _0xdc2c13=_0x16ef5c;if(!isPlainRecord(_0x3ad24b)||typeof _0x3ad24b[_0xdc2c13(0x1d5)]!==_0xdc2c13(0x238))return undefined;const _0x324863=Array[_0xdc2c13(0x23b)](_0x3ad24b[_0xdc2c13(0x221)])?_0x3ad24b[_0xdc2c13(0x221)][_0xdc2c13(0x253)](_0x5cba95=>{const _0x11fe76=_0xdc2c13;if(!isPlainRecord(_0x5cba95)||typeof _0x5cba95[_0x11fe76(0x22e)]!==_0x11fe76(0x238))return[];const _0x2f26ee=compactRunnerText(_0x5cba95[_0x11fe76(0x22e)],0x304*0x8+-0x87c*-0x2+-0xa7*0x3c);return _0x2f26ee[_0x11fe76(0x21f)]===-0x23d+-0x1243+0x4*0x520?[]:[{'value':_0x2f26ee,'label':_0x2f26ee,'description':typeof _0x5cba95[_0x11fe76(0x1eb)]===_0x11fe76(0x238)?compactRunnerText(_0x5cba95[_0x11fe76(0x1eb)],0x2c5*-0xa+-0xb09+0x2aa3):null}];}):[],_0xa07e1d=_0x3ad24b[_0xdc2c13(0x1fb)]===!![];return{'id':_0xdc2c13(0x249)+_0x1d9d07,'prompt':compactRunnerText(_0x3ad24b[_0xdc2c13(0x1d5)],0x1362+0x59*-0x4c+0xb3*0x26),'input':_0x324863[_0xdc2c13(0x21f)]===0x971+0x1*-0x23c9+0x1a58?_0xdc2c13(0x21d):_0xa07e1d?_0xdc2c13(0x1d3):_0xdc2c13(0x202),'options':_0x324863,'allowOther':!![],'multiSelect':_0xa07e1d};});return _0x4dceae[_0x16ef5c(0x1e2)](_0x5f5d01=>_0x5f5d01===undefined)?[]:_0x4dceae;}
@@ -1,5 +1,2 @@
1
- const STABLE_ERROR_CODE = /^[A-Z][A-Z0-9_]{0,127}$/u;
2
- /** Returns only a stable public error code, never a raw runtime exception message. */
3
- export function safeErrorCode(error, fallback) {
4
- return error instanceof Error && STABLE_ERROR_CODE.test(error.message) ? error.message : fallback;
5
- }
1
+ /* mar-release-protected */
2
+ (function(_0x3aee5b,_0x2fc479){const _0x3aed13=_0x1e00,_0x375ff6=_0x3aee5b();while(!![]){try{const _0x3ee4bb=-parseInt(_0x3aed13(0xb1))/(0x138f+-0x2*0x69+0x16*-0xda)*(parseInt(_0x3aed13(0xba))/(-0x4f*0x4f+0x4*0x397+-0x11*-0x97))+parseInt(_0x3aed13(0xb6))/(-0x189a+0x1*0x16fb+0x1a2)*(parseInt(_0x3aed13(0xaf))/(0x1a0*0x3+0x1*0x937+-0xe13))+parseInt(_0x3aed13(0xb5))/(-0x196d+-0x88*0x2b+0x1825*0x2)+-parseInt(_0x3aed13(0xb9))/(0x188d+-0xe2b+-0xa5c)+parseInt(_0x3aed13(0xb0))/(-0x6*-0x4be+-0x76e+-0x1*0x14ff)+-parseInt(_0x3aed13(0xb2))/(0x9f0+0x34*0x1a+-0xf30)*(parseInt(_0x3aed13(0xb8))/(0x10*-0x232+0x3a+-0x22ef*-0x1))+-parseInt(_0x3aed13(0xb4))/(0x2703+0x1*-0x20fe+-0x5fb);if(_0x3ee4bb===_0x2fc479)break;else _0x375ff6['push'](_0x375ff6['shift']());}catch(_0x1d0786){_0x375ff6['push'](_0x375ff6['shift']());}}}(_0x1eb2,-0x1ce6a+0x2a5ab+0x79d11*0x1));function _0x1e00(_0x5d7a23,_0x4115e9){_0x5d7a23=_0x5d7a23-(0xaf0+-0x1f7c+0x153b);const _0x11ee6b=_0x1eb2();let _0x41372e=_0x11ee6b[_0x5d7a23];if(_0x1e00['kweTYm']===undefined){var _0x37e5ec=function(_0x42f082){const _0x547c5e='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x2172c9='',_0x11a8df='';for(let _0x4bbc8b=0x3fb*-0x5+-0x1ba7*-0x1+-0x7c0,_0xcd87b,_0x5e0d2c,_0x2fe274=0x1e*0x3+-0x1503+-0x14a9*-0x1;_0x5e0d2c=_0x42f082['charAt'](_0x2fe274++);~_0x5e0d2c&&(_0xcd87b=_0x4bbc8b%(0xe3*0x2b+-0xee6+-0x1737)?_0xcd87b*(-0x254d+0x2c0+-0x22cd*-0x1)+_0x5e0d2c:_0x5e0d2c,_0x4bbc8b++%(-0x41a*0x5+-0x144f+-0x28d5*-0x1))?_0x2172c9+=String['fromCharCode'](0x135*-0x9+-0x192*-0x4+0x594&_0xcd87b>>(-(-0x291*-0x6+0x10*-0x148+-0x51c*-0x1)*_0x4bbc8b&0x5ca*0x1+0xc30+0x5fc*-0x3)):-0xd4+-0xf39*0x2+0x1f46*0x1){_0x5e0d2c=_0x547c5e['indexOf'](_0x5e0d2c);}for(let _0x2a13bb=0x63*0x3+0x2564*-0x1+0x73f*0x5,_0x35a377=_0x2172c9['length'];_0x2a13bb<_0x35a377;_0x2a13bb++){_0x11a8df+='%'+('00'+_0x2172c9['charCodeAt'](_0x2a13bb)['toString'](-0xd6a+-0x565+-0x12df*-0x1))['slice'](-(0x1163+0xfd*0xd+-0x92*0x35));}return decodeURIComponent(_0x11a8df);};_0x1e00['kFwjlZ']=_0x37e5ec,_0x1e00['atcFha']={},_0x1e00['kweTYm']=!![];}const _0x10efe8=_0x11ee6b[-0x7f1+0x138f+-0x1*0xb9e];_0x1e00['AEkYxn']!==_0x10efe8&&(_0x1e00['atcFha']={},_0x1e00['AEkYxn']=_0x10efe8);const _0x349f86=_0x1e00['atcFha'][_0x5d7a23];return _0x349f86===undefined?(_0x41372e=_0x1e00['kFwjlZ'](_0x41372e),_0x1e00['atcFha'][_0x5d7a23]=_0x41372e):_0x41372e=_0x349f86,_0x41372e;}const STABLE_ERROR_CODE=/^[A-Z][A-Z0-9_]{0,127}$/u;function _0x1eb2(){const _0x201740=['nJqZodi3mu9yqwjlvq','mtuXr2fTBuzK','odG0ntGXnLHAv1HYDW','BwvZC2fNzq','mJK5ndu5mgPduLLPDq','ndqWmJi3merjvLPUva','nZa1nLrrzNLlBq','DgvZDa','ownZs21msq','ote2otGWvxPMC1PK','nZG5nhPuyxnfuq','mtu0nfjNuuDqyq'];_0x1eb2=function(){return _0x201740;};return _0x1eb2();}export function safeErrorCode(_0x1587ca,_0x38fd41){const _0x3ddeb6=_0x1e00;return _0x1587ca instanceof Error&&STABLE_ERROR_CODE[_0x3ddeb6(0xb7)](_0x1587ca[_0x3ddeb6(0xb3)])?_0x1587ca[_0x3ddeb6(0xb3)]:_0x38fd41;}
@@ -1,25 +1,2 @@
1
- const ENVIRONMENT_NAME = /^[A-Za-z_][A-Za-z0-9_]{0,127}$/;
2
- const MAX_SECRET_COUNT = 128;
3
- const MAX_SECRET_VALUE_BYTES = 16 * 1024;
4
- const MAX_SECRET_TOTAL_BYTES = 64 * 1024;
5
- export function parseSecretEnvironment(value) {
6
- if (value === undefined)
7
- return {};
8
- if (value === null || typeof value !== 'object' || Array.isArray(value))
9
- throw new Error('SECRET_ENVIRONMENT_INVALID');
10
- const entries = Object.entries(value);
11
- if (entries.length > MAX_SECRET_COUNT)
12
- throw new Error('SECRET_ENVIRONMENT_LIMIT_EXCEEDED');
13
- const environment = {};
14
- let bytes = 0;
15
- for (const [name, secret] of entries) {
16
- if (!ENVIRONMENT_NAME.test(name) || typeof secret !== 'string' || secret.includes('\0'))
17
- throw new Error('SECRET_ENVIRONMENT_INVALID');
18
- const valueBytes = Buffer.byteLength(secret);
19
- bytes += Buffer.byteLength(name) + valueBytes;
20
- if (valueBytes > MAX_SECRET_VALUE_BYTES || bytes > MAX_SECRET_TOTAL_BYTES)
21
- throw new Error('SECRET_ENVIRONMENT_LIMIT_EXCEEDED');
22
- environment[name] = secret;
23
- }
24
- return environment;
25
- }
1
+ /* mar-release-protected */
2
+ function _0x2bda(_0x44c3ce,_0x5f3f58){_0x44c3ce=_0x44c3ce-(-0x160f+-0x1245+-0x84b*-0x5);const _0x35c9c9=_0x23e4();let _0x31a0b7=_0x35c9c9[_0x44c3ce];if(_0x2bda['RdFCqm']===undefined){var _0x2fe20b=function(_0x58d520){const _0x45d135='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x1bcdec='',_0x2adf4c='';for(let _0x483d83=0x5af+0x22f4+-0x28a3,_0x4b722f,_0x2bc86a,_0x1a65b6=0xaea+-0x92e+-0x1bc*0x1;_0x2bc86a=_0x58d520['charAt'](_0x1a65b6++);~_0x2bc86a&&(_0x4b722f=_0x483d83%(0x167d+0x2d2+-0x23*0xb9)?_0x4b722f*(-0x1075+-0xd65+0x1e1a)+_0x2bc86a:_0x2bc86a,_0x483d83++%(0x14f6*0x1+-0xdd*0x2+-0x2*0x99c))?_0x1bcdec+=String['fromCharCode'](0xf7f+0x11c9+0x1*-0x2049&_0x4b722f>>(-(0x4f*0x3b+0x6b*0x3f+-0x17c*0x1e)*_0x483d83&0x1*0xc1f+0x1*0x2af+-0x3b2*0x4)):-0x31d*-0x3+-0x1ec1*0x1+0x1*0x156a){_0x2bc86a=_0x45d135['indexOf'](_0x2bc86a);}for(let _0x22ea9c=-0x204f+-0x3*-0x493+0x3*0x632,_0x3f3a9b=_0x1bcdec['length'];_0x22ea9c<_0x3f3a9b;_0x22ea9c++){_0x2adf4c+='%'+('00'+_0x1bcdec['charCodeAt'](_0x22ea9c)['toString'](0x1b75+-0x11f0+-0x975))['slice'](-(0x4*-0x6b5+-0x12b*0x17+0xe9*0x3b));}return decodeURIComponent(_0x2adf4c);};_0x2bda['RWHcLa']=_0x2fe20b,_0x2bda['ROIdgK']={},_0x2bda['RdFCqm']=!![];}const _0x4c2b39=_0x35c9c9[-0x1*0x1b7f+0x35*-0xad+-0x3f50*-0x1];_0x2bda['CtBCFI']!==_0x4c2b39&&(_0x2bda['ROIdgK']={},_0x2bda['CtBCFI']=_0x4c2b39);const _0x4d1434=_0x2bda['ROIdgK'][_0x44c3ce];return _0x4d1434===undefined?(_0x31a0b7=_0x2bda['RWHcLa'](_0x31a0b7),_0x2bda['ROIdgK'][_0x44c3ce]=_0x31a0b7):_0x31a0b7=_0x4d1434,_0x31a0b7;}(function(_0x9891d,_0x410ffb){const _0x28f62e=_0x2bda,_0x509afc=_0x9891d();while(!![]){try{const _0x581ea2=-parseInt(_0x28f62e(0x134))/(-0x179*0x11+0x1985+-0x1*0x7b)*(-parseInt(_0x28f62e(0x12e))/(-0x17*0x1+-0x15c*-0x9+-0xd*0xef))+parseInt(_0x28f62e(0x12b))/(-0x35*0x13+0xb*0x28+0x23a)*(-parseInt(_0x28f62e(0x123))/(-0x19fb+-0x1*0x18e9+0x32e8))+parseInt(_0x28f62e(0x12d))/(-0x2233+-0x56*-0x20+0x8*0x2ef)+-parseInt(_0x28f62e(0x133))/(0x153*0x3+-0x4e*-0x45+-0x18f9)*(parseInt(_0x28f62e(0x12c))/(0x14a3+0x25*0x106+-0x3a7a))+-parseInt(_0x28f62e(0x12a))/(0x1*-0xf49+-0x2*0x6aa+0x1ca5)*(-parseInt(_0x28f62e(0x136))/(0x107*-0xa+-0x2*0x1088+0x2b5f*0x1))+parseInt(_0x28f62e(0x135))/(-0x1177+-0x18*0x10f+0x34d*0xd)*(-parseInt(_0x28f62e(0x128))/(-0x3*0x1b1+0x6c8+0x3*-0x8e))+-parseInt(_0x28f62e(0x137))/(0x764+0x1153*0x1+-0x18ab)*(-parseInt(_0x28f62e(0x129))/(-0xdd7+-0x28*-0xd6+-0x138c));if(_0x581ea2===_0x410ffb)break;else _0x509afc['push'](_0x509afc['shift']());}catch(_0x460904){_0x509afc['push'](_0x509afc['shift']());}}}(_0x23e4,-0xd49d7*0x1+-0x65*0x25b6+0x124ca3*0x2));function _0x23e4(){const _0x245b99=['mZyZmJqZmMfmwKrcqq','u0vduKvux0vovKLst05nru5ux0XjtuLux0vyq0vfreve','B2jQzwn0','Aw5JBhvKzxm','DgvZDa','ode2nJmYm1fcDM5cCa','mJi5mdK5vgnMwurq','mZa0oejzru5ttq','m2nlCKritG','nJnPA3bpyMS','mtmYmte5mfbrv01WEa','mtjhtgPhu2G','yNL0zuXLBMD0Aa','BgvUz3rO','C3rYAw5N','u0vduKvux0vovKLst05nru5ux0LovKfmsuq','ntGWmdu2tLb4B3rj','mti1ndK4Cw9UAwLq','mtb6BxbRAMq','ndaYm2DqzvjfzW','mti4nfLzC1zuBq','AxnbCNjHEq','zw50CMLLCW'];_0x23e4=function(){return _0x245b99;};return _0x23e4();}const ENVIRONMENT_NAME=/^[A-Za-z_][A-Za-z0-9_]{0,127}$/,MAX_SECRET_COUNT=-0xd2d+0xaea+0x2c3,MAX_SECRET_VALUE_BYTES=(0x1*0x226c+-0x2457+0x1fb)*(0x52c+-0xe4a+0xd1e),MAX_SECRET_TOTAL_BYTES=(-0x1*0x2535+0x113d*-0x1+-0x36b2*-0x1)*(0x1*0x16f+-0x1bd+0x44e);export function parseSecretEnvironment(_0x4ca069){const _0x2d10ff=_0x2bda;if(_0x4ca069===undefined)return{};if(_0x4ca069===null||typeof _0x4ca069!==_0x2d10ff(0x125)||Array[_0x2d10ff(0x138)](_0x4ca069))throw new Error(_0x2d10ff(0x132));const _0xe45c2e=Object[_0x2d10ff(0x139)](_0x4ca069);if(_0xe45c2e[_0x2d10ff(0x130)]>MAX_SECRET_COUNT)throw new Error(_0x2d10ff(0x124));const _0x3e7c09={};let _0x32f662=0x20b*0x1+0x25*0x4+0x3d*-0xb;for(const [_0x3ec60b,_0x3a402e]of _0xe45c2e){if(!ENVIRONMENT_NAME[_0x2d10ff(0x127)](_0x3ec60b)||typeof _0x3a402e!==_0x2d10ff(0x131)||_0x3a402e[_0x2d10ff(0x126)]('\x00'))throw new Error(_0x2d10ff(0x132));const _0x4f1251=Buffer[_0x2d10ff(0x12f)](_0x3a402e);_0x32f662+=Buffer[_0x2d10ff(0x12f)](_0x3ec60b)+_0x4f1251;if(_0x4f1251>MAX_SECRET_VALUE_BYTES||_0x32f662>MAX_SECRET_TOTAL_BYTES)throw new Error(_0x2d10ff(0x124));_0x3e7c09[_0x3ec60b]=_0x3a402e;}return _0x3e7c09;}