colana 1.0.0-beta.82 → 1.0.0-beta.83

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 (92) hide show
  1. package/bin/admin.js +1 -398
  2. package/bin/colana.js +1 -798
  3. package/package.json +15 -55
  4. package/public/agent-split.html +4 -4
  5. package/public/agent.html +4 -4
  6. package/public/app.57f7278383.js +1 -0
  7. package/public/asset-manifest.json +30 -0
  8. package/public/index.html +10 -10
  9. package/public/service-worker.js +10 -7
  10. package/public/wizard.5253af0543.js +1 -0
  11. package/public/wizard.html +13 -13
  12. package/server/index.cjs +2 -0
  13. package/server/index.js +1 -1216
  14. package/server/index.jsc +0 -0
  15. package/public/admin-panel.js +0 -735
  16. package/public/app.js +0 -15183
  17. package/public/sw-register.js +0 -3
  18. package/public/wizard.js +0 -1585
  19. package/server/admin.js +0 -284
  20. package/server/agent-control-routes.js +0 -277
  21. package/server/agent-manager.js +0 -1156
  22. package/server/analytics-routes.js +0 -163
  23. package/server/analytics.js +0 -663
  24. package/server/auth.js +0 -124
  25. package/server/auto-installer.js +0 -1405
  26. package/server/auto-resume.js +0 -94
  27. package/server/blueprint-exporter.js +0 -474
  28. package/server/blueprint-importer.js +0 -676
  29. package/server/blueprint-routes.js +0 -557
  30. package/server/blueprint-store.js +0 -180
  31. package/server/blueprint-sync.js +0 -674
  32. package/server/brand.js +0 -97
  33. package/server/checkpoint-store.js +0 -48
  34. package/server/config.js +0 -370
  35. package/server/context-sync.js +0 -498
  36. package/server/db.js +0 -735
  37. package/server/dependency-detector.js +0 -542
  38. package/server/diagnostics-routes.js +0 -402
  39. package/server/error-recovery.js +0 -746
  40. package/server/errors.js +0 -36
  41. package/server/file-browser.js +0 -332
  42. package/server/git-ops.js +0 -498
  43. package/server/gog-auth.js +0 -450
  44. package/server/integration-hub.js +0 -535
  45. package/server/integration-routes.js +0 -288
  46. package/server/key-manager.js +0 -206
  47. package/server/license-routes.js +0 -144
  48. package/server/license.js +0 -703
  49. package/server/logger.js +0 -109
  50. package/server/openclaw-config.js +0 -554
  51. package/server/permission-mcp.js +0 -137
  52. package/server/permission-routes.js +0 -96
  53. package/server/personal-agent-routes.js +0 -555
  54. package/server/personal-chat-store.js +0 -146
  55. package/server/platform.js +0 -169
  56. package/server/port-finder.js +0 -42
  57. package/server/preflight.js +0 -235
  58. package/server/project-config.js +0 -304
  59. package/server/project-routes.js +0 -441
  60. package/server/project-store.js +0 -240
  61. package/server/pty-manager.js +0 -2487
  62. package/server/runtime-policy.js +0 -88
  63. package/server/server-control-routes.js +0 -130
  64. package/server/service-manager.js +0 -584
  65. package/server/session-routes.js +0 -565
  66. package/server/session-store.js +0 -740
  67. package/server/settings-routes.js +0 -187
  68. package/server/settings-store.js +0 -561
  69. package/server/snippet-routes.js +0 -89
  70. package/server/snippet-store.js +0 -122
  71. package/server/spawn-env.js +0 -78
  72. package/server/system-info.js +0 -64
  73. package/server/template-routes.js +0 -115
  74. package/server/template-store.js +0 -320
  75. package/server/updater.js +0 -213
  76. package/server/usage-tracker.js +0 -223
  77. package/server/validation.js +0 -378
  78. package/server/webhook-routes.js +0 -151
  79. package/server/wizard-routes.js +0 -880
  80. package/server/worktree-manager.js +0 -740
  81. /package/public/{styles.css → styles.058bb007f9.css} +0 -0
  82. /package/public/vendor/dompurify/{purify.min.js → purify.min.48298679f9.js} +0 -0
  83. /package/public/vendor/highlightjs/{github-dark.min.css → github-dark.min.9f208d0221.css} +0 -0
  84. /package/public/vendor/highlightjs/{highlight.min.js → highlight.min.c4a399dd6f.js} +0 -0
  85. /package/public/vendor/marked/{marked.min.js → marked.min.934e3e36e9.js} +0 -0
  86. /package/public/vendor/xterm/{xterm.css → xterm.832f3f2c60.css} +0 -0
  87. /package/public/vendor/xterm/{xterm.js → xterm.f0aea0f75f.js} +0 -0
  88. /package/public/vendor/xterm-addon-fit/{xterm-addon-fit.js → xterm-addon-fit.10f3194c5f.js} +0 -0
  89. /package/public/vendor/xterm-addon-search/{xterm-addon-search.js → xterm-addon-search.6a6db33f16.js} +0 -0
  90. /package/public/vendor/xterm-addon-unicode11/{xterm-addon-unicode11.js → xterm-addon-unicode11.ab10d83642.js} +0 -0
  91. /package/public/vendor/xterm-addon-web-links/{xterm-addon-web-links.js → xterm-addon-web-links.d67624ab0e.js} +0 -0
  92. /package/public/{wizard.css → wizard.988f7742a1.css} +0 -0
package/bin/admin.js CHANGED
@@ -1,399 +1,2 @@
1
1
  #!/usr/bin/env node
