@camstack/addon-tailscale 1.2.53 → 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.
@@ -24,7 +24,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
24
24
  enumerable: true
25
25
  }) : target, mod));
26
26
  //#endregion
27
- const require_dist = require("../dist-BFbW-DND.js");
27
+ const require_dist = require("../dist-Dn_mYmNE.js");
28
28
  let node_child_process = require("node:child_process");
29
29
  let node_util = require("node:util");
30
30
  let node_fs = require("node:fs");
@@ -1,4 +1,4 @@
1
- import { a as EventCategory, i as BaseAddon, n as networkAccessCapability, r as BOOT_RECOVERY_BACKOFF_MS, t as meshNetworkCapability } from "../dist-DCvDQ86T.mjs";
1
+ import { a as EventCategory, i as BaseAddon, n as networkAccessCapability, r as BOOT_RECOVERY_BACKOFF_MS, t as meshNetworkCapability } from "../dist-Bjd4m4-U.mjs";
2
2
  import { execFile, spawn } from "node:child_process";
3
3
  import { promisify } from "node:util";
4
4
  import * as fs from "node:fs";
@@ -13274,6 +13274,35 @@ method(_void(), array(string()).readonly(), { auth: "admin" }), method(object({
13274
13274
  auth: "admin"
13275
13275
  });
13276
13276
  /**
13277
+ * Transport bounds for AI capability methods.
13278
+ *
13279
+ * Its own module because `llm.cap.ts` and `llm-runtime.cap.ts` already import
13280
+ * each other: declaring the constant in either one hands the other `undefined`
13281
+ * at module-init time, and an undefined `timeoutMs` silently falls back to the
13282
+ * kernel's 60 s default — the exact failure this constant exists to prevent,
13283
+ * reintroduced invisibly. Found by the guard, not by review.
13284
+ */
13285
+ /**
13286
+ * Ceiling for a cap method that runs inference or loads a model.
13287
+ *
13288
+ * Deliberately far above anything the AI layer itself may wait for (a summary
13289
+ * asks 180 s by default, a rule may ask 600 s), because the TRANSPORT must
13290
+ * never be the layer that gives up first: when it does, the failure is
13291
+ * reported as a transport error for a model that was still thinking, naming
13292
+ * the wrong layer and hiding the real one.
13293
+ *
13294
+ * Measured 2026-09-03: a 6-image vision request needs 44.8 s warm and ~20 s
13295
+ * more on a cold model load. With no declaration every digest failed at
13296
+ * exactly 60 s and shipped without its text.
13297
+ *
13298
+ * A ceiling, not a budget. The AI layer's own timeouts (the rule's `timeoutMs`,
13299
+ * the profile's `timeoutMs` / `firstTokenTimeoutMs`) remain the things that
13300
+ * decide when to stop, because only they can say WHY.
13301
+ */
13302
+ var AI_CAP_TRANSPORT_TIMEOUT_MS = 6e5;
13303
+ /** A multi-gigabyte download. An hour is not generous, it is honest. */
13304
+ var AI_MODEL_INSTALL_TIMEOUT_MS = 60 * 6e4;
13305
+ /**
13277
13306
  * Shared LLM generate contracts — imported by BOTH `llm.cap.ts` (consumer
13278
13307
  * surface) and `llm-runtime.cap.ts` (node-side managed executor) so the two
13279
13308
  * caps stay wire-compatible without a circular cap→cap import.
@@ -13545,16 +13574,19 @@ method(LlmGenerateBaseInputSchema.extend({
13545
13574
  timeoutMs: number().int().positive().optional()
13546
13575
  }), LlmGenerateResultSchema, {
13547
13576
  kind: "mutation",
13548
- auth: "admin"
13577
+ auth: "admin",
13578
+ timeoutMs: AI_CAP_TRANSPORT_TIMEOUT_MS
13549
13579
  }), method(object({ runtime: ManagedRuntimeConfigSchema }), LlmRuntimeStatusSchema, {
13550
13580
  kind: "mutation",
13551
- auth: "admin"
13581
+ auth: "admin",
13582
+ timeoutMs: AI_CAP_TRANSPORT_TIMEOUT_MS
13552
13583
  }), method(object({}), _void(), {
13553
13584
  kind: "mutation",
13554
13585
  auth: "admin"
13555
13586
  }), method(object({}), LlmRuntimeStatusSchema, { auth: "admin" }), method(object({ model: ManagedModelRefSchema }), _void(), {
13556
13587
  kind: "mutation",
13557
- auth: "admin"
13588
+ auth: "admin",
13589
+ timeoutMs: AI_MODEL_INSTALL_TIMEOUT_MS
13558
13590
  }), method(object({ file: string() }), _void(), {
13559
13591
  kind: "mutation",
13560
13592
  auth: "admin"
@@ -13722,7 +13754,13 @@ var ProfileRefInputSchema = object({
13722
13754
  addonId: string(),
13723
13755
  profileId: string()
13724
13756
  });
13725
- method(LlmGenerateBaseInputSchema, LlmGenerateResultSchema, { kind: "mutation" }), method(GenerateVisionInputSchema, LlmGenerateResultSchema, { kind: "mutation" }), method(object({
13757
+ method(LlmGenerateBaseInputSchema, LlmGenerateResultSchema, {
13758
+ kind: "mutation",
13759
+ timeoutMs: AI_CAP_TRANSPORT_TIMEOUT_MS
13760
+ }), method(GenerateVisionInputSchema, LlmGenerateResultSchema, {
13761
+ kind: "mutation",
13762
+ timeoutMs: AI_CAP_TRANSPORT_TIMEOUT_MS
13763
+ }), method(object({
13726
13764
  addonId: string().optional(),
13727
13765
  requestId: string()
13728
13766
  }), _void(), { kind: "mutation" }), method(object({}), array(LlmProfileKindDescriptorSchema)), method(object({}), array(LlmProfileSchema)), method(object({ profile: LlmProfileSchema }), LlmProfileSchema, {
@@ -13733,7 +13771,8 @@ method(LlmGenerateBaseInputSchema, LlmGenerateResultSchema, { kind: "mutation" }
13733
13771
  auth: "admin"
13734
13772
  }), method(ProfileRefInputSchema, LlmGenerateResultSchema, {
13735
13773
  kind: "mutation",
13736
- auth: "admin"
13774
+ auth: "admin",
13775
+ timeoutMs: AI_CAP_TRANSPORT_TIMEOUT_MS
13737
13776
  }), method(ProfileRefInputSchema, array(string())), method(object({}), array(LlmDefaultSchema)), method(object({
13738
13777
  selector: LlmDefaultSelectorSchema,
13739
13778
  profileId: string().nullable()
@@ -14199,17 +14238,6 @@ var ContainerMemoryPointSchema = object({
14199
14238
  */
14200
14239
  gpuShmemBytes: number().nullable()
14201
14240
  }).extend({ atMs: number() });
