camstack 1.2.66 → 1.2.68
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-BS40IUZZ.mjs
|
|
14526
14526
|
var WELL_KNOWN_TABS = [
|
|
14527
14527
|
{
|
|
14528
14528
|
id: "overview",
|
|
@@ -21237,6 +21237,80 @@ var embeddingEncoderCapability = {
|
|
|
21237
21237
|
getInfo: method(external_exports.void(), EmbeddingInfoSchema, { auth: "admin" })
|
|
21238
21238
|
}
|
|
21239
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
|
+
};
|
|
21240
21314
|
var DirEntrySchema = external_exports.object({
|
|
21241
21315
|
name: external_exports.string(),
|
|
21242
21316
|
path: external_exports.string()
|
|
@@ -21775,145 +21849,6 @@ var llmCapability = {
|
|
|
21775
21849
|
})
|
|
21776
21850
|
}
|
|
21777
21851
|
};
|
|
21778
|
-
var LogChannelApplyResultSchema = external_exports.object({
|
|
21779
|
-
/** How many declared channels are armed in this process after the call. */
|
|
21780
|
-
armed: external_exports.number().int().min(0),
|
|
21781
|
-
/**
|
|
21782
|
-
* Names the document armed that this process does not declare. Reported
|
|
21783
|
-
* rather than swallowed: a name here is either a typo or an addon that has
|
|
21784
|
-
* not booted, and both deserve a line instead of silence.
|
|
21785
|
-
*/
|
|
21786
|
-
unknown: external_exports.array(external_exports.string()).readonly()
|
|
21787
|
-
});
|
|
21788
|
-
var logChannelsCapability = {
|
|
21789
|
-
name: "log-channels",
|
|
21790
|
-
scope: "system",
|
|
21791
|
-
mode: "collection",
|
|
21792
|
-
internal: true,
|
|
21793
|
-
methods: {
|
|
21794
|
-
/** The channels this addon declares. Inert: no value, no state. */
|
|
21795
|
-
list: method(external_exports.void(), external_exports.array(LogChannelDescriptorSchema).readonly()),
|
|
21796
|
-
/**
|
|
21797
|
-
* Refresh this process's mirror from the document's FULL set of armed
|
|
21798
|
-
* windows.
|
|
21799
|
-
*
|
|
21800
|
-
* Full and not incremental on purpose: the document is the authority, so a
|
|
21801
|
-
* channel it does not name is disarmed here. An incremental apply would
|
|
21802
|
-
* let a disarm get lost in transit and leave a channel running that
|
|
21803
|
-
* nobody can see is running.
|
|
21804
|
-
*/
|
|
21805
|
-
apply: method(external_exports.object({ windows: external_exports.array(LogChannelWindowSchema).readonly() }), LogChannelApplyResultSchema, { kind: "mutation" })
|
|
21806
|
-
},
|
|
21807
|
-
/** In-process only — enumerated through `addons.listCapabilityProviders`. */
|
|
21808
|
-
mount: { kind: "skip" }
|
|
21809
|
-
};
|
|
21810
|
-
var LogLevelSchema = external_exports.enum([
|
|
21811
|
-
"debug",
|
|
21812
|
-
"info",
|
|
21813
|
-
"warn",
|
|
21814
|
-
"error"
|
|
21815
|
-
]);
|
|
21816
|
-
var LogEntrySchema = external_exports.object({
|
|
21817
|
-
timestamp: external_exports.date(),
|
|
21818
|
-
level: LogLevelSchema,
|
|
21819
|
-
scope: external_exports.array(external_exports.string()),
|
|
21820
|
-
message: external_exports.string(),
|
|
21821
|
-
meta: external_exports.record(external_exports.string(), external_exports.unknown()).optional(),
|
|
21822
|
-
tags: external_exports.record(external_exports.string(), external_exports.string()).optional()
|
|
21823
|
-
});
|
|
21824
|
-
var logDestinationCapability = {
|
|
21825
|
-
name: "log-destination",
|
|
21826
|
-
scope: "system",
|
|
21827
|
-
mode: "collection",
|
|
21828
|
-
internal: true,
|
|
21829
|
-
methods: {
|
|
21830
|
-
write: method(LogEntrySchema, external_exports.void(), { kind: "mutation" }),
|
|
21831
|
-
query: method(external_exports.object({
|
|
21832
|
-
scope: external_exports.array(external_exports.string()).optional(),
|
|
21833
|
-
level: LogLevelSchema.optional(),
|
|
21834
|
-
since: external_exports.date().optional(),
|
|
21835
|
-
until: external_exports.date().optional(),
|
|
21836
|
-
limit: external_exports.number().optional(),
|
|
21837
|
-
tags: external_exports.record(external_exports.string(), external_exports.string()).optional()
|
|
21838
|
-
}), external_exports.array(LogEntrySchema).readonly())
|
|
21839
|
-
},
|
|
21840
|
-
/** BIG PLAN 2: declarative mount hint — read by `@camstack/system` `buildCapRouters`. */
|
|
21841
|
-
mount: { kind: "skip" }
|
|
21842
|
-
};
|
|
21843
|
-
var FailureReasonCountSchema = external_exports.object({
|
|
21844
|
-
/**
|
|
21845
|
-
* Why the attempt did not land, in the contributor's own vocabulary —
|
|
21846
|
-
* `worker-lease-gone`, `queue-overflow`, `timeout`, `empty-read`. The same
|
|
21847
|
-
* strings that already appear in this repo's logs and, where one exists, the
|
|
21848
|
-
* same string the per-track `previewMissReason` records (D276): a second
|
|
21849
|
-
* vocabulary for the same loss would make the row and the counter
|
|
21850
|
-
* un-joinable.
|
|
21851
|
-
*/
|
|
21852
|
-
reason: external_exports.string(),
|
|
21853
|
-
count: external_exports.number().int().nonnegative()
|
|
21854
|
-
});
|
|
21855
|
-
var FailureContributionSchema = external_exports.object({
|
|
21856
|
-
/**
|
|
21857
|
-
* The failing path — `enrichment-crop`, `inference`, `plate-ocr`,
|
|
21858
|
-
* `person-over-vehicle`. Free text, for the reason `load-contribution` keeps
|
|
21859
|
-
* `unit` free: the families are owned by different addons and a shared enum
|
|
21860
|
-
* is a central list that rots invisibly.
|
|
21861
|
-
*/
|
|
21862
|
-
family: external_exports.string(),
|
|
21863
|
-
/**
|
|
21864
|
-
* The NUMERIC device id — the same value every log line carries as
|
|
21865
|
-
* `tags.deviceId`. Never nullable and never absent: a contributor that
|
|
21866
|
-
* cannot name the camera must not emit the entry, because a fleet total
|
|
21867
|
-
* cannot answer the only question anybody asks of this surface.
|
|
21868
|
-
*/
|
|
21869
|
-
deviceId: external_exports.number().int().positive(),
|
|
21870
|
-
/**
|
|
21871
|
-
* A second dimension inside the family: the model / step id for an inference
|
|
21872
|
-
* timeout, so "which camera AND which model" is one read. Absent when the
|
|
21873
|
-
* family has a single variant.
|
|
21874
|
-
*/
|
|
21875
|
-
variant: external_exports.string().optional(),
|
|
21876
|
-
/**
|
|
21877
|
-
* Epoch ms this counter started — the INCARNATION MARKER. A consumer
|
|
21878
|
-
* differencing two reads must drop the interval when it changes, because the
|
|
21879
|
-
* counter restarted from zero in a respawned runner. Same discipline as
|
|
21880
|
-
* `LoadContribution.startedAtMs`.
|
|
21881
|
-
*/
|
|
21882
|
-
sinceMs: external_exports.number(),
|
|
21883
|
-
/** Epoch ms it was read. `atMs - sinceMs` is the interval this covers. */
|
|
21884
|
-
atMs: external_exports.number(),
|
|
21885
|
-
/**
|
|
21886
|
-
* THE DENOMINATOR — every attempt on this path for this camera in the
|
|
21887
|
-
* window. A failure count published without it is the mistake this schema
|
|
21888
|
-
* exists to make impossible.
|
|
21889
|
-
*/
|
|
21890
|
-
attempts: external_exports.number().int().nonnegative(),
|
|
21891
|
-
/** Attempts that landed. `attempts - succeeded` is the loss. */
|
|
21892
|
-
succeeded: external_exports.number().int().nonnegative(),
|
|
21893
|
-
/** The loss, partitioned. Sums to `attempts - succeeded`. */
|
|
21894
|
-
reasons: external_exports.array(FailureReasonCountSchema).readonly()
|
|
21895
|
-
});
|
|
21896
|
-
var failureContributionCapability = {
|
|
21897
|
-
name: "failure-contribution",
|
|
21898
|
-
scope: "system",
|
|
21899
|
-
mode: "collection",
|
|
21900
|
-
internal: true,
|
|
21901
|
-
methods: {
|
|
21902
|
-
/**
|
|
21903
|
-
* This addon's per-camera failure counters, read live from bounded in-RAM
|
|
21904
|
-
* state it already keeps. Inert: no persistence, no sampling, no timer.
|
|
21905
|
-
*
|
|
21906
|
-
* READING NEVER RESETS. The counters are CUMULATIVE since `sinceMs`, and a
|
|
21907
|
-
* consumer that wants a rate differences two reads. A draining read would
|
|
21908
|
-
* make two operators with the page open each destroy half of the other's
|
|
21909
|
-
* numbers, and `load-contribution` already settled the same question the
|
|
21910
|
-
* same way for `cpuSeconds`.
|
|
21911
|
-
*/
|
|
21912
|
-
list: method(external_exports.void(), external_exports.array(FailureContributionSchema).readonly())
|
|
21913
|
-
},
|
|
21914
|
-
/** In-process only — enumerated through `addons.listCapabilityProviders`. */
|
|
21915
|
-
mount: { kind: "skip" }
|
|
21916
|
-
};
|
|
21917
21852
|
var LOAD_CONTRIBUTION_ROLES = [
|
|
21918
21853
|
"decode",
|
|
21919
21854
|
"transcode",
|
|
@@ -21993,6 +21928,71 @@ var loadContributionCapability = {
|
|
|
21993
21928
|
/** In-process only — enumerated through `addons.listCapabilityProviders`. */
|
|
21994
21929
|
mount: { kind: "skip" }
|
|
21995
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
|
+
};
|
|
21996
21996
|
var LoginStageEnum = external_exports.enum(["primary", "second-factor"]);
|
|
21997
21997
|
var RedirectLoginMethodSchema = external_exports.object({
|
|
21998
21998
|
kind: external_exports.literal("redirect"),
|
|
@@ -26081,13 +26081,18 @@ var MediaFileKindEnum = external_exports.enum([
|
|
|
26081
26081
|
"keyFrameSmall",
|
|
26082
26082
|
"thumbnailSmall"
|
|
26083
26083
|
]);
|
|
26084
|
-
var
|
|
26084
|
+
var MediaFileRefSchema = external_exports.object({
|
|
26085
26085
|
key: external_exports.string(),
|
|
26086
26086
|
kind: MediaFileKindEnum,
|
|
26087
|
-
base64: external_exports.string(),
|
|
26088
26087
|
sizeBytes: external_exports.number(),
|
|
26089
26088
|
timestamp: external_exports.number()
|
|
26090
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
|
+
});
|
|
26091
26096
|
var MediaFileInfoSchema = MediaFileSchema.omit({ base64: true });
|
|
26092
26097
|
var RetrainMacroClassSchema = external_exports.enum([
|
|
26093
26098
|
"person",
|
|
@@ -26394,6 +26399,25 @@ var EventStoreFootprintSchema = external_exports.object({
|
|
|
26394
26399
|
totalBytes: external_exports.number().int(),
|
|
26395
26400
|
devices: external_exports.array(EventStoreDeviceFootprintSchema).readonly()
|
|
26396
26401
|
});
|
|
26402
|
+
var EventMediaKindFootprintSchema = external_exports.object({
|
|
26403
|
+
kind: MediaFileKindEnum,
|
|
26404
|
+
/** Media rows of this kind. */
|
|
26405
|
+
rows: external_exports.number().int(),
|
|
26406
|
+
/** Bytes on disk held by those rows. */
|
|
26407
|
+
bytes: external_exports.number().int()
|
|
26408
|
+
});
|
|
26409
|
+
var EventMediaKindBreakdownSchema = external_exports.object({
|
|
26410
|
+
/** Every media row in scope, from one unfiltered aggregate. */
|
|
26411
|
+
totalRows: external_exports.number().int(),
|
|
26412
|
+
/** Every media byte in scope, from that same aggregate. */
|
|
26413
|
+
totalBytes: external_exports.number().int(),
|
|
26414
|
+
/** Per-kind footprint, ordered by bytes descending. */
|
|
26415
|
+
kinds: external_exports.array(EventMediaKindFootprintSchema).readonly(),
|
|
26416
|
+
/** `totalRows` minus the summed `kinds` rows — see the schema note. */
|
|
26417
|
+
unaccountedRows: external_exports.number().int(),
|
|
26418
|
+
/** `totalBytes` minus the summed `kinds` bytes — see the schema note. */
|
|
26419
|
+
unaccountedBytes: external_exports.number().int()
|
|
26420
|
+
});
|
|
26397
26421
|
var EventPruneCountsSchema = external_exports.object({
|
|
26398
26422
|
motion: external_exports.number().int(),
|
|
26399
26423
|
object: external_exports.number().int(),
|
|
@@ -26749,6 +26773,22 @@ var pipelineAnalyticsCapability = {
|
|
|
26749
26773
|
auth: "admin"
|
|
26750
26774
|
}),
|
|
26751
26775
|
/**
|
|
26776
|
+
* The same media footprint, broken down by {@link MediaFileKind} instead of
|
|
26777
|
+
* by camera — fleet-wide, or for one camera with `deviceId`.
|
|
26778
|
+
*
|
|
26779
|
+
* Separate from {@link getEventStoreFootprint} rather than a field on it:
|
|
26780
|
+
* the two answer different questions on different axes, the per-camera one
|
|
26781
|
+
* is what the management table renders on every open, and nothing should
|
|
26782
|
+
* pay for a per-kind pass to draw it. See
|
|
26783
|
+
* {@link EventMediaKindBreakdownSchema} for why `unaccounted*` exists —
|
|
26784
|
+
* `kinds` is enumerated, `totalBytes` is not, and the gap must be visible
|
|
26785
|
+
* to anyone sizing a deletion against it.
|
|
26786
|
+
*/
|
|
26787
|
+
getEventMediaFootprintByKind: method(external_exports.object({ deviceId: external_exports.number().int().optional() }), EventMediaKindBreakdownSchema, {
|
|
26788
|
+
kind: "query",
|
|
26789
|
+
auth: "admin"
|
|
26790
|
+
}),
|
|
26791
|
+
/**
|
|
26752
26792
|
* Cluster-wide prune of events older than `olderThanMs` (exclusive) across
|
|
26753
26793
|
* every camera, deleting each event's media in lockstep. Logged to the
|
|
26754
26794
|
* events ops-log with `reason` (default `'retention'`). Returns the summed
|
|
@@ -27153,6 +27193,26 @@ var pipelineAnalyticsCapability = {
|
|
|
27153
27193
|
deviceId: external_exports.number()
|
|
27154
27194
|
}), external_exports.array(MediaFileInfoSchema).readonly()),
|
|
27155
27195
|
/**
|
|
27196
|
+
* What media an EVENT has, without any of it — the twin `getEventMedia`
|
|
27197
|
+
* never had.
|
|
27198
|
+
*
|
|
27199
|
+
* `listTrackMedia` above got this treatment because a track's media is
|
|
27200
|
+
* 5-8 MB. An event's is worse per row, not better: an old-style event owns
|
|
27201
|
+
* a `crop` AND a native-resolution `fullFrameBoxed`, and the track DETAIL
|
|
27202
|
+
* modal — the one surface that legitimately shows the big kinds — unions
|
|
27203
|
+
* both listings to build its filmstrip. It then renders every tile from
|
|
27204
|
+
* the `event-media` plane by key and throws the bytes away. Measured on
|
|
27205
|
+
* the live hub: one event's `fullFrameBoxed` is 2 824 077 B, base64'd to
|
|
27206
|
+
* ~3.8 MB, allocated whole in hub-main's heap, for a list of keys.
|
|
27207
|
+
*
|
|
27208
|
+
* Same `deviceId` authorization subject as `getEventMedia`, and the same
|
|
27209
|
+
* rows — this is a projection of that method, never a different question.
|
|
27210
|
+
*/
|
|
27211
|
+
listEventMedia: method(external_exports.object({
|
|
27212
|
+
eventId: external_exports.string(),
|
|
27213
|
+
deviceId: external_exports.number()
|
|
27214
|
+
}), external_exports.array(MediaFileInfoSchema).readonly()),
|
|
27215
|
+
/**
|
|
27156
27216
|
* Search object events by text query using CLIP cosine similarity.
|
|
27157
27217
|
* Encodes `text` via the `embedding-encoder` cap, queries the
|
|
27158
27218
|
* `ObjectEmbeddingStore` with optional prefilters, ranks all matching
|
|
@@ -29472,6 +29532,20 @@ var storageCapability = {
|
|
|
29472
29532
|
listProviders: method(external_exports.void(), external_exports.array(ProviderListEntrySchema).readonly()),
|
|
29473
29533
|
testConfig: method(external_exports.object({
|
|
29474
29534
|
providerId: external_exports.string(),
|
|
29535
|
+
/**
|
|
29536
|
+
* The location this config is an UNSAVED edit of, when there is one.
|
|
29537
|
+
*
|
|
29538
|
+
* `listLocations` replaces every declared secret with the redaction
|
|
29539
|
+
* sentinel, so the edit modal's form state holds the sentinel for any
|
|
29540
|
+
* credential the operator did not retype — and posting that here
|
|
29541
|
+
* without a way to resolve it makes the provider try to authenticate
|
|
29542
|
+
* as `__camstack_redacted__` and report the operator's own working
|
|
29543
|
+
* password as wrong. Given this id, the orchestrator restores each
|
|
29544
|
+
* sentinel from the stored config (same rule as `upsertLocation`)
|
|
29545
|
+
* before dispatching. Omitted by the "Add location" wizard, where
|
|
29546
|
+
* every value was typed just now and nothing is stored yet.
|
|
29547
|
+
*/
|
|
29548
|
+
locationId: external_exports.string().optional(),
|
|
29475
29549
|
config: external_exports.record(external_exports.string(), external_exports.unknown())
|
|
29476
29550
|
}), external_exports.object({
|
|
29477
29551
|
ok: external_exports.boolean(),
|
|
@@ -32593,7 +32667,7 @@ var FaceClusterSchema = external_exports.object({
|
|
|
32593
32667
|
var MediaFileLiteSchema$1 = external_exports.object({
|
|
32594
32668
|
key: external_exports.string(),
|
|
32595
32669
|
kind: external_exports.string(),
|
|
32596
|
-
|
|
32670
|
+
url: external_exports.string(),
|
|
32597
32671
|
sizeBytes: external_exports.number(),
|
|
32598
32672
|
timestamp: external_exports.number()
|
|
32599
32673
|
});
|
|
@@ -35486,7 +35560,7 @@ var PlateInfoSchema = external_exports.object({
|
|
|
35486
35560
|
var MediaFileLiteSchema = external_exports.object({
|
|
35487
35561
|
key: external_exports.string(),
|
|
35488
35562
|
kind: external_exports.string(),
|
|
35489
|
-
|
|
35563
|
+
url: external_exports.string(),
|
|
35490
35564
|
sizeBytes: external_exports.number(),
|
|
35491
35565
|
timestamp: external_exports.number()
|
|
35492
35566
|
});
|
|
@@ -41932,6 +42006,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
41932
42006
|
addonId: null,
|
|
41933
42007
|
access: "view"
|
|
41934
42008
|
},
|
|
42009
|
+
"pipelineAnalytics.getEventMediaFootprintByKind": {
|
|
42010
|
+
capName: "pipeline-analytics",
|
|
42011
|
+
capScope: "device",
|
|
42012
|
+
addonId: null,
|
|
42013
|
+
access: "view"
|
|
42014
|
+
},
|
|
41935
42015
|
"pipelineAnalytics.getEventStoreFootprint": {
|
|
41936
42016
|
capName: "pipeline-analytics",
|
|
41937
42017
|
capScope: "device",
|
|
@@ -42028,6 +42108,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
42028
42108
|
addonId: null,
|
|
42029
42109
|
access: "view"
|
|
42030
42110
|
},
|
|
42111
|
+
"pipelineAnalytics.listEventMedia": {
|
|
42112
|
+
capName: "pipeline-analytics",
|
|
42113
|
+
capScope: "device",
|
|
42114
|
+
addonId: null,
|
|
42115
|
+
access: "view"
|
|
42116
|
+
},
|
|
42031
42117
|
"pipelineAnalytics.listGroups": {
|
|
42032
42118
|
capName: "pipeline-analytics",
|
|
42033
42119
|
capScope: "device",
|
|
@@ -45591,6 +45677,11 @@ var METHOD_DEVICE_SELECTORS = Object.freeze({
|
|
|
45591
45677
|
form: "single",
|
|
45592
45678
|
optional: false
|
|
45593
45679
|
}],
|
|
45680
|
+
"pipelineAnalytics.getEventMediaFootprintByKind": [{
|
|
45681
|
+
name: "deviceId",
|
|
45682
|
+
form: "single",
|
|
45683
|
+
optional: true
|
|
45684
|
+
}],
|
|
45594
45685
|
"pipelineAnalytics.getGroup": [{
|
|
45595
45686
|
name: "deviceId",
|
|
45596
45687
|
form: "single",
|
|
@@ -45651,6 +45742,11 @@ var METHOD_DEVICE_SELECTORS = Object.freeze({
|
|
|
45651
45742
|
form: "array",
|
|
45652
45743
|
optional: false
|
|
45653
45744
|
}],
|
|
45745
|
+
"pipelineAnalytics.listEventMedia": [{
|
|
45746
|
+
name: "deviceId",
|
|
45747
|
+
form: "single",
|
|
45748
|
+
optional: false
|
|
45749
|
+
}],
|
|
45654
45750
|
"pipelineAnalytics.listGroups": [{
|
|
45655
45751
|
name: "deviceIds",
|
|
45656
45752
|
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-6X7D7D4Y.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-H2LQYCEY.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-H2LQYCEY.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-ABTN33LN.js");
|
|
1134
1134
|
if (presetNamespace) {
|
|
1135
1135
|
const spinner4 = clack.spinner();
|
|
1136
1136
|
spinner4.start(`Discovering hub on LAN (namespace "${presetNamespace}")`);
|