camstack 1.2.97 → 1.2.98
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.
|
@@ -14522,7 +14522,7 @@ function date4(params) {
|
|
|
14522
14522
|
// ../../node_modules/zod/v4/classic/external.js
|
|
14523
14523
|
config(en_default());
|
|
14524
14524
|
|
|
14525
|
-
// ../types/dist/sleep-
|
|
14525
|
+
// ../types/dist/sleep-BQJlnUOJ.mjs
|
|
14526
14526
|
var WELL_KNOWN_TABS = [
|
|
14527
14527
|
{
|
|
14528
14528
|
id: "overview",
|
package/dist/cli.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
runDiscover
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-GW5K6RH3.js";
|
|
5
5
|
import "./chunk-LMMQX4CK.js";
|
|
6
6
|
|
|
7
7
|
// src/cli.ts
|
|
@@ -38,7 +38,7 @@ async function runServe(args) {
|
|
|
38
38
|
...typeof values.data === "string" ? { data: values.data } : {}
|
|
39
39
|
};
|
|
40
40
|
Object.assign(process.env, buildServeEnv(opts));
|
|
41
|
-
await import("./launcher-
|
|
41
|
+
await import("./launcher-VHGRUBGI.js");
|
|
42
42
|
}
|
|
43
43
|
|
|
44
44
|
// src/commands/agent.ts
|
|
@@ -83,7 +83,7 @@ async function runAgent(args) {
|
|
|
83
83
|
...typeof values.port === "string" ? { port: values.port } : {}
|
|
84
84
|
};
|
|
85
85
|
Object.assign(process.env, buildAgentEnv(opts));
|
|
86
|
-
await import("./launcher-
|
|
86
|
+
await import("./launcher-VHGRUBGI.js");
|
|
87
87
|
}
|
|
88
88
|
|
|
89
89
|
// src/commands/setup.ts
|
|
@@ -1130,7 +1130,7 @@ function isUnknown(_value) {
|
|
|
1130
1130
|
return true;
|
|
1131
1131
|
}
|
|
1132
1132
|
async function resolveServerInteractive(presetNamespace) {
|
|
1133
|
-
const { discoverNodes, resolveHubFromDiscovered, filterHubNodes, DEFAULT_HUB_HTTPS_PORT } = await import("./discover-
|
|
1133
|
+
const { discoverNodes, resolveHubFromDiscovered, filterHubNodes, DEFAULT_HUB_HTTPS_PORT } = await import("./discover-EV3TAGEL.js");
|
|
1134
1134
|
if (presetNamespace) {
|
|
1135
1135
|
const spinner4 = clack.spinner();
|
|
1136
1136
|
spinner4.start(`Discovering hub on LAN (namespace "${presetNamespace}")`);
|
|
@@ -107513,9 +107513,9 @@ var require_event_category_BaEgqJNv = __commonJS({
|
|
|
107513
107513
|
}
|
|
107514
107514
|
});
|
|
107515
107515
|
|
|
107516
|
-
// ../types/dist/sleep-
|
|
107517
|
-
var
|
|
107518
|
-
"../types/dist/sleep-
|
|
107516
|
+
// ../types/dist/sleep-BCUreN6s.js
|
|
107517
|
+
var require_sleep_BCUreN6s = __commonJS({
|
|
107518
|
+
"../types/dist/sleep-BCUreN6s.js"(exports) {
|
|
107519
107519
|
"use strict";
|
|
107520
107520
|
var require_event_category = require_event_category_BaEgqJNv();
|
|
107521
107521
|
var zod = require_zod();
|
|
@@ -108507,6 +108507,7 @@ var require_sleep_BtIF8lWc = __commonJS({
|
|
|
108507
108507
|
}
|
|
108508
108508
|
};
|
|
108509
108509
|
var DATAPLANE_SECRET_HEADER = "x-camstack-dataplane-secret";
|
|
108510
|
+
var SHARE_VIEW_KINDS = ["grid-view", "events-view"];
|
|
108510
108511
|
var CamProfileSchema = zod.z.enum([
|
|
108511
108512
|
"high",
|
|
108512
108513
|
"mid",
|
|
@@ -110875,6 +110876,12 @@ var require_sleep_BtIF8lWc = __commonJS({
|
|
|
110875
110876
|
return ReadinessTimeoutError;
|
|
110876
110877
|
}
|
|
110877
110878
|
});
|
|
110879
|
+
Object.defineProperty(exports, "SHARE_VIEW_KINDS", {
|
|
110880
|
+
enumerable: true,
|
|
110881
|
+
get: function() {
|
|
110882
|
+
return SHARE_VIEW_KINDS;
|
|
110883
|
+
}
|
|
110884
|
+
});
|
|
110878
110885
|
Object.defineProperty(exports, "StreamSourceEntrySchema", {
|
|
110879
110886
|
enumerable: true,
|
|
110880
110887
|
get: function() {
|
|
@@ -111196,7 +111203,7 @@ var require_addon = __commonJS({
|
|
|
111196
111203
|
"use strict";
|
|
111197
111204
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
111198
111205
|
var require_event_category = require_event_category_BaEgqJNv();
|
|
111199
|
-
var require_sleep =
|
|
111206
|
+
var require_sleep = require_sleep_BCUreN6s();
|
|
111200
111207
|
var require_err_msg = require_err_msg_COpsHMw2();
|
|
111201
111208
|
var CAP_INPUT_DEFAULTS = Object.freeze({
|
|
111202
111209
|
"addons": { "getLogs": { "limit": 100 } },
|
|
@@ -118080,9 +118087,9 @@ var require_dist2 = __commonJS({
|
|
|
118080
118087
|
}
|
|
118081
118088
|
});
|
|
118082
118089
|
|
|
118083
|
-
// ../system/dist/manifest-system-deps-
|
|
118084
|
-
var
|
|
118085
|
-
"../system/dist/manifest-system-deps-
|
|
118090
|
+
// ../system/dist/manifest-system-deps-DvY1bY_n.js
|
|
118091
|
+
var require_manifest_system_deps_DvY1bY_n = __commonJS({
|
|
118092
|
+
"../system/dist/manifest-system-deps-DvY1bY_n.js"(exports) {
|
|
118086
118093
|
"use strict";
|
|
118087
118094
|
var require_chunk = require_chunk_Cek0wNdY();
|
|
118088
118095
|
require_hub_cap_forward_DmHNjbB0();
|
|
@@ -118730,7 +118737,8 @@ var require_manifest_system_deps_CdIVy85V = __commonJS({
|
|
|
118730
118737
|
prefix,
|
|
118731
118738
|
access: entry.access,
|
|
118732
118739
|
baseUrl,
|
|
118733
|
-
secret
|
|
118740
|
+
secret,
|
|
118741
|
+
...entry.share !== void 0 ? { share: entry.share } : {}
|
|
118734
118742
|
}));
|
|
118735
118743
|
args.sink?.set(args.addonId, endpoints);
|
|
118736
118744
|
};
|
|
@@ -118740,7 +118748,8 @@ var require_manifest_system_deps_CdIVy85V = __commonJS({
|
|
|
118740
118748
|
await ensureServer();
|
|
118741
118749
|
served.set(prefix, {
|
|
118742
118750
|
access: options.access,
|
|
118743
|
-
handler: options.handler
|
|
118751
|
+
handler: options.handler,
|
|
118752
|
+
...options.share !== void 0 ? { share: options.share } : {}
|
|
118744
118753
|
});
|
|
118745
118754
|
publish();
|
|
118746
118755
|
args.logger.info("data-plane endpoint served", { meta: {
|
|
@@ -130180,7 +130189,7 @@ var require_dist3 = __commonJS({
|
|
|
130180
130189
|
var require_builtins_winston_logging_index = require_winston_logging();
|
|
130181
130190
|
var require_file_data_plane = require_file_data_plane_DO8KbxCe();
|
|
130182
130191
|
var require_tls$1 = require_tls_BxQlomxd();
|
|
130183
|
-
var require_manifest_system_deps =
|
|
130192
|
+
var require_manifest_system_deps = require_manifest_system_deps_DvY1bY_n();
|
|
130184
130193
|
var require_resource_monitor = require_resource_monitor_CdnzxBLP();
|
|
130185
130194
|
var require_custom_action_registry = require_custom_action_registry_jY0NOZK8();
|
|
130186
130195
|
var zod = require_zod();
|
|
@@ -211270,7 +211279,7 @@ var require_dist4 = __commonJS({
|
|
|
211270
211279
|
"use strict";
|
|
211271
211280
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
211272
211281
|
var require_event_category = require_event_category_BaEgqJNv();
|
|
211273
|
-
var require_sleep =
|
|
211282
|
+
var require_sleep = require_sleep_BCUreN6s();
|
|
211274
211283
|
var require_canonical_hash = require_canonical_hash_DNV8S5ET();
|
|
211275
211284
|
var require_enums2 = require_enums();
|
|
211276
211285
|
var require_err_msg = require_err_msg_COpsHMw2();
|
|
@@ -240214,7 +240223,15 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
240214
240223
|
if (!Class) throw new Error(`no device class registered for type "${saved.type}"`);
|
|
240215
240224
|
if (saved.parentDeviceId !== null && !restored.has(saved.parentDeviceId)) throw new Error(`parent device ${saved.parentDeviceId} not restored`);
|
|
240216
240225
|
await this.healSavedConfig(saved, savedDevices);
|
|
240217
|
-
|
|
240226
|
+
try {
|
|
240227
|
+
await this.ctx.kernel.devices.create(saved.stableId, Class, {}, saved.parentDeviceId);
|
|
240228
|
+
} catch (err) {
|
|
240229
|
+
if (!(await this.ctx.kernel.devices.getAll()).some((device2) => device2.stableId === saved.stableId)) throw err;
|
|
240230
|
+
this.ctx.logger.debug("Restore row came to life during its own dial \u2014 kept", { tags: {
|
|
240231
|
+
deviceId: saved.id,
|
|
240232
|
+
stableId: saved.stableId
|
|
240233
|
+
} });
|
|
240234
|
+
}
|
|
240218
240235
|
restored.add(saved.id);
|
|
240219
240236
|
};
|
|
240220
240237
|
const topLevel = savedDevices.filter((saved) => saved.parentDeviceId === null);
|
|
@@ -255389,6 +255406,7 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
255389
255406
|
exports.SCOPE_PRESETS = SCOPE_PRESETS;
|
|
255390
255407
|
exports.SENSOR_FEATURES = SENSOR_FEATURES;
|
|
255391
255408
|
exports.SENSOR_MAP = SENSOR_MAP;
|
|
255409
|
+
exports.SHARE_VIEW_KINDS = require_sleep.SHARE_VIEW_KINDS;
|
|
255392
255410
|
exports.SOURCE_CAPS = SOURCE_CAPS;
|
|
255393
255411
|
exports.SOURCE_CAP_ACTIVE_FIELD = SOURCE_CAP_ACTIVE_FIELD;
|
|
255394
255412
|
exports.SOURCE_CAP_CHANGED_AT_FIELD = SOURCE_CAP_CHANGED_AT_FIELD;
|
|
@@ -415493,6 +415511,7 @@ var require_share_token_service = __commonJS({
|
|
|
415493
415511
|
})();
|
|
415494
415512
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
415495
415513
|
exports.ShareTokenService = exports.ShareTokenRecordSchema = exports.ShareTokenScopeSchema = exports.SHARE_TOKEN_MAX_DEVICES = exports.SHARE_TOKEN_TTL_DEFAULT_SEC = exports.SHARE_TOKEN_TTL_MAX_SEC = exports.SHARE_TOKEN_TTL_MIN_SEC = exports.SHARE_TOKEN_PREFIX = void 0;
|
|
415514
|
+
var types_1 = require_dist4();
|
|
415496
415515
|
var crypto2 = __importStar(__require("crypto"));
|
|
415497
415516
|
var zod_1 = require_zod();
|
|
415498
415517
|
var SHARE_TOKENS_COLLECTION = "share_view_tokens";
|
|
@@ -415506,7 +415525,7 @@ var require_share_token_service = __commonJS({
|
|
|
415506
415525
|
exports.SHARE_TOKEN_TTL_DEFAULT_SEC = 7 * 24 * 60 * 60;
|
|
415507
415526
|
exports.SHARE_TOKEN_MAX_DEVICES = 64;
|
|
415508
415527
|
exports.ShareTokenScopeSchema = zod_1.z.object({
|
|
415509
|
-
kind: zod_1.z.enum(
|
|
415528
|
+
kind: zod_1.z.enum(types_1.SHARE_VIEW_KINDS),
|
|
415510
415529
|
deviceIds: zod_1.z.array(zod_1.z.number().int().nonnegative()).min(1).max(exports.SHARE_TOKEN_MAX_DEVICES)
|
|
415511
415530
|
});
|
|
415512
415531
|
exports.ShareTokenRecordSchema = zod_1.z.object({
|
|
@@ -420202,6 +420221,44 @@ var require_addon_route_jwt_gate = __commonJS({
|
|
|
420202
420221
|
}
|
|
420203
420222
|
});
|
|
420204
420223
|
|
|
420224
|
+
// ../../server/backend/dist/auth/addon-route-share-gate.js
|
|
420225
|
+
var require_addon_route_share_gate = __commonJS({
|
|
420226
|
+
"../../server/backend/dist/auth/addon-route-share-gate.js"(exports) {
|
|
420227
|
+
"use strict";
|
|
420228
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
420229
|
+
exports.SHARE_DEVICES_HEADER = exports.SHARE_KIND_HEADER = void 0;
|
|
420230
|
+
exports.gateAddonShareToken = gateAddonShareToken;
|
|
420231
|
+
exports.stripShareHeaders = stripShareHeaders;
|
|
420232
|
+
exports.SHARE_KIND_HEADER = "x-camstack-share-kind";
|
|
420233
|
+
exports.SHARE_DEVICES_HEADER = "x-camstack-share-devices";
|
|
420234
|
+
function gateAddonShareToken(input) {
|
|
420235
|
+
if (input.record === null)
|
|
420236
|
+
return { ok: false, status: 401, error: "Invalid token" };
|
|
420237
|
+
const kind = input.record.scope.kind;
|
|
420238
|
+
if (!(input.endpoint.share ?? []).includes(kind)) {
|
|
420239
|
+
return { ok: false, status: 403, error: "Share token not accepted here" };
|
|
420240
|
+
}
|
|
420241
|
+
return {
|
|
420242
|
+
ok: true,
|
|
420243
|
+
headers: {
|
|
420244
|
+
[exports.SHARE_KIND_HEADER]: kind,
|
|
420245
|
+
[exports.SHARE_DEVICES_HEADER]: input.record.scope.deviceIds.join(",")
|
|
420246
|
+
}
|
|
420247
|
+
};
|
|
420248
|
+
}
|
|
420249
|
+
function stripShareHeaders(headers) {
|
|
420250
|
+
const out = {};
|
|
420251
|
+
for (const [key, value] of Object.entries(headers)) {
|
|
420252
|
+
const lower = key.toLowerCase();
|
|
420253
|
+
if (lower === exports.SHARE_KIND_HEADER || lower === exports.SHARE_DEVICES_HEADER)
|
|
420254
|
+
continue;
|
|
420255
|
+
out[key] = value;
|
|
420256
|
+
}
|
|
420257
|
+
return out;
|
|
420258
|
+
}
|
|
420259
|
+
}
|
|
420260
|
+
});
|
|
420261
|
+
|
|
420205
420262
|
// ../../server/backend/dist/core/config/config.schema.js
|
|
420206
420263
|
var require_config_schema = __commonJS({
|
|
420207
420264
|
"../../server/backend/dist/core/config/config.schema.js"(exports) {
|
|
@@ -421239,6 +421296,7 @@ var require_addon_registry_service = __commonJS({
|
|
|
421239
421296
|
exports.AddonRegistryService = void 0;
|
|
421240
421297
|
exports.shouldEvictMissingOnDisk = shouldEvictMissingOnDisk;
|
|
421241
421298
|
exports.addonUpdatePayload = addonUpdatePayload;
|
|
421299
|
+
exports.parseDataPlaneEndpoints = parseDataPlaneEndpoints;
|
|
421242
421300
|
exports.shouldEmitProviderRegisteredReady = shouldEmitProviderRegisteredReady;
|
|
421243
421301
|
var node_crypto_1 = __require("crypto");
|
|
421244
421302
|
var fs = __importStar(__require("fs"));
|
|
@@ -421357,9 +421415,30 @@ var require_addon_registry_service = __commonJS({
|
|
|
421357
421415
|
if (typeof prefix !== "string" || typeof baseUrl !== "string" || typeof secret !== "string") {
|
|
421358
421416
|
throw new Error("data-planes: endpoint descriptor missing prefix/baseUrl/secret");
|
|
421359
421417
|
}
|
|
421360
|
-
|
|
421418
|
+
const share = parseDataPlaneShare(Reflect.get(entry, "share"));
|
|
421419
|
+
return {
|
|
421420
|
+
prefix,
|
|
421421
|
+
access: asRouteAccess(Reflect.get(entry, "access")),
|
|
421422
|
+
baseUrl,
|
|
421423
|
+
secret,
|
|
421424
|
+
...share !== void 0 ? { share } : {}
|
|
421425
|
+
};
|
|
421361
421426
|
});
|
|
421362
421427
|
}
|
|
421428
|
+
function parseDataPlaneShare(value) {
|
|
421429
|
+
if (value === void 0)
|
|
421430
|
+
return void 0;
|
|
421431
|
+
if (!Array.isArray(value))
|
|
421432
|
+
throw new Error("data-planes: `share` is not an array");
|
|
421433
|
+
return value.map((kind) => {
|
|
421434
|
+
if (!isShareViewKind(kind))
|
|
421435
|
+
throw new Error(`data-planes: unknown share kind ${String(kind)}`);
|
|
421436
|
+
return kind;
|
|
421437
|
+
});
|
|
421438
|
+
}
|
|
421439
|
+
function isShareViewKind(value) {
|
|
421440
|
+
return typeof value === "string" && types_1.SHARE_VIEW_KINDS.includes(value);
|
|
421441
|
+
}
|
|
421363
421442
|
function shouldEmitProviderRegisteredReady(capability) {
|
|
421364
421443
|
return capability !== "platform-probe";
|
|
421365
421444
|
}
|
|
@@ -428219,6 +428298,7 @@ var require_main4 = __commonJS({
|
|
|
428219
428298
|
var trpc_error_device_tags_1 = require_trpc_error_device_tags();
|
|
428220
428299
|
var ws_request_census_1 = require_ws_request_census();
|
|
428221
428300
|
var addon_route_jwt_gate_js_1 = require_addon_route_jwt_gate();
|
|
428301
|
+
var addon_route_share_gate_js_1 = require_addon_route_share_gate();
|
|
428222
428302
|
var session_cookie_js_1 = require_session_cookie();
|
|
428223
428303
|
var boot_config_1 = require_boot_config();
|
|
428224
428304
|
var integration_id_backfill_1 = require_integration_id_backfill();
|
|
@@ -428770,6 +428850,7 @@ var require_main4 = __commonJS({
|
|
|
428770
428850
|
const dpMatch = dataPlaneRegistry.match(addonId, subPath);
|
|
428771
428851
|
if (dpMatch) {
|
|
428772
428852
|
const access = dpMatch.endpoint.access;
|
|
428853
|
+
let shareHeaders = null;
|
|
428773
428854
|
if (access !== "public") {
|
|
428774
428855
|
const authHeader = request.headers.authorization;
|
|
428775
428856
|
const cookieToken = request.cookies?.[session_cookie_js_1.SESSION_COOKIE];
|
|
@@ -428777,7 +428858,13 @@ var require_main4 = __commonJS({
|
|
|
428777
428858
|
return reply.status(401).send({ error: "Unauthorized" });
|
|
428778
428859
|
}
|
|
428779
428860
|
const token2 = authHeader ? authHeader.replace("Bearer ", "") : cookieToken;
|
|
428780
|
-
if (token2.startsWith("
|
|
428861
|
+
if (token2.startsWith("csv_")) {
|
|
428862
|
+
const record = await shareTokenService.validate(token2);
|
|
428863
|
+
const gate = (0, addon_route_share_gate_js_1.gateAddonShareToken)({ record, endpoint: dpMatch.endpoint });
|
|
428864
|
+
if (!gate.ok)
|
|
428865
|
+
return reply.status(gate.status).send({ error: gate.error });
|
|
428866
|
+
shareHeaders = gate.headers;
|
|
428867
|
+
} else if (token2.startsWith("cst_")) {
|
|
428781
428868
|
const userMgmt = capabilityRegistry?.getSingleton("user-management");
|
|
428782
428869
|
if (!userMgmt)
|
|
428783
428870
|
return reply.status(503).send({ error: "User management not available" });
|
|
@@ -428802,6 +428889,12 @@ var require_main4 = __commonJS({
|
|
|
428802
428889
|
const qIdx = request.url.indexOf("?");
|
|
428803
428890
|
const queryString = qIdx >= 0 ? request.url.slice(qIdx) : "";
|
|
428804
428891
|
const upstreamPath = `/${subPath}${queryString}`;
|
|
428892
|
+
for (const name of Object.keys(request.raw.headers)) {
|
|
428893
|
+
if (name.toLowerCase() === addon_route_share_gate_js_1.SHARE_KIND_HEADER || name.toLowerCase() === addon_route_share_gate_js_1.SHARE_DEVICES_HEADER)
|
|
428894
|
+
delete request.raw.headers[name];
|
|
428895
|
+
}
|
|
428896
|
+
if (shareHeaders !== null)
|
|
428897
|
+
Object.assign(request.raw.headers, shareHeaders);
|
|
428805
428898
|
reply.hijack();
|
|
428806
428899
|
const replayBody = request.body === void 0 ? void 0 : Buffer.isBuffer(request.body) ? request.body : Buffer.from(typeof request.body === "string" ? request.body : JSON.stringify(request.body));
|
|
428807
428900
|
(0, system_1.proxyToUpstream)({
|