@camstack/addon-provider-hikvision 1.2.144 → 1.2.145
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/addon.js +296 -71
- package/dist/addon.mjs +296 -71
- package/package.json +1 -1
package/dist/addon.js
CHANGED
|
@@ -5413,7 +5413,7 @@ var ZodIssueCode = {
|
|
|
5413
5413
|
var ZodFirstPartyTypeKind;
|
|
5414
5414
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5415
5415
|
//#endregion
|
|
5416
|
-
//#region ../types/dist/sleep-
|
|
5416
|
+
//#region ../types/dist/sleep-C16NCZR2.mjs
|
|
5417
5417
|
/**
|
|
5418
5418
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5419
5419
|
* window to float samples (D455).
|
|
@@ -10802,57 +10802,15 @@ var ClipSearchStrictnessSchema = _enum([
|
|
|
10802
10802
|
"balanced",
|
|
10803
10803
|
"strict"
|
|
10804
10804
|
]);
|
|
10805
|
-
|
|
10806
|
-
|
|
10807
|
-
id: "person",
|
|
10808
|
-
name: "Person"
|
|
10809
|
-
},
|
|
10810
|
-
{
|
|
10811
|
-
id: "vehicle",
|
|
10812
|
-
name: "Vehicle"
|
|
10813
|
-
},
|
|
10814
|
-
{
|
|
10815
|
-
id: "animal",
|
|
10816
|
-
name: "Animal"
|
|
10817
|
-
},
|
|
10818
|
-
{
|
|
10819
|
-
id: "package",
|
|
10820
|
-
name: "Package"
|
|
10821
|
-
}
|
|
10822
|
-
].map((l) => l.id));
|
|
10823
|
-
var COCO_TO_MACRO = {
|
|
10824
|
-
mapping: {
|
|
10825
|
-
person: "person",
|
|
10826
|
-
bicycle: "vehicle",
|
|
10827
|
-
car: "vehicle",
|
|
10828
|
-
motorcycle: "vehicle",
|
|
10829
|
-
airplane: "vehicle",
|
|
10830
|
-
bus: "vehicle",
|
|
10831
|
-
train: "vehicle",
|
|
10832
|
-
truck: "vehicle",
|
|
10833
|
-
boat: "vehicle",
|
|
10834
|
-
bird: "animal",
|
|
10835
|
-
cat: "animal",
|
|
10836
|
-
dog: "animal",
|
|
10837
|
-
horse: "animal",
|
|
10838
|
-
sheep: "animal",
|
|
10839
|
-
cow: "animal",
|
|
10840
|
-
elephant: "animal",
|
|
10841
|
-
bear: "animal",
|
|
10842
|
-
zebra: "animal",
|
|
10843
|
-
giraffe: "animal",
|
|
10844
|
-
suitcase: "package",
|
|
10845
|
-
backpack: "package",
|
|
10846
|
-
handbag: "package"
|
|
10847
|
-
},
|
|
10848
|
-
preserveOriginal: false
|
|
10849
|
-
};
|
|
10850
|
-
/** Steps a root detector may declare it fills. */
|
|
10851
|
-
var FILLABLE_STEP_IDS = [
|
|
10805
|
+
/** Steps whose effect a root label can BE. */
|
|
10806
|
+
var LABEL_SUPPLY_STEP_IDS = [
|
|
10852
10807
|
"animal-classifier",
|
|
10853
10808
|
"vehicle-classifier",
|
|
10854
10809
|
"package-detection"
|
|
10855
10810
|
];
|
|
10811
|
+
/** Steps whose box a root detection can BE. */
|
|
10812
|
+
var CROP_SUPPLY_STEP_IDS = ["plate-detection", "face-detection"];
|
|
10813
|
+
[...LABEL_SUPPLY_STEP_IDS, ...CROP_SUPPLY_STEP_IDS];
|
|
10856
10814
|
var MODEL_FORMATS = [
|
|
10857
10815
|
"onnx",
|
|
10858
10816
|
"coreml",
|
|
@@ -10985,12 +10943,35 @@ var ModelLicenseSchema = preprocess((value) => typeof value === "string" ? { wei
|
|
|
10985
10943
|
/** True when the weights or their data forbid commercial use. */
|
|
10986
10944
|
nonCommercial: boolean().optional()
|
|
10987
10945
|
}));
|
|
10988
|
-
/**
|
|
10989
|
-
|
|
10990
|
-
|
|
10946
|
+
/**
|
|
10947
|
+
* One step a ROOT detector can supply from its own output (D730) — see
|
|
10948
|
+
* `ModelCatalogEntry.suppliesSteps`.
|
|
10949
|
+
*
|
|
10950
|
+
* - `label`: the root's raw class IS the step's answer. `labelToEffect` maps
|
|
10951
|
+
* the root's label to the step's vocabulary; `uncovered` is the vocabulary
|
|
10952
|
+
* the root cannot produce (shown as unavailable, never a blocker).
|
|
10953
|
+
* - `crop`: the root draws the box the step would have found (`license_plate`
|
|
10954
|
+
* for plate-detection, `face` for face-detection). The box becomes a detail
|
|
10955
|
+
* child of the `parentMacro` detection that contains it — never a track.
|
|
10956
|
+
*/
|
|
10957
|
+
var RootStepSupplySchema = discriminatedUnion("kind", [object({
|
|
10958
|
+
kind: literal("label"),
|
|
10959
|
+
stepId: _enum(LABEL_SUPPLY_STEP_IDS),
|
|
10991
10960
|
labelToEffect: record(string(), string()),
|
|
10992
10961
|
uncovered: array(string()).readonly()
|
|
10993
|
-
})
|
|
10962
|
+
}), object({
|
|
10963
|
+
kind: literal("crop"),
|
|
10964
|
+
stepId: _enum(CROP_SUPPLY_STEP_IDS),
|
|
10965
|
+
rootLabels: array(string()).readonly(),
|
|
10966
|
+
parentMacro: _enum(["vehicle", "person"]),
|
|
10967
|
+
childClass: _enum(["plate", "face"]),
|
|
10968
|
+
/**
|
|
10969
|
+
* The root's smaller input side, stamped on read by `rootSuppliesOf` from
|
|
10970
|
+
* the model entry — what a step's `minRootInputPx` gate judges. Never
|
|
10971
|
+
* stored by an import.
|
|
10972
|
+
*/
|
|
10973
|
+
rootInputPx: number().int().positive().optional()
|
|
10974
|
+
})]);
|
|
10994
10975
|
var ModelCatalogEntrySchema = object({
|
|
10995
10976
|
id: string(),
|
|
10996
10977
|
name: string(),
|
|
@@ -11117,15 +11098,15 @@ var ModelCatalogEntrySchema = object({
|
|
|
11117
11098
|
*/
|
|
11118
11099
|
classMap: DetectionCatalogClassMapSchema.optional(),
|
|
11119
11100
|
/**
|
|
11120
|
-
* The pipeline steps this ROOT detector
|
|
11121
|
-
* its labels name
|
|
11122
|
-
*
|
|
11123
|
-
* labelmap by `
|
|
11124
|
-
*
|
|
11125
|
-
*
|
|
11126
|
-
* `
|
|
11101
|
+
* The pipeline steps this ROOT detector can supply from its own output
|
|
11102
|
+
* (D730): its labels name a step's effect (`deer` for `animal-classifier`)
|
|
11103
|
+
* or draw a step's box (`license_plate` for `plate-detection`). Computed at
|
|
11104
|
+
* import from THIS model's labelmap by `deriveRootSupplies`, never written
|
|
11105
|
+
* by hand and never assumed per family; a row without it is derived on read
|
|
11106
|
+
* (`rootSuppliesOf`). Whether a camera uses it is the step's own
|
|
11107
|
+
* `useRootModel` flag (`resolveRootSupply`).
|
|
11127
11108
|
*/
|
|
11128
|
-
|
|
11109
|
+
suppliesSteps: array(RootStepSupplySchema).readonly().optional(),
|
|
11129
11110
|
/**
|
|
11130
11111
|
* The model's CLIP feature-space contract (text encoder, dimension, vector
|
|
11131
11112
|
* index, token window, search floor) — see `clip-model.ts`. Present ONLY on a
|
|
@@ -16707,6 +16688,12 @@ method(_void(), array(string()).readonly(), { auth: "admin" }), method(object({
|
|
|
16707
16688
|
kind: "mutation",
|
|
16708
16689
|
auth: "admin"
|
|
16709
16690
|
});
|
|
16691
|
+
var HUB_ADDRESS_ROLES = [
|
|
16692
|
+
"appConnections",
|
|
16693
|
+
"notificationTaps",
|
|
16694
|
+
"internal",
|
|
16695
|
+
"publicEndpoint"
|
|
16696
|
+
];
|
|
16710
16697
|
/**
|
|
16711
16698
|
* Transport bounds for AI capability methods.
|
|
16712
16699
|
*
|
|
@@ -18469,6 +18456,51 @@ method(object({}), array(TargetKindSchema)), method(object({}), array(TargetSche
|
|
|
18469
18456
|
kind: "mutation",
|
|
18470
18457
|
auth: "admin"
|
|
18471
18458
|
});
|
|
18459
|
+
new Set([
|
|
18460
|
+
{
|
|
18461
|
+
id: "person",
|
|
18462
|
+
name: "Person"
|
|
18463
|
+
},
|
|
18464
|
+
{
|
|
18465
|
+
id: "vehicle",
|
|
18466
|
+
name: "Vehicle"
|
|
18467
|
+
},
|
|
18468
|
+
{
|
|
18469
|
+
id: "animal",
|
|
18470
|
+
name: "Animal"
|
|
18471
|
+
},
|
|
18472
|
+
{
|
|
18473
|
+
id: "package",
|
|
18474
|
+
name: "Package"
|
|
18475
|
+
}
|
|
18476
|
+
].map((l) => l.id));
|
|
18477
|
+
var COCO_TO_MACRO = {
|
|
18478
|
+
mapping: {
|
|
18479
|
+
person: "person",
|
|
18480
|
+
bicycle: "vehicle",
|
|
18481
|
+
car: "vehicle",
|
|
18482
|
+
motorcycle: "vehicle",
|
|
18483
|
+
airplane: "vehicle",
|
|
18484
|
+
bus: "vehicle",
|
|
18485
|
+
train: "vehicle",
|
|
18486
|
+
truck: "vehicle",
|
|
18487
|
+
boat: "vehicle",
|
|
18488
|
+
bird: "animal",
|
|
18489
|
+
cat: "animal",
|
|
18490
|
+
dog: "animal",
|
|
18491
|
+
horse: "animal",
|
|
18492
|
+
sheep: "animal",
|
|
18493
|
+
cow: "animal",
|
|
18494
|
+
elephant: "animal",
|
|
18495
|
+
bear: "animal",
|
|
18496
|
+
zebra: "animal",
|
|
18497
|
+
giraffe: "animal",
|
|
18498
|
+
suitcase: "package",
|
|
18499
|
+
backpack: "package",
|
|
18500
|
+
handbag: "package"
|
|
18501
|
+
},
|
|
18502
|
+
preserveOriginal: false
|
|
18503
|
+
};
|
|
18472
18504
|
var AUDIO_MACRO_LABELS = [
|
|
18473
18505
|
{
|
|
18474
18506
|
id: "speech",
|
|
@@ -20871,7 +20903,13 @@ var NcAlarmModeDelaysListSchema = array(object({
|
|
|
20871
20903
|
* Absent = false (logged, not sent). Even when true it is not sent when that same sensor
|
|
20872
20904
|
* is the one that starts the entry delay — the entry-delay notification already names it.
|
|
20873
20905
|
*/
|
|
20874
|
-
notifySensorRewatched: boolean().optional()
|
|
20906
|
+
notifySensorRewatched: boolean().optional(),
|
|
20907
|
+
/**
|
|
20908
|
+
* D735: notify "ignored" when a sensor this arm bypassed really MOVED while armed (its own
|
|
20909
|
+
* change time is after the arm) and set nothing off. Absent = false (logged, not sent). A
|
|
20910
|
+
* re-sync, a recovery from `unavailable` or a duplicate is never announced, switch or not.
|
|
20911
|
+
*/
|
|
20912
|
+
notifySensorIgnored: boolean().optional()
|
|
20875
20913
|
})).max(8).refine(uniqueModes, { message: "modeDelays: at most one entry per arm mode" });
|
|
20876
20914
|
var NcAlarmModeDelaysEditListSchema = array(object({
|
|
20877
20915
|
mode: AlarmArmModeSchema,
|
|
@@ -20884,7 +20922,9 @@ var NcAlarmModeDelaysEditListSchema = array(object({
|
|
|
20884
20922
|
/** D706: set the switch, or `null` to clear it (back to the default, false). */
|
|
20885
20923
|
notifyDuringEntryDelay: boolean().nullable().optional(),
|
|
20886
20924
|
/** D706: set the switch, or `null` to clear it (back to the default, false). */
|
|
20887
|
-
notifySensorRewatched: boolean().nullable().optional()
|
|
20925
|
+
notifySensorRewatched: boolean().nullable().optional(),
|
|
20926
|
+
/** D735: set the switch, or `null` to clear it (back to the default, false). */
|
|
20927
|
+
notifySensorIgnored: boolean().nullable().optional()
|
|
20888
20928
|
})).max(8).refine(uniqueModes, { message: "modeDelays: at most one edit per arm mode" });
|
|
20889
20929
|
/** One switch of the alarm table: put ONE device on, or take it off, ONE mode's list. */
|
|
20890
20930
|
var NcAlarmNonBlockingEditSchema = object({
|
|
@@ -23783,6 +23823,34 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
23783
23823
|
timestamp: number()
|
|
23784
23824
|
});
|
|
23785
23825
|
/**
|
|
23826
|
+
* A root model's boxes standing in for one crop-kind step's own inference
|
|
23827
|
+
* (D730) — see `runPipeline.suppliedRoot`.
|
|
23828
|
+
*/
|
|
23829
|
+
var SuppliedRootOutputSchema = object({
|
|
23830
|
+
stepId: string(),
|
|
23831
|
+
/** The root model that drew the boxes — stamped on the result. */
|
|
23832
|
+
modelId: string(),
|
|
23833
|
+
detections: array(object({
|
|
23834
|
+
/** `[x1, y1, x2, y2]` in the pixels of the call's image. */
|
|
23835
|
+
bbox: tuple([
|
|
23836
|
+
number(),
|
|
23837
|
+
number(),
|
|
23838
|
+
number(),
|
|
23839
|
+
number()
|
|
23840
|
+
]),
|
|
23841
|
+
score: number(),
|
|
23842
|
+
/**
|
|
23843
|
+
* Five facial landmarks in the same pixels — a face the step's own
|
|
23844
|
+
* detector already re-found inside a root face box (D730), so its
|
|
23845
|
+
* embedder child aligns it exactly as it aligns any detected face.
|
|
23846
|
+
*/
|
|
23847
|
+
landmarks: array(object({
|
|
23848
|
+
x: number(),
|
|
23849
|
+
y: number()
|
|
23850
|
+
})).optional()
|
|
23851
|
+
})).min(1)
|
|
23852
|
+
});
|
|
23853
|
+
/**
|
|
23786
23854
|
* Reference to the frame's retained NATIVE surface + the parent crop's placement
|
|
23787
23855
|
* within the frame, so the executor can re-cut a leaf child ROI at native
|
|
23788
23856
|
* resolution on the detail plane. See the `runPipeline` `nativeCropRef` field.
|
|
@@ -23913,7 +23981,7 @@ var PipelineModelOptionSchema = object({
|
|
|
23913
23981
|
legacy: boolean().optional(),
|
|
23914
23982
|
provider: ModelProviderIdSchema.optional(),
|
|
23915
23983
|
defaultConfidence: number().optional(),
|
|
23916
|
-
|
|
23984
|
+
suppliesSteps: array(RootStepSupplySchema).readonly().optional()
|
|
23917
23985
|
});
|
|
23918
23986
|
var ConfigFieldBridge = custom();
|
|
23919
23987
|
var PipelineAddonSchemaSchema = object({
|
|
@@ -24181,7 +24249,16 @@ method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngi
|
|
|
24181
24249
|
* `device-not-servable`), and nothing reaches the camera's live
|
|
24182
24250
|
* trace stream. Absent ⇒ unchanged behaviour.
|
|
24183
24251
|
*/
|
|
24184
|
-
replay: literal(true).optional()
|
|
24252
|
+
replay: literal(true).optional(),
|
|
24253
|
+
/**
|
|
24254
|
+
* Root-supplied detections for the tree's ROOT step (D730). Set by
|
|
24255
|
+
* `runDetailSubtree` when the camera's root model supplies a crop-kind
|
|
24256
|
+
* step (a Frigate+ `license_plate` for `plate-detection`): the step is
|
|
24257
|
+
* NOT inferred, these boxes are its output, and its children (the plate
|
|
24258
|
+
* reader) run on them through their own crop policy. Boxes are in the
|
|
24259
|
+
* PIXELS of the image this call carries. Absent ⇒ the root step runs.
|
|
24260
|
+
*/
|
|
24261
|
+
suppliedRoot: SuppliedRootOutputSchema.optional()
|
|
24185
24262
|
}), PipelineRunResultBridge, { kind: "mutation" }), method(object({
|
|
24186
24263
|
steps: array(PipelineStepInputSchema).min(1),
|
|
24187
24264
|
frames: array(FrameInputSchema).min(1).max(255),
|
|
@@ -25323,7 +25400,22 @@ method(RunnerCameraConfigSchema, object({ success: literal(true) }), { kind: "mu
|
|
|
25323
25400
|
*/
|
|
25324
25401
|
cropJpeg: string().optional(),
|
|
25325
25402
|
parent: DetailParentSchema,
|
|
25326
|
-
steps: array(string()).optional()
|
|
25403
|
+
steps: array(string()).optional(),
|
|
25404
|
+
/**
|
|
25405
|
+
* The camera's root model already drew this step's boxes (D730): a
|
|
25406
|
+
* `license_plate` inside the parent vehicle. The named step is NOT
|
|
25407
|
+
* inferred — these FRAME-space boxes are its output — and its
|
|
25408
|
+
* requested children (the plate reader) run on them. Absent ⇒ every
|
|
25409
|
+
* requested step infers as before.
|
|
25410
|
+
*/
|
|
25411
|
+
supplied: object({
|
|
25412
|
+
stepId: string(),
|
|
25413
|
+
modelId: string(),
|
|
25414
|
+
boxes: array(object({
|
|
25415
|
+
bbox: NativeCropBboxSchema,
|
|
25416
|
+
score: number()
|
|
25417
|
+
})).min(1)
|
|
25418
|
+
}).optional()
|
|
25327
25419
|
}), object({ details: array(DetailResultSchema) }).nullable(), { kind: "mutation" }), method(object({
|
|
25328
25420
|
/** Catalog step id, e.g. `clip-embedding`. */
|
|
25329
25421
|
stepId: string(),
|
|
@@ -29175,6 +29267,14 @@ DeviceType.Camera, method(object({ deviceId: number().int().nonnegative() }), ar
|
|
|
29175
29267
|
*/
|
|
29176
29268
|
alive: boolean()
|
|
29177
29269
|
})), method(object({
|
|
29270
|
+
deviceId: number().int().nonnegative(),
|
|
29271
|
+
sessionId: string(),
|
|
29272
|
+
downlinkMbps: number().nonnegative()
|
|
29273
|
+
}), object({
|
|
29274
|
+
outcome: _enum(["switching", "held"]),
|
|
29275
|
+
tier: CamProfileSchema.nullable(),
|
|
29276
|
+
reason: string()
|
|
29277
|
+
}), { kind: "mutation" }), method(object({
|
|
29178
29278
|
deviceId: number().int().nonnegative(),
|
|
29179
29279
|
sessionId: string()
|
|
29180
29280
|
}), WebrtcSessionDebugSchema, { kind: "query" });
|
|
@@ -32986,7 +33086,8 @@ var ConnectionEndpointSchema = object({
|
|
|
32986
33086
|
"lan-ipv6",
|
|
32987
33087
|
"public",
|
|
32988
33088
|
"loopback",
|
|
32989
|
-
"app-link"
|
|
33089
|
+
"app-link",
|
|
33090
|
+
"custom"
|
|
32990
33091
|
]),
|
|
32991
33092
|
/**
|
|
32992
33093
|
* Originating-interface kind — `lan`/`wifi`/`docker`/`vpn`/`other`/
|
|
@@ -33055,7 +33156,7 @@ var GetConnectionEndpointsResultSchema = object({
|
|
|
33055
33156
|
localPort: AdvertisedLocalPortSchema
|
|
33056
33157
|
});
|
|
33057
33158
|
/**
|
|
33058
|
-
* The address flagged for notification
|
|
33159
|
+
* The address flagged for notification taps (`notificationTaps`). `baseUrl: null` = AUTO, which
|
|
33059
33160
|
* since D709 is the CamStack app link; `resolved` reports the effective value,
|
|
33060
33161
|
* so the UI can show it either way.
|
|
33061
33162
|
*/
|
|
@@ -33088,6 +33189,72 @@ var ViewerEndpointsSchema = object({
|
|
|
33088
33189
|
/** What the ranking currently resolves to (may be empty if nothing is up). */
|
|
33089
33190
|
resolved: array(string()).readonly()
|
|
33090
33191
|
});
|
|
33192
|
+
/**
|
|
33193
|
+
* DEPRECATED compatibility shape of `getHubAddresses` (D729 amendment, kept
|
|
33194
|
+
* for addons built against it): `cluster` is the `internal` role, `browser`
|
|
33195
|
+
* the `publicEndpoint` role; `override` is the flagged address.
|
|
33196
|
+
*/
|
|
33197
|
+
var HubAddressSnapshotSchema = object({
|
|
33198
|
+
override: string().nullable(),
|
|
33199
|
+
resolved: string().nullable(),
|
|
33200
|
+
source: _enum([
|
|
33201
|
+
"override",
|
|
33202
|
+
"auto",
|
|
33203
|
+
"none"
|
|
33204
|
+
])
|
|
33205
|
+
});
|
|
33206
|
+
var HubAddressesSchema = object({
|
|
33207
|
+
cluster: HubAddressSnapshotSchema,
|
|
33208
|
+
browser: HubAddressSnapshotSchema
|
|
33209
|
+
});
|
|
33210
|
+
/**
|
|
33211
|
+
* What an address is used for (`hub-address.ts`, D734). `appConnections` is
|
|
33212
|
+
* many-valued; `notificationTaps`, `publicEndpoint` and `internal` are carried
|
|
33213
|
+
* by at most one address.
|
|
33214
|
+
*/
|
|
33215
|
+
var HubAddressRoleSchema = _enum(HUB_ADDRESS_ROLES);
|
|
33216
|
+
var RoleSourceSchema = _enum([
|
|
33217
|
+
"flagged",
|
|
33218
|
+
"auto",
|
|
33219
|
+
"none"
|
|
33220
|
+
]);
|
|
33221
|
+
/** One single-valued role: the flagged address, the one in use, and why. */
|
|
33222
|
+
var HubAddressRoleResolutionSchema = object({
|
|
33223
|
+
/** The address carrying the flag, or null = automatic. */
|
|
33224
|
+
flagged: string().nullable(),
|
|
33225
|
+
/** The address in use, or null when nothing qualifies (never loopback). */
|
|
33226
|
+
resolved: string().nullable(),
|
|
33227
|
+
source: RoleSourceSchema
|
|
33228
|
+
});
|
|
33229
|
+
var HubAppConnectionsResolutionSchema = object({
|
|
33230
|
+
/** The addresses flagged `appConnections`, or empty = automatic. */
|
|
33231
|
+
flagged: array(string()).readonly(),
|
|
33232
|
+
/** What the apps race right now. */
|
|
33233
|
+
resolved: array(string()).readonly(),
|
|
33234
|
+
source: RoleSourceSchema
|
|
33235
|
+
});
|
|
33236
|
+
var HubAddressBookSchema = object({
|
|
33237
|
+
rows: array(ConnectionEndpointSchema.extend({
|
|
33238
|
+
/** In the hub's detected palette right now. */
|
|
33239
|
+
detected: boolean(),
|
|
33240
|
+
/** Entered by the operator (removable). */
|
|
33241
|
+
custom: boolean(),
|
|
33242
|
+
/** The roles explicitly flagged on this address. */
|
|
33243
|
+
flags: array(HubAddressRoleSchema).readonly(),
|
|
33244
|
+
/** The roles this address serves right now — flagged or automatic. */
|
|
33245
|
+
inUse: array(HubAddressRoleSchema).readonly(),
|
|
33246
|
+
/** The roles this address may be flagged with. */
|
|
33247
|
+
eligible: array(HubAddressRoleSchema).readonly()
|
|
33248
|
+
})).readonly(),
|
|
33249
|
+
roles: object({
|
|
33250
|
+
appConnections: HubAppConnectionsResolutionSchema,
|
|
33251
|
+
notificationTaps: HubAddressRoleResolutionSchema,
|
|
33252
|
+
internal: HubAddressRoleResolutionSchema,
|
|
33253
|
+
publicEndpoint: HubAddressRoleResolutionSchema
|
|
33254
|
+
}),
|
|
33255
|
+
/** The `hub=` an app link carries (D709), or null. */
|
|
33256
|
+
appLinkHub: string().nullable()
|
|
33257
|
+
});
|
|
33091
33258
|
var AllowedAddressesSchema = object({
|
|
33092
33259
|
/**
|
|
33093
33260
|
* Allowlist of interface addresses operators have explicitly opted
|
|
@@ -33131,10 +33298,27 @@ method(_void(), ListResultSchema), method(_void(), PreferredSchema), method(obje
|
|
|
33131
33298
|
* tunnel always emits `https://` regardless. */
|
|
33132
33299
|
scheme: _enum(["http", "https"]).optional(),
|
|
33133
33300
|
/** Append the CamStack app link entry (`kind: 'app-link'`, D709) —
|
|
33134
|
-
* an address notification
|
|
33301
|
+
* an address notification taps can be flagged with, not a hub
|
|
33135
33302
|
* route. Default `false`: racers and rankers never see it. */
|
|
33136
33303
|
includeAppLink: boolean().optional()
|
|
33137
|
-
}), GetConnectionEndpointsResultSchema), method(_void(), NotificationEndpointSchema), method(object({ baseUrl: string().nullable() }), NotificationEndpointSchema, { kind: "mutation" }), method(_void(), ViewerEndpointsSchema), method(object({ baseUrls: array(string()).readonly() }), ViewerEndpointsSchema, { kind: "mutation" }), method(
|
|
33304
|
+
}), GetConnectionEndpointsResultSchema), method(_void(), NotificationEndpointSchema), method(object({ baseUrl: string().nullable() }), NotificationEndpointSchema, { kind: "mutation" }), method(_void(), ViewerEndpointsSchema), method(object({ baseUrls: array(string()).readonly() }), ViewerEndpointsSchema, { kind: "mutation" }), method(object({ scheme: _enum(["http", "https"]).optional() }).optional(), HubAddressBookSchema), method(object({
|
|
33305
|
+
baseUrl: string(),
|
|
33306
|
+
label: string().max(80)
|
|
33307
|
+
}), HubAddressBookSchema, {
|
|
33308
|
+
kind: "mutation",
|
|
33309
|
+
auth: "admin"
|
|
33310
|
+
}), method(object({ baseUrl: string() }), HubAddressBookSchema, {
|
|
33311
|
+
kind: "mutation",
|
|
33312
|
+
auth: "admin"
|
|
33313
|
+
}), method(object({
|
|
33314
|
+
role: HubAddressRoleSchema,
|
|
33315
|
+
baseUrl: string().nullable(),
|
|
33316
|
+
enabled: boolean(),
|
|
33317
|
+
acceptInsecureHttp: boolean().optional()
|
|
33318
|
+
}), HubAddressBookSchema, {
|
|
33319
|
+
kind: "mutation",
|
|
33320
|
+
auth: "admin"
|
|
33321
|
+
}), method(_void(), HubAddressesSchema), method(_void(), AllowedAddressesSchema), method(AllowedAddressesSchema, object({ success: literal(true) }), { kind: "mutation" }), method(_void(), AllowedAddressesSchema, { kind: "mutation" }), method(_void(), TlsStatusSchema), method(object({ reason: string().optional() }), TlsStatusSchema, {
|
|
33138
33322
|
kind: "mutation",
|
|
33139
33323
|
auth: "admin"
|
|
33140
33324
|
}), method(object({
|
|
@@ -45168,12 +45352,24 @@ Object.freeze({
|
|
|
45168
45352
|
addonId: null,
|
|
45169
45353
|
access: "view"
|
|
45170
45354
|
},
|
|
45355
|
+
"localNetwork.addCustomAddress": {
|
|
45356
|
+
capName: "local-network",
|
|
45357
|
+
capScope: "system",
|
|
45358
|
+
addonId: null,
|
|
45359
|
+
access: "create"
|
|
45360
|
+
},
|
|
45171
45361
|
"localNetwork.downloadCa": {
|
|
45172
45362
|
capName: "local-network",
|
|
45173
45363
|
capScope: "system",
|
|
45174
45364
|
addonId: null,
|
|
45175
45365
|
access: "view"
|
|
45176
45366
|
},
|
|
45367
|
+
"localNetwork.getAddresses": {
|
|
45368
|
+
capName: "local-network",
|
|
45369
|
+
capScope: "system",
|
|
45370
|
+
addonId: null,
|
|
45371
|
+
access: "view"
|
|
45372
|
+
},
|
|
45177
45373
|
"localNetwork.getAllowedAddresses": {
|
|
45178
45374
|
capName: "local-network",
|
|
45179
45375
|
capScope: "system",
|
|
@@ -45186,6 +45382,12 @@ Object.freeze({
|
|
|
45186
45382
|
addonId: null,
|
|
45187
45383
|
access: "view"
|
|
45188
45384
|
},
|
|
45385
|
+
"localNetwork.getHubAddresses": {
|
|
45386
|
+
capName: "local-network",
|
|
45387
|
+
capScope: "system",
|
|
45388
|
+
addonId: null,
|
|
45389
|
+
access: "view"
|
|
45390
|
+
},
|
|
45189
45391
|
"localNetwork.getNotificationEndpoint": {
|
|
45190
45392
|
capName: "local-network",
|
|
45191
45393
|
capScope: "system",
|
|
@@ -45222,6 +45424,12 @@ Object.freeze({
|
|
|
45222
45424
|
addonId: null,
|
|
45223
45425
|
access: "create"
|
|
45224
45426
|
},
|
|
45427
|
+
"localNetwork.removeCustomAddress": {
|
|
45428
|
+
capName: "local-network",
|
|
45429
|
+
capScope: "system",
|
|
45430
|
+
addonId: null,
|
|
45431
|
+
access: "delete"
|
|
45432
|
+
},
|
|
45225
45433
|
"localNetwork.resetAllowlistToBestMatch": {
|
|
45226
45434
|
capName: "local-network",
|
|
45227
45435
|
capScope: "system",
|
|
@@ -45234,6 +45442,12 @@ Object.freeze({
|
|
|
45234
45442
|
addonId: null,
|
|
45235
45443
|
access: "create"
|
|
45236
45444
|
},
|
|
45445
|
+
"localNetwork.setAddressRole": {
|
|
45446
|
+
capName: "local-network",
|
|
45447
|
+
capScope: "system",
|
|
45448
|
+
addonId: null,
|
|
45449
|
+
access: "create"
|
|
45450
|
+
},
|
|
45237
45451
|
"localNetwork.setAllowedAddresses": {
|
|
45238
45452
|
capName: "local-network",
|
|
45239
45453
|
capScope: "system",
|
|
@@ -49488,6 +49702,12 @@ Object.freeze({
|
|
|
49488
49702
|
addonId: null,
|
|
49489
49703
|
access: "create"
|
|
49490
49704
|
},
|
|
49705
|
+
"webrtcSession.applyDownlinkProbe": {
|
|
49706
|
+
capName: "webrtc-session",
|
|
49707
|
+
capScope: "device",
|
|
49708
|
+
addonId: null,
|
|
49709
|
+
access: "create"
|
|
49710
|
+
},
|
|
49491
49711
|
"webrtcSession.closeSession": {
|
|
49492
49712
|
capName: "webrtc-session",
|
|
49493
49713
|
capScope: "device",
|
|
@@ -53628,6 +53848,11 @@ Object.freeze({
|
|
|
53628
53848
|
form: "single",
|
|
53629
53849
|
optional: false
|
|
53630
53850
|
}],
|
|
53851
|
+
"webrtcSession.applyDownlinkProbe": [{
|
|
53852
|
+
name: "deviceId",
|
|
53853
|
+
form: "single",
|
|
53854
|
+
optional: false
|
|
53855
|
+
}],
|
|
53631
53856
|
"webrtcSession.closeSession": [{
|
|
53632
53857
|
name: "deviceId",
|
|
53633
53858
|
form: "single",
|
|
@@ -54161,7 +54386,7 @@ var STATE_SUMMARY_VARS = [
|
|
|
54161
54386
|
{
|
|
54162
54387
|
name: "summarySection",
|
|
54163
54388
|
label: "Summary: this section",
|
|
54164
|
-
description: "The section a per-section summary row is about
|
|
54389
|
+
description: "The section a per-section summary row is about; on a summary sent as one message, every section it reports, comma-separated.",
|
|
54165
54390
|
example: "Batterie scariche",
|
|
54166
54391
|
group: "system",
|
|
54167
54392
|
families: ["rule"],
|
|
@@ -55677,7 +55902,7 @@ function createClipStreamHandler(deps) {
|
|
|
55677
55902
|
* Node-only (`node:child_process`), so it lives under `@camstack/types/node`.
|
|
55678
55903
|
*/
|
|
55679
55904
|
/** The detail a site refusing for want of a binary puts in its refusal. */
|
|
55680
|
-
var NO_PINNED_FFMPEG_DETAIL = "no pinned ffmpeg on this node
|
|
55905
|
+
var NO_PINNED_FFMPEG_DETAIL = "no pinned ffmpeg on this node";
|
|
55681
55906
|
/**
|
|
55682
55907
|
* {@link pinnedFfmpegSpawner}, asked at the point of use through the node's
|
|
55683
55908
|
* resolver (`memoizePinnedFfmpeg`). A site that keeps the RESOLVER rather than
|
package/dist/addon.mjs
CHANGED
|
@@ -5392,7 +5392,7 @@ var ZodIssueCode = {
|
|
|
5392
5392
|
var ZodFirstPartyTypeKind;
|
|
5393
5393
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5394
5394
|
//#endregion
|
|
5395
|
-
//#region ../types/dist/sleep-
|
|
5395
|
+
//#region ../types/dist/sleep-C16NCZR2.mjs
|
|
5396
5396
|
/**
|
|
5397
5397
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5398
5398
|
* window to float samples (D455).
|
|
@@ -10781,57 +10781,15 @@ var ClipSearchStrictnessSchema = _enum([
|
|
|
10781
10781
|
"balanced",
|
|
10782
10782
|
"strict"
|
|
10783
10783
|
]);
|
|
10784
|
-
|
|
10785
|
-
|
|
10786
|
-
id: "person",
|
|
10787
|
-
name: "Person"
|
|
10788
|
-
},
|
|
10789
|
-
{
|
|
10790
|
-
id: "vehicle",
|
|
10791
|
-
name: "Vehicle"
|
|
10792
|
-
},
|
|
10793
|
-
{
|
|
10794
|
-
id: "animal",
|
|
10795
|
-
name: "Animal"
|
|
10796
|
-
},
|
|
10797
|
-
{
|
|
10798
|
-
id: "package",
|
|
10799
|
-
name: "Package"
|
|
10800
|
-
}
|
|
10801
|
-
].map((l) => l.id));
|
|
10802
|
-
var COCO_TO_MACRO = {
|
|
10803
|
-
mapping: {
|
|
10804
|
-
person: "person",
|
|
10805
|
-
bicycle: "vehicle",
|
|
10806
|
-
car: "vehicle",
|
|
10807
|
-
motorcycle: "vehicle",
|
|
10808
|
-
airplane: "vehicle",
|
|
10809
|
-
bus: "vehicle",
|
|
10810
|
-
train: "vehicle",
|
|
10811
|
-
truck: "vehicle",
|
|
10812
|
-
boat: "vehicle",
|
|
10813
|
-
bird: "animal",
|
|
10814
|
-
cat: "animal",
|
|
10815
|
-
dog: "animal",
|
|
10816
|
-
horse: "animal",
|
|
10817
|
-
sheep: "animal",
|
|
10818
|
-
cow: "animal",
|
|
10819
|
-
elephant: "animal",
|
|
10820
|
-
bear: "animal",
|
|
10821
|
-
zebra: "animal",
|
|
10822
|
-
giraffe: "animal",
|
|
10823
|
-
suitcase: "package",
|
|
10824
|
-
backpack: "package",
|
|
10825
|
-
handbag: "package"
|
|
10826
|
-
},
|
|
10827
|
-
preserveOriginal: false
|
|
10828
|
-
};
|
|
10829
|
-
/** Steps a root detector may declare it fills. */
|
|
10830
|
-
var FILLABLE_STEP_IDS = [
|
|
10784
|
+
/** Steps whose effect a root label can BE. */
|
|
10785
|
+
var LABEL_SUPPLY_STEP_IDS = [
|
|
10831
10786
|
"animal-classifier",
|
|
10832
10787
|
"vehicle-classifier",
|
|
10833
10788
|
"package-detection"
|
|
10834
10789
|
];
|
|
10790
|
+
/** Steps whose box a root detection can BE. */
|
|
10791
|
+
var CROP_SUPPLY_STEP_IDS = ["plate-detection", "face-detection"];
|
|
10792
|
+
[...LABEL_SUPPLY_STEP_IDS, ...CROP_SUPPLY_STEP_IDS];
|
|
10835
10793
|
var MODEL_FORMATS = [
|
|
10836
10794
|
"onnx",
|
|
10837
10795
|
"coreml",
|
|
@@ -10964,12 +10922,35 @@ var ModelLicenseSchema = preprocess((value) => typeof value === "string" ? { wei
|
|
|
10964
10922
|
/** True when the weights or their data forbid commercial use. */
|
|
10965
10923
|
nonCommercial: boolean().optional()
|
|
10966
10924
|
}));
|
|
10967
|
-
/**
|
|
10968
|
-
|
|
10969
|
-
|
|
10925
|
+
/**
|
|
10926
|
+
* One step a ROOT detector can supply from its own output (D730) — see
|
|
10927
|
+
* `ModelCatalogEntry.suppliesSteps`.
|
|
10928
|
+
*
|
|
10929
|
+
* - `label`: the root's raw class IS the step's answer. `labelToEffect` maps
|
|
10930
|
+
* the root's label to the step's vocabulary; `uncovered` is the vocabulary
|
|
10931
|
+
* the root cannot produce (shown as unavailable, never a blocker).
|
|
10932
|
+
* - `crop`: the root draws the box the step would have found (`license_plate`
|
|
10933
|
+
* for plate-detection, `face` for face-detection). The box becomes a detail
|
|
10934
|
+
* child of the `parentMacro` detection that contains it — never a track.
|
|
10935
|
+
*/
|
|
10936
|
+
var RootStepSupplySchema = discriminatedUnion("kind", [object({
|
|
10937
|
+
kind: literal("label"),
|
|
10938
|
+
stepId: _enum(LABEL_SUPPLY_STEP_IDS),
|
|
10970
10939
|
labelToEffect: record(string(), string()),
|
|
10971
10940
|
uncovered: array(string()).readonly()
|
|
10972
|
-
})
|
|
10941
|
+
}), object({
|
|
10942
|
+
kind: literal("crop"),
|
|
10943
|
+
stepId: _enum(CROP_SUPPLY_STEP_IDS),
|
|
10944
|
+
rootLabels: array(string()).readonly(),
|
|
10945
|
+
parentMacro: _enum(["vehicle", "person"]),
|
|
10946
|
+
childClass: _enum(["plate", "face"]),
|
|
10947
|
+
/**
|
|
10948
|
+
* The root's smaller input side, stamped on read by `rootSuppliesOf` from
|
|
10949
|
+
* the model entry — what a step's `minRootInputPx` gate judges. Never
|
|
10950
|
+
* stored by an import.
|
|
10951
|
+
*/
|
|
10952
|
+
rootInputPx: number().int().positive().optional()
|
|
10953
|
+
})]);
|
|
10973
10954
|
var ModelCatalogEntrySchema = object({
|
|
10974
10955
|
id: string(),
|
|
10975
10956
|
name: string(),
|
|
@@ -11096,15 +11077,15 @@ var ModelCatalogEntrySchema = object({
|
|
|
11096
11077
|
*/
|
|
11097
11078
|
classMap: DetectionCatalogClassMapSchema.optional(),
|
|
11098
11079
|
/**
|
|
11099
|
-
* The pipeline steps this ROOT detector
|
|
11100
|
-
* its labels name
|
|
11101
|
-
*
|
|
11102
|
-
* labelmap by `
|
|
11103
|
-
*
|
|
11104
|
-
*
|
|
11105
|
-
* `
|
|
11080
|
+
* The pipeline steps this ROOT detector can supply from its own output
|
|
11081
|
+
* (D730): its labels name a step's effect (`deer` for `animal-classifier`)
|
|
11082
|
+
* or draw a step's box (`license_plate` for `plate-detection`). Computed at
|
|
11083
|
+
* import from THIS model's labelmap by `deriveRootSupplies`, never written
|
|
11084
|
+
* by hand and never assumed per family; a row without it is derived on read
|
|
11085
|
+
* (`rootSuppliesOf`). Whether a camera uses it is the step's own
|
|
11086
|
+
* `useRootModel` flag (`resolveRootSupply`).
|
|
11106
11087
|
*/
|
|
11107
|
-
|
|
11088
|
+
suppliesSteps: array(RootStepSupplySchema).readonly().optional(),
|
|
11108
11089
|
/**
|
|
11109
11090
|
* The model's CLIP feature-space contract (text encoder, dimension, vector
|
|
11110
11091
|
* index, token window, search floor) — see `clip-model.ts`. Present ONLY on a
|
|
@@ -16686,6 +16667,12 @@ method(_void(), array(string()).readonly(), { auth: "admin" }), method(object({
|
|
|
16686
16667
|
kind: "mutation",
|
|
16687
16668
|
auth: "admin"
|
|
16688
16669
|
});
|
|
16670
|
+
var HUB_ADDRESS_ROLES = [
|
|
16671
|
+
"appConnections",
|
|
16672
|
+
"notificationTaps",
|
|
16673
|
+
"internal",
|
|
16674
|
+
"publicEndpoint"
|
|
16675
|
+
];
|
|
16689
16676
|
/**
|
|
16690
16677
|
* Transport bounds for AI capability methods.
|
|
16691
16678
|
*
|
|
@@ -18448,6 +18435,51 @@ method(object({}), array(TargetKindSchema)), method(object({}), array(TargetSche
|
|
|
18448
18435
|
kind: "mutation",
|
|
18449
18436
|
auth: "admin"
|
|
18450
18437
|
});
|
|
18438
|
+
new Set([
|
|
18439
|
+
{
|
|
18440
|
+
id: "person",
|
|
18441
|
+
name: "Person"
|
|
18442
|
+
},
|
|
18443
|
+
{
|
|
18444
|
+
id: "vehicle",
|
|
18445
|
+
name: "Vehicle"
|
|
18446
|
+
},
|
|
18447
|
+
{
|
|
18448
|
+
id: "animal",
|
|
18449
|
+
name: "Animal"
|
|
18450
|
+
},
|
|
18451
|
+
{
|
|
18452
|
+
id: "package",
|
|
18453
|
+
name: "Package"
|
|
18454
|
+
}
|
|
18455
|
+
].map((l) => l.id));
|
|
18456
|
+
var COCO_TO_MACRO = {
|
|
18457
|
+
mapping: {
|
|
18458
|
+
person: "person",
|
|
18459
|
+
bicycle: "vehicle",
|
|
18460
|
+
car: "vehicle",
|
|
18461
|
+
motorcycle: "vehicle",
|
|
18462
|
+
airplane: "vehicle",
|
|
18463
|
+
bus: "vehicle",
|
|
18464
|
+
train: "vehicle",
|
|
18465
|
+
truck: "vehicle",
|
|
18466
|
+
boat: "vehicle",
|
|
18467
|
+
bird: "animal",
|
|
18468
|
+
cat: "animal",
|
|
18469
|
+
dog: "animal",
|
|
18470
|
+
horse: "animal",
|
|
18471
|
+
sheep: "animal",
|
|
18472
|
+
cow: "animal",
|
|
18473
|
+
elephant: "animal",
|
|
18474
|
+
bear: "animal",
|
|
18475
|
+
zebra: "animal",
|
|
18476
|
+
giraffe: "animal",
|
|
18477
|
+
suitcase: "package",
|
|
18478
|
+
backpack: "package",
|
|
18479
|
+
handbag: "package"
|
|
18480
|
+
},
|
|
18481
|
+
preserveOriginal: false
|
|
18482
|
+
};
|
|
18451
18483
|
var AUDIO_MACRO_LABELS = [
|
|
18452
18484
|
{
|
|
18453
18485
|
id: "speech",
|
|
@@ -20850,7 +20882,13 @@ var NcAlarmModeDelaysListSchema = array(object({
|
|
|
20850
20882
|
* Absent = false (logged, not sent). Even when true it is not sent when that same sensor
|
|
20851
20883
|
* is the one that starts the entry delay — the entry-delay notification already names it.
|
|
20852
20884
|
*/
|
|
20853
|
-
notifySensorRewatched: boolean().optional()
|
|
20885
|
+
notifySensorRewatched: boolean().optional(),
|
|
20886
|
+
/**
|
|
20887
|
+
* D735: notify "ignored" when a sensor this arm bypassed really MOVED while armed (its own
|
|
20888
|
+
* change time is after the arm) and set nothing off. Absent = false (logged, not sent). A
|
|
20889
|
+
* re-sync, a recovery from `unavailable` or a duplicate is never announced, switch or not.
|
|
20890
|
+
*/
|
|
20891
|
+
notifySensorIgnored: boolean().optional()
|
|
20854
20892
|
})).max(8).refine(uniqueModes, { message: "modeDelays: at most one entry per arm mode" });
|
|
20855
20893
|
var NcAlarmModeDelaysEditListSchema = array(object({
|
|
20856
20894
|
mode: AlarmArmModeSchema,
|
|
@@ -20863,7 +20901,9 @@ var NcAlarmModeDelaysEditListSchema = array(object({
|
|
|
20863
20901
|
/** D706: set the switch, or `null` to clear it (back to the default, false). */
|
|
20864
20902
|
notifyDuringEntryDelay: boolean().nullable().optional(),
|
|
20865
20903
|
/** D706: set the switch, or `null` to clear it (back to the default, false). */
|
|
20866
|
-
notifySensorRewatched: boolean().nullable().optional()
|
|
20904
|
+
notifySensorRewatched: boolean().nullable().optional(),
|
|
20905
|
+
/** D735: set the switch, or `null` to clear it (back to the default, false). */
|
|
20906
|
+
notifySensorIgnored: boolean().nullable().optional()
|
|
20867
20907
|
})).max(8).refine(uniqueModes, { message: "modeDelays: at most one edit per arm mode" });
|
|
20868
20908
|
/** One switch of the alarm table: put ONE device on, or take it off, ONE mode's list. */
|
|
20869
20909
|
var NcAlarmNonBlockingEditSchema = object({
|
|
@@ -23762,6 +23802,34 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
23762
23802
|
timestamp: number()
|
|
23763
23803
|
});
|
|
23764
23804
|
/**
|
|
23805
|
+
* A root model's boxes standing in for one crop-kind step's own inference
|
|
23806
|
+
* (D730) — see `runPipeline.suppliedRoot`.
|
|
23807
|
+
*/
|
|
23808
|
+
var SuppliedRootOutputSchema = object({
|
|
23809
|
+
stepId: string(),
|
|
23810
|
+
/** The root model that drew the boxes — stamped on the result. */
|
|
23811
|
+
modelId: string(),
|
|
23812
|
+
detections: array(object({
|
|
23813
|
+
/** `[x1, y1, x2, y2]` in the pixels of the call's image. */
|
|
23814
|
+
bbox: tuple([
|
|
23815
|
+
number(),
|
|
23816
|
+
number(),
|
|
23817
|
+
number(),
|
|
23818
|
+
number()
|
|
23819
|
+
]),
|
|
23820
|
+
score: number(),
|
|
23821
|
+
/**
|
|
23822
|
+
* Five facial landmarks in the same pixels — a face the step's own
|
|
23823
|
+
* detector already re-found inside a root face box (D730), so its
|
|
23824
|
+
* embedder child aligns it exactly as it aligns any detected face.
|
|
23825
|
+
*/
|
|
23826
|
+
landmarks: array(object({
|
|
23827
|
+
x: number(),
|
|
23828
|
+
y: number()
|
|
23829
|
+
})).optional()
|
|
23830
|
+
})).min(1)
|
|
23831
|
+
});
|
|
23832
|
+
/**
|
|
23765
23833
|
* Reference to the frame's retained NATIVE surface + the parent crop's placement
|
|
23766
23834
|
* within the frame, so the executor can re-cut a leaf child ROI at native
|
|
23767
23835
|
* resolution on the detail plane. See the `runPipeline` `nativeCropRef` field.
|
|
@@ -23892,7 +23960,7 @@ var PipelineModelOptionSchema = object({
|
|
|
23892
23960
|
legacy: boolean().optional(),
|
|
23893
23961
|
provider: ModelProviderIdSchema.optional(),
|
|
23894
23962
|
defaultConfidence: number().optional(),
|
|
23895
|
-
|
|
23963
|
+
suppliesSteps: array(RootStepSupplySchema).readonly().optional()
|
|
23896
23964
|
});
|
|
23897
23965
|
var ConfigFieldBridge = custom();
|
|
23898
23966
|
var PipelineAddonSchemaSchema = object({
|
|
@@ -24160,7 +24228,16 @@ method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngi
|
|
|
24160
24228
|
* `device-not-servable`), and nothing reaches the camera's live
|
|
24161
24229
|
* trace stream. Absent ⇒ unchanged behaviour.
|
|
24162
24230
|
*/
|
|
24163
|
-
replay: literal(true).optional()
|
|
24231
|
+
replay: literal(true).optional(),
|
|
24232
|
+
/**
|
|
24233
|
+
* Root-supplied detections for the tree's ROOT step (D730). Set by
|
|
24234
|
+
* `runDetailSubtree` when the camera's root model supplies a crop-kind
|
|
24235
|
+
* step (a Frigate+ `license_plate` for `plate-detection`): the step is
|
|
24236
|
+
* NOT inferred, these boxes are its output, and its children (the plate
|
|
24237
|
+
* reader) run on them through their own crop policy. Boxes are in the
|
|
24238
|
+
* PIXELS of the image this call carries. Absent ⇒ the root step runs.
|
|
24239
|
+
*/
|
|
24240
|
+
suppliedRoot: SuppliedRootOutputSchema.optional()
|
|
24164
24241
|
}), PipelineRunResultBridge, { kind: "mutation" }), method(object({
|
|
24165
24242
|
steps: array(PipelineStepInputSchema).min(1),
|
|
24166
24243
|
frames: array(FrameInputSchema).min(1).max(255),
|
|
@@ -25302,7 +25379,22 @@ method(RunnerCameraConfigSchema, object({ success: literal(true) }), { kind: "mu
|
|
|
25302
25379
|
*/
|
|
25303
25380
|
cropJpeg: string().optional(),
|
|
25304
25381
|
parent: DetailParentSchema,
|
|
25305
|
-
steps: array(string()).optional()
|
|
25382
|
+
steps: array(string()).optional(),
|
|
25383
|
+
/**
|
|
25384
|
+
* The camera's root model already drew this step's boxes (D730): a
|
|
25385
|
+
* `license_plate` inside the parent vehicle. The named step is NOT
|
|
25386
|
+
* inferred — these FRAME-space boxes are its output — and its
|
|
25387
|
+
* requested children (the plate reader) run on them. Absent ⇒ every
|
|
25388
|
+
* requested step infers as before.
|
|
25389
|
+
*/
|
|
25390
|
+
supplied: object({
|
|
25391
|
+
stepId: string(),
|
|
25392
|
+
modelId: string(),
|
|
25393
|
+
boxes: array(object({
|
|
25394
|
+
bbox: NativeCropBboxSchema,
|
|
25395
|
+
score: number()
|
|
25396
|
+
})).min(1)
|
|
25397
|
+
}).optional()
|
|
25306
25398
|
}), object({ details: array(DetailResultSchema) }).nullable(), { kind: "mutation" }), method(object({
|
|
25307
25399
|
/** Catalog step id, e.g. `clip-embedding`. */
|
|
25308
25400
|
stepId: string(),
|
|
@@ -29154,6 +29246,14 @@ DeviceType.Camera, method(object({ deviceId: number().int().nonnegative() }), ar
|
|
|
29154
29246
|
*/
|
|
29155
29247
|
alive: boolean()
|
|
29156
29248
|
})), method(object({
|
|
29249
|
+
deviceId: number().int().nonnegative(),
|
|
29250
|
+
sessionId: string(),
|
|
29251
|
+
downlinkMbps: number().nonnegative()
|
|
29252
|
+
}), object({
|
|
29253
|
+
outcome: _enum(["switching", "held"]),
|
|
29254
|
+
tier: CamProfileSchema.nullable(),
|
|
29255
|
+
reason: string()
|
|
29256
|
+
}), { kind: "mutation" }), method(object({
|
|
29157
29257
|
deviceId: number().int().nonnegative(),
|
|
29158
29258
|
sessionId: string()
|
|
29159
29259
|
}), WebrtcSessionDebugSchema, { kind: "query" });
|
|
@@ -32965,7 +33065,8 @@ var ConnectionEndpointSchema = object({
|
|
|
32965
33065
|
"lan-ipv6",
|
|
32966
33066
|
"public",
|
|
32967
33067
|
"loopback",
|
|
32968
|
-
"app-link"
|
|
33068
|
+
"app-link",
|
|
33069
|
+
"custom"
|
|
32969
33070
|
]),
|
|
32970
33071
|
/**
|
|
32971
33072
|
* Originating-interface kind — `lan`/`wifi`/`docker`/`vpn`/`other`/
|
|
@@ -33034,7 +33135,7 @@ var GetConnectionEndpointsResultSchema = object({
|
|
|
33034
33135
|
localPort: AdvertisedLocalPortSchema
|
|
33035
33136
|
});
|
|
33036
33137
|
/**
|
|
33037
|
-
* The address flagged for notification
|
|
33138
|
+
* The address flagged for notification taps (`notificationTaps`). `baseUrl: null` = AUTO, which
|
|
33038
33139
|
* since D709 is the CamStack app link; `resolved` reports the effective value,
|
|
33039
33140
|
* so the UI can show it either way.
|
|
33040
33141
|
*/
|
|
@@ -33067,6 +33168,72 @@ var ViewerEndpointsSchema = object({
|
|
|
33067
33168
|
/** What the ranking currently resolves to (may be empty if nothing is up). */
|
|
33068
33169
|
resolved: array(string()).readonly()
|
|
33069
33170
|
});
|
|
33171
|
+
/**
|
|
33172
|
+
* DEPRECATED compatibility shape of `getHubAddresses` (D729 amendment, kept
|
|
33173
|
+
* for addons built against it): `cluster` is the `internal` role, `browser`
|
|
33174
|
+
* the `publicEndpoint` role; `override` is the flagged address.
|
|
33175
|
+
*/
|
|
33176
|
+
var HubAddressSnapshotSchema = object({
|
|
33177
|
+
override: string().nullable(),
|
|
33178
|
+
resolved: string().nullable(),
|
|
33179
|
+
source: _enum([
|
|
33180
|
+
"override",
|
|
33181
|
+
"auto",
|
|
33182
|
+
"none"
|
|
33183
|
+
])
|
|
33184
|
+
});
|
|
33185
|
+
var HubAddressesSchema = object({
|
|
33186
|
+
cluster: HubAddressSnapshotSchema,
|
|
33187
|
+
browser: HubAddressSnapshotSchema
|
|
33188
|
+
});
|
|
33189
|
+
/**
|
|
33190
|
+
* What an address is used for (`hub-address.ts`, D734). `appConnections` is
|
|
33191
|
+
* many-valued; `notificationTaps`, `publicEndpoint` and `internal` are carried
|
|
33192
|
+
* by at most one address.
|
|
33193
|
+
*/
|
|
33194
|
+
var HubAddressRoleSchema = _enum(HUB_ADDRESS_ROLES);
|
|
33195
|
+
var RoleSourceSchema = _enum([
|
|
33196
|
+
"flagged",
|
|
33197
|
+
"auto",
|
|
33198
|
+
"none"
|
|
33199
|
+
]);
|
|
33200
|
+
/** One single-valued role: the flagged address, the one in use, and why. */
|
|
33201
|
+
var HubAddressRoleResolutionSchema = object({
|
|
33202
|
+
/** The address carrying the flag, or null = automatic. */
|
|
33203
|
+
flagged: string().nullable(),
|
|
33204
|
+
/** The address in use, or null when nothing qualifies (never loopback). */
|
|
33205
|
+
resolved: string().nullable(),
|
|
33206
|
+
source: RoleSourceSchema
|
|
33207
|
+
});
|
|
33208
|
+
var HubAppConnectionsResolutionSchema = object({
|
|
33209
|
+
/** The addresses flagged `appConnections`, or empty = automatic. */
|
|
33210
|
+
flagged: array(string()).readonly(),
|
|
33211
|
+
/** What the apps race right now. */
|
|
33212
|
+
resolved: array(string()).readonly(),
|
|
33213
|
+
source: RoleSourceSchema
|
|
33214
|
+
});
|
|
33215
|
+
var HubAddressBookSchema = object({
|
|
33216
|
+
rows: array(ConnectionEndpointSchema.extend({
|
|
33217
|
+
/** In the hub's detected palette right now. */
|
|
33218
|
+
detected: boolean(),
|
|
33219
|
+
/** Entered by the operator (removable). */
|
|
33220
|
+
custom: boolean(),
|
|
33221
|
+
/** The roles explicitly flagged on this address. */
|
|
33222
|
+
flags: array(HubAddressRoleSchema).readonly(),
|
|
33223
|
+
/** The roles this address serves right now — flagged or automatic. */
|
|
33224
|
+
inUse: array(HubAddressRoleSchema).readonly(),
|
|
33225
|
+
/** The roles this address may be flagged with. */
|
|
33226
|
+
eligible: array(HubAddressRoleSchema).readonly()
|
|
33227
|
+
})).readonly(),
|
|
33228
|
+
roles: object({
|
|
33229
|
+
appConnections: HubAppConnectionsResolutionSchema,
|
|
33230
|
+
notificationTaps: HubAddressRoleResolutionSchema,
|
|
33231
|
+
internal: HubAddressRoleResolutionSchema,
|
|
33232
|
+
publicEndpoint: HubAddressRoleResolutionSchema
|
|
33233
|
+
}),
|
|
33234
|
+
/** The `hub=` an app link carries (D709), or null. */
|
|
33235
|
+
appLinkHub: string().nullable()
|
|
33236
|
+
});
|
|
33070
33237
|
var AllowedAddressesSchema = object({
|
|
33071
33238
|
/**
|
|
33072
33239
|
* Allowlist of interface addresses operators have explicitly opted
|
|
@@ -33110,10 +33277,27 @@ method(_void(), ListResultSchema), method(_void(), PreferredSchema), method(obje
|
|
|
33110
33277
|
* tunnel always emits `https://` regardless. */
|
|
33111
33278
|
scheme: _enum(["http", "https"]).optional(),
|
|
33112
33279
|
/** Append the CamStack app link entry (`kind: 'app-link'`, D709) —
|
|
33113
|
-
* an address notification
|
|
33280
|
+
* an address notification taps can be flagged with, not a hub
|
|
33114
33281
|
* route. Default `false`: racers and rankers never see it. */
|
|
33115
33282
|
includeAppLink: boolean().optional()
|
|
33116
|
-
}), GetConnectionEndpointsResultSchema), method(_void(), NotificationEndpointSchema), method(object({ baseUrl: string().nullable() }), NotificationEndpointSchema, { kind: "mutation" }), method(_void(), ViewerEndpointsSchema), method(object({ baseUrls: array(string()).readonly() }), ViewerEndpointsSchema, { kind: "mutation" }), method(
|
|
33283
|
+
}), GetConnectionEndpointsResultSchema), method(_void(), NotificationEndpointSchema), method(object({ baseUrl: string().nullable() }), NotificationEndpointSchema, { kind: "mutation" }), method(_void(), ViewerEndpointsSchema), method(object({ baseUrls: array(string()).readonly() }), ViewerEndpointsSchema, { kind: "mutation" }), method(object({ scheme: _enum(["http", "https"]).optional() }).optional(), HubAddressBookSchema), method(object({
|
|
33284
|
+
baseUrl: string(),
|
|
33285
|
+
label: string().max(80)
|
|
33286
|
+
}), HubAddressBookSchema, {
|
|
33287
|
+
kind: "mutation",
|
|
33288
|
+
auth: "admin"
|
|
33289
|
+
}), method(object({ baseUrl: string() }), HubAddressBookSchema, {
|
|
33290
|
+
kind: "mutation",
|
|
33291
|
+
auth: "admin"
|
|
33292
|
+
}), method(object({
|
|
33293
|
+
role: HubAddressRoleSchema,
|
|
33294
|
+
baseUrl: string().nullable(),
|
|
33295
|
+
enabled: boolean(),
|
|
33296
|
+
acceptInsecureHttp: boolean().optional()
|
|
33297
|
+
}), HubAddressBookSchema, {
|
|
33298
|
+
kind: "mutation",
|
|
33299
|
+
auth: "admin"
|
|
33300
|
+
}), method(_void(), HubAddressesSchema), method(_void(), AllowedAddressesSchema), method(AllowedAddressesSchema, object({ success: literal(true) }), { kind: "mutation" }), method(_void(), AllowedAddressesSchema, { kind: "mutation" }), method(_void(), TlsStatusSchema), method(object({ reason: string().optional() }), TlsStatusSchema, {
|
|
33117
33301
|
kind: "mutation",
|
|
33118
33302
|
auth: "admin"
|
|
33119
33303
|
}), method(object({
|
|
@@ -45147,12 +45331,24 @@ Object.freeze({
|
|
|
45147
45331
|
addonId: null,
|
|
45148
45332
|
access: "view"
|
|
45149
45333
|
},
|
|
45334
|
+
"localNetwork.addCustomAddress": {
|
|
45335
|
+
capName: "local-network",
|
|
45336
|
+
capScope: "system",
|
|
45337
|
+
addonId: null,
|
|
45338
|
+
access: "create"
|
|
45339
|
+
},
|
|
45150
45340
|
"localNetwork.downloadCa": {
|
|
45151
45341
|
capName: "local-network",
|
|
45152
45342
|
capScope: "system",
|
|
45153
45343
|
addonId: null,
|
|
45154
45344
|
access: "view"
|
|
45155
45345
|
},
|
|
45346
|
+
"localNetwork.getAddresses": {
|
|
45347
|
+
capName: "local-network",
|
|
45348
|
+
capScope: "system",
|
|
45349
|
+
addonId: null,
|
|
45350
|
+
access: "view"
|
|
45351
|
+
},
|
|
45156
45352
|
"localNetwork.getAllowedAddresses": {
|
|
45157
45353
|
capName: "local-network",
|
|
45158
45354
|
capScope: "system",
|
|
@@ -45165,6 +45361,12 @@ Object.freeze({
|
|
|
45165
45361
|
addonId: null,
|
|
45166
45362
|
access: "view"
|
|
45167
45363
|
},
|
|
45364
|
+
"localNetwork.getHubAddresses": {
|
|
45365
|
+
capName: "local-network",
|
|
45366
|
+
capScope: "system",
|
|
45367
|
+
addonId: null,
|
|
45368
|
+
access: "view"
|
|
45369
|
+
},
|
|
45168
45370
|
"localNetwork.getNotificationEndpoint": {
|
|
45169
45371
|
capName: "local-network",
|
|
45170
45372
|
capScope: "system",
|
|
@@ -45201,6 +45403,12 @@ Object.freeze({
|
|
|
45201
45403
|
addonId: null,
|
|
45202
45404
|
access: "create"
|
|
45203
45405
|
},
|
|
45406
|
+
"localNetwork.removeCustomAddress": {
|
|
45407
|
+
capName: "local-network",
|
|
45408
|
+
capScope: "system",
|
|
45409
|
+
addonId: null,
|
|
45410
|
+
access: "delete"
|
|
45411
|
+
},
|
|
45204
45412
|
"localNetwork.resetAllowlistToBestMatch": {
|
|
45205
45413
|
capName: "local-network",
|
|
45206
45414
|
capScope: "system",
|
|
@@ -45213,6 +45421,12 @@ Object.freeze({
|
|
|
45213
45421
|
addonId: null,
|
|
45214
45422
|
access: "create"
|
|
45215
45423
|
},
|
|
45424
|
+
"localNetwork.setAddressRole": {
|
|
45425
|
+
capName: "local-network",
|
|
45426
|
+
capScope: "system",
|
|
45427
|
+
addonId: null,
|
|
45428
|
+
access: "create"
|
|
45429
|
+
},
|
|
45216
45430
|
"localNetwork.setAllowedAddresses": {
|
|
45217
45431
|
capName: "local-network",
|
|
45218
45432
|
capScope: "system",
|
|
@@ -49467,6 +49681,12 @@ Object.freeze({
|
|
|
49467
49681
|
addonId: null,
|
|
49468
49682
|
access: "create"
|
|
49469
49683
|
},
|
|
49684
|
+
"webrtcSession.applyDownlinkProbe": {
|
|
49685
|
+
capName: "webrtc-session",
|
|
49686
|
+
capScope: "device",
|
|
49687
|
+
addonId: null,
|
|
49688
|
+
access: "create"
|
|
49689
|
+
},
|
|
49470
49690
|
"webrtcSession.closeSession": {
|
|
49471
49691
|
capName: "webrtc-session",
|
|
49472
49692
|
capScope: "device",
|
|
@@ -53607,6 +53827,11 @@ Object.freeze({
|
|
|
53607
53827
|
form: "single",
|
|
53608
53828
|
optional: false
|
|
53609
53829
|
}],
|
|
53830
|
+
"webrtcSession.applyDownlinkProbe": [{
|
|
53831
|
+
name: "deviceId",
|
|
53832
|
+
form: "single",
|
|
53833
|
+
optional: false
|
|
53834
|
+
}],
|
|
53610
53835
|
"webrtcSession.closeSession": [{
|
|
53611
53836
|
name: "deviceId",
|
|
53612
53837
|
form: "single",
|
|
@@ -54140,7 +54365,7 @@ var STATE_SUMMARY_VARS = [
|
|
|
54140
54365
|
{
|
|
54141
54366
|
name: "summarySection",
|
|
54142
54367
|
label: "Summary: this section",
|
|
54143
|
-
description: "The section a per-section summary row is about
|
|
54368
|
+
description: "The section a per-section summary row is about; on a summary sent as one message, every section it reports, comma-separated.",
|
|
54144
54369
|
example: "Batterie scariche",
|
|
54145
54370
|
group: "system",
|
|
54146
54371
|
families: ["rule"],
|
|
@@ -55656,7 +55881,7 @@ function createClipStreamHandler(deps) {
|
|
|
55656
55881
|
* Node-only (`node:child_process`), so it lives under `@camstack/types/node`.
|
|
55657
55882
|
*/
|
|
55658
55883
|
/** The detail a site refusing for want of a binary puts in its refusal. */
|
|
55659
|
-
var NO_PINNED_FFMPEG_DETAIL = "no pinned ffmpeg on this node
|
|
55884
|
+
var NO_PINNED_FFMPEG_DETAIL = "no pinned ffmpeg on this node";
|
|
55660
55885
|
/**
|
|
55661
55886
|
* {@link pinnedFfmpegSpawner}, asked at the point of use through the node's
|
|
55662
55887
|
* resolver (`memoizePinnedFfmpeg`). A site that keeps the RESOLVER rather than
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@camstack/addon-provider-hikvision",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.145",
|
|
4
4
|
"description": "Hikvision camera device provider addon for CamStack — ISAPI over HTTP(S) with digest auth (snapshot, alarm stream, RTSP discovery)",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"camstack",
|