2
-
3
- /**
4
- * Colana Admin CLI
5
- *
6
- * Commands:
7
- * colana admin help Show usage
8
- * colana admin doctor Run system diagnostics
9
- * colana admin staff-keys List configured staff/admin keys (env vars)
10
- * colana admin create-key Generate a new license key (stored in DB)
11
- * colana admin list-keys List DB-stored license keys
12
- * colana admin revoke-key <id> Revoke a DB-stored license key
13
- */
14
-
15
- import fs from 'fs';
16
- import path from 'path';
17
- import os from 'os';
18
- import { fileURLToPath } from 'url';
19
- import { c, icons, brandName } from '../server/brand.js';
20
-
21
- const __dirname = path.dirname(fileURLToPath(import.meta.url));
22
-
23
- // ---------------------------------------------------------------------------
24
- // Arg parsing (minimal, no external deps)
25
- // ---------------------------------------------------------------------------
26
-
27
- function parseArgs(argv) {
28
- const args = argv.slice(2);
29
- const command = args[0];
30
- const positional = [];
31
- const flags = {};
32
-
33
- for (let i = 1; i < args.length; i++) {
34
- if (args[i].startsWith('--')) {
35
- let key = args[i].slice(2);
36
- let val;
37
- const eqIdx = key.indexOf('=');
38
- if (eqIdx !== -1) {
39
- val = key.slice(eqIdx + 1);
40
- key = key.slice(0, eqIdx);
41
- } else {
42
- val = (i + 1 < args.length && !args[i + 1].startsWith('--')) ? args[++i] : 'true';
43
- }
44
- flags[key] = val;
45
- } else {
46
- positional.push(args[i]);
47
- }
48
- }
49
-
50
- return { command, flags, positional };
51
- }
52
-
53
- // ---------------------------------------------------------------------------
54
- // Helpers
55
- // ---------------------------------------------------------------------------
56
-
57
- function maskKey(key) {
58
- if (!key || key.length <= 8) return '****';
59
- return key.slice(0, 4) + '****';
60
- }
61
-
62
- // ---------------------------------------------------------------------------
63
- // Server API client (preferred — avoids sql.js in-memory DB conflicts)
64
- // ---------------------------------------------------------------------------
65
-
66
- const DEFAULT_PORT = 9876;
67
- const MAX_PORT_SCAN = 100;
68
-
69
- /**
70
- * Try to reach the running Colana server.
71
- * Scans ports starting from DEFAULT_PORT (matching server's port-finder logic).
72
- * Returns the base URL if found, null otherwise.
73
- */
74
- async function findRunningServer() {
75
- for (let i = 0; i < MAX_PORT_SCAN; i++) {
76
- const port = DEFAULT_PORT + i;
77
- try {
78
- const res = await fetch(`http://127.0.0.1:${port}/api/health`, {
79
- signal: AbortSignal.timeout(500),
80
- });
81
- if (res.ok) {
82
- const data = await res.json();
83
- if (data.status === 'ok') return `http://127.0.0.1:${port}`;
84
- }
85
- } catch {
86
- // Port not responding — try next
87
- }
88
- }
89
- return null;
90
- }
91
-
92
- /**
93
- * Create a key via the server API.
94
- */
95
- async function createKeyViaApi(baseUrl, body) {
96
- const res = await fetch(`${baseUrl}/api/admin/keys`, {
97
- method: 'POST',
98
- headers: { 'Content-Type': 'application/json' },
99
- body: JSON.stringify(body),
100
- });
101
- if (!res.ok) {
102
- const err = await res.json().catch(() => ({ error: `HTTP ${res.status}` }));
103
- throw new Error(err.error || `Server responded with ${res.status}`);
104
- }
105
- return res.json();
106
- }
107
-
108
- /**
109
- * List keys via the server API.
110
- */
111
- async function listKeysViaApi(baseUrl, filters) {
112
- const params = new URLSearchParams();
113
- if (filters.type) params.set('type', filters.type);
114
- if (filters.status) params.set('status', filters.status);
115
- const qs = params.toString();
116
- const res = await fetch(`${baseUrl}/api/admin/keys${qs ? '?' + qs : ''}`);
117
- if (!res.ok) {
118
- const err = await res.json().catch(() => ({ error: `HTTP ${res.status}` }));
119
- throw new Error(err.error || `Server responded with ${res.status}`);
120
- }
121
- return res.json();
122
- }
123
-
124
- /**
125
- * Revoke a key via the server API.
126
- */
127
- async function revokeKeyViaApi(baseUrl, id) {
128
- const res = await fetch(`${baseUrl}/api/admin/keys/${id}`, { method: 'DELETE' });
129
- if (!res.ok) {
130
- const err = await res.json().catch(() => ({ error: `HTTP ${res.status}` }));
131
- throw new Error(err.error || `Server responded with ${res.status}`);
132
- }
133
- return res.json();
134
- }
135
-
136
- // ---------------------------------------------------------------------------
137
- // DB-backed key management (fallback when server is not running)
138
- // ---------------------------------------------------------------------------
139
-
140
- let _dbReady = false;
141
-
142
- async function ensureDb() {
143
- if (_dbReady) return;
144
- const { getDb } = await import('../server/db.js');
145
- await getDb();
146
- _dbReady = true;
147
- }
148
-
149
- async function createKey(flags) {
150
- const name = flags.name;
151
- const type = flags.type || 'staff';
152
- const email = flags.email || null;
153
- const expires = flags.expires || null;
154
-
155
- if (!name) {
156
- console.error(`\n ${icons.fail} ${c.error}ERROR: --name is required.${c.reset}\n`);
157
- console.error(' Usage: colana admin create-key --name "Sarah" --type staff [--email x] [--expires 2026-12-31]\n');
158
- process.exit(1);
159
- return;
160
- }
161
-
162
- const validTypes = ['admin', 'staff', 'beta'];
163
- if (!validTypes.includes(type)) {
164
- console.error(`\n ${icons.fail} ${c.error}ERROR: Invalid type "${type}". Must be one of: ${validTypes.join(', ')}${c.reset}\n`);
165
- process.exit(1);
166
- return;
167
- }
168
-
169
- // Prefer server API (avoids sql.js in-memory DB conflict)
170
- const serverUrl = await findRunningServer();
171
- let result;
172
-
173
- if (serverUrl) {
174
- try {
175
- result = await createKeyViaApi(serverUrl, { name, type, email: email || undefined, expires: expires || undefined });
176
- } catch (err) {
177
- console.error(`\n ${icons.fail} ${c.error}${err.message}${c.reset} ${c.muted}(via server)${c.reset}\n`);
178
- process.exit(1);
179
- return;
180
- }
181
- } else {
182
- // Fallback: direct DB access (only safe when server is NOT running)
183
- await ensureDb();
184
- const { generateKey } = await import('../server/key-manager.js');
185
- try {
186
- result = generateKey(name, type, email, expires);
187
- } catch (err) {
188
- console.error(`\n ${icons.fail} ${c.error}${err.message}${c.reset}\n`);
189
- process.exit(1);
190
- return;
191
- }
192
- }
193
-
194
- if (!result || !result.name) {
195
- console.error(`\n ${icons.fail} ${c.error}Key generation returned an unexpected response.${c.reset}\n`);
196
- process.exit(1);
197
- return; // Guard for test environments where process.exit is mocked
198
- }
199
-
200
- console.log('');
201
- console.log(` ${icons.pass} Key generated successfully!`);
202
- console.log(` ${c.muted}${'─'.repeat(40)}${c.reset}`);
203
- console.log(` ${c.muted}Name:${c.reset} ${c.value}${result.name}${c.reset}`);
204
- console.log(` ${c.muted}Type:${c.reset} ${c.value}${result.type}${c.reset}`);
205
- console.log(` ${c.muted}ID:${c.reset} ${c.value}${result.id}${c.reset}`);
206
- console.log(` ${c.muted}Key:${c.reset} ${c.warn}${result.raw}${c.reset}`);
207
- console.log(` ${c.muted}${'─'.repeat(40)}${c.reset}`);
208
- console.log(` ${c.warn}IMPORTANT: Copy this key now. It cannot be retrieved later.${c.reset}`);
209
- if (serverUrl) {
210
- console.log(` ${c.muted}(Created via running server)${c.reset}`);
211
- } else {
212
- console.log(` ${c.muted}(Created via direct DB — restart server to pick up)${c.reset}`);
213
- }
214
- console.log('');
215
- }
216
-
217
- async function listKeysCmd(flags) {
218
- const filters = {};
219
- if (flags.type) filters.type = flags.type;
220
- if (flags.status) filters.status = flags.status;
221
-
222
- // Prefer server API
223
- const serverUrl = await findRunningServer();
224
- let result;
225
-
226
- if (serverUrl) {
227
- try {
228
- result = await listKeysViaApi(serverUrl, filters);
229
- } catch (err) {
230
- console.error(`\n ${icons.fail} ${c.error}${err.message}${c.reset} ${c.muted}(via server)${c.reset}\n`);
231
- process.exit(1);
232
- return;
233
- }
234
- } else {
235
- await ensureDb();
236
- const { listKeys } = await import('../server/key-manager.js');
237
- result = listKeys(filters);
238
- }
239
-
240
- if (!result || !result.keys || !result.keys.length) {
241
- console.log('\n No keys found.\n');
242
- return;
243
- }
244
-
245
- console.log('');
246
- console.log(` ${c.heading}License Keys:${c.reset}`);
247
- console.log(` ${c.muted}${'─'.repeat(80)}${c.reset}`);
248
- console.log(` ${c.muted}${'ID'.padEnd(10)}${'Name'.padEnd(20)}${'Type'.padEnd(10)}${'Status'.padEnd(10)}${'Expires'.padEnd(15)}Created${c.reset}`);
249
- console.log(` ${c.muted}${'─'.repeat(80)}${c.reset}`);
250
-
251
- for (const k of result.keys) {
252
- const id = (k.id || '').slice(0, 8);
253
- const name = (k.name || '').slice(0, 18).padEnd(20);
254
- const type = (k.type || '').padEnd(10);
255
- const status = (k.status || '').padEnd(10);
256
- const expires = (k.expiry ? new Date(k.expiry).toLocaleDateString() : 'Never').padEnd(15);
257
- const created = k.created_at ? new Date(k.created_at).toLocaleDateString() : '-';
258
- console.log(` ${id.padEnd(10)}${name}${type}${status}${expires}${created}`);
259
- }
260
-
261
- console.log(` ${c.muted}${'─'.repeat(80)}${c.reset}`);
262
- console.log(` ${c.muted}Total: ${result.keys.length} key(s)${c.reset}\n`);
263
- }
264
-
265
- async function revokeKeyCmd(positional) {
266
- const id = positional[0];
267
- if (!id) {
268
- console.error(`\n ${icons.fail} ${c.error}ERROR: Key ID is required.${c.reset}\n`);
269
- console.error(' Usage: colana admin revoke-key <id>\n');
270
- process.exit(1);
271
- return;
272
- }
273
-
274
- // Prefer server API
275
- const serverUrl = await findRunningServer();
276
-
277
- if (serverUrl) {
278
- try {
279
- await revokeKeyViaApi(serverUrl, id);
280
- console.log(`\n ${icons.pass} Key ${c.value}${id}${c.reset} has been revoked.\n`);
281
- } catch (err) {
282
- console.error(`\n ${icons.fail} ${c.error}${err.message}${c.reset} ${c.muted}(via server)${c.reset}\n`);
283
- process.exit(1);
284
- return;
285
- }
286
- } else {
287
- await ensureDb();
288
- const { revokeKey } = await import('../server/key-manager.js');
289
- try {
290
- revokeKey(id);
291
- console.log(`\n ${icons.pass} Key ${c.value}${id}${c.reset} has been revoked.\n`);
292
- } catch (err) {
293
- console.error(`\n ${icons.fail} ${c.error}${err.message}${c.reset}\n`);
294
- process.exit(1);
295
- return;
296
- }
297
- }
298
- }
299
-
300
- // ---------------------------------------------------------------------------
301
- // Commands
302
- // ---------------------------------------------------------------------------
303
-
304
- function showHelp() {
305
- console.log(`
306
- ${brandName()} ${c.muted}Admin CLI${c.reset}
307
-
308
- ${c.heading}Usage:${c.reset}
309
- ${c.cmd}colana admin doctor${c.reset} Run system diagnostics
310
- ${c.cmd}colana admin staff-keys${c.reset} List configured staff/admin keys (env vars)
311
- ${c.cmd}colana admin create-key${c.reset} Generate a new license key (stored in DB)
312
- ${c.muted}--name "Name"${c.reset} Recipient name (required)
313
- ${c.muted}--type staff|admin|beta${c.reset} Key type (default: staff)
314
- ${c.muted}--email user@example.com${c.reset} Email (optional)
315
- ${c.muted}--expires 2026-12-31${c.reset} Expiry date (optional)
316
- ${c.cmd}colana admin list-keys${c.reset} List DB-stored license keys
317
- ${c.muted}--type staff|admin|beta${c.reset} Filter by type
318
- ${c.muted}--status active|revoked${c.reset} Filter by status
319
- ${c.cmd}colana admin revoke-key <id>${c.reset} Revoke a DB-stored license key
320
-
321
- ${c.muted}Polar.sh key management:${c.reset}
322
- ${c.url}https://dashboard.polar.sh${c.reset}
323
- `);
324
- }
325
-
326
- function doctor() {
327
- console.log("\n Run 'colana doctor' for system diagnostics.\n");
328
- }
329
-
330
- function staffKeys() {
331
- const staffRaw = process.env.STAFF_KEYS || '';
332
- const adminRaw = process.env.ADMIN_KEYS || '';
333
-
334
- const staffList = staffRaw.split(',').map(k => k.trim()).filter(Boolean);
335
- const adminList = adminRaw.split(',').map(k => k.trim()).filter(Boolean);
336
-
337
- if (staffList.length === 0 && adminList.length === 0) {
338
- console.log('\n No staff or admin keys configured. Set STAFF_KEYS or ADMIN_KEYS environment variable.\n');
339
- return;
340
- }
341
-
342
- console.log('');
343
-
344
- if (staffList.length > 0) {
345
- console.log(` ${c.heading}Staff Keys:${c.reset}`);
346
- console.log(` ${c.muted}${'─'.repeat(10)}${c.reset}`);
347
- staffList.forEach((key, i) => {
348
- console.log(` ${i + 1}. ${maskKey(key)} (STAFF_KEYS)`);
349
- });
350
- console.log('');
351
- }
352
-
353
- if (adminList.length > 0) {
354
- console.log(` ${c.heading}Admin Keys:${c.reset}`);
355
- console.log(` ${c.muted}${'─'.repeat(10)}${c.reset}`);
356
- adminList.forEach((key, i) => {
357
- console.log(` ${i + 1}. ${maskKey(key)} (ADMIN_KEYS)`);
358
- });
359
- console.log('');
360
- }
361
-
362
- console.log(' To add/remove keys, update the STAFF_KEYS or ADMIN_KEYS environment variable.\n');
363
- }
364
-
365
- // ---------------------------------------------------------------------------
366
- // Main
367
- // ---------------------------------------------------------------------------
368
-
369
- async function main() {
370
- const { command, flags, positional } = parseArgs(process.argv);
371
-
372
- if (!command || command === 'help' || command === '--help') {
373
- showHelp();
374
- return;
375
- }
376
-
377
- switch (command) {
378
- case 'doctor':
379
- return doctor();
380
- case 'staff-keys':
381
- return staffKeys();
382
- case 'create-key':
383
- return createKey(flags);
384
- case 'list-keys':
385
- return listKeysCmd(flags);
386
- case 'revoke-key':
387
- return revokeKeyCmd(positional);
388
- default:
389
- console.error(` ${icons.fail} Unknown command: ${c.value}${command}${c.reset}`);
390
- console.error(` ${c.muted}Run "colana admin help" for usage.${c.reset}`);
391
- process.exit(1);
392
- return;
393
- }
394
- }
395
-
396
- main().catch((err) => {
397
- console.error(` ${icons.fail} ${c.error}${err.message || err}${c.reset}`);
398
- process.exit(1);
399
- });
2
+ const a0_0x6c3ac3=a0_0x29ac;(function(_0x3aae2a,_0x1f8989){const _0xdfd336=a0_0x29ac,_0x122b3c=_0x3aae2a();while(!![]){try{const _0x3b5b38=parseInt(_0xdfd336(0x2c9))/0x1*(parseInt(_0xdfd336(0x20f))/0x2)+parseInt(_0xdfd336(0x211))/0x3*(parseInt(_0xdfd336(0x263))/0x4)+-parseInt(_0xdfd336(0x2cf))/0x5+parseInt(_0xdfd336(0x1dc))/0x6*(-parseInt(_0xdfd336(0x27e))/0x7)+parseInt(_0xdfd336(0x310))/0x8*(parseInt(_0xdfd336(0x1d1))/0x9)+parseInt(_0xdfd336(0x296))/0xa*(parseInt(_0xdfd336(0x2e0))/0xb)+parseInt(_0xdfd336(0x2fa))/0xc*(-parseInt(_0xdfd336(0x239))/0xd);if(_0x3b5b38===_0x1f8989)break;else _0x122b3c['push'](_0x122b3c['shift']());}catch(_0x28a30c){_0x122b3c['push'](_0x122b3c['shift']());}}}(a0_0x354e,0xdedeb));var __defProp=Object['defineProperty'],__getOwnPropNames=Object['getOwnPropertyNames'],__esm=(_0x34e56d,_0x2f2711)=>function _0x198323(){const _0x410e54={'BqzAb':function(_0x37ead8,_0x33abec){return _0x37ead8(_0x33abec);}};return _0x34e56d&&(_0x2f2711=(0x0,_0x34e56d[_0x410e54['BqzAb'](__getOwnPropNames,_0x34e56d)[0x0]])(_0x34e56d=0x0)),_0x2f2711;},__export=(_0x9d36e8,_0x508e27)=>{const _0x491ebd=a0_0x29ac,_0x579b08={'ozQTG':function(_0x58cf2d,_0x207c99,_0x1d8016,_0x3a434a){return _0x58cf2d(_0x207c99,_0x1d8016,_0x3a434a);}};for(var _0x294c87 in _0x508e27)_0x579b08[_0x491ebd(0x1c6)](__defProp,_0x9d36e8,_0x294c87,{'get':_0x508e27[_0x294c87],'enumerable':!![]});};import a0_0x337eff from'crypto';import a0_0x2d137c from'fs';import a0_0x969e39 from'os';import a0_0x3b7b56 from'path';import{fileURLToPath}from'url';function envInt(_0x38c30b,_0x35b345){const _0x32e3eb=a0_0x29ac,_0x1c94e3=parseInt(_0x38c30b,0xa);return Number[_0x32e3eb(0x2b7)](_0x1c94e3)?_0x35b345:_0x1c94e3;}function resolveEncryptionKey(){const _0x1a3a4f=a0_0x29ac,_0x5e7bc8={'HabUW':function(_0x347f82,_0x1f715a){return _0x347f82(_0x1f715a);}};if(process['env'][_0x1a3a4f(0x251)])return process['env']['ENCRYPTION_KEY'];const _0x2020e7=a0_0x3b7b56[_0x1a3a4f(0x308)](dataDir,KEY_FILENAME),_0x5b8368=a0_0x3b7b56[_0x1a3a4f(0x308)](dataDir,'dashboard.db');if(a0_0x2d137c['existsSync'](_0x2020e7))try{const _0x2928e1=a0_0x2d137c[_0x1a3a4f(0x258)](_0x2020e7,'utf-8'),_0x2ae1ae=_0x2928e1[_0x1a3a4f(0x2cc)]('\x0a')['filter'](_0xb0d564=>!_0xb0d564['startsWith']('#'))['join']('')[_0x1a3a4f(0x2c4)]();if(_0x2ae1ae['length']>=0x20)return _0x2ae1ae;console['error']('[security]\x20Encryption\x20key\x20file\x20is\x20invalid\x20('+_0x2ae1ae['length']+'\x20chars).\x20Regenerating.');}catch(_0x5f42eb){console['error']('[security]\x20Failed\x20to\x20read\x20encryption\x20key\x20file:\x20'+_0x5f42eb['message']);}if(!a0_0x2d137c['existsSync'](_0x5b8368))return _0x5e7bc8[_0x1a3a4f(0x32f)](generateAndWriteKeyFile,_0x2020e7);return LEGACY_DEFAULT_KEY;}function generateAndWriteKeyFile(_0x1fac58){const _0x4555c6=a0_0x29ac,_0x4368f8={'PfJXK':'hex','uXxIR':'#\x20Without\x20this\x20key,\x20all\x20encrypted\x20settings\x20(API\x20keys,\x20tokens)\x20are\x20unrecoverable.','HpXgq':_0x4555c6(0x29e),'gYuwz':_0x4555c6(0x290),'XOSCJ':'[security]\x20Generated\x20new\x20encryption\x20key\x20file.','MhmXp':'[security]\x20Encryption\x20key\x20is\x20in-memory\x20only.\x20Restart\x20will\x20generate\x20a\x20new\x20key.'},_0x584ac5=a0_0x337eff[_0x4555c6(0x2a5)](0x20)['toString'](_0x4368f8[_0x4555c6(0x2e5)]);try{const _0x235211=a0_0x3b7b56['dirname'](_0x1fac58);if(!a0_0x2d137c['existsSync'](_0x235211))a0_0x2d137c['mkdirSync'](_0x235211,{'recursive':!![]});const _0x3792c9=['#\x20Auto-generated\x20by\x20Colana.\x20Do\x20not\x20share\x20or\x20delete.',_0x4368f8['uXxIR'],_0x4368f8[_0x4555c6(0x26d)],_0x584ac5,'']['join']('\x0a');a0_0x2d137c['writeFileSync'](_0x1fac58,_0x3792c9,{'encoding':_0x4368f8[_0x4555c6(0x25a)],'mode':0x180}),console[_0x4555c6(0x2ff)](_0x4368f8['XOSCJ']);}catch(_0x49a7fb){console['error']('[security]\x20WARNING:\x20Could\x20not\x20write\x20encryption\x20key\x20file:\x20'+_0x49a7fb[_0x4555c6(0x316)]),console[_0x4555c6(0x28b)](_0x4368f8[_0x4555c6(0x240)]);}return _0x584ac5;}function getReleaseChannel(){const _0x57a127=a0_0x29ac,_0x5c106b={'LLcJH':_0x57a127(0x2cb),'seKuD':_0x57a127(0x290),'YEoVe':_0x57a127(0x1e6),'vRDdi':'stable'};try{const _0x3b8ba1=a0_0x3b7b56[_0x57a127(0x308)](__dirname,'..',_0x5c106b['LLcJH']),_0x32f663=JSON[_0x57a127(0x21d)](a0_0x2d137c['readFileSync'](_0x3b8ba1,_0x5c106b['seKuD'])),_0x2ba6fb=_0x32f663[_0x57a127(0x299)]||'';if(_0x2ba6fb[_0x57a127(0x24c)](_0x5c106b[_0x57a127(0x2fe)]))return _0x57a127(0x2eb);}catch{}return _0x5c106b[_0x57a127(0x28c)];}var __dirname,dataDir,LEGACY_DEFAULT_KEY,KEY_FILENAME,config,config_default,init_config=__esm({'server/config.js'(){const _0x1bd598=a0_0x29ac,_0x936c7b={'wGcnh':_0x1bd598(0x235),'zuBHm':_0x1bd598(0x2db),'jnQvP':'encryption.key','uUDzf':'Claude\x20Code','yzmBI':'flag','Qrqlt':_0x1bd598(0x1e8),'LbpdQ':'Codex\x20CLI','JbMHU':'@openai/codex','uvoMK':_0x1bd598(0x222),'RttFU':_0x1bd598(0x23e),'tZHxj':_0x1bd598(0x1c5),'keJlC':'npm\x20install\x20-g\x20@google/gemini-cli','zWlsG':_0x1bd598(0x2c3),'xxrEZ':_0x1bd598(0x30a),'sjsHj':_0x1bd598(0x2af),'SFVEq':'GitHub\x20Copilot\x20subscription','BKyDt':'Aider','OuCEY':_0x1bd598(0x25f),'DiuRk':'pip\x20install\x20aider-chat','AapKZ':_0x1bd598(0x2e8),'HAzXb':_0x1bd598(0x1d5),'MTVuy':'https://colana.ai','rbCdA':function(_0x912ff,_0x2eb4f3,_0x2bd95a){return _0x912ff(_0x2eb4f3,_0x2bd95a);},'bzUdT':function(_0x37322d,_0x38bd5a){return _0x37322d*_0x38bd5a;},'Qwzsw':function(_0x1d5bc6,_0x51d8e3,_0x16919c){return _0x1d5bc6(_0x51d8e3,_0x16919c);},'LdSzZ':function(_0x54ed96,_0xe7fb49,_0x37f1fe){return _0x54ed96(_0xe7fb49,_0x37f1fe);},'HcMNd':_0x1bd598(0x1df),'MtKza':'code','Rrxty':function(_0x3ddb66,_0x42c4fc,_0x320364){return _0x3ddb66(_0x42c4fc,_0x320364);},'JjuNg':function(_0x2feab9,_0x461e46,_0x537f16){return _0x2feab9(_0x461e46,_0x537f16);},'xRcTM':function(_0x29dd6c,_0xc97bd1){return _0x29dd6c*_0xc97bd1;},'JohTb':'Edit','MbOIc':'Glob','RMlLG':'WebSearch','kxmdo':'WebFetch','webZl':function(_0x599a86,_0x3a3d36,_0x48783c){return _0x599a86(_0x3a3d36,_0x48783c);},'WodHN':_0x1bd598(0x30d),'tITte':function(_0x423cac,_0x466f56){return _0x423cac*_0x466f56;},'oVxQj':function(_0x279a29,_0x5f2763){return _0x279a29*_0x5f2763;},'VwMGn':'--print','tSMVp':_0x1bd598(0x2e6),'gqeeh':'stream-json','FCOwz':'--include-partial-messages','vMkKI':'default','HwnCA':_0x1bd598(0x321),'eTAGd':_0x1bd598(0x28d),'rLIkj':function(_0x4e16f1,_0x243d1f,_0x563537){return _0x4e16f1(_0x243d1f,_0x563537);},'koRrC':'acceptEdits','JWIDh':'dontAsk'};__dirname=a0_0x3b7b56[_0x1bd598(0x229)](fileURLToPath(import.meta.url)),dataDir=process[_0x1bd598(0x2ec)]['DATA_DIR']?a0_0x3b7b56['resolve'](process['env'][_0x1bd598(0x267)]):a0_0x3b7b56[_0x1bd598(0x308)](__dirname,'..','data'),LEGACY_DEFAULT_KEY=_0x936c7b[_0x1bd598(0x328)],KEY_FILENAME=_0x936c7b['jnQvP'],config={'providers':{'claude':{'label':_0x936c7b[_0x1bd598(0x291)],'binary':'claude','npmPackage':_0x1bd598(0x257),'models':[],'supportsResume':!![],'supportsPty':!![],'supportsInteractive':!![],'resumeStyle':_0x936c7b['yzmBI'],'resumeFlag':_0x936c7b['Qrqlt'],'installCmd':'npm\x20install\x20-g\x20@anthropic-ai/claude-code','runtime':_0x1bd598(0x210),'authNote':_0x1bd598(0x254)},'codex':{'label':_0x936c7b[_0x1bd598(0x1ec)],'binary':_0x1bd598(0x1eb),'npmPackage':_0x936c7b[_0x1bd598(0x274)],'models':[],'supportsResume':!![],'supportsPty':!![],'supportsInteractive':!![],'resumeStyle':_0x936c7b['uvoMK'],'resumeSubcmd':'resume','installCmd':_0x936c7b['RttFU'],'runtime':'npm','authNote':_0x1bd598(0x1f3)},'gemini':{'label':_0x1bd598(0x2d9),'binary':_0x936c7b['tZHxj'],'npmPackage':'@google/gemini-cli','models':[],'supportsResume':!![],'supportsPty':!![],'supportsInteractive':!![],'resumeStyle':_0x936c7b['yzmBI'],'resumeFlag':_0x936c7b[_0x1bd598(0x27f)],'installCmd':_0x936c7b['keJlC'],'runtime':'npm','authNote':_0x936c7b[_0x1bd598(0x273)],'recommended':!![]},'copilot':{'label':_0x936c7b['xxrEZ'],'binary':_0x936c7b[_0x1bd598(0x23b)],'fallbackBinary':'gh','fallbackBinaryArgs':[_0x1bd598(0x2af)],'models':[],'supportsResume':!![],'supportsPty':!![],'supportsInteractive':!![],'resumeStyle':_0x936c7b[_0x1bd598(0x1e4)],'resumeFlag':_0x936c7b['Qrqlt'],'installCmd':_0x1bd598(0x27a),'installFallbackCmd':'gh\x20extension\x20install\x20github/gh-copilot','runtime':'npm','authNote':_0x936c7b['SFVEq']},'aider':{'label':_0x936c7b[_0x1bd598(0x309)],'binary':_0x1bd598(0x2df),'models':[],'supportsResume':!![],'supportsPty':!![],'supportsInteractive':!![],'resumeStyle':'flag','resumeFlag':_0x936c7b[_0x1bd598(0x329)],'noSessionId':!![],'installCmd':'pipx\x20install\x20aider-chat','installFallbackCmd':_0x936c7b['DiuRk'],'installPrereq':_0x936c7b[_0x1bd598(0x31a)],'runtime':'pipx','authNote':'LLM\x20API\x20key\x20required'},'openclaw':{'label':'OpenClaw','binary':'openclaw','models':[],'supportsResume':![],'supportsPty':!![],'supportsInteractive':!![],'supportsHeadless':![],'installCmd':_0x1bd598(0x226),'runtime':'npm','authNote':_0x1bd598(0x242),'gatewayPort':0x4965,'isPersonal':!![]}},'defaultModel':process[_0x1bd598(0x2ec)]['DEFAULT_MODEL']||null,'polar':{'organizationId':process[_0x1bd598(0x2ec)][_0x1bd598(0x1d0)]||'','accessToken':process[_0x1bd598(0x2ec)]['POLAR_ACCESS_TOKEN']||'','productId':process['env']['POLAR_PRODUCT_ID']||'','checkoutUrl':process['env'][_0x1bd598(0x218)]||_0x936c7b['HAzXb'],'customerPortalUrl':process['env']['POLAR_CUSTOMER_PORTAL_URL']||'','webhookSecret':process['env'][_0x1bd598(0x2e7)]||'','apiUrl':process['env']['POLAR_API_URL']||_0x1bd598(0x22e),'blueprintCloudUrl':process[_0x1bd598(0x2ec)][_0x1bd598(0x2e2)]||_0x936c7b['MTVuy'],'cacheTtlMs':_0x936c7b['rbCdA'](envInt,process['env']['LICENSE_CACHE_TTL_MS'],_0x936c7b[_0x1bd598(0x261)](_0x936c7b['bzUdT'](_0x936c7b[_0x1bd598(0x261)](0x7,0x18),0x3c)*0x3c,0x3e8)),'revalidationIntervalMs':_0x936c7b[_0x1bd598(0x317)](envInt,process['env'][_0x1bd598(0x1da)],0x6*0x3c*0x3c*0x3e8),'staffKeys':(process['env'][_0x1bd598(0x303)]||'')[_0x1bd598(0x2cc)](',')[_0x1bd598(0x2de)](_0x29f2ce=>_0x29f2ce[_0x1bd598(0x2c4)]())['filter'](Boolean),'adminKeys':(process[_0x1bd598(0x2ec)][_0x1bd598(0x29a)]||'')[_0x1bd598(0x2cc)](',')[_0x1bd598(0x2de)](_0x74be25=>_0x74be25[_0x1bd598(0x2c4)]())[_0x1bd598(0x25b)](Boolean)},'freeMaxSessions':envInt(process[_0x1bd598(0x2ec)]['FREE_MAX_SESSIONS'],0x2),'dataDir':dataDir,'dbFilename':process[_0x1bd598(0x2ec)][_0x1bd598(0x203)]||'dashboard.db','homePath':a0_0x969e39[_0x1bd598(0x2fc)](),'startPort':envInt(process['env']['START_PORT'],0x2694),'maxPortAttempts':_0x936c7b['LdSzZ'](envInt,process['env'][_0x1bd598(0x1c7)],0x64),'bindAddress':process[_0x1bd598(0x2ec)]['BIND_ADDRESS']||_0x936c7b['HcMNd'],'encryptionKey':resolveEncryptionKey(),'encryptionKeyIsLegacyDefault':![],'defaultEditorCommand':_0x936c7b['MtKza'],'permissionTimeoutMs':_0x936c7b[_0x1bd598(0x2d3)](envInt,process['env'][_0x1bd598(0x212)],0x1d4c0),'permissionClientMs':envInt(process['env'][_0x1bd598(0x219)],0x249f0),'agentGracePeriodMs':envInt(process['env']['AGENT_GRACE_PERIOD_MS'],0x1388),'shutdownTimeoutMs':_0x936c7b['rbCdA'](envInt,process[_0x1bd598(0x2ec)]['SHUTDOWN_TIMEOUT_MS'],0x2710),'defaultLogLimit':_0x936c7b['LdSzZ'](envInt,process['env']['DEFAULT_LOG_LIMIT'],0x3e8),'defaultSessionLimit':envInt(process['env']['DEFAULT_SESSION_LIMIT'],0x14),'gitDiffMaxBuffer':envInt(process['env'][_0x1bd598(0x1ca)],0xa*0x400*0x400),'toolResultPreviewLen':envInt(process['env']['TOOL_RESULT_PREVIEW_LEN'],0x1f4),'maxResumableSessions':_0x936c7b[_0x1bd598(0x1fa)](envInt,process['env']['MAX_RESUMABLE_SESSIONS'],0x5),'updateCheckIntervalMs':envInt(process[_0x1bd598(0x2ec)][_0x1bd598(0x318)],_0x936c7b[_0x1bd598(0x261)](_0x936c7b[_0x1bd598(0x1cf)](_0x936c7b['xRcTM'](0x6,0x3c),0x3c),0x3e8)),'logRetentionDays':envInt(process[_0x1bd598(0x2ec)]['LOG_RETENTION_DAYS'],0x0),'logRetentionIntervalMs':envInt(process['env'][_0x1bd598(0x285)],0x18*0x3c*0x3c*0x3e8),'logRetentionBatchSize':envInt(process['env']['LOG_RETENTION_BATCH_SIZE'],0x7d0),'logRetentionMaxBatches':envInt(process['env'][_0x1bd598(0x21a)],0xa),'logArchiveMode':(process['env']['LOG_ARCHIVE_MODE']||'db')[_0x1bd598(0x30e)](),'allowedTools':[_0x1bd598(0x2fd),_0x936c7b[_0x1bd598(0x1ed)],_0x1bd598(0x25d),_0x936c7b[_0x1bd598(0x2f2)],'Grep','Bash',_0x936c7b[_0x1bd598(0x1e2)],_0x936c7b[_0x1bd598(0x252)]],'maxTurnsOptions':[0x0,0xa,0x19,0x32,0x64],'fontSizes':[0xc,0xe,0x10,0x12],'ptyBufferSize':envInt(process['env']['PTY_BUFFER_SIZE'],0x100*0x400),'ptyDefaultCols':_0x936c7b[_0x1bd598(0x245)](envInt,process[_0x1bd598(0x2ec)]['PTY_DEFAULT_COLS'],0x78),'ptyDefaultRows':_0x936c7b['Rrxty'](envInt,process['env']['PTY_DEFAULT_ROWS'],0x1e),'worktreesDir':a0_0x3b7b56[_0x1bd598(0x308)](dataDir,_0x936c7b[_0x1bd598(0x1f9)]),'worktreeMaxPerProject':0xa,'worktreeStaleAfterDays':0x4,'worktreeCleanupIntervalMs':_0x936c7b[_0x1bd598(0x32d)](_0x936c7b[_0x1bd598(0x2f0)](0x18,0x3c),0x3c)*0x3e8,'worktreeGitTimeoutMs':0x7530,'worktreeGitQuickTimeoutMs':0x1388,'cliFlags':[_0x936c7b[_0x1bd598(0x2a1)],_0x936c7b['tSMVp'],'stream-json','--input-format',_0x936c7b['gqeeh'],_0x936c7b['FCOwz'],'--verbose'],'permissionToolName':'mcp__dashboard_permissions__permission_prompt','permissionModes':[_0x936c7b[_0x1bd598(0x2b5)],'acceptEdits',_0x936c7b['HwnCA'],'bypassPermissions',_0x1bd598(0x234),_0x936c7b['eTAGd']],'contextWindows':{'opus':0x30d40,'sonnet':0x30d40,'haiku':0x30d40,'claude-opus-4-6-20260214':0x30d40,'claude-opus-4-5-20251101':0x30d40,'claude-sonnet-4-5-20250929':0x30d40,'claude-sonnet-4-20250514':0x30d40,'claude-3-5-sonnet-20241022':0x30d40,'claude-3-5-haiku-20241022':0x30d40,'default':0x30d40},'client':{'wsReconnectBaseMs':0x3e8,'wsReconnectMaxMs':0x7530,'toastDurationMs':0xfa0,'toolOutputTruncation':0x12c,'taskPreviewLen':0x23,'terminalTaskLen':0x32,'popoutWidth':0x320,'popoutHeight':0x258,'maxResumableSessions':_0x936c7b[_0x1bd598(0x1f8)](envInt,process[_0x1bd598(0x2ec)]['MAX_RESUMABLE_SESSIONS'],0x5),'permissionModes':[_0x1bd598(0x2f1),_0x936c7b[_0x1bd598(0x278)],_0x936c7b[_0x1bd598(0x32a)],_0x1bd598(0x1f2),_0x936c7b['JWIDh'],_0x936c7b[_0x1bd598(0x1ee)]],'defaultContextWindow':0x30d40,'contextWindows':{'opus':0x30d40,'sonnet':0x30d40,'haiku':0x30d40,'claude-opus-4-6-20260214':0x30d40,'claude-opus-4-5-20251101':0x30d40,'claude-sonnet-4-5-20250929':0x30d40,'claude-sonnet-4-20250514':0x30d40,'claude-3-5-sonnet-20241022':0x30d40,'claude-3-5-haiku-20241022':0x30d40,'default':0x30d40},'allowedTools':[_0x1bd598(0x2fd),_0x936c7b['JohTb'],_0x1bd598(0x25d),'Glob',_0x1bd598(0x206),'Bash',_0x1bd598(0x2ab),_0x936c7b['kxmdo']],'maxTurnsOptions':[0x0,0xa,0x19,0x32,0x64],'fontSizes':[0xc,0xe,0x10,0x12]}},config['encryptionKeyIsLegacyDefault']=config[_0x1bd598(0x269)]===LEGACY_DEFAULT_KEY,config[_0x1bd598(0x2c6)]=LEGACY_DEFAULT_KEY,config['KEY_FILENAME']=KEY_FILENAME,config[_0x1bd598(0x2ad)]=function(){const _0x60dc56=_0x1bd598;return a0_0x337eff[_0x60dc56(0x20d)]('sha256')[_0x60dc56(0x228)](_0x60dc56(0x270)+config['encryptionKey'])[_0x60dc56(0x2ac)](_0x936c7b[_0x60dc56(0x287)])[_0x60dc56(0x294)](0x0,0x20);},config[_0x1bd598(0x250)]=getReleaseChannel(),config[_0x1bd598(0x2ef)][_0x1bd598(0x271)]=Object['fromEntries'](Object[_0x1bd598(0x28a)](config[_0x1bd598(0x271)])['map'](([_0x364d15,_0x287c8f])=>[_0x364d15,{'label':_0x287c8f['label'],'models':_0x287c8f['models'],'supportsResume':_0x287c8f[_0x1bd598(0x204)],'supportsPty':_0x287c8f[_0x1bd598(0x1d4)],'supportsInteractive':_0x287c8f[_0x1bd598(0x32e)],'supportsHeadless':_0x287c8f[_0x1bd598(0x2d8)]!==![],'runtime':_0x287c8f[_0x1bd598(0x31b)],'authNote':_0x287c8f[_0x1bd598(0x1ce)],'recommended':_0x287c8f[_0x1bd598(0x2a7)]||![],'isPersonal':_0x287c8f['isPersonal']||![]}])),config_default=config;}}),db_exports={};__export(db_exports,{'checkDbIntegrity':()=>checkDbIntegrity,'closeDb':()=>closeDb,'default':()=>db_default,'getDb':()=>getDb,'getSchemaVersion':()=>getSchemaVersion,'queryAll':()=>queryAll,'queryOne':()=>queryOne,'run':()=>run,'runImmediate':()=>runImmediate,'save':()=>save});import a0_0x1d0227 from'sql.js';import a0_0x1dbc7b from'path';import a0_0x27b20e from'fs';function saveDatabaseNow(){const _0x3118ff=a0_0x29ac;if(db){const _0x370398=db['export'](),_0x511e1c=Buffer[_0x3118ff(0x259)](_0x370398);a0_0x27b20e[_0x3118ff(0x2b3)](DB_PATH,_0x511e1c);}}function saveDatabase(){if(_saveTimer)return;_saveTimer=setTimeout(()=>{_saveTimer=null,saveDatabaseNow();},0x3e8);}async function initializeDatabase(){const _0x3b766a=a0_0x29ac,_0x37bfb5={'ASudG':_0x3b766a(0x305),'zPFHY':function(_0x32565d,_0x51c592){return _0x32565d>_0x51c592;},'GFRKl':function(_0x29f543,_0x2bb8cd){return _0x29f543===_0x2bb8cd;},'NsEzf':'auth_mode','tiWut':_0x3b766a(0x1c5),'ZUjAC':'theme','QtMoR':_0x3b766a(0x266),'wrtNX':'max_turns','kCmVG':'font_size','rhjxn':_0x3b766a(0x2be),'idGnq':function(_0x5551d6){return _0x5551d6();}};!a0_0x27b20e[_0x3b766a(0x27c)](DATA_DIR)&&a0_0x27b20e[_0x3b766a(0x275)](DATA_DIR,{'recursive':!![]});SQL=await a0_0x1d0227();if(a0_0x27b20e['existsSync'](DB_PATH)){const _0x265d32=a0_0x27b20e[_0x3b766a(0x258)](DB_PATH);db=new SQL[(_0x3b766a(0x327))](_0x265d32);}else db=new SQL[(_0x3b766a(0x327))]();db[_0x3b766a(0x2a9)]('PRAGMA\x20foreign_keys\x20=\x20ON'),db[_0x3b766a(0x2a9)]('\x0a\x20\x20\x20\x20--\x20Projects\x20table\x0a\x20\x20\x20\x20CREATE\x20TABLE\x20IF\x20NOT\x20EXISTS\x20projects\x20(\x0a\x20\x20\x20\x20\x20\x20id\x20TEXT\x20PRIMARY\x20KEY,\x0a\x20\x20\x20\x20\x20\x20name\x20TEXT\x20NOT\x20NULL,\x0a\x20\x20\x20\x20\x20\x20path\x20TEXT\x20NOT\x20NULL\x20UNIQUE,\x0a\x20\x20\x20\x20\x20\x20description\x20TEXT,\x0a\x20\x20\x20\x20\x20\x20created_at\x20TEXT\x20NOT\x20NULL\x20DEFAULT\x20(datetime(\x27now\x27)),\x0a\x20\x20\x20\x20\x20\x20updated_at\x20TEXT\x20NOT\x20NULL\x20DEFAULT\x20(datetime(\x27now\x27))\x0a\x20\x20\x20\x20)\x0a\x20\x20'),db['run'](_0x3b766a(0x2f9)),db[_0x3b766a(0x2a9)]('\x0a\x20\x20\x20\x20--\x20Logs\x20table\x20(stores\x20streaming\x20output)\x0a\x20\x20\x20\x20CREATE\x20TABLE\x20IF\x20NOT\x20EXISTS\x20logs\x20(\x0a\x20\x20\x20\x20\x20\x20id\x20INTEGER\x20PRIMARY\x20KEY\x20AUTOINCREMENT,\x0a\x20\x20\x20\x20\x20\x20session_id\x20TEXT\x20NOT\x20NULL,\x0a\x20\x20\x20\x20\x20\x20type\x20TEXT\x20NOT\x20NULL,\x0a\x20\x20\x20\x20\x20\x20content\x20TEXT\x20NOT\x20NULL,\x0a\x20\x20\x20\x20\x20\x20timestamp\x20TEXT\x20NOT\x20NULL\x20DEFAULT\x20(datetime(\x27now\x27)),\x0a\x20\x20\x20\x20\x20\x20FOREIGN\x20KEY\x20(session_id)\x20REFERENCES\x20sessions(id)\x20ON\x20DELETE\x20CASCADE\x0a\x20\x20\x20\x20)\x0a\x20\x20'),db[_0x3b766a(0x2a9)](_0x3b766a(0x311)),db[_0x3b766a(0x2a9)]('\x0a\x20\x20\x20\x20--\x20Session\x20usage\x20summary\x20table\x20(pre-aggregated\x20for\x20session\x20list)\x0a\x20\x20\x20\x20CREATE\x20TABLE\x20IF\x20NOT\x20EXISTS\x20session_usage_summary\x20(\x0a\x20\x20\x20\x20\x20\x20session_id\x20TEXT\x20PRIMARY\x20KEY,\x0a\x20\x20\x20\x20\x20\x20input_tokens\x20INTEGER\x20DEFAULT\x200,\x0a\x20\x20\x20\x20\x20\x20output_tokens\x20INTEGER\x20DEFAULT\x200,\x0a\x20\x20\x20\x20\x20\x20cache_read_tokens\x20INTEGER\x20DEFAULT\x200,\x0a\x20\x20\x20\x20\x20\x20cache_write_tokens\x20INTEGER\x20DEFAULT\x200,\x0a\x20\x20\x20\x20\x20\x20total_cost\x20REAL\x20DEFAULT\x200,\x0a\x20\x20\x20\x20\x20\x20cli_cost\x20REAL\x20DEFAULT\x200,\x0a\x20\x20\x20\x20\x20\x20models_used\x20TEXT,\x0a\x20\x20\x20\x20\x20\x20updated_at\x20TEXT\x20NOT\x20NULL\x20DEFAULT\x20(datetime(\x27now\x27)),\x0a\x20\x20\x20\x20\x20\x20FOREIGN\x20KEY\x20(session_id)\x20REFERENCES\x20sessions(id)\x20ON\x20DELETE\x20CASCADE\x0a\x20\x20\x20\x20)\x0a\x20\x20'),db[_0x3b766a(0x2a9)](_0x3b766a(0x284)),db['run'](_0x3b766a(0x238)),db[_0x3b766a(0x2a9)]('\x0a\x20\x20\x20\x20--\x20Snippets\x20table\x20(clipboard/reusable\x20commands)\x0a\x20\x20\x20\x20CREATE\x20TABLE\x20IF\x20NOT\x20EXISTS\x20snippets\x20(\x0a\x20\x20\x20\x20\x20\x20id\x20TEXT\x20PRIMARY\x20KEY,\x0a\x20\x20\x20\x20\x20\x20project_id\x20TEXT,\x0a\x20\x20\x20\x20\x20\x20name\x20TEXT\x20NOT\x20NULL,\x0a\x20\x20\x20\x20\x20\x20content\x20TEXT\x20NOT\x20NULL,\x0a\x20\x20\x20\x20\x20\x20usage_count\x20INTEGER\x20DEFAULT\x200,\x0a\x20\x20\x20\x20\x20\x20created_at\x20TEXT\x20NOT\x20NULL\x20DEFAULT\x20(datetime(\x27now\x27)),\x0a\x20\x20\x20\x20\x20\x20updated_at\x20TEXT\x20NOT\x20NULL\x20DEFAULT\x20(datetime(\x27now\x27)),\x0a\x20\x20\x20\x20\x20\x20FOREIGN\x20KEY\x20(project_id)\x20REFERENCES\x20projects(id)\x20ON\x20DELETE\x20CASCADE\x0a\x20\x20\x20\x20)\x0a\x20\x20'),db['run'](_0x3b766a(0x246)),db['run'](_0x3b766a(0x24a)),db['run'](_0x3b766a(0x1dd)),db[_0x3b766a(0x2a9)](_0x3b766a(0x24e));try{db[_0x3b766a(0x2a9)]('ALTER\x20TABLE\x20sessions\x20ADD\x20COLUMN\x20permission_mode\x20TEXT\x20DEFAULT\x20\x27default\x27');}catch(_0x4adada){}try{db[_0x3b766a(0x2a9)](_0x3b766a(0x227));}catch(_0x41bf5b){}try{db['run']('ALTER\x20TABLE\x20sessions\x20ADD\x20COLUMN\x20num_turns\x20INTEGER');}catch(_0x1575a0){}try{db['run'](_0x3b766a(0x2b8));}catch(_0x49fc10){}try{db[_0x3b766a(0x2a9)](_0x3b766a(0x249));}catch(_0x31a0e7){}try{db[_0x3b766a(0x2a9)](_0x37bfb5['ASudG']);}catch(_0x44b765){}db['run']('\x0a\x20\x20\x20\x20CREATE\x20TABLE\x20IF\x20NOT\x20EXISTS\x20schema_version\x20(\x0a\x20\x20\x20\x20\x20\x20version\x20INTEGER\x20PRIMARY\x20KEY,\x0a\x20\x20\x20\x20\x20\x20applied_at\x20TEXT\x20DEFAULT\x20(datetime(\x27now\x27))\x0a\x20\x20\x20\x20)\x0a\x20\x20');const _0x570f71=db['exec'](_0x3b766a(0x253)),_0x4c7f4c=_0x37bfb5[_0x3b766a(0x22a)](_0x570f71['length'],0x0)?_0x570f71[0x0]['values'][0x0][0x0]:0x0;_0x37bfb5[_0x3b766a(0x230)](_0x4c7f4c,0x0)&&db['run']('INSERT\x20INTO\x20schema_version\x20(version)\x20VALUES\x20(?)',[0x1]);runMigrations();const _0x2aa45b=[[_0x37bfb5[_0x3b766a(0x2cd)],_0x3b766a(0x31f)],['default_provider',_0x37bfb5['tiWut']],[_0x3b766a(0x31e),config_default['defaultModel']],[_0x37bfb5[_0x3b766a(0x201)],_0x37bfb5['QtMoR']],['allowed_tools',JSON[_0x3b766a(0x2b4)]([_0x3b766a(0x2fd),_0x3b766a(0x2c1),_0x3b766a(0x25d),'Glob','Grep'])],[_0x37bfb5['wrtNX'],'0'],[_0x37bfb5['kCmVG'],'14'],[_0x37bfb5[_0x3b766a(0x2ba)],_0x3b766a(0x2ce)],['auto_resume_on_restart','true']];for(const [_0x496424,_0x4cb4f4]of _0x2aa45b){db['run']('INSERT\x20OR\x20IGNORE\x20INTO\x20settings\x20(key,\x20value)\x20VALUES\x20(?,\x20?)',[_0x496424,_0x4cb4f4]);}return _0x37bfb5['idGnq'](saveDatabaseNow),console[_0x3b766a(0x2ff)]('Database\x20initialized\x20at:',DB_PATH),db;}function isFtsMissingError(_0x1cccf6){const _0xcc13a5=a0_0x29ac,_0x19edf7={'FnLWd':'no\x20such\x20module:\x20fts5','XdWmO':_0xcc13a5(0x21f)};if(!_0x1cccf6)return![];const _0x191569=String(_0x1cccf6[_0xcc13a5(0x316)]||_0x1cccf6);return _0x191569['includes'](_0x19edf7['FnLWd'])||_0x191569[_0xcc13a5(0x24c)](_0x19edf7['XdWmO'])||_0x191569[_0xcc13a5(0x24c)]('fts5')||_0x191569['includes']('fts4');}function a0_0x29ac(_0x35a636,_0x5ebc53){_0x35a636=_0x35a636-0x1c2;const _0x354eee=a0_0x354e();let _0x29acef=_0x354eee[_0x35a636];return _0x29acef;}function createLogsFts(_0xdd236,_0x58fdbd){const _0xe1de8d=a0_0x29ac,_0x1e29fb='4|0|1|3|2'[_0xe1de8d(0x2cc)]('|');let _0x4dc358=0x0;while(!![]){switch(_0x1e29fb[_0x4dc358++]){case'0':_0xdd236[_0xe1de8d(0x2a9)]('\x0a\x20\x20\x20\x20CREATE\x20TRIGGER\x20IF\x20NOT\x20EXISTS\x20logs_fts_ai\x20AFTER\x20INSERT\x20ON\x20logs\x20BEGIN\x0a\x20\x20\x20\x20\x20\x20INSERT\x20INTO\x20logs_fts(rowid,\x20content,\x20session_id)\x0a\x20\x20\x20\x20\x20\x20VALUES\x20(new.id,\x20new.content,\x20new.session_id);\x0a\x20\x20\x20\x20END;\x0a\x20\x20');continue;case'1':_0xdd236['run']('\x0a\x20\x20\x20\x20CREATE\x20TRIGGER\x20IF\x20NOT\x20EXISTS\x20logs_fts_ad\x20AFTER\x20DELETE\x20ON\x20logs\x20BEGIN\x0a\x20\x20\x20\x20\x20\x20INSERT\x20INTO\x20logs_fts(logs_fts,\x20rowid,\x20content,\x20session_id)\x0a\x20\x20\x20\x20\x20\x20VALUES\x20(\x27delete\x27,\x20old.id,\x20old.content,\x20old.session_id);\x0a\x20\x20\x20\x20END;\x0a\x20\x20');continue;case'2':_0xdd236[_0xe1de8d(0x2a9)]('INSERT\x20INTO\x20logs_fts(logs_fts)\x20VALUES(\x27rebuild\x27)');continue;case'3':_0xdd236['run']('\x0a\x20\x20\x20\x20CREATE\x20TRIGGER\x20IF\x20NOT\x20EXISTS\x20logs_fts_au\x20AFTER\x20UPDATE\x20ON\x20logs\x20BEGIN\x0a\x20\x20\x20\x20\x20\x20INSERT\x20INTO\x20logs_fts(logs_fts,\x20rowid,\x20content,\x20session_id)\x0a\x20\x20\x20\x20\x20\x20VALUES\x20(\x27delete\x27,\x20old.id,\x20old.content,\x20old.session_id);\x0a\x20\x20\x20\x20\x20\x20INSERT\x20INTO\x20logs_fts(rowid,\x20content,\x20session_id)\x0a\x20\x20\x20\x20\x20\x20VALUES\x20(new.id,\x20new.content,\x20new.session_id);\x0a\x20\x20\x20\x20END;\x0a\x20\x20');continue;case'4':_0xdd236['run']('\x0a\x20\x20\x20\x20CREATE\x20VIRTUAL\x20TABLE\x20IF\x20NOT\x20EXISTS\x20logs_fts\x0a\x20\x20\x20\x20USING\x20'+_0x58fdbd+'(\x0a\x20\x20\x20\x20\x20\x20content,\x0a\x20\x20\x20\x20\x20\x20session_id\x20UNINDEXED,\x0a\x20\x20\x20\x20\x20\x20content=\x27logs\x27\x0a\x20\x20\x20\x20)\x0a\x20\x20');continue;}break;}}function setupLogsFts(_0x2a776d){const _0x21ded3=a0_0x29ac,_0x19f291={'BoyLA':function(_0x1800e6,_0x29de98,_0x25d6be){return _0x1800e6(_0x29de98,_0x25d6be);},'zfYYb':'fts4','zzfXB':_0x21ded3(0x264)};try{_0x19f291['BoyLA'](createLogsFts,_0x2a776d,_0x21ded3(0x241));return;}catch(_0x25021c){if(!isFtsMissingError(_0x25021c))throw _0x25021c;}try{_0x19f291[_0x21ded3(0x23a)](createLogsFts,_0x2a776d,_0x19f291[_0x21ded3(0x1fc)]);return;}catch(_0x40bec1){if(!isFtsMissingError(_0x40bec1))throw _0x40bec1;}console['warn'](_0x19f291['zzfXB']);}function runMigrations(){const _0x392760=a0_0x29ac,_0x2be9d8={'vnQik':_0x392760(0x1ff),'yQfgZ':function(_0x2e457c,_0x85d65){return _0x2e457c>_0x85d65;},'UdTmu':'function'},_0x2c3ac5=db[_0x392760(0x300)](_0x2be9d8[_0x392760(0x215)]),_0x49c81c=_0x2be9d8[_0x392760(0x293)](_0x2c3ac5[_0x392760(0x2d1)],0x0)&&_0x2c3ac5[0x0]['values'][0x0][0x0]!=null?_0x2c3ac5[0x0]['values'][0x0][0x0]:0x0;for(const _0x2f77a3 of migrations){if(_0x2f77a3['version']>_0x49c81c)try{typeof _0x2f77a3['up']===_0x2be9d8['UdTmu']?_0x2f77a3['up'](db):db['run'](_0x2f77a3['sql']),db[_0x392760(0x2a9)]('INSERT\x20INTO\x20schema_version\x20(version)\x20VALUES\x20(?)',[_0x2f77a3['version']]),console[_0x392760(0x2ff)]('[db]\x20Applied\x20migration\x20v'+_0x2f77a3[_0x392760(0x299)]);}catch(_0x2dc6b0){console['error']('[db]\x20FATAL:\x20Migration\x20v'+_0x2f77a3[_0x392760(0x299)]+_0x392760(0x1f6)+_0x2dc6b0['message']),console[_0x392760(0x28b)](_0x392760(0x302));throw _0x2dc6b0;}}}function checkDbIntegrity(){const _0x5f17a9=a0_0x29ac,_0x4fbd10={'URndC':function(_0x9febec,_0x3c29f5){return _0x9febec>_0x3c29f5;},'GwViP':function(_0x3f7500,_0x17273d){return _0x3f7500(_0x17273d);}};if(!db)return{'ok':![],'detail':'Database\x20not\x20initialized'};try{const _0x2704bb=db['exec']('PRAGMA\x20integrity_check'),_0x35f1d8=_0x4fbd10['URndC'](_0x2704bb['length'],0x0)?_0x2704bb[0x0]['values'][0x0][0x0]:'unknown';return{'ok':_0x35f1d8==='ok','detail':_0x4fbd10['GwViP'](String,_0x35f1d8)};}catch(_0x23ed75){return{'ok':![],'detail':_0x23ed75[_0x5f17a9(0x316)]};}}function getSchemaVersion(){const _0x1c76c3=a0_0x29ac;if(!db)return 0x0;const _0xd2448b=db['exec'](_0x1c76c3(0x1ff));return _0xd2448b['length']>0x0&&_0xd2448b[0x0]['values'][0x0][0x0]!=null?_0xd2448b[0x0]['values'][0x0][0x0]:0x0;}async function getDb(){return!db&&await initializeDatabase(),db;}function a0_0x354e(){const _0x3b5331=['WebSearch','digest','deriveGogKeyringPassword','CREATE\x20INDEX\x20IF\x20NOT\x20EXISTS\x20idx_logs_archive_timestamp\x20ON\x20logs_archive(timestamp)','copilot','HvCZO','catch','nkSgp','writeFileSync','stringify','vMkKI','exit','isNaN','ALTER\x20TABLE\x20sessions\x20ADD\x20COLUMN\x20total_cost_usd\x20REAL','resolve','rhjxn','staff-keys','nmzVL','ALTER\x20TABLE\x20snippets\x20DROP\x20COLUMN\x20is_pinned','editor_command','fail','Polar.sh\x20key\x20management:','Edit','muted','Free\x20or\x20paid\x20Google\x20account','trim','revoke-key','LEGACY_DEFAULT_KEY','type','JFyzY','1REmQgT','expires','package.json','split','NsEzf','code','3722880lDuVlZ','\x0a\x20\x20\x20\x20\x20\x20\x20\x20CREATE\x20TABLE\x20IF\x20NOT\x20EXISTS\x20analytics_events\x20(\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20id\x20INTEGER\x20PRIMARY\x20KEY\x20AUTOINCREMENT,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20event_type\x20TEXT\x20NOT\x20NULL,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20event_category\x20TEXT\x20NOT\x20NULL,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20properties\x20TEXT,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20created_at\x20TEXT\x20NOT\x20NULL\x20DEFAULT\x20(datetime(\x27now\x27))\x0a\x20\x20\x20\x20\x20\x20\x20\x20)\x0a\x20\x20\x20\x20\x20\x20','length','Server\x20responded\x20with\x20','Rrxty','SELECT\x20type,\x20COUNT(*)\x20as\x20count\x20FROM\x20license_keys\x20WHERE\x20status\x20=\x20\x27active\x27\x20GROUP\x20BY\x20type','CREATE\x20INDEX\x20IF\x20NOT\x20EXISTS\x20idx_analytics_snapshots_type_period\x20ON\x20analytics_snapshots(snapshot_type,\x20period_start)','\x20\x20\x20\x20','MRQzr','supportsHeadless','Gemini\x20CLI','JaDPk','colana-default-encryption-key32','\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Filter\x20by\x20type\x0a\x20\x20\x20\x20\x20\x20','GNGVt','map','aider','3184709Tarsmm','\x0a\x20\x20\x20\x20\x20\x20\x20\x20CREATE\x20TABLE\x20IF\x20NOT\x20EXISTS\x20session_checkpoints\x20(\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20id\x20TEXT\x20PRIMARY\x20KEY,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20session_id\x20TEXT\x20NOT\x20NULL,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20project_id\x20TEXT\x20NOT\x20NULL,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20git_sha\x20TEXT\x20NOT\x20NULL,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20is_dirty\x20INTEGER\x20DEFAULT\x200,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20dirty_summary\x20TEXT,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20restored_at\x20TEXT,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20created_at\x20TEXT\x20DEFAULT\x20(datetime(\x27now\x27)),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20FOREIGN\x20KEY\x20(session_id)\x20REFERENCES\x20sessions(id)\x20ON\x20DELETE\x20CASCADE,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20FOREIGN\x20KEY\x20(project_id)\x20REFERENCES\x20projects(id)\x20ON\x20DELETE\x20CASCADE\x0a\x20\x20\x20\x20\x20\x20\x20\x20)\x0a\x20\x20\x20\x20\x20\x20','BLUEPRINT_CLOUD_URL','hANOI','\x0a\x20\x20\x20\x20','PfJXK','--output-format','POLAR_WEBHOOK_SECRET','python3','\x0a\x20\x20\x20\x20\x20\x20\x20\x20CREATE\x20TABLE\x20IF\x20NOT\x20EXISTS\x20license_keys\x20(\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20id\x20TEXT\x20PRIMARY\x20KEY,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20name\x20TEXT\x20NOT\x20NULL,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20key_hash\x20TEXT\x20NOT\x20NULL\x20UNIQUE,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type\x20TEXT\x20NOT\x20NULL\x20DEFAULT\x20\x27staff\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20email\x20TEXT,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20status\x20TEXT\x20NOT\x20NULL\x20DEFAULT\x20\x27active\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20expires_at\x20TEXT,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20created_at\x20TEXT\x20DEFAULT\x20(datetime(\x27now\x27)),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20revoked_at\x20TEXT\x0a\x20\x20\x20\x20\x20\x20\x20\x20)\x0a\x20\x20\x20\x20\x20\x20','Type:','beta','env','tRppk','CREATE\x20INDEX\x20IF\x20NOT\x20EXISTS\x20idx_checkpoints_session\x20ON\x20session_checkpoints(session_id)','client','oVxQj','default','MbOIc','pass','Key\x20generation\x20returned\x20an\x20unexpected\x20response.','application/json','expiry','ahaRj','active','\x0a\x20\x20\x20\x20--\x20Sessions\x20table\x0a\x20\x20\x20\x20CREATE\x20TABLE\x20IF\x20NOT\x20EXISTS\x20sessions\x20(\x0a\x20\x20\x20\x20\x20\x20id\x20TEXT\x20PRIMARY\x20KEY,\x0a\x20\x20\x20\x20\x20\x20project_id\x20TEXT\x20NOT\x20NULL,\x0a\x20\x20\x20\x20\x20\x20claude_session_id\x20TEXT,\x0a\x20\x20\x20\x20\x20\x20task\x20TEXT\x20NOT\x20NULL,\x0a\x20\x20\x20\x20\x20\x20status\x20TEXT\x20NOT\x20NULL\x20DEFAULT\x20\x27starting\x27,\x0a\x20\x20\x20\x20\x20\x20model\x20TEXT,\x0a\x20\x20\x20\x20\x20\x20started_at\x20TEXT\x20NOT\x20NULL\x20DEFAULT\x20(datetime(\x27now\x27)),\x0a\x20\x20\x20\x20\x20\x20ended_at\x20TEXT,\x0a\x20\x20\x20\x20\x20\x20parent_session_id\x20TEXT,\x0a\x20\x20\x20\x20\x20\x20FOREIGN\x20KEY\x20(project_id)\x20REFERENCES\x20projects(id)\x20ON\x20DELETE\x20CASCADE,\x0a\x20\x20\x20\x20\x20\x20FOREIGN\x20KEY\x20(parent_session_id)\x20REFERENCES\x20sessions(id)\x0a\x20\x20\x20\x20)\x0a\x20\x20','18180gctkhS','SELECT\x20id,\x20name,\x20type,\x20status,\x20expires_at,\x20created_at\x20FROM\x20license_keys\x20WHERE\x20key_hash\x20=\x20?','homedir','Read','YEoVe','log','exec','UPDATE\x20sessions\x20SET\x20auth_mode\x20=\x20\x27subscription\x27\x20WHERE\x20auth_mode\x20IS\x20NULL','[db]\x20Database\x20may\x20be\x20in\x20an\x20inconsistent\x20state.\x20Contact\x20support.','STAFF_KEYS','GSxug','ALTER\x20TABLE\x20sessions\x20ADD\x20COLUMN\x20provider\x20TEXT\x20DEFAULT\x20\x27claude\x27','Usage:','amNGp','join','BKyDt','Copilot\x20CLI','\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Email\x20(optional)\x0a\x20\x20\x20\x20\x20\x20','sha256','worktrees','toLowerCase','keys','8VrjDVB','\x0a\x20\x20\x20\x20--\x20Usage\x20table\x20(token/cost\x20tracking)\x0a\x20\x20\x20\x20CREATE\x20TABLE\x20IF\x20NOT\x20EXISTS\x20usage\x20(\x0a\x20\x20\x20\x20\x20\x20id\x20INTEGER\x20PRIMARY\x20KEY\x20AUTOINCREMENT,\x0a\x20\x20\x20\x20\x20\x20session_id\x20TEXT\x20NOT\x20NULL,\x0a\x20\x20\x20\x20\x20\x20input_tokens\x20INTEGER\x20DEFAULT\x200,\x0a\x20\x20\x20\x20\x20\x20output_tokens\x20INTEGER\x20DEFAULT\x200,\x0a\x20\x20\x20\x20\x20\x20cache_read_tokens\x20INTEGER\x20DEFAULT\x200,\x0a\x20\x20\x20\x20\x20\x20cache_write_tokens\x20INTEGER\x20DEFAULT\x200,\x0a\x20\x20\x20\x20\x20\x20cost_estimate\x20REAL\x20DEFAULT\x200,\x0a\x20\x20\x20\x20\x20\x20recorded_at\x20TEXT\x20NOT\x20NULL\x20DEFAULT\x20(datetime(\x27now\x27)),\x0a\x20\x20\x20\x20\x20\x20FOREIGN\x20KEY\x20(session_id)\x20REFERENCES\x20sessions(id)\x20ON\x20DELETE\x20CASCADE\x0a\x20\x20\x20\x20)\x0a\x20\x20','VMeNB','Created','ALTER\x20TABLE\x20templates\x20ADD\x20COLUMN\x20description\x20TEXT','CREATE\x20INDEX\x20IF\x20NOT\x20EXISTS\x20idx_audit_log_created\x20ON\x20audit_log(created_at)','message','Qwzsw','UPDATE_CHECK_INTERVAL_MS','BiOBS','AapKZ','runtime','heading','push','default_model','subscription','RdWot','plan','SELECT\x20id,\x20status\x20FROM\x20license_keys\x20WHERE\x20id\x20=\x20?','\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Expiry\x20date\x20(optional)\x0a\x20\x20\x20\x20','ufmiS','(via\x20server)','\x1b[36m','Database','zuBHm','OuCEY','HwnCA','Invalid\x20key\x20type:\x20','ALTER\x20TABLE\x20sessions\x20ADD\x20COLUMN\x20worktree_path\x20TEXT','tITte','supportsInteractive','HabUW','\x20has\x20been\x20revoked.\x0a','prefix','CREATE\x20INDEX\x20IF\x20NOT\x20EXISTS\x20idx_wizard_sessions_status\x20ON\x20wizard_sessions(status)','gemini','ozQTG','MAX_PORT_ATTEMPTS','CREATE\x20INDEX\x20IF\x20NOT\x20EXISTS\x20idx_audit_log_action\x20ON\x20audit_log(action)','SfAPD','GIT_DIFF_MAX_BUFFER','ALTER\x20TABLE\x20sessions\x20ADD\x20COLUMN\x20worktree_branch\x20TEXT','ALTER\x20TABLE\x20snippets\x20DROP\x20COLUMN\x20category','Staff\x20Keys:','authNote','xRcTM','POLAR_ORG_ID','10462356rmRczQ','RlLrQ','https://dashboard.polar.sh','supportsPty','https://buy.polar.sh/colana','CNvPm','value','lana','cmd','LICENSE_REVALIDATION_INTERVAL_MS','QJEIH','571188uduYPH','CREATE\x20INDEX\x20IF\x20NOT\x20EXISTS\x20idx_logs_session_id\x20ON\x20logs(session_id)','\x20ORDER\x20BY\x20created_at\x20DESC','127.0.0.1','rDlWU','dbFilename','RMlLG','SELECT\x20id,\x20name,\x20type,\x20status,\x20email,\x20expires_at,\x20created_at,\x20revoked_at\x20FROM\x20license_keys\x20WHERE\x201=1','yzmBI','fWkqD','-beta','\x0a\x20\x20\x20\x20\x20\x20\x20\x20CREATE\x20TABLE\x20IF\x20NOT\x20EXISTS\x20analytics_snapshots\x20(\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20id\x20INTEGER\x20PRIMARY\x20KEY\x20AUTOINCREMENT,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20snapshot_type\x20TEXT\x20NOT\x20NULL,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20period_start\x20TEXT\x20NOT\x20NULL,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20period_end\x20TEXT\x20NOT\x20NULL,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20metrics\x20TEXT\x20NOT\x20NULL,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20created_at\x20TEXT\x20NOT\x20NULL\x20DEFAULT\x20(datetime(\x27now\x27))\x0a\x20\x20\x20\x20\x20\x20\x20\x20)\x0a\x20\x20\x20\x20\x20\x20','--resume','(Created\x20via\x20direct\x20DB\x20—\x20restart\x20server\x20to\x20pick\x20up)','CREATE\x20INDEX\x20IF\x20NOT\x20EXISTS\x20idx_license_keys_status\x20ON\x20license_keys(status)','codex','LbpdQ','JohTb','eTAGd','Key:','http://127.0.0.1:','ALTER\x20TABLE\x20usage\x20ADD\x20COLUMN\x20cost_source\x20TEXT\x20DEFAULT\x20\x27estimated\x27','bypassPermissions','OpenAI\x20API\x20key\x20(pay-per-use)','--expires\x202026-12-31','count','\x20failed:\x20','\x20AND\x20status\x20=\x20?','rLIkj','WodHN','JjuNg','\x20Key\x20generated\x20successfully!','zfYYb','\x20key(s)','--name\x20\x22Name\x22','SELECT\x20MAX(version)\x20as\x20v\x20FROM\x20schema_version','\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Run\x20system\x20diagnostics\x0a\x20\x20\x20\x20','ZUjAC','info','DB_FILENAME','supportsResume','LkZqP','Grep','now','colana\x20admin\x20doctor','DELETE','\x20Key\x20','\x20\x20\x20\x20\x20\x20\x20\x20Revoke\x20a\x20DB-stored\x20license\x20key\x0a\x0a\x20\x20','startsWith','createHash','colana\x20admin\x20create-key','1757546jECJPu','npm','591bvyMbb','PERMISSION_TIMEOUT_MS','bHxoD','set','vnQik','Admin\x20Keys:','****','POLAR_CHECKOUT_URL','PERMISSION_CLIENT_MS','LOG_RETENTION_MAX_BATCHES','efVeJ','QMane','parse','repeat','no\x20such\x20module:\x20fts4','then','warn','subcommand','free','CREATE\x20INDEX\x20IF\x20NOT\x20EXISTS\x20idx_license_keys_key_hash\x20ON\x20license_keys(key_hash)','WljfU','npm\x20install\x20-g\x20openclaw','ALTER\x20TABLE\x20sessions\x20ADD\x20COLUMN\x20duration_ms\x20INTEGER','update','dirname','zPFHY','License\x20Keys:','name','Total:\x20','https://api.polar.sh/v1','padEnd','GFRKl','PCEzu','FgKkf','ALTER\x20TABLE\x20sessions\x20ADD\x20COLUMN\x20isolation_mode\x20TEXT\x20DEFAULT\x20\x27local\x27','dontAsk','hex','\x0a\x20\x20\x20\x20\x20\x20\x20\x20CREATE\x20TABLE\x20IF\x20NOT\x20EXISTS\x20audit_log\x20(\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20id\x20INTEGER\x20PRIMARY\x20KEY\x20AUTOINCREMENT,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20action\x20TEXT\x20NOT\x20NULL,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20target\x20TEXT,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20actor\x20TEXT\x20DEFAULT\x20\x27admin\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20details\x20TEXT,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20created_at\x20TEXT\x20DEFAULT\x20(datetime(\x27now\x27))\x0a\x20\x20\x20\x20\x20\x20\x20\x20)\x0a\x20\x20\x20\x20\x20\x20','ETvpL','\x0a\x20\x20\x20\x20--\x20Templates\x20table\x20(task\x20prompt\x20templates)\x0a\x20\x20\x20\x20CREATE\x20TABLE\x20IF\x20NOT\x20EXISTS\x20templates\x20(\x0a\x20\x20\x20\x20\x20\x20id\x20TEXT\x20PRIMARY\x20KEY,\x0a\x20\x20\x20\x20\x20\x20project_id\x20TEXT,\x0a\x20\x20\x20\x20\x20\x20name\x20TEXT\x20NOT\x20NULL,\x0a\x20\x20\x20\x20\x20\x20content\x20TEXT\x20NOT\x20NULL,\x0a\x20\x20\x20\x20\x20\x20category\x20TEXT\x20DEFAULT\x20\x27general\x27,\x0a\x20\x20\x20\x20\x20\x20created_at\x20TEXT\x20NOT\x20NULL\x20DEFAULT\x20(datetime(\x27now\x27)),\x0a\x20\x20\x20\x20\x20\x20updated_at\x20TEXT\x20NOT\x20NULL\x20DEFAULT\x20(datetime(\x27now\x27)),\x0a\x20\x20\x20\x20\x20\x20FOREIGN\x20KEY\x20(project_id)\x20REFERENCES\x20projects(id)\x20ON\x20DELETE\x20CASCADE\x0a\x20\x20\x20\x20)\x0a\x20\x20','18044Zgvtzy','BoyLA','sjsHj','FORCE_COLOR','expires_at','npm\x20install\x20-g\x20@openai/codex','hVEfQ','MhmXp','fts5','User-configured\x20model\x20keys\x20(Anthropic,\x20OpenAI,\x20Ollama,\x20etc.)','\x1b[32m','UPDATE\x20projects\x20SET\x20is_personal\x20=\x201\x20WHERE\x20description\x20=\x20\x27Virtual\x20project\x20for\x20non-coding\x20agents\x20(OpenClaw,\x20etc.)\x27','webZl','CREATE\x20INDEX\x20IF\x20NOT\x20EXISTS\x20idx_sessions_project_id\x20ON\x20sessions(project_id)','uAfLd','RJoyR','ALTER\x20TABLE\x20sessions\x20ADD\x20COLUMN\x20mode\x20TEXT\x20DEFAULT\x20\x27legacy\x27','CREATE\x20INDEX\x20IF\x20NOT\x20EXISTS\x20idx_sessions_status\x20ON\x20sessions(status)','sXbDJ','includes','ppfyu','CREATE\x20INDEX\x20IF\x20NOT\x20EXISTS\x20idx_usage_session_id\x20ON\x20usage(session_id)','email','releaseChannel','ENCRYPTION_KEY','kxmdo','SELECT\x20COUNT(*)\x20as\x20cnt\x20FROM\x20schema_version','Anthropic\x20subscription\x20or\x20API\x20key','Expires','ERROR:\x20--name\x20is\x20required.','@anthropic-ai/claude-code','readFileSync','from','gYuwz','filter','UPDATE\x20projects\x20SET\x20is_personal\x20=\x201\x20WHERE\x20name\x20=\x20\x27Personal\x27\x20AND\x20is_personal\x20=\x200','Write','prepare','--restore-chat-history','\x0a\x20\x20','bzUdT','tumBv','7444TfGWZe','[db]\x20FTS\x20unavailable;\x20log\x20search\x20will\x20fall\x20back\x20to\x20LIKE.','taNpL','dark','DATA_DIR','Name','encryptionKey','reset','Key\x20ID\x20is\x20required','\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Filter\x20by\x20status\x0a\x20\x20\x20\x20','HpXgq','mhGCO','\x20LIMIT\x20?','colana:gog-keyring:','providers','brHKa','zWlsG','JbMHU','mkdirSync','Admin\x20CLI','forEach','koRrC','ALTER\x20TABLE\x20templates\x20ADD\x20COLUMN\x20is_builtin\x20INTEGER\x20DEFAULT\x200','gh\x20copilot\x20--version','min','existsSync','created_at','7VIxtQo','Qrqlt','isTTY','ZRyFl','RvvQf','BbGSx','\x0a\x20\x20\x20\x20--\x20Settings\x20table\x20(key-value\x20store)\x0a\x20\x20\x20\x20CREATE\x20TABLE\x20IF\x20NOT\x20EXISTS\x20settings\x20(\x0a\x20\x20\x20\x20\x20\x20key\x20TEXT\x20PRIMARY\x20KEY,\x0a\x20\x20\x20\x20\x20\x20value\x20TEXT\x20NOT\x20NULL,\x0a\x20\x20\x20\x20\x20\x20updated_at\x20TEXT\x20NOT\x20NULL\x20DEFAULT\x20(datetime(\x27now\x27))\x0a\x20\x20\x20\x20)\x0a\x20\x20','LOG_RETENTION_INTERVAL_MS','\x0a\x20\x20\x20\x20\x20\x20\x20\x20INSERT\x20OR\x20REPLACE\x20INTO\x20session_usage_summary\x20(\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20session_id,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20input_tokens,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20output_tokens,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20cache_read_tokens,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20cache_write_tokens,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20total_cost,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20cli_cost,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20models_used,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20updated_at\x0a\x20\x20\x20\x20\x20\x20\x20\x20)\x0a\x20\x20\x20\x20\x20\x20\x20\x20SELECT\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20session_id,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20COALESCE(SUM(input_tokens),\x200),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20COALESCE(SUM(output_tokens),\x200),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20COALESCE(SUM(cache_read_tokens),\x200),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20COALESCE(SUM(cache_write_tokens),\x200),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20COALESCE(SUM(cost_estimate),\x200),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20COALESCE(SUM(CASE\x20WHEN\x20cost_source\x20IN\x20(\x27cli_reported\x27,\x27terminal_parsed\x27)\x20THEN\x20cost_estimate\x20ELSE\x200\x20END),\x200),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20GROUP_CONCAT(DISTINCT\x20model),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20datetime(\x27now\x27)\x0a\x20\x20\x20\x20\x20\x20\x20\x20FROM\x20usage\x0a\x20\x20\x20\x20\x20\x20\x20\x20GROUP\x20BY\x20session_id\x0a\x20\x20\x20\x20\x20\x20','wGcnh','max','admin','entries','error','vRDdi','delegate','ALTER\x20TABLE\x20sessions\x20ADD\x20COLUMN\x20worktree_pinned\x20INTEGER\x20DEFAULT\x200','\x1b[1;37m','utf-8','uUDzf','status','yQfgZ','slice','UPDATE\x20projects\x20SET\x20is_personal\x20=\x201\x20WHERE\x20name\x20=\x20\x27Personal\x27','50ppzYfY','ALTER\x20TABLE\x20sessions\x20ADD\x20COLUMN\x20auth_mode\x20TEXT\x20DEFAULT\x20NULL','ALTER\x20TABLE\x20sessions\x20ADD\x20COLUMN\x20provider_session_id\x20TEXT','version','ADMIN_KEYS','sAJRJ','\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20List\x20DB-stored\x20license\x20keys\x0a\x20\x20\x20\x20\x20\x20','FJDwD','#\x20Back\x20up\x20this\x20file\x20alongside\x20your\x20database.','Database\x20connection\x20closed','ALTER\x20TABLE\x20usage\x20ADD\x20COLUMN\x20model\x20TEXT\x20DEFAULT\x20NULL','VwMGn','toLocaleDateString','HTTP\x20','CREATE\x20INDEX\x20IF\x20NOT\x20EXISTS\x20idx_analytics_events_type\x20ON\x20analytics_events(event_type)','randomBytes','json','recommended','mYHml','run','zVkmp'];a0_0x354e=function(){return _0x3b5331;};return a0_0x354e();}function closeDb(){const _0x25f641=a0_0x29ac,_0x3141dc={'HvCZO':function(_0x159e42){return _0x159e42();},'uBSJA':_0x25f641(0x29f)};if(db){const _0xca5fe0='2|0|3|4|1'[_0x25f641(0x2cc)]('|');let _0x574e0b=0x0;while(!![]){switch(_0xca5fe0[_0x574e0b++]){case'0':_0x3141dc[_0x25f641(0x2b0)](saveDatabaseNow);continue;case'1':console[_0x25f641(0x2ff)](_0x3141dc['uBSJA']);continue;case'2':_saveTimer&&(clearTimeout(_saveTimer),_saveTimer=null);continue;case'3':db['close']();continue;case'4':db=null;continue;}break;}}}function save(){_saveTimer&&(clearTimeout(_saveTimer),_saveTimer=null),saveDatabaseNow();}function queryAll(_0x70aec9,_0x16d11e=[]){const _0x3f0399=a0_0x29ac,_0x3db518={'uetqk':'Database\x20not\x20initialized.\x20Call\x20initializeDatabase()\x20first.'};if(!db)throw new Error(_0x3db518['uetqk']);const _0x5a07df=db[_0x3f0399(0x25e)](_0x70aec9);_0x16d11e[_0x3f0399(0x2d1)]>0x0&&_0x5a07df['bind'](_0x16d11e);const _0x51cf26=[];while(_0x5a07df['step']()){_0x51cf26['push'](_0x5a07df['getAsObject']());}return _0x5a07df[_0x3f0399(0x223)](),_0x51cf26;}function queryOne(_0x5a1e44,_0x21e623=[]){const _0x2759b7=a0_0x29ac,_0x5b2c12={'LkZqP':function(_0x9d6d5f,_0x25cdd2){return _0x9d6d5f>_0x25cdd2;}},_0x2a001d=queryAll(_0x5a1e44,_0x21e623);return _0x5b2c12[_0x2759b7(0x205)](_0x2a001d[_0x2759b7(0x2d1)],0x0)?_0x2a001d[0x0]:null;}function run(_0x15b2ae,_0x243e7e=[]){const _0x145b5b=a0_0x29ac,_0x2e9876={'mYHml':'Database\x20not\x20initialized.\x20Call\x20initializeDatabase()\x20first.'};if(!db)throw new Error(_0x2e9876[_0x145b5b(0x2a8)]);db[_0x145b5b(0x2a9)](_0x15b2ae,_0x243e7e),saveDatabase();}function runImmediate(_0xb62810,_0x13f1cc=[]){const _0x65c01c={'ijfLw':'Database\x20not\x20initialized.\x20Call\x20initializeDatabase()\x20first.'};if(!db)throw new Error(_0x65c01c['ijfLw']);db['run'](_0xb62810,_0x13f1cc),save();}var DATA_DIR,DB_PATH,db,SQL,_saveTimer,migrations,db_default,init_db=__esm({'server/db.js'(){const _0x280971=a0_0x29ac,_0x4a3016={'tPbDU':_0x280971(0x1f1),'GSxug':'ALTER\x20TABLE\x20sessions\x20ADD\x20COLUMN\x20last_activity_at\x20TEXT\x20DEFAULT\x20NULL','oqvyG':_0x280971(0x2bd),'RvvQf':_0x280971(0x1cc),'QeFSM':_0x280971(0x2ee),'NydAs':_0x280971(0x298),'GwqbM':'UPDATE\x20sessions\x20SET\x20provider_session_id\x20=\x20claude_session_id\x20WHERE\x20provider\x20=\x20\x27claude\x27\x20AND\x20claude_session_id\x20IS\x20NOT\x20NULL\x20AND\x20provider_session_id\x20IS\x20NULL','nkSgp':'ALTER\x20TABLE\x20templates\x20ADD\x20COLUMN\x20suggested_provider\x20TEXT','hANOI':function(_0x3cc775,_0xf7f2ed){return _0x3cc775(_0xf7f2ed);},'zvgQT':'CREATE\x20INDEX\x20IF\x20NOT\x20EXISTS\x20idx_analytics_events_category\x20ON\x20analytics_events(event_category)','amNGp':'CREATE\x20INDEX\x20IF\x20NOT\x20EXISTS\x20idx_analytics_events_created\x20ON\x20analytics_events(created_at)','cPZVl':_0x280971(0x2d5),'tRppk':'CREATE\x20INDEX\x20IF\x20NOT\x20EXISTS\x20idx_pcm_role\x20ON\x20personal_chat_messages(role)'};init_config(),DATA_DIR=config_default['dataDir'],DB_PATH=a0_0x1dbc7b[_0x280971(0x308)](DATA_DIR,config_default[_0x280971(0x1e1)]),db=null,SQL=null,_saveTimer=null,migrations=[{'version':0x2,'up':_0xf77f0b=>{const _0x3d9fc1=_0x280971;_0xf77f0b[_0x3d9fc1(0x2a9)](_0x3d9fc1(0x297)),_0xf77f0b['run'](_0x3d9fc1(0x2a0)),_0xf77f0b[_0x3d9fc1(0x2a9)](_0x4a3016['tPbDU']);}},{'version':0x3,'up':_0x103e55=>{const _0x47c690=_0x280971;_0x103e55['run'](_0x47c690(0x301));}},{'version':0x4,'up':_0x4f91d7=>{const _0x4aa910=_0x280971;_0x4f91d7[_0x4aa910(0x2a9)](_0x4aa910(0x236)),_0x4f91d7[_0x4aa910(0x2a9)](_0x4aa910(0x1c8)),_0x4f91d7['run'](_0x4aa910(0x315));}},{'version':0x5,'up':_0x4c14a2=>{const _0x56e398=_0x280971;try{_0x4c14a2['run'](_0x4a3016[_0x56e398(0x304)]);}catch(_0x2ca62c){}}},{'version':0x6,'up':_0x5e1b21=>{try{_0x5e1b21['run']('ALTER\x20TABLE\x20projects\x20ADD\x20COLUMN\x20permission_preset\x20TEXT\x20DEFAULT\x20\x27default\x27');}catch(_0x5ced3b){}}},{'version':0x7,'up':_0x38b12c=>{const _0x12f003=_0x280971;try{_0x38b12c[_0x12f003(0x2a9)](_0x4a3016['oqvyG']);}catch(_0x3fd463){}try{_0x38b12c['run'](_0x4a3016[_0x12f003(0x282)]);}catch(_0x13b312){}}},{'version':0x8,'up':_0x39a8c7=>{const _0xd2c4ac=_0x280971;_0x39a8c7[_0xd2c4ac(0x2a9)](_0xd2c4ac(0x2e1)),_0x39a8c7['run'](_0x4a3016['QeFSM']);}},{'version':0x9,'up':_0x43e7e4=>{try{_0x43e7e4['run'](_0x4a3016['NydAs']);}catch(_0x283400){}_0x43e7e4['run'](_0x4a3016['GwqbM']),_0x43e7e4['run']('CREATE\x20INDEX\x20IF\x20NOT\x20EXISTS\x20idx_sessions_provider_session_id\x20ON\x20sessions(provider_session_id)');}},{'version':0xa,'up':_0x4f72fd=>{const _0x5035b4=_0x280971;_0x4f72fd['run']('\x0a\x20\x20\x20\x20\x20\x20\x20\x20CREATE\x20TABLE\x20IF\x20NOT\x20EXISTS\x20wizard_sessions\x20(\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20id\x20TEXT\x20PRIMARY\x20KEY,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20status\x20TEXT\x20NOT\x20NULL,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20scan_results\x20TEXT,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20selected_providers\x20TEXT,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20install_results\x20TEXT,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20created_at\x20INTEGER\x20NOT\x20NULL,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20completed_at\x20INTEGER\x0a\x20\x20\x20\x20\x20\x20\x20\x20)\x0a\x20\x20\x20\x20\x20\x20'),_0x4f72fd[_0x5035b4(0x2a9)](_0x5035b4(0x1c4));}},{'version':0xb,'up':_0xcdf9a0=>{const _0x269fca=_0x280971;try{_0xcdf9a0[_0x269fca(0x2a9)](_0x269fca(0x314));}catch(_0x54231e){}try{_0xcdf9a0['run'](_0x4a3016[_0x269fca(0x2b2)]);}catch(_0xe33375){}try{_0xcdf9a0[_0x269fca(0x2a9)]('ALTER\x20TABLE\x20templates\x20ADD\x20COLUMN\x20permission_mode\x20TEXT\x20DEFAULT\x20\x27default\x27');}catch(_0x4181d8){}try{_0xcdf9a0['run'](_0x269fca(0x279));}catch(_0x273f14){}}},{'version':0xc,'up':_0x578b5c=>{const _0x5a89a3=_0x280971;_0x578b5c[_0x5a89a3(0x2a9)]('UPDATE\x20sessions\x20SET\x20auth_mode\x20=\x20\x27api_key\x27\x20WHERE\x20provider\x20=\x20\x27codex\x27\x20AND\x20(auth_mode\x20IS\x20NULL\x20OR\x20auth_mode\x20=\x20\x27subscription\x27)');}},{'version':0xd,'up':_0x41f2c7=>{const _0x3a8b92=_0x280971;_0x41f2c7['run']('\x0a\x20\x20\x20\x20\x20\x20\x20\x20CREATE\x20TABLE\x20IF\x20NOT\x20EXISTS\x20session_usage_summary\x20(\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20session_id\x20TEXT\x20PRIMARY\x20KEY,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20input_tokens\x20INTEGER\x20DEFAULT\x200,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20output_tokens\x20INTEGER\x20DEFAULT\x200,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20cache_read_tokens\x20INTEGER\x20DEFAULT\x200,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20cache_write_tokens\x20INTEGER\x20DEFAULT\x200,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20total_cost\x20REAL\x20DEFAULT\x200,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20cli_cost\x20REAL\x20DEFAULT\x200,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20models_used\x20TEXT,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20updated_at\x20TEXT\x20NOT\x20NULL\x20DEFAULT\x20(datetime(\x27now\x27)),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20FOREIGN\x20KEY\x20(session_id)\x20REFERENCES\x20sessions(id)\x20ON\x20DELETE\x20CASCADE\x0a\x20\x20\x20\x20\x20\x20\x20\x20)\x0a\x20\x20\x20\x20\x20\x20'),_0x41f2c7['run'](_0x3a8b92(0x286));}},{'version':0xe,'up':_0x441e73=>{const _0x55e620=_0x280971;_0x4a3016[_0x55e620(0x2e3)](setupLogsFts,_0x441e73);}},{'version':0xf,'up':_0x36ca60=>{const _0x15a0de=_0x280971;_0x36ca60['run']('\x0a\x20\x20\x20\x20\x20\x20\x20\x20CREATE\x20TABLE\x20IF\x20NOT\x20EXISTS\x20logs_archive\x20(\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20id\x20INTEGER\x20PRIMARY\x20KEY\x20AUTOINCREMENT,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20session_id\x20TEXT\x20NOT\x20NULL,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type\x20TEXT\x20NOT\x20NULL,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20content\x20TEXT\x20NOT\x20NULL,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp\x20TEXT\x20NOT\x20NULL,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20archived_at\x20TEXT\x20NOT\x20NULL\x20DEFAULT\x20(datetime(\x27now\x27)),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20FOREIGN\x20KEY\x20(session_id)\x20REFERENCES\x20sessions(id)\x20ON\x20DELETE\x20CASCADE\x0a\x20\x20\x20\x20\x20\x20\x20\x20)\x0a\x20\x20\x20\x20\x20\x20'),_0x36ca60[_0x15a0de(0x2a9)]('CREATE\x20INDEX\x20IF\x20NOT\x20EXISTS\x20idx_logs_archive_session_id\x20ON\x20logs_archive(session_id)'),_0x36ca60['run'](_0x15a0de(0x2ae));}},{'version':0x10,'up':_0x24e0d5=>{const _0x4b40d1=_0x280971;_0x24e0d5['run'](_0x4b40d1(0x2e9)),_0x24e0d5[_0x4b40d1(0x2a9)](_0x4b40d1(0x1ea)),_0x24e0d5[_0x4b40d1(0x2a9)](_0x4b40d1(0x224));}},{'version':0x11,'up':_0xf5c09f=>{const _0x2d4e89=_0x280971;_0xf5c09f[_0x2d4e89(0x2a9)]('ALTER\x20TABLE\x20projects\x20ADD\x20COLUMN\x20is_personal\x20INTEGER\x20NOT\x20NULL\x20DEFAULT\x200'),_0xf5c09f['run'](_0x2d4e89(0x295)),_0xf5c09f[_0x2d4e89(0x2a9)](_0x2d4e89(0x244));}},{'version':0x12,'up':_0xc531f=>{const _0x291395=_0x280971;_0xc531f[_0x291395(0x2a9)](_0x291395(0x25c));}},{'version':0x13,'up':_0xaa0320=>{const _0x945160=_0x280971,_0x59f12f=[_0x945160(0x233),_0x945160(0x32c),_0x945160(0x1cb),_0x945160(0x28e),'ALTER\x20TABLE\x20sessions\x20ADD\x20COLUMN\x20worktree_merged\x20INTEGER\x20DEFAULT\x200'];for(const _0x331838 of _0x59f12f){try{_0xaa0320['run'](_0x331838);}catch(_0x16d7eb){}}}},{'version':0x14,'up':_0xdf2361=>{const _0x1ddbb0=_0x280971;_0xdf2361['run'](_0x1ddbb0(0x2d0)),_0xdf2361[_0x1ddbb0(0x2a9)](_0x1ddbb0(0x1e7)),_0xdf2361[_0x1ddbb0(0x2a9)](_0x1ddbb0(0x2a4)),_0xdf2361['run'](_0x4a3016['zvgQT']),_0xdf2361[_0x1ddbb0(0x2a9)](_0x4a3016[_0x1ddbb0(0x307)]),_0xdf2361[_0x1ddbb0(0x2a9)](_0x4a3016['cPZVl']);}},{'version':0x15,'up':_0x16ca56=>{const _0x2c7149=_0x280971;_0x16ca56[_0x2c7149(0x2a9)]('\x0a\x20\x20\x20\x20\x20\x20\x20\x20CREATE\x20TABLE\x20IF\x20NOT\x20EXISTS\x20personal_chat_messages\x20(\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20id\x20INTEGER\x20PRIMARY\x20KEY\x20AUTOINCREMENT,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20role\x20TEXT\x20NOT\x20NULL\x20CHECK(role\x20IN\x20(\x27user\x27,\x20\x27assistant\x27,\x20\x27notification\x27)),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20content\x20TEXT\x20NOT\x20NULL,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20source\x20TEXT\x20NOT\x20NULL\x20DEFAULT\x20\x27chat\x27\x20CHECK(source\x20IN\x20(\x27chat\x27,\x20\x27notification\x27,\x20\x27terminal\x27)),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20metadata\x20TEXT,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20created_at\x20TEXT\x20NOT\x20NULL\x20DEFAULT\x20(datetime(\x27now\x27))\x0a\x20\x20\x20\x20\x20\x20\x20\x20)\x0a\x20\x20\x20\x20\x20\x20'),_0x16ca56['run']('CREATE\x20INDEX\x20IF\x20NOT\x20EXISTS\x20idx_pcm_created\x20ON\x20personal_chat_messages(created_at)'),_0x16ca56[_0x2c7149(0x2a9)](_0x4a3016[_0x2c7149(0x2ed)]);}},{'version':0x16,'up':_0x544720=>{_0x544720['run']('\x0a\x20\x20\x20\x20\x20\x20\x20\x20CREATE\x20TABLE\x20IF\x20NOT\x20EXISTS\x20project_blueprints\x20(\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20id\x20TEXT\x20PRIMARY\x20KEY,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20project_id\x20TEXT\x20NOT\x20NULL,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20blueprint_id\x20TEXT,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20blueprint_name\x20TEXT\x20NOT\x20NULL,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20blueprint_version\x20INTEGER\x20DEFAULT\x201,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20source_type\x20TEXT\x20NOT\x20NULL\x20DEFAULT\x20\x27file\x27\x20CHECK(source_type\x20IN\x20(\x27file\x27,\x20\x27url\x27,\x20\x27cloud\x27)),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20source_url\x20TEXT,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20original_json\x20TEXT\x20NOT\x20NULL,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20variables_encrypted\x20TEXT,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20applied_at\x20TEXT\x20DEFAULT\x20(datetime(\x27now\x27)),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20last_checked_at\x20TEXT,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20last_updated_at\x20TEXT,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20FOREIGN\x20KEY\x20(project_id)\x20REFERENCES\x20projects(id)\x20ON\x20DELETE\x20CASCADE\x0a\x20\x20\x20\x20\x20\x20\x20\x20)\x0a\x20\x20\x20\x20\x20\x20'),_0x544720['run']('CREATE\x20INDEX\x20IF\x20NOT\x20EXISTS\x20idx_project_blueprints_project\x20ON\x20project_blueprints(project_id)');}}],db_default={'getDb':getDb,'closeDb':closeDb,'save':save,'queryAll':queryAll,'queryOne':queryOne,'run':run,'runImmediate':runImmediate,'checkDbIntegrity':checkDbIntegrity,'getSchemaVersion':getSchemaVersion};}}),key_manager_exports={};__export(key_manager_exports,{'exportKeysCSV':()=>exportKeysCSV,'generateKey':()=>generateKey,'getKeyStats':()=>getKeyStats,'listKeys':()=>listKeys,'revokeKey':()=>revokeKey,'validateKey':()=>validateKey});import a0_0x35a75c from'crypto';function hashKey(_0x2d024f){const _0x13c8db=a0_0x29ac,_0xd02983={'OMKdC':'hex'};return a0_0x35a75c['createHash'](_0x13c8db(0x30c))[_0x13c8db(0x228)](_0x2d024f)[_0x13c8db(0x2ac)](_0xd02983['OMKdC']);}function generateKey(_0x413ca6,_0x1b0b8e='staff',_0x177a10=null,_0x14df90=null){const _0x6c0863=a0_0x29ac,_0x28dad5={'BiOBS':'beta','RJoyR':'string','UbVMH':'Name\x20is\x20required','sJJKG':function(_0x2136f3,_0x7e0ecf,_0x3b481d){return _0x2136f3(_0x7e0ecf,_0x3b481d);},'SXhLx':function(_0x49004b,_0x332146){return _0x49004b||_0x332146;}},_0x25738c=['admin','staff',_0x28dad5[_0x6c0863(0x319)]];if(!_0x25738c[_0x6c0863(0x24c)](_0x1b0b8e))throw new Error(_0x6c0863(0x32b)+_0x1b0b8e+'.\x20Must\x20be\x20one\x20of:\x20'+_0x25738c['join'](',\x20'));if(!_0x413ca6||typeof _0x413ca6!==_0x28dad5[_0x6c0863(0x248)]||!_0x413ca6[_0x6c0863(0x2c4)]())throw new Error(_0x28dad5['UbVMH']);const _0x4b7967=a0_0x35a75c['randomUUID'](),_0x1ff932=KEY_PREFIX+a0_0x35a75c[_0x6c0863(0x2a5)](0x10)['toString']('hex'),_0x2433fb=hashKey(_0x1ff932);return _0x28dad5['sJJKG'](run,'INSERT\x20INTO\x20license_keys\x20(id,\x20name,\x20key_hash,\x20type,\x20email,\x20status,\x20expires_at)\x0a\x20\x20\x20\x20\x20VALUES\x20(?,\x20?,\x20?,\x20?,\x20?,\x20\x27active\x27,\x20?)',[_0x4b7967,_0x413ca6['trim'](),_0x2433fb,_0x1b0b8e,_0x177a10||null,_0x28dad5['SXhLx'](_0x14df90,null)]),{'id':_0x4b7967,'raw':_0x1ff932,'type':_0x1b0b8e,'name':_0x413ca6[_0x6c0863(0x2c4)]()};}function validateKey(_0x39a5ec){const _0x5cecb9=a0_0x29ac,_0x5093c2={'QJEIH':'string','GTLZn':function(_0x4881df,_0xba12e8,_0x1f67e7){return _0x4881df(_0xba12e8,_0x1f67e7);},'BhdkQ':_0x5cecb9(0x2fb),'zVkmp':function(_0x75f82f,_0x29b932){return _0x75f82f!==_0x29b932;}};if(!_0x39a5ec||typeof _0x39a5ec!==_0x5093c2[_0x5cecb9(0x1db)])return null;const _0x51358d=hashKey(_0x39a5ec['trim']()),_0x44e7ed=_0x5093c2['GTLZn'](queryOne,_0x5093c2['BhdkQ'],[_0x51358d]);if(!_0x44e7ed)return null;if(_0x5093c2[_0x5cecb9(0x2aa)](_0x44e7ed[_0x5cecb9(0x292)],_0x5cecb9(0x2f8)))return null;if(_0x44e7ed['expires_at']){const _0x19959e=new Date(_0x44e7ed['expires_at'])['getTime']();if(_0x19959e<Date[_0x5cecb9(0x207)]())return null;}return{'id':_0x44e7ed['id'],'name':_0x44e7ed[_0x5cecb9(0x22c)],'type':_0x44e7ed['type'],'status':_0x44e7ed['status'],'expires_at':_0x44e7ed[_0x5cecb9(0x23d)],'created_at':_0x44e7ed[_0x5cecb9(0x27d)]};}function listKeys(_0xdfb413={}){const _0x1a2612=a0_0x29ac,_0x562675={'hVEfQ':_0x1a2612(0x1e3),'efVeJ':_0x1a2612(0x1f7),'NCRnp':_0x1a2612(0x1de),'MRQzr':function(_0x509c5a,_0x3c84c5){return _0x509c5a(_0x3c84c5);},'BbGSx':_0x1a2612(0x26f)};let _0x1d3a87=_0x562675[_0x1a2612(0x23f)];const _0x1844ae=[];_0xdfb413['type']&&(_0x1d3a87+='\x20AND\x20type\x20=\x20?',_0x1844ae[_0x1a2612(0x31d)](_0xdfb413['type']));_0xdfb413[_0x1a2612(0x292)]&&(_0x1d3a87+=_0x562675[_0x1a2612(0x21b)],_0x1844ae['push'](_0xdfb413['status']));_0x1d3a87+=_0x562675['NCRnp'];const _0x2a109f=Math[_0x1a2612(0x27b)](Math[_0x1a2612(0x288)](_0x562675[_0x1a2612(0x2d7)](parseInt,_0xdfb413['limit'])||0x32,0x1),0x1f4);_0x1d3a87+=_0x562675[_0x1a2612(0x283)],_0x1844ae[_0x1a2612(0x31d)](_0x2a109f);const _0x407c0f=queryAll(_0x1d3a87,_0x1844ae),_0x23756f=_0x407c0f['map'](_0xe311b8=>({'id':_0xe311b8['id'],'name':_0xe311b8[_0x1a2612(0x22c)],'type':_0xe311b8['type'],'status':_0xe311b8['status']==='active'?'ACTIVE':'SUSPENDED','key':_0xe311b8['id'][_0x1a2612(0x294)](0x0,0x8)+_0x1a2612(0x217),'email':_0xe311b8['email'],'expiry':_0xe311b8[_0x1a2612(0x23d)],'created_at':_0xe311b8['created_at'],'revoked_at':_0xe311b8['revoked_at']}));return{'keys':_0x23756f};}function revokeKey(_0x1a2ef9){const _0x3eba2a=a0_0x29ac,_0x25b07f={'tumBv':'Key\x20not\x20found','wkcGP':function(_0x88fe5e,_0x4f8ea2){return _0x88fe5e===_0x4f8ea2;},'xfjCD':'revoked','OJiXe':'Key\x20is\x20already\x20revoked','LSmCB':function(_0x3b5294,_0x242b90,_0x54a4d6){return _0x3b5294(_0x242b90,_0x54a4d6);}};if(!_0x1a2ef9)throw new Error(_0x3eba2a(0x26b));const _0x4d0e30=queryOne(_0x3eba2a(0x322),[_0x1a2ef9]);if(!_0x4d0e30)throw new Error(_0x25b07f[_0x3eba2a(0x262)]);if(_0x25b07f['wkcGP'](_0x4d0e30[_0x3eba2a(0x292)],_0x25b07f['xfjCD']))throw new Error(_0x25b07f['OJiXe']);return _0x25b07f['LSmCB'](run,'UPDATE\x20license_keys\x20SET\x20status\x20=\x20\x27revoked\x27,\x20revoked_at\x20=\x20datetime(\x27now\x27)\x20WHERE\x20id\x20=\x20?',[_0x1a2ef9]),{'success':!![]};}function getKeyStats(){const _0x2a2b6e=a0_0x29ac,_0x2f9584={'brHKa':function(_0x3d8e94,_0x386623){return _0x3d8e94(_0x386623);},'rBbjG':function(_0x578baf,_0x3fb8bd){return _0x578baf(_0x3fb8bd);},'FJDwD':'SELECT\x20COUNT(*)\x20as\x20count\x20FROM\x20license_keys\x20WHERE\x20status\x20=\x20\x27active\x27','VMeNB':'SELECT\x20COUNT(*)\x20as\x20count\x20FROM\x20license_keys\x20WHERE\x20status\x20=\x20\x27revoked\x27'},_0x2b6540=_0x2f9584[_0x2a2b6e(0x272)](queryOne,'SELECT\x20COUNT(*)\x20as\x20count\x20FROM\x20license_keys'),_0x3949be=_0x2f9584['rBbjG'](queryOne,_0x2f9584[_0x2a2b6e(0x29d)]),_0x2d9338=_0x2f9584[_0x2a2b6e(0x272)](queryOne,_0x2f9584[_0x2a2b6e(0x312)]),_0x34f3ca=queryAll(_0x2a2b6e(0x2d4)),_0xc4180d={};for(const _0x4e26a2 of _0x34f3ca){_0xc4180d[_0x4e26a2['type']]=_0x4e26a2['count'];}return{'totalKeys':_0x2b6540?.[_0x2a2b6e(0x1f5)]||0x0,'activeKeys':_0x3949be?.['count']||0x0,'revokedKeys':_0x2d9338?.[_0x2a2b6e(0x1f5)]||0x0,'byType':_0xc4180d};}function exportKeysCSV(){const _0x3a7be6=a0_0x29ac,_0x273529={'ufmiS':'id,name,type,status,email,expires_at,created_at,revoked_at'},_0x548ffd=queryAll('SELECT\x20id,\x20name,\x20type,\x20status,\x20email,\x20expires_at,\x20created_at,\x20revoked_at\x20FROM\x20license_keys\x20ORDER\x20BY\x20created_at\x20DESC'),_0x2c488a=_0x273529[_0x3a7be6(0x324)],_0x225d89=_0x548ffd[_0x3a7be6(0x2de)](_0x4db01d=>{const _0x52aa4a=_0x3a7be6;return[_0x4db01d['id'],'\x22'+(_0x4db01d['name']||'')['replace'](/"/g,'\x22\x22')+'\x22',_0x4db01d['type'],_0x4db01d[_0x52aa4a(0x292)],_0x4db01d[_0x52aa4a(0x24f)]||'',_0x4db01d['expires_at']||'',_0x4db01d['created_at']||'',_0x4db01d['revoked_at']||'']['join'](',');});return[_0x2c488a,..._0x225d89][_0x3a7be6(0x308)]('\x0a');}var KEY_PREFIX,init_key_manager=__esm({'server/key-manager.js'(){const _0x588562=a0_0x29ac,_0x45f8c1={'uAfLd':function(_0x23d734){return _0x23d734();},'ETvpL':'col_'};_0x45f8c1[_0x588562(0x247)](init_db),KEY_PREFIX=_0x45f8c1[_0x588562(0x237)];}});import a0_0x42b982 from'path';import{fileURLToPath as a0_0x447b11}from'url';var supportsColor=((()=>{const _0x24b574=a0_0x29ac,_0xc861be={'CNvPm':function(_0x1d68ac,_0x54a14d){return _0x1d68ac===_0x54a14d;}};if(process[_0x24b574(0x2ec)]['NO_COLOR'])return![];if(_0xc861be[_0x24b574(0x1d6)](process[_0x24b574(0x2ec)][_0x24b574(0x23c)],'1'))return!![];return!!process['stdout'][_0x24b574(0x280)];})());function makeColors(_0x4cf786){const _0x1410f4=a0_0x29ac,_0x517165={'UdCSi':'\x1b[38;5;214m','JaDPk':_0x1410f4(0x243),'GpfZe':'\x1b[33m','PCEzu':'\x1b[37m','GNGVt':'\x1b[36m'};if(!_0x4cf786)return{'reset':'','brand':'','heading':'','success':'','error':'','warn':'','info':'','muted':'','value':'','cmd':'','url':''};return{'reset':'\x1b[0m','brand':_0x517165['UdCSi'],'heading':_0x1410f4(0x28f),'success':_0x517165[_0x1410f4(0x2da)],'error':'\x1b[31m','warn':_0x517165['GpfZe'],'info':'\x1b[36m','muted':'\x1b[90m','value':_0x517165[_0x1410f4(0x231)],'cmd':_0x517165[_0x1410f4(0x2dd)],'url':_0x1410f4(0x326)};}var c=makeColors(supportsColor),icons={'pass':c['success']+'✓'+c['reset'],'fail':c[a0_0x6c3ac3(0x28b)]+'✗'+c[a0_0x6c3ac3(0x26a)],'warn':c['warn']+'⚠'+c['reset'],'arrow':c[a0_0x6c3ac3(0x202)]+'→'+c['reset'],'dot':c['brand']+'•'+c[a0_0x6c3ac3(0x26a)]};function brandName(_0x43d8a8='full'){const _0x6fde51=a0_0x6c3ac3,_0x254c5f={'fWkqD':_0x6fde51(0x1c3)},_0x10cd50=c['heading']+'co'+c['brand']+':'+c['heading']+_0x6fde51(0x1d8)+c['reset'];if(_0x43d8a8===_0x254c5f[_0x6fde51(0x1e5)])return'['+_0x10cd50+']';return _0x10cd50;}var __dirname2=a0_0x42b982['dirname'](a0_0x447b11(import.meta.url));function parseArgs(_0x3580bd){const _0x39f691=a0_0x6c3ac3,_0x28940d={'znpqj':function(_0x2a07b1,_0x32510c){return _0x2a07b1<_0x32510c;},'ppfyu':function(_0x44c58f,_0x1b7b5e){return _0x44c58f+_0x1b7b5e;}},_0x3c9fa9=_0x3580bd[_0x39f691(0x294)](0x2),_0x2d9d10=_0x3c9fa9[0x0],_0x28998f=[],_0x952c67={};for(let _0xfe9b4=0x1;_0x28940d['znpqj'](_0xfe9b4,_0x3c9fa9['length']);_0xfe9b4++){if(_0x3c9fa9[_0xfe9b4][_0x39f691(0x20c)]('--')){let _0x388b0a=_0x3c9fa9[_0xfe9b4]['slice'](0x2),_0x5b259e;const _0x243272=_0x388b0a['indexOf']('=');_0x243272!==-0x1?(_0x5b259e=_0x388b0a['slice'](_0x243272+0x1),_0x388b0a=_0x388b0a['slice'](0x0,_0x243272)):_0x5b259e=_0xfe9b4+0x1<_0x3c9fa9[_0x39f691(0x2d1)]&&!_0x3c9fa9[_0x28940d[_0x39f691(0x24d)](_0xfe9b4,0x1)]['startsWith']('--')?_0x3c9fa9[++_0xfe9b4]:'true',_0x952c67[_0x388b0a]=_0x5b259e;}else _0x28998f['push'](_0x3c9fa9[_0xfe9b4]);}return{'command':_0x2d9d10,'flags':_0x952c67,'positional':_0x28998f};}function maskKey(_0x27108b){const _0x54b5c7=a0_0x6c3ac3,_0x43b1f5={'KWqnP':'****'};if(!_0x27108b||_0x27108b[_0x54b5c7(0x2d1)]<=0x8)return _0x43b1f5['KWqnP'];return _0x27108b['slice'](0x0,0x4)+_0x43b1f5['KWqnP'];}var DEFAULT_PORT=0x2694,MAX_PORT_SCAN=0x64;async function findRunningServer(){const _0x5e0bfb=a0_0x6c3ac3,_0x23b29b={'wDlfB':function(_0x58d844,_0x51482f){return _0x58d844<_0x51482f;},'SfAPD':function(_0x5ca2eb,_0x2d62b7,_0x10e21d){return _0x5ca2eb(_0x2d62b7,_0x10e21d);}};for(let _0xf8bb15=0x0;_0x23b29b['wDlfB'](_0xf8bb15,MAX_PORT_SCAN);_0xf8bb15++){const _0x4c8520=DEFAULT_PORT+_0xf8bb15;try{const _0x28000c=await _0x23b29b[_0x5e0bfb(0x1c9)](fetch,_0x5e0bfb(0x1f0)+_0x4c8520+'/api/health',{'signal':AbortSignal['timeout'](0x1f4)});if(_0x28000c['ok']){const _0x21ba9f=await _0x28000c['json']();if(_0x21ba9f['status']==='ok')return _0x5e0bfb(0x1f0)+_0x4c8520;}}catch{}}return null;}async function createKeyViaApi(_0x4c7d7c,_0x318ce0){const _0x49b11f=a0_0x6c3ac3,_0x5a9873=await fetch(_0x4c7d7c+'/api/admin/keys',{'method':'POST','headers':{'Content-Type':_0x49b11f(0x2f5)},'body':JSON[_0x49b11f(0x2b4)](_0x318ce0)});if(!_0x5a9873['ok']){const _0xad8867=await _0x5a9873[_0x49b11f(0x2a6)]()[_0x49b11f(0x2b1)](()=>({'error':'HTTP\x20'+_0x5a9873['status']}));throw new Error(_0xad8867[_0x49b11f(0x28b)]||'Server\x20responded\x20with\x20'+_0x5a9873[_0x49b11f(0x292)]);}return _0x5a9873[_0x49b11f(0x2a6)]();}async function listKeysViaApi(_0x54cfb4,_0x1122a5){const _0x4b4e6c=a0_0x6c3ac3,_0x4855f4={'FgKkf':'status'},_0x42d2f2=new URLSearchParams();if(_0x1122a5[_0x4b4e6c(0x2c7)])_0x42d2f2[_0x4b4e6c(0x214)]('type',_0x1122a5[_0x4b4e6c(0x2c7)]);if(_0x1122a5['status'])_0x42d2f2[_0x4b4e6c(0x214)](_0x4855f4[_0x4b4e6c(0x232)],_0x1122a5['status']);const _0x5e4814=_0x42d2f2['toString'](),_0x4de271=await fetch(_0x54cfb4+'/api/admin/keys'+(_0x5e4814?'?'+_0x5e4814:''));if(!_0x4de271['ok']){const _0x1c7be9=await _0x4de271['json']()[_0x4b4e6c(0x2b1)](()=>({'error':_0x4b4e6c(0x2a3)+_0x4de271[_0x4b4e6c(0x292)]}));throw new Error(_0x1c7be9[_0x4b4e6c(0x28b)]||'Server\x20responded\x20with\x20'+_0x4de271[_0x4b4e6c(0x292)]);}return _0x4de271[_0x4b4e6c(0x2a6)]();}async function revokeKeyViaApi(_0x52a7ec,_0x22942b){const _0xd161f2=a0_0x6c3ac3,_0x34e655={'OaPAJ':function(_0x29c4c7,_0x49962d,_0x6ed9e2){return _0x29c4c7(_0x49962d,_0x6ed9e2);}},_0x52c1c5=await _0x34e655['OaPAJ'](fetch,_0x52a7ec+'/api/admin/keys/'+_0x22942b,{'method':_0xd161f2(0x209)});if(!_0x52c1c5['ok']){const _0x47d659=await _0x52c1c5['json']()[_0xd161f2(0x2b1)](()=>({'error':'HTTP\x20'+_0x52c1c5['status']}));throw new Error(_0x47d659[_0xd161f2(0x28b)]||_0xd161f2(0x2d2)+_0x52c1c5[_0xd161f2(0x292)]);}return _0x52c1c5[_0xd161f2(0x2a6)]();}var _dbReady=![];async function ensureDb(){if(_dbReady)return;const {getDb:_0x4dafe9}=await Promise['resolve']()['then'](()=>(init_db(),db_exports));await _0x4dafe9(),_dbReady=!![];}async function createKey(_0x3040ea){const _0xed852e=a0_0x6c3ac3,_0x27da18={'ZRyFl':'staff','RdWot':function(_0x13917c,_0x2527a7){return _0x13917c||_0x2527a7;},'RSxAa':function(_0x3292e6){return _0x3292e6();}},_0x54b011=_0x3040ea[_0xed852e(0x22c)],_0x448b38=_0x3040ea[_0xed852e(0x2c7)]||_0x27da18['ZRyFl'],_0x32fd9d=_0x3040ea['email']||null,_0x267114=_0x3040ea[_0xed852e(0x2ca)]||null;if(!_0x54b011){console['error']('\x0a\x20\x20'+icons[_0xed852e(0x2bf)]+'\x20'+c[_0xed852e(0x28b)]+_0xed852e(0x256)+c[_0xed852e(0x26a)]+'\x0a'),console['error']('\x20\x20Usage:\x20colana\x20admin\x20create-key\x20--name\x20\x22Sarah\x22\x20--type\x20staff\x20[--email\x20x]\x20[--expires\x202026-12-31]\x0a'),process[_0xed852e(0x2b6)](0x1);return;}const _0x4acba6=[_0xed852e(0x289),_0x27da18[_0xed852e(0x281)],_0xed852e(0x2eb)];if(!_0x4acba6['includes'](_0x448b38)){console['error']('\x0a\x20\x20'+icons['fail']+'\x20'+c['error']+'ERROR:\x20Invalid\x20type\x20\x22'+_0x448b38+'\x22.\x20Must\x20be\x20one\x20of:\x20'+_0x4acba6['join'](',\x20')+c[_0xed852e(0x26a)]+'\x0a'),process[_0xed852e(0x2b6)](0x1);return;}const _0x4546bc=await findRunningServer();let _0x3722e9;if(_0x4546bc)try{_0x3722e9=await createKeyViaApi(_0x4546bc,{'name':_0x54b011,'type':_0x448b38,'email':_0x27da18[_0xed852e(0x320)](_0x32fd9d,void 0x0),'expires':_0x267114||void 0x0});}catch(_0x723349){console['error'](_0xed852e(0x260)+icons['fail']+'\x20'+c[_0xed852e(0x28b)]+_0x723349[_0xed852e(0x316)]+c[_0xed852e(0x26a)]+'\x20'+c['muted']+_0xed852e(0x325)+c['reset']+'\x0a'),process[_0xed852e(0x2b6)](0x1);return;}else{await _0x27da18['RSxAa'](ensureDb);const {generateKey:_0x27494f}=await Promise['resolve']()['then'](()=>(init_key_manager(),key_manager_exports));try{_0x3722e9=_0x27494f(_0x54b011,_0x448b38,_0x32fd9d,_0x267114);}catch(_0xa07972){console['error'](_0xed852e(0x260)+icons['fail']+'\x20'+c[_0xed852e(0x28b)]+_0xa07972[_0xed852e(0x316)]+c[_0xed852e(0x26a)]+'\x0a'),process[_0xed852e(0x2b6)](0x1);return;}}if(!_0x3722e9||!_0x3722e9[_0xed852e(0x22c)]){console[_0xed852e(0x28b)]('\x0a\x20\x20'+icons['fail']+'\x20'+c[_0xed852e(0x28b)]+_0xed852e(0x2f4)+c['reset']+'\x0a'),process[_0xed852e(0x2b6)](0x1);return;}console['log'](''),console[_0xed852e(0x2ff)]('\x20\x20'+icons[_0xed852e(0x2f3)]+_0xed852e(0x1fb)),console[_0xed852e(0x2ff)]('\x20\x20'+c['muted']+'─'['repeat'](0x28)+c['reset']),console['log'](_0xed852e(0x2d6)+c['muted']+'Name:'+c['reset']+_0xed852e(0x2d6)+c['value']+_0x3722e9[_0xed852e(0x22c)]+c['reset']),console[_0xed852e(0x2ff)](_0xed852e(0x2d6)+c['muted']+_0xed852e(0x2ea)+c[_0xed852e(0x26a)]+_0xed852e(0x2d6)+c[_0xed852e(0x1d7)]+_0x3722e9['type']+c['reset']),console['log']('\x20\x20\x20\x20'+c[_0xed852e(0x2c2)]+'ID:'+c[_0xed852e(0x26a)]+'\x20\x20\x20\x20\x20\x20'+c[_0xed852e(0x1d7)]+_0x3722e9['id']+c['reset']),console[_0xed852e(0x2ff)]('\x20\x20\x20\x20'+c[_0xed852e(0x2c2)]+_0xed852e(0x1ef)+c[_0xed852e(0x26a)]+'\x20\x20\x20\x20\x20'+c['warn']+_0x3722e9['raw']+c[_0xed852e(0x26a)]),console[_0xed852e(0x2ff)]('\x20\x20'+c[_0xed852e(0x2c2)]+'─'[_0xed852e(0x21e)](0x28)+c[_0xed852e(0x26a)]),console[_0xed852e(0x2ff)]('\x20\x20'+c[_0xed852e(0x221)]+'IMPORTANT:\x20Copy\x20this\x20key\x20now.\x20It\x20cannot\x20be\x20retrieved\x20later.'+c['reset']),_0x4546bc?console['log']('\x20\x20'+c['muted']+'(Created\x20via\x20running\x20server)'+c['reset']):console[_0xed852e(0x2ff)]('\x20\x20'+c['muted']+_0xed852e(0x1e9)+c['reset']),console[_0xed852e(0x2ff)]('');}async function listKeysCmd(_0x225cd2){const _0x22f948=a0_0x6c3ac3,_0x310ece={'WljfU':function(_0x4e58ce){return _0x4e58ce();},'QMane':function(_0x6dafde,_0x48d429,_0x142b02){return _0x6dafde(_0x48d429,_0x142b02);},'seNEG':'\x0a\x20\x20No\x20keys\x20found.\x0a','mhGCO':'Type','ahaRj':_0x22f948(0x255)},_0x484d4d={};if(_0x225cd2[_0x22f948(0x2c7)])_0x484d4d['type']=_0x225cd2[_0x22f948(0x2c7)];if(_0x225cd2[_0x22f948(0x292)])_0x484d4d[_0x22f948(0x292)]=_0x225cd2[_0x22f948(0x292)];const _0x47f2c4=await _0x310ece[_0x22f948(0x225)](findRunningServer);let _0x19bc4f;if(_0x47f2c4)try{_0x19bc4f=await _0x310ece[_0x22f948(0x21c)](listKeysViaApi,_0x47f2c4,_0x484d4d);}catch(_0xad33d){console[_0x22f948(0x28b)]('\x0a\x20\x20'+icons['fail']+'\x20'+c['error']+_0xad33d['message']+c[_0x22f948(0x26a)]+'\x20'+c[_0x22f948(0x2c2)]+'(via\x20server)'+c['reset']+'\x0a'),process[_0x22f948(0x2b6)](0x1);return;}else{await _0x310ece[_0x22f948(0x225)](ensureDb);const {listKeys:_0x4d3e27}=await Promise['resolve']()[_0x22f948(0x220)](()=>(init_key_manager(),key_manager_exports));_0x19bc4f=_0x4d3e27(_0x484d4d);}if(!_0x19bc4f||!_0x19bc4f[_0x22f948(0x30f)]||!_0x19bc4f[_0x22f948(0x30f)][_0x22f948(0x2d1)]){console['log'](_0x310ece['seNEG']);return;}console[_0x22f948(0x2ff)](''),console[_0x22f948(0x2ff)]('\x20\x20'+c['heading']+_0x22f948(0x22b)+c['reset']),console[_0x22f948(0x2ff)]('\x20\x20'+c['muted']+'─'['repeat'](0x50)+c[_0x22f948(0x26a)]),console[_0x22f948(0x2ff)]('\x20\x20'+c[_0x22f948(0x2c2)]+'ID'[_0x22f948(0x22f)](0xa)+_0x22f948(0x268)['padEnd'](0x14)+_0x310ece[_0x22f948(0x26e)][_0x22f948(0x22f)](0xa)+'Status'['padEnd'](0xa)+_0x310ece[_0x22f948(0x2f7)]['padEnd'](0xf)+_0x22f948(0x313)+c['reset']),console['log']('\x20\x20'+c[_0x22f948(0x2c2)]+'─'['repeat'](0x50)+c[_0x22f948(0x26a)]);for(const _0x2a274c of _0x19bc4f['keys']){const _0x426d92=(_0x2a274c['id']||'')['slice'](0x0,0x8),_0x2fe9e5=(_0x2a274c['name']||'')[_0x22f948(0x294)](0x0,0x12)['padEnd'](0x14),_0x1eaa4d=(_0x2a274c[_0x22f948(0x2c7)]||'')['padEnd'](0xa),_0x592775=(_0x2a274c[_0x22f948(0x292)]||'')['padEnd'](0xa),_0x311c4c=(_0x2a274c['expiry']?new Date(_0x2a274c[_0x22f948(0x2f6)])['toLocaleDateString']():'Never')['padEnd'](0xf),_0x502519=_0x2a274c[_0x22f948(0x27d)]?new Date(_0x2a274c[_0x22f948(0x27d)])[_0x22f948(0x2a2)]():'-';console[_0x22f948(0x2ff)]('\x20\x20'+_0x426d92[_0x22f948(0x22f)](0xa)+_0x2fe9e5+_0x1eaa4d+_0x592775+_0x311c4c+_0x502519);}console[_0x22f948(0x2ff)]('\x20\x20'+c['muted']+'─'[_0x22f948(0x21e)](0x50)+c[_0x22f948(0x26a)]),console['log']('\x20\x20'+c['muted']+_0x22f948(0x22d)+_0x19bc4f[_0x22f948(0x30f)]['length']+_0x22f948(0x1fd)+c[_0x22f948(0x26a)]+'\x0a');}async function revokeKeyCmd(_0x1f66d0){const _0x3b5e22=a0_0x6c3ac3,_0x1131c0={'XAafu':function(_0x5e60a5){return _0x5e60a5();},'XriIh':function(_0x49974c){return _0x49974c();},'bbWFM':function(_0x30d4a4,_0x6d493c){return _0x30d4a4(_0x6d493c);}},_0x5d7150=_0x1f66d0[0x0];if(!_0x5d7150){console[_0x3b5e22(0x28b)]('\x0a\x20\x20'+icons['fail']+'\x20'+c[_0x3b5e22(0x28b)]+'ERROR:\x20Key\x20ID\x20is\x20required.'+c['reset']+'\x0a'),console[_0x3b5e22(0x28b)]('\x20\x20Usage:\x20colana\x20admin\x20revoke-key\x20<id>\x0a'),process['exit'](0x1);return;}const _0x55bb6c=await _0x1131c0['XAafu'](findRunningServer);if(_0x55bb6c)try{await revokeKeyViaApi(_0x55bb6c,_0x5d7150),console[_0x3b5e22(0x2ff)](_0x3b5e22(0x260)+icons['pass']+_0x3b5e22(0x20a)+c['value']+_0x5d7150+c['reset']+_0x3b5e22(0x1c2));}catch(_0x564be7){console['error'](_0x3b5e22(0x260)+icons['fail']+'\x20'+c[_0x3b5e22(0x28b)]+_0x564be7[_0x3b5e22(0x316)]+c[_0x3b5e22(0x26a)]+'\x20'+c[_0x3b5e22(0x2c2)]+_0x3b5e22(0x325)+c['reset']+'\x0a'),process[_0x3b5e22(0x2b6)](0x1);return;}else{await _0x1131c0['XriIh'](ensureDb);const {revokeKey:_0x1219d7}=await Promise[_0x3b5e22(0x2b9)]()[_0x3b5e22(0x220)](()=>(init_key_manager(),key_manager_exports));try{_0x1131c0['bbWFM'](_0x1219d7,_0x5d7150),console['log'](_0x3b5e22(0x260)+icons[_0x3b5e22(0x2f3)]+_0x3b5e22(0x20a)+c[_0x3b5e22(0x1d7)]+_0x5d7150+c['reset']+_0x3b5e22(0x1c2));}catch(_0xd9d4de){console[_0x3b5e22(0x28b)]('\x0a\x20\x20'+icons['fail']+'\x20'+c[_0x3b5e22(0x28b)]+_0xd9d4de['message']+c[_0x3b5e22(0x26a)]+'\x0a'),process['exit'](0x1);return;}}}function showHelp(){const _0x32e12c=a0_0x6c3ac3;console['log'](_0x32e12c(0x260)+brandName()+'\x20'+c[_0x32e12c(0x2c2)]+_0x32e12c(0x276)+c[_0x32e12c(0x26a)]+'\x0a\x0a\x20\x20'+c[_0x32e12c(0x31c)]+_0x32e12c(0x306)+c['reset']+'\x0a\x20\x20\x20\x20'+c[_0x32e12c(0x1d9)]+_0x32e12c(0x208)+c[_0x32e12c(0x26a)]+_0x32e12c(0x200)+c['cmd']+'colana\x20admin\x20staff-keys'+c['reset']+'\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20List\x20configured\x20staff/admin\x20keys\x20(env\x20vars)\x0a\x20\x20\x20\x20'+c[_0x32e12c(0x1d9)]+_0x32e12c(0x20e)+c[_0x32e12c(0x26a)]+'\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Generate\x20a\x20new\x20license\x20key\x20(stored\x20in\x20DB)\x0a\x20\x20\x20\x20\x20\x20'+c['muted']+_0x32e12c(0x1fe)+c[_0x32e12c(0x26a)]+'\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Recipient\x20name\x20(required)\x0a\x20\x20\x20\x20\x20\x20'+c['muted']+'--type\x20staff|admin|beta'+c['reset']+'\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Key\x20type\x20(default:\x20staff)\x0a\x20\x20\x20\x20\x20\x20'+c['muted']+'--email\x20user@example.com'+c[_0x32e12c(0x26a)]+_0x32e12c(0x30b)+c['muted']+_0x32e12c(0x1f4)+c['reset']+_0x32e12c(0x323)+c['cmd']+'colana\x20admin\x20list-keys'+c['reset']+_0x32e12c(0x29c)+c['muted']+'--type\x20staff|admin|beta'+c['reset']+_0x32e12c(0x2dc)+c[_0x32e12c(0x2c2)]+'--status\x20active|revoked'+c[_0x32e12c(0x26a)]+_0x32e12c(0x26c)+c['cmd']+'colana\x20admin\x20revoke-key\x20<id>'+c[_0x32e12c(0x26a)]+_0x32e12c(0x20b)+c[_0x32e12c(0x2c2)]+_0x32e12c(0x2c0)+c['reset']+_0x32e12c(0x2e4)+c['url']+_0x32e12c(0x1d3)+c[_0x32e12c(0x26a)]+'\x0a');}function doctor(){const _0x9d091a=a0_0x6c3ac3;console[_0x9d091a(0x2ff)]('\x0a\x20\x20Run\x20\x27colana\x20doctor\x27\x20for\x20system\x20diagnostics.\x0a');}function staffKeys(){const _0x3d0823=a0_0x6c3ac3,_0x1166bd={'taNpL':function(_0x28d5e1,_0x5ef69b){return _0x28d5e1+_0x5ef69b;},'rDlWU':function(_0x55f8f2,_0x23bf8d){return _0x55f8f2(_0x23bf8d);},'sAJRJ':function(_0x6e051b,_0x9d39bb){return _0x6e051b===_0x9d39bb;},'sUkXh':'\x0a\x20\x20No\x20staff\x20or\x20admin\x20keys\x20configured.\x20Set\x20STAFF_KEYS\x20or\x20ADMIN_KEYS\x20environment\x20variable.\x0a','JFyzY':function(_0x112a4e,_0xba1c42){return _0x112a4e>_0xba1c42;}},_0x165db6=process['env'][_0x3d0823(0x303)]||'',_0xff10f9=process[_0x3d0823(0x2ec)]['ADMIN_KEYS']||'',_0x29e211=_0x165db6['split'](',')['map'](_0xd66498=>_0xd66498['trim']())['filter'](Boolean),_0x4b7fd0=_0xff10f9['split'](',')[_0x3d0823(0x2de)](_0x2e1ebc=>_0x2e1ebc[_0x3d0823(0x2c4)]())[_0x3d0823(0x25b)](Boolean);if(_0x1166bd[_0x3d0823(0x29b)](_0x29e211['length'],0x0)&&_0x4b7fd0[_0x3d0823(0x2d1)]===0x0){console[_0x3d0823(0x2ff)](_0x1166bd['sUkXh']);return;}console[_0x3d0823(0x2ff)](''),_0x1166bd[_0x3d0823(0x2c8)](_0x29e211[_0x3d0823(0x2d1)],0x0)&&(console[_0x3d0823(0x2ff)]('\x20\x20'+c[_0x3d0823(0x31c)]+_0x3d0823(0x1cd)+c['reset']),console[_0x3d0823(0x2ff)]('\x20\x20'+c[_0x3d0823(0x2c2)]+'─'[_0x3d0823(0x21e)](0xa)+c[_0x3d0823(0x26a)]),_0x29e211[_0x3d0823(0x277)]((_0x48b0df,_0x2d5371)=>{const _0x17b5e0=_0x3d0823;console[_0x17b5e0(0x2ff)](_0x17b5e0(0x2d6)+_0x1166bd['taNpL'](_0x2d5371,0x1)+'.\x20'+maskKey(_0x48b0df)+'\x20\x20(STAFF_KEYS)');}),console['log']('')),_0x4b7fd0[_0x3d0823(0x2d1)]>0x0&&(console[_0x3d0823(0x2ff)]('\x20\x20'+c['heading']+_0x3d0823(0x216)+c[_0x3d0823(0x26a)]),console[_0x3d0823(0x2ff)]('\x20\x20'+c['muted']+'─'[_0x3d0823(0x21e)](0xa)+c['reset']),_0x4b7fd0['forEach']((_0x2249b1,_0x3ee266)=>{const _0x3c5a5b=_0x3d0823;console['log']('\x20\x20\x20\x20'+_0x1166bd[_0x3c5a5b(0x265)](_0x3ee266,0x1)+'.\x20'+_0x1166bd[_0x3c5a5b(0x1e0)](maskKey,_0x2249b1)+'\x20\x20(ADMIN_KEYS)');}),console[_0x3d0823(0x2ff)]('')),console[_0x3d0823(0x2ff)]('\x20\x20To\x20add/remove\x20keys,\x20update\x20the\x20STAFF_KEYS\x20or\x20ADMIN_KEYS\x20environment\x20variable.\x0a');}async function main(){const _0x4d1478=a0_0x6c3ac3,_0x431042={'bHxoD':function(_0x21d9e4,_0x22a8ec){return _0x21d9e4(_0x22a8ec);},'wLVOI':'help','nmzVL':function(_0x196ad8,_0x104b24){return _0x196ad8===_0x104b24;},'sXbDJ':function(_0x3f2256){return _0x3f2256();},'RlLrQ':'doctor'},{command:_0xebb8fd,flags:_0x385de5,positional:_0x5e0251}=_0x431042[_0x4d1478(0x213)](parseArgs,process['argv']);if(!_0xebb8fd||_0xebb8fd===_0x431042['wLVOI']||_0x431042[_0x4d1478(0x2bc)](_0xebb8fd,'--help')){_0x431042[_0x4d1478(0x24b)](showHelp);return;}switch(_0xebb8fd){case _0x431042[_0x4d1478(0x1d2)]:return _0x431042[_0x4d1478(0x24b)](doctor);case _0x4d1478(0x2bb):return staffKeys();case'create-key':return _0x431042['bHxoD'](createKey,_0x385de5);case'list-keys':return listKeysCmd(_0x385de5);case _0x4d1478(0x2c5):return revokeKeyCmd(_0x5e0251);default:console[_0x4d1478(0x28b)]('\x20\x20'+icons[_0x4d1478(0x2bf)]+'\x20Unknown\x20command:\x20'+c[_0x4d1478(0x1d7)]+_0xebb8fd+c[_0x4d1478(0x26a)]),console[_0x4d1478(0x28b)]('\x20\x20'+c[_0x4d1478(0x2c2)]+'Run\x20\x22colana\x20admin\x20help\x22\x20for\x20usage.'+c['reset']),process['exit'](0x1);return;}}main()[a0_0x6c3ac3(0x2b1)](_0x5538e7=>{const _0x135346=a0_0x6c3ac3;console[_0x135346(0x28b)]('\x20\x20'+icons['fail']+'\x20'+c[_0x135346(0x28b)]+(_0x5538e7[_0x135346(0x316)]||_0x5538e7)+c['reset']),process['exit'](0x1);});