@camstack/addon-import-alexa 0.2.173 → 0.2.174
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/CHANGELOG.md +7 -0
- package/dist/addon.js +88 -10
- package/dist/addon.mjs +88 -10
- package/package.json +5 -2
package/CHANGELOG.md
CHANGED
|
@@ -7,11 +7,18 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.2.174] - 2026-11-01
|
|
11
|
+
|
|
12
|
+
### Changed
|
|
13
|
+
|
|
14
|
+
- Declares the minimum CamStack server it needs; the Addons page shows a held update as requires server >= X
|
|
15
|
+
|
|
10
16
|
## [0.2.173] - 2026-11-01
|
|
11
17
|
|
|
12
18
|
### Changed
|
|
13
19
|
|
|
14
20
|
- The Amazon device-code sign-in's refresh token and session cookie are declared secret
|
|
21
|
+
- Declares the minimum CamStack server it needs; the Addons page shows a held update as requires server >= X
|
|
15
22
|
|
|
16
23
|
## [0.2.172] - 2026-10-31
|
|
17
24
|
|
package/dist/addon.js
CHANGED
|
@@ -6027,7 +6027,7 @@ function number(params) {
|
|
|
6027
6027
|
return /* @__PURE__ */ _coercedNumber(ZodNumber, params);
|
|
6028
6028
|
}
|
|
6029
6029
|
//#endregion
|
|
6030
|
-
//#region ../types/dist/sleep-
|
|
6030
|
+
//#region ../types/dist/sleep-CSYuxssh.mjs
|
|
6031
6031
|
/**
|
|
6032
6032
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
6033
6033
|
* window to float samples (D455).
|
|
@@ -9494,7 +9494,7 @@ var ProfileRtspEntrySchema = object({
|
|
|
9494
9494
|
/**
|
|
9495
9495
|
* The model weight formats a catalog entry can ship. Schema-free on purpose:
|
|
9496
9496
|
* `types/models.ts` builds Zod schemas from it, but a runner-closure consumer
|
|
9497
|
-
* (the model downloader in `@camstack/system`) needs only the list and must
|
|
9497
|
+
* (the model downloader in `@camstack/server/system`) needs only the list and must
|
|
9498
9498
|
* reach it through `@camstack/types/addon` without building the cap schema
|
|
9499
9499
|
* graph (D28).
|
|
9500
9500
|
*/
|
|
@@ -12869,6 +12869,71 @@ var EventOwnerTypeSchema = _enum(EVENT_OWNER_TYPES);
|
|
|
12869
12869
|
var MediaPresenceOwnerKindSchema = _enum([...EVENT_OWNER_TYPES, "track"]);
|
|
12870
12870
|
new Set(EVENT_OWNER_TYPES);
|
|
12871
12871
|
/**
|
|
12872
|
+
* What a published package needs from the rest of the install (D989).
|
|
12873
|
+
*
|
|
12874
|
+
* One published framework package (`@camstack/server`) carries the kernel, the
|
|
12875
|
+
* builtins and the capability contracts, so "which addon runs on which
|
|
12876
|
+
* framework" is a question of version, and the answer is DECLARED by the
|
|
12877
|
+
* package that knows it:
|
|
12878
|
+
*
|
|
12879
|
+
* - an addon says the oldest server it runs on (`requires.server: ">=X"`);
|
|
12880
|
+
* - the server says the oldest addon it works with
|
|
12881
|
+
* (`requires.addons: { "@camstack/addon-x": ">=Y" }`) and the oldest shell
|
|
12882
|
+
* around it (`requires.wrapper: { desktop, image }`);
|
|
12883
|
+
* - a wrapper (the desktop app, the container starter) says which server
|
|
12884
|
+
* range it can host, and reports its own kind and version.
|
|
12885
|
+
*
|
|
12886
|
+
* The publish workflow STAMPS these after the version bump
|
|
12887
|
+
* (`scripts/ci/stamp-requires.mjs`); nobody types a number by hand.
|
|
12888
|
+
*
|
|
12889
|
+
* A requirement that cannot be checked is NOT met: a shell that reports no
|
|
12890
|
+
* version counts as below the minimum, and an unreadable running version is
|
|
12891
|
+
* named in the result (a failed read is never a pass).
|
|
12892
|
+
*/
|
|
12893
|
+
/** `>=MAJOR.MINOR.PATCH[-prerelease]` — the only range shape a requirement uses. */
|
|
12894
|
+
var MinVersionSchema = string().regex(/^>=\d+\.\d+\.\d+(-[0-9A-Za-z.-]+)?$/, "a minimum is written \">=X.Y.Z\"");
|
|
12895
|
+
object({
|
|
12896
|
+
/** The oldest `@camstack/server` this package runs on. */
|
|
12897
|
+
server: MinVersionSchema.optional(),
|
|
12898
|
+
/** The oldest installed version of each named addon package. */
|
|
12899
|
+
addons: record(string(), MinVersionSchema).optional(),
|
|
12900
|
+
/** The oldest shell around the server, per shell kind. */
|
|
12901
|
+
wrapper: object({
|
|
12902
|
+
desktop: MinVersionSchema.optional(),
|
|
12903
|
+
image: MinVersionSchema.optional()
|
|
12904
|
+
}).optional()
|
|
12905
|
+
});
|
|
12906
|
+
/** One unmet requirement; each names the versions on both sides. */
|
|
12907
|
+
var UnmetRequirementSchema = discriminatedUnion("kind", [
|
|
12908
|
+
object({
|
|
12909
|
+
kind: literal("server-too-old"),
|
|
12910
|
+
required: string(),
|
|
12911
|
+
/** `null` — the running server version could not be read. */
|
|
12912
|
+
running: string().nullable()
|
|
12913
|
+
}),
|
|
12914
|
+
object({
|
|
12915
|
+
kind: literal("addon-too-old"),
|
|
12916
|
+
packageName: string(),
|
|
12917
|
+
required: string(),
|
|
12918
|
+
/** `null` — the addon is not installed (or its version is unreadable). */
|
|
12919
|
+
running: string().nullable()
|
|
12920
|
+
}),
|
|
12921
|
+
object({
|
|
12922
|
+
kind: literal("wrapper-too-old"),
|
|
12923
|
+
wrapper: _enum(["desktop", "image"]),
|
|
12924
|
+
required: string(),
|
|
12925
|
+
/** `null` — the wrapper reported no version. */
|
|
12926
|
+
running: string().nullable()
|
|
12927
|
+
})
|
|
12928
|
+
]);
|
|
12929
|
+
var RequiredAddonUpdateSchema = object({
|
|
12930
|
+
packageName: string(),
|
|
12931
|
+
/** The minimum the target server declares. */
|
|
12932
|
+
required: string(),
|
|
12933
|
+
/** What this node has; `null` when the addon is not installed. */
|
|
12934
|
+
installed: string().nullable()
|
|
12935
|
+
});
|
|
12936
|
+
/**
|
|
12872
12937
|
* Which integration instance a settings form is for. An addon that serves several instances
|
|
12873
12938
|
* (`instanceMode: multiple`) can show a different form per instance — an NVR integration
|
|
12874
12939
|
* needs its connection, the default integration needs the addon's own sections.
|
|
@@ -43423,7 +43488,7 @@ var notificationOutputCapability = {
|
|
|
43423
43488
|
* rebuilds without manual reload.
|
|
43424
43489
|
*
|
|
43425
43490
|
* The hub-local builtin `addon-pages-aggregator` (see
|
|
43426
|
-
* `@camstack/system/builtins/addon-pages-aggregator`) registers the
|
|
43491
|
+
* `@camstack/server/system/builtins/addon-pages-aggregator`) registers the
|
|
43427
43492
|
* provider. Splitting the public aggregator from the raw collection
|
|
43428
43493
|
* keeps both ends in codegen — there's no hand-written
|
|
43429
43494
|
* `addon-pages.router.ts` wrapper anymore.
|
|
@@ -43513,7 +43578,7 @@ var addonRoutesCapability = {
|
|
|
43513
43578
|
*/
|
|
43514
43579
|
invoke: method(InvokeRequestSchema, InvokeReplyEnvelopeSchema, { kind: "mutation" })
|
|
43515
43580
|
},
|
|
43516
|
-
/** BIG PLAN 2: declarative mount hint — read by `@camstack/system` `buildCapRouters`. */
|
|
43581
|
+
/** BIG PLAN 2: declarative mount hint — read by `@camstack/server/system` `buildCapRouters`. */
|
|
43517
43582
|
mount: { kind: "skip" }
|
|
43518
43583
|
};
|
|
43519
43584
|
var ConfigTabDeclarationSchema = object({
|
|
@@ -43742,7 +43807,7 @@ method(_void(), array(WidgetMetadataSchema).readonly(), { auth: "admin" });
|
|
|
43742
43807
|
* manual reload — same scheme used by `addon-pages`.
|
|
43743
43808
|
*
|
|
43744
43809
|
* The hub-local builtin `addon-widgets-aggregator` (see
|
|
43745
|
-
* `@camstack/system/builtins/addon-widgets-aggregator`) registers the
|
|
43810
|
+
* `@camstack/server/system/builtins/addon-widgets-aggregator`) registers the
|
|
43746
43811
|
* provider. Splitting the public aggregator from the raw collection
|
|
43747
43812
|
* keeps both ends in codegen — there's no hand-written wrapper.
|
|
43748
43813
|
*/
|
|
@@ -61878,7 +61943,18 @@ var ServerUpdateActionResultSchema = object({
|
|
|
61878
61943
|
* store (D877), present when the pre-flight refused the update
|
|
61879
61944
|
* (`reason: 'addon-would-refuse'`). Optional for version skew.
|
|
61880
61945
|
*/
|
|
61881
|
-
blockers: array(UpdateBlockerSchema).optional()
|
|
61946
|
+
blockers: array(UpdateBlockerSchema).optional(),
|
|
61947
|
+
/**
|
|
61948
|
+
* The minimums the target server declares and this node does not meet
|
|
61949
|
+
* (D989), present when the update was refused with
|
|
61950
|
+
* `reason: 'requirements-unmet'`. Each names the versions on both sides.
|
|
61951
|
+
*/
|
|
61952
|
+
unmet: array(UnmetRequirementSchema).optional(),
|
|
61953
|
+
/**
|
|
61954
|
+
* The addons this node has below the minimum the staged server declares —
|
|
61955
|
+
* the ones to update WITH the server. Present on an accepted update.
|
|
61956
|
+
*/
|
|
61957
|
+
requiredAddonUpdates: array(RequiredAddonUpdateSchema).optional()
|
|
61882
61958
|
});
|
|
61883
61959
|
var LaunchOverridesSchema = object({
|
|
61884
61960
|
/** The persisted heap ceiling in MB, or `null` when none is set. */
|
|
@@ -64422,7 +64498,9 @@ var PackageUpdateSchema = object({
|
|
|
64422
64498
|
latestVersion: string(),
|
|
64423
64499
|
category: _enum(["addon", "core"]),
|
|
64424
64500
|
requiresRestart: boolean(),
|
|
64425
|
-
isSystem: boolean()
|
|
64501
|
+
isSystem: boolean(),
|
|
64502
|
+
/** Held: what the newer version needs and this node does not meet (D989). */
|
|
64503
|
+
blockedBy: array(UnmetRequirementSchema).readonly().optional()
|
|
64426
64504
|
});
|
|
64427
64505
|
var PackageVersionInfoSchema = object({
|
|
64428
64506
|
version: string(),
|
|
@@ -69722,7 +69800,7 @@ var lawnMowerControlCapability = {
|
|
|
69722
69800
|
* clients — they reverse-connect to the hub. Exposing their interfaces
|
|
69723
69801
|
* via the same surface would leak internal topology with no upside.
|
|
69724
69802
|
*
|
|
69725
|
-
* Implementation in `@camstack/system/builtins/local-network/`.
|
|
69803
|
+
* Implementation in `@camstack/server/system/builtins/local-network/`.
|
|
69726
69804
|
*/
|
|
69727
69805
|
/** Coarse classification derived from the interface name + IP range. */
|
|
69728
69806
|
var InterfaceKindEnum = _enum([
|
|
@@ -71610,7 +71688,7 @@ onStatusChanged: { data: object({
|
|
|
71610
71688
|
* jitter, and observed/peak bandwidth per device + per client.
|
|
71611
71689
|
*
|
|
71612
71690
|
* Implementation lives in the server's `NetworkQualityService` (thin
|
|
71613
|
-
* wrapper over the shared `NetworkQualityTracker` from `@camstack/system`).
|
|
71691
|
+
* wrapper over the shared `NetworkQualityTracker` from `@camstack/server/system`).
|
|
71614
71692
|
* The provider is registered from `trpc.router.ts` against the existing
|
|
71615
71693
|
* service instance — no addon owns this state.
|
|
71616
71694
|
*
|
|
@@ -73761,7 +73839,7 @@ var ptzAutotrackCapability = {
|
|
|
73761
73839
|
* - **Native**: the camera's own firmware autotrack, registered per device by
|
|
73762
73840
|
* the driver when the probe says it exists (Reolink: yes; Hikvision:
|
|
73763
73841
|
* model-dependent).
|
|
73764
|
-
* - **Wrapper**: the emulated implementation (`@camstack/system`'s `autotrack` builtin),
|
|
73842
|
+
* - **Wrapper**: the emulated implementation (`@camstack/server/system`'s `autotrack` builtin),
|
|
73765
73843
|
* which follows a subject with `ptz.move` pulses driven by the detection
|
|
73766
73844
|
* pipeline. `defaultActive: false` — the operator binds it per camera in
|
|
73767
73845
|
* the bindings UI.
|
package/dist/addon.mjs
CHANGED
|
@@ -6025,7 +6025,7 @@ function number(params) {
|
|
|
6025
6025
|
return /* @__PURE__ */ _coercedNumber(ZodNumber, params);
|
|
6026
6026
|
}
|
|
6027
6027
|
//#endregion
|
|
6028
|
-
//#region ../types/dist/sleep-
|
|
6028
|
+
//#region ../types/dist/sleep-CSYuxssh.mjs
|
|
6029
6029
|
/**
|
|
6030
6030
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
6031
6031
|
* window to float samples (D455).
|
|
@@ -9492,7 +9492,7 @@ var ProfileRtspEntrySchema = object({
|
|
|
9492
9492
|
/**
|
|
9493
9493
|
* The model weight formats a catalog entry can ship. Schema-free on purpose:
|
|
9494
9494
|
* `types/models.ts` builds Zod schemas from it, but a runner-closure consumer
|
|
9495
|
-
* (the model downloader in `@camstack/system`) needs only the list and must
|
|
9495
|
+
* (the model downloader in `@camstack/server/system`) needs only the list and must
|
|
9496
9496
|
* reach it through `@camstack/types/addon` without building the cap schema
|
|
9497
9497
|
* graph (D28).
|
|
9498
9498
|
*/
|
|
@@ -12867,6 +12867,71 @@ var EventOwnerTypeSchema = _enum(EVENT_OWNER_TYPES);
|
|
|
12867
12867
|
var MediaPresenceOwnerKindSchema = _enum([...EVENT_OWNER_TYPES, "track"]);
|
|
12868
12868
|
new Set(EVENT_OWNER_TYPES);
|
|
12869
12869
|
/**
|
|
12870
|
+
* What a published package needs from the rest of the install (D989).
|
|
12871
|
+
*
|
|
12872
|
+
* One published framework package (`@camstack/server`) carries the kernel, the
|
|
12873
|
+
* builtins and the capability contracts, so "which addon runs on which
|
|
12874
|
+
* framework" is a question of version, and the answer is DECLARED by the
|
|
12875
|
+
* package that knows it:
|
|
12876
|
+
*
|
|
12877
|
+
* - an addon says the oldest server it runs on (`requires.server: ">=X"`);
|
|
12878
|
+
* - the server says the oldest addon it works with
|
|
12879
|
+
* (`requires.addons: { "@camstack/addon-x": ">=Y" }`) and the oldest shell
|
|
12880
|
+
* around it (`requires.wrapper: { desktop, image }`);
|
|
12881
|
+
* - a wrapper (the desktop app, the container starter) says which server
|
|
12882
|
+
* range it can host, and reports its own kind and version.
|
|
12883
|
+
*
|
|
12884
|
+
* The publish workflow STAMPS these after the version bump
|
|
12885
|
+
* (`scripts/ci/stamp-requires.mjs`); nobody types a number by hand.
|
|
12886
|
+
*
|
|
12887
|
+
* A requirement that cannot be checked is NOT met: a shell that reports no
|
|
12888
|
+
* version counts as below the minimum, and an unreadable running version is
|
|
12889
|
+
* named in the result (a failed read is never a pass).
|
|
12890
|
+
*/
|
|
12891
|
+
/** `>=MAJOR.MINOR.PATCH[-prerelease]` — the only range shape a requirement uses. */
|
|
12892
|
+
var MinVersionSchema = string().regex(/^>=\d+\.\d+\.\d+(-[0-9A-Za-z.-]+)?$/, "a minimum is written \">=X.Y.Z\"");
|
|
12893
|
+
object({
|
|
12894
|
+
/** The oldest `@camstack/server` this package runs on. */
|
|
12895
|
+
server: MinVersionSchema.optional(),
|
|
12896
|
+
/** The oldest installed version of each named addon package. */
|
|
12897
|
+
addons: record(string(), MinVersionSchema).optional(),
|
|
12898
|
+
/** The oldest shell around the server, per shell kind. */
|
|
12899
|
+
wrapper: object({
|
|
12900
|
+
desktop: MinVersionSchema.optional(),
|
|
12901
|
+
image: MinVersionSchema.optional()
|
|
12902
|
+
}).optional()
|
|
12903
|
+
});
|
|
12904
|
+
/** One unmet requirement; each names the versions on both sides. */
|
|
12905
|
+
var UnmetRequirementSchema = discriminatedUnion("kind", [
|
|
12906
|
+
object({
|
|
12907
|
+
kind: literal("server-too-old"),
|
|
12908
|
+
required: string(),
|
|
12909
|
+
/** `null` — the running server version could not be read. */
|
|
12910
|
+
running: string().nullable()
|
|
12911
|
+
}),
|
|
12912
|
+
object({
|
|
12913
|
+
kind: literal("addon-too-old"),
|
|
12914
|
+
packageName: string(),
|
|
12915
|
+
required: string(),
|
|
12916
|
+
/** `null` — the addon is not installed (or its version is unreadable). */
|
|
12917
|
+
running: string().nullable()
|
|
12918
|
+
}),
|
|
12919
|
+
object({
|
|
12920
|
+
kind: literal("wrapper-too-old"),
|
|
12921
|
+
wrapper: _enum(["desktop", "image"]),
|
|
12922
|
+
required: string(),
|
|
12923
|
+
/** `null` — the wrapper reported no version. */
|
|
12924
|
+
running: string().nullable()
|
|
12925
|
+
})
|
|
12926
|
+
]);
|
|
12927
|
+
var RequiredAddonUpdateSchema = object({
|
|
12928
|
+
packageName: string(),
|
|
12929
|
+
/** The minimum the target server declares. */
|
|
12930
|
+
required: string(),
|
|
12931
|
+
/** What this node has; `null` when the addon is not installed. */
|
|
12932
|
+
installed: string().nullable()
|
|
12933
|
+
});
|
|
12934
|
+
/**
|
|
12870
12935
|
* Which integration instance a settings form is for. An addon that serves several instances
|
|
12871
12936
|
* (`instanceMode: multiple`) can show a different form per instance — an NVR integration
|
|
12872
12937
|
* needs its connection, the default integration needs the addon's own sections.
|
|
@@ -43421,7 +43486,7 @@ var notificationOutputCapability = {
|
|
|
43421
43486
|
* rebuilds without manual reload.
|
|
43422
43487
|
*
|
|
43423
43488
|
* The hub-local builtin `addon-pages-aggregator` (see
|
|
43424
|
-
* `@camstack/system/builtins/addon-pages-aggregator`) registers the
|
|
43489
|
+
* `@camstack/server/system/builtins/addon-pages-aggregator`) registers the
|
|
43425
43490
|
* provider. Splitting the public aggregator from the raw collection
|
|
43426
43491
|
* keeps both ends in codegen — there's no hand-written
|
|
43427
43492
|
* `addon-pages.router.ts` wrapper anymore.
|
|
@@ -43511,7 +43576,7 @@ var addonRoutesCapability = {
|
|
|
43511
43576
|
*/
|
|
43512
43577
|
invoke: method(InvokeRequestSchema, InvokeReplyEnvelopeSchema, { kind: "mutation" })
|
|
43513
43578
|
},
|
|
43514
|
-
/** BIG PLAN 2: declarative mount hint — read by `@camstack/system` `buildCapRouters`. */
|
|
43579
|
+
/** BIG PLAN 2: declarative mount hint — read by `@camstack/server/system` `buildCapRouters`. */
|
|
43515
43580
|
mount: { kind: "skip" }
|
|
43516
43581
|
};
|
|
43517
43582
|
var ConfigTabDeclarationSchema = object({
|
|
@@ -43740,7 +43805,7 @@ method(_void(), array(WidgetMetadataSchema).readonly(), { auth: "admin" });
|
|
|
43740
43805
|
* manual reload — same scheme used by `addon-pages`.
|
|
43741
43806
|
*
|
|
43742
43807
|
* The hub-local builtin `addon-widgets-aggregator` (see
|
|
43743
|
-
* `@camstack/system/builtins/addon-widgets-aggregator`) registers the
|
|
43808
|
+
* `@camstack/server/system/builtins/addon-widgets-aggregator`) registers the
|
|
43744
43809
|
* provider. Splitting the public aggregator from the raw collection
|
|
43745
43810
|
* keeps both ends in codegen — there's no hand-written wrapper.
|
|
43746
43811
|
*/
|
|
@@ -61876,7 +61941,18 @@ var ServerUpdateActionResultSchema = object({
|
|
|
61876
61941
|
* store (D877), present when the pre-flight refused the update
|
|
61877
61942
|
* (`reason: 'addon-would-refuse'`). Optional for version skew.
|
|
61878
61943
|
*/
|
|
61879
|
-
blockers: array(UpdateBlockerSchema).optional()
|
|
61944
|
+
blockers: array(UpdateBlockerSchema).optional(),
|
|
61945
|
+
/**
|
|
61946
|
+
* The minimums the target server declares and this node does not meet
|
|
61947
|
+
* (D989), present when the update was refused with
|
|
61948
|
+
* `reason: 'requirements-unmet'`. Each names the versions on both sides.
|
|
61949
|
+
*/
|
|
61950
|
+
unmet: array(UnmetRequirementSchema).optional(),
|
|
61951
|
+
/**
|
|
61952
|
+
* The addons this node has below the minimum the staged server declares —
|
|
61953
|
+
* the ones to update WITH the server. Present on an accepted update.
|
|
61954
|
+
*/
|
|
61955
|
+
requiredAddonUpdates: array(RequiredAddonUpdateSchema).optional()
|
|
61880
61956
|
});
|
|
61881
61957
|
var LaunchOverridesSchema = object({
|
|
61882
61958
|
/** The persisted heap ceiling in MB, or `null` when none is set. */
|
|
@@ -64420,7 +64496,9 @@ var PackageUpdateSchema = object({
|
|
|
64420
64496
|
latestVersion: string(),
|
|
64421
64497
|
category: _enum(["addon", "core"]),
|
|
64422
64498
|
requiresRestart: boolean(),
|
|
64423
|
-
isSystem: boolean()
|
|
64499
|
+
isSystem: boolean(),
|
|
64500
|
+
/** Held: what the newer version needs and this node does not meet (D989). */
|
|
64501
|
+
blockedBy: array(UnmetRequirementSchema).readonly().optional()
|
|
64424
64502
|
});
|
|
64425
64503
|
var PackageVersionInfoSchema = object({
|
|
64426
64504
|
version: string(),
|
|
@@ -69720,7 +69798,7 @@ var lawnMowerControlCapability = {
|
|
|
69720
69798
|
* clients — they reverse-connect to the hub. Exposing their interfaces
|
|
69721
69799
|
* via the same surface would leak internal topology with no upside.
|
|
69722
69800
|
*
|
|
69723
|
-
* Implementation in `@camstack/system/builtins/local-network/`.
|
|
69801
|
+
* Implementation in `@camstack/server/system/builtins/local-network/`.
|
|
69724
69802
|
*/
|
|
69725
69803
|
/** Coarse classification derived from the interface name + IP range. */
|
|
69726
69804
|
var InterfaceKindEnum = _enum([
|
|
@@ -71608,7 +71686,7 @@ onStatusChanged: { data: object({
|
|
|
71608
71686
|
* jitter, and observed/peak bandwidth per device + per client.
|
|
71609
71687
|
*
|
|
71610
71688
|
* Implementation lives in the server's `NetworkQualityService` (thin
|
|
71611
|
-
* wrapper over the shared `NetworkQualityTracker` from `@camstack/system`).
|
|
71689
|
+
* wrapper over the shared `NetworkQualityTracker` from `@camstack/server/system`).
|
|
71612
71690
|
* The provider is registered from `trpc.router.ts` against the existing
|
|
71613
71691
|
* service instance — no addon owns this state.
|
|
71614
71692
|
*
|
|
@@ -73759,7 +73837,7 @@ var ptzAutotrackCapability = {
|
|
|
73759
73837
|
* - **Native**: the camera's own firmware autotrack, registered per device by
|
|
73760
73838
|
* the driver when the probe says it exists (Reolink: yes; Hikvision:
|
|
73761
73839
|
* model-dependent).
|
|
73762
|
-
* - **Wrapper**: the emulated implementation (`@camstack/system`'s `autotrack` builtin),
|
|
73840
|
+
* - **Wrapper**: the emulated implementation (`@camstack/server/system`'s `autotrack` builtin),
|
|
73763
73841
|
* which follows a subject with `ptz.move` pulses driven by the detection
|
|
73764
73842
|
* pipeline. `defaultActive: false` — the operator binds it per camera in
|
|
73765
73843
|
* the bindings UI.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@camstack/addon-import-alexa",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.174",
|
|
4
4
|
"description": "Alexa device-import provider for CamStack — imports the smart-home devices in a user's Alexa account via the unofficial alexa-remote2 cookie/token client (the inverse of the Alexa exporter)",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"camstack",
|
|
@@ -66,7 +66,10 @@
|
|
|
66
66
|
"requirements": "./python/requirements.txt"
|
|
67
67
|
}
|
|
68
68
|
}
|
|
69
|
-
]
|
|
69
|
+
],
|
|
70
|
+
"requires": {
|
|
71
|
+
"server": ">=1.2.719"
|
|
72
|
+
}
|
|
70
73
|
},
|
|
71
74
|
"files": [
|
|
72
75
|
"dist",
|