camstack 1.2.111 → 1.2.112

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.
@@ -15582,46 +15582,6 @@ var CameraSwitchGroupSchema = external_exports.object({
15582
15582
  /** Unix ms when the group was composed server-side. */
15583
15583
  fetchedAt: external_exports.number()
15584
15584
  });
15585
- var LogChannelLevelSchema = external_exports.enum([
15586
- "info",
15587
- "warn",
15588
- "error"
15589
- ]);
15590
- var LogChannelDescriptorSchema = external_exports.object({
15591
- /**
15592
- * Dotted `area.thing`, unique across the workspace. `area` is conventionally
15593
- * the addon's short name so an operator reading a channel list can tell who
15594
- * owns it without a second lookup.
15595
- */
15596
- name: external_exports.string().min(3).regex(/^[a-z0-9-]+(\.[a-z0-9-]+)+$/, "a channel name is dotted lower-kebab, e.g. area.thing"),
15597
- /** One sentence: what the operator will SEE after arming it. */
15598
- description: external_exports.string().min(1),
15599
- /** The level its lines are emitted at. Never below `info`. */
15600
- defaultLevel: LogChannelLevelSchema,
15601
- /**
15602
- * Whether this channel can be narrowed to a camera.
15603
- *
15604
- * `true` is a PROMISE with two halves, and both must hold: the gate is
15605
- * consulted with the numeric device id, AND every line the channel admits
15606
- * carries `tags: { deviceId }` with that same numeric id. The second half is
15607
- * what makes `| json | deviceId="617"` work in Loki — `loki-payload.ts`
15608
- * keeps `deviceId` out of the stream labels for cardinality, so the tag in
15609
- * the body is the only way to filter.
15610
- *
15611
- * A channel whose lines carry the device only in `meta` (or not at all) is
15612
- * declared `false`. Declaring it `true` anyway would be a lie the UI repeats:
15613
- * the operator narrows to one camera, sees nothing, and concludes the code
15614
- * path was never taken.
15615
- */
15616
- perDevice: external_exports.boolean()
15617
- });
15618
- var LogChannelWindowSchema = external_exports.object({
15619
- channel: external_exports.string().min(1),
15620
- /** Epoch ms the window closes at. */
15621
- armedUntilMs: external_exports.number(),
15622
- /** `null` = every camera. A non-empty list narrows to those numeric ids. */
15623
- deviceIds: external_exports.array(external_exports.number().int()).readonly().nullable()
15624
- });
15625
15585
  var OpsLogDomainSchema = external_exports.enum(["recording", "events"]);
