@myagentroam/node 0.9.8 → 0.9.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (213) 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 -841
  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 -973
  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 -83
  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 -0
  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 -93
  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 -169
  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 -35
  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/run-attachment-service.d.ts +0 -38
  170. package/dist/service/run-domain-state.d.ts +0 -4
  171. package/dist/service/run-event-service.d.ts +0 -33
  172. package/dist/service/run-workbench-service.d.ts +0 -25
  173. package/dist/service/runner-channel-message-service.d.ts +0 -13
  174. package/dist/service/runner-interaction-service.d.ts +0 -39
  175. package/dist/service/runner-service.d.ts +0 -46
  176. package/dist/service/session-catalog-service.d.ts +0 -45
  177. package/dist/service/session-command-service.d.ts +0 -24
  178. package/dist/service/session-context-service.d.ts +0 -35
  179. package/dist/service/session-domain-state.d.ts +0 -9
  180. package/dist/service/session-identity-service.d.ts +0 -24
  181. package/dist/service/session-lifecycle-service.d.ts +0 -31
  182. package/dist/service/session-message-service.d.ts +0 -33
  183. package/dist/service/session-presentation-service.d.ts +0 -34
  184. package/dist/service/session-query-service.d.ts +0 -35
  185. package/dist/service/skill-directory-service.d.ts +0 -20
  186. package/dist/service/skill-install-service.d.ts +0 -21
  187. package/dist/service/skill-node-operation-service.d.ts +0 -44
  188. package/dist/service/terminal-relay-state.d.ts +0 -6
  189. package/dist/service/terminal-service.d.ts +0 -12
  190. package/dist/service/workbench-event-service.d.ts +0 -9
  191. package/dist/service/workbench-manifest-service.d.ts +0 -90
  192. package/dist/service/workspace-change-service.d.ts +0 -9
  193. package/dist/service/workspace-content-search-service.d.ts +0 -14
  194. package/dist/service/workspace-domain-state.d.ts +0 -79
  195. package/dist/service/workspace-file-service.d.ts +0 -18
  196. package/dist/service/workspace-git-exclude-service.d.ts +0 -4
  197. package/dist/service/workspace-queue-workbench-service.d.ts +0 -86
  198. package/dist/service/workspace-service.d.ts +0 -15
  199. package/dist/service/workspace-session-service.d.ts +0 -23
  200. package/dist/service/workspace-upload-service.d.ts +0 -39
  201. package/dist/service/workspace-watch-service.d.ts +0 -23
  202. package/dist/service/workspace-workbench-service.d.ts +0 -58
  203. package/dist/service.d.ts +0 -4
  204. package/dist/storage.d.ts +0 -2
  205. package/dist/supervisor.d.ts +0 -1
  206. package/dist/terminal.d.ts +0 -133
  207. package/dist/util/node-operation-parsers.d.ts +0 -92
  208. package/dist/util/personal-instructions.d.ts +0 -2
  209. package/dist/util/runner-error.d.ts +0 -6
  210. package/dist/util/runner-native-session-parsers.d.ts +0 -74
  211. package/dist/util/safe-error.d.ts +0 -2
  212. package/dist/util/secret-environment.d.ts +0 -1
  213. package/dist/workspace.d.ts +0 -217
