camstack 1.2.202 → 1.2.204

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.
package/dist/cli.js CHANGED
@@ -37,7 +37,7 @@ async function runServe(args) {
37
37
  ...typeof values.data === "string" ? { data: values.data } : {}
38
38
  };
39
39
  Object.assign(process.env, buildServeEnv(opts));
40
- await import("./launcher-R27OU5QD.js");
40
+ await import("./launcher-H5B4UHLE.js");
41
41
  }
42
42
 
43
43
  // src/commands/agent.ts
@@ -82,7 +82,7 @@ async function runAgent(args) {
82
82
  ...typeof values.port === "string" ? { port: values.port } : {}
83
83
  };
84
84
  Object.assign(process.env, buildAgentEnv(opts));
85
- await import("./launcher-R27OU5QD.js");
85
+ await import("./launcher-H5B4UHLE.js");
86
86
  }
87
87
 
88
88
  // src/commands/setup.ts
@@ -91,7 +91,7 @@ import * as path from "path";
91
91
  import * as fs from "fs";
92
92
  import { parseArgs as parseArgs3 } from "util";
93
93
 
94
- // ../types/dist/event-category-7pZEBmVg.mjs
94
+ // ../types/dist/event-category-BfJwUd2S.mjs
95
95
  var EventCategory = /* @__PURE__ */ (function(EventCategory2) {
96
96
  EventCategory2["SystemBoot"] = "system.boot";
97
97
  EventCategory2["SystemAddonsReady"] = "system.addons-ready";
@@ -172,6 +172,8 @@ var EventCategory = /* @__PURE__ */ (function(EventCategory2) {
172
172
  EventCategory2["PipelineCameraUnassigned"] = "pipeline.camera-unassigned";
173
173
  EventCategory2["PipelineNodeInferenceUnavailable"] = "pipeline.node-inference-unavailable";
174
174
  EventCategory2["PipelineDetectionBlind"] = "pipeline.detection-blind";
175
+ EventCategory2["PipelineMotionNoisy"] = "pipeline.motion-noisy";
176
+ EventCategory2["PipelineMotionCalm"] = "pipeline.motion-calm";
175
177
  EventCategory2["PipelineCameraUpdated"] = "pipeline.camera-updated";
176
178
  EventCategory2["PipelineIngestOwnerChanged"] = "pipeline.ingest-owner-changed";
177
179
  EventCategory2["PipelineRunnerLoadSnapshot"] = "pipeline.runner-load-snapshot";
@@ -14775,7 +14777,7 @@ function date4(params) {
14775
14777
  // ../../node_modules/zod/v4/classic/external.js
14776
14778
  config(en_default());
14777
14779
 
14778
- // ../types/dist/sleep-CueztlR1.mjs
14780
+ // ../types/dist/sleep-DJFUfKvA.mjs
14779
14781
  var AUDIO_CHUNK_FORMATS = [
14780
14782
  "f32le",
14781
14783
  "pcmu",
@@ -15032,7 +15034,7 @@ var EntryDescriptorSchema = external_exports.object({
15032
15034
  /** JSON Schema of the entry body; `secret: true` marks a password field. */
15033
15035
  fields: external_exports.record(external_exports.string(), external_exports.unknown())
15034
15036
  }).strict();
15035
- var RecordKindDeclarationSchema = external_exports.object({
15037
+ var RecordKindDeclarationShape = external_exports.object({
15036
15038
  database: external_exports.enum(RECORD_DATABASES).default("settings"),
15037
15039
  class: external_exports.enum(RECORD_CLASSES),
15038
15040
  writeTrigger: external_exports.string().min(1),
@@ -15050,18 +15052,11 @@ var RecordKindDeclarationSchema = external_exports.object({
15050
15052
  secretPaths: external_exports.array(external_exports.string().min(1)).default([]),
15051
15053
  /** The id key of each array that carries a secret (`{ headers: 'name' }`). */
15052
15054
  secretArrayKeys: external_exports.record(external_exports.string(), external_exports.string()).default({}),
15053
- /**
15054
- * RETIRED (D900): the legacy table a kind adopted from during the records
15055
- * migration. Nothing declares it any more and nothing reads it; the schema
15056
- * still ACCEPTS it because the catalog rows the migration wrote carry it
15057
- * (an orphaned kind is never redeclared) and an addon built before the
15058
- * removal still sends it. Never set it.
15059
- */
15060
- adoptsFrom: external_exports.string().min(1).optional(),
15061
15055
  /** Kinds that must agree through `transact` sit in one file under one family name. */
15062
15056
  transactFamily: external_exports.string().min(1).optional(),
15063
15057
  entry: EntryDescriptorSchema.optional()
15064
- }).strict();
15058
+ });
15059
+ var RecordKindDeclarationSchema = RecordKindDeclarationShape.strict();
15065
15060
  var RecordKindNameSchema = external_exports.string().regex(/^[a-z][a-z0-9-]{0,47}$/);
15066
15061
  var CamProfileSchema = external_exports.enum([
15067
15062
  "high",
@@ -18556,17 +18551,6 @@ var UserRecordSchema = external_exports.object({
18556
18551
  createdAt: external_exports.number(),
18557
18552
  updatedAt: external_exports.number()
18558
18553
  });
18559
- var ApiKeyRecordSchema = external_exports.object({
18560
- id: external_exports.string(),
18561
- label: external_exports.string(),
18562
- isAdmin: external_exports.boolean().default(false),
18563
- allowedProviders: AllowedProviderSchema,
18564
- allowedDevices: AllowedDevicesSchema,
18565
- tokenHash: external_exports.string(),
18566
- tokenPrefix: external_exports.string(),
18567
- createdAt: external_exports.number(),
18568
- lastUsedAt: external_exports.number().optional()
18569
- });
18570
18554
  var ScopedTokenSchema = external_exports.object({
18571
18555
  id: external_exports.string(),
18572
18556
  userId: external_exports.string(),
@@ -22956,15 +22940,31 @@ var RecordKindStateSchema = external_exports.enum([
22956
22940
  var DeclareKindResultSchema = external_exports.object({
22957
22941
  kindId: external_exports.number().int(),
22958
22942
  state: RecordKindStateSchema,
22959
- createdIndexes: external_exports.array(external_exports.string()),
22960
- /**
22961
- * RETIRED (D900): always `null`. It carried the records-migration boot guard;
22962
- * it stays on the wire, null, because an addon built before the removal reads
22963
- * an ABSENT field as "adoption pending" and refuses to start.
22964
- */
22965
- adoptionPending: external_exports.null()
22943
+ createdIndexes: external_exports.array(external_exports.string())
22966
22944
  });
22967
22945
  var SecretRefsList = external_exports.array(external_exports.string());
22946
+ var RecordTransactOpSchema = external_exports.discriminatedUnion("op", [
22947
+ external_exports.object({
22948
+ op: external_exports.literal("put"),
22949
+ kind: RecordKindNameSchema,
22950
+ record: RecordInputSchema,
22951
+ ifRev: external_exports.number().int().min(0).optional()
22952
+ }),
22953
+ external_exports.object({
22954
+ op: external_exports.literal("patch"),
22955
+ kind: RecordKindNameSchema,
22956
+ id: RecordIdSchema,
22957
+ data: RecordBodySchema,
22958
+ at: external_exports.number().int().nullable().optional(),
22959
+ expiresAt: external_exports.number().int().nullable().optional(),
22960
+ ifRev: external_exports.number().int().min(1).optional()
22961
+ }),
22962
+ external_exports.object({
22963
+ op: external_exports.literal("delete"),
22964
+ kind: RecordKindNameSchema,
22965
+ id: RecordIdSchema
22966
+ })
22967
+ ]);
22968
22968
  var RecordSecretRefsSchema = external_exports.record(external_exports.string(), external_exports.record(external_exports.string(), external_exports.string()));
22969
22969
  var recordsCapability = {
22970
22970
  name: "records",
@@ -23096,6 +23096,22 @@ var recordsCapability = {
23096
23096
  kind: "mutation",
23097
23097
  auth: "admin"
23098
23098
  }),
23099
+ /**
23100
+ * Several single-row writes (put / patch / delete) in ONE SQLite transaction:
23101
+ * all land or none does. Every op's kind must sit in one file and share one
23102
+ * `transactFamily` (`records/transact-refused` otherwise). Results are in op order.
23103
+ */
23104
+ transact: method(external_exports.object({ ops: external_exports.array(RecordTransactOpSchema).min(1).max(RECORD_BATCH_MAX) }), external_exports.object({
23105
+ results: external_exports.array(external_exports.object({
23106
+ rev: external_exports.number().int().nullable(),
23107
+ deleted: external_exports.boolean()
23108
+ })),
23109
+ releasedRefs: SecretRefsList,
23110
+ secretRefs: SecretRefsList
23111
+ }), {
23112
+ kind: "mutation",
23113
+ auth: "admin"
23114
+ }),
23099
23115
  /** The D865 hook body: every kind of this addon declared `deviceRemoval: 'delete'`. */
23100
23116
  deleteDevice: method(external_exports.object({
23101
23117
  deviceId: external_exports.number().int(),
@@ -48875,9 +48891,13 @@ var NcSystemEventKindSchema = external_exports.enum([
48875
48891
  "node-updating",
48876
48892
  "node-inference-unavailable",
48877
48893
  "detection-blind",
48894
+ "motion-noisy",
48895
+ "motion-calm",
48878
48896
  "recording-stalled",
48879
48897
  "recording-healthy",
48880
48898
  "recording-degraded",
48899
+ "device-attention-required",
48900
+ "device-attention-resolved",
48881
48901
  "storage-location-low",
48882
48902
  "storage-location-critical",
48883
48903
  "storage-location-ok",
@@ -54358,7 +54378,6 @@ var RecommendationReasonSchema = external_exports.discriminatedUnion("kind", [
54358
54378
  modelId: external_exports.string()
54359
54379
  }),
54360
54380
  external_exports.object({ kind: external_exports.literal("cpu-device") }),
54361
- external_exports.object({ kind: external_exports.literal("coral-untouched") }),
54362
54381
  external_exports.object({ kind: external_exports.literal("device-disabled") }),
54363
54382
  external_exports.object({ kind: external_exports.literal("device-unavailable") }),
54364
54383
  external_exports.object({ kind: external_exports.literal("node-offline") }),
@@ -54451,11 +54470,6 @@ var AutoTuneWarningSchema = external_exports.discriminatedUnion("kind", [
54451
54470
  kind: external_exports.literal("detector-store-unreadable"),
54452
54471
  error: external_exports.string()
54453
54472
  }),
54454
- external_exports.object({
54455
- kind: external_exports.literal("coral-enabled"),
54456
- nodeId: external_exports.string(),
54457
- deviceKey: external_exports.string()
54458
- }),
54459
54473
  external_exports.object({
54460
54474
  kind: external_exports.literal("custom-pin-kept"),
54461
54475
  nodeId: external_exports.string(),
@@ -62483,6 +62497,16 @@ var DishwasherStatusSchema = external_exports.object({
62483
62497
  powerState: external_exports.string().nullable(),
62484
62498
  saltLevel: DishwasherConsumableLevelSchema.nullable(),
62485
62499
  rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
62500
+ /**
62501
+ * True while the appliance asks for its filter to be cleaned (smart-filter, filter-system or
62502
+ * combined care-and-filter reminder raised); false when every such reminder reads clear; null
62503
+ * when none is reported. A cleared reminder is not an unknown one.
62504
+ */
62505
+ filterCleaningDue: external_exports.boolean().nullable(),
62506
+ /** True while the machine-care (descaling / cleaning-program) reminder is raised; false when clear; null when not reported. */
62507
+ machineCareDue: external_exports.boolean().nullable(),
62508
+ /** Program runs left before the machine-care reminder is due; null when the appliance does not say. */
62509
+ machineCareRemainingRuns: external_exports.number().int().nonnegative().nullable(),
62486
62510
  /** Option states: null when the appliance does not expose the option or has not said. */
62487
62511
  halfLoad: external_exports.boolean().nullable(),
62488
62512
  hygienePlus: external_exports.boolean().nullable(),
@@ -70358,16 +70382,6 @@ var UpdateUserInputSchema = external_exports.object({
70358
70382
  allowedDevices: external_exports.record(external_exports.string(), external_exports.union([external_exports.array(external_exports.string()), external_exports.literal("*")])).optional(),
70359
70383
  scopes: external_exports.array(TokenScopeSchema).optional()
70360
70384
  });
70361
- var ApiKeySummarySchema = external_exports.object({
70362
- id: external_exports.string(),
70363
- label: external_exports.string(),
70364
- isAdmin: external_exports.boolean().default(false),
70365
- allowedProviders: external_exports.union([external_exports.array(external_exports.string()), external_exports.literal("*")]).optional(),
70366
- allowedDevices: external_exports.record(external_exports.string(), external_exports.union([external_exports.array(external_exports.string()), external_exports.literal("*")])).optional(),
70367
- tokenPrefix: external_exports.string(),
70368
- createdAt: external_exports.number(),
70369
- lastUsedAt: external_exports.number().optional()
70370
- });
70371
70385
  var OauthSessionSummarySchema = external_exports.object({
70372
70386
  id: external_exports.string(),
70373
70387
  userId: external_exports.string(),
@@ -70448,12 +70462,6 @@ var userManagementCapability = {
70448
70462
  kind: "mutation",
70449
70463
  access: "view"
70450
70464
  }),
70451
- listApiKeys: method(external_exports.void(), external_exports.array(ApiKeySummarySchema), { auth: "admin" }),
70452
- revokeApiKey: method(external_exports.object({ id: external_exports.string() }), external_exports.object({ success: external_exports.literal(true) }), {
70453
- kind: "mutation",
70454
- auth: "admin",
70455
- access: "delete"
70456
- }),
70457
70465
  setupTotp: method(external_exports.object({ userId: external_exports.string() }), TotpSetupResultSchema, {
70458
70466
  kind: "mutation",
70459
70467
  auth: "admin",
@@ -78487,6 +78495,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
78487
78495
  addonId: null,
78488
78496
  access: "view"
78489
78497
  },
78498
+ "records.transact": {
78499
+ capName: "records",
78500
+ capScope: "system",
78501
+ addonId: null,
78502
+ access: "create"
78503
+ },
78490
78504
  "sceneMonitor.captureReference": {
78491
78505
  capName: "scene-monitor",
78492
78506
  capScope: "device",
@@ -79819,12 +79833,6 @@ var METHOD_ACCESS_MAP = Object.freeze({
79819
79833
  addonId: null,
79820
79834
  access: "view"
79821
79835
  },
79822
- "userManagement.listApiKeys": {
79823
- capName: "user-management",
79824
- capScope: "system",
79825
- addonId: null,
79826
- access: "view"
79827
- },
79828
79836
  "userManagement.listExternalIdentities": {
79829
79837
  capName: "user-management",
79830
79838
  capScope: "system",
@@ -79879,12 +79887,6 @@ var METHOD_ACCESS_MAP = Object.freeze({
79879
79887
  addonId: null,
79880
79888
  access: "create"
79881
79889
  },
79882
- "userManagement.revokeApiKey": {
79883
- capName: "user-management",
79884
- capScope: "system",
79885
- addonId: null,
79886
- access: "delete"
79887
- },
79888
79890
  "userManagement.revokeOauthSession": {
79889
79891
  capName: "user-management",
79890
79892
  capScope: "system",
@@ -83588,9 +83590,13 @@ var NC_SYSTEM_EVENT_FAMILY = {
83588
83590
  "stream-online": "device-events",
83589
83591
  "stream-offline": "device-events",
83590
83592
  "detection-blind": "device-events",
83593
+ "motion-noisy": "device-events",
83594
+ "motion-calm": "device-events",
83591
83595
  "recording-stalled": "device-events",
83592
83596
  "recording-healthy": "device-events",
83593
83597
  "recording-degraded": "device-events",
83598
+ "device-attention-required": "device-events",
83599
+ "device-attention-resolved": "device-events",
83594
83600
  "node-online": "system",
83595
83601
  "node-offline": "system",
83596
83602
  "node-restarting": "system",
@@ -83674,6 +83680,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
83674
83680
  label: "Detecting nothing",
83675
83681
  kinds: ["detection-blind"]
83676
83682
  },
83683
+ {
83684
+ id: "motion-noise",
83685
+ family: "device-events",
83686
+ label: "Motion without a subject",
83687
+ kinds: ["motion-noisy", "motion-calm"]
83688
+ },
83677
83689
  {
83678
83690
  id: "recording",
83679
83691
  family: "device-events",
@@ -83684,6 +83696,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
83684
83696
  "recording-degraded"
83685
83697
  ]
83686
83698
  },
83699
+ {
83700
+ id: "device-attention",
83701
+ family: "device-events",
83702
+ label: "Needs attention",
83703
+ kinds: ["device-attention-required", "device-attention-resolved"]
83704
+ },
83687
83705
  {
83688
83706
  id: "nodes",
83689
83707
  family: "system",
@@ -83800,6 +83818,7 @@ var ALERT_EPISODE = [
83800
83818
  "alert-error",
83801
83819
  "alert-critical-resolved"
83802
83820
  ];
83821
+ var DEVICE_ATTENTION = ["device-attention-required", "device-attention-resolved"];
83803
83822
  var UPDATES = [
83804
83823
  "addon-update-available",
83805
83824
  "server-update-available",
@@ -83829,9 +83848,12 @@ var DEVICE_EVENTS = [
83829
83848
  "stream-online",
83830
83849
  "stream-offline",
83831
83850
  "detection-blind",
83851
+ "motion-noisy",
83852
+ "motion-calm",
83832
83853
  "recording-stalled",
83833
83854
  "recording-healthy",
83834
83855
  "recording-degraded",
83856
+ ...DEVICE_ATTENTION,
83835
83857
  ...ALARM
83836
83858
  ];
83837
83859
  var SUMMARISABLE = [...systemEventKindsOfFamily("device-events"), ...systemEventKindsOfFamily("system")];
@@ -84402,7 +84424,36 @@ var NC_TEMPLATE_VARS = [
84402
84424
  families: ["rule"],
84403
84425
  fields: [...RULE_TEXT],
84404
84426
  kinds: ["system"],
84405
- systemEventKinds: ["detection-blind", "recording-stalled"]
84427
+ systemEventKinds: [
84428
+ "detection-blind",
84429
+ "motion-noisy",
84430
+ "motion-calm",
84431
+ "recording-stalled"
84432
+ ]
84433
+ },
84434
+ {
84435
+ name: "duty",
84436
+ label: "Motion share (%)",
84437
+ example: "55",
84438
+ group: "system",
84439
+ families: ["rule"],
84440
+ fields: [...RULE_TEXT],
84441
+ kinds: ["system"],
84442
+ systemEventKinds: ["motion-noisy", "motion-calm"]
84443
+ },
84444
+ {
84445
+ name: "sessions",
84446
+ label: "Detection sessions",
84447
+ example: "96",
84448
+ group: "system",
84449
+ families: ["rule"],
84450
+ fields: [...RULE_TEXT],
84451
+ kinds: ["system"],
84452
+ systemEventKinds: [
84453
+ "detection-blind",
84454
+ "motion-noisy",
84455
+ "motion-calm"
84456
+ ]
84406
84457
  },
84407
84458
  {
84408
84459
  name: "message",
@@ -84412,7 +84463,11 @@ var NC_TEMPLATE_VARS = [
84412
84463
  families: ["rule"],
84413
84464
  fields: [...RULE_TEXT],
84414
84465
  kinds: ["system"],
84415
- systemEventKinds: ["recording-degraded", ...ALERT_EPISODE]
84466
+ systemEventKinds: [
84467
+ "recording-degraded",
84468
+ ...DEVICE_ATTENTION,
84469
+ ...ALERT_EPISODE
84470
+ ]
84416
84471
  },
84417
84472
  {
84418
84473
  name: "ruleName",
@@ -84656,7 +84711,11 @@ var NC_TEMPLATE_VARS = [
84656
84711
  families: ["rule"],
84657
84712
  fields: [...RULE_TEXT],
84658
84713
  kinds: ["system"],
84659
- systemEventKinds: ["export-completed", ...ALERT_EPISODE]
84714
+ systemEventKinds: [
84715
+ "export-completed",
84716
+ ...DEVICE_ATTENTION,
84717
+ ...ALERT_EPISODE
84718
+ ]
84660
84719
  },
84661
84720
  {
84662
84721
  name: "severity",
@@ -84676,7 +84735,7 @@ var NC_TEMPLATE_VARS = [
84676
84735
  families: ["rule"],
84677
84736
  fields: [...RULE_TEXT],
84678
84737
  kinds: ["system"],
84679
- systemEventKinds: [...ALERT_EPISODE]
84738
+ systemEventKinds: [...DEVICE_ATTENTION, ...ALERT_EPISODE]
84680
84739
  },
84681
84740
  {
84682
84741
  name: "source",
@@ -84696,7 +84755,7 @@ var NC_TEMPLATE_VARS = [
84696
84755
  families: ["rule"],
84697
84756
  fields: [...RULE_TEXT],
84698
84757
  kinds: ["system"],
84699
- systemEventKinds: [...ALERT_EPISODE]
84758
+ systemEventKinds: [...DEVICE_ATTENTION, ...ALERT_EPISODE]
84700
84759
  },
84701
84760
  {
84702
84761
  name: "exportId",
@@ -84942,6 +85001,15 @@ var NC_SYSTEM_EVENT_CLASS_SPECS = [
84942
85001
  snapshotLabel: "Tanks low or full now",
84943
85002
  snapshotSection: "tanks"
84944
85003
  },
85004
+ {
85005
+ id: "motion-noise",
85006
+ family: "device-events",
85007
+ label: "Motion without a subject (constant / calm again)",
85008
+ bad: ["motion-noisy"],
85009
+ recovery: ["motion-calm"],
85010
+ snapshotLabel: "Cameras with constant motion now",
85011
+ snapshotSection: null
85012
+ },
84945
85013
  {
84946
85014
  id: "recording-health",
84947
85015
  family: "device-events",
@@ -84951,6 +85019,15 @@ var NC_SYSTEM_EVENT_CLASS_SPECS = [
84951
85019
  snapshotLabel: "Recordings stalled now",
84952
85020
  snapshotSection: null
84953
85021
  },
85022
+ {
85023
+ id: "device-attention",
85024
+ family: "device-events",
85025
+ label: "Device needs attention (raised / resolved)",
85026
+ bad: ["device-attention-required"],
85027
+ recovery: ["device-attention-resolved"],
85028
+ snapshotLabel: "Devices needing attention now",
85029
+ snapshotSection: null
85030
+ },
84954
85031
  {
84955
85032
  id: "node-connectivity",
84956
85033
  family: "system",