@camstack/addon-agent-ui 1.2.55 → 1.2.58
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 +83 -8
- package/package.json +1 -1
package/dist/addon.js
CHANGED
|
@@ -7721,7 +7721,8 @@ var OpsLogReasonSchema = _enum([
|
|
|
7721
7721
|
"quota",
|
|
7722
7722
|
"manual",
|
|
7723
7723
|
"operator",
|
|
7724
|
-
"maintenance"
|
|
7724
|
+
"maintenance",
|
|
7725
|
+
"orphaned-device"
|
|
7725
7726
|
]);
|
|
7726
7727
|
/** One audit row, shared verbatim by both domains. */
|
|
7727
7728
|
var OpsLogEntrySchema = object({
|
|
@@ -12752,10 +12753,39 @@ var DevicePersistConfigPayloadSchema = object({
|
|
|
12752
12753
|
deviceId: number(),
|
|
12753
12754
|
data: record(string(), unknown())
|
|
12754
12755
|
});
|
|
12756
|
+
/** What a migration actually did, per switch. `unreachable` is a first-class
|
|
12757
|
+
* answer: a camera that could not be asked is not a camera that was silenced. */
|
|
12758
|
+
var MigrateSwitchOutcomeSchema = _enum([
|
|
12759
|
+
"off",
|
|
12760
|
+
"on",
|
|
12761
|
+
"not-offered",
|
|
12762
|
+
"unreachable"
|
|
12763
|
+
]);
|
|
12764
|
+
var MigrateSwitchReportSchema = object({
|
|
12765
|
+
deviceId: number(),
|
|
12766
|
+
switchId: CameraSwitchIdSchema,
|
|
12767
|
+
outcome: MigrateSwitchOutcomeSchema,
|
|
12768
|
+
detail: string().optional()
|
|
12769
|
+
});
|
|
12770
|
+
var MigrateDeviceResultSchema = object({
|
|
12771
|
+
sourceId: number(),
|
|
12772
|
+
targetId: number(),
|
|
12773
|
+
switches: array(MigrateSwitchReportSchema).readonly(),
|
|
12774
|
+
/** Switches that could NOT be turned off on the source. Empty is the only
|
|
12775
|
+
* value meaning the replaced hardware is quiet. */
|
|
12776
|
+
sourceStillLive: array(CameraSwitchIdSchema).readonly(),
|
|
12777
|
+
swapped: boolean()
|
|
12778
|
+
});
|
|
12755
12779
|
method(object({
|
|
12756
12780
|
addonId: string(),
|
|
12757
12781
|
stableId: string()
|
|
12758
|
-
}), object({ id: number() }), { kind: "mutation" }), method(
|
|
12782
|
+
}), object({ id: number() }), { kind: "mutation" }), method(object({
|
|
12783
|
+
sourceId: number(),
|
|
12784
|
+
targetId: number()
|
|
12785
|
+
}), MigrateDeviceResultSchema, {
|
|
12786
|
+
kind: "mutation",
|
|
12787
|
+
auth: "admin"
|
|
12788
|
+
}), 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({
|
|
12759
12789
|
deviceId: number(),
|
|
12760
12790
|
name: string()
|
|
12761
12791
|
}), _void(), {
|
|
@@ -13230,6 +13260,35 @@ method(_void(), array(string()).readonly(), { auth: "admin" }), method(object({
|
|
|
13230
13260
|
auth: "admin"
|
|
13231
13261
|
});
|
|
13232
13262
|
/**
|
|
13263
|
+
* Transport bounds for AI capability methods.
|
|
13264
|
+
*
|
|
13265
|
+
* Its own module because `llm.cap.ts` and `llm-runtime.cap.ts` already import
|
|
13266
|
+
* each other: declaring the constant in either one hands the other `undefined`
|
|
13267
|
+
* at module-init time, and an undefined `timeoutMs` silently falls back to the
|
|
13268
|
+
* kernel's 60 s default — the exact failure this constant exists to prevent,
|
|
13269
|
+
* reintroduced invisibly. Found by the guard, not by review.
|
|
13270
|
+
*/
|
|
13271
|
+
/**
|
|
13272
|
+
* Ceiling for a cap method that runs inference or loads a model.
|
|
13273
|
+
*
|
|
13274
|
+
* Deliberately far above anything the AI layer itself may wait for (a summary
|
|
13275
|
+
* asks 180 s by default, a rule may ask 600 s), because the TRANSPORT must
|
|
13276
|
+
* never be the layer that gives up first: when it does, the failure is
|
|
13277
|
+
* reported as a transport error for a model that was still thinking, naming
|
|
13278
|
+
* the wrong layer and hiding the real one.
|
|
13279
|
+
*
|
|
13280
|
+
* Measured 2026-09-03: a 6-image vision request needs 44.8 s warm and ~20 s
|
|
13281
|
+
* more on a cold model load. With no declaration every digest failed at
|
|
13282
|
+
* exactly 60 s and shipped without its text.
|
|
13283
|
+
*
|
|
13284
|
+
* A ceiling, not a budget. The AI layer's own timeouts (the rule's `timeoutMs`,
|
|
13285
|
+
* the profile's `timeoutMs` / `firstTokenTimeoutMs`) remain the things that
|
|
13286
|
+
* decide when to stop, because only they can say WHY.
|
|
13287
|
+
*/
|
|
13288
|
+
var AI_CAP_TRANSPORT_TIMEOUT_MS = 6e5;
|
|
13289
|
+
/** A multi-gigabyte download. An hour is not generous, it is honest. */
|
|
13290
|
+
var AI_MODEL_INSTALL_TIMEOUT_MS = 60 * 6e4;
|
|
13291
|
+
/**
|
|
13233
13292
|
* Shared LLM generate contracts — imported by BOTH `llm.cap.ts` (consumer
|
|
13234
13293
|
* surface) and `llm-runtime.cap.ts` (node-side managed executor) so the two
|
|
13235
13294
|
* caps stay wire-compatible without a circular cap→cap import.
|
|
@@ -13501,16 +13560,19 @@ method(LlmGenerateBaseInputSchema.extend({
|
|
|
13501
13560
|
timeoutMs: number().int().positive().optional()
|
|
13502
13561
|
}), LlmGenerateResultSchema, {
|
|
13503
13562
|
kind: "mutation",
|
|
13504
|
-
auth: "admin"
|
|
13563
|
+
auth: "admin",
|
|
13564
|
+
timeoutMs: AI_CAP_TRANSPORT_TIMEOUT_MS
|
|
13505
13565
|
}), method(object({ runtime: ManagedRuntimeConfigSchema }), LlmRuntimeStatusSchema, {
|
|
13506
13566
|
kind: "mutation",
|
|
13507
|
-
auth: "admin"
|
|
13567
|
+
auth: "admin",
|
|
13568
|
+
timeoutMs: AI_CAP_TRANSPORT_TIMEOUT_MS
|
|
13508
13569
|
}), method(object({}), _void(), {
|
|
13509
13570
|
kind: "mutation",
|
|
13510
13571
|
auth: "admin"
|
|
13511
13572
|
}), method(object({}), LlmRuntimeStatusSchema, { auth: "admin" }), method(object({ model: ManagedModelRefSchema }), _void(), {
|
|
13512
13573
|
kind: "mutation",
|
|
13513
|
-
auth: "admin"
|
|
13574
|
+
auth: "admin",
|
|
13575
|
+
timeoutMs: AI_MODEL_INSTALL_TIMEOUT_MS
|
|
13514
13576
|
}), method(object({ file: string() }), _void(), {
|
|
13515
13577
|
kind: "mutation",
|
|
13516
13578
|
auth: "admin"
|
|
@@ -13678,7 +13740,13 @@ var ProfileRefInputSchema = object({
|
|
|
13678
13740
|
addonId: string(),
|
|
13679
13741
|
profileId: string()
|
|
13680
13742
|
});
|
|
13681
|
-
method(LlmGenerateBaseInputSchema, LlmGenerateResultSchema, {
|
|
13743
|
+
method(LlmGenerateBaseInputSchema, LlmGenerateResultSchema, {
|
|
13744
|
+
kind: "mutation",
|
|
13745
|
+
timeoutMs: AI_CAP_TRANSPORT_TIMEOUT_MS
|
|
13746
|
+
}), method(GenerateVisionInputSchema, LlmGenerateResultSchema, {
|
|
13747
|
+
kind: "mutation",
|
|
13748
|
+
timeoutMs: AI_CAP_TRANSPORT_TIMEOUT_MS
|
|
13749
|
+
}), method(object({
|
|
13682
13750
|
addonId: string().optional(),
|
|
13683
13751
|
requestId: string()
|
|
13684
13752
|
}), _void(), { kind: "mutation" }), method(object({}), array(LlmProfileKindDescriptorSchema)), method(object({}), array(LlmProfileSchema)), method(object({ profile: LlmProfileSchema }), LlmProfileSchema, {
|
|
@@ -13689,7 +13757,8 @@ method(LlmGenerateBaseInputSchema, LlmGenerateResultSchema, { kind: "mutation" }
|
|
|
13689
13757
|
auth: "admin"
|
|
13690
13758
|
}), method(ProfileRefInputSchema, LlmGenerateResultSchema, {
|
|
13691
13759
|
kind: "mutation",
|
|
13692
|
-
auth: "admin"
|
|
13760
|
+
auth: "admin",
|
|
13761
|
+
timeoutMs: AI_CAP_TRANSPORT_TIMEOUT_MS
|
|
13693
13762
|
}), method(ProfileRefInputSchema, array(string())), method(object({}), array(LlmDefaultSchema)), method(object({
|
|
13694
13763
|
selector: LlmDefaultSelectorSchema,
|
|
13695
13764
|
profileId: string().nullable()
|
|
@@ -30258,6 +30327,12 @@ Object.freeze({
|
|
|
30258
30327
|
addonId: null,
|
|
30259
30328
|
access: "view"
|
|
30260
30329
|
},
|
|
30330
|
+
"deviceManager.migrateDevice": {
|
|
30331
|
+
capName: "device-manager",
|
|
30332
|
+
capScope: "system",
|
|
30333
|
+
addonId: null,
|
|
30334
|
+
access: "create"
|
|
30335
|
+
},
|
|
30261
30336
|
"deviceManager.persistConfig": {
|
|
30262
30337
|
capName: "device-manager",
|
|
30263
30338
|
capScope: "system",
|
|
@@ -37116,7 +37191,7 @@ var AgentUIAddon = class extends BaseAddon {
|
|
|
37116
37191
|
capability: adminUiCapability,
|
|
37117
37192
|
provider: {
|
|
37118
37193
|
getStaticDir: async () => ({ staticDir: path.resolve(__dirname) }),
|
|
37119
|
-
getVersion: async () => ({ version: "1.2.
|
|
37194
|
+
getVersion: async () => ({ version: "1.2.58" })
|
|
37120
37195
|
}
|
|
37121
37196
|
}];
|
|
37122
37197
|
}
|