@@ -1,477 +1,2 @@
1
- import { spawn } from 'node:child_process';
2
- import { createReadStream } from 'node:fs';
3
- import { lstat, realpath } from 'node:fs/promises';
4
- import { isAbsolute, join, relative, sep } from 'node:path';
5
- const RESULT_LIMIT = 200;
6
- const PER_FILE_LIMIT = 20;
7
- const FILE_BYTE_LIMIT = 2 * 1024 * 1024;
8
- const SCAN_BYTE_LIMIT = 128 * 1024 * 1024;
9
- const OUTPUT_BYTE_LIMIT = 2 * 1024 * 1024;
10
- const TIMEOUT_MS = 5_000;
11
- const WINDOWS_ARGUMENT_BATCH_BYTES = 24 * 1024;
12
- const POSIX_ARGUMENT_BATCH_BYTES = 96 * 1024;
13
- const SEARCH_CONCURRENCY = 2;
14
- const SEARCH_QUEUE_LIMIT = 16;
15
- const CANDIDATE_VALIDATION_CONCURRENCY = 32;
16
- let activeSearches = 0;
17
- const searchWaiters = [];
18
- async function acquireSearch(deadline) {
19
- if (activeSearches >= SEARCH_CONCURRENCY) {
20
- if (searchWaiters.length >= SEARCH_QUEUE_LIMIT)
21
- throw new Error('FILE_CONTENT_SEARCH_BUSY');
22
- await new Promise((resolve, reject) => {
23
- const resume = () => {
24
- clearTimeout(timer);
25
- resolve();
26
- };
27
- const timer = setTimeout(() => {
28
- const index = searchWaiters.indexOf(resume);
29
- if (index >= 0)
30
- searchWaiters.splice(index, 1);
31
- reject(new Error('CONTENT_SEARCH_TIMEOUT'));
32
- }, Math.max(1, deadline - Date.now()));
33
- searchWaiters.push(resume);
34
- });
35
- }
36
- activeSearches += 1;
37
- return () => {
38
- activeSearches -= 1;
39
- searchWaiters.shift()?.();
40
- };
41
- }
42
- export class WorkspaceContentSearchService {
43
- files;
44
- platform;
45
- pending = new Map();
46
- constructor(files, platform = process.platform) {
47
- this.files = files;
48
- this.platform = platform;
49
- }
50
- search(workspace, input) {
51
- if (typeof input.query !== 'string' || input.query.length < 1 || input.query.length > 256)
52
- throw new Error('FILE_CONTENT_SEARCH_INVALID');
53
- const key = `${workspace.id}\0${input.query.toLocaleLowerCase()}`;
54
- const existing = this.pending.get(key);
55
- if (existing !== undefined)
56
- return existing;
57
- const task = this.perform(workspace, input.query).finally(() => this.pending.delete(key));
58
- this.pending.set(key, task);
59
- return task;
60
- }
61
- async perform(workspace, query) {
62
- const deadline = Date.now() + TIMEOUT_MS;
63
- const release = await acquireSearch(deadline);
64
- try {
65
- const prepared = await this.candidates(workspace, deadline);
66
- if (prepared.files.length === 0)
67
- return {
68
- matches: [],
69
- engine: 'NODE',
70
- truncated: prepared.truncated || Date.now() >= deadline,
71
- skippedFiles: prepared.skippedFiles
72
- };
73
- for (const engine of this.engines()) {
74
- try {
75
- const matches = await this.nativeSearch(engine, workspace.path, prepared.files, query, deadline);
76
- return {
77
- matches: matches.slice(0, RESULT_LIMIT),
78
- engine,
79
- truncated: prepared.truncated || matches.length > RESULT_LIMIT || Date.now() >= deadline,
80
- skippedFiles: prepared.skippedFiles
81
- };
82
- }
83
- catch {
84
- // Missing, incompatible or failed native tools safely fall through.
85
- }
86
- }
87
- const fallback = await nodeSearch(prepared.files, query, deadline);
88
- return {
89
- matches: fallback.matches.slice(0, RESULT_LIMIT),
90
- engine: 'NODE',
91
- truncated: prepared.truncated || fallback.matches.length > RESULT_LIMIT || Date.now() >= deadline,
92
- skippedFiles: prepared.skippedFiles + fallback.skippedFiles
93
- };
94
- }
95
- finally {
96
- release();
97
- }
98
- }
99
- engines() {
100
- return this.platform === 'win32' ? ['RIPGREP', 'POWERSHELL'] : ['RIPGREP', 'GREP'];
101
- }
102
- async candidates(workspace, deadline) {
103
- const root = await realpath(workspace.path);
104
- let candidates;
105
- try {
106
- candidates = await beforeDeadline(this.files.index(workspace).contentCandidates(), deadline);
107
- }
108
- catch (error) {
109
- if (error instanceof Error && error.message === 'CONTENT_SEARCH_TIMEOUT')
110
- return { files: [], skippedFiles: 0, truncated: true };
111
- throw error;
112
- }
113
- const files = [];
114
- let skippedFiles = 0;
115
- let bytes = 0;
116
- let truncated = candidates.truncated;
117
- for (let offset = 0; offset < candidates.entries.length; offset += CANDIDATE_VALIDATION_CONCURRENCY) {
118
- if (Date.now() >= deadline) {
119
- truncated = true;
120
- break;
121
- }
122
- const validated = await Promise.all(candidates.entries
123
- .slice(offset, offset + CANDIDATE_VALIDATION_CONCURRENCY)
124
- .map((entry) => validateCandidate(root, entry.path)));
125
- for (const candidate of validated) {
126
- if (candidate === undefined) {
127
- skippedFiles += 1;
128
- continue;
129
- }
130
- if (bytes + candidate.size > SCAN_BYTE_LIMIT) {
131
- truncated = true;
132
- break;
133
- }
134
- bytes += candidate.size;
135
- files.push({ path: candidate.path, absolutePath: candidate.absolutePath });
136
- }
137
- if (truncated)
138
- break;
139
- }
140
- return { files, skippedFiles, truncated };
141
- }
142
- async nativeSearch(engine, root, files, query, deadline) {
143
- const matches = [];
144
- const argumentBatchBytes = this.platform === 'win32' ? WINDOWS_ARGUMENT_BATCH_BYTES : POSIX_ARGUMENT_BATCH_BYTES;
145
- for (const batch of batches(files, argumentBatchBytes)) {
146
- if (Date.now() >= deadline || matches.length > RESULT_LIMIT)
147
- break;
148
- const command = commandFor(engine, batch, query);
149
- const result = await runCommand(command.file, command.args, root, deadline, engine === 'RIPGREP');
150
- if (!command.validCodes.includes(result.code))
151
- throw new Error('CONTENT_SEARCH_COMMAND_FAILED');
152
- const paths = new Map(batch.flatMap((file) => [
153
- [normalizeResultPath(file.path, this.platform), file.path],
154
- [normalizeResultPath(file.absolutePath, this.platform), file.path]
155
- ]));
156
- matches.push(...parseOutput(engine, result.stdout, query).map((match) => ({
157
- ...match,
158
- path: paths.get(normalizeResultPath(match.path, this.platform)) ??
159
- (() => {
160
- throw new Error('CONTENT_SEARCH_OUTPUT_INVALID');
161
- })()
162
- })));
163
- }
164
- return limitPerFile(matches);
165
- }
166
- }
167
- async function validateCandidate(root, path) {
168
- try {
169
- const absolutePath = await realpath(join(root, path));
170
- const inside = relative(root, absolutePath);
171
- if (inside === '..' || inside.startsWith(`..${sep}`) || isAbsolute(inside))
172
- return undefined;
173
- const metadata = await lstat(absolutePath);
174
- return metadata.isFile() && metadata.size <= FILE_BYTE_LIMIT
175
- ? { path, absolutePath, size: metadata.size }
176
- : undefined;
177
- }
178
- catch {
179
- return undefined;
180
- }
181
- }
182
- async function beforeDeadline(promise, deadline) {
183
- return new Promise((resolve, reject) => {
184
- const timer = setTimeout(() => reject(new Error('CONTENT_SEARCH_TIMEOUT')), Math.max(1, deadline - Date.now()));
185
- promise.then((value) => {
186
- clearTimeout(timer);
187
- resolve(value);
188
- }, (error) => {
189
- clearTimeout(timer);
190
- reject(error);
191
- });
192
- });
193
- }
194
- function normalizeResultPath(path, platform) {
195
- const normalized = path.replaceAll('\\', '/');
196
- return platform === 'win32' ? normalized.toLocaleLowerCase() : normalized;
197
- }
198
- function batches(files, maximumBytes) {
199
- const result = [];
200
- let current = [];
201
- let bytes = 0;
202
- for (const file of files) {
203
- const size = Buffer.byteLength(file.path) + 1;
204
- if (current.length > 0 && bytes + size > maximumBytes) {
205
- result.push(current);
206
- current = [];
207
- bytes = 0;
208
- }
209
- current.push(file);
210
- bytes += size;
211
- }
212
- if (current.length > 0)
213
- result.push(current);
214
- return result;
215
- }
216
- function commandFor(engine, files, query) {
217
- const paths = files.map((file) => file.path);
218
- if (engine === 'RIPGREP')
219
- return {
220
- file: 'rg',
221
- args: [
222
- '--json',
223
- '--no-config',
224
- '--fixed-strings',
225
- '--ignore-case',
226
- '--max-count',
227
- String(PER_FILE_LIMIT),
228
- '--',
229
- query,
230
- ...paths
231
- ],
232
- validCodes: [0, 1]
233
- };
234
- if (engine === 'GREP')
235
- return {
236
- file: 'grep',
237
- args: [
238
- '-I',
239
- '-i',
240
- '-n',
241
- '-H',
242
- '-F',
243
- '-Z',
244
- '-m',
245
- String(PER_FILE_LIMIT),
246
- '-e',
247
- query,
248
- '--',
249
- ...paths
250
- ],
251
- validCodes: [0, 1]
252
- };
253
- const script = [
254
- '[Console]::OutputEncoding=[System.Text.Encoding]::UTF8;',
255
- '$q=$args[0];',
256
- '$args | Select-Object -Skip 1 | ForEach-Object {',
257
- 'Select-String -LiteralPath $_ -SimpleMatch -CaseSensitive:$false -Pattern $q | Select-Object -First 20 | ForEach-Object {',
258
- '[Console]::Out.WriteLine((@{path=$_.Path;line=$_.LineNumber;column=($_.Line.ToLowerInvariant().IndexOf($q.ToLowerInvariant())+1);preview=$_.Line}|ConvertTo-Json -Compress))',
259
- '}}'
260
- ].join('');
261
- return {
262
- file: 'powershell.exe',
263
- args: ['-NoProfile', '-NonInteractive', '-Command', script, query, ...paths],
264
- validCodes: [0]
265
- };
266
- }
267
- async function runCommand(file, args, cwd, deadline, stopAfterResultLimit = false) {
268
- return new Promise((resolve, reject) => {
269
- const child = spawn(file, args, {
270
- cwd,
271
- windowsHide: true,
272
- stdio: ['ignore', 'pipe', 'ignore']
273
- });
274
- const chunks = [];
275
- let pending = Buffer.alloc(0);
276
- let bytes = 0;
277
- let matches = 0;
278
- let stopped = false;
279
- const timer = setTimeout(() => child.kill(), Math.max(1, deadline - Date.now()));
280
- child.once('error', (error) => {
281
- clearTimeout(timer);
282
- reject(error);
283
- });
284
- child.stdout.on('data', (chunk) => {
285
- bytes += chunk.length;
286
- if (bytes > OUTPUT_BYTE_LIMIT) {
287
- child.kill();
288
- return;
289
- }
290
- if (!stopAfterResultLimit) {
291
- chunks.push(chunk);
292
- return;
293
- }
294
- pending = Buffer.concat([pending, chunk]);
295
- let newline = pending.indexOf(0x0a);
296
- while (newline >= 0) {
297
- const record = pending.subarray(0, newline + 1);
298
- chunks.push(record);
299
- if (record.includes(Buffer.from('"type":"match"')))
300
- matches += 1;
301
- pending = pending.subarray(newline + 1);
302
- if (matches > RESULT_LIMIT) {
303
- stopped = true;
304
- child.kill();
305
- return;
306
- }
307
- newline = pending.indexOf(0x0a);
308
- }
309
- });
310
- child.once('close', (code, signal) => {
311
- clearTimeout(timer);
312
- if (stopped)
313
- resolve({ code: 0, stdout: Buffer.concat(chunks) });
314
- else if (signal !== null || bytes > OUTPUT_BYTE_LIMIT)
315
- reject(new Error('CONTENT_SEARCH_COMMAND_LIMIT'));
316
- else {
317
- if (stopAfterResultLimit && pending.length > 0)
318
- chunks.push(pending);
319
- resolve({ code: code ?? -1, stdout: Buffer.concat(chunks) });
320
- }
321
- });
322
- });
323
- }
324
- function parseOutput(engine, output, query) {
325
- if (engine === 'RIPGREP')
326
- return parseRipgrep(output, query);
327
- if (engine === 'GREP')
328
- return parseGrep(output, query);
329
- return parsePowerShell(output, query);
330
- }
331
- function parseRipgrep(output, query) {
332
- return output
333
- .toString('utf8')
334
- .split('\n')
335
- .flatMap((line) => {
336
- if (line === '')
337
- return [];
338
- const value = JSON.parse(line);
339
- if (value.type !== 'match')
340
- return [];
341
- const data = value.data;
342
- const preview = String(data?.lines?.text).replace(/[\r\n]+$/u, '');
343
- const column = lowerIndex(preview, query);
344
- if (typeof data?.path?.text !== 'string' || !Number.isInteger(data.line_number) || column < 0)
345
- throw new Error('CONTENT_SEARCH_OUTPUT_INVALID');
346
- return [
347
- {
348
- path: data.path.text,
349
- line: data.line_number,
350
- column: column + 1,
351
- preview: preview.slice(0, 8192)
352
- }
353
- ];
354
- });
355
- }
356
- function parseGrep(output, query) {
357
- const matches = [];
358
- let offset = 0;
359
- while (offset < output.length) {
360
- const separator = output.indexOf(0, offset);
361
- const end = output.indexOf(10, separator + 1);
362
- if (separator < 0 || end < 0)
363
- throw new Error('CONTENT_SEARCH_OUTPUT_INVALID');
364
- const path = output.subarray(offset, separator).toString('utf8');
365
- const record = output.subarray(separator + 1, end).toString('utf8');
366
- const colon = record.indexOf(':');
367
- const preview = record.slice(colon + 1).replace(/\r$/u, '');
368
- const column = lowerIndex(preview, query);
369
- if (colon < 1 || column < 0)
370
- throw new Error('CONTENT_SEARCH_OUTPUT_INVALID');
371
- matches.push({
372
- path,
373
- line: Number(record.slice(0, colon)),
374
- column: column + 1,
375
- preview: preview.slice(0, 8192)
376
- });
377
- offset = end + 1;
378
- }
379
- return matches;
380
- }
381
- function parsePowerShell(output, query) {
382
- return output
383
- .toString('utf8')
384
- .split(/\r?\n/u)
385
- .flatMap((line) => {
386
- if (line === '')
387
- return [];
388
- const match = JSON.parse(line);
389
- if (typeof match.path !== 'string' ||
390
- !Number.isInteger(match.line) ||
391
- typeof match.preview !== 'string')
392
- throw new Error('CONTENT_SEARCH_OUTPUT_INVALID');
393
- const column = lowerIndex(match.preview, query);
394
- if (column < 0)
395
- throw new Error('CONTENT_SEARCH_OUTPUT_INVALID');
396
- return [
397
- {
398
- path: match.path,
399
- line: match.line,
400
- column: column + 1,
401
- preview: match.preview.slice(0, 8192)
402
- }
403
- ];
404
- });
405
- }
406
- async function nodeSearch(files, query, deadline) {
407
- const matches = [];
408
- let skippedFiles = 0;
409
- for (const file of files) {
410
- if (Date.now() >= deadline || matches.length > RESULT_LIMIT)
411
- break;
412
- const fileResults = [];
413
- const stream = createReadStream(file.absolutePath);
414
- const decoder = new TextDecoder('utf-8', { fatal: true });
415
- let pending = '';
416
- let line = 0;
417
- let fileMatches = 0;
418
- const addLine = (value) => {
419
- line += 1;
420
- const preview = value.endsWith('\r') ? value.slice(0, -1) : value;
421
- const column = lowerIndex(preview, query);
422
- if (column >= 0) {
423
- fileResults.push({
424
- path: file.path,
425
- line,
426
- column: column + 1,
427
- preview: preview.slice(0, 8192)
428
- });
429
- fileMatches += 1;
430
- }
431
- return (fileMatches >= PER_FILE_LIMIT ||
432
- matches.length + fileResults.length > RESULT_LIMIT ||
433
- Date.now() >= deadline);
434
- };
435
- try {
436
- let stopped = false;
437
- for await (const chunk of stream) {
438
- pending += decoder.decode(chunk, { stream: true });
439
- let newline = pending.indexOf('\n');
440
- while (newline >= 0) {
441
- if (addLine(pending.slice(0, newline))) {
442
- stopped = true;
443
- break;
444
- }
445
- pending = pending.slice(newline + 1);
446
- newline = pending.indexOf('\n');
447
- }
448
- if (stopped)
449
- break;
450
- }
451
- if (!stopped) {
452
- pending += decoder.decode();
453
- if (pending !== '')
454
- addLine(pending);
455
- }
456
- matches.push(...fileResults);
457
- }
458
- catch {
459
- // Files that disappear, become unreadable or contain invalid UTF-8 are skipped atomically.
460
- skippedFiles += 1;
461
- }
462
- }
463
- return { matches, skippedFiles };
464
- }
465
- function lowerIndex(source, query) {
466
- return source.toLocaleLowerCase().indexOf(query.toLocaleLowerCase());
467
- }
468
- function limitPerFile(matches) {
469
- const counts = new Map();
470
- return matches.filter((match) => {
471
- const count = counts.get(match.path) ?? 0;
472
- if (count >= PER_FILE_LIMIT)
473
- return false;
474
- counts.set(match.path, count + 1);
475
- return true;
476
- });
477
- }
1
+ /* mar-release-protected */
2
+ const _0x3bfb5e=_0x4a44;(function(_0x2f5b55,_0x2d312d){const _0x31c3e1=_0x4a44,_0x2e78f9=_0x2f5b55();while(!![]){try{const _0x5a2edf=parseInt(_0x31c3e1(0x150))/(-0x5d0*0x1+-0x1676+0x1c47)*(parseInt(_0x31c3e1(0x14f))/(0x1957+-0xeea+0x3*-0x379))+parseInt(_0x31c3e1(0x153))/(0x1d7e+0xa*-0x377+0x52b)+parseInt(_0x31c3e1(0x11b))/(-0x1b78+-0x1c*0xb5+0xbd2*0x4)+parseInt(_0x31c3e1(0x131))/(-0x1a*-0x6a+-0xd4e+-0x5*-0x83)+-parseInt(_0x31c3e1(0x116))/(0x1255+-0x202*0xe+0xd*0xc1)+parseInt(_0x31c3e1(0x159))/(0x1f4c+0x2*0xc90+0x3865*-0x1)+parseInt(_0x31c3e1(0x126))/(-0x1d2c+0x13*-0x4+0x1d80)*(-parseInt(_0x31c3e1(0x117))/(0x320*-0x1+0x82*-0x23+-0x14ef*-0x1));if(_0x5a2edf===_0x2d312d)break;else _0x2e78f9['push'](_0x2e78f9['shift']());}catch(_0x2dbe4f){_0x2e78f9['push'](_0x2e78f9['shift']());}}}(_0x1066,-0x13f28e+0x38*-0x4cc5+-0x334191*-0x1));import{spawn}from'node:child_process';import{createReadStream}from'node:fs';import{lstat,realpath}from'node:fs/promises';import{isAbsolute,join,relative,sep}from'node:path';const RESULT_LIMIT=0x2ed+-0x4*-0xc1+-0x529,PER_FILE_LIMIT=0xea2*-0x2+0x40b+0x194d,FILE_BYTE_LIMIT=(-0x1*-0x2641+0x1a52+0x4091*-0x1)*(0x1df3+-0x1*-0x13af+-0x2da2)*(0x17b1+0x15a4+-0x2955*0x1),SCAN_BYTE_LIMIT=(-0xb9c+-0xd*-0x52+-0x153*-0x6)*(0x227f+-0x1560+-0x91f)*(-0x1*0x1493+-0x12c8+0x2b5b*0x1),OUTPUT_BYTE_LIMIT=(0x1fb5*-0x1+0x187e+0x739)*(0x2*-0xa5b+0x92f*0x3+-0x2d7*0x1)*(-0x21a2+-0xc81+0x1*0x3223),TIMEOUT_MS=0x18c1+-0x4*-0x38c+-0x1369,WINDOWS_ARGUMENT_BATCH_BYTES=(-0x5*0x133+0x67*-0x19+0x1*0x1026)*(-0xe33+0x11e0*0x2+-0x118d),POSIX_ARGUMENT_BATCH_BYTES=(-0x39*0x9a+0x1*0xf3d+-0x136d*-0x1)*(-0x8f6+-0x156d+0x2263),SEARCH_CONCURRENCY=0x6*-0x45d+-0x5*0x3fc+0x2e1c,SEARCH_QUEUE_LIMIT=-0xb47+-0xa84+0x1*0x15db,CANDIDATE_VALIDATION_CONCURRENCY=-0x193f+0x2097+0x2a*-0x2c;let activeSearches=-0x6*-0x4a+0x907+-0xac3;function _0x1066(){const _0x2d3ede=['zMLSDgvY','BwvZC2fNzq','ls1MAxHLzc1ZDhjPBMDZ','w0nVBNnVBgvDoJPpDxrWDxrfBMnVzgLUzZ1Bu3LZDgvTlLrLEhqUrw5JB2rPBMDDoJPvvey4oW','Bwf4','zw5NAw5LCW','ls1TyxGTy291BNq','AxngAwXL','zMLSzq','jhe9jgfYz3nBmf07','C2L6zq','ls1Pz25VCMuTy2fZzq','Cg93zxjZAgvSBc5LEgu','CgXHDgzVCM0','BgLUzv9UDw1Izxi','BgvUz3rO','rKLmrv9dt05uru5ux1nfqvjdsf9jtLzbteLe','w0nVBNnVBgvDoJPpDxqUv3jPDgvmAw5LkcHaE3bHDgG9jf8Uugf0AdTSAw5LpsrFlKXPBMvoDw1Izxi7y29SDw1UpsGKxY5mAw5LlLrVtg93zxjjBNzHCMLHBNqOks5jBMrLEe9MkcrXlLrVtg93zxjjBNzHCMLHBNqOksKRmsK7ChjLDMLLDZ0KxY5mAw5LFxXdB252zxj0vg8TsNnVBIaTq29TChjLC3mPkq','ue9xrvjtsevmta','C2TPChbLzezPBgvZ','AwDUB3jL','q09ovevovf9trufsq0HFq09ntuforf9msu1jva','DxrMltG','BgLUzxm','uKLqr1jfua','Cgf0Aa','ChjLDMLLDW','Aw5KzxG','z2v0','D2LUmZi','y2XVC2u','q09ovevovf9trufsq0HFq09ntuforf9gquLmruq','BMf0AxzLu2vHCMnO','CgvYzM9YBq','A2LSBa','zw5KC1DPDgG','nZa4nJaXmLvIs0DdBq','mty4ndu5mdn3D0jzq2K','zMLSzxm','C3bSAxq','q09ovevovf9trufsq0HFt1vuufvux0LovKfmsuq','mtaZndi2ofvLAgnyqW','q09ovevovf9trufsq0HFveLnru9vva','DgHLBG','BM93','zgvJB2rL','B25Jzq','CMvWBgfJzq','lu5VuhjVzMLSzq','Aw5JBhvKzxm','zw50CMLLCW','DxrMoa','ogvVChHUqG','C2HPzNq','Dg9tDhjPBMC','ywXS','y29UDgvUDenHBMrPzgf0zxm','yNL0zuXLBMD0Aa','C2vHCMnO','zNjVBq','C2XPy2u','C2v0','CMvWBgfJzufSBa','ntq1mJG5mgDvEwT3ua','zMXHDe1HCa','jgfYz3mGFcbtzwXLy3qTt2jQzwn0ic1tA2LWideGFcbgB3jfywnOlu9IAMvJDcb7','Bwf0y2HLCW','zgvSzxrL','y29Uy2f0','AM9PBG','ywXSB2m','zMLUywXSEq','CgfYC2u','y29Kzq','z3jLCa','ywjZB2X1DgvqyxrO','Dhj1BMnHDgvK','CgLWzq','zgf0yq','C3rHCNrZv2L0Aa','Aw5KzxHpzG','Dg9mB2nHBgvmB3DLCKnHC2u','ls1UBY1JB25MAwC','y2fUzgLKyxrLCW','zxjYB3i','C3rYAw5N','DhLWzq','Bwf0y2G','DMfSAwrdB2rLCW','rKLmrv9dt05uru5ux1nfqvjdsf9cvvnz','BgLUzq','lu5VBKLUDgvYywn0AxzL','ChvZAa','mteZoti0nM1lrM1QvG','mvbnz05yyG','u2vSzwn0lvn0CMLUzYaTtgL0zxjHBfbHDgGGjf8GlvnPBxbSzu1HDgnOic1dyxnLu2vUC2L0AxzLoIrMywXZzsaTugf0DgvYBIaKCsb8ifnLBgvJDc1pyMPLy3qGluzPCNn0idiWihWGrM9YrwfJAc1pyMPLy3qGEW','BwfW','ndaWmZqZnezzr3HRtq','AxnjBNrLz2vY','tK9erq','r1jfua','Dgv4Da','C3vIyxjYyxK','nti1ntu4nNrsDKPAvW','iNr5CguIoIjTyxrJAci','C3bSAwnL','yxjNCW','ls1QC29U','CxvLCNK','CgvUzgLUzW','lunVBw1HBMq','C3rKB3v0'];_0x1066=function(){return _0x2d3ede;};return _0x1066();}const searchWaiters=[];async function acquireSearch(_0x38db68){const _0x5320b4=_0x4a44;if(activeSearches>=SEARCH_CONCURRENCY){if(searchWaiters[_0x5320b4(0x101)]>=SEARCH_QUEUE_LIMIT)throw new Error(_0x5320b4(0x14b));await new Promise((_0x1b5755,_0x547129)=>{const _0x30d8ff=_0x5320b4,_0x22e11f=()=>{clearTimeout(_0x272fe2),_0x1b5755();},_0x272fe2=setTimeout(()=>{const _0x1e52e2=_0x4a44,_0x1b0bae=searchWaiters[_0x1e52e2(0x142)](_0x22e11f);if(_0x1b0bae>=-0x1*0x2565+-0x827+-0x6e*-0x6a)searchWaiters[_0x1e52e2(0x15b)](_0x1b0bae,0x12a3+-0x188+-0x111a);_0x547129(new Error(_0x1e52e2(0x11c)));},Math[_0x30d8ff(0x166)](0xb9+-0x6d4+0x61c,_0x38db68-Date[_0x30d8ff(0x11e)]()));searchWaiters[_0x30d8ff(0x14e)](_0x22e11f);});}return activeSearches+=-0x47*-0x19+-0x6d7+0x1*-0x17,()=>{const _0x13c5c0=_0x5320b4;activeSearches-=0x4*-0x1c9+-0x1ed3+0x25f8,searchWaiters[_0x13c5c0(0x127)]()?.();};}export class WorkspaceContentSearchService{[_0x3bfb5e(0x118)];[_0x3bfb5e(0xff)];[_0x3bfb5e(0x15f)]=new Map();constructor(_0x582ced,_0x2e260b=process[_0x3bfb5e(0xff)]){const _0x3de264=_0x3bfb5e;this[_0x3de264(0x118)]=_0x582ced,this[_0x3de264(0xff)]=_0x2e260b;}[_0x3bfb5e(0x12c)](_0x4bd790,_0x26b435){const _0x3d6560=_0x3bfb5e;if(typeof _0x26b435[_0x3d6560(0x15e)]!==_0x3d6560(0x147)||_0x26b435[_0x3d6560(0x15e)][_0x3d6560(0x101)]<0x472+0x112d+-0x159e||_0x26b435[_0x3d6560(0x15e)][_0x3d6560(0x101)]>0x3a*-0x10+0x1801+-0x1*0x1361)throw new Error(_0x3d6560(0x102));const _0x1cdcb7=_0x4bd790['id']+'\x00'+_0x26b435[_0x3d6560(0x15e)][_0x3d6560(0x143)](),_0x13b8ef=this[_0x3d6560(0x15f)][_0x3d6560(0x10e)](_0x1cdcb7);if(_0x13b8ef!==undefined)return _0x13b8ef;const _0x5a848e=this[_0x3d6560(0x113)](_0x4bd790,_0x26b435[_0x3d6560(0x15e)])[_0x3d6560(0x139)](()=>this[_0x3d6560(0x15f)][_0x3d6560(0x135)](_0x1cdcb7));return this[_0x3d6560(0x15f)][_0x3d6560(0x12f)](_0x1cdcb7,_0x5a848e),_0x5a848e;}async[_0x3bfb5e(0x113)](_0x3c9bf0,_0x1b107d){const _0x376e0d=_0x3bfb5e,_0x4906c0=Date[_0x376e0d(0x11e)]()+TIMEOUT_MS,_0x1feab9=await acquireSearch(_0x4906c0);try{const _0x24afd8=await this[_0x376e0d(0x145)](_0x3c9bf0,_0x4906c0);if(_0x24afd8[_0x376e0d(0x118)][_0x376e0d(0x101)]===0x3*0x57+-0x1*-0x1e6d+0x23f*-0xe)return{'matches':[],'engine':_0x376e0d(0x155),'truncated':_0x24afd8[_0x376e0d(0x13e)]||Date[_0x376e0d(0x11e)]()>=_0x4906c0,'skippedFiles':_0x24afd8[_0x376e0d(0x105)]};for(const _0x11188f of this[_0x376e0d(0x167)]()){try{const _0x2869b9=await this[_0x376e0d(0x112)](_0x11188f,_0x3c9bf0[_0x376e0d(0x10b)],_0x24afd8[_0x376e0d(0x118)],_0x1b107d,_0x4906c0);return{'matches':_0x2869b9[_0x376e0d(0x12e)](-0x2549+-0x5a4+0x2aed,RESULT_LIMIT),'engine':_0x11188f,'truncated':_0x24afd8[_0x376e0d(0x13e)]||_0x2869b9[_0x376e0d(0x101)]>RESULT_LIMIT||Date[_0x376e0d(0x11e)]()>=_0x4906c0,'skippedFiles':_0x24afd8[_0x376e0d(0x105)]};}catch{}}const _0x1aec71=await nodeSearch(_0x24afd8[_0x376e0d(0x118)],_0x1b107d,_0x4906c0);return{'matches':_0x1aec71[_0x376e0d(0x134)][_0x376e0d(0x12e)](0x1428+-0x2288+0xe60,RESULT_LIMIT),'engine':_0x376e0d(0x155),'truncated':_0x24afd8[_0x376e0d(0x13e)]||_0x1aec71[_0x376e0d(0x134)][_0x376e0d(0x101)]>RESULT_LIMIT||Date[_0x376e0d(0x11e)]()>=_0x4906c0,'skippedFiles':_0x24afd8[_0x376e0d(0x105)]+_0x1aec71[_0x376e0d(0x105)]};}finally{_0x1feab9();}}[_0x3bfb5e(0x167)](){const _0x4f8fd1=_0x3bfb5e;return this[_0x4f8fd1(0xff)]===_0x4f8fd1(0x10f)?[_0x4f8fd1(0x10a),_0x4f8fd1(0x104)]:[_0x4f8fd1(0x10a),_0x4f8fd1(0x156)];}async[_0x3bfb5e(0x145)](_0x4cfb3e,_0x563a10){const _0x43e3a5=_0x3bfb5e,_0x5dfe16=await realpath(_0x4cfb3e[_0x43e3a5(0x10b)]);let _0x2013a3;try{_0x2013a3=await beforeDeadline(this[_0x43e3a5(0x118)][_0x43e3a5(0x10d)](_0x4cfb3e)[_0x43e3a5(0x12a)](),_0x563a10);}catch(_0x188fe7){if(_0x188fe7 instanceof Error&&_0x188fe7[_0x43e3a5(0x163)]===_0x43e3a5(0x11c))return{'files':[],'skippedFiles':0x0,'truncated':!![]};throw _0x188fe7;}const _0xd70a3b=[];let _0x455072=-0x2607*-0x1+0x2064+-0x466b,_0x4993b5=0xb0a+0x1138+-0x1c42,_0x5ebb2e=_0x2013a3[_0x43e3a5(0x13e)];for(let _0x474310=-0x1b27+-0x83*0x7+0x1ebc;_0x474310<_0x2013a3[_0x43e3a5(0x124)][_0x43e3a5(0x101)];_0x474310+=CANDIDATE_VALIDATION_CONCURRENCY){if(Date[_0x43e3a5(0x11e)]()>=_0x563a10){_0x5ebb2e=!![];break;}const _0x4535d1=await Promise[_0x43e3a5(0x129)](_0x2013a3[_0x43e3a5(0x124)][_0x43e3a5(0x12e)](_0x474310,_0x474310+CANDIDATE_VALIDATION_CONCURRENCY)[_0x43e3a5(0x152)](_0x354595=>validateCandidate(_0x5dfe16,_0x354595[_0x43e3a5(0x10b)])));for(const _0x5aae4c of _0x4535d1){if(_0x5aae4c===undefined){_0x455072+=-0x99d+-0x134d+-0x2a1*-0xb;continue;}if(_0x4993b5+_0x5aae4c[_0x43e3a5(0xfc)]>SCAN_BYTE_LIMIT){_0x5ebb2e=!![];break;}_0x4993b5+=_0x5aae4c[_0x43e3a5(0xfc)],_0xd70a3b[_0x43e3a5(0x14e)]({'path':_0x5aae4c[_0x43e3a5(0x10b)],'absolutePath':_0x5aae4c[_0x43e3a5(0x13d)]});}if(_0x5ebb2e)break;}return{'files':_0xd70a3b,'skippedFiles':_0x455072,'truncated':_0x5ebb2e};}async[_0x3bfb5e(0x112)](_0x197673,_0x25bfb6,_0x435215,_0xfd87e0,_0x468322){const _0x540f70=_0x3bfb5e,_0x343d3f=[],_0x5309e3=this[_0x540f70(0xff)]===_0x540f70(0x10f)?WINDOWS_ARGUMENT_BATCH_BYTES:POSIX_ARGUMENT_BATCH_BYTES;for(const _0x1a0157 of batches(_0x435215,_0x5309e3)){if(Date[_0x540f70(0x11e)]()>=_0x468322||_0x343d3f[_0x540f70(0x101)]>RESULT_LIMIT)break;const _0x3c4ef8=commandFor(_0x197673,_0x1a0157,_0xfd87e0),_0x3d9f75=await runCommand(_0x3c4ef8[_0x540f70(0xfa)],_0x3c4ef8[_0x540f70(0x15c)],_0x25bfb6,_0x468322,_0x197673===_0x540f70(0x10a));if(!_0x3c4ef8[_0x540f70(0x14a)][_0x540f70(0x123)](_0x3d9f75[_0x540f70(0x13b)]))throw new Error(_0x540f70(0x111));const _0x399dcd=new Map(_0x1a0157[_0x540f70(0x132)](_0x31e42f=>[[normalizeResultPath(_0x31e42f[_0x540f70(0x10b)],this[_0x540f70(0xff)]),_0x31e42f[_0x540f70(0x10b)]],[normalizeResultPath(_0x31e42f[_0x540f70(0x13d)],this[_0x540f70(0xff)]),_0x31e42f[_0x540f70(0x10b)]]]));_0x343d3f[_0x540f70(0x14e)](...parseOutput(_0x197673,_0x3d9f75[_0x540f70(0x161)],_0xfd87e0)[_0x540f70(0x152)](_0x1b2b19=>({..._0x1b2b19,'path':_0x399dcd[_0x540f70(0x10e)](normalizeResultPath(_0x1b2b19[_0x540f70(0x10b)],this[_0x540f70(0xff)]))??((()=>{const _0x7d4c11=_0x540f70;throw new Error(_0x7d4c11(0x11a));})())})));}return limitPerFile(_0x343d3f);}}async function validateCandidate(_0xcb6768,_0x5d167d){const _0x5baa3e=_0x3bfb5e;try{const _0x1a299c=await realpath(join(_0xcb6768,_0x5d167d)),_0x28cfa8=relative(_0xcb6768,_0x1a299c);if(_0x28cfa8==='..'||_0x28cfa8[_0x5baa3e(0x141)]('..'+sep)||isAbsolute(_0x28cfa8))return undefined;const _0x4a27e8=await lstat(_0x1a299c);return _0x4a27e8[_0x5baa3e(0xf9)]()&&_0x4a27e8[_0x5baa3e(0xfc)]<=FILE_BYTE_LIMIT?{'path':_0x5d167d,'absolutePath':_0x1a299c,'size':_0x4a27e8[_0x5baa3e(0xfc)]}:undefined;}catch{return undefined;}}async function beforeDeadline(_0x32e52e,_0x4f8b98){return new Promise((_0x492b27,_0x457e71)=>{const _0xb74c3b=_0x4a44,_0x38e8f7=setTimeout(()=>_0x457e71(new Error(_0xb74c3b(0x11c))),Math[_0xb74c3b(0x166)](-0x168b+0x16b*0x11+-0x18f,_0x4f8b98-Date[_0xb74c3b(0x11e)]()));_0x32e52e[_0xb74c3b(0x11d)](_0x29e1c2=>{clearTimeout(_0x38e8f7),_0x492b27(_0x29e1c2);},_0x1aaafa=>{clearTimeout(_0x38e8f7),_0x457e71(_0x1aaafa);});});}function normalizeResultPath(_0x4df0cd,_0x4254cb){const _0xbb6beb=_0x3bfb5e,_0x3e2012=_0x4df0cd[_0xbb6beb(0x130)]('\x5c','/');return _0x4254cb===_0xbb6beb(0x10f)?_0x3e2012[_0xbb6beb(0x143)]():_0x3e2012;}function batches(_0x5f40a9,_0x4ef1c3){const _0x4ea11a=_0x3bfb5e,_0x4ba5c0=[];let _0x1ab110=[],_0x75a98a=-0x8d7+0x1*-0xa9f+0x1376;for(const _0x3059b1 of _0x5f40a9){const _0x14520f=Buffer[_0x4ea11a(0x12b)](_0x3059b1[_0x4ea11a(0x10b)])+(0x2*-0xb3+0xc*-0x18c+-0x13*-0x10d);_0x1ab110[_0x4ea11a(0x101)]>-0x76*0x42+-0x10*0xe0+0x2c6c&&_0x75a98a+_0x14520f>_0x4ef1c3&&(_0x4ba5c0[_0x4ea11a(0x14e)](_0x1ab110),_0x1ab110=[],_0x75a98a=-0x17d2+-0x267+0x1a39),_0x1ab110[_0x4ea11a(0x14e)](_0x3059b1),_0x75a98a+=_0x14520f;}if(_0x1ab110[_0x4ea11a(0x101)]>-0x1093+0x6*0x38d+-0x4bb)_0x4ba5c0[_0x4ea11a(0x14e)](_0x1ab110);return _0x4ba5c0;}function commandFor(_0x3d3618,_0x21ac71,_0x210037){const _0x1bc5d3=_0x3bfb5e,_0x5710b7=_0x21ac71[_0x1bc5d3(0x152)](_0x5b2f62=>_0x5b2f62[_0x1bc5d3(0x10b)]);if(_0x3d3618===_0x1bc5d3(0x10a))return{'file':'rg','args':[_0x1bc5d3(0x15d),_0x1bc5d3(0x144),_0x1bc5d3(0x164),_0x1bc5d3(0xfd),_0x1bc5d3(0x168),String(PER_FILE_LIMIT),'--',_0x210037,..._0x5710b7],'validCodes':[0x659+0x182*0x10+0x10d*-0x1d,-0x1*-0x173+0x1*-0x131+-0x1*0x41]};if(_0x3d3618===_0x1bc5d3(0x156))return{'file':_0x1bc5d3(0x13c),'args':['-I','-i','-n','-H','-F','-Z','-m',String(PER_FILE_LIMIT),'-e',_0x210037,'--',..._0x5710b7],'validCodes':[-0x1*0x71f+-0x17*-0x157+-0x17b2,-0x1*0x1ce2+-0x2320+0x4003]};const _0x1a5960=[_0x1bc5d3(0x165),_0x1bc5d3(0xfb),_0x1bc5d3(0x133),_0x1bc5d3(0x151),_0x1bc5d3(0x103),'}}'][_0x1bc5d3(0x137)]('');return{'file':_0x1bc5d3(0xfe),'args':[_0x1bc5d3(0x122),_0x1bc5d3(0x14d),_0x1bc5d3(0x160),_0x1a5960,_0x210037,..._0x5710b7],'validCodes':[0x1449*-0x1+-0x3d3*0x7+0x2f0e]};}async function runCommand(_0x1971a3,_0xc52946,_0xcbd1e,_0x540b28,_0x9b9376=![]){return new Promise((_0xe7a85,_0x31fbfa)=>{const _0x505990=_0x4a44,_0x3abaa4=spawn(_0x1971a3,_0xc52946,{'cwd':_0xcbd1e,'windowsHide':!![],'stdio':[_0x505990(0x106),_0x505990(0x13f),_0x505990(0x106)]}),_0x2419e4=[];let _0x293f90=Buffer[_0x505990(0x138)](-0x6dd+0x23*0x49+0x31e*-0x1),_0x25112a=0x1f8b+-0x228e+0x303,_0x4b5ded=0x25d3+0x23b2+-0x4985,_0x167e61=![];const _0x46cee4=setTimeout(()=>_0x3abaa4[_0x505990(0x114)](),Math[_0x505990(0x166)](-0x1235+-0x7cf+0x1a05,_0x540b28-Date[_0x505990(0x11e)]()));_0x3abaa4[_0x505990(0x120)](_0x505990(0x146),_0xfa6b3c=>{clearTimeout(_0x46cee4),_0x31fbfa(_0xfa6b3c);}),_0x3abaa4[_0x505990(0x161)]['on'](_0x505990(0x140),_0x1e628d=>{const _0x3dd0cf=_0x505990;_0x25112a+=_0x1e628d[_0x3dd0cf(0x101)];if(_0x25112a>OUTPUT_BYTE_LIMIT){_0x3abaa4[_0x3dd0cf(0x114)]();return;}if(!_0x9b9376){_0x2419e4[_0x3dd0cf(0x14e)](_0x1e628d);return;}_0x293f90=Buffer[_0x3dd0cf(0x136)]([_0x293f90,_0x1e628d]);let _0x39a1a3=_0x293f90[_0x3dd0cf(0x142)](0xd9+-0x1*0x412+0x1*0x343);while(_0x39a1a3>=0x2254+-0x16b7+-0x1*0xb9d){const _0x4bc58b=_0x293f90[_0x3dd0cf(0x158)](0x1*0x1f7b+-0x44b+-0x1b30,_0x39a1a3+(-0x5*-0x203+0x1*-0x1eae+0x14a0));_0x2419e4[_0x3dd0cf(0x14e)](_0x4bc58b);if(_0x4bc58b[_0x3dd0cf(0x123)](Buffer[_0x3dd0cf(0x12d)](_0x3dd0cf(0x15a))))_0x4b5ded+=-0x21c2+0xa73+0x1750;_0x293f90=_0x293f90[_0x3dd0cf(0x158)](_0x39a1a3+(0x1*0x1822+-0x1*-0x5b+-0x187c));if(_0x4b5ded>RESULT_LIMIT){_0x167e61=!![],_0x3abaa4[_0x3dd0cf(0x114)]();return;}_0x39a1a3=_0x293f90[_0x3dd0cf(0x142)](-0x2c4+-0x1fc8+0x26*0xe9);}}),_0x3abaa4[_0x505990(0x120)](_0x505990(0x110),(_0x3a8be6,_0x559ac2)=>{const _0x4df725=_0x505990;clearTimeout(_0x46cee4);if(_0x167e61)_0xe7a85({'code':0x0,'stdout':Buffer[_0x4df725(0x136)](_0x2419e4)});else{if(_0x559ac2!==null||_0x25112a>OUTPUT_BYTE_LIMIT)_0x31fbfa(new Error(_0x4df725(0x107)));else{if(_0x9b9376&&_0x293f90[_0x4df725(0x101)]>0x9*0x25+-0x2*-0xa0c+-0x1565*0x1)_0x2419e4[_0x4df725(0x14e)](_0x293f90);_0xe7a85({'code':_0x3a8be6??-(0xa74+0xea*0x1d+-0x24f5),'stdout':Buffer[_0x4df725(0x136)](_0x2419e4)});}}});});}function parseOutput(_0x4629ac,_0x42c57e,_0x459ed9){const _0x2664d7=_0x3bfb5e;if(_0x4629ac===_0x2664d7(0x10a))return parseRipgrep(_0x42c57e,_0x459ed9);if(_0x4629ac===_0x2664d7(0x156))return parseGrep(_0x42c57e,_0x459ed9);return parsePowerShell(_0x42c57e,_0x459ed9);}function parseRipgrep(_0x5979f7,_0x4ada9a){const _0x9847c=_0x3bfb5e;return _0x5979f7[_0x9847c(0x128)](_0x9847c(0x125))[_0x9847c(0x119)]('\x0a')[_0x9847c(0x132)](_0x105d50=>{const _0x6ab14c=_0x9847c;if(_0x105d50==='')return[];const _0x23c132=JSON[_0x6ab14c(0x13a)](_0x105d50);if(_0x23c132[_0x6ab14c(0x148)]!==_0x6ab14c(0x149))return[];const _0x32085f=_0x23c132[_0x6ab14c(0x140)],_0x53b18a=String(_0x32085f?.[_0x6ab14c(0x109)]?.[_0x6ab14c(0x157)])[_0x6ab14c(0x121)](/[\r\n]+$/u,''),_0x470695=lowerIndex(_0x53b18a,_0x4ada9a);if(typeof _0x32085f?.[_0x6ab14c(0x10b)]?.[_0x6ab14c(0x157)]!==_0x6ab14c(0x147)||!Number[_0x6ab14c(0x154)](_0x32085f[_0x6ab14c(0x100)])||_0x470695<-0x180d+0x455+0x13b8)throw new Error(_0x6ab14c(0x11a));return[{'path':_0x32085f[_0x6ab14c(0x10b)][_0x6ab14c(0x157)],'line':_0x32085f[_0x6ab14c(0x100)],'column':_0x470695+(-0x93d*-0x3+-0x2473+0x8bd),'preview':_0x53b18a[_0x6ab14c(0x12e)](0x17e3*0x1+-0xf5+-0x16ee,-0x2bcd*0x1+-0x1d+0x4bea)}];});}function _0x4a44(_0x40d0df,_0x30b6a4){_0x40d0df=_0x40d0df-(-0x25a+-0x149*0x1a+0x24bd);const _0x1e5c40=_0x1066();let _0x5b524e=_0x1e5c40[_0x40d0df];if(_0x4a44['BVYkUT']===undefined){var _0x5368e5=function(_0x18aa64){const _0x5d602a='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x42496c='',_0x5c755e='';for(let _0x1b596e=0x8bd+-0x1b37+0x2*0x93d,_0x32bd95,_0x337f54,_0x4b8079=-0x1de+0x2180+-0x1fa2;_0x337f54=_0x18aa64['charAt'](_0x4b8079++);~_0x337f54&&(_0x32bd95=_0x1b596e%(-0x1*-0x40b+0xb4c+0xf53*-0x1)?_0x32bd95*(0x1004+0x27*-0x1f+0x101*-0xb)+_0x337f54:_0x337f54,_0x1b596e++%(-0xb08+0x354+0x34*0x26))?_0x42496c+=String['fromCharCode'](-0x7df*0x1+-0x1fb4+-0x1*-0x2892&_0x32bd95>>(-(-0x6b*-0x5+-0x139*0xa+0xa25)*_0x1b596e&-0x11bd+-0x1775+-0x2*-0x149c)):-0xf16*0x1+0x1*0x15aa+-0x34a*0x2){_0x337f54=_0x5d602a['indexOf'](_0x337f54);}for(let _0x17c050=0x16*-0x7+0x14b6*-0x1+0x8*0x2aa,_0x24c06b=_0x42496c['length'];_0x17c050<_0x24c06b;_0x17c050++){_0x5c755e+='%'+('00'+_0x42496c['charCodeAt'](_0x17c050)['toString'](-0x1697+-0x21a2+0x3849))['slice'](-(0xb*0x11f+0x49e+-0x1*0x10f1));}return decodeURIComponent(_0x5c755e);};_0x4a44['LsDUQm']=_0x5368e5,_0x4a44['YnJdXS']={},_0x4a44['BVYkUT']=!![];}const _0x496eff=_0x1e5c40[-0x19cc+-0x5*0x133+0xa99*0x3];_0x4a44['edaOLg']!==_0x496eff&&(_0x4a44['YnJdXS']={},_0x4a44['edaOLg']=_0x496eff);const _0x5d6a69=_0x4a44['YnJdXS'][_0x40d0df];return _0x5d6a69===undefined?(_0x5b524e=_0x4a44['LsDUQm'](_0x5b524e),_0x4a44['YnJdXS'][_0x40d0df]=_0x5b524e):_0x5b524e=_0x5d6a69,_0x5b524e;}function parseGrep(_0x4bd434,_0x5174c9){const _0x470a7b=_0x3bfb5e,_0x1947d7=[];let _0x3e4659=0x277*0x7+0x5*0x24a+-0x1cb3;while(_0x3e4659<_0x4bd434[_0x470a7b(0x101)]){const _0x3b0271=_0x4bd434[_0x470a7b(0x142)](-0x4*-0x21e+-0x103c+0x7c4,_0x3e4659),_0x25dde4=_0x4bd434[_0x470a7b(0x142)](0x49*-0x6f+-0x115c+0x1d*0x1b1,_0x3b0271+(0xdeb+0x22fc+-0x30e6));if(_0x3b0271<0x5*-0x753+-0xf8d+0x342c||_0x25dde4<-0x1977+0x21f0+-0x879)throw new Error(_0x470a7b(0x11a));const _0x23c90b=_0x4bd434[_0x470a7b(0x158)](_0x3e4659,_0x3b0271)[_0x470a7b(0x128)](_0x470a7b(0x125)),_0x43a0e8=_0x4bd434[_0x470a7b(0x158)](_0x3b0271+(-0x2ca+-0xb29*0x1+0xdf4),_0x25dde4)[_0x470a7b(0x128)](_0x470a7b(0x125)),_0x1ca582=_0x43a0e8[_0x470a7b(0x142)](':'),_0x14dbb2=_0x43a0e8[_0x470a7b(0x12e)](_0x1ca582+(-0x2f6+0x182d+-0x1536))[_0x470a7b(0x121)](/\r$/u,''),_0x2a5398=lowerIndex(_0x14dbb2,_0x5174c9);if(_0x1ca582<-0x1665*0x1+0xb4b+0xb1b||_0x2a5398<-0x1449+-0x461*-0x1+0xfe8)throw new Error(_0x470a7b(0x11a));_0x1947d7[_0x470a7b(0x14e)]({'path':_0x23c90b,'line':Number(_0x43a0e8[_0x470a7b(0x12e)](0xe77+-0x203c+0x11c5,_0x1ca582)),'column':_0x2a5398+(0xd53+-0x57*0x53+0xee3),'preview':_0x14dbb2[_0x470a7b(0x12e)](-0x1243+-0x95c+0x1b9f,0x373f+-0x1*0x3cdd+0x259e)}),_0x3e4659=_0x25dde4+(0x10bb+-0xef*0x13+-0x25*-0x7);}return _0x1947d7;}function parsePowerShell(_0x3c4b5a,_0x2574bf){const _0x2889a2=_0x3bfb5e;return _0x3c4b5a[_0x2889a2(0x128)](_0x2889a2(0x125))[_0x2889a2(0x119)](/\r?\n/u)[_0x2889a2(0x132)](_0x211902=>{const _0x122e88=_0x2889a2;if(_0x211902==='')return[];const _0x4fa3db=JSON[_0x122e88(0x13a)](_0x211902);if(typeof _0x4fa3db[_0x122e88(0x10b)]!==_0x122e88(0x147)||!Number[_0x122e88(0x154)](_0x4fa3db[_0x122e88(0x14c)])||typeof _0x4fa3db[_0x122e88(0x10c)]!==_0x122e88(0x147))throw new Error(_0x122e88(0x11a));const _0x3860c4=lowerIndex(_0x4fa3db[_0x122e88(0x10c)],_0x2574bf);if(_0x3860c4<-0x8e6+0x1*-0xe9+0x9cf)throw new Error(_0x122e88(0x11a));return[{'path':_0x4fa3db[_0x122e88(0x10b)],'line':_0x4fa3db[_0x122e88(0x14c)],'column':_0x3860c4+(-0xeec+-0x3a1*0x9+0x2f96),'preview':_0x4fa3db[_0x122e88(0x10c)][_0x122e88(0x12e)](0x2532+-0x21d*-0x2+0x1*-0x296c,-0x1f94+-0xf6+0x408a)}];});}async function nodeSearch(_0x54e2e1,_0x3cea27,_0x492a92){const _0x563c22=_0x3bfb5e,_0x35d627=[];let _0x2007fa=0x2345+-0xbfa+0x59*-0x43;for(const _0x4607de of _0x54e2e1){if(Date[_0x563c22(0x11e)]()>=_0x492a92||_0x35d627[_0x563c22(0x101)]>RESULT_LIMIT)break;const _0x67b59f=[],_0x1ce239=createReadStream(_0x4607de[_0x563c22(0x13d)]),_0x192fc0=new TextDecoder(_0x563c22(0x108),{'fatal':!![]});let _0x27565b='',_0x3c6230=-0xe18*0x1+0x14f8+0x50*-0x16,_0x4804d9=0x2b*-0xd+-0x61c+-0x1*-0x84b;const _0x59508c=_0xdf2dcf=>{const _0x4f2782=_0x563c22;_0x3c6230+=-0xcba+-0x1*-0x10f1+-0x436;const _0x20c278=_0xdf2dcf[_0x4f2782(0x115)]('\x0d')?_0xdf2dcf[_0x4f2782(0x12e)](-0x12b7+0x6a*0x46+-0xef*0xb,-(-0x2*0xe35+0x2464+0x9d*-0xd)):_0xdf2dcf,_0x28a7ba=lowerIndex(_0x20c278,_0x3cea27);return _0x28a7ba>=0x1866+0x36c+0x1*-0x1bd2&&(_0x67b59f[_0x4f2782(0x14e)]({'path':_0x4607de[_0x4f2782(0x10b)],'line':_0x3c6230,'column':_0x28a7ba+(-0x359+-0xae*0x1+-0x18*-0x2b),'preview':_0x20c278[_0x4f2782(0x12e)](0x3*-0x752+0x1556+0xa0,0x1*0x32c9+0xc00+-0x1ec9)}),_0x4804d9+=0x1c1c+-0xfe0+-0xc3b),_0x4804d9>=PER_FILE_LIMIT||_0x35d627[_0x4f2782(0x101)]+_0x67b59f[_0x4f2782(0x101)]>RESULT_LIMIT||Date[_0x4f2782(0x11e)]()>=_0x492a92;};try{let _0x9b8c2=![];for await(const _0x406581 of _0x1ce239){_0x27565b+=_0x192fc0[_0x563c22(0x11f)](_0x406581,{'stream':!![]});let _0x314253=_0x27565b[_0x563c22(0x142)]('\x0a');while(_0x314253>=-0x11*0x27+0x254c+0x6f1*-0x5){if(_0x59508c(_0x27565b[_0x563c22(0x12e)](-0x1970+0x2009+-0x699,_0x314253))){_0x9b8c2=!![];break;}_0x27565b=_0x27565b[_0x563c22(0x12e)](_0x314253+(0x18d*0x4+-0x1aa6+0x15d*0xf)),_0x314253=_0x27565b[_0x563c22(0x142)]('\x0a');}if(_0x9b8c2)break;}if(!_0x9b8c2){_0x27565b+=_0x192fc0[_0x563c22(0x11f)]();if(_0x27565b!=='')_0x59508c(_0x27565b);}_0x35d627[_0x563c22(0x14e)](..._0x67b59f);}catch{_0x2007fa+=0x231b+0x1db7+0x1*-0x40d1;}}return{'matches':_0x35d627,'skippedFiles':_0x2007fa};}function lowerIndex(_0x1f002d,_0x5bc7fd){const _0x4ae9ef=_0x3bfb5e;return _0x1f002d[_0x4ae9ef(0x143)]()[_0x4ae9ef(0x142)](_0x5bc7fd[_0x4ae9ef(0x143)]());}function limitPerFile(_0x420976){const _0x24f42e=_0x3bfb5e,_0x37ba93=new Map();return _0x420976[_0x24f42e(0x162)](_0x4bb50e=>{const _0x98a5aa=_0x24f42e,_0x4d9260=_0x37ba93[_0x98a5aa(0x10e)](_0x4bb50e[_0x98a5aa(0x10b)])??-0x1*0x1200+-0x719+-0x1*-0x1919;if(_0x4d9260>=PER_FILE_LIMIT)return![];return _0x37ba93[_0x98a5aa(0x12f)](_0x4bb50e[_0x98a5aa(0x10b)],_0x4d9260+(-0x3bb+-0x13ad+0x1769)),!![];});}
@@ -1,41 +1,2 @@
1
- export class WorkspaceDomainState {
2
- uploads = new Map();
3
- composerAttachments = new Map();
4
- changesReads = new Map();
5
- changesCache = new Map();
6
- changesVersions = new Map();
7
- fileIndexes = new Map();
8
- watches = new Map();
9
- watchRevisions = new Map();
10
- watchSnapshotSequence = 0;
11
- sessionWatchTimers = new Map();
12
- sessionWatchSignatures = new Map();
13
- sessionWatchReads = new Map();
14
- sessionCache = new Map();
15
- sessionCacheReads = new Map();
16
- changesLimiter = new AsyncLimiter(3);
17
- }
18
- class AsyncLimiter {
19
- limit;
20
- active = 0;
21
- waiters = [];
22
- constructor(limit) {
23
- this.limit = limit;
24
- }
25
- async run(task) {
26
- if (this.active < this.limit)
27
- this.active += 1;
28
- else
29
- await new Promise((resolve) => this.waiters.push(resolve));
30
- try {
31
- return await task();
32
- }
33
- finally {
34
- const next = this.waiters.shift();
35
- if (next === undefined)
36
- this.active -= 1;
37
- else
38
- next();
39
- }
40
- }
41
- }
1
+ /* mar-release-protected */
2
+ const _0x2b597d=_0x5089;function _0x2b5a(){const _0x4b099a=['zMLSzuLUzgv4zxm','otyYAwryEeLd','ota1mZm1mLnwyMT3Cq','D2f0y2HszxzPC2LVBNm','nJbyqw5TsfK','ChvZAa','C2vZC2LVBKnHy2HLuMvHzhm','C2vZC2LVBLDHDgnOu2LNBMf0DxjLCW','C2vZC2LVBLDHDgnOuMvHzhm','y2HHBMDLC1jLywrZ','mtG0mNb5Cgvysq','y2HHBMDLC0XPBwL0zxi','D2fPDgvYCW','y2HHBMDLC0nHy2HL','y29TCg9ZzxjbDhrHy2HTzw50CW','ywn0AxzL','mti1mJm2m0PuAKL1uG','C2HPzNq','nJGXmZCYsuTfrurv','BgLTAxq','mZu1otaYseLnq3rK','CNvU','mZjvqvHUzMO','D2f0y2HLCW','mtiWmtKWmgnrtwzbvq','D2f0y2HtBMfWC2HVDfnLCxvLBMnL','C2vZC2LVBLDHDgnOvgLTzxjZ','DxbSB2fKCW','nJa3nti3EvHstvrv','y2HHBMDLC1zLCNnPB25Z','C2vZC2LVBKnHy2HL'];_0x2b5a=function(){return _0x4b099a;};return _0x2b5a();}(function(_0x2019cd,_0x56b742){const _0xcc98cc=_0x5089,_0x51edf4=_0x2019cd();while(!![]){try{const _0xb7b09f=-parseInt(_0xcc98cc(0x10f))/(0xf38+-0x1104+-0x1*-0x1cd)*(-parseInt(_0xcc98cc(0x106))/(0x12f9*-0x2+-0x1*0x1459+0x3a4d))+parseInt(_0xcc98cc(0xfa))/(-0x1cf9+0x1a17+0x2e5*0x1)*(parseInt(_0xcc98cc(0xfc))/(-0x819+-0x566*0x5+0x231b))+parseInt(_0xcc98cc(0xfe))/(-0x1b34+-0x3*-0x70d+0x612)+-parseInt(_0xcc98cc(0xf8))/(-0x4f*-0x76+0xe84+-0x32e8)+parseInt(_0xcc98cc(0xf6))/(0x31d+-0x164+-0x1b2)+-parseInt(_0xcc98cc(0x107))/(0x1*0x20c3+0x2467+-0x4522)+parseInt(_0xcc98cc(0x102))/(0x266f*0x1+0x1e1f+-0x4485)*(-parseInt(_0xcc98cc(0x109))/(-0x25eb+-0x1*0x74a+-0xf15*-0x3));if(_0xb7b09f===_0x56b742)break;else _0x51edf4['push'](_0x51edf4['shift']());}catch(_0x3fc962){_0x51edf4['push'](_0x51edf4['shift']());}}}(_0x2b5a,-0x6*0x23797+0x1b861*-0x2+0x19f61e));function _0x5089(_0x4d8c9d,_0x46ad95){_0x4d8c9d=_0x4d8c9d-(-0x20d0+-0x3e3*-0x2+0x19ff);const _0xad395b=_0x2b5a();let _0x300018=_0xad395b[_0x4d8c9d];if(_0x5089['HiRntR']===undefined){var _0x54e792=function(_0x378d6d){const _0x383ad0='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x35396c='',_0x54a089='';for(let _0x418ca3=0x27*-0xc6+0x1327+0xb03,_0x534a39,_0x1200f5,_0x3eb174=-0x1ca3+-0x4a*-0x35+-0x1*-0xd51;_0x1200f5=_0x378d6d['charAt'](_0x3eb174++);~_0x1200f5&&(_0x534a39=_0x418ca3%(-0x1533+0x17af+0x4f*-0x8)?_0x534a39*(0x2c9*-0x3+-0x37*-0xa3+-0x1a6a)+_0x1200f5:_0x1200f5,_0x418ca3++%(0x1*-0x20b+0x1ed6+-0x1cc7))?_0x35396c+=String['fromCharCode'](0x29e+-0x654+0x4b5&_0x534a39>>(-(0x2144+0x5b*0xa+0x8*-0x49a)*_0x418ca3&-0x3ac+-0x5c9*-0x1+0x217*-0x1)):-0x7fd+-0x25fd+0x217*0x16){_0x1200f5=_0x383ad0['indexOf'](_0x1200f5);}for(let _0x256266=-0xfa0+-0x1ba+0x2*0x8ad,_0x4fcb55=_0x35396c['length'];_0x256266<_0x4fcb55;_0x256266++){_0x54a089+='%'+('00'+_0x35396c['charCodeAt'](_0x256266)['toString'](-0x1*0x1a6e+0x1*-0x214c+0x3*0x13ee))['slice'](-(0x12fd+0x34c+0x1*-0x1647));}return decodeURIComponent(_0x54a089);};_0x5089['ONxOfN']=_0x54e792,_0x5089['bPNXBX']={},_0x5089['HiRntR']=!![];}const _0x3f73ae=_0xad395b[0x23ca+-0x1356+-0x1074];_0x5089['WOVYTJ']!==_0x3f73ae&&(_0x5089['bPNXBX']={},_0x5089['WOVYTJ']=_0x3f73ae);const _0x435a4c=_0x5089['bPNXBX'][_0x4d8c9d];return _0x435a4c===undefined?(_0x300018=_0x5089['ONxOfN'](_0x300018),_0x5089['bPNXBX'][_0x4d8c9d]=_0x300018):_0x300018=_0x435a4c,_0x300018;}export class WorkspaceDomainState{[_0x2b597d(0x101)]=new Map();[_0x2b597d(0x113)]=new Map();[_0x2b597d(0x10e)]=new Map();[_0x2b597d(0x112)]=new Map();[_0x2b597d(0x103)]=new Map();[_0x2b597d(0x105)]=new Map();[_0x2b597d(0xfd)]=new Map();[_0x2b597d(0x108)]=new Map();[_0x2b597d(0xff)]=-0x2069+-0x4*0x96d+-0xc1*-0x5d;[_0x2b597d(0x100)]=new Map();[_0x2b597d(0x10c)]=new Map();[_0x2b597d(0x10d)]=new Map();[_0x2b597d(0x104)]=new Map();[_0x2b597d(0x10b)]=new Map();[_0x2b597d(0x110)]=new AsyncLimiter(0xeb6+-0x1*0x56f+-0x944);}class AsyncLimiter{[_0x2b597d(0xf9)];[_0x2b597d(0xf5)]=0x927+0x2dd*0x8+0x1*-0x200f;[_0x2b597d(0x111)]=[];constructor(_0x18cb87){const _0x67dd16=_0x2b597d;this[_0x67dd16(0xf9)]=_0x18cb87;}async[_0x2b597d(0xfb)](_0x584a65){const _0x383f50=_0x2b597d;if(this[_0x383f50(0xf5)]<this[_0x383f50(0xf9)])this[_0x383f50(0xf5)]+=-0x1212+0x43e*-0x6+-0x3f5*-0xb;else await new Promise(_0x3406fc=>this[_0x383f50(0x111)][_0x383f50(0x10a)](_0x3406fc));try{return await _0x584a65();}finally{const _0x30484b=this[_0x383f50(0x111)][_0x383f50(0xf7)]();if(_0x30484b===undefined)this[_0x383f50(0xf5)]-=-0x254d+0x29e+0x22b0;else _0x30484b();}}}