camstack 1.2.10 → 1.2.11
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.
|
@@ -15687,16 +15687,23 @@ var StorageLocationDeclarationSchema = external_exports.object({
|
|
|
15687
15687
|
* Which node root the seeded `<id>:default` instance is placed under on a
|
|
15688
15688
|
* FRESH install:
|
|
15689
15689
|
* - `'data'` (default) — the node's data dir (`CAMSTACK_DATA` / boot dir),
|
|
15690
|
-
* the appData volume. Right for small/durable data (
|
|
15690
|
+
* the appData volume. Right for small/durable data (logs, models).
|
|
15691
15691
|
* - `'media'` — the dedicated media volume (`CAMSTACK_MEDIA_ROOT`) when that
|
|
15692
15692
|
* env is set, else falls back to the data root. Right for bulky, hot media
|
|
15693
15693
|
* (recordings, event media) that should stay off the appData disk.
|
|
15694
|
+
* - `'backup'` — the dedicated backup volume (`CAMSTACK_BACKUP_ROOT`, default
|
|
15695
|
+
* `/backups` in the image) so archives live on their own mount rather than
|
|
15696
|
+
* filling the appData disk. Falls back to the data root when unset.
|
|
15694
15697
|
*
|
|
15695
15698
|
* Only affects the seeded default's `basePath`; operators can repoint any
|
|
15696
15699
|
* location afterwards, and a `defaultsTo` slot inherits its parent's root
|
|
15697
15700
|
* regardless of this field. Absent (the common case) is treated as `'data'`.
|
|
15698
15701
|
*/
|
|
15699
|
-
defaultRoot: external_exports.enum([
|
|
15702
|
+
defaultRoot: external_exports.enum([
|
|
15703
|
+
"data",
|
|
15704
|
+
"media",
|
|
15705
|
+
"backup"
|
|
15706
|
+
]).optional()
|
|
15700
15707
|
});
|
|
15701
15708
|
var DecoderStatsSchema = external_exports.object({
|
|
15702
15709
|
inputFps: external_exports.number(),
|
|
@@ -23868,6 +23875,26 @@ var LocationStatSchema = external_exports.object({
|
|
|
23868
23875
|
fileCount: external_exports.number(),
|
|
23869
23876
|
present: external_exports.boolean()
|
|
23870
23877
|
});
|
|
23878
|
+
var BackupScheduleSchema = external_exports.object({
|
|
23879
|
+
/** Stable id. Generated by the orchestrator on first upsert if absent. */
|
|
23880
|
+
id: external_exports.string(),
|
|
23881
|
+
/** Operator-facing display name. */
|
|
23882
|
+
label: external_exports.string(),
|
|
23883
|
+
/** 5-field POSIX cron. Empty = disabled cadence (kept for editing). */
|
|
23884
|
+
cron: external_exports.string(),
|
|
23885
|
+
/** Master on/off toggle for the whole schedule. */
|
|
23886
|
+
enabled: external_exports.boolean(),
|
|
23887
|
+
/** `backups`-location ids this schedule writes to (fan-out set). */
|
|
23888
|
+
locationIds: external_exports.array(external_exports.string()).readonly(),
|
|
23889
|
+
/** Archives kept per targeted location for this schedule. */
|
|
23890
|
+
retentionCount: external_exports.number().int().min(1).max(1e3),
|
|
23891
|
+
/** Optional subset of source locations to include; omitted = all. */
|
|
23892
|
+
dataSources: external_exports.array(external_exports.string()).readonly().optional(),
|
|
23893
|
+
/** ms-epoch of last successful run. */
|
|
23894
|
+
lastRunAt: external_exports.number().optional(),
|
|
23895
|
+
/** ms-epoch of next computed firing (read-only, filled on list). */
|
|
23896
|
+
nextRunAt: external_exports.number().optional()
|
|
23897
|
+
});
|
|
23871
23898
|
var backupCapability = {
|
|
23872
23899
|
name: "backup",
|
|
23873
23900
|
scope: "system",
|
|
@@ -23889,7 +23916,14 @@ var backupCapability = {
|
|
|
23889
23916
|
/** Subset of registered `backup-destination` addon ids to write to. */
|
|
23890
23917
|
destinations: external_exports.array(external_exports.string()).optional(),
|
|
23891
23918
|
locations: external_exports.array(external_exports.string()).optional(),
|
|
23892
|
-
label: external_exports.string().optional()
|
|
23919
|
+
label: external_exports.string().optional(),
|
|
23920
|
+
/**
|
|
23921
|
+
* Per-run retention override applied to every targeted
|
|
23922
|
+
* destination. Used by schedule-driven runs (per-entry
|
|
23923
|
+
* retention). Omitted = each destination's own policy
|
|
23924
|
+
* retention (manual runs).
|
|
23925
|
+
*/
|
|
23926
|
+
retentionCount: external_exports.number().int().min(1).max(1e3).optional()
|
|
23893
23927
|
}).optional(), external_exports.array(BackupEntrySchema).readonly(), {
|
|
23894
23928
|
kind: "mutation",
|
|
23895
23929
|
auth: "admin"
|
|
@@ -23976,7 +24010,36 @@ var backupCapability = {
|
|
|
23976
24010
|
ok: external_exports.boolean(),
|
|
23977
24011
|
error: external_exports.string().optional(),
|
|
23978
24012
|
nextRuns: external_exports.array(external_exports.number()).readonly()
|
|
23979
|
-
}))
|
|
24013
|
+
})),
|
|
24014
|
+
/**
|
|
24015
|
+
* List every backup schedule (the N:M entries), each with its
|
|
24016
|
+
* computed `nextRunAt`. Powers the Schedules section of the
|
|
24017
|
+
* admin-UI Backups page.
|
|
24018
|
+
*/
|
|
24019
|
+
listSchedules: method(external_exports.void(), external_exports.array(BackupScheduleSchema).readonly(), { auth: "admin" }),
|
|
24020
|
+
/**
|
|
24021
|
+
* Create or replace a schedule. An empty / absent `id` mints a new
|
|
24022
|
+
* one; a present `id` replaces in place. `cron` is validated
|
|
24023
|
+
* server-side; `locationIds` must reference existing `backups`
|
|
24024
|
+
* locations (unknown ids are dropped with a warning).
|
|
24025
|
+
*/
|
|
24026
|
+
upsertSchedule: method(external_exports.object({
|
|
24027
|
+
id: external_exports.string().optional(),
|
|
24028
|
+
label: external_exports.string(),
|
|
24029
|
+
cron: external_exports.string(),
|
|
24030
|
+
enabled: external_exports.boolean(),
|
|
24031
|
+
locationIds: external_exports.array(external_exports.string()).readonly(),
|
|
24032
|
+
retentionCount: external_exports.number().int().min(1).max(1e3),
|
|
24033
|
+
dataSources: external_exports.array(external_exports.string()).readonly().optional()
|
|
24034
|
+
}), BackupScheduleSchema, {
|
|
24035
|
+
kind: "mutation",
|
|
24036
|
+
auth: "admin"
|
|
24037
|
+
}),
|
|
24038
|
+
/** Delete a schedule by id. Does not touch the target locations. */
|
|
24039
|
+
deleteSchedule: method(external_exports.object({ id: external_exports.string() }), external_exports.void(), {
|
|
24040
|
+
kind: "mutation",
|
|
24041
|
+
auth: "admin"
|
|
24042
|
+
})
|
|
23980
24043
|
}
|
|
23981
24044
|
};
|
|
23982
24045
|
var BrokerStatusEnum = external_exports.enum([
|
|
@@ -32181,6 +32244,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
32181
32244
|
addonId: null,
|
|
32182
32245
|
access: "delete"
|
|
32183
32246
|
},
|
|
32247
|
+
"backup.deleteSchedule": {
|
|
32248
|
+
capName: "backup",
|
|
32249
|
+
capScope: "system",
|
|
32250
|
+
addonId: null,
|
|
32251
|
+
access: "delete"
|
|
32252
|
+
},
|
|
32184
32253
|
"backup.getEntries": {
|
|
32185
32254
|
capName: "backup",
|
|
32186
32255
|
capScope: "system",
|
|
@@ -32211,6 +32280,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
32211
32280
|
addonId: null,
|
|
32212
32281
|
access: "view"
|
|
32213
32282
|
},
|
|
32283
|
+
"backup.listSchedules": {
|
|
32284
|
+
capName: "backup",
|
|
32285
|
+
capScope: "system",
|
|
32286
|
+
addonId: null,
|
|
32287
|
+
access: "view"
|
|
32288
|
+
},
|
|
32214
32289
|
"backup.previewSchedule": {
|
|
32215
32290
|
capName: "backup",
|
|
32216
32291
|
capScope: "system",
|
|
@@ -32235,6 +32310,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
32235
32310
|
addonId: null,
|
|
32236
32311
|
access: "create"
|
|
32237
32312
|
},
|
|
32313
|
+
"backup.upsertSchedule": {
|
|
32314
|
+
capName: "backup",
|
|
32315
|
+
capScope: "system",
|
|
32316
|
+
addonId: null,
|
|
32317
|
+
access: "create"
|
|
32318
|
+
},
|
|
32238
32319
|
"battery.wakeForStream": {
|
|
32239
32320
|
capName: "battery",
|
|
32240
32321
|
capScope: "device",
|
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-TFRON3LI.js";
|
|
5
5
|
import "./chunk-K3NQKI34.js";
|
|
6
6
|
|
|
7
7
|
// src/cli.ts
|
|
@@ -1079,7 +1079,7 @@ function isUnknown(_value) {
|
|
|
1079
1079
|
return true;
|
|
1080
1080
|
}
|
|
1081
1081
|
async function resolveServerInteractive(presetNamespace) {
|
|
1082
|
-
const { discoverNodes, resolveHubFromDiscovered, filterHubNodes, DEFAULT_HUB_HTTPS_PORT } = await import("./discover-
|
|
1082
|
+
const { discoverNodes, resolveHubFromDiscovered, filterHubNodes, DEFAULT_HUB_HTTPS_PORT } = await import("./discover-GQWPB7TQ.js");
|
|
1083
1083
|
if (presetNamespace) {
|
|
1084
1084
|
const spinner4 = clack.spinner();
|
|
1085
1085
|
spinner4.start(`Discovering hub on LAN (namespace "${presetNamespace}")`);
|