@trillboards/edge-sdk 0.2.66 → 0.2.68

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/deploy/macos/README.md +5 -5
  2. package/deploy/macos/TrillboardsSetupApp.m +16 -16
  3. package/deploy/macos/build-macos-pkg.sh +7 -7
  4. package/deploy/macos/pair.command +21 -21
  5. package/deploy/macos/scripts/postinstall +4 -2
  6. package/deploy/macos/test-install-pair.sh +4 -4
  7. package/deploy/windows/README.md +2 -2
  8. package/deploy/windows/bundle-windows-installer.ps1 +1 -1
  9. package/deploy/windows/installer.nsi +19 -13
  10. package/deploy/windows/setup-litertlm.ps1 +1 -1
  11. package/deploy/windows/trillboards-pair.cmd +17 -17
  12. package/deploy/windows/trillboards-setup.ps1 +18 -18
  13. package/dist/AudienceAnalyzeClient.d.ts +6 -0
  14. package/dist/AudienceAnalyzeClient.d.ts.map +1 -1
  15. package/dist/AudienceAnalyzeClient.js +18 -0
  16. package/dist/AudienceAnalyzeClient.js.map +1 -1
  17. package/dist/CloudSensingManager.d.ts +18 -0
  18. package/dist/CloudSensingManager.d.ts.map +1 -1
  19. package/dist/CloudSensingManager.js +39 -0
  20. package/dist/CloudSensingManager.js.map +1 -1
  21. package/dist/ConnectorStatusClient.d.ts +59 -0
  22. package/dist/ConnectorStatusClient.d.ts.map +1 -1
  23. package/dist/ConnectorStatusClient.js +9 -0
  24. package/dist/ConnectorStatusClient.js.map +1 -1
  25. package/dist/EdgeAgent.js +1 -1
  26. package/dist/analyzeCostObserver.d.ts +7 -3
  27. package/dist/analyzeCostObserver.d.ts.map +1 -1
  28. package/dist/analyzeCostObserver.js +7 -3
  29. package/dist/analyzeCostObserver.js.map +1 -1
  30. package/dist/autoSense.d.ts +14 -0
  31. package/dist/autoSense.d.ts.map +1 -1
  32. package/dist/autoSense.js +23 -0
  33. package/dist/autoSense.js.map +1 -1
  34. package/dist/cli.d.ts.map +1 -1
  35. package/dist/cli.js +3 -0
  36. package/dist/cli.js.map +1 -1
  37. package/dist/connectorCadence.d.ts +16 -11
  38. package/dist/connectorCadence.d.ts.map +1 -1
  39. package/dist/connectorCadence.js +16 -11
  40. package/dist/connectorCadence.js.map +1 -1
  41. package/dist/connectorUpdate.d.ts +53 -0
  42. package/dist/connectorUpdate.d.ts.map +1 -1
  43. package/dist/connectorUpdate.js +91 -2
  44. package/dist/connectorUpdate.js.map +1 -1
  45. package/dist/diagnose.d.ts +1 -1
  46. package/dist/diagnose.js +1 -1
  47. package/dist/hostSpecs.d.ts +115 -0
  48. package/dist/hostSpecs.d.ts.map +1 -0
  49. package/dist/hostSpecs.js +264 -0
  50. package/dist/hostSpecs.js.map +1 -0
  51. package/dist/localSensing.d.ts.map +1 -1
  52. package/dist/localSensing.js +16 -1
  53. package/dist/localSensing.js.map +1 -1
  54. package/dist/sensingRunMode.d.ts +16 -0
  55. package/dist/sensingRunMode.d.ts.map +1 -1
  56. package/dist/sensingRunMode.js +1 -1
  57. package/dist/sensingRunMode.js.map +1 -1
  58. package/dist/setupMode.d.ts +7 -11
  59. package/dist/setupMode.d.ts.map +1 -1
  60. package/dist/setupMode.js +27 -31
  61. package/dist/setupMode.js.map +1 -1
  62. package/package.json +1 -1
@@ -84,6 +84,7 @@ exports.manifestUrlForPlatform = manifestUrlForPlatform;
84
84
  exports.parseVersionManifest = parseVersionManifest;
85
85
  exports.isSafeToApplyUpdate = isSafeToApplyUpdate;
86
86
  exports.busynessOf = busynessOf;
87
+ exports.connectorRuntimeFromHealth = connectorRuntimeFromHealth;
87
88
  exports.isReleaseBakedEnough = isReleaseBakedEnough;
88
89
  exports.checkForConnectorUpdate = checkForConnectorUpdate;
89
90
  exports.startConnectorUpdateService = startConnectorUpdateService;
@@ -92,6 +93,7 @@ exports.startConnectorUpdates = startConnectorUpdates;
92
93
  const http = __importStar(require("http"));
93
94
  const https = __importStar(require("https"));
94
95
  const ConnectorStatusClient_1 = require("./ConnectorStatusClient");
96
+ const hostSpecs_1 = require("./hostSpecs");
95
97
  /** Where the release workflows publish every platform's manifest. */
96
98
  exports.CONNECTOR_UPDATE_BASE_URL = 'https://screen.trillboards.com/connector';
97
99
  /**
@@ -374,6 +376,40 @@ function busynessOf(health) {
374
376
  : 0,
375
377
  };
376
378
  }
379
+ /**
380
+ * Map a `getSensingHealth()` reading onto what the RUNTIME resolved.
381
+ *
382
+ * Same shape and the same tolerance as `busynessOf` above, and for the same
383
+ * reason: a test fake or a future manager must not be able to crash the
384
+ * watcher. It differs in what an ABSENT field means. `busynessOf` reads absence
385
+ * as 0 because "holding nothing" is a safe, true default; here absence is
386
+ * `null` / `false` / 0, all of which read as "this box has said nothing", never
387
+ * as an observation. Returns `null` when there is no health at all, so the
388
+ * caller omits the whole block rather than reporting a manufactured one.
389
+ *
390
+ * The delegate is taken from `accelerator`, which the manager already folds
391
+ * pessimistically across feeds, and `delegateConfirmed` is carried through
392
+ * UNCHANGED — a requested delegate must never arrive on the server as an
393
+ * observed one.
394
+ */
395
+ function connectorRuntimeFromHealth(health) {
396
+ if (!health)
397
+ return null;
398
+ const delegate = health.accelerator?.delegate;
399
+ const median = health.localAnalyze?.medianMs;
400
+ const samples = health.localAnalyze?.samples;
401
+ return {
402
+ delegate: delegate === 'gpu' || delegate === 'cpu' || delegate === 'mixed' ? delegate : null,
403
+ delegateConfirmed: health.accelerator?.delegateConfirmed === true,
404
+ gpuDemoted: health.accelerator?.gpuDemoted === true,
405
+ // `> 0` and not merely finite: a zero-millisecond frame is a clock artifact,
406
+ // and the direction of that error is "this hardware is faster than it is".
407
+ analyzeMedianMs: typeof median === 'number' && Number.isFinite(median) && median > 0
408
+ ? median
409
+ : null,
410
+ analyzeSamples: Number.isFinite(samples) && samples >= 0 ? samples : 0,
411
+ };
412
+ }
377
413
  /** Has this release sat long enough to be taken? */
