camstack 1.2.52 → 1.2.54
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-C9C8EoK8.mjs
|
|
14526
14526
|
var WELL_KNOWN_TABS = [
|
|
14527
14527
|
{
|
|
14528
14528
|
id: "overview",
|
|
@@ -17070,6 +17070,10 @@ var addonSettingsCapability = {
|
|
|
17070
17070
|
kind: "mutation",
|
|
17071
17071
|
auth: "admin"
|
|
17072
17072
|
}),
|
|
17073
|
+
getIntegrationSettings: method(external_exports.object({
|
|
17074
|
+
addonId: external_exports.string(),
|
|
17075
|
+
nodeId: external_exports.string().optional()
|
|
17076
|
+
}), SettingsSchemaWithValuesSchema.nullable()),
|
|
17073
17077
|
getDeviceSettings: method(external_exports.object({
|
|
17074
17078
|
addonId: external_exports.string(),
|
|
17075
17079
|
deviceId: external_exports.number(),
|
|
@@ -21683,6 +21687,80 @@ var logDestinationCapability = {
|
|
|
21683
21687
|
/** BIG PLAN 2: declarative mount hint — read by `@camstack/system` `buildCapRouters`. */
|
|
21684
21688
|
mount: { kind: "skip" }
|
|
21685
21689
|
};
|
|
21690
|
+
var FailureReasonCountSchema = external_exports.object({
|
|
21691
|
+
/**
|
|
21692
|
+
* Why the attempt did not land, in the contributor's own vocabulary —
|
|
21693
|
+
* `worker-lease-gone`, `queue-overflow`, `timeout`, `empty-read`. The same
|
|
21694
|
+
* strings that already appear in this repo's logs and, where one exists, the
|
|
21695
|
+
* same string the per-track `previewMissReason` records (D276): a second
|
|
21696
|
+
* vocabulary for the same loss would make the row and the counter
|
|
21697
|
+
* un-joinable.
|
|
21698
|
+
*/
|
|
21699
|
+
reason: external_exports.string(),
|
|
21700
|
+
count: external_exports.number().int().nonnegative()
|
|
21701
|
+
});
|
|
21702
|
+
var FailureContributionSchema = external_exports.object({
|
|
21703
|
+
/**
|
|
21704
|
+
* The failing path — `enrichment-crop`, `inference`, `plate-ocr`,
|
|
21705
|
+
* `person-over-vehicle`. Free text, for the reason `load-contribution` keeps
|
|
21706
|
+
* `unit` free: the families are owned by different addons and a shared enum
|
|
21707
|
+
* is a central list that rots invisibly.
|
|
21708
|
+
*/
|
|
21709
|
+
family: external_exports.string(),
|
|
21710
|
+
/**
|
|
21711
|
+
* The NUMERIC device id — the same value every log line carries as
|
|
21712
|
+
* `tags.deviceId`. Never nullable and never absent: a contributor that
|
|
21713
|
+
* cannot name the camera must not emit the entry, because a fleet total
|
|
21714
|
+
* cannot answer the only question anybody asks of this surface.
|
|
21715
|
+
*/
|
|
21716
|
+
deviceId: external_exports.number().int().positive(),
|
|
21717
|
+
/**
|
|
21718
|
+
* A second dimension inside the family: the model / step id for an inference
|
|
21719
|
+
* timeout, so "which camera AND which model" is one read. Absent when the
|
|
21720
|
+
* family has a single variant.
|
|
21721
|
+
*/
|
|
21722
|
+
variant: external_exports.string().optional(),
|
|
21723
|
+
/**
|
|
21724
|
+
* Epoch ms this counter started — the INCARNATION MARKER. A consumer
|
|
21725
|
+
* differencing two reads must drop the interval when it changes, because the
|
|
21726
|
+
* counter restarted from zero in a respawned runner. Same discipline as
|
|
21727
|
+
* `LoadContribution.startedAtMs`.
|
|
21728
|
+
*/
|
|
21729
|
+
sinceMs: external_exports.number(),
|
|
21730
|
+
/** Epoch ms it was read. `atMs - sinceMs` is the interval this covers. */
|
|
21731
|
+
atMs: external_exports.number(),
|
|
21732
|
+
/**
|
|
21733
|
+
* THE DENOMINATOR — every attempt on this path for this camera in the
|
|
21734
|
+
* window. A failure count published without it is the mistake this schema
|
|
21735
|
+
* exists to make impossible.
|
|
21736
|
+
*/
|
|
21737
|
+
attempts: external_exports.number().int().nonnegative(),
|
|
21738
|
+
/** Attempts that landed. `attempts - succeeded` is the loss. */
|
|
21739
|
+
succeeded: external_exports.number().int().nonnegative(),
|
|
21740
|
+
/** The loss, partitioned. Sums to `attempts - succeeded`. */
|
|
21741
|
+
reasons: external_exports.array(FailureReasonCountSchema).readonly()
|
|
21742
|
+
});
|
|
21743
|
+
var failureContributionCapability = {
|
|
21744
|
+
name: "failure-contribution",
|
|
21745
|
+
scope: "system",
|
|
21746
|
+
mode: "collection",
|
|
21747
|
+
internal: true,
|
|
21748
|
+
methods: {
|
|
21749
|
+
/**
|
|
21750
|
+
* This addon's per-camera failure counters, read live from bounded in-RAM
|
|
21751
|
+
* state it already keeps. Inert: no persistence, no sampling, no timer.
|
|
21752
|
+
*
|
|
21753
|
+
* READING NEVER RESETS. The counters are CUMULATIVE since `sinceMs`, and a
|
|
21754
|
+
* consumer that wants a rate differences two reads. A draining read would
|
|
21755
|
+
* make two operators with the page open each destroy half of the other's
|
|
21756
|
+
* numbers, and `load-contribution` already settled the same question the
|
|
21757
|
+
* same way for `cpuSeconds`.
|
|
21758
|
+
*/
|
|
21759
|
+
list: method(external_exports.void(), external_exports.array(FailureContributionSchema).readonly())
|
|
21760
|
+
},
|
|
21761
|
+
/** In-process only — enumerated through `addons.listCapabilityProviders`. */
|
|
21762
|
+
mount: { kind: "skip" }
|
|
21763
|
+
};
|
|
21686
21764
|
var LOAD_CONTRIBUTION_ROLES = [
|
|
21687
21765
|
"decode",
|
|
21688
21766
|
"transcode",
|
|
@@ -25675,6 +25753,20 @@ var TrackSchema = external_exports.object({
|
|
|
25675
25753
|
* `=== true` and render nothing otherwise — never infer "no rider".
|
|
25676
25754
|
*/
|
|
25677
25755
|
hasRider: external_exports.boolean().optional(),
|
|
25756
|
+
/**
|
|
25757
|
+
* WHY this track ended without a NATIVE best-shot tile
|
|
25758
|
+
* ([D276](../decisions/adr-0276-a-stand-in-tile-is-provisional-and-a-close-says-why.md)) —
|
|
25759
|
+
* a composed token line (`no-key-frame capture=keyframe:native-missx4`,
|
|
25760
|
+
* `derive-returned-null tile=standin`, …) written at close and CLEARED by
|
|
25761
|
+
* the late-keyFrame upgrade when a native tile lands after all. The
|
|
25762
|
+
* operator-facing answer to "perché manca l'immagine?" on a track whose
|
|
25763
|
+
* tile is a face/plate stand-in, a raster crop, or an icon.
|
|
25764
|
+
*
|
|
25765
|
+
* **Absent ≠ "missed silently"**: a row written before the column, a hub
|
|
25766
|
+
* that predates the field, and every track whose tile landed native all
|
|
25767
|
+
* omit it. Render nothing when absent.
|
|
25768
|
+
*/
|
|
25769
|
+
previewMissReason: external_exports.string().optional(),
|
|
25678
25770
|
...TrackFlagFields,
|
|
25679
25771
|
...TrackRetrainFields
|
|
25680
25772
|
});
|
|
@@ -37174,6 +37266,7 @@ var LoggingSettingsPatchSchema = external_exports.object({
|
|
|
37174
37266
|
channels: external_exports.array(LogChannelWindowPatchSchema).readonly().optional()
|
|
37175
37267
|
});
|
|
37176
37268
|
var ReportedLoadContributionSchema = LoadContributionSchema.extend({ addonId: external_exports.string() });
|
|
37269
|
+
var ReportedFailureContributionSchema = FailureContributionSchema.extend({ addonId: external_exports.string() });
|
|
37177
37270
|
var GetLoggingSettingsInputSchema = external_exports.object({
|
|
37178
37271
|
scopeNodeId: external_exports.string().optional(),
|
|
37179
37272
|
/**
|
|
@@ -37283,6 +37376,28 @@ var systemCapability = {
|
|
|
37283
37376
|
*/
|
|
37284
37377
|
getLoadContributions: method(external_exports.void(), external_exports.array(ReportedLoadContributionSchema).readonly(), { auth: "admin" }),
|
|
37285
37378
|
/**
|
|
37379
|
+
* Every `failure-contribution` an addon on this cluster reports — per
|
|
37380
|
+
* camera, per reason, **with the denominator attached**.
|
|
37381
|
+
*
|
|
37382
|
+
* This is the surface the operator asked for on 2026-08-28 (*"possiamo
|
|
37383
|
+
* armare questi errori intanto? Così al prossimo giro ricontrolliamo tutti
|
|
37384
|
+
* questi punti"*). Before it, four live failure modes could only be counted
|
|
37385
|
+
* by grepping Loki and hand-correlating timestamps, which is exactly how a
|
|
37386
|
+
* 22% thumbnail gap and a 3-hour media blackout were diagnosed — twice.
|
|
37387
|
+
*
|
|
37388
|
+
* Read it as a RATIO, never as a count. `attempts` is on every entry
|
|
37389
|
+
* because the count on its own lies: `enrichment crop native miss` read as
|
|
37390
|
+
* "35x worse than yesterday" and was flat across twelve hours once divided
|
|
37391
|
+
* by the successes on the same path.
|
|
37392
|
+
*
|
|
37393
|
+
* The counters are CUMULATIVE since each entry's `sinceMs`. Reading does
|
|
37394
|
+
* not reset them, and `sinceMs` changing means the reporting runner
|
|
37395
|
+
* respawned — a consumer differencing two reads drops that interval.
|
|
37396
|
+
*
|
|
37397
|
+
* Admin-only: the rows name cameras and the paths that fail on them.
|
|
37398
|
+
*/
|
|
37399
|
+
getFailureContributions: method(external_exports.void(), external_exports.array(ReportedFailureContributionSchema).readonly(), { auth: "admin" }),
|
|
37400
|
+
/**
|
|
37286
37401
|
* The logging settings document — levels and armed diagnostics — resolved
|
|
37287
37402
|
* for `nodeId`, or for the cluster when `nodeId` is absent.
|
|
37288
37403
|
*
|
|
@@ -38487,6 +38602,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
38487
38602
|
addonId: null,
|
|
38488
38603
|
access: "view"
|
|
38489
38604
|
},
|
|
38605
|
+
"addonSettings.getIntegrationSettings": {
|
|
38606
|
+
capName: "addon-settings",
|
|
38607
|
+
capScope: "system",
|
|
38608
|
+
addonId: null,
|
|
38609
|
+
access: "view"
|
|
38610
|
+
},
|
|
38490
38611
|
"addonSettings.updateDeviceSettings": {
|
|
38491
38612
|
capName: "addon-settings",
|
|
38492
38613
|
capScope: "system",
|
|
@@ -40149,6 +40270,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
40149
40270
|
addonId: null,
|
|
40150
40271
|
access: "create"
|
|
40151
40272
|
},
|
|
40273
|
+
"failureContribution.list": {
|
|
40274
|
+
capName: "failure-contribution",
|
|
40275
|
+
capScope: "system",
|
|
40276
|
+
addonId: null,
|
|
40277
|
+
access: "view"
|
|
40278
|
+
},
|
|
40152
40279
|
"fanControl.setDirection": {
|
|
40153
40280
|
capName: "fan-control",
|
|
40154
40281
|
capScope: "device",
|
|
@@ -43455,6 +43582,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
43455
43582
|
addonId: null,
|
|
43456
43583
|
access: "create"
|
|
43457
43584
|
},
|
|
43585
|
+
"system.getFailureContributions": {
|
|
43586
|
+
capName: "system",
|
|
43587
|
+
capScope: "system",
|
|
43588
|
+
addonId: null,
|
|
43589
|
+
access: "view"
|
|
43590
|
+
},
|
|
43458
43591
|
"system.getLoadContributions": {
|
|
43459
43592
|
capName: "system",
|
|
43460
43593
|
capScope: "system",
|
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-NEA5DJLZ.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-QLUF66FQ.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-QLUF66FQ.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-2O7WGGRD.js");
|
|
1134
1134
|
if (presetNamespace) {
|
|
1135
1135
|
const spinner4 = clack.spinner();
|
|
1136
1136
|
spinner4.start(`Discovering hub on LAN (namespace "${presetNamespace}")`);
|