@camstack/addon-notifiers 1.2.57 → 1.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 CHANGED
@@ -13431,6 +13431,35 @@ method(_void(), array(string()).readonly(), { auth: "admin" }), method(object({
13431
13431
  auth: "admin"
13432
13432
  });
13433
13433
  /**
13434
+ * Transport bounds for AI capability methods.
13435
+ *
13436
+ * Its own module because `llm.cap.ts` and `llm-runtime.cap.ts` already import
13437
+ * each other: declaring the constant in either one hands the other `undefined`
13438
+ * at module-init time, and an undefined `timeoutMs` silently falls back to the
13439
+ * kernel's 60 s default — the exact failure this constant exists to prevent,
13440
+ * reintroduced invisibly. Found by the guard, not by review.
13441
+ */
13442
+ /**
13443
+ * Ceiling for a cap method that runs inference or loads a model.
13444
+ *
13445
+ * Deliberately far above anything the AI layer itself may wait for (a summary
13446
+ * asks 180 s by default, a rule may ask 600 s), because the TRANSPORT must
13447
+ * never be the layer that gives up first: when it does, the failure is
13448
+ * reported as a transport error for a model that was still thinking, naming
13449
+ * the wrong layer and hiding the real one.
13450
+ *
13451
+ * Measured 2026-09-03: a 6-image vision request needs 44.8 s warm and ~20 s
13452
+ * more on a cold model load. With no declaration every digest failed at
13453
+ * exactly 60 s and shipped without its text.
13454
+ *
13455
+ * A ceiling, not a budget. The AI layer's own timeouts (the rule's `timeoutMs`,
13456
+ * the profile's `timeoutMs` / `firstTokenTimeoutMs`) remain the things that
13457
+ * decide when to stop, because only they can say WHY.
13458
+ */
13459
+ var AI_CAP_TRANSPORT_TIMEOUT_MS = 6e5;
13460
+ /** A multi-gigabyte download. An hour is not generous, it is honest. */
13461
+ var AI_MODEL_INSTALL_TIMEOUT_MS = 60 * 6e4;
13462
+ /**
13434
13463
  * Shared LLM generate contracts — imported by BOTH `llm.cap.ts` (consumer
13435
13464
  * surface) and `llm-runtime.cap.ts` (node-side managed executor) so the two
13436
13465
  * caps stay wire-compatible without a circular cap→cap import.
@@ -13702,16 +13731,19 @@ method(LlmGenerateBaseInputSchema.extend({
13702
13731
  timeoutMs: number().int().positive().optional()
13703
13732
  }), LlmGenerateResultSchema, {
13704
13733
  kind: "mutation",
13705
- auth: "admin"
13734
+ auth: "admin",
13735
+ timeoutMs: AI_CAP_TRANSPORT_TIMEOUT_MS
13706
13736
  }), method(object({ runtime: ManagedRuntimeConfigSchema }), LlmRuntimeStatusSchema, {
13707
13737
  kind: "mutation",
13708
- auth: "admin"
13738
+ auth: "admin",
13739
+ timeoutMs: AI_CAP_TRANSPORT_TIMEOUT_MS
13709
13740
  }), method(object({}), _void(), {
13710
13741
  kind: "mutation",
13711
13742
  auth: "admin"
13712
13743
  }), method(object({}), LlmRuntimeStatusSchema, { auth: "admin" }), method(object({ model: ManagedModelRefSchema }), _void(), {
13713
13744
  kind: "mutation",
13714
- auth: "admin"
13745
+ auth: "admin",
13746
+ timeoutMs: AI_MODEL_INSTALL_TIMEOUT_MS
13715
13747
  }), method(object({ file: string() }), _void(), {
13716
13748
  kind: "mutation",
13717
13749
  auth: "admin"
@@ -13879,7 +13911,13 @@ var ProfileRefInputSchema = object({
13879
13911
  addonId: string(),
13880
13912
  profileId: string()
13881
13913
  });
13882
- method(LlmGenerateBaseInputSchema, LlmGenerateResultSchema, { kind: "mutation" }), method(GenerateVisionInputSchema, LlmGenerateResultSchema, { kind: "mutation" }), method(object({
13914
+ method(LlmGenerateBaseInputSchema, LlmGenerateResultSchema, {
13915
+ kind: "mutation",
13916
+ timeoutMs: AI_CAP_TRANSPORT_TIMEOUT_MS
13917
+ }), method(GenerateVisionInputSchema, LlmGenerateResultSchema, {
13918
+ kind: "mutation",
13919
+ timeoutMs: AI_CAP_TRANSPORT_TIMEOUT_MS
13920
+ }), method(object({
13883
13921
  addonId: string().optional(),
13884
13922
  requestId: string()
13885
13923
  }), _void(), { kind: "mutation" }), method(object({}), array(LlmProfileKindDescriptorSchema)), method(object({}), array(LlmProfileSchema)), method(object({ profile: LlmProfileSchema }), LlmProfileSchema, {
@@ -13890,7 +13928,8 @@ method(LlmGenerateBaseInputSchema, LlmGenerateResultSchema, { kind: "mutation" }
13890
13928
  auth: "admin"
13891
13929
  }), method(ProfileRefInputSchema, LlmGenerateResultSchema, {
13892
13930
  kind: "mutation",
13893
- auth: "admin"
13931
+ auth: "admin",
13932
+ timeoutMs: AI_CAP_TRANSPORT_TIMEOUT_MS
13894
13933
  }), method(ProfileRefInputSchema, array(string())), method(object({}), array(LlmDefaultSchema)), method(object({
13895
13934
  selector: LlmDefaultSelectorSchema,
13896
13935
  profileId: string().nullable()
package/dist/addon.mjs CHANGED
@@ -13404,6 +13404,35 @@ method(_void(), array(string()).readonly(), { auth: "admin" }), method(object({
13404
13404
  auth: "admin"
13405
13405
  });
13406
13406
  /**
13407
+ * Transport bounds for AI capability methods.
13408
+ *
13409
+ * Its own module because `llm.cap.ts` and `llm-runtime.cap.ts` already import
13410
+ * each other: declaring the constant in either one hands the other `undefined`
13411
+ * at module-init time, and an undefined `timeoutMs` silently falls back to the
13412
+ * kernel's 60 s default — the exact failure this constant exists to prevent,
13413
+ * reintroduced invisibly. Found by the guard, not by review.
13414
+ */
13415
+ /**
13416
+ * Ceiling for a cap method that runs inference or loads a model.
13417
+ *
13418
+ * Deliberately far above anything the AI layer itself may wait for (a summary
13419
+ * asks 180 s by default, a rule may ask 600 s), because the TRANSPORT must
13420
+ * never be the layer that gives up first: when it does, the failure is
13421
+ * reported as a transport error for a model that was still thinking, naming
13422
+ * the wrong layer and hiding the real one.
13423
+ *
13424
+ * Measured 2026-09-03: a 6-image vision request needs 44.8 s warm and ~20 s
13425
+ * more on a cold model load. With no declaration every digest failed at
13426
+ * exactly 60 s and shipped without its text.
13427
+ *
13428
+ * A ceiling, not a budget. The AI layer's own timeouts (the rule's `timeoutMs`,
13429
+ * the profile's `timeoutMs` / `firstTokenTimeoutMs`) remain the things that
13430
+ * decide when to stop, because only they can say WHY.
13431
+ */
13432
+ var AI_CAP_TRANSPORT_TIMEOUT_MS = 6e5;
13433
+ /** A multi-gigabyte download. An hour is not generous, it is honest. */
13434
+ var AI_MODEL_INSTALL_TIMEOUT_MS = 60 * 6e4;
13435
+ /**
13407
13436
  * Shared LLM generate contracts — imported by BOTH `llm.cap.ts` (consumer
13408
13437
  * surface) and `llm-runtime.cap.ts` (node-side managed executor) so the two
13409
13438
  * caps stay wire-compatible without a circular cap→cap import.
@@ -13675,16 +13704,19 @@ method(LlmGenerateBaseInputSchema.extend({
13675
13704
  timeoutMs: number().int().positive().optional()
13676
13705
  }), LlmGenerateResultSchema, {
13677
13706
  kind: "mutation",
13678
- auth: "admin"
13707
+ auth: "admin",
13708
+ timeoutMs: AI_CAP_TRANSPORT_TIMEOUT_MS
13679
13709
  }), method(object({ runtime: ManagedRuntimeConfigSchema }), LlmRuntimeStatusSchema, {
13680
13710
  kind: "mutation",
13681
- auth: "admin"
13711
+ auth: "admin",
13712
+ timeoutMs: AI_CAP_TRANSPORT_TIMEOUT_MS
13682
13713
  }), method(object({}), _void(), {
13683
13714
  kind: "mutation",
13684
13715
  auth: "admin"
13685
13716
  }), method(object({}), LlmRuntimeStatusSchema, { auth: "admin" }), method(object({ model: ManagedModelRefSchema }), _void(), {
13686
13717
  kind: "mutation",
13687
- auth: "admin"
13718
+ auth: "admin",
13719
+ timeoutMs: AI_MODEL_INSTALL_TIMEOUT_MS
13688
13720
  }), method(object({ file: string() }), _void(), {
13689
13721
  kind: "mutation",
13690
13722
  auth: "admin"
@@ -13852,7 +13884,13 @@ var ProfileRefInputSchema = object({
13852
13884
  addonId: string(),
13853
13885
  profileId: string()
13854
13886
  });
13855
- method(LlmGenerateBaseInputSchema, LlmGenerateResultSchema, { kind: "mutation" }), method(GenerateVisionInputSchema, LlmGenerateResultSchema, { kind: "mutation" }), method(object({
13887
+ method(LlmGenerateBaseInputSchema, LlmGenerateResultSchema, {
13888
+ kind: "mutation",
13889
+ timeoutMs: AI_CAP_TRANSPORT_TIMEOUT_MS
13890
+ }), method(GenerateVisionInputSchema, LlmGenerateResultSchema, {
13891
+ kind: "mutation",
13892
+ timeoutMs: AI_CAP_TRANSPORT_TIMEOUT_MS
13893
+ }), method(object({
13856
13894
  addonId: string().optional(),
13857
13895
  requestId: string()
13858
13896
  }), _void(), { kind: "mutation" }), method(object({}), array(LlmProfileKindDescriptorSchema)), method(object({}), array(LlmProfileSchema)), method(object({ profile: LlmProfileSchema }), LlmProfileSchema, {
@@ -13863,7 +13901,8 @@ method(LlmGenerateBaseInputSchema, LlmGenerateResultSchema, { kind: "mutation" }
13863
13901
  auth: "admin"
13864
13902
  }), method(ProfileRefInputSchema, LlmGenerateResultSchema, {
13865
13903
  kind: "mutation",
13866
- auth: "admin"
13904
+ auth: "admin",
13905
+ timeoutMs: AI_CAP_TRANSPORT_TIMEOUT_MS
13867
13906
  }), method(ProfileRefInputSchema, array(string())), method(object({}), array(LlmDefaultSchema)), method(object({
13868
13907
  selector: LlmDefaultSelectorSchema,
13869
13908
  profileId: string().nullable()
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-notifiers",
3
- "version": "1.2.57",
3
+ "version": "1.2.59",
4
4
  "description": "System notifiers addon for CamStack — a `notification-output` collection provider hosting per-kind notifier adapters (ntfy, pushover, gotify, telegram, discord, webhook, zentik).",
5
5
  "keywords": [
6
6
  "camstack",