@calltelemetry/cli 0.12.9 → 0.12.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/README.md +10 -0
  2. package/dist/commands/channels.d.ts +3 -0
  3. package/dist/commands/channels.d.ts.map +1 -0
  4. package/dist/commands/channels.js +21 -0
  5. package/dist/commands/channels.js.map +1 -0
  6. package/dist/commands/truespam.d.ts.map +1 -1
  7. package/dist/commands/truespam.js +86 -1
  8. package/dist/commands/truespam.js.map +1 -1
  9. package/dist/commands/update.d.ts.map +1 -1
  10. package/dist/commands/update.js +38 -2
  11. package/dist/commands/update.js.map +1 -1
  12. package/dist/index.js +2 -0
  13. package/dist/index.js.map +1 -1
  14. package/dist/lib/bundle.d.ts +3 -4
  15. package/dist/lib/bundle.d.ts.map +1 -1
  16. package/dist/lib/bundle.js +20 -8
  17. package/dist/lib/bundle.js.map +1 -1
  18. package/dist/lib/channels.d.ts +22 -0
  19. package/dist/lib/channels.d.ts.map +1 -0
  20. package/dist/lib/channels.js +95 -0
  21. package/dist/lib/channels.js.map +1 -0
  22. package/dist/lib/migration-017-default-on-storage.d.ts +12 -0
  23. package/dist/lib/migration-017-default-on-storage.d.ts.map +1 -0
  24. package/dist/lib/migration-017-default-on-storage.js +33 -0
  25. package/dist/lib/migration-017-default-on-storage.js.map +1 -0
  26. package/dist/lib/migrations.d.ts.map +1 -1
  27. package/dist/lib/migrations.js +6 -0
  28. package/dist/lib/migrations.js.map +1 -1
  29. package/dist/lib/oom-restart-observability.d.ts +68 -0
  30. package/dist/lib/oom-restart-observability.d.ts.map +1 -0
  31. package/dist/lib/oom-restart-observability.js +427 -0
  32. package/dist/lib/oom-restart-observability.js.map +1 -0
  33. package/dist/lib/prefs.d.ts +8 -6
  34. package/dist/lib/prefs.d.ts.map +1 -1
  35. package/dist/lib/prefs.js +0 -0
  36. package/dist/lib/prefs.js.map +1 -1
  37. package/dist/lib/showtech-steps.d.ts.map +1 -1
  38. package/dist/lib/showtech-steps.js +29 -0
  39. package/dist/lib/showtech-steps.js.map +1 -1
  40. package/dist/lib/storage.d.ts.map +1 -1
  41. package/dist/lib/storage.js +11 -0
  42. package/dist/lib/storage.js.map +1 -1
  43. package/dist/lib/truespam-rescore.d.ts +27 -0
  44. package/dist/lib/truespam-rescore.d.ts.map +1 -0
  45. package/dist/lib/truespam-rescore.js +91 -0
  46. package/dist/lib/truespam-rescore.js.map +1 -0
  47. package/dist/lib/update-steps.d.ts.map +1 -1
  48. package/dist/lib/update-steps.js +101 -15
  49. package/dist/lib/update-steps.js.map +1 -1
  50. package/dist/lib/update.d.ts +11 -1
  51. package/dist/lib/update.d.ts.map +1 -1
  52. package/dist/lib/update.js +52 -6
  53. package/dist/lib/update.js.map +1 -1
  54. package/dist/lib/version.d.ts +1 -1
  55. package/dist/lib/version.d.ts.map +1 -1
  56. package/dist/lib/version.js +1 -1
  57. package/dist/lib/version.js.map +1 -1
  58. package/dist/shell/network-onboarding.d.ts.map +1 -1
  59. package/dist/shell/network-onboarding.js +3 -0
  60. package/dist/shell/network-onboarding.js.map +1 -1
  61. package/dist/ui/views/SetupWizardView.d.ts.map +1 -1
  62. package/dist/ui/views/SetupWizardView.js +1 -0
  63. package/dist/ui/views/SetupWizardView.js.map +1 -1
  64. package/dist/ui/views/UpdateView.d.ts.map +1 -1
  65. package/dist/ui/views/UpdateView.js +48 -6
  66. package/dist/ui/views/UpdateView.js.map +1 -1
  67. package/package.json +1 -1
