camstack 1.2.65 → 1.2.66
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.
|
@@ -15772,6 +15772,21 @@ var RelocateJobSchema = external_exports.object({
|
|
|
15772
15772
|
bytesMoved: external_exports.number().int(),
|
|
15773
15773
|
/** Total files discovered up front; null while (or when) unknown. */
|
|
15774
15774
|
filesTotal: external_exports.number().int().nullable(),
|
|
15775
|
+
/**
|
|
15776
|
+
* Rows this run CORRECTED while moving them — a durable mutation the move
|
|
15777
|
+
* made that nobody asked for, so it is reported where the operator reads the
|
|
15778
|
+
* job rather than only in a log line.
|
|
15779
|
+
*
|
|
15780
|
+
* A footage segment records its byte count in its own NAME, and the durable
|
|
15781
|
+
* hour row derives its aggregates from those names. A file that does not
|
|
15782
|
+
* match its name therefore makes the ledger's sums — and with them quota and
|
|
15783
|
+
* pressure eviction — wrong by the difference, and only a rename can fix it.
|
|
15784
|
+
* On 2026-08-30 one such row also stalled a 110 749-file drain permanently.
|
|
15785
|
+
*
|
|
15786
|
+
* Absent on lanes where the question has no meaning: a media blob's size is
|
|
15787
|
+
* in its row, not in its name, so `MediaRelocateEngine` never reconciles one.
|
|
15788
|
+
*/
|
|
15789
|
+
rowsReconciled: external_exports.number().int().nonnegative().optional(),
|
|
15775
15790
|
startedAt: external_exports.number(),
|
|
15776
15791
|
finishedAt: external_exports.number().nullable(),
|
|
15777
15792
|
error: external_exports.string().nullable()
|
|
@@ -15814,11 +15829,18 @@ var RelocateMediaInputSchema = external_exports.object({
|
|
|
15814
15829
|
/** Omitted = `move`, the pre-existing behaviour. */
|
|
15815
15830
|
mode: MediaRelocateModeSchema.optional()
|
|
15816
15831
|
});
|
|
15817
|
-
var
|
|
15818
|
-
|
|
15819
|
-
|
|
15820
|
-
total: external_exports.number().int().nonnegative()
|
|
15832
|
+
var UnstampedRowsSchema = external_exports.object({
|
|
15833
|
+
present: external_exports.boolean(),
|
|
15834
|
+
rows: external_exports.number().int().nonnegative().nullable()
|
|
15821
15835
|
});
|
|
15836
|
+
var UnstampedEventMediaCountSchema = external_exports.object({
|
|
15837
|
+
media: UnstampedRowsSchema,
|
|
15838
|
+
retrainFrames: UnstampedRowsSchema,
|
|
15839
|
+
/** True when EITHER collection holds one. The refusal reads this. */
|
|
15840
|
+
anyPresent: external_exports.boolean(),
|
|
15841
|
+
/** Sum across both, or `null` when either lane could not be counted. */
|
|
15842
|
+
total: external_exports.number().int().nonnegative().nullable()
|
|
15843
|
+
}).nullable();
|
|
15822
15844
|
var StorageMigrationMediaMoveInputSchema = RelocateMediaInputSchema.extend({ leaseId: external_exports.string().min(1) });
|
|
15823
15845
|
var StorageMigrationClassSchema = external_exports.enum([
|
|
15824
15846
|
"recordings",
|
|
@@ -15865,6 +15887,10 @@ var StorageMigrationMoveProgressSchema = external_exports.object({
|
|
|
15865
15887
|
/** The archive census — the **M** of "N of M" (D295). `null` = unknowable. */
|
|
15866
15888
|
filesTotal: external_exports.number().int().nonnegative().nullable(),
|
|
15867
15889
|
bytesMoved: external_exports.number().int().nonnegative(),
|
|
15890
|
+
/** Rows the mover corrected while moving them — see `RelocateJob`. Absent on
|
|
15891
|
+
* a lane that cannot reconcile. A migration that silently rewrote durable
|
|
15892
|
+
* rows would be the same failure as one that silently skipped them. */
|
|
15893
|
+
rowsReconciled: external_exports.number().int().nonnegative().optional(),
|
|
15868
15894
|
/** The MOVER's start, not the migration's: a drain restarted after an addon
|
|
15869
15895
|
* crash gets a new mover, and a rate computed from the migration's start
|
|
15870
15896
|
* would silently average in the time nothing was running. */
|
|
@@ -20804,6 +20830,15 @@ var deviceManagerCapability = {
|
|
|
20804
20830
|
* calls are sync. Bindings change rarely (only on wrapper toggle or
|
|
20805
20831
|
* device add/remove) — clients invalidate via the
|
|
20806
20832
|
* `capability.binding-changed` event.
|
|
20833
|
+
*
|
|
20834
|
+
* "A single round-trip" describes the CLIENT's side and used not to
|
|
20835
|
+
* describe the server's: until 2026-08-30 the resolver read the persisted
|
|
20836
|
+
* wrapper activations once per device, so answering this cost one
|
|
20837
|
+
* settings-door RPC per device — 1 020 on the live 1 019-device hub, and
|
|
20838
|
+
* it did not return in 240 s against `SystemMirror.init`'s 15 s budget.
|
|
20839
|
+
* The server side is now two reads for the whole fleet. Anything PERIODIC
|
|
20840
|
+
* still belongs on `getBindings` / `getBindingsBatch` (D12); this remains
|
|
20841
|
+
* a warm seed.
|
|
20807
20842
|
*/
|
|
20808
20843
|
getAllBindings: method(external_exports.object({}), external_exports.array(DeviceBindingsForDeviceSchema)),
|
|
20809
20844
|
/**
|
|
@@ -26784,6 +26819,17 @@ var pipelineAnalyticsCapability = {
|
|
|
26784
26819
|
* happens to stamp it. This count is what the migration planner's
|
|
26785
26820
|
* non-blocking gate reads; `relocateMedia({ mode: 'seal' })` is what drives
|
|
26786
26821
|
* it to zero.
|
|
26822
|
+
*
|
|
26823
|
+
* TWO indexed statements per collection, not a walk. It used to page the
|
|
26824
|
+
* whole collection at 200 rows per RPC ordered by an unindexed column, so
|
|
26825
|
+
* on the live hub — 1 254 576 rows — it hit the 60 s RPC deadline every
|
|
26826
|
+
* time it was called, and the migration it gates could never start. The
|
|
26827
|
+
* cheap question (`present`: is there at least one) is asked first and
|
|
26828
|
+
* separately from the expensive one (`rows`), because only the first has
|
|
26829
|
+
* to be answerable for the gate to do its job.
|
|
26830
|
+
*
|
|
26831
|
+
* **`null` is "not measurable", never zero** — at either level. An
|
|
26832
|
+
* unreadable collection must not read as a sealed one.
|
|
26787
26833
|
*/
|
|
26788
26834
|
countUnstampedEventMedia: method(external_exports.object({}), UnstampedEventMediaCountSchema, { auth: "admin" }),
|
|
26789
26835
|
/**
|
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-EJO2K6FH.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-EJVL74UN.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-EJVL74UN.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-4BY6AQ3K.js");
|
|
1134
1134
|
if (presetNamespace) {
|
|
1135
1135
|
const spinner4 = clack.spinner();
|
|
1136
1136
|
spinner4.start(`Discovering hub on LAN (namespace "${presetNamespace}")`);
|