@camstack/addon-auth 1.2.127 → 1.2.129
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/{dist-CrTS14S8.js → hub-browser-origin-Cd5W-H0b.js} +307 -67
- package/dist/{dist-UznM2RaH.mjs → hub-browser-origin-lAiHaCMe.mjs} +302 -68
- package/dist/magic-link/auth-magic-link.addon.js +13 -13
- package/dist/magic-link/auth-magic-link.addon.mjs +5 -5
- package/dist/oidc/auth-oidc.addon.js +16 -14
- package/dist/oidc/auth-oidc.addon.mjs +8 -6
- package/dist/webauthn/_stub.js +1 -1
- package/dist/webauthn/{_virtual_mf-localSharedImportMap___mfe_internal__addon_auth_webauthn_widgets-DLh4dk7u.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_auth_webauthn_widgets-tSRn6o3N.mjs} +3 -3
- package/dist/webauthn/_virtual_mf___mfe_internal__addon_auth_webauthn_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-Bifweq9M.mjs +26 -0
- package/dist/webauthn/auth-webauthn.addon.js +40 -32
- package/dist/webauthn/auth-webauthn.addon.mjs +27 -19
- package/dist/webauthn/{hostInit-6Xuu_16a.mjs → hostInit-BXYkXOBq.mjs} +3 -3
- package/dist/webauthn/remoteEntry.js +1 -1
- package/package.json +1 -1
- package/dist/webauthn/_virtual_mf___mfe_internal__addon_auth_webauthn_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-BtyGSrb1.mjs +0 -26
|
@@ -5378,7 +5378,7 @@ var ZodIssueCode = {
|
|
|
5378
5378
|
var ZodFirstPartyTypeKind;
|
|
5379
5379
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5380
5380
|
//#endregion
|
|
5381
|
-
//#region ../types/dist/sleep-
|
|
5381
|
+
//#region ../types/dist/sleep-C16NCZR2.mjs
|
|
5382
5382
|
/**
|
|
5383
5383
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5384
5384
|
* window to float samples (D455).
|
|
@@ -10577,57 +10577,15 @@ var ClipSearchStrictnessSchema = _enum([
|
|
|
10577
10577
|
"balanced",
|
|
10578
10578
|
"strict"
|
|
10579
10579
|
]);
|
|
10580
|
-
|
|
10581
|
-
|
|
10582
|
-
id: "person",
|
|
10583
|
-
name: "Person"
|
|
10584
|
-
},
|
|
10585
|
-
{
|
|
10586
|
-
id: "vehicle",
|
|
10587
|
-
name: "Vehicle"
|
|
10588
|
-
},
|
|
10589
|
-
{
|
|
10590
|
-
id: "animal",
|
|
10591
|
-
name: "Animal"
|
|
10592
|
-
},
|
|
10593
|
-
{
|
|
10594
|
-
id: "package",
|
|
10595
|
-
name: "Package"
|
|
10596
|
-
}
|
|
10597
|
-
].map((l) => l.id));
|
|
10598
|
-
var COCO_TO_MACRO = {
|
|
10599
|
-
mapping: {
|
|
10600
|
-
person: "person",
|
|
10601
|
-
bicycle: "vehicle",
|
|
10602
|
-
car: "vehicle",
|
|
10603
|
-
motorcycle: "vehicle",
|
|
10604
|
-
airplane: "vehicle",
|
|
10605
|
-
bus: "vehicle",
|
|
10606
|
-
train: "vehicle",
|
|
10607
|
-
truck: "vehicle",
|
|
10608
|
-
boat: "vehicle",
|
|
10609
|
-
bird: "animal",
|
|
10610
|
-
cat: "animal",
|
|
10611
|
-
dog: "animal",
|
|
10612
|
-
horse: "animal",
|
|
10613
|
-
sheep: "animal",
|
|
10614
|
-
cow: "animal",
|
|
10615
|
-
elephant: "animal",
|
|
10616
|
-
bear: "animal",
|
|
10617
|
-
zebra: "animal",
|
|
10618
|
-
giraffe: "animal",
|
|
10619
|
-
suitcase: "package",
|
|
10620
|
-
backpack: "package",
|
|
10621
|
-
handbag: "package"
|
|
10622
|
-
},
|
|
10623
|
-
preserveOriginal: false
|
|
10624
|
-
};
|
|
10625
|
-
/** Steps a root detector may declare it fills. */
|
|
10626
|
-
var FILLABLE_STEP_IDS = [
|
|
10580
|
+
/** Steps whose effect a root label can BE. */
|
|
10581
|
+
var LABEL_SUPPLY_STEP_IDS = [
|
|
10627
10582
|
"animal-classifier",
|
|
10628
10583
|
"vehicle-classifier",
|
|
10629
10584
|
"package-detection"
|
|
10630
10585
|
];
|
|
10586
|
+
/** Steps whose box a root detection can BE. */
|
|
10587
|
+
var CROP_SUPPLY_STEP_IDS = ["plate-detection", "face-detection"];
|
|
10588
|
+
[...LABEL_SUPPLY_STEP_IDS, ...CROP_SUPPLY_STEP_IDS];
|
|
10631
10589
|
var MODEL_FORMATS = [
|
|
10632
10590
|
"onnx",
|
|
10633
10591
|
"coreml",
|
|
@@ -10760,12 +10718,35 @@ var ModelLicenseSchema = preprocess((value) => typeof value === "string" ? { wei
|
|
|
10760
10718
|
/** True when the weights or their data forbid commercial use. */
|
|
10761
10719
|
nonCommercial: boolean().optional()
|
|
10762
10720
|
}));
|
|
10763
|
-
/**
|
|
10764
|
-
|
|
10765
|
-
|
|
10721
|
+
/**
|
|
10722
|
+
* One step a ROOT detector can supply from its own output (D730) — see
|
|
10723
|
+
* `ModelCatalogEntry.suppliesSteps`.
|
|
10724
|
+
*
|
|
10725
|
+
* - `label`: the root's raw class IS the step's answer. `labelToEffect` maps
|
|
10726
|
+
* the root's label to the step's vocabulary; `uncovered` is the vocabulary
|
|
10727
|
+
* the root cannot produce (shown as unavailable, never a blocker).
|
|
10728
|
+
* - `crop`: the root draws the box the step would have found (`license_plate`
|
|
10729
|
+
* for plate-detection, `face` for face-detection). The box becomes a detail
|
|
10730
|
+
* child of the `parentMacro` detection that contains it — never a track.
|
|
10731
|
+
*/
|
|
10732
|
+
var RootStepSupplySchema = discriminatedUnion("kind", [object({
|
|
10733
|
+
kind: literal("label"),
|
|
10734
|
+
stepId: _enum(LABEL_SUPPLY_STEP_IDS),
|
|
10766
10735
|
labelToEffect: record(string(), string()),
|
|
10767
10736
|
uncovered: array(string()).readonly()
|
|
10768
|
-
})
|
|
10737
|
+
}), object({
|
|
10738
|
+
kind: literal("crop"),
|
|
10739
|
+
stepId: _enum(CROP_SUPPLY_STEP_IDS),
|
|
10740
|
+
rootLabels: array(string()).readonly(),
|
|
10741
|
+
parentMacro: _enum(["vehicle", "person"]),
|
|
10742
|
+
childClass: _enum(["plate", "face"]),
|
|
10743
|
+
/**
|
|
10744
|
+
* The root's smaller input side, stamped on read by `rootSuppliesOf` from
|
|
10745
|
+
* the model entry — what a step's `minRootInputPx` gate judges. Never
|
|
10746
|
+
* stored by an import.
|
|
10747
|
+
*/
|
|
10748
|
+
rootInputPx: number().int().positive().optional()
|
|
10749
|
+
})]);
|
|
10769
10750
|
var ModelCatalogEntrySchema = object({
|
|
10770
10751
|
id: string(),
|
|
10771
10752
|
name: string(),
|
|
@@ -10892,15 +10873,15 @@ var ModelCatalogEntrySchema = object({
|
|
|
10892
10873
|
*/
|
|
10893
10874
|
classMap: DetectionCatalogClassMapSchema.optional(),
|
|
10894
10875
|
/**
|
|
10895
|
-
* The pipeline steps this ROOT detector
|
|
10896
|
-
* its labels name
|
|
10897
|
-
*
|
|
10898
|
-
* labelmap by `
|
|
10899
|
-
*
|
|
10900
|
-
*
|
|
10901
|
-
* `
|
|
10876
|
+
* The pipeline steps this ROOT detector can supply from its own output
|
|
10877
|
+
* (D730): its labels name a step's effect (`deer` for `animal-classifier`)
|
|
10878
|
+
* or draw a step's box (`license_plate` for `plate-detection`). Computed at
|
|
10879
|
+
* import from THIS model's labelmap by `deriveRootSupplies`, never written
|
|
10880
|
+
* by hand and never assumed per family; a row without it is derived on read
|
|
10881
|
+
* (`rootSuppliesOf`). Whether a camera uses it is the step's own
|
|
10882
|
+
* `useRootModel` flag (`resolveRootSupply`).
|
|
10902
10883
|
*/
|
|
10903
|
-
|
|
10884
|
+
suppliesSteps: array(RootStepSupplySchema).readonly().optional(),
|
|
10904
10885
|
/**
|
|
10905
10886
|
* The model's CLIP feature-space contract (text encoder, dimension, vector
|
|
10906
10887
|
* index, token window, search floor) — see `clip-model.ts`. Present ONLY on a
|
|
@@ -17881,6 +17862,51 @@ method(object({}), array(TargetKindSchema)), method(object({}), array(TargetSche
|
|
|
17881
17862
|
kind: "mutation",
|
|
17882
17863
|
auth: "admin"
|
|
17883
17864
|
});
|
|
17865
|
+
new Set([
|
|
17866
|
+
{
|
|
17867
|
+
id: "person",
|
|
17868
|
+
name: "Person"
|
|
17869
|
+
},
|
|
17870
|
+
{
|
|
17871
|
+
id: "vehicle",
|
|
17872
|
+
name: "Vehicle"
|
|
17873
|
+
},
|
|
17874
|
+
{
|
|
17875
|
+
id: "animal",
|
|
17876
|
+
name: "Animal"
|
|
17877
|
+
},
|
|
17878
|
+
{
|
|
17879
|
+
id: "package",
|
|
17880
|
+
name: "Package"
|
|
17881
|
+
}
|
|
17882
|
+
].map((l) => l.id));
|
|
17883
|
+
var COCO_TO_MACRO = {
|
|
17884
|
+
mapping: {
|
|
17885
|
+
person: "person",
|
|
17886
|
+
bicycle: "vehicle",
|
|
17887
|
+
car: "vehicle",
|
|
17888
|
+
motorcycle: "vehicle",
|
|
17889
|
+
airplane: "vehicle",
|
|
17890
|
+
bus: "vehicle",
|
|
17891
|
+
train: "vehicle",
|
|
17892
|
+
truck: "vehicle",
|
|
17893
|
+
boat: "vehicle",
|
|
17894
|
+
bird: "animal",
|
|
17895
|
+
cat: "animal",
|
|
17896
|
+
dog: "animal",
|
|
17897
|
+
horse: "animal",
|
|
17898
|
+
sheep: "animal",
|
|
17899
|
+
cow: "animal",
|
|
17900
|
+
elephant: "animal",
|
|
17901
|
+
bear: "animal",
|
|
17902
|
+
zebra: "animal",
|
|
17903
|
+
giraffe: "animal",
|
|
17904
|
+
suitcase: "package",
|
|
17905
|
+
backpack: "package",
|
|
17906
|
+
handbag: "package"
|
|
17907
|
+
},
|
|
17908
|
+
preserveOriginal: false
|
|
17909
|
+
};
|
|
17884
17910
|
var AUDIO_MACRO_LABELS = [
|
|
17885
17911
|
{
|
|
17886
17912
|
id: "speech",
|
|
@@ -18638,6 +18664,8 @@ var NcSystemEventKindSchema = _enum([
|
|
|
18638
18664
|
"stream-offline",
|
|
18639
18665
|
"node-online",
|
|
18640
18666
|
"node-offline",
|
|
18667
|
+
"node-restarting",
|
|
18668
|
+
"node-updating",
|
|
18641
18669
|
"node-inference-unavailable",
|
|
18642
18670
|
"detection-blind",
|
|
18643
18671
|
"addon-crash-loop",
|
|
@@ -23155,6 +23183,34 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
23155
23183
|
timestamp: number()
|
|
23156
23184
|
});
|
|
23157
23185
|
/**
|
|
23186
|
+
* A root model's boxes standing in for one crop-kind step's own inference
|
|
23187
|
+
* (D730) — see `runPipeline.suppliedRoot`.
|
|
23188
|
+
*/
|
|
23189
|
+
var SuppliedRootOutputSchema = object({
|
|
23190
|
+
stepId: string(),
|
|
23191
|
+
/** The root model that drew the boxes — stamped on the result. */
|
|
23192
|
+
modelId: string(),
|
|
23193
|
+
detections: array(object({
|
|
23194
|
+
/** `[x1, y1, x2, y2]` in the pixels of the call's image. */
|
|
23195
|
+
bbox: tuple([
|
|
23196
|
+
number(),
|
|
23197
|
+
number(),
|
|
23198
|
+
number(),
|
|
23199
|
+
number()
|
|
23200
|
+
]),
|
|
23201
|
+
score: number(),
|
|
23202
|
+
/**
|
|
23203
|
+
* Five facial landmarks in the same pixels — a face the step's own
|
|
23204
|
+
* detector already re-found inside a root face box (D730), so its
|
|
23205
|
+
* embedder child aligns it exactly as it aligns any detected face.
|
|
23206
|
+
*/
|
|
23207
|
+
landmarks: array(object({
|
|
23208
|
+
x: number(),
|
|
23209
|
+
y: number()
|
|
23210
|
+
})).optional()
|
|
23211
|
+
})).min(1)
|
|
23212
|
+
});
|
|
23213
|
+
/**
|
|
23158
23214
|
* Reference to the frame's retained NATIVE surface + the parent crop's placement
|
|
23159
23215
|
* within the frame, so the executor can re-cut a leaf child ROI at native
|
|
23160
23216
|
* resolution on the detail plane. See the `runPipeline` `nativeCropRef` field.
|
|
@@ -23285,7 +23341,7 @@ var PipelineModelOptionSchema = object({
|
|
|
23285
23341
|
legacy: boolean().optional(),
|
|
23286
23342
|
provider: ModelProviderIdSchema.optional(),
|
|
23287
23343
|
defaultConfidence: number().optional(),
|
|
23288
|
-
|
|
23344
|
+
suppliesSteps: array(RootStepSupplySchema).readonly().optional()
|
|
23289
23345
|
});
|
|
23290
23346
|
var ConfigFieldBridge = custom();
|
|
23291
23347
|
var PipelineAddonSchemaSchema = object({
|
|
@@ -23553,7 +23609,16 @@ method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngi
|
|
|
23553
23609
|
* `device-not-servable`), and nothing reaches the camera's live
|
|
23554
23610
|
* trace stream. Absent ⇒ unchanged behaviour.
|
|
23555
23611
|
*/
|
|
23556
|
-
replay: literal(true).optional()
|
|
23612
|
+
replay: literal(true).optional(),
|
|
23613
|
+
/**
|
|
23614
|
+
* Root-supplied detections for the tree's ROOT step (D730). Set by
|
|
23615
|
+
* `runDetailSubtree` when the camera's root model supplies a crop-kind
|
|
23616
|
+
* step (a Frigate+ `license_plate` for `plate-detection`): the step is
|
|
23617
|
+
* NOT inferred, these boxes are its output, and its children (the plate
|
|
23618
|
+
* reader) run on them through their own crop policy. Boxes are in the
|
|
23619
|
+
* PIXELS of the image this call carries. Absent ⇒ the root step runs.
|
|
23620
|
+
*/
|
|
23621
|
+
suppliedRoot: SuppliedRootOutputSchema.optional()
|
|
23557
23622
|
}), PipelineRunResultBridge, { kind: "mutation" }), method(object({
|
|
23558
23623
|
steps: array(PipelineStepInputSchema).min(1),
|
|
23559
23624
|
frames: array(FrameInputSchema).min(1).max(255),
|
|
@@ -24655,7 +24720,22 @@ method(RunnerCameraConfigSchema, object({ success: literal(true) }), { kind: "mu
|
|
|
24655
24720
|
*/
|
|
24656
24721
|
cropJpeg: string().optional(),
|
|
24657
24722
|
parent: DetailParentSchema,
|
|
24658
|
-
steps: array(string()).optional()
|
|
24723
|
+
steps: array(string()).optional(),
|
|
24724
|
+
/**
|
|
24725
|
+
* The camera's root model already drew this step's boxes (D730): a
|
|
24726
|
+
* `license_plate` inside the parent vehicle. The named step is NOT
|
|
24727
|
+
* inferred — these FRAME-space boxes are its output — and its
|
|
24728
|
+
* requested children (the plate reader) run on them. Absent ⇒ every
|
|
24729
|
+
* requested step infers as before.
|
|
24730
|
+
*/
|
|
24731
|
+
supplied: object({
|
|
24732
|
+
stepId: string(),
|
|
24733
|
+
modelId: string(),
|
|
24734
|
+
boxes: array(object({
|
|
24735
|
+
bbox: NativeCropBboxSchema,
|
|
24736
|
+
score: number()
|
|
24737
|
+
})).min(1)
|
|
24738
|
+
}).optional()
|
|
24659
24739
|
}), object({ details: array(DetailResultSchema) }).nullable(), { kind: "mutation" }), method(object({
|
|
24660
24740
|
/** Catalog step id, e.g. `clip-embedding`. */
|
|
24661
24741
|
stepId: string(),
|
|
@@ -27991,6 +28071,14 @@ DeviceType.Camera, method(object({ deviceId: number().int().nonnegative() }), ar
|
|
|
27991
28071
|
*/
|
|
27992
28072
|
alive: boolean()
|
|
27993
28073
|
})), method(object({
|
|
28074
|
+
deviceId: number().int().nonnegative(),
|
|
28075
|
+
sessionId: string(),
|
|
28076
|
+
downlinkMbps: number().nonnegative()
|
|
28077
|
+
}), object({
|
|
28078
|
+
outcome: _enum(["switching", "held"]),
|
|
28079
|
+
tier: CamProfileSchema.nullable(),
|
|
28080
|
+
reason: string()
|
|
28081
|
+
}), { kind: "mutation" }), method(object({
|
|
27994
28082
|
deviceId: number().int().nonnegative(),
|
|
27995
28083
|
sessionId: string()
|
|
27996
28084
|
}), WebrtcSessionDebugSchema, { kind: "query" });
|
|
@@ -30666,7 +30754,8 @@ var ConnectionEndpointSchema = object({
|
|
|
30666
30754
|
"lan-ipv6",
|
|
30667
30755
|
"public",
|
|
30668
30756
|
"loopback",
|
|
30669
|
-
"app-link"
|
|
30757
|
+
"app-link",
|
|
30758
|
+
"custom"
|
|
30670
30759
|
]),
|
|
30671
30760
|
/**
|
|
30672
30761
|
* Originating-interface kind — `lan`/`wifi`/`docker`/`vpn`/`other`/
|
|
@@ -30768,6 +30857,76 @@ var ViewerEndpointsSchema = object({
|
|
|
30768
30857
|
/** What the ranking currently resolves to (may be empty if nothing is up). */
|
|
30769
30858
|
resolved: array(string()).readonly()
|
|
30770
30859
|
});
|
|
30860
|
+
/**
|
|
30861
|
+
* DEPRECATED compatibility shape of `getHubAddresses` (D729 amendment, kept
|
|
30862
|
+
* one release for addons built against it): `cluster` is the `agents` role,
|
|
30863
|
+
* `browser` the `signIn` role; `override` is the flagged address.
|
|
30864
|
+
*/
|
|
30865
|
+
var HubAddressSnapshotSchema = object({
|
|
30866
|
+
override: string().nullable(),
|
|
30867
|
+
resolved: string().nullable(),
|
|
30868
|
+
source: _enum([
|
|
30869
|
+
"override",
|
|
30870
|
+
"auto",
|
|
30871
|
+
"none"
|
|
30872
|
+
])
|
|
30873
|
+
});
|
|
30874
|
+
var HubAddressesSchema = object({
|
|
30875
|
+
cluster: HubAddressSnapshotSchema,
|
|
30876
|
+
browser: HubAddressSnapshotSchema
|
|
30877
|
+
});
|
|
30878
|
+
/**
|
|
30879
|
+
* What an address is used for (`hub-address.ts`). `viewer` is many-valued;
|
|
30880
|
+
* `notifications`, `agents` and `signIn` are carried by at most one address.
|
|
30881
|
+
*/
|
|
30882
|
+
var HubAddressRoleSchema = _enum([
|
|
30883
|
+
"viewer",
|
|
30884
|
+
"notifications",
|
|
30885
|
+
"agents",
|
|
30886
|
+
"signIn"
|
|
30887
|
+
]);
|
|
30888
|
+
var RoleSourceSchema = _enum([
|
|
30889
|
+
"flagged",
|
|
30890
|
+
"auto",
|
|
30891
|
+
"none"
|
|
30892
|
+
]);
|
|
30893
|
+
/** One single-valued role: the flagged address, the one in use, and why. */
|
|
30894
|
+
var HubAddressRoleResolutionSchema = object({
|
|
30895
|
+
/** The address carrying the flag, or null = automatic. */
|
|
30896
|
+
flagged: string().nullable(),
|
|
30897
|
+
/** The address in use, or null when nothing qualifies (never loopback). */
|
|
30898
|
+
resolved: string().nullable(),
|
|
30899
|
+
source: RoleSourceSchema
|
|
30900
|
+
});
|
|
30901
|
+
var HubViewerResolutionSchema = object({
|
|
30902
|
+
/** The addresses flagged `viewer`, or empty = automatic. */
|
|
30903
|
+
flagged: array(string()).readonly(),
|
|
30904
|
+
/** What the apps race right now. */
|
|
30905
|
+
resolved: array(string()).readonly(),
|
|
30906
|
+
source: RoleSourceSchema
|
|
30907
|
+
});
|
|
30908
|
+
var HubAddressBookSchema = object({
|
|
30909
|
+
rows: array(ConnectionEndpointSchema.extend({
|
|
30910
|
+
/** In the hub's detected palette right now. */
|
|
30911
|
+
detected: boolean(),
|
|
30912
|
+
/** Entered by the operator (removable). */
|
|
30913
|
+
custom: boolean(),
|
|
30914
|
+
/** The roles explicitly flagged on this address. */
|
|
30915
|
+
flags: array(HubAddressRoleSchema).readonly(),
|
|
30916
|
+
/** The roles this address serves right now — flagged or automatic. */
|
|
30917
|
+
inUse: array(HubAddressRoleSchema).readonly(),
|
|
30918
|
+
/** The roles this address may be flagged with. */
|
|
30919
|
+
eligible: array(HubAddressRoleSchema).readonly()
|
|
30920
|
+
})).readonly(),
|
|
30921
|
+
roles: object({
|
|
30922
|
+
viewer: HubViewerResolutionSchema,
|
|
30923
|
+
notifications: HubAddressRoleResolutionSchema,
|
|
30924
|
+
agents: HubAddressRoleResolutionSchema,
|
|
30925
|
+
signIn: HubAddressRoleResolutionSchema
|
|
30926
|
+
}),
|
|
30927
|
+
/** The `hub=` an app link carries (D709), or null. */
|
|
30928
|
+
appLinkHub: string().nullable()
|
|
30929
|
+
});
|
|
30771
30930
|
var AllowedAddressesSchema = object({
|
|
30772
30931
|
/**
|
|
30773
30932
|
* Allowlist of interface addresses operators have explicitly opted
|
|
@@ -30814,7 +30973,24 @@ method(_void(), ListResultSchema), method(_void(), PreferredSchema), method(obje
|
|
|
30814
30973
|
* an address notification links can be flagged with, not a hub
|
|
30815
30974
|
* route. Default `false`: racers and rankers never see it. */
|
|
30816
30975
|
includeAppLink: boolean().optional()
|
|
30817
|
-
}), 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(
|
|
30976
|
+
}), 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({
|
|
30977
|
+
baseUrl: string(),
|
|
30978
|
+
label: string().max(80)
|
|
30979
|
+
}), HubAddressBookSchema, {
|
|
30980
|
+
kind: "mutation",
|
|
30981
|
+
auth: "admin"
|
|
30982
|
+
}), method(object({ baseUrl: string() }), HubAddressBookSchema, {
|
|
30983
|
+
kind: "mutation",
|
|
30984
|
+
auth: "admin"
|
|
30985
|
+
}), method(object({
|
|
30986
|
+
role: HubAddressRoleSchema,
|
|
30987
|
+
baseUrl: string().nullable(),
|
|
30988
|
+
enabled: boolean(),
|
|
30989
|
+
acceptInsecureHttp: boolean().optional()
|
|
30990
|
+
}), HubAddressBookSchema, {
|
|
30991
|
+
kind: "mutation",
|
|
30992
|
+
auth: "admin"
|
|
30993
|
+
}), 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, {
|
|
30818
30994
|
kind: "mutation",
|
|
30819
30995
|
auth: "admin"
|
|
30820
30996
|
}), method(object({
|
|
@@ -31204,7 +31380,8 @@ object({
|
|
|
31204
31380
|
* writes this slice (not even a boot seed), and neither does the runner's
|
|
31205
31381
|
* phase machine: its phase is "a session is attached" for every on-motion
|
|
31206
31382
|
* session, not motion, and it now has its own `DetectionPhaseTransition`.
|
|
31207
|
-
* A provider's `isDetected`
|
|
31383
|
+
* A provider's `isDetected` and `getStatus` answer from the hub's slice
|
|
31384
|
+
* (`hubMotionNativeProvider`).
|
|
31208
31385
|
* - **Sensors** (Home Assistant binary sensors, Homematic, Matter, Alexa
|
|
31209
31386
|
* imports) — the provider pushes both edges itself, from the upstream
|
|
31210
31387
|
* system's own state change. That is the sensor's own fact.
|
|
@@ -39263,12 +39440,24 @@ Object.freeze({
|
|
|
39263
39440
|
addonId: null,
|
|
39264
39441
|
access: "view"
|
|
39265
39442
|
},
|
|
39443
|
+
"localNetwork.addCustomAddress": {
|
|
39444
|
+
capName: "local-network",
|
|
39445
|
+
capScope: "system",
|
|
39446
|
+
addonId: null,
|
|
39447
|
+
access: "create"
|
|
39448
|
+
},
|
|
39266
39449
|
"localNetwork.downloadCa": {
|
|
39267
39450
|
capName: "local-network",
|
|
39268
39451
|
capScope: "system",
|
|
39269
39452
|
addonId: null,
|
|
39270
39453
|
access: "view"
|
|
39271
39454
|
},
|
|
39455
|
+
"localNetwork.getAddresses": {
|
|
39456
|
+
capName: "local-network",
|
|
39457
|
+
capScope: "system",
|
|
39458
|
+
addonId: null,
|
|
39459
|
+
access: "view"
|
|
39460
|
+
},
|
|
39272
39461
|
"localNetwork.getAllowedAddresses": {
|
|
39273
39462
|
capName: "local-network",
|
|
39274
39463
|
capScope: "system",
|
|
@@ -39281,6 +39470,12 @@ Object.freeze({
|
|
|
39281
39470
|
addonId: null,
|
|
39282
39471
|
access: "view"
|
|
39283
39472
|
},
|
|
39473
|
+
"localNetwork.getHubAddresses": {
|
|
39474
|
+
capName: "local-network",
|
|
39475
|
+
capScope: "system",
|
|
39476
|
+
addonId: null,
|
|
39477
|
+
access: "view"
|
|
39478
|
+
},
|
|
39284
39479
|
"localNetwork.getNotificationEndpoint": {
|
|
39285
39480
|
capName: "local-network",
|
|
39286
39481
|
capScope: "system",
|
|
@@ -39317,6 +39512,12 @@ Object.freeze({
|
|
|
39317
39512
|
addonId: null,
|
|
39318
39513
|
access: "create"
|
|
39319
39514
|
},
|
|
39515
|
+
"localNetwork.removeCustomAddress": {
|
|
39516
|
+
capName: "local-network",
|
|
39517
|
+
capScope: "system",
|
|
39518
|
+
addonId: null,
|
|
39519
|
+
access: "delete"
|
|
39520
|
+
},
|
|
39320
39521
|
"localNetwork.resetAllowlistToBestMatch": {
|
|
39321
39522
|
capName: "local-network",
|
|
39322
39523
|
capScope: "system",
|
|
@@ -39329,6 +39530,12 @@ Object.freeze({
|
|
|
39329
39530
|
addonId: null,
|
|
39330
39531
|
access: "create"
|
|
39331
39532
|
},
|
|
39533
|
+
"localNetwork.setAddressRole": {
|
|
39534
|
+
capName: "local-network",
|
|
39535
|
+
capScope: "system",
|
|
39536
|
+
addonId: null,
|
|
39537
|
+
access: "create"
|
|
39538
|
+
},
|
|
39332
39539
|
"localNetwork.setAllowedAddresses": {
|
|
39333
39540
|
capName: "local-network",
|
|
39334
39541
|
capScope: "system",
|
|
@@ -43583,6 +43790,12 @@ Object.freeze({
|
|
|
43583
43790
|
addonId: null,
|
|
43584
43791
|
access: "create"
|
|
43585
43792
|
},
|
|
43793
|
+
"webrtcSession.applyDownlinkProbe": {
|
|
43794
|
+
capName: "webrtc-session",
|
|
43795
|
+
capScope: "device",
|
|
43796
|
+
addonId: null,
|
|
43797
|
+
access: "create"
|
|
43798
|
+
},
|
|
43586
43799
|
"webrtcSession.closeSession": {
|
|
43587
43800
|
capName: "webrtc-session",
|
|
43588
43801
|
capScope: "device",
|
|
@@ -47505,6 +47718,11 @@ Object.freeze({
|
|
|
47505
47718
|
form: "single",
|
|
47506
47719
|
optional: false
|
|
47507
47720
|
}],
|
|
47721
|
+
"webrtcSession.applyDownlinkProbe": [{
|
|
47722
|
+
name: "deviceId",
|
|
47723
|
+
form: "single",
|
|
47724
|
+
optional: false
|
|
47725
|
+
}],
|
|
47508
47726
|
"webrtcSession.closeSession": [{
|
|
47509
47727
|
name: "deviceId",
|
|
47510
47728
|
form: "single",
|
|
@@ -47734,6 +47952,8 @@ new Map(Object.entries({
|
|
|
47734
47952
|
"detection-blind": "device-events",
|
|
47735
47953
|
"node-online": "system",
|
|
47736
47954
|
"node-offline": "system",
|
|
47955
|
+
"node-restarting": "system",
|
|
47956
|
+
"node-updating": "system",
|
|
47737
47957
|
"node-inference-unavailable": "system",
|
|
47738
47958
|
"addon-crash-loop": "system",
|
|
47739
47959
|
"addon-update-available": "system",
|
|
@@ -47811,6 +48031,7 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
|
|
|
47811
48031
|
kinds: [
|
|
47812
48032
|
"node-offline",
|
|
47813
48033
|
"node-online",
|
|
48034
|
+
"node-restarting",
|
|
47814
48035
|
"node-inference-unavailable"
|
|
47815
48036
|
]
|
|
47816
48037
|
},
|
|
@@ -47832,6 +48053,7 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
|
|
|
47832
48053
|
label: "Server & container updates",
|
|
47833
48054
|
kinds: [
|
|
47834
48055
|
"server-update-available",
|
|
48056
|
+
"node-updating",
|
|
47835
48057
|
"server-updated",
|
|
47836
48058
|
"wrapper-update-available"
|
|
47837
48059
|
]
|
|
@@ -47979,6 +48201,7 @@ var STATE_SUMMARY_SECTION_VARS = [
|
|
|
47979
48201
|
kinds: [
|
|
47980
48202
|
"node-offline",
|
|
47981
48203
|
"node-online",
|
|
48204
|
+
"node-restarting",
|
|
47982
48205
|
"node-inference-unavailable"
|
|
47983
48206
|
]
|
|
47984
48207
|
},
|
|
@@ -48000,6 +48223,7 @@ var STATE_SUMMARY_SECTION_VARS = [
|
|
|
48000
48223
|
example: "server 1.2.377 → 1.2.378",
|
|
48001
48224
|
kinds: [
|
|
48002
48225
|
"server-update-available",
|
|
48226
|
+
"node-updating",
|
|
48003
48227
|
"server-updated",
|
|
48004
48228
|
"wrapper-update-available"
|
|
48005
48229
|
]
|
|
@@ -48032,7 +48256,7 @@ var STATE_SUMMARY_VARS = [
|
|
|
48032
48256
|
{
|
|
48033
48257
|
name: "summarySection",
|
|
48034
48258
|
label: "Summary: this section",
|
|
48035
|
-
description: "The section a per-section summary row is about
|
|
48259
|
+
description: "The section a per-section summary row is about; on a summary sent as one message, every section it reports, comma-separated.",
|
|
48036
48260
|
example: "Batterie scariche",
|
|
48037
48261
|
group: "system",
|
|
48038
48262
|
families: ["rule"],
|
|
@@ -48639,4 +48863,14 @@ DEFAULT_NATIVE_LEASE_SETTINGS.admission;
|
|
|
48639
48863
|
var MB = 1024 * 1024;
|
|
48640
48864
|
1024 * MB, 3072 * MB;
|
|
48641
48865
|
//#endregion
|
|
48642
|
-
|
|
48866
|
+
//#region src/hub-browser-origin.ts
|
|
48867
|
+
async function hubBrowserOrigin(localNetwork, logger) {
|
|
48868
|
+
try {
|
|
48869
|
+
return (await localNetwork.getAddresses.query()).roles.signIn.resolved;
|
|
48870
|
+
} catch (err) {
|
|
48871
|
+
logger.warn("hub address unavailable from local-network — using the localhost default", { meta: { error: err instanceof Error ? err.message : String(err) } });
|
|
48872
|
+
return null;
|
|
48873
|
+
}
|
|
48874
|
+
}
|
|
48875
|
+
//#endregion
|
|
48876
|
+
export { buildAddonRouteProvider as a, errMsg as c, boolean as d, number as f, authProviderCapability as i, BaseAddon as l, string as m, addonRoutesCapability as n, loginMethodCapability as o, object as p, addonWidgetsSourceCapability as r, userPasskeysCapability as s, hubBrowserOrigin as t, array as u };
|
|
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
|
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
5
|
require("../chunk-Cek0wNdY.js");
|
|
6
|
-
const
|
|
6
|
+
const require_hub_browser_origin = require("../hub-browser-origin-Cd5W-H0b.js");
|
|
7
7
|
//#region src/magic-link/auth-magic-link.addon.ts
|
|
8
8
|
/**
|
|
9
9
|
* Magic-link authentication addon.
|
|
@@ -38,7 +38,7 @@ var DEFAULT_CONFIG = {
|
|
|
38
38
|
defaultRole: "viewer",
|
|
39
39
|
ttlSec: 600
|
|
40
40
|
};
|
|
41
|
-
var AuthMagicLinkAddon = class extends
|
|
41
|
+
var AuthMagicLinkAddon = class extends require_hub_browser_origin.BaseAddon {
|
|
42
42
|
constructor() {
|
|
43
43
|
super({ ...DEFAULT_CONFIG });
|
|
44
44
|
}
|
|
@@ -53,7 +53,7 @@ var AuthMagicLinkAddon = class extends require_dist.BaseAddon {
|
|
|
53
53
|
throw new Error("Magic link does not use callback — the email link redirects to /api/auth/sso/finish directly");
|
|
54
54
|
}
|
|
55
55
|
};
|
|
56
|
-
const routeProvider =
|
|
56
|
+
const routeProvider = require_hub_browser_origin.buildAddonRouteProvider("auth-magic-link", [
|
|
57
57
|
{
|
|
58
58
|
method: "GET",
|
|
59
59
|
path: "/start",
|
|
@@ -80,15 +80,15 @@ var AuthMagicLinkAddon = class extends require_dist.BaseAddon {
|
|
|
80
80
|
this.ctx.logger.info("Magic-link auth provider initialized", { meta: { deliveryMode: this.config.deliveryMode } });
|
|
81
81
|
return [
|
|
82
82
|
{
|
|
83
|
-
capability:
|
|
83
|
+
capability: require_hub_browser_origin.authProviderCapability,
|
|
84
84
|
provider: authProvider
|
|
85
85
|
},
|
|
86
86
|
{
|
|
87
|
-
capability:
|
|
87
|
+
capability: require_hub_browser_origin.addonRoutesCapability,
|
|
88
88
|
provider: routeProvider
|
|
89
89
|
},
|
|
90
90
|
{
|
|
91
|
-
capability:
|
|
91
|
+
capability: require_hub_browser_origin.loginMethodCapability,
|
|
92
92
|
provider: loginMethodProvider
|
|
93
93
|
}
|
|
94
94
|
];
|
|
@@ -134,7 +134,7 @@ var AuthMagicLinkAddon = class extends require_dist.BaseAddon {
|
|
|
134
134
|
type: "text",
|
|
135
135
|
key: "publicOrigin",
|
|
136
136
|
label: "Public origin",
|
|
137
|
-
description: "Where the email link points. Empty =
|
|
137
|
+
description: "Where the email link points. Empty = the hub address from Network (public tunnel, then mesh, then LAN).",
|
|
138
138
|
default: ""
|
|
139
139
|
}),
|
|
140
140
|
this.field({
|
|
@@ -174,17 +174,17 @@ var AuthMagicLinkAddon = class extends require_dist.BaseAddon {
|
|
|
174
174
|
]
|
|
175
175
|
}] });
|
|
176
176
|
}
|
|
177
|
-
buildPublicOrigin() {
|
|
177
|
+
async buildPublicOrigin() {
|
|
178
178
|
const configured = this.config.publicOrigin?.trim();
|
|
179
179
|
if (configured) return configured.replace(/\/+$/, "");
|
|
180
|
-
return (
|
|
180
|
+
return await require_hub_browser_origin.hubBrowserOrigin(this.ctx.api.localNetwork, this.ctx.logger) ?? "https://localhost:4443";
|
|
181
181
|
}
|
|
182
182
|
async findUserByEmail(email) {
|
|
183
183
|
let users;
|
|
184
184
|
try {
|
|
185
185
|
users = await this.ctx.api.userManagement.listUsers.query();
|
|
186
186
|
} catch (err) {
|
|
187
|
-
this.ctx.logger.warn("Magic-link user lookup failed (user-management cap unavailable)", { meta: { message:
|
|
187
|
+
this.ctx.logger.warn("Magic-link user lookup failed (user-management cap unavailable)", { meta: { message: require_hub_browser_origin.errMsg(err) } });
|
|
188
188
|
return null;
|
|
189
189
|
}
|
|
190
190
|
const needle = email.trim().toLowerCase();
|
|
@@ -273,12 +273,12 @@ var AuthMagicLinkAddon = class extends require_dist.BaseAddon {
|
|
|
273
273
|
ttlSec: this.config.ttlSec || DEFAULT_CONFIG.ttlSec
|
|
274
274
|
}));
|
|
275
275
|
} catch (err) {
|
|
276
|
-
this.ctx.logger.error("Magic-link bridge-token minting failed (sso-bridge unavailable)", { meta: { message:
|
|
276
|
+
this.ctx.logger.error("Magic-link bridge-token minting failed (sso-bridge unavailable)", { meta: { message: require_hub_browser_origin.errMsg(err) } });
|
|
277
277
|
reply.code(503);
|
|
278
278
|
reply.send({ error: "sso-bridge capability unavailable" });
|
|
279
279
|
return;
|
|
280
280
|
}
|
|
281
|
-
const link = `${this.buildPublicOrigin()}/addon/auth-magic-link/login?bridge=${encodeURIComponent(token)}`;
|
|
281
|
+
const link = `${await this.buildPublicOrigin()}/addon/auth-magic-link/login?bridge=${encodeURIComponent(token)}`;
|
|
282
282
|
if (this.config.deliveryMode === "log-only") this.ctx.logger.warn("Magic link generated (log-only mode — NOT delivered via email)", { meta: {
|
|
283
283
|
email,
|
|
284
284
|
link,
|
|
@@ -294,7 +294,7 @@ var AuthMagicLinkAddon = class extends require_dist.BaseAddon {
|
|
|
294
294
|
reply.code(500);
|
|
295
295
|
reply.send({
|
|
296
296
|
error: "Magic-link request failed",
|
|
297
|
-
message:
|
|
297
|
+
message: require_hub_browser_origin.errMsg(err)
|
|
298
298
|
});
|
|
299
299
|
}
|
|
300
300
|
}
|