@@ -0,0 +1,95 @@
1
+ /**
2
+ * Release channel listing from appliance-catalog.json.
3
+ * Supports mainline channels (stable, beta, …) and variant channels (i18n-preview).
4
+ */
5
+ import { fetchReleaseArtifact, ExecError } from './exec.js';
6
+ import { getPaths } from './paths.js';
7
+ const ORDER = {
8
+ stable: 0,
9
+ beta: 1,
10
+ legacy: 2,
11
+ rc: 3,
12
+ dev: 4,
13
+ };
14
+ /** Channel name grammar shared with promote-release / train-resolver / cli.sh. */
15
+ export const CHANNEL_NAME_RE = /^[a-z][a-z0-9-]*$/;
16
+ export function isValidChannelName(name) {
17
+ return CHANNEL_NAME_RE.test(name);
18
+ }
19
+ export async function fetchCatalogChannels() {
20
+ const result = await fetchReleaseArtifact('appliance-catalog.json', ['-sfL'], {
21
+ retries: 2,
22
+ retryDelay: 2000,
23
+ });
24
+ const raw = String(result.stdout ?? '');
25
+ const data = JSON.parse(raw);
26
+ return data.channels ?? [];
27
+ }
28
+ export function sortChannels(channels) {
29
+ return [...channels].sort((a, b) => {
30
+ const ia = ORDER[a.name] ?? 50;
31
+ const ib = ORDER[b.name] ?? 50;
32
+ if (ia !== ib)
33
+ return ia - ib;
34
+ return a.name.localeCompare(b.name);
35
+ });
36
+ }
37
+ export function formatChannelList(channels, customerOnly = true) {
38
+ const rows = sortChannels(customerOnly ? channels.filter((c) => c.customer_visible) : channels);
39
+ if (!rows.length) {
40
+ return 'No channels listed in appliance-catalog.json.\n';
41
+ }
42
+ const lines = [
43
+ `${'CHANNEL'.padEnd(16)} ${'TRAIN'.padEnd(10)} ${'KIND'.padEnd(14)} ${'TIP'.padEnd(22)} BUILDS`,
44
+ ];
45
+ for (const c of rows) {
46
+ const kind = c.variant ? `variant/${c.variant}` : 'mainline';
47
+ const tip = c.tip || c.tip_marker || '—';
48
+ const builds = Array.isArray(c.versions) ? c.versions.length : 0;
49
+ lines.push(`${(c.name || '—').padEnd(16)} ${(c.train || '—').padEnd(10)} ${kind.padEnd(14)} ${String(tip).padEnd(22)} ${builds}`);
50
+ }
51
+ lines.push('');
52
+ lines.push('Update: ct update --channel <name> (reads latest-<name>.txt)');
53
+ lines.push('Exact: ct update <version> (e.g. 0.8.7-i18n-rc9)');
54
+ return lines.join('\n') + '\n';
55
+ }
56
+ export function channelNames(channels, customerOnly = true) {
57
+ return sortChannels(customerOnly ? channels.filter((c) => c.customer_visible) : channels).map((c) => c.name);
58
+ }
59
+ export function missingChannelHint(channel, available) {
60
+ const { releaseBaseUrl } = getPaths();
61
+ const lines = [
62
+ `Channel '${channel}' is not available`,
63
+ `Marker not found: ${releaseBaseUrl}/latest-${channel}.txt`,
64
+ 'Either no train/variant owns this channel yet, the tip was not promoted, or it was retired.',
65
+ ];
66
+ if (available.length) {
67
+ lines.push(`Channels in catalog: ${available.join(', ')}`);
68
+ }
69
+ else {
70
+ lines.push('Common channels: stable, beta, i18n-preview, legacy, dev.');
71
+ }
72
+ lines.push('List: ct channels');
73
+ lines.push('Pin a specific version: ct update <version>');
74
+ return lines.join('\n');
75
+ }
76
+ export async function loadChannelNames(customerOnly = true) {
77
+ try {
78
+ const chs = await fetchCatalogChannels();
79
+ return channelNames(chs, customerOnly);
80
+ }
81
+ catch {
82
+ return [];
83
+ }
84
+ }
85
+ /** Wrap fetch errors so callers get catalog-aware hints. */
86
+ export function enhanceChannelError(err, channel, available) {
87
+ if (err instanceof Error && err.message.includes('not available')) {
88
+ return new Error(missingChannelHint(channel, available));
89
+ }
90
+ if (err instanceof ExecError || err instanceof Error) {
91
+ return new Error(missingChannelHint(channel, available));
92
+ }
93
+ return new Error(missingChannelHint(channel, available));
94
+ }
95
+ //# sourceMappingURL=channels.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"channels.js","sourceRoot":"","sources":["../../src/lib/channels.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAatC,MAAM,KAAK,GAA2B;IACpC,MAAM,EAAE,CAAC;IACT,IAAI,EAAE,CAAC;IACP,MAAM,EAAE,CAAC;IACT,EAAE,EAAE,CAAC;IACL,GAAG,EAAE,CAAC;CACP,CAAC;AAEF,kFAAkF;AAClF,MAAM,CAAC,MAAM,eAAe,GAAG,mBAAmB,CAAC;AAEnD,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,OAAO,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB;IACxC,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,wBAAwB,EAAE,CAAC,MAAM,CAAC,EAAE;QAC5E,OAAO,EAAE,CAAC;QACV,UAAU,EAAE,IAAI;KACjB,CAAC,CAAC;IACH,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;IACxC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAoC,CAAC;IAChE,OAAO,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,QAA0B;IACrD,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACjC,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAC/B,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAC/B,IAAI,EAAE,KAAK,EAAE;YAAE,OAAO,EAAE,GAAG,EAAE,CAAC;QAC9B,OAAO,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,QAA0B,EAAE,YAAY,GAAG,IAAI;IAC/E,MAAM,IAAI,GAAG,YAAY,CACvB,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,QAAQ,CACrE,CAAC;IACF,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QACjB,OAAO,iDAAiD,CAAC;IAC3D,CAAC;IACD,MAAM,KAAK,GAAa;QACtB,GAAG,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS;KAChG,CAAC;IACF,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,MAAM,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC;QAC7D,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,UAAU,IAAI,GAAG,CAAC;QACzC,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACjE,KAAK,CAAC,IAAI,CACR,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,MAAM,EAAE,CACtH,CAAC;IACJ,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;IAC7E,KAAK,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC;IAC1E,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,QAA0B,EAAE,YAAY,GAAG,IAAI;IAC1E,OAAO,YAAY,CACjB,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,QAAQ,CACrE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,OAAe,EAAE,SAAmB;IACrE,MAAM,EAAE,cAAc,EAAE,GAAG,QAAQ,EAAE,CAAC;IACtC,MAAM,KAAK,GAAG;QACZ,YAAY,OAAO,oBAAoB;QACvC,qBAAqB,cAAc,WAAW,OAAO,MAAM;QAC3D,6FAA6F;KAC9F,CAAC;IACF,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;QACrB,KAAK,CAAC,IAAI,CAAC,wBAAwB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC7D,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAC;IAC1E,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAChC,KAAK,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;IAC1D,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,YAAY,GAAG,IAAI;IACxD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,oBAAoB,EAAE,CAAC;QACzC,OAAO,YAAY,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;IACzC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,mBAAmB,CAAC,GAAY,EAAE,OAAe,EAAE,SAAmB;IACpF,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;QAClE,OAAO,IAAI,KAAK,CAAC,kBAAkB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;IAC3D,CAAC;IACD,IAAI,GAAG,YAAY,SAAS,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;QACrD,OAAO,IAAI,KAAK,CAAC,kBAAkB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;IAC3D,CAAC;IACD,OAAO,IAAI,KAAK,CAAC,kBAAkB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;AAC3D,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Migration 017: Default-on SeaweedFS storage (API-2241).
3
+ *
4
+ * Older OVAs baked `"storage": false` into ~/.ct/preferences.json and left
5
+ * COMPOSE_PROFILES empty, so seaweedfs never joined calltelemetry_ct while
6
+ * CdrAlertDispatch still tried http://seaweedfs:8333 for alert PDF archival
7
+ * (nxdomain × 10). New installs default storage on; this one-shot enables
8
+ * storage + S3 on upgrade. Operators who want off: `ct storage disable`
9
+ * after the migration has run (it will not re-enable).
10
+ */
11
+ export declare function migrateDefaultOnStorage(): Promise<boolean>;
12
+ //# sourceMappingURL=migration-017-default-on-storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migration-017-default-on-storage.d.ts","sourceRoot":"","sources":["../../src/lib/migration-017-default-on-storage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,OAAO,CAAC,CAqBhE"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Migration 017: Default-on SeaweedFS storage (API-2241).
3
+ *
4
+ * Older OVAs baked `"storage": false` into ~/.ct/preferences.json and left
5
+ * COMPOSE_PROFILES empty, so seaweedfs never joined calltelemetry_ct while
6
+ * CdrAlertDispatch still tried http://seaweedfs:8333 for alert PDF archival
7
+ * (nxdomain × 10). New installs default storage on; this one-shot enables
8
+ * storage + S3 on upgrade. Operators who want off: `ct storage disable`
9
+ * after the migration has run (it will not re-enable).
10
+ */
11
+ import { enableStorage, isStorageEnabled } from './storage.js';
12
+ import { getPrefs, savePrefs } from './prefs.js';
13
+ export async function migrateDefaultOnStorage() {
14
+ const prefs = getPrefs();
15
+ const alreadyEnabled = isStorageEnabled() && prefs.storage === true;
16
+ if (alreadyEnabled) {
17
+ // Ensure S3_ENABLED stays aligned when profile is on but flag was cleared.
18
+ const { readEnvKeys, updateEnvKeys } = await import('./env.js');
19
+ const env = readEnvKeys();
20
+ if (env.S3_ENABLED !== 'true') {
21
+ await updateEnvKeys({
22
+ S3_ENABLED: 'true',
23
+ S3_ENDPOINT: env.S3_ENDPOINT || 'http://seaweedfs:8333',
24
+ });
25
+ return true;
26
+ }
27
+ return false;
28
+ }
29
+ await enableStorage();
30
+ savePrefs({ ...prefs, storage: true });
31
+ return true;
32
+ }
33
+ //# sourceMappingURL=migration-017-default-on-storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migration-017-default-on-storage.js","sourceRoot":"","sources":["../../src/lib/migration-017-default-on-storage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEjD,MAAM,CAAC,KAAK,UAAU,uBAAuB;IAC3C,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,MAAM,cAAc,GAAG,gBAAgB,EAAE,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI,CAAC;IAEpE,IAAI,cAAc,EAAE,CAAC;QACnB,2EAA2E;QAC3E,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;QAChE,MAAM,GAAG,GAAG,WAAW,EAAE,CAAC;QAC1B,IAAI,GAAG,CAAC,UAAU,KAAK,MAAM,EAAE,CAAC;YAC9B,MAAM,aAAa,CAAC;gBAClB,UAAU,EAAE,MAAM;gBAClB,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,uBAAuB;aACxD,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,aAAa,EAAE,CAAC;IACtB,SAAS,CAAC,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IACvC,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../../src/lib/migrations.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;CAC7B;AAED,UAAU,eAAe;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,SAAS,GAAG,SAAS,CAAC;CAC/B;AAED,UAAU,WAAW;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;CACf;AAED,UAAU,cAAc;IACtB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC3C,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;CACrC;AAuBD,eAAO,MAAM,UAAU,EAAE,SAAS,EAiFjC,CAAC;AAEF,wBAAgB,kBAAkB,IAAI,cAAc,CAcnD;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAG9D;AAED,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAGxD;AAED,wBAAsB,oBAAoB,CACxC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAC1B,OAAO,CAAC;IAAE,GAAG,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CA4C/C;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,EAAE,EAAE,MAAM,EACV,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAC1B,OAAO,CAAC;IAAE,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAwC1E;AAED,wBAAgB,kBAAkB,IAAI,KAAK,CAAC;IAC1C,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;IACpD,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC,CAgCD"}
1
+ {"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../../src/lib/migrations.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;CAC7B;AAED,UAAU,eAAe;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,SAAS,GAAG,SAAS,CAAC;CAC/B;AAED,UAAU,WAAW;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;CACf;AAED,UAAU,cAAc;IACtB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC3C,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;CACrC;AAwBD,eAAO,MAAM,UAAU,EAAE,SAAS,EAsFjC,CAAC;AAEF,wBAAgB,kBAAkB,IAAI,cAAc,CAcnD;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAG9D;AAED,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAGxD;AAED,wBAAsB,oBAAoB,CACxC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAC1B,OAAO,CAAC;IAAE,GAAG,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CA4C/C;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,EAAE,EAAE,MAAM,EACV,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAC1B,OAAO,CAAC;IAAE,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAwC1E;AAED,wBAAgB,kBAAkB,IAAI,KAAK,CAAC;IAC1C,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;IACpD,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC,CAgCD"}
@@ -26,6 +26,7 @@ import { migrateGrafanaPassword } from './migration-013-grafana-password.js';
26
26
  import { migrateDockerFirewallBackend } from './migration-014-docker-firewall-backend.js';
