@camstack/system 1.2.115 → 1.2.117
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/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.js +1 -1
- package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.mjs +1 -1
- package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.js +1 -1
- package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.mjs +1 -1
- package/dist/builtins/alerts/alerts.addon.js +1 -1
- package/dist/builtins/alerts/alerts.addon.mjs +1 -1
- package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.js +1 -1
- package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.mjs +1 -1
- package/dist/builtins/console-logging/index.js +1 -1
- package/dist/builtins/console-logging/index.mjs +1 -1
- package/dist/builtins/core-blocks/core-blocks.addon.js +1 -1
- package/dist/builtins/core-blocks/core-blocks.addon.mjs +1 -1
- package/dist/builtins/device-manager/device-manager.addon.js +2 -2
- package/dist/builtins/device-manager/device-manager.addon.mjs +2 -2
- package/dist/builtins/doorbell/virtual-doorbell.addon.js +1 -1
- package/dist/builtins/doorbell/virtual-doorbell.addon.mjs +1 -1
- package/dist/builtins/hub-forwarder/index.js +1 -1
- package/dist/builtins/hub-forwarder/index.mjs +1 -1
- package/dist/builtins/liveness-monitor/liveness-monitor.addon.js +1 -1
- package/dist/builtins/liveness-monitor/liveness-monitor.addon.mjs +1 -1
- package/dist/builtins/local-auth/local-auth.addon.js +1 -1
- package/dist/builtins/local-auth/local-auth.addon.mjs +1 -1
- package/dist/builtins/local-network/ipv6-lan.d.ts +26 -0
- package/dist/builtins/local-network/local-hostname.d.ts +15 -0
- package/dist/builtins/local-network/local-network.addon.d.ts +59 -21
- package/dist/builtins/local-network/local-network.addon.js +369 -50
- package/dist/builtins/local-network/local-network.addon.mjs +365 -51
- package/dist/builtins/loki-logging/index.js +1 -1
- package/dist/builtins/loki-logging/index.mjs +1 -1
- package/dist/builtins/native-metrics/native-metrics.addon.js +1 -1
- package/dist/builtins/native-metrics/native-metrics.addon.mjs +1 -1
- package/dist/builtins/platform-probe/index.js +1 -1
- package/dist/builtins/platform-probe/index.mjs +1 -1
- package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.js +1 -1
- package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.mjs +1 -1
- package/dist/builtins/snapshot/index.js +1 -1
- package/dist/builtins/snapshot/index.mjs +1 -1
- package/dist/builtins/sqlite-storage/filesystem-storage.addon.js +1 -1
- package/dist/builtins/sqlite-storage/filesystem-storage.addon.mjs +1 -1
- package/dist/builtins/sqlite-storage/sqlite-settings.addon.js +2 -2
- package/dist/builtins/sqlite-storage/sqlite-settings.addon.mjs +2 -2
- package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.js +1 -1
- package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.mjs +1 -1
- package/dist/builtins/system-config/system-config.addon.js +1 -1
- package/dist/builtins/system-config/system-config.addon.mjs +1 -1
- package/dist/builtins/winston-logging/index.js +1 -1
- package/dist/builtins/winston-logging/index.mjs +1 -1
- package/dist/{dist-Drb54SZD.mjs → dist-D4Vmj8iw.mjs} +151 -9
- package/dist/{dist-iAwSA2_f.js → dist-DMEGlqg6.js} +151 -9
- package/dist/http/lan-http-bind.d.ts +30 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +30 -472
- package/dist/index.mjs +11 -468
- package/dist/lan-http-bind-DmgpFP6_.js +890 -0
- package/dist/lan-http-bind-jKrj6OjQ.mjs +752 -0
- package/dist/{retired-settings-keys-Dz5-7gjt.mjs → retired-settings-keys--aM_vGF9.mjs} +1 -1
- package/dist/{retired-settings-keys-OfhqQio4.js → retired-settings-keys-DET4YkAU.js} +1 -1
- package/dist/tls/cert-manager.d.ts +11 -0
- package/dist/tls/index.d.ts +3 -1
- package/dist/tls/tls-status.d.ts +16 -0
- package/dist/tls/uploaded-cert.d.ts +14 -0
- package/package.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { V as filesystemBrowseCapability, pt as storageProviderCapability, yt as BaseAddon } from "../../dist-
|
|
1
|
+
import { V as filesystemBrowseCapability, pt as storageProviderCapability, yt as BaseAddon } from "../../dist-D4Vmj8iw.mjs";
|
|
2
2
|
import { randomUUID } from "node:crypto";
|
|
3
3
|
import { mkdir, readdir, realpath, statfs } from "node:fs/promises";
|
|
4
4
|
import * as path$1 from "node:path";
|
|
@@ -3,8 +3,8 @@ Object.defineProperties(exports, {
|
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
5
|
const require_chunk = require("../../chunk-Cek0wNdY.js");
|
|
6
|
-
const require_dist = require("../../dist-
|
|
7
|
-
const require_retired_settings_keys = require("../../retired-settings-keys-
|
|
6
|
+
const require_dist = require("../../dist-DMEGlqg6.js");
|
|
7
|
+
const require_retired_settings_keys = require("../../retired-settings-keys-DET4YkAU.js");
|
|
8
8
|
let node_crypto = require("node:crypto");
|
|
9
9
|
let node_fs = require("node:fs");
|
|
10
10
|
let node_module = require("node:module");
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { A as dataStoreProviderCapability, Bt as parseJsonUnknown, _t as vectorStoreCapability, f as RUNTIME_DEFAULTS, gt as vectorDimFromBase64, j as decodeVectorBase64, kt as asJsonObject, vt as errMsg, w as bareAddonId, yt as BaseAddon } from "../../dist-
|
|
2
|
-
import { r as retiredKeyStoreOf, t as purgeRetiredSettingsKeys } from "../../retired-settings-keys
|
|
1
|
+
import { A as dataStoreProviderCapability, Bt as parseJsonUnknown, _t as vectorStoreCapability, f as RUNTIME_DEFAULTS, gt as vectorDimFromBase64, j as decodeVectorBase64, kt as asJsonObject, vt as errMsg, w as bareAddonId, yt as BaseAddon } from "../../dist-D4Vmj8iw.mjs";
|
|
2
|
+
import { r as retiredKeyStoreOf, t as purgeRetiredSettingsKeys } from "../../retired-settings-keys--aM_vGF9.mjs";
|
|
3
3
|
import { createRequire } from "node:module";
|
|
4
4
|
import { randomUUID } from "node:crypto";
|
|
5
5
|
import { statSync } from "node:fs";
|
|
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
|
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
5
|
const require_chunk = require("../../chunk-Cek0wNdY.js");
|
|
6
|
-
const require_dist = require("../../dist-
|
|
6
|
+
const require_dist = require("../../dist-DMEGlqg6.js");
|
|
7
7
|
let node_crypto = require("node:crypto");
|
|
8
8
|
let node_fs_promises = require("node:fs/promises");
|
|
9
9
|
node_fs_promises = require_chunk.__toESM(node_fs_promises);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { dt as storageCapability, ft as storageMigrationCapability, g as StorageMigrationJobSchema, h as StorageLocationTypeSchema, lt as settingsStoreCapability, yt as BaseAddon, zt as parseJsonObject } from "../../dist-
|
|
1
|
+
import { dt as storageCapability, ft as storageMigrationCapability, g as StorageMigrationJobSchema, h as StorageLocationTypeSchema, lt as settingsStoreCapability, yt as BaseAddon, zt as parseJsonObject } from "../../dist-D4Vmj8iw.mjs";
|
|
2
2
|
import { randomUUID } from "node:crypto";
|
|
3
3
|
import * as fs from "node:fs/promises";
|
|
4
4
|
import * as path$1 from "node:path";
|
|
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
|
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
5
|
require("../../chunk-Cek0wNdY.js");
|
|
6
|
-
const require_dist = require("../../dist-
|
|
6
|
+
const require_dist = require("../../dist-DMEGlqg6.js");
|
|
7
7
|
//#region src/builtins/system-config/system-config.addon.ts
|
|
8
8
|
/**
|
|
9
9
|
* Built-in `system-config` addon — Phase 4 of the settings redesign.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { It as hydrateSchema, vt as errMsg, yt as BaseAddon } from "../../dist-
|
|
1
|
+
import { It as hydrateSchema, vt as errMsg, yt as BaseAddon } from "../../dist-D4Vmj8iw.mjs";
|
|
2
2
|
//#region src/builtins/system-config/system-config.addon.ts
|
|
3
3
|
/**
|
|
4
4
|
* Built-in `system-config` addon — Phase 4 of the settings redesign.
|
|
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
|
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
5
|
const require_chunk = require("../../chunk-Cek0wNdY.js");
|
|
6
|
-
const require_dist = require("../../dist-
|
|
6
|
+
const require_dist = require("../../dist-DMEGlqg6.js");
|
|
7
7
|
const require_formatter = require("../../formatter-DqAKDlvN.js");
|
|
8
8
|
let node_path = require("node:path");
|
|
9
9
|
node_path = require_chunk.__toESM(node_path);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { X as logDestinationCapability, yt as BaseAddon } from "../../dist-
|
|
1
|
+
import { X as logDestinationCapability, yt as BaseAddon } from "../../dist-D4Vmj8iw.mjs";
|
|
2
2
|
import { t as formatLogLine } from "../../formatter-B7qW8bPJ.mjs";
|
|
3
3
|
import * as path$1 from "node:path";
|
|
4
4
|
import path from "node:path";
|
|
@@ -19197,6 +19197,9 @@ var storageProviderCapability = {
|
|
|
19197
19197
|
endDownload: method(EndDownloadInputSchema, z.void(), { kind: "mutation" })
|
|
19198
19198
|
}
|
|
19199
19199
|
};
|
|
19200
|
+
/** Profile-exported FormBuilder schema. Shape is ConfigUISchema at the UI. */
|
|
19201
|
+
var ProfileSettingsSchemaBridge = z.unknown().nullable();
|
|
19202
|
+
var ProfileSettingsBagSchema = z.record(z.string(), z.unknown());
|
|
19200
19203
|
/**
|
|
19201
19204
|
* A live terminal session hosted by the provider addon. Output and input do
|
|
19202
19205
|
* NOT flow through the capability — they use the addon data plane
|
|
@@ -19226,7 +19229,14 @@ var TerminalSessionInfoSchema = z.object({
|
|
|
19226
19229
|
var TerminalProfileInfoSchema = z.object({
|
|
19227
19230
|
profileId: z.string(),
|
|
19228
19231
|
label: z.string(),
|
|
19229
|
-
description: z.string().optional()
|
|
19232
|
+
description: z.string().optional(),
|
|
19233
|
+
/** Spawn defaults the instance form copies on create. */
|
|
19234
|
+
executable: z.string().optional(),
|
|
19235
|
+
args: z.array(z.string()).readonly().optional(),
|
|
19236
|
+
cwd: z.string().optional(),
|
|
19237
|
+
environment: z.array(z.string()).readonly().optional(),
|
|
19238
|
+
/** ConfigUISchema for instance knobs, or null when the profile has none. */
|
|
19239
|
+
settingsSchema: ProfileSettingsSchemaBridge.optional()
|
|
19230
19240
|
});
|
|
19231
19241
|
/**
|
|
19232
19242
|
* A durable operator-created Terminal instance. Profiles are templates; only
|
|
@@ -19239,7 +19249,12 @@ var TerminalInstanceInfoSchema = z.object({
|
|
|
19239
19249
|
profileId: z.string(),
|
|
19240
19250
|
profileLabel: z.string(),
|
|
19241
19251
|
name: z.string(),
|
|
19242
|
-
enabled: z.boolean()
|
|
19252
|
+
enabled: z.boolean(),
|
|
19253
|
+
executable: z.string(),
|
|
19254
|
+
args: z.array(z.string()).readonly(),
|
|
19255
|
+
cwd: z.string(),
|
|
19256
|
+
environment: z.array(z.string()).readonly(),
|
|
19257
|
+
profileSettings: ProfileSettingsBagSchema
|
|
19243
19258
|
});
|
|
19244
19259
|
var TerminalLegacyCameraSchema = z.object({
|
|
19245
19260
|
stableId: z.string(),
|
|
@@ -19285,7 +19300,24 @@ var terminalSessionCapability = {
|
|
|
19285
19300
|
createInstance: method(z.object({
|
|
19286
19301
|
targetNodeId: z.string().min(1),
|
|
19287
19302
|
profileId: z.string().min(1),
|
|
19288
|
-
name: z.string().trim().min(1).max(160).optional()
|
|
19303
|
+
name: z.string().trim().min(1).max(160).optional(),
|
|
19304
|
+
executable: z.string().max(1024).optional(),
|
|
19305
|
+
args: z.array(z.string().max(2048)).max(64).optional(),
|
|
19306
|
+
cwd: z.string().max(1024).optional(),
|
|
19307
|
+
environment: z.array(z.string().max(4096)).max(64).optional(),
|
|
19308
|
+
profileSettings: ProfileSettingsBagSchema.optional()
|
|
19309
|
+
}), TerminalInstanceInfoSchema, {
|
|
19310
|
+
kind: "mutation",
|
|
19311
|
+
auth: "admin"
|
|
19312
|
+
}),
|
|
19313
|
+
updateInstance: method(z.object({
|
|
19314
|
+
instanceId: z.string().min(1),
|
|
19315
|
+
name: z.string().trim().min(1).max(160).optional(),
|
|
19316
|
+
executable: z.string().max(1024).optional(),
|
|
19317
|
+
args: z.array(z.string().max(2048)).max(64).optional(),
|
|
19318
|
+
cwd: z.string().max(1024).optional(),
|
|
19319
|
+
environment: z.array(z.string().max(4096)).max(64).optional(),
|
|
19320
|
+
profileSettings: ProfileSettingsBagSchema.optional()
|
|
19289
19321
|
}), TerminalInstanceInfoSchema, {
|
|
19290
19322
|
kind: "mutation",
|
|
19291
19323
|
auth: "admin"
|
|
@@ -19320,7 +19352,11 @@ var terminalSessionCapability = {
|
|
|
19320
19352
|
openSession: method(z.object({
|
|
19321
19353
|
profileId: z.string(),
|
|
19322
19354
|
cols: z.number().int().positive(),
|
|
19323
|
-
rows: z.number().int().positive()
|
|
19355
|
+
rows: z.number().int().positive(),
|
|
19356
|
+
executable: z.string().max(1024).optional(),
|
|
19357
|
+
args: z.array(z.string().max(2048)).max(64).optional(),
|
|
19358
|
+
cwd: z.string().max(1024).optional(),
|
|
19359
|
+
environment: z.array(z.string().max(4096)).max(64).optional()
|
|
19324
19360
|
}), TerminalSessionInfoSchema, {
|
|
19325
19361
|
kind: "mutation",
|
|
19326
19362
|
auth: "admin"
|
|
@@ -23753,10 +23789,10 @@ var lawnMowerControlCapability = {
|
|
|
23753
23789
|
*
|
|
23754
23790
|
* • The SDK (mobile / web client) consumes `getConnectionEndpoints()`
|
|
23755
23791
|
* to receive an ordered list of candidate base URLs it should race
|
|
23756
|
-
* on connect — LAN IPv4 first (lowest latency
|
|
23757
|
-
* then public hostname (if a tunnel is
|
|
23758
|
-
* race them with short timeouts and stick with the
|
|
23759
|
-
* session.
|
|
23792
|
+
* on connect — LAN IPv4 and stable LAN IPv6 first (lowest latency
|
|
23793
|
+
* when on the same network), then public hostname (if a tunnel is
|
|
23794
|
+
* up). The SDK can race them with short timeouts and stick with the
|
|
23795
|
+
* winner for the session.
|
|
23760
23796
|
*
|
|
23761
23797
|
* Why hub-only: agents are not directly addressable by the operator's
|
|
23762
23798
|
* clients — they reverse-connect to the hub. Exposing their interfaces
|
|
@@ -23919,6 +23955,20 @@ var AllowedAddressesSchema = z.object({
|
|
|
23919
23955
|
* Network Addresses admin page and persisted by the addon.
|
|
23920
23956
|
*/
|
|
23921
23957
|
addresses: z.array(z.string()).readonly() });
|
|
23958
|
+
var TlsStatusSchema = z.object({
|
|
23959
|
+
mode: z.enum([
|
|
23960
|
+
"generated",
|
|
23961
|
+
"uploaded",
|
|
23962
|
+
"disabled"
|
|
23963
|
+
]),
|
|
23964
|
+
leafFingerprintSha256: z.string().nullable(),
|
|
23965
|
+
caFingerprintSha256: z.string().nullable(),
|
|
23966
|
+
validTo: z.string().nullable(),
|
|
23967
|
+
sans: z.array(z.string()),
|
|
23968
|
+
caCertPem: z.string().nullable(),
|
|
23969
|
+
reissueError: z.string().nullable(),
|
|
23970
|
+
restartRequired: z.boolean()
|
|
23971
|
+
});
|
|
23922
23972
|
var localNetworkCapability = {
|
|
23923
23973
|
name: "local-network",
|
|
23924
23974
|
scope: "system",
|
|
@@ -24024,7 +24074,34 @@ var localNetworkCapability = {
|
|
|
24024
24074
|
* when the operator wants to wipe their manual edits and start
|
|
24025
24075
|
* over from the auto-detected best matches.
|
|
24026
24076
|
*/
|
|
24027
|
-
resetAllowlistToBestMatch: method(z.void(), AllowedAddressesSchema, { kind: "mutation" })
|
|
24077
|
+
resetAllowlistToBestMatch: method(z.void(), AllowedAddressesSchema, { kind: "mutation" }),
|
|
24078
|
+
/**
|
|
24079
|
+
* Live TLS material for the Network → Local access certificate card.
|
|
24080
|
+
* LAN HTTP / hostname are addon settings (`globalSettingsSchema`), not
|
|
24081
|
+
* a second store — this query is status, not configuration.
|
|
24082
|
+
*/
|
|
24083
|
+
getTlsStatus: method(z.void(), TlsStatusSchema),
|
|
24084
|
+
/** Issue a new leaf under the existing local CA. Disabled in uploaded mode. */
|
|
24085
|
+
regenerateCertificate: method(z.object({ reason: z.string().optional() }), TlsStatusSchema, {
|
|
24086
|
+
kind: "mutation",
|
|
24087
|
+
auth: "admin"
|
|
24088
|
+
}),
|
|
24089
|
+
/** Replace the served material with operator-supplied PEMs. */
|
|
24090
|
+
uploadCertificate: method(z.object({
|
|
24091
|
+
certPem: z.string().min(1),
|
|
24092
|
+
keyPem: z.string().min(1),
|
|
24093
|
+
caPem: z.string().optional()
|
|
24094
|
+
}), TlsStatusSchema, {
|
|
24095
|
+
kind: "mutation",
|
|
24096
|
+
auth: "admin"
|
|
24097
|
+
}),
|
|
24098
|
+
/** The local CA PEM, or empty when there is none to download. */
|
|
24099
|
+
downloadCa: method(z.void(), z.object({ pem: z.string() })),
|
|
24100
|
+
/** Drop uploaded material and return to the generated local CA. */
|
|
24101
|
+
revertToGeneratedCertificate: method(z.void(), TlsStatusSchema, {
|
|
24102
|
+
kind: "mutation",
|
|
24103
|
+
auth: "admin"
|
|
24104
|
+
})
|
|
24028
24105
|
},
|
|
24029
24106
|
/** BIG PLAN 2: declarative mount hint — read by `@camstack/system` `buildCapRouters`. */
|
|
24030
24107
|
mount: { kind: "hub-only" }
|
|
@@ -32478,6 +32555,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
32478
32555
|
addonId: null,
|
|
32479
32556
|
access: "create"
|
|
32480
32557
|
},
|
|
32558
|
+
"localNetwork.downloadCa": {
|
|
32559
|
+
capName: "local-network",
|
|
32560
|
+
capScope: "system",
|
|
32561
|
+
addonId: null,
|
|
32562
|
+
access: "view"
|
|
32563
|
+
},
|
|
32481
32564
|
"localNetwork.getAllowedAddresses": {
|
|
32482
32565
|
capName: "local-network",
|
|
32483
32566
|
capScope: "system",
|
|
@@ -32502,18 +32585,36 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
32502
32585
|
addonId: null,
|
|
32503
32586
|
access: "view"
|
|
32504
32587
|
},
|
|
32588
|
+
"localNetwork.getTlsStatus": {
|
|
32589
|
+
capName: "local-network",
|
|
32590
|
+
capScope: "system",
|
|
32591
|
+
addonId: null,
|
|
32592
|
+
access: "view"
|
|
32593
|
+
},
|
|
32505
32594
|
"localNetwork.list": {
|
|
32506
32595
|
capName: "local-network",
|
|
32507
32596
|
capScope: "system",
|
|
32508
32597
|
addonId: null,
|
|
32509
32598
|
access: "view"
|
|
32510
32599
|
},
|
|
32600
|
+
"localNetwork.regenerateCertificate": {
|
|
32601
|
+
capName: "local-network",
|
|
32602
|
+
capScope: "system",
|
|
32603
|
+
addonId: null,
|
|
32604
|
+
access: "create"
|
|
32605
|
+
},
|
|
32511
32606
|
"localNetwork.resetAllowlistToBestMatch": {
|
|
32512
32607
|
capName: "local-network",
|
|
32513
32608
|
capScope: "system",
|
|
32514
32609
|
addonId: null,
|
|
32515
32610
|
access: "delete"
|
|
32516
32611
|
},
|
|
32612
|
+
"localNetwork.revertToGeneratedCertificate": {
|
|
32613
|
+
capName: "local-network",
|
|
32614
|
+
capScope: "system",
|
|
32615
|
+
addonId: null,
|
|
32616
|
+
access: "create"
|
|
32617
|
+
},
|
|
32517
32618
|
"localNetwork.setAllowedAddresses": {
|
|
32518
32619
|
capName: "local-network",
|
|
32519
32620
|
capScope: "system",
|
|
@@ -32526,6 +32627,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
32526
32627
|
addonId: null,
|
|
32527
32628
|
access: "create"
|
|
32528
32629
|
},
|
|
32630
|
+
"localNetwork.uploadCertificate": {
|
|
32631
|
+
capName: "local-network",
|
|
32632
|
+
capScope: "system",
|
|
32633
|
+
addonId: null,
|
|
32634
|
+
access: "create"
|
|
32635
|
+
},
|
|
32529
32636
|
"lockControl.lock": {
|
|
32530
32637
|
capName: "lock-control",
|
|
32531
32638
|
capScope: "device",
|
|
@@ -35406,6 +35513,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
35406
35513
|
addonId: null,
|
|
35407
35514
|
access: "create"
|
|
35408
35515
|
},
|
|
35516
|
+
"terminalSession.updateInstance": {
|
|
35517
|
+
capName: "terminal-session",
|
|
35518
|
+
capScope: "system",
|
|
35519
|
+
addonId: null,
|
|
35520
|
+
access: "create"
|
|
35521
|
+
},
|
|
35409
35522
|
"terminalSession.writeInput": {
|
|
35410
35523
|
capName: "terminal-session",
|
|
35411
35524
|
capScope: "system",
|
|
@@ -38173,6 +38286,35 @@ Object.freeze(Object.fromEntries([{
|
|
|
38173
38286
|
}]
|
|
38174
38287
|
}].map((s) => [s.stepId, s.defaultModelId])));
|
|
38175
38288
|
z.string().min(1);
|
|
38289
|
+
var CLUSTER_STEP_SETTING_FIELDS = [{
|
|
38290
|
+
stepId: "face-embedding",
|
|
38291
|
+
key: "minLandmarkFaceSize",
|
|
38292
|
+
label: "Min face size for recognition (detection px)",
|
|
38293
|
+
description: "Refuse to embed a face smaller than this IN THE DETECTION FRAME. Applies to every node — the enrolled gallery is one index, and two admission floors would fill it from two policies. 0 disables the gate.",
|
|
38294
|
+
type: "slider",
|
|
38295
|
+
min: 0,
|
|
38296
|
+
max: 64,
|
|
38297
|
+
step: 2,
|
|
38298
|
+
default: 24
|
|
38299
|
+
}];
|
|
38300
|
+
function clusterStepSettingKey(stepId, fieldKey) {
|
|
38301
|
+
return `clusterStepSetting:${stepId}:${fieldKey}`;
|
|
38302
|
+
}
|
|
38303
|
+
var ClusterSettingNumberSchema = z.number().finite();
|
|
38304
|
+
function readClusterStepSettings(config) {
|
|
38305
|
+
const out = {};
|
|
38306
|
+
for (const field of CLUSTER_STEP_SETTING_FIELDS) {
|
|
38307
|
+
const parsed = ClusterSettingNumberSchema.safeParse(config[clusterStepSettingKey(field.stepId, field.key)]);
|
|
38308
|
+
const value = parsed.success ? parsed.data : field.default;
|
|
38309
|
+
const existing = out[field.stepId] ?? {};
|
|
38310
|
+
out[field.stepId] = {
|
|
38311
|
+
...existing,
|
|
38312
|
+
[field.key]: value
|
|
38313
|
+
};
|
|
38314
|
+
}
|
|
38315
|
+
return out;
|
|
38316
|
+
}
|
|
38317
|
+
readClusterStepSettings({});
|
|
38176
38318
|
z.object({
|
|
38177
38319
|
/**
|
|
38178
38320
|
* Fraction of the box's own size added on EACH side before cutting.
|
|
@@ -19197,6 +19197,9 @@ var storageProviderCapability = {
|
|
|
19197
19197
|
endDownload: method(EndDownloadInputSchema, zod.z.void(), { kind: "mutation" })
|
|
19198
19198
|
}
|
|
19199
19199
|
};
|
|
19200
|
+
/** Profile-exported FormBuilder schema. Shape is ConfigUISchema at the UI. */
|
|
19201
|
+
var ProfileSettingsSchemaBridge = zod.z.unknown().nullable();
|
|
19202
|
+
var ProfileSettingsBagSchema = zod.z.record(zod.z.string(), zod.z.unknown());
|
|
19200
19203
|
/**
|
|
19201
19204
|
* A live terminal session hosted by the provider addon. Output and input do
|
|
19202
19205
|
* NOT flow through the capability — they use the addon data plane
|
|
@@ -19226,7 +19229,14 @@ var TerminalSessionInfoSchema = zod.z.object({
|
|
|
19226
19229
|
var TerminalProfileInfoSchema = zod.z.object({
|
|
19227
19230
|
profileId: zod.z.string(),
|
|
19228
19231
|
label: zod.z.string(),
|
|
19229
|
-
description: zod.z.string().optional()
|
|
19232
|
+
description: zod.z.string().optional(),
|
|
19233
|
+
/** Spawn defaults the instance form copies on create. */
|
|
19234
|
+
executable: zod.z.string().optional(),
|
|
19235
|
+
args: zod.z.array(zod.z.string()).readonly().optional(),
|
|
19236
|
+
cwd: zod.z.string().optional(),
|
|
19237
|
+
environment: zod.z.array(zod.z.string()).readonly().optional(),
|
|
19238
|
+
/** ConfigUISchema for instance knobs, or null when the profile has none. */
|
|
19239
|
+
settingsSchema: ProfileSettingsSchemaBridge.optional()
|
|
19230
19240
|
});
|
|
19231
19241
|
/**
|
|
19232
19242
|
* A durable operator-created Terminal instance. Profiles are templates; only
|
|
@@ -19239,7 +19249,12 @@ var TerminalInstanceInfoSchema = zod.z.object({
|
|
|
19239
19249
|
profileId: zod.z.string(),
|
|
19240
19250
|
profileLabel: zod.z.string(),
|
|
19241
19251
|
name: zod.z.string(),
|
|
19242
|
-
enabled: zod.z.boolean()
|
|
19252
|
+
enabled: zod.z.boolean(),
|
|
19253
|
+
executable: zod.z.string(),
|
|
19254
|
+
args: zod.z.array(zod.z.string()).readonly(),
|
|
19255
|
+
cwd: zod.z.string(),
|
|
19256
|
+
environment: zod.z.array(zod.z.string()).readonly(),
|
|
19257
|
+
profileSettings: ProfileSettingsBagSchema
|
|
19243
19258
|
});
|
|
19244
19259
|
var TerminalLegacyCameraSchema = zod.z.object({
|
|
19245
19260
|
stableId: zod.z.string(),
|
|
@@ -19285,7 +19300,24 @@ var terminalSessionCapability = {
|
|
|
19285
19300
|
createInstance: method(zod.z.object({
|
|
19286
19301
|
targetNodeId: zod.z.string().min(1),
|
|
19287
19302
|
profileId: zod.z.string().min(1),
|
|
19288
|
-
name: zod.z.string().trim().min(1).max(160).optional()
|
|
19303
|
+
name: zod.z.string().trim().min(1).max(160).optional(),
|
|
19304
|
+
executable: zod.z.string().max(1024).optional(),
|
|
19305
|
+
args: zod.z.array(zod.z.string().max(2048)).max(64).optional(),
|
|
19306
|
+
cwd: zod.z.string().max(1024).optional(),
|
|
19307
|
+
environment: zod.z.array(zod.z.string().max(4096)).max(64).optional(),
|
|
19308
|
+
profileSettings: ProfileSettingsBagSchema.optional()
|
|
19309
|
+
}), TerminalInstanceInfoSchema, {
|
|
19310
|
+
kind: "mutation",
|
|
19311
|
+
auth: "admin"
|
|
19312
|
+
}),
|
|
19313
|
+
updateInstance: method(zod.z.object({
|
|
19314
|
+
instanceId: zod.z.string().min(1),
|
|
19315
|
+
name: zod.z.string().trim().min(1).max(160).optional(),
|
|
19316
|
+
executable: zod.z.string().max(1024).optional(),
|
|
19317
|
+
args: zod.z.array(zod.z.string().max(2048)).max(64).optional(),
|
|
19318
|
+
cwd: zod.z.string().max(1024).optional(),
|
|
19319
|
+
environment: zod.z.array(zod.z.string().max(4096)).max(64).optional(),
|
|
19320
|
+
profileSettings: ProfileSettingsBagSchema.optional()
|
|
19289
19321
|
}), TerminalInstanceInfoSchema, {
|
|
19290
19322
|
kind: "mutation",
|
|
19291
19323
|
auth: "admin"
|
|
@@ -19320,7 +19352,11 @@ var terminalSessionCapability = {
|
|
|
19320
19352
|
openSession: method(zod.z.object({
|
|
19321
19353
|
profileId: zod.z.string(),
|
|
19322
19354
|
cols: zod.z.number().int().positive(),
|
|
19323
|
-
rows: zod.z.number().int().positive()
|
|
19355
|
+
rows: zod.z.number().int().positive(),
|
|
19356
|
+
executable: zod.z.string().max(1024).optional(),
|
|
19357
|
+
args: zod.z.array(zod.z.string().max(2048)).max(64).optional(),
|
|
19358
|
+
cwd: zod.z.string().max(1024).optional(),
|
|
19359
|
+
environment: zod.z.array(zod.z.string().max(4096)).max(64).optional()
|
|
19324
19360
|
}), TerminalSessionInfoSchema, {
|
|
19325
19361
|
kind: "mutation",
|
|
19326
19362
|
auth: "admin"
|
|
@@ -23753,10 +23789,10 @@ var lawnMowerControlCapability = {
|
|
|
23753
23789
|
*
|
|
23754
23790
|
* • The SDK (mobile / web client) consumes `getConnectionEndpoints()`
|
|
23755
23791
|
* to receive an ordered list of candidate base URLs it should race
|
|
23756
|
-
* on connect — LAN IPv4 first (lowest latency
|
|
23757
|
-
* then public hostname (if a tunnel is
|
|
23758
|
-
* race them with short timeouts and stick with the
|
|
23759
|
-
* session.
|
|
23792
|
+
* on connect — LAN IPv4 and stable LAN IPv6 first (lowest latency
|
|
23793
|
+
* when on the same network), then public hostname (if a tunnel is
|
|
23794
|
+
* up). The SDK can race them with short timeouts and stick with the
|
|
23795
|
+
* winner for the session.
|
|
23760
23796
|
*
|
|
23761
23797
|
* Why hub-only: agents are not directly addressable by the operator's
|
|
23762
23798
|
* clients — they reverse-connect to the hub. Exposing their interfaces
|
|
@@ -23919,6 +23955,20 @@ var AllowedAddressesSchema = zod.z.object({
|
|
|
23919
23955
|
* Network Addresses admin page and persisted by the addon.
|
|
23920
23956
|
*/
|
|
23921
23957
|
addresses: zod.z.array(zod.z.string()).readonly() });
|
|
23958
|
+
var TlsStatusSchema = zod.z.object({
|
|
23959
|
+
mode: zod.z.enum([
|
|
23960
|
+
"generated",
|
|
23961
|
+
"uploaded",
|
|
23962
|
+
"disabled"
|
|
23963
|
+
]),
|
|
23964
|
+
leafFingerprintSha256: zod.z.string().nullable(),
|
|
23965
|
+
caFingerprintSha256: zod.z.string().nullable(),
|
|
23966
|
+
validTo: zod.z.string().nullable(),
|
|
23967
|
+
sans: zod.z.array(zod.z.string()),
|
|
23968
|
+
caCertPem: zod.z.string().nullable(),
|
|
23969
|
+
reissueError: zod.z.string().nullable(),
|
|
23970
|
+
restartRequired: zod.z.boolean()
|
|
23971
|
+
});
|
|
23922
23972
|
var localNetworkCapability = {
|
|
23923
23973
|
name: "local-network",
|
|
23924
23974
|
scope: "system",
|
|
@@ -24024,7 +24074,34 @@ var localNetworkCapability = {
|
|
|
24024
24074
|
* when the operator wants to wipe their manual edits and start
|
|
24025
24075
|
* over from the auto-detected best matches.
|
|
24026
24076
|
*/
|
|
24027
|
-
resetAllowlistToBestMatch: method(zod.z.void(), AllowedAddressesSchema, { kind: "mutation" })
|
|
24077
|
+
resetAllowlistToBestMatch: method(zod.z.void(), AllowedAddressesSchema, { kind: "mutation" }),
|
|
24078
|
+
/**
|
|
24079
|
+
* Live TLS material for the Network → Local access certificate card.
|
|
24080
|
+
* LAN HTTP / hostname are addon settings (`globalSettingsSchema`), not
|
|
24081
|
+
* a second store — this query is status, not configuration.
|
|
24082
|
+
*/
|
|
24083
|
+
getTlsStatus: method(zod.z.void(), TlsStatusSchema),
|
|
24084
|
+
/** Issue a new leaf under the existing local CA. Disabled in uploaded mode. */
|
|
24085
|
+
regenerateCertificate: method(zod.z.object({ reason: zod.z.string().optional() }), TlsStatusSchema, {
|
|
24086
|
+
kind: "mutation",
|
|
24087
|
+
auth: "admin"
|
|
24088
|
+
}),
|
|
24089
|
+
/** Replace the served material with operator-supplied PEMs. */
|
|
24090
|
+
uploadCertificate: method(zod.z.object({
|
|
24091
|
+
certPem: zod.z.string().min(1),
|
|
24092
|
+
keyPem: zod.z.string().min(1),
|
|
24093
|
+
caPem: zod.z.string().optional()
|
|
24094
|
+
}), TlsStatusSchema, {
|
|
24095
|
+
kind: "mutation",
|
|
24096
|
+
auth: "admin"
|
|
24097
|
+
}),
|
|
24098
|
+
/** The local CA PEM, or empty when there is none to download. */
|
|
24099
|
+
downloadCa: method(zod.z.void(), zod.z.object({ pem: zod.z.string() })),
|
|
24100
|
+
/** Drop uploaded material and return to the generated local CA. */
|
|
24101
|
+
revertToGeneratedCertificate: method(zod.z.void(), TlsStatusSchema, {
|
|
24102
|
+
kind: "mutation",
|
|
24103
|
+
auth: "admin"
|
|
24104
|
+
})
|
|
24028
24105
|
},
|
|
24029
24106
|
/** BIG PLAN 2: declarative mount hint — read by `@camstack/system` `buildCapRouters`. */
|
|
24030
24107
|
mount: { kind: "hub-only" }
|
|
@@ -32478,6 +32555,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
32478
32555
|
addonId: null,
|
|
32479
32556
|
access: "create"
|
|
32480
32557
|
},
|
|
32558
|
+
"localNetwork.downloadCa": {
|
|
32559
|
+
capName: "local-network",
|
|
32560
|
+
capScope: "system",
|
|
32561
|
+
addonId: null,
|
|
32562
|
+
access: "view"
|
|
32563
|
+
},
|
|
32481
32564
|
"localNetwork.getAllowedAddresses": {
|
|
32482
32565
|
capName: "local-network",
|
|
32483
32566
|
capScope: "system",
|
|
@@ -32502,18 +32585,36 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
32502
32585
|
addonId: null,
|
|
32503
32586
|
access: "view"
|
|
32504
32587
|
},
|
|
32588
|
+
"localNetwork.getTlsStatus": {
|
|
32589
|
+
capName: "local-network",
|
|
32590
|
+
capScope: "system",
|
|
32591
|
+
addonId: null,
|
|
32592
|
+
access: "view"
|
|
32593
|
+
},
|
|
32505
32594
|
"localNetwork.list": {
|
|
32506
32595
|
capName: "local-network",
|
|
32507
32596
|
capScope: "system",
|
|
32508
32597
|
addonId: null,
|
|
32509
32598
|
access: "view"
|
|
32510
32599
|
},
|
|
32600
|
+
"localNetwork.regenerateCertificate": {
|
|
32601
|
+
capName: "local-network",
|
|
32602
|
+
capScope: "system",
|
|
32603
|
+
addonId: null,
|
|
32604
|
+
access: "create"
|
|
32605
|
+
},
|
|
32511
32606
|
"localNetwork.resetAllowlistToBestMatch": {
|
|
32512
32607
|
capName: "local-network",
|
|
32513
32608
|
capScope: "system",
|
|
32514
32609
|
addonId: null,
|
|
32515
32610
|
access: "delete"
|
|
32516
32611
|
},
|
|
32612
|
+
"localNetwork.revertToGeneratedCertificate": {
|
|
32613
|
+
capName: "local-network",
|
|
32614
|
+
capScope: "system",
|
|
32615
|
+
addonId: null,
|
|
32616
|
+
access: "create"
|
|
32617
|
+
},
|
|
32517
32618
|
"localNetwork.setAllowedAddresses": {
|
|
32518
32619
|
capName: "local-network",
|
|
32519
32620
|
capScope: "system",
|
|
@@ -32526,6 +32627,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
32526
32627
|
addonId: null,
|
|
32527
32628
|
access: "create"
|
|
32528
32629
|
},
|
|
32630
|
+
"localNetwork.uploadCertificate": {
|
|
32631
|
+
capName: "local-network",
|
|
32632
|
+
capScope: "system",
|
|
32633
|
+
addonId: null,
|
|
32634
|
+
access: "create"
|
|
32635
|
+
},
|
|
32529
32636
|
"lockControl.lock": {
|
|
32530
32637
|
capName: "lock-control",
|
|
32531
32638
|
capScope: "device",
|
|
@@ -35406,6 +35513,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
35406
35513
|
addonId: null,
|
|
35407
35514
|
access: "create"
|
|
35408
35515
|
},
|
|
35516
|
+
"terminalSession.updateInstance": {
|
|
35517
|
+
capName: "terminal-session",
|
|
35518
|
+
capScope: "system",
|
|
35519
|
+
addonId: null,
|
|
35520
|
+
access: "create"
|
|
35521
|
+
},
|
|
35409
35522
|
"terminalSession.writeInput": {
|
|
35410
35523
|
capName: "terminal-session",
|
|
35411
35524
|
capScope: "system",
|
|
@@ -38173,6 +38286,35 @@ Object.freeze(Object.fromEntries([{
|
|
|
38173
38286
|
}]
|
|
38174
38287
|
}].map((s) => [s.stepId, s.defaultModelId])));
|
|
38175
38288
|
zod.z.string().min(1);
|
|
38289
|
+
var CLUSTER_STEP_SETTING_FIELDS = [{
|
|
38290
|
+
stepId: "face-embedding",
|
|
38291
|
+
key: "minLandmarkFaceSize",
|
|
38292
|
+
label: "Min face size for recognition (detection px)",
|
|
38293
|
+
description: "Refuse to embed a face smaller than this IN THE DETECTION FRAME. Applies to every node — the enrolled gallery is one index, and two admission floors would fill it from two policies. 0 disables the gate.",
|
|
38294
|
+
type: "slider",
|
|
38295
|
+
min: 0,
|
|
38296
|
+
max: 64,
|
|
38297
|
+
step: 2,
|
|
38298
|
+
default: 24
|
|
38299
|
+
}];
|
|
38300
|
+
function clusterStepSettingKey(stepId, fieldKey) {
|
|
38301
|
+
return `clusterStepSetting:${stepId}:${fieldKey}`;
|
|
38302
|
+
}
|
|
38303
|
+
var ClusterSettingNumberSchema = zod.z.number().finite();
|
|
38304
|
+
function readClusterStepSettings(config) {
|
|
38305
|
+
const out = {};
|
|
38306
|
+
for (const field of CLUSTER_STEP_SETTING_FIELDS) {
|
|
38307
|
+
const parsed = ClusterSettingNumberSchema.safeParse(config[clusterStepSettingKey(field.stepId, field.key)]);
|
|
38308
|
+
const value = parsed.success ? parsed.data : field.default;
|
|
38309
|
+
const existing = out[field.stepId] ?? {};
|
|
38310
|
+
out[field.stepId] = {
|
|
38311
|
+
...existing,
|
|
38312
|
+
[field.key]: value
|
|
38313
|
+
};
|
|
38314
|
+
}
|
|
38315
|
+
return out;
|
|
38316
|
+
}
|
|
38317
|
+
readClusterStepSettings({});
|
|
38176
38318
|
zod.z.object({
|
|
38177
38319
|
/**
|
|
38178
38320
|
* Fraction of the box's own size added on EACH side before cutting.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { IncomingMessage, ServerResponse } from 'node:http';
|
|
2
|
+
import { Duplex } from 'node:stream';
|
|
3
|
+
export interface LanHttpBindOptions {
|
|
4
|
+
readonly enabled: boolean;
|
|
5
|
+
readonly port: number;
|
|
6
|
+
readonly host: string;
|
|
7
|
+
}
|
|
8
|
+
export interface LanHttpBindResult {
|
|
9
|
+
readonly listening: boolean;
|
|
10
|
+
readonly error: string | null;
|
|
11
|
+
readonly port: number;
|
|
12
|
+
}
|
|
13
|
+
export type LanHttpRequestHandler = (req: IncomingMessage, res: ServerResponse) => void;
|
|
14
|
+
export type LanHttpUpgradeHandler = (req: IncomingMessage, socket: Duplex, head: Buffer) => void;
|
|
15
|
+
export interface LanHttpHandlers {
|
|
16
|
+
readonly onRequest: LanHttpRequestHandler;
|
|
17
|
+
readonly onUpgrade: LanHttpUpgradeHandler;
|
|
18
|
+
}
|
|
19
|
+
export declare const DEFAULT_LAN_HTTP_PORT = 4480;
|
|
20
|
+
/** Map "all IPv4" to dual-stack IPv6 (`::`, ipv6Only false) so IPv4 still works. */
|
|
21
|
+
export declare function allFamiliesListenHost(host: string): {
|
|
22
|
+
host: string;
|
|
23
|
+
ipv6Only: boolean;
|
|
24
|
+
};
|
|
25
|
+
export declare function registerLanHttpHandler(next: LanHttpHandlers | null): void;
|
|
26
|
+
export declare function readLanHttpState(): LanHttpBindResult;
|
|
27
|
+
export declare function applyLanHttp(options: LanHttpBindOptions): Promise<LanHttpBindResult>;
|
|
28
|
+
/** After the hub registers the Fastify request handler, bind whatever was pending. */
|
|
29
|
+
export declare function bindPendingLanHttp(): Promise<LanHttpBindResult>;
|
|
30
|
+
export declare function closeLanHttp(): Promise<void>;
|
package/dist/index.d.ts
CHANGED
|
@@ -80,6 +80,7 @@ export { StorageLocationManager } from './storage/storage-location-manager.js';
|
|
|
80
80
|
export type { IFileStorage, IStorageLocation, IStorageProvider as ICoreStorageProvider, IStructuredStorage, QueryFilter, StorageRecord, } from './storage/storage-manager.js';
|
|
81
81
|
export { StorageManager } from './storage/storage-manager.js';
|
|
82
82
|
export * from './tls/index.js';
|
|
83
|
+
export { applyLanHttp, allFamiliesListenHost, bindPendingLanHttp, closeLanHttp, DEFAULT_LAN_HTTP_PORT, readLanHttpState, registerLanHttpHandler, } from './http/lan-http-bind.js';
|
|
83
84
|
export { IntegrationRegistry } from './builtins/sqlite-storage/integration-registry.js';
|
|
84
85
|
export { type EnsureAddonNativePrebuildsOptions, ensureAddonNativePrebuilds, type NativeEnsureOutcome, type NativeEnsureResult, } from './kernel/deps/ensure-addon-natives.js';
|
|
85
86
|
export { type EnsureNativePrebuildsOptions, ensureNativePrebuilds, hasDotNode, NATIVE_SCAN_DEPTH, type PrebuildFetchFn, type PrebuildTarget, TRADITIONAL_NATIVE_PACKAGES, } from './kernel/deps/ensure-native-prebuilds.js';
|