@camstack/addon-export-hap 1.2.19 → 1.2.20
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/export-hap.addon.js +316 -31
- package/dist/export-hap.addon.mjs +316 -31
- package/package.json +1 -1
package/dist/export-hap.addon.js
CHANGED
|
@@ -8207,12 +8207,11 @@ var RecordingConfigSchema = object({
|
|
|
8207
8207
|
/**
|
|
8208
8208
|
* Entity-relocation job state (storage entity-routing spec, Phase 4).
|
|
8209
8209
|
*
|
|
8210
|
-
* One shape shared by the recorder
|
|
8211
|
-
*
|
|
8212
|
-
*
|
|
8213
|
-
*
|
|
8214
|
-
*
|
|
8215
|
-
* row on the owning addon's surface.
|
|
8210
|
+
* One shape shared by the recorder and pipeline-analytics internal movers.
|
|
8211
|
+
* The public admin surface is `storage-migration`; child jobs remain in RAM
|
|
8212
|
+
* because copy-if-absent, verify, delete and index/row repoint are resumable.
|
|
8213
|
+
* Each completed/failed run also lands one durable ops-log row on its owning
|
|
8214
|
+
* addon surface.
|
|
8216
8215
|
*/
|
|
8217
8216
|
var RelocateJobStateSchema = _enum([
|
|
8218
8217
|
"running",
|
|
@@ -8239,19 +8238,100 @@ var RelocateJobSchema = object({
|
|
|
8239
8238
|
finishedAt: number().nullable(),
|
|
8240
8239
|
error: string().nullable()
|
|
8241
8240
|
});
|
|
8241
|
+
/** Profile-derived footage selection used only by the migration coordinator:
|
|
8242
|
+
* `recordings` owns high+mid; `recordingsLow` owns low. */
|
|
8243
|
+
var RelocateFootageClassSchema = _enum(["recordings", "recordingsLow"]);
|
|
8242
8244
|
var RelocateFootageInputSchema = object({
|
|
8243
|
-
deviceId: number().optional(),
|
|
8244
8245
|
fromLocationId: string(),
|
|
8245
8246
|
toLocationId: string(),
|
|
8246
8247
|
entities: array(_enum(["segments"])).optional(),
|
|
8248
|
+
/** Limits relocation to the logical profile class. Omit only for the
|
|
8249
|
+
* pre-orchestration compatibility path. */
|
|
8250
|
+
footageClass: RelocateFootageClassSchema.optional(),
|
|
8247
8251
|
/** Copy throttle in MB/s (default 40) — the drain is a background chore,
|
|
8248
8252
|
* never allowed to starve live writers. */
|
|
8249
8253
|
throttleMbps: number().min(1).max(1e3).optional()
|
|
8250
8254
|
});
|
|
8251
|
-
|
|
8252
|
-
|
|
8255
|
+
/** Internal, lease-scoped participant operation. It is intentionally separate
|
|
8256
|
+
* from persistent recording settings: a migration never changes
|
|
8257
|
+
* `RecordingConfig.enabled` or camera wrapper bindings. */
|
|
8258
|
+
var StorageMigrationLeaseInputSchema = object({ leaseId: string().min(1) });
|
|
8259
|
+
var StorageMigrationFootageMoveInputSchema = RelocateFootageInputSchema.extend({ leaseId: string().min(1) });
|
|
8260
|
+
var StorageMigrationMediaMoveInputSchema = object({
|
|
8253
8261
|
toLocationId: string(),
|
|
8254
8262
|
throttleMbps: number().min(1).max(1e3).optional()
|
|
8263
|
+
}).extend({ leaseId: string().min(1) });
|
|
8264
|
+
/** The independently selectable logical storage classes. `recordings`
|
|
8265
|
+
* encompasses the high and mid segment profiles; `recordingsLow` is low
|
|
8266
|
+
* segments; `eventMedia` is post-analysis blobs. */
|
|
8267
|
+
var StorageMigrationClassSchema = _enum([
|
|
8268
|
+
"recordings",
|
|
8269
|
+
"recordingsLow",
|
|
8270
|
+
"eventMedia"
|
|
8271
|
+
]);
|
|
8272
|
+
/** A destination is always an existing, fully-qualified location id. The
|
|
8273
|
+
* migration API intentionally never changes a source location's `basePath`:
|
|
8274
|
+
* callers create a new `<type>:<slug>` location, then select it here. */
|
|
8275
|
+
var StorageMigrationDestinationsSchema = object({
|
|
8276
|
+
recordings: string().min(1).optional(),
|
|
8277
|
+
recordingsLow: string().min(1).optional(),
|
|
8278
|
+
eventMedia: string().min(1).optional()
|
|
8279
|
+
}).refine((value) => Object.keys(value).length > 0, { message: "select at least one storage class" });
|
|
8280
|
+
/** Shared input for planning and starting an orchestrated storage migration. */
|
|
8281
|
+
var StorageMigrationInputSchema = object({
|
|
8282
|
+
destinations: StorageMigrationDestinationsSchema,
|
|
8283
|
+
throttleMbps: number().min(1).max(1e3).optional()
|
|
8284
|
+
});
|
|
8285
|
+
/** The durable coordinator state machine. The only phase that changes default
|
|
8286
|
+
* locations is `repointing`, after every selected mover has completed and been
|
|
8287
|
+
* verified. */
|
|
8288
|
+
var StorageMigrationPhaseSchema = _enum([
|
|
8289
|
+
"planning",
|
|
8290
|
+
"pausing",
|
|
8291
|
+
"moving",
|
|
8292
|
+
"verifying",
|
|
8293
|
+
"repointing",
|
|
8294
|
+
"refreshing",
|
|
8295
|
+
"resuming",
|
|
8296
|
+
"done",
|
|
8297
|
+
"failed",
|
|
8298
|
+
"cancelled"
|
|
8299
|
+
]);
|
|
8300
|
+
var StorageMigrationParticipantSchema = _enum([
|
|
8301
|
+
"pipeline",
|
|
8302
|
+
"recorder",
|
|
8303
|
+
"analytics"
|
|
8304
|
+
]);
|
|
8305
|
+
var StorageMigrationMoveSchema = object({
|
|
8306
|
+
storageClass: StorageMigrationClassSchema,
|
|
8307
|
+
fromLocationId: string(),
|
|
8308
|
+
toLocationId: string(),
|
|
8309
|
+
moverJobId: string().nullable(),
|
|
8310
|
+
state: RelocateJobStateSchema.nullable(),
|
|
8311
|
+
error: string().nullable()
|
|
8312
|
+
});
|
|
8313
|
+
var StorageMigrationJobSchema = object({
|
|
8314
|
+
jobId: string(),
|
|
8315
|
+
phase: StorageMigrationPhaseSchema,
|
|
8316
|
+
destinations: StorageMigrationDestinationsSchema,
|
|
8317
|
+
throttleMbps: number(),
|
|
8318
|
+
moves: array(StorageMigrationMoveSchema),
|
|
8319
|
+
pauseLeaseId: string().nullable(),
|
|
8320
|
+
pausedParticipants: array(StorageMigrationParticipantSchema),
|
|
8321
|
+
repointed: boolean(),
|
|
8322
|
+
cancelRequested: boolean(),
|
|
8323
|
+
startedAt: number(),
|
|
8324
|
+
updatedAt: number(),
|
|
8325
|
+
finishedAt: number().nullable(),
|
|
8326
|
+
error: string().nullable()
|
|
8327
|
+
});
|
|
8328
|
+
var StorageMigrationPlanSchema = object({
|
|
8329
|
+
destinations: StorageMigrationDestinationsSchema,
|
|
8330
|
+
moves: array(object({
|
|
8331
|
+
storageClass: StorageMigrationClassSchema,
|
|
8332
|
+
fromLocationId: string(),
|
|
8333
|
+
toLocationId: string()
|
|
8334
|
+
}))
|
|
8255
8335
|
});
|
|
8256
8336
|
/**
|
|
8257
8337
|
* `StorageLocationType` — an addon-declared id that identifies the *kind* of
|
|
@@ -16762,13 +16842,19 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
16762
16842
|
}), method(object({ deviceId: number() }), EventPruneCountsSchema, {
|
|
16763
16843
|
kind: "mutation",
|
|
16764
16844
|
auth: "admin"
|
|
16765
|
-
}), method(
|
|
16845
|
+
}), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
|
|
16766
16846
|
kind: "mutation",
|
|
16767
16847
|
auth: "admin"
|
|
16768
|
-
}), method(object({
|
|
16769
|
-
kind: "
|
|
16848
|
+
}), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
|
|
16849
|
+
kind: "mutation",
|
|
16850
|
+
auth: "admin"
|
|
16851
|
+
}), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
|
|
16852
|
+
kind: "mutation",
|
|
16853
|
+
auth: "admin"
|
|
16854
|
+
}), method(StorageMigrationMediaMoveInputSchema, object({ jobId: string() }), {
|
|
16855
|
+
kind: "mutation",
|
|
16770
16856
|
auth: "admin"
|
|
16771
|
-
}), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
16857
|
+
}), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
16772
16858
|
kind: "mutation",
|
|
16773
16859
|
auth: "admin"
|
|
16774
16860
|
}), method(OpsLogQueryInputSchema, array(OpsLogEntrySchema).readonly(), {
|
|
@@ -18265,7 +18351,13 @@ var NodeInferenceDevicesSchema = object({
|
|
|
18265
18351
|
reachable: boolean(),
|
|
18266
18352
|
devices: array(NodeInferenceDeviceSchema).readonly()
|
|
18267
18353
|
});
|
|
18268
|
-
method(object({
|
|
18354
|
+
method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
|
|
18355
|
+
kind: "mutation",
|
|
18356
|
+
auth: "admin"
|
|
18357
|
+
}), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
|
|
18358
|
+
kind: "mutation",
|
|
18359
|
+
auth: "admin"
|
|
18360
|
+
}), method(object({
|
|
18269
18361
|
deviceId: number(),
|
|
18270
18362
|
agentNodeId: string()
|
|
18271
18363
|
}), object({ success: literal(true) }), {
|
|
@@ -18939,6 +19031,13 @@ method(object({ locationId: string() }), EvictableUsageSchema), method(object({
|
|
|
18939
19031
|
locationId: string(),
|
|
18940
19032
|
targetBytes: number().int().positive()
|
|
18941
19033
|
}), EvictResultSchema, { kind: "mutation" });
|
|
19034
|
+
method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin" }), method(StorageMigrationInputSchema, object({ jobId: string() }), {
|
|
19035
|
+
kind: "mutation",
|
|
19036
|
+
auth: "admin"
|
|
19037
|
+
}), method(object({ jobId: string().optional() }), StorageMigrationJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
19038
|
+
kind: "mutation",
|
|
19039
|
+
auth: "admin"
|
|
19040
|
+
});
|
|
18942
19041
|
var ProviderInfoSchema = discriminatedUnion("shouldSaveDiskSpace", [object({
|
|
18943
19042
|
providerId: string().min(1),
|
|
18944
19043
|
displayName: string().min(1),
|
|
@@ -19042,6 +19141,28 @@ var TerminalProfileInfoSchema = object({
|
|
|
19042
19141
|
label: string(),
|
|
19043
19142
|
description: string().optional()
|
|
19044
19143
|
});
|
|
19144
|
+
/**
|
|
19145
|
+
* A durable operator-created Terminal instance. Profiles are templates; only
|
|
19146
|
+
* an instance declares a camera.
|
|
19147
|
+
*/
|
|
19148
|
+
var TerminalInstanceInfoSchema = object({
|
|
19149
|
+
instanceId: string(),
|
|
19150
|
+
cameraStableId: string(),
|
|
19151
|
+
nodeId: string(),
|
|
19152
|
+
profileId: string(),
|
|
19153
|
+
profileLabel: string(),
|
|
19154
|
+
name: string(),
|
|
19155
|
+
enabled: boolean()
|
|
19156
|
+
});
|
|
19157
|
+
var TerminalLegacyCameraSchema = object({
|
|
19158
|
+
stableId: string(),
|
|
19159
|
+
nodeId: string(),
|
|
19160
|
+
profileId: string(),
|
|
19161
|
+
profileLabel: string(),
|
|
19162
|
+
name: string(),
|
|
19163
|
+
/** Only legacy monitor cameras can retain their historic stable identity. */
|
|
19164
|
+
adoptable: boolean()
|
|
19165
|
+
});
|
|
19045
19166
|
var TerminalOutputEventSchema = discriminatedUnion("kind", [object({
|
|
19046
19167
|
seq: number().int().positive(),
|
|
19047
19168
|
kind: literal("data"),
|
|
@@ -19058,7 +19179,29 @@ var TerminalOutputBatchSchema = object({
|
|
|
19058
19179
|
snapshot: string().optional(),
|
|
19059
19180
|
events: array(TerminalOutputEventSchema).readonly()
|
|
19060
19181
|
});
|
|
19061
|
-
method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(
|
|
19182
|
+
method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalInstanceInfoSchema).readonly(), { auth: "admin" }), method(object({
|
|
19183
|
+
targetNodeId: string().min(1),
|
|
19184
|
+
profileId: string().min(1),
|
|
19185
|
+
name: string().trim().min(1).max(160).optional()
|
|
19186
|
+
}), TerminalInstanceInfoSchema, {
|
|
19187
|
+
kind: "mutation",
|
|
19188
|
+
auth: "admin"
|
|
19189
|
+
}), method(object({ instanceId: string().min(1) }), _void(), {
|
|
19190
|
+
kind: "mutation",
|
|
19191
|
+
auth: "admin"
|
|
19192
|
+
}), method(object({
|
|
19193
|
+
instanceId: string().min(1),
|
|
19194
|
+
enabled: boolean()
|
|
19195
|
+
}), TerminalInstanceInfoSchema, {
|
|
19196
|
+
kind: "mutation",
|
|
19197
|
+
auth: "admin"
|
|
19198
|
+
}), method(_void(), array(TerminalLegacyCameraSchema).readonly(), { auth: "admin" }), method(object({
|
|
19199
|
+
stableId: string().min(1),
|
|
19200
|
+
name: string().trim().min(1).max(160).optional()
|
|
19201
|
+
}), TerminalInstanceInfoSchema, {
|
|
19202
|
+
kind: "mutation",
|
|
19203
|
+
auth: "admin"
|
|
19204
|
+
}), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
|
|
19062
19205
|
profileId: string(),
|
|
19063
19206
|
cols: number().int().positive(),
|
|
19064
19207
|
rows: number().int().positive()
|
|
@@ -19075,7 +19218,13 @@ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }),
|
|
|
19075
19218
|
}), method(object({
|
|
19076
19219
|
sessionId: string(),
|
|
19077
19220
|
afterSeq: number().int().nonnegative(),
|
|
19078
|
-
waitMs: number().int().min(0).max(2e3).default(0)
|
|
19221
|
+
waitMs: number().int().min(0).max(2e3).default(0),
|
|
19222
|
+
/**
|
|
19223
|
+
* Wait when a just-opened session has no output yet. Kept opt-in so a
|
|
19224
|
+
* browser's initial repaint remains immediate; the camera snapshot
|
|
19225
|
+
* relay uses it to avoid encoding a blank startup frame.
|
|
19226
|
+
*/
|
|
19227
|
+
waitForOutput: boolean().optional()
|
|
19079
19228
|
}), TerminalOutputBatchSchema, {
|
|
19080
19229
|
kind: "mutation",
|
|
19081
19230
|
auth: "admin",
|
|
@@ -21016,6 +21165,7 @@ var FaceInfoSchema = object({
|
|
|
21016
21165
|
var FaceFilterEnum = _enum([
|
|
21017
21166
|
"unassigned",
|
|
21018
21167
|
"recognized",
|
|
21168
|
+
"identified",
|
|
21019
21169
|
"all"
|
|
21020
21170
|
]);
|
|
21021
21171
|
var MediaFileLiteSchema$1 = object({
|
|
@@ -21044,6 +21194,8 @@ method(_void(), array(IdentitySchema).readonly()), method(object({ name: string(
|
|
|
21044
21194
|
kind: "mutation",
|
|
21045
21195
|
auth: "admin"
|
|
21046
21196
|
}), method(object({
|
|
21197
|
+
/** Restrict to one camera. Absent keeps the cluster-wide gallery view. */
|
|
21198
|
+
deviceId: number().int().optional(),
|
|
21047
21199
|
limit: number().int().positive().optional(),
|
|
21048
21200
|
filter: FaceFilterEnum.optional(),
|
|
21049
21201
|
/**
|
|
@@ -22809,6 +22961,10 @@ var OsdSourceSchema = discriminatedUnion("kind", [
|
|
|
22809
22961
|
capName: string().min(1).max(64),
|
|
22810
22962
|
/** Dot path inside the slice, e.g. `detected`, `value`, `mode`. */
|
|
22811
22963
|
valuePath: string().min(1).max(64)
|
|
22964
|
+
}),
|
|
22965
|
+
object({
|
|
22966
|
+
kind: literal("latest-recognition"),
|
|
22967
|
+
recognition: _enum(["person", "plate"])
|
|
22812
22968
|
})
|
|
22813
22969
|
]);
|
|
22814
22970
|
var OsdSlotBindingSchema = object({
|
|
@@ -22914,6 +23070,15 @@ method(object({ deviceId: number().int() }), object({
|
|
|
22914
23070
|
}), object({ success: literal(true) }), {
|
|
22915
23071
|
kind: "mutation",
|
|
22916
23072
|
auth: "admin"
|
|
23073
|
+
}), method(object({
|
|
23074
|
+
sourceDeviceId: number().int(),
|
|
23075
|
+
targetDeviceId: number().int()
|
|
23076
|
+
}), object({
|
|
23077
|
+
copied: number().int().nonnegative(),
|
|
23078
|
+
skipped: number().int().nonnegative()
|
|
23079
|
+
}), {
|
|
23080
|
+
kind: "mutation",
|
|
23081
|
+
auth: "admin"
|
|
22917
23082
|
}), method(object({
|
|
22918
23083
|
deviceId: number().int(),
|
|
22919
23084
|
slotId: string().min(1),
|
|
@@ -23799,13 +23964,19 @@ method(object({
|
|
|
23799
23964
|
}), {
|
|
23800
23965
|
kind: "mutation",
|
|
23801
23966
|
auth: "admin"
|
|
23802
|
-
}), method(
|
|
23967
|
+
}), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
|
|
23803
23968
|
kind: "mutation",
|
|
23804
23969
|
auth: "admin"
|
|
23805
|
-
}), method(object({
|
|
23806
|
-
kind: "
|
|
23970
|
+
}), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
|
|
23971
|
+
kind: "mutation",
|
|
23807
23972
|
auth: "admin"
|
|
23808
|
-
}), method(
|
|
23973
|
+
}), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
|
|
23974
|
+
kind: "mutation",
|
|
23975
|
+
auth: "admin"
|
|
23976
|
+
}), method(StorageMigrationFootageMoveInputSchema, object({ jobId: string() }), {
|
|
23977
|
+
kind: "mutation",
|
|
23978
|
+
auth: "admin"
|
|
23979
|
+
}), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
23809
23980
|
kind: "mutation",
|
|
23810
23981
|
auth: "admin"
|
|
23811
23982
|
});
|
|
@@ -27927,6 +28098,12 @@ Object.freeze({
|
|
|
27927
28098
|
addonId: null,
|
|
27928
28099
|
access: "delete"
|
|
27929
28100
|
},
|
|
28101
|
+
"osdManager.copyDeviceConfiguration": {
|
|
28102
|
+
capName: "osd-manager",
|
|
28103
|
+
capScope: "system",
|
|
28104
|
+
addonId: null,
|
|
28105
|
+
access: "create"
|
|
28106
|
+
},
|
|
27930
28107
|
"osdManager.getConditionSupport": {
|
|
27931
28108
|
capName: "osd-manager",
|
|
27932
28109
|
capScope: "system",
|
|
@@ -28023,7 +28200,7 @@ Object.freeze({
|
|
|
28023
28200
|
addonId: null,
|
|
28024
28201
|
access: "create"
|
|
28025
28202
|
},
|
|
28026
|
-
"pipelineAnalytics.
|
|
28203
|
+
"pipelineAnalytics.cancelStorageMigrationMove": {
|
|
28027
28204
|
capName: "pipeline-analytics",
|
|
28028
28205
|
capScope: "device",
|
|
28029
28206
|
addonId: null,
|
|
@@ -28095,12 +28272,6 @@ Object.freeze({
|
|
|
28095
28272
|
addonId: null,
|
|
28096
28273
|
access: "view"
|
|
28097
28274
|
},
|
|
28098
|
-
"pipelineAnalytics.getMediaRelocateStatus": {
|
|
28099
|
-
capName: "pipeline-analytics",
|
|
28100
|
-
capScope: "device",
|
|
28101
|
-
addonId: null,
|
|
28102
|
-
access: "view"
|
|
28103
|
-
},
|
|
28104
28275
|
"pipelineAnalytics.getMotionEvents": {
|
|
28105
28276
|
capName: "pipeline-analytics",
|
|
28106
28277
|
capScope: "device",
|
|
@@ -28137,6 +28308,12 @@ Object.freeze({
|
|
|
28137
28308
|
addonId: null,
|
|
28138
28309
|
access: "view"
|
|
28139
28310
|
},
|
|
28311
|
+
"pipelineAnalytics.getStorageMigrationMoveStatus": {
|
|
28312
|
+
capName: "pipeline-analytics",
|
|
28313
|
+
capScope: "device",
|
|
28314
|
+
addonId: null,
|
|
28315
|
+
access: "view"
|
|
28316
|
+
},
|
|
28140
28317
|
"pipelineAnalytics.getTrack": {
|
|
28141
28318
|
capName: "pipeline-analytics",
|
|
28142
28319
|
capScope: "device",
|
|
@@ -28215,6 +28392,12 @@ Object.freeze({
|
|
|
28215
28392
|
addonId: null,
|
|
28216
28393
|
access: "view"
|
|
28217
28394
|
},
|
|
28395
|
+
"pipelineAnalytics.pauseForStorageMigration": {
|
|
28396
|
+
capName: "pipeline-analytics",
|
|
28397
|
+
capScope: "device",
|
|
28398
|
+
addonId: null,
|
|
28399
|
+
access: "create"
|
|
28400
|
+
},
|
|
28218
28401
|
"pipelineAnalytics.proposeRetrainAnnotations": {
|
|
28219
28402
|
capName: "pipeline-analytics",
|
|
28220
28403
|
capScope: "device",
|
|
@@ -28245,7 +28428,7 @@ Object.freeze({
|
|
|
28245
28428
|
addonId: null,
|
|
28246
28429
|
access: "create"
|
|
28247
28430
|
},
|
|
28248
|
-
"pipelineAnalytics.
|
|
28431
|
+
"pipelineAnalytics.refreshStorageLocationsForMigration": {
|
|
28249
28432
|
capName: "pipeline-analytics",
|
|
28250
28433
|
capScope: "device",
|
|
28251
28434
|
addonId: null,
|
|
@@ -28257,6 +28440,12 @@ Object.freeze({
|
|
|
28257
28440
|
addonId: null,
|
|
28258
28441
|
access: "create"
|
|
28259
28442
|
},
|
|
28443
|
+
"pipelineAnalytics.resumeForStorageMigration": {
|
|
28444
|
+
capName: "pipeline-analytics",
|
|
28445
|
+
capScope: "device",
|
|
28446
|
+
addonId: null,
|
|
28447
|
+
access: "create"
|
|
28448
|
+
},
|
|
28260
28449
|
"pipelineAnalytics.saveRetrainAnnotations": {
|
|
28261
28450
|
capName: "pipeline-analytics",
|
|
28262
28451
|
capScope: "device",
|
|
@@ -28281,6 +28470,12 @@ Object.freeze({
|
|
|
28281
28470
|
addonId: null,
|
|
28282
28471
|
access: "create"
|
|
28283
28472
|
},
|
|
28473
|
+
"pipelineAnalytics.startStorageMigrationMove": {
|
|
28474
|
+
capName: "pipeline-analytics",
|
|
28475
|
+
capScope: "device",
|
|
28476
|
+
addonId: null,
|
|
28477
|
+
access: "create"
|
|
28478
|
+
},
|
|
28284
28479
|
"pipelineAnalytics.wipeAllAnalytics": {
|
|
28285
28480
|
capName: "pipeline-analytics",
|
|
28286
28481
|
capScope: "device",
|
|
@@ -28647,6 +28842,12 @@ Object.freeze({
|
|
|
28647
28842
|
addonId: null,
|
|
28648
28843
|
access: "view"
|
|
28649
28844
|
},
|
|
28845
|
+
"pipelineOrchestrator.pauseForStorageMigration": {
|
|
28846
|
+
capName: "pipeline-orchestrator",
|
|
28847
|
+
capScope: "system",
|
|
28848
|
+
addonId: null,
|
|
28849
|
+
access: "create"
|
|
28850
|
+
},
|
|
28650
28851
|
"pipelineOrchestrator.rebalance": {
|
|
28651
28852
|
capName: "pipeline-orchestrator",
|
|
28652
28853
|
capScope: "system",
|
|
@@ -28671,6 +28872,12 @@ Object.freeze({
|
|
|
28671
28872
|
addonId: null,
|
|
28672
28873
|
access: "view"
|
|
28673
28874
|
},
|
|
28875
|
+
"pipelineOrchestrator.resumeForStorageMigration": {
|
|
28876
|
+
capName: "pipeline-orchestrator",
|
|
28877
|
+
capScope: "system",
|
|
28878
|
+
addonId: null,
|
|
28879
|
+
access: "create"
|
|
28880
|
+
},
|
|
28674
28881
|
"pipelineOrchestrator.saveTemplate": {
|
|
28675
28882
|
capName: "pipeline-orchestrator",
|
|
28676
28883
|
capScope: "system",
|
|
@@ -29067,7 +29274,7 @@ Object.freeze({
|
|
|
29067
29274
|
addonId: null,
|
|
29068
29275
|
access: "create"
|
|
29069
29276
|
},
|
|
29070
|
-
"recording.
|
|
29277
|
+
"recording.cancelStorageMigrationMove": {
|
|
29071
29278
|
capName: "recording",
|
|
29072
29279
|
capScope: "system",
|
|
29073
29280
|
addonId: null,
|
|
@@ -29103,7 +29310,7 @@ Object.freeze({
|
|
|
29103
29310
|
addonId: null,
|
|
29104
29311
|
access: "view"
|
|
29105
29312
|
},
|
|
29106
|
-
"recording.
|
|
29313
|
+
"recording.getStorageMigrationMoveStatus": {
|
|
29107
29314
|
capName: "recording",
|
|
29108
29315
|
capScope: "system",
|
|
29109
29316
|
addonId: null,
|
|
@@ -29127,6 +29334,12 @@ Object.freeze({
|
|
|
29127
29334
|
addonId: null,
|
|
29128
29335
|
access: "view"
|
|
29129
29336
|
},
|
|
29337
|
+
"recording.pauseForStorageMigration": {
|
|
29338
|
+
capName: "recording",
|
|
29339
|
+
capScope: "system",
|
|
29340
|
+
addonId: null,
|
|
29341
|
+
access: "create"
|
|
29342
|
+
},
|
|
29130
29343
|
"recording.pruneFootage": {
|
|
29131
29344
|
capName: "recording",
|
|
29132
29345
|
capScope: "system",
|
|
@@ -29145,7 +29358,7 @@ Object.freeze({
|
|
|
29145
29358
|
addonId: null,
|
|
29146
29359
|
access: "view"
|
|
29147
29360
|
},
|
|
29148
|
-
"recording.
|
|
29361
|
+
"recording.refreshStorageLocationsForMigration": {
|
|
29149
29362
|
capName: "recording",
|
|
29150
29363
|
capScope: "system",
|
|
29151
29364
|
addonId: null,
|
|
@@ -29169,12 +29382,24 @@ Object.freeze({
|
|
|
29169
29382
|
addonId: null,
|
|
29170
29383
|
access: "create"
|
|
29171
29384
|
},
|
|
29385
|
+
"recording.resumeForStorageMigration": {
|
|
29386
|
+
capName: "recording",
|
|
29387
|
+
capScope: "system",
|
|
29388
|
+
addonId: null,
|
|
29389
|
+
access: "create"
|
|
29390
|
+
},
|
|
29172
29391
|
"recording.setDeviceConfig": {
|
|
29173
29392
|
capName: "recording",
|
|
29174
29393
|
capScope: "system",
|
|
29175
29394
|
addonId: null,
|
|
29176
29395
|
access: "create"
|
|
29177
29396
|
},
|
|
29397
|
+
"recording.startStorageMigrationMove": {
|
|
29398
|
+
capName: "recording",
|
|
29399
|
+
capScope: "system",
|
|
29400
|
+
addonId: null,
|
|
29401
|
+
access: "create"
|
|
29402
|
+
},
|
|
29178
29403
|
"recordingExport.cancelExport": {
|
|
29179
29404
|
capName: "recordingExport",
|
|
29180
29405
|
capScope: "system",
|
|
@@ -29565,6 +29790,30 @@ Object.freeze({
|
|
|
29565
29790
|
addonId: null,
|
|
29566
29791
|
access: "view"
|
|
29567
29792
|
},
|
|
29793
|
+
"storageMigration.cancel": {
|
|
29794
|
+
capName: "storage-migration",
|
|
29795
|
+
capScope: "system",
|
|
29796
|
+
addonId: null,
|
|
29797
|
+
access: "create"
|
|
29798
|
+
},
|
|
29799
|
+
"storageMigration.plan": {
|
|
29800
|
+
capName: "storage-migration",
|
|
29801
|
+
capScope: "system",
|
|
29802
|
+
addonId: null,
|
|
29803
|
+
access: "view"
|
|
29804
|
+
},
|
|
29805
|
+
"storageMigration.start": {
|
|
29806
|
+
capName: "storage-migration",
|
|
29807
|
+
capScope: "system",
|
|
29808
|
+
addonId: null,
|
|
29809
|
+
access: "create"
|
|
29810
|
+
},
|
|
29811
|
+
"storageMigration.status": {
|
|
29812
|
+
capName: "storage-migration",
|
|
29813
|
+
capScope: "system",
|
|
29814
|
+
addonId: null,
|
|
29815
|
+
access: "view"
|
|
29816
|
+
},
|
|
29568
29817
|
"storageProvider.abortUpload": {
|
|
29569
29818
|
capName: "storage-provider",
|
|
29570
29819
|
capScope: "system",
|
|
@@ -29943,12 +30192,42 @@ Object.freeze({
|
|
|
29943
30192
|
addonId: null,
|
|
29944
30193
|
access: "create"
|
|
29945
30194
|
},
|
|
30195
|
+
"terminalSession.adoptLegacyMonitor": {
|
|
30196
|
+
capName: "terminal-session",
|
|
30197
|
+
capScope: "system",
|
|
30198
|
+
addonId: null,
|
|
30199
|
+
access: "create"
|
|
30200
|
+
},
|
|
29946
30201
|
"terminalSession.close": {
|
|
29947
30202
|
capName: "terminal-session",
|
|
29948
30203
|
capScope: "system",
|
|
29949
30204
|
addonId: null,
|
|
29950
30205
|
access: "create"
|
|
29951
30206
|
},
|
|
30207
|
+
"terminalSession.createInstance": {
|
|
30208
|
+
capName: "terminal-session",
|
|
30209
|
+
capScope: "system",
|
|
30210
|
+
addonId: null,
|
|
30211
|
+
access: "create"
|
|
30212
|
+
},
|
|
30213
|
+
"terminalSession.deleteInstance": {
|
|
30214
|
+
capName: "terminal-session",
|
|
30215
|
+
capScope: "system",
|
|
30216
|
+
addonId: null,
|
|
30217
|
+
access: "delete"
|
|
30218
|
+
},
|
|
30219
|
+
"terminalSession.listInstances": {
|
|
30220
|
+
capName: "terminal-session",
|
|
30221
|
+
capScope: "system",
|
|
30222
|
+
addonId: null,
|
|
30223
|
+
access: "view"
|
|
30224
|
+
},
|
|
30225
|
+
"terminalSession.listLegacyCameras": {
|
|
30226
|
+
capName: "terminal-session",
|
|
30227
|
+
capScope: "system",
|
|
30228
|
+
addonId: null,
|
|
30229
|
+
access: "view"
|
|
30230
|
+
},
|
|
29952
30231
|
"terminalSession.listProfiles": {
|
|
29953
30232
|
capName: "terminal-session",
|
|
29954
30233
|
capScope: "system",
|
|
@@ -29979,6 +30258,12 @@ Object.freeze({
|
|
|
29979
30258
|
addonId: null,
|
|
29980
30259
|
access: "create"
|
|
29981
30260
|
},
|
|
30261
|
+
"terminalSession.setInstanceEnabled": {
|
|
30262
|
+
capName: "terminal-session",
|
|
30263
|
+
capScope: "system",
|
|
30264
|
+
addonId: null,
|
|
30265
|
+
access: "create"
|
|
30266
|
+
},
|
|
29982
30267
|
"terminalSession.writeInput": {
|
|
29983
30268
|
capName: "terminal-session",
|
|
29984
30269
|
capScope: "system",
|
|
@@ -8181,12 +8181,11 @@ var RecordingConfigSchema = object({
|
|
|
8181
8181
|
/**
|
|
8182
8182
|
* Entity-relocation job state (storage entity-routing spec, Phase 4).
|
|
8183
8183
|
*
|
|
8184
|
-
* One shape shared by the recorder
|
|
8185
|
-
*
|
|
8186
|
-
*
|
|
8187
|
-
*
|
|
8188
|
-
*
|
|
8189
|
-
* row on the owning addon's surface.
|
|
8184
|
+
* One shape shared by the recorder and pipeline-analytics internal movers.
|
|
8185
|
+
* The public admin surface is `storage-migration`; child jobs remain in RAM
|
|
8186
|
+
* because copy-if-absent, verify, delete and index/row repoint are resumable.
|
|
8187
|
+
* Each completed/failed run also lands one durable ops-log row on its owning
|
|
8188
|
+
* addon surface.
|
|
8190
8189
|
*/
|
|
8191
8190
|
var RelocateJobStateSchema = _enum([
|
|
8192
8191
|
"running",
|
|
@@ -8213,19 +8212,100 @@ var RelocateJobSchema = object({
|
|
|
8213
8212
|
finishedAt: number().nullable(),
|
|
8214
8213
|
error: string().nullable()
|
|
8215
8214
|
});
|
|
8215
|
+
/** Profile-derived footage selection used only by the migration coordinator:
|
|
8216
|
+
* `recordings` owns high+mid; `recordingsLow` owns low. */
|
|
8217
|
+
var RelocateFootageClassSchema = _enum(["recordings", "recordingsLow"]);
|
|
8216
8218
|
var RelocateFootageInputSchema = object({
|
|
8217
|
-
deviceId: number().optional(),
|
|
8218
8219
|
fromLocationId: string(),
|
|
8219
8220
|
toLocationId: string(),
|
|
8220
8221
|
entities: array(_enum(["segments"])).optional(),
|
|
8222
|
+
/** Limits relocation to the logical profile class. Omit only for the
|
|
8223
|
+
* pre-orchestration compatibility path. */
|
|
8224
|
+
footageClass: RelocateFootageClassSchema.optional(),
|
|
8221
8225
|
/** Copy throttle in MB/s (default 40) — the drain is a background chore,
|
|
8222
8226
|
* never allowed to starve live writers. */
|
|
8223
8227
|
throttleMbps: number().min(1).max(1e3).optional()
|
|
8224
8228
|
});
|
|
8225
|
-
|
|
8226
|
-
|
|
8229
|
+
/** Internal, lease-scoped participant operation. It is intentionally separate
|
|
8230
|
+
* from persistent recording settings: a migration never changes
|
|
8231
|
+
* `RecordingConfig.enabled` or camera wrapper bindings. */
|
|
8232
|
+
var StorageMigrationLeaseInputSchema = object({ leaseId: string().min(1) });
|
|
8233
|
+
var StorageMigrationFootageMoveInputSchema = RelocateFootageInputSchema.extend({ leaseId: string().min(1) });
|
|
8234
|
+
var StorageMigrationMediaMoveInputSchema = object({
|
|
8227
8235
|
toLocationId: string(),
|
|
8228
8236
|
throttleMbps: number().min(1).max(1e3).optional()
|
|
8237
|
+
}).extend({ leaseId: string().min(1) });
|
|
8238
|
+
/** The independently selectable logical storage classes. `recordings`
|
|
8239
|
+
* encompasses the high and mid segment profiles; `recordingsLow` is low
|
|
8240
|
+
* segments; `eventMedia` is post-analysis blobs. */
|
|
8241
|
+
var StorageMigrationClassSchema = _enum([
|
|
8242
|
+
"recordings",
|
|
8243
|
+
"recordingsLow",
|
|
8244
|
+
"eventMedia"
|
|
8245
|
+
]);
|
|
8246
|
+
/** A destination is always an existing, fully-qualified location id. The
|
|
8247
|
+
* migration API intentionally never changes a source location's `basePath`:
|
|
8248
|
+
* callers create a new `<type>:<slug>` location, then select it here. */
|
|
8249
|
+
var StorageMigrationDestinationsSchema = object({
|
|
8250
|
+
recordings: string().min(1).optional(),
|
|
8251
|
+
recordingsLow: string().min(1).optional(),
|
|
8252
|
+
eventMedia: string().min(1).optional()
|
|
8253
|
+
}).refine((value) => Object.keys(value).length > 0, { message: "select at least one storage class" });
|
|
8254
|
+
/** Shared input for planning and starting an orchestrated storage migration. */
|
|
8255
|
+
var StorageMigrationInputSchema = object({
|
|
8256
|
+
destinations: StorageMigrationDestinationsSchema,
|
|
8257
|
+
throttleMbps: number().min(1).max(1e3).optional()
|
|
8258
|
+
});
|
|
8259
|
+
/** The durable coordinator state machine. The only phase that changes default
|
|
8260
|
+
* locations is `repointing`, after every selected mover has completed and been
|
|
8261
|
+
* verified. */
|
|
8262
|
+
var StorageMigrationPhaseSchema = _enum([
|
|
8263
|
+
"planning",
|
|
8264
|
+
"pausing",
|
|
8265
|
+
"moving",
|
|
8266
|
+
"verifying",
|
|
8267
|
+
"repointing",
|
|
8268
|
+
"refreshing",
|
|
8269
|
+
"resuming",
|
|
8270
|
+
"done",
|
|
8271
|
+
"failed",
|
|
8272
|
+
"cancelled"
|
|
8273
|
+
]);
|
|
8274
|
+
var StorageMigrationParticipantSchema = _enum([
|
|
8275
|
+
"pipeline",
|
|
8276
|
+
"recorder",
|
|
8277
|
+
"analytics"
|
|
8278
|
+
]);
|
|
8279
|
+
var StorageMigrationMoveSchema = object({
|
|
8280
|
+
storageClass: StorageMigrationClassSchema,
|
|
8281
|
+
fromLocationId: string(),
|
|
8282
|
+
toLocationId: string(),
|
|
8283
|
+
moverJobId: string().nullable(),
|
|
8284
|
+
state: RelocateJobStateSchema.nullable(),
|
|
8285
|
+
error: string().nullable()
|
|
8286
|
+
});
|
|
8287
|
+
var StorageMigrationJobSchema = object({
|
|
8288
|
+
jobId: string(),
|
|
8289
|
+
phase: StorageMigrationPhaseSchema,
|
|
8290
|
+
destinations: StorageMigrationDestinationsSchema,
|
|
8291
|
+
throttleMbps: number(),
|
|
8292
|
+
moves: array(StorageMigrationMoveSchema),
|
|
8293
|
+
pauseLeaseId: string().nullable(),
|
|
8294
|
+
pausedParticipants: array(StorageMigrationParticipantSchema),
|
|
8295
|
+
repointed: boolean(),
|
|
8296
|
+
cancelRequested: boolean(),
|
|
8297
|
+
startedAt: number(),
|
|
8298
|
+
updatedAt: number(),
|
|
8299
|
+
finishedAt: number().nullable(),
|
|
8300
|
+
error: string().nullable()
|
|
8301
|
+
});
|
|
8302
|
+
var StorageMigrationPlanSchema = object({
|
|
8303
|
+
destinations: StorageMigrationDestinationsSchema,
|
|
8304
|
+
moves: array(object({
|
|
8305
|
+
storageClass: StorageMigrationClassSchema,
|
|
8306
|
+
fromLocationId: string(),
|
|
8307
|
+
toLocationId: string()
|
|
8308
|
+
}))
|
|
8229
8309
|
});
|
|
8230
8310
|
/**
|
|
8231
8311
|
* `StorageLocationType` — an addon-declared id that identifies the *kind* of
|
|
@@ -16736,13 +16816,19 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
16736
16816
|
}), method(object({ deviceId: number() }), EventPruneCountsSchema, {
|
|
16737
16817
|
kind: "mutation",
|
|
16738
16818
|
auth: "admin"
|
|
16739
|
-
}), method(
|
|
16819
|
+
}), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
|
|
16740
16820
|
kind: "mutation",
|
|
16741
16821
|
auth: "admin"
|
|
16742
|
-
}), method(object({
|
|
16743
|
-
kind: "
|
|
16822
|
+
}), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
|
|
16823
|
+
kind: "mutation",
|
|
16824
|
+
auth: "admin"
|
|
16825
|
+
}), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
|
|
16826
|
+
kind: "mutation",
|
|
16827
|
+
auth: "admin"
|
|
16828
|
+
}), method(StorageMigrationMediaMoveInputSchema, object({ jobId: string() }), {
|
|
16829
|
+
kind: "mutation",
|
|
16744
16830
|
auth: "admin"
|
|
16745
|
-
}), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
16831
|
+
}), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
16746
16832
|
kind: "mutation",
|
|
16747
16833
|
auth: "admin"
|
|
16748
16834
|
}), method(OpsLogQueryInputSchema, array(OpsLogEntrySchema).readonly(), {
|
|
@@ -18239,7 +18325,13 @@ var NodeInferenceDevicesSchema = object({
|
|
|
18239
18325
|
reachable: boolean(),
|
|
18240
18326
|
devices: array(NodeInferenceDeviceSchema).readonly()
|
|
18241
18327
|
});
|
|
18242
|
-
method(object({
|
|
18328
|
+
method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
|
|
18329
|
+
kind: "mutation",
|
|
18330
|
+
auth: "admin"
|
|
18331
|
+
}), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
|
|
18332
|
+
kind: "mutation",
|
|
18333
|
+
auth: "admin"
|
|
18334
|
+
}), method(object({
|
|
18243
18335
|
deviceId: number(),
|
|
18244
18336
|
agentNodeId: string()
|
|
18245
18337
|
}), object({ success: literal(true) }), {
|
|
@@ -18913,6 +19005,13 @@ method(object({ locationId: string() }), EvictableUsageSchema), method(object({
|
|
|
18913
19005
|
locationId: string(),
|
|
18914
19006
|
targetBytes: number().int().positive()
|
|
18915
19007
|
}), EvictResultSchema, { kind: "mutation" });
|
|
19008
|
+
method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin" }), method(StorageMigrationInputSchema, object({ jobId: string() }), {
|
|
19009
|
+
kind: "mutation",
|
|
19010
|
+
auth: "admin"
|
|
19011
|
+
}), method(object({ jobId: string().optional() }), StorageMigrationJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
19012
|
+
kind: "mutation",
|
|
19013
|
+
auth: "admin"
|
|
19014
|
+
});
|
|
18916
19015
|
var ProviderInfoSchema = discriminatedUnion("shouldSaveDiskSpace", [object({
|
|
18917
19016
|
providerId: string().min(1),
|
|
18918
19017
|
displayName: string().min(1),
|
|
@@ -19016,6 +19115,28 @@ var TerminalProfileInfoSchema = object({
|
|
|
19016
19115
|
label: string(),
|
|
19017
19116
|
description: string().optional()
|
|
19018
19117
|
});
|
|
19118
|
+
/**
|
|
19119
|
+
* A durable operator-created Terminal instance. Profiles are templates; only
|
|
19120
|
+
* an instance declares a camera.
|
|
19121
|
+
*/
|
|
19122
|
+
var TerminalInstanceInfoSchema = object({
|
|
19123
|
+
instanceId: string(),
|
|
19124
|
+
cameraStableId: string(),
|
|
19125
|
+
nodeId: string(),
|
|
19126
|
+
profileId: string(),
|
|
19127
|
+
profileLabel: string(),
|
|
19128
|
+
name: string(),
|
|
19129
|
+
enabled: boolean()
|
|
19130
|
+
});
|
|
19131
|
+
var TerminalLegacyCameraSchema = object({
|
|
19132
|
+
stableId: string(),
|
|
19133
|
+
nodeId: string(),
|
|
19134
|
+
profileId: string(),
|
|
19135
|
+
profileLabel: string(),
|
|
19136
|
+
name: string(),
|
|
19137
|
+
/** Only legacy monitor cameras can retain their historic stable identity. */
|
|
19138
|
+
adoptable: boolean()
|
|
19139
|
+
});
|
|
19019
19140
|
var TerminalOutputEventSchema = discriminatedUnion("kind", [object({
|
|
19020
19141
|
seq: number().int().positive(),
|
|
19021
19142
|
kind: literal("data"),
|
|
@@ -19032,7 +19153,29 @@ var TerminalOutputBatchSchema = object({
|
|
|
19032
19153
|
snapshot: string().optional(),
|
|
19033
19154
|
events: array(TerminalOutputEventSchema).readonly()
|
|
19034
19155
|
});
|
|
19035
|
-
method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(
|
|
19156
|
+
method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalInstanceInfoSchema).readonly(), { auth: "admin" }), method(object({
|
|
19157
|
+
targetNodeId: string().min(1),
|
|
19158
|
+
profileId: string().min(1),
|
|
19159
|
+
name: string().trim().min(1).max(160).optional()
|
|
19160
|
+
}), TerminalInstanceInfoSchema, {
|
|
19161
|
+
kind: "mutation",
|
|
19162
|
+
auth: "admin"
|
|
19163
|
+
}), method(object({ instanceId: string().min(1) }), _void(), {
|
|
19164
|
+
kind: "mutation",
|
|
19165
|
+
auth: "admin"
|
|
19166
|
+
}), method(object({
|
|
19167
|
+
instanceId: string().min(1),
|
|
19168
|
+
enabled: boolean()
|
|
19169
|
+
}), TerminalInstanceInfoSchema, {
|
|
19170
|
+
kind: "mutation",
|
|
19171
|
+
auth: "admin"
|
|
19172
|
+
}), method(_void(), array(TerminalLegacyCameraSchema).readonly(), { auth: "admin" }), method(object({
|
|
19173
|
+
stableId: string().min(1),
|
|
19174
|
+
name: string().trim().min(1).max(160).optional()
|
|
19175
|
+
}), TerminalInstanceInfoSchema, {
|
|
19176
|
+
kind: "mutation",
|
|
19177
|
+
auth: "admin"
|
|
19178
|
+
}), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
|
|
19036
19179
|
profileId: string(),
|
|
19037
19180
|
cols: number().int().positive(),
|
|
19038
19181
|
rows: number().int().positive()
|
|
@@ -19049,7 +19192,13 @@ method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }),
|
|
|
19049
19192
|
}), method(object({
|
|
19050
19193
|
sessionId: string(),
|
|
19051
19194
|
afterSeq: number().int().nonnegative(),
|
|
19052
|
-
waitMs: number().int().min(0).max(2e3).default(0)
|
|
19195
|
+
waitMs: number().int().min(0).max(2e3).default(0),
|
|
19196
|
+
/**
|
|
19197
|
+
* Wait when a just-opened session has no output yet. Kept opt-in so a
|
|
19198
|
+
* browser's initial repaint remains immediate; the camera snapshot
|
|
19199
|
+
* relay uses it to avoid encoding a blank startup frame.
|
|
19200
|
+
*/
|
|
19201
|
+
waitForOutput: boolean().optional()
|
|
19053
19202
|
}), TerminalOutputBatchSchema, {
|
|
19054
19203
|
kind: "mutation",
|
|
19055
19204
|
auth: "admin",
|
|
@@ -20990,6 +21139,7 @@ var FaceInfoSchema = object({
|
|
|
20990
21139
|
var FaceFilterEnum = _enum([
|
|
20991
21140
|
"unassigned",
|
|
20992
21141
|
"recognized",
|
|
21142
|
+
"identified",
|
|
20993
21143
|
"all"
|
|
20994
21144
|
]);
|
|
20995
21145
|
var MediaFileLiteSchema$1 = object({
|
|
@@ -21018,6 +21168,8 @@ method(_void(), array(IdentitySchema).readonly()), method(object({ name: string(
|
|
|
21018
21168
|
kind: "mutation",
|
|
21019
21169
|
auth: "admin"
|
|
21020
21170
|
}), method(object({
|
|
21171
|
+
/** Restrict to one camera. Absent keeps the cluster-wide gallery view. */
|
|
21172
|
+
deviceId: number().int().optional(),
|
|
21021
21173
|
limit: number().int().positive().optional(),
|
|
21022
21174
|
filter: FaceFilterEnum.optional(),
|
|
21023
21175
|
/**
|
|
@@ -22783,6 +22935,10 @@ var OsdSourceSchema = discriminatedUnion("kind", [
|
|
|
22783
22935
|
capName: string().min(1).max(64),
|
|
22784
22936
|
/** Dot path inside the slice, e.g. `detected`, `value`, `mode`. */
|
|
22785
22937
|
valuePath: string().min(1).max(64)
|
|
22938
|
+
}),
|
|
22939
|
+
object({
|
|
22940
|
+
kind: literal("latest-recognition"),
|
|
22941
|
+
recognition: _enum(["person", "plate"])
|
|
22786
22942
|
})
|
|
22787
22943
|
]);
|
|
22788
22944
|
var OsdSlotBindingSchema = object({
|
|
@@ -22888,6 +23044,15 @@ method(object({ deviceId: number().int() }), object({
|
|
|
22888
23044
|
}), object({ success: literal(true) }), {
|
|
22889
23045
|
kind: "mutation",
|
|
22890
23046
|
auth: "admin"
|
|
23047
|
+
}), method(object({
|
|
23048
|
+
sourceDeviceId: number().int(),
|
|
23049
|
+
targetDeviceId: number().int()
|
|
23050
|
+
}), object({
|
|
23051
|
+
copied: number().int().nonnegative(),
|
|
23052
|
+
skipped: number().int().nonnegative()
|
|
23053
|
+
}), {
|
|
23054
|
+
kind: "mutation",
|
|
23055
|
+
auth: "admin"
|
|
22891
23056
|
}), method(object({
|
|
22892
23057
|
deviceId: number().int(),
|
|
22893
23058
|
slotId: string().min(1),
|
|
@@ -23773,13 +23938,19 @@ method(object({
|
|
|
23773
23938
|
}), {
|
|
23774
23939
|
kind: "mutation",
|
|
23775
23940
|
auth: "admin"
|
|
23776
|
-
}), method(
|
|
23941
|
+
}), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
|
|
23777
23942
|
kind: "mutation",
|
|
23778
23943
|
auth: "admin"
|
|
23779
|
-
}), method(object({
|
|
23780
|
-
kind: "
|
|
23944
|
+
}), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
|
|
23945
|
+
kind: "mutation",
|
|
23781
23946
|
auth: "admin"
|
|
23782
|
-
}), method(
|
|
23947
|
+
}), method(StorageMigrationLeaseInputSchema, object({ refreshed: literal(true) }), {
|
|
23948
|
+
kind: "mutation",
|
|
23949
|
+
auth: "admin"
|
|
23950
|
+
}), method(StorageMigrationFootageMoveInputSchema, object({ jobId: string() }), {
|
|
23951
|
+
kind: "mutation",
|
|
23952
|
+
auth: "admin"
|
|
23953
|
+
}), method(object({ jobId: string() }), RelocateJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
23783
23954
|
kind: "mutation",
|
|
23784
23955
|
auth: "admin"
|
|
23785
23956
|
});
|
|
@@ -27901,6 +28072,12 @@ Object.freeze({
|
|
|
27901
28072
|
addonId: null,
|
|
27902
28073
|
access: "delete"
|
|
27903
28074
|
},
|
|
28075
|
+
"osdManager.copyDeviceConfiguration": {
|
|
28076
|
+
capName: "osd-manager",
|
|
28077
|
+
capScope: "system",
|
|
28078
|
+
addonId: null,
|
|
28079
|
+
access: "create"
|
|
28080
|
+
},
|
|
27904
28081
|
"osdManager.getConditionSupport": {
|
|
27905
28082
|
capName: "osd-manager",
|
|
27906
28083
|
capScope: "system",
|
|
@@ -27997,7 +28174,7 @@ Object.freeze({
|
|
|
27997
28174
|
addonId: null,
|
|
27998
28175
|
access: "create"
|
|
27999
28176
|
},
|
|
28000
|
-
"pipelineAnalytics.
|
|
28177
|
+
"pipelineAnalytics.cancelStorageMigrationMove": {
|
|
28001
28178
|
capName: "pipeline-analytics",
|
|
28002
28179
|
capScope: "device",
|
|
28003
28180
|
addonId: null,
|
|
@@ -28069,12 +28246,6 @@ Object.freeze({
|
|
|
28069
28246
|
addonId: null,
|
|
28070
28247
|
access: "view"
|
|
28071
28248
|
},
|
|
28072
|
-
"pipelineAnalytics.getMediaRelocateStatus": {
|
|
28073
|
-
capName: "pipeline-analytics",
|
|
28074
|
-
capScope: "device",
|
|
28075
|
-
addonId: null,
|
|
28076
|
-
access: "view"
|
|
28077
|
-
},
|
|
28078
28249
|
"pipelineAnalytics.getMotionEvents": {
|
|
28079
28250
|
capName: "pipeline-analytics",
|
|
28080
28251
|
capScope: "device",
|
|
@@ -28111,6 +28282,12 @@ Object.freeze({
|
|
|
28111
28282
|
addonId: null,
|
|
28112
28283
|
access: "view"
|
|
28113
28284
|
},
|
|
28285
|
+
"pipelineAnalytics.getStorageMigrationMoveStatus": {
|
|
28286
|
+
capName: "pipeline-analytics",
|
|
28287
|
+
capScope: "device",
|
|
28288
|
+
addonId: null,
|
|
28289
|
+
access: "view"
|
|
28290
|
+
},
|
|
28114
28291
|
"pipelineAnalytics.getTrack": {
|
|
28115
28292
|
capName: "pipeline-analytics",
|
|
28116
28293
|
capScope: "device",
|
|
@@ -28189,6 +28366,12 @@ Object.freeze({
|
|
|
28189
28366
|
addonId: null,
|
|
28190
28367
|
access: "view"
|
|
28191
28368
|
},
|
|
28369
|
+
"pipelineAnalytics.pauseForStorageMigration": {
|
|
28370
|
+
capName: "pipeline-analytics",
|
|
28371
|
+
capScope: "device",
|
|
28372
|
+
addonId: null,
|
|
28373
|
+
access: "create"
|
|
28374
|
+
},
|
|
28192
28375
|
"pipelineAnalytics.proposeRetrainAnnotations": {
|
|
28193
28376
|
capName: "pipeline-analytics",
|
|
28194
28377
|
capScope: "device",
|
|
@@ -28219,7 +28402,7 @@ Object.freeze({
|
|
|
28219
28402
|
addonId: null,
|
|
28220
28403
|
access: "create"
|
|
28221
28404
|
},
|
|
28222
|
-
"pipelineAnalytics.
|
|
28405
|
+
"pipelineAnalytics.refreshStorageLocationsForMigration": {
|
|
28223
28406
|
capName: "pipeline-analytics",
|
|
28224
28407
|
capScope: "device",
|
|
28225
28408
|
addonId: null,
|
|
@@ -28231,6 +28414,12 @@ Object.freeze({
|
|
|
28231
28414
|
addonId: null,
|
|
28232
28415
|
access: "create"
|
|
28233
28416
|
},
|
|
28417
|
+
"pipelineAnalytics.resumeForStorageMigration": {
|
|
28418
|
+
capName: "pipeline-analytics",
|
|
28419
|
+
capScope: "device",
|
|
28420
|
+
addonId: null,
|
|
28421
|
+
access: "create"
|
|
28422
|
+
},
|
|
28234
28423
|
"pipelineAnalytics.saveRetrainAnnotations": {
|
|
28235
28424
|
capName: "pipeline-analytics",
|
|
28236
28425
|
capScope: "device",
|
|
@@ -28255,6 +28444,12 @@ Object.freeze({
|
|
|
28255
28444
|
addonId: null,
|
|
28256
28445
|
access: "create"
|
|
28257
28446
|
},
|
|
28447
|
+
"pipelineAnalytics.startStorageMigrationMove": {
|
|
28448
|
+
capName: "pipeline-analytics",
|
|
28449
|
+
capScope: "device",
|
|
28450
|
+
addonId: null,
|
|
28451
|
+
access: "create"
|
|
28452
|
+
},
|
|
28258
28453
|
"pipelineAnalytics.wipeAllAnalytics": {
|
|
28259
28454
|
capName: "pipeline-analytics",
|
|
28260
28455
|
capScope: "device",
|
|
@@ -28621,6 +28816,12 @@ Object.freeze({
|
|
|
28621
28816
|
addonId: null,
|
|
28622
28817
|
access: "view"
|
|
28623
28818
|
},
|
|
28819
|
+
"pipelineOrchestrator.pauseForStorageMigration": {
|
|
28820
|
+
capName: "pipeline-orchestrator",
|
|
28821
|
+
capScope: "system",
|
|
28822
|
+
addonId: null,
|
|
28823
|
+
access: "create"
|
|
28824
|
+
},
|
|
28624
28825
|
"pipelineOrchestrator.rebalance": {
|
|
28625
28826
|
capName: "pipeline-orchestrator",
|
|
28626
28827
|
capScope: "system",
|
|
@@ -28645,6 +28846,12 @@ Object.freeze({
|
|
|
28645
28846
|
addonId: null,
|
|
28646
28847
|
access: "view"
|
|
28647
28848
|
},
|
|
28849
|
+
"pipelineOrchestrator.resumeForStorageMigration": {
|
|
28850
|
+
capName: "pipeline-orchestrator",
|
|
28851
|
+
capScope: "system",
|
|
28852
|
+
addonId: null,
|
|
28853
|
+
access: "create"
|
|
28854
|
+
},
|
|
28648
28855
|
"pipelineOrchestrator.saveTemplate": {
|
|
28649
28856
|
capName: "pipeline-orchestrator",
|
|
28650
28857
|
capScope: "system",
|
|
@@ -29041,7 +29248,7 @@ Object.freeze({
|
|
|
29041
29248
|
addonId: null,
|
|
29042
29249
|
access: "create"
|
|
29043
29250
|
},
|
|
29044
|
-
"recording.
|
|
29251
|
+
"recording.cancelStorageMigrationMove": {
|
|
29045
29252
|
capName: "recording",
|
|
29046
29253
|
capScope: "system",
|
|
29047
29254
|
addonId: null,
|
|
@@ -29077,7 +29284,7 @@ Object.freeze({
|
|
|
29077
29284
|
addonId: null,
|
|
29078
29285
|
access: "view"
|
|
29079
29286
|
},
|
|
29080
|
-
"recording.
|
|
29287
|
+
"recording.getStorageMigrationMoveStatus": {
|
|
29081
29288
|
capName: "recording",
|
|
29082
29289
|
capScope: "system",
|
|
29083
29290
|
addonId: null,
|
|
@@ -29101,6 +29308,12 @@ Object.freeze({
|
|
|
29101
29308
|
addonId: null,
|
|
29102
29309
|
access: "view"
|
|
29103
29310
|
},
|
|
29311
|
+
"recording.pauseForStorageMigration": {
|
|
29312
|
+
capName: "recording",
|
|
29313
|
+
capScope: "system",
|
|
29314
|
+
addonId: null,
|
|
29315
|
+
access: "create"
|
|
29316
|
+
},
|
|
29104
29317
|
"recording.pruneFootage": {
|
|
29105
29318
|
capName: "recording",
|
|
29106
29319
|
capScope: "system",
|
|
@@ -29119,7 +29332,7 @@ Object.freeze({
|
|
|
29119
29332
|
addonId: null,
|
|
29120
29333
|
access: "view"
|
|
29121
29334
|
},
|
|
29122
|
-
"recording.
|
|
29335
|
+
"recording.refreshStorageLocationsForMigration": {
|
|
29123
29336
|
capName: "recording",
|
|
29124
29337
|
capScope: "system",
|
|
29125
29338
|
addonId: null,
|
|
@@ -29143,12 +29356,24 @@ Object.freeze({
|
|
|
29143
29356
|
addonId: null,
|
|
29144
29357
|
access: "create"
|
|
29145
29358
|
},
|
|
29359
|
+
"recording.resumeForStorageMigration": {
|
|
29360
|
+
capName: "recording",
|
|
29361
|
+
capScope: "system",
|
|
29362
|
+
addonId: null,
|
|
29363
|
+
access: "create"
|
|
29364
|
+
},
|
|
29146
29365
|
"recording.setDeviceConfig": {
|
|
29147
29366
|
capName: "recording",
|
|
29148
29367
|
capScope: "system",
|
|
29149
29368
|
addonId: null,
|
|
29150
29369
|
access: "create"
|
|
29151
29370
|
},
|
|
29371
|
+
"recording.startStorageMigrationMove": {
|
|
29372
|
+
capName: "recording",
|
|
29373
|
+
capScope: "system",
|
|
29374
|
+
addonId: null,
|
|
29375
|
+
access: "create"
|
|
29376
|
+
},
|
|
29152
29377
|
"recordingExport.cancelExport": {
|
|
29153
29378
|
capName: "recordingExport",
|
|
29154
29379
|
capScope: "system",
|
|
@@ -29539,6 +29764,30 @@ Object.freeze({
|
|
|
29539
29764
|
addonId: null,
|
|
29540
29765
|
access: "view"
|
|
29541
29766
|
},
|
|
29767
|
+
"storageMigration.cancel": {
|
|
29768
|
+
capName: "storage-migration",
|
|
29769
|
+
capScope: "system",
|
|
29770
|
+
addonId: null,
|
|
29771
|
+
access: "create"
|
|
29772
|
+
},
|
|
29773
|
+
"storageMigration.plan": {
|
|
29774
|
+
capName: "storage-migration",
|
|
29775
|
+
capScope: "system",
|
|
29776
|
+
addonId: null,
|
|
29777
|
+
access: "view"
|
|
29778
|
+
},
|
|
29779
|
+
"storageMigration.start": {
|
|
29780
|
+
capName: "storage-migration",
|
|
29781
|
+
capScope: "system",
|
|
29782
|
+
addonId: null,
|
|
29783
|
+
access: "create"
|
|
29784
|
+
},
|
|
29785
|
+
"storageMigration.status": {
|
|
29786
|
+
capName: "storage-migration",
|
|
29787
|
+
capScope: "system",
|
|
29788
|
+
addonId: null,
|
|
29789
|
+
access: "view"
|
|
29790
|
+
},
|
|
29542
29791
|
"storageProvider.abortUpload": {
|
|
29543
29792
|
capName: "storage-provider",
|
|
29544
29793
|
capScope: "system",
|
|
@@ -29917,12 +30166,42 @@ Object.freeze({
|
|
|
29917
30166
|
addonId: null,
|
|
29918
30167
|
access: "create"
|
|
29919
30168
|
},
|
|
30169
|
+
"terminalSession.adoptLegacyMonitor": {
|
|
30170
|
+
capName: "terminal-session",
|
|
30171
|
+
capScope: "system",
|
|
30172
|
+
addonId: null,
|
|
30173
|
+
access: "create"
|
|
30174
|
+
},
|
|
29920
30175
|
"terminalSession.close": {
|
|
29921
30176
|
capName: "terminal-session",
|
|
29922
30177
|
capScope: "system",
|
|
29923
30178
|
addonId: null,
|
|
29924
30179
|
access: "create"
|
|
29925
30180
|
},
|
|
30181
|
+
"terminalSession.createInstance": {
|
|
30182
|
+
capName: "terminal-session",
|
|
30183
|
+
capScope: "system",
|
|
30184
|
+
addonId: null,
|
|
30185
|
+
access: "create"
|
|
30186
|
+
},
|
|
30187
|
+
"terminalSession.deleteInstance": {
|
|
30188
|
+
capName: "terminal-session",
|
|
30189
|
+
capScope: "system",
|
|
30190
|
+
addonId: null,
|
|
30191
|
+
access: "delete"
|
|
30192
|
+
},
|
|
30193
|
+
"terminalSession.listInstances": {
|
|
30194
|
+
capName: "terminal-session",
|
|
30195
|
+
capScope: "system",
|
|
30196
|
+
addonId: null,
|
|
30197
|
+
access: "view"
|
|
30198
|
+
},
|
|
30199
|
+
"terminalSession.listLegacyCameras": {
|
|
30200
|
+
capName: "terminal-session",
|
|
30201
|
+
capScope: "system",
|
|
30202
|
+
addonId: null,
|
|
30203
|
+
access: "view"
|
|
30204
|
+
},
|
|
29926
30205
|
"terminalSession.listProfiles": {
|
|
29927
30206
|
capName: "terminal-session",
|
|
29928
30207
|
capScope: "system",
|
|
@@ -29953,6 +30232,12 @@ Object.freeze({
|
|
|
29953
30232
|
addonId: null,
|
|
29954
30233
|
access: "create"
|
|
29955
30234
|
},
|
|
30235
|
+
"terminalSession.setInstanceEnabled": {
|
|
30236
|
+
capName: "terminal-session",
|
|
30237
|
+
capScope: "system",
|
|
30238
|
+
addonId: null,
|
|
30239
|
+
access: "create"
|
|
30240
|
+
},
|
|
29956
30241
|
"terminalSession.writeInput": {
|
|
29957
30242
|
capName: "terminal-session",
|
|
29958
30243
|
capScope: "system",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@camstack/addon-export-hap",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.20",
|
|
4
4
|
"description": "HomeKit (HAP) bridge exporter for CamStack devices. Publishes a bridged accessory per exposed device — MotionSensor in this MVP; Camera/Doorbell/Switch/Light follow.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"camstack",
|