apt-mcp-agent-setup 3.0.9 → 3.2.5

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 (62) hide show
  1. package/bin/cli.js +1 -1
  2. package/bundle/NOTICES.md +0 -0
  3. package/bundle/core.enc +0 -0
  4. package/bundle/mcp-rules.enc +0 -0
  5. package/bundle/skills-aso.enc +0 -0
  6. package/bundle/skills-ba.enc +0 -0
  7. package/bundle/skills-base.enc +0 -0
  8. package/bundle/skills-be.enc +0 -0
  9. package/bundle/skills-design.enc +0 -0
  10. package/bundle/skills-fe.enc +0 -0
  11. package/bundle/skills-mobile.enc +0 -0
  12. package/bundle/skills-pm.enc +0 -0
  13. package/integrity-manifest.json +62 -58
  14. package/package.json +1 -1
  15. package/release-check.js +250 -33
  16. package/src/backends/browser-tools.js +1 -1
  17. package/src/backends/index-command.js +1 -1
  18. package/src/backends/index-store.js +1 -1
  19. package/src/backends/profiles.js +1 -1
  20. package/src/core/aso-import.js +1 -1
  21. package/src/core/catalog.js +1 -1
  22. package/src/core/codex-host-metadata.js +1 -0
  23. package/src/core/context-metrics.js +1 -1
  24. package/src/core/doctor.js +1 -1
  25. package/src/core/execution.js +1 -1
  26. package/src/core/hook-bridge.js +1 -1
  27. package/src/core/host-adapters.js +1 -1
  28. package/src/core/memory-store.js +1 -1
  29. package/src/core/model-inventory.js +1 -0
  30. package/src/core/model-routing.js +1 -1
  31. package/src/core/npm-cli.js +1 -0
  32. package/src/core/owned-lock.js +1 -1
  33. package/src/core/presentations.js +1 -1
  34. package/src/core/quality.js +1 -0
  35. package/src/core/session.js +1 -1
  36. package/src/core/skill-names.js +1 -1
  37. package/src/core/workspace-path.js +1 -1
  38. package/src/installer/bounded-command.js +1 -1
  39. package/src/installer/global-setup.js +1 -1
  40. package/src/installer/host-hooks.js +1 -1
  41. package/src/installer/managed-config.js +1 -1
  42. package/src/installer/platform-config.js +1 -1
  43. package/src/installer/prerequisites.js +1 -1
  44. package/src/installer/presentations.js +1 -1
  45. package/src/installer/project-setup.js +1 -1
  46. package/src/installer/runtime-lock.js +1 -1
  47. package/src/installer/runtime-store.js +1 -1
  48. package/src/installer/setup-wizard.js +1 -1
  49. package/src/license/crypto.js +1 -1
  50. package/src/license/fingerprint.js +1 -1
  51. package/src/license/terms.js +1 -1
  52. package/src/license/verify.js +1 -1
  53. package/src/presets/index.js +1 -1
  54. package/src/proxy/backends.js +1 -1
  55. package/src/proxy/browser-sessions.js +1 -1
  56. package/src/proxy/core-tools.js +1 -1
  57. package/src/proxy/pipeline.js +1 -1
  58. package/src/proxy/router.config.js +1 -1
  59. package/src/proxy/router.js +1 -1
  60. package/src/proxy/server.js +1 -1
  61. package/src/templates/apt-runtime.md +2 -2
  62. package/src/templates/mcp-tools.md +10 -20
package/release-check.js CHANGED
@@ -2,26 +2,42 @@
2
2
  const path = require('path');
3
3
  const os = require('os');
4
4
  const crypto = require('crypto');
5
- const { spawn, execFileSync } = require('child_process');
5
+ const { spawn, spawnSync, execFileSync } = require('child_process');
6
6
  const assert = require('assert/strict');
7
7
 
8
8
  // Standalone: this file is also shipped as the signed dist prepublish gate.
9
- async function handshake(installed, workspace, fixture, realBackends = false) {
10
- const child = spawn(process.execPath, ['--require', fixture, installed.launcherPath, '--path', workspace], {
9
+ async function handshake(installed, workspace, fixture, realBackends = false, launcherArgs = [installed.launcherPath, '--path', workspace]) {
10
+ const child = spawn(process.execPath, ['--require', fixture, ...launcherArgs], {
11
11
  windowsHide: true,
12
12
  env: { ...process.env, APT_TEST_RELEASE: installed.path, APT_GATE_REAL: realBackends ? '1' : '0', MCP_SKIP_LICENSE_CHECK: '1', MCP_SKIP_INTEGRITY_CHECK: '0' },
13
13
  stdio: ['pipe', 'pipe', 'pipe']
14
14
  });
15
15
  let buffer = '', stderr = '', initialized = false, listed = false;
16
+ const checkBootstrappedWorkspace = message => {
17
+ const content = message.result?.content?.find(item => item.type === 'text');
18
+ assert.ok(content, 'Missing bootstrap result');
19
+ const actual = JSON.parse(content.text).workspace;
20
+ const identity = value => process.platform === 'win32' ? path.resolve(value).toLowerCase() : path.resolve(value);
21
+ assert.equal(identity(actual), identity(fs.realpathSync(workspace)), 'Launcher ignored its workspace binding');
22
+ };
16
23
  const checks = realBackends ? [
17
- ['session_bootstrap', {sessionId:'package-gate',workspacePath:workspace}, /workspace/],
24
+ ['session_bootstrap', {sessionId:'package-gate'}, checkBootstrappedWorkspace],
25
+ ['model_list', {sessionId:'package-gate'}, /sources/],
18
26
  ['code_search', {query:'callee'}, /callee/],
19
27
  ['find_callers', {symbol:'callee'}, /caller/],
20
28
  ['find_callees', {symbol:'caller'}, /callee/],
21
29
  ['explore_code', {query:'callee'}, /callee/],
22
30
  ['list_code_files', {pattern:'sample.py'}, /sample\.py/],
23
31
  ['impact_analysis', {changed_files:['sample.py'],repo_root:workspace}, /sample\.py/]
24
- ] : [];
32
+ ] : [['session_bootstrap', {sessionId:'package-gate'}, checkBootstrappedWorkspace]];
33
+ checks.push(['route_request', {sessionId:'package-gate',requestId:'package-readonly-route',
34
+ prompt:'Read-only inspection of Node.js backend sample.js. This is not a web or mobile application. Do not edit source.',
35
+ stack:'nodejs',target:'sample.js'}, message => {
36
+ const result = JSON.parse(message.result.content.find(item => item.type === 'text').text);
37
+ assert.equal(result.pipeline, 'read-only', 'Negated edit instruction was routed as a change');
38
+ assert.equal(result.authorizesEdits, false);
39
+ assert.notEqual(result.workflow, 'implement');
40
+ }]);
25
41
  let completed = 0;
26
42
  const send = message => child.stdin.write(JSON.stringify({ jsonrpc: '2.0', ...message }) + '\n');
27
43
  const next = () => {
@@ -49,14 +65,16 @@ async function handshake(installed, workspace, fixture, realBackends = false) {
49
65
  send({ id: 2, method: 'tools/list', params: {} });
50
66
  } else if (message.id === 2) {
51
67
  assert.ok(initialized);
52
- for (const name of ['session_bootstrap', 'route_request', 'pipeline_status']) {
68
+ for (const name of ['session_bootstrap', 'route_request', 'model_list', 'context_load', 'pipeline_status']) {
53
69
  assert.ok(message.result?.tools?.some(tool => tool.name === name), `Missing ${name}: ${JSON.stringify(message)}`);
54
70
  }
55
71
  listed = true;
56
72
  next();
57
73
  } else if (message.id === 3 + completed && completed < checks.length) {
58
- assert.ok(!message.error && !message.result?.isError, JSON.stringify(message));
59
- assert.match(JSON.stringify(message.result), checks[completed][2]);
74
+ assert.ok(!message.error && !message.result?.isError, `${JSON.stringify(message)}\n${stderr}`);
75
+ const check = checks[completed][2];
76
+ if (typeof check === 'function') check(message);
77
+ else assert.match(JSON.stringify(message.result), check);
60
78
  completed++;
61
79
  next();
62
80
  }
@@ -70,17 +88,114 @@ async function handshake(installed, workspace, fixture, realBackends = false) {
70
88
  });
71
89
  send({ id: 1, method: 'initialize', params: { protocolVersion: '2024-11-05', capabilities: {}, clientInfo: { name: 'apt-package-gate', version: '1' } } });
72
90
  });
73
- }
91
+ }
92
+
93
+ function verifyPackagedQualityGate(installed, temp) {
94
+ const { assessReport } = require(path.join(installed.path, 'src/core/quality.js'));
95
+ const flutterStart = { type: 'testStart', test: { id: 1, name: 'native behavior' } };
96
+ const flutterDone = { type: 'testDone', testID: 1, result: 'success', skipped: false, hidden: false };
97
+ const completed = { type: 'done', success: true };
98
+ const flutterResult = events => assessReport('flutter-machine', events.map(event => JSON.stringify(event)).join('\n'),
99
+ { format: 'flutter-machine', testIds: ['native behavior'] }).status;
100
+ assert.equal(flutterResult([flutterStart, flutterDone, completed]), 'passed');
101
+ assert.equal(flutterResult([flutterStart, { ...flutterDone, skipped: true }, completed]), 'unverified');
102
+ assert.equal(flutterResult([flutterStart, { ...flutterDone, hidden: true }, completed]), 'unverified');
103
+ assert.equal(flutterResult([flutterStart, flutterDone]), 'unverified');
104
+ assert.notEqual(flutterResult([flutterStart, flutterDone, { ...completed, success: false }]), 'passed');
105
+ const { PipelineManager } = require(path.join(installed.path, 'src/proxy/pipeline.js'));
106
+ const workspace = path.join(temp, 'quality workspace');
107
+ fs.mkdirSync(workspace);
108
+ fs.writeFileSync(path.join(workspace, 'code.js'), 'exports.add = (a, b) => a + b;\n');
109
+ fs.writeFileSync(path.join(workspace, 'check.test.js'),
110
+ "const { test } = require('node:test'); const assert = require('node:assert/strict'); test('adds', () => assert.equal(require('./code').add(2, 3), 5));\n");
111
+ fs.writeFileSync(path.join(workspace, 'failing.test.js'),
112
+ "const { test } = require('node:test'); const assert = require('node:assert/strict'); test('adds', () => assert.equal(require('./code').add(2, 3), 6));\n");
113
+ fs.writeFileSync(path.join(workspace, 'package.json'), JSON.stringify({ scripts: {
114
+ test: 'node --test --test-reporter=tap check.test.js'
115
+ } }));
116
+ for (const skill of ['review', 'testing-patterns', 'tdd-loop', 'code-review-checklist']) {
117
+ const folder = path.join(workspace, '.agents', 'skills', skill);
118
+ fs.mkdirSync(folder, { recursive: true });
119
+ fs.writeFileSync(path.join(folder, 'SKILL.md'), skill);
120
+ }
121
+ const manager = new PipelineManager(workspace);
122
+ manager.env = { ...process.env }; delete manager.env.NODE_TEST_CONTEXT;
123
+ const plan = { criteria: [{ id: 'adds', expectedOutcome: 'add(2,3) is 5', source: 'user-request', checkIds: ['add-test'] }],
124
+ checks: [{ id: 'add-test', criterionIds: ['adds'], format: 'node-tap', testIds: ['adds'], required: true }],
125
+ reviews: [{ id: 'technical', required: true }] };
126
+ const start = options => manager.start({ task: options.task, pipeline: 'hotfix', sessionId: 'package-quality',
127
+ acceptanceCriteria: ['add(2,3) is 5'], workspace: { mode: 'current', confirmed: true }, ...options });
128
+ const routed = start({ task: 'web-quality', productImpact: true, productTarget: 'web' });
129
+ assert.equal(routed.success, true, JSON.stringify(routed));
130
+ const routedState = manager.readRun('web-quality', routed.runId);
131
+ assert.deepEqual(routedState.quality.plan.platforms, [{ id: 'web', checkIds: ['platform-web'] }]);
132
+ assert.ok(routedState.quality.plan.reviews.some(item => item.id === 'product'));
133
+ assert.equal(start({ task: 'web-bypass', qualityPlan: plan, productImpact: true, productTarget: 'web' }).code, 'INVALID_QUALITY_PLAN');
134
+ const lowered = start({ task: 'web-lowered', qualityPlan: plan, productImpact: false });
135
+ assert.equal(lowered.code, 'ACCEPTANCE_ALREADY_ACTIVE');
136
+ assert.equal(lowered.task, 'web-quality');
137
+ assert.equal(manager.reset({ task: 'web-quality', runId: routed.runId, confirm: true }).success, true);
138
+ const started = start({ task: 'functional-quality', qualityPlan: plan });
139
+ assert.equal(started.success, true, JSON.stringify(started));
140
+ const base = { task: 'functional-quality', runId: started.runId, sessionId: 'package-quality' };
141
+ let serial = 0;
142
+ const next = () => manager.next({ ...base, requestId: `package-${++serial}` });
143
+ const checkpoint = (attempt, extra = {}) => manager.checkpoint({ ...base, attemptId: attempt.attemptId,
144
+ actorId: attempt.actorId, step: attempt.step, status: 'completed', ...extra });
145
+ assert.equal(checkpoint(next()).success, true);
146
+ const writer = next();
147
+ const unrelated = manager.recordVerification({ ...base, attemptId: writer.attemptId, actorId: writer.actorId,
148
+ command: [process.execPath, '-e', 'process.exit(0)'], checkId: 'add-test' });
149
+ assert.equal(unrelated.evidence.quality.status, 'unverified');
150
+ assert.equal(checkpoint(writer, { evidenceIds: [unrelated.evidence.id] }).code, 'QUALITY_CHECK_REQUIRED');
151
+ const command = [process.execPath, '--test', '--test-reporter=tap', 'check.test.js'];
152
+ const failed = manager.recordVerification({ ...base, attemptId: writer.attemptId, actorId: writer.actorId,
153
+ command: [process.execPath, '--test', '--test-reporter=tap', 'failing.test.js'], checkId: 'add-test', reportFormat: 'node-tap' });
154
+ assert.equal(failed.evidence.quality.status, 'failed');
155
+ const passed = manager.recordVerification({ ...base, attemptId: writer.attemptId, actorId: writer.actorId,
156
+ command: ['npm', 'test'], checkId: 'add-test', reportFormat: 'node-tap' });
157
+ assert.equal(passed.evidence.quality.status, 'passed');
158
+ assert.deepEqual(passed.evidence.command, ['npm', 'test']);
159
+ if (process.platform === 'win32') assert.match(passed.evidence.executedCommand[1], /npm-cli\.js$/);
160
+ assert.equal(checkpoint(writer, { evidenceIds: [passed.evidence.id] }).success, true);
161
+ const reviewer = next();
162
+ const legacy = manager.checkpoint({ ...base, attemptId: reviewer.attemptId, actorId: reviewer.actorId,
163
+ action: 'review', review: { stage: 'quality', verdict: 'pass', reviewedScope: ['code.js'], findings: [] } });
164
+ assert.equal(legacy.code, 'REVIEW_STAGE_NOT_REQUIRED');
165
+ assert.deepEqual(legacy.requiredStages, ['technical']);
166
+ const review = verdict => manager.checkpoint({ ...base, attemptId: reviewer.attemptId, actorId: reviewer.actorId,
167
+ action: 'review', review: { stage: 'technical', verdict, reviewedScope: ['code.js'],
168
+ findings: verdict === 'fail' ? [{ id: 'regression', required: true, severity: 'high', message: 'Review finding remains open' }] : [] } });
169
+ const optional = manager.checkpoint({ ...base, attemptId: reviewer.attemptId, actorId: reviewer.actorId,
170
+ action: 'review', review: { stage: 'technical', verdict: 'pass', reviewedScope: ['code.js'],
171
+ findings: [{ id: 'regression', required: false, severity: 'low', message: 'Optional observation before escalation' }] } });
172
+ assert.equal(optional.success, true);
173
+ const defaultSeverity = manager.checkpoint({ ...base, attemptId: reviewer.attemptId, actorId: reviewer.actorId,
174
+ action: 'review', review: { stage: 'technical', verdict: 'pass', reviewedScope: ['code.js'],
175
+ findings: [{ id: 'regression', required: false, message: 'Implicit normal severity before escalation' }] } });
176
+ assert.equal(defaultSeverity.success, true);
177
+ assert.equal(manager.readRun(base.task, base.runId).quality.findings.regression.severity, 'normal');
178
+ const rejected = review('fail');
179
+ assert.equal(rejected.success, true, JSON.stringify({ reviewer, rejected }));
180
+ const escalated = manager.readRun(base.task, base.runId).quality.findings.regression;
181
+ assert.equal(escalated.required, true, 'A later required finding must promote the existing stable ID');
182
+ assert.equal(escalated.severity, 'high');
183
+ assert.equal(checkpoint(reviewer, { evidenceIds: [rejected.evidence.id] }).code, 'REVIEW_REQUIRED');
184
+ const omitted = review('pass');
185
+ assert.equal(omitted.success, true);
186
+ assert.equal(checkpoint(reviewer, { evidenceIds: [omitted.evidence.id] }).code, 'OPEN_FINDINGS');
187
+ }
74
188
 
