@camstack/addon-post-analysis 1.2.667 → 1.2.668

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 (16) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/{clip-model-registry-DpzRS8q3.mjs → clip-model-registry-BYJ5lbPi.mjs} +197 -30
  3. package/dist/{clip-model-registry-D7cqhFK3.js → clip-model-registry-DTC5bkf8.js} +197 -30
  4. package/dist/embedding-encoder/index.js +1 -1
  5. package/dist/embedding-encoder/index.mjs +1 -1
  6. package/dist/pipeline-analytics/_stub.js +2 -2
  7. package/dist/pipeline-analytics/{_virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-DmTIEp0m.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-DBEA3TPX.mjs} +2 -2
  8. package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-DxtNkzmw.mjs +26 -0
  9. package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-CU7mDiJp.mjs +26 -0
  10. package/dist/pipeline-analytics/{hostInit-ODebWXu_.mjs → hostInit-ChYqK-gn.mjs} +2 -2
  11. package/dist/pipeline-analytics/index.js +12 -3
  12. package/dist/pipeline-analytics/index.mjs +12 -3
  13. package/dist/pipeline-analytics/remoteEntry.js +1 -1
  14. package/package.json +2 -2
  15. package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-DAAkZRnK.mjs +0 -26
  16. package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-znrgUrN1.mjs +0 -26
