camstack 1.2.202 → 1.2.203

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-J5GG4YZB.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-J5GG4YZB.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",
@@ -62483,6 +62503,16 @@ var DishwasherStatusSchema = external_exports.object({
62483
62503
  powerState: external_exports.string().nullable(),
62484
62504
  saltLevel: DishwasherConsumableLevelSchema.nullable(),
62485
62505
  rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
62506
+ /**
62507
+ * True while the appliance asks for its filter to be cleaned (smart-filter, filter-system or
62508
+ * combined care-and-filter reminder raised); false when every such reminder reads clear; null
62509
+ * when none is reported. A cleared reminder is not an unknown one.
62510
+ */
62511
+ filterCleaningDue: external_exports.boolean().nullable(),
62512
+ /** True while the machine-care (descaling / cleaning-program) reminder is raised; false when clear; null when not reported. */
62513
+ machineCareDue: external_exports.boolean().nullable(),
62514
+ /** Program runs left before the machine-care reminder is due; null when the appliance does not say. */
62515
+ machineCareRemainingRuns: external_exports.number().int().nonnegative().nullable(),
62486
62516
  /** Option states: null when the appliance does not expose the option or has not said. */
62487
62517
  halfLoad: external_exports.boolean().nullable(),
62488
62518
  hygienePlus: external_exports.boolean().nullable(),
@@ -70358,16 +70388,6 @@ var UpdateUserInputSchema = external_exports.object({
70358
70388
  allowedDevices: external_exports.record(external_exports.string(), external_exports.union([external_exports.array(external_exports.string()), external_exports.literal("*")])).optional(),
70359
70389
  scopes: external_exports.array(TokenScopeSchema).optional()
70360
70390
  });
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
70391
  var OauthSessionSummarySchema = external_exports.object({
70372
70392
  id: external_exports.string(),
70373
70393
  userId: external_exports.string(),
@@ -70448,12 +70468,6 @@ var userManagementCapability = {
70448
70468
  kind: "mutation",
70449
70469
  access: "view"
70450
70470
  }),
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
70471
  setupTotp: method(external_exports.object({ userId: external_exports.string() }), TotpSetupResultSchema, {
70458
70472
  kind: "mutation",
70459
70473
  auth: "admin",
@@ -78487,6 +78501,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
78487
78501
  addonId: null,
78488
78502
  access: "view"
78489
78503
  },
78504
+ "records.transact": {
78505
+ capName: "records",
78506
+ capScope: "system",
78507
+ addonId: null,
78508
+ access: "create"
78509
+ },
78490
78510
  "sceneMonitor.captureReference": {
78491
78511
  capName: "scene-monitor",
78492
78512
  capScope: "device",
@@ -79819,12 +79839,6 @@ var METHOD_ACCESS_MAP = Object.freeze({
79819
79839
  addonId: null,
79820
79840
  access: "view"
79821
79841
  },
79822
- "userManagement.listApiKeys": {
79823
- capName: "user-management",
79824
- capScope: "system",
79825
- addonId: null,
79826
- access: "view"
79827
- },
79828
79842
  "userManagement.listExternalIdentities": {
79829
79843
  capName: "user-management",
79830
79844
  capScope: "system",
@@ -79879,12 +79893,6 @@ var METHOD_ACCESS_MAP = Object.freeze({
79879
79893
  addonId: null,
79880
79894
  access: "create"
79881
79895
  },
79882
- "userManagement.revokeApiKey": {
79883
- capName: "user-management",
79884
- capScope: "system",
79885
- addonId: null,
79886
- access: "delete"
79887
- },
79888
79896
  "userManagement.revokeOauthSession": {
79889
79897
  capName: "user-management",
79890
79898
  capScope: "system",
@@ -83588,9 +83596,13 @@ var NC_SYSTEM_EVENT_FAMILY = {
83588
83596
  "stream-online": "device-events",
83589
83597
  "stream-offline": "device-events",
83590
83598
  "detection-blind": "device-events",
83599
+ "motion-noisy": "device-events",
83600
+ "motion-calm": "device-events",
83591
83601
  "recording-stalled": "device-events",
83592
83602
  "recording-healthy": "device-events",
83593
83603
  "recording-degraded": "device-events",
83604
+ "device-attention-required": "device-events",
83605
+ "device-attention-resolved": "device-events",
83594
83606
  "node-online": "system",
83595
83607
  "node-offline": "system",
83596
83608
  "node-restarting": "system",
@@ -83674,6 +83686,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
83674
83686
  label: "Detecting nothing",
83675
83687
  kinds: ["detection-blind"]
83676
83688
  },
83689
+ {
83690
+ id: "motion-noise",
83691
+ family: "device-events",
83692
+ label: "Motion without a subject",
83693
+ kinds: ["motion-noisy", "motion-calm"]
83694
+ },
83677
83695
  {
83678
83696
  id: "recording",
83679
83697
  family: "device-events",
@@ -83684,6 +83702,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
83684
83702
  "recording-degraded"
83685
83703
  ]
83686
83704
  },
83705
+ {
83706
+ id: "device-attention",
83707
+ family: "device-events",
83708
+ label: "Needs attention",
83709
+ kinds: ["device-attention-required", "device-attention-resolved"]
83710
+ },
83687
83711
  {
83688
83712
  id: "nodes",
83689
83713
  family: "system",
@@ -83800,6 +83824,7 @@ var ALERT_EPISODE = [
83800
83824
  "alert-error",
83801
83825
  "alert-critical-resolved"
83802
83826
  ];
83827
+ var DEVICE_ATTENTION = ["device-attention-required", "device-attention-resolved"];
83803
83828
  var UPDATES = [
83804
83829
  "addon-update-available",
83805
83830
  "server-update-available",
@@ -83829,9 +83854,12 @@ var DEVICE_EVENTS = [
83829
83854
  "stream-online",
83830
83855
  "stream-offline",
83831
83856
  "detection-blind",
83857
+ "motion-noisy",
83858
+ "motion-calm",
83832
83859
  "recording-stalled",
83833
83860
  "recording-healthy",
83834
83861
  "recording-degraded",
83862
+ ...DEVICE_ATTENTION,
83835
83863
  ...ALARM
83836
83864
  ];
83837
83865
  var SUMMARISABLE = [...systemEventKindsOfFamily("device-events"), ...systemEventKindsOfFamily("system")];
@@ -84402,7 +84430,36 @@ var NC_TEMPLATE_VARS = [
84402
84430
  families: ["rule"],
84403
84431
  fields: [...RULE_TEXT],
84404
84432
  kinds: ["system"],
84405
- systemEventKinds: ["detection-blind", "recording-stalled"]
84433
+ systemEventKinds: [
84434
+ "detection-blind",
84435
+ "motion-noisy",
84436
+ "motion-calm",
84437
+ "recording-stalled"
84438
+ ]
84439
+ },
84440
+ {
84441
+ name: "duty",
84442
+ label: "Motion share (%)",
84443
+ example: "55",
84444
+ group: "system",
84445
+ families: ["rule"],
84446
+ fields: [...RULE_TEXT],
84447
+ kinds: ["system"],
84448
+ systemEventKinds: ["motion-noisy", "motion-calm"]
84449
+ },
84450
+ {
84451
+ name: "sessions",
84452
+ label: "Detection sessions",
84453
+ example: "96",
84454
+ group: "system",
84455
+ families: ["rule"],
84456
+ fields: [...RULE_TEXT],
84457
+ kinds: ["system"],
84458
+ systemEventKinds: [
84459
+ "detection-blind",
84460
+ "motion-noisy",
84461
+ "motion-calm"
84462
+ ]
84406
84463
  },
84407
84464
  {
84408
84465
  name: "message",
@@ -84412,7 +84469,11 @@ var NC_TEMPLATE_VARS = [
84412
84469
  families: ["rule"],
84413
84470
  fields: [...RULE_TEXT],
84414
84471
  kinds: ["system"],
84415
- systemEventKinds: ["recording-degraded", ...ALERT_EPISODE]
84472
+ systemEventKinds: [
84473
+ "recording-degraded",
84474
+ ...DEVICE_ATTENTION,
84475
+ ...ALERT_EPISODE
84476
+ ]
84416
84477
  },
84417
84478
  {
84418
84479
  name: "ruleName",
@@ -84656,7 +84717,11 @@ var NC_TEMPLATE_VARS = [
84656
84717
  families: ["rule"],
84657
84718
  fields: [...RULE_TEXT],
84658
84719
  kinds: ["system"],
84659
- systemEventKinds: ["export-completed", ...ALERT_EPISODE]
84720
+ systemEventKinds: [
84721
+ "export-completed",
84722
+ ...DEVICE_ATTENTION,
84723
+ ...ALERT_EPISODE
84724
+ ]
84660
84725
  },
84661
84726
  {
84662
84727
  name: "severity",
@@ -84676,7 +84741,7 @@ var NC_TEMPLATE_VARS = [
84676
84741
  families: ["rule"],
84677
84742
  fields: [...RULE_TEXT],
84678
84743
  kinds: ["system"],
84679
- systemEventKinds: [...ALERT_EPISODE]
84744
+ systemEventKinds: [...DEVICE_ATTENTION, ...ALERT_EPISODE]
84680
84745
  },
84681
84746
  {
84682
84747
  name: "source",
@@ -84696,7 +84761,7 @@ var NC_TEMPLATE_VARS = [
84696
84761
  families: ["rule"],
84697
84762
  fields: [...RULE_TEXT],
84698
84763
  kinds: ["system"],
84699
- systemEventKinds: [...ALERT_EPISODE]
84764
+ systemEventKinds: [...DEVICE_ATTENTION, ...ALERT_EPISODE]
84700
84765
  },
84701
84766
  {
84702
84767
  name: "exportId",
@@ -84942,6 +85007,15 @@ var NC_SYSTEM_EVENT_CLASS_SPECS = [
84942
85007
  snapshotLabel: "Tanks low or full now",
84943
85008
  snapshotSection: "tanks"
84944
85009
  },
85010
+ {
85011
+ id: "motion-noise",
85012
+ family: "device-events",
85013
+ label: "Motion without a subject (constant / calm again)",
85014
+ bad: ["motion-noisy"],
85015
+ recovery: ["motion-calm"],
85016
+ snapshotLabel: "Cameras with constant motion now",
85017
+ snapshotSection: null
85018
+ },
84945
85019
  {
84946
85020
  id: "recording-health",
84947
85021
  family: "device-events",
@@ -84951,6 +85025,15 @@ var NC_SYSTEM_EVENT_CLASS_SPECS = [
84951
85025
  snapshotLabel: "Recordings stalled now",
84952
85026
  snapshotSection: null
84953
85027
  },
85028
+ {
85029
+ id: "device-attention",
85030
+ family: "device-events",
85031
+ label: "Device needs attention (raised / resolved)",
85032
+ bad: ["device-attention-required"],
85033
+ recovery: ["device-attention-resolved"],
85034
+ snapshotLabel: "Devices needing attention now",
85035
+ snapshotSection: null
85036
+ },
84954
85037
  {
84955
85038
  id: "node-connectivity",
84956
85039
  family: "system",