@panguard-ai/panguard 1.3.4 → 1.4.0

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.
@@ -13,6 +13,7 @@ import { join } from 'node:path';
13
13
  import { homedir, platform } from 'node:os';
14
14
  import { createRequire } from 'node:module';
15
15
  import { c, banner, divider, symbols, promptConfirm } from '@panguard-ai/core';
16
+ import { PANGUARD_VERSION } from '../../index.js';
16
17
  import { scanInstalledSkills, renderSkillScanResults, reviewFlaggedSkills, } from './setup-skill-scan.js';
17
18
  /** Open URL in the default browser (cross-platform) */
18
19
  function openBrowser(url) {
@@ -142,11 +143,15 @@ export function setupCommand() {
142
143
  const actionable = options.remove
143
144
  ? targets.filter((p) => p.alreadyConfigured)
144
145
  : targets.filter((p) => p.detected && !p.alreadyConfigured);
146
+ // JSON mode: collect all data, output at the end (don't return early)
147
+ const jsonOutput = {
148
+ action: options.remove ? 'remove' : 'setup',
149
+ version: PANGUARD_VERSION,
150
+ timestamp: new Date().toISOString(),
151
+ platforms: [],
152
+ };
145
153
  if (actionable.length === 0) {
146
- if (options.json) {
147
- console.log(JSON.stringify({ action: options.remove ? 'remove' : 'setup', results: [] }));
148
- }
149
- else {
154
+ if (!options.json) {
150
155
  const msg = options.remove
151
156
  ? 'No platforms have Panguard configured.'
152
157
  : 'All detected platforms are already configured, or no platforms found.';
@@ -154,7 +159,17 @@ export function setupCommand() {
154
159
  console.log();
155
160
  console.log(c.dim(' Run with --platform <name> to target a specific platform.'));
156
161
  }
157
- return;
162
+ // Include already-configured platforms in JSON output
163
+ jsonOutput['platforms'] = allPlatforms
164
+ .filter((p) => p.detected)
165
+ .map((p) => ({
166
+ platform: p.id,
167
+ success: true,
168
+ already_configured: p.alreadyConfigured,
169
+ }));
170
+ // Don't return — continue to skill scan + guard for JSON mode
171
+ if (!options.json)
172
+ return;
158
173
  }
159
174
  // 3. Execute injection or removal
160
175
  if (!options.json) {
@@ -177,16 +192,18 @@ export function setupCommand() {
177
192
  }
178
193
  }
179
194
  }
180
- if (options.json) {
181
- console.log(JSON.stringify({
182
- action: options.remove ? 'remove' : 'setup',
183
- results: results.map((r) => ({
184
- platform: r.platformId,
185
- success: r.success,
186
- configPath: r.configPath,
187
- error: r.error,
188
- })),
189
- }, null, 2));
195
+ // Update jsonOutput with actual platform results (only if there were actionable platforms)
196
+ if (results.length > 0) {
197
+ jsonOutput['platforms'] = results.map((r) => ({
198
+ platform: r.platformId,
199
+ success: r.success,
200
+ configPath: r.configPath,
201
+ error: r.error,
202
+ }));
203
+ }
204
+ if (options.json && options.remove) {
205
+ jsonOutput['agent_friendly'] = true;
206
+ console.log(JSON.stringify(jsonOutput, null, 2));
190
207
  return;
191
208
  }
192
209
  console.log();
@@ -194,37 +211,63 @@ export function setupCommand() {
194
211
  console.log();
195
212
  const succeeded = results.filter((r) => r.success).length;
196
213
  const failed = results.filter((r) => !r.success).length;
197
- if (failed === 0) {
198
- console.log(c.green(` ${symbols.pass} All ${succeeded} platform(s) configured successfully.`));
199
- }
200
- else {
201
- console.log(c.yellow(` ${succeeded} succeeded, ${failed} failed.`));
214
+ if (!options.json) {
215
+ if (failed === 0) {
216
+ console.log(c.green(` ${symbols.pass} All ${succeeded} platform(s) configured successfully.`));
217
+ }
218
+ else {
219
+ console.log(c.yellow(` ${succeeded} succeeded, ${failed} failed.`));
220
+ }
202
221
  }
203
222
  // ── 4. Scan installed skills ──────────────────────────────────
204
223
  if (!options.remove && !options.skipScan) {
205
- console.log();
206
- divider('Skill Security Scan');
207
- console.log();
208
- console.log(c.dim(' Scanning installed MCP skills across all platforms...'));
209
- console.log();
224
+ if (!options.json) {
225
+ console.log();
226
+ divider('Skill Security Scan');
227
+ console.log();
228
+ console.log(c.dim(' Scanning installed MCP skills across all platforms...'));
229
+ console.log();
230
+ }
210
231
  try {
211
232
  const { discoverAllSkills } = await import('@panguard-ai/panguard-mcp/config');
212
233
  const skills = await discoverAllSkills();
213
234
  if (skills.length > 0) {
214
- const scanResults = await scanInstalledSkills(skills);
215
- renderSkillScanResults(scanResults);
235
+ const scanResults = await scanInstalledSkills(skills, {
236
+ silent: options.json,
237
+ });
238
+ if (!options.json)
239
+ renderSkillScanResults(scanResults);
240
+ // Collect skill scan data for JSON output
241
+ const safe = scanResults.filter((r) => r.status === 'safe');
242
+ const cautionResults = scanResults.filter((r) => r.status === 'caution');
243
+ const flaggedResults = scanResults.filter((r) => r.status === 'flagged');
244
+ jsonOutput['skill_scan'] = {
245
+ total: scanResults.length,
246
+ safe: safe.length,
247
+ caution: cautionResults.length,
248
+ flagged: flaggedResults.length,
249
+ skills: scanResults.map((r) => ({
250
+ name: r.entry.name,
251
+ platform: r.entry.platformId,
252
+ status: r.status,
253
+ risk_level: r.audit?.riskLevel ?? null,
254
+ risk_score: r.audit?.riskScore ?? null,
255
+ })),
256
+ };
216
257
  // Whitelist only safe (LOW risk) skills — caution (MEDIUM) needs review
217
258
  const safeOnly = scanResults
218
259
  .filter((r) => r.status === 'safe')
219
260
  .map((r) => r.entry.name);
220
261
  if (safeOnly.length > 0) {
221
262
  persistToWhitelist(safeOnly, 'static');
222
- console.log();
223
- console.log(c.green(` ${symbols.pass} ${safeOnly.length} safe skill(s) auto-whitelisted.`));
224
- console.log(c.dim(` Saved to ~/.panguard-guard/skill-whitelist.json`));
263
+ if (!options.json) {
264
+ console.log();
265
+ console.log(c.green(` ${symbols.pass} ${safeOnly.length} safe skill(s) auto-whitelisted.`));
266
+ console.log(c.dim(` Saved to ~/.panguard-guard/skill-whitelist.json`));
267
+ }
225
268
  }
226
269
  const caution = scanResults.filter((r) => r.status === 'caution');
227
- if (caution.length > 0) {
270
+ if (caution.length > 0 && !options.json) {
228
271
  console.log(c.yellow(` ${symbols.warn} ${caution.length} skill(s) at MEDIUM risk — monitored but not whitelisted.`));
229
272
  }
230
273
  // Separate CRITICAL (auto-block) from HIGH (interactive review)
@@ -236,40 +279,51 @@ export function setupCommand() {
236
279
  const { removeServer } = await import('@panguard-ai/panguard-mcp/config');
237
280
  for (const result of critical) {
238
281
  const removed = removeServer(result.entry.platformId, result.entry.name);
239
- if (removed) {
240
- console.log(c.red(` ${symbols.fail} BLOCKED: ${c.bold(result.entry.name)} is critically dangerous and has been disabled.`));
241
- console.log(c.dim(` Risk score: ${result.audit?.riskScore ?? 0}/100 | Platform: ${result.entry.platformId}`));
242
- }
243
- else {
244
- console.log(c.red(` ${symbols.fail} CRITICAL: ${c.bold(result.entry.name)} -- could not auto-remove. Manually disable this skill.`));
282
+ if (!options.json) {
283
+ if (removed) {
284
+ console.log(c.red(` ${symbols.fail} BLOCKED: ${c.bold(result.entry.name)} is critically dangerous and has been disabled.`));
285
+ console.log(c.dim(` Risk score: ${result.audit?.riskScore ?? 0}/100 | Platform: ${result.entry.platformId}`));
286
+ }
287
+ else {
288
+ console.log(c.red(` ${symbols.fail} CRITICAL: ${c.bold(result.entry.name)} -- could not auto-remove. Manually disable this skill.`));
289
+ }
245
290
  }
246
291
  }
247
292
  }
248
293
  // Review HIGH skills interactively (not CRITICAL)
249
- if (high.length > 0 && !options.yes) {
294
+ if (high.length > 0 && !options.yes && !options.json) {
250
295
  const userWhitelisted = await reviewFlaggedSkills(high);
251
296
  if (userWhitelisted.length > 0) {
252
297
  persistToWhitelist(userWhitelisted, 'manual');
253
298
  }
254
299
  }
255
- else if (high.length > 0) {
300
+ else if (high.length > 0 && !options.json) {
256
301
  console.log(c.yellow(` ${symbols.warn} ${high.length} HIGH-risk skill(s) -- run "panguard guard --watch" to review.`));
257
302
  }
258
303
  }
259
304
  else {
260
- console.log(c.dim(` ${symbols.info} No MCP skills found. Skills will be audited as you install them.`));
305
+ jsonOutput['skill_scan'] = { total: 0, safe: 0, caution: 0, flagged: 0, skills: [] };
306
+ if (!options.json) {
307
+ console.log(c.dim(` ${symbols.info} No MCP skills found. Skills will be audited as you install them.`));
308
+ }
261
309
  }
262
310
  }
263
311
  catch {
264
- console.log(c.dim(` ${symbols.info} Skill scanning skipped (auditor not available).`));
312
+ if (!options.json) {
313
+ console.log(c.dim(` ${symbols.info} Skill scanning skipped (auditor not available).`));
314
+ }
315
+ }
316
+ if (!options.json) {
317
+ console.log();
318
+ divider();
265
319
  }
266
- console.log();
267
- divider();
268
320
  }
269
321
  // ── 5. Install guard as system service (auto-start on boot) ───
270
322
  if (!options.remove && !options.skipGuard) {
271
- console.log();
323
+ if (!options.json)
324
+ console.log();
272
325
  const installGuard = options.yes ||
326
+ options.json ||
273
327
  (await promptConfirm({
274
328
  message: {
275
329
  en: 'Install Panguard Guard as system service? (recommended, auto-start on boot)',
@@ -279,8 +333,10 @@ export function setupCommand() {
279
333
  lang: L,
280
334
  }));
281
335
  if (installGuard) {
282
- console.log();
283
- console.log(c.dim(' Installing Panguard Guard as system service...'));
336
+ if (!options.json) {
337
+ console.log();
338
+ console.log(c.dim(' Installing Panguard Guard as system service...'));
339
+ }
284
340
  // Resolve the guard CLI binary path (outside try so fallback can use it)
285
341
  let guardBin;
286
342
  try {
@@ -290,9 +346,17 @@ export function setupCommand() {
290
346
  catch {
291
347
  // Fallback: check common global/local paths
292
348
  }
349
+ const dashUrl = 'http://127.0.0.1:3100';
293
350
  if (!guardBin) {
294
- console.log(c.yellow(` ${symbols.warn} Could not locate panguard-guard binary.`));
295
- console.log(c.dim(' Run manually: panguard guard install'));
351
+ if (!options.json) {
352
+ console.log(c.yellow(` ${symbols.warn} Could not locate panguard-guard binary.`));
353
+ console.log(c.dim(' Run manually: panguard guard install'));
354
+ }
355
+ jsonOutput['guard'] = {
356
+ installed: false,
357
+ running: false,
358
+ error: 'guard binary not found',
359
+ };
296
360
  }
297
361
  else {
298
362
  try {
@@ -308,87 +372,141 @@ export function setupCommand() {
308
372
  : osPlatform === 'win32'
309
373
  ? 'Windows Service'
310
374
  : 'system service';
311
- console.log(c.green(` ${symbols.pass} Guard installed as ${serviceType} service.`));
312
- console.log(c.dim(` ${servicePath}`));
313
- console.log(c.green(` ${symbols.pass} Guard will auto-start on boot and restart on crash.`));
314
- console.log(c.dim(' Run "panguard guard status" to check.'));
315
- console.log(c.dim(' Run "panguard guard uninstall" to remove.'));
316
- // ── Threat Cloud opt-in ──
317
- console.log();
318
- const enableTC = options.yes ||
319
- (await promptConfirm({
320
- message: {
321
- en: 'Enable Threat Cloud collective defense?',
322
- 'zh-TW': '啟用 Threat Cloud 集體防禦?',
323
- },
324
- defaultValue: true,
325
- lang: L,
326
- }));
327
- try {
328
- const configPath = join(dataDir, 'config.json');
329
- const { loadConfig, saveConfig } = await import('@panguard-ai/panguard-guard');
330
- const guardConfig = loadConfig(configPath);
331
- const updatedConfig = {
332
- ...guardConfig,
333
- threatCloudUploadEnabled: enableTC,
334
- threatCloudEndpoint: enableTC
335
- ? (guardConfig.threatCloudEndpoint ?? 'https://tc.panguard.ai/api')
336
- : guardConfig.threatCloudEndpoint,
337
- };
338
- saveConfig(updatedConfig, configPath);
339
- if (enableTC) {
340
- console.log(c.green(` ${symbols.pass} Threat Cloud enabled: ${updatedConfig.threatCloudEndpoint ?? 'https://tc.panguard.ai/api'}`));
341
- console.log(c.dim(' Every scan strengthens the collective defense network.'));
342
- }
343
- else {
344
- console.log(c.dim(` ${symbols.info} Threat Cloud disabled. Enable later: panguard guard config --set threatCloudUploadEnabled=true`));
345
- }
375
+ if (!options.json) {
376
+ console.log(c.green(` ${symbols.pass} Guard installed as ${serviceType} service.`));
377
+ console.log(c.dim(` ${servicePath}`));
378
+ console.log(c.green(` ${symbols.pass} Guard will auto-start on boot and restart on crash.`));
379
+ console.log(c.dim(' Run "panguard guard status" to check.'));
380
+ console.log(c.dim(' Run "panguard guard uninstall" to remove.'));
346
381
  }
347
- catch {
348
- // Config save failed — non-fatal, Guard still installed
382
+ jsonOutput['guard'] = {
383
+ installed: true,
384
+ running: true,
385
+ service_type: serviceType,
386
+ service_path: servicePath,
387
+ dashboard_url: dashUrl,
388
+ };
389
+ // Open Dashboard in browser (skip in JSON mode — AI agent will show URL)
390
+ if (!options.json) {
391
+ console.log();
392
+ console.log(c.green(` ${symbols.pass} Opening Guard Dashboard...`));
393
+ console.log(c.dim(` ${dashUrl}`));
394
+ openBrowser(dashUrl);
349
395
  }
350
- // Open Dashboard in browser
351
- const dashUrl = 'http://127.0.0.1:3100';
352
- console.log();
353
- console.log(c.green(` ${symbols.pass} Opening Guard Dashboard...`));
354
- console.log(c.dim(` ${dashUrl}`));
355
- openBrowser(dashUrl);
356
396
  }
357
397
  catch (err) {
358
398
  const msg = err instanceof Error ? err.message : String(err);
359
- if (msg.includes('EACCES') || msg.includes('permission')) {
360
- console.log(c.yellow(` ${symbols.warn} Needs elevated privileges to install system service.`));
361
- console.log(c.dim(' Run: sudo panguard guard install'));
362
- }
363
- else {
364
- console.log(c.yellow(` ${symbols.warn} Could not install as system service: ${msg}`));
365
- console.log(c.dim(' Run manually: panguard guard install'));
399
+ if (!options.json) {
400
+ if (msg.includes('EACCES') || msg.includes('permission')) {
401
+ console.log(c.yellow(` ${symbols.warn} Needs elevated privileges to install system service.`));
402
+ console.log(c.dim(' Run: sudo panguard guard install'));
403
+ }
404
+ else {
405
+ console.log(c.yellow(` ${symbols.warn} Could not install as system service: ${msg}`));
406
+ console.log(c.dim(' Run manually: panguard guard install'));
407
+ }
408
+ // Fallback: start Guard for this session only
409
+ console.log();
410
+ console.log(c.dim(' Starting Guard for this session instead...'));
366
411
  }
367
- // Fallback: start Guard for this session only
368
- console.log();
369
- console.log(c.dim(' Starting Guard for this session instead...'));
370
412
  try {
371
413
  const child = spawn(process.execPath, [guardBin, 'start', '--dashboard'], {
372
414
  detached: true,
373
415
  stdio: 'ignore',
374
416
  });
375
417
  child.unref();
376
- console.log(c.green(` ${symbols.pass} Guard started (PID: ${child.pid}). Will stop when system restarts.`));
377
- // Open Dashboard in browser
378
- const fallbackUrl = 'http://127.0.0.1:3100';
379
- console.log();
380
- console.log(c.green(` ${symbols.pass} Opening Guard Dashboard...`));
381
- console.log(c.dim(` ${fallbackUrl}`));
382
- openBrowser(fallbackUrl);
418
+ jsonOutput['guard'] = {
419
+ installed: false,
420
+ running: true,
421
+ pid: child.pid,
422
+ dashboard_url: dashUrl,
423
+ error: `service install failed: ${msg}`,
424
+ };
425
+ if (!options.json) {
426
+ console.log(c.green(` ${symbols.pass} Guard started (PID: ${child.pid}). Will stop when system restarts.`));
427
+ console.log();
428
+ console.log(c.green(` ${symbols.pass} Opening Guard Dashboard...`));
429
+ console.log(c.dim(` ${dashUrl}`));
430
+ openBrowser(dashUrl);
431
+ }
383
432
  }
384
433
  catch {
385
- console.log(c.dim(' Run manually: panguard guard start --dashboard'));
434
+ jsonOutput['guard'] = { installed: false, running: false, error: msg };
435
+ if (!options.json) {
436
+ console.log(c.dim(' Run manually: panguard guard start --dashboard'));
437
+ }
386
438
  }
387
439
  }
388
440
  }
389
441
  }
390
442
  }
391
- // ── Next steps ─────────────────────────────────────────────────
443
+ // ── 6. Threat Cloud opt-in (always runs, independent of guard install) ──
444
+ if (!options.remove && !options.skipGuard) {
445
+ const dataDir = join(homedir(), '.panguard-guard');
446
+ const enableTC = options.yes ||
447
+ options.json ||
448
+ (await promptConfirm({
449
+ message: {
450
+ en: 'Enable Threat Cloud collective defense?',
451
+ 'zh-TW': '啟用 Threat Cloud 集體防禦?',
452
+ },
453
+ defaultValue: true,
454
+ lang: L,
455
+ }));
456
+ try {
457
+ const tcConfigPath = join(dataDir, 'config.json');
458
+ const { loadConfig, saveConfig } = await import('@panguard-ai/panguard-guard');
459
+ const guardConfig = loadConfig(tcConfigPath);
460
+ const updatedConfig = {
461
+ ...guardConfig,
462
+ threatCloudUploadEnabled: enableTC,
463
+ threatCloudEndpoint: enableTC
464
+ ? (guardConfig.threatCloudEndpoint ?? 'https://tc.panguard.ai/api')
465
+ : guardConfig.threatCloudEndpoint,
466
+ };
467
+ saveConfig(updatedConfig, tcConfigPath);
468
+ if (!options.json) {
469
+ if (enableTC) {
470
+ console.log(c.green(` ${symbols.pass} Threat Cloud enabled: ${updatedConfig.threatCloudEndpoint ?? 'https://tc.panguard.ai/api'}`));
471
+ console.log(c.dim(' Every scan strengthens the collective defense network.'));
472
+ }
473
+ else {
474
+ console.log(c.dim(` ${symbols.info} Threat Cloud disabled. Enable later: panguard guard config --set threatCloudUploadEnabled=true`));
475
+ }
476
+ }
477
+ // Add TC status to guard JSON output
478
+ if (jsonOutput['guard'] && typeof jsonOutput['guard'] === 'object') {
479
+ jsonOutput['guard']['threat_cloud'] = enableTC;
480
+ }
481
+ }
482
+ catch {
483
+ // Config save failed — non-fatal
484
+ }
485
+ }
486
+ // ── Report setup event to Threat Cloud (best-effort) ────────
487
+ void fetch('https://tc.panguard.ai/api/usage', {
488
+ method: 'POST',
489
+ headers: { 'Content-Type': 'application/json' },
490
+ body: JSON.stringify({
491
+ event_type: 'cli_setup',
492
+ source: 'cli-user',
493
+ metadata: {
494
+ version: PANGUARD_VERSION,
495
+ platforms: results
496
+ .filter((r) => r.success)
497
+ .map((r) => r.platformId),
498
+ skillsScanned: jsonOutput['skill_scan']?.total ?? 0,
499
+ },
500
+ }),
501
+ signal: AbortSignal.timeout(3000),
502
+ }).catch(() => { });
503
+ // ── JSON output (all data collected) ─────────────────────────
504
+ if (options.json) {
505
+ jsonOutput['agent_friendly'] = true;
506
+ console.log(JSON.stringify(jsonOutput, null, 2));
507
+ return;
508
+ }
509
+ // ── Next steps (human-readable only) ─────────────────────────
392
510
  console.log();
393
511
  console.log(c.sage(c.bold(' Setup complete! Here are your quick commands:')));
394
512
  console.log();
@@ -396,7 +514,10 @@ export function setupCommand() {
396
514
  console.log(` ${c.sage('pga up')} Start protection + dashboard`);
397
515
  console.log(` ${c.sage('pga status')} Check protection status`);
398
516
  console.log(` ${c.sage('pga scan')} Scan all installed skills`);
399
- console.log(` ${c.sage('pga audit <dir>')} Audit a skill before installing`);
517
+ console.log(` ${c.sage('pga audit <url>')} Audit a skill before installing`);
518
+ console.log();
519
+ console.log(c.dim(' Open source (MIT). If PanGuard helps you, star us on GitHub:'));
520
+ console.log(c.sage(' https://github.com/panguard-ai/panguard-ai'));
400
521
  console.log();
401
522
  const configuredPlatforms = actionable.filter((_, i) => results[i]?.success);
402
523
  if (configuredPlatforms.length > 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../src/cli/commands/setup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../src/cli/commands/setup.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,uBAAuB,CAAC;AAE/B,uDAAuD;AACvD,SAAS,WAAW,CAAC,GAAW;IAC9B,MAAM,EAAE,GAAG,QAAQ,EAAE,CAAC;IACtB,MAAM,GAAG,GAAG,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC;IAC7E,QAAQ,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE;QACxB,8CAA8C;IAChD,CAAC,CAAC,CAAC;AACL,CAAC;AAED,6DAA6D;AAC7D,SAAS,kBAAkB,CAAC,UAA6B,EAAE,MAA2B;IACpF,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,iBAAiB,CAAC,CAAC;IACpD,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,EAAE,sBAAsB,CAAC,CAAC;IAE7D,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3C,CAAC;IAED,qCAAqC;IACrC,IAAI,QAAQ,GAUR,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IAEnC,IAAI,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAC9B,IAAI,CAAC;YACH,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAoB,CAAC;QACjF,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC,IAAI,iDAAiD,CAAC,CAAC,CAAC;QAC7F,CAAC;IACH,CAAC;IAED,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC;IAC/E,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAErC,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAClE,IAAI,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC;YAAE,SAAS;QAE5C,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC;YACtB,IAAI;YACJ,cAAc,EAAE,UAAU;YAC1B,MAAM;YACN,OAAO,EAAE,GAAG;YACZ,MAAM,EACJ,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,sCAAsC;SAC9F,CAAC,CAAC;QACH,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAChC,CAAC;IAED,aAAa,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AAC3E,CAAC;AAED,6CAA6C;AAC7C,MAAM,sBAAsB,GAA2B;IACrD,aAAa,EAAE,gCAAgC;IAC/C,gBAAgB,EAAE,gCAAgC;IAClD,MAAM,EAAE,iDAAiD;IACzD,QAAQ,EAAE,2BAA2B;IACrC,KAAK,EAAE,+BAA+B;IACtC,SAAS,EAAE,4BAA4B;IACvC,QAAQ,EAAE,2BAA2B;IACrC,OAAO,EAAE,0BAA0B;CACpC,CAAC;AAEF,MAAM,UAAU,YAAY;IAC1B,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC;SAC7B,WAAW,CACV,8FAA8F,CAC/F;SACA,MAAM,CACL,mBAAmB,EACnB,wGAAwG,CACzG;SACA,MAAM,CAAC,UAAU,EAAE,kDAAkD,EAAE,KAAK,CAAC;SAC7E,MAAM,CAAC,QAAQ,EAAE,8BAA8B,EAAE,KAAK,CAAC;SACvD,MAAM,CAAC,OAAO,EAAE,oCAAoC,EAAE,KAAK,CAAC;SAC5D,MAAM,CAAC,aAAa,EAAE,8BAA8B,EAAE,KAAK,CAAC;SAC5D,MAAM,CAAC,cAAc,EAAE,uCAAuC,EAAE,KAAK,CAAC;SACtE,MAAM,CAAC,eAAe,EAAE,mDAAmD,CAAC;SAC5E,MAAM,CACL,KAAK,EAAE,OAQN,EAAE,EAAE;QACH,kEAAkE;QAClE,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;QACnF,MAAM,eAAe,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC9E,MAAM,YAAY,GAChB,OAAO,CAAC,IAAI,KAAK,IAAI;YACnB,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,OAAO,CAAC,IAAI,KAAK,OAAO;gBACxB,CAAC,CAAC,OAAO;gBACT,CAAC,CAAC,eAAe;oBACf,CAAC,CAAC,OAAO;oBACT,CAAC,CAAC,IAAI,CAAC;QACf,MAAM,CAAC,GAAG,YAAY,CAAC;QAEvB,MAAM,SAAS,GAAG,MAAO,MAAM,CAAC,kCAA4C,CAgBzE,CAAC;QACJ,MAAM,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,GAAG,SAAS,CAAC;QAExE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAClB,MAAM,CAAC,gBAAgB,CAAC,CAAC;YACzB,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,CAAC;QAED,sBAAsB;QACtB,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAClB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC,CAAC;YAC3D,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,CAAC;QAED,MAAM,YAAY,GAAG,MAAM,eAAe,EAAE,CAAC;QAE7C,yCAAyC;QACzC,MAAM,QAAQ,GAAG;YACf,aAAa;YACb,gBAAgB;YAChB,QAAQ;YACR,UAAU;YACV,OAAO;YACP,WAAW;YACX,UAAU;YACV,SAAS;SACV,CAAC;QACF,IAAI,OAAO,GAAG,YAAY,CAAC;QAC3B,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACrB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACzC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,uBAAuB,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;gBAChE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,sBAAsB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;gBAClE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;gBACrB,OAAO;YACT,CAAC;YACD,OAAO,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;QAClE,CAAC;QAED,4BAA4B;QAC5B,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAClB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC;YAC7C,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,KAAK,MAAM,CAAC,IAAI,YAAY,EAAE,CAAC;gBAC7B,MAAM,MAAM,GAAG,CAAC,CAAC,QAAQ;oBACvB,CAAC,CAAC,CAAC,CAAC,iBAAiB;wBACnB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,IAAI,aAAa,CAAC;wBACvC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,iBAAiB,CAAC;oBAC9C,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,YAAY,CAAC,CAAC;gBACtC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,MAAM,EAAE,CAAC,CAAC;YAC/E,CAAC;YACD,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,EAAE,CAAC;YACV,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,CAAC;QAED,sCAAsC;QACtC,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM;YAC/B,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC;YAC5C,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC;QAE9D,sEAAsE;QACtE,MAAM,UAAU,GAA4B;YAC1C,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO;YAC3C,OAAO,EAAE,gBAAgB;YACzB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,SAAS,EAAE,EAAE;SACd,CAAC;QAEF,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;gBAClB,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM;oBACxB,CAAC,CAAC,wCAAwC;oBAC1C,CAAC,CAAC,uEAAuE,CAAC;gBAC5E,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,OAAO,CAAC,IAAI,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC;gBACjD,OAAO,CAAC,GAAG,EAAE,CAAC;gBACd,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAC,CAAC;YACpF,CAAC;YAED,sDAAsD;YACtD,UAAU,CAAC,WAAW,CAAC,GAAG,YAAY;iBACnC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;iBACzB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACX,QAAQ,EAAE,CAAC,CAAC,EAAE;gBACd,OAAO,EAAE,IAAI;gBACb,kBAAkB,EAAE,CAAC,CAAC,iBAAiB;aACxC,CAAC,CAAC,CAAC;YAEN,8DAA8D;YAC9D,IAAI,CAAC,OAAO,CAAC,IAAI;gBAAE,OAAO;QAC5B,CAAC;QAED,kCAAkC;QAClC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAClB,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,aAAa,CAAC;YAChE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,MAAM,IAAI,UAAU,CAAC,MAAM,eAAe,CAAC,CAAC,CAAC;YACrE,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,CAAC;QAED,MAAM,OAAO,GAKR,EAAE,CAAC;QACR,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;YAC3B,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC9E,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAErB,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;gBAClB,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBAC1E,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;gBACrC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;oBACnB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;gBACnD,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,gBAAgB,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;gBACrD,CAAC;YACH,CAAC;QACH,CAAC;QAED,2FAA2F;QAC3F,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,UAAU,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC5C,QAAQ,EAAE,CAAC,CAAC,UAAU;gBACtB,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,UAAU,EAAE,CAAC,CAAC,UAAU;gBACxB,KAAK,EAAE,CAAC,CAAC,KAAK;aACf,CAAC,CAAC,CAAC;QACN,CAAC;QAED,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnC,UAAU,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAAC;YACpC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACjD,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,EAAE,CAAC;QACV,OAAO,CAAC,GAAG,EAAE,CAAC;QAEd,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;QAC1D,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;QAExD,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAClB,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CACT,CAAC,CAAC,KAAK,CAAC,KAAK,OAAO,CAAC,IAAI,QAAQ,SAAS,uCAAuC,CAAC,CACnF,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,SAAS,eAAe,MAAM,UAAU,CAAC,CAAC,CAAC;YACvE,CAAC;QACH,CAAC;QAED,iEAAiE;QACjE,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YACzC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;gBAClB,OAAO,CAAC,GAAG,EAAE,CAAC;gBACd,OAAO,CAAC,qBAAqB,CAAC,CAAC;gBAC/B,OAAO,CAAC,GAAG,EAAE,CAAC;gBACd,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC,CAAC;gBAC9E,OAAO,CAAC,GAAG,EAAE,CAAC;YAChB,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAO,MAAM,CACzC,kCAA4C,CAG3C,CAAC;gBACJ,MAAM,MAAM,GAAG,MAAM,iBAAiB,EAAE,CAAC;gBAEzC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACtB,MAAM,WAAW,GAAG,MAAM,mBAAmB,CAAC,MAAM,EAAE;wBACpD,MAAM,EAAE,OAAO,CAAC,IAAI;qBACrB,CAAC,CAAC;oBACH,IAAI,CAAC,OAAO,CAAC,IAAI;wBAAE,sBAAsB,CAAC,WAAW,CAAC,CAAC;oBAEvD,0CAA0C;oBAC1C,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;oBAC5D,MAAM,cAAc,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;oBACzE,MAAM,cAAc,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;oBACzE,UAAU,CAAC,YAAY,CAAC,GAAG;wBACzB,KAAK,EAAE,WAAW,CAAC,MAAM;wBACzB,IAAI,EAAE,IAAI,CAAC,MAAM;wBACjB,OAAO,EAAE,cAAc,CAAC,MAAM;wBAC9B,OAAO,EAAE,cAAc,CAAC,MAAM;wBAC9B,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;4BAC9B,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI;4BAClB,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,UAAU;4BAC5B,MAAM,EAAE,CAAC,CAAC,MAAM;4BAChB,UAAU,EAAE,CAAC,CAAC,KAAK,EAAE,SAAS,IAAI,IAAI;4BACtC,UAAU,EAAE,CAAC,CAAC,KAAK,EAAE,SAAS,IAAI,IAAI;yBACvC,CAAC,CAAC;qBACJ,CAAC;oBAEF,wEAAwE;oBACxE,MAAM,QAAQ,GAAG,WAAW;yBACzB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC;yBAClC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAC5B,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACxB,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;wBACvC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;4BAClB,OAAO,CAAC,GAAG,EAAE,CAAC;4BACd,OAAO,CAAC,GAAG,CACT,CAAC,CAAC,KAAK,CAAC,KAAK,OAAO,CAAC,IAAI,IAAI,QAAQ,CAAC,MAAM,kCAAkC,CAAC,CAChF,CAAC;4BACF,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC,CAAC;wBAC5E,CAAC;oBACH,CAAC;oBAED,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;oBAClE,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;wBACxC,OAAO,CAAC,GAAG,CACT,CAAC,CAAC,MAAM,CACN,KAAK,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,MAAM,2DAA2D,CAC/F,CACF,CAAC;oBACJ,CAAC;oBAED,gEAAgE;oBAChE,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;oBAClE,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,SAAS,KAAK,UAAU,CAAC,CAAC;oBAC1E,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,SAAS,KAAK,MAAM,CAAC,CAAC;oBAElE,uDAAuD;oBACvD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACxB,MAAM,EAAE,YAAY,EAAE,GAAG,MAAO,MAAM,CACpC,kCAA4C,CAG3C,CAAC;wBAEJ,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;4BAC9B,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;4BACzE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;gCAClB,IAAI,OAAO,EAAE,CAAC;oCACZ,OAAO,CAAC,GAAG,CACT,CAAC,CAAC,GAAG,CACH,KAAK,OAAO,CAAC,IAAI,aAAa,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,iDAAiD,CACzG,CACF,CAAC;oCACF,OAAO,CAAC,GAAG,CACT,CAAC,CAAC,GAAG,CACH,mBAAmB,MAAM,CAAC,KAAK,EAAE,SAAS,IAAI,CAAC,oBAAoB,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,CAC7F,CACF,CAAC;gCACJ,CAAC;qCAAM,CAAC;oCACN,OAAO,CAAC,GAAG,CACT,CAAC,CAAC,GAAG,CACH,KAAK,OAAO,CAAC,IAAI,cAAc,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,yDAAyD,CAClH,CACF,CAAC;gCACJ,CAAC;4BACH,CAAC;wBACH,CAAC;oBACH,CAAC;oBAED,kDAAkD;oBAClD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;wBACrD,MAAM,eAAe,GAAG,MAAM,mBAAmB,CAAC,IAAI,CAAC,CAAC;wBACxD,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;4BAC/B,kBAAkB,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;wBAChD,CAAC;oBACH,CAAC;yBAAM,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;wBAC5C,OAAO,CAAC,GAAG,CACT,CAAC,CAAC,MAAM,CACN,KAAK,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,gEAAgE,CACjG,CACF,CAAC;oBACJ,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,UAAU,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;oBACrF,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;wBAClB,OAAO,CAAC,GAAG,CACT,CAAC,CAAC,GAAG,CACH,KAAK,OAAO,CAAC,IAAI,mEAAmE,CACrF,CACF,CAAC;oBACJ,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;oBAClB,OAAO,CAAC,GAAG,CACT,CAAC,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC,IAAI,kDAAkD,CAAC,CAC3E,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;gBAClB,OAAO,CAAC,GAAG,EAAE,CAAC;gBACd,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC;QAED,iEAAiE;QACjE,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;YAC1C,IAAI,CAAC,OAAO,CAAC,IAAI;gBAAE,OAAO,CAAC,GAAG,EAAE,CAAC;YACjC,MAAM,YAAY,GAChB,OAAO,CAAC,GAAG;gBACX,OAAO,CAAC,IAAI;gBACZ,CAAC,MAAM,aAAa,CAAC;oBACnB,OAAO,EAAE;wBACP,EAAE,EAAE,6EAA6E;wBACjF,OAAO,EAAE,uCAAuC;qBACjD;oBACD,YAAY,EAAE,IAAI;oBAClB,IAAI,EAAE,CAAC;iBACR,CAAC,CAAC,CAAC;YAEN,IAAI,YAAY,EAAE,CAAC;gBACjB,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;oBAClB,OAAO,CAAC,GAAG,EAAE,CAAC;oBACd,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC,CAAC;gBACzE,CAAC;gBAED,yEAAyE;gBACzE,IAAI,QAA4B,CAAC;gBACjC,IAAI,CAAC;oBACH,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC/C,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,+CAA+C,CAAC,CAAC;gBAC9E,CAAC;gBAAC,MAAM,CAAC;oBACP,4CAA4C;gBAC9C,CAAC;gBAED,MAAM,OAAO,GAAG,uBAAuB,CAAC;gBAExC,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACd,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;wBAClB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC,IAAI,0CAA0C,CAAC,CAAC,CAAC;wBACnF,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC,CAAC;oBACjE,CAAC;oBACD,UAAU,CAAC,OAAO,CAAC,GAAG;wBACpB,SAAS,EAAE,KAAK;wBAChB,OAAO,EAAE,KAAK;wBACd,KAAK,EAAE,wBAAwB;qBAChC,CAAC;gBACJ,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC;wBACH,MAAM,SAAS,GAAG,GAAG,OAAO,CAAC,QAAQ,IAAI,QAAQ,EAAE,CAAC;wBACpD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,iBAAiB,CAAC,CAAC;wBAEnD,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,6BAA6B,CAAC,CAAC;wBACvE,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;wBAE7D,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC;wBACpC,MAAM,WAAW,GACf,UAAU,KAAK,QAAQ;4BACrB,CAAC,CAAC,SAAS;4BACX,CAAC,CAAC,UAAU,KAAK,OAAO;gCACtB,CAAC,CAAC,SAAS;gCACX,CAAC,CAAC,UAAU,KAAK,OAAO;oCACtB,CAAC,CAAC,iBAAiB;oCACnB,CAAC,CAAC,gBAAgB,CAAC;wBAE3B,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;4BAClB,OAAO,CAAC,GAAG,CACT,CAAC,CAAC,KAAK,CAAC,KAAK,OAAO,CAAC,IAAI,uBAAuB,WAAW,WAAW,CAAC,CACxE,CAAC;4BACF,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,WAAW,EAAE,CAAC,CAAC,CAAC;4BACzC,OAAO,CAAC,GAAG,CACT,CAAC,CAAC,KAAK,CAAC,KAAK,OAAO,CAAC,IAAI,sDAAsD,CAAC,CACjF,CAAC;4BACF,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC,CAAC;4BAChE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC,CAAC;wBACtE,CAAC;wBAED,UAAU,CAAC,OAAO,CAAC,GAAG;4BACpB,SAAS,EAAE,IAAI;4BACf,OAAO,EAAE,IAAI;4BACb,YAAY,EAAE,WAAW;4BACzB,YAAY,EAAE,WAAW;4BACzB,aAAa,EAAE,OAAO;yBACvB,CAAC;wBAEF,yEAAyE;wBACzE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;4BAClB,OAAO,CAAC,GAAG,EAAE,CAAC;4BACd,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,OAAO,CAAC,IAAI,6BAA6B,CAAC,CAAC,CAAC;4BACrE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,OAAO,EAAE,CAAC,CAAC,CAAC;4BACrC,WAAW,CAAC,OAAO,CAAC,CAAC;wBACvB,CAAC;oBACH,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;wBAC7D,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;4BAClB,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;gCACzD,OAAO,CAAC,GAAG,CACT,CAAC,CAAC,MAAM,CACN,KAAK,OAAO,CAAC,IAAI,uDAAuD,CACzE,CACF,CAAC;gCACF,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC,CAAC;4BAC7D,CAAC;iCAAM,CAAC;gCACN,OAAO,CAAC,GAAG,CACT,CAAC,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC,IAAI,yCAAyC,GAAG,EAAE,CAAC,CAC1E,CAAC;gCACF,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC,CAAC;4BACjE,CAAC;4BACD,8CAA8C;4BAC9C,OAAO,CAAC,GAAG,EAAE,CAAC;4BACd,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC,CAAC;wBACrE,CAAC;wBACD,IAAI,CAAC;4BACH,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,aAAa,CAAC,EAAE;gCACxE,QAAQ,EAAE,IAAI;gCACd,KAAK,EAAE,QAAQ;6BAChB,CAAC,CAAC;4BACH,KAAK,CAAC,KAAK,EAAE,CAAC;4BAEd,UAAU,CAAC,OAAO,CAAC,GAAG;gCACpB,SAAS,EAAE,KAAK;gCAChB,OAAO,EAAE,IAAI;gCACb,GAAG,EAAE,KAAK,CAAC,GAAG;gCACd,aAAa,EAAE,OAAO;gCACtB,KAAK,EAAE,2BAA2B,GAAG,EAAE;6BACxC,CAAC;4BAEF,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;gCAClB,OAAO,CAAC,GAAG,CACT,CAAC,CAAC,KAAK,CACL,KAAK,OAAO,CAAC,IAAI,wBAAwB,KAAK,CAAC,GAAG,oCAAoC,CACvF,CACF,CAAC;gCACF,OAAO,CAAC,GAAG,EAAE,CAAC;gCACd,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,OAAO,CAAC,IAAI,6BAA6B,CAAC,CAAC,CAAC;gCACrE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,OAAO,EAAE,CAAC,CAAC,CAAC;gCACrC,WAAW,CAAC,OAAO,CAAC,CAAC;4BACvB,CAAC;wBACH,CAAC;wBAAC,MAAM,CAAC;4BACP,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;4BACvE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;gCAClB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC,CAAC;4BAC3E,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,2EAA2E;QAC3E,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;YAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,iBAAiB,CAAC,CAAC;YACnD,MAAM,QAAQ,GACZ,OAAO,CAAC,GAAG;gBACX,OAAO,CAAC,IAAI;gBACZ,CAAC,MAAM,aAAa,CAAC;oBACnB,OAAO,EAAE;wBACP,EAAE,EAAE,yCAAyC;wBAC7C,OAAO,EAAE,uBAAuB;qBACjC;oBACD,YAAY,EAAE,IAAI;oBAClB,IAAI,EAAE,CAAC;iBACR,CAAC,CAAC,CAAC;YAEN,IAAI,CAAC;gBACH,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;gBAClD,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,6BAA6B,CAAC,CAAC;gBAC/E,MAAM,WAAW,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;gBAC7C,MAAM,aAAa,GAAG;oBACpB,GAAG,WAAW;oBACd,wBAAwB,EAAE,QAAQ;oBAClC,mBAAmB,EAAE,QAAQ;wBAC3B,CAAC,CAAC,CAAC,WAAW,CAAC,mBAAmB,IAAI,4BAA4B,CAAC;wBACnE,CAAC,CAAC,WAAW,CAAC,mBAAmB;iBACpC,CAAC;gBACF,UAAU,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;gBAExC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;oBAClB,IAAI,QAAQ,EAAE,CAAC;wBACb,OAAO,CAAC,GAAG,CACT,CAAC,CAAC,KAAK,CACL,KAAK,OAAO,CAAC,IAAI,0BAA0B,aAAa,CAAC,mBAAmB,IAAI,4BAA4B,EAAE,CAC/G,CACF,CAAC;wBACF,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,4DAA4D,CAAC,CAAC,CAAC;oBACnF,CAAC;yBAAM,CAAC;wBACN,OAAO,CAAC,GAAG,CACT,CAAC,CAAC,GAAG,CACH,KAAK,OAAO,CAAC,IAAI,iGAAiG,CACnH,CACF,CAAC;oBACJ,CAAC;gBACH,CAAC;gBAED,qCAAqC;gBACrC,IAAI,UAAU,CAAC,OAAO,CAAC,IAAI,OAAO,UAAU,CAAC,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;oBAClE,UAAU,CAAC,OAAO,CAA6B,CAAC,cAAc,CAAC,GAAG,QAAQ,CAAC;gBAC9E,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,iCAAiC;YACnC,CAAC;QACH,CAAC;QAED,+DAA+D;QAC/D,KAAK,KAAK,CAAC,kCAAkC,EAAE;YAC7C,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,UAAU,EAAE,WAAW;gBACvB,MAAM,EAAE,UAAU;gBAClB,QAAQ,EAAE;oBACR,OAAO,EAAE,gBAAgB;oBACzB,SAAS,EAAE,OAAO;yBACf,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;yBACxB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC;oBAC3B,aAAa,EAAG,UAAU,CAAC,YAAY,CAAoC,EAAE,KAAK,IAAI,CAAC;iBACxF;aACF,CAAC;YACF,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;SAClC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAEnB,gEAAgE;QAChE,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,UAAU,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAAC;YACpC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACjD,OAAO;QACT,CAAC;QAED,gEAAgE;QAChE,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC,CAAC,CAAC;QAC/E,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACvE,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,yCAAyC,CAAC,CAAC;QAC9E,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,gCAAgC,CAAC,CAAC;QACzE,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,oCAAoC,CAAC,CAAC;QAC3E,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,mCAAmC,CAAC,CAAC;QACjF,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,gEAAgE,CAAC,CAAC,CAAC;QACrF,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC,CAAC;QACpE,OAAO,CAAC,GAAG,EAAE,CAAC;QAEd,MAAM,mBAAmB,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QAC7E,IAAI,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC,CAAC;YAC/D,KAAK,MAAM,CAAC,IAAI,mBAAmB,EAAE,CAAC;gBACpC,MAAM,WAAW,GAAG,sBAAsB,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,yBAAyB,CAAC;gBAC9E,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC,CAAC,CAAC;YACtD,CAAC;YACD,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,CAAC;IACH,CAAC,CACF,CAAC;IAEJ,OAAO,GAAG,CAAC;AACb,CAAC"}
package/dist/cli/index.js CHANGED
@@ -191,11 +191,71 @@ async function showWhatsNewIfUpgraded() {
191
191
  // Non-critical
192
192
  }
193
193
  }
194
+ /**
195
+ * Check npm for a newer version of Panguard CLI.
196
+ * Non-blocking, max once per 24 hours, best-effort.
197
+ */
198
+ async function checkForUpdates() {
199
+ const { existsSync, readFileSync, writeFileSync, mkdirSync } = await import('node:fs');
200
+ const { join } = await import('node:path');
201
+ const home = process.env['HOME'] ?? process.env['USERPROFILE'] ?? '.';
202
+ const dir = join(home, '.panguard');
203
+ const checkFile = join(dir, '.last-update-check');
204
+ // Only check once per 24 hours
205
+ try {
206
+ if (existsSync(checkFile)) {
207
+ const lastCheck = parseInt(readFileSync(checkFile, 'utf-8').trim(), 10);
208
+ if (Date.now() - lastCheck < 24 * 60 * 60 * 1000)
209
+ return;
210
+ }
211
+ }
212
+ catch {
213
+ // Non-critical
214
+ }
215
+ // Write timestamp immediately to avoid duplicate checks
216
+ try {
217
+ if (!existsSync(dir))
218
+ mkdirSync(dir, { recursive: true });
219
+ writeFileSync(checkFile, String(Date.now()), 'utf-8');
220
+ }
221
+ catch {
222
+ // Non-critical
223
+ }
224
+ try {
225
+ const res = await fetch('https://registry.npmjs.org/@panguard-ai/panguard/latest', {
226
+ signal: AbortSignal.timeout(3_000),
227
+ headers: { Accept: 'application/json' },
228
+ });
229
+ if (!res.ok)
230
+ return;
231
+ const data = (await res.json());
232
+ const latest = data.version;
233
+ if (!latest || latest === PANGUARD_VERSION)
234
+ return;
235
+ // Simple semver comparison: split on dots, compare numerically
236
+ const cur = PANGUARD_VERSION.split('.').map(Number);
237
+ const lat = latest.split('.').map(Number);
238
+ const isNewer = (lat[0] ?? 0) > (cur[0] ?? 0) ||
239
+ ((lat[0] ?? 0) === (cur[0] ?? 0) && (lat[1] ?? 0) > (cur[1] ?? 0)) ||
240
+ ((lat[0] ?? 0) === (cur[0] ?? 0) &&
241
+ (lat[1] ?? 0) === (cur[1] ?? 0) &&
242
+ (lat[2] ?? 0) > (cur[2] ?? 0));
243
+ if (isNewer) {
244
+ console.log(`\n Update available: ${PANGUARD_VERSION} \u2192 ${latest}` +
245
+ `\n Run: pga upgrade\n`);
246
+ }
247
+ }
248
+ catch {
249
+ // Network failure — silently skip
250
+ }
251
+ }
194
252
  async function main() {
195
253
  // Show "what's new" on interactive use (not --json, not --help)
196
254
  const isJsonMode = userArgs.includes('--json');
197
255
  if (!hasHelpOrVersion && !isJsonMode) {
198
256
  await showWhatsNewIfUpgraded();
257
+ // Non-blocking update check (fire and forget on non-JSON interactive use)
258
+ void checkForUpdates();
199
259
  }
200
260
  if (!hasSubcommand && !hasHelpOrVersion) {
201
261
  // First-run detection: if no config exists, auto-run setup wizard