@camstack/addon-provider-rtsp 1.2.52 → 1.2.55
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
|
@@ -7774,7 +7774,8 @@ var OpsLogReasonSchema = _enum([
|
|
|
7774
7774
|
"quota",
|
|
7775
7775
|
"manual",
|
|
7776
7776
|
"operator",
|
|
7777
|
-
"maintenance"
|
|
7777
|
+
"maintenance",
|
|
7778
|
+
"orphaned-device"
|
|
7778
7779
|
]);
|
|
7779
7780
|
/** One audit row, shared verbatim by both domains. */
|
|
7780
7781
|
var OpsLogEntrySchema = object({
|
|
@@ -13069,10 +13070,39 @@ var DevicePersistConfigPayloadSchema = object({
|
|
|
13069
13070
|
deviceId: number(),
|
|
13070
13071
|
data: record(string(), unknown())
|
|
13071
13072
|
});
|
|
13073
|
+
/** What a migration actually did, per switch. `unreachable` is a first-class
|
|
13074
|
+
* answer: a camera that could not be asked is not a camera that was silenced. */
|
|
13075
|
+
var MigrateSwitchOutcomeSchema = _enum([
|
|
13076
|
+
"off",
|
|
13077
|
+
"on",
|
|
13078
|
+
"not-offered",
|
|
13079
|
+
"unreachable"
|
|
13080
|
+
]);
|
|
13081
|
+
var MigrateSwitchReportSchema = object({
|
|
13082
|
+
deviceId: number(),
|
|
13083
|
+
switchId: CameraSwitchIdSchema,
|
|
13084
|
+
outcome: MigrateSwitchOutcomeSchema,
|
|
13085
|
+
detail: string().optional()
|
|
13086
|
+
});
|
|
13087
|
+
var MigrateDeviceResultSchema = object({
|
|
13088
|
+
sourceId: number(),
|
|
13089
|
+
targetId: number(),
|
|
13090
|
+
switches: array(MigrateSwitchReportSchema).readonly(),
|
|
13091
|
+
/** Switches that could NOT be turned off on the source. Empty is the only
|
|
13092
|
+
* value meaning the replaced hardware is quiet. */
|
|
13093
|
+
sourceStillLive: array(CameraSwitchIdSchema).readonly(),
|
|
13094
|
+
swapped: boolean()
|
|
13095
|
+
});
|
|
13072
13096
|
method(object({
|
|
13073
13097
|
addonId: string(),
|
|
13074
13098
|
stableId: string()
|
|
13075
|
-
}), object({ id: number() }), { kind: "mutation" }), method(
|
|
13099
|
+
}), object({ id: number() }), { kind: "mutation" }), method(object({
|
|
13100
|
+
sourceId: number(),
|
|
13101
|
+
targetId: number()
|
|
13102
|
+
}), MigrateDeviceResultSchema, {
|
|
13103
|
+
kind: "mutation",
|
|
13104
|
+
auth: "admin"
|
|
13105
|
+
}), 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({
|
|
13076
13106
|
deviceId: number(),
|
|
13077
13107
|
name: string()
|
|
13078
13108
|
}), _void(), {
|
|
@@ -13547,6 +13577,35 @@ method(_void(), array(string()).readonly(), { auth: "admin" }), method(object({
|
|
|
13547
13577
|
auth: "admin"
|
|
13548
13578
|
});
|
|
13549
13579
|
/**
|
|
13580
|
+
* Transport bounds for AI capability methods.
|
|
13581
|
+
*
|
|
13582
|
+
* Its own module because `llm.cap.ts` and `llm-runtime.cap.ts` already import
|
|
13583
|
+
* each other: declaring the constant in either one hands the other `undefined`
|
|
13584
|
+
* at module-init time, and an undefined `timeoutMs` silently falls back to the
|
|
13585
|
+
* kernel's 60 s default — the exact failure this constant exists to prevent,
|
|
13586
|
+
* reintroduced invisibly. Found by the guard, not by review.
|
|
13587
|
+
*/
|
|
13588
|
+
/**
|
|
13589
|
+
* Ceiling for a cap method that runs inference or loads a model.
|
|
13590
|
+
*
|
|
13591
|
+
* Deliberately far above anything the AI layer itself may wait for (a summary
|
|
13592
|
+
* asks 180 s by default, a rule may ask 600 s), because the TRANSPORT must
|
|
13593
|
+
* never be the layer that gives up first: when it does, the failure is
|
|
13594
|
+
* reported as a transport error for a model that was still thinking, naming
|
|
13595
|
+
* the wrong layer and hiding the real one.
|
|
13596
|
+
*
|
|
13597
|
+
* Measured 2026-09-03: a 6-image vision request needs 44.8 s warm and ~20 s
|
|
13598
|
+
* more on a cold model load. With no declaration every digest failed at
|
|
13599
|
+
* exactly 60 s and shipped without its text.
|
|
13600
|
+
*
|
|
13601
|
+
* A ceiling, not a budget. The AI layer's own timeouts (the rule's `timeoutMs`,
|
|
13602
|
+
* the profile's `timeoutMs` / `firstTokenTimeoutMs`) remain the things that
|
|
13603
|
+
* decide when to stop, because only they can say WHY.
|
|
13604
|
+
*/
|
|
13605
|
+
var AI_CAP_TRANSPORT_TIMEOUT_MS = 6e5;
|
|
13606
|
+
/** A multi-gigabyte download. An hour is not generous, it is honest. */
|
|
13607
|
+
var AI_MODEL_INSTALL_TIMEOUT_MS = 60 * 6e4;
|
|
13608
|
+
/**
|
|
13550
13609
|
* Shared LLM generate contracts — imported by BOTH `llm.cap.ts` (consumer
|
|
13551
13610
|
* surface) and `llm-runtime.cap.ts` (node-side managed executor) so the two
|
|
13552
13611
|
* caps stay wire-compatible without a circular cap→cap import.
|
|
@@ -13818,16 +13877,19 @@ method(LlmGenerateBaseInputSchema.extend({
|
|
|
13818
13877
|
timeoutMs: number().int().positive().optional()
|
|
13819
13878
|
}), LlmGenerateResultSchema, {
|
|
13820
13879
|
kind: "mutation",
|
|
13821
|
-
auth: "admin"
|
|
13880
|
+
auth: "admin",
|
|
13881
|
+
timeoutMs: AI_CAP_TRANSPORT_TIMEOUT_MS
|
|
13822
13882
|
}), method(object({ runtime: ManagedRuntimeConfigSchema }), LlmRuntimeStatusSchema, {
|
|
13823
13883
|
kind: "mutation",
|
|
13824
|
-
auth: "admin"
|
|
13884
|
+
auth: "admin",
|
|
13885
|
+
timeoutMs: AI_CAP_TRANSPORT_TIMEOUT_MS
|
|
13825
13886
|
}), method(object({}), _void(), {
|
|
13826
13887
|
kind: "mutation",
|
|
13827
13888
|
auth: "admin"
|
|
13828
13889
|
}), method(object({}), LlmRuntimeStatusSchema, { auth: "admin" }), method(object({ model: ManagedModelRefSchema }), _void(), {
|
|
13829
13890
|
kind: "mutation",
|
|
13830
|
-
auth: "admin"
|
|
13891
|
+
auth: "admin",
|
|
13892
|
+
timeoutMs: AI_MODEL_INSTALL_TIMEOUT_MS
|
|
13831
13893
|
}), method(object({ file: string() }), _void(), {
|
|
13832
13894
|
kind: "mutation",
|
|
13833
13895
|
auth: "admin"
|
|
@@ -13995,7 +14057,13 @@ var ProfileRefInputSchema = object({
|
|
|
13995
14057
|
addonId: string(),
|
|
13996
14058
|
profileId: string()
|
|
13997
14059
|
});
|
|
13998
|
-
method(LlmGenerateBaseInputSchema, LlmGenerateResultSchema, {
|
|
14060
|
+
method(LlmGenerateBaseInputSchema, LlmGenerateResultSchema, {
|
|
14061
|
+
kind: "mutation",
|
|
14062
|
+
timeoutMs: AI_CAP_TRANSPORT_TIMEOUT_MS
|
|
14063
|
+
}), method(GenerateVisionInputSchema, LlmGenerateResultSchema, {
|
|
14064
|
+
kind: "mutation",
|
|
14065
|
+
timeoutMs: AI_CAP_TRANSPORT_TIMEOUT_MS
|
|
14066
|
+
}), method(object({
|
|
13999
14067
|
addonId: string().optional(),
|
|
14000
14068
|
requestId: string()
|
|
14001
14069
|
}), _void(), { kind: "mutation" }), method(object({}), array(LlmProfileKindDescriptorSchema)), method(object({}), array(LlmProfileSchema)), method(object({ profile: LlmProfileSchema }), LlmProfileSchema, {
|
|
@@ -14006,7 +14074,8 @@ method(LlmGenerateBaseInputSchema, LlmGenerateResultSchema, { kind: "mutation" }
|
|
|
14006
14074
|
auth: "admin"
|
|
14007
14075
|
}), method(ProfileRefInputSchema, LlmGenerateResultSchema, {
|
|
14008
14076
|
kind: "mutation",
|
|
14009
|
-
auth: "admin"
|
|
14077
|
+
auth: "admin",
|
|
14078
|
+
timeoutMs: AI_CAP_TRANSPORT_TIMEOUT_MS
|
|
14010
14079
|
}), method(ProfileRefInputSchema, array(string())), method(object({}), array(LlmDefaultSchema)), method(object({
|
|
14011
14080
|
selector: LlmDefaultSelectorSchema,
|
|
14012
14081
|
profileId: string().nullable()
|
|
@@ -34245,6 +34314,12 @@ Object.freeze({
|
|
|
34245
34314
|
addonId: null,
|
|
34246
34315
|
access: "view"
|
|
34247
34316
|
},
|
|
34317
|
+
"deviceManager.migrateDevice": {
|
|
34318
|
+
capName: "device-manager",
|
|
34319
|
+
capScope: "system",
|
|
34320
|
+
addonId: null,
|
|
34321
|
+
access: "create"
|
|
34322
|
+
},
|
|
34248
34323
|
"deviceManager.persistConfig": {
|
|
34249
34324
|
capName: "device-manager",
|
|
34250
34325
|
capScope: "system",
|
package/dist/addon.mjs
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({
|
|
@@ -13045,10 +13046,39 @@ var DevicePersistConfigPayloadSchema = object({
|
|
|
13045
13046
|
deviceId: number(),
|
|
13046
13047
|
data: record(string(), unknown())
|
|
13047
13048
|
});
|
|
13049
|
+
/** What a migration actually did, per switch. `unreachable` is a first-class
|
|
13050
|
+
* answer: a camera that could not be asked is not a camera that was silenced. */
|
|
13051
|
+
var MigrateSwitchOutcomeSchema = _enum([
|
|
13052
|
+
"off",
|
|
13053
|
+
"on",
|
|
13054
|
+
"not-offered",
|
|
13055
|
+
"unreachable"
|
|
13056
|
+
]);
|
|
13057
|
+
var MigrateSwitchReportSchema = object({
|
|
13058
|
+
deviceId: number(),
|
|
13059
|
+
switchId: CameraSwitchIdSchema,
|
|
13060
|
+
outcome: MigrateSwitchOutcomeSchema,
|
|
13061
|
+
detail: string().optional()
|
|
13062
|
+
});
|
|
13063
|
+
var MigrateDeviceResultSchema = object({
|
|
13064
|
+
sourceId: number(),
|
|
13065
|
+
targetId: number(),
|
|
13066
|
+
switches: array(MigrateSwitchReportSchema).readonly(),
|
|
13067
|
+
/** Switches that could NOT be turned off on the source. Empty is the only
|
|
13068
|
+
* value meaning the replaced hardware is quiet. */
|
|
13069
|
+
sourceStillLive: array(CameraSwitchIdSchema).readonly(),
|
|
13070
|
+
swapped: boolean()
|
|
13071
|
+
});
|
|
13048
13072
|
method(object({
|
|
13049
13073
|
addonId: string(),
|
|
13050
13074
|
stableId: string()
|
|
13051
|
-
}), object({ id: number() }), { kind: "mutation" }), method(
|
|
13075
|
+
}), object({ id: number() }), { kind: "mutation" }), method(object({
|
|
13076
|
+
sourceId: number(),
|
|
13077
|
+
targetId: number()
|
|
13078
|
+
}), MigrateDeviceResultSchema, {
|
|
13079
|
+
kind: "mutation",
|
|
13080
|
+
auth: "admin"
|
|
13081
|
+
}), 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({
|
|
13052
13082
|
deviceId: number(),
|
|
13053
13083
|
name: string()
|
|
13054
13084
|
}), _void(), {
|
|
@@ -13523,6 +13553,35 @@ method(_void(), array(string()).readonly(), { auth: "admin" }), method(object({
|
|
|
13523
13553
|
auth: "admin"
|
|
13524
13554
|
});
|
|
13525
13555
|
/**
|
|
13556
|
+
* Transport bounds for AI capability methods.
|
|
13557
|
+
*
|
|
13558
|
+
* Its own module because `llm.cap.ts` and `llm-runtime.cap.ts` already import
|
|
13559
|
+
* each other: declaring the constant in either one hands the other `undefined`
|
|
13560
|
+
* at module-init time, and an undefined `timeoutMs` silently falls back to the
|
|
13561
|
+
* kernel's 60 s default — the exact failure this constant exists to prevent,
|
|
13562
|
+
* reintroduced invisibly. Found by the guard, not by review.
|
|
13563
|
+
*/
|
|
13564
|
+
/**
|
|
13565
|
+
* Ceiling for a cap method that runs inference or loads a model.
|
|
13566
|
+
*
|
|
13567
|
+
* Deliberately far above anything the AI layer itself may wait for (a summary
|
|
13568
|
+
* asks 180 s by default, a rule may ask 600 s), because the TRANSPORT must
|
|
13569
|
+
* never be the layer that gives up first: when it does, the failure is
|
|
13570
|
+
* reported as a transport error for a model that was still thinking, naming
|
|
13571
|
+
* the wrong layer and hiding the real one.
|
|
13572
|
+
*
|
|
13573
|
+
* Measured 2026-09-03: a 6-image vision request needs 44.8 s warm and ~20 s
|
|
13574
|
+
* more on a cold model load. With no declaration every digest failed at
|
|
13575
|
+
* exactly 60 s and shipped without its text.
|
|
13576
|
+
*
|
|
13577
|
+
* A ceiling, not a budget. The AI layer's own timeouts (the rule's `timeoutMs`,
|
|
13578
|
+
* the profile's `timeoutMs` / `firstTokenTimeoutMs`) remain the things that
|
|
13579
|
+
* decide when to stop, because only they can say WHY.
|
|
13580
|
+
*/
|
|
13581
|
+
var AI_CAP_TRANSPORT_TIMEOUT_MS = 6e5;
|
|
13582
|
+
/** A multi-gigabyte download. An hour is not generous, it is honest. */
|
|
13583
|
+
var AI_MODEL_INSTALL_TIMEOUT_MS = 60 * 6e4;
|
|
13584
|
+
/**
|
|
13526
13585
|
* Shared LLM generate contracts — imported by BOTH `llm.cap.ts` (consumer
|
|
13527
13586
|
* surface) and `llm-runtime.cap.ts` (node-side managed executor) so the two
|
|
13528
13587
|
* caps stay wire-compatible without a circular cap→cap import.
|
|
@@ -13794,16 +13853,19 @@ method(LlmGenerateBaseInputSchema.extend({
|
|
|
13794
13853
|
timeoutMs: number().int().positive().optional()
|
|
13795
13854
|
}), LlmGenerateResultSchema, {
|
|
13796
13855
|
kind: "mutation",
|
|
13797
|
-
auth: "admin"
|
|
13856
|
+
auth: "admin",
|
|
13857
|
+
timeoutMs: AI_CAP_TRANSPORT_TIMEOUT_MS
|
|
13798
13858
|
}), method(object({ runtime: ManagedRuntimeConfigSchema }), LlmRuntimeStatusSchema, {
|
|
13799
13859
|
kind: "mutation",
|
|
13800
|
-
auth: "admin"
|
|
13860
|
+
auth: "admin",
|
|
13861
|
+
timeoutMs: AI_CAP_TRANSPORT_TIMEOUT_MS
|
|
13801
13862
|
}), method(object({}), _void(), {
|
|
13802
13863
|
kind: "mutation",
|
|
13803
13864
|
auth: "admin"
|
|
13804
13865
|
}), method(object({}), LlmRuntimeStatusSchema, { auth: "admin" }), method(object({ model: ManagedModelRefSchema }), _void(), {
|
|
13805
13866
|
kind: "mutation",
|
|
13806
|
-
auth: "admin"
|
|
13867
|
+
auth: "admin",
|
|
13868
|
+
timeoutMs: AI_MODEL_INSTALL_TIMEOUT_MS
|
|
13807
13869
|
}), method(object({ file: string() }), _void(), {
|
|
13808
13870
|
kind: "mutation",
|
|
13809
13871
|
auth: "admin"
|
|
@@ -13971,7 +14033,13 @@ var ProfileRefInputSchema = object({
|
|
|
13971
14033
|
addonId: string(),
|
|
13972
14034
|
profileId: string()
|
|
13973
14035
|
});
|
|
13974
|
-
method(LlmGenerateBaseInputSchema, LlmGenerateResultSchema, {
|
|
14036
|
+
method(LlmGenerateBaseInputSchema, LlmGenerateResultSchema, {
|
|
14037
|
+
kind: "mutation",
|
|
14038
|
+
timeoutMs: AI_CAP_TRANSPORT_TIMEOUT_MS
|
|
14039
|
+
}), method(GenerateVisionInputSchema, LlmGenerateResultSchema, {
|
|
14040
|
+
kind: "mutation",
|
|
14041
|
+
timeoutMs: AI_CAP_TRANSPORT_TIMEOUT_MS
|
|
14042
|
+
}), method(object({
|
|
13975
14043
|
addonId: string().optional(),
|
|
13976
14044
|
requestId: string()
|
|
13977
14045
|
}), _void(), { kind: "mutation" }), method(object({}), array(LlmProfileKindDescriptorSchema)), method(object({}), array(LlmProfileSchema)), method(object({ profile: LlmProfileSchema }), LlmProfileSchema, {
|
|
@@ -13982,7 +14050,8 @@ method(LlmGenerateBaseInputSchema, LlmGenerateResultSchema, { kind: "mutation" }
|
|
|
13982
14050
|
auth: "admin"
|
|
13983
14051
|
}), method(ProfileRefInputSchema, LlmGenerateResultSchema, {
|
|
13984
14052
|
kind: "mutation",
|
|
13985
|
-
auth: "admin"
|
|
14053
|
+
auth: "admin",
|
|
14054
|
+
timeoutMs: AI_CAP_TRANSPORT_TIMEOUT_MS
|
|
13986
14055
|
}), method(ProfileRefInputSchema, array(string())), method(object({}), array(LlmDefaultSchema)), method(object({
|
|
13987
14056
|
selector: LlmDefaultSelectorSchema,
|
|
13988
14057
|
profileId: string().nullable()
|
|
@@ -34221,6 +34290,12 @@ Object.freeze({
|
|
|
34221
34290
|
addonId: null,
|
|
34222
34291
|
access: "view"
|
|
34223
34292
|
},
|
|
34293
|
+
"deviceManager.migrateDevice": {
|
|
34294
|
+
capName: "device-manager",
|
|
34295
|
+
capScope: "system",
|
|
34296
|
+
addonId: null,
|
|
34297
|
+
access: "create"
|
|
34298
|
+
},
|
|
34224
34299
|
"deviceManager.persistConfig": {
|
|
34225
34300
|
capName: "device-manager",
|
|
34226
34301
|
capScope: "system",
|