@camstack/system 1.2.377 → 1.2.379

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 (93) hide show
  1. package/dist/addon-runner.js +1 -1
  2. package/dist/addon-runner.mjs +1 -1
  3. package/dist/addon-utils.js +1 -1
  4. package/dist/addon-utils.mjs +1 -1
  5. package/dist/auth/auth-manager.d.ts +10 -2
  6. package/dist/auth/jwt-signing-key.d.ts +42 -0
  7. package/dist/auth/user-manager.d.ts +19 -19
  8. package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.js +1 -1
  9. package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.mjs +1 -1
  10. package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.js +1 -1
  11. package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.mjs +1 -1
  12. package/dist/builtins/alerts/alerts.addon.js +1 -1
  13. package/dist/builtins/alerts/alerts.addon.mjs +1 -1
  14. package/dist/builtins/autotrack/index.js +1 -1
  15. package/dist/builtins/autotrack/index.mjs +1 -1
  16. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.js +1 -1
  17. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.mjs +1 -1
  18. package/dist/builtins/calendars/calendars.addon.js +1 -1
  19. package/dist/builtins/calendars/calendars.addon.mjs +1 -1
  20. package/dist/builtins/camera-grid/index.js +1 -1
  21. package/dist/builtins/camera-grid/index.mjs +1 -1
  22. package/dist/builtins/composer/composer.addon.js +2 -2
  23. package/dist/builtins/composer/composer.addon.mjs +2 -2
  24. package/dist/builtins/console-logging/index.js +1 -1
  25. package/dist/builtins/console-logging/index.mjs +1 -1
  26. package/dist/builtins/core-blocks/core-blocks.addon.js +2 -2
  27. package/dist/builtins/core-blocks/core-blocks.addon.mjs +2 -2
  28. package/dist/builtins/device-manager/device-manager.addon.js +2 -2
  29. package/dist/builtins/device-manager/device-manager.addon.mjs +2 -2
  30. package/dist/builtins/hub-forwarder/index.js +1 -1
  31. package/dist/builtins/hub-forwarder/index.mjs +1 -1
  32. package/dist/builtins/keychain/index.js +67 -11
  33. package/dist/builtins/keychain/index.mjs +67 -11
  34. package/dist/builtins/keychain/keychain-service.d.ts +14 -2
  35. package/dist/builtins/keychain/system-held-secrets.d.ts +11 -0
  36. package/dist/builtins/liveness-monitor/liveness-monitor.addon.js +1 -1
  37. package/dist/builtins/liveness-monitor/liveness-monitor.addon.mjs +1 -1
  38. package/dist/builtins/local-auth/admin-account-boot.d.ts +1 -1
  39. package/dist/builtins/local-auth/auth-config-reader.d.ts +9 -7
  40. package/dist/builtins/local-auth/jwt-signing-key-keeper.d.ts +30 -0
  41. package/dist/builtins/local-auth/local-auth.addon.d.ts +2 -6
  42. package/dist/builtins/local-auth/local-auth.addon.js +127 -221
  43. package/dist/builtins/local-auth/local-auth.addon.mjs +126 -220
  44. package/dist/builtins/local-network/local-network.addon.js +1 -1
  45. package/dist/builtins/local-network/local-network.addon.mjs +1 -1
  46. package/dist/builtins/loki-logging/index.js +1 -1
  47. package/dist/builtins/loki-logging/index.mjs +1 -1
  48. package/dist/builtins/native-metrics/native-metrics.addon.js +1 -1
  49. package/dist/builtins/native-metrics/native-metrics.addon.mjs +1 -1
  50. package/dist/builtins/platform-probe/index.js +1 -1
  51. package/dist/builtins/platform-probe/index.mjs +1 -1
  52. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.js +1 -1
  53. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.mjs +1 -1
  54. package/dist/builtins/snapshot/index.js +1 -1
  55. package/dist/builtins/snapshot/index.mjs +1 -1
  56. package/dist/builtins/sqlite-storage/filesystem-storage.addon.js +1 -1
  57. package/dist/builtins/sqlite-storage/filesystem-storage.addon.mjs +1 -1
  58. package/dist/builtins/sqlite-storage/sqlite-settings.addon.js +0 -0
  59. package/dist/builtins/sqlite-storage/sqlite-settings.addon.mjs +0 -0
  60. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.js +1 -1
  61. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.mjs +1 -1
  62. package/dist/builtins/system-config/cluster-secret-keeper.d.ts +36 -0
  63. package/dist/builtins/system-config/system-config.addon.d.ts +13 -0
  64. package/dist/builtins/system-config/system-config.addon.js +244 -53
  65. package/dist/builtins/system-config/system-config.addon.mjs +244 -54
  66. package/dist/builtins/winston-logging/index.js +1 -1
  67. package/dist/builtins/winston-logging/index.mjs +1 -1
  68. package/dist/{child-cap-dispatch-DlDSoqm1.js → child-cap-dispatch-CZeRUgYF.js} +1 -1
  69. package/dist/{child-cap-dispatch-CgmOo0yl.mjs → child-cap-dispatch-CpjohToR.mjs} +1 -1
  70. package/dist/cluster-secret-BDue-uJj.mjs +83 -0
  71. package/dist/cluster-secret-Dg0OOOSr.js +148 -0
  72. package/dist/{composition-sources-BNyXPSs_.js → composition-sources-CHvLMrFI.js} +1 -1
  73. package/dist/{composition-sources-D39bl0nP.mjs → composition-sources-DT_uJwI3.mjs} +1 -1
  74. package/dist/{dist-BWNoS-1S.mjs → dist-B9oFw2jh.mjs} +200 -3
  75. package/dist/{dist-D_a9mUiM.js → dist-Cc6KOdY-.js} +211 -2
  76. package/dist/{event-loop-stall-monitor-ClPhfx7Y.mjs → event-loop-stall-monitor-anUH2IE1.mjs} +21 -20
  77. package/dist/{event-loop-stall-monitor-DuOn8H1n.js → event-loop-stall-monitor-mk6WGxir.js} +21 -20
  78. package/dist/index.d.ts +4 -2
  79. package/dist/index.js +192 -62
  80. package/dist/index.mjs +171 -55
  81. package/dist/jwt-signing-key-C2rE3wH6.js +174 -0
  82. package/dist/jwt-signing-key-Qhde8r82.mjs +127 -0
  83. package/dist/kernel/config-manager.d.ts +1 -1
  84. package/dist/kernel/config-schema.d.ts +4 -11
  85. package/dist/kernel/index.d.ts +2 -1
  86. package/dist/kernel/moleculer/broker-factory.d.ts +0 -2
  87. package/dist/kernel/moleculer/cluster-secret.d.ts +31 -0
  88. package/dist/kernel/moleculer/hub-service.d.ts +7 -4
  89. package/dist/kernel/moleculer/node-registry.d.ts +1 -1
  90. package/dist/kernel/system-settings-policy.d.ts +7 -9
  91. package/dist/{retired-settings-keys-iGcmzwLV.mjs → retired-settings-keys-DlZ3VV6x.mjs} +1 -1
  92. package/dist/{retired-settings-keys-CDyOGAje.js → retired-settings-keys-YOOKLA3v.js} +1 -1
  93. package/package.json +1 -1
