camstack 1.2.110 → 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
|
-
*
|
|
16220
|
-
*
|
|
16221
|
-
*
|
|
16222
|
-
*
|
|
16223
|
-
*
|
|
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
|
|
16226
|
-
*
|
|
16227
|
-
*
|
|
16228
|
-
*
|
|
16229
|
-
*
|
|
16230
|
-
*
|
|
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",
|
|
@@ -17884,12 +17884,30 @@ var BackupDestinationInfoSchema = external_exports.object({
|
|
|
17884
17884
|
lastSuccessAt: external_exports.number().optional(),
|
|
17885
17885
|
/** Newest-archive size from `manifests.json`, or undefined. */
|
|
17886
17886
|
lastSuccessSizeBytes: external_exports.number().optional(),
|
|
17887
|
-
/**
|
|
17887
|
+
/**
|
|
17888
|
+
* Cron cadence(s) of the ENABLED schedules that fan out to this
|
|
17889
|
+
* destination, comma-joined. Absent when no enabled schedule targets it
|
|
17890
|
+
* — a destination nothing is scheduled to write to must not advertise a
|
|
17891
|
+
* cadence (D384). This is never the `backup_destination_policies.cron`
|
|
17892
|
+
* column: that per-location cron has scheduled nothing since 2026-07-28
|
|
17893
|
+
* and reading it made a destination with a DISABLED schedule claim a
|
|
17894
|
+
* nightly run.
|
|
17895
|
+
*/
|
|
17888
17896
|
cron: external_exports.string().optional(),
|
|
17889
|
-
/** ms-epoch of next
|
|
17897
|
+
/** ms-epoch of the next firing across those schedules (earliest), if any. */
|
|
17890
17898
|
nextRunAt: external_exports.number().optional(),
|
|
17891
|
-
/**
|
|
17892
|
-
|
|
17899
|
+
/**
|
|
17900
|
+
* ms-epoch of the last time a run ATTEMPTED to write here — success or
|
|
17901
|
+
* failure. Never a success stamp: pair it with `lastSuccessAt` (the
|
|
17902
|
+
* newest archive that actually landed) and `lastError`.
|
|
17903
|
+
*/
|
|
17904
|
+
lastAttemptAt: external_exports.number().optional(),
|
|
17905
|
+
/**
|
|
17906
|
+
* Why the last attempt failed, verbatim. Absent when the last attempt
|
|
17907
|
+
* landed the archive. A destination that has never been written to has
|
|
17908
|
+
* neither this nor `lastAttemptAt`.
|
|
17909
|
+
*/
|
|
17910
|
+
lastError: external_exports.string().optional()
|
|
17893
17911
|
});
|
|
17894
17912
|
var BackupArchiveEntrySchema = external_exports.object({
|
|
17895
17913
|
id: external_exports.string(),
|
|
@@ -18011,8 +18029,16 @@ var BackupScheduleSchema = external_exports.object({
|
|
|
18011
18029
|
retentionCount: external_exports.number().int().min(1).max(1e3),
|
|
18012
18030
|
/** Optional subset of source locations to include; omitted = all. */
|
|
18013
18031
|
dataSources: external_exports.array(external_exports.string()).readonly().optional(),
|
|
18014
|
-
/**
|
|
18015
|
-
|
|
18032
|
+
/**
|
|
18033
|
+
* ms-epoch of the last tick that FIRED this schedule. Stamped before the
|
|
18034
|
+
* archive runs (it is the dedupe anchor), so it says "attempted", never
|
|
18035
|
+
* "succeeded" — a run refused by every destination stamps it too.
|
|
18036
|
+
*/
|
|
18037
|
+
lastAttemptAt: external_exports.number().optional(),
|
|
18038
|
+
/** ms-epoch of the last run of this schedule that landed at ≥1 destination. */
|
|
18039
|
+
lastSuccessAt: external_exports.number().optional(),
|
|
18040
|
+
/** Why the last fired run failed, verbatim. Absent when it succeeded. */
|
|
18041
|
+
lastError: external_exports.string().optional(),
|
|
18016
18042
|
/** ms-epoch of next computed firing (read-only, filled on list). */
|
|
18017
18043
|
nextRunAt: external_exports.number().optional()
|
|
18018
18044
|
});
|
|
@@ -18135,14 +18161,7 @@ var backupCapability = {
|
|
|
18135
18161
|
locationId: external_exports.string(),
|
|
18136
18162
|
enabled: external_exports.boolean(),
|
|
18137
18163
|
retentionCount: external_exports.number().int().min(1).max(1e3),
|
|
18138
|
-
label: external_exports.string().optional()
|
|
18139
|
-
/**
|
|
18140
|
-
* Per-destination cron expression. Empty string clears the
|
|
18141
|
-
* schedule (manual-only). Validated server-side via croner;
|
|
18142
|
-
* malformed expressions reject the upsert with an actionable
|
|
18143
|
-
* message.
|
|
18144
|
-
*/
|
|
18145
|
-
cron: external_exports.string().optional()
|
|
18164
|
+
label: external_exports.string().optional()
|
|
18146
18165
|
}), external_exports.void(), {
|
|
18147
18166
|
kind: "mutation",
|
|
18148
18167
|
auth: "admin"
|
|
@@ -30090,7 +30109,6 @@ var storageCapability = {
|
|
|
30090
30109
|
}), external_exports.instanceof(Uint8Array)),
|
|
30091
30110
|
endDownload: method(external_exports.object({ downloadId: external_exports.string() }), external_exports.void(), { kind: "mutation" }),
|
|
30092
30111
|
listLocations: method(external_exports.object({ type: StorageLocationTypeSchema.optional() }), external_exports.array(StorageLocationSchema).readonly()),
|
|
30093
|
-
getDefaultLocation: method(external_exports.object({ type: StorageLocationTypeSchema }), StorageLocationSchema.nullable()),
|
|
30094
30112
|
listLocationDeclarations: method(external_exports.void(), external_exports.array(StorageLocationDeclarationSchema).readonly()),
|
|
30095
30113
|
upsertLocation: method(StorageLocationSchema.omit({
|
|
30096
30114
|
createdAt: true,
|
|
@@ -44815,12 +44833,6 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
44815
44833
|
addonId: null,
|
|
44816
44834
|
access: "view"
|
|
44817
44835
|
},
|
|
44818
|
-
"storage.getDefaultLocation": {
|
|
44819
|
-
capName: "storage",
|
|
44820
|
-
capScope: "system",
|
|
44821
|
-
addonId: null,
|
|
44822
|
-
access: "view"
|
|
44823
|
-
},
|
|
44824
44836
|
"storage.list": {
|
|
44825
44837
|
capName: "storage",
|
|
44826
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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}")`);
|