27
27
  import { migrateDockerInternalNoProxy } from './migration-015-docker-internal-no-proxy.js';
28
28
  import { migrateSeaweedfsRecovery } from './migration-016-seaweedfs-recovery.js';
29
+ import { migrateDefaultOnStorage } from './migration-017-default-on-storage.js';
29
30
  export const MIGRATIONS = [
30
31
  {
31
32
  id: '001_cgnat_docker_subnets',
@@ -107,6 +108,11 @@ export const MIGRATIONS = [
107
108
  description: 'Recover SeaweedFS s3.json/nats.conf bind-mount dir-trap + restore data-volume writable bit (prevents crash-loop on upgrade/restore)',
108
109
  run: migrateSeaweedfsRecovery,
109
110
  },
111
+ {
112
+ id: '017_default_on_storage',
113
+ description: 'Default-on SeaweedFS storage profile + S3_ENABLED for alert PDF archival (API-2241)',
114
+ run: migrateDefaultOnStorage,
115
+ },
110
116
  ];
111
117
  export function loadMigrationState() {
112
118
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"migrations.js","sourceRoot":"","sources":["../../src/lib/migrations.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAuB7E,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC,CAAC;AACtC,MAAM,eAAe,GAAG,IAAI,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;AAExD,oBAAoB;AACpB,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAC5E,OAAO,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAClF,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,OAAO,EAAE,4BAA4B,EAAE,MAAM,4CAA4C,CAAC;AAC1F,OAAO,EAAE,4BAA4B,EAAE,MAAM,6CAA6C,CAAC;AAC3F,OAAO,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AAEjF,MAAM,CAAC,MAAM,UAAU,GAAgB;IACrC;QACE,EAAE,EAAE,0BAA0B;QAC9B,WAAW,EAAE,+CAA+C;QAC5D,GAAG,EAAE,mBAAmB;KACzB;IACD;QACE,EAAE,EAAE,eAAe;QACnB,WAAW,EAAE,kCAAkC;QAC/C,GAAG,EAAE,eAAe;KACrB;IACD;QACE,EAAE,EAAE,wBAAwB;QAC5B,WAAW,EAAE,sEAAsE;QACnF,GAAG,EAAE,aAAa;KACnB;IACD;QACE,EAAE,EAAE,yBAAyB;QAC7B,WAAW,EAAE,wCAAwC;QACrD,GAAG,EAAE,oBAAoB;KAC1B;IACD;QACE,EAAE,EAAE,mBAAmB;QACvB,WAAW,EAAE,6CAA6C;QAC1D,GAAG,EAAE,cAAc;KACpB;IACD;QACE,EAAE,EAAE,sBAAsB;QAC1B,WAAW,EAAE,oDAAoD;QACjE,GAAG,EAAE,sBAAsB;KAC5B;IACD;QACE,EAAE,EAAE,0BAA0B;QAC9B,WAAW,EAAE,2DAA2D;QACxE,GAAG,EAAE,gBAAgB;KACtB;IACD;QACE,EAAE,EAAE,4BAA4B;QAChC,WAAW,EAAE,qEAAqE;QAClF,GAAG,EAAE,qBAAqB;KAC3B;IACD;QACE,EAAE,EAAE,sBAAsB;QAC1B,WAAW,EAAE,sEAAsE;QACnF,GAAG,EAAE,qBAAqB;KAC3B;IACD;QACE,EAAE,EAAE,wBAAwB;QAC5B,WAAW,EAAE,gEAAgE;QAC7E,GAAG,EAAE,iBAAiB;KACvB;IACD;QACE,EAAE,EAAE,yBAAyB;QAC7B,WAAW,EAAE,mDAAmD;QAChE,GAAG,EAAE,wBAAwB;KAC9B;IACD;QACE,EAAE,EAAE,mBAAmB;QACvB,WAAW,EAAE,0DAA0D;QACvE,GAAG,EAAE,kBAAkB;KACxB;IACD;QACE,EAAE,EAAE,sBAAsB;QAC1B,WAAW,EAAE,0DAA0D;QACvE,GAAG,EAAE,sBAAsB;KAC5B;IACD;QACE,EAAE,EAAE,6BAA6B;QACjC,WAAW,EAAE,4FAA4F;QACzG,GAAG,EAAE,4BAA4B;KAClC;IACD;QACE,EAAE,EAAE,8BAA8B;QAClC,WAAW,EAAE,+GAA+G;QAC5H,GAAG,EAAE,4BAA4B;KAClC;IACD;QACE,EAAE,EAAE,wBAAwB;QAC5B,WAAW,EAAE,qIAAqI;QAClJ,GAAG,EAAE,wBAAwB;KAC9B;CACF,CAAC;AAEF,MAAM,UAAU,kBAAkB;IAChC,IAAI,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;YACjC,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;QACvC,CAAC;QACD,MAAM,GAAG,GAAG,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;QACnD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/B,OAAO;YACL,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,EAAE;YACjC,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;SAC5B,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IACvC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAqB;IACtD,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACvC,aAAa,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;AACjF,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,EAAU;IAC7C,MAAM,KAAK,GAAG,kBAAkB,EAAE,CAAC;IACnC,OAAO,EAAE,IAAI,KAAK,CAAC,SAAS,CAAC;AAC/B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,GAA2B;IAE3B,MAAM,KAAK,GAAG,kBAAkB,EAAE,CAAC;IACnC,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,SAAS,CAAC,EAAE,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;YACpC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YAC3B,SAAS;QACX,CAAC;QAED,GAAG,EAAE,CAAC,sBAAsB,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC;QAErD,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE,CAAC;YAEtC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG;gBAC9B,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBAC5B,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;aACxC,CAAC;YAEF,8CAA8C;YAC9C,OAAO,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YAElC,IAAI,OAAO,EAAE,CAAC;gBACZ,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;gBACvB,GAAG,EAAE,CAAC,cAAc,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC;YACtC,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;gBAC3B,GAAG,EAAE,CAAC,gCAAgC,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC;YACxD,CAAC;QACH,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG;gBAC3B,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBAC5B,KAAK,EAAE,OAAO;aACf,CAAC;YACF,GAAG,EAAE,CAAC,YAAY,SAAS,CAAC,EAAE,MAAM,OAAO,EAAE,CAAC,CAAC;QACjD,CAAC;QAED,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;IAED,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC;AAC1B,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,EAAU,EACV,GAA2B;IAE3B,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IACtD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IACjC,CAAC;IAED,MAAM,KAAK,GAAG,kBAAkB,EAAE,CAAC;IAEnC,GAAG,EAAE,CAAC,sBAAsB,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC;IAErD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE,CAAC;QAEtC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG;YAC9B,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YAC5B,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;SACxC,CAAC;QAEF,8CAA8C;QAC9C,OAAO,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAElC,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAE1B,IAAI,OAAO,EAAE,CAAC;YACZ,GAAG,EAAE,CAAC,cAAc,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC;YACpC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;QAC/B,CAAC;aAAM,CAAC;YACN,GAAG,EAAE,CAAC,gCAAgC,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC;YACtD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;QAC/B,CAAC;IACH,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG;YAC3B,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YAC5B,KAAK,EAAE,OAAO;SACf,CAAC;QACF,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAC1B,GAAG,EAAE,CAAC,YAAY,SAAS,CAAC,EAAE,MAAM,OAAO,EAAE,CAAC,CAAC;QAC/C,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IAC/C,CAAC;AACH,CAAC;AAED,MAAM,UAAU,kBAAkB;IAOhC,MAAM,KAAK,GAAG,kBAAkB,EAAE,CAAC;IAEnC,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QAC1B,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACxC,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAErC,IAAI,SAAS,EAAE,CAAC;YACd,OAAO;gBACL,EAAE,EAAE,CAAC,CAAC,EAAE;gBACR,WAAW,EAAE,CAAC,CAAC,WAAW;gBAC1B,MAAM,EAAE,SAAS,CAAC,MAAM;gBACxB,EAAE,EAAE,SAAS,CAAC,EAAE;aACjB,CAAC;QACJ,CAAC;QAED,IAAI,SAAS,EAAE,CAAC;YACd,OAAO;gBACL,EAAE,EAAE,CAAC,CAAC,EAAE;gBACR,WAAW,EAAE,CAAC,CAAC,WAAW;gBAC1B,MAAM,EAAE,OAAgB;gBACxB,EAAE,EAAE,SAAS,CAAC,EAAE;gBAChB,KAAK,EAAE,SAAS,CAAC,KAAK;aACvB,CAAC;QACJ,CAAC;QAED,OAAO;YACL,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,MAAM,EAAE,SAAkB;SAC3B,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"migrations.js","sourceRoot":"","sources":["../../src/lib/migrations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * OOM / restart observability for show-tech (API-2209 / EPI-OBS).
3
+ *
4
+ * Surfaces Docker RestartCount, OOMKilled, memory limits, live cgroup/stats
5
+ * usage, and a filtered dmesg OOM snippet. Pure helpers are unit-tested;
6
+ * collection is best-effort and never throws out of collectOomRestartEvidence.
7
+ *
8
+ * Why this exists: Docker often leaves OOMKilled=false when memcg kills
9
+ * beam.smp (child of bash PID1). RestartCount + dmesg are the reliable signal.
10
+ */
11
+ /** Compose services we always inspect for restart/OOM evidence. */
12
+ export declare const OOM_RESTART_SERVICES: readonly ["web", "db", "nats", "caddy"];
13
+ export type OomRestartService = (typeof OOM_RESTART_SERVICES)[number];
14
+ export interface ContainerRestartSnapshot {
15
+ service: string;
16
+ name: string | null;
17
+ id: string | null;
18
+ restartCount: number;
19
+ oomKilled: boolean;
20
+ status: string | null;
21
+ startedAt: string | null;
22
+ finishedAt: string | null;
23
+ exitCode: number | null;
24
+ /** HostConfig.Memory (0 = unlimited). */
25
+ memoryLimitBytes: number | null;
26
+ memorySwapBytes: number | null;
27
+ error?: string;
28
+ }
29
+ export interface CgroupMemorySample {
30
+ source: string;
31
+ service?: string;
32
+ currentBytes: number | null;
33
+ maxBytes: number | null;
34
+ raw?: string;
35
+ error?: string;
36
+ }
37
+ export interface OomRestartEvidence {
38
+ capturedAt: string;
39
+ containers: ContainerRestartSnapshot[];
40
+ dmesgOomSnippet: string;
41
+ cgroup: CgroupMemorySample[];
42
+ dockerStats: string;
43
+ findings: string[];
44
+ }
45
+ export declare function nilifyZeroTimestamp(ts: string | null | undefined): string | null;
46
+ export declare function parseIntOrNull(value: unknown): number | null;
47
+ /**
48
+ * Parse one Docker `inspect` JSON object into a flat restart/OOM snapshot.
49
+ * Accepts the Engine API body (or `docker inspect` array element).
50
+ */
51
+ export declare function snapshotFromInspect(inspect: Record<string, unknown>, service: string): ContainerRestartSnapshot;
52
+ /**
53
+ * Filter kernel logs down to OOM/memcg-relevant lines with light context.
54
+ * Pure — safe to unit-test without a host.
55
+ */
56
+ export declare function filterDmesgOomSnippet(dmesgText: string, opts?: {
57
+ maxLines?: number;
58
+ contextRadius?: number;
59
+ }): string;
60
+ export declare function formatBytesOptional(bytes: number | null | undefined): string;
61
+ export declare function buildFindings(containers: ContainerRestartSnapshot[], dmesgSnippet: string): string[];
62
+ export declare function formatOomRestartReport(evidence: OomRestartEvidence): string;
63
+ /**
64
+ * Collect RestartCount / OOM / cgroup / dmesg evidence for show-tech.
65
+ * Best-effort: always returns a complete evidence object.
66
+ */
67
+ export declare function collectOomRestartEvidence(services?: readonly string[]): Promise<OomRestartEvidence>;
68
+ //# sourceMappingURL=oom-restart-observability.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oom-restart-observability.d.ts","sourceRoot":"","sources":["../../src/lib/oom-restart-observability.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,mEAAmE;AACnE,eAAO,MAAM,oBAAoB,yCAA0C,CAAC;AAE5E,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEtE,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,yCAAyC;IACzC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,wBAAwB,EAAE,CAAC;IACvC,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,kBAAkB,EAAE,CAAC;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAqBD,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAIhF;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAK5D;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,OAAO,EAAE,MAAM,GACd,wBAAwB,CAyB1B;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,MAAM,EACjB,IAAI,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAE,GACnD,MAAM,CAuCR;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAW5E;AAED,wBAAgB,aAAa,CAAC,UAAU,EAAE,wBAAwB,EAAE,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,EAAE,CAuCpG;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,MAAM,CAoD3E;AAwND;;;GAGG;AACH,wBAAsB,yBAAyB,CAC7C,QAAQ,GAAE,SAAS,MAAM,EAAyB,GACjD,OAAO,CAAC,kBAAkB,CAAC,CAmB7B"}