14202
- var DumpHeapSnapshotInputSchema = object({
14203
- /** The addon whose runner should dump a heap snapshot. */
14204
- addonId: string() });
14205
- var DumpHeapSnapshotResultSchema = object({
14206
- success: boolean(),
14207
- /** Path of the written .heapsnapshot inside the runner's container/host. */
14208
- path: string().optional(),
14209
- /** Process pid that was signalled. */
14210
- pid: number().optional(),
14211
- reason: string().optional()
14212
- });
14213
14241
  /**
14214
14242
  * One point of one function's series.
14215
14243
  *
@@ -14333,10 +14361,7 @@ var SystemMetricsSchema = object({
14333
14361
  gpuPercent: number().optional(),
14334
14362
  gpuMemoryPercent: number().optional()
14335
14363
  });
14336
- method(_void(), SystemResourceSnapshotSchema), method(_void(), SystemResourceSnapshotSchema.nullable()), method(_void(), SystemMetricsSchema), method(object({ dirPath: string() }), DiskSpaceInfoSchema), method(_void(), MetricsGpuInfoSchema.nullable()), method(_void(), number().nullable()), method(object({ pids: array(number()) }), array(PidResourceStatsSchema)), method(_void(), array(AddonInstanceSchema).readonly()), method(object({ addonId: string() }), PidResourceStatsSchema.nullable()), method(_void(), array(NodeProcessSchema).readonly()), method(GetLoadSeriesInputSchema, NodeLoadSeriesSchema), method(DumpHeapSnapshotInputSchema, DumpHeapSnapshotResultSchema, {
14337
- kind: "mutation",
14338
- auth: "admin"
14339
- });
14364
+ method(_void(), SystemResourceSnapshotSchema), method(_void(), SystemResourceSnapshotSchema.nullable()), method(_void(), SystemMetricsSchema), method(object({ dirPath: string() }), DiskSpaceInfoSchema), method(_void(), MetricsGpuInfoSchema.nullable()), method(_void(), number().nullable()), method(object({ pids: array(number()) }), array(PidResourceStatsSchema)), method(_void(), array(AddonInstanceSchema).readonly()), method(object({ addonId: string() }), PidResourceStatsSchema.nullable()), method(_void(), array(NodeProcessSchema).readonly()), method(GetLoadSeriesInputSchema, NodeLoadSeriesSchema);
14340
14365
  method(object({
14341
14366
  sourceUrl: string(),
14342
14367
  metadata: ModelConvertMetadataSchema,
@@ -18587,7 +18612,8 @@ var MediaFileKindEnum = _enum([
18587
18612
  "plateCrop",
18588
18613
  "keyFrame",
18589
18614
  "keyFrameSmall",
18590
- "thumbnailSmall"
18615
+ "thumbnailSmall",
18616
+ "sceneFrame"
18591
18617
  ]);
18592
18618
  /**
18593
18619
  * One media row ON THE WIRE: what it is, how big it is, and WHERE ITS BYTES
@@ -31466,12 +31492,6 @@ Object.freeze({
31466
31492
  addonId: null,
31467
31493
  access: "view"
31468
31494
  },
31469
- "metricsProvider.dumpHeapSnapshot": {
31470
- capName: "metrics-provider",
31471
- capScope: "system",
31472
- addonId: null,
31473
- access: "create"
31474
- },
31475
31495
  "metricsProvider.getAddonStats": {
31476
31496
  capName: "metrics-provider",
31477
31497
  capScope: "system",
@@ -13274,6 +13274,35 @@ method(_void(), array(string()).readonly(), { auth: "admin" }), method(object({
13274
13274
  auth: "admin"
13275
13275
  });
13276
13276
  /**
13277
+ * Transport bounds for AI capability methods.
13278
+ *
13279
+ * Its own module because `llm.cap.ts` and `llm-runtime.cap.ts` already import
13280
+ * each other: declaring the constant in either one hands the other `undefined`
13281
+ * at module-init time, and an undefined `timeoutMs` silently falls back to the
13282
+ * kernel's 60 s default — the exact failure this constant exists to prevent,
13283
+ * reintroduced invisibly. Found by the guard, not by review.
13284
+ */
13285
+ /**
13286
+ * Ceiling for a cap method that runs inference or loads a model.
13287
+ *
13288
+ * Deliberately far above anything the AI layer itself may wait for (a summary
13289
+ * asks 180 s by default, a rule may ask 600 s), because the TRANSPORT must
13290
+ * never be the layer that gives up first: when it does, the failure is
13291
+ * reported as a transport error for a model that was still thinking, naming
13292
+ * the wrong layer and hiding the real one.
13293
+ *
13294
+ * Measured 2026-09-03: a 6-image vision request needs 44.8 s warm and ~20 s
13295
+ * more on a cold model load. With no declaration every digest failed at
13296
+ * exactly 60 s and shipped without its text.
13297
+ *
13298
+ * A ceiling, not a budget. The AI layer's own timeouts (the rule's `timeoutMs`,
13299
+ * the profile's `timeoutMs` / `firstTokenTimeoutMs`) remain the things that
13300
+ * decide when to stop, because only they can say WHY.
13301
+ */
13302
+ var AI_CAP_TRANSPORT_TIMEOUT_MS = 6e5;
13303
+ /** A multi-gigabyte download. An hour is not generous, it is honest. */
13304
+ var AI_MODEL_INSTALL_TIMEOUT_MS = 60 * 6e4;
13305
+ /**
13277
13306
  * Shared LLM generate contracts — imported by BOTH `llm.cap.ts` (consumer
13278
13307
  * surface) and `llm-runtime.cap.ts` (node-side managed executor) so the two
13279
13308
  * caps stay wire-compatible without a circular cap→cap import.
@@ -13545,16 +13574,19 @@ method(LlmGenerateBaseInputSchema.extend({
13545
13574
  timeoutMs: number().int().positive().optional()
13546
13575
  }), LlmGenerateResultSchema, {
13547
13576
  kind: "mutation",
13548
- auth: "admin"
13577
+ auth: "admin",
13578
+ timeoutMs: AI_CAP_TRANSPORT_TIMEOUT_MS
13549
13579
  }), method(object({ runtime: ManagedRuntimeConfigSchema }), LlmRuntimeStatusSchema, {
13550
13580
  kind: "mutation",
13551
- auth: "admin"
13581
+ auth: "admin",
13582
+ timeoutMs: AI_CAP_TRANSPORT_TIMEOUT_MS
13552
13583
  }), method(object({}), _void(), {
13553
13584
  kind: "mutation",
13554
13585
  auth: "admin"
13555
13586
  }), method(object({}), LlmRuntimeStatusSchema, { auth: "admin" }), method(object({ model: ManagedModelRefSchema }), _void(), {
13556
13587
  kind: "mutation",
13557
- auth: "admin"
13588
+ auth: "admin",
13589
+ timeoutMs: AI_MODEL_INSTALL_TIMEOUT_MS
13558
13590
  }), method(object({ file: string() }), _void(), {
13559
13591
  kind: "mutation",
13560
13592
  auth: "admin"
@@ -13722,7 +13754,13 @@ var ProfileRefInputSchema = object({
13722
13754
  addonId: string(),
13723
13755
  profileId: string()
13724
13756
  });
13725
- method(LlmGenerateBaseInputSchema, LlmGenerateResultSchema, { kind: "mutation" }), method(GenerateVisionInputSchema, LlmGenerateResultSchema, { kind: "mutation" }), method(object({
13757
+ method(LlmGenerateBaseInputSchema, LlmGenerateResultSchema, {
13758
+ kind: "mutation",
13759
+ timeoutMs: AI_CAP_TRANSPORT_TIMEOUT_MS
13760
+ }), method(GenerateVisionInputSchema, LlmGenerateResultSchema, {
13761
+ kind: "mutation",
13762
+ timeoutMs: AI_CAP_TRANSPORT_TIMEOUT_MS
13763
+ }), method(object({
13726
13764
  addonId: string().optional(),
13727
13765
  requestId: string()
13728
13766
  }), _void(), { kind: "mutation" }), method(object({}), array(LlmProfileKindDescriptorSchema)), method(object({}), array(LlmProfileSchema)), method(object({ profile: LlmProfileSchema }), LlmProfileSchema, {
@@ -13733,7 +13771,8 @@ method(LlmGenerateBaseInputSchema, LlmGenerateResultSchema, { kind: "mutation" }
13733
13771
  auth: "admin"
13734
13772
  }), method(ProfileRefInputSchema, LlmGenerateResultSchema, {
13735
13773
  kind: "mutation",
13736
- auth: "admin"
13774
+ auth: "admin",
13775
+ timeoutMs: AI_CAP_TRANSPORT_TIMEOUT_MS
13737
13776
  }), method(ProfileRefInputSchema, array(string())), method(object({}), array(LlmDefaultSchema)), method(object({
13738
13777
  selector: LlmDefaultSelectorSchema,
13739
13778
  profileId: string().nullable()
@@ -14199,17 +14238,6 @@ var ContainerMemoryPointSchema = object({
14199
14238
  */