@@ -708,7 +708,7 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
708
708
  return EventCategory;
709
709
  }({});
710
710
  //#endregion
711
- //#region ../types/dist/sleep-Cr5YOk3m.mjs
711
+ //#region ../types/dist/sleep-DujUvOcb.mjs
712
712
  /**
713
713
  * The audio chunk plane's byte format, and the ONE expansion from a coded
714
714
  * window to float samples (D455).
@@ -1413,6 +1413,23 @@ function projectStore(store, perNodeKeys, nodeId) {
1413
1413
  }
1414
1414
  return out;
1415
1415
  }
1416
+ /**
1417
+ * The address of one keychain value: `secret://<owner>/<scope>/<fieldPath>`.
1418
+ *
1419
+ * A ref is DETERMINISTIC from where the value lives — the owner addon, the
1420
+ * scope (global, one node, one device, one integration, one row of a business
1421
+ * collection) and the field path inside that scope — so saving the same field
1422
+ * twice updates the same ref, and the ref itself says which settings blob
1423
+ * points at it. It is also the AAD of the value's ciphertext: a ciphertext
1424
+ * copied onto another ref does not decrypt.
1425
+ *
1426
+ * Array items are addressed by ITEM ID, never by index
1427
+ * (`providers[authentik].clientSecret`), so reordering a list keeps every ref.
1428
+ *
1429
+ * Pure and browser-safe: no node builtins, no I/O.
1430
+ */
1431
+ /** The URI scheme of every keychain ref. */
1432
+ var SECRET_REF_SCHEME = "secret://";
1416
1433
  var GLOBAL_SCOPE = { kind: "global" };
1417
1434
  /** The scope every addon-wide (not per-node, not per-device) setting lives in. */
