@camstack/addon-tailscale 1.1.3 → 1.1.5
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/client/tailscale.addon.js +1 -1
- package/dist/client/tailscale.addon.mjs +1 -1
- package/dist/{dist-BTq7tvIJ.mjs → dist-B6t_56LI.mjs} +44 -11
- package/dist/{dist-DxOA3Ddo.js → dist-BYrw97eJ.js} +44 -11
- package/dist/ingress/tailscale-ingress.addon.js +1 -1
- package/dist/ingress/tailscale-ingress.addon.mjs +1 -1
- package/package.json +1 -1
|
@@ -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-
|
|
27
|
+
const require_dist = require("../dist-BYrw97eJ.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 { i as EventCategory, n as networkAccessCapability, r as BaseAddon, t as meshNetworkCapability } from "../dist-
|
|
1
|
+
import { i as EventCategory, n as networkAccessCapability, r as BaseAddon, t as meshNetworkCapability } from "../dist-B6t_56LI.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";
|
|
@@ -4627,7 +4627,7 @@ function _instanceof(cls, params = {}) {
|
|
|
4627
4627
|
return inst;
|
|
4628
4628
|
}
|
|
4629
4629
|
//#endregion
|
|
4630
|
-
//#region ../types/dist/sleep-
|
|
4630
|
+
//#region ../types/dist/sleep-NOH4yRwj.mjs
|
|
4631
4631
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
4632
4632
|
EventCategory["SystemBoot"] = "system.boot";
|
|
4633
4633
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -5742,15 +5742,24 @@ var BaseAddon = class {
|
|
|
5742
5742
|
} catch {}
|
|
5743
5743
|
}
|
|
5744
5744
|
/**
|
|
5745
|
-
* Resolve the shared models directory
|
|
5746
|
-
*
|
|
5747
|
-
*
|
|
5745
|
+
* Resolve the shared, node-local models directory: `<nodeDataDir>/models`.
|
|
5746
|
+
*
|
|
5747
|
+
* This is the SINGLE centralized models-dir resolver for every inference addon
|
|
5748
|
+
* (detection-pipeline, audio-analyzer, embedding-encoder, model-studio). It is
|
|
5749
|
+
* anchored at the node's own writable data root (`ctx.nodeDataDir`, i.e.
|
|
5750
|
+
* `CAMSTACK_DATA` ?? the kernel boot dir) — never the hub-singleton `storage`
|
|
5751
|
+
* cap, which returns the hub's `/data/models` to every node and breaks any node
|
|
5752
|
+
* whose real data dir differs (e.g. the macOS electron agent).
|
|
5753
|
+
*
|
|
5754
|
+
* `node:path`/`node:fs` are imported dynamically so the `@camstack/types` root
|
|
5755
|
+
* barrel (re-exported into browser bundles) stays free of node builtins.
|
|
5748
5756
|
*/
|
|
5749
5757
|
async resolveModelsDir() {
|
|
5750
|
-
|
|
5751
|
-
|
|
5752
|
-
|
|
5753
|
-
|
|
5758
|
+
const { join } = await import("node:path");
|
|
5759
|
+
const { promises: fsp } = await import("node:fs");
|
|
5760
|
+
const dir = join(this.ctx.nodeDataDir, "models");
|
|
5761
|
+
await fsp.mkdir(dir, { recursive: true });
|
|
5762
|
+
return dir;
|
|
5754
5763
|
}
|
|
5755
5764
|
/**
|
|
5756
5765
|
* Access the runtime capability registry for in-process provider lookups.
|
|
@@ -12646,7 +12655,8 @@ method(object({
|
|
|
12646
12655
|
sessionId: string().optional()
|
|
12647
12656
|
}), ConvertResultSchema, {
|
|
12648
12657
|
kind: "mutation",
|
|
12649
|
-
auth: "admin"
|
|
12658
|
+
auth: "admin",
|
|
12659
|
+
timeoutMs: 6e5
|
|
12650
12660
|
});
|
|
12651
12661
|
var AddonHttpRouteSchema = object({
|
|
12652
12662
|
method: _enum([
|
|
@@ -14199,7 +14209,14 @@ var NotificationRuleConditionsSchema = object({
|
|
|
14199
14209
|
/** Match against `event.data.eventType` token (e.g. `'press_long'`). When non-empty, only events
|
|
14200
14210
|
* carrying a matching `data.eventType` string pass this condition. Rules without this field are
|
|
14201
14211
|
* unaffected (back-compat). Distinct from `rule.eventTypes` which holds EventCategory strings. */
|
|
14202
|
-
eventTypeTokens: array(string()).readonly().optional()
|
|
14212
|
+
eventTypeTokens: array(string()).readonly().optional(),
|
|
14213
|
+
/** Match detections whose CLIP image embedding is semantically similar to this free-text
|
|
14214
|
+
* description. Requires the embedding-encoder cap to have pre-warmed the text vector.
|
|
14215
|
+
* `minSimilarity` is the cosine similarity threshold in [0, 1]. */
|
|
14216
|
+
clipDescription: object({
|
|
14217
|
+
text: string().min(1),
|
|
14218
|
+
minSimilarity: number().min(0).max(1)
|
|
14219
|
+
}).optional()
|
|
14203
14220
|
});
|
|
14204
14221
|
var NotificationRuleTemplateSchema = object({
|
|
14205
14222
|
title: string(),
|
|
@@ -14441,6 +14458,16 @@ var TrackedDetectionSchema = object({
|
|
|
14441
14458
|
zones: array(string()).readonly(),
|
|
14442
14459
|
state: TrackStateSchema
|
|
14443
14460
|
});
|
|
14461
|
+
var ScoredObjectEventSchema = ObjectEventSchema.extend({ score: number() });
|
|
14462
|
+
var SearchObjectEventsInput = object({
|
|
14463
|
+
text: string(),
|
|
14464
|
+
deviceId: number().optional(),
|
|
14465
|
+
since: number().optional(),
|
|
14466
|
+
until: number().optional(),
|
|
14467
|
+
classFilter: string().optional(),
|
|
14468
|
+
limit: number().default(50),
|
|
14469
|
+
minScore: number().min(0).max(1).default(.2)
|
|
14470
|
+
});
|
|
14444
14471
|
DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).readonly()), method(object({
|
|
14445
14472
|
deviceId: number(),
|
|
14446
14473
|
trackId: string()
|
|
@@ -14475,7 +14502,7 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
14475
14502
|
}), method(object({
|
|
14476
14503
|
eventId: string(),
|
|
14477
14504
|
kind: MediaFileKindEnum.optional()
|
|
14478
|
-
}), array(MediaFileSchema).readonly()), method(object({ trackId: string() }), array(MediaFileSchema).readonly()), object({
|
|
14505
|
+
}), array(MediaFileSchema).readonly()), method(object({ trackId: string() }), array(MediaFileSchema).readonly()), method(SearchObjectEventsInput, array(ScoredObjectEventSchema).readonly()), object({
|
|
14479
14506
|
deviceId: number(),
|
|
14480
14507
|
timestamp: number(),
|
|
14481
14508
|
frameWidth: number(),
|
|
@@ -19186,6 +19213,12 @@ Object.freeze({
|
|
|
19186
19213
|
addonId: null,
|
|
19187
19214
|
access: "create"
|
|
19188
19215
|
},
|
|
19216
|
+
"pipelineAnalytics.searchObjectEvents": {
|
|
19217
|
+
capName: "pipeline-analytics",
|
|
19218
|
+
capScope: "device",
|
|
19219
|
+
addonId: null,
|
|
19220
|
+
access: "view"
|
|
19221
|
+
},
|
|
19189
19222
|
"pipelineExecutor.cacheFrameInPool": {
|
|
19190
19223
|
capName: "pipeline-executor",
|
|
19191
19224
|
capScope: "system",
|
|
@@ -4627,7 +4627,7 @@ function _instanceof(cls, params = {}) {
|
|
|
4627
4627
|
return inst;
|
|
4628
4628
|
}
|
|
4629
4629
|
//#endregion
|
|
4630
|
-
//#region ../types/dist/sleep-
|
|
4630
|
+
//#region ../types/dist/sleep-NOH4yRwj.mjs
|
|
4631
4631
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
4632
4632
|
EventCategory["SystemBoot"] = "system.boot";
|
|
4633
4633
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -5742,15 +5742,24 @@ var BaseAddon = class {
|
|
|
5742
5742
|
} catch {}
|
|
5743
5743
|
}
|
|
5744
5744
|
/**
|
|
5745
|
-
* Resolve the shared models directory
|
|
5746
|
-
*
|
|
5747
|
-
*
|
|
5745
|
+
* Resolve the shared, node-local models directory: `<nodeDataDir>/models`.
|
|
5746
|
+
*
|
|
5747
|
+
* This is the SINGLE centralized models-dir resolver for every inference addon
|
|
5748
|
+
* (detection-pipeline, audio-analyzer, embedding-encoder, model-studio). It is
|
|
5749
|
+
* anchored at the node's own writable data root (`ctx.nodeDataDir`, i.e.
|
|
5750
|
+
* `CAMSTACK_DATA` ?? the kernel boot dir) — never the hub-singleton `storage`
|
|
5751
|
+
* cap, which returns the hub's `/data/models` to every node and breaks any node
|
|
5752
|
+
* whose real data dir differs (e.g. the macOS electron agent).
|
|
5753
|
+
*
|
|
5754
|
+
* `node:path`/`node:fs` are imported dynamically so the `@camstack/types` root
|
|
5755
|
+
* barrel (re-exported into browser bundles) stays free of node builtins.
|
|
5748
5756
|
*/
|
|
5749
5757
|
async resolveModelsDir() {
|
|
5750
|
-
|
|
5751
|
-
|
|
5752
|
-
|
|
5753
|
-
|
|
5758
|
+
const { join } = await import("node:path");
|
|
5759
|
+
const { promises: fsp } = await import("node:fs");
|
|
5760
|
+
const dir = join(this.ctx.nodeDataDir, "models");
|
|
5761
|
+
await fsp.mkdir(dir, { recursive: true });
|
|
5762
|
+
return dir;
|
|
5754
5763
|
}
|
|
5755
5764
|
/**
|
|
5756
5765
|
* Access the runtime capability registry for in-process provider lookups.
|
|
@@ -12646,7 +12655,8 @@ method(object({
|
|
|
12646
12655
|
sessionId: string().optional()
|
|
12647
12656
|
}), ConvertResultSchema, {
|
|
12648
12657
|
kind: "mutation",
|
|
12649
|
-
auth: "admin"
|
|
12658
|
+
auth: "admin",
|
|
12659
|
+
timeoutMs: 6e5
|
|
12650
12660
|
});
|
|
12651
12661
|
var AddonHttpRouteSchema = object({
|
|
12652
12662
|
method: _enum([
|
|
@@ -14199,7 +14209,14 @@ var NotificationRuleConditionsSchema = object({
|
|
|
14199
14209
|
/** Match against `event.data.eventType` token (e.g. `'press_long'`). When non-empty, only events
|
|
14200
14210
|
* carrying a matching `data.eventType` string pass this condition. Rules without this field are
|
|
14201
14211
|
* unaffected (back-compat). Distinct from `rule.eventTypes` which holds EventCategory strings. */
|
|
14202
|
-
eventTypeTokens: array(string()).readonly().optional()
|
|
14212
|
+
eventTypeTokens: array(string()).readonly().optional(),
|
|
14213
|
+
/** Match detections whose CLIP image embedding is semantically similar to this free-text
|
|
14214
|
+
* description. Requires the embedding-encoder cap to have pre-warmed the text vector.
|
|
14215
|
+
* `minSimilarity` is the cosine similarity threshold in [0, 1]. */
|
|
14216
|
+
clipDescription: object({
|
|
14217
|
+
text: string().min(1),
|
|
14218
|
+
minSimilarity: number().min(0).max(1)
|
|
14219
|
+
}).optional()
|
|
14203
14220
|
});
|
|
14204
14221
|
var NotificationRuleTemplateSchema = object({
|
|
14205
14222
|
title: string(),
|
|
@@ -14441,6 +14458,16 @@ var TrackedDetectionSchema = object({
|
|
|
14441
14458
|
zones: array(string()).readonly(),
|
|
14442
14459
|
state: TrackStateSchema
|
|
14443
14460
|
});
|
|
14461
|
+
var ScoredObjectEventSchema = ObjectEventSchema.extend({ score: number() });
|
|
14462
|
+
var SearchObjectEventsInput = object({
|
|
14463
|
+
text: string(),
|
|
14464
|
+
deviceId: number().optional(),
|
|
14465
|
+
since: number().optional(),
|
|
14466
|
+
until: number().optional(),
|
|
14467
|
+
classFilter: string().optional(),
|
|
14468
|
+
limit: number().default(50),
|
|
14469
|
+
minScore: number().min(0).max(1).default(.2)
|
|
14470
|
+
});
|
|
14444
14471
|
DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).readonly()), method(object({
|
|
14445
14472
|
deviceId: number(),
|
|
14446
14473
|
trackId: string()
|
|
@@ -14475,7 +14502,7 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
14475
14502
|
}), method(object({
|
|
14476
14503
|
eventId: string(),
|
|
14477
14504
|
kind: MediaFileKindEnum.optional()
|
|
14478
|
-
}), array(MediaFileSchema).readonly()), method(object({ trackId: string() }), array(MediaFileSchema).readonly()), object({
|
|
14505
|
+
}), array(MediaFileSchema).readonly()), method(object({ trackId: string() }), array(MediaFileSchema).readonly()), method(SearchObjectEventsInput, array(ScoredObjectEventSchema).readonly()), object({
|
|
14479
14506
|
deviceId: number(),
|
|
14480
14507
|
timestamp: number(),
|
|
14481
14508
|
frameWidth: number(),
|
|
@@ -19186,6 +19213,12 @@ Object.freeze({
|
|
|
19186
19213
|
addonId: null,
|
|
19187
19214
|
access: "create"
|
|
19188
19215
|
},
|
|
19216
|
+
"pipelineAnalytics.searchObjectEvents": {
|
|
19217
|
+
capName: "pipeline-analytics",
|
|
19218
|
+
capScope: "device",
|
|
19219
|
+
addonId: null,
|
|
19220
|
+
access: "view"
|
|
19221
|
+
},
|
|
19189
19222
|
"pipelineExecutor.cacheFrameInPool": {
|
|
19190
19223
|
capName: "pipeline-executor",
|
|
19191
19224
|
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-
|
|
5
|
+
const require_dist = require("../dist-BYrw97eJ.js");
|
|
6
6
|
let node_child_process = require("node:child_process");
|
|
7
7
|
let node_util = require("node:util");
|
|
8
8
|
let node_crypto = require("node:crypto");
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { i as EventCategory, n as networkAccessCapability, r as BaseAddon } from "../dist-
|
|
1
|
+
import { i as EventCategory, n as networkAccessCapability, r as BaseAddon } from "../dist-B6t_56LI.mjs";
|
|
2
2
|
import { execFile } from "node:child_process";
|
|
3
3
|
import { promisify } from "node:util";
|
|
4
4
|
import { randomUUID } from "node:crypto";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@camstack/addon-tailscale",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.5",
|
|
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",
|