378
414
  function isReleaseBakedEnough(manifest, nowMs, minAgeMs = exports.CONNECTOR_UPDATE_MIN_RELEASE_AGE_MS) {
379
415
  const published = Date.parse(manifest.publishedAt);
@@ -451,8 +487,23 @@ exports.CONNECTOR_UPDATE_SAFE_POINT_DEADLINE_MS = 2 * 60 * 60 * 1000;
451
487
  */
452
488
  function startConnectorUpdateService(deps) {
453
489
  const client = deps.client ?? new ConnectorManifestClient({ platform: deps.platform });
454
- if (!client.getEndpoint())
455
- return null;
490
+ /**
491
+ * Is there a published manifest for this platform at all?
492
+ *
493
+ * FALSE on Linux, which publishes none — and this used to `return null` here,
494
+ * which killed the whole loop rather than only the update half. That was
495
+ * defensible while the loop's only job was update-related, and became a real
496
+ * hole the moment it also carried the HOST report: the shipped systemd unit
497
+ * (`deploy/systemd/trillboards-edge.service`) runs `auto-sense`, so a Linux
498
+ * connector sensed perfectly and reported NOTHING — not its hardware, not its
499
+ * runtime, not even the version it was running. Invisible in the fleet, and
500
+ * invisible in a way that looks exactly like "no Linux connectors exist".
501
+ *
502
+ * So the loop now runs in REPORT-ONLY mode instead: it reports every cycle and
503
+ * simply never checks for, stages, or applies an update. The update half is
504
+ * what needs a manifest; telling the server what this machine is does not.
505
+ */
506
+ const hasManifest = Boolean(client.getEndpoint());
456
507
  const log = deps.log ?? (() => { });
457
508
  const now = deps.now ?? (() => Date.now());
458
509
  const reportStatus = deps.reportStatus ?? ConnectorStatusClient_1.reportConnectorStatus;
@@ -461,6 +512,17 @@ function startConnectorUpdateService(deps) {
461
512
  const setIntervalFn = deps.setIntervalFn ?? setInterval;
462
513
  const clearIntervalFn = deps.clearIntervalFn ?? clearInterval;
463
514
  const applier = deps.applier ?? null;
515
+ const hostSpecs = deps.hostSpecs ?? (() => {
516
+ try {
517
+ return (0, hostSpecs_1.connectorHostSpecs)();
518
+ }
519
+ catch {
520
+ // A spec probe that threw must never cost us the VERSION report we
521
+ // already have. `readConnectorHostSpecs` does not throw by construction;
522
+ // this is the belt for a future edit that makes it able to.
523
+ return null;
524
+ }
525
+ });
464
526
  const requestExit = deps.requestExit ?? (() => process.exit(0));
465
527
  const pollIntervalMs = deps.pollIntervalMs ?? exports.CONNECTOR_UPDATE_POLL_INTERVAL_MS;
466
528
  const stageDeadlineMs = deps.stageDeadlineMs ?? exports.CONNECTOR_UPDATE_STAGE_DEADLINE_MS;
@@ -493,11 +555,24 @@ function startConnectorUpdateService(deps) {
493
555
  */
494
556
  const report = async (check) => {
495
557
  const outcome = applier?.readOutcome() ?? null;
558
+ const host = hostSpecs();
559
+ const runtime = deps.runtime ? deps.runtime() : null;
496
560
  const result = await reportStatus({
497
561
  apiBaseUrl: deps.apiBaseUrl,
498
562
  deviceTokens: deps.deviceTokens,
499
563
  report: {
500
564
  connectorVersion: deps.installedVersion,
565
+ // Read at report time, both of them. The specs are memoised behind the
566
+ // closure so this is a map lookup; the runtime genuinely changes.
567
+ //
568
+ // SPREAD rather than assigned, so "nothing to say" is an ABSENT key and
569
+ // not an own property holding null. `{ host: null }` survives a
570
+ // hasOwnProperty check and shows up in Object.keys while disappearing
571
+ // through JSON.stringify — two structures for one meaning, and the one
572
+ // that reads as "reported" is the one that would clear a spec set we
573
+ // already have. Same discipline the availableVersion path documents.
574
+ ...(host ? { host } : {}),
575
+ ...(runtime ? { runtime } : {}),
501
576
  // UNDEFINED when the manifest could not be read, so the server leaves
502
577
  // its column alone. `check.availableVersion` is null both for "current"
503
578
  // and for "unknown", and reporting the second as the first would let a
@@ -594,6 +669,19 @@ function startConnectorUpdateService(deps) {
594
669
  const runCheck = async () => {
595
670
  if (stopped)
596
671
  return;
672
+ // REPORT-ONLY: no manifest exists for this platform, so there is nothing to
673
+ // fetch and nothing that could ever be applied. Report and stop there.
674
+ // `manifest: null` is what makes `report()` OMIT `availableVersion`, which
675
+ // is right — on this platform drift is genuinely unknown, not "current".
676
+ if (!hasManifest) {
677
+ await report({
678
+ installedVersion: deps.installedVersion,
679
+ publishedVersion: null,
680
+ availableVersion: null,
681
+ manifest: null,
682
+ });
683
+ return;
684
+ }
597
685
  const check = await checkForConnectorUpdate(deps.installedVersion, client);
598
686
  if (!check.manifest) {
599
687
  log('[update] could not read the published version manifest — staleness unknown');
@@ -715,6 +803,7 @@ function startConnectorUpdates(opts) {
715
803
  apiBaseUrl,
716
804
  deviceTokens,
717
805
  busyness: opts.busyness,
806
+ runtime: opts.runtime,
718
807
  requestExit: opts.requestExit,
719
808
  applier,
720
809
  log: opts.log,
@@ -1 +1 @@
1
- {"version":3,"file":"connectorUpdate.js","sourceRoot":"","sources":["../src/connectorUpdate.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmFH,sDAKC;AAUD,0DAOC;AAQD,8DAIC;AAGD,wDAOC;AAWD,oDAkDC;AAiJD,kDAEC;AAQD,gCASC;AAGD,oDAUC;AAoBD,0DAeC;AAkGD,kEAwMC;AAUD,sDAUC;AAeD,sDAwDC;AAnxBD,2CAA6B;AAC7B,6CAA+B;AAC/B,mEAAgE;AAGhE,qEAAqE;AACxD,QAAA,yBAAyB,GAAG,0CAA0C,CAAC;AAEpF;;;;;;;;;;GAUG;AACU,QAAA,kCAAkC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAErE;;;;;;;;;;;;GAYG;AACU,QAAA,mCAAmC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAEtE,sFAAsF;AACtF,MAAM,kBAAkB,GAAG,EAAE,GAAG,IAAI,CAAC;AAErC,8BAA8B;AAC9B,MAAM,mBAAmB,GAAG,KAAM,CAAC;AAoCnC;;;;GAIG;AACH,SAAgB,qBAAqB,CAAC,GAAY;IAChD,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACzC,MAAM,CAAC,GAAG,4DAA4D,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;IACxF,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACpB,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC3E,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,uBAAuB,CAAC,SAAkB,EAAE,SAAkB;IAC5E,MAAM,CAAC,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC;IAC3C,MAAM,CAAC,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC;IAC3C,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAC3B,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK;QAAE,OAAO,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;IAClD,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK;QAAE,OAAO,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;IAClD,OAAO,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;AAC3B,CAAC;AAED;;;;;GAKG;AACH,SAAgB,yBAAyB,CAAC,QAAgB;IACxD,IAAI,QAAQ,KAAK,OAAO;QAAE,OAAO,4CAA4C,CAAC;IAC9E,IAAI,QAAQ,KAAK,QAAQ;QAAE,OAAO,0CAA0C,CAAC;IAC7E,OAAO,IAAI,CAAC;AACd,CAAC;AAED,iDAAiD;AACjD,SAAgB,sBAAsB,CACpC,QAAgB,EAChB,UAAkB,iCAAyB;IAE3C,MAAM,MAAM,GAAG,yBAAyB,CAAC,QAAQ,CAAC,CAAC;IACnD,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,MAAM,EAAE,CAAC;AACpD,CAAC;AAED,SAAS,gBAAgB,CAAC,CAAU;IAClC,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;AAC/C,CAAC;AAED;;;;GAIG;AACH,SAAgB,oBAAoB,CAAC,IAAY;IAC/C,IAAI,GAAY,CAAC;IACjB,IAAI,CAAC;QACH,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACvE,MAAM,CAAC,GAAG,GAA8B,CAAC;IAEzC,IAAI,CAAC,CAAC,aAAa,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACvC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC;IAC/C,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,gBAAgB,CAAC;QAAE,OAAO,IAAI,CAAC;IAC5D,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7C,0EAA0E;IAC1E,gDAAgD;IAChD,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IAClF,IAAI,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,SAAS,IAAI,CAAC,EAAE,CAAC;QAC1F,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7F,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,WAAW,CAAC;QAAE,OAAO,IAAI,CAAC;IAElD,MAAM,QAAQ,GAA6B;QACzC,aAAa,EAAE,CAAC;QAChB,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,gBAAgB,EAAE,CAAC,CAAC,gBAA0B;QAC9C,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,SAAS,EAAE,CAAC,CAAC,SAAS;QACtB,WAAW,EAAE,CAAC,CAAC,WAAW;QAC1B,WAAW,EAAE,CAAC,CAAC,WAAW;KAC3B,CAAC;IACF,IAAI,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC;QAAE,QAAQ,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC;IACpE,IAAI,gBAAgB,CAAC,CAAC,CAAC,gBAAgB,CAAC;QAAE,QAAQ,CAAC,gBAAgB,GAAG,CAAC,CAAC,gBAAgB,CAAC;IACzF,IAAI,cAAc,IAAI,CAAC,EAAE,CAAC;QACxB,IAAI,OAAO,CAAC,CAAC,YAAY,KAAK,QAAQ,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC;YAAE,OAAO,IAAI,CAAC;QAC9F,QAAQ,CAAC,YAAY,GAAG,CAAC,CAAC,YAAY,CAAC;IACzC,CAAC;IACD,IAAI,iBAAiB,IAAI,CAAC,EAAE,CAAC;QAC3B,IACE,OAAO,CAAC,CAAC,eAAe,KAAK,QAAQ;YACrC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC;YACpC,CAAC,CAAC,eAAe,IAAI,CAAC,EACtB,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,QAAQ,CAAC,eAAe,GAAG,CAAC,CAAC,eAAe,CAAC;IAC/C,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAQD;;;;;;;;;;;;;;GAcG;AACI,MAAM,sBAAsB,GAAoB,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,CACxE,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;IAC9B,IAAI,MAAW,CAAC;IAChB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IACxB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,IAAI,KAAK,CAAC,mCAAoC,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAC/E,OAAO;IACT,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IACxD,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CACrB,GAAG,EACH;QACE,MAAM,EAAE,KAAK;QACb,OAAO,EAAE;YACP,MAAM,EAAE,kBAAkB;YAC1B,eAAe,EAAE,UAAU;YAC3B,MAAM,EAAE,UAAU;SACnB;QACD,OAAO,EAAE,SAAS;KACnB,EACD,CAAC,GAAG,EAAE,EAAE;QACN,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;YAC/B,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC;YACtB,IAAI,KAAK,GAAG,kBAAkB,EAAE,CAAC;gBAC/B,GAAG,CAAC,OAAO,EAAE,CAAC;gBACd,MAAM,CAAC,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC,CAAC;gBAClE,OAAO;YACT,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC;QACH,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;YACjB,OAAO,CAAC;gBACN,UAAU,EAAE,GAAG,CAAC,UAAU,IAAI,CAAC;gBAC/B,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;aAC9C,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CACF,CAAC;IACF,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IACtC,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC,CAAC,CAAC;IACxF,GAAG,CAAC,GAAG,EAAE,CAAC;AACZ,CAAC,CAAC,CAAC;AA5CQ,QAAA,sBAAsB,0BA4C9B;AAEL,qDAAqD;AACrD,MAAa,uBAAuB;IAKlC,YACE,OAAmE,EACnE,OAAyB;QAEzB,IAAI,CAAC,GAAG,GAAG,sBAAsB,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QACrE,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,mBAAmB,CAAC;QAC1D,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,8BAAsB,CAAC;IACnD,CAAC;IAED,0EAA0E;IAC1E,WAAW;QACT,OAAO,IAAI,CAAC,GAAG,CAAC;IAClB,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,aAAa;QACjB,IAAI,CAAC,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC;QAC3B,IAAI,MAA4C,CAAC;QACjD,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACxD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,MAAM,CAAC,UAAU,GAAG,GAAG,IAAI,MAAM,CAAC,UAAU,IAAI,GAAG;YAAE,OAAO,IAAI,CAAC;QACrE,OAAO,oBAAoB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;CACF;AAnCD,0DAmCC;AAeD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,SAAgB,mBAAmB,CAAC,QAA2B;IAC7D,OAAO,QAAQ,CAAC,QAAQ,KAAK,CAAC,IAAI,QAAQ,CAAC,QAAQ,KAAK,CAAC,CAAC;AAC5D,CAAC;AAED;;;;;GAKG;AACH,SAAgB,UAAU,CACxB,MAAyF;IAEzF,OAAO;QACL,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAE,MAAO,CAAC,QAAmB,CAAC,CAAC,CAAC,CAAC;QAC9E,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,eAAe,EAAE,QAAQ,CAAC;YAC1D,CAAC,CAAE,MAAO,CAAC,eAAgB,CAAC,QAAmB;YAC/C,CAAC,CAAC,CAAC;KACN,CAAC;AACJ,CAAC;AAED,oDAAoD;AACpD,SAAgB,oBAAoB,CAClC,QAAkC,EAClC,KAAa,EACb,WAAmB,2CAAmC;IAEtD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IACnD,IAAI,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC;QAAE,OAAO,KAAK,CAAC;IAC1C,0EAA0E;IAC1E,yEAAyE;IACzE,OAAO,KAAK,GAAG,SAAS,IAAI,QAAQ,CAAC;AACvC,CAAC;AAaD;;;;;;GAMG;AACI,KAAK,UAAU,uBAAuB,CAC3C,gBAAwB,EACxB,MAA+B;IAE/B,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,aAAa,EAAE,CAAC;IAC9C,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC9F,CAAC;IACD,MAAM,KAAK,GAAG,uBAAuB,CAAC,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;IACnF,OAAO;QACL,gBAAgB;QAChB,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB;QAC3C,gBAAgB,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI;QAC1D,QAAQ;KACT,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;GAaG;AACU,QAAA,iCAAiC,GAAG,CAAC,CAAC;AAEnD,yFAAyF;AAC5E,QAAA,iCAAiC,GAAG,KAAM,CAAC;AAExD;;;;;GAKG;AACU,QAAA,kCAAkC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAEjE;;;;;;;;;;;GAWG;AACU,QAAA,uCAAuC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAgD1E;;;;;;;;GAQG;AACH,SAAgB,2BAA2B,CACzC,IAAgC;IAEhC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,uBAAuB,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IACvF,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;QAAE,OAAO,IAAI,CAAC;IAEvC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACnC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAC3C,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,6CAAqB,CAAC;IAChE,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,UAAU,CAAC;IACrD,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,IAAI,YAAY,CAAC;IAC3D,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,IAAI,WAAW,CAAC;IACxD,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,IAAI,aAAa,CAAC;IAC9D,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC;IACrC,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,CAAC,GAAS,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACtE,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,IAAI,yCAAiC,CAAC;IAChF,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,IAAI,0CAAkC,CAAC;IACnF,MAAM,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,IAAI,+CAAuC,CAAC;IAEhG,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,KAAK,GAAe,MAAM,CAAC;IAC/B,IAAI,MAAM,GAAoC,IAAI,CAAC;IACnD,IAAI,cAAc,GAAG,CAAC,CAAC;IACvB,IAAI,SAAS,GAA0C,IAAI,CAAC;IAC5D,IAAI,UAAU,GAA0C,IAAI,CAAC;IAC7D,IAAI,YAAY,GAAyC,IAAI,CAAC;IAE9D,MAAM,KAAK,GAAG,CAAC,CAAU,EAAQ,EAAE;QACjC,IAAI,CAAC,IAAI,OAAQ,CAA4B,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;YAClE,CAA2B,CAAC,KAAK,EAAE,CAAC;QACvC,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,QAAQ,GAAG,GAAS,EAAE;QAC1B,KAAK,GAAG,MAAM,CAAC;QACf,MAAM,GAAG,IAAI,CAAC;QACd,IAAI,SAAS,EAAE,CAAC;YACd,eAAe,CAAC,SAAS,CAAC,CAAC;YAC3B,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC;IACH,CAAC,CAAC;IAEF;;;;;OAKG;IACH,MAAM,MAAM,GAAG,KAAK,EAAE,KAA2B,EAAiB,EAAE;QAClE,MAAM,OAAO,GAAG,OAAO,EAAE,WAAW,EAAE,IAAI,IAAI,CAAC;QAC/C,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC;YAChC,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,MAAM,EAAE;gBACN,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;gBACvC,sEAAsE;gBACtE,wEAAwE;gBACxE,uEAAuE;gBACvE,mEAAmE;gBACnE,mBAAmB;gBACnB,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACvE,aAAa,EAAE,OAAO;aACvB;YACD,GAAG;SACJ,CAAC,CAAC;QACH,oEAAoE;QACpE,4EAA4E;QAC5E,2EAA2E;QAC3E,yEAAyE;QACzE,cAAc;QACd,IAAI,OAAO,IAAI,MAAM,CAAC,SAAS,GAAG,CAAC,IAAI,MAAM,CAAC,QAAQ,KAAK,MAAM,CAAC,SAAS,EAAE,CAAC;YAC5E,OAAO,EAAE,YAAY,EAAE,CAAC;QAC1B,CAAC;IACH,CAAC,CAAC;IAEF,gFAAgF;IAChF,MAAM,SAAS,GAAG,GAAS,EAAE;QAC3B,IAAI,OAAO,IAAI,KAAK,KAAK,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO;YAAE,OAAO;QAC/D,MAAM,OAAO,GAAG,GAAG,EAAE,GAAG,cAAc,CAAC;QAEvC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,IAAI,OAAO,CAAC,aAAa,EAAE,KAAK,MAAM,CAAC,gBAAgB,EAAE,CAAC;gBACxD,GAAG,CAAC,YAAY,MAAM,CAAC,gBAAgB,oDAAoD,CAAC,CAAC;gBAC7F,KAAK,GAAG,qBAAqB,CAAC;gBAC9B,cAAc,GAAG,GAAG,EAAE,CAAC;gBACvB,OAAO;YACT,CAAC;YACD,IAAI,OAAO,IAAI,eAAe,EAAE,CAAC;gBAC/B,GAAG,CAAC,wEAAwE,CAAC,CAAC;gBAC9E,QAAQ,EAAE,CAAC;YACb,CAAC;YACD,OAAO;QACT,CAAC;QAED,sBAAsB;QACtB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;QAChF,MAAM,IAAI,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QAC3C,MAAM,OAAO,GAAG,OAAO,IAAI,mBAAmB,CAAC;QAC/C,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO;QAC9B,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,GAAG,CACD,6BAA6B,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,yBAAyB;gBAC/E,aAAa,QAAQ,CAAC,QAAQ,qBAAqB,QAAQ,CAAC,QAAQ,GAAG,CAC1E,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,uCAAuC,CAAC,CAAC;QAC/C,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,CAAC,gBAAgB,CAAC;QACxC,QAAQ,EAAE,CAAC;QACX,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,EAAE,CAAC;YACxE,GAAG,CAAC,wEAAwE,CAAC,CAAC;YAC9E,OAAO;QACT,CAAC;QACD,6EAA6E;QAC7E,uDAAuD;QACvD,WAAW,EAAE,CAAC;IAChB,CAAC,CAAC;IAEF,MAAM,UAAU,GAAG,CAAC,QAAkC,EAAQ,EAAE;QAC9D,IAAI,CAAC,OAAO;YAAE,OAAO;QACrB,yEAAyE;QACzE,wEAAwE;QACxE,uEAAuE;QACvE,yEAAyE;QACzE,oEAAoE;QACpE,4EAA4E;QAC5E,oEAAoE;QACpE,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,EAAE,KAAK,QAAQ,CAAC,gBAAgB,CAAC;QAC5E,IAAI,CAAC,aAAa,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,cAAc,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,EAAE,CAAC;YAC1F,GAAG,CAAC,wEAAwE,CAAC,CAAC;YAC9E,OAAO;QACT,CAAC;QACD,GAAG,CACD,aAAa;YACX,CAAC,CAAC,YAAY,QAAQ,CAAC,gBAAgB,+CAA+C;YACtF,CAAC,CAAC,oBAAoB,QAAQ,CAAC,gBAAgB,EAAE,CACpD,CAAC;QACF,KAAK,GAAG,aAAa,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1D,MAAM,GAAG,QAAQ,CAAC;QAClB,cAAc,GAAG,GAAG,EAAE,CAAC;QACvB,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,SAAS,GAAG,aAAa,CAAC,GAAG,EAAE;gBAC7B,IAAI,CAAC;oBACH,SAAS,EAAE,CAAC;gBACd,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,GAAG,CAAC,2CAA2C,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAChE,CAAC;YACH,CAAC,EAAE,cAAc,CAAC,CAAC;YACnB,KAAK,CAAC,SAAS,CAAC,CAAC;QACnB,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,QAAQ,GAAG,KAAK,IAAmB,EAAE;QACzC,IAAI,OAAO;YAAE,OAAO;QACpB,MAAM,KAAK,GAAG,MAAM,uBAAuB,CAAC,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;QAC3E,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YACpB,GAAG,CAAC,4EAA4E,CAAC,CAAC;QACpF,CAAC;aAAM,IAAI,KAAK,CAAC,gBAAgB,EAAE,CAAC;YAClC,GAAG,CAAC,sBAAsB,KAAK,CAAC,gBAAgB,wBAAwB,KAAK,CAAC,gBAAgB,EAAE,CAAC,CAAC;QACpG,CAAC;QACD,MAAM,MAAM,CAAC,KAAK,CAAC,CAAC;QAEpB,IAAI,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,gBAAgB;YAAE,OAAO;QACnE,IAAI,KAAK,KAAK,MAAM;YAAE,OAAO;QAC7B,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;YACtC,GAAG,CAAC,kFAAkF,CAAC,CAAC;YACxF,OAAO;QACT,CAAC;QACD,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;YACvE,GAAG,CAAC,YAAY,KAAK,CAAC,gBAAgB,uDAAuD,CAAC,CAAC;YAC/F,OAAO;QACT,CAAC;QACD,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC7B,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,GAAS,EAAE;QAC9B,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,sCAAsC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IACtF,CAAC,CAAC;IAEF,YAAY,GAAG,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC,cAAc,IAAI,yCAAiC,CAAC,CAAC;IACpG,KAAK,CAAC,YAAY,CAAC,CAAC;IACpB,UAAU,GAAG,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,IAAI,0CAAkC,CAAC,CAAC;IAChG,KAAK,CAAC,UAAU,CAAC,CAAC;IAElB,OAAO;QACL,IAAI;YACF,IAAI,OAAO;gBAAE,OAAO;YACpB,OAAO,GAAG,IAAI,CAAC;YACf,IAAI,CAAC;gBACH,IAAI,YAAY;oBAAE,cAAc,CAAC,YAAY,CAAC,CAAC;gBAC/C,IAAI,UAAU;oBAAE,eAAe,CAAC,UAAU,CAAC,CAAC;gBAC5C,IAAI,SAAS;oBAAE,eAAe,CAAC,SAAS,CAAC,CAAC;YAC5C,CAAC;YAAC,MAAM,CAAC;gBACP,iBAAiB;YACnB,CAAC;YACD,YAAY,GAAG,IAAI,CAAC;YACpB,UAAU,GAAG,IAAI,CAAC;YAClB,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,qBAAqB,CAAC,MAGrC;IACC,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;QAC1C,IAAI,MAAM,EAAE,WAAW;YAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAC3D,CAAC;IACD,IAAI,MAAM,CAAC,WAAW;QAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IACxD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AACrC,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,SAAgB,qBAAqB,CAAC,IAWrC;IACC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC;IACnD,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;IAC1C,MAAM,YAAY,GAAG,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACxD,IAAI,CAAC,UAAU,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAE1D,IAAI,OAAO,GAAkC,IAAI,CAAC;IAClD,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,2EAA2E;YAC3E,4BAA4B;YAC5B,8DAA8D;YAC9D,MAAM,GAAG,GAAG,OAAO,CAAC,wBAAwB,CAA4C,CAAC;YACzF,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,6BAA6B,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;YAC3E,OAAO,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;QACvD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;IACH,CAAC;SAAM,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACjC,IAAI,CAAC;YACH,+DAA+D;YAC/D,8DAA8D;YAC9D,MAAM,GAAG,GAAG,OAAO,CAAC,2BAA2B,CAA+C,CAAC;YAC/F,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,yBAAyB,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;YACvE,OAAO,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;QACvD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;IACH,CAAC;IAED,IAAI,CAAC;QACH,OAAO,2BAA2B,CAAC;YACjC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,QAAQ;YACR,UAAU;YACV,YAAY;YACZ,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,OAAO;YACP,GAAG,EAAE,IAAI,CAAC,GAAG;SACd,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,6EAA6E;QAC7E,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"connectorUpdate.js","sourceRoot":"","sources":["../src/connectorUpdate.ts"],"names":[],"mappings":"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"}
@@ -31,7 +31,7 @@ export interface DiagnosticReport {
31
31
  skipped: number;
32
32
  };
33
33
  }
34
- declare const SDK_VERSION = "0.2.66";
34
+ declare const SDK_VERSION = "0.2.68";
35
35
  declare function checkNodeVersion(): CheckResult;
36
36
  declare function checkPlatform(): CheckResult;
37
37
  declare function checkMemory(): CheckResult;
package/dist/diagnose.js CHANGED
@@ -63,7 +63,7 @@ const localNetworkAccess_1 = require("./localNetworkAccess");
63
63
  // ---------------------------------------------------------------------------
64
64
  // SDK version — mirrors package.json; kept in sync by CI
65
65
  // ---------------------------------------------------------------------------
66
- const SDK_VERSION = '0.2.66';
66
+ const SDK_VERSION = '0.2.68';
67
67
  exports._SDK_VERSION = SDK_VERSION;
68
68
  // ---------------------------------------------------------------------------
69
69
  // ANSI helpers (no external deps)
@@ -0,0 +1,115 @@
1
+ /**
2
+ * hostSpecs — what MACHINE this connector is running on.
3
+ *
4
+ * ── Why ─────────────────────────────────────────────────────────────────────
5
+ *
6
+ * The CCTV connector is LOCAL-INFERENCE ONLY, so the box spec IS the product
7
+ * spec: `docs/runbooks/cctv-local-inference-hardware-floor.md` resolves a
8
+ * hardware floor of 13.88 s/frame for 4 cameras, and which machines clear it is
9
+ * the whole sales question. Measured 2026-08-20, `earner_screen_devices` knew
10
+ * the SOFTWARE version of 38 of 38 live connectors and the HARDWARE of 0 —
11
+ * every one of `device_memory_gb`, `cpu_cores`, `cpu_abi`, `soc_name`, `os` was
12
+ * NULL on every connector row, because nothing on this side ever sent them.
13
+ *
14
+ * That is the `docs/runbooks/telemetry-producer-substrate.md` shape exactly: the
15
+ * consumer (typed columns, populated for the DOOH tablet fleet) existed the
16
+ * whole time and no producer reached it. So this is a producer, and it rides the
17
+ * beacon that already works (`ConnectorStatusClient` → `POST
18
+ * /v2/earner/cameras/connector-status`) rather than being a second one.
19
+ *
20
+ * ── Two rules that decide every field below ─────────────────────────────────
21
+ *
22
+ * 1. **NULL, never 0.** A `0` core count scores perfectly on any fill-rate
23
+ * monitor and is indistinguishable from a measurement. The audio stack's own
24
+ * sentinel reads `-1` on 100% of rows for precisely this reason
25
+ * (`docs/runbooks/audio-sensing-substrate.md`), and every coverage check on
26
+ * it passes. `os.cpus()` returns `[]` inside some containers and on some
27
+ * hardened Windows hosts; that is "we could not tell", and it must be
28
+ * representable as such.
29
+ *
30
+ * 2. **A probe that fails must SAY so.** `probeError` is the difference between
31
+ * a connector that could not read its own specs and a connector that has not
32
+ * reported yet — the second is `device_specs_updated_at IS NULL`, the first
33
+ * is a stamped row with a reason on it. The connector's recurring defect is a
34
+ * signal that cannot report its own failure
35
+ * (`docs/runbooks/cctv-connector-runtime-edge-cases.md`); this must not add
36
+ * another.
37
+ *
38
+ * ── What is deliberately NOT collected ──────────────────────────────────────
39
+ *
40
+ * Hostname, username, install paths, network topology, camera URLs, IPs, MAC
41
+ * addresses, serial numbers. Every field here is a property of the CHIP or the
42
+ * OS BUILD — the same class of fact the DOOH tablet fleet already reports —
43
+ * and none of it identifies a person, a site or a network. `os.hostname()` and
44
+ * `os.networkInterfaces()` are never read by this module.
45
+ */
46
+ /** One machine's hardware, as that machine sees itself. Any field may be null. */
47
+ export interface ConnectorHostSpecs {
48
+ /** `process.platform` verbatim: 'win32' | 'darwin' | 'linux'. Never null. */
49
+ platform: string;
50
+ /**
51
+ * `process.arch` verbatim: 'x64' | 'arm64'. Never null.
52
+ *
53
+ * This one field settles the open question in the hardware-floor runbook —
54
+ * "x86 is UNMEASURED on the shipped path" — because it is the only thing
55
+ * separating an Apple-Silicon desk from the cheap mini-PC we would actually
56
+ * sell, and a CI runner cannot answer it for the field.
57
+ */
58
+ arch: string;
59
+ /** `os.release()` — the kernel/OS build string. Null if it came back empty. */
60
+ osRelease: string | null;
61
+ /** e.g. 'Apple M4 Max', 'Intel(R) N100', 'AMD Ryzen 5 5600G'. */
62
+ cpuModel: string | null;
63
+ /** Logical CPUs (`os.cpus().length`). Null when the list is empty. */
64
+ cpuCoresLogical: number | null;
65
+ /**
66
+ * PHYSICAL cores, which is the number inference tracks. Null whenever the
67
+ * per-platform probe did not produce a usable answer — an 8-logical/4-physical
68
+ * box reported as 8 is the "looks like a measurement" failure rule 1 forbids.
69
+ */
70
+ cpuCoresPhysical: number | null;
71
+ /** `os.totalmem()` in GiB, 2dp. Null when it reported nothing usable. */
72
+ totalMemoryGb: number | null;
73
+ /**
74
+ * Why a field above is null, when we know. Null means every probe answered.
75
+ * Carries no paths, no host names and no command output beyond an error
76
+ * message we generate ourselves.
77
+ */
78
+ probeError: string | null;
79
+ }
80
+ /** Injectable seams, so the probes are testable without the host they describe. */
81
+ export interface HostSpecsProbeDeps {
82
+ platform?: string;
83
+ arch?: string;
84
+ release?: () => string;
85
+ cpus?: () => Array<{
86
+ model?: string;
87
+ }>;
88
+ totalmem?: () => number;
89
+ /** Runs a bounded, non-interactive command. Throws on failure. */
90
+ run?: (file: string, args: string[]) => string;
91
+ /** Reads a text file. Throws when absent. */
92
+ readTextFile?: (path: string) => string;
93
+ }
94
+ /**
95
+ * How long a physical-core probe may take before it is abandoned.
96
+ *
97
+ * Small on purpose. This runs once per process on a box whose entire job is to
98
+ * keep looking at cameras; a spec probe that blocks the start of sensing has
99
+ * inverted the priority. A timeout is not a failure of the connector, it is a
100
+ * `null` core count and a `probeError` saying so.
101
+ */
102
+ export declare const HOST_SPEC_PROBE_TIMEOUT_MS = 4000;
103
+ /**
104
+ * Read this host's specs. Pure with respect to `deps`, so a test can describe
105
+ * any machine — including a broken one — without being on it.
106
+ *
107
+ * NEVER throws. A connector whose spec probe threw would stop reporting its
108
+ * VERSION too, and the fleet view we do have is worth more than the one we are
109
+ * adding.
110
+ */
111
+ export declare function readConnectorHostSpecs(deps?: HostSpecsProbeDeps): ConnectorHostSpecs;
112
+ export declare function connectorHostSpecs(deps?: HostSpecsProbeDeps): ConnectorHostSpecs;
113
+ /** Drop the memoised reading (tests only). */
114
+ export declare function resetConnectorHostSpecsCache(): void;
115
+ //# sourceMappingURL=hostSpecs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hostSpecs.d.ts","sourceRoot":"","sources":["../src/hostSpecs.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AAEH,kFAAkF;AAClF,MAAM,WAAW,kBAAkB;IACjC,6EAA6E;IAC7E,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;;;;OAOG;IACH,IAAI,EAAE,MAAM,CAAC;IACb,+EAA+E;IAC/E,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,iEAAiE;IACjE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,sEAAsE;IACtE,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B;;;;OAIG;IACH,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,yEAAyE;IACzE,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B;;;;OAIG;IACH,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,mFAAmF;AACnF,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,KAAK,CAAC;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACvC,QAAQ,CAAC,EAAE,MAAM,MAAM,CAAC;IACxB,kEAAkE;IAClE,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,MAAM,CAAC;IAC/C,6CAA6C;IAC7C,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;CACzC;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,0BAA0B,OAAQ,CAAC;AAmHhD;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,GAAE,kBAAuB,GAAG,kBAAkB,CA0ExF;AAYD,wBAAgB,kBAAkB,CAAC,IAAI,CAAC,EAAE,kBAAkB,GAAG,kBAAkB,CAIhF;AAED,8CAA8C;AAC9C,wBAAgB,4BAA4B,IAAI,IAAI,CAEnD"}
@@ -0,0 +1,264 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.HOST_SPEC_PROBE_TIMEOUT_MS = void 0;
37
+ exports.readConnectorHostSpecs = readConnectorHostSpecs;
38
+ exports.connectorHostSpecs = connectorHostSpecs;
39
+ exports.resetConnectorHostSpecsCache = resetConnectorHostSpecsCache;
40
+ const child_process_1 = require("child_process");
41
+ const fs_1 = require("fs");
42
+ const os = __importStar(require("os"));
43
+ /**
44
+ * How long a physical-core probe may take before it is abandoned.
45
+ *
46
+ * Small on purpose. This runs once per process on a box whose entire job is to
47
+ * keep looking at cameras; a spec probe that blocks the start of sensing has
48
+ * inverted the priority. A timeout is not a failure of the connector, it is a
49
+ * `null` core count and a `probeError` saying so.
50
+ */
51
+ exports.HOST_SPEC_PROBE_TIMEOUT_MS = 4000;
52
+ /** Bytes in a GiB. `os.totalmem()` is bytes; `device_memory_gb` is GB. */
53
+ const BYTES_PER_GB = 1024 * 1024 * 1024;
54
+ /**
55
+ * A CPU model string long enough to be something other than a model string.
56
+ * Bounded because it lands in a TEXT column that a human reads in a fleet table.
57
+ */
58
+ const MAX_CPU_MODEL_LEN = 128;
59
+ /** Nothing above this is a core count; it is a parse that went wrong. */
60
+ const MAX_PLAUSIBLE_CORES = 1024;
61
+ function defaultRun(file, args) {
62
+ return (0, child_process_1.execFileSync)(file, args, {
63
+ timeout: exports.HOST_SPEC_PROBE_TIMEOUT_MS,
64
+ encoding: 'utf8',
65
+ // Never surface a console window on a Windows store PC.
66
+ windowsHide: true,
67
+ stdio: ['ignore', 'pipe', 'ignore'],
68
+ });
69
+ }
70
+ /**
71
+ * Parse a count out of a probe's stdout.
72
+ *
73
+ * Rejects 0 explicitly rather than letting it through as a number: zero
74
+ * physical cores is not a machine, it is a probe that answered with something
75
+ * we did not understand, and rule 1 says that must be `null`.
76
+ */
77
+ function parseCount(raw) {
78
+ if (typeof raw !== 'string')
79
+ return null;
80
+ const match = raw.trim().match(/\d+/);
81
+ if (!match)
82
+ return null;
83
+ const n = Number.parseInt(match[0], 10);
84
+ if (!Number.isFinite(n) || n <= 0 || n > MAX_PLAUSIBLE_CORES)
85
+ return null;
86
+ return n;
87
+ }
88
+ /**
89
+ * Physical cores on Linux, from `/proc/cpuinfo`.
90
+ *
91
+ * Counts DISTINCT `physical id`:`core id` pairs — the only way to see through
92
+ * hyperthreading, since `os.cpus().length` counts threads. Many ARM SoCs emit
93
+ * neither key, and there the honest answer is `null`: an ARM board that reports
94
+ * no topology is not a board with zero cores, and it is not one where logical
95
+ * happens to equal physical either — we simply do not know.
96
+ */
97
+ function linuxPhysicalCores(readTextFile) {
98
+ const text = readTextFile('/proc/cpuinfo');
99
+ const pairs = new Set();
100
+ let physicalId = null;
101
+ let coreId = null;
102
+ for (const line of text.split('\n')) {
103
+ const idx = line.indexOf(':');
104
+ if (idx < 0) {
105
+ // A blank line ends one processor block.
106
+ physicalId = null;
107
+ coreId = null;
108
+ continue;
109
+ }
110
+ const key = line.slice(0, idx).trim();
111
+ const value = line.slice(idx + 1).trim();
112
+ if (key === 'physical id')
113
+ physicalId = value;
114
+ else if (key === 'core id')
115
+ coreId = value;
116
+ if (physicalId !== null && coreId !== null) {
117
+ pairs.add(`${physicalId}:${coreId}`);
118
+ physicalId = null;
119
+ coreId = null;
120
+ }
121
+ }
122
+ return pairs.size > 0 && pairs.size <= MAX_PLAUSIBLE_CORES ? pairs.size : null;
123
+ }
124
+ /**
125
+ * Physical cores, per platform. Returns `{ cores, error }` so a failure is
126
+ * carried out rather than swallowed — the whole point of `probeError`.
127
+ *
128
+ * On Windows this shells out to PowerShell, which is what `enterpriseTrust.ts`
129
+ * already does for the certificate store: `powershell -Command` is the form a
130
+ * GPO `AllSigned` execution policy cannot block, because there is no script
131
+ * file to sign. `-NoProfile -NonInteractive` so a store PC's login profile can
132
+ * neither slow it down nor prompt.
133
+ */
134
+ function probePhysicalCores(deps) {
135
+ try {
136
+ if (deps.platform === 'darwin') {
137
+ return { cores: parseCount(deps.run('sysctl', ['-n', 'hw.physicalcpu'])), error: null };
138
+ }
139
+ if (deps.platform === 'linux') {
140
+ return { cores: linuxPhysicalCores(deps.readTextFile), error: null };
141
+ }
142
+ if (deps.platform === 'win32') {
143
+ const out = deps.run('powershell', [
144
+ '-NoProfile',
145
+ '-NonInteractive',
146
+ '-Command',
147
+ '(Get-CimInstance -ClassName Win32_Processor | Measure-Object -Property NumberOfCores -Sum).Sum',
148
+ ]);
149
+ return { cores: parseCount(out), error: null };
150
+ }
151
+ return { cores: null, error: `no physical-core probe for platform ${deps.platform}` };
152
+ }
153
+ catch (err) {
154
+ return {
155
+ cores: null,
156
+ error: `physical-core probe failed: ${err instanceof Error ? err.message : String(err)}`,
157
+ };
158
+ }
159
+ }
160
+ /**
161
+ * Read this host's specs. Pure with respect to `deps`, so a test can describe
162
+ * any machine — including a broken one — without being on it.
163
+ *
164
+ * NEVER throws. A connector whose spec probe threw would stop reporting its
165
+ * VERSION too, and the fleet view we do have is worth more than the one we are
166
+ * adding.
167
+ */
168
+ function readConnectorHostSpecs(deps = {}) {
169
+ const platform = deps.platform ?? process.platform;
170
+ const arch = deps.arch ?? process.arch;
171
+ const release = deps.release ?? (() => os.release());
172
+ const cpus = deps.cpus ?? (() => os.cpus());
173
+ const totalmem = deps.totalmem ?? (() => os.totalmem());
174
+ const run = deps.run ?? defaultRun;
175
+ const readTextFile = deps.readTextFile ?? ((p) => (0, fs_1.readFileSync)(p, 'utf8'));
176
+ const problems = [];
177
+ let osRelease = null;
178
+ try {
179
+ const raw = release();
180
+ osRelease = typeof raw === 'string' && raw.trim() ? raw.trim().slice(0, MAX_CPU_MODEL_LEN) : null;
181
+ }
182
+ catch (err) {
183
+ problems.push(`os.release() failed: ${err instanceof Error ? err.message : String(err)}`);
184
+ }
185
+ if (osRelease === null && problems.length === 0)
186
+ problems.push('os.release() returned nothing');
187
+ let cpuModel = null;
188
+ let cpuCoresLogical = null;
189
+ try {
190
+ const list = cpus();
191
+ if (Array.isArray(list) && list.length > 0) {
192
+ cpuCoresLogical = list.length <= MAX_PLAUSIBLE_CORES ? list.length : null;
193
+ const model = typeof list[0]?.model === 'string' ? list[0].model.trim() : '';
194
+ // Collapse the run of spaces Intel pads its brand strings with, so
195
+ // 'Intel(R) Core(TM) i5' and 'Intel(R) Core(TM) i5' are ONE group in a
196
+ // fleet table instead of two.
197
+ cpuModel = model ? model.replace(/\s+/g, ' ').slice(0, MAX_CPU_MODEL_LEN) : null;
198
+ if (!cpuModel)
199
+ problems.push('os.cpus() reported no CPU model string');
200
+ }
201
+ else {
202
+ // Real, and the reason rule 1 exists: `[]` here would become `0` cores
203
+ // under any `list.length` that is not guarded.
204
+ problems.push('os.cpus() returned an empty list');
205
+ }
206
+ }
207
+ catch (err) {
208
+ problems.push(`os.cpus() failed: ${err instanceof Error ? err.message : String(err)}`);
209
+ }
210
+ let totalMemoryGb = null;
211
+ try {
212
+ const bytes = totalmem();
213
+ if (Number.isFinite(bytes) && bytes > 0) {
214
+ totalMemoryGb = Math.round((bytes / BYTES_PER_GB) * 100) / 100;
215
+ }
216
+ else {
217
+ problems.push('os.totalmem() returned no usable value');
218
+ }
219
+ }
220
+ catch (err) {
221
+ problems.push(`os.totalmem() failed: ${err instanceof Error ? err.message : String(err)}`);
222
+ }
223
+ const physical = probePhysicalCores({ platform, run, readTextFile });
224
+ if (physical.error)
225
+ problems.push(physical.error);
226
+ else if (physical.cores === null) {
227
+ // The probe RAN and produced nothing usable — an ARM `/proc/cpuinfo` with no
228
+ // topology keys, or output we could not parse. Distinct from a throw, and
229
+ // still a reason the column is null.
230
+ problems.push('physical-core probe produced no usable count');
231
+ }
232
+ return {
233
+ platform,
234
+ arch,
235
+ osRelease,
236
+ cpuModel,
237
+ cpuCoresLogical,
238
+ cpuCoresPhysical: physical.cores,
239
+ totalMemoryGb,
240
+ // Joined rather than kept as a list: the column is one TEXT field a human
241
+ // reads, and every entry is a sentence we wrote.
242
+ probeError: problems.length ? problems.join('; ').slice(0, 500) : null,
243
+ };
244
+ }
245
+ /**
246
+ * The process-wide reading, probed at most once.
247
+ *
248
+ * Hardware does not change under a running process, and the Windows arm spawns
249
+ * PowerShell — doing that on every hourly report would be a recurring cost for
250
+ * an answer that cannot have changed. Exposed with a reset seam so tests do not
251
+ * inherit each other's machine.
252
+ */
253
+ let cached = null;
254
+ function connectorHostSpecs(deps) {
255
+ if (cached)
256
+ return cached;
257
+ cached = readConnectorHostSpecs(deps);
258
+ return cached;
259
+ }
260
+ /** Drop the memoised reading (tests only). */
261
+ function resetConnectorHostSpecsCache() {
262
+ cached = null;
263
+ }
264
+ //# sourceMappingURL=hostSpecs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hostSpecs.js","sourceRoot":"","sources":["../src/hostSpecs.ts"],"names":[],"mappings":"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"}