1418
1435
  function globalSecretScope() {
@@ -1454,6 +1471,13 @@ function formatSecretScope(scope) {
1454
1471
  function arrayItemFieldPath(arrayKey, itemId, fieldKey) {
1455
1472
  return `${arrayKey}[${encodeSegment(itemId)}].${fieldKey}`;
1456
1473
  }
1474
+ /** Build a ref. Throws on an empty owner or field path — both are bugs. */
1475
+ function buildSecretRef(parts) {
1476
+ const owner = normalizeSecretOwner(parts.owner);
1477
+ if (owner.length === 0) throw new Error("buildSecretRef: owner is empty");
1478
+ if (parts.fieldPath.length === 0) throw new Error("buildSecretRef: fieldPath is empty");
1479
+ return `${SECRET_REF_SCHEME}${encodeSegment(owner)}/${formatSecretScope(parts.scope)}/${parts.fieldPath}`;
1480
+ }
1457
1481
  function parseScope(segments) {
1458
1482
  switch (segments[0]) {
1459
1483
  case "global": return {
@@ -15006,6 +15030,14 @@ var KeychainAuditEntrySchema = z.object({
15006
15030
  ref: z.string().nullable(),
15007
15031
  detail: z.string().nullable()
15008
15032
  });
15033
+ var KEYCHAIN_RESET_CONFIRMATION = "RESET KEYCHAIN";
15034
+ /**
15035
+ * Secrets the HUB itself holds (owner `system`) that no settings form shows:
15036
+ * `jwt-signing-key` — the session signing key (D797). It is always "in use",
15037
+ * never an orphan; it is generated on a fresh hub and replaced only through
15038
+ * {@link keychainAdminCapability.methods.setSystemSecret}.
15039
+ */
15040
+ var SystemHeldSecretNameSchema = z.enum(["jwt-signing-key"]);
15009
15041
  var keychainAdminCapability = {
15010
15042
  name: "keychain-admin",
15011
15043
  scope: "system",
@@ -15026,6 +15058,24 @@ var keychainAdminCapability = {
15026
15058
  auth: "admin",
15027
15059
  caller: "required"
15028
15060
  }),
15061
+ /**
15062
+ * Replace a system-held secret (no form edits it) with an operator-supplied
15063
+ * value — e.g. importing the session signing key a pre-keychain hub kept in
15064
+ * config.yaml, so the tokens it signed stay valid. Audited as the operator.
15065
+ * Replacing the session signing key invalidates every token signed with the
15066
+ * previous one.
15067
+ */
15068
+ setSystemSecret: method(z.object({
15069
+ name: SystemHeldSecretNameSchema,
15070
+ value: z.string().min(16)
15071
+ }), z.object({
15072
+ ref: z.string(),
15073
+ version: z.number().int()
15074
+ }), {
15075
+ kind: "mutation",
15076
+ auth: "admin",
15077
+ caller: "required"
15078
+ }),
15029
15079
  /** Delete refs no owner points at any more. Re-checked here; `unknown` is kept. */
15030
15080
  deleteOrphans: method(z.object({ refs: z.array(z.string().min(1)).max(1e3) }), z.object({
15031
15081
  deleted: z.array(z.string()).readonly(),
@@ -15078,7 +15128,7 @@ var keychainAdminCapability = {
15078
15128
  * key. Every secret field then reads "not set". Requires the typed
15079
15129
  * confirmation {@link KEYCHAIN_RESET_CONFIRMATION}.
15080
15130
  */
15081
- resetKeychain: method(z.object({ confirm: z.literal("RESET KEYCHAIN") }), z.object({
15131
+ resetKeychain: method(z.object({ confirm: z.literal(KEYCHAIN_RESET_CONFIRMATION) }), z.object({
15082
15132
  archivedCollection: z.string().nullable(),
15083
15133
  archived: z.number().int()
15084
15134
  }), {
@@ -25402,6 +25452,9 @@ var RetrainExportFilterSchema = z.object({
25402
25452
  frameIds: z.array(z.string()).max(2e4).optional(),
25403
25453
  /** Only frames in at least one of these named collections. */
25404
25454
  collectionIds: z.array(z.string()).max(200).optional(),
25455
+ /** Exactly the frames of this dataset version (and its completeOnly). An
25456
+ * unknown id selects nothing. */
25457
+ datasetVersionId: z.string().optional(),
25405
25458
  batchId: z.string().optional(),
25406
25459
  /** Only frames the operator marked complete (all subjects boxed). */
25407
25460
  completeOnly: z.boolean().optional()
@@ -25569,6 +25622,67 @@ var RetrainLlmAssistResultSchema = z.discriminatedUnion("kind", [z.object({
25569
25622
  ]),
25570
25623
  detail: z.string().optional()
25571
25624
  })]);
25625
+ /** What a dataset version is cut from. Every field narrows. */
25626
+ var RetrainDatasetSelectionSchema = z.object({
25627
+ deviceIds: z.array(z.number()).readonly().optional(),
25628
+ collectionIds: z.array(z.string()).max(200).readonly().optional(),
25629
+ frameIds: z.array(z.string()).max(2e4).readonly().optional()
25630
+ });
25631
+ /** The counts a dataset is judged by. */
25632
+ var RetrainDatasetStatsSchema = z.object({
25633
+ frames: z.number().int(),
25634
+ completeFrames: z.number().int(),
25635
+ /** `completeFrames / frames`, 0..1. */
25636
+ completeness: z.number(),
25637
+ /** Boxes to learn (model errors excluded). */
25638
+ subjects: z.number().int(),
25639
+ modelErrors: z.number().int(),
25640
+ /** Complete frames with no subject. */
25641
+ hardNegatives: z.number().int(),
25642
+ /** Subjects per class × camera × day/night. */
25643
+ cells: z.array(z.object({
25644
+ macroClass: z.string(),
25645
+ deviceId: z.number(),
25646
+ lighting: z.enum([
25647
+ "day",
25648
+ "night",
25649
+ "unknown"
25650
+ ]),
25651
+ subjects: z.number().int(),
25652
+ frames: z.number().int()
25653
+ })).readonly(),
25654
+ cameras: z.array(z.object({
25655
+ deviceId: z.number(),
25656
+ frames: z.number().int(),
25657
+ completeFrames: z.number().int()
25658
+ })).readonly()
25659
+ });
25660
+ /** An immutable dataset version, without its frame list. */
25661
+ var RetrainDatasetVersionSchema = z.object({
25662
+ id: z.string(),
25663
+ name: z.string(),
25664
+ createdAt: z.number(),
25665
+ selection: RetrainDatasetSelectionSchema,
25666
+ layout: RetrainExportLayoutSchema,
25667
+ completeOnly: z.boolean(),
25668
+ frameCount: z.number().int(),
25669
+ /** sha256 of what the frames taught when the version was frozen. */
25670
+ annotationHash: z.string(),
25671
+ /** The export manifest schema the version was cut under. */
25672
+ manifestSchema: z.string(),
25673
+ stats: RetrainDatasetStatsSchema
25674
+ });
25675
+ var CreateRetrainDatasetVersionResultSchema = z.discriminatedUnion("kind", [z.object({
25676
+ kind: z.literal("created"),
25677
+ version: RetrainDatasetVersionSchema
25678
+ }), z.object({
25679
+ kind: z.literal("refused"),
25680
+ reason: z.enum([
25681
+ "empty-name",
25682
+ "duplicate-name",
25683
+ "no-frames"
25684
+ ])
25685
+ })]);
25572
25686
  /** The outcome of a lifecycle move owned by the retrain page. */
25573
25687
  var RetrainTransitionResultSchema = z.object({
25574
25688
  trackId: z.string(),
@@ -26919,6 +27033,53 @@ var pipelineAnalyticsCapability = {
26919
27033
  auth: "admin",
26920
27034
  timeoutMs: 60 * 6e4
26921
27035
  }),
27036
+ /** The counts a selection would freeze — class × camera × day/night,
27037
+ * completeness — without freezing anything. Index reads only. */
27038
+ previewRetrainDataset: method(z.object({
27039
+ selection: RetrainDatasetSelectionSchema,
27040
+ completeOnly: z.boolean().optional()
27041
+ }), RetrainDatasetStatsSchema, {
27042
+ kind: "query",
27043
+ auth: "admin"
27044
+ }),
27045
+ /**
27046
+ * Freeze a dataset version: the frames the selection yields (the same plan
27047
+ * the annotated export builds), the hash of what they teach, the export
27048
+ * parameters and the counts. Immutable — a different selection is a new
27049
+ * version. Export it with `getRetrainExportUrl({ datasetVersionId })`.
27050
+ */
27051
+ createRetrainDatasetVersion: method(z.object({
27052
+ name: z.string().max(120),
27053
+ selection: RetrainDatasetSelectionSchema,
27054
+ layout: RetrainExportLayoutSchema,
27055
+ completeOnly: z.boolean()
27056
+ }), CreateRetrainDatasetVersionResultSchema, {
27057
+ kind: "mutation",
27058
+ auth: "admin",
27059
+ timeoutMs: 12e4
27060
+ }),
27061
+ /** Every dataset version, newest first. */
27062
+ listRetrainDatasetVersions: method(z.object({}), z.array(RetrainDatasetVersionSchema).readonly(), {
27063
+ kind: "query",
27064
+ auth: "admin"
27065
+ }),
27066
+ /** Delete a version. Its frames stay in the dataset. */
27067
+ deleteRetrainDatasetVersion: method(z.object({ id: z.string() }), z.object({ deleted: z.boolean() }), {
27068
+ kind: "mutation",
27069
+ auth: "admin"
27070
+ }),
27071
+ /** Does the corpus still teach what the version froze? `missingFrames`
27072
+ * counts frames that left the dataset (or lost every box and tick). */
27073
+ verifyRetrainDatasetVersion: method(z.object({ id: z.string() }), z.object({
27074
+ found: z.boolean(),
27075
+ annotationHash: z.string(),
27076
+ matches: z.boolean(),
27077
+ missingFrames: z.number().int()
27078
+ }), {
27079
+ kind: "query",
27080
+ auth: "admin",
27081
+ timeoutMs: 12e4
27082
+ }),
26922
27083
  /** The enabled, vision-capable LLM profiles, each saying whether a frame
26923
27084
  * sent to it leaves the house. */
26924
27085
  listRetrainAssistProfiles: method(z.object({}), z.array(RetrainAssistProfileSchema).readonly(), {
@@ -52312,6 +52473,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
52312
52473
  addonId: null,
52313
52474
  access: "create"
52314
52475
  },
52476
+ "keychainAdmin.setSystemSecret": {
52477
+ capName: "keychain-admin",
52478
+ capScope: "system",
52479
+ addonId: null,
52480
+ access: "create"
52481
+ },
52315
52482
  "keychainAdmin.status": {
52316
52483
  capName: "keychain-admin",
52317
52484
  capScope: "system",
@@ -53758,6 +53925,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
53758
53925
  addonId: null,
53759
53926
  access: "create"
53760
53927
  },
53928
+ "pipelineAnalytics.createRetrainDatasetVersion": {
53929
+ capName: "pipeline-analytics",
53930
+ capScope: "device",
53931
+ addonId: null,
53932
+ access: "create"
53933
+ },
53761
53934
  "pipelineAnalytics.deleteDeviceEvents": {
53762
53935
  capName: "pipeline-analytics",
53763
53936
  capScope: "device",
@@ -53770,6 +53943,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
53770
53943
  addonId: null,
53771
53944
  access: "delete"
53772
53945
  },
53946
+ "pipelineAnalytics.deleteRetrainDatasetVersion": {
53947
+ capName: "pipeline-analytics",
53948
+ capScope: "device",
53949
+ addonId: null,
53950
+ access: "delete"
53951
+ },
53773
53952
  "pipelineAnalytics.deleteTracks": {
53774
53953
  capName: "pipeline-analytics",
53775
53954
  capScope: "device",
@@ -53992,6 +54171,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
53992
54171
  addonId: null,
53993
54172
  access: "view"
53994
54173
  },
54174
+ "pipelineAnalytics.listRetrainDatasetVersions": {
54175
+ capName: "pipeline-analytics",
54176
+ capScope: "device",
54177
+ addonId: null,
54178
+ access: "view"
54179
+ },
53995
54180
  "pipelineAnalytics.listRetrainFrames": {
53996
54181
  capName: "pipeline-analytics",
53997
54182
  capScope: "device",
@@ -54034,6 +54219,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
54034
54219
  addonId: null,
54035
54220
  access: "create"
54036
54221
  },
54222
+ "pipelineAnalytics.previewRetrainDataset": {
54223
+ capName: "pipeline-analytics",
54224
+ capScope: "device",
54225
+ addonId: null,
54226
+ access: "view"
54227
+ },
54037
54228
  "pipelineAnalytics.proposeRetrainAnnotations": {
54038
54229
  capName: "pipeline-analytics",
54039
54230
  capScope: "device",
@@ -54172,6 +54363,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
54172
54363
  addonId: null,
54173
54364
  access: "create"
54174
54365
  },
54366
+ "pipelineAnalytics.verifyRetrainDatasetVersion": {
54367
+ capName: "pipeline-analytics",
54368
+ capScope: "device",
54369
+ addonId: null,
54370
+ access: "view"
54371
+ },
54175
54372
  "pipelineAnalytics.wipeAllAnalytics": {
54176
54373
  capName: "pipeline-analytics",
54177
54374
  capScope: "device",
@@ -62908,4 +63105,4 @@ function enumerateInferenceDevices(hw) {
62908
63105
  return out;
62909
63106
  }
62910
63107
  //#endregion
62911
- export { buildStreamParamsConfigSchema as $, compositionItemFieldPath as $n, looseSchema as $t, MINUTES_PER_DAY as A, scoreRuntimes as An, isSecretMarker as Ar, extractNestedAddonId as At, StorageLocationModeSchema as B, userManagementCapability as Bn, scrubKnownSecrets as Br, isLocationEnabled as Bt, FieldClaimModeSchema as C, resolveHubAddressRoles as Cn, emitDownForOwnedCaps as Cr, enumerateInferenceDevices as Ct, LegacyStorageLocationDefaultSchema as D, runtimeStatePolicyFor as Dn, hydrateSchema as Dr, evictionPolicyOfLocation as Dt, LOG_LEVEL_RANK as E, resolveNotificationTapAddress as En, formatSecretScope as Er, evaluateCompositionField as Et, RecordingStatusSchema as F, storageMigrationCapability as Fn, parseSecretRef as Fr, hfModelUrl as Ft, addonSettingsCapability as G, vectorStoreCapability as Gn, EventCategory as Gr, keychainCapability as Gt, StorageMigrationJobSchema as H, validateCustomAddress as Hn, sleep as Hr, isVoidInput as Ht, STORAGE_ACCESS_FALLBACK as I, storageOccupancyCapability as In, readinessKey as Ir, isAppLinkBase as It, authProviderCapability as J, buildFfmpegArgs as Jn, lifecycleJobSchema as Jt, addonWidgetsCapability as K, withLocationMode as Kn, legacyAutoLinkIds as Kt, STREAM_PROFILE_META as L, storageProviderCapability as Ln, resolveCapMount as Lr, isArrayOutputSchema as Lt, MOTION_CLOSE_AFTER_MS as M, siteZoneKey as Mn, normalizeSecretOwner as Mr, foldSnapshotByFunction as Mt, RECORDING_SOURCE_CAMSTACK_ADDON as N, snapshotCapability as Nn, parseJsonObject as Nr, formatMinutes as Nt, LocationIconIdSchema as O, scopesAllowAddon as On, isDeviceConfigCap as Or, expandContainer as Ot, RUNTIME_DEFAULTS as P, storageCapability as Pn, parseJsonUnknown as Pr, gbToBytes as Pt, buildCapabilityLookup as Q, compositionFeatureEnabled as Qn, logLevelAtMost as Qt, ScopedTokenSchema as R, streamCatalogCapability as Rn, resolveSecretMarkers as Rr, isCollectionArrayMethod as Rt, FIRST_LEVEL_MACRO_CLASSES as S, resolveCoreBlockFiles as Sn, createEvent as Sr, deviceStatusCapability as St, HF_REPO as T, resolveMethodAuth as Tn, expandCapMethods as Tr, enumerateSchemaFields as Tt, UserRecordSchema as U, vectorDimFromBase64 as Un, toNodeId as Ur, kebabToCamel as Ut, StorageLocationTypeSchema as V, validateComposition as Vn, secretTreeFromPaths as Vr, isObjectInput as Vt, addonPagesCapability as W, vectorIndexDimConflictError as Wn, transformSecretWrite as Wr, keychainAdminCapability as Wt, bareAddonId as X, composedDeviceRef as Xn, locationIconKey as Xt, backupCapability as Y, cloneStatefulExpressionMemory as Yn, localNetworkCapability as Yt, batteryCapability as Z, composedDeviceStableId as Zn, logDestinationCapability as Zt, DATABASE_SNAPSHOT_TIMEOUT_MS as _, reducePoints as _n, asJsonObject as _r, deriveBatteryPresence as _t, BatteryStatusSchema as a, modeMayWrite as an, DeviceFeature as ar, compositionSourceRefs as at, DeclaredDevices as b, resolveBucketMs as bn, collectSecretConfigKeys as br, deviceManagerCapability as bt, CAP_NAMES_WITH_STATUS as c, normalizeUnit as cn, errMsg as cr, coreBlockIdFromAddonId as ct, CORE_BLOCKS_ADDON_ID as d, parseStreamParamsFormPatch as dn, DEVICE_SETTINGS_CONTRIBUTION_METHODS as dr, createDeviceExtensionProvider as dt, maskUrlCredentials as en, compositionSliceKey as er, calendarsCapability as et, CORE_BLOCK_ADDON_PREFIX as f, pickAppLinkHub as fn, DEVICE_STATUS_METHOD as fr, dataStoreProviderCapability as ft, DATABASE_SNAPSHOT_SUFFIX as g, ptzAutotrackCapability as gn, WELL_KNOWN_TAB_MAP as gr, defineExtensionSlotProvider as gt, DATABASE_SNAPSHOT_PARTIAL_SUFFIX as h, procedureAuthKey as hn, ReadinessTimeoutError as hr, decodeVectorBase64 as ht, BaseDevice as i, metricsProviderCapability as in, toExpressionValue as ir, compositionFieldKey as it, MODEL_FORMATS as j, settingsStoreCapability as jn, nodePin as jr, filesystemBrowseCapability as jt, METHOD_ACCESS_MAP as k, scopesAllowDeviceCap as kn, isEvent as kr, expressionContainsBuiltinCall as kt, COMPOSED_ITEM_FIXED_FIELDS as l, objectInputDeclaresAddonId as ln, BaseAddon as lr, coreBlockSourceKind as lt, CoreBlockSchema as m, platformProbeCapability as mn, ReadinessRegistry as mr, declarationOwnerNodeId as mt, AlertSchema as n, mayWriteToLocation as nn, createStatefulExpressionMemory as nr, checkRoleAddress as nt, CAMERA_SWITCH_ORDER as o, motionCapability as on, DeviceRole as or, coreBlockAddonId as ot, CalendarPreferencesSchema as p, planComposition as pn, REDACTED_SECRET as pr, databaseSnapshotCapability as pt, alertsCapability as q, COMPOSER_ADDON_ID as qn, legacyModeOf as qt, ApiKeyRecordSchema as r, memoizePinnedFfmpeg as rn, disarmRoseMemory as rr, composerCapability as rt, CAMSTACK_APP_LINK_ORIGIN as s, normalizeCoreBlockWrite as sn, DeviceType as sr, coreBlockComposition as st, ALL_CAPABILITY_DEFINITIONS as t, mayReadLocation as tn, compositionSourceKey as tr, cameraGridLayoutCapability as tt, COMPOSER_RUNNER_ID as u, objectInputDeclaresRequiredDeviceId as un, DATAPLANE_SECRET_HEADER as ur, coreBlocksCapability as ut, DAY_NAMES as v, replacedFieldKeys as vn, asNumber as vr, describeComposableCaps as vt, FieldClaimSchema as w, resolveLocationMode as wn, emitReadiness as wr, enumerateItemArrayFields as wt, DeviceStatusSchema as x, resolveCoreBlockEntry as xn, collectZodSecretPaths as xr, deviceStateCapability as xt, DERIVED_CAMERA_SILENCED_CAP_NAMES as y, resolveAppConnections as yn, asString$1 as yr, deviceExtensionCapability as yt, StorageCleanupJobSchema as z, streamQualityLabel as zn, scopeKey as zr, isDefaultAppConnectionEndpoint as zt };
63108
+ export { buildStreamParamsConfigSchema as $, compositionItemFieldPath as $n, looseSchema as $t, MINUTES_PER_DAY as A, scoreRuntimes as An, isEvent as Ar, extractNestedAddonId as At, StorageLocationModeSchema as B, userManagementCapability as Bn, scopeKey as Br, isLocationEnabled as Bt, FieldClaimModeSchema as C, resolveHubAddressRoles as Cn, createEvent as Cr, enumerateInferenceDevices as Ct, LegacyStorageLocationDefaultSchema as D, runtimeStatePolicyFor as Dn, formatSecretScope as Dr, evictionPolicyOfLocation as Dt, LOG_LEVEL_RANK as E, resolveNotificationTapAddress as En, expandCapMethods as Er, evaluateCompositionField as Et, RecordingStatusSchema as F, storageMigrationCapability as Fn, parseJsonUnknown as Fr, hfModelUrl as Ft, addonSettingsCapability as G, vectorStoreCapability as Gn, toNodeId as Gr, keychainCapability as Gt, StorageMigrationJobSchema as H, validateCustomAddress as Hn, secretTreeFromPaths as Hr, isVoidInput as Ht, STORAGE_ACCESS_FALLBACK as I, storageOccupancyCapability as In, parseSecretRef as Ir, isAppLinkBase as It, authProviderCapability as J, buildFfmpegArgs as Jn, lifecycleJobSchema as Jt, addonWidgetsCapability as K, withLocationMode as Kn, transformSecretWrite as Kr, legacyAutoLinkIds as Kt, STREAM_PROFILE_META as L, storageProviderCapability as Ln, readinessKey as Lr, isArrayOutputSchema as Lt, MOTION_CLOSE_AFTER_MS as M, siteZoneKey as Mn, nodePin as Mr, foldSnapshotByFunction as Mt, RECORDING_SOURCE_CAMSTACK_ADDON as N, snapshotCapability as Nn, normalizeSecretOwner as Nr, formatMinutes as Nt, LocationIconIdSchema as O, scopesAllowAddon as On, hydrateSchema as Or, expandContainer as Ot, RUNTIME_DEFAULTS as P, storageCapability as Pn, parseJsonObject as Pr, gbToBytes as Pt, buildCapabilityLookup as Q, compositionFeatureEnabled as Qn, logLevelAtMost as Qt, ScopedTokenSchema as R, streamCatalogCapability as Rn, resolveCapMount as Rr, isCollectionArrayMethod as Rt, FIRST_LEVEL_MACRO_CLASSES as S, resolveCoreBlockFiles as Sn, collectZodSecretPaths as Sr, deviceStatusCapability as St, HF_REPO as T, resolveMethodAuth as Tn, emitReadiness as Tr, enumerateSchemaFields as Tt, UserRecordSchema as U, vectorDimFromBase64 as Un, secretTreeFromSchema as Ur, kebabToCamel as Ut, StorageLocationTypeSchema as V, validateComposition as Vn, scrubKnownSecrets as Vr, isObjectInput as Vt, addonPagesCapability as W, vectorIndexDimConflictError as Wn, sleep as Wr, keychainAdminCapability as Wt, bareAddonId as X, composedDeviceRef as Xn, locationIconKey as Xt, backupCapability as Y, cloneStatefulExpressionMemory as Yn, localNetworkCapability as Yt, batteryCapability as Z, composedDeviceStableId as Zn, logDestinationCapability as Zt, DATABASE_SNAPSHOT_TIMEOUT_MS as _, reducePoints as _n, asJsonObject as _r, deriveBatteryPresence as _t, BatteryStatusSchema as a, modeMayWrite as an, DeviceFeature as ar, compositionSourceRefs as at, DeclaredDevices as b, resolveBucketMs as bn, buildSecretRef as br, deviceManagerCapability as bt, CAP_NAMES_WITH_STATUS as c, normalizeUnit as cn, errMsg as cr, coreBlockIdFromAddonId as ct, CORE_BLOCKS_ADDON_ID as d, parseStreamParamsFormPatch as dn, DEVICE_SETTINGS_CONTRIBUTION_METHODS as dr, createDeviceExtensionProvider as dt, maskUrlCredentials as en, compositionSliceKey as er, calendarsCapability as et, CORE_BLOCK_ADDON_PREFIX as f, pickAppLinkHub as fn, DEVICE_STATUS_METHOD as fr, dataStoreProviderCapability as ft, DATABASE_SNAPSHOT_SUFFIX as g, ptzAutotrackCapability as gn, WELL_KNOWN_TAB_MAP as gr, defineExtensionSlotProvider as gt, DATABASE_SNAPSHOT_PARTIAL_SUFFIX as h, procedureAuthKey as hn, ReadinessTimeoutError as hr, decodeVectorBase64 as ht, BaseDevice as i, metricsProviderCapability as in, toExpressionValue as ir, compositionFieldKey as it, MODEL_FORMATS as j, settingsStoreCapability as jn, isSecretMarker as jr, filesystemBrowseCapability as jt, METHOD_ACCESS_MAP as k, scopesAllowDeviceCap as kn, isDeviceConfigCap as kr, expressionContainsBuiltinCall as kt, COMPOSED_ITEM_FIXED_FIELDS as l, objectInputDeclaresAddonId as ln, BaseAddon as lr, coreBlockSourceKind as lt, CoreBlockSchema as m, platformProbeCapability as mn, ReadinessRegistry as mr, declarationOwnerNodeId as mt, AlertSchema as n, mayWriteToLocation as nn, createStatefulExpressionMemory as nr, checkRoleAddress as nt, CAMERA_SWITCH_ORDER as o, motionCapability as on, DeviceRole as or, coreBlockAddonId as ot, CalendarPreferencesSchema as p, planComposition as pn, REDACTED_SECRET as pr, databaseSnapshotCapability as pt, alertsCapability as q, COMPOSER_ADDON_ID as qn, EventCategory as qr, legacyModeOf as qt, ApiKeyRecordSchema as r, memoizePinnedFfmpeg as rn, disarmRoseMemory as rr, composerCapability as rt, CAMSTACK_APP_LINK_ORIGIN as s, normalizeCoreBlockWrite as sn, DeviceType as sr, coreBlockComposition as st, ALL_CAPABILITY_DEFINITIONS as t, mayReadLocation as tn, compositionSourceKey as tr, cameraGridLayoutCapability as tt, COMPOSER_RUNNER_ID as u, objectInputDeclaresRequiredDeviceId as un, DATAPLANE_SECRET_HEADER as ur, coreBlocksCapability as ut, DAY_NAMES as v, replacedFieldKeys as vn, asNumber as vr, describeComposableCaps as vt, FieldClaimSchema as w, resolveLocationMode as wn, emitDownForOwnedCaps as wr, enumerateItemArrayFields as wt, DeviceStatusSchema as x, resolveCoreBlockEntry as xn, collectSecretConfigKeys as xr, deviceStateCapability as xt, DERIVED_CAMERA_SILENCED_CAP_NAMES as y, resolveAppConnections as yn, asString$1 as yr, deviceExtensionCapability as yt, StorageCleanupJobSchema as z, streamQualityLabel as zn, resolveSecretMarkers as zr, isDefaultAppConnectionEndpoint as zt };
@@ -708,7 +708,7 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
708
708
  return EventCategory;
709
709
  }({});
710
710
  //#endregion
711
- //#region ../types/dist/sleep-Cr5YOk3m.mjs
711
+ //#region ../types/dist/sleep-DujUvOcb.mjs
712
712
  /**
713
713
  * The audio chunk plane's byte format, and the ONE expansion from a coded
714
714
  * window to float samples (D455).
@@ -1413,6 +1413,23 @@ function projectStore(store, perNodeKeys, nodeId) {
1413
1413
  }
1414
1414
  return out;
1415
1415
  }
1416
+ /**
1417
+ * The address of one keychain value: `secret://<owner>/<scope>/<fieldPath>`.
1418
+ *
1419
+ * A ref is DETERMINISTIC from where the value lives — the owner addon, the
1420
+ * scope (global, one node, one device, one integration, one row of a business
1421
+ * collection) and the field path inside that scope — so saving the same field
1422
+ * twice updates the same ref, and the ref itself says which settings blob
1423
+ * points at it. It is also the AAD of the value's ciphertext: a ciphertext
1424
+ * copied onto another ref does not decrypt.
1425
+ *
1426
+ * Array items are addressed by ITEM ID, never by index
1427
+ * (`providers[authentik].clientSecret`), so reordering a list keeps every ref.
1428
+ *
1429
+ * Pure and browser-safe: no node builtins, no I/O.
1430
+ */
1431
+ /** The URI scheme of every keychain ref. */
1432
+ var SECRET_REF_SCHEME = "secret://";
1416
1433
  var GLOBAL_SCOPE = { kind: "global" };
1417
1434
  /** The scope every addon-wide (not per-node, not per-device) setting lives in. */
1418
1435
  function globalSecretScope() {
@@ -1454,6 +1471,13 @@ function formatSecretScope(scope) {
1454
1471
  function arrayItemFieldPath(arrayKey, itemId, fieldKey) {
1455
1472
  return `${arrayKey}[${encodeSegment(itemId)}].${fieldKey}`;
1456
1473
  }
1474
+ /** Build a ref. Throws on an empty owner or field path — both are bugs. */
1475
+ function buildSecretRef(parts) {
1476
+ const owner = normalizeSecretOwner(parts.owner);
1477
+ if (owner.length === 0) throw new Error("buildSecretRef: owner is empty");
1478
+ if (parts.fieldPath.length === 0) throw new Error("buildSecretRef: fieldPath is empty");
1479
+ return `${SECRET_REF_SCHEME}${encodeSegment(owner)}/${formatSecretScope(parts.scope)}/${parts.fieldPath}`;
1480
+ }
1457
1481
  function parseScope(segments) {
1458
1482
  switch (segments[0]) {
1459
1483
  case "global": return {
@@ -15006,6 +15030,14 @@ var KeychainAuditEntrySchema = zod.z.object({
15006
15030
  ref: zod.z.string().nullable(),
15007
15031
  detail: zod.z.string().nullable()
15008
15032
  });
15033
+ var KEYCHAIN_RESET_CONFIRMATION = "RESET KEYCHAIN";
15034
+ /**
15035
+ * Secrets the HUB itself holds (owner `system`) that no settings form shows:
15036
+ * `jwt-signing-key` — the session signing key (D797). It is always "in use",
15037
+ * never an orphan; it is generated on a fresh hub and replaced only through
15038
+ * {@link keychainAdminCapability.methods.setSystemSecret}.
15039
+ */
15040
+ var SystemHeldSecretNameSchema = zod.z.enum(["jwt-signing-key"]);
15009
15041
  var keychainAdminCapability = {
15010
15042
  name: "keychain-admin",
15011
15043
  scope: "system",
@@ -15026,6 +15058,24 @@ var keychainAdminCapability = {
15026
15058
  auth: "admin",
15027
15059
  caller: "required"
15028
15060
  }),
15061
+ /**
15062
+ * Replace a system-held secret (no form edits it) with an operator-supplied
15063
+ * value — e.g. importing the session signing key a pre-keychain hub kept in
15064
+ * config.yaml, so the tokens it signed stay valid. Audited as the operator.
15065
+ * Replacing the session signing key invalidates every token signed with the
15066
+ * previous one.
15067
+ */
15068
+ setSystemSecret: method(zod.z.object({
15069
+ name: SystemHeldSecretNameSchema,
15070
+ value: zod.z.string().min(16)
15071
+ }), zod.z.object({
15072
+ ref: zod.z.string(),
15073
+ version: zod.z.number().int()
15074
+ }), {
15075
+ kind: "mutation",
15076
+ auth: "admin",
15077
+ caller: "required"
15078
+ }),
15029
15079
  /** Delete refs no owner points at any more. Re-checked here; `unknown` is kept. */
15030
15080
  deleteOrphans: method(zod.z.object({ refs: zod.z.array(zod.z.string().min(1)).max(1e3) }), zod.z.object({
15031
15081
  deleted: zod.z.array(zod.z.string()).readonly(),
@@ -15078,7 +15128,7 @@ var keychainAdminCapability = {
15078
15128
  * key. Every secret field then reads "not set". Requires the typed
15079
15129
  * confirmation {@link KEYCHAIN_RESET_CONFIRMATION}.
15080
15130
  */
15081
- resetKeychain: method(zod.z.object({ confirm: zod.z.literal("RESET KEYCHAIN") }), zod.z.object({
15131
+ resetKeychain: method(zod.z.object({ confirm: zod.z.literal(KEYCHAIN_RESET_CONFIRMATION) }), zod.z.object({
15082
15132
  archivedCollection: zod.z.string().nullable(),
15083
15133
  archived: zod.z.number().int()
15084
15134
  }), {
@@ -25402,6 +25452,9 @@ var RetrainExportFilterSchema = zod.z.object({
25402
25452
  frameIds: zod.z.array(zod.z.string()).max(2e4).optional(),
25403
25453
  /** Only frames in at least one of these named collections. */
25404
25454
  collectionIds: zod.z.array(zod.z.string()).max(200).optional(),
25455
+ /** Exactly the frames of this dataset version (and its completeOnly). An
25456
+ * unknown id selects nothing. */
25457
+ datasetVersionId: zod.z.string().optional(),
25405
25458
  batchId: zod.z.string().optional(),
25406
25459
  /** Only frames the operator marked complete (all subjects boxed). */
25407
25460
  completeOnly: zod.z.boolean().optional()
@@ -25569,6 +25622,67 @@ var RetrainLlmAssistResultSchema = zod.z.discriminatedUnion("kind", [zod.z.objec
25569
25622
  ]),
25570
25623
  detail: zod.z.string().optional()
25571
25624
  })]);
25625
+ /** What a dataset version is cut from. Every field narrows. */
25626
+ var RetrainDatasetSelectionSchema = zod.z.object({
25627
+ deviceIds: zod.z.array(zod.z.number()).readonly().optional(),
25628
+ collectionIds: zod.z.array(zod.z.string()).max(200).readonly().optional(),
25629
+ frameIds: zod.z.array(zod.z.string()).max(2e4).readonly().optional()
25630
+ });
25631
+ /** The counts a dataset is judged by. */
25632
+ var RetrainDatasetStatsSchema = zod.z.object({
25633
+ frames: zod.z.number().int(),
25634
+ completeFrames: zod.z.number().int(),
25635
+ /** `completeFrames / frames`, 0..1. */
25636
+ completeness: zod.z.number(),
25637
+ /** Boxes to learn (model errors excluded). */
25638
+ subjects: zod.z.number().int(),
25639
+ modelErrors: zod.z.number().int(),
25640
+ /** Complete frames with no subject. */
25641
+ hardNegatives: zod.z.number().int(),
25642
+ /** Subjects per class × camera × day/night. */
25643
+ cells: zod.z.array(zod.z.object({
25644
+ macroClass: zod.z.string(),
25645
+ deviceId: zod.z.number(),
25646
+ lighting: zod.z.enum([
25647
+ "day",
25648
+ "night",
25649
+ "unknown"
25650
+ ]),
25651
+ subjects: zod.z.number().int(),
25652
+ frames: zod.z.number().int()
25653
+ })).readonly(),
25654
+ cameras: zod.z.array(zod.z.object({
25655
+ deviceId: zod.z.number(),
25656
+ frames: zod.z.number().int(),
25657
+ completeFrames: zod.z.number().int()
25658
+ })).readonly()
25659
+ });
25660
+ /** An immutable dataset version, without its frame list. */
25661
+ var RetrainDatasetVersionSchema = zod.z.object({
25662
+ id: zod.z.string(),
25663
+ name: zod.z.string(),
25664
+ createdAt: zod.z.number(),
25665
+ selection: RetrainDatasetSelectionSchema,
25666
+ layout: RetrainExportLayoutSchema,
25667
+ completeOnly: zod.z.boolean(),
25668
+ frameCount: zod.z.number().int(),
25669
+ /** sha256 of what the frames taught when the version was frozen. */
25670
+ annotationHash: zod.z.string(),
25671
+ /** The export manifest schema the version was cut under. */
25672
+ manifestSchema: zod.z.string(),
25673
+ stats: RetrainDatasetStatsSchema
25674
+ });
25675
+ var CreateRetrainDatasetVersionResultSchema = zod.z.discriminatedUnion("kind", [zod.z.object({
25676
+ kind: zod.z.literal("created"),
25677
+ version: RetrainDatasetVersionSchema
25678
+ }), zod.z.object({
25679
+ kind: zod.z.literal("refused"),
25680
+ reason: zod.z.enum([
25681
+ "empty-name",
25682
+ "duplicate-name",
25683
+ "no-frames"
25684
+ ])
25685
+ })]);
25572
25686
  /** The outcome of a lifecycle move owned by the retrain page. */
25573
25687
  var RetrainTransitionResultSchema = zod.z.object({
25574
25688
  trackId: zod.z.string(),
@@ -26919,6 +27033,53 @@ var pipelineAnalyticsCapability = {
26919
27033
  auth: "admin",
26920
27034
  timeoutMs: 60 * 6e4
26921
27035
  }),
27036
+ /** The counts a selection would freeze — class × camera × day/night,
27037
+ * completeness — without freezing anything. Index reads only. */
27038
+ previewRetrainDataset: method(zod.z.object({
27039
+ selection: RetrainDatasetSelectionSchema,
27040
+ completeOnly: zod.z.boolean().optional()
27041
+ }), RetrainDatasetStatsSchema, {
27042
+ kind: "query",
27043
+ auth: "admin"
27044
+ }),
27045
+ /**
27046
+ * Freeze a dataset version: the frames the selection yields (the same plan
27047
+ * the annotated export builds), the hash of what they teach, the export
27048
+ * parameters and the counts. Immutable — a different selection is a new
27049
+ * version. Export it with `getRetrainExportUrl({ datasetVersionId })`.
27050
+ */
27051
+ createRetrainDatasetVersion: method(zod.z.object({
27052
+ name: zod.z.string().max(120),
27053
+ selection: RetrainDatasetSelectionSchema,
27054
+ layout: RetrainExportLayoutSchema,
27055
+ completeOnly: zod.z.boolean()
27056
+ }), CreateRetrainDatasetVersionResultSchema, {
27057
+ kind: "mutation",
27058
+ auth: "admin",
27059
+ timeoutMs: 12e4
27060
+ }),
27061
+ /** Every dataset version, newest first. */
27062
+ listRetrainDatasetVersions: method(zod.z.object({}), zod.z.array(RetrainDatasetVersionSchema).readonly(), {
27063
+ kind: "query",
27064
+ auth: "admin"
27065
+ }),
27066
+ /** Delete a version. Its frames stay in the dataset. */
27067
+ deleteRetrainDatasetVersion: method(zod.z.object({ id: zod.z.string() }), zod.z.object({ deleted: zod.z.boolean() }), {
27068
+ kind: "mutation",
27069
+ auth: "admin"
27070
+ }),
27071
+ /** Does the corpus still teach what the version froze? `missingFrames`
27072
+ * counts frames that left the dataset (or lost every box and tick). */
27073
+ verifyRetrainDatasetVersion: method(zod.z.object({ id: zod.z.string() }), zod.z.object({
27074
+ found: zod.z.boolean(),
27075
+ annotationHash: zod.z.string(),
27076
+ matches: zod.z.boolean(),
27077
+ missingFrames: zod.z.number().int()
27078
+ }), {
27079
+ kind: "query",
27080
+ auth: "admin",
27081
+ timeoutMs: 12e4
27082
+ }),
26922
27083
  /** The enabled, vision-capable LLM profiles, each saying whether a frame
26923
27084
  * sent to it leaves the house. */
26924
27085
  listRetrainAssistProfiles: method(zod.z.object({}), zod.z.array(RetrainAssistProfileSchema).readonly(), {
@@ -52312,6 +52473,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
52312
52473
  addonId: null,
52313
52474
  access: "create"
52314
52475
  },
52476
+ "keychainAdmin.setSystemSecret": {
52477
+ capName: "keychain-admin",
52478
+ capScope: "system",
52479
+ addonId: null,
52480
+ access: "create"
52481
+ },
52315
52482
  "keychainAdmin.status": {
52316
52483
  capName: "keychain-admin",
52317
52484
  capScope: "system",
@@ -53758,6 +53925,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
53758
53925
  addonId: null,
53759
53926
  access: "create"
53760
53927
  },
53928
+ "pipelineAnalytics.createRetrainDatasetVersion": {
53929
+ capName: "pipeline-analytics",
53930
+ capScope: "device",
53931
+ addonId: null,
53932
+ access: "create"
53933
+ },
53761
53934
  "pipelineAnalytics.deleteDeviceEvents": {
53762
53935
  capName: "pipeline-analytics",
53763
53936
  capScope: "device",
@@ -53770,6 +53943,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
53770
53943
  addonId: null,
53771
53944
  access: "delete"
53772
53945
  },
53946
+ "pipelineAnalytics.deleteRetrainDatasetVersion": {
53947
+ capName: "pipeline-analytics",
53948
+ capScope: "device",
53949
+ addonId: null,
53950
+ access: "delete"
53951
+ },
53773
53952
  "pipelineAnalytics.deleteTracks": {
53774
53953
  capName: "pipeline-analytics",
53775
53954
  capScope: "device",
@@ -53992,6 +54171,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
53992
54171
  addonId: null,
53993
54172
  access: "view"
53994
54173
  },
54174
+ "pipelineAnalytics.listRetrainDatasetVersions": {
54175
+ capName: "pipeline-analytics",
54176
+ capScope: "device",
54177
+ addonId: null,
54178
+ access: "view"
54179
+ },
53995
54180
  "pipelineAnalytics.listRetrainFrames": {
53996
54181
  capName: "pipeline-analytics",
53997
54182
  capScope: "device",
@@ -54034,6 +54219,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
54034
54219
  addonId: null,
54035
54220
  access: "create"
54036
54221
  },
54222
+ "pipelineAnalytics.previewRetrainDataset": {
54223
+ capName: "pipeline-analytics",
54224
+ capScope: "device",
54225
+ addonId: null,
54226
+ access: "view"
54227
+ },
54037
54228
  "pipelineAnalytics.proposeRetrainAnnotations": {
54038
54229
  capName: "pipeline-analytics",
54039
54230
  capScope: "device",
@@ -54172,6 +54363,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
54172
54363
  addonId: null,
54173
54364
  access: "create"
54174
54365
  },
54366
+ "pipelineAnalytics.verifyRetrainDatasetVersion": {
54367
+ capName: "pipeline-analytics",
54368
+ capScope: "device",
54369
+ addonId: null,
54370
+ access: "view"
54371
+ },
54175
54372
  "pipelineAnalytics.wipeAllAnalytics": {
54176
54373
  capName: "pipeline-analytics",
54177
54374
  capScope: "device",
@@ -63322,6 +63519,12 @@ Object.defineProperty(exports, "buildFfmpegArgs", {
63322
63519
  return buildFfmpegArgs;
63323
63520
  }
63324
63521
  });
63522
+ Object.defineProperty(exports, "buildSecretRef", {
63523
+ enumerable: true,
63524
+ get: function() {
63525
+ return buildSecretRef;
63526
+ }
63527
+ });
63325
63528
  Object.defineProperty(exports, "buildStreamParamsConfigSchema", {
63326
63529
  enumerable: true,
63327
63530
  get: function() {
@@ -64030,6 +64233,12 @@ Object.defineProperty(exports, "secretTreeFromPaths", {
64030
64233
  return secretTreeFromPaths;
64031
64234
  }
64032
64235
  });
64236
+ Object.defineProperty(exports, "secretTreeFromSchema", {
64237
+ enumerable: true,
64238
+ get: function() {
64239
+ return secretTreeFromSchema;
64240
+ }
64241
+ });
64033
64242
  Object.defineProperty(exports, "settingsStoreCapability", {
64034
64243
  enumerable: true,
64035
64244
  get: function() {