@camstack/system 1.2.431 → 1.2.433
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/{tls-C5IYg3V5.js → agent-https-CHZTxK-q.js} +123 -759
- package/dist/{tls-CpcGkeJV.mjs → agent-https-DtRU9A7I.mjs} +89 -611
- 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/autotrack/index.js +1 -1
- package/dist/builtins/autotrack/index.mjs +1 -1
- package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.js +2 -2
- package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.mjs +2 -2
- package/dist/builtins/calendars/calendars.addon.js +1 -1
- package/dist/builtins/calendars/calendars.addon.mjs +1 -1
- package/dist/builtins/camera-grid/index.js +1 -1
- package/dist/builtins/camera-grid/index.mjs +1 -1
- package/dist/builtins/composer/composer.addon.js +2 -2
- package/dist/builtins/composer/composer.addon.mjs +2 -2
- 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 +2 -2
- package/dist/builtins/core-blocks/core-blocks.addon.mjs +2 -2
- 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/hub-forwarder/index.js +1 -1
- package/dist/builtins/hub-forwarder/index.mjs +1 -1
- package/dist/builtins/keychain/index.js +3 -3
- package/dist/builtins/keychain/index.mjs +3 -3
- 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 +2 -2
- package/dist/builtins/local-auth/local-auth.addon.mjs +2 -2
- package/dist/builtins/local-network/agent-mdns.d.ts +51 -0
- package/dist/builtins/local-network/local-network.addon.js +20 -45
- package/dist/builtins/local-network/local-network.addon.mjs +2 -28
- 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/index.js +1 -1
- package/dist/builtins/sqlite-storage/index.mjs +1 -1
- package/dist/builtins/sqlite-storage/sqlite-settings.addon.js +3 -3
- package/dist/builtins/sqlite-storage/sqlite-settings.addon.mjs +3 -3
- 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 +1370 -28
- package/dist/builtins/system-config/system-config.addon.mjs +1344 -25
- package/dist/builtins/winston-logging/index.js +1 -1
- package/dist/builtins/winston-logging/index.mjs +1 -1
- package/dist/{composition-sources-Cw_TXEq9.mjs → composition-sources-8-cpAt1c.mjs} +1 -1
- package/dist/{composition-sources-o5MPSlk6.js → composition-sources-BgJWQMjr.js} +1 -1
- package/dist/{constants-BcNaVkvI.js → constants-Ah3T_KAW.js} +2 -2
- package/dist/{constants-CttE77VF.mjs → constants-Cg9ve13y.mjs} +2 -2
- package/dist/{device-ca-B-BTxeCj.mjs → device-ca-DUrcTW5h.mjs} +1 -1
- package/dist/{device-ca-CKiqh2Iu.js → device-ca-NNP4Jz0P.js} +1 -1
- package/dist/{dist-DxJdci75.js → dist-C6Yvfhpq.js} +360 -1
- package/dist/{dist-CXG6muCR.mjs → dist-DJnlnL7P.mjs} +349 -2
- package/dist/file-host-worker.js +1 -1
- package/dist/file-host-worker.mjs +1 -1
- package/dist/hub-mdns-ciao-8_Ed1Za5.mjs +648 -0
- package/dist/hub-mdns-ciao-B50jAU5C.js +821 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +176 -67
- package/dist/index.mjs +96 -13
- package/dist/kernel/index.d.ts +5 -4
- package/dist/kernel/moleculer/agent-mesh-authenticator.d.ts +12 -1
- package/dist/kernel/moleculer/agent-ui-unlock.d.ts +40 -0
- package/dist/kernel/moleculer/mesh-authenticator.d.ts +6 -0
- package/dist/kernel/moleculer/mesh-mtls/constants.d.ts +1 -1
- package/dist/kernel/moleculer/mesh-mtls/index.d.ts +3 -2
- package/dist/kernel/moleculer/mesh-mtls/mesh-ca.d.ts +4 -0
- package/dist/kernel/moleculer/mesh-mtls/mesh-certificate-registry.d.ts +2 -2
- package/dist/kernel/moleculer/mesh-mtls/mesh-join-token.d.ts +3 -2
- package/dist/kernel/moleculer/mesh-mtls/mesh-peer-transport.d.ts +7 -0
- package/dist/kernel/moleculer/mesh-mtls/pairing/agent-pairing.d.ts +204 -0
- package/dist/kernel/moleculer/mesh-mtls/pairing/hub-pairing.d.ts +115 -0
- package/dist/kernel/moleculer/mesh-mtls/pairing/index.d.ts +3 -0
- package/dist/kernel/moleculer/mesh-mtls/pairing/pairing-protocol.d.ts +107 -0
- package/dist/kernel/moleculer/mesh-mtls/tls-tcp-transporter.d.ts +18 -0
- package/dist/{restore-archive-D_wBL1OO.mjs → restore-archive-C3_rzOCx.mjs} +1 -1
- package/dist/{restore-archive-CQJNoqRK.js → restore-archive-DqPaRjjY.js} +1 -1
- package/dist/{retired-settings-keys-EmDe11cP.mjs → retired-settings-keys-CAWHWDwy.mjs} +1 -1
- package/dist/{retired-settings-keys-g1oifXxR.js → retired-settings-keys-DJBQkZok.js} +1 -1
- package/dist/tls/agent-https-names.d.ts +2 -0
- package/dist/{wal-maintenance-vhPZLYuA.mjs → wal-maintenance-Bc38yI3r.mjs} +0 -0
- package/dist/{wal-maintenance-BW1LIHi0.js → wal-maintenance-CPLvZbzA.js} +0 -0
- package/package.json +1 -1
- package/dist/agent-https-names-CpUSuP4w.js +0 -120
- package/dist/agent-https-names-uetr4OQl.mjs +0 -91
|
@@ -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-C6Yvfhpq.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 {
|
|
1
|
+
import { sn as logDestinationCapability, yr as BaseAddon } from "../../dist-DJnlnL7P.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";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { dr as compositionSourceKey, vr as errMsg } from "./dist-DJnlnL7P.mjs";
|
|
2
2
|
//#region src/builtins/core-blocks/composition-sources.ts
|
|
3
3
|
/**
|
|
4
4
|
* Describe what a composition reads and writes for SAVE-time validation
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const require_dist = require("./dist-
|
|
1
|
+
const require_dist = require("./dist-C6Yvfhpq.js");
|
|
2
2
|
let node_crypto = require("node:crypto");
|
|
3
3
|
//#region src/kernel/moleculer/cluster-secret.ts
|
|
4
4
|
/**
|
|
@@ -87,7 +87,7 @@ var MESH_CA_KEY_REF = require_dist.buildSecretRef({
|
|
|
87
87
|
});
|
|
88
88
|
/** `system-settings` key holding the public CA certificate PEM. */
|
|
89
89
|
var MESH_CA_SETTINGS_KEY = "cluster.meshCa";
|
|
90
|
-
/** Field inside the `cluster` section
|
|
90
|
+
/** Field inside the `cluster` section. */
|
|
91
91
|
var MESH_CA_FIELD = "meshCa";
|
|
92
92
|
/** Join-token / leaf lifetimes. */
|
|
93
93
|
var MESH_JOIN_TOKEN_MAX_TTL_SEC = 3600;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Mr as buildSecretRef } from "./dist-DJnlnL7P.mjs";
|
|
2
2
|
import { createHash, timingSafeEqual } from "node:crypto";
|
|
3
3
|
//#region src/kernel/moleculer/cluster-secret.ts
|
|
4
4
|
/**
|
|
@@ -87,7 +87,7 @@ var MESH_CA_KEY_REF = buildSecretRef({
|
|
|
87
87
|
});
|
|
88
88
|
/** `system-settings` key holding the public CA certificate PEM. */
|
|
89
89
|
var MESH_CA_SETTINGS_KEY = "cluster.meshCa";
|
|
90
|
-
/** Field inside the `cluster` section
|
|
90
|
+
/** Field inside the `cluster` section. */
|
|
91
91
|
var MESH_CA_FIELD = "meshCa";
|
|
92
92
|
/** Join-token / leaf lifetimes. */
|
|
93
93
|
var MESH_JOIN_TOKEN_MAX_TTL_SEC = 3600;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { E as DEVICE_SAN_USER_PREFIX, Mr as buildSecretRef, T as DEVICE_SAN_CREDENTIAL_PREFIX } from "./dist-DJnlnL7P.mjs";
|
|
2
2
|
import { a as KeyUsagesExtension, d as X509Certificate$1, f as X509CertificateGenerator, i as KeyUsageFlags, l as SubjectAlternativeNameExtension, n as BasicConstraintsExtension, o as PemConverter, p as cryptoProvider, r as ExtendedKeyUsageExtension, t as AuthorityKeyIdentifierExtension, u as SubjectKeyIdentifierExtension } from "./x509.es-CAjSsrkk.mjs";
|
|
3
3
|
import { X509Certificate, createPublicKey, randomBytes, verify, webcrypto } from "node:crypto";
|
|
4
4
|
//#region src/auth/jwt-signing-key.ts
|
|
@@ -718,7 +718,7 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
718
718
|
return EventCategory;
|
|
719
719
|
}({});
|
|
720
720
|
//#endregion
|
|
721
|
-
//#region ../types/dist/sleep-
|
|
721
|
+
//#region ../types/dist/sleep--g-h2_c_.mjs
|
|
722
722
|
/**
|
|
723
723
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
724
724
|
* window to float samples (D455).
|
|
@@ -16213,6 +16213,241 @@ var keychainCapability = {
|
|
|
16213
16213
|
getState: method(zod.z.object({}), KeychainStateSchema, { auth: "admin" })
|
|
16214
16214
|
}
|
|
16215
16215
|
};
|
|
16216
|
+
/**
|
|
16217
|
+
* device-history — the ONE mechanism for numeric history (D850).
|
|
16218
|
+
*
|
|
16219
|
+
* A device value is recorded because its capability says so (the `history`
|
|
16220
|
+
* block of a `*.cap.ts`, captured hub-side from `DeviceStateChanged`); any
|
|
16221
|
+
* other series is DECLARED by the addon that produces it and fed with points
|
|
16222
|
+
* (`record`) or closed five-minute buckets (`recordBuckets`). Rollups 5m / 1h /
|
|
16223
|
+
* 1d are computed here and nowhere else. Storage is `history.db` (D851).
|
|
16224
|
+
*
|
|
16225
|
+
* Who the PRODUCER is: `declareSeries`, `record` and `recordBuckets` are owner
|
|
16226
|
+
* checked against the `callerAddonId` the transport stamps into a call that
|
|
16227
|
+
* crossed a process (never in an input schema, so a session cannot supply it).
|
|
16228
|
+
* A call with no stamp is refused `not-owner`. The methods are `admin` so a
|
|
16229
|
+
* non-admin session never reaches them; an addon's `ctx.api` call bypasses the
|
|
16230
|
+
* tier by design.
|
|
16231
|
+
*/
|
|
16232
|
+
/** Whose history: a real device, or a cluster node (load, memory). */
|
|
16233
|
+
var DeviceHistorySubjectSchema = zod.z.discriminatedUnion("kind", [zod.z.object({
|
|
16234
|
+
kind: zod.z.literal("device"),
|
|
16235
|
+
deviceId: zod.z.number().int()
|
|
16236
|
+
}), zod.z.object({
|
|
16237
|
+
kind: zod.z.literal("node"),
|
|
16238
|
+
nodeId: zod.z.string().min(1)
|
|
16239
|
+
})]);
|
|
16240
|
+
var DeviceHistoryKindSchema = zod.z.enum([
|
|
16241
|
+
"gauge",
|
|
16242
|
+
"counter",
|
|
16243
|
+
"boolean"
|
|
16244
|
+
]);
|
|
16245
|
+
var DeviceHistoryResolutionSchema = zod.z.enum([
|
|
16246
|
+
"raw",
|
|
16247
|
+
"5m",
|
|
16248
|
+
"1h",
|
|
16249
|
+
"1d"
|
|
16250
|
+
]);
|
|
16251
|
+
/** Why a producer's point or bucket was not stored. Counted, never silent (D391). */
|
|
16252
|
+
var DeviceHistoryRefusalReasonSchema = zod.z.enum([
|
|
16253
|
+
"undeclared",
|
|
16254
|
+
"not-owner",
|
|
16255
|
+
"opted-out",
|
|
16256
|
+
"not-a-real-device",
|
|
16257
|
+
"rate",
|
|
16258
|
+
"ingest-mismatch",
|
|
16259
|
+
"out-of-range"
|
|
16260
|
+
]);
|
|
16261
|
+
var RefusalSchema = zod.z.object({
|
|
16262
|
+
key: zod.z.string(),
|
|
16263
|
+
reason: DeviceHistoryRefusalReasonSchema,
|
|
16264
|
+
count: zod.z.number().int()
|
|
16265
|
+
});
|
|
16266
|
+
var IngestResultSchema = zod.z.object({
|
|
16267
|
+
accepted: zod.z.number().int(),
|
|
16268
|
+
refused: zod.z.array(RefusalSchema).readonly()
|
|
16269
|
+
});
|
|
16270
|
+
var SeriesInfoSchema = zod.z.object({
|
|
16271
|
+
key: zod.z.string(),
|
|
16272
|
+
scope: zod.z.string(),
|
|
16273
|
+
kind: DeviceHistoryKindSchema,
|
|
16274
|
+
/** `null` is unknown (a `unitFrom` series whose device does not state a unit right now), never a guess. */
|
|
16275
|
+
unit: zod.z.string().nullable(),
|
|
16276
|
+
displayName: zod.z.string(),
|
|
16277
|
+
source: zod.z.enum(["cap", "addon"]),
|
|
16278
|
+
firstTs: zod.z.number(),
|
|
16279
|
+
lastTs: zod.z.number()
|
|
16280
|
+
});
|
|
16281
|
+
var QueryPointSchema = zod.z.object({
|
|
16282
|
+
/** Raw: the point's time. Rollup: the bucket start. */
|
|
16283
|
+
t: zod.z.number(),
|
|
16284
|
+
samples: zod.z.number().int(),
|
|
16285
|
+
/** `sum / samples`. */
|
|
16286
|
+
mean: zod.z.number().nullable(),
|
|
16287
|
+
/** Time-weighted mean (`tw_sum / tw_ms`); `null` for bucket-ingested series. For a boolean: the fraction of time true. */
|
|
16288
|
+
twMean: zod.z.number().nullable(),
|
|
16289
|
+
min: zod.z.number(),
|
|
16290
|
+
max: zod.z.number(),
|
|
16291
|
+
/** `null` is unknown, never zero (D393). */
|
|
16292
|
+
last: zod.z.number().nullable()
|
|
16293
|
+
});
|
|
16294
|
+
var QuerySeriesSchema = zod.z.object({
|
|
16295
|
+
scope: zod.z.string(),
|
|
16296
|
+
/** The last point STRICTLY BEFORE `from` in the chosen tier, so a step chart can start at the held value. */
|
|
16297
|
+
before: zod.z.object({
|
|
16298
|
+
t: zod.z.number(),
|
|
16299
|
+
value: zod.z.number().nullable()
|
|
16300
|
+
}).nullable(),
|
|
16301
|
+
points: zod.z.array(QueryPointSchema).readonly()
|
|
16302
|
+
});
|
|
16303
|
+
/** The window part of a query, shared by the device and node forms. */
|
|
16304
|
+
var QueryWindowShape = {
|
|
16305
|
+
key: zod.z.string(),
|
|
16306
|
+
scope: zod.z.string().optional(),
|
|
16307
|
+
from: zod.z.number(),
|
|
16308
|
+
to: zod.z.number(),
|
|
16309
|
+
resolution: zod.z.union([DeviceHistoryResolutionSchema, zod.z.literal("auto")]).default("auto"),
|
|
16310
|
+
maxPoints: zod.z.number().int().positive().max(5e3).default(1e3)
|
|
16311
|
+
};
|
|
16312
|
+
var QueryResultSchema = zod.z.object({
|
|
16313
|
+
resolution: DeviceHistoryResolutionSchema,
|
|
16314
|
+
series: zod.z.array(QuerySeriesSchema).readonly(),
|
|
16315
|
+
truncated: zod.z.boolean()
|
|
16316
|
+
});
|
|
16317
|
+
var TierStatusSchema = zod.z.object({
|
|
16318
|
+
tier: DeviceHistoryResolutionSchema,
|
|
16319
|
+
/** `null` until the first background count answered. */
|
|
16320
|
+
rows: zod.z.number().int().nullable(),
|
|
16321
|
+
/** `rows` times a fixed per-row estimate — approximate, labelled so. */
|
|
16322
|
+
approxBytes: zod.z.number().nullable(),
|
|
16323
|
+
countedAt: zod.z.number().nullable()
|
|
16324
|
+
});
|
|
16325
|
+
/** Operator/diagnostic view: rows per tier, last runs, refusals and drops since boot. */
|
|
16326
|
+
var DeviceHistoryStatusSchema = zod.z.object({
|
|
16327
|
+
startedAt: zod.z.number(),
|
|
16328
|
+
/** The store is declared, series loaded and the first reconcile has answered. */
|
|
16329
|
+
ready: zod.z.boolean(),
|
|
16330
|
+
series: zod.z.number().int(),
|
|
16331
|
+
metrics: zod.z.number().int(),
|
|
16332
|
+
optedOutDevices: zod.z.number().int(),
|
|
16333
|
+
tiers: zod.z.array(TierStatusSchema).readonly(),
|
|
16334
|
+
capture: zod.z.object({
|
|
16335
|
+
eventsSeen: zod.z.number().int(),
|
|
16336
|
+
pointsEmitted: zod.z.number().int(),
|
|
16337
|
+
pointsWritten: zod.z.number().int(),
|
|
16338
|
+
pointsDropped: zod.z.number().int(),
|
|
16339
|
+
bufferDepth: zod.z.number().int(),
|
|
16340
|
+
trailingEmitted: zod.z.number().int(),
|
|
16341
|
+
reconciledPoints: zod.z.number().int(),
|
|
16342
|
+
reconcileRuns: zod.z.number().int(),
|
|
16343
|
+
reconcileFailures: zod.z.number().int(),
|
|
16344
|
+
lastReconcileAt: zod.z.number().nullable(),
|
|
16345
|
+
lastFlushAt: zod.z.number().nullable(),
|
|
16346
|
+
flushFailures: zod.z.number().int(),
|
|
16347
|
+
skipped: zod.z.record(zod.z.string(), zod.z.number().int())
|
|
16348
|
+
}),
|
|
16349
|
+
ingest: zod.z.object({
|
|
16350
|
+
accepted: zod.z.number().int(),
|
|
16351
|
+
refused: zod.z.record(zod.z.string(), zod.z.number().int())
|
|
16352
|
+
}),
|
|
16353
|
+
rollup: zod.z.object({
|
|
16354
|
+
last5mAt: zod.z.number().nullable(),
|
|
16355
|
+
last1hAt: zod.z.number().nullable(),
|
|
16356
|
+
last1dAt: zod.z.number().nullable(),
|
|
16357
|
+
errors: zod.z.number().int(),
|
|
16358
|
+
dirty5m: zod.z.number().int(),
|
|
16359
|
+
dirty1h: zod.z.number().int(),
|
|
16360
|
+
dirty1d: zod.z.number().int()
|
|
16361
|
+
}),
|
|
16362
|
+
retention: zod.z.object({
|
|
16363
|
+
lastRunAt: zod.z.number().nullable(),
|
|
16364
|
+
deleted: zod.z.record(zod.z.string(), zod.z.number().int()),
|
|
16365
|
+
purgedSeries: zod.z.number().int()
|
|
16366
|
+
}),
|
|
16367
|
+
directory: zod.z.object({
|
|
16368
|
+
devices: zod.z.number().int(),
|
|
16369
|
+
lastRefreshAt: zod.z.number().nullable()
|
|
16370
|
+
})
|
|
16371
|
+
});
|
|
16372
|
+
var deviceHistoryCapability = {
|
|
16373
|
+
name: "device-history",
|
|
16374
|
+
scope: "system",
|
|
16375
|
+
mode: "singleton",
|
|
16376
|
+
methods: {
|
|
16377
|
+
/**
|
|
16378
|
+
* The series a DEVICE has, and their span. `deviceId` is a flat top-level field
|
|
16379
|
+
* on purpose: the generated device selector (and so the scope gate) only sees
|
|
16380
|
+
* top-level ids, and a nested `subject.deviceId` would let a principal limited
|
|
16381
|
+
* to one device read another's history. Node series are the admin-only
|
|
16382
|
+
* `listNodeSeries` / `queryNode`.
|
|
16383
|
+
*/
|
|
16384
|
+
listSeries: method(zod.z.object({ deviceId: zod.z.number().int() }), zod.z.array(SeriesInfoSchema).readonly()),
|
|
16385
|
+
listNodeSeries: method(zod.z.object({ nodeId: zod.z.string().min(1) }), zod.z.array(SeriesInfoSchema).readonly(), { auth: "admin" }),
|
|
16386
|
+
/**
|
|
16387
|
+
* One series (or every scope of it) at one resolution. `auto` picks the
|
|
16388
|
+
* finest tier whose retention covers `from` and whose point count fits
|
|
16389
|
+
* `maxPoints`; when even the coarsest tier does not fit, the newest
|
|
16390
|
+
* `maxPoints` points are returned and `truncated` is true.
|
|
16391
|
+
*/
|
|
16392
|
+
query: method(zod.z.object({
|
|
16393
|
+
deviceId: zod.z.number().int(),
|
|
16394
|
+
...QueryWindowShape
|
|
16395
|
+
}), QueryResultSchema),
|
|
16396
|
+
queryNode: method(zod.z.object({
|
|
16397
|
+
nodeId: zod.z.string().min(1),
|
|
16398
|
+
...QueryWindowShape
|
|
16399
|
+
}), QueryResultSchema, { auth: "admin" }),
|
|
16400
|
+
/** Producer: declare (idempotent) a series key this addon owns: `addon:<callerAddonId>/<name>`. */
|
|
16401
|
+
declareSeries: method(zod.z.object({
|
|
16402
|
+
name: zod.z.string().regex(/^[a-z0-9-]+$/),
|
|
16403
|
+
subjectKind: zod.z.enum(["device", "node"]),
|
|
16404
|
+
kind: DeviceHistoryKindSchema,
|
|
16405
|
+
unit: zod.z.string().optional(),
|
|
16406
|
+
displayName: zod.z.string().min(1),
|
|
16407
|
+
ingest: zod.z.enum(["points", "buckets"])
|
|
16408
|
+
}), zod.z.object({ key: zod.z.string() }), {
|
|
16409
|
+
kind: "mutation",
|
|
16410
|
+
auth: "admin"
|
|
16411
|
+
}),
|
|
16412
|
+
/** Producer: points. Low rate: at most one per 10 s per series, sustained. */
|
|
16413
|
+
record: method(zod.z.object({ points: zod.z.array(zod.z.object({
|
|
16414
|
+
key: zod.z.string(),
|
|
16415
|
+
subject: DeviceHistorySubjectSchema,
|
|
16416
|
+
scope: zod.z.string().default(""),
|
|
16417
|
+
ts: zod.z.number(),
|
|
16418
|
+
value: zod.z.number()
|
|
16419
|
+
})).max(5e3) }), IngestResultSchema, {
|
|
16420
|
+
kind: "mutation",
|
|
16421
|
+
auth: "admin"
|
|
16422
|
+
}),
|
|
16423
|
+
/** Producer: CLOSED five-minute buckets. Idempotent upsert keyed (series, bucketStart). */
|
|
16424
|
+
recordBuckets: method(zod.z.object({ buckets: zod.z.array(zod.z.object({
|
|
16425
|
+
key: zod.z.string(),
|
|
16426
|
+
subject: DeviceHistorySubjectSchema,
|
|
16427
|
+
scope: zod.z.string().default(""),
|
|
16428
|
+
bucketStart: zod.z.number(),
|
|
16429
|
+
samples: zod.z.number().int().positive(),
|
|
16430
|
+
sum: zod.z.number(),
|
|
16431
|
+
min: zod.z.number(),
|
|
16432
|
+
max: zod.z.number(),
|
|
16433
|
+
last: zod.z.number().nullable(),
|
|
16434
|
+
lastTs: zod.z.number().nullable()
|
|
16435
|
+
})).max(5e3) }), IngestResultSchema, {
|
|
16436
|
+
kind: "mutation",
|
|
16437
|
+
auth: "admin"
|
|
16438
|
+
}),
|
|
16439
|
+
/** Per-device opt-out. This addon IS the authority: the switch stores nothing elsewhere (D62). */
|
|
16440
|
+
getDeviceEnabled: method(zod.z.object({ deviceId: zod.z.number().int() }), zod.z.object({ enabled: zod.z.boolean() })),
|
|
16441
|
+
setDeviceEnabled: method(zod.z.object({
|
|
16442
|
+
deviceId: zod.z.number().int(),
|
|
16443
|
+
enabled: zod.z.boolean()
|
|
16444
|
+
}), zod.z.object({ enabled: zod.z.boolean() }), {
|
|
16445
|
+
kind: "mutation",
|
|
16446
|
+
auth: "admin"
|
|
16447
|
+
}),
|
|
16448
|
+
getStatus: method(zod.z.object({}), DeviceHistoryStatusSchema, { auth: "admin" })
|
|
16449
|
+
}
|
|
16450
|
+
};
|
|
16216
16451
|
var DeviceCaStatusSchema = zod.z.discriminatedUnion("state", [
|
|
16217
16452
|
zod.z.object({ state: zod.z.literal("absent") }),
|
|
16218
16453
|
zod.z.object({
|
|
@@ -16410,6 +16645,16 @@ var nodeCertificatesCapability = {
|
|
|
16410
16645
|
kind: "mutation",
|
|
16411
16646
|
auth: "admin"
|
|
16412
16647
|
}),
|
|
16648
|
+
/**
|
|
16649
|
+
* The hub unpairs this node (D857): it erases its mesh material, goes back to the
|
|
16650
|
+
* unpaired state and advertises itself again. The call is answered first; the wire
|
|
16651
|
+
* goes down right after, so the hub revokes the node's certificates BEFORE this
|
|
16652
|
+
* connection drops, never after.
|
|
16653
|
+
*/
|
|
16654
|
+
forgetHub: method(zod.z.object({}), zod.z.object({ ok: zod.z.literal(true) }), {
|
|
16655
|
+
kind: "mutation",
|
|
16656
|
+
auth: "admin"
|
|
16657
|
+
}),
|
|
16413
16658
|
/** Install the hub-signed HTTPS leaf and hot-swap the serving context (no restart). */
|
|
16414
16659
|
installHttpsCertificate: method(zod.z.object({
|
|
16415
16660
|
certPem: zod.z.string().min(1),
|
|
@@ -39937,6 +40182,21 @@ var HUB_MDNS_TXT_KEYS = {
|
|
|
39937
40182
|
url: "url"
|
|
39938
40183
|
};
|
|
39939
40184
|
/**
|
|
40185
|
+
* How a hub finds agents to pair (D857): every agent publishes ONE mDNS service for its API
|
|
40186
|
+
* port, paired or not. The TXT record carries only public facts. Finding an agent grants
|
|
40187
|
+
* nothing: pairing still needs the six-digit code confirmed on both screens.
|
|
40188
|
+
*/
|
|
40189
|
+
var AGENT_MDNS_SERVICE_TYPE = "camstack-agent";
|
|
40190
|
+
/** The TXT keys of the agent advertisement. Every value is public. */
|
|
40191
|
+
var AGENT_MDNS_TXT_KEYS = {
|
|
40192
|
+
nodeId: "nodeId",
|
|
40193
|
+
version: "version",
|
|
40194
|
+
/** `unpaired` | `pending` | `paired`. */
|
|
40195
|
+
state: "state",
|
|
40196
|
+
/** First 16 hex chars of the SHA-256 of the agent's mesh leaf; present once paired. */
|
|
40197
|
+
keyFingerprint: "fp"
|
|
40198
|
+
};
|
|
40199
|
+
/**
|
|
39940
40200
|
* Transport bounds for AI capability methods.
|
|
39941
40201
|
*
|
|
39942
40202
|
* Its own module because `llm.cap.ts` and `llm-runtime.cap.ts` already import
|
|
@@ -74293,6 +74553,66 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
74293
74553
|
addonId: null,
|
|
74294
74554
|
access: "create"
|
|
74295
74555
|
},
|
|
74556
|
+
"deviceHistory.declareSeries": {
|
|
74557
|
+
capName: "device-history",
|
|
74558
|
+
capScope: "system",
|
|
74559
|
+
addonId: null,
|
|
74560
|
+
access: "create"
|
|
74561
|
+
},
|
|
74562
|
+
"deviceHistory.getDeviceEnabled": {
|
|
74563
|
+
capName: "device-history",
|
|
74564
|
+
capScope: "system",
|
|
74565
|
+
addonId: null,
|
|
74566
|
+
access: "view"
|
|
74567
|
+
},
|
|
74568
|
+
"deviceHistory.getStatus": {
|
|
74569
|
+
capName: "device-history",
|
|
74570
|
+
capScope: "system",
|
|
74571
|
+
addonId: null,
|
|
74572
|
+
access: "view"
|
|
74573
|
+
},
|
|
74574
|
+
"deviceHistory.listNodeSeries": {
|
|
74575
|
+
capName: "device-history",
|
|
74576
|
+
capScope: "system",
|
|
74577
|
+
addonId: null,
|
|
74578
|
+
access: "view"
|
|
74579
|
+
},
|
|
74580
|
+
"deviceHistory.listSeries": {
|
|
74581
|
+
capName: "device-history",
|
|
74582
|
+
capScope: "system",
|
|
74583
|
+
addonId: null,
|
|
74584
|
+
access: "view"
|
|
74585
|
+
},
|
|
74586
|
+
"deviceHistory.query": {
|
|
74587
|
+
capName: "device-history",
|
|
74588
|
+
capScope: "system",
|
|
74589
|
+
addonId: null,
|
|
74590
|
+
access: "view"
|
|
74591
|
+
},
|
|
74592
|
+
"deviceHistory.queryNode": {
|
|
74593
|
+
capName: "device-history",
|
|
74594
|
+
capScope: "system",
|
|
74595
|
+
addonId: null,
|
|
74596
|
+
access: "view"
|
|
74597
|
+
},
|
|
74598
|
+
"deviceHistory.record": {
|
|
74599
|
+
capName: "device-history",
|
|
74600
|
+
capScope: "system",
|
|
74601
|
+
addonId: null,
|
|
74602
|
+
access: "create"
|
|
74603
|
+
},
|
|
74604
|
+
"deviceHistory.recordBuckets": {
|
|
74605
|
+
capName: "device-history",
|
|
74606
|
+
capScope: "system",
|
|
74607
|
+
addonId: null,
|
|
74608
|
+
access: "create"
|
|
74609
|
+
},
|
|
74610
|
+
"deviceHistory.setDeviceEnabled": {
|
|
74611
|
+
capName: "device-history",
|
|
74612
|
+
capScope: "system",
|
|
74613
|
+
addonId: null,
|
|
74614
|
+
access: "create"
|
|
74615
|
+
},
|
|
74296
74616
|
"deviceManager.addLocation": {
|
|
74297
74617
|
capName: "device-manager",
|
|
74298
74618
|
capScope: "system",
|
|
@@ -76357,6 +76677,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
76357
76677
|
addonId: null,
|
|
76358
76678
|
access: "create"
|
|
76359
76679
|
},
|
|
76680
|
+
"nodeCertificates.forgetHub": {
|
|
76681
|
+
capName: "node-certificates",
|
|
76682
|
+
capScope: "system",
|
|
76683
|
+
addonId: null,
|
|
76684
|
+
access: "delete"
|
|
76685
|
+
},
|
|
76360
76686
|
"nodeCertificates.getCertificates": {
|
|
76361
76687
|
capName: "node-certificates",
|
|
76362
76688
|
capScope: "system",
|
|
@@ -80763,6 +81089,7 @@ var ALL_CAPABILITY_DEFINITIONS = [
|
|
|
80763
81089
|
deviceDiscoveryCapability,
|
|
80764
81090
|
deviceExportCapability,
|
|
80765
81091
|
deviceExtensionCapability,
|
|
81092
|
+
deviceHistoryCapability,
|
|
80766
81093
|
deviceManagerCapability,
|
|
80767
81094
|
deviceOpsCapability,
|
|
80768
81095
|
deviceProviderCapability,
|
|
@@ -81346,6 +81673,26 @@ Object.freeze({
|
|
|
81346
81673
|
form: "single",
|
|
81347
81674
|
optional: false
|
|
81348
81675
|
}],
|
|
81676
|
+
"deviceHistory.getDeviceEnabled": [{
|
|
81677
|
+
name: "deviceId",
|
|
81678
|
+
form: "single",
|
|
81679
|
+
optional: false
|
|
81680
|
+
}],
|
|
81681
|
+
"deviceHistory.listSeries": [{
|
|
81682
|
+
name: "deviceId",
|
|
81683
|
+
form: "single",
|
|
81684
|
+
optional: false
|
|
81685
|
+
}],
|
|
81686
|
+
"deviceHistory.query": [{
|
|
81687
|
+
name: "deviceId",
|
|
81688
|
+
form: "single",
|
|
81689
|
+
optional: false
|
|
81690
|
+
}],
|
|
81691
|
+
"deviceHistory.setDeviceEnabled": [{
|
|
81692
|
+
name: "deviceId",
|
|
81693
|
+
form: "single",
|
|
81694
|
+
optional: false
|
|
81695
|
+
}],
|
|
81349
81696
|
"deviceManager.adoptionRelease": [{
|
|
81350
81697
|
name: "camDeviceId",
|
|
81351
81698
|
form: "single",
|
|
@@ -85167,6 +85514,18 @@ function enumerateInferenceDevices(hw) {
|
|
|
85167
85514
|
return out;
|
|
85168
85515
|
}
|
|
85169
85516
|
//#endregion
|
|
85517
|
+
Object.defineProperty(exports, "AGENT_MDNS_SERVICE_TYPE", {
|
|
85518
|
+
enumerable: true,
|
|
85519
|
+
get: function() {
|
|
85520
|
+
return AGENT_MDNS_SERVICE_TYPE;
|
|
85521
|
+
}
|
|
85522
|
+
});
|
|
85523
|
+
Object.defineProperty(exports, "AGENT_MDNS_TXT_KEYS", {
|
|
85524
|
+
enumerable: true,
|
|
85525
|
+
get: function() {
|
|
85526
|
+
return AGENT_MDNS_TXT_KEYS;
|
|
85527
|
+
}
|
|
85528
|
+
});
|
|
85170
85529
|
Object.defineProperty(exports, "ALL_CAPABILITY_DEFINITIONS", {
|
|
85171
85530
|
enumerable: true,
|
|
85172
85531
|
get: function() {
|