@camstack/addon-provider-rademacher 0.2.52 → 0.2.54

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
@@ -14506,6 +14506,35 @@ method(_void(), array(string()).readonly(), { auth: "admin" }), method(object({
14506
14506
  auth: "admin"
14507
14507
  });
14508
14508
  /**
14509
+ * Transport bounds for AI capability methods.
14510
+ *
14511
+ * Its own module because `llm.cap.ts` and `llm-runtime.cap.ts` already import
14512
+ * each other: declaring the constant in either one hands the other `undefined`
14513
+ * at module-init time, and an undefined `timeoutMs` silently falls back to the
14514
+ * kernel's 60 s default — the exact failure this constant exists to prevent,
14515
+ * reintroduced invisibly. Found by the guard, not by review.
14516
+ */
14517
+ /**
14518
+ * Ceiling for a cap method that runs inference or loads a model.
14519
+ *
14520
+ * Deliberately far above anything the AI layer itself may wait for (a summary
14521
+ * asks 180 s by default, a rule may ask 600 s), because the TRANSPORT must
14522
+ * never be the layer that gives up first: when it does, the failure is
14523
+ * reported as a transport error for a model that was still thinking, naming
14524
+ * the wrong layer and hiding the real one.
14525
+ *
14526
+ * Measured 2026-09-03: a 6-image vision request needs 44.8 s warm and ~20 s
14527
+ * more on a cold model load. With no declaration every digest failed at
14528
+ * exactly 60 s and shipped without its text.
14529
+ *
14530
+ * A ceiling, not a budget. The AI layer's own timeouts (the rule's `timeoutMs`,
14531
+ * the profile's `timeoutMs` / `firstTokenTimeoutMs`) remain the things that
14532
+ * decide when to stop, because only they can say WHY.
14533
+ */
14534
+ var AI_CAP_TRANSPORT_TIMEOUT_MS = 6e5;
14535
+ /** A multi-gigabyte download. An hour is not generous, it is honest. */
14536
+ var AI_MODEL_INSTALL_TIMEOUT_MS = 60 * 6e4;
14537
+ /**
14509
14538
  * Shared LLM generate contracts — imported by BOTH `llm.cap.ts` (consumer
14510
14539
  * surface) and `llm-runtime.cap.ts` (node-side managed executor) so the two
14511
14540
  * caps stay wire-compatible without a circular cap→cap import.
@@ -14777,16 +14806,19 @@ method(LlmGenerateBaseInputSchema.extend({
14777
14806
  timeoutMs: number().int().positive().optional()
14778
14807
  }), LlmGenerateResultSchema, {
14779
14808
  kind: "mutation",
14780
- auth: "admin"
14809
+ auth: "admin",
14810
+ timeoutMs: AI_CAP_TRANSPORT_TIMEOUT_MS
14781
14811
  }), method(object({ runtime: ManagedRuntimeConfigSchema }), LlmRuntimeStatusSchema, {
14782
14812
  kind: "mutation",
14783
- auth: "admin"
14813
+ auth: "admin",
14814
+ timeoutMs: AI_CAP_TRANSPORT_TIMEOUT_MS
14784
14815
  }), method(object({}), _void(), {
14785
14816
  kind: "mutation",
14786
14817
  auth: "admin"
14787
14818
  }), method(object({}), LlmRuntimeStatusSchema, { auth: "admin" }), method(object({ model: ManagedModelRefSchema }), _void(), {
14788
14819
  kind: "mutation",
14789
- auth: "admin"
14820
+ auth: "admin",
14821
+ timeoutMs: AI_MODEL_INSTALL_TIMEOUT_MS
14790
14822
  }), method(object({ file: string() }), _void(), {
14791
14823
  kind: "mutation",
14792
14824
  auth: "admin"
@@ -14954,7 +14986,13 @@ var ProfileRefInputSchema = object({
14954
14986
  addonId: string(),
14955
14987
  profileId: string()
14956
14988
  });
14957
- method(LlmGenerateBaseInputSchema, LlmGenerateResultSchema, { kind: "mutation" }), method(GenerateVisionInputSchema, LlmGenerateResultSchema, { kind: "mutation" }), method(object({
14989
+ method(LlmGenerateBaseInputSchema, LlmGenerateResultSchema, {
14990
+ kind: "mutation",
14991
+ timeoutMs: AI_CAP_TRANSPORT_TIMEOUT_MS
14992
+ }), method(GenerateVisionInputSchema, LlmGenerateResultSchema, {
14993
+ kind: "mutation",
14994
+ timeoutMs: AI_CAP_TRANSPORT_TIMEOUT_MS
14995
+ }), method(object({
14958
14996
  addonId: string().optional(),
14959
14997
  requestId: string()
14960
14998
  }), _void(), { kind: "mutation" }), method(object({}), array(LlmProfileKindDescriptorSchema)), method(object({}), array(LlmProfileSchema)), method(object({ profile: LlmProfileSchema }), LlmProfileSchema, {
@@ -14965,7 +15003,8 @@ method(LlmGenerateBaseInputSchema, LlmGenerateResultSchema, { kind: "mutation" }
14965
15003
  auth: "admin"
14966
15004
  }), method(ProfileRefInputSchema, LlmGenerateResultSchema, {
14967
15005
  kind: "mutation",
14968
- auth: "admin"
15006
+ auth: "admin",
15007
+ timeoutMs: AI_CAP_TRANSPORT_TIMEOUT_MS
14969
15008
  }), method(ProfileRefInputSchema, array(string())), method(object({}), array(LlmDefaultSchema)), method(object({
14970
15009
  selector: LlmDefaultSelectorSchema,
14971
15010
  profileId: string().nullable()
package/dist/addon.mjs CHANGED
@@ -14505,6 +14505,35 @@ method(_void(), array(string()).readonly(), { auth: "admin" }), method(object({
14505
14505
  auth: "admin"
14506
14506
  });
14507
14507
  /**
14508
+ * Transport bounds for AI capability methods.
14509
+ *
14510
+ * Its own module because `llm.cap.ts` and `llm-runtime.cap.ts` already import
14511
+ * each other: declaring the constant in either one hands the other `undefined`
14512
+ * at module-init time, and an undefined `timeoutMs` silently falls back to the
14513
+ * kernel's 60 s default — the exact failure this constant exists to prevent,
14514
+ * reintroduced invisibly. Found by the guard, not by review.
14515
+ */
14516
+ /**
14517
+ * Ceiling for a cap method that runs inference or loads a model.
14518
+ *
14519
+ * Deliberately far above anything the AI layer itself may wait for (a summary
14520
+ * asks 180 s by default, a rule may ask 600 s), because the TRANSPORT must
14521
+ * never be the layer that gives up first: when it does, the failure is
14522
+ * reported as a transport error for a model that was still thinking, naming
14523
+ * the wrong layer and hiding the real one.
14524
+ *
14525
+ * Measured 2026-09-03: a 6-image vision request needs 44.8 s warm and ~20 s
14526
+ * more on a cold model load. With no declaration every digest failed at
14527
+ * exactly 60 s and shipped without its text.
14528
+ *
14529
+ * A ceiling, not a budget. The AI layer's own timeouts (the rule's `timeoutMs`,
14530
+ * the profile's `timeoutMs` / `firstTokenTimeoutMs`) remain the things that
14531
+ * decide when to stop, because only they can say WHY.
14532
+ */
14533
+ var AI_CAP_TRANSPORT_TIMEOUT_MS = 6e5;
14534
+ /** A multi-gigabyte download. An hour is not generous, it is honest. */
14535
+ var AI_MODEL_INSTALL_TIMEOUT_MS = 60 * 6e4;
14536
+ /**
14508
14537
  * Shared LLM generate contracts — imported by BOTH `llm.cap.ts` (consumer
14509
14538
  * surface) and `llm-runtime.cap.ts` (node-side managed executor) so the two
14510
14539
  * caps stay wire-compatible without a circular cap→cap import.
@@ -14776,16 +14805,19 @@ method(LlmGenerateBaseInputSchema.extend({
14776
14805
  timeoutMs: number().int().positive().optional()
14777
14806
  }), LlmGenerateResultSchema, {
14778
14807
  kind: "mutation",
14779
- auth: "admin"
14808
+ auth: "admin",
14809
+ timeoutMs: AI_CAP_TRANSPORT_TIMEOUT_MS
14780
14810
  }), method(object({ runtime: ManagedRuntimeConfigSchema }), LlmRuntimeStatusSchema, {
14781
14811
  kind: "mutation",
14782
- auth: "admin"
14812
+ auth: "admin",
14813
+ timeoutMs: AI_CAP_TRANSPORT_TIMEOUT_MS
14783
14814
  }), method(object({}), _void(), {
14784
14815
  kind: "mutation",
14785
14816
  auth: "admin"
14786
14817
  }), method(object({}), LlmRuntimeStatusSchema, { auth: "admin" }), method(object({ model: ManagedModelRefSchema }), _void(), {
14787
14818
  kind: "mutation",
14788
- auth: "admin"
14819
+ auth: "admin",
14820
+ timeoutMs: AI_MODEL_INSTALL_TIMEOUT_MS
14789
14821
  }), method(object({ file: string() }), _void(), {
14790
14822
  kind: "mutation",
14791
14823
  auth: "admin"
@@ -14953,7 +14985,13 @@ var ProfileRefInputSchema = object({
14953
14985
  addonId: string(),
14954
14986
  profileId: string()
14955
14987
  });
14956
- method(LlmGenerateBaseInputSchema, LlmGenerateResultSchema, { kind: "mutation" }), method(GenerateVisionInputSchema, LlmGenerateResultSchema, { kind: "mutation" }), method(object({
14988
+ method(LlmGenerateBaseInputSchema, LlmGenerateResultSchema, {
14989
+ kind: "mutation",
14990
+ timeoutMs: AI_CAP_TRANSPORT_TIMEOUT_MS
14991
+ }), method(GenerateVisionInputSchema, LlmGenerateResultSchema, {
14992
+ kind: "mutation",
14993
+ timeoutMs: AI_CAP_TRANSPORT_TIMEOUT_MS
14994
+ }), method(object({
14957
14995
  addonId: string().optional(),
14958
14996
  requestId: string()
14959
14997
  }), _void(), { kind: "mutation" }), method(object({}), array(LlmProfileKindDescriptorSchema)), method(object({}), array(LlmProfileSchema)), method(object({ profile: LlmProfileSchema }), LlmProfileSchema, {
@@ -14964,7 +15002,8 @@ method(LlmGenerateBaseInputSchema, LlmGenerateResultSchema, { kind: "mutation" }
14964
15002
  auth: "admin"
14965
15003
  }), method(ProfileRefInputSchema, LlmGenerateResultSchema, {
14966
15004
  kind: "mutation",
14967
- auth: "admin"
15005
+ auth: "admin",
15006
+ timeoutMs: AI_CAP_TRANSPORT_TIMEOUT_MS
14968
15007
  }), method(ProfileRefInputSchema, array(string())), method(object({}), array(LlmDefaultSchema)), method(object({
14969
15008
  selector: LlmDefaultSelectorSchema,
14970
15009
  profileId: string().nullable()
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-provider-rademacher",
3
- "version": "0.2.52",
3
+ "version": "0.2.54",
4
4
  "description": "Rademacher HomePilot device-provider addon for CamStack — wraps the @apocaliss92/noderademacher local-hub client (roller shutters over the cover cap)",
5
5
  "keywords": [
6
6
  "camstack",