75
189
  async function main() {
76
190
  const args = process.argv.slice(2);
77
191
  const value = name => { const i = args.indexOf(name); return i < 0 ? null : args[i + 1]; };
78
- const temp = fs.mkdtempSync(path.join(os.tmpdir(), 'apt-package-gate-'));
79
- const root = path.resolve(__dirname, '..');
80
- const keep = args.includes('--keep');
81
- try {
82
- let dist = value('--dist'), publicKey;
83
- if (!dist) {
192
+ const temp = fs.mkdtempSync(path.join(os.tmpdir(), 'apt-package-gate-'));
193
+ const root = path.resolve(__dirname, '..');
194
+ const keep = args.includes('--keep');
195
+ try {
196
+ let dist = value('--dist'), publicKey;
197
+ const archive = value('--package') ? path.resolve(value('--package')) : null;
198
+ if (!dist && !archive) {
84
199
  const build = path.join(temp, 'build'); fs.mkdirSync(build);
85
200
  for (const item of ['src', 'bin', 'scripts', '.agents', 'docs', 'test', 'package.json', 'package-lock.json', 'README.md', 'LICENSE', '.npmignore']) {
86
201
  fs.cpSync(path.join(root, item), path.join(build, item), { recursive: true });
@@ -97,21 +212,118 @@ async function main() {
97
212
  finally { fs.closeSync(log); }
98
213
  dist = path.join(build, 'dist');
99
214
  execFileSync(process.execPath, ['-r', './test/setup.js', '--test', 'test/installer/runtime-store.test.js', 'test/proxy/transport-reliability.test.js'], { cwd: build, windowsHide: true, stdio: 'inherit' });
100
- } else {
101
- dist = path.resolve(dist);
102
- publicKey = value('--public-key') ? fs.readFileSync(value('--public-key'), 'utf8') : require(path.join(dist, 'src/license/verify.js')).PRODUCTION_PUBLIC_KEY;
103
- }
104
- const npm = process.env.npm_execpath || path.join(path.dirname(process.execPath), 'node_modules/npm/bin/npm-cli.js');
105
- const packed = JSON.parse(execFileSync(process.execPath, [npm, 'pack', '--ignore-scripts', '--json', '--pack-destination', temp], { cwd: dist, windowsHide: true, encoding: 'utf8' }));
106
- execFileSync('tar', ['-xzf', path.join(temp, packed[0].filename), '-C', temp], { windowsHide: true });
107
- const pkg = path.join(temp, 'package');
108
- const installer = require(path.join(pkg, 'src/installer/runtime-store.js'));
109
- const runtimeRoot = path.join(temp, 'runtime tiếng Việt');
110
- const installed = installer.installRuntime(pkg, { root: runtimeRoot, publicKey });
215
+ } else if (dist) {
216
+ dist = path.resolve(dist);
217
+ publicKey = value('--public-key') ? fs.readFileSync(value('--public-key'), 'utf8') : require(path.join(dist, 'src/license/verify.js')).PRODUCTION_PUBLIC_KEY;
218
+ } else {
219
+ assert.ok(fs.existsSync(archive), `Package archive is missing: ${archive}`);
220
+ publicKey = value('--public-key') ? fs.readFileSync(value('--public-key'), 'utf8') : null;
221
+ }
222
+ let packed;
223
+ if (archive) packed = [{ filename: path.basename(archive) }];
224
+ else {
225
+ const npm = require(path.join(dist, 'src/core/npm-cli.js'))();
226
+ packed = JSON.parse(execFileSync(process.execPath, [npm, 'pack', '--ignore-scripts', '--json', '--pack-destination', temp], { cwd: dist, windowsHide: true, encoding: 'utf8' }));
227
+ }
228
+ execFileSync('tar', ['-xzf', archive || path.join(temp, packed[0].filename), '-C', temp], { windowsHide: true });
229
+ const pkg = path.join(temp, 'package');
230
+ if (!publicKey) publicKey = require(path.join(pkg, 'src/license/verify.js')).PRODUCTION_PUBLIC_KEY;
231
+ const installer = require(path.join(pkg, 'src/installer/runtime-store.js'));
232
+ const hostConfig = require(path.join(pkg, 'src/installer/platform-config.js'));
233
+ const runtimeRoot = path.join(temp, 'runtime tiếng Việt');
234
+ const installed = installer.installRuntime(pkg, { root: runtimeRoot, publicKey });
235
+ verifyPackagedQualityGate(installed, temp);
236
+ const globalConfig = path.join(temp, 'antigravity-global.json');
237
+ const workspaceA = path.join(temp, 'workspace A');
238
+ const workspaceB = path.join(temp, 'workspace B');
239
+ fs.mkdirSync(workspaceA); fs.mkdirSync(workspaceB);
240
+ hostConfig.deployProjectConfig('claude', workspaceA, installed.launcherPath);
241
+ const claudeServer = JSON.parse(fs.readFileSync(path.join(workspaceA, '.mcp.json'), 'utf8')).mcpServers['apt-mcp-agent'];
242
+ assert.equal(claudeServer.command, 'node');
243
+ assert.deepEqual(claudeServer.args, [installed.launcherPath.replace(/\\/g, '/'), '--path', workspaceA.replace(/\\/g, '/')]);
244
+ const { buildHookConfig } = require(path.join(pkg, 'src/core/host-adapters.js'));
245
+ const claudeHooks = buildHookConfig('claude-code', path.join(pkg, 'src/core/hook-bridge.js'), workspaceA).config.hooks;
246
+ for (const event of ['SessionStart', 'PreToolUse']) {
247
+ const handler = claudeHooks[event][0].hooks[0];
248
+ assert.equal(handler.command, 'node');
249
+ assert.deepEqual(handler.args.slice(0, 1), ['-e']);
250
+ const input = { session_id: 'claude-package-gate', cwd: workspaceA, permission_mode: 'default',
251
+ ...(event === 'PreToolUse' ? { tool_name: 'Read', tool_input: { file_path: path.join(workspaceA, 'sample.js') } } : {}) };
252
+ const result = spawnSync(handler.command, handler.args, { input: JSON.stringify(input), encoding: 'utf8', timeout: 10000, windowsHide: true });
253
+ assert.equal(result.status, 0, `${event}: ${result.stderr}`);
254
+ assert.ok(JSON.parse(result.stdout));
255
+ }
256
+ const { SessionRuntime } = require(path.join(pkg, 'src/core/session.js'));
257
+ const claudeSession = new SessionRuntime(workspaceA).status({ sessionId: 'claude-package-gate' });
258
+ assert.deepEqual(claudeSession.hookObservations['claude-code'].events.sort(), ['PreToolUse', 'SessionStart']);
259
+ fs.writeFileSync(globalConfig, JSON.stringify({ mcpServers: { custom: { command: 'custom' } } }));
260
+ for (const workspacePath of [workspaceA, workspaceB, workspaceA]) {
261
+ hostConfig.deployProjectConfig('antigravity', workspacePath, installed.launcherPath);
262
+ hostConfig.configureIDE('antigravity', installed.launcherPath, { configPathOverride: globalConfig, projectPath: workspacePath });
263
+ }
264
+ const { workspaceServerAlias } = require(path.join(pkg, 'src/core/workspace-path.js'));
265
+ const aliases = [workspaceA, workspaceB].map(workspaceServerAlias);
266
+ const globalServers = JSON.parse(fs.readFileSync(globalConfig, 'utf8')).mcpServers;
267
+ assert.notEqual(aliases[0], aliases[1]);
268
+ assert.equal(globalServers.custom.command, 'custom');
269
+ const packageHook = require(path.join(pkg, 'src/core/hook-bridge.js'));
270
+ const packageLicense = require(path.join(pkg, 'src/license/verify.js'));
271
+ const savedPublicKey = packageLicense.PRODUCTION_PUBLIC_KEY;
272
+ packageLicense.PRODUCTION_PUBLIC_KEY = publicKey;
273
+ try {
274
+ const signedCli = path.join(installed.path, 'bin/cli.js').replace(/\\/g, '/');
275
+ assert.equal(packageHook.isWriteTool('run_command', { command: `node "${signedCli}" doctor --project .` }, workspaceA), false);
276
+ assert.equal(packageHook.isWriteTool('run_command', { command: `node "${signedCli}" doctor --project . 2>&1` }, workspaceA), false);
277
+ assert.equal(packageHook.isWriteTool('run_command', { command: `node "${signedCli}" doctor --project . 2>&1 > sample.js` }, workspaceA), true);
278
+ assert.equal(packageHook.isWriteTool('run_command', { command: `node "${signedCli}" doctor --project . 2>&1; echo unsafe` }, workspaceA), true);
279
+ assert.equal(packageHook.isWriteTool('run_command', { command: 'npm test 2>&1' }, workspaceA), false);
280
+ assert.equal(packageHook.isWriteTool('run_command', { command: 'git diff 2>&1' }, workspaceA), false);
281
+ assert.equal(packageHook.isWriteTool('run_command', { command: 'npm test 2>&1 > sample.js' }, workspaceA), true);
282
+ assert.equal(packageHook.isWriteTool('run_command', { command: `node "${signedCli}" update --project .` }, workspaceA), true);
283
+ assert.equal(packageHook.isWriteTool('run_command', { command: `node "${signedCli}" doctor --project .; echo unsafe` }, workspaceA), true);
284
+ } finally { packageLicense.PRODUCTION_PUBLIC_KEY = savedPublicKey; }
285
+ for (const [index, workspacePath] of [workspaceA, workspaceB].entries()) {
286
+ assert.deepEqual(globalServers[aliases[index]].args, [installed.launcherPath.replace(/\\/g, '/'), '--path', workspacePath.replace(/\\/g, '/')]);
287
+ const localServers = JSON.parse(fs.readFileSync(path.join(workspacePath, '.agents/mcp_config.json'), 'utf8')).mcpServers;
288
+ assert.ok(localServers[aliases[index]]);
289
+ assert.equal(localServers['apt-mcp-agent'], undefined);
290
+ }
291
+ const metadataWorkspace = path.join(temp, 'codex metadata workspace');
292
+ fs.mkdirSync(metadataWorkspace);
293
+ const metadataScript = path.join(temp, 'codex-metadata-fixture.js');
294
+ const metadataSession = '01a0e102-b189-7b70-bde8-f93a55ac6594';
295
+ const metadataAttempt = 'd5ac530c-8201-423e-b7c9-f2203132ee71';
296
+ const metadataName = `apt_${metadataAttempt.replace(/-/g, '')}`;
297
+ const metadataHome = path.join(temp, 'codex-home');
298
+ const metadataSessions = path.join(metadataHome, 'sessions', '2026', '09', '27');
299
+ fs.mkdirSync(metadataSessions, { recursive: true });
300
+ const metadataChildId = '01a0e103-b7d1-7650-a63b-fe2290282b4e';
301
+ const metadataRollout = path.join(metadataSessions, `rollout-2026-09-27T10-58-32-${metadataChildId}.jsonl`);
302
+ const metadataNow = Math.floor(Date.now() / 1000);
303
+ fs.writeFileSync(metadataRollout, JSON.stringify({ type: 'turn_context', timestamp: new Date().toISOString(),
304
+ payload: { model: 'gpt-6-luna', effort: 'low' } }) + '\n');
305
+ const metadataThread = { id: metadataChildId, model: 'stale-thread-model', reasoningEffort: 'high', path: metadataRollout,
306
+ parentThreadId: metadataSession, cwd: metadataWorkspace, createdAt: metadataNow,
307
+ source: { subAgent: { thread_spawn: { parent_thread_id: metadataSession,
308
+ agent_path: `/root/${metadataName}` } } } };
309
+ fs.writeFileSync(metadataScript, `const readline = require('readline');
310
+ readline.createInterface({ input: process.stdin }).on('line', line => {
311
+ const message = JSON.parse(line);
312
+ if (message.method === 'initialize') process.stdout.write(JSON.stringify({ id: message.id, result: {} }) + '\\n');
313
+ if (message.method === 'thread/list') process.stdout.write(JSON.stringify({ id: message.id,
314
+ result: { data: [${JSON.stringify(metadataThread)}], nextCursor: null } }) + '\\n');
315
+ if (message.method === 'thread/turns/list') process.stdout.write(JSON.stringify({ id: message.id,
316
+ result: { data: [{ status: 'completed', startedAt: ${metadataNow}, completedAt: ${metadataNow + 2} }], nextCursor: null } }) + '\\n');
317
+ });`);
318
+ const metadata = require(path.join(installed.path, 'src/core/codex-host-metadata.js'));
319
+ assert.deepEqual(await metadata.verifyWorker({ workspace: metadataWorkspace, sessionId: metadataSession,
320
+ attemptId: metadataAttempt, nativeTaskName: metadataName, reservedAt: new Date().toISOString() },
321
+ { command: process.execPath, args: [metadataScript], timeoutMs: 3000, codexHome: metadataHome }),
322
+ { hostWorkerId: metadataChildId, model: 'gpt-6-luna', reasoningEffort: 'low', source: 'codex-app-server+rollout' });
111
323
  fs.writeFileSync(path.join(runtimeRoot, 'updates.json'), JSON.stringify({ checkedAt: Date.now() }));
112
- const workspace = path.join(temp, 'workspace thử nghiệm'); fs.mkdirSync(workspace);
324
+ const workspace = path.join(temp, 'workspace thử nghiệm'); fs.mkdirSync(path.join(workspace, '.agents'), { recursive: true });
113
325
  const fixture = path.join(temp, 'backend-fixture.cjs');
114
- fs.writeFileSync(fixture, `const path = require('path'), Module = require('module');
326
+ fs.writeFileSync(fixture, `const path = require('path'), Module = require('module');
115
327
  const root = process.env.APT_TEST_RELEASE, load = Module._load;
116
328
  Module._load = function(id, parent, isMain) {
117
329
  const result = load.apply(this, arguments);
@@ -119,12 +331,16 @@ async function main() {
119
331
  if (file === path.join(root, 'src/proxy/backends.js')) {
120
332
  const original = result.spawnBackends;
121
333
  result.spawnBackends = workspace => process.env.APT_GATE_REAL === '1'
122
- ? Object.fromEntries(Object.entries(original(workspace)).filter(([name]) => ['codegraph','code-review-graph'].includes(name))) : {};
334
+ ? Object.fromEntries(Object.entries(original(workspace)).filter(([name]) => ['codegraph','code-review-graph','server-memory'].includes(name))) : {};
123
335
  }
124
336
  if (file === path.join(root, 'src/proxy/server.js')) result.ProxyServer.prototype.checkLatestVersion = async () => {};
125
337
  return result;
126
- };`);
127
- await handshake(installed, workspace, fixture);
338
+ };`);
339
+ for (const [index, workspacePath] of [workspaceA, workspaceB].entries()) {
340
+ await handshake(installed, workspacePath, fixture, false, globalServers[aliases[index]].args);
341
+ }
342
+ await handshake(installed, workspaceA, fixture, false, claudeServer.args);
343
+ await handshake(installed, workspace, fixture);
128
344
  const good = fs.readFileSync(installed.launcherPath);
129
345
  for (const old of ['_0x5e52();', "require('./server.js');"]) {
130
346
  fs.writeFileSync(installed.launcherPath, old);
@@ -155,7 +371,8 @@ async function main() {
155
371
  assert.throws(() => process.kill(pid, 0), {code:'ESRCH'});
156
372
  fs.utimesSync(nativeLock, new Date(0), new Date(0));
157
373
  }
158
- if (cycle === 1) fs.writeFileSync(path.join(realWorkspace, '.agents/.data/graph/graph.db'), 'package recovery fixture');
374
+ const reviewCache = path.join(realWorkspace, '.agents/.data/graph-2.3.9');
375
+ if (cycle === 1) fs.writeFileSync(path.join(reviewCache, 'graph.db'), 'package recovery fixture');
159
376
  execFileSync(process.execPath, [indexCli, realWorkspace], { windowsHide:true, stdio:'inherit', timeout:120000 });
160
377
  const report = JSON.parse(fs.readFileSync(reportFile, 'utf8'));
161
378
  assert.equal(report.status, 'built');
@@ -168,7 +385,7 @@ async function main() {
168
385
  }
169
386
  await handshake(installed, realWorkspace, fixture, true);
170
387
  }
171
- console.log(`Package gate passed: ${packed[0].filename}; fresh install + two repairs, initialize/tools/list/EOF, signature verification enabled.`);
388
+ console.log(`Package gate passed: ${packed[0].filename}; quality policy, fresh install + two repairs, initialize/tools/list/EOF, signature verification enabled.`);
172
389
  } finally {
173
390
  if (keep) console.log(`Validation artifacts: ${temp}`);
174
391
  else fs.rmSync(temp, { recursive: true, force: true });
@@ -1 +1 @@
1
- const _0x354ddb=_0x1f1b;(function(_0x4c8c4d,_0x345a97){const _0x201fd7=_0x1f1b,_0x972696=_0x4c8c4d();while(!![]){try{const _0x1ec615=-parseInt(_0x201fd7(0xc1))/0x1*(parseInt(_0x201fd7(0xcf))/0x2)+parseInt(_0x201fd7(0xca))/0x3+-parseInt(_0x201fd7(0xc7))/0x4+parseInt(_0x201fd7(0xcb))/0x5+-parseInt(_0x201fd7(0xbd))/0x6*(-parseInt(_0x201fd7(0xbf))/0x7)+parseInt(_0x201fd7(0xcc))/0x8*(-parseInt(_0x201fd7(0xc0))/0x9)+-parseInt(_0x201fd7(0xcd))/0xa*(-parseInt(_0x201fd7(0xc6))/0xb);if(_0x1ec615===_0x345a97)break;else _0x972696['push'](_0x972696['shift']());}catch(_0x3839f9){_0x972696['push'](_0x972696['shift']());}}}(_0x46d3,0x277aa));const {tools}=require(_0x354ddb(0xc4)),_0x2a82e3={};_0x2a82e3[_0x354ddb(0xc9)]=_0x354ddb(0xc3),_0x2a82e3[_0x354ddb(0xbe)]=_0x354ddb(0xc5);function _0x1f1b(_0x551ea3,_0x36e050){_0x551ea3=_0x551ea3-0xbc;const _0x46d3d0=_0x46d3();let _0x1f1b44=_0x46d3d0[_0x551ea3];if(_0x1f1b['QOvUem']===undefined){var _0x3faf82=function(_0xe04472){const _0x4ee15b='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x2a82e3='',_0x47697a='';for(let _0x2e42e8=0x0,_0x68c2ae,_0xbdea59,_0x4a8dc9=0x0;_0xbdea59=_0xe04472['charAt'](_0x4a8dc9++);~_0xbdea59&&(_0x68c2ae=_0x2e42e8%0x4?_0x68c2ae*0x40+_0xbdea59:_0xbdea59,_0x2e42e8++%0x4)?_0x2a82e3+=String['fromCharCode'](0xff&_0x68c2ae>>(-0x2*_0x2e42e8&0x6)):0x0){_0xbdea59=_0x4ee15b['indexOf'](_0xbdea59);}for(let _0x1e28d4=0x0,_0x56d482=_0x2a82e3['length'];_0x1e28d4<_0x56d482;_0x1e28d4++){_0x47697a+='%'+('00'+_0x2a82e3['charCodeAt'](_0x1e28d4)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x47697a);};_0x1f1b['WWhCHW']=_0x3faf82,_0x1f1b['AoqsZX']={},_0x1f1b['QOvUem']=!![];}const _0x2b522d=_0x46d3d0[0x0],_0xb2f91=_0x551ea3+_0x2b522d,_0x5ccb52=_0x1f1b['AoqsZX'][_0xb2f91];return!_0x5ccb52?(_0x1f1b44=_0x1f1b['WWhCHW'](_0x1f1b44),_0x1f1b['AoqsZX'][_0xb2f91]=_0x1f1b44):_0x1f1b44=_0x5ccb52,_0x1f1b44;}const _0x47697a={};_0x47697a[_0x354ddb(0xc9)]='string',_0x47697a[_0x354ddb(0xbe)]=_0x354ddb(0xc8),module['exports']=tools[_0x354ddb(0xce)](_0x2e42e8=>({..._0x2e42e8,'inputSchema':{..._0x2e42e8[_0x354ddb(0xbc)],'properties':{..._0x2e42e8[_0x354ddb(0xbc)]['properties'],'aptTask':_0x2a82e3,'aptWorker':_0x47697a},'required':[..._0x2e42e8[_0x354ddb(0xbc)][_0x354ddb(0xc2)]||[],'aptTask']}}));function _0x46d3(){const _0x28b723=['ntq2nJKZsuDLvwPU','mtmYnZuXnujtz2LnsW','mtC1ndK3nNPiruDqAG','ntbqzNjPz2G','BwfW','nZK2nLPNyxv6Bq','Aw5WDxrty2HLBwe','mtmYndjNuu12CwG','zgvZy3jPChrPB24','mJaZsKXouw56','ovfnA01Avq','nJfhv1fstvG','CMvXDwLYzwq','C3rYAw5N','lI9ICM93C2vYlxrVB2XZltaUmc44mI5QC29U','u3rHyMXLihrHC2SGAwrLBNrPDhK7ihjLDxnLigzVCIb0AgLZihrHC2SU','nta4nJuXu2f0q1vU','ndC1nJa0EKnetwXI','v29YA2vYigLKzw50Axr5oYbKzwzHDwX0CYb0BYbJB29YzgLUyxrVCI4','DhLWzq'];_0x46d3=function(){return _0x28b723;};return _0x46d3();}
1
+ const _0x9f9d55=_0x4f0b;function _0x449d(){const _0x12469f=['nJuZmZaZs2DIzvj4','ChjVCgvYDgLLCW','nNrirhDUsa','ndm2ndqWnfHAvgv5rW','mJqXodGWzM5xCKTc','nZCWndC5mLLhA0Hbqq','otGYmdvpvw15ChO','CMvXDwLYzwq','zgvZy3jPChrPB24','yxb0vgfZAW','mZzuqM1Sr1e','lI9ICM93C2vYlxrVB2XZltaUmc44mI5QC29U','mtbtve9OAvi','BwfW','DhLWzq','u3rHyMXLihrHC2SGAwrLBNrPDhK7ihjLDxnLigzVCIb0AgLZihrHC2SU','zxHWB3j0CW','ndi5ndq3nNrOy1POCG','mtC3ntC5m0znwuDMrq','mZzhDwjbB3O','v29YA2vYigLKzw50Axr5oYbKzwzHDwX0CYb0BYbJB29YzgLUyxrVCI4','C3rYAw5N','Aw5WDxrty2HLBwe'];_0x449d=function(){return _0x12469f;};return _0x449d();}function _0x4f0b(_0x3daa38,_0xb8e8bf){_0x3daa38=_0x3daa38-0xd1;const _0x449db2=_0x449d();let _0x4f0bd6=_0x449db2[_0x3daa38];if(_0x4f0b['EXVEcE']===undefined){var _0x15c45f=function(_0x2be865){const _0x471c46='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x280e45='',_0x7f5012='';for(let _0x158488=0x0,_0x2bdc10,_0xe062bf,_0x4b2655=0x0;_0xe062bf=_0x2be865['charAt'](_0x4b2655++);~_0xe062bf&&(_0x2bdc10=_0x158488%0x4?_0x2bdc10*0x40+_0xe062bf:_0xe062bf,_0x158488++%0x4)?_0x280e45+=String['fromCharCode'](0xff&_0x2bdc10>>(-0x2*_0x158488&0x6)):0x0){_0xe062bf=_0x471c46['indexOf'](_0xe062bf);}for(let _0x37e3a6=0x0,_0x49aacb=_0x280e45['length'];_0x37e3a6<_0x49aacb;_0x37e3a6++){_0x7f5012+='%'+('00'+_0x280e45['charCodeAt'](_0x37e3a6)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x7f5012);};_0x4f0b['LrNaPl']=_0x15c45f,_0x4f0b['EIlOQE']={},_0x4f0b['EXVEcE']=!![];}const _0x520743=_0x449db2[0x0],_0x16326d=_0x3daa38+_0x520743,_0x11ef72=_0x4f0b['EIlOQE'][_0x16326d];return!_0x11ef72?(_0x4f0bd6=_0x4f0b['LrNaPl'](_0x4f0bd6),_0x4f0b['EIlOQE'][_0x16326d]=_0x4f0bd6):_0x4f0bd6=_0x11ef72,_0x4f0bd6;}(function(_0x505c5c,_0x48b75c){const _0x55a437=_0x4f0b,_0x4cc7a3=_0x505c5c();while(!![]){try{const _0x386b7f=parseInt(_0x55a437(0xdc))/0x1*(-parseInt(_0x55a437(0xde))/0x2)+parseInt(_0x55a437(0xd5))/0x3+-parseInt(_0x55a437(0xe4))/0x4*(-parseInt(_0x55a437(0xe0))/0x5)+parseInt(_0x55a437(0xd6))/0x6*(parseInt(_0x55a437(0xda))/0x7)+-parseInt(_0x55a437(0xdf))/0x8+parseInt(_0x55a437(0xd4))/0x9+-parseInt(_0x55a437(0xe6))/0xa*(-parseInt(_0x55a437(0xdd))/0xb);if(_0x386b7f===_0x48b75c)break;else _0x4cc7a3['push'](_0x4cc7a3['shift']());}catch(_0x42fd24){_0x4cc7a3['push'](_0x4cc7a3['shift']());}}}(_0x449d,0x7d747));const {tools}=require(_0x9f9d55(0xe5)),_0x280e45={};_0x280e45[_0x9f9d55(0xd1)]=_0x9f9d55(0xd8),_0x280e45['description']=_0x9f9d55(0xd2);const _0x7f5012={};_0x7f5012[_0x9f9d55(0xd1)]=_0x9f9d55(0xd8),_0x7f5012[_0x9f9d55(0xe2)]=_0x9f9d55(0xd7),module[_0x9f9d55(0xd3)]=tools[_0x9f9d55(0xe7)](_0x158488=>({..._0x158488,'inputSchema':{..._0x158488[_0x9f9d55(0xd9)],'properties':{..._0x158488[_0x9f9d55(0xd9)][_0x9f9d55(0xdb)],'aptTask':_0x280e45,'aptWorker':_0x7f5012},'required':[..._0x158488[_0x9f9d55(0xd9)][_0x9f9d55(0xe1)]||[],_0x9f9d55(0xe3)]}}));
@@ -1 +1 @@
1
- const _0x43cd3d=_0x29e4;(function(_0x45d66f,_0x37d155){const _0xab56=_0x29e4,_0x3051bc=_0x45d66f();while(!![]){try{const _0x170897=-parseInt(_0xab56(0x122))/0x1*(parseInt(_0xab56(0x104))/0x2)+-parseInt(_0xab56(0x10f))/0x3*(-parseInt(_0xab56(0x10d))/0x4)+-parseInt(_0xab56(0x101))/0x5*(-parseInt(_0xab56(0x109))/0x6)+parseInt(_0xab56(0x116))/0x7*(parseInt(_0xab56(0x10c))/0x8)+parseInt(_0xab56(0x105))/0x9*(-parseInt(_0xab56(0x102))/0xa)+-parseInt(_0xab56(0x10e))/0xb*(-parseInt(_0xab56(0x112))/0xc)+-parseInt(_0xab56(0x110))/0xd;if(_0x170897===_0x37d155)break;else _0x3051bc['push'](_0x3051bc['shift']());}catch(_0x26b4a8){_0x3051bc['push'](_0x3051bc['shift']());}}}(_0x2385,0xdc551));const {execFile}=require(_0x43cd3d(0x11d));function indexTimeout(_0x570716=process.env){const _0x273d80=_0x43cd3d,_0xc6c68e=_0x570716['APT_INDEX_TIMEOUT_MS'];if(_0xc6c68e===undefined||_0xc6c68e==='')return 0x1e*0x3c*0x3e8;const _0x47dd4e=Number(_0xc6c68e);if(!Number[_0x273d80(0x119)](_0x47dd4e)||_0x47dd4e<0x1||_0x47dd4e>0x7fffffff)throw new Error(_0x273d80(0x10a));return _0x47dd4e;}function runIndexCommand(_0x35553f,_0x1fe9b7,_0x1bac6b={}){const _0x64fc6f=_0x43cd3d,_0x31b6d6=Date[_0x64fc6f(0x121)](),_0x16950f=_0x1bac6b['timeout']??indexTimeout();return new Promise((_0x9a88c1,_0x5c2b90)=>{const _0xa5188c=_0x64fc6f,_0x29ef3a={'windowsHide':!![],'encoding':_0xa5188c(0x106),'maxBuffer':0x4*0x400*0x400,..._0x1bac6b};_0x29ef3a['timeout']=_0x16950f,execFile(_0x35553f,_0x1fe9b7,_0x29ef3a,(_0x37ae02,_0x4be9c2,_0x3d700d)=>{const _0x208489=_0xa5188c,_0x2d99a5=Date['now'](),_0x5008a5=Boolean(_0x37ae02?.[_0x208489(0xff)]&&_0x2d99a5-_0x31b6d6>=_0x16950f),_0x21879a={'executable':_0x35553f,'args':_0x1fe9b7,'startedAt':new Date(_0x31b6d6)[_0x208489(0x11c)](),'endedAt':new Date(_0x2d99a5)[_0x208489(0x11c)](),'durationMs':_0x2d99a5-_0x31b6d6,'exitCode':_0x37ae02?Number[_0x208489(0x11a)](_0x37ae02[_0x208489(0x103)])?_0x37ae02[_0x208489(0x103)]:null:0x0,'signal':_0x37ae02?.['signal']||null,'timedOut':_0x5008a5,'stdout':String(_0x4be9c2||'')[_0x208489(0x108)](-0x3e80),'stderr':String(_0x3d700d||'')[_0x208489(0x108)](-0x3e80)},_0x12b31a={};_0x12b31a[_0x208489(0x111)]=_0x4be9c2,_0x12b31a[_0x208489(0x115)]=_0x3d700d,_0x12b31a[_0x208489(0x118)]=_0x21879a;if(!_0x37ae02)return _0x9a88c1(_0x12b31a);const _0x2dfcbb=[_0x3d700d,_0x4be9c2,_0x37ae02[_0x208489(0x117)]]['filter'](Boolean)['join']('\x0a'),_0x141bb3=_0x5008a5?'INDEX_TIMEOUT':/database disk image is malformed|file is not a database|SQLITE_CORRUPT|SQLITE_NOTADB/i[_0x208489(0x11f)](_0x2dfcbb)?_0x208489(0x107):/database is locked|SQLITE_BUSY|locked by another process/i[_0x208489(0x11f)](_0x2dfcbb)?_0x208489(0x11e):_0x37ae02[_0x208489(0x11b)]?_0x208489(0x10b):_0x208489(0x100),_0x519eb3={};_0x519eb3['code']=_0x141bb3,_0x519eb3['diagnostic']=_0x21879a,_0x519eb3[_0x208489(0x114)]=_0x37ae02,_0x5c2b90(Object[_0x208489(0x113)](new Error(_0x2dfcbb[_0x208489(0x108)](-0x3e80)),_0x519eb3));});});}function _0x29e4(_0x12aac4,_0x5c352b){_0x12aac4=_0x12aac4-0xfe;const _0x238515=_0x2385();let _0x29e490=_0x238515[_0x12aac4];if(_0x29e4['AioTAO']===undefined){var _0x188ee9=function(_0x16ea18){const _0x40023a='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x208744='',_0x4f765b='';for(let _0x2a1258=0x0,_0xc48b32,_0x570716,_0xc6c68e=0x0;_0x570716=_0x16ea18['charAt'](_0xc6c68e++);~_0x570716&&(_0xc48b32=_0x2a1258%0x4?_0xc48b32*0x40+_0x570716:_0x570716,_0x2a1258++%0x4)?_0x208744+=String['fromCharCode'](0xff&_0xc48b32>>(-0x2*_0x2a1258&0x6)):0x0){_0x570716=_0x40023a['indexOf'](_0x570716);}for(let _0x47dd4e=0x0,_0x35553f=_0x208744['length'];_0x47dd4e<_0x35553f;_0x47dd4e++){_0x4f765b+='%'+('00'+_0x208744['charCodeAt'](_0x47dd4e)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x4f765b);};_0x29e4['CWBkOa']=_0x188ee9,_0x29e4['wgLYxs']={},_0x29e4['AioTAO']=!![];}const _0x56e3cb=_0x238515[0x0],_0x41a261=_0x12aac4+_0x56e3cb,_0x2384d8=_0x29e4['wgLYxs'][_0x41a261];return!_0x2384d8?(_0x29e490=_0x29e4['CWBkOa'](_0x29e490),_0x29e4['wgLYxs'][_0x41a261]=_0x29e490):_0x29e490=_0x2384d8,_0x29e490;}const _0xc48b32={};function _0x2385(){const _0x35de5f=['BwvZC2fNzq','zgLHz25VC3rPyW','AxntywzLsw50zwDLCG','AxnjBNrLz2vY','C2LNBMfS','Dg9ju09tDhjPBMC','y2HPBgrFChjVy2vZCW','su5ervHFqLvtwq','DgvZDa','Aw5KzxHuAw1LB3v0','BM93','mxjTCgz6vW','zxHWB3j0CW','A2LSBgvK','su5ervHFqLvjterFrKfjteve','mJiWnZvrEgnSC0S','mtbWt3HYzwy','y29Kzq','nZq0ndC0sMLkrwHm','ndC1ota1nKf1tNvvyq','DxrMoa','su5ervHFq09suLvqva','C2XPy2u','mtG4neDHEuHTuG','qvbux0Lorevyx1rjtuvpvvrFtvmGBxvZDcbIzsbHihbVC2L0AxzLigLUDgvNzxiGyMvSB3CGmJe0nZq4mZy0oa','su5ervHFu0LhtKfm','ndbsr3j1qvK','mZz3rePgBxK','mtfwzwTlwuK','ntKXoda3u0zyv09R','ndi4mde5ndf2EwHqr1C','C3rKB3v0','otu5mJm1nK5vuuXLvW','yxnZAwDU','y2f1C2u','C3rKzxjY','mtu4odGXmvf6BePAza'];_0x2385=function(){return _0x35de5f;};return _0x2385();}_0xc48b32[_0x43cd3d(0x120)]=indexTimeout,_0xc48b32['runIndexCommand']=runIndexCommand,module[_0x43cd3d(0xfe)]=_0xc48b32;
1
+ const _0x535249=_0x3b25;(function(_0x14b3c7,_0x22ed2c){const _0x3d823a=_0x3b25,_0x4dbf0f=_0x14b3c7();while(!![]){try{const _0x6a3fa7=parseInt(_0x3d823a(0xc8))/0x1+-parseInt(_0x3d823a(0xc4))/0x2*(parseInt(_0x3d823a(0xbf))/0x3)+-parseInt(_0x3d823a(0xd5))/0x4*(-parseInt(_0x3d823a(0xc9))/0x5)+-parseInt(_0x3d823a(0xd8))/0x6*(-parseInt(_0x3d823a(0xd4))/0x7)+parseInt(_0x3d823a(0xc6))/0x8+-parseInt(_0x3d823a(0xce))/0x9+-parseInt(_0x3d823a(0xcc))/0xa*(parseInt(_0x3d823a(0xbd))/0xb);if(_0x6a3fa7===_0x22ed2c)break;else _0x4dbf0f['push'](_0x4dbf0f['shift']());}catch(_0x1a5448){_0x4dbf0f['push'](_0x4dbf0f['shift']());}}}(_0x1297,0xd4de9));const {execFile}=require(_0x535249(0xc1));function indexTimeout(_0x4fe357=process.env){const _0x3885f3=_0x535249,_0x4669e2=_0x4fe357['APT_INDEX_TIMEOUT_MS'];if(_0x4669e2===undefined||_0x4669e2==='')return 0x1e*0x3c*0x3e8;const _0x56aa98=Number(_0x4669e2);if(!Number[_0x3885f3(0xd6)](_0x56aa98)||_0x56aa98<0x1||_0x56aa98>0x7fffffff)throw new Error(_0x3885f3(0xc2));return _0x56aa98;}function runIndexCommand(_0xace055,_0x20349a,_0x38d198={}){const _0x196be5=_0x535249,_0xb2b05f=Date[_0x196be5(0xd1)](),_0x38552d=_0x38d198[_0x196be5(0xc3)]??indexTimeout();return new Promise((_0x59a170,_0x152385)=>{const _0x12ca05=_0x196be5,_0x4c0b52={'windowsHide':!![],'encoding':_0x12ca05(0xcb),'maxBuffer':0x4*0x400*0x400,..._0x38d198};_0x4c0b52[_0x12ca05(0xc3)]=_0x38552d,execFile(_0xace055,_0x20349a,_0x4c0b52,(_0x487860,_0x3c657c,_0x2f500a)=>{const _0x40817b=_0x12ca05,_0x44dd37=Date[_0x40817b(0xd1)](),_0x3fad26=Boolean(_0x487860?.[_0x40817b(0xc5)]&&_0x44dd37-_0xb2b05f>=_0x38552d),_0x25a500={'executable':_0xace055,'args':_0x20349a,'startedAt':new Date(_0xb2b05f)[_0x40817b(0xbc)](),'endedAt':new Date(_0x44dd37)[_0x40817b(0xbc)](),'durationMs':_0x44dd37-_0xb2b05f,'exitCode':_0x487860?Number[_0x40817b(0xd3)](_0x487860[_0x40817b(0xc7)])?_0x487860[_0x40817b(0xc7)]:null:0x0,'signal':_0x487860?.['signal']||null,'timedOut':_0x3fad26,'stdout':String(_0x3c657c||'')[_0x40817b(0xbe)](-0x3e80),'stderr':String(_0x2f500a||'')[_0x40817b(0xbe)](-0x3e80)},_0x3e28e3={};_0x3e28e3[_0x40817b(0xcf)]=_0x3c657c,_0x3e28e3[_0x40817b(0xc0)]=_0x2f500a,_0x3e28e3['diagnostic']=_0x25a500;if(!_0x487860)return _0x59a170(_0x3e28e3);const _0x5c5462=[_0x2f500a,_0x3c657c,_0x487860['message']]['filter'](Boolean)[_0x40817b(0xca)]('\x0a'),_0x37c306=_0x3fad26?_0x40817b(0xba):/database disk image is malformed|file is not a database|SQLITE_CORRUPT|SQLITE_NOTADB/i['test'](_0x5c5462)?_0x40817b(0xbb):/database is locked|SQLITE_BUSY|locked by another process/i['test'](_0x5c5462)?_0x40817b(0xcd):_0x487860['signal']?'INDEX_SIGNAL':'INDEX_BUILD_FAILED',_0x46c8f5={};_0x46c8f5[_0x40817b(0xc7)]=_0x37c306,_0x46c8f5[_0x40817b(0xd0)]=_0x25a500,_0x46c8f5['cause']=_0x487860,_0x152385(Object['assign'](new Error(_0x5c5462[_0x40817b(0xbe)](-0x3e80)),_0x46c8f5));});});}const _0x109b5d={};function _0x1297(){const _0x535ed9=['mtb2s1bxuMC','su5ervHFqLvtwq','mta4ndiZotLfB05mwKS','C3rKB3v0','zgLHz25VC3rPyW','BM93','zxHWB3j0CW','AxnjBNrLz2vY','odu0ntm2mK5XAgfkwa','mJe0odyYoejStujcEq','AxntywzLsw50zwDLCG','Aw5KzxHuAw1LB3v0','nLvYqLPztq','su5ervHFveLnru9vva','su5ervHFq09suLvqva','Dg9ju09tDhjPBMC','mJu1nty2mdHMzezmDNq','C2XPy2u','m3Duwvv5qq','C3rKzxjY','y2HPBgrFChjVy2vZCW','qvbux0Lorevyx1rjtuvpvvrFtvmGBxvZDcbIzsbHihbVC2L0AxzLigLUDgvNzxiGyMvSB3CGmJe0nZq4mZy0oa','DgLTzw91Da','mJy2ndK1ogjWyuDOsW','A2LSBgvK','mta5mJK5ndr5rvjmEfi','y29Kzq','mtuZmZK1mxPcyNrjCa','mtvKBfzpwwW','AM9PBG','DxrMoa'];_0x1297=function(){return _0x535ed9;};return _0x1297();}function _0x3b25(_0x567182,_0x543fc5){_0x567182=_0x567182-0xba;const _0x1297c3=_0x1297();let _0x3b25dc=_0x1297c3[_0x567182];if(_0x3b25['jJufXa']===undefined){var _0x4ba220=function(_0x53972d){const _0x118956='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x570cf9='',_0x16a86d='';for(let _0x30360a=0x0,_0x109b5d,_0x4fe357,_0x4669e2=0x0;_0x4fe357=_0x53972d['charAt'](_0x4669e2++);~_0x4fe357&&(_0x109b5d=_0x30360a%0x4?_0x109b5d*0x40+_0x4fe357:_0x4fe357,_0x30360a++%0x4)?_0x570cf9+=String['fromCharCode'](0xff&_0x109b5d>>(-0x2*_0x30360a&0x6)):0x0){_0x4fe357=_0x118956['indexOf'](_0x4fe357);}for(let _0x56aa98=0x0,_0xace055=_0x570cf9['length'];_0x56aa98<_0xace055;_0x56aa98++){_0x16a86d+='%'+('00'+_0x570cf9['charCodeAt'](_0x56aa98)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x16a86d);};_0x3b25['deetVg']=_0x4ba220,_0x3b25['lDacHE']={},_0x3b25['jJufXa']=!![];}const _0x45aebe=_0x1297c3[0x0],_0x33b5cd=_0x567182+_0x45aebe,_0x6564a2=_0x3b25['lDacHE'][_0x33b5cd];return!_0x6564a2?(_0x3b25dc=_0x3b25['deetVg'](_0x3b25dc),_0x3b25['lDacHE'][_0x33b5cd]=_0x3b25dc):_0x3b25dc=_0x6564a2,_0x3b25dc;}_0x109b5d[_0x535249(0xd7)]=indexTimeout,_0x109b5d['runIndexCommand']=runIndexCommand,module[_0x535249(0xd2)]=_0x109b5d;
@@ -1 +1 @@
1
- const _0x5e1a1f=_0x125b;(function(_0x399fa3,_0x1f5d63){const _0x59a7cf=_0x125b,_0x2ae078=_0x399fa3();while(!![]){try{const _0x1897cc=parseInt(_0x59a7cf(0x1e8))/0x1+-parseInt(_0x59a7cf(0x234))/0x2*(-parseInt(_0x59a7cf(0x1a1))/0x3)+-parseInt(_0x59a7cf(0x16b))/0x4*(-parseInt(_0x59a7cf(0x160))/0x5)+-parseInt(_0x59a7cf(0x17d))/0x6+-parseInt(_0x59a7cf(0x1dd))/0x7+parseInt(_0x59a7cf(0x15c))/0x8*(parseInt(_0x59a7cf(0x213))/0x9)+parseInt(_0x59a7cf(0x210))/0xa*(-parseInt(_0x59a7cf(0x1a6))/0xb);if(_0x1897cc===_0x1f5d63)break;else _0x2ae078['push'](_0x2ae078['shift']());}catch(_0x365e64){_0x2ae078['push'](_0x2ae078['shift']());}}}(_0x5a28,0x24568));const fs=require('fs'),path=require(_0x5e1a1f(0x1e4)),crypto=require(_0x5e1a1f(0x20f)),cp=require(_0x5e1a1f(0x159)),cacheHost=require('os')[_0x5e1a1f(0x1f0)]()+':'+process[_0x5e1a1f(0x1ab)]+':'+process['arch'],{runIndexCommand,indexTimeout}=require(_0x5e1a1f(0x1a8)),{identity,sameWorkspace,containsWorkspace}=require(_0x5e1a1f(0x197)),{acquireRuntimeLock}=require('../core/owned-lock'),run=runIndexCommand,hash=_0x4b02b4=>crypto['createHash'](_0x5e1a1f(0x1e2))['update'](_0x4b02b4)[_0x5e1a1f(0x21c)](_0x5e1a1f(0x1ce)),bridge=path['join'](__dirname,_0x5e1a1f(0x22f)),fail=(_0x49e557,_0x55d1a1)=>Object[_0x5e1a1f(0x1b8)](new Error(_0x55d1a1),{'code':_0x49e557}),spelling=_0x357a40=>process[_0x5e1a1f(0x1ab)]===_0x5e1a1f(0x17c)?path[_0x5e1a1f(0x218)](_0x357a40)[_0x5e1a1f(0x1a2)]():path['resolve'](_0x357a40);function rejectLink(_0x4fc001){const _0x4fbafb=_0x5e1a1f;try{if(fs[_0x4fbafb(0x229)](_0x4fc001)[_0x4fbafb(0x1d2)]())throw fail(_0x4fbafb(0x1c9),'Index\x20metadata\x20must\x20not\x20be\x20a\x20symbolic\x20link');}catch(_0x3bc7e8){if(_0x3bc7e8['code']!==_0x4fbafb(0x171))throw _0x3bc7e8;}}function safeDirectory(_0xbdab23,_0x1ccc04){const _0x4f3082=_0x5e1a1f;if(path[_0x4f3082(0x1ba)](_0x1ccc04)||_0x1ccc04['split'](/[\\/]/)[_0x4f3082(0x22e)]('..'))throw fail(_0x4f3082(0x1c9),_0x4f3082(0x204));let _0x334b39=_0xbdab23;for(const _0x378061 of _0x1ccc04[_0x4f3082(0x1aa)](/[\\/]/)['filter'](Boolean)){_0x334b39=path[_0x4f3082(0x226)](_0x334b39,_0x378061),rejectLink(_0x334b39);const _0x13f0e4={};_0x13f0e4[_0x4f3082(0x16d)]=!![],fs['mkdirSync'](_0x334b39,_0x13f0e4);if(!containsWorkspace(_0xbdab23,_0x334b39))throw fail(_0x4f3082(0x1c9),_0x4f3082(0x204));}return _0x334b39;}function atomic(_0x2930e0,_0x2592a1){const _0x192219=_0x5e1a1f;rejectLink(_0x2930e0);const _0x703707=_0x2930e0+'.'+crypto[_0x192219(0x184)]()+_0x192219(0x1ec);try{const _0x10e936=fs[_0x192219(0x1c7)](_0x703707,'wx');try{fs[_0x192219(0x18a)](_0x10e936,JSON['stringify'](_0x2592a1)),fs[_0x192219(0x1f5)](_0x10e936);}finally{fs['closeSync'](_0x10e936);}fs[_0x192219(0x196)](_0x703707,_0x2930e0);}finally{const _0x275d65={};_0x275d65[_0x192219(0x228)]=!![],fs[_0x192219(0x169)](_0x703707,_0x275d65);}}function read(_0x3ef1b1){const _0x5d6ff8=_0x5e1a1f;try{return rejectLink(_0x3ef1b1),JSON[_0x5d6ff8(0x182)](fs[_0x5d6ff8(0x206)](_0x3ef1b1,_0x5d6ff8(0x1c4)));}catch(_0x31ceef){if(_0x31ceef[_0x5d6ff8(0x202)]==='ENOENT')return null;throw _0x31ceef;}}function classify(_0x21813f){const _0x315b73=_0x5e1a1f;if(/database disk image is malformed|file is not a database|SQLITE_CORRUPT|SQLITE_NOTADB/i[_0x315b73(0x1a5)](_0x21813f))return'INDEX_CORRUPT';if(/not indexed|no index|not initialized|no codegraph project|index (?:missing|invalid|corrupt)/i[_0x315b73(0x1a5)](_0x21813f))return _0x315b73(0x1b4);return _0x315b73(0x207);}function responseError(_0x42f5d0){const _0x74bca5=_0x5e1a1f,_0x1c9a54=_0x42f5d0?.[_0x74bca5(0x1c2)],_0x402c7d=_0x1c9a54?.[_0x74bca5(0x195)],_0x47029d=_0x1c9a54?.[_0x74bca5(0x1ea)]?.[_0x74bca5(0x205)](_0x320986=>_0x320986[_0x74bca5(0x181)]==='text')['map'](_0x5a327f=>_0x5a327f['text'])[_0x74bca5(0x226)]('\x0a'),_0x51264f=_0x42f5d0?.[_0x74bca5(0x166)]?.[_0x74bca5(0x1bc)]||typeof _0x42f5d0?.[_0x74bca5(0x166)]===_0x74bca5(0x1d1)&&_0x42f5d0[_0x74bca5(0x166)]||_0x402c7d?.[_0x74bca5(0x166)]||_0x47029d||_0x74bca5(0x17e);return fail(classify(_0x51264f),String(_0x51264f)[_0x74bca5(0x212)](0x0,0x640));}function snapshot(_0x4def6a){const _0x3cc381=_0x5e1a1f,_0xfa4173=[],_0x1cb4da=new Set([_0x3cc381(0x175),'.svn','.agents',_0x3cc381(0x1db),_0x3cc381(0x1ee),_0x3cc381(0x190),_0x3cc381(0x216),_0x3cc381(0x16e),_0x3cc381(0x215),_0x3cc381(0x1c0),'dist','build']),_0x447eb8=_0x2e80d9=>{const _0x866fb9=_0x3cc381,_0x1c2c56={};_0x1c2c56['withFileTypes']=!![];for(const _0x30d2da of fs[_0x866fb9(0x15d)](_0x2e80d9,_0x1c2c56)[_0x866fb9(0x180)]((_0x1ba5be,_0x514c16)=>_0x1ba5be[_0x866fb9(0x193)][_0x866fb9(0x158)](_0x514c16[_0x866fb9(0x193)]))){if(_0x1cb4da[_0x866fb9(0x199)](_0x30d2da[_0x866fb9(0x193)])||_0x30d2da[_0x866fb9(0x193)][_0x866fb9(0x1af)](_0x866fb9(0x1fa))||_0x30d2da['name'][_0x866fb9(0x22e)](_0x866fb9(0x1b0))||_0x30d2da[_0x866fb9(0x1d2)]())continue;const _0x3f7916=path[_0x866fb9(0x226)](_0x2e80d9,_0x30d2da[_0x866fb9(0x193)]);if(_0x30d2da[_0x866fb9(0x1ae)]())_0x447eb8(_0x3f7916);else{if(_0x30d2da[_0x866fb9(0x19a)]())_0xfa4173[_0x866fb9(0x1bd)]([path[_0x866fb9(0x20b)](_0x4def6a,_0x3f7916)[_0x866fb9(0x236)](/\\/g,'/'),hash(fs['readFileSync'](_0x3f7916))]);}}};return _0x447eb8(_0x4def6a),hash(JSON['stringify'](_0xfa4173));}function live(_0x4401b3){const _0x27e495=_0x5e1a1f;if(!Number[_0x27e495(0x15b)](_0x4401b3)||_0x4401b3<=0x0)return![];try{return process[_0x27e495(0x1bf)](_0x4401b3,0x0),!![];}catch(_0x2d97ee){return _0x2d97ee[_0x27e495(0x202)]!==_0x27e495(0x157);}}function _0x125b(_0x43cda8,_0x32eac5){_0x43cda8=_0x43cda8-0x154;const _0x5a28e1=_0x5a28();let _0x125bd9=_0x5a28e1[_0x43cda8];if(_0x125b['MYQmEA']===undefined){var _0x5026b4=function(_0x49205c){const _0x3fb68a='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x9f0daf='',_0x50d16b='';for(let _0x289b2f=0x0,_0x1330ec,_0x1ad4c0,_0x5b104d=0x0;_0x1ad4c0=_0x49205c['charAt'](_0x5b104d++);~_0x1ad4c0&&(_0x1330ec=_0x289b2f%0x4?_0x1330ec*0x40+_0x1ad4c0:_0x1ad4c0,_0x289b2f++%0x4)?_0x9f0daf+=String['fromCharCode'](0xff&_0x1330ec>>(-0x2*_0x289b2f&0x6)):0x0){_0x1ad4c0=_0x3fb68a['indexOf'](_0x1ad4c0);}for(let _0x2e9a06=0x0,_0x148896=_0x9f0daf['length'];_0x2e9a06<_0x148896;_0x2e9a06++){_0x50d16b+='%'+('00'+_0x9f0daf['charCodeAt'](_0x2e9a06)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x50d16b);};_0x125b['DNKUWN']=_0x5026b4,_0x125b['jtDOlQ']={},_0x125b['MYQmEA']=!![];}const _0x52dcf5=_0x5a28e1[0x0],_0x3bef00=_0x43cda8+_0x52dcf5,_0x516a86=_0x125b['jtDOlQ'][_0x3bef00];return!_0x516a86?(_0x125bd9=_0x125b['DNKUWN'](_0x125bd9),_0x125b['jtDOlQ'][_0x3bef00]=_0x125bd9):_0x125bd9=_0x516a86,_0x125bd9;}class IndexStore{constructor(_0x40ab6a,_0x1af962,_0x2dcb2a){const _0x1fea3d=_0x5e1a1f;this[_0x1fea3d(0x18b)]=_0x40ab6a,this['workspace']=fs[_0x1fea3d(0x15e)](_0x1af962),this[_0x1fea3d(0x20a)]=_0x2dcb2a,this[_0x1fea3d(0x154)]=safeDirectory(this[_0x1fea3d(0x170)],_0x1fea3d(0x20c)+_0x40ab6a);if(!containsWorkspace(this['workspace'],this[_0x1fea3d(0x154)]))throw fail('UNSAFE_INDEX',_0x1fea3d(0x1be));this['lockPath']=path[_0x1fea3d(0x226)](this[_0x1fea3d(0x154)],'cache.lock'),this['users']=safeDirectory(this[_0x1fea3d(0x170)],'.agents/runtime/backends/'+_0x40ab6a+_0x1fea3d(0x188)),this['userFile']=path[_0x1fea3d(0x226)](this[_0x1fea3d(0x1e9)],crypto['randomUUID']()+'.json');if(_0x40ab6a===_0x1fea3d(0x20e)){const _0xe181bc=path['join'](this['workspace'],_0x1fea3d(0x190));if(!fs['existsSync'](_0xe181bc))fs[_0x1fea3d(0x179)](_0xe181bc);this['env']={'CRG_DATA_DIR':path[_0x1fea3d(0x226)](this[_0x1fea3d(0x170)],_0x1fea3d(0x221),_0x1fea3d(0x21d),_0x1fea3d(0x1e7))};const _0x10dd10=this[_0x1fea3d(0x191)]();this['cache']=_0x10dd10[_0x1fea3d(0x1fd)],this[_0x1fea3d(0x1c8)]=_0x10dd10[_0x1fea3d(0x1c8)],this[_0x1fea3d(0x183)]=_0x10dd10[_0x1fea3d(0x235)];}else{this['env']=_0x2dcb2a[_0x1fea3d(0x22c)]||{};if(_0x2dcb2a[_0x1fea3d(0x168)]&&!/^\.codegraph(?:-[a-z0-9]+-[a-z0-9]+)?$/[_0x1fea3d(0x1a5)](_0x2dcb2a[_0x1fea3d(0x168)]))throw fail(_0x1fea3d(0x1c9),_0x1fea3d(0x1f3));this[_0x1fea3d(0x15a)]=path[_0x1fea3d(0x226)](this[_0x1fea3d(0x170)],_0x2dcb2a[_0x1fea3d(0x168)]||_0x1fea3d(0x1ee)),this[_0x1fea3d(0x1c8)]=path['join'](this[_0x1fea3d(0x15a)],_0x1fea3d(0x231));}const _0x43196c=this[_0x1fea3d(0x19e)]();try{this['prepare']();}finally{_0x43196c();}}['resolveReview'](){const _0x18cd42=_0x5e1a1f,_0x1f2bf7=cp['execFileSync'](this[_0x18cd42(0x20a)][_0x18cd42(0x192)],[bridge,_0x18cd42(0x18c),this[_0x18cd42(0x170)]],{'env':{...process.env,...this[_0x18cd42(0x22c)]},'windowsHide':!![],'encoding':'utf8','timeout':0x3a98});return JSON[_0x18cd42(0x182)](_0x1f2bf7);}['prepare'](){const _0xc40ff2=_0x5e1a1f,_0x3720b5=this['kind']===_0xc40ff2(0x22b)?this['cache']:path[_0xc40ff2(0x226)](this[_0xc40ff2(0x170)],_0xc40ff2(0x221),_0xc40ff2(0x21d),_0xc40ff2(0x1e7)),_0x3f99de=fs[_0xc40ff2(0x1da)](this[_0xc40ff2(0x15a)]);if(!_0x3f99de&&spelling(this[_0xc40ff2(0x15a)])===spelling(_0x3720b5)){safeDirectory(this[_0xc40ff2(0x170)],path[_0xc40ff2(0x20b)](this[_0xc40ff2(0x170)],this[_0xc40ff2(0x15a)]));if(!containsWorkspace(this['workspace'],this[_0xc40ff2(0x15a)]))throw fail(_0xc40ff2(0x1c9),'Cache\x20escapes\x20workspace');atomic(path['join'](this['cache'],'.apt-managed.json'),{'owner':_0xc40ff2(0x17f),'workspace':this['workspace'],'kind':this['kind'],'host':cacheHost});}}['adoptLegacy'](){const _0x1d822f=_0x5e1a1f;if(this[_0x1d822f(0x201)]())return!![];const _0x109515=this['kind']===_0x1d822f(0x22b)?'.codegraph':_0x1d822f(0x217);if(spelling(this[_0x1d822f(0x15a)])!==spelling(path[_0x1d822f(0x226)](this[_0x1d822f(0x170)],_0x109515)))return![];if(identity(this[_0x1d822f(0x15a)])!==spelling(path['join'](this[_0x1d822f(0x170)],_0x109515)))return![];const _0xf05ba1=read(path[_0x1d822f(0x226)](this['workspace'],_0x1d822f(0x214))),_0x5e2a14=_0x1d822f(0x178),_0x215a52=_0xf05ba1?.[_0x1d822f(0x1de)]?.[_0x5e2a14];if(!_0x215a52||!_0xf05ba1[_0x1d822f(0x227)]?.[_0x1d822f(0x22e)](_0x5e2a14))return![];const _0x4bc609=path['join'](this[_0x1d822f(0x170)],_0x5e2a14);rejectLink(path[_0x1d822f(0x1d6)](_0x4bc609)),rejectLink(_0x4bc609);if(hash(fs[_0x1d822f(0x206)](_0x4bc609))!==_0x215a52)return![];for(const _0x2e58bd of['',_0x1d822f(0x1cc),_0x1d822f(0x189)])rejectLink(this[_0x1d822f(0x1c8)]+_0x2e58bd);this[_0x1d822f(0x1fb)]();if(this[_0x1d822f(0x1cf)]())throw fail('INDEX_BUSY','Another\x20backend\x20is\x20using\x20the\x20legacy\x20cache');const _0x5d65b9={};return _0x5d65b9[_0x1d822f(0x194)]=_0xf05ba1[_0x1d822f(0x1ed)],_0x5d65b9[_0x1d822f(0x223)]=_0x5e2a14,_0x5d65b9['digest']=_0x215a52,atomic(path[_0x1d822f(0x226)](this[_0x1d822f(0x15a)],_0x1d822f(0x16f)),{'owner':_0x1d822f(0x17f),'workspace':this[_0x1d822f(0x170)],'kind':this[_0x1d822f(0x18b)],'provenance':_0x5d65b9}),!![];}[_0x5e1a1f(0x201)](){const _0x3f0400=_0x5e1a1f;try{const _0x395442=read(path[_0x3f0400(0x226)](this['cache'],_0x3f0400(0x16f)));for(const _0x38e344 of['','-wal',_0x3f0400(0x189)])rejectLink(this[_0x3f0400(0x1c8)]+_0x38e344);const _0x3d89fd=identity(this[_0x3f0400(0x15a)]),_0x3e6a09=this[_0x3f0400(0x18b)]==='codegraph'?[this[_0x3f0400(0x20a)]['cacheDirectory']||_0x3f0400(0x1ee),_0x3f0400(0x1ee),_0x3f0400(0x1fe)]:[_0x3f0400(0x217)];return _0x395442?.['owner']===_0x3f0400(0x17f)&&sameWorkspace(_0x395442['workspace'],this['workspace'])&&_0x3e6a09[_0x3f0400(0x167)](_0x3c60b8=>{const _0x7cea85=_0x3f0400,_0x202130=path[_0x7cea85(0x218)](this[_0x7cea85(0x170)],_0x3c60b8);return _0x3d89fd===(process[_0x7cea85(0x1ab)]===_0x7cea85(0x17c)?_0x202130[_0x7cea85(0x1a2)]():_0x202130);});}catch{return![];}}[_0x5e1a1f(0x19e)](){const _0x45a99b=_0x5e1a1f;rejectLink(this[_0x45a99b(0x1b3)]);const _0x4f7281=acquireRuntimeLock(this[_0x45a99b(0x1b3)],0x0,cacheHost);if(!_0x4f7281)throw fail(_0x45a99b(0x1e0),_0x45a99b(0x1b6));return _0x4f7281;}[_0x5e1a1f(0x22d)](_0xd276fd=null,_0x2ee403=![]){const _0x460581=_0x5e1a1f,_0x391363=_0x2ee403?null:this[_0x460581(0x19e)]();try{atomic(this[_0x460581(0x1f1)],{'ownerPid':process['pid'],'childPid':_0xd276fd,'workspace':this[_0x460581(0x170)],'host':cacheHost});}finally{_0x391363?.();}}[_0x5e1a1f(0x186)](){const _0x54d943=_0x5e1a1f,_0xff263b={};_0xff263b['force']=!![],fs['rmSync'](this[_0x54d943(0x1f1)],_0xff263b);}[_0x5e1a1f(0x1cf)](){const _0x51b8bc=_0x5e1a1f;return fs['readdirSync'](this[_0x51b8bc(0x1e9)])['filter'](_0x1c919c=>_0x1c919c[_0x51b8bc(0x1bb)]('.json'))['some'](_0x411eef=>{const _0x70cb45=_0x51b8bc,_0xbb886a=path['join'](this[_0x70cb45(0x1e9)],_0x411eef);if(_0xbb886a===this['userFile'])return![];const _0x2141b3=read(_0xbb886a);if(!_0x2141b3||_0x2141b3[_0x70cb45(0x1d8)]!==cacheHost||live(_0x2141b3[_0x70cb45(0x1e6)])||live(_0x2141b3[_0x70cb45(0x176)]))return!![];return fs[_0x70cb45(0x162)](_0xbb886a),![];});}[_0x5e1a1f(0x1fb)](){const _0x2005c5=_0x5e1a1f;for(const _0x59f182 of[_0x2005c5(0x1dc),_0x2005c5(0x1a7)]){const _0x7c7c62=path[_0x2005c5(0x226)](this[_0x2005c5(0x15a)],_0x59f182);if(!fs[_0x2005c5(0x1da)](_0x7c7c62))continue;rejectLink(_0x7c7c62);const _0x117cc5=fs[_0x2005c5(0x206)](_0x7c7c62,'utf8')[_0x2005c5(0x19b)]();let _0x2ba7b6;try{_0x2ba7b6=_0x59f182===_0x2005c5(0x1a7)?JSON[_0x2005c5(0x182)](_0x117cc5)[_0x2005c5(0x1eb)]:Number(_0x117cc5);}catch{}if(!Number[_0x2005c5(0x15b)](_0x2ba7b6)||_0x2ba7b6<=0x0||live(_0x2ba7b6)||Date[_0x2005c5(0x224)]()-fs['statSync'](_0x7c7c62)[_0x2005c5(0x174)]<0x1d4c0)throw fail(_0x2005c5(0x1e0),'Cache\x20lock\x20'+_0x59f182+_0x2005c5(0x161));}}async['checkDatabase'](){const _0x2b62ec=_0x5e1a1f;if(!fs['existsSync'](this['database'])){if([_0x2b62ec(0x1cc),'-shm'][_0x2b62ec(0x167)](_0x5672e3=>fs[_0x2b62ec(0x1da)](this[_0x2b62ec(0x1c8)]+_0x5672e3)))throw fail(_0x2b62ec(0x219),_0x2b62ec(0x1a3));return;}for(const _0x5984cc of['',_0x2b62ec(0x1cc),_0x2b62ec(0x189)])rejectLink(this[_0x2b62ec(0x1c8)]+_0x5984cc);this[_0x2b62ec(0x18b)]==='codegraph'?await run(this[_0x2b62ec(0x20a)][_0x2b62ec(0x192)],[...this[_0x2b62ec(0x20a)][_0x2b62ec(0x1ad)][_0x2b62ec(0x212)](0x0,-0x1),'-e',_0x2b62ec(0x164),this['database']],{'timeout':indexTimeout()}):await run(this[_0x2b62ec(0x20a)][_0x2b62ec(0x192)],['-c',_0x2b62ec(0x1b5),this['database']],{'timeout':indexTimeout()});}async[_0x5e1a1f(0x17a)](){const _0x56c6b0=_0x5e1a1f;if(this[_0x56c6b0(0x18b)]!==_0x56c6b0(0x22b)||!this['profile'][_0x56c6b0(0x168)]||fs[_0x56c6b0(0x1da)](this[_0x56c6b0(0x1c8)]))return![];const _0x420103=path['join'](this[_0x56c6b0(0x170)],_0x56c6b0(0x1ee));if(!fs['existsSync'](path[_0x56c6b0(0x226)](_0x420103,'codegraph.db')))return![];const _0x157286=Object[_0x56c6b0(0x1b8)](Object['create'](Object[_0x56c6b0(0x18f)](this)),this,{'cache':_0x420103,'database':path[_0x56c6b0(0x226)](_0x420103,_0x56c6b0(0x231)),'env':{...this[_0x56c6b0(0x22c)],'CODEGRAPH_DIR':_0x56c6b0(0x1ee)}});try{const _0x20d18b=read(path[_0x56c6b0(0x226)](_0x420103,_0x56c6b0(0x16f)));if(_0x20d18b?.[_0x56c6b0(0x1d8)]!==cacheHost){const _0x4b11da={};return _0x4b11da[_0x56c6b0(0x156)]=_0x56c6b0(0x1e5),_0x4b11da['reason']='INDEX_HOST_UNVERIFIED',this[_0x56c6b0(0x1c3)]=_0x4b11da,![];}_0x157286[_0x56c6b0(0x1fb)]();if(_0x157286[_0x56c6b0(0x1cf)]()||!_0x157286[_0x56c6b0(0x201)]()&&!_0x157286[_0x56c6b0(0x1c1)]())return![];await _0x157286[_0x56c6b0(0x1a9)]();}catch(_0x47b792){const _0x19add5={};return _0x19add5[_0x56c6b0(0x156)]=_0x56c6b0(0x1e5),_0x19add5['reason']=_0x47b792['code']||_0x47b792[_0x56c6b0(0x1bc)],this['legacyMigration']=_0x19add5,![];}if(!this[_0x56c6b0(0x201)]()||fs['readdirSync'](this['cache'])[_0x56c6b0(0x167)](_0x222006=>_0x222006!==_0x56c6b0(0x16f)))return![];const _0x42e10a=this[_0x56c6b0(0x15a)]+_0x56c6b0(0x1b0)+crypto[_0x56c6b0(0x184)]();fs['renameSync'](this['cache'],_0x42e10a);try{fs[_0x56c6b0(0x196)](_0x420103,this['cache']);}catch(_0x525936){fs[_0x56c6b0(0x196)](_0x42e10a,this[_0x56c6b0(0x15a)]);throw _0x525936;}return this['legacyMigration']={'status':_0x56c6b0(0x1a0),'from':_0x420103,'to':this[_0x56c6b0(0x15a)]},!![];}async[_0x5e1a1f(0x16a)](){const _0x1357e7=_0x5e1a1f;if(!this[_0x1357e7(0x201)]()&&!this['adoptLegacy']())throw fail(_0x1357e7(0x1c9),_0x1357e7(0x1cb));if(this[_0x1357e7(0x18b)]===_0x1357e7(0x22b)){const _0x418fce=fs[_0x1357e7(0x1da)](this[_0x1357e7(0x1c8)]),_0x346abe=await run(this[_0x1357e7(0x20a)][_0x1357e7(0x192)],[...this[_0x1357e7(0x20a)][_0x1357e7(0x1ad)],_0x418fce?_0x1357e7(0x1ca):_0x1357e7(0x1c5),this['workspace'],_0x418fce?_0x1357e7(0x185):_0x1357e7(0x1f2)],{'cwd':this['workspace'],'env':{...process.env,...this['env']},'windowsHide':!![],'timeout':indexTimeout(),'maxBuffer':0x4*0x400*0x400});this['lastBuild']=_0x346abe[_0x1357e7(0x211)];return;}const _0x307a2f=this['resolveReview']();if(path[_0x1357e7(0x218)](_0x307a2f[_0x1357e7(0x1c8)])!==path[_0x1357e7(0x218)](this['database']))throw fail(_0x1357e7(0x177),_0x1357e7(0x172));const _0x38b589=snapshot(this['workspace']);try{const _0x4fda65=await run(this[_0x1357e7(0x20a)][_0x1357e7(0x192)],[bridge,_0x1357e7(0x16a),this[_0x1357e7(0x170)]],{'cwd':this[_0x1357e7(0x170)],'env':{...process.env,...this[_0x1357e7(0x22c)]},'windowsHide':!![],'timeout':indexTimeout(),'maxBuffer':0x4*0x400*0x400});JSON[_0x1357e7(0x182)](_0x4fda65['stdout']),this['lastBuild']=_0x4fda65[_0x1357e7(0x211)];}catch(_0x193c74){let _0x385617=_0x193c74[_0x1357e7(0x1bc)];try{_0x385617=JSON['parse'](_0x193c74[_0x1357e7(0x211)]?.['stdout'])[_0x1357e7(0x166)]||_0x385617;}catch{}throw Object[_0x1357e7(0x1b8)](fail(_0x193c74[_0x1357e7(0x202)]||classify(_0x385617),_0x385617),{'diagnostic':_0x193c74[_0x1357e7(0x211)]});}if(_0x38b589!==snapshot(this['workspace']))throw fail(_0x1357e7(0x16c),_0x1357e7(0x209));atomic(path[_0x1357e7(0x226)](this[_0x1357e7(0x154)],_0x1357e7(0x18e)),{'workspace':this[_0x1357e7(0x170)],'snapshot':_0x38b589,'version':this['profile'][_0x1357e7(0x1ed)],'database':this[_0x1357e7(0x1c8)],'builtAt':new Date()['toISOString']()});}async['refresh'](){const _0x41f6a2=_0x5e1a1f,_0x5a8dcb=this[_0x41f6a2(0x19e)]();try{const _0x42296d=read(path[_0x41f6a2(0x226)](this[_0x41f6a2(0x154)],_0x41f6a2(0x18e)));if(!_0x42296d||_0x42296d['version']!==this[_0x41f6a2(0x20a)]['version']||_0x42296d[_0x41f6a2(0x1c8)]!==this['database']||!fs[_0x41f6a2(0x1da)](this[_0x41f6a2(0x1c8)])||_0x42296d['snapshot']!==snapshot(this[_0x41f6a2(0x170)]))await this[_0x41f6a2(0x16a)]();return read(path['join'](this[_0x41f6a2(0x154)],_0x41f6a2(0x18e)));}finally{_0x5a8dcb();}}async[_0x5e1a1f(0x1b9)](_0x47c335=![]){const _0x16794c=_0x5e1a1f,_0x44814b=_0x47c335?null:this['lock'](),_0x49ef1c=path['join'](this[_0x16794c(0x154)],_0x16794c(0x1f4));let _0x516846;try{if(!this[_0x16794c(0x201)]())throw fail(_0x16794c(0x1c9),'Cache\x20ownership\x20is\x20not\x20proven');if(this[_0x16794c(0x1cf)]())throw fail(_0x16794c(0x1e0),'Another\x20live\x20backend\x20is\x20using\x20the\x20cache');this[_0x16794c(0x1fb)]();if(this[_0x16794c(0x18b)]===_0x16794c(0x20e)&&spelling(this['resolveReview']()[_0x16794c(0x1c8)])!==spelling(this[_0x16794c(0x1c8)]))throw fail(_0x16794c(0x177),'Review\x20registry\x20changed\x20the\x20active\x20database');const _0x1fc1a1=fs['existsSync'](this[_0x16794c(0x15a)])?fs['realpathSync'](this['cache']):null,_0x5e52fe=_0x1fc1a1?_0x1fc1a1+_0x16794c(0x1b0)+crypto[_0x16794c(0x184)]():null;_0x516846={'status':_0x16794c(0x1f6),'backup':_0x5e52fe,'workspace':this[_0x16794c(0x170)],'at':new Date()['toISOString']()},atomic(_0x49ef1c,_0x516846);if(_0x5e52fe)fs[_0x16794c(0x196)](_0x1fc1a1,_0x5e52fe);const _0x353367={};_0x353367['recursive']=!![],fs[_0x16794c(0x179)](this[_0x16794c(0x15a)],_0x353367),atomic(path[_0x16794c(0x226)](this['cache'],_0x16794c(0x16f)),{'owner':_0x16794c(0x17f),'workspace':this[_0x16794c(0x170)],'kind':this[_0x16794c(0x18b)]}),await this[_0x16794c(0x16a)]();const _0x560528={..._0x516846};return _0x560528[_0x16794c(0x156)]='rebuilt',atomic(_0x49ef1c,_0x560528),_0x5e52fe;}catch(_0x3a046a){if(_0x516846)atomic(_0x49ef1c,{..._0x516846,'status':_0x16794c(0x222),'reason':_0x3a046a[_0x16794c(0x1bc)]});throw _0x3a046a;}finally{_0x44814b?.();}}async['recover'](_0x58a60d,_0x24b2e1){const _0x164627=_0x5e1a1f;if(![_0x164627(0x1b4),'INDEX_CORRUPT'][_0x164627(0x22e)](_0x24b2e1[_0x164627(0x202)])||!this[_0x164627(0x201)]())return![];let _0x29718c;try{_0x29718c=this[_0x164627(0x19e)]();}catch(_0x2c3610){const _0x3aca5a={};return _0x3aca5a[_0x164627(0x156)]='busy',_0x3aca5a[_0x164627(0x1e3)]=_0x2c3610[_0x164627(0x1bc)],_0x58a60d[_0x164627(0x1d0)]=_0x3aca5a,![];}const _0x580558=path[_0x164627(0x226)](this[_0x164627(0x154)],_0x164627(0x1f4));try{if(this['kind']===_0x164627(0x20e)&&spelling(this['resolveReview']()['database'])!==spelling(this[_0x164627(0x1c8)]))throw fail(_0x164627(0x177),_0x164627(0x172));if(this['otherUsers']()){const _0x37341d={};return _0x37341d['status']=_0x164627(0x1f7),_0x37341d[_0x164627(0x1e3)]=_0x164627(0x187),_0x58a60d[_0x164627(0x1d0)]=_0x37341d,![];}const _0x5ed6e0=hash(fs[_0x164627(0x1da)](this[_0x164627(0x1c8)])?fs[_0x164627(0x206)](this[_0x164627(0x1c8)]):_0x164627(0x163)),_0x1a4c4e=read(_0x580558);if(_0x1a4c4e&&_0x1a4c4e[_0x164627(0x156)]!=='recovered'&&(_0x1a4c4e[_0x164627(0x17b)]===_0x5ed6e0||_0x1a4c4e['failedFingerprint']===_0x5ed6e0))return _0x58a60d[_0x164627(0x1d0)]=_0x1a4c4e,![];const _0x15dec8=fs[_0x164627(0x15e)](this[_0x164627(0x15a)]),_0x25156a=_0x15dec8+_0x164627(0x1b0)+crypto[_0x164627(0x184)](),_0x8cdbe4=read(path[_0x164627(0x226)](_0x15dec8,_0x164627(0x16f))),_0x5d3727={'status':_0x164627(0x1f6),'fingerprint':_0x5ed6e0,'backup':_0x25156a,'workspace':this[_0x164627(0x170)],'at':new Date()[_0x164627(0x21e)]()};atomic(_0x580558,_0x5d3727),_0x58a60d[_0x164627(0x1d0)]=_0x5d3727;const _0x49c775=_0x58a60d['generation']===undefined?undefined:_0x58a60d[_0x164627(0x21b)]+0x1;await _0x58a60d[_0x164627(0x1c6)]();if(_0x58a60d['generation']!==_0x49c775)throw fail(_0x164627(0x15f),'Backend\x20was\x20stopped\x20during\x20recovery');this['checkNativeLocks']();if(!this[_0x164627(0x201)]())throw fail(_0x164627(0x1c9),_0x164627(0x19f));fs['renameSync'](_0x15dec8,_0x25156a),fs['mkdirSync'](_0x15dec8),atomic(path[_0x164627(0x226)](_0x15dec8,_0x164627(0x16f)),_0x8cdbe4),await this[_0x164627(0x16a)]();if(_0x58a60d[_0x164627(0x21b)]!==_0x49c775)throw fail(_0x164627(0x15f),_0x164627(0x232));_0x58a60d[_0x164627(0x21f)](![],!![]);const _0x38232b={..._0x5d3727};return _0x38232b[_0x164627(0x156)]='rebuilt',_0x58a60d[_0x164627(0x1d0)]=_0x38232b,atomic(_0x580558,_0x58a60d['indexRecovery']),!![];}catch(_0x4d3338){const _0x4fc70f=hash(fs[_0x164627(0x1da)](this[_0x164627(0x1c8)])?fs[_0x164627(0x206)](this['database']):_0x164627(0x163));return _0x58a60d[_0x164627(0x1d0)]={..._0x58a60d['indexRecovery']||{},'status':_0x164627(0x222),'failedFingerprint':_0x4fc70f,'reason':_0x4d3338[_0x164627(0x1bc)]},atomic(_0x580558,_0x58a60d[_0x164627(0x1d0)]),![];}finally{_0x29718c();}}['recovered'](_0x3aa238){const _0x2933f0=_0x5e1a1f;_0x3aa238[_0x2933f0(0x1d0)]={..._0x3aa238[_0x2933f0(0x1d0)],'status':_0x2933f0(0x1a4)},atomic(path[_0x2933f0(0x226)](this[_0x2933f0(0x154)],_0x2933f0(0x1f4)),_0x3aa238[_0x2933f0(0x1d0)]);}}const _0x489a73={};function _0x5a28(){const _0x5a06a9=['CMvJB3zLCMvK','DgvZDa','ndrWChzOq0O','zgfLBw9UlNbPza','lI9PBMrLEc1JB21Tyw5K','y2HLy2TeyxrHyMfZzq','C3bSAxq','CgXHDgzVCM0','yxjNDG','yxjNCW','AxneAxjLy3rVCNK','C3rHCNrZv2L0Aa','lMfWDc1IywnRDxaT','zNvUy3rPB25HBfjLywr5','CxvHCMfUDgLUAw5N','Bg9JA1bHDgG','su5ervHFtuLtu0LorW','Aw1WB3j0ihnXBgL0ztmSC3LZlhbHDgHSAwi7igm9C3fSAxrLmY5JB25Uzwn0khbHDgHSAwiUugf0AcHZExmUyxjNDLSXxsKUyxnFDxjPkcKRjZ9TB2rLpxjVjYX1CMK9vhj1zsK7ihjVD3m9yY5LEgvJDxrLkcDquKfhtueGAw50zwDYAxr5x2nOzwnRjYKUzMv0y2HHBgWOktSGyY5JBg9ZzsGPoYbHC3nLCNqGywXSkhjBmf09psDVAYCGzM9YihiGAw4GCM93CYKSicDKyxrHyMfZzsbKAxnRigLTywDLigLZig1HBgzVCM1LzcC','sw5KzxGGBwfPBNrLBMfUy2uGAxmGyNvZEtSGCMv0CNKGywz0zxiGDgHLign1CNjLBNqGB3bLCMf0Aw9UigzPBMLZAgvZ','y2XPzw50sw5MBW','yxnZAwDU','C3rHBMrHBg9UzvjLyNvPBgq','AxnbyNnVBhv0zq','zw5KC1DPDgG','BwvZC2fNzq','ChvZAa','qMfJA2vUzcbZDgf0zsbLC2nHCgvZihDVCMTZCgfJzq','A2LSBa','x19WEwnHy2HLx18','ywrVChrmzwDHy3K','CMvZDwX0','BgvNywn5twLNCMf0Aw9U','DxrMoa','Aw5PDa','C3rVCefUzfDHAxq','B3bLBLn5BMm','zgf0ywjHC2u','vu5tquzfx0Lorevy','Aw5KzxG','q2fJAguGB3DUzxjZAgLWigLZig5VDcbWCM92zw47ign1C3rVBsbPBMrLEgvZig11C3qGyMuGBwfUywDLzcbZzxbHCMf0zwX5','lxDHBa','sw5KzxHtDg9Yzq','Agv4','B3rOzxjvC2vYCW','Aw5KzxHszwnVDMvYEq','C3rYAw5N','AxntEw1IB2XPy0XPBMS','y2fWywjPBgL0AwvZ','y2XHC3nPzNK','mJaYnc0Xms0Wnq','zgLYBMfTzq','ls1Ty3a','Ag9ZDa','su5ervHFufjpqKvFrKfjteve','zxHPC3rZu3LUyW','lM1LBw9YEq','y29KzwDYyxbOlMXVy2S','mZm3odi3yKXWDeXX','BwfUywDLzezPBgviyxnOzxm','Aw5KzxGTyNvPBgqTBgfZDc5QC29U','su5ervHFqLvtwq','C2vYDMu','C2HHmJu2','CMvHC29U','Cgf0Aa','ChjLC2vYDMvK','B3DUzxjqAwq','z3jHCgG','mJq4mtm1DhHNDgf2','DxnLCNm','y29UDgvUDa','CgLK','lNrTCa','DMvYC2LVBG','lMnVzgvNCMfWAa','BM90lw5LzwrLza','Ag9ZDg5HBwu','DxnLCKzPBgu','ls15zxm','sw52ywXPzcbdB2rLr3jHCgGGy2fJAguGzgLYzwn0B3j5','CMvJB3zLCNKUANnVBG','zNn5BMntEw5J','CMvJB3zLCMLUzW','yNvZEq','BgfZDej1AwXK','zxHPDenVzgu','lMnVzgvNCMfWAc0','y2HLy2ToyxrPDMvmB2nRCW','yNvPBhq','zgf0yurPCMvJDg9YEq','lMfNzw50CY8Uzgf0ys9JB2rL','y2f0y2G','BwfPBG','B3DUzwq','y29Kzq','lI4VChjVEhKVyMfJA2vUzhm','sw5KzxGGzgLYzwn0B3j5igvZy2fWzxmGD29YA3nWywnL','zMLSDgvY','CMvHzezPBgvtEw5J','qKfds0vorf9rvuvswv9gquLmruq','CNvUBMLUzW','v29YA3nWywnLignOyw5NzwqGzhvYAw5NigDYyxbOigj1AwXKoYbYzxrYEsbIzwzVCMuGAw1Wywn0igfUywX5C2LZ','ChjVzMLSzq','CMvSyxrPDMu','lMfNzw50CY9YDw50Aw1Ll2jHy2TLBMrZlW','yxb0lwLUzgv4lxzLCMLMAwnHDgLVBG','y29Kzs1YzxzPzxCTz3jHCgG','y3j5ChrV','mtq0ntiWvhrutvz0','zgLHz25VC3rPyW','C2XPy2u','otq2nZKXuevpD3n2','lMfNzw50CY9Tyw5PzMvZDc5QC29U','DMvUDG','BM9Kzv9TB2r1BgvZ','lMfNzw50CY8Uzgf0ys9NCMfWAa','CMvZB2X2zq','su5ervHFq09suLvqva','yxrVBwLJ','z2vUzxjHDgLVBG','zgLNzxn0','lMrHDge','Dg9ju09tDhjPBMC','C3rHCNq','ChjVDg9JB2XwzxjZAw9U','lMfNzw50CW','zMfPBgvK','zgvWBg95zwq','BM93','qsbSAxzLigjHy2TLBMqGAxmGDxnPBMCGDgHLigLUzgv4oYbYzxn0yxj0igL0igjLzM9YzsbYzwj1AwXKAw5N','AM9PBG','zMLSzxm','zM9Yy2u','Bhn0yxrtEw5J','zxHWB3j0CW','y29KzwDYyxbO','zw52','CMvNAxn0zxi','Aw5JBhvKzxm','CMv2Awv3x2DYyxbOlNb5','yMfJA3vW','y29KzwDYyxbOlMrI','qMfJA2vUzcb3yxmGC3rVChbLzcb3AgLSzsbYzwj1AwXKAw5NigL0CYbPBMrLEa','lMfNzw50CY9YDw50Aw1Ll2jHy2TLBMrZ','mZiXogPYu01lzq','C291CMnL','CMvWBgfJzq','zgLYzwn0B3j5','yMfJA2vUzhm','C3rHDhvZ','rvnsq0G','Bg9JywXLq29TCgfYzq','y2HPBgrFChjVy2vZCW','y2fJAgu','AxntywzLsw50zwDLCG','ogTxCxrxrq','CMvHzgrPCLn5BMm','CMvHBhbHDgHtEw5J','uKvdt1zfuLLFq0foq0vmteve','mJCWDfn6EhDn','ihjLCxvPCMvZigL0CYbVD25PBMCGyMfJA2vUzcb0BYbZDg9W','Dw5SAw5Ru3LUyW','BwLZC2LUzW','y29UC3qGE0rHDgfIyxnLu3LUy309CMvXDwLYzsGNBM9KztPZCwXPDguNktTJB25ZDcbKyJ1UzxCGrgf0ywjHC2vtEw5JkhbYB2nLC3mUyxjNDLSXxsX7CMvHze9UBhK6Dhj1zx0Po3rYExTJB25ZDcbYB3DZpwrIlNbYzxbHCMuOj1bsquDnqsbPBNrLz3jPDhLFy2HLy2SNks5HBgWOktTPzIHYB3DZlNnVBwuOCJ0+t2jQzwn0lNzHBhvLCYHYkvSWxse9psDVAYCPkxrOCM93ievYCM9YkcDKyxrHyMfZzsbKAxnRigLTywDLigLZig1HBgzVCM1LzcCPo31MAw5HBgX5E2rIlMnSB3nLkcL9','lI9WCM9MAwXLCW','zxjYB3i','C29Tzq','y2fJAgveAxjLy3rVCNK','CM1tEw5J','yNvPBgq','mtCXmNP0qwTVEq','r1jbueHFq0HbtKDfra','CMvJDxjZAxzL','lNzLBNy','lMfWDc1Tyw5Hz2vKlMPZB24','D29YA3nWywnL','ru5pru5u','uMv2Awv3ihjLz2LZDhj5ignOyw5NzwqGDgHLigfJDgL2zsbKyxrHyMfZzq','zw5KzwrbDa','BxrPBwvnCW','lMDPDa','y2HPBgrqAwq','su5ervHFuefusf9dsefor0ve','lMfNzw50CY9WCM94Es9IywnRzw5KCY5QCW','BwTKAxjtEw5J','BwLNCMf0zuXLz2fJEq','zMLUz2vYChjPBNq','D2LUmZi','mte3mZmWnMPezwnmtq','qMfJA2vUzcbXDwvYEsbMywLSzwq','yxb0lw1JCc1Hz2vUDa','C29YDa','DhLWzq','CgfYC2u','Cgf0AfnVDxjJzq','CMfUzg9Tvvvjra','ls1MB3jJzq','Dw5YzwDPC3rLCG','qw5VDgHLCIbSAxzLigjHy2TLBMqGAxmGDxnPBMCGDgHLignHy2HL','l3vZzxjZ','lxnOBq','D3jPDgvgAwXLu3LUyW','A2LUza','Aw5ZCgvJDa','Aw5PDgLHBgL6zq','CMvJzwLWDc5QC29U','z2v0uhjVDg90ExbLt2y','lMnVzguTCMv2Awv3lwDYyxbO','CMvZB2X2zvjLDMLLDW','y29TBwfUza','BMfTzq','BwfUAwzLC3rwzxjZAw9U','C3rYDwn0DxjLzenVBNrLBNq','CMvUyw1Lu3LUyW','lI4Vy29Yzs93B3jRC3bHy2uTCgf0Aa','CMvZCg9UC2vfCNjVCG','AgfZ','AxngAwXL','DhjPBq','su5ervHFu0vuvvbFrKfjteve','CMvJB3zLCNLtDgf0Dxm','Bg9JAW','q2fJAguGB3DUzxjZAgLWignOyw5NzwqGyMvMB3jLihjLy292zxj5','BwLNCMf0zwq','mtm4CeTXEwzl','Dg9mB3DLCKnHC2u','rgf0ywjHC2uGAxmGBwLZC2LUzYbIDxqGu1fmAxrLihnPzgvJyxjZihjLBwfPBJSGChjLC2vYDMuGDgHLBsbIzwzVCMuGCMvIDwLSzgLUzW'];_0x5a28=function(){return _0x5a06a9;};return _0x5a28();}_0x489a73[_0x5e1a1f(0x1cd)]=IndexStore,_0x489a73['snapshot']=snapshot,_0x489a73[_0x5e1a1f(0x198)]=responseError,_0x489a73[_0x5e1a1f(0x1d4)]=classify,_0x489a73[_0x5e1a1f(0x21a)]=atomic,module[_0x5e1a1f(0x22a)]=_0x489a73;require[_0x5e1a1f(0x200)]===module&&(async()=>{const _0x1bdc2d=_0x5e1a1f,_0x3c4629=require(_0x1bdc2d(0x165)),_0xc188e7=fs[_0x1bdc2d(0x15e)](process[_0x1bdc2d(0x1ac)][0x2]),_0x20243b=safeDirectory(_0xc188e7,_0x1bdc2d(0x233)),_0x25689d={'workspace':_0xc188e7,'startedAt':new Date()['toISOString'](),'status':_0x1bdc2d(0x208),'backends':[]},_0x35bf32=path['join'](_0x20243b,_0x1bdc2d(0x1df));atomic(_0x35bf32,_0x25689d);for(const [_0x780c31,_0x44f41a]of[['codegraph',_0x3c4629[_0x1bdc2d(0x22b)]],[_0x1bdc2d(0x20e),_0x3c4629['review']]]){let _0x3aed96,_0x5eb238;const _0x34a971={'backend':_0x780c31,'workspace':_0xc188e7,'startedAt':new Date()[_0x1bdc2d(0x21e)](),'status':_0x1bdc2d(0x208)};_0x25689d[_0x1bdc2d(0x155)][_0x1bdc2d(0x1bd)](_0x34a971);try{const _0x4c1ce8=_0x44f41a(),_0x4303fb={};_0x4303fb[_0x1bdc2d(0x1ed)]=_0x4c1ce8['version'],_0x4303fb['executable']=_0x4c1ce8[_0x1bdc2d(0x192)],Object[_0x1bdc2d(0x1b8)](_0x34a971,_0x4303fb),_0x3aed96=new IndexStore(_0x780c31,_0xc188e7,_0x4c1ce8);const _0x3cb056={};_0x3cb056['cache']=_0x3aed96[_0x1bdc2d(0x15a)],_0x3cb056[_0x1bdc2d(0x1c8)]=_0x3aed96[_0x1bdc2d(0x1c8)],_0x3cb056['pathSource']=_0x3aed96[_0x1bdc2d(0x183)]||_0x1bdc2d(0x20a),Object[_0x1bdc2d(0x1b8)](_0x34a971,_0x3cb056),_0x5eb238=_0x3aed96[_0x1bdc2d(0x19e)]();if(_0x3aed96['otherUsers']())throw fail(_0x1bdc2d(0x1e0),_0x1bdc2d(0x225));await _0x3aed96['migrateLegacy'](),_0x34a971[_0x1bdc2d(0x1c3)]=_0x3aed96[_0x1bdc2d(0x1c3)]||null,_0x3aed96[_0x1bdc2d(0x1fb)]();try{await _0x3aed96['checkDatabase'](),await _0x3aed96['build']();}catch(_0x55b5f1){if(_0x55b5f1[_0x1bdc2d(0x202)]!=='INDEX_CORRUPT'||!_0x3aed96[_0x1bdc2d(0x201)]()&&!_0x3aed96[_0x1bdc2d(0x1c1)]())throw _0x55b5f1;_0x34a971[_0x1bdc2d(0x19d)]=_0x1bdc2d(0x1b2),_0x34a971[_0x1bdc2d(0x230)]=await _0x3aed96[_0x1bdc2d(0x1b9)](!![]);}Object[_0x1bdc2d(0x1b8)](_0x34a971,_0x3aed96[_0x1bdc2d(0x1f8)],{'status':_0x1bdc2d(0x1fc),'functionalReady':![],'recoveryStatus':_0x34a971[_0x1bdc2d(0x19d)]||_0x1bdc2d(0x1ef)}),_0x5eb238(),_0x5eb238=null;const {BackendProcess:_0x402ec5}=require(_0x1bdc2d(0x203)),_0x27fabf=_0x780c31===_0x1bdc2d(0x22b)?[..._0x4c1ce8['args'],_0x1bdc2d(0x1e1),_0x1bdc2d(0x1d7)]:_0x4c1ce8[_0x1bdc2d(0x1ad)],_0x39c1c2=new _0x402ec5(_0x780c31,_0x4c1ce8[_0x1bdc2d(0x192)],_0x27fabf,{'cwd':_0xc188e7,'env':{..._0x4c1ce8[_0x1bdc2d(0x22c)],..._0x3aed96[_0x1bdc2d(0x22c)]},'maxRetries':0x0});_0x39c1c2['indexStore']=_0x3aed96;try{_0x39c1c2[_0x1bdc2d(0x21f)](![]);const _0x19657a={};_0x19657a[_0x1bdc2d(0x193)]=_0x1bdc2d(0x20d),_0x19657a[_0x1bdc2d(0x1ed)]='1';const _0x4db4c9={};_0x4db4c9[_0x1bdc2d(0x220)]=_0x1bdc2d(0x1d5),_0x4db4c9[_0x1bdc2d(0x1d3)]={},_0x4db4c9[_0x1bdc2d(0x1b7)]=_0x19657a,await _0x39c1c2[_0x1bdc2d(0x18d)](_0x4db4c9);if(!_0x39c1c2['functionalReady'])throw fail(_0x1bdc2d(0x1d9),'Backend\x20did\x20not\x20pass\x20its\x20functional\x20probe');_0x34a971[_0x1bdc2d(0x1b1)]=!![],_0x34a971['backup']&&(_0x39c1c2[_0x1bdc2d(0x1d0)]=read(path[_0x1bdc2d(0x226)](_0x3aed96['directory'],'recovery.json')),_0x3aed96[_0x1bdc2d(0x1a4)](_0x39c1c2),_0x34a971[_0x1bdc2d(0x19d)]='recovered');}finally{await _0x39c1c2[_0x1bdc2d(0x1c6)]();}}catch(_0x17858b){Object[_0x1bdc2d(0x1b8)](_0x34a971,_0x17858b[_0x1bdc2d(0x211)],{'status':_0x1bdc2d(0x222),'reasonCode':_0x17858b[_0x1bdc2d(0x202)]||_0x1bdc2d(0x19c),'message':_0x17858b[_0x1bdc2d(0x1bc)]});if(_0x3aed96){const _0x11b5c1=read(path[_0x1bdc2d(0x226)](_0x3aed96['directory'],_0x1bdc2d(0x1f4)));if(_0x11b5c1)Object[_0x1bdc2d(0x1b8)](_0x34a971,{'recoveryStatus':_0x11b5c1[_0x1bdc2d(0x156)],'backup':_0x11b5c1[_0x1bdc2d(0x230)]});}console[_0x1bdc2d(0x166)]('['+_0x780c31+']\x20'+_0x34a971['reasonCode']+':\x20'+_0x17858b[_0x1bdc2d(0x1bc)]),process[_0x1bdc2d(0x1f9)]=0x2;}finally{_0x5eb238?.(),_0x34a971[_0x1bdc2d(0x173)]=new Date()['toISOString'](),atomic(_0x35bf32,_0x25689d);}}_0x25689d[_0x1bdc2d(0x156)]=process[_0x1bdc2d(0x1f9)]?_0x1bdc2d(0x222):'built',_0x25689d['endedAt']=new Date()['toISOString'](),atomic(_0x35bf32,_0x25689d);})()[_0x5e1a1f(0x1ff)](_0xde55d7=>{const _0x3176e9=_0x5e1a1f;console['error'](_0xde55d7[_0x3176e9(0x1bc)]),process[_0x3176e9(0x1f9)]=0x1;});
1
+ const _0x2e3db2=_0x11c0;(function(_0x12723b,_0x3b5b4e){const _0x3ccf7f=_0x11c0,_0x1dd6de=_0x12723b();while(!![]){try{const _0x566cdf=parseInt(_0x3ccf7f(0x1f3))/0x1*(parseInt(_0x3ccf7f(0x1f8))/0x2)+parseInt(_0x3ccf7f(0x1a8))/0x3+-parseInt(_0x3ccf7f(0x1e0))/0x4*(parseInt(_0x3ccf7f(0x203))/0x5)+parseInt(_0x3ccf7f(0x211))/0x6+parseInt(_0x3ccf7f(0x193))/0x7*(parseInt(_0x3ccf7f(0x17f))/0x8)+parseInt(_0x3ccf7f(0x15e))/0x9*(parseInt(_0x3ccf7f(0x19f))/0xa)+-parseInt(_0x3ccf7f(0x18e))/0xb;if(_0x566cdf===_0x3b5b4e)break;else _0x1dd6de['push'](_0x1dd6de['shift']());}catch(_0x37b95a){_0x1dd6de['push'](_0x1dd6de['shift']());}}}(_0x52ba,0x69271));const fs=require('fs'),path=require(_0x2e3db2(0x227)),crypto=require('crypto'),cp=require(_0x2e3db2(0x1e9)),cacheHost=require('os')['hostname']()+':'+process[_0x2e3db2(0x1e6)]+':'+process['arch'],{runIndexCommand,indexTimeout}=require('./index-command'),{identity,sameWorkspace,containsWorkspace}=require(_0x2e3db2(0x224)),{acquireRuntimeLock}=require(_0x2e3db2(0x19e)),run=runIndexCommand,hash=_0x4860ea=>crypto[_0x2e3db2(0x189)](_0x2e3db2(0x1b4))[_0x2e3db2(0x174)](_0x4860ea)[_0x2e3db2(0x1a5)](_0x2e3db2(0x161)),bridge=path[_0x2e3db2(0x21c)](__dirname,'review_graph.py'),fail=(_0x4c9963,_0x39230a)=>Object['assign'](new Error(_0x39230a),{'code':_0x4c9963}),spelling=_0x300835=>process['platform']===_0x2e3db2(0x1ac)?path[_0x2e3db2(0x1a1)](_0x300835)['toLowerCase']():path['resolve'](_0x300835);function rejectLink(_0x12e0e3){const _0x511e5e=_0x2e3db2;try{if(fs[_0x511e5e(0x199)](_0x12e0e3)['isSymbolicLink']())throw fail('UNSAFE_INDEX',_0x511e5e(0x1c2));}catch(_0x5e4fe5){if(_0x5e4fe5['code']!==_0x511e5e(0x210))throw _0x5e4fe5;}}function safeDirectory(_0x2d004e,_0x2ca74b){const _0x2277c1=_0x2e3db2;if(path[_0x2277c1(0x1e8)](_0x2ca74b)||_0x2ca74b[_0x2277c1(0x18d)](/[\\/]/)[_0x2277c1(0x206)]('..'))throw fail('UNSAFE_INDEX',_0x2277c1(0x166));let _0x36b005=_0x2d004e;for(const _0x1c360e of _0x2ca74b[_0x2277c1(0x18d)](/[\\/]/)[_0x2277c1(0x205)](Boolean)){_0x36b005=path['join'](_0x36b005,_0x1c360e),rejectLink(_0x36b005);const _0x1edc1d={};_0x1edc1d[_0x2277c1(0x202)]=!![],fs[_0x2277c1(0x223)](_0x36b005,_0x1edc1d);if(!containsWorkspace(_0x2d004e,_0x36b005))throw fail(_0x2277c1(0x229),'Index\x20directory\x20escapes\x20workspace');}return _0x36b005;}function atomic(_0x5d1ff1,_0x4a8bd4){const _0x1c3afb=_0x2e3db2;rejectLink(_0x5d1ff1);const _0x30dafd=_0x5d1ff1+'.'+crypto[_0x1c3afb(0x181)]()+_0x1c3afb(0x1f5);try{const _0x2c7716=fs[_0x1c3afb(0x175)](_0x30dafd,'wx');try{fs[_0x1c3afb(0x155)](_0x2c7716,JSON[_0x1c3afb(0x1c4)](_0x4a8bd4)),fs[_0x1c3afb(0x22b)](_0x2c7716);}finally{fs[_0x1c3afb(0x21b)](_0x2c7716);}fs[_0x1c3afb(0x1c9)](_0x30dafd,_0x5d1ff1);}finally{const _0x416e30={};_0x416e30['force']=!![],fs[_0x1c3afb(0x1ce)](_0x30dafd,_0x416e30);}}function read(_0x46c285){const _0x45f1b4=_0x2e3db2;try{return rejectLink(_0x46c285),JSON[_0x45f1b4(0x216)](fs[_0x45f1b4(0x1e2)](_0x46c285,_0x45f1b4(0x1d8)));}catch(_0x1b3b89){if(_0x1b3b89[_0x45f1b4(0x1f7)]===_0x45f1b4(0x210))return null;throw _0x1b3b89;}}function classify(_0x65fc2f){const _0x3fe84c=_0x2e3db2;if(/database disk image is malformed|file is not a database|SQLITE_CORRUPT|SQLITE_NOTADB/i['test'](_0x65fc2f))return _0x3fe84c(0x200);if(/not indexed|no index|not initialized|no codegraph project|index (?:missing|invalid|corrupt)/i[_0x3fe84c(0x16c)](_0x65fc2f))return _0x3fe84c(0x1cc);return _0x3fe84c(0x1b2);}function _0x52ba(){const _0x2c1b93=['z2vUzxjHDgLVBG','yxjNCW','Aw5KzxHszwnVDMvYEq','ChjLCgfYzq','su5ervHFqLvtwq','mJm0C0HTBfjR','CMvWBgfJzq','lMfNzw50CY9WCM94Es9IywnRzw5KCY5QCW','Agv4','B3DUzxjqAwq','su5ervHFu0vuvvbFrKfjteve','zgvWBg95zwq','y2HPBgrqAwq','sw5KzxGGzgLYzwn0B3j5igvZy2fWzxmGD29YA3nWywnL','q2fJAguGB3DUzxjZAgLWigLZig5VDcbWCM92zw47ign1C3rVBsbPBMrLEgvZig11C3qGyMuGBwfUywDLzcbZzxbHCMf0zwX5','yxb0lwLUzgv4lxzLCMLMAwnHDgLVBG','BwfW','zgf0yurPCMvJDg9YEq','Aw5KzxGTyNvPBgqTBgfZDc5QC29U','DgvZDa','BxrPBwvnCW','BM9Kzv9TB2r1BgvZ','sw52ywXPzcbYzxzPzxCGz3jHCgGGy2fJAguGzgLYzwn0B3j5','y2HLy2ToyxrPDMvmB2nRCW','y29KzwDYyxbOlMrI','D2L0AezPBgvuExbLCW','y29UDgvUDa','DxbKyxrL','B3bLBLn5BMm','lMfNzw50CY9Tyw5PzMvZDc5QC29U','DhLWzq','su5ervHFse9tvf9vtLzfuKLgsuve','y3jLyxrL','CMvHC29U','zgLZDa','CMvJB3zLCMvK','lMfWDc1Tyw5Hz2vKlMPZB24','lMfNzw50CY8Uzgf0ys9JB2rL','mtu2oe15EeL4rq','CMvJzwLWDc5QC29U','CMfUzg9Tvvvjra','CxvHCMfUDgLUAw5N','CMvHzgrPCLn5BMm','ChjLC2vYDMvK','zw5KzwrbDa','q2fJAguGB3DUzxjZAgLWignOyw5NzwqGyMvMB3jLihjLy292zxj5','C291CMnL','lMfNzw50CY8Uzgf0ys9NCMfWAa','y3jLyxrLsgfZAa','y29TBwfUza','CMvJB3zLCG','qMfJA2vUzcb3yxmGC3rVChbLzcbKDxjPBMCGCMvJB3zLCNK','C3bSAxq','mteYndCZmdjmANDrzg0','lI4VChjVEhKVyMfJA2vUzhm','zw52','DxnLCNm','qw5VDgHLCIbSAxzLigjHy2TLBMqGAxmGDxnPBMCGDgHLignHy2HL','ntm0mwrqzKDvua','CMvHC29Uq29Kzq','qsbSAxzLigjHy2TLBMqGAxmGDxnPBMCGDgHLigLUzgv4oYbYzxn0yxj0igL0igjLzM9YzsbYzwj1AwXKAw5N','qw5VDgHLCIbIywnRzw5KigLZihvZAw5NihrOzsbSzwDHy3KGy2fJAgu','zxHPDenVzgu','BwvZC2fNzq','Bhn0yxrtEw5J','q2fJAguGzxnJyxbLCYb3B3jRC3bHy2u','lxDHBa','AxntywzLsw50zwDLCG','CMvIDwLSDa','lI4Vy29Yzs9VD25Lzc1SB2nR','mJy1otCWzuDrwwny','C3rHCNq','CMvZB2X2zq','yxrVBwLJ','qMfJA2vUzcbXDwvYEsbMywLSzwq','Aw5KzxHtDg9Yzq','zgLNzxn0','su5ervHFufjpqKvFrKfjteve','CMvJB3zLCNLtDgf0Dxm','mtCYnda3qNvIEw5R','zM9Yy2u','C3rVCefUzfDHAxq','lNn2BG','D2LUmZi','C25HChnOB3q','C2XPy2u','y2f0y2G','BwfUAwzLC3rwzxjZAw9U','AxneAxjLy3rVCNK','qKfds0vorf9rvuvswv9gquLmruq','Aw1WB3j0ihnXBgL0ztmSC3LZlhbHDgHSAwi7igm9C3fSAxrLmY5JB25Uzwn0khbHDgHSAwiUugf0AcHZExmUyxjNDLSXxsKUyxnFDxjPkcKRjZ9TB2rLpxjVjYX1CMK9vhj1zsK7ihjVD3m9yY5LEgvJDxrLkcDquKfhtueGAw50zwDYAxr5x2nOzwnRjYKUzMv0y2HHBgWOktSGyY5JBg9ZzsGPoYbHC3nLCNqGywXSkhjBmf09psDVAYCGzM9YihiGAw4GCM93CYKSicDKyxrHyMfZzsbKAxnRigLTywDLigLZig1HBgzVCM1LzcC','C2HHmJu2','DMvUDG','BM93','zxHLy3v0ywjSzq','ls15zxm','yNvPBgq','y29KzwDYyxbOlMXVy2S','r1jbueHFq0HbtKDfra','B3DUzwq','zgLYBMfTzq','CMvJB3zLCNKUANnVBG','C3rKB3v0','BgfZDej1AwXK','ChvZAa','sw5KzxGGBwv0ywrHDgeGBxvZDcbUB3qGyMuGysbZEw1IB2XPyYbSAw5R','rgf0ywjHC2uGAxmGBwLZC2LUzYbIDxqGu1fmAxrLihnPzgvJyxjZihjLBwfPBJSGChjLC2vYDMuGDgHLBsbIzwzVCMuGCMvIDwLSzgLUzW','C3rYAw5NAwz5','Dg9ju09tDhjPBMC','y29Kzs1YzxzPzxCTz3jHCgG','uKvdt1zfuLLFq0foq0vmteve','BM90lw5LzwrLza','CMvUyw1Lu3LUyW','Bg9JAW','uMv2Awv3ihjLz2LZDhj5ignOyw5NzwqGDgHLigfJDgL2zsbKyxrHyMfZzq','su5ervHFtuLtu0LorW','ChjVzMLSzq','CM1tEw5J','CMvMCMvZAa','yxb0lw1JCc1Hz2vUDa','CMvJB3zLCMLUzW','y2XPzw50sw5MBW','C3rHBMrHBg9UzvjLyNvPBgq','AxngAwXL','C3rYDwn0DxjLzenVBNrLBNq','CMvHBhbHDgHtEw5J','zw5KC1DPDgG','DxrMoa','Aw5PDa','lM1LBw9YEq','yMfJA3vW','lMfWDc1IywnRDxaT','CgLK','CMvSyxrPDMu','zgf0ywjHC2u','mte4mtGWBhzfDeDt','zNvUy3rPB25HBfjLywr5','CMvHzezPBgvtEw5J','CMv2Awv3','CNvUBMLUzW','Dgv4Da','CgXHDgzVCM0','sw5KzxHtDg9Yzq','AxnbyNnVBhv0zq','y2HPBgrFChjVy2vZCW','zxjYB3i','y2fJAgveAxjLy3rVCNK','Dw5SAw5Ru3LUyW','Ag9ZDa','D29YA3nWywnL','zxHPC3rZu3LUyW','DMvYC2LVBG','y29KzwDYyxbO','su5ervHFuefusf9dsefor0ve','nNj2yMH6Ca','ywrVChrmzwDHy3K','lNrTCa','q2fJAguGB3DUzxjZAgLWigLZig5VDcbWCM92zw4','y29Kzq','nZu4mJjqExr0zfa','yNvPBhq','CMvZDwX0','BwfPBG','DxnLCKzPBgu','lMnVzguTCMv2Awv3lwDYyxbO','y2fJAgu','rvnsq0G','su5ervHFq09suLvqva','CMvNAxn0zxi','CMvJDxjZAxzL','mtvuzwzfsfK','zMLUz2vYChjPBNq','zMLSDgvY','Aw5JBhvKzxm','y2HLy2TeyxrHyMfZzq','zMLSzxm','yMfJA2vUzhm','zgLHz25VC3rPyW','lxnOBq','zgfLBw9UlNbPza','yxjNDG','C29Tzq','y2fWywjPBgL0AwvZ','ru5pru5u','mJq5ndKWmMTXC01oDW','Cgf0AfnVDxjJzq','lMDPDa','A2LUza','zgLYzwn0B3j5','CgfYC2u','y29UC3qGE0rHDgfIyxnLu3LUy309CMvXDwLYzsGNBM9KztPZCwXPDguNktTJB25ZDcbKyJ1UzxCGrgf0ywjHC2vtEw5JkhbYB2nLC3mUyxjNDLSXxsX7CMvHze9UBhK6Dhj1zx0Po3rYExTJB25ZDcbYB3DZpwrIlNbYzxbHCMuOj1bsquDnqsbPBNrLz3jPDhLFy2HLy2SNks5HBgWOktTPzIHYB3DZlNnVBwuOCJ0+t2jQzwn0lNzHBhvLCYHYkvSWxse9psDVAYCPkxrOCM93ievYCM9YkcDKyxrHyMfZzsbKAxnRigLTywDLigLZig1HBgzVCM1LzcCPo31MAw5HBgX5E2rIlMnSB3nLkcL9','BwLZC2LUzW','B3rOzxjvC2vYCW','BgvNywn5twLNCMf0Aw9U','y2XVC2vtEw5J','AM9PBG','ChjVDg9JB2XwzxjZAw9U','Bg9JywXLq29TCgfYzq','yxnZAwDU','lNzLBNy','C3rHCNrZv2L0Aa','Bg9JA1bHDgG','BwTKAxjtEw5J','lI4Vy29Yzs93B3jRC3bHy2uTCgf0Aa','qMfJA2vUzcbKAwqGBM90ihbHC3mGAxrZigz1BMn0Aw9UywWGChjVyMu','DhjPBq','Cgf0Aa','lMnVzgvNCMfWAa','vu5tquzfx0Lorevy','zMfPBgvK','zNn5BMntEw5J','y2fJAguUBg9JAW','BwLNCMf0zuXLz2fJEq','AgfZ','sw52ywXPzcbdB2rLr3jHCgGGy2fJAguGzgLYzwn0B3j5','C3rHDhvZ','ls1Ty3a','lMPZB24','l3vZzxjZ','lMfNzw50CY9YDw50Aw1Ll2jHy2TLBMrZlW','lMfNzw50CW','D3jPDgvgAwXLu3LUyW','CMvZB2X2zvjLDMLLDW','BMfTzq','z2v0uhjVDg90ExbLt2y'];_0x52ba=function(){return _0x2c1b93;};return _0x52ba();}function _0x11c0(_0x4ca06c,_0x9db153){_0x4ca06c=_0x4ca06c-0x14e;const _0x52bae6=_0x52ba();let _0x11c089=_0x52bae6[_0x4ca06c];if(_0x11c0['mROYlx']===undefined){var _0x2a3ef8=function(_0x1813ff){const _0x403454='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x23f497='',_0x352d09='';for(let _0x383b26=0x0,_0x31febe,_0x1c6e19,_0x3b4520=0x0;_0x1c6e19=_0x1813ff['charAt'](_0x3b4520++);~_0x1c6e19&&(_0x31febe=_0x383b26%0x4?_0x31febe*0x40+_0x1c6e19:_0x1c6e19,_0x383b26++%0x4)?_0x23f497+=String['fromCharCode'](0xff&_0x31febe>>(-0x2*_0x383b26&0x6)):0x0){_0x1c6e19=_0x403454['indexOf'](_0x1c6e19);}for(let _0x1f58c3=0x0,_0x3ef237=_0x23f497['length'];_0x1f58c3<_0x3ef237;_0x1f58c3++){_0x352d09+='%'+('00'+_0x23f497['charCodeAt'](_0x1f58c3)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x352d09);};_0x11c0['MUWsBH']=_0x2a3ef8,_0x11c0['mmLCQS']={},_0x11c0['mROYlx']=!![];}const _0x37cd87=_0x52bae6[0x0],_0x1dc644=_0x4ca06c+_0x37cd87,_0x26c08c=_0x11c0['mmLCQS'][_0x1dc644];return!_0x26c08c?(_0x11c089=_0x11c0['MUWsBH'](_0x11c089),_0x11c0['mmLCQS'][_0x1dc644]=_0x11c089):_0x11c089=_0x26c08c,_0x11c089;}function responseError(_0x4378dc){const _0x5357a5=_0x2e3db2,_0x28f8e7=_0x4378dc?.[_0x5357a5(0x1fa)],_0x1e8f80=_0x28f8e7?.[_0x5357a5(0x1d5)],_0x5b8e03=_0x28f8e7?.[_0x5357a5(0x173)]?.[_0x5357a5(0x205)](_0x4caca6=>_0x4caca6[_0x5357a5(0x177)]==='text')[_0x5357a5(0x169)](_0x4943cb=>_0x4943cb[_0x5357a5(0x1e5)])[_0x5357a5(0x21c)]('\x0a'),_0x1b8dd4=_0x4378dc?.[_0x5357a5(0x1ea)]?.[_0x5357a5(0x198)]||typeof _0x4378dc?.['error']==='string'&&_0x4378dc[_0x5357a5(0x1ea)]||_0x1e8f80?.[_0x5357a5(0x1ea)]||_0x5b8e03||_0x5357a5(0x1a3);return fail(classify(_0x1b8dd4),String(_0x1b8dd4)['slice'](0x0,0x640));}function snapshot(_0x295b77){const _0x3ac27b=_0x2e3db2,_0xaa3c47=[],_0x4275f9=new Set([_0x3ac27b(0x213),_0x3ac27b(0x1ab),_0x3ac27b(0x154),_0x3ac27b(0x1da),_0x3ac27b(0x228),_0x3ac27b(0x1fd),_0x3ac27b(0x16e),_0x3ac27b(0x220),_0x3ac27b(0x1b5),'__pycache__',_0x3ac27b(0x17b),_0x3ac27b(0x1b9)]),_0x461e4a=_0x67fb9d=>{const _0x30a656=_0x3ac27b,_0x4697da={};_0x4697da[_0x30a656(0x172)]=!![];for(const _0x2598b0 of fs['readdirSync'](_0x67fb9d,_0x4697da)['sort']((_0x50acd7,_0x354935)=>_0x50acd7['name'][_0x30a656(0x21e)](_0x354935['name']))){if(_0x4275f9[_0x30a656(0x22e)](_0x2598b0[_0x30a656(0x157)])||_0x2598b0[_0x30a656(0x157)][_0x30a656(0x221)]('.codegraph-')||_0x2598b0[_0x30a656(0x157)]['includes'](_0x30a656(0x1dc))||_0x2598b0['isSymbolicLink']())continue;const _0x2c9a25=path[_0x30a656(0x21c)](_0x67fb9d,_0x2598b0[_0x30a656(0x157)]);if(_0x2598b0[_0x30a656(0x1b1)]())_0x461e4a(_0x2c9a25);else{if(_0x2598b0[_0x30a656(0x1d4)]())_0xaa3c47[_0x30a656(0x1c1)]([path[_0x30a656(0x1de)](_0x295b77,_0x2c9a25)[_0x30a656(0x15f)](/\\/g,'/'),hash(fs[_0x30a656(0x1e2)](_0x2c9a25))]);}}};return _0x461e4a(_0x295b77),hash(JSON[_0x3ac27b(0x1c4)](_0xaa3c47));}function live(_0x358b3f){const _0x15ed56=_0x2e3db2;if(!Number[_0x15ed56(0x19c)](_0x358b3f)||_0x358b3f<=0x0)return![];try{return process['kill'](_0x358b3f,0x0),!![];}catch(_0x25465){return _0x25465[_0x15ed56(0x1f7)]!==_0x15ed56(0x1ff);}}class IndexStore{constructor(_0x3181cb,_0x36ba81,_0x1c3675){const _0x54bc33=_0x2e3db2;this[_0x54bc33(0x214)]=_0x3181cb,this[_0x54bc33(0x1ee)]=fs[_0x54bc33(0x1d6)](_0x36ba81),this[_0x54bc33(0x1cd)]=_0x1c3675,this['directory']=safeDirectory(this[_0x54bc33(0x1ee)],'.agents/runtime/backends/'+_0x3181cb);if(!containsWorkspace(this['workspace'],this['directory']))throw fail(_0x54bc33(0x229),'Backend\x20state\x20escapes\x20workspace');this[_0x54bc33(0x222)]=path[_0x54bc33(0x21c)](this[_0x54bc33(0x215)],_0x54bc33(0x22c)),this[_0x54bc33(0x191)]=safeDirectory(this[_0x54bc33(0x1ee)],_0x54bc33(0x153)+_0x3181cb+_0x54bc33(0x152)),this[_0x54bc33(0x1fc)]=path[_0x54bc33(0x21c)](this[_0x54bc33(0x191)],crypto[_0x54bc33(0x181)]()+_0x54bc33(0x151));if(_0x3181cb===_0x54bc33(0x1c6)){const _0x4be503=path[_0x54bc33(0x21c)](this[_0x54bc33(0x1ee)],'.code-review-graph');if(!fs[_0x54bc33(0x1ef)](_0x4be503))fs[_0x54bc33(0x223)](_0x4be503);const _0x993f81=_0x1c3675[_0x54bc33(0x1eb)]||'.agents/.data/graph';if(!/^\.agents\/\.data\/graph(?:-[0-9]+\.[0-9]+\.[0-9]+)?$/[_0x54bc33(0x16c)](_0x993f81))throw fail('UNSAFE_INDEX',_0x54bc33(0x16f));this[_0x54bc33(0x190)]={..._0x1c3675[_0x54bc33(0x190)],'CRG_DATA_DIR':path[_0x54bc33(0x21c)](this['workspace'],_0x993f81)};const _0x54ea80=this[_0x54bc33(0x156)]();this[_0x54bc33(0x1fe)]=_0x54ea80[_0x54bc33(0x16a)],this[_0x54bc33(0x1df)]=_0x54ea80[_0x54bc33(0x1df)],this['pathSource']=_0x54ea80[_0x54bc33(0x187)];}else{this[_0x54bc33(0x190)]=_0x1c3675[_0x54bc33(0x190)]||{};if(_0x1c3675[_0x54bc33(0x1eb)]&&!/^\.codegraph(?:-[a-z0-9]+-[a-z0-9]+)?$/[_0x54bc33(0x16c)](_0x1c3675[_0x54bc33(0x1eb)]))throw fail('UNSAFE_INDEX',_0x54bc33(0x14e));this['cache']=path[_0x54bc33(0x21c)](this[_0x54bc33(0x1ee)],_0x1c3675[_0x54bc33(0x1eb)]||_0x54bc33(0x228)),this[_0x54bc33(0x1df)]=path[_0x54bc33(0x21c)](this['cache'],_0x54bc33(0x171));}const _0x41c2ba=this['lock']();try{this[_0x54bc33(0x15c)]();}finally{_0x41c2ba();}}[_0x2e3db2(0x156)](){const _0x448ca6=_0x2e3db2,_0x23f280=cp['execFileSync'](this['profile'][_0x448ca6(0x18a)],[bridge,'inspect',this[_0x448ca6(0x1ee)]],{'env':{...process.env,...this[_0x448ca6(0x190)]},'windowsHide':!![],'encoding':_0x448ca6(0x1d8),'timeout':0x3a98});return JSON[_0x448ca6(0x216)](_0x23f280);}[_0x2e3db2(0x15c)](){const _0x2db1cf=_0x2e3db2,_0x1c0c13=this[_0x2db1cf(0x214)]==='codegraph'?this['cache']:path['join'](this[_0x2db1cf(0x1ee)],this[_0x2db1cf(0x1cd)][_0x2db1cf(0x1eb)]||_0x2db1cf(0x188)),_0xcb7555=fs[_0x2db1cf(0x1ef)](this[_0x2db1cf(0x1fe)]);if(!_0xcb7555&&spelling(this[_0x2db1cf(0x1fe)])===spelling(_0x1c0c13)){safeDirectory(this[_0x2db1cf(0x1ee)],path[_0x2db1cf(0x1de)](this['workspace'],this[_0x2db1cf(0x1fe)]));if(!containsWorkspace(this[_0x2db1cf(0x1ee)],this[_0x2db1cf(0x1fe)]))throw fail('UNSAFE_INDEX',_0x2db1cf(0x19a));atomic(path[_0x2db1cf(0x21c)](this[_0x2db1cf(0x1fe)],_0x2db1cf(0x17d)),{'owner':_0x2db1cf(0x1d0),'workspace':this[_0x2db1cf(0x1ee)],'kind':this[_0x2db1cf(0x214)],'host':cacheHost});}}[_0x2e3db2(0x1f4)](){const _0x5924d6=_0x2e3db2;if(this[_0x5924d6(0x1bc)]())return!![];const _0x59eca0=this['kind']===_0x5924d6(0x1f1)?'.codegraph':_0x5924d6(0x188);if(spelling(this[_0x5924d6(0x1fe)])!==spelling(path[_0x5924d6(0x21c)](this[_0x5924d6(0x1ee)],_0x59eca0)))return![];if(identity(this[_0x5924d6(0x1fe)])!==spelling(path[_0x5924d6(0x21c)](this[_0x5924d6(0x1ee)],_0x59eca0)))return![];const _0x38d5ef=read(path[_0x5924d6(0x21c)](this[_0x5924d6(0x1ee)],_0x5924d6(0x176))),_0x5e4e19=_0x5924d6(0x160),_0x3b296b=_0x38d5ef?.['managedFileHashes']?.[_0x5e4e19];if(!_0x3b296b||!_0x38d5ef[_0x5924d6(0x208)]?.[_0x5924d6(0x206)](_0x5e4e19))return![];const _0x51928d=path[_0x5924d6(0x21c)](this[_0x5924d6(0x1ee)],_0x5e4e19);rejectLink(path[_0x5924d6(0x1bd)](_0x51928d)),rejectLink(_0x51928d);if(hash(fs['readFileSync'](_0x51928d))!==_0x3b296b)return![];for(const _0x392edd of['',_0x5924d6(0x19b),_0x5924d6(0x20b)])rejectLink(this['database']+_0x392edd);this[_0x5924d6(0x170)]();if(this[_0x5924d6(0x219)]())throw fail('INDEX_BUSY',_0x5924d6(0x196));const _0x3806e1={};return _0x3806e1[_0x5924d6(0x1b0)]=_0x38d5ef['version'],_0x3806e1[_0x5924d6(0x164)]=_0x5e4e19,_0x3806e1['digest']=_0x3b296b,atomic(path[_0x5924d6(0x21c)](this[_0x5924d6(0x1fe)],_0x5924d6(0x17d)),{'owner':_0x5924d6(0x1d0),'workspace':this[_0x5924d6(0x1ee)],'kind':this['kind'],'provenance':_0x3806e1}),!![];}[_0x2e3db2(0x1bc)](){const _0x333e52=_0x2e3db2;try{const _0x3b0601=read(path[_0x333e52(0x21c)](this[_0x333e52(0x1fe)],_0x333e52(0x17d)));for(const _0x518384 of['',_0x333e52(0x19b),_0x333e52(0x20b)])rejectLink(this[_0x333e52(0x1df)]+_0x518384);const _0x2334aa=identity(this['cache']),_0x33014b=this[_0x333e52(0x214)]==='codegraph'?[this[_0x333e52(0x1cd)][_0x333e52(0x1eb)]||_0x333e52(0x228),_0x333e52(0x228),_0x333e52(0x17e)]:[this['profile'][_0x333e52(0x1eb)]||'.agents/.data/graph'];return _0x3b0601?.['owner']===_0x333e52(0x1d0)&&sameWorkspace(_0x3b0601[_0x333e52(0x1ee)],this[_0x333e52(0x1ee)])&&_0x33014b[_0x333e52(0x20e)](_0x17fada=>{const _0x5bfa76=_0x333e52,_0x46244b=path['resolve'](this[_0x5bfa76(0x1ee)],_0x17fada);return _0x2334aa===(process[_0x5bfa76(0x1e6)]===_0x5bfa76(0x1ac)?_0x46244b['toLowerCase']():_0x46244b);});}catch{return![];}}[_0x2e3db2(0x1ca)](){const _0x541613=_0x2e3db2;rejectLink(this[_0x541613(0x222)]);const _0x5be2fc=acquireRuntimeLock(this[_0x541613(0x222)],0x0,cacheHost);if(!_0x5be2fc)throw fail('INDEX_BUSY','Index\x20maintenance\x20is\x20busy;\x20retry\x20after\x20the\x20current\x20operation\x20finishes');return _0x5be2fc;}[_0x2e3db2(0x201)](_0x2ec279=null,_0x515292=![]){const _0x2bc59b=_0x2e3db2,_0x14038b=_0x515292?null:this[_0x2bc59b(0x1ca)]();try{atomic(this[_0x2bc59b(0x1fc)],{'ownerPid':process[_0x2bc59b(0x1dd)],'childPid':_0x2ec279,'workspace':this[_0x2bc59b(0x1ee)],'host':cacheHost});}finally{_0x14038b?.();}}['unregister'](){const _0x58678c=_0x2e3db2,_0x4b6fe4={};_0x4b6fe4[_0x58678c(0x1a9)]=!![],fs['rmSync'](this[_0x58678c(0x1fc)],_0x4b6fe4);}[_0x2e3db2(0x219)](){const _0x2f2d76=_0x2e3db2;return fs[_0x2f2d76(0x183)](this[_0x2f2d76(0x191)])['filter'](_0x8046e6=>_0x8046e6[_0x2f2d76(0x1d7)](_0x2f2d76(0x151)))['some'](_0x2fef44=>{const _0x42b59e=_0x2f2d76,_0xa558dc=path[_0x42b59e(0x21c)](this[_0x42b59e(0x191)],_0x2fef44);if(_0xa558dc===this[_0x42b59e(0x1fc)])return![];const _0x5ba214=read(_0xa558dc);if(!_0x5ba214||_0x5ba214[_0x42b59e(0x1ed)]!==cacheHost||live(_0x5ba214[_0x42b59e(0x162)])||live(_0x5ba214[_0x42b59e(0x165)]))return!![];return fs[_0x42b59e(0x1ec)](_0xa558dc),![];});}[_0x2e3db2(0x170)](){const _0x1fd4ad=_0x2e3db2;for(const _0x141f22 of[_0x1fd4ad(0x1ba),_0x1fd4ad(0x20c)]){const _0x4af252=path[_0x1fd4ad(0x21c)](this[_0x1fd4ad(0x1fe)],_0x141f22);if(!fs[_0x1fd4ad(0x1ef)](_0x4af252))continue;rejectLink(_0x4af252);const _0x3bee0d=fs[_0x1fd4ad(0x1e2)](_0x4af252,_0x1fd4ad(0x1d8))[_0x1fd4ad(0x226)]();let _0x581754;try{_0x581754=_0x141f22===_0x1fd4ad(0x20c)?JSON[_0x1fd4ad(0x216)](_0x3bee0d)[_0x1fd4ad(0x1dd)]:Number(_0x3bee0d);}catch{}if(!Number[_0x1fd4ad(0x19c)](_0x581754)||_0x581754<=0x0||live(_0x581754)||Date[_0x1fd4ad(0x1b6)]()-fs['statSync'](_0x4af252)[_0x1fd4ad(0x16d)]<0x1d4c0)throw fail(_0x1fd4ad(0x15d),'Cache\x20lock\x20'+_0x141f22+'\x20requires\x20its\x20owning\x20backend\x20to\x20stop');}}async[_0x2e3db2(0x207)](){const _0x49839c=_0x2e3db2;if(!fs[_0x49839c(0x1ef)](this['database'])){if([_0x49839c(0x19b),'-shm']['some'](_0x16b9a2=>fs[_0x49839c(0x1ef)](this['database']+_0x16b9a2)))throw fail(_0x49839c(0x200),_0x49839c(0x1c3));return;}for(const _0x219bf5 of['','-wal',_0x49839c(0x20b)])rejectLink(this[_0x49839c(0x1df)]+_0x219bf5);this[_0x49839c(0x214)]===_0x49839c(0x1f1)?await run(this['profile'][_0x49839c(0x18a)],[...this[_0x49839c(0x1cd)]['args'][_0x49839c(0x1ae)](0x0,-0x1),'-e',_0x49839c(0x217),this[_0x49839c(0x1df)]],{'timeout':indexTimeout()}):await run(this[_0x49839c(0x1cd)][_0x49839c(0x18a)],['-c',_0x49839c(0x1b3),this[_0x49839c(0x1df)]],{'timeout':indexTimeout()});}async['migrateLegacy'](){const _0x155ae9=_0x2e3db2;if(this[_0x155ae9(0x214)]!==_0x155ae9(0x1f1)||!this['profile']['cacheDirectory']||fs[_0x155ae9(0x1ef)](this[_0x155ae9(0x1df)]))return![];const _0x1f2ac1=path[_0x155ae9(0x21c)](this[_0x155ae9(0x1ee)],_0x155ae9(0x228));if(!fs['existsSync'](path[_0x155ae9(0x21c)](_0x1f2ac1,_0x155ae9(0x171))))return![];const _0x3fe62f=Object[_0x155ae9(0x21f)](Object[_0x155ae9(0x179)](Object[_0x155ae9(0x158)](this)),this,{'cache':_0x1f2ac1,'database':path[_0x155ae9(0x21c)](_0x1f2ac1,_0x155ae9(0x171)),'env':{...this[_0x155ae9(0x190)],'CODEGRAPH_DIR':_0x155ae9(0x228)}});try{const _0x1cf6b9=read(path[_0x155ae9(0x21c)](_0x1f2ac1,'.apt-managed.json'));if(_0x1cf6b9?.['host']!==cacheHost){const _0xdad127={};return _0xdad127[_0x155ae9(0x14f)]=_0x155ae9(0x184),_0xdad127['reason']=_0x155ae9(0x178),this[_0x155ae9(0x21a)]=_0xdad127,![];}_0x3fe62f[_0x155ae9(0x170)]();if(_0x3fe62f[_0x155ae9(0x219)]()||!_0x3fe62f[_0x155ae9(0x1bc)]()&&!_0x3fe62f[_0x155ae9(0x1f4)]())return![];await _0x3fe62f[_0x155ae9(0x207)]();}catch(_0x76442a){const _0xe1f423={};return _0xe1f423[_0x155ae9(0x14f)]='preserved',_0xe1f423[_0x155ae9(0x17a)]=_0x76442a[_0x155ae9(0x1f7)]||_0x76442a['message'],this[_0x155ae9(0x21a)]=_0xe1f423,![];}if(!this['owned']()||fs[_0x155ae9(0x183)](this[_0x155ae9(0x1fe)])[_0x155ae9(0x20e)](_0x18961b=>_0x18961b!==_0x155ae9(0x17d)))return![];const _0x578671=this[_0x155ae9(0x1fe)]+_0x155ae9(0x1dc)+crypto[_0x155ae9(0x181)]();fs['renameSync'](this[_0x155ae9(0x1fe)],_0x578671);try{fs[_0x155ae9(0x1c9)](_0x1f2ac1,this[_0x155ae9(0x1fe)]);}catch(_0x3cccb4){fs[_0x155ae9(0x1c9)](_0x578671,this[_0x155ae9(0x1fe)]);throw _0x3cccb4;}return this['legacyMigration']={'status':'migrated','from':_0x1f2ac1,'to':this[_0x155ae9(0x1fe)]},!![];}async['build'](){const _0x26e4dc=_0x2e3db2;if(!this['owned']()&&!this['adoptLegacy']())throw fail(_0x26e4dc(0x229),_0x26e4dc(0x167));if(this[_0x26e4dc(0x214)]===_0x26e4dc(0x1f1)){const _0x12b208=fs[_0x26e4dc(0x1ef)](this['database']),_0x50cb44=await run(this['profile']['command'],[...this[_0x26e4dc(0x1cd)][_0x26e4dc(0x15a)],_0x12b208?'index':_0x26e4dc(0x1d9),this[_0x26e4dc(0x1ee)],_0x12b208?'--force':_0x26e4dc(0x1b8)],{'cwd':this['workspace'],'env':{...process.env,...this[_0x26e4dc(0x190)]},'windowsHide':!![],'timeout':indexTimeout(),'maxBuffer':0x4*0x400*0x400});this[_0x26e4dc(0x1c0)]=_0x50cb44[_0x26e4dc(0x20a)];return;}const _0x49472f=this[_0x26e4dc(0x156)]();if(path['resolve'](_0x49472f[_0x26e4dc(0x1df)])!==path['resolve'](this[_0x26e4dc(0x1df)]))throw fail(_0x26e4dc(0x1f2),_0x26e4dc(0x1cb));const _0x6606b3=snapshot(this['workspace']);try{const _0x20657f=await run(this['profile']['command'],[bridge,_0x26e4dc(0x1b9),this[_0x26e4dc(0x1ee)]],{'cwd':this[_0x26e4dc(0x1ee)],'env':{...process.env,...this['env']},'windowsHide':!![],'timeout':indexTimeout(),'maxBuffer':0x4*0x400*0x400});JSON[_0x26e4dc(0x216)](_0x20657f[_0x26e4dc(0x1bf)]),this[_0x26e4dc(0x1c0)]=_0x20657f[_0x26e4dc(0x20a)];}catch(_0x1fa06d){let _0x2697e5=_0x1fa06d[_0x26e4dc(0x198)];try{_0x2697e5=JSON['parse'](_0x1fa06d[_0x26e4dc(0x20a)]?.[_0x26e4dc(0x1bf)])[_0x26e4dc(0x1ea)]||_0x2697e5;}catch{}throw Object[_0x26e4dc(0x21f)](fail(_0x1fa06d[_0x26e4dc(0x1f7)]||classify(_0x2697e5),_0x2697e5),{'diagnostic':_0x1fa06d[_0x26e4dc(0x20a)]});}if(_0x6606b3!==snapshot(this[_0x26e4dc(0x1ee)]))throw fail(_0x26e4dc(0x1bb),'Workspace\x20changed\x20during\x20graph\x20build;\x20retry\x20before\x20impact\x20analysis');atomic(path[_0x26e4dc(0x21c)](this[_0x26e4dc(0x215)],'receipt.json'),{'workspace':this['workspace'],'snapshot':_0x6606b3,'version':this[_0x26e4dc(0x1cd)][_0x26e4dc(0x1f0)],'database':this[_0x26e4dc(0x1df)],'builtAt':new Date()[_0x26e4dc(0x1c5)]()});}async[_0x2e3db2(0x1cf)](){const _0x1d74ad=_0x2e3db2,_0x238170=this['lock']();try{const _0x32a834=read(path[_0x1d74ad(0x21c)](this[_0x1d74ad(0x215)],_0x1d74ad(0x180)));if(!_0x32a834||_0x32a834[_0x1d74ad(0x1f0)]!==this[_0x1d74ad(0x1cd)][_0x1d74ad(0x1f0)]||_0x32a834[_0x1d74ad(0x1df)]!==this[_0x1d74ad(0x1df)]||!fs[_0x1d74ad(0x1ef)](this[_0x1d74ad(0x1df)])||_0x32a834[_0x1d74ad(0x1ad)]!==snapshot(this[_0x1d74ad(0x1ee)]))await this[_0x1d74ad(0x1b9)]();return read(path['join'](this[_0x1d74ad(0x215)],'receipt.json'));}finally{_0x238170();}}async[_0x2e3db2(0x1d3)](_0x2c48cb=![]){const _0x2a22c9=_0x2e3db2,_0x30900e=_0x2c48cb?null:this[_0x2a22c9(0x1ca)](),_0x1748a8=path['join'](this[_0x2a22c9(0x215)],'recovery.json');let _0x43ba05;try{if(!this[_0x2a22c9(0x1bc)]())throw fail(_0x2a22c9(0x229),_0x2a22c9(0x1f6));if(this['otherUsers']())throw fail(_0x2a22c9(0x15d),'Another\x20live\x20backend\x20is\x20using\x20the\x20cache');this[_0x2a22c9(0x170)]();if(this[_0x2a22c9(0x214)]===_0x2a22c9(0x1c6)&&spelling(this[_0x2a22c9(0x156)]()['database'])!==spelling(this[_0x2a22c9(0x1df)]))throw fail(_0x2a22c9(0x1f2),_0x2a22c9(0x1cb));const _0x38c141=fs['existsSync'](this[_0x2a22c9(0x1fe)])?fs[_0x2a22c9(0x1d6)](this[_0x2a22c9(0x1fe)]):null,_0x51ba22=_0x38c141?_0x38c141+_0x2a22c9(0x1dc)+crypto['randomUUID']():null;_0x43ba05={'status':_0x2a22c9(0x1d1),'backup':_0x51ba22,'workspace':this[_0x2a22c9(0x1ee)],'at':new Date()[_0x2a22c9(0x1c5)]()},atomic(_0x1748a8,_0x43ba05);if(_0x51ba22)fs[_0x2a22c9(0x1c9)](_0x38c141,_0x51ba22);const _0x5f220b={};_0x5f220b[_0x2a22c9(0x202)]=!![],fs[_0x2a22c9(0x223)](this['cache'],_0x5f220b),atomic(path[_0x2a22c9(0x21c)](this[_0x2a22c9(0x1fe)],_0x2a22c9(0x17d)),{'owner':_0x2a22c9(0x1d0),'workspace':this[_0x2a22c9(0x1ee)],'kind':this[_0x2a22c9(0x214)]}),await this[_0x2a22c9(0x1b9)]();const _0x269823={..._0x43ba05};return _0x269823[_0x2a22c9(0x14f)]=_0x2a22c9(0x19d),atomic(_0x1748a8,_0x269823),_0x51ba22;}catch(_0x2c0d2b){if(_0x43ba05)atomic(_0x1748a8,{..._0x43ba05,'status':'failed','reason':_0x2c0d2b[_0x2a22c9(0x198)]});throw _0x2c0d2b;}finally{_0x30900e?.();}}async[_0x2e3db2(0x18b)](_0x389bb9,_0x51f27a){const _0x307806=_0x2e3db2;if(![_0x307806(0x1cc),_0x307806(0x200)][_0x307806(0x206)](_0x51f27a[_0x307806(0x1f7)])||!this['owned']())return![];let _0x5e72e6;try{_0x5e72e6=this[_0x307806(0x1ca)]();}catch(_0x421440){const _0x3ba191={};return _0x3ba191[_0x307806(0x14f)]='busy',_0x3ba191[_0x307806(0x17a)]=_0x421440[_0x307806(0x198)],_0x389bb9['indexRecovery']=_0x3ba191,![];}const _0x5582dc=path['join'](this['directory'],_0x307806(0x1be));try{if(this['kind']==='code-review-graph'&&spelling(this['resolveReview']()[_0x307806(0x1df)])!==spelling(this[_0x307806(0x1df)]))throw fail(_0x307806(0x1f2),_0x307806(0x1cb));if(this[_0x307806(0x219)]()){const _0x4ad5fe={};return _0x4ad5fe[_0x307806(0x14f)]='busy',_0x4ad5fe[_0x307806(0x17a)]=_0x307806(0x192),_0x389bb9[_0x307806(0x15b)]=_0x4ad5fe,![];}const _0x39ced3=hash(fs[_0x307806(0x1ef)](this['database'])?fs[_0x307806(0x1e2)](this['database']):_0x307806(0x218)),_0x170c69=read(_0x5582dc);if(_0x170c69&&_0x170c69[_0x307806(0x14f)]!=='recovered'&&(_0x170c69[_0x307806(0x204)]===_0x39ced3||_0x170c69['failedFingerprint']===_0x39ced3))return _0x389bb9['indexRecovery']=_0x170c69,![];const _0x460cf5=fs[_0x307806(0x1d6)](this[_0x307806(0x1fe)]),_0x22ea44=_0x460cf5+_0x307806(0x1dc)+crypto[_0x307806(0x181)](),_0x18031a=read(path['join'](_0x460cf5,_0x307806(0x17d))),_0x1f623a={'status':'recovering','fingerprint':_0x39ced3,'backup':_0x22ea44,'workspace':this['workspace'],'at':new Date()[_0x307806(0x1c5)]()};atomic(_0x5582dc,_0x1f623a),_0x389bb9[_0x307806(0x15b)]=_0x1f623a;const _0x225c20=_0x389bb9[_0x307806(0x159)]===undefined?undefined:_0x389bb9[_0x307806(0x159)]+0x1;await _0x389bb9[_0x307806(0x1aa)]();if(_0x389bb9[_0x307806(0x159)]!==_0x225c20)throw fail(_0x307806(0x1c7),_0x307806(0x18c));this['checkNativeLocks']();if(!this['owned']())throw fail(_0x307806(0x229),_0x307806(0x186));fs[_0x307806(0x1c9)](_0x460cf5,_0x22ea44),fs[_0x307806(0x223)](_0x460cf5),atomic(path[_0x307806(0x21c)](_0x460cf5,_0x307806(0x17d)),_0x18031a),await this['build']();if(_0x389bb9[_0x307806(0x159)]!==_0x225c20)throw fail(_0x307806(0x1c7),'Backend\x20was\x20stopped\x20while\x20rebuilding\x20its\x20index');_0x389bb9[_0x307806(0x1a0)](![],!![]);const _0x14f31d={..._0x1f623a};return _0x14f31d[_0x307806(0x14f)]=_0x307806(0x19d),_0x389bb9['indexRecovery']=_0x14f31d,atomic(_0x5582dc,_0x389bb9[_0x307806(0x15b)]),!![];}catch(_0x5a10af){const _0x20256f=hash(fs[_0x307806(0x1ef)](this['database'])?fs['readFileSync'](this[_0x307806(0x1df)]):_0x307806(0x218));return _0x389bb9[_0x307806(0x15b)]={..._0x389bb9[_0x307806(0x15b)]||{},'status':_0x307806(0x22a),'failedFingerprint':_0x20256f,'reason':_0x5a10af[_0x307806(0x198)]},atomic(_0x5582dc,_0x389bb9[_0x307806(0x15b)]),![];}finally{_0x5e72e6();}}[_0x2e3db2(0x17c)](_0x5185c5){const _0x158f81=_0x2e3db2;_0x5185c5[_0x158f81(0x15b)]={..._0x5185c5[_0x158f81(0x15b)],'status':_0x158f81(0x17c)},atomic(path['join'](this[_0x158f81(0x215)],'recovery.json'),_0x5185c5[_0x158f81(0x15b)]);}}const _0x5ef3bf={};_0x5ef3bf[_0x2e3db2(0x1e7)]=IndexStore,_0x5ef3bf[_0x2e3db2(0x1ad)]=snapshot,_0x5ef3bf['responseError']=responseError,_0x5ef3bf['classify']=classify,_0x5ef3bf[_0x2e3db2(0x1a2)]=atomic,module['exports']=_0x5ef3bf;require[_0x2e3db2(0x1fb)]===module&&(async()=>{const _0xe5ed5=_0x2e3db2,_0x21d20d=require('./profiles'),_0x54c610=fs[_0xe5ed5(0x1d6)](process[_0xe5ed5(0x20d)][0x2]),_0x26a067=safeDirectory(_0x54c610,'.agents/runtime/backends'),_0x1dcf4a={'workspace':_0x54c610,'startedAt':new Date()[_0xe5ed5(0x1c5)](),'status':_0xe5ed5(0x1e4),'backends':[]},_0x5e9945=path[_0xe5ed5(0x21c)](_0x26a067,_0xe5ed5(0x16b));atomic(_0x5e9945,_0x1dcf4a);for(const [_0x5d8390,_0x3011ed]of[[_0xe5ed5(0x1f1),_0x21d20d['codegraph']],[_0xe5ed5(0x1c6),_0x21d20d[_0xe5ed5(0x1e3)]]]){let _0x5a0903,_0x1b2e2a;const _0x3dcb82={'backend':_0x5d8390,'workspace':_0x54c610,'startedAt':new Date()[_0xe5ed5(0x1c5)](),'status':_0xe5ed5(0x1e4)};_0x1dcf4a[_0xe5ed5(0x209)]['push'](_0x3dcb82);try{const _0x410a06=_0x3011ed(),_0x24eaa7={};_0x24eaa7[_0xe5ed5(0x1f0)]=_0x410a06[_0xe5ed5(0x1f0)],_0x24eaa7[_0xe5ed5(0x1b7)]=_0x410a06[_0xe5ed5(0x18a)],Object[_0xe5ed5(0x21f)](_0x3dcb82,_0x24eaa7),_0x5a0903=new IndexStore(_0x5d8390,_0x54c610,_0x410a06);const _0x4e462e={};_0x4e462e['cache']=_0x5a0903[_0xe5ed5(0x1fe)],_0x4e462e[_0xe5ed5(0x1df)]=_0x5a0903[_0xe5ed5(0x1df)],_0x4e462e[_0xe5ed5(0x212)]=_0x5a0903[_0xe5ed5(0x212)]||'profile',Object['assign'](_0x3dcb82,_0x4e462e),_0x1b2e2a=_0x5a0903[_0xe5ed5(0x1ca)]();if(_0x5a0903[_0xe5ed5(0x219)]())throw fail(_0xe5ed5(0x15d),_0xe5ed5(0x195));await _0x5a0903[_0xe5ed5(0x22d)](),_0x3dcb82['legacyMigration']=_0x5a0903['legacyMigration']||null,_0x5a0903[_0xe5ed5(0x170)]();try{await _0x5a0903[_0xe5ed5(0x207)](),await _0x5a0903[_0xe5ed5(0x1b9)]();}catch(_0x4fdd4c){if(_0x4fdd4c[_0xe5ed5(0x1f7)]!==_0xe5ed5(0x200)||!_0x5a0903[_0xe5ed5(0x1bc)]()&&!_0x5a0903[_0xe5ed5(0x1f4)]())throw _0x4fdd4c;_0x3dcb82[_0xe5ed5(0x1a7)]=_0xe5ed5(0x182),_0x3dcb82[_0xe5ed5(0x1db)]=await _0x5a0903[_0xe5ed5(0x1d3)](!![]);}Object['assign'](_0x3dcb82,_0x5a0903['lastBuild'],{'status':_0xe5ed5(0x1f9),'functionalReady':![],'recoveryStatus':_0x3dcb82['recoveryStatus']||_0xe5ed5(0x1c8)}),_0x1b2e2a(),_0x1b2e2a=null;const {BackendProcess:_0x3d2725}=require(_0xe5ed5(0x18f)),_0x489e27=_0x5d8390===_0xe5ed5(0x1f1)?[..._0x410a06['args'],'serve',_0xe5ed5(0x150)]:_0x410a06[_0xe5ed5(0x15a)],_0x452ad3=new _0x3d2725(_0x5d8390,_0x410a06[_0xe5ed5(0x18a)],_0x489e27,{'cwd':_0x54c610,'env':{..._0x410a06[_0xe5ed5(0x190)],..._0x5a0903['env']},'maxRetries':0x0});_0x452ad3[_0xe5ed5(0x1a4)]=_0x5a0903;try{_0x452ad3[_0xe5ed5(0x1a0)](![]);const _0x3106d2={};_0x3106d2[_0xe5ed5(0x157)]=_0xe5ed5(0x168),_0x3106d2['version']='1';const _0x162917={};_0x162917[_0xe5ed5(0x21d)]='2024-11-05',_0x162917[_0xe5ed5(0x20f)]={},_0x162917[_0xe5ed5(0x1d2)]=_0x3106d2,await _0x452ad3['initialize'](_0x162917);if(!_0x452ad3[_0xe5ed5(0x1e1)])throw fail(_0xe5ed5(0x1a6),_0xe5ed5(0x225));_0x3dcb82[_0xe5ed5(0x1e1)]=!![],_0x3dcb82[_0xe5ed5(0x1db)]&&(_0x452ad3[_0xe5ed5(0x15b)]=read(path['join'](_0x5a0903[_0xe5ed5(0x215)],_0xe5ed5(0x1be))),_0x5a0903[_0xe5ed5(0x17c)](_0x452ad3),_0x3dcb82[_0xe5ed5(0x1a7)]=_0xe5ed5(0x17c));}finally{await _0x452ad3['stopAndWait']();}}catch(_0x39b46e){Object[_0xe5ed5(0x21f)](_0x3dcb82,_0x39b46e[_0xe5ed5(0x20a)],{'status':_0xe5ed5(0x22a),'reasonCode':_0x39b46e['code']||_0xe5ed5(0x163),'message':_0x39b46e['message']});if(_0x5a0903){const _0x2cf06e=read(path[_0xe5ed5(0x21c)](_0x5a0903[_0xe5ed5(0x215)],_0xe5ed5(0x1be)));if(_0x2cf06e)Object['assign'](_0x3dcb82,{'recoveryStatus':_0x2cf06e[_0xe5ed5(0x14f)],'backup':_0x2cf06e[_0xe5ed5(0x1db)]});}console[_0xe5ed5(0x1ea)]('['+_0x5d8390+']\x20'+_0x3dcb82[_0xe5ed5(0x194)]+':\x20'+_0x39b46e[_0xe5ed5(0x198)]),process[_0xe5ed5(0x197)]=0x2;}finally{_0x1b2e2a?.(),_0x3dcb82['endedAt']=new Date()[_0xe5ed5(0x1c5)](),atomic(_0x5e9945,_0x1dcf4a);}}_0x1dcf4a[_0xe5ed5(0x14f)]=process[_0xe5ed5(0x197)]?_0xe5ed5(0x22a):'built',_0x1dcf4a[_0xe5ed5(0x185)]=new Date()[_0xe5ed5(0x1c5)](),atomic(_0x5e9945,_0x1dcf4a);})()[_0x2e3db2(0x1af)](_0x51df69=>{const _0x3ba8e2=_0x2e3db2;console[_0x3ba8e2(0x1ea)](_0x51df69['message']),process[_0x3ba8e2(0x197)]=0x1;});