@@ -6069,7 +6069,7 @@ var ZodIssueCode = {
6069
6069
  var ZodFirstPartyTypeKind;
6070
6070
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
6071
6071
  //#endregion
6072
- //#region ../types/dist/sleep-hK-Dss3z.mjs
6072
+ //#region ../types/dist/sleep-D1jjWAr8.mjs
6073
6073
  /**
6074
6074
  * The audio chunk plane's byte format, and the ONE expansion from a coded
6075
6075
  * window to float samples (D455).
@@ -6662,7 +6662,7 @@ var NOT_RUN = {
6662
6662
  * throws: an unreachable or refusing engine is logged and reported `declared: false`,
6663
6663
  * because the hub (and this addon's boot) must not hang on a migration.
6664
6664
  */
6665
- async function runAddonMigrations(host, migrations, logger) {
6665
+ async function runAddonMigrations(host, migrations, logger, options = {}) {
6666
6666
  const first = migrations[0];
6667
6667
  if (first === void 0) return NOT_RUN;
6668
6668
  const owner = first.meta.owner;
@@ -6691,7 +6691,9 @@ async function runAddonMigrations(host, migrations, logger) {
6691
6691
  else if (status === "blocked") blocked.push(id);
6692
6692
  else skipped.push(id);
6693
6693
  };
6694
+ const selected = options.only === void 0 ? null : new Set(options.only);
6694
6695
  for (const step of declaration.steps) {
6696
+ if (selected !== null && !selected.has(step.id)) continue;
6695
6697
  const bound = byId.get(step.id);
6696
6698
  if (bound === void 0 || step.action === "skip") {
6697
6699
  skipped.push(step.id);
@@ -7809,14 +7811,18 @@ var BaseAddon = class {
7809
7811
  * nothing; the boot continues. A migration that FAILED (or was blocked by one)
7810
7812
  * and declares `onFailure: 'block-owner'` makes this throw, so the addon does not
7811
7813
  * serve data whose shape it cannot trust; `tolerate` migrations never do.
7814
+ *
7815
+ * ALWAYS pass the whole catalogue; a phase that must run only some of it passes
7816
+ * `{ only: [ids] }` — never a filtered catalogue (the engine would judge the
7817
+ * omitted applied ids "newer").
7812
7818
  */
7813
- async runMigrations(migrations) {
7819
+ async runMigrations(migrations, options) {
7814
7820
  const api = this.ctx.api.migrations;
7815
7821
  const report = await runAddonMigrations({
7816
7822
  declareOwner: (input) => api.declareOwner.mutate(input),
7817
7823
  startMigration: (input) => api.startMigration.mutate(input),
7818
7824
  finishMigration: (input) => api.finishMigration.mutate(input)
7819
- }, migrations, this.ctx.logger);
7825
+ }, migrations, this.ctx.logger, options);
7820
7826
  if (report.blockOwner.length > 0) throw new AddonMigrationsBlockedError(report.blockOwner);
7821
7827
  return report;
7822
7828
  }
@@ -8847,6 +8853,10 @@ var RECORD_SETTINGS_MAX_ROWS = 5e4;
8847
8853
  * (`collectZodSecretPaths`): dotted keys, `[]` for "each element of this array"
8848
8854
  * (`auth.accessToken`, `headers[].value`).
8849
8855
  *
8856
+ * `{}` after a key means "each value of this map" (`applianceSecrets{}`): the map's own key
8857
+ * names the value (`applianceSecrets{fridge}`), so no id key is declared and a body that drops a
8858
+ * key releases exactly that key's secret.
8859
+ *
8850
8860
  * Array elements are matched by a DECLARED id key (`secretArrayKeys`:
8851
8861
  * `{ headers: 'name' }`), never by index, so reordering a list keeps every
8852
8862
  * keychain ref (the same rule as `arrayItemFieldPath`). The concrete path of a
@@ -8859,11 +8869,13 @@ function parseSecretPath(path) {
8859
8869
  if (path.length === 0) throw new InvalidRecordError("an empty secret path");
8860
8870
  return path.split(".").map((raw) => {
8861
8871
  const each = raw.endsWith("[]");
8862
- const key = each ? raw.slice(0, -2) : raw;
8872
+ const map = raw.endsWith("{}");
8873
+ const key = each || map ? raw.slice(0, -2) : raw;
8863
8874
  if (key.length === 0) throw new InvalidRecordError(`secret path "${path}" has an empty segment`);
8864
8875
  return {
8865
8876
  key,
8866
- each
8877
+ each,
8878
+ map
8867
8879
  };
8868
8880
  });
8869
8881
  }
@@ -8950,7 +8962,8 @@ function isZodSecret(schema) {
8950
8962
  }
8951
8963
  /**
8952
8964
  * Every declared secret path in a config schema: dotted keys, `[]` for "each
8953
- * element of this array" (`connection.password`, `rows[].token`). A declared
8965
+ * element of this array" (`connection.password`, `rows[].token`), `{}` for "each value of this
8966
+ * map" (`applianceSecrets{}`). A declared
8954
8967
  * object or array is reported as one path and not descended into — everything
8955
8968
  * under it is secret.
8956
8969
  */
@@ -8961,6 +8974,7 @@ function collectZodSecretPaths(schema, prefix = "") {
8961
8974
  const def = defOf(layer);
8962
8975
  if (def.type === "object" && def.shape) for (const [key, child] of Object.entries(def.shape)) paths.push(...collectZodSecretPaths(child, prefix ? `${prefix}.${key}` : key));
8963
8976
  else if (def.type === "array" && def.element) paths.push(...collectZodSecretPaths(def.element, `${prefix}[]`));
8977
+ else if (def.type === "record" && def.valueType) paths.push(...collectZodSecretPaths(def.valueType, `${prefix}{}`));
8964
8978
  else if (def.type === "union" && def.options) for (const option of def.options) paths.push(...collectZodSecretPaths(option, prefix));
8965
8979
  else if (def.type === "intersection") {
8966
8980
  if (def.left) paths.push(...collectZodSecretPaths(def.left, prefix));
@@ -9100,7 +9114,7 @@ function defineRecordKinds(specs) {
9100
9114
  retention: spec.retention,
9101
9115
  deviceRemoval: spec.deviceRemoval,
9102
9116
  maxDataBytes: spec.maxDataBytes,
9103
- secretPaths: [...secretPaths],
9117
+ secretPaths: [...new Set([...secretPaths, ...spec.retiredSecretPaths ?? []])],
9104
9118
  secretArrayKeys: spec.secretArrayKeys === void 0 ? void 0 : { ...spec.secretArrayKeys },
9105
9119
  transactFamily: spec.transactFamily,
9106
9120
  entry: spec.entry === void 0 ? void 0 : {
@@ -12009,7 +12023,7 @@ function sleep(ms) {
12009
12023
  return new Promise((resolve) => setTimeout(resolve, Math.max(0, ms)));
12010
12024
  }
12011
12025
  //#endregion
12012
- //#region ../types/dist/composition-BSGHhcr8.mjs
12026
+ //#region ../types/dist/composition-pOHbTzRB.mjs
12013
12027
  /**
12014
12028
  * Deterministic SHA-256 hash of an arbitrary serialisable value. The
12015
12029
  * canonical form sorts object keys alphabetically at every depth so two
@@ -14678,7 +14692,13 @@ var MigrationLedgerEntrySchema = object({
14678
14692
  * joined by the engine from the catalogues it knows this boot. Absent when no
14679
14693
  * catalogue lists the id (a newer database).
14680
14694
  */
14681
- meta: MigrationMetaSchema.optional()
14695
+ meta: MigrationMetaSchema.optional(),
14696
+ /**
14697
+ * Set when this is an applied row of an addon owner whose catalogue the answering
14698
+ * process has not loaded (the owner has not declared yet): the row is applied, the
14699
+ * process just cannot judge it. Never `skipped-newer` — that needs the owner loaded.
14700
+ */
14701
+ ownerNotLoaded: boolean().optional()
14682
14702
  });
14683
14703
  /** A catalogued migration that is not applied, with where it stands. */
14684
14704
  var MigrationPendingEntrySchema = object({
@@ -51210,6 +51230,9 @@ var RunningProposalEvidenceSchema = object({
51210
51230
  runsFound: number().int().nonnegative(),
51211
51231
  pausesFound: number().int().nonnegative(),
51212
51232
  longestPauseMs: number().nonnegative(),
51233
+ /** Episodes shorter than ~90 s (an anti-crease pulse, a display waking): never a run, never a pause. */
51234
+ pulsesFound: number().int().nonnegative(),
51235
+ longestPulseMs: number().nonnegative(),
51213
51236
  idleFloorW: number(),
51214
51237
  noiseCeilingW: number(),
51215
51238
  plateauW: number(),
@@ -52500,7 +52523,27 @@ method(object({
52500
52523
  * exposes only the COMMON surface: link state, supported device
52501
52524
  * kinds (so the UI can filter the device picker), and per-device
52502
52525
  * expose/unexpose.
52503
- */
52526
+ *
52527
+ * INSTANCES. One export addon can serve several independent targets (a
52528
+ * HomeKit bridge, a Home Assistant broker). `listInstances` names them.
52529
+ * `instanceId` on a READ is optional: absent = the whole addon (linked if any
52530
+ * enabled instance is, `exposedDeviceCount` = distinct devices, `setup` = the
52531
+ * default instance's); present = that instance; an id the provider does not
52532
+ * serve is refused with `ExportInstanceUnknownError` (`export-instance-unknown`),
52533
+ * never answered empty. `instanceId` on a WRITE is REQUIRED: a membership
52534
+ * change always names the target it changes. A single-instance provider
52535
+ * accepts an absent id on a read or its own id, and refuses any other.
52536
+ */
52537
+ /** Which instance of an export addon a call addresses. Absent on a read = the whole addon. */
52538
+ var InstanceIdSchema$1 = string().min(1);
52539
+ var InstancePinSchema = object({ instanceId: InstanceIdSchema$1.optional() });
52540
+ /** One independent export target of an addon. */
52541
+ var ExportInstanceSchema = object({
52542
+ instanceId: InstanceIdSchema$1,
52543
+ name: string(),
52544
+ enabled: boolean(),
52545
+ kind: string().optional()
52546
+ });
52504
52547
  var LinkStateSchema = _enum([
52505
52548
  "unlinked",
52506
52549
  "linked",
@@ -52551,10 +52594,14 @@ var ExposedDeviceSchema = object({
52551
52594
  capabilities: array(string()).optional()
52552
52595
  });
52553
52596
  var ExposeInputSchema = object({
52597
+ instanceId: InstanceIdSchema$1,
52554
52598
  deviceId: string(),
52555
52599
  capabilities: array(string()).optional()
52556
52600
  });
52557
- var UnexposeInputSchema = object({ deviceId: string() });
52601
+ var UnexposeInputSchema = object({
52602
+ instanceId: InstanceIdSchema$1,
52603
+ deviceId: string()
52604
+ });
52558
52605
  /**
52559
52606
  * What an exporter may expose besides devices (D968). An action and a
52560
52607
  * notification target are LIST ENTRIES, never devices (D954): they enter an
@@ -52583,15 +52630,21 @@ var ExposedEntitySchema = object({
52583
52630
  entity: ExportEntityRefSchema,
52584
52631
  exposedAs: string().optional()
52585
52632
  });
52586
- var ExposeEntityInputSchema = object({ entity: ExportEntityRefSchema });
52587
- var UnexposeEntityInputSchema = object({ entity: ExportEntityRefSchema });
52588
- method(_void(), DeviceExportStatusSchema), method(_void(), array(DeviceKindSchema)), method(_void(), array(ExposedDeviceSchema)), method(ExposeInputSchema, _void(), {
52633
+ var ExposeEntityInputSchema = object({
52634
+ instanceId: InstanceIdSchema$1,
52635
+ entity: ExportEntityRefSchema
52636
+ });
52637
+ var UnexposeEntityInputSchema = object({
52638
+ instanceId: InstanceIdSchema$1,
52639
+ entity: ExportEntityRefSchema
52640
+ });
52641
+ method(InstancePinSchema, DeviceExportStatusSchema), method(_void(), array(ExportInstanceSchema)), method(InstancePinSchema, array(DeviceKindSchema)), method(InstancePinSchema, array(ExposedDeviceSchema)), method(ExposeInputSchema, _void(), {
52589
52642
  kind: "mutation",
52590
52643
  auth: "admin"
52591
52644
  }), method(UnexposeInputSchema, _void(), {
52592
52645
  kind: "mutation",
52593
52646
  auth: "admin"
52594
- }), optionalMethod(_void(), array(ExportEntityKindSchema)), optionalMethod(_void(), array(ExposedEntitySchema)), optionalMethod(ExposeEntityInputSchema, _void(), {
52647
+ }), optionalMethod(_void(), array(ExportEntityKindSchema)), optionalMethod(InstancePinSchema, array(ExposedEntitySchema)), optionalMethod(ExposeEntityInputSchema, _void(), {
52595
52648
  kind: "mutation",
52596
52649
  auth: "admin"
52597
52650
  }), optionalMethod(UnexposeEntityInputSchema, _void(), {
@@ -57127,6 +57180,12 @@ method(_void(), array(IntegrationWithStateSchema)), method(object({ id: string()
57127
57180
  }), object({ success: boolean() }), {
57128
57181
  kind: "mutation",
57129
57182
  auth: "admin"
57183
+ }), method(object({ id: string() }), object({
57184
+ rows: number().int().nonnegative(),
57185
+ secrets: number().int().nonnegative()
57186
+ }), {
57187
+ kind: "mutation",
57188
+ auth: "admin"
57130
57189
  }), method(_void(), array(AvailableIntegrationTypeSchema), { auth: "admin" }), method(object({
57131
57190
  addonId: string(),
57132
57191
  settings: record(string(), unknown())
@@ -57155,13 +57214,65 @@ method(_void(), array(IntegrationWithStateSchema)), method(object({ id: string()
57155
57214
  */
57156
57215
  var ConfigSchemaPassthrough$3 = custom();
57157
57216
  var IntegrationInstanceIdSchema = string().min(1);
57217
+ var IntegrationInstanceModeSchema = _enum(["single", "multiple"]);
57218
+ /**
57219
+ * One kind of instance a provider can create (an adapter, an account type). The sign-in and
57220
+ * connect fields follow the `broker` contract (`broker.cap.ts`): `signIn.basePath` is a
57221
+ * hub-relative route set speaking the sign-in contract, `connectPath` / `disconnectPath` open an
57222
+ * interactive account link (popup) and may carry `{{brokerId}}`, which the UI replaces with the
57223
+ * instance id.
57224
+ */
57225
+ var IntegrationInstanceKindSchema = object({
57226
+ /** Stable id of the kind, sent back as `createInstance.kind`. */
57227
+ id: string().min(1),
57228
+ label: string().min(1),
57229
+ /** The kind signs in through a server-held interactive session. */
57230
+ signIn: object({
57231
+ basePath: string().min(1),
57232
+ methods: array(_enum(["device-code", "proxy"])).optional()
57233
+ }).optional(),
57234
+ /** Relative hub path to start an interactive account link of an instance of this kind. */
57235
+ connectPath: string().min(1).optional(),
57236
+ /** Relative hub path to disconnect that account. */
57237
+ disconnectPath: string().min(1).optional()
57238
+ });
57158
57239
  var IntegrationInstanceDescriptionSchema = object({
57240
+ /** What the instances are for the Integrations page; see {@link IntegrationInstanceRoleSchema}. */
57241
+ role: _enum([
57242
+ "devices",
57243
+ "services",
57244
+ "both"
57245
+ ]),
57246
+ /** How the devices of an instance are found; absent means `{ mode: 'none' }`. */
57247
+ discovery: object({
57248
+ mode: _enum([
57249
+ "none",
57250
+ "lan",
57251
+ "account"
57252
+ ]),
57253
+ scopedToInstance: boolean()
57254
+ }).optional(),
57159
57255
  /** `single`: at most one instance can exist (Loki). `multiple`: an account each. */
57160
- instanceMode: _enum(["single", "multiple"]),
57256
+ instanceMode: IntegrationInstanceModeSchema,
57161
57257
  /** What the instance is, for the UI (`destination`, `relay`, `account`). */
57162
57258
  kind: string(),
57163
57259
  /** True when `testInstance` really probes the remote. */
57164
- canTest: boolean()
57260
+ canTest: boolean(),
57261
+ /**
57262
+ * The kinds an instance can be of. Absent or one entry: nothing to choose; more than one: the
57263
+ * Add flow asks which first and sends it as `createInstance.kind`.
57264
+ */
57265
+ kinds: array(IntegrationInstanceKindSchema).optional(),
57266
+ /**
57267
+ * The provider accepts `createInstance.id` for an id that once existed (an adopted id, because
57268
+ * devices carry it). The UI then offers "restore under its old id" on Add. Absent means no.
57269
+ */
57270
+ allowRestoreId: boolean().optional(),
57271
+ /**
57272
+ * `createInstance` without an `id` works: the provider mints it. Absent means the caller must
57273
+ * send an id (the UI then mints an opaque one).
57274
+ */
57275
+ mintsId: boolean().optional()
57165
57276
  });
57166
57277
  var IntegrationInstanceStatusSchema = object({
57167
57278
  state: _enum([
@@ -57170,7 +57281,9 @@ var IntegrationInstanceStatusSchema = object({
57170
57281
  "error",
57171
57282
  "unknown"
57172
57283
  ]),
57173
- detail: string().optional()
57284
+ detail: string().optional(),
57285
+ /** A short human word for the state ("Signed in", "Token expired"); shown instead of `state`. */
57286
+ label: string().optional()
57174
57287
  });
57175
57288
  var IntegrationInstanceSchema = object({
57176
57289
  id: IntegrationInstanceIdSchema,
@@ -57178,13 +57291,18 @@ var IntegrationInstanceSchema = object({
57178
57291
  /** The addon's own rule (an URL is present, a client id is present...). */
57179
57292
  configured: boolean(),
57180
57293
  /**
57181
- * The instance's own on/off switch (D996): always present, derived from the record body
57182
- * (`enabled !== false`, so a row written before the field existed is on).
57294
+ * The instance's own on/off switch (D996), derived from the record body (`enabled !== false`,
57295
+ * so a row written before the field existed is on). Absent when the `integrations` registry
57296
+ * owns the switch (`describe().role` is `devices`): read it from the registry row.
57183
57297
  */
57184
- enabled: boolean(),
57298
+ enabled: boolean().optional(),
57299
+ /** The kind of this instance (one of `describe().kinds[].id`), when the provider has kinds. */
57300
+ kind: string().optional(),
57185
57301
  /** Values for the instance form; a secret is a `SecretFieldView`, never text. */
57186
57302
  formValues: record(string(), unknown()),
57187
- status: IntegrationInstanceStatusSchema.optional()
57303
+ status: IntegrationInstanceStatusSchema.optional(),
57304
+ /** Epoch ms of the last probe of the remote that produced `status`; absent when never checked. */
57305
+ lastCheckedAt: number().optional()
57188
57306
  });
57189
57307
  var IntegrationInstancePatchSchema = object({
57190
57308
  id: IntegrationInstanceIdSchema,
@@ -57193,8 +57311,9 @@ var IntegrationInstancePatchSchema = object({
57193
57311
  values: record(string(), unknown())
57194
57312
  });
57195
57313
  method(_void(), IntegrationInstanceDescriptionSchema, { auth: "admin" }), method(object({ id: IntegrationInstanceIdSchema.nullable() }), ConfigSchemaPassthrough$3, { auth: "admin" }), method(_void(), array(IntegrationInstanceSchema).readonly(), { auth: "admin" }), method(object({ id: IntegrationInstanceIdSchema }), IntegrationInstanceSchema.nullable(), { auth: "admin" }), method(object({
57196
- id: IntegrationInstanceIdSchema,
57197
- name: string().min(1)
57314
+ id: IntegrationInstanceIdSchema.optional(),
57315
+ name: string().min(1),
57316
+ kind: string().min(1).optional()
57198
57317
  }), object({ id: string() }), {
57199
57318
  kind: "mutation",
57200
57319
  auth: "admin"
@@ -59354,6 +59473,11 @@ var LogEntrySchema = object({
59354
59473
  * flight, and not asking for the next slice ends the scan.
59355
59474
  */
59356
59475
  var LogReadQuerySchema = object({
59476
+ /**
59477
+ * Which destination INSTANCE answers (a destination addon may hold several records). Absent ⇒
59478
+ * the provider's first readable one, so a caller written before instances existed is unchanged.
59479
+ */
59480
+ instanceId: string().min(1).max(200).optional(),
59357
59481
  /** Correlates `cancelRead`. Caller-chosen, unique per in-flight read. */
59358
59482
  requestId: string().min(1).max(64).optional(),
59359
59483
  /** The device the line is about (`tags.deviceId`, numeric). */
@@ -59416,6 +59540,8 @@ var LogReadResultSchema = object({
59416
59540
  /** True when `cancelRead` ended this slice early. */
59417
59541
  cancelled: boolean().optional()
59418
59542
  });
59543
+ /** Names one destination instance; absent ⇒ the provider's first readable one. */
59544
+ var LogInstanceSelectorSchema = object({ instanceId: string().min(1).max(200).optional() });
59419
59545
  var LogReadCapabilitiesSchema = object({
59420
59546
  /** False ⇒ this destination only ships lines (console, forwarder, an unconfigured Loki). */
59421
59547
  readable: boolean(),
@@ -59434,7 +59560,7 @@ var LogReadCapabilitiesSchema = object({
59434
59560
  /** How far back the store reaches, when the provider knows (days). */
59435
59561
  retentionDays: number().nullable()
59436
59562
  });
59437
- method(LogEntrySchema, _void(), { kind: "mutation" }), optionalMethod(_void(), LogReadCapabilitiesSchema, { auth: "admin" }), optionalMethod(LogReadQuerySchema, LogReadResultSchema, { auth: "admin" }), optionalMethod(object({ requestId: string().min(1).max(64) }), object({ cancelled: boolean() }), {
59563
+ method(LogEntrySchema, _void(), { kind: "mutation" }), optionalMethod(LogInstanceSelectorSchema, LogReadCapabilitiesSchema, { auth: "admin" }), optionalMethod(LogReadQuerySchema, LogReadResultSchema, { auth: "admin" }), optionalMethod(object({ requestId: string().min(1).max(64) }), object({ cancelled: boolean() }), {
59438
59564
  kind: "mutation",
59439
59565
  auth: "admin"
59440
59566
  });
@@ -83276,6 +83402,25 @@ function buildEventKindDescriptor(kind, source) {
83276
83402
  }
83277
83403
  };
83278
83404
  }
83405
+ /**
83406
+ * What a remote key is CALLED and what it LOOKS like, for every role (D963),
83407
+ * shared by the admin UI and the viewer. A role is data on the wire; each
83408
+ * client resolves its name from `label` (English and Italian side by side) and
83409
+ * its glyph from `icon`, a lucide id from the shared icon catalogue — the
83410
+ * server sends an id, a client maps it to its own icon set.
83411
+ *
83412
+ * `legend` is text printed on the key INSTEAD of a glyph (a digit has no
83413
+ * pictogram): a client that can draw text shows it, one that cannot falls back
83414
+ * to `icon`.
83415
+ */
83416
+ function digit(n) {
83417
+ return {
83418
+ label: t(n, n),
83419
+ icon: "hash",
83420
+ legend: n
83421
+ };
83422
+ }
83423
+ digit("0"), digit("1"), digit("2"), digit("3"), digit("4"), digit("5"), digit("6"), digit("7"), digit("8"), digit("9");
83279
83424
  DeviceFeature.MediaPlayerPower, DeviceFeature.MediaPlayerVolumeStep, DeviceFeature.MediaPlayerChannelStep, DeviceFeature.MediaPlayerMute, DeviceFeature.MediaPlayerStop, DeviceFeature.MediaPlayerNext, DeviceFeature.MediaPlayerPrevious;
83280
83425
  var btn = (idSuffix, row, col, init) => ({
83281
83426
  idSuffix,
@@ -83414,11 +83559,15 @@ discriminatedUnion("kind", [object({
83414
83559
  * 1. idle floor F = time-weighted median; noise ceiling N = highest value seen
83415
83560
  * near F. A device that is not near one level most of the time has no floor.
83416
83561
  * 2. coarse activity = above max(2N, N + 5 W); consecutive stretches are episodes.
83417
- * 3. gaps between episodes split in two by the largest log-scale jump (>= 3x):
83418
- * the short ones are pauses INSIDE a run (a soak), the long ones separate runs.
83562
+ * 3. an episode shorter than `PULSE_MAX_MS` is a PULSE (an anti-crease tumble, a
83563
+ * display waking): it is neither a run nor a pause. Among the remaining
83564
+ * episodes, gaps over `PAUSE_MAX_MS` always separate runs; the rest split in
83565
+ * two by the largest log-scale jump (>= 3x): the short ones are pauses INSIDE
83566
+ * a run (a soak), the long ones separate runs. A stretch under `MIN_RUN_MS`
83567
+ * is no run.
83419
83568
  * 4. T = geometric mean of N and the plateau's 10th percentile, snapped to a
83420
- * grid a person would type; stop dwell covers the longest pause; start dwell
83421
- * covers the longest standby blip above T.
83569
+ * grid a person would type; stop dwell covers the longest pause and the
83570
+ * kind's floor; start dwell covers the longest pulse and standby blip above T.
83422
83571
  * 5. the numbers are proved by REPLAY through the real `dwell` evaluation: each
83423
83572
  * run must hold exactly one true interval and nothing may flap outside.
83424
83573
  */
@@ -83429,6 +83578,10 @@ var MINUTE_MS$1 = 60 * SECOND_MS;
83429
83578
  30 * SECOND_MS;
83430
83579
  60 * SECOND_MS;
83431
83580
  20 * MINUTE_MS$1;
83581
+ 90 * SECOND_MS;
83582
+ 30 * MINUTE_MS$1;
83583
+ 10 * MINUTE_MS$1;
83584
+ DeviceType.Dryer, 3 * MINUTE_MS$1, DeviceType.Dishwasher, 3 * MINUTE_MS$1, DeviceType.Washer, 10 * MINUTE_MS$1;
83432
83585
  10 * SECOND_MS;
83433
83586
  10 * SECOND_MS;
83434
83587
  DeviceFeature.FanSpeed, DeviceFeature.FanPreset, DeviceFeature.FanDirection, DeviceFeature.FanOscillating, DeviceFeature.CoverStoppable, DeviceFeature.CoverPositionable, DeviceFeature.CoverTilt, DeviceFeature.ValvePositionable, DeviceFeature.MediaPlayerVolume, DeviceFeature.ClimateFanMode;
@@ -86613,6 +86766,13 @@ Object.freeze({
86613
86766
  access: "view",
86614
86767
  role: "admin"
86615
86768
  },
86769
+ "deviceExport.listInstances": {
86770
+ capName: "device-export",
86771
+ capScope: "system",
86772
+ addonId: null,
86773
+ access: "view",
86774
+ role: "admin"
86775
+ },
86616
86776
  "deviceExport.listSupportedDeviceKinds": {
86617
86777
  capName: "device-export",
86618
86778
  capScope: "system",
@@ -88265,6 +88425,13 @@ Object.freeze({
88265
88425
  access: "create",
88266
88426
  role: "admin"
88267
88427
  },
88428
+ "integrations.clearSettings": {
88429
+ capName: "integrations",
88430
+ capScope: "system",
88431
+ addonId: null,
88432
+ access: "delete",
88433
+ role: "admin"
88434
+ },
88268
88435
  "integrations.create": {
88269
88436
  capName: "integrations",
88270
88437
  capScope: "system",
@@ -2,7 +2,7 @@ Object.defineProperties(exports, {
2
2
  __esModule: { value: true },
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
- const require_clip_model_registry = require("../clip-model-registry-D7cqhFK3.js");
5
+ const require_clip_model_registry = require("../clip-model-registry-DTC5bkf8.js");
6
6
  let node_fs = require("node:fs");
7
7
  node_fs = require_clip_model_registry.__toESM(node_fs);
8
8
  let node_path = require("node:path");
@@ -1,4 +1,4 @@
1
- import { Ci as resolvePoolMemoryPolicy, _r as embeddingEncoderCapability, a as CLIP_EMBEDDING_STEP_ID, br as embeddingRequirementsFailedError, ci as parseProcStatus, i as CLIP_TEXT_MODELS, ia as BaseAddon, in as PoolMemoryWatchdog, l as resolveClusterModelPin, n as DEFAULT_CLIP_MODEL, r as CLIP_IMAGE_MODELS, t as BUILTIN_CLIP_MODELS, va as normalizeNodeId, vr as embeddingModelFailedError, xr as embeddingRequirementsUnavailableError } from "../clip-model-registry-DpzRS8q3.mjs";
1
+ import { Ci as resolvePoolMemoryPolicy, _r as embeddingEncoderCapability, a as CLIP_EMBEDDING_STEP_ID, br as embeddingRequirementsFailedError, ci as parseProcStatus, i as CLIP_TEXT_MODELS, ia as BaseAddon, in as PoolMemoryWatchdog, l as resolveClusterModelPin, n as DEFAULT_CLIP_MODEL, r as CLIP_IMAGE_MODELS, t as BUILTIN_CLIP_MODELS, va as normalizeNodeId, vr as embeddingModelFailedError, xr as embeddingRequirementsUnavailableError } from "../clip-model-registry-BYJ5lbPi.mjs";
2
2
  import { createRequire } from "node:module";
3
3
  import * as fs from "node:fs";
4
4
  import * as path$1 from "node:path";
@@ -1,8 +1,8 @@
1
1
  import { a as e, i as t, n, o as r, r as i, t as a } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare__react__loadShare__.js-Cx9AsA5q.mjs";
2
2
  import { t as o } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_tanstack_mf_1_react_mf_2_query__loadShare__.js-B3Wx5J80.mjs";
3
- import { a as s, c, d as l, f as u, i as d, l as f, m as p, n as m, o as h, p as g, r as _, s as v, t as y, u as b } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-znrgUrN1.mjs";
3
+ import { a as s, c, d as l, f as u, i as d, l as f, m as p, n as m, o as h, p as g, r as _, s as v, t as y, u as b } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-CU7mDiJp.mjs";
4
4
  import { n as x, t as S } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.js-CkwmHEi0.mjs";
5
- import { t as C } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-DAAkZRnK.mjs";
5
+ import { t as C } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-DxtNkzmw.mjs";
6
6
  //#region ../../node_modules/lucide-react/dist/esm/shared/src/utils/mergeClasses.js
7
7
  var w = (...e) => e.filter((e, t, n) => !!e && e.trim() !== "" && n.indexOf(e) === t).join(" ").trim(), T = (e) => e.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase(), E = (e) => e.replace(/^([A-Z])|[\s-_]+(\w)/g, (e, t, n) => n ? n.toUpperCase() : t.toLowerCase()), D = (e) => {
8
8
  let t = E(e);
@@ -18,7 +18,7 @@ var e = {
18
18
  },
19
19
  "@camstack/types": {
20
20
  name: "@camstack/types",
21
- version: "1.2.488",
21
+ version: "1.2.500",
22
22
  scope: ["default"],
23
23
  loaded: !1,
24
24
  from: "addon_pipeline_analytics_widgets",
@@ -33,7 +33,7 @@ var e = {
33
33
  },
34
34
  "@camstack/ui-library": {
35
35
  name: "@camstack/ui-library",
36
- version: "1.2.378",
36
+ version: "1.2.384",
37
37
  scope: ["default"],
38
38
  loaded: !1,
39
39
  from: "addon_pipeline_analytics_widgets",