14200
14239
  gpuShmemBytes: number().nullable()
14201
14240
  }).extend({ atMs: number() });
14202
- var DumpHeapSnapshotInputSchema = object({
14203
- /** The addon whose runner should dump a heap snapshot. */
14204
- addonId: string() });
14205
- var DumpHeapSnapshotResultSchema = object({
14206
- success: boolean(),
14207
- /** Path of the written .heapsnapshot inside the runner's container/host. */
14208
- path: string().optional(),
14209
- /** Process pid that was signalled. */
14210
- pid: number().optional(),
14211
- reason: string().optional()
14212
- });
14213
14241
  /**
14214
14242
  * One point of one function's series.
14215
14243
  *
@@ -14333,10 +14361,7 @@ var SystemMetricsSchema = object({
14333
14361
  gpuPercent: number().optional(),
14334
14362
  gpuMemoryPercent: number().optional()
14335
14363
  });
14336
- method(_void(), SystemResourceSnapshotSchema), method(_void(), SystemResourceSnapshotSchema.nullable()), method(_void(), SystemMetricsSchema), method(object({ dirPath: string() }), DiskSpaceInfoSchema), method(_void(), MetricsGpuInfoSchema.nullable()), method(_void(), number().nullable()), method(object({ pids: array(number()) }), array(PidResourceStatsSchema)), method(_void(), array(AddonInstanceSchema).readonly()), method(object({ addonId: string() }), PidResourceStatsSchema.nullable()), method(_void(), array(NodeProcessSchema).readonly()), method(GetLoadSeriesInputSchema, NodeLoadSeriesSchema), method(DumpHeapSnapshotInputSchema, DumpHeapSnapshotResultSchema, {
14337
- kind: "mutation",
14338
- auth: "admin"
14339
- });
14364
+ method(_void(), SystemResourceSnapshotSchema), method(_void(), SystemResourceSnapshotSchema.nullable()), method(_void(), SystemMetricsSchema), method(object({ dirPath: string() }), DiskSpaceInfoSchema), method(_void(), MetricsGpuInfoSchema.nullable()), method(_void(), number().nullable()), method(object({ pids: array(number()) }), array(PidResourceStatsSchema)), method(_void(), array(AddonInstanceSchema).readonly()), method(object({ addonId: string() }), PidResourceStatsSchema.nullable()), method(_void(), array(NodeProcessSchema).readonly()), method(GetLoadSeriesInputSchema, NodeLoadSeriesSchema);
14340
14365
  method(object({
14341
14366
  sourceUrl: string(),
14342
14367
  metadata: ModelConvertMetadataSchema,
@@ -18587,7 +18612,8 @@ var MediaFileKindEnum = _enum([
18587
18612
  "plateCrop",
18588
18613
  "keyFrame",
18589
18614
  "keyFrameSmall",
18590
- "thumbnailSmall"
18615
+ "thumbnailSmall",
18616
+ "sceneFrame"
18591
18617
  ]);
18592
18618
  /**
18593
18619
  * One media row ON THE WIRE: what it is, how big it is, and WHERE ITS BYTES
@@ -31466,12 +31492,6 @@ Object.freeze({
31466
31492
  addonId: null,
31467
31493
  access: "view"
31468
31494
  },
31469
- "metricsProvider.dumpHeapSnapshot": {
31470
- capName: "metrics-provider",
31471
- capScope: "system",
31472
- addonId: null,
31473
- access: "create"
31474
- },
31475
31495
  "metricsProvider.getAddonStats": {
31476
31496
  capName: "metrics-provider",
31477
31497
  capScope: "system",
@@ -2,7 +2,7 @@ Object.defineProperties(exports, {
2
2
  __esModule: { value: true },
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
- const require_dist = require("../dist-BFbW-DND.js");
5
+ const require_dist = require("../dist-Dn_mYmNE.js");
6
6
  let node_crypto = require("node:crypto");
7
7
  let node_child_process = require("node:child_process");
8
8
  //#region src/ingress/tailscale-cli.ts
@@ -1,4 +1,4 @@
1
- import { a as EventCategory, i as BaseAddon, n as networkAccessCapability } from "../dist-DCvDQ86T.mjs";
1
+ import { a as EventCategory, i as BaseAddon, n as networkAccessCapability } from "../dist-Bjd4m4-U.mjs";
2
2
  import { randomUUID } from "node:crypto";
3
3
  import { execFile } from "node:child_process";
4
4
  import { promisify } from "node:util";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-tailscale",
3
- "version": "1.2.53",
3
+ "version": "1.2.56",
4
4
  "description": "Tailscale bundle for CamStack — joins the host to a tailnet (client) and exposes the hub via Serve/Funnel (ingress). Multi-entry npm package shipping 2 addons under a single bundle.",
5
5
  "keywords": [
6
6
  "camstack",