@camstack/addon-provider-homematic 1.2.54 → 1.2.56

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 CHANGED
@@ -13596,6 +13596,35 @@ method(_void(), array(string()).readonly(), { auth: "admin" }), method(object({
13596
13596
  auth: "admin"
13597
13597
  });
13598
13598
  /**
13599
+ * Transport bounds for AI capability methods.
13600
+ *
13601
+ * Its own module because `llm.cap.ts` and `llm-runtime.cap.ts` already import
13602
+ * each other: declaring the constant in either one hands the other `undefined`
13603
+ * at module-init time, and an undefined `timeoutMs` silently falls back to the
13604
+ * kernel's 60 s default — the exact failure this constant exists to prevent,
13605
+ * reintroduced invisibly. Found by the guard, not by review.
13606
+ */
13607
+ /**
13608
+ * Ceiling for a cap method that runs inference or loads a model.
13609
+ *
13610
+ * Deliberately far above anything the AI layer itself may wait for (a summary
13611
+ * asks 180 s by default, a rule may ask 600 s), because the TRANSPORT must
13612
+ * never be the layer that gives up first: when it does, the failure is
13613
+ * reported as a transport error for a model that was still thinking, naming
13614
+ * the wrong layer and hiding the real one.
13615
+ *
13616
+ * Measured 2026-09-03: a 6-image vision request needs 44.8 s warm and ~20 s
13617
+ * more on a cold model load. With no declaration every digest failed at
13618
+ * exactly 60 s and shipped without its text.
13619
+ *
13620
+ * A ceiling, not a budget. The AI layer's own timeouts (the rule's `timeoutMs`,
13621
+ * the profile's `timeoutMs` / `firstTokenTimeoutMs`) remain the things that
13622
+ * decide when to stop, because only they can say WHY.
13623
+ */
13624
+ var AI_CAP_TRANSPORT_TIMEOUT_MS = 6e5;
13625
+ /** A multi-gigabyte download. An hour is not generous, it is honest. */
13626
+ var AI_MODEL_INSTALL_TIMEOUT_MS = 60 * 6e4;
13627
+ /**
13599
13628
  * Shared LLM generate contracts — imported by BOTH `llm.cap.ts` (consumer
13600
13629
  * surface) and `llm-runtime.cap.ts` (node-side managed executor) so the two
13601
13630
  * caps stay wire-compatible without a circular cap→cap import.
@@ -13867,16 +13896,19 @@ method(LlmGenerateBaseInputSchema.extend({
13867
13896
  timeoutMs: number().int().positive().optional()
13868
13897
  }), LlmGenerateResultSchema, {
13869
13898
  kind: "mutation",
13870
- auth: "admin"
13899
+ auth: "admin",
13900
+ timeoutMs: AI_CAP_TRANSPORT_TIMEOUT_MS
13871
13901
  }), method(object({ runtime: ManagedRuntimeConfigSchema }), LlmRuntimeStatusSchema, {
13872
13902
  kind: "mutation",
13873
- auth: "admin"
13903
+ auth: "admin",
13904
+ timeoutMs: AI_CAP_TRANSPORT_TIMEOUT_MS
13874
13905
  }), method(object({}), _void(), {
13875
13906
  kind: "mutation",
13876
13907
  auth: "admin"
13877
13908
  }), method(object({}), LlmRuntimeStatusSchema, { auth: "admin" }), method(object({ model: ManagedModelRefSchema }), _void(), {
13878
13909
  kind: "mutation",
13879
- auth: "admin"
13910
+ auth: "admin",
13911
+ timeoutMs: AI_MODEL_INSTALL_TIMEOUT_MS
13880
13912
  }), method(object({ file: string() }), _void(), {
13881
13913
  kind: "mutation",
13882
13914
  auth: "admin"
@@ -14044,7 +14076,13 @@ var ProfileRefInputSchema = object({
14044
14076
  addonId: string(),
14045
14077
  profileId: string()
14046
14078
  });
14047
- method(LlmGenerateBaseInputSchema, LlmGenerateResultSchema, { kind: "mutation" }), method(GenerateVisionInputSchema, LlmGenerateResultSchema, { kind: "mutation" }), method(object({
14079
+ method(LlmGenerateBaseInputSchema, LlmGenerateResultSchema, {
14080
+ kind: "mutation",
14081
+ timeoutMs: AI_CAP_TRANSPORT_TIMEOUT_MS
14082
+ }), method(GenerateVisionInputSchema, LlmGenerateResultSchema, {
14083
+ kind: "mutation",
14084
+ timeoutMs: AI_CAP_TRANSPORT_TIMEOUT_MS
14085
+ }), method(object({
14048
14086
  addonId: string().optional(),
14049
14087
  requestId: string()
14050
14088
  }), _void(), { kind: "mutation" }), method(object({}), array(LlmProfileKindDescriptorSchema)), method(object({}), array(LlmProfileSchema)), method(object({ profile: LlmProfileSchema }), LlmProfileSchema, {
@@ -14055,7 +14093,8 @@ method(LlmGenerateBaseInputSchema, LlmGenerateResultSchema, { kind: "mutation" }
14055
14093
  auth: "admin"
14056
14094
  }), method(ProfileRefInputSchema, LlmGenerateResultSchema, {
14057
14095
  kind: "mutation",
14058
- auth: "admin"
14096
+ auth: "admin",
14097
+ timeoutMs: AI_CAP_TRANSPORT_TIMEOUT_MS
14059
14098
  }), method(ProfileRefInputSchema, array(string())), method(object({}), array(LlmDefaultSchema)), method(object({
14060
14099
  selector: LlmDefaultSelectorSchema,
14061
14100
  profileId: string().nullable()
package/dist/addon.mjs CHANGED
@@ -13597,6 +13597,35 @@ method(_void(), array(string()).readonly(), { auth: "admin" }), method(object({
13597
13597
  auth: "admin"
13598
13598
  });
13599
13599
  /**
13600
+ * Transport bounds for AI capability methods.
13601
+ *
13602
+ * Its own module because `llm.cap.ts` and `llm-runtime.cap.ts` already import
13603
+ * each other: declaring the constant in either one hands the other `undefined`
13604
+ * at module-init time, and an undefined `timeoutMs` silently falls back to the
13605
+ * kernel's 60 s default — the exact failure this constant exists to prevent,
13606
+ * reintroduced invisibly. Found by the guard, not by review.
13607
+ */
13608
+ /**
13609
+ * Ceiling for a cap method that runs inference or loads a model.
13610
+ *
13611
+ * Deliberately far above anything the AI layer itself may wait for (a summary
13612
+ * asks 180 s by default, a rule may ask 600 s), because the TRANSPORT must
13613
+ * never be the layer that gives up first: when it does, the failure is
13614
+ * reported as a transport error for a model that was still thinking, naming
13615
+ * the wrong layer and hiding the real one.
13616
+ *
13617
+ * Measured 2026-09-03: a 6-image vision request needs 44.8 s warm and ~20 s
13618
+ * more on a cold model load. With no declaration every digest failed at
13619
+ * exactly 60 s and shipped without its text.
13620
+ *
13621
+ * A ceiling, not a budget. The AI layer's own timeouts (the rule's `timeoutMs`,
13622
+ * the profile's `timeoutMs` / `firstTokenTimeoutMs`) remain the things that
13623
+ * decide when to stop, because only they can say WHY.
13624
+ */
13625
+ var AI_CAP_TRANSPORT_TIMEOUT_MS = 6e5;
13626
+ /** A multi-gigabyte download. An hour is not generous, it is honest. */
13627
+ var AI_MODEL_INSTALL_TIMEOUT_MS = 60 * 6e4;
13628
+ /**
13600
13629
  * Shared LLM generate contracts — imported by BOTH `llm.cap.ts` (consumer
13601
13630
  * surface) and `llm-runtime.cap.ts` (node-side managed executor) so the two
13602
13631
  * caps stay wire-compatible without a circular cap→cap import.
@@ -13868,16 +13897,19 @@ method(LlmGenerateBaseInputSchema.extend({
13868
13897
  timeoutMs: number().int().positive().optional()
13869
13898
  }), LlmGenerateResultSchema, {
13870
13899
  kind: "mutation",
13871
- auth: "admin"
13900
+ auth: "admin",
13901
+ timeoutMs: AI_CAP_TRANSPORT_TIMEOUT_MS
13872
13902
  }), method(object({ runtime: ManagedRuntimeConfigSchema }), LlmRuntimeStatusSchema, {
13873
13903
  kind: "mutation",
13874
- auth: "admin"
13904
+ auth: "admin",
13905
+ timeoutMs: AI_CAP_TRANSPORT_TIMEOUT_MS
13875
13906
  }), method(object({}), _void(), {
13876
13907
  kind: "mutation",
13877
13908
  auth: "admin"
13878
13909
  }), method(object({}), LlmRuntimeStatusSchema, { auth: "admin" }), method(object({ model: ManagedModelRefSchema }), _void(), {
13879
13910
  kind: "mutation",
13880
- auth: "admin"
13911
+ auth: "admin",
13912
+ timeoutMs: AI_MODEL_INSTALL_TIMEOUT_MS
13881
13913
  }), method(object({ file: string() }), _void(), {
13882
13914
  kind: "mutation",
13883
13915
  auth: "admin"
@@ -14045,7 +14077,13 @@ var ProfileRefInputSchema = object({
14045
14077
  addonId: string(),
14046
14078
  profileId: string()
14047
14079
  });
14048
- method(LlmGenerateBaseInputSchema, LlmGenerateResultSchema, { kind: "mutation" }), method(GenerateVisionInputSchema, LlmGenerateResultSchema, { kind: "mutation" }), method(object({
14080
+ method(LlmGenerateBaseInputSchema, LlmGenerateResultSchema, {
14081
+ kind: "mutation",
14082
+ timeoutMs: AI_CAP_TRANSPORT_TIMEOUT_MS
14083
+ }), method(GenerateVisionInputSchema, LlmGenerateResultSchema, {
14084
+ kind: "mutation",
14085
+ timeoutMs: AI_CAP_TRANSPORT_TIMEOUT_MS
14086
+ }), method(object({
14049
14087
  addonId: string().optional(),
14050
14088
  requestId: string()
14051
14089
  }), _void(), { kind: "mutation" }), method(object({}), array(LlmProfileKindDescriptorSchema)), method(object({}), array(LlmProfileSchema)), method(object({ profile: LlmProfileSchema }), LlmProfileSchema, {
@@ -14056,7 +14094,8 @@ method(LlmGenerateBaseInputSchema, LlmGenerateResultSchema, { kind: "mutation" }
14056
14094
  auth: "admin"
14057
14095
  }), method(ProfileRefInputSchema, LlmGenerateResultSchema, {
14058
14096
  kind: "mutation",
14059
- auth: "admin"
14097
+ auth: "admin",
14098
+ timeoutMs: AI_CAP_TRANSPORT_TIMEOUT_MS
14060
14099
  }), method(ProfileRefInputSchema, array(string())), method(object({}), array(LlmDefaultSchema)), method(object({
14061
14100
  selector: LlmDefaultSelectorSchema,
14062
14101
  profileId: string().nullable()
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-provider-homematic",
3
- "version": "1.2.54",
3
+ "version": "1.2.56",
4
4
  "description": "Homematic / HomematicIP (CCU3 / RaspberryMatic) device-provider addon for CamStack — wraps the nodehomematic library",
5
5
  "keywords": [
6
6
  "camstack",