camstack 1.2.65 → 1.2.67
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-ot6dTHCA.mjs
|
|
14526
14526
|
var WELL_KNOWN_TABS = [
|
|
14527
14527
|
{
|
|
14528
14528
|
id: "overview",
|
|
@@ -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
|
/**
|
|
@@ -21202,6 +21237,80 @@ var embeddingEncoderCapability = {
|
|
|
21202
21237
|
getInfo: method(external_exports.void(), EmbeddingInfoSchema, { auth: "admin" })
|
|
21203
21238
|
}
|
|
21204
21239
|
};
|
|
21240
|
+
var FailureReasonCountSchema = external_exports.object({
|
|
21241
|
+
/**
|
|
21242
|
+
* Why the attempt did not land, in the contributor's own vocabulary —
|
|
21243
|
+
* `worker-lease-gone`, `queue-overflow`, `timeout`, `empty-read`. The same
|
|
21244
|
+
* strings that already appear in this repo's logs and, where one exists, the
|
|
21245
|
+
* same string the per-track `previewMissReason` records (D276): a second
|
|
21246
|
+
* vocabulary for the same loss would make the row and the counter
|
|
21247
|
+
* un-joinable.
|
|
21248
|
+
*/
|
|
21249
|
+
reason: external_exports.string(),
|
|
21250
|
+
count: external_exports.number().int().nonnegative()
|
|
21251
|
+
});
|
|
21252
|
+
var FailureContributionSchema = external_exports.object({
|
|
21253
|
+
/**
|
|
21254
|
+
* The failing path — `enrichment-crop`, `inference`, `plate-ocr`,
|
|
21255
|
+
* `person-over-vehicle`. Free text, for the reason `load-contribution` keeps
|
|
21256
|
+
* `unit` free: the families are owned by different addons and a shared enum
|
|
21257
|
+
* is a central list that rots invisibly.
|
|
21258
|
+
*/
|
|
21259
|
+
family: external_exports.string(),
|
|
21260
|
+
/**
|
|
21261
|
+
* The NUMERIC device id — the same value every log line carries as
|
|
21262
|
+
* `tags.deviceId`. Never nullable and never absent: a contributor that
|
|
21263
|
+
* cannot name the camera must not emit the entry, because a fleet total
|
|
21264
|
+
* cannot answer the only question anybody asks of this surface.
|
|
21265
|
+
*/
|
|
21266
|
+
deviceId: external_exports.number().int().positive(),
|
|
21267
|
+
/**
|
|
21268
|
+
* A second dimension inside the family: the model / step id for an inference
|
|
21269
|
+
* timeout, so "which camera AND which model" is one read. Absent when the
|
|
21270
|
+
* family has a single variant.
|
|
21271
|
+
*/
|
|
21272
|
+
variant: external_exports.string().optional(),
|
|
21273
|
+
/**
|
|
21274
|
+
* Epoch ms this counter started — the INCARNATION MARKER. A consumer
|
|
21275
|
+
* differencing two reads must drop the interval when it changes, because the
|
|
21276
|
+
* counter restarted from zero in a respawned runner. Same discipline as
|
|
21277
|
+
* `LoadContribution.startedAtMs`.
|
|
21278
|
+
*/
|
|
21279
|
+
sinceMs: external_exports.number(),
|
|
21280
|
+
/** Epoch ms it was read. `atMs - sinceMs` is the interval this covers. */
|
|
21281
|
+
atMs: external_exports.number(),
|
|
21282
|
+
/**
|
|
21283
|
+
* THE DENOMINATOR — every attempt on this path for this camera in the
|
|
21284
|
+
* window. A failure count published without it is the mistake this schema
|
|
21285
|
+
* exists to make impossible.
|
|
21286
|
+
*/
|
|
21287
|
+
attempts: external_exports.number().int().nonnegative(),
|
|
21288
|
+
/** Attempts that landed. `attempts - succeeded` is the loss. */
|
|
21289
|
+
succeeded: external_exports.number().int().nonnegative(),
|
|
21290
|
+
/** The loss, partitioned. Sums to `attempts - succeeded`. */
|
|
21291
|
+
reasons: external_exports.array(FailureReasonCountSchema).readonly()
|
|
21292
|
+
});
|
|
21293
|
+
var failureContributionCapability = {
|
|
21294
|
+
name: "failure-contribution",
|
|
21295
|
+
scope: "system",
|
|
21296
|
+
mode: "collection",
|
|
21297
|
+
internal: true,
|
|
21298
|
+
methods: {
|
|
21299
|
+
/**
|
|
21300
|
+
* This addon's per-camera failure counters, read live from bounded in-RAM
|
|
21301
|
+
* state it already keeps. Inert: no persistence, no sampling, no timer.
|
|
21302
|
+
*
|
|
21303
|
+
* READING NEVER RESETS. The counters are CUMULATIVE since `sinceMs`, and a
|
|
21304
|
+
* consumer that wants a rate differences two reads. A draining read would
|
|
21305
|
+
* make two operators with the page open each destroy half of the other's
|
|
21306
|
+
* numbers, and `load-contribution` already settled the same question the
|
|
21307
|
+
* same way for `cpuSeconds`.
|
|
21308
|
+
*/
|
|
21309
|
+
list: method(external_exports.void(), external_exports.array(FailureContributionSchema).readonly())
|
|
21310
|
+
},
|
|
21311
|
+
/** In-process only — enumerated through `addons.listCapabilityProviders`. */
|
|
21312
|
+
mount: { kind: "skip" }
|
|
21313
|
+
};
|
|
21205
21314
|
var DirEntrySchema = external_exports.object({
|
|
21206
21315
|
name: external_exports.string(),
|
|
21207
21316
|
path: external_exports.string()
|
|
@@ -21740,145 +21849,6 @@ var llmCapability = {
|
|
|
21740
21849
|
})
|
|
21741
21850
|
}
|
|
21742
21851
|
};
|
|
21743
|
-
var LogChannelApplyResultSchema = external_exports.object({
|
|
21744
|
-
/** How many declared channels are armed in this process after the call. */
|
|
21745
|
-
armed: external_exports.number().int().min(0),
|
|
21746
|
-
/**
|
|
21747
|
-
* Names the document armed that this process does not declare. Reported
|
|
21748
|
-
* rather than swallowed: a name here is either a typo or an addon that has
|
|
21749
|
-
* not booted, and both deserve a line instead of silence.
|
|
21750
|
-
*/
|
|
21751
|
-
unknown: external_exports.array(external_exports.string()).readonly()
|
|
21752
|
-
});
|
|
21753
|
-
var logChannelsCapability = {
|
|
21754
|
-
name: "log-channels",
|
|
21755
|
-
scope: "system",
|
|
21756
|
-
mode: "collection",
|
|
21757
|
-
internal: true,
|
|
21758
|
-
methods: {
|
|
21759
|
-
/** The channels this addon declares. Inert: no value, no state. */
|
|
21760
|
-
list: method(external_exports.void(), external_exports.array(LogChannelDescriptorSchema).readonly()),
|
|
21761
|
-
/**
|
|
21762
|
-
* Refresh this process's mirror from the document's FULL set of armed
|
|
21763
|
-
* windows.
|
|
21764
|
-
*
|
|
21765
|
-
* Full and not incremental on purpose: the document is the authority, so a
|
|
21766
|
-
* channel it does not name is disarmed here. An incremental apply would
|
|
21767
|
-
* let a disarm get lost in transit and leave a channel running that
|
|
21768
|
-
* nobody can see is running.
|
|
21769
|
-
*/
|
|
21770
|
-
apply: method(external_exports.object({ windows: external_exports.array(LogChannelWindowSchema).readonly() }), LogChannelApplyResultSchema, { kind: "mutation" })
|
|
21771
|
-
},
|
|
21772
|
-
/** In-process only — enumerated through `addons.listCapabilityProviders`. */
|
|
21773
|
-
mount: { kind: "skip" }
|
|
21774
|
-
};
|
|
21775
|
-
var LogLevelSchema = external_exports.enum([
|
|
21776
|
-
"debug",
|
|
21777
|
-
"info",
|
|
21778
|
-
"warn",
|
|
21779
|
-
"error"
|
|
21780
|
-
]);
|
|
21781
|
-
var LogEntrySchema = external_exports.object({
|
|
21782
|
-
timestamp: external_exports.date(),
|
|
21783
|
-
level: LogLevelSchema,
|
|
21784
|
-
scope: external_exports.array(external_exports.string()),
|
|
21785
|
-
message: external_exports.string(),
|
|
21786
|
-
meta: external_exports.record(external_exports.string(), external_exports.unknown()).optional(),
|
|
21787
|
-
tags: external_exports.record(external_exports.string(), external_exports.string()).optional()
|
|
21788
|
-
});
|
|
21789
|
-
var logDestinationCapability = {
|
|
21790
|
-
name: "log-destination",
|
|
21791
|
-
scope: "system",
|
|
21792
|
-
mode: "collection",
|
|
21793
|
-
internal: true,
|
|
21794
|
-
methods: {
|
|
21795
|
-
write: method(LogEntrySchema, external_exports.void(), { kind: "mutation" }),
|
|
21796
|
-
query: method(external_exports.object({
|
|
21797
|
-
scope: external_exports.array(external_exports.string()).optional(),
|
|
21798
|
-
level: LogLevelSchema.optional(),
|
|
21799
|
-
since: external_exports.date().optional(),
|
|
21800
|
-
until: external_exports.date().optional(),
|
|
21801
|
-
limit: external_exports.number().optional(),
|
|
21802
|
-
tags: external_exports.record(external_exports.string(), external_exports.string()).optional()
|
|
21803
|
-
}), external_exports.array(LogEntrySchema).readonly())
|
|
21804
|
-
},
|
|
21805
|
-
/** BIG PLAN 2: declarative mount hint — read by `@camstack/system` `buildCapRouters`. */
|
|
21806
|
-
mount: { kind: "skip" }
|
|
21807
|
-
};
|
|
21808
|
-
var FailureReasonCountSchema = external_exports.object({
|
|
21809
|
-
/**
|
|
21810
|
-
* Why the attempt did not land, in the contributor's own vocabulary —
|
|
21811
|
-
* `worker-lease-gone`, `queue-overflow`, `timeout`, `empty-read`. The same
|
|
21812
|
-
* strings that already appear in this repo's logs and, where one exists, the
|
|
21813
|
-
* same string the per-track `previewMissReason` records (D276): a second
|
|
21814
|
-
* vocabulary for the same loss would make the row and the counter
|
|
21815
|
-
* un-joinable.
|
|
21816
|
-
*/
|
|
21817
|
-
reason: external_exports.string(),
|
|
21818
|
-
count: external_exports.number().int().nonnegative()
|
|
21819
|
-
});
|
|
21820
|
-
var FailureContributionSchema = external_exports.object({
|
|
21821
|
-
/**
|
|
21822
|
-
* The failing path — `enrichment-crop`, `inference`, `plate-ocr`,
|
|
21823
|
-
* `person-over-vehicle`. Free text, for the reason `load-contribution` keeps
|
|
21824
|
-
* `unit` free: the families are owned by different addons and a shared enum
|
|
21825
|
-
* is a central list that rots invisibly.
|
|
21826
|
-
*/
|
|
21827
|
-
family: external_exports.string(),
|
|
21828
|
-
/**
|
|
21829
|
-
* The NUMERIC device id — the same value every log line carries as
|
|
21830
|
-
* `tags.deviceId`. Never nullable and never absent: a contributor that
|
|
21831
|
-
* cannot name the camera must not emit the entry, because a fleet total
|
|
21832
|
-
* cannot answer the only question anybody asks of this surface.
|
|
21833
|
-
*/
|
|
21834
|
-
deviceId: external_exports.number().int().positive(),
|
|
21835
|
-
/**
|
|
21836
|
-
* A second dimension inside the family: the model / step id for an inference
|
|
21837
|
-
* timeout, so "which camera AND which model" is one read. Absent when the
|
|
21838
|
-
* family has a single variant.
|
|
21839
|
-
*/
|
|
21840
|
-
variant: external_exports.string().optional(),
|
|
21841
|
-
/**
|
|
21842
|
-
* Epoch ms this counter started — the INCARNATION MARKER. A consumer
|
|
21843
|
-
* differencing two reads must drop the interval when it changes, because the
|
|
21844
|
-
* counter restarted from zero in a respawned runner. Same discipline as
|
|
21845
|
-
* `LoadContribution.startedAtMs`.
|
|
21846
|
-
*/
|
|
21847
|
-
sinceMs: external_exports.number(),
|
|
21848
|
-
/** Epoch ms it was read. `atMs - sinceMs` is the interval this covers. */
|
|
21849
|
-
atMs: external_exports.number(),
|
|
21850
|
-
/**
|
|
21851
|
-
* THE DENOMINATOR — every attempt on this path for this camera in the
|
|
21852
|
-
* window. A failure count published without it is the mistake this schema
|
|
21853
|
-
* exists to make impossible.
|
|
21854
|
-
*/
|
|
21855
|
-
attempts: external_exports.number().int().nonnegative(),
|
|
21856
|
-
/** Attempts that landed. `attempts - succeeded` is the loss. */
|
|
21857
|
-
succeeded: external_exports.number().int().nonnegative(),
|
|
21858
|
-
/** The loss, partitioned. Sums to `attempts - succeeded`. */
|
|
21859
|
-
reasons: external_exports.array(FailureReasonCountSchema).readonly()
|
|
21860
|
-
});
|
|
21861
|
-
var failureContributionCapability = {
|
|
21862
|
-
name: "failure-contribution",
|
|
21863
|
-
scope: "system",
|
|
21864
|
-
mode: "collection",
|
|
21865
|
-
internal: true,
|
|
21866
|
-
methods: {
|
|
21867
|
-
/**
|
|
21868
|
-
* This addon's per-camera failure counters, read live from bounded in-RAM
|
|
21869
|
-
* state it already keeps. Inert: no persistence, no sampling, no timer.
|
|
21870
|
-
*
|
|
21871
|
-
* READING NEVER RESETS. The counters are CUMULATIVE since `sinceMs`, and a
|
|
21872
|
-
* consumer that wants a rate differences two reads. A draining read would
|
|
21873
|
-
* make two operators with the page open each destroy half of the other's
|
|
21874
|
-
* numbers, and `load-contribution` already settled the same question the
|
|
21875
|
-
* same way for `cpuSeconds`.
|
|
21876
|
-
*/
|
|
21877
|
-
list: method(external_exports.void(), external_exports.array(FailureContributionSchema).readonly())
|
|
21878
|
-
},
|
|
21879
|
-
/** In-process only — enumerated through `addons.listCapabilityProviders`. */
|
|
21880
|
-
mount: { kind: "skip" }
|
|
21881
|
-
};
|
|
21882
21852
|
var LOAD_CONTRIBUTION_ROLES = [
|
|
21883
21853
|
"decode",
|
|
21884
21854
|
"transcode",
|
|
@@ -21958,6 +21928,71 @@ var loadContributionCapability = {
|
|
|
21958
21928
|
/** In-process only — enumerated through `addons.listCapabilityProviders`. */
|
|
21959
21929
|
mount: { kind: "skip" }
|
|
21960
21930
|
};
|
|
21931
|
+
var LogChannelApplyResultSchema = external_exports.object({
|
|
21932
|
+
/** How many declared channels are armed in this process after the call. */
|
|
21933
|
+
armed: external_exports.number().int().min(0),
|
|
21934
|
+
/**
|
|
21935
|
+
* Names the document armed that this process does not declare. Reported
|
|
21936
|
+
* rather than swallowed: a name here is either a typo or an addon that has
|
|
21937
|
+
* not booted, and both deserve a line instead of silence.
|
|
21938
|
+
*/
|
|
21939
|
+
unknown: external_exports.array(external_exports.string()).readonly()
|
|
21940
|
+
});
|
|
21941
|
+
var logChannelsCapability = {
|
|
21942
|
+
name: "log-channels",
|
|
21943
|
+
scope: "system",
|
|
21944
|
+
mode: "collection",
|
|
21945
|
+
internal: true,
|
|
21946
|
+
methods: {
|
|
21947
|
+
/** The channels this addon declares. Inert: no value, no state. */
|
|
21948
|
+
list: method(external_exports.void(), external_exports.array(LogChannelDescriptorSchema).readonly()),
|
|
21949
|
+
/**
|
|
21950
|
+
* Refresh this process's mirror from the document's FULL set of armed
|
|
21951
|
+
* windows.
|
|
21952
|
+
*
|
|
21953
|
+
* Full and not incremental on purpose: the document is the authority, so a
|
|
21954
|
+
* channel it does not name is disarmed here. An incremental apply would
|
|
21955
|
+
* let a disarm get lost in transit and leave a channel running that
|
|
21956
|
+
* nobody can see is running.
|
|
21957
|
+
*/
|
|
21958
|
+
apply: method(external_exports.object({ windows: external_exports.array(LogChannelWindowSchema).readonly() }), LogChannelApplyResultSchema, { kind: "mutation" })
|
|
21959
|
+
},
|
|
21960
|
+
/** In-process only — enumerated through `addons.listCapabilityProviders`. */
|
|
21961
|
+
mount: { kind: "skip" }
|
|
21962
|
+
};
|
|
21963
|
+
var LogLevelSchema = external_exports.enum([
|
|
21964
|
+
"debug",
|
|
21965
|
+
"info",
|
|
21966
|
+
"warn",
|
|
21967
|
+
"error"
|
|
21968
|
+
]);
|
|
21969
|
+
var LogEntrySchema = external_exports.object({
|
|
21970
|
+
timestamp: external_exports.date(),
|
|
21971
|
+
level: LogLevelSchema,
|
|
21972
|
+
scope: external_exports.array(external_exports.string()),
|
|
21973
|
+
message: external_exports.string(),
|
|
21974
|
+
meta: external_exports.record(external_exports.string(), external_exports.unknown()).optional(),
|
|
21975
|
+
tags: external_exports.record(external_exports.string(), external_exports.string()).optional()
|
|
21976
|
+
});
|
|
21977
|
+
var logDestinationCapability = {
|
|
21978
|
+
name: "log-destination",
|
|
21979
|
+
scope: "system",
|
|
21980
|
+
mode: "collection",
|
|
21981
|
+
internal: true,
|
|
21982
|
+
methods: {
|
|
21983
|
+
write: method(LogEntrySchema, external_exports.void(), { kind: "mutation" }),
|
|
21984
|
+
query: method(external_exports.object({
|
|
21985
|
+
scope: external_exports.array(external_exports.string()).optional(),
|
|
21986
|
+
level: LogLevelSchema.optional(),
|
|
21987
|
+
since: external_exports.date().optional(),
|
|
21988
|
+
until: external_exports.date().optional(),
|
|
21989
|
+
limit: external_exports.number().optional(),
|
|
21990
|
+
tags: external_exports.record(external_exports.string(), external_exports.string()).optional()
|
|
21991
|
+
}), external_exports.array(LogEntrySchema).readonly())
|
|
21992
|
+
},
|
|
21993
|
+
/** BIG PLAN 2: declarative mount hint — read by `@camstack/system` `buildCapRouters`. */
|
|
21994
|
+
mount: { kind: "skip" }
|
|
21995
|
+
};
|
|
21961
21996
|
var LoginStageEnum = external_exports.enum(["primary", "second-factor"]);
|
|
21962
21997
|
var RedirectLoginMethodSchema = external_exports.object({
|
|
21963
21998
|
kind: external_exports.literal("redirect"),
|
|
@@ -26046,13 +26081,18 @@ var MediaFileKindEnum = external_exports.enum([
|
|
|
26046
26081
|
"keyFrameSmall",
|
|
26047
26082
|
"thumbnailSmall"
|
|
26048
26083
|
]);
|
|
26049
|
-
var
|
|
26084
|
+
var MediaFileRefSchema = external_exports.object({
|
|
26050
26085
|
key: external_exports.string(),
|
|
26051
26086
|
kind: MediaFileKindEnum,
|
|
26052
|
-
base64: external_exports.string(),
|
|
26053
26087
|
sizeBytes: external_exports.number(),
|
|
26054
26088
|
timestamp: external_exports.number()
|
|
26055
26089
|
});
|
|
26090
|
+
var MediaFileSchema = MediaFileRefSchema.extend({
|
|
26091
|
+
/** `/addon/<addonId>/event-media/<encoded stored key>`. Always present. */
|
|
26092
|
+
url: external_exports.string(),
|
|
26093
|
+
/** @deprecated Transitional — see the schema docblock. Use {@link url}. */
|
|
26094
|
+
base64: external_exports.string()
|
|
26095
|
+
});
|
|
26056
26096
|
var MediaFileInfoSchema = MediaFileSchema.omit({ base64: true });
|
|
26057
26097
|
var RetrainMacroClassSchema = external_exports.enum([
|
|
26058
26098
|
"person",
|
|
@@ -26784,6 +26824,17 @@ var pipelineAnalyticsCapability = {
|
|
|
26784
26824
|
* happens to stamp it. This count is what the migration planner's
|
|
26785
26825
|
* non-blocking gate reads; `relocateMedia({ mode: 'seal' })` is what drives
|
|
26786
26826
|
* it to zero.
|
|
26827
|
+
*
|
|
26828
|
+
* TWO indexed statements per collection, not a walk. It used to page the
|
|
26829
|
+
* whole collection at 200 rows per RPC ordered by an unindexed column, so
|
|
26830
|
+
* on the live hub — 1 254 576 rows — it hit the 60 s RPC deadline every
|
|
26831
|
+
* time it was called, and the migration it gates could never start. The
|
|
26832
|
+
* cheap question (`present`: is there at least one) is asked first and
|
|
26833
|
+
* separately from the expensive one (`rows`), because only the first has
|
|
26834
|
+
* to be answerable for the gate to do its job.
|
|
26835
|
+
*
|
|
26836
|
+
* **`null` is "not measurable", never zero** — at either level. An
|
|
26837
|
+
* unreadable collection must not read as a sealed one.
|
|
26787
26838
|
*/
|
|
26788
26839
|
countUnstampedEventMedia: method(external_exports.object({}), UnstampedEventMediaCountSchema, { auth: "admin" }),
|
|
26789
26840
|
/**
|
|
@@ -27107,6 +27158,26 @@ var pipelineAnalyticsCapability = {
|
|
|
27107
27158
|
deviceId: external_exports.number()
|
|
27108
27159
|
}), external_exports.array(MediaFileInfoSchema).readonly()),
|
|
27109
27160
|
/**
|
|
27161
|
+
* What media an EVENT has, without any of it — the twin `getEventMedia`
|
|
27162
|
+
* never had.
|
|
27163
|
+
*
|
|
27164
|
+
* `listTrackMedia` above got this treatment because a track's media is
|
|
27165
|
+
* 5-8 MB. An event's is worse per row, not better: an old-style event owns
|
|
27166
|
+
* a `crop` AND a native-resolution `fullFrameBoxed`, and the track DETAIL
|
|
27167
|
+
* modal — the one surface that legitimately shows the big kinds — unions
|
|
27168
|
+
* both listings to build its filmstrip. It then renders every tile from
|
|
27169
|
+
* the `event-media` plane by key and throws the bytes away. Measured on
|
|
27170
|
+
* the live hub: one event's `fullFrameBoxed` is 2 824 077 B, base64'd to
|
|
27171
|
+
* ~3.8 MB, allocated whole in hub-main's heap, for a list of keys.
|
|
27172
|
+
*
|
|
27173
|
+
* Same `deviceId` authorization subject as `getEventMedia`, and the same
|
|
27174
|
+
* rows — this is a projection of that method, never a different question.
|
|
27175
|
+
*/
|
|
27176
|
+
listEventMedia: method(external_exports.object({
|
|
27177
|
+
eventId: external_exports.string(),
|
|
27178
|
+
deviceId: external_exports.number()
|
|
27179
|
+
}), external_exports.array(MediaFileInfoSchema).readonly()),
|
|
27180
|
+
/**
|
|
27110
27181
|
* Search object events by text query using CLIP cosine similarity.
|
|
27111
27182
|
* Encodes `text` via the `embedding-encoder` cap, queries the
|
|
27112
27183
|
* `ObjectEmbeddingStore` with optional prefilters, ranks all matching
|
|
@@ -32547,7 +32618,7 @@ var FaceClusterSchema = external_exports.object({
|
|
|
32547
32618
|
var MediaFileLiteSchema$1 = external_exports.object({
|
|
32548
32619
|
key: external_exports.string(),
|
|
32549
32620
|
kind: external_exports.string(),
|
|
32550
|
-
|
|
32621
|
+
url: external_exports.string(),
|
|
32551
32622
|
sizeBytes: external_exports.number(),
|
|
32552
32623
|
timestamp: external_exports.number()
|
|
32553
32624
|
});
|
|
@@ -35440,7 +35511,7 @@ var PlateInfoSchema = external_exports.object({
|
|
|
35440
35511
|
var MediaFileLiteSchema = external_exports.object({
|
|
35441
35512
|
key: external_exports.string(),
|
|
35442
35513
|
kind: external_exports.string(),
|
|
35443
|
-
|
|
35514
|
+
url: external_exports.string(),
|
|
35444
35515
|
sizeBytes: external_exports.number(),
|
|
35445
35516
|
timestamp: external_exports.number()
|
|
35446
35517
|
});
|
|
@@ -41982,6 +42053,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
41982
42053
|
addonId: null,
|
|
41983
42054
|
access: "view"
|
|
41984
42055
|
},
|
|
42056
|
+
"pipelineAnalytics.listEventMedia": {
|
|
42057
|
+
capName: "pipeline-analytics",
|
|
42058
|
+
capScope: "device",
|
|
42059
|
+
addonId: null,
|
|
42060
|
+
access: "view"
|
|
42061
|
+
},
|
|
41985
42062
|
"pipelineAnalytics.listGroups": {
|
|
41986
42063
|
capName: "pipeline-analytics",
|
|
41987
42064
|
capScope: "device",
|
|
@@ -45605,6 +45682,11 @@ var METHOD_DEVICE_SELECTORS = Object.freeze({
|
|
|
45605
45682
|
form: "array",
|
|
45606
45683
|
optional: false
|
|
45607
45684
|
}],
|
|
45685
|
+
"pipelineAnalytics.listEventMedia": [{
|
|
45686
|
+
name: "deviceId",
|
|
45687
|
+
form: "single",
|
|
45688
|
+
optional: false
|
|
45689
|
+
}],
|
|
45608
45690
|
"pipelineAnalytics.listGroups": [{
|
|
45609
45691
|
name: "deviceIds",
|
|
45610
45692
|
form: "array",
|
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-MYPVHFJL.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-5FCVBL5M.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-5FCVBL5M.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-PJINOUDH.js");
|
|
1134
1134
|
if (presetNamespace) {
|
|
1135
1135
|
const spinner4 = clack.spinner();
|
|
1136
1136
|
spinner4.start(`Discovering hub on LAN (namespace "${presetNamespace}")`);
|