15626
15586
  var OpsLogOpSchema = external_exports.enum([
15627
15587
  "prune",
@@ -16213,21 +16173,20 @@ var StorageLocationSchema = external_exports.object({
16213
16173
  * flag at upsert time, not here (the schema is provider-agnostic).
16214
16174
  */
16215
16175
  nodeId: external_exports.string().optional(),
16216
- isDefault: external_exports.boolean().default(false),
16217
16176
  isSystem: external_exports.boolean().default(false),
16218
16177
  /**
16219
- * Operator opt-in: whether consumers that BALANCE across several locations
16220
- * of a type may write here. Recordings reads it today; event media and
16221
- * backups are the next consumers, which is why the flag lives on the
16222
- * location rather than in any one addon's store — nothing has to be
16223
- * extended to add the next consumer.
16178
+ * THE write switch, and the only one (D383). `enabled: true` means every
16179
+ * consumer that chooses a write target for this type may write here, and all
16180
+ * enabled locations of a type are used TOGETHER; `false` means read-only —
16181
+ * still read, still played back, still age-swept, still drained, never
16182
+ * written.
16224
16183
  *
16225
- * OPTIONAL, and ABSENT MEANS ACTIVE. Every location persisted before the
16226
- * flag existed reads back with no flag and keeps working exactly as before;
16227
- * that is the whole compat story, and it is why no migration ships with it.
16228
- * A newly CREATED sibling is stamped `false` by the orchestrator (creating a
16229
- * disk must not silently start writing to it); the default of a type is
16230
- * always stamped `true`.
16184
+ * OPTIONAL only for the wire: an upsert that omits it means "leave what is
16185
+ * stored" on an update and "born inert unless it is the first location of its
16186
+ * type" on a create. On a PERSISTED row absence is legacy and it means
16187
+ * enabled — {@link isLocationEnabled} is the one place that says so, and the
16188
+ * orchestrator stamps every flagless row `true` once at hydrate so absence
16189
+ * stops existing rather than being re-derived on every read.
16231
16190
  */
16232
16191
  enabled: external_exports.boolean().optional(),
16233
16192
  /** COMPUTED at read time by the orchestrator (statfs of the backing volume
@@ -16240,6 +16199,7 @@ var StorageLocationSchema = external_exports.object({
16240
16199
  createdAt: external_exports.number(),
16241
16200
  updatedAt: external_exports.number()
16242
16201
  });
16202
+ var LegacyStorageLocationDefaultSchema = external_exports.object({ isDefault: external_exports.boolean().optional() });
16243
16203
  var StorageLocationRefSchema = external_exports.union([StorageLocationTypeSchema, external_exports.string().regex(/^[a-z][a-zA-Z0-9-]*:[a-zA-Z0-9-]+$/)]);
16244
16204
  var StorageAccessSchema = external_exports.enum(["local-path", "cap-mediated"]);
16245
16205
  var StorageLocationDeclarationSchema = external_exports.object({
@@ -16366,6 +16326,46 @@ var DecoderSessionConfigSchema = external_exports.object({
16366
16326
  */
16367
16327
  debug: external_exports.boolean().optional()
16368
16328
  });
16329
+ var LogChannelLevelSchema = external_exports.enum([
16330
+ "info",
16331
+ "warn",
16332
+ "error"
16333
+ ]);
16334
+ var LogChannelDescriptorSchema = external_exports.object({
16335
+ /**
16336
+ * Dotted `area.thing`, unique across the workspace. `area` is conventionally
16337
+ * the addon's short name so an operator reading a channel list can tell who
16338
+ * owns it without a second lookup.
16339
+ */
16340
+ name: external_exports.string().min(3).regex(/^[a-z0-9-]+(\.[a-z0-9-]+)+$/, "a channel name is dotted lower-kebab, e.g. area.thing"),
16341
+ /** One sentence: what the operator will SEE after arming it. */
16342
+ description: external_exports.string().min(1),
16343
+ /** The level its lines are emitted at. Never below `info`. */
16344
+ defaultLevel: LogChannelLevelSchema,
16345
+ /**
16346
+ * Whether this channel can be narrowed to a camera.
16347
+ *
16348
+ * `true` is a PROMISE with two halves, and both must hold: the gate is
16349
+ * consulted with the numeric device id, AND every line the channel admits
16350
+ * carries `tags: { deviceId }` with that same numeric id. The second half is
16351
+ * what makes `| json | deviceId="617"` work in Loki — `loki-payload.ts`
16352
+ * keeps `deviceId` out of the stream labels for cardinality, so the tag in
16353
+ * the body is the only way to filter.
16354
+ *
16355
+ * A channel whose lines carry the device only in `meta` (or not at all) is
16356
+ * declared `false`. Declaring it `true` anyway would be a lie the UI repeats:
16357
+ * the operator narrows to one camera, sees nothing, and concludes the code
16358
+ * path was never taken.
16359
+ */
16360
+ perDevice: external_exports.boolean()
16361
+ });
16362
+ var LogChannelWindowSchema = external_exports.object({
16363
+ channel: external_exports.string().min(1),
16364
+ /** Epoch ms the window closes at. */
16365
+ armedUntilMs: external_exports.number(),
16366
+ /** `null` = every camera. A non-empty list narrows to those numeric ids. */
16367
+ deviceIds: external_exports.array(external_exports.number().int()).readonly().nullable()
16368
+ });
16369
16369
  var MODEL_FORMATS = [
16370
16370
  "onnx",
16371
16371
  "coreml",
@@ -30109,7 +30109,6 @@ var storageCapability = {
30109
30109
  }), external_exports.instanceof(Uint8Array)),
30110
30110
  endDownload: method(external_exports.object({ downloadId: external_exports.string() }), external_exports.void(), { kind: "mutation" }),
30111
30111
  listLocations: method(external_exports.object({ type: StorageLocationTypeSchema.optional() }), external_exports.array(StorageLocationSchema).readonly()),
30112
- getDefaultLocation: method(external_exports.object({ type: StorageLocationTypeSchema }), StorageLocationSchema.nullable()),
30113
30112
  listLocationDeclarations: method(external_exports.void(), external_exports.array(StorageLocationDeclarationSchema).readonly()),
30114
30113
  upsertLocation: method(StorageLocationSchema.omit({
30115
30114
  createdAt: true,
@@ -44834,12 +44833,6 @@ var METHOD_ACCESS_MAP = Object.freeze({
44834
44833
  addonId: null,
44835
44834
  access: "view"
44836
44835
  },
44837
- "storage.getDefaultLocation": {
44838
- capName: "storage",
44839
- capScope: "system",
44840
- addonId: null,
44841
- access: "view"
44842
- },
44843
44836
  "storage.list": {
44844
44837
  capName: "storage",
44845
44838
  capScope: "system",
package/dist/cli.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  runDiscover
4
- } from "./chunk-A3Y6T7EJ.js";
4
+ } from "./chunk-QYZZNV2H.js";
5
5
  import "./chunk-LMMQX4CK.js";
6
6
 
7
7
  // src/cli.ts
@@ -38,7 +38,7 @@ async function runServe(args) {
38
38
  ...typeof values.data === "string" ? { data: values.data } : {}
39
39
  };
40
40
  Object.assign(process.env, buildServeEnv(opts));
41
- await import("./launcher-D6HMI7VW.js");
41
+ await import("./launcher-4QDDQ4WQ.js");
42
42
  }
43
43
 
44
44
  // src/commands/agent.ts
@@ -83,7 +83,7 @@ async function runAgent(args) {
83
83
  ...typeof values.port === "string" ? { port: values.port } : {}
84
84
  };
85
85
  Object.assign(process.env, buildAgentEnv(opts));
86
- await import("./launcher-D6HMI7VW.js");
86
+ await import("./launcher-4QDDQ4WQ.js");
87
87
  }
88
88
 
89
89
  // src/commands/setup.ts
@@ -1130,7 +1130,7 @@ function isUnknown(_value) {
1130
1130
  return true;
1131
1131
  }
1132
1132
  async function resolveServerInteractive(presetNamespace) {
1133
- const { discoverNodes, resolveHubFromDiscovered, filterHubNodes, DEFAULT_HUB_HTTPS_PORT } = await import("./discover-ER4G5QZV.js");
1133
+ const { discoverNodes, resolveHubFromDiscovered, filterHubNodes, DEFAULT_HUB_HTTPS_PORT } = await import("./discover-4GRRUEIR.js");
1134
1134
  if (presetNamespace) {
1135
1135
  const spinner4 = clack.spinner();
1136
1136
  spinner4.start(`Discovering hub on LAN (namespace "${presetNamespace}")`);
@@ -5,7 +5,7 @@ import {
5
5
  filterHubNodes,
6
6
  resolveHubFromDiscovered,
7
7
  runDiscover
8
- } from "./chunk-A3Y6T7EJ.js";
8
+ } from "./chunk-QYZZNV2H.js";
9
9
  import "./chunk-LMMQX4CK.js";
10
10
  export {
11
11
  DEFAULT_HUB_HTTPS_PORT,