@camstack/addon-provider-wyze 0.2.56 → 0.2.59
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 +82 -7
- package/dist/addon.mjs +82 -7
- package/package.json +1 -1
package/dist/addon.js
CHANGED
|
@@ -7750,7 +7750,8 @@ var OpsLogReasonSchema = _enum([
|
|
|
7750
7750
|
"quota",
|
|
7751
7751
|
"manual",
|
|
7752
7752
|
"operator",
|
|
7753
|
-
"maintenance"
|
|
7753
|
+
"maintenance",
|
|
7754
|
+
"orphaned-device"
|
|
7754
7755
|
]);
|
|
7755
7756
|
/** One audit row, shared verbatim by both domains. */
|
|
7756
7757
|
var OpsLogEntrySchema = object({
|
|
@@ -13062,10 +13063,39 @@ var DevicePersistConfigPayloadSchema = object({
|
|
|
13062
13063
|
deviceId: number(),
|
|
13063
13064
|
data: record(string(), unknown())
|
|
13064
13065
|
});
|
|
13066
|
+
/** What a migration actually did, per switch. `unreachable` is a first-class
|
|
13067
|
+
* answer: a camera that could not be asked is not a camera that was silenced. */
|
|
13068
|
+
var MigrateSwitchOutcomeSchema = _enum([
|
|
13069
|
+
"off",
|
|
13070
|
+
"on",
|
|
13071
|
+
"not-offered",
|
|
13072
|
+
"unreachable"
|
|
13073
|
+
]);
|
|
13074
|
+
var MigrateSwitchReportSchema = object({
|
|
13075
|
+
deviceId: number(),
|
|
13076
|
+
switchId: CameraSwitchIdSchema,
|
|
13077
|
+
outcome: MigrateSwitchOutcomeSchema,
|
|
13078
|
+
detail: string().optional()
|
|
13079
|
+
});
|
|
13080
|
+
var MigrateDeviceResultSchema = object({
|
|
13081
|
+
sourceId: number(),
|
|
13082
|
+
targetId: number(),
|
|
13083
|
+
switches: array(MigrateSwitchReportSchema).readonly(),
|
|
13084
|
+
/** Switches that could NOT be turned off on the source. Empty is the only
|
|
13085
|
+
* value meaning the replaced hardware is quiet. */
|
|
13086
|
+
sourceStillLive: array(CameraSwitchIdSchema).readonly(),
|
|
13087
|
+
swapped: boolean()
|
|
13088
|
+
});
|
|
13065
13089
|
method(object({
|
|
13066
13090
|
addonId: string(),
|
|
13067
13091
|
stableId: string()
|
|
13068
|
-
}), object({ id: number() }), { kind: "mutation" }), method(
|
|
13092
|
+
}), object({ id: number() }), { kind: "mutation" }), method(object({
|
|
13093
|
+
sourceId: number(),
|
|
13094
|
+
targetId: number()
|
|
13095
|
+
}), MigrateDeviceResultSchema, {
|
|
13096
|
+
kind: "mutation",
|
|
13097
|
+
auth: "admin"
|
|
13098
|
+
}), method(DeviceRegisterPayloadSchema, _void(), { kind: "mutation" }), method(DeviceRemovePayloadSchema, _void(), { kind: "mutation" }), method(DevicePersistConfigPayloadSchema, _void(), { kind: "mutation" }), method(object({ deviceId: number() }), record(string(), unknown())), method(object({ deviceId: number() }), record(string(), unknown())), method(object({ deviceId: number() }), DeviceMetaSchema.nullable()), method(object({
|
|
13069
13099
|
deviceId: number(),
|
|
13070
13100
|
name: string()
|
|
13071
13101
|
}), _void(), {
|
|
@@ -13540,6 +13570,35 @@ method(_void(), array(string()).readonly(), { auth: "admin" }), method(object({
|
|
|
13540
13570
|
auth: "admin"
|
|
13541
13571
|
});
|
|
13542
13572
|
/**
|
|
13573
|
+
* Transport bounds for AI capability methods.
|
|
13574
|
+
*
|
|
13575
|
+
* Its own module because `llm.cap.ts` and `llm-runtime.cap.ts` already import
|
|
13576
|
+
* each other: declaring the constant in either one hands the other `undefined`
|
|
13577
|
+
* at module-init time, and an undefined `timeoutMs` silently falls back to the
|
|
13578
|
+
* kernel's 60 s default — the exact failure this constant exists to prevent,
|
|
13579
|
+
* reintroduced invisibly. Found by the guard, not by review.
|
|
13580
|
+
*/
|
|
13581
|
+
/**
|
|
13582
|
+
* Ceiling for a cap method that runs inference or loads a model.
|
|
13583
|
+
*
|
|
13584
|
+
* Deliberately far above anything the AI layer itself may wait for (a summary
|
|
13585
|
+
* asks 180 s by default, a rule may ask 600 s), because the TRANSPORT must
|
|
13586
|
+
* never be the layer that gives up first: when it does, the failure is
|
|
13587
|
+
* reported as a transport error for a model that was still thinking, naming
|
|
13588
|
+
* the wrong layer and hiding the real one.
|
|
13589
|
+
*
|
|
13590
|
+
* Measured 2026-09-03: a 6-image vision request needs 44.8 s warm and ~20 s
|
|
13591
|
+
* more on a cold model load. With no declaration every digest failed at
|
|
13592
|
+
* exactly 60 s and shipped without its text.
|
|
13593
|
+
*
|
|
13594
|
+
* A ceiling, not a budget. The AI layer's own timeouts (the rule's `timeoutMs`,
|
|
13595
|
+
* the profile's `timeoutMs` / `firstTokenTimeoutMs`) remain the things that
|
|
13596
|
+
* decide when to stop, because only they can say WHY.
|
|
13597
|
+
*/
|
|
13598
|
+
var AI_CAP_TRANSPORT_TIMEOUT_MS = 6e5;
|
|
13599
|
+
/** A multi-gigabyte download. An hour is not generous, it is honest. */
|
|
13600
|
+
var AI_MODEL_INSTALL_TIMEOUT_MS = 60 * 6e4;
|
|
13601
|
+
/**
|
|
13543
13602
|
* Shared LLM generate contracts — imported by BOTH `llm.cap.ts` (consumer
|
|
13544
13603
|
* surface) and `llm-runtime.cap.ts` (node-side managed executor) so the two
|
|
13545
13604
|
* caps stay wire-compatible without a circular cap→cap import.
|
|
@@ -13811,16 +13870,19 @@ method(LlmGenerateBaseInputSchema.extend({
|
|
|
13811
13870
|
timeoutMs: number().int().positive().optional()
|
|
13812
13871
|
}), LlmGenerateResultSchema, {
|
|
13813
13872
|
kind: "mutation",
|
|
13814
|
-
auth: "admin"
|
|
13873
|
+
auth: "admin",
|
|
13874
|
+
timeoutMs: AI_CAP_TRANSPORT_TIMEOUT_MS
|
|
13815
13875
|
}), method(object({ runtime: ManagedRuntimeConfigSchema }), LlmRuntimeStatusSchema, {
|
|
13816
13876
|
kind: "mutation",
|
|
13817
|
-
auth: "admin"
|
|
13877
|
+
auth: "admin",
|
|
13878
|
+
timeoutMs: AI_CAP_TRANSPORT_TIMEOUT_MS
|
|
13818
13879
|
}), method(object({}), _void(), {
|
|
13819
13880
|
kind: "mutation",
|
|
13820
13881
|
auth: "admin"
|
|
13821
13882
|
}), method(object({}), LlmRuntimeStatusSchema, { auth: "admin" }), method(object({ model: ManagedModelRefSchema }), _void(), {
|
|
13822
13883
|
kind: "mutation",
|
|
13823
|
-
auth: "admin"
|
|
13884
|
+
auth: "admin",
|
|
13885
|
+
timeoutMs: AI_MODEL_INSTALL_TIMEOUT_MS
|
|
13824
13886
|
}), method(object({ file: string() }), _void(), {
|
|
13825
13887
|
kind: "mutation",
|
|
13826
13888
|
auth: "admin"
|
|
@@ -13988,7 +14050,13 @@ var ProfileRefInputSchema = object({
|
|
|
13988
14050
|
addonId: string(),
|
|
13989
14051
|
profileId: string()
|
|
13990
14052
|
});
|
|
13991
|
-
method(LlmGenerateBaseInputSchema, LlmGenerateResultSchema, {
|
|
14053
|
+
method(LlmGenerateBaseInputSchema, LlmGenerateResultSchema, {
|
|
14054
|
+
kind: "mutation",
|
|
14055
|
+
timeoutMs: AI_CAP_TRANSPORT_TIMEOUT_MS
|
|
14056
|
+
}), method(GenerateVisionInputSchema, LlmGenerateResultSchema, {
|
|
14057
|
+
kind: "mutation",
|
|
14058
|
+
timeoutMs: AI_CAP_TRANSPORT_TIMEOUT_MS
|
|
14059
|
+
}), method(object({
|
|
13992
14060
|
addonId: string().optional(),
|
|
13993
14061
|
requestId: string()
|
|
13994
14062
|
}), _void(), { kind: "mutation" }), method(object({}), array(LlmProfileKindDescriptorSchema)), method(object({}), array(LlmProfileSchema)), method(object({ profile: LlmProfileSchema }), LlmProfileSchema, {
|
|
@@ -13999,7 +14067,8 @@ method(LlmGenerateBaseInputSchema, LlmGenerateResultSchema, { kind: "mutation" }
|
|
|
13999
14067
|
auth: "admin"
|
|
14000
14068
|
}), method(ProfileRefInputSchema, LlmGenerateResultSchema, {
|
|
14001
14069
|
kind: "mutation",
|
|
14002
|
-
auth: "admin"
|
|
14070
|
+
auth: "admin",
|
|
14071
|
+
timeoutMs: AI_CAP_TRANSPORT_TIMEOUT_MS
|
|
14003
14072
|
}), method(ProfileRefInputSchema, array(string())), method(object({}), array(LlmDefaultSchema)), method(object({
|
|
14004
14073
|
selector: LlmDefaultSelectorSchema,
|
|
14005
14074
|
profileId: string().nullable()
|
|
@@ -34172,6 +34241,12 @@ Object.freeze({
|
|
|
34172
34241
|
addonId: null,
|
|
34173
34242
|
access: "view"
|
|
34174
34243
|
},
|
|
34244
|
+
"deviceManager.migrateDevice": {
|
|
34245
|
+
capName: "device-manager",
|
|
34246
|
+
capScope: "system",
|
|
34247
|
+
addonId: null,
|
|
34248
|
+
access: "create"
|
|
34249
|
+
},
|
|
34175
34250
|
"deviceManager.persistConfig": {
|
|
34176
34251
|
capName: "device-manager",
|
|
34177
34252
|
capScope: "system",
|
package/dist/addon.mjs
CHANGED
|
@@ -7729,7 +7729,8 @@ var OpsLogReasonSchema = _enum([
|
|
|
7729
7729
|
"quota",
|
|
7730
7730
|
"manual",
|
|
7731
7731
|
"operator",
|
|
7732
|
-
"maintenance"
|
|
7732
|
+
"maintenance",
|
|
7733
|
+
"orphaned-device"
|
|
7733
7734
|
]);
|
|
7734
7735
|
/** One audit row, shared verbatim by both domains. */
|
|
7735
7736
|
var OpsLogEntrySchema = object({
|
|
@@ -13041,10 +13042,39 @@ var DevicePersistConfigPayloadSchema = object({
|
|
|
13041
13042
|
deviceId: number(),
|
|
13042
13043
|
data: record(string(), unknown())
|
|
13043
13044
|
});
|
|
13045
|
+
/** What a migration actually did, per switch. `unreachable` is a first-class
|
|
13046
|
+
* answer: a camera that could not be asked is not a camera that was silenced. */
|
|
13047
|
+
var MigrateSwitchOutcomeSchema = _enum([
|
|
13048
|
+
"off",
|
|
13049
|
+
"on",
|
|
13050
|
+
"not-offered",
|
|
13051
|
+
"unreachable"
|
|
13052
|
+
]);
|
|
13053
|
+
var MigrateSwitchReportSchema = object({
|
|
13054
|
+
deviceId: number(),
|
|
13055
|
+
switchId: CameraSwitchIdSchema,
|
|
13056
|
+
outcome: MigrateSwitchOutcomeSchema,
|
|
13057
|
+
detail: string().optional()
|
|
13058
|
+
});
|
|
13059
|
+
var MigrateDeviceResultSchema = object({
|
|
13060
|
+
sourceId: number(),
|
|
13061
|
+
targetId: number(),
|
|
13062
|
+
switches: array(MigrateSwitchReportSchema).readonly(),
|
|
13063
|
+
/** Switches that could NOT be turned off on the source. Empty is the only
|
|
13064
|
+
* value meaning the replaced hardware is quiet. */
|
|
13065
|
+
sourceStillLive: array(CameraSwitchIdSchema).readonly(),
|
|
13066
|
+
swapped: boolean()
|
|
13067
|
+
});
|
|
13044
13068
|
method(object({
|
|
13045
13069
|
addonId: string(),
|
|
13046
13070
|
stableId: string()
|
|
13047
|
-
}), object({ id: number() }), { kind: "mutation" }), method(
|
|
13071
|
+
}), object({ id: number() }), { kind: "mutation" }), method(object({
|
|
13072
|
+
sourceId: number(),
|
|
13073
|
+
targetId: number()
|
|
13074
|
+
}), MigrateDeviceResultSchema, {
|
|
13075
|
+
kind: "mutation",
|
|
13076
|
+
auth: "admin"
|
|
13077
|
+
}), method(DeviceRegisterPayloadSchema, _void(), { kind: "mutation" }), method(DeviceRemovePayloadSchema, _void(), { kind: "mutation" }), method(DevicePersistConfigPayloadSchema, _void(), { kind: "mutation" }), method(object({ deviceId: number() }), record(string(), unknown())), method(object({ deviceId: number() }), record(string(), unknown())), method(object({ deviceId: number() }), DeviceMetaSchema.nullable()), method(object({
|
|
13048
13078
|
deviceId: number(),
|
|
13049
13079
|
name: string()
|
|
13050
13080
|
}), _void(), {
|
|
@@ -13519,6 +13549,35 @@ method(_void(), array(string()).readonly(), { auth: "admin" }), method(object({
|
|
|
13519
13549
|
auth: "admin"
|
|
13520
13550
|
});
|
|
13521
13551
|
/**
|
|
13552
|
+
* Transport bounds for AI capability methods.
|
|
13553
|
+
*
|
|
13554
|
+
* Its own module because `llm.cap.ts` and `llm-runtime.cap.ts` already import
|
|
13555
|
+
* each other: declaring the constant in either one hands the other `undefined`
|
|
13556
|
+
* at module-init time, and an undefined `timeoutMs` silently falls back to the
|
|
13557
|
+
* kernel's 60 s default — the exact failure this constant exists to prevent,
|
|
13558
|
+
* reintroduced invisibly. Found by the guard, not by review.
|
|
13559
|
+
*/
|
|
13560
|
+
/**
|
|
13561
|
+
* Ceiling for a cap method that runs inference or loads a model.
|
|
13562
|
+
*
|
|
13563
|
+
* Deliberately far above anything the AI layer itself may wait for (a summary
|
|
13564
|
+
* asks 180 s by default, a rule may ask 600 s), because the TRANSPORT must
|
|
13565
|
+
* never be the layer that gives up first: when it does, the failure is
|
|
13566
|
+
* reported as a transport error for a model that was still thinking, naming
|
|
13567
|
+
* the wrong layer and hiding the real one.
|
|
13568
|
+
*
|
|
13569
|
+
* Measured 2026-09-03: a 6-image vision request needs 44.8 s warm and ~20 s
|
|
13570
|
+
* more on a cold model load. With no declaration every digest failed at
|
|
13571
|
+
* exactly 60 s and shipped without its text.
|
|
13572
|
+
*
|
|
13573
|
+
* A ceiling, not a budget. The AI layer's own timeouts (the rule's `timeoutMs`,
|
|
13574
|
+
* the profile's `timeoutMs` / `firstTokenTimeoutMs`) remain the things that
|
|
13575
|
+
* decide when to stop, because only they can say WHY.
|
|
13576
|
+
*/
|
|
13577
|
+
var AI_CAP_TRANSPORT_TIMEOUT_MS = 6e5;
|
|
13578
|
+
/** A multi-gigabyte download. An hour is not generous, it is honest. */
|
|
13579
|
+
var AI_MODEL_INSTALL_TIMEOUT_MS = 60 * 6e4;
|
|
13580
|
+
/**
|
|
13522
13581
|
* Shared LLM generate contracts — imported by BOTH `llm.cap.ts` (consumer
|
|
13523
13582
|
* surface) and `llm-runtime.cap.ts` (node-side managed executor) so the two
|
|
13524
13583
|
* caps stay wire-compatible without a circular cap→cap import.
|
|
@@ -13790,16 +13849,19 @@ method(LlmGenerateBaseInputSchema.extend({
|
|
|
13790
13849
|
timeoutMs: number().int().positive().optional()
|
|
13791
13850
|
}), LlmGenerateResultSchema, {
|
|
13792
13851
|
kind: "mutation",
|
|
13793
|
-
auth: "admin"
|
|
13852
|
+
auth: "admin",
|
|
13853
|
+
timeoutMs: AI_CAP_TRANSPORT_TIMEOUT_MS
|
|
13794
13854
|
}), method(object({ runtime: ManagedRuntimeConfigSchema }), LlmRuntimeStatusSchema, {
|
|
13795
13855
|
kind: "mutation",
|
|
13796
|
-
auth: "admin"
|
|
13856
|
+
auth: "admin",
|
|
13857
|
+
timeoutMs: AI_CAP_TRANSPORT_TIMEOUT_MS
|
|
13797
13858
|
}), method(object({}), _void(), {
|
|
13798
13859
|
kind: "mutation",
|
|
13799
13860
|
auth: "admin"
|
|
13800
13861
|
}), method(object({}), LlmRuntimeStatusSchema, { auth: "admin" }), method(object({ model: ManagedModelRefSchema }), _void(), {
|
|
13801
13862
|
kind: "mutation",
|
|
13802
|
-
auth: "admin"
|
|
13863
|
+
auth: "admin",
|
|
13864
|
+
timeoutMs: AI_MODEL_INSTALL_TIMEOUT_MS
|
|
13803
13865
|
}), method(object({ file: string() }), _void(), {
|
|
13804
13866
|
kind: "mutation",
|
|
13805
13867
|
auth: "admin"
|
|
@@ -13967,7 +14029,13 @@ var ProfileRefInputSchema = object({
|
|
|
13967
14029
|
addonId: string(),
|
|
13968
14030
|
profileId: string()
|
|
13969
14031
|
});
|
|
13970
|
-
method(LlmGenerateBaseInputSchema, LlmGenerateResultSchema, {
|
|
14032
|
+
method(LlmGenerateBaseInputSchema, LlmGenerateResultSchema, {
|
|
14033
|
+
kind: "mutation",
|
|
14034
|
+
timeoutMs: AI_CAP_TRANSPORT_TIMEOUT_MS
|
|
14035
|
+
}), method(GenerateVisionInputSchema, LlmGenerateResultSchema, {
|
|
14036
|
+
kind: "mutation",
|
|
14037
|
+
timeoutMs: AI_CAP_TRANSPORT_TIMEOUT_MS
|
|
14038
|
+
}), method(object({
|
|
13971
14039
|
addonId: string().optional(),
|
|
13972
14040
|
requestId: string()
|
|
13973
14041
|
}), _void(), { kind: "mutation" }), method(object({}), array(LlmProfileKindDescriptorSchema)), method(object({}), array(LlmProfileSchema)), method(object({ profile: LlmProfileSchema }), LlmProfileSchema, {
|
|
@@ -13978,7 +14046,8 @@ method(LlmGenerateBaseInputSchema, LlmGenerateResultSchema, { kind: "mutation" }
|
|
|
13978
14046
|
auth: "admin"
|
|
13979
14047
|
}), method(ProfileRefInputSchema, LlmGenerateResultSchema, {
|
|
13980
14048
|
kind: "mutation",
|
|
13981
|
-
auth: "admin"
|
|
14049
|
+
auth: "admin",
|
|
14050
|
+
timeoutMs: AI_CAP_TRANSPORT_TIMEOUT_MS
|
|
13982
14051
|
}), method(ProfileRefInputSchema, array(string())), method(object({}), array(LlmDefaultSchema)), method(object({
|
|
13983
14052
|
selector: LlmDefaultSelectorSchema,
|
|
13984
14053
|
profileId: string().nullable()
|
|
@@ -34151,6 +34220,12 @@ Object.freeze({
|
|
|
34151
34220
|
addonId: null,
|
|
34152
34221
|
access: "view"
|
|
34153
34222
|
},
|
|
34223
|
+
"deviceManager.migrateDevice": {
|
|
34224
|
+
capName: "device-manager",
|
|
34225
|
+
capScope: "system",
|
|
34226
|
+
addonId: null,
|
|
34227
|
+
access: "create"
|
|
34228
|
+
},
|
|
34154
34229
|
"deviceManager.persistConfig": {
|
|
34155
34230
|
capName: "device-manager",
|
|
34156
34231
|
capScope: "system",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@camstack/addon-provider-wyze",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.59",
|
|
4
4
|
"description": "Wyze camera device-provider addon for CamStack — wraps the @apocaliss92/wyze-bridge-js P2P/DTLS client, feeding the stream-broker via the pull-rfc4571 lazy-publish path (a structural twin of addon-provider-reolink)",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"camstack",
|