camstack 1.2.63 → 1.2.65
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.
|
@@ -23633,9 +23633,9 @@ var require_zod = __commonJS({
|
|
|
23633
23633
|
}
|
|
23634
23634
|
});
|
|
23635
23635
|
|
|
23636
|
-
// ../system/dist/dist-
|
|
23637
|
-
var
|
|
23638
|
-
"../system/dist/dist-
|
|
23636
|
+
// ../system/dist/dist-Ck2jkBZk.js
|
|
23637
|
+
var require_dist_Ck2jkBZk = __commonJS({
|
|
23638
|
+
"../system/dist/dist-Ck2jkBZk.js"(exports) {
|
|
23639
23639
|
"use strict";
|
|
23640
23640
|
var zod = require_zod();
|
|
23641
23641
|
var EventCategory = /* @__PURE__ */ (function(EventCategory2) {
|
|
@@ -25997,6 +25997,40 @@ var require_dist_CDgIzo82 = __commonJS({
|
|
|
25997
25997
|
/** Unix ms when the group was composed server-side. */
|
|
25998
25998
|
fetchedAt: zod.z.number()
|
|
25999
25999
|
});
|
|
26000
|
+
var REDACTED_SECRET = "__camstack_redacted__";
|
|
26001
|
+
function collectSecretConfigKeys(schema) {
|
|
26002
|
+
const keys = /* @__PURE__ */ new Set();
|
|
26003
|
+
for (const section of sectionsOf(schema)) for (const field of fieldsOf(section)) walkField(field, keys);
|
|
26004
|
+
return keys;
|
|
26005
|
+
}
|
|
26006
|
+
function isRecord$2(value) {
|
|
26007
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
26008
|
+
}
|
|
26009
|
+
function sectionsOf(schema) {
|
|
26010
|
+
if (!isRecord$2(schema)) return [];
|
|
26011
|
+
const sections = schema["sections"];
|
|
26012
|
+
return Array.isArray(sections) ? sections : [];
|
|
26013
|
+
}
|
|
26014
|
+
function fieldsOf(node) {
|
|
26015
|
+
if (!isRecord$2(node)) return [];
|
|
26016
|
+
const fields = node["fields"];
|
|
26017
|
+
return Array.isArray(fields) ? fields : [];
|
|
26018
|
+
}
|
|
26019
|
+
function walkField(field, out) {
|
|
26020
|
+
if (!isRecord$2(field)) return;
|
|
26021
|
+
const type = field["type"];
|
|
26022
|
+
const key = field["key"];
|
|
26023
|
+
if ((type === "password" || field["secret"] === true) && typeof key === "string" && key.length > 0) out.add(key);
|
|
26024
|
+
if (type === "group") {
|
|
26025
|
+
for (const child of fieldsOf(field)) walkField(child, out);
|
|
26026
|
+
return;
|
|
26027
|
+
}
|
|
26028
|
+
if (type === "sub-tabs") {
|
|
26029
|
+
const tabs = field["tabs"];
|
|
26030
|
+
if (!Array.isArray(tabs)) return;
|
|
26031
|
+
for (const tab of tabs) for (const child of fieldsOf(tab)) walkField(child, out);
|
|
26032
|
+
}
|
|
26033
|
+
}
|
|
26000
26034
|
var STREAM_QUALITY_LABELS = {
|
|
26001
26035
|
high: "High",
|
|
26002
26036
|
mid: "Mid",
|
|
@@ -26313,13 +26347,29 @@ var require_dist_CDgIzo82 = __commonJS({
|
|
|
26313
26347
|
"recorder",
|
|
26314
26348
|
"analytics"
|
|
26315
26349
|
]);
|
|
26350
|
+
var StorageMigrationMoveProgressSchema = zod.z.object({
|
|
26351
|
+
filesMoved: zod.z.number().int().nonnegative(),
|
|
26352
|
+
/** The archive census — the **M** of "N of M" (D295). `null` = unknowable. */
|
|
26353
|
+
filesTotal: zod.z.number().int().nonnegative().nullable(),
|
|
26354
|
+
bytesMoved: zod.z.number().int().nonnegative(),
|
|
26355
|
+
/** The MOVER's start, not the migration's: a drain restarted after an addon
|
|
26356
|
+
* crash gets a new mover, and a rate computed from the migration's start
|
|
26357
|
+
* would silently average in the time nothing was running. */
|
|
26358
|
+
startedAt: zod.z.number(),
|
|
26359
|
+
/** When the coordinator last read these numbers. Paired with `startedAt` it
|
|
26360
|
+
* is the only honest rate: both clocks are the hub's, so a UI never has to
|
|
26361
|
+
* subtract its own. */
|
|
26362
|
+
observedAt: zod.z.number()
|
|
26363
|
+
});
|
|
26316
26364
|
var StorageMigrationMoveSchema = zod.z.object({
|
|
26317
26365
|
storageClass: StorageMigrationClassSchema,
|
|
26318
26366
|
fromLocationId: zod.z.string(),
|
|
26319
26367
|
toLocationId: zod.z.string(),
|
|
26320
26368
|
moverJobId: zod.z.string().nullable(),
|
|
26321
26369
|
state: RelocateJobStateSchema.nullable(),
|
|
26322
|
-
error: zod.z.string().nullable()
|
|
26370
|
+
error: zod.z.string().nullable(),
|
|
26371
|
+
/** Last observed mover counters; `null` until the mover has been polled once. */
|
|
26372
|
+
progress: StorageMigrationMoveProgressSchema.nullable()
|
|
26323
26373
|
});
|
|
26324
26374
|
var StorageMigrationJobSchema = zod.z.object({
|
|
26325
26375
|
jobId: zod.z.string(),
|
|
@@ -26365,6 +26415,52 @@ var require_dist_CDgIzo82 = __commonJS({
|
|
|
26365
26415
|
})),
|
|
26366
26416
|
findings: zod.z.array(StorageMigrationFindingSchema)
|
|
26367
26417
|
});
|
|
26418
|
+
var StorageMigrationLaneSchema = zod.z.enum(["footage", "media"]);
|
|
26419
|
+
var StorageMigrationMoverSchema = zod.z.object({
|
|
26420
|
+
lane: StorageMigrationLaneSchema,
|
|
26421
|
+
job: RelocateJobSchema,
|
|
26422
|
+
/** The coordinator job that armed this mover, or `null` for a mover armed
|
|
26423
|
+
* directly against the owning addon. */
|
|
26424
|
+
migrationJobId: zod.z.string().nullable(),
|
|
26425
|
+
/** When the hub read these counters. Stamped here so a rate is `bytesMoved`
|
|
26426
|
+
* over (`observedAt` − `job.startedAt`) with BOTH ends on the hub's clock —
|
|
26427
|
+
* a browser subtracting its own `Date.now()` from a server `startedAt` is a
|
|
26428
|
+
* rate made of two different clocks. */
|
|
26429
|
+
observedAt: zod.z.number()
|
|
26430
|
+
});
|
|
26431
|
+
var StorageMigrationResidueSchema = zod.z.object({
|
|
26432
|
+
storageClass: StorageMigrationClassSchema,
|
|
26433
|
+
/** The location still holding the data. `'*'` for the media lane, whose rows
|
|
26434
|
+
* move from wherever they are rather than from one named source. */
|
|
26435
|
+
fromLocationId: zod.z.string(),
|
|
26436
|
+
/** Where a drain would move it — the class's CURRENT default. */
|
|
26437
|
+
toLocationId: zod.z.string(),
|
|
26438
|
+
/** Segments (footage lane) or rows (media lane) still on the source. */
|
|
26439
|
+
items: zod.z.number().int().nonnegative().nullable(),
|
|
26440
|
+
/** Bytes on the source; `null` when the lane counts rows rather than bytes. */
|
|
26441
|
+
bytes: zod.z.number().int().nonnegative().nullable()
|
|
26442
|
+
});
|
|
26443
|
+
var StorageMigrationDrainInputSchema = zod.z.object({
|
|
26444
|
+
/** The classes to drain. Each must appear in `storageMigration.residue`, so
|
|
26445
|
+
* a class whose source is already empty is refused rather than started. */
|
|
26446
|
+
classes: zod.z.array(StorageMigrationClassSchema).min(1),
|
|
26447
|
+
throttleMbps: zod.z.number().min(1).max(1e3).optional()
|
|
26448
|
+
});
|
|
26449
|
+
var RelocateResidueInputSchema = zod.z.object({
|
|
26450
|
+
fromLocationId: zod.z.string().min(1),
|
|
26451
|
+
/** Narrow to one logical class; omit for every profile on the location. */
|
|
26452
|
+
footageClass: RelocateFootageClassSchema.optional()
|
|
26453
|
+
});
|
|
26454
|
+
var RelocateResidueSchema = zod.z.object({
|
|
26455
|
+
segments: zod.z.number().int().nonnegative(),
|
|
26456
|
+
bytes: zod.z.number().int().nonnegative()
|
|
26457
|
+
}).nullable();
|
|
26458
|
+
var RelocatableMediaCountSchema = zod.z.object({ rows: zod.z.number().int().nonnegative() }).nullable();
|
|
26459
|
+
var RelocatableMediaCountInputSchema = zod.z.object({
|
|
26460
|
+
toLocationId: zod.z.string().min(1),
|
|
26461
|
+
/** Omitted = `move`. */
|
|
26462
|
+
mode: MediaRelocateModeSchema.optional()
|
|
26463
|
+
});
|
|
26368
26464
|
var StorageLocationTypeSchema = zod.z.string().regex(/^[a-z][a-zA-Z0-9-]*$/);
|
|
26369
26465
|
var StorageLocationSchema = zod.z.object({
|
|
26370
26466
|
id: zod.z.string().regex(/^[a-z][a-zA-Z0-9-]*:[a-zA-Z0-9-]+$/),
|
|
@@ -26408,6 +26504,8 @@ var require_dist_CDgIzo82 = __commonJS({
|
|
|
26408
26504
|
updatedAt: zod.z.number()
|
|
26409
26505
|
});
|
|
26410
26506
|
var StorageLocationRefSchema = zod.z.union([StorageLocationTypeSchema, zod.z.string().regex(/^[a-z][a-zA-Z0-9-]*:[a-zA-Z0-9-]+$/)]);
|
|
26507
|
+
var StorageAccessSchema = zod.z.enum(["local-path", "cap-mediated"]);
|
|
26508
|
+
var STORAGE_ACCESS_FALLBACK = "local-path";
|
|
26411
26509
|
var StorageLocationDeclarationSchema = zod.z.object({
|
|
26412
26510
|
/**
|
|
26413
26511
|
* Global location identifier, e.g. `recordings` or `recordingsLow`.
|
|
@@ -26427,6 +26525,19 @@ var require_dist_CDgIzo82 = __commonJS({
|
|
|
26427
26525
|
*/
|
|
26428
26526
|
cardinality: zod.z.enum(["single", "multi"]),
|
|
26429
26527
|
/**
|
|
26528
|
+
* HOW the declaring service reaches the bytes — and therefore WHICH
|
|
26529
|
+
* providers may back a location of this kind. See {@link StorageAccessSchema}
|
|
26530
|
+
* and {@link STORAGE_ACCESS_FALLBACK}.
|
|
26531
|
+
*
|
|
26532
|
+
* Absent means `'local-path'`. That default is FAIL-CLOSED on purpose: it
|
|
26533
|
+
* can only over-restrict (refuse a remote provider for a kind that might
|
|
26534
|
+
* have coped) and never under-restrict. Declaring `'cap-mediated'` is the
|
|
26535
|
+
* permissive direction and is therefore never inferred — a repo guard
|
|
26536
|
+
* (`scripts/check-storage-access-declarations.ts`) refuses to let it be
|
|
26537
|
+
* reached by omission.
|
|
26538
|
+
*/
|
|
26539
|
+
access: StorageAccessSchema.optional(),
|
|
26540
|
+
/**
|
|
26430
26541
|
* When set, the default instance for this location inherits its resolved
|
|
26431
26542
|
* root from the named location's default instance. Useful for derivative
|
|
26432
26543
|
* slots (e.g. `recordingsLow` → `recordings`) so operators only need to
|
|
@@ -36385,8 +36496,10 @@ var require_dist_CDgIzo82 = __commonJS({
|
|
|
36385
36496
|
lastSeen: zod.z.number(),
|
|
36386
36497
|
/** Frame-rate position history (subject to maxPositionHistory cap). */
|
|
36387
36498
|
positions: zod.z.array(TrackPositionSchema).readonly(),
|
|
36388
|
-
/** Periodic snapshots at snapshotIntervalMs cadence
|
|
36389
|
-
*
|
|
36499
|
+
/** Periodic snapshots at snapshotIntervalMs cadence — DEBUG media, produced
|
|
36500
|
+
* only while `MediaSettings.debugMediaEnabled` is on for the camera (D299;
|
|
36501
|
+
* the retired `saveThumbnails` used to gate this and the rolling
|
|
36502
|
+
* `lastFrame` together). Empty is the healthy default, not a capture gap. */
|
|
36390
36503
|
snapshots: zod.z.array(TrackSnapshotSchema).readonly(),
|
|
36391
36504
|
/** Deduplicated zones the track has entered at least once. Zone IDS. */
|
|
36392
36505
|
zonesVisited: zod.z.array(zod.z.string()).readonly(),
|
|
@@ -37369,6 +37482,21 @@ var require_dist_CDgIzo82 = __commonJS({
|
|
|
37369
37482
|
* it to zero.
|
|
37370
37483
|
*/
|
|
37371
37484
|
countUnstampedEventMedia: method(zod.z.object({}), UnstampedEventMediaCountSchema, { auth: "admin" }),
|
|
37485
|
+
/**
|
|
37486
|
+
* How many rows a pass would STILL act on against `toLocationId`.
|
|
37487
|
+
*
|
|
37488
|
+
* One derivation, two consumers: it is the media lane's denominator (the
|
|
37489
|
+
* **M** the footage lane gets from the ledger census — D295) and it is the
|
|
37490
|
+
* residue behind "drain remaining". Deriving them separately is how "N of M"
|
|
37491
|
+
* ends up comparing two different populations.
|
|
37492
|
+
*
|
|
37493
|
+
* `null` means the count could not be taken; it is never zero-filled,
|
|
37494
|
+
* because a zero here reads as "nothing left to move".
|
|
37495
|
+
*/
|
|
37496
|
+
countRelocatableMedia: method(RelocatableMediaCountInputSchema, RelocatableMediaCountSchema, {
|
|
37497
|
+
kind: "query",
|
|
37498
|
+
auth: "admin"
|
|
37499
|
+
}),
|
|
37372
37500
|
/** Every relocate job this addon knows about, newest first (in RAM: the
|
|
37373
37501
|
* move is resumable, so a lost list costs nothing but the display). */
|
|
37374
37502
|
listRelocateMediaJobs: method(zod.z.object({}), zod.z.array(RelocateJobSchema).readonly(), {
|
|
@@ -39909,6 +40037,35 @@ var require_dist_CDgIzo82 = __commonJS({
|
|
|
39909
40037
|
cancel: method(zod.z.object({ jobId: zod.z.string() }), zod.z.object({ cancelled: zod.z.boolean() }), {
|
|
39910
40038
|
kind: "mutation",
|
|
39911
40039
|
auth: "admin"
|
|
40040
|
+
}),
|
|
40041
|
+
/**
|
|
40042
|
+
* Every mover running RIGHT NOW, in both lanes, with its counters.
|
|
40043
|
+
*
|
|
40044
|
+
* `status` covers a migration's own moves — the coordinator folds their
|
|
40045
|
+
* progress onto the durable job record it is already polling. This covers
|
|
40046
|
+
* the other case, and it is not hypothetical: a drain armed straight against
|
|
40047
|
+
* `recording.relocateFootage` (the only path that existed before
|
|
40048
|
+
* {@link drain}) has no job to fold into and would otherwise be invisible.
|
|
40049
|
+
*/
|
|
40050
|
+
movers: method(zod.z.object({}), zod.z.array(StorageMigrationMoverSchema).readonly(), { auth: "admin" }),
|
|
40051
|
+
/**
|
|
40052
|
+
* What each class's SOURCE still holds, from the archive — never from the
|
|
40053
|
+
* resident index (D295). Only classes with something left (or something
|
|
40054
|
+
* unknown) are listed, so an empty list means there is nothing to drain and
|
|
40055
|
+
* the UI has no honest button to offer.
|
|
40056
|
+
*/
|
|
40057
|
+
residue: method(zod.z.object({}), zod.z.array(StorageMigrationResidueSchema).readonly(), { auth: "admin" }),
|
|
40058
|
+
/**
|
|
40059
|
+
* Run the drain half alone, on a class whose default has ALREADY moved.
|
|
40060
|
+
*
|
|
40061
|
+
* It never repoints anything, which is what lets `start` keep refusing a
|
|
40062
|
+
* destination that is already the default: the two verbs cannot be confused
|
|
40063
|
+
* for one another, and no operator can re-repoint a migrated class through
|
|
40064
|
+
* this door.
|
|
40065
|
+
*/
|
|
40066
|
+
drain: method(StorageMigrationDrainInputSchema, zod.z.object({ jobId: zod.z.string() }), {
|
|
40067
|
+
kind: "mutation",
|
|
40068
|
+
auth: "admin"
|
|
39912
40069
|
})
|
|
39913
40070
|
}
|
|
39914
40071
|
};
|
|
@@ -40418,7 +40575,20 @@ var require_dist_CDgIzo82 = __commonJS({
|
|
|
40418
40575
|
*/
|
|
40419
40576
|
scanned: zod.z.number(),
|
|
40420
40577
|
/** True when the backend could not consider every row that passed the filter. */
|
|
40421
|
-
truncated: zod.z.boolean()
|
|
40578
|
+
truncated: zod.z.boolean(),
|
|
40579
|
+
/**
|
|
40580
|
+
* The `topK` the backend actually ran with.
|
|
40581
|
+
*
|
|
40582
|
+
* Every backend has a ceiling — sqlite-vec's is 4,096 — and a caller asking
|
|
40583
|
+
* past it used to learn nothing but a boolean, from a WARN in the provider's
|
|
40584
|
+
* own log rather than in its answer. That is how an audit asking for 20,000
|
|
40585
|
+
* consumed 4,096 and reported `examined: 4096` as if it had walked the index,
|
|
40586
|
+
* for weeks. `truncated` says THAT the answer was short; this says BY HOW
|
|
40587
|
+
* MUCH, in the return value, where the caller cannot fail to see it.
|
|
40588
|
+
*
|
|
40589
|
+
* Equals the requested `topK` whenever nothing was lowered.
|
|
40590
|
+
*/
|
|
40591
|
+
effectiveTopK: zod.z.number().int().positive()
|
|
40422
40592
|
});
|
|
40423
40593
|
var VectorDeleteInputSchema = zod.z.object({
|
|
40424
40594
|
index: zod.z.string(),
|
|
@@ -40437,6 +40607,35 @@ var require_dist_CDgIzo82 = __commonJS({
|
|
|
40437
40607
|
id: zod.z.string(),
|
|
40438
40608
|
metadata: VectorMetadataSchema
|
|
40439
40609
|
})) });
|
|
40610
|
+
var VectorFetchInputSchema = zod.z.object({
|
|
40611
|
+
index: zod.z.string(),
|
|
40612
|
+
ids: zod.z.array(zod.z.string())
|
|
40613
|
+
});
|
|
40614
|
+
var VectorFetchResultSchema = zod.z.object({ items: zod.z.array(zod.z.object({
|
|
40615
|
+
id: zod.z.string(),
|
|
40616
|
+
/** base64 Float32LE — the same wire form `upsert` accepts. */
|
|
40617
|
+
vector: zod.z.string(),
|
|
40618
|
+
metadata: VectorMetadataSchema
|
|
40619
|
+
})) });
|
|
40620
|
+
var VectorScanInputSchema = zod.z.object({
|
|
40621
|
+
index: zod.z.string(),
|
|
40622
|
+
/** Opaque resume point. `0` starts at the top; pass back `nextCursor`. */
|
|
40623
|
+
cursor: zod.z.number().int().nonnegative().default(0),
|
|
40624
|
+
limit: zod.z.number().int().positive()
|
|
40625
|
+
});
|
|
40626
|
+
var VectorScanResultSchema = zod.z.object({
|
|
40627
|
+
items: zod.z.array(zod.z.object({
|
|
40628
|
+
id: zod.z.string(),
|
|
40629
|
+
metadata: VectorMetadataSchema
|
|
40630
|
+
})),
|
|
40631
|
+
/**
|
|
40632
|
+
* Where the next page starts, or `null` when the walk reached the end.
|
|
40633
|
+
*
|
|
40634
|
+
* `null` is the ONLY end-of-index signal. A caller must not infer the end
|
|
40635
|
+
* from a short page: a backend is free to return fewer rows than asked.
|
|
40636
|
+
*/
|
|
40637
|
+
nextCursor: zod.z.number().int().nonnegative().nullable()
|
|
40638
|
+
});
|
|
40440
40639
|
var VectorStatsInputSchema = zod.z.object({ index: zod.z.string() });
|
|
40441
40640
|
var VectorStatsResultSchema = zod.z.object({
|
|
40442
40641
|
/** Provider id, so an operator can tell brute force from an ANN index. */
|
|
@@ -40467,6 +40666,10 @@ var require_dist_CDgIzo82 = __commonJS({
|
|
|
40467
40666
|
query: method(VectorQueryInputSchema, VectorQueryResultSchema, { auth: "admin" }),
|
|
40468
40667
|
/** Metadata by id, no vectors — see {@link VectorGetResultSchema}. */
|
|
40469
40668
|
getByIds: method(VectorGetInputSchema, VectorGetResultSchema, { auth: "admin" }),
|
|
40669
|
+
/** Metadata AND vectors, by named id — see {@link VectorFetchInputSchema}. */
|
|
40670
|
+
fetchByIds: method(VectorFetchInputSchema, VectorFetchResultSchema, { auth: "admin" }),
|
|
40671
|
+
/** One page of the whole index, unranked — see {@link VectorScanInputSchema}. */
|
|
40672
|
+
scan: method(VectorScanInputSchema, VectorScanResultSchema, { auth: "admin" }),
|
|
40470
40673
|
deleteByIds: method(VectorDeleteInputSchema, VectorDeleteResultSchema, {
|
|
40471
40674
|
kind: "mutation",
|
|
40472
40675
|
auth: "admin"
|
|
@@ -46928,6 +47131,20 @@ var require_dist_CDgIzo82 = __commonJS({
|
|
|
46928
47131
|
kind: "query",
|
|
46929
47132
|
auth: "admin"
|
|
46930
47133
|
}),
|
|
47134
|
+
/**
|
|
47135
|
+
* What a location STILL holds, asked of the durable hour ledger.
|
|
47136
|
+
*
|
|
47137
|
+
* The number behind "drain remaining": segments and bytes that would still
|
|
47138
|
+
* have to move off `fromLocationId`. It is a ledger aggregate — the archive
|
|
47139
|
+
* — because the resident index is not the archive (D295), and a drain sized
|
|
47140
|
+
* off the index is exactly what reported `done` over 80.3 GB on 2026-08-29.
|
|
47141
|
+
* `null` means the archive could not be asked (no ledger on this node, or
|
|
47142
|
+
* the aggregate failed) and is never conflated with an empty source.
|
|
47143
|
+
*/
|
|
47144
|
+
getRelocateResidue: method(RelocateResidueInputSchema, RelocateResidueSchema, {
|
|
47145
|
+
kind: "query",
|
|
47146
|
+
auth: "admin"
|
|
47147
|
+
}),
|
|
46931
47148
|
/** Cancel a running or queued relocate job. A queued job never runs. */
|
|
46932
47149
|
cancelRelocateJob: method(zod.z.object({ jobId: zod.z.string() }), zod.z.object({ cancelled: zod.z.boolean() }), {
|
|
46933
47150
|
kind: "mutation",
|
|
@@ -52932,6 +53149,12 @@ var require_dist_CDgIzo82 = __commonJS({
|
|
|
52932
53149
|
addonId: null,
|
|
52933
53150
|
access: "create"
|
|
52934
53151
|
},
|
|
53152
|
+
"pipelineAnalytics.countRelocatableMedia": {
|
|
53153
|
+
capName: "pipeline-analytics",
|
|
53154
|
+
capScope: "device",
|
|
53155
|
+
addonId: null,
|
|
53156
|
+
access: "view"
|
|
53157
|
+
},
|
|
52935
53158
|
"pipelineAnalytics.countUnstampedEventMedia": {
|
|
52936
53159
|
capName: "pipeline-analytics",
|
|
52937
53160
|
capScope: "device",
|
|
@@ -54096,6 +54319,12 @@ var require_dist_CDgIzo82 = __commonJS({
|
|
|
54096
54319
|
addonId: null,
|
|
54097
54320
|
access: "view"
|
|
54098
54321
|
},
|
|
54322
|
+
"recording.getRelocateResidue": {
|
|
54323
|
+
capName: "recording",
|
|
54324
|
+
capScope: "system",
|
|
54325
|
+
addonId: null,
|
|
54326
|
+
access: "view"
|
|
54327
|
+
},
|
|
54099
54328
|
"recording.getStorageMigrationMoveStatus": {
|
|
54100
54329
|
capName: "recording",
|
|
54101
54330
|
capScope: "system",
|
|
@@ -54642,12 +54871,30 @@ var require_dist_CDgIzo82 = __commonJS({
|
|
|
54642
54871
|
addonId: null,
|
|
54643
54872
|
access: "create"
|
|
54644
54873
|
},
|
|
54874
|
+
"storageMigration.drain": {
|
|
54875
|
+
capName: "storage-migration",
|
|
54876
|
+
capScope: "system",
|
|
54877
|
+
addonId: null,
|
|
54878
|
+
access: "create"
|
|
54879
|
+
},
|
|
54880
|
+
"storageMigration.movers": {
|
|
54881
|
+
capName: "storage-migration",
|
|
54882
|
+
capScope: "system",
|
|
54883
|
+
addonId: null,
|
|
54884
|
+
access: "view"
|
|
54885
|
+
},
|
|
54645
54886
|
"storageMigration.plan": {
|
|
54646
54887
|
capName: "storage-migration",
|
|
54647
54888
|
capScope: "system",
|
|
54648
54889
|
addonId: null,
|
|
54649
54890
|
access: "view"
|
|
54650
54891
|
},
|
|
54892
|
+
"storageMigration.residue": {
|
|
54893
|
+
capName: "storage-migration",
|
|
54894
|
+
capScope: "system",
|
|
54895
|
+
addonId: null,
|
|
54896
|
+
access: "view"
|
|
54897
|
+
},
|
|
54651
54898
|
"storageMigration.start": {
|
|
54652
54899
|
capName: "storage-migration",
|
|
54653
54900
|
capScope: "system",
|
|
@@ -55482,6 +55729,12 @@ var require_dist_CDgIzo82 = __commonJS({
|
|
|
55482
55729
|
addonId: null,
|
|
55483
55730
|
access: "delete"
|
|
55484
55731
|
},
|
|
55732
|
+
"vectorStore.fetchByIds": {
|
|
55733
|
+
capName: "vector-store",
|
|
55734
|
+
capScope: "system",
|
|
55735
|
+
addonId: null,
|
|
55736
|
+
access: "view"
|
|
55737
|
+
},
|
|
55485
55738
|
"vectorStore.getByIds": {
|
|
55486
55739
|
capName: "vector-store",
|
|
55487
55740
|
capScope: "system",
|
|
@@ -55494,6 +55747,12 @@ var require_dist_CDgIzo82 = __commonJS({
|
|
|
55494
55747
|
addonId: null,
|
|
55495
55748
|
access: "view"
|
|
55496
55749
|
},
|
|
55750
|
+
"vectorStore.scan": {
|
|
55751
|
+
capName: "vector-store",
|
|
55752
|
+
capScope: "system",
|
|
55753
|
+
addonId: null,
|
|
55754
|
+
access: "view"
|
|
55755
|
+
},
|
|
55497
55756
|
"vectorStore.stats": {
|
|
55498
55757
|
capName: "vector-store",
|
|
55499
55758
|
capScope: "system",
|
|
@@ -58249,6 +58508,12 @@ var require_dist_CDgIzo82 = __commonJS({
|
|
|
58249
58508
|
return METHOD_ACCESS_MAP;
|
|
58250
58509
|
}
|
|
58251
58510
|
});
|
|
58511
|
+
Object.defineProperty(exports, "REDACTED_SECRET", {
|
|
58512
|
+
enumerable: true,
|
|
58513
|
+
get: function() {
|
|
58514
|
+
return REDACTED_SECRET;
|
|
58515
|
+
}
|
|
58516
|
+
});
|
|
58252
58517
|
Object.defineProperty(exports, "RUNTIME_DEFAULTS", {
|
|
58253
58518
|
enumerable: true,
|
|
58254
58519
|
get: function() {
|
|
@@ -58279,6 +58544,12 @@ var require_dist_CDgIzo82 = __commonJS({
|
|
|
58279
58544
|
return SOURCE_DEVICE_TYPES;
|
|
58280
58545
|
}
|
|
58281
58546
|
});
|
|
58547
|
+
Object.defineProperty(exports, "STORAGE_ACCESS_FALLBACK", {
|
|
58548
|
+
enumerable: true,
|
|
58549
|
+
get: function() {
|
|
58550
|
+
return STORAGE_ACCESS_FALLBACK;
|
|
58551
|
+
}
|
|
58552
|
+
});
|
|
58282
58553
|
Object.defineProperty(exports, "STREAM_PROFILE_META", {
|
|
58283
58554
|
enumerable: true,
|
|
58284
58555
|
get: function() {
|
|
@@ -58387,6 +58658,12 @@ var require_dist_CDgIzo82 = __commonJS({
|
|
|
58387
58658
|
return buildStreamParamsConfigSchema;
|
|
58388
58659
|
}
|
|
58389
58660
|
});
|
|
58661
|
+
Object.defineProperty(exports, "collectSecretConfigKeys", {
|
|
58662
|
+
enumerable: true,
|
|
58663
|
+
get: function() {
|
|
58664
|
+
return collectSecretConfigKeys;
|
|
58665
|
+
}
|
|
58666
|
+
});
|
|
58390
58667
|
Object.defineProperty(exports, "coreBlockAddonId", {
|
|
58391
58668
|
enumerable: true,
|
|
58392
58669
|
get: function() {
|
|
@@ -58789,7 +59066,7 @@ var require_alerts_addon = __commonJS({
|
|
|
58789
59066
|
[Symbol.toStringTag]: { value: "Module" }
|
|
58790
59067
|
});
|
|
58791
59068
|
require_chunk_Cek0wNdY();
|
|
58792
|
-
var require_dist10 =
|
|
59069
|
+
var require_dist10 = require_dist_Ck2jkBZk();
|
|
58793
59070
|
function selectExpired(alerts, cutoffMs) {
|
|
58794
59071
|
return alerts.filter((a) => a.createdAt < cutoffMs).sort((a, b) => a.createdAt - b.createdAt).map((a) => a.id);
|
|
58795
59072
|
}
|
|
@@ -59608,7 +59885,7 @@ var require_console_logging = __commonJS({
|
|
|
59608
59885
|
[Symbol.toStringTag]: { value: "Module" }
|
|
59609
59886
|
});
|
|
59610
59887
|
require_chunk_Cek0wNdY();
|
|
59611
|
-
var require_dist10 =
|
|
59888
|
+
var require_dist10 = require_dist_Ck2jkBZk();
|
|
59612
59889
|
var require_formatter = require_formatter_DqAKDlvN();
|
|
59613
59890
|
var LEVEL_RANK = {
|
|
59614
59891
|
debug: 0,
|
|
@@ -59702,7 +59979,7 @@ var require_core_blocks_addon = __commonJS({
|
|
|
59702
59979
|
"use strict";
|
|
59703
59980
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
59704
59981
|
var require_chunk = require_chunk_Cek0wNdY();
|
|
59705
|
-
var require_dist10 =
|
|
59982
|
+
var require_dist10 = require_dist_Ck2jkBZk();
|
|
59706
59983
|
var node_crypto = __require("crypto");
|
|
59707
59984
|
var node_fs_promises = __require("fs/promises");
|
|
59708
59985
|
node_fs_promises = require_chunk.__toESM(node_fs_promises);
|
|
@@ -60599,11 +60876,11 @@ var require_core_blocks = __commonJS({
|
|
|
60599
60876
|
}
|
|
60600
60877
|
});
|
|
60601
60878
|
|
|
60602
|
-
// ../system/dist/retired-settings-keys-
|
|
60603
|
-
var
|
|
60604
|
-
"../system/dist/retired-settings-keys-
|
|
60879
|
+
// ../system/dist/retired-settings-keys-Dp_CyuCW.js
|
|
60880
|
+
var require_retired_settings_keys_Dp_CyuCW = __commonJS({
|
|
60881
|
+
"../system/dist/retired-settings-keys-Dp_CyuCW.js"(exports) {
|
|
60605
60882
|
"use strict";
|
|
60606
|
-
var require_dist10 =
|
|
60883
|
+
var require_dist10 = require_dist_Ck2jkBZk();
|
|
60607
60884
|
function settingsStoreIsAuthoritativeHere(env) {
|
|
60608
60885
|
const raw = (env["CAMSTACK_ROLE"] ?? "").trim().toLowerCase();
|
|
60609
60886
|
return raw === "" || raw === "hub";
|
|
@@ -62817,8 +63094,8 @@ var require_device_manager_addon = __commonJS({
|
|
|
62817
63094
|
[Symbol.toStringTag]: { value: "Module" }
|
|
62818
63095
|
});
|
|
62819
63096
|
require_chunk_Cek0wNdY();
|
|
62820
|
-
var require_dist10 =
|
|
62821
|
-
var require_retired_settings_keys =
|
|
63097
|
+
var require_dist10 = require_dist_Ck2jkBZk();
|
|
63098
|
+
var require_retired_settings_keys = require_retired_settings_keys_Dp_CyuCW();
|
|
62822
63099
|
var node_crypto = __require("crypto");
|
|
62823
63100
|
var _camstack_types_node = require_node();
|
|
62824
63101
|
var JOB_HISTORY = 20;
|
|
@@ -67567,7 +67844,7 @@ var require_hub_forwarder = __commonJS({
|
|
|
67567
67844
|
[Symbol.toStringTag]: { value: "Module" }
|
|
67568
67845
|
});
|
|
67569
67846
|
require_chunk_Cek0wNdY();
|
|
67570
|
-
var require_dist10 =
|
|
67847
|
+
var require_dist10 = require_dist_Ck2jkBZk();
|
|
67571
67848
|
var require_formatter = require_formatter_DqAKDlvN();
|
|
67572
67849
|
var DEFAULT_OUTBOUND_BUFFER_SIZE = 500;
|
|
67573
67850
|
var HubForwarderDestination = class {
|
|
@@ -67704,7 +67981,7 @@ var require_liveness_monitor_addon = __commonJS({
|
|
|
67704
67981
|
"use strict";
|
|
67705
67982
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
67706
67983
|
require_chunk_Cek0wNdY();
|
|
67707
|
-
var require_dist10 =
|
|
67984
|
+
var require_dist10 = require_dist_Ck2jkBZk();
|
|
67708
67985
|
var NO_DEVICES = "liveness:no-devices";
|
|
67709
67986
|
var ALL_OFFLINE = "liveness:all-devices-offline";
|
|
67710
67987
|
var NO_FOOTAGE_PREFIX = "liveness:no-footage:";
|
|
@@ -67894,7 +68171,7 @@ var require_local_auth_addon = __commonJS({
|
|
|
67894
68171
|
[Symbol.toStringTag]: { value: "Module" }
|
|
67895
68172
|
});
|
|
67896
68173
|
var require_chunk = require_chunk_Cek0wNdY();
|
|
67897
|
-
var require_dist10 =
|
|
68174
|
+
var require_dist10 = require_dist_Ck2jkBZk();
|
|
67898
68175
|
var node_crypto = __require("crypto");
|
|
67899
68176
|
node_crypto = require_chunk.__toESM(node_crypto);
|
|
67900
68177
|
var crypto$1 = __require("crypto");
|
|
@@ -75707,7 +75984,7 @@ var require_loki_logging = __commonJS({
|
|
|
75707
75984
|
[Symbol.toStringTag]: { value: "Module" }
|
|
75708
75985
|
});
|
|
75709
75986
|
require_chunk_Cek0wNdY();
|
|
75710
|
-
var require_dist10 =
|
|
75987
|
+
var require_dist10 = require_dist_Ck2jkBZk();
|
|
75711
75988
|
function sanitizeLabelName(raw) {
|
|
75712
75989
|
const replaced = raw.replaceAll(/[^a-zA-Z0-9_]/g, "_");
|
|
75713
75990
|
return /^[a-zA-Z_]/.test(replaced) ? replaced : `_${replaced}`;
|
|
@@ -76272,7 +76549,7 @@ var require_native_metrics_addon = __commonJS({
|
|
|
76272
76549
|
[Symbol.toStringTag]: { value: "Module" }
|
|
76273
76550
|
});
|
|
76274
76551
|
var require_chunk = require_chunk_Cek0wNdY();
|
|
76275
|
-
var require_dist10 =
|
|
76552
|
+
var require_dist10 = require_dist_Ck2jkBZk();
|
|
76276
76553
|
var node_fs_promises = __require("fs/promises");
|
|
76277
76554
|
var node_child_process = __require("child_process");
|
|
76278
76555
|
var node_util = __require("util");
|
|
@@ -78894,7 +79171,7 @@ var require_filesystem_storage_addon = __commonJS({
|
|
|
78894
79171
|
[Symbol.toStringTag]: { value: "Module" }
|
|
78895
79172
|
});
|
|
78896
79173
|
var require_chunk = require_chunk_Cek0wNdY();
|
|
78897
|
-
var require_dist10 =
|
|
79174
|
+
var require_dist10 = require_dist_Ck2jkBZk();
|
|
78898
79175
|
var node_crypto = __require("crypto");
|
|
78899
79176
|
var node_fs_promises = __require("fs/promises");
|
|
78900
79177
|
var node_path = __require("path");
|
|
@@ -80010,8 +80287,8 @@ var require_sqlite_settings_addon = __commonJS({
|
|
|
80010
80287
|
[Symbol.toStringTag]: { value: "Module" }
|
|
80011
80288
|
});
|
|
80012
80289
|
var require_chunk = require_chunk_Cek0wNdY();
|
|
80013
|
-
var require_dist10 =
|
|
80014
|
-
var require_retired_settings_keys =
|
|
80290
|
+
var require_dist10 = require_dist_Ck2jkBZk();
|
|
80291
|
+
var require_retired_settings_keys = require_retired_settings_keys_Dp_CyuCW();
|
|
80015
80292
|
var node_crypto = __require("crypto");
|
|
80016
80293
|
var node_fs = __require("fs");
|
|
80017
80294
|
var node_module = __require("module");
|
|
@@ -81773,7 +82050,88 @@ var require_sqlite_settings_addon = __commonJS({
|
|
|
81773
82050
|
return {
|
|
81774
82051
|
matches,
|
|
81775
82052
|
scanned: rows.length,
|
|
81776
|
-
truncated: k < params.topK && rows.length >= k
|
|
82053
|
+
truncated: k < params.topK && rows.length >= k,
|
|
82054
|
+
effectiveTopK: k
|
|
82055
|
+
};
|
|
82056
|
+
}
|
|
82057
|
+
/**
|
|
82058
|
+
* Ids read back WITH their vectors.
|
|
82059
|
+
*
|
|
82060
|
+
* `vec0` returns a vector column as the packed Float32 blob it stores, which
|
|
82061
|
+
* is byte-for-byte what `upsert` was given — so the round trip is a base64
|
|
82062
|
+
* encode and nothing else. No re-normalisation, no float re-ordering: a
|
|
82063
|
+
* gallery loaded through here ranks identically to one loaded from the JSON
|
|
82064
|
+
* column it replaced.
|
|
82065
|
+
*/
|
|
82066
|
+
async fetchByIds(index, ids) {
|
|
82067
|
+
this.specOf(index);
|
|
82068
|
+
if (ids.length === 0) return [];
|
|
82069
|
+
const placeholders = ids.map(() => "?").join(",");
|
|
82070
|
+
const rows = this.measured({
|
|
82071
|
+
op: "vectorFetch",
|
|
82072
|
+
collection: tableFor(index)
|
|
82073
|
+
}, () => this.db.prepare(`SELECT id, embedding, deviceId, timestamp, className, modelId, extra
|
|
82074
|
+
FROM ${tableFor(index)} WHERE id IN (${placeholders})`).all(...ids));
|
|
82075
|
+
const out = [];
|
|
82076
|
+
for (const raw of rows) {
|
|
82077
|
+
if (typeof raw !== "object" || raw === null) continue;
|
|
82078
|
+
const row = raw;
|
|
82079
|
+
const id = asText(row["id"]);
|
|
82080
|
+
if (id === null) continue;
|
|
82081
|
+
const blob = row["embedding"];
|
|
82082
|
+
if (!Buffer.isBuffer(blob)) {
|
|
82083
|
+
this.logger.warn("sqlite-vec: row has no readable vector \u2014 skipped", { meta: {
|
|
82084
|
+
index,
|
|
82085
|
+
id
|
|
82086
|
+
} });
|
|
82087
|
+
continue;
|
|
82088
|
+
}
|
|
82089
|
+
out.push({
|
|
82090
|
+
id,
|
|
82091
|
+
vector: blob.toString("base64"),
|
|
82092
|
+
metadata: rebuild(row)
|
|
82093
|
+
});
|
|
82094
|
+
}
|
|
82095
|
+
return out;
|
|
82096
|
+
}
|
|
82097
|
+
/**
|
|
82098
|
+
* One page of the whole index, unranked.
|
|
82099
|
+
*
|
|
82100
|
+
* `LIMIT ? OFFSET ?` over the `vec0` table with NO `MATCH` clause: a plain
|
|
82101
|
+
* scan, so the extension's KNN `k` ceiling ({@link VEC_KNN_MAX_K}) does not
|
|
82102
|
+
* apply and no distance is computed at all. Ordered by `id` so a cursor means
|
|
82103
|
+
* the same thing across calls — `rowid` order is not stable under the
|
|
82104
|
+
* DELETE-then-INSERT upsert this class performs.
|
|
82105
|
+
*
|
|
82106
|
+
* The cursor is an OFFSET, so rows deleted behind the walk shift the window.
|
|
82107
|
+
* That is acceptable and deliberate for the one caller: a reconcile that
|
|
82108
|
+
* misses a row this pass sees it next pass, and the alternative — a keyset
|
|
82109
|
+
* cursor on a virtual table whose ordering the extension owns — buys nothing
|
|
82110
|
+
* for a walk that is idempotent by construction.
|
|
82111
|
+
*/
|
|
82112
|
+
async scan(index, cursor, limit) {
|
|
82113
|
+
this.specOf(index);
|
|
82114
|
+
const offset = Math.max(0, Math.floor(cursor));
|
|
82115
|
+
const take = Math.max(1, Math.floor(limit));
|
|
82116
|
+
const rows = this.measured({
|
|
82117
|
+
op: "vectorScan",
|
|
82118
|
+
collection: tableFor(index)
|
|
82119
|
+
}, () => this.db.prepare(`SELECT id, deviceId, timestamp, className, modelId, extra
|
|
82120
|
+
FROM ${tableFor(index)} ORDER BY id LIMIT ? OFFSET ?`).all(BigInt(take), BigInt(offset)));
|
|
82121
|
+
const items = [];
|
|
82122
|
+
for (const raw of rows) {
|
|
82123
|
+
if (typeof raw !== "object" || raw === null) continue;
|
|
82124
|
+
const row = raw;
|
|
82125
|
+
const id = asText(row["id"]);
|
|
82126
|
+
if (id === null) continue;
|
|
82127
|
+
items.push({
|
|
82128
|
+
id,
|
|
82129
|
+
metadata: rebuild(row)
|
|
82130
|
+
});
|
|
82131
|
+
}
|
|
82132
|
+
return {
|
|
82133
|
+
items,
|
|
82134
|
+
nextCursor: rows.length < take ? null : offset + rows.length
|
|
81777
82135
|
};
|
|
81778
82136
|
}
|
|
81779
82137
|
async getByIds(index, ids) {
|
|
@@ -82111,6 +82469,8 @@ var require_sqlite_settings_addon = __commonJS({
|
|
|
82111
82469
|
...input.filter !== void 0 ? { filter: input.filter } : {}
|
|
82112
82470
|
}),
|
|
82113
82471
|
getByIds: async (input) => ({ items: await vectorIndex.getByIds(input.index, input.ids) }),
|
|
82472
|
+
fetchByIds: async (input) => ({ items: await vectorIndex.fetchByIds(input.index, input.ids) }),
|
|
82473
|
+
scan: async (input) => vectorIndex.scan(input.index, input.cursor, input.limit),
|
|
82114
82474
|
deleteByIds: async (input) => ({ deleted: await vectorIndex.deleteByIds(input.index, input.ids) }),
|
|
82115
82475
|
deleteByFilter: async (input) => ({ deleted: await vectorIndex.deleteByFilter(input.index, input.filter) }),
|
|
82116
82476
|
stats: async (input) => vectorIndex.stats(input.index)
|
|
@@ -82290,7 +82650,7 @@ var require_storage_orchestrator_addon = __commonJS({
|
|
|
82290
82650
|
[Symbol.toStringTag]: { value: "Module" }
|
|
82291
82651
|
});
|
|
82292
82652
|
var require_chunk = require_chunk_Cek0wNdY();
|
|
82293
|
-
var require_dist10 =
|
|
82653
|
+
var require_dist10 = require_dist_Ck2jkBZk();
|
|
82294
82654
|
var node_crypto = __require("crypto");
|
|
82295
82655
|
var node_fs_promises = __require("fs/promises");
|
|
82296
82656
|
node_fs_promises = require_chunk.__toESM(node_fs_promises);
|
|
@@ -82526,7 +82886,8 @@ var require_storage_orchestrator_addon = __commonJS({
|
|
|
82526
82886
|
toLocationId: target.id,
|
|
82527
82887
|
moverJobId: null,
|
|
82528
82888
|
state: null,
|
|
82529
|
-
error: null
|
|
82889
|
+
error: null,
|
|
82890
|
+
progress: null
|
|
82530
82891
|
});
|
|
82531
82892
|
if (BLOCKING_ONLY_CLASSES.includes(storageClass)) findings.push({
|
|
82532
82893
|
code: "blockingOnly",
|
|
@@ -82624,7 +82985,8 @@ var require_storage_orchestrator_addon = __commonJS({
|
|
|
82624
82985
|
...move,
|
|
82625
82986
|
moverJobId: null,
|
|
82626
82987
|
state: null,
|
|
82627
|
-
error: null
|
|
82988
|
+
error: null,
|
|
82989
|
+
progress: null
|
|
82628
82990
|
})),
|
|
82629
82991
|
pauseLeaseId: null,
|
|
82630
82992
|
pausedParticipants: [],
|
|
@@ -82658,6 +83020,177 @@ var require_storage_orchestrator_addon = __commonJS({
|
|
|
82658
83020
|
await Promise.all(job.moves.filter((move) => move.moverJobId !== null).map((move) => this.cancelMove(move)));
|
|
82659
83021
|
return true;
|
|
82660
83022
|
}
|
|
83023
|
+
/**
|
|
83024
|
+
* Every mover running right now, in both lanes — including the ones no
|
|
83025
|
+
* migration armed.
|
|
83026
|
+
*
|
|
83027
|
+
* `status` already carries a migration's own progress (the coordinator folds
|
|
83028
|
+
* it onto each move from the poll it is already doing). This exists for the
|
|
83029
|
+
* other half: `recording.relocateFootage` and `pipelineAnalytics.relocateMedia`
|
|
83030
|
+
* are operator-callable, and until {@link drain} existed that was the only way
|
|
83031
|
+
* to run a drain at all. Such a mover has no job to fold into, so without this
|
|
83032
|
+
* read a five-hour operation is invisible in the UI.
|
|
83033
|
+
*
|
|
83034
|
+
* `migrationJobId` is best-effort by construction: the coordinator keeps ONE
|
|
83035
|
+
* durable job, so a mover armed by an older, since-overwritten migration
|
|
83036
|
+
* reports `null`. That is the honest answer — nothing here can still claim it.
|
|
83037
|
+
*/
|
|
83038
|
+
async movers() {
|
|
83039
|
+
const job = await this.status();
|
|
83040
|
+
const owned = /* @__PURE__ */ new Map();
|
|
83041
|
+
for (const move of job?.moves ?? []) if (move.moverJobId !== null) owned.set(move.moverJobId, job?.jobId ?? "");
|
|
83042
|
+
const [footage, media] = await Promise.all([this.deps.participants.recorder.listMovers(), this.deps.participants.analytics.listMovers()]);
|
|
83043
|
+
const observedAt = this.deps.now();
|
|
83044
|
+
const label = (lane, jobs) => jobs.map((mover) => ({
|
|
83045
|
+
lane,
|
|
83046
|
+
job: mover,
|
|
83047
|
+
migrationJobId: owned.get(mover.jobId) ?? null,
|
|
83048
|
+
observedAt
|
|
83049
|
+
}));
|
|
83050
|
+
return [...label("footage", footage), ...label("media", media)];
|
|
83051
|
+
}
|
|
83052
|
+
/**
|
|
83053
|
+
* What every class's source STILL holds — the census behind a "drain
|
|
83054
|
+
* remaining" action.
|
|
83055
|
+
*
|
|
83056
|
+
* A class appears here only when something is (or might be) left on a
|
|
83057
|
+
* location that is not its default. An empty result therefore means exactly
|
|
83058
|
+
* "there is nothing to drain", which is what lets the UI offer the action
|
|
83059
|
+
* only when it is true, and what lets {@link drain} refuse rather than start
|
|
83060
|
+
* a job that would move nothing and report `done` — the failure mode D295
|
|
83061
|
+
* exists to end.
|
|
83062
|
+
*
|
|
83063
|
+
* `items: null` is "the archive could not be asked" and is still listed. A
|
|
83064
|
+
* residue nobody could measure is the case an operator most needs to see;
|
|
83065
|
+
* dropping it because the read failed would be the quiet success again.
|
|
83066
|
+
*/
|
|
83067
|
+
async residue() {
|
|
83068
|
+
const out = [];
|
|
83069
|
+
for (const storageClass of STORAGE_CLASSES) {
|
|
83070
|
+
if (!MOVER_CLASSES.includes(storageClass)) continue;
|
|
83071
|
+
const target = this.deps.locations.getDefaultLocation(storageClass);
|
|
83072
|
+
if (!target) continue;
|
|
83073
|
+
if (laneOf(storageClass) === "media") {
|
|
83074
|
+
const count = await unanswerable(this.deps.participants.analytics.residue({
|
|
83075
|
+
toLocationId: target.id,
|
|
83076
|
+
mode: storageClass === "galleryMedia" ? "gallery" : "move"
|
|
83077
|
+
}));
|
|
83078
|
+
if (count !== null && count.rows === 0) continue;
|
|
83079
|
+
out.push({
|
|
83080
|
+
storageClass,
|
|
83081
|
+
fromLocationId: "*",
|
|
83082
|
+
toLocationId: target.id,
|
|
83083
|
+
items: count?.rows ?? null,
|
|
83084
|
+
bytes: null
|
|
83085
|
+
});
|
|
83086
|
+
continue;
|
|
83087
|
+
}
|
|
83088
|
+
for (const source of this.deps.locations.listLocations({ type: storageClass })) {
|
|
83089
|
+
if (source.id === target.id) continue;
|
|
83090
|
+
const census = await unanswerable(this.deps.participants.recorder.residue({
|
|
83091
|
+
fromLocationId: source.id,
|
|
83092
|
+
footageClass: storageClass === "recordingsLow" ? "recordingsLow" : "recordings"
|
|
83093
|
+
}));
|
|
83094
|
+
if (census !== null && census.segments === 0) continue;
|
|
83095
|
+
out.push({
|
|
83096
|
+
storageClass,
|
|
83097
|
+
fromLocationId: source.id,
|
|
83098
|
+
toLocationId: target.id,
|
|
83099
|
+
items: census?.segments ?? null,
|
|
83100
|
+
bytes: census?.bytes ?? null
|
|
83101
|
+
});
|
|
83102
|
+
}
|
|
83103
|
+
}
|
|
83104
|
+
return out;
|
|
83105
|
+
}
|
|
83106
|
+
/**
|
|
83107
|
+
* Run the DRAIN half alone, against classes whose default has already moved.
|
|
83108
|
+
*
|
|
83109
|
+
* ## Why this is a second verb rather than a looser `start`
|
|
83110
|
+
*
|
|
83111
|
+
* `start` refuses a destination that is already the class's default
|
|
83112
|
+
* (`"recordingsLow:ssd" is already the "recordingsLow" default`). That refusal
|
|
83113
|
+
* is correct and it is load-bearing: there is genuinely nothing left to
|
|
83114
|
+
* repoint, and an operator must never be able to re-repoint a migrated class
|
|
83115
|
+
* by accident. Making `start` idempotent — "an already-repointed class
|
|
83116
|
+
* proceeds straight to draining" — would delete that protection AND make the
|
|
83117
|
+
* verb mean two different things depending on state, so the confirmation an
|
|
83118
|
+
* operator reads ("pauses the writers…") would be a lie half the time.
|
|
83119
|
+
*
|
|
83120
|
+
* `drain` instead cannot repoint AT ALL: it never touches
|
|
83121
|
+
* `setDefaultLocations`, and its job starts in `draining` with `repointed`
|
|
83122
|
+
* already true, so the `repointing` / `refreshing` / `resuming` blocks of
|
|
83123
|
+
* {@link run} are behind it and unreachable. The two verbs are disjoint, and
|
|
83124
|
+
* `start`'s refusal keeps meaning exactly what it meant.
|
|
83125
|
+
*
|
|
83126
|
+
* ## Why it re-derives the work instead of resuming the old job
|
|
83127
|
+
*
|
|
83128
|
+
* The finished job is the audit of what happened; re-opening it destroys
|
|
83129
|
+
* that. And a drain is needed in cases where no migration job ever existed
|
|
83130
|
+
* (a mover armed by hand, footage stranded on a location an operator added
|
|
83131
|
+
* and then un-defaulted). One job = one operation, and the work list comes
|
|
83132
|
+
* from {@link residue} — the archive — not from what a previous job believed.
|
|
83133
|
+
*/
|
|
83134
|
+
async drain(input) {
|
|
83135
|
+
if (this.startReserved) throw new Error("storage migration is already active");
|
|
83136
|
+
this.startReserved = true;
|
|
83137
|
+
try {
|
|
83138
|
+
const existing = await this.status();
|
|
83139
|
+
if (existing && isTerminal(existing) && existing.pausedParticipants.length > 0) {
|
|
83140
|
+
await this.releaseAfterTerminal(existing);
|
|
83141
|
+
await this.persist(existing);
|
|
83142
|
+
if (existing.pausedParticipants.length > 0) throw new Error(`storage migration ${existing.jobId} still holds maintenance leases`);
|
|
83143
|
+
}
|
|
83144
|
+
if (existing && !isTerminal(existing)) throw new Error(`storage migration is already active (${existing.jobId})`);
|
|
83145
|
+
for (const storageClass of input.classes) {
|
|
83146
|
+
if (MOVER_CLASSES.includes(storageClass)) continue;
|
|
83147
|
+
throw new Error(`No mover owns "${storageClass}" \u2014 there is nothing that can drain it. Move it by hand.`);
|
|
83148
|
+
}
|
|
83149
|
+
const residue = await this.residue();
|
|
83150
|
+
const moves = [];
|
|
83151
|
+
const destinations = {};
|
|
83152
|
+
for (const storageClass of input.classes) {
|
|
83153
|
+
const remaining = residue.filter((entry) => entry.storageClass === storageClass);
|
|
83154
|
+
if (remaining.length === 0) throw new Error(`"${storageClass}" has nothing left outside its default location \u2014 there is nothing to drain. To CHANGE where it writes, use storageMigration.start with a new destination.`);
|
|
83155
|
+
for (const entry of remaining) {
|
|
83156
|
+
moves.push({
|
|
83157
|
+
storageClass,
|
|
83158
|
+
fromLocationId: entry.fromLocationId,
|
|
83159
|
+
toLocationId: entry.toLocationId,
|
|
83160
|
+
moverJobId: null,
|
|
83161
|
+
state: null,
|
|
83162
|
+
error: null,
|
|
83163
|
+
progress: null
|
|
83164
|
+
});
|
|
83165
|
+
destinations[storageClass] = entry.toLocationId;
|
|
83166
|
+
}
|
|
83167
|
+
}
|
|
83168
|
+
const now = this.deps.now();
|
|
83169
|
+
const job = {
|
|
83170
|
+
jobId: this.deps.newId(),
|
|
83171
|
+
phase: "draining",
|
|
83172
|
+
mode: "nonBlocking",
|
|
83173
|
+
destinations,
|
|
83174
|
+
throttleMbps: input.throttleMbps ?? 40,
|
|
83175
|
+
moves,
|
|
83176
|
+
pauseLeaseId: null,
|
|
83177
|
+
pausedParticipants: [],
|
|
83178
|
+
repointed: true,
|
|
83179
|
+
cancelRequested: false,
|
|
83180
|
+
startedAt: now,
|
|
83181
|
+
updatedAt: now,
|
|
83182
|
+
finishedAt: null,
|
|
83183
|
+
error: null
|
|
83184
|
+
};
|
|
83185
|
+
await this.persist(job);
|
|
83186
|
+
this.active = job;
|
|
83187
|
+
this.runPromise = this.run(job);
|
|
83188
|
+
this.runPromise;
|
|
83189
|
+
return job.jobId;
|
|
83190
|
+
} finally {
|
|
83191
|
+
this.startReserved = false;
|
|
83192
|
+
}
|
|
83193
|
+
}
|
|
82661
83194
|
/** Boot recovery resumes a durable unfinished state. A missing in-memory
|
|
82662
83195
|
* child mover is recreated from the same copy-if-absent input. */
|
|
82663
83196
|
async recover() {
|
|
@@ -82867,6 +83400,13 @@ var require_storage_orchestrator_addon = __commonJS({
|
|
|
82867
83400
|
}
|
|
82868
83401
|
move.state = status.state;
|
|
82869
83402
|
move.error = status.error;
|
|
83403
|
+
move.progress = {
|
|
83404
|
+
filesMoved: status.filesMoved,
|
|
83405
|
+
filesTotal: status.filesTotal,
|
|
83406
|
+
bytesMoved: status.bytesMoved,
|
|
83407
|
+
startedAt: status.startedAt,
|
|
83408
|
+
observedAt: this.deps.now()
|
|
83409
|
+
};
|
|
82870
83410
|
if (status.state === "failed") throw new Error(move.error ?? `${move.storageClass} move failed`);
|
|
82871
83411
|
if (status.state === "cancelled") {
|
|
82872
83412
|
job.cancelRequested = true;
|
|
@@ -82986,6 +83526,13 @@ var require_storage_orchestrator_addon = __commonJS({
|
|
|
82986
83526
|
await this.deps.state.set(job);
|
|
82987
83527
|
}
|
|
82988
83528
|
};
|
|
83529
|
+
async function unanswerable(read) {
|
|
83530
|
+
try {
|
|
83531
|
+
return await read;
|
|
83532
|
+
} catch {
|
|
83533
|
+
return null;
|
|
83534
|
+
}
|
|
83535
|
+
}
|
|
82989
83536
|
function requireLease(job) {
|
|
82990
83537
|
if (job.pauseLeaseId === null) throw new Error("storage migration has no maintenance lease");
|
|
82991
83538
|
return job.pauseLeaseId;
|
|
@@ -83006,6 +83553,9 @@ var require_storage_orchestrator_addon = __commonJS({
|
|
|
83006
83553
|
const existing = map.get(declaration.id);
|
|
83007
83554
|
if (existing !== void 0) {
|
|
83008
83555
|
if (existing.cardinality !== declaration.cardinality) throw new Error(`Storage location cardinality conflict for id "${declaration.id}": "${existing.cardinality}" (first declarer) vs "${declaration.cardinality}" (later declarer). All addons declaring the same storage location id must agree on cardinality.`);
|
|
83556
|
+
const existingAccess = existing.access ?? "local-path";
|
|
83557
|
+
const declaredAccess = declaration.access ?? "local-path";
|
|
83558
|
+
if (existingAccess !== declaredAccess) throw new Error(`Storage location access conflict for id "${declaration.id}": "${existingAccess}" (first declarer) vs "${declaredAccess}" (later declarer). All addons declaring the same storage location id must agree on access \u2014 a later declaration must never widen what an earlier one restricted.`);
|
|
83009
83559
|
continue;
|
|
83010
83560
|
}
|
|
83011
83561
|
map.set(declaration.id, declaration);
|
|
@@ -83021,11 +83571,23 @@ var require_storage_orchestrator_addon = __commonJS({
|
|
|
83021
83571
|
cardinalityOf(id) {
|
|
83022
83572
|
return map.get(id)?.cardinality ?? null;
|
|
83023
83573
|
},
|
|
83574
|
+
accessOf(id) {
|
|
83575
|
+
const declaration = map.get(id);
|
|
83576
|
+
if (declaration === void 0) return null;
|
|
83577
|
+
return declaration.access ?? "local-path";
|
|
83578
|
+
},
|
|
83024
83579
|
list() {
|
|
83025
83580
|
return frozen;
|
|
83026
83581
|
}
|
|
83027
83582
|
};
|
|
83028
83583
|
}
|
|
83584
|
+
function resolveRefusalFor(location, locality) {
|
|
83585
|
+
if (locality !== false) return null;
|
|
83586
|
+
return `storage.resolve is a request for a path this node can open with node:fs, and location "${location.id}" is served by the remote provider "${location.providerId}" (nodeLocal: false) \u2014 the path it would return exists on the remote host, not here. Read and write this location through the storage cap (read/write, or beginUpload/writeChunk/finalizeUpload) instead.`;
|
|
83587
|
+
}
|
|
83588
|
+
function canProbeOccupancyLocally(locality) {
|
|
83589
|
+
return locality === true;
|
|
83590
|
+
}
|
|
83029
83591
|
function resolveEngine(getEngines) {
|
|
83030
83592
|
const engines = getEngines();
|
|
83031
83593
|
if (engines.length === 0) throw new Error("settings-store: no data-store-provider engine is registered \u2014 the data door has nothing behind it");
|
|
@@ -83053,6 +83615,47 @@ var require_storage_orchestrator_addon = __commonJS({
|
|
|
83053
83615
|
declareCollection: async (input) => (await engine()).declareCollection(input)
|
|
83054
83616
|
};
|
|
83055
83617
|
}
|
|
83618
|
+
var EMPTY_SECRET_KEYS = /* @__PURE__ */ new Set();
|
|
83619
|
+
function secretKeysOfProviderInfo(info) {
|
|
83620
|
+
return require_dist10.collectSecretConfigKeys(info.configSchema);
|
|
83621
|
+
}
|
|
83622
|
+
function redactLocationConfig(config, secretKeys) {
|
|
83623
|
+
if (secretKeys.size === 0) return config;
|
|
83624
|
+
let touched = false;
|
|
83625
|
+
const out = {};
|
|
83626
|
+
for (const [key, value] of Object.entries(config)) {
|
|
83627
|
+
if (secretKeys.has(key) && value !== void 0 && value !== null && value !== "") {
|
|
83628
|
+
out[key] = require_dist10.REDACTED_SECRET;
|
|
83629
|
+
touched = true;
|
|
83630
|
+
continue;
|
|
83631
|
+
}
|
|
83632
|
+
out[key] = value;
|
|
83633
|
+
}
|
|
83634
|
+
return touched ? out : config;
|
|
83635
|
+
}
|
|
83636
|
+
function redactLocation(location, secretKeys) {
|
|
83637
|
+
const config = redactLocationConfig(location.config, secretKeys);
|
|
83638
|
+
if (config === location.config) return location;
|
|
83639
|
+
return {
|
|
83640
|
+
...location,
|
|
83641
|
+
config
|
|
83642
|
+
};
|
|
83643
|
+
}
|
|
83644
|
+
function restoreRedactedSecrets(incoming, stored, secretKeys) {
|
|
83645
|
+
if (secretKeys.size === 0) return incoming;
|
|
83646
|
+
let touched = false;
|
|
83647
|
+
const out = {};
|
|
83648
|
+
for (const [key, value] of Object.entries(incoming)) {
|
|
83649
|
+
if (value !== "__camstack_redacted__" || !secretKeys.has(key)) {
|
|
83650
|
+
out[key] = value;
|
|
83651
|
+
continue;
|
|
83652
|
+
}
|
|
83653
|
+
touched = true;
|
|
83654
|
+
const previous = stored?.[key];
|
|
83655
|
+
if (previous !== void 0) out[key] = previous;
|
|
83656
|
+
}
|
|
83657
|
+
return touched ? out : incoming;
|
|
83658
|
+
}
|
|
83056
83659
|
async function collectProviderInfos(providers, onError) {
|
|
83057
83660
|
const out = [];
|
|
83058
83661
|
for (const [index, p] of providers.entries()) try {
|
|
@@ -83374,6 +83977,66 @@ var require_storage_orchestrator_addon = __commonJS({
|
|
|
83374
83977
|
* implicitly-demoted siblings are persisted before the in-memory map
|
|
83375
83978
|
* mutation returns. Persistence errors propagate to the caller.
|
|
83376
83979
|
*/
|
|
83980
|
+
/**
|
|
83981
|
+
* Refuse a `(location kind, provider)` pair the kind cannot use.
|
|
83982
|
+
*
|
|
83983
|
+
* The rule, in one line: a `'local-path'` kind requires a provider whose
|
|
83984
|
+
* `getProviderInfo().nodeLocal` is `true`.
|
|
83985
|
+
*
|
|
83986
|
+
* `nodeLocal` is the honest name for "this provider's `resolve` returns a
|
|
83987
|
+
* path on the filesystem of the node that resolved it". The
|
|
83988
|
+
* `storage-provider` cap's own discriminated union already forces every
|
|
83989
|
+
* provider to declare it, and all four remote providers declare `false`, so
|
|
83990
|
+
* no new cap surface is needed to ask the question.
|
|
83991
|
+
*
|
|
83992
|
+
* Three-valued on purpose. Only a POSITIVE `false` refuses:
|
|
83993
|
+
* - `true` → node-local, always fine.
|
|
83994
|
+
* - `false` → the provider is known and known to be remote. REFUSE.
|
|
83995
|
+
* - `undefined` → the provider has not registered yet (early boot, an addon
|
|
83996
|
+
* still loading). That is "unknown", not "remote", and a read that could
|
|
83997
|
+
* not be made must never destroy work (D49) — the system seed runs
|
|
83998
|
+
* through this path before any provider registers. Allowed, and logged,
|
|
83999
|
+
* so the allowance is never silent.
|
|
84000
|
+
*
|
|
84001
|
+
* The DECLARATION side is read the same way. A kind the registry does not
|
|
84002
|
+
* know is `local-path` (fail-closed: an unknown kind is not a permissive
|
|
84003
|
+
* one), but NO REGISTRY AT ALL is a different statement — nothing has been
|
|
84004
|
+
* loaded, so nothing can be concluded about any kind. The addon injects the
|
|
84005
|
+
* registry inside `onInitialize`, before the `storage` cap is mounted, so
|
|
84006
|
+
* there is no window in which an operator upsert sees this branch; a service
|
|
84007
|
+
* constructed without one is the in-memory/early-boot path.
|
|
84008
|
+
*/
|
|
84009
|
+
refuseIncompatibleProvider(input) {
|
|
84010
|
+
const registry = this.registry;
|
|
84011
|
+
if (registry === null) {
|
|
84012
|
+
this.logger.debug("storage-orchestrator: no location declarations loaded \u2014 access constraint not evaluated", { meta: {
|
|
84013
|
+
id: input.id,
|
|
84014
|
+
type: input.type,
|
|
84015
|
+
providerId: input.providerId
|
|
84016
|
+
} });
|
|
84017
|
+
return;
|
|
84018
|
+
}
|
|
84019
|
+
const access = registry.accessOf(input.type) ?? "local-path";
|
|
84020
|
+
if (access !== "local-path") return;
|
|
84021
|
+
const nodeLocal = this.nodeLocalResolver?.(input.providerId);
|
|
84022
|
+
if (nodeLocal === true) return;
|
|
84023
|
+
if (nodeLocal === void 0) {
|
|
84024
|
+
this.logger.debug("storage-orchestrator: provider not yet classified \u2014 allowing a local-path upsert", { meta: {
|
|
84025
|
+
id: input.id,
|
|
84026
|
+
type: input.type,
|
|
84027
|
+
providerId: input.providerId,
|
|
84028
|
+
access
|
|
84029
|
+
} });
|
|
84030
|
+
return;
|
|
84031
|
+
}
|
|
84032
|
+
this.logger.warn("storage-orchestrator: REFUSED a remote provider for a local-path kind", { meta: {
|
|
84033
|
+
id: input.id,
|
|
84034
|
+
type: input.type,
|
|
84035
|
+
providerId: input.providerId,
|
|
84036
|
+
access
|
|
84037
|
+
} });
|
|
84038
|
+
throw new Error(`Storage kind "${input.type}" is declared access "local-path": the service that owns it reads and writes its bytes with node:fs on the path "storage.resolve" returns, so it can only be backed by a node-local provider. Provider "${input.providerId}" is remote (nodeLocal: false) and its resolved paths do not exist on this node. Refusing location "${input.id}".`);
|
|
84039
|
+
}
|
|
83377
84040
|
upsertLocation(input) {
|
|
83378
84041
|
const now = Date.now();
|
|
83379
84042
|
const existing = this.locations.get(input.id);
|
|
@@ -83383,6 +84046,7 @@ var require_storage_orchestrator_addon = __commonJS({
|
|
|
83383
84046
|
if (already) throw new Error(`Storage type "${input.type}" is single \u2014 only one location allowed (existing: "${already.id}"). Edit it instead of adding a new one.`);
|
|
83384
84047
|
}
|
|
83385
84048
|
}
|
|
84049
|
+
this.refuseIncompatibleProvider(input);
|
|
83386
84050
|
if (this.nodeLocalResolver?.(input.providerId) === true && !input.nodeId) input = {
|
|
83387
84051
|
...input,
|
|
83388
84052
|
nodeId: "hub"
|
|
@@ -83853,6 +84517,19 @@ var require_storage_orchestrator_addon = __commonJS({
|
|
|
83853
84517
|
*/
|
|
83854
84518
|
nodeLocalByProvider = /* @__PURE__ */ new Map();
|
|
83855
84519
|
/**
|
|
84520
|
+
* Cached `providerId → secret config keys`, derived from each provider's own
|
|
84521
|
+
* `configSchema` in the SAME refresh as `nodeLocalByProvider` — one
|
|
84522
|
+
* `getProviderInfo()` round trip answers both questions.
|
|
84523
|
+
*
|
|
84524
|
+
* An absent providerId yields an EMPTY set, which redacts nothing. That is
|
|
84525
|
+
* the one direction this cache can be wrong in, so it is worth saying why it
|
|
84526
|
+
* is acceptable: the entry is populated at the same moment the provider
|
|
84527
|
+
* becomes resolvable at all, so a location whose provider is unknown here
|
|
84528
|
+
* cannot be dispatched to either — there is no window in which a credential
|
|
84529
|
+
* is readable through a provider the orchestrator can otherwise use.
|
|
84530
|
+
*/
|
|
84531
|
+
secretKeysByProvider = /* @__PURE__ */ new Map();
|
|
84532
|
+
/**
|
|
83856
84533
|
* Disposers run on `onShutdown` — currently the eventBus subscription
|
|
83857
84534
|
* for `capability:provider-registered` events used by the lazy seed
|
|
83858
84535
|
* fallback. Stored separately from the `BaseAddon` disposer chain so
|
|
@@ -83887,13 +84564,24 @@ var require_storage_orchestrator_addon = __commonJS({
|
|
|
83887
84564
|
listLocations: async ({ type }) => {
|
|
83888
84565
|
const rows = type !== void 0 ? service.listLocations({ type }) : service.listLocations();
|
|
83889
84566
|
return Promise.all(rows.map(async (loc) => ({
|
|
83890
|
-
...loc,
|
|
84567
|
+
...this.redacted(loc),
|
|
83891
84568
|
capacity: await this.localCapacityOf(loc)
|
|
83892
84569
|
})));
|
|
83893
84570
|
},
|
|
83894
|
-
getDefaultLocation: async ({ type }) =>
|
|
84571
|
+
getDefaultLocation: async ({ type }) => {
|
|
84572
|
+
const loc = service.getDefaultLocation(type);
|
|
84573
|
+
return loc === null ? null : this.redacted(loc);
|
|
84574
|
+
},
|
|
83895
84575
|
listLocationDeclarations: async () => service.listDeclarations(),
|
|
83896
|
-
upsertLocation: async (input) =>
|
|
84576
|
+
upsertLocation: async (input) => {
|
|
84577
|
+
const stored = service.getLocationById(input.id);
|
|
84578
|
+
const config = restoreRedactedSecrets(input.config, stored?.config, this.secretKeysFor(input.providerId));
|
|
84579
|
+
const saved = service.upsertLocation(config === input.config ? input : {
|
|
84580
|
+
...input,
|
|
84581
|
+
config
|
|
84582
|
+
});
|
|
84583
|
+
return this.redacted(saved);
|
|
84584
|
+
},
|
|
83897
84585
|
deleteLocation: async ({ id, force }) => {
|
|
83898
84586
|
await service.deleteLocation(id, { force: force === true });
|
|
83899
84587
|
},
|
|
@@ -83938,6 +84626,7 @@ var require_storage_orchestrator_addon = __commonJS({
|
|
|
83938
84626
|
},
|
|
83939
84627
|
resolve: async ({ location, relativePath }) => {
|
|
83940
84628
|
const loc = service.resolveRef(location);
|
|
84629
|
+
this.refuseRemoteResolve(loc);
|
|
83941
84630
|
return (await service.getProviderFor(loc)).resolve({
|
|
83942
84631
|
location: loc,
|
|
83943
84632
|
relativePath
|
|
@@ -84060,6 +84749,8 @@ var require_storage_orchestrator_addon = __commonJS({
|
|
|
84060
84749
|
startMove: (input) => this.ctx.api.recording.startStorageMigrationMove.mutate(input),
|
|
84061
84750
|
startDrain: (input) => this.ctx.api.recording.relocateFootage.mutate(input),
|
|
84062
84751
|
getMove: (jobId) => this.ctx.api.recording.getStorageMigrationMoveStatus.query({ jobId }),
|
|
84752
|
+
listMovers: () => this.ctx.api.recording.listRelocateJobs.query({}),
|
|
84753
|
+
residue: (input) => this.ctx.api.recording.getRelocateResidue.query(input),
|
|
84063
84754
|
cancelMove: async (jobId) => (await this.ctx.api.recording.cancelStorageMigrationMove.mutate({ jobId })).cancelled,
|
|
84064
84755
|
refresh: async (leaseId) => {
|
|
84065
84756
|
await this.ctx.api.recording.refreshStorageLocationsForMigration.mutate({ leaseId });
|
|
@@ -84076,6 +84767,8 @@ var require_storage_orchestrator_addon = __commonJS({
|
|
|
84076
84767
|
startDrain: (input) => this.ctx.api.pipelineAnalytics.relocateMedia.mutate(input),
|
|
84077
84768
|
countUnstamped: () => this.ctx.api.pipelineAnalytics.countUnstampedEventMedia.query({}),
|
|
84078
84769
|
getMove: (jobId) => this.ctx.api.pipelineAnalytics.getStorageMigrationMoveStatus.query({ jobId }),
|
|
84770
|
+
listMovers: () => this.ctx.api.pipelineAnalytics.listRelocateMediaJobs.query({}),
|
|
84771
|
+
residue: (input) => this.ctx.api.pipelineAnalytics.countRelocatableMedia.query(input),
|
|
84079
84772
|
cancelMove: async (jobId) => (await this.ctx.api.pipelineAnalytics.cancelStorageMigrationMove.mutate({ jobId })).cancelled,
|
|
84080
84773
|
refresh: async (leaseId) => {
|
|
84081
84774
|
await this.ctx.api.pipelineAnalytics.refreshStorageLocationsForMigration.mutate({ leaseId });
|
|
@@ -84091,7 +84784,10 @@ var require_storage_orchestrator_addon = __commonJS({
|
|
|
84091
84784
|
plan: (input) => migration.plan(input),
|
|
84092
84785
|
start: async (input) => ({ jobId: await migration.start(input) }),
|
|
84093
84786
|
status: ({ jobId }) => migration.status(jobId),
|
|
84094
|
-
cancel: async ({ jobId }) => ({ cancelled: await migration.cancel(jobId) })
|
|
84787
|
+
cancel: async ({ jobId }) => ({ cancelled: await migration.cancel(jobId) }),
|
|
84788
|
+
movers: () => migration.movers(),
|
|
84789
|
+
residue: () => migration.residue(),
|
|
84790
|
+
drain: async (input) => ({ jobId: await migration.drain(input) })
|
|
84095
84791
|
};
|
|
84096
84792
|
await this.seedFromDeclarations();
|
|
84097
84793
|
const eventBus = this.ctx.eventBus;
|
|
@@ -84236,6 +84932,34 @@ var require_storage_orchestrator_addon = __commonJS({
|
|
|
84236
84932
|
}
|
|
84237
84933
|
return out;
|
|
84238
84934
|
}
|
|
84935
|
+
/** Declared secret config keys for a provider; empty when unknown. */
|
|
84936
|
+
secretKeysFor(providerId) {
|
|
84937
|
+
return this.secretKeysByProvider.get(providerId) ?? EMPTY_SECRET_KEYS;
|
|
84938
|
+
}
|
|
84939
|
+
/** A location with its provider's declared secrets replaced by the sentinel. */
|
|
84940
|
+
redacted(location) {
|
|
84941
|
+
return redactLocation(location, this.secretKeysFor(location.providerId));
|
|
84942
|
+
}
|
|
84943
|
+
/**
|
|
84944
|
+
* Is this location backed by a provider that serves a genuine local
|
|
84945
|
+
* filesystem? `true` / `false` / `undefined` — see
|
|
84946
|
+
* `StorageOrchestratorService.refuseIncompatibleProvider` for why the
|
|
84947
|
+
* unknown case is kept distinct rather than folded into either answer.
|
|
84948
|
+
*/
|
|
84949
|
+
providerIsNodeLocal(location) {
|
|
84950
|
+
return this.nodeLocalByProvider.get(location.providerId);
|
|
84951
|
+
}
|
|
84952
|
+
/** See the call site in the `resolve` dispatch, and `access-guards.ts`. */
|
|
84953
|
+
refuseRemoteResolve(location) {
|
|
84954
|
+
const refusal = resolveRefusalFor(location, this.providerIsNodeLocal(location));
|
|
84955
|
+
if (refusal === null) return;
|
|
84956
|
+
this.ctx.logger.warn("storage-orchestrator: REFUSED resolve() on a remote-backed location", { meta: {
|
|
84957
|
+
id: location.id,
|
|
84958
|
+
type: location.type,
|
|
84959
|
+
providerId: location.providerId
|
|
84960
|
+
} });
|
|
84961
|
+
throw new Error(refusal);
|
|
84962
|
+
}
|
|
84239
84963
|
/** statfs capacity of a location's basePath, walking up to the nearest
|
|
84240
84964
|
* existing ancestor. Null for remote-node locations or unstattable paths. */
|
|
84241
84965
|
async localCapacityOf(loc) {
|
|
@@ -84323,6 +85047,13 @@ var require_storage_orchestrator_addon = __commonJS({
|
|
|
84323
85047
|
* errno — `EACCES`, `EIO`, a stale NFS handle — is `unknown` and refuses.
|
|
84324
85048
|
*/
|
|
84325
85049
|
async locationOccupancy(location) {
|
|
85050
|
+
if (!canProbeOccupancyLocally(this.providerIsNodeLocal(location))) {
|
|
85051
|
+
this.ctx.logger.debug("storage-orchestrator: occupancy unknown \u2014 location is not backed by a local filesystem", { meta: {
|
|
85052
|
+
id: location.id,
|
|
85053
|
+
providerId: location.providerId
|
|
85054
|
+
} });
|
|
85055
|
+
return "unknown";
|
|
85056
|
+
}
|
|
84326
85057
|
if ((location.nodeId === void 0 || location.nodeId === "" ? HUB_NODE_ID : location.nodeId) !== (this.service?.getLocalNodeId() ?? HUB_NODE_ID)) return "unknown";
|
|
84327
85058
|
const basePath = this.locationBasePath(location.id);
|
|
84328
85059
|
if (basePath === null) return "unknown";
|
|
@@ -84405,7 +85136,10 @@ var require_storage_orchestrator_addon = __commonJS({
|
|
|
84405
85136
|
error: err instanceof Error ? err.message : String(err)
|
|
84406
85137
|
} });
|
|
84407
85138
|
});
|
|
84408
|
-
for (const info of infos)
|
|
85139
|
+
for (const info of infos) {
|
|
85140
|
+
this.nodeLocalByProvider.set(info.providerId, info.nodeLocal);
|
|
85141
|
+
this.secretKeysByProvider.set(info.providerId, secretKeysOfProviderInfo(info));
|
|
85142
|
+
}
|
|
84409
85143
|
}
|
|
84410
85144
|
};
|
|
84411
85145
|
exports.SqliteLocationStore = SqliteLocationStore;
|
|
@@ -84444,7 +85178,7 @@ var require_system_config_addon = __commonJS({
|
|
|
84444
85178
|
[Symbol.toStringTag]: { value: "Module" }
|
|
84445
85179
|
});
|
|
84446
85180
|
require_chunk_Cek0wNdY();
|
|
84447
|
-
var require_dist10 =
|
|
85181
|
+
var require_dist10 = require_dist_Ck2jkBZk();
|
|
84448
85182
|
var SECTION_TITLES = {
|
|
84449
85183
|
server: "Server",
|
|
84450
85184
|
auth: "Authentication"
|
|
@@ -102505,7 +103239,7 @@ var require_winston_logging = __commonJS({
|
|
|
102505
103239
|
[Symbol.toStringTag]: { value: "Module" }
|
|
102506
103240
|
});
|
|
102507
103241
|
var require_chunk = require_chunk_Cek0wNdY();
|
|
102508
|
-
var require_dist10 =
|
|
103242
|
+
var require_dist10 = require_dist_Ck2jkBZk();
|
|
102509
103243
|
var require_formatter = require_formatter_DqAKDlvN();
|
|
102510
103244
|
var node_path = __require("path");
|
|
102511
103245
|
node_path = require_chunk.__toESM(node_path);
|
|
@@ -104448,9 +105182,9 @@ var require_event_category_BaEgqJNv = __commonJS({
|
|
|
104448
105182
|
}
|
|
104449
105183
|
});
|
|
104450
105184
|
|
|
104451
|
-
// ../types/dist/sleep-
|
|
104452
|
-
var
|
|
104453
|
-
"../types/dist/sleep-
|
|
105185
|
+
// ../types/dist/sleep-CWWLTM6W.js
|
|
105186
|
+
var require_sleep_CWWLTM6W = __commonJS({
|
|
105187
|
+
"../types/dist/sleep-CWWLTM6W.js"(exports) {
|
|
104454
105188
|
"use strict";
|
|
104455
105189
|
var require_event_category = require_event_category_BaEgqJNv();
|
|
104456
105190
|
var zod = require_zod();
|
|
@@ -107151,6 +107885,7 @@ var require_sleep_CJrvRDlD = __commonJS({
|
|
|
107151
107885
|
cancelStorageMigrationMove: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "cancelStorageMigrationMove", "mutation", input),
|
|
107152
107886
|
relocateMedia: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "relocateMedia", "mutation", input),
|
|
107153
107887
|
countUnstampedEventMedia: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "countUnstampedEventMedia", "query", input),
|
|
107888
|
+
countRelocatableMedia: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "countRelocatableMedia", "query", input),
|
|
107154
107889
|
listRelocateMediaJobs: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "listRelocateMediaJobs", "query", input),
|
|
107155
107890
|
cancelRelocateMedia: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "cancelRelocateMedia", "mutation", input),
|
|
107156
107891
|
listOpsLog: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "listOpsLog", "query", input),
|
|
@@ -108115,7 +108850,7 @@ var require_addon = __commonJS({
|
|
|
108115
108850
|
"use strict";
|
|
108116
108851
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
108117
108852
|
var require_event_category = require_event_category_BaEgqJNv();
|
|
108118
|
-
var require_sleep =
|
|
108853
|
+
var require_sleep = require_sleep_CWWLTM6W();
|
|
108119
108854
|
var require_err_msg = require_err_msg_COpsHMw2();
|
|
108120
108855
|
var CAP_INPUT_DEFAULTS = Object.freeze({
|
|
108121
108856
|
"addons": { "getLogs": { "limit": 100 } },
|
|
@@ -108335,7 +109070,10 @@ var require_addon = __commonJS({
|
|
|
108335
109070
|
"createApiKey": { "isAdmin": false },
|
|
108336
109071
|
"createUser": { "isAdmin": false }
|
|
108337
109072
|
},
|
|
108338
|
-
"vector-store": {
|
|
109073
|
+
"vector-store": {
|
|
109074
|
+
"declareIndex": { "metric": "cosine" },
|
|
109075
|
+
"scan": { "cursor": 0 }
|
|
109076
|
+
},
|
|
108339
109077
|
"zones": {
|
|
108340
109078
|
"addZone": { "zone": { "__nested__": {
|
|
108341
109079
|
"kind": "polygon",
|
|
@@ -114994,12 +115732,12 @@ var require_dist2 = __commonJS({
|
|
|
114994
115732
|
}
|
|
114995
115733
|
});
|
|
114996
115734
|
|
|
114997
|
-
// ../system/dist/manifest-
|
|
114998
|
-
var
|
|
114999
|
-
"../system/dist/manifest-
|
|
115735
|
+
// ../system/dist/manifest-system-deps-8boi90D9.js
|
|
115736
|
+
var require_manifest_system_deps_8boi90D9 = __commonJS({
|
|
115737
|
+
"../system/dist/manifest-system-deps-8boi90D9.js"(exports) {
|
|
115000
115738
|
"use strict";
|
|
115001
115739
|
var require_chunk = require_chunk_Cek0wNdY();
|
|
115002
|
-
|
|
115740
|
+
require_dist_Ck2jkBZk();
|
|
115003
115741
|
var node_crypto = __require("crypto");
|
|
115004
115742
|
node_crypto = require_chunk.__toESM(node_crypto);
|
|
115005
115743
|
var _camstack_types_node = require_node();
|
|
@@ -115702,14 +116440,14 @@ var require_manifest_python_deps_DVODn_qc = __commonJS({
|
|
|
115702
116440
|
dispose
|
|
115703
116441
|
};
|
|
115704
116442
|
}
|
|
115705
|
-
var execFileAsync$
|
|
116443
|
+
var execFileAsync$2 = (0, node_util.promisify)(node_child_process.execFile);
|
|
115706
116444
|
var DEFAULT_REGISTRY = "https://registry.npmjs.org";
|
|
115707
116445
|
function bootstrappedCliPath(cacheDir) {
|
|
115708
116446
|
return node_path.join(cacheDir, "package", "bin", "npm-cli.js");
|
|
115709
116447
|
}
|
|
115710
116448
|
async function defaultProbeSystemNpm() {
|
|
115711
116449
|
try {
|
|
115712
|
-
await execFileAsync$
|
|
116450
|
+
await execFileAsync$2("npm", ["--version"], { timeout: 15e3 });
|
|
115713
116451
|
return true;
|
|
115714
116452
|
} catch {
|
|
115715
116453
|
return false;
|
|
@@ -115727,7 +116465,7 @@ var require_manifest_python_deps_DVODn_qc = __commonJS({
|
|
|
115727
116465
|
await node_fs.promises.writeFile(destTgz, bytes);
|
|
115728
116466
|
}
|
|
115729
116467
|
async function defaultExtractTarball(tgzPath, destDir) {
|
|
115730
|
-
await execFileAsync$
|
|
116468
|
+
await execFileAsync$2("tar", [
|
|
115731
116469
|
"-xzf",
|
|
115732
116470
|
tgzPath,
|
|
115733
116471
|
"-C",
|
|
@@ -115755,7 +116493,7 @@ var require_manifest_python_deps_DVODn_qc = __commonJS({
|
|
|
115755
116493
|
registry: options.registry,
|
|
115756
116494
|
logger: options.logger
|
|
115757
116495
|
});
|
|
115758
|
-
return execFileAsync$
|
|
116496
|
+
return execFileAsync$2(invocation.command, [...invocation.argsPrefix, ...args], {
|
|
115759
116497
|
...options.cwd !== void 0 ? { cwd: options.cwd } : {},
|
|
115760
116498
|
timeout: options.timeout ?? 3e5
|
|
115761
116499
|
});
|
|
@@ -115813,7 +116551,7 @@ var require_manifest_python_deps_DVODn_qc = __commonJS({
|
|
|
115813
116551
|
const namedAddon = Object.values(mod).find(isAddonConstructor);
|
|
115814
116552
|
if (namedAddon) return namedAddon;
|
|
115815
116553
|
}
|
|
115816
|
-
var execFileAsync = (0, node_util.promisify)(node_child_process.execFile);
|
|
116554
|
+
var execFileAsync$1 = (0, node_util.promisify)(node_child_process.execFile);
|
|
115817
116555
|
function defaultNpmCacheDir() {
|
|
115818
116556
|
return node_path.join(node_os.tmpdir(), "camstack-npm-bootstrap");
|
|
115819
116557
|
}
|
|
@@ -116041,7 +116779,7 @@ var require_manifest_python_deps_DVODn_qc = __commonJS({
|
|
|
116041
116779
|
return;
|
|
116042
116780
|
}
|
|
116043
116781
|
logger.warn("@electron/rebuild not available \u2014 falling back to npx", { meta: { addonDir } });
|
|
116044
|
-
await execFileAsync("npx", [
|
|
116782
|
+
await execFileAsync$1("npx", [
|
|
116045
116783
|
"--yes",
|
|
116046
116784
|
"electron-rebuild",
|
|
116047
116785
|
"-m",
|
|
@@ -117244,11 +117982,11 @@ var require_manifest_python_deps_DVODn_qc = __commonJS({
|
|
|
117244
117982
|
});
|
|
117245
117983
|
}
|
|
117246
117984
|
};
|
|
117247
|
-
const
|
|
117985
|
+
const PROBE_TIMEOUT_MS2 = 3e4;
|
|
117248
117986
|
const runProbe = async () => {
|
|
117249
117987
|
if (typeof lifecycleHost.onProbe !== "function") return;
|
|
117250
117988
|
try {
|
|
117251
|
-
await Promise.race([lifecycleHost.onProbe(), new Promise((_, reject) => setTimeout(() => reject(/* @__PURE__ */ new Error(`onProbe timeout after ${
|
|
117989
|
+
await Promise.race([lifecycleHost.onProbe(), new Promise((_, reject) => setTimeout(() => reject(/* @__PURE__ */ new Error(`onProbe timeout after ${PROBE_TIMEOUT_MS2}ms`)), PROBE_TIMEOUT_MS2))]);
|
|
117252
117990
|
} catch (err) {
|
|
117253
117991
|
opts.logger.warn("device.onProbe() threw or timed out \u2014 continuing with stale flags (slice subscription will reconcile if probe lands later)", {
|
|
117254
117992
|
tags: {
|
|
@@ -122158,6 +122896,156 @@ var require_manifest_python_deps_DVODn_qc = __commonJS({
|
|
|
122158
122896
|
}
|
|
122159
122897
|
await deps.installPythonRequirements(reqAbs);
|
|
122160
122898
|
}
|
|
122899
|
+
var execFileAsync = (0, node_util.promisify)(node_child_process.execFile);
|
|
122900
|
+
var INSTALL_TIMEOUT_MS = 300 * 1e3;
|
|
122901
|
+
var PROBE_TIMEOUT_MS = 1e4;
|
|
122902
|
+
async function installManifestSystemDeps(declaration, logger, options = {}) {
|
|
122903
|
+
const deps = declaration.systemDependencies;
|
|
122904
|
+
if (!deps || deps.length === 0) return;
|
|
122905
|
+
const hasBinary = options.hasBinary ?? defaultHasBinary;
|
|
122906
|
+
const detectManager = options.detectManager ?? defaultDetectManager;
|
|
122907
|
+
const run = options.run ?? defaultRun;
|
|
122908
|
+
const platform = options.platform ?? process.platform;
|
|
122909
|
+
for (const dep of deps) try {
|
|
122910
|
+
await satisfyOne(dep, declaration.id, {
|
|
122911
|
+
hasBinary,
|
|
122912
|
+
detectManager,
|
|
122913
|
+
run,
|
|
122914
|
+
platform
|
|
122915
|
+
}, logger);
|
|
122916
|
+
} catch (err) {
|
|
122917
|
+
logger.warn("system dependency step failed", { meta: {
|
|
122918
|
+
addonId: declaration.id,
|
|
122919
|
+
binary: dep.binary,
|
|
122920
|
+
error: err instanceof Error ? err.message : String(err)
|
|
122921
|
+
} });
|
|
122922
|
+
}
|
|
122923
|
+
}
|
|
122924
|
+
async function satisfyOne(dep, addonId, rt, logger) {
|
|
122925
|
+
if (await rt.hasBinary(dep.binary)) {
|
|
122926
|
+
logger.debug("system dependency already present", { meta: {
|
|
122927
|
+
addonId,
|
|
122928
|
+
binary: dep.binary
|
|
122929
|
+
} });
|
|
122930
|
+
return;
|
|
122931
|
+
}
|
|
122932
|
+
const manager = await rt.detectManager();
|
|
122933
|
+
if (manager === null) {
|
|
122934
|
+
logger.warn("system dependency missing and no supported package manager on this host", { meta: {
|
|
122935
|
+
addonId,
|
|
122936
|
+
binary: dep.binary,
|
|
122937
|
+
platform: rt.platform,
|
|
122938
|
+
...dep.reason !== void 0 ? { reason: dep.reason } : {}
|
|
122939
|
+
} });
|
|
122940
|
+
return;
|
|
122941
|
+
}
|
|
122942
|
+
const packageName = dep.packages[manager];
|
|
122943
|
+
if (packageName === void 0 || packageName.length === 0) {
|
|
122944
|
+
logger.warn("system dependency missing and the addon declares no package for this manager", { meta: {
|
|
122945
|
+
addonId,
|
|
122946
|
+
binary: dep.binary,
|
|
122947
|
+
manager,
|
|
122948
|
+
...dep.reason !== void 0 ? { reason: dep.reason } : {}
|
|
122949
|
+
} });
|
|
122950
|
+
return;
|
|
122951
|
+
}
|
|
122952
|
+
const plan = planFor(manager, packageName);
|
|
122953
|
+
logger.info("installing system dependency", { meta: {
|
|
122954
|
+
addonId,
|
|
122955
|
+
binary: dep.binary,
|
|
122956
|
+
manager,
|
|
122957
|
+
package: packageName
|
|
122958
|
+
} });
|
|
122959
|
+
try {
|
|
122960
|
+
for (const [command, args] of plan.steps) await rt.run(command, args);
|
|
122961
|
+
} catch (err) {
|
|
122962
|
+
logger.warn("system dependency install failed \u2014 the addon loads, its capability must refuse", { meta: {
|
|
122963
|
+
addonId,
|
|
122964
|
+
binary: dep.binary,
|
|
122965
|
+
manager,
|
|
122966
|
+
package: packageName,
|
|
122967
|
+
error: err instanceof Error ? err.message : String(err),
|
|
122968
|
+
...dep.reason !== void 0 ? { reason: dep.reason } : {}
|
|
122969
|
+
} });
|
|
122970
|
+
return;
|
|
122971
|
+
}
|
|
122972
|
+
if (!await rt.hasBinary(dep.binary)) {
|
|
122973
|
+
logger.warn("system dependency installed but the binary still does not resolve", { meta: {
|
|
122974
|
+
addonId,
|
|
122975
|
+
binary: dep.binary,
|
|
122976
|
+
manager,
|
|
122977
|
+
package: packageName
|
|
122978
|
+
} });
|
|
122979
|
+
return;
|
|
122980
|
+
}
|
|
122981
|
+
logger.info("system dependency installed", { meta: {
|
|
122982
|
+
addonId,
|
|
122983
|
+
binary: dep.binary,
|
|
122984
|
+
manager,
|
|
122985
|
+
package: packageName
|
|
122986
|
+
} });
|
|
122987
|
+
}
|
|
122988
|
+
function planFor(manager, packageName) {
|
|
122989
|
+
switch (manager) {
|
|
122990
|
+
case "apt":
|
|
122991
|
+
return {
|
|
122992
|
+
manager,
|
|
122993
|
+
steps: [["apt-get", ["update"]], ["apt-get", [
|
|
122994
|
+
"install",
|
|
122995
|
+
"-y",
|
|
122996
|
+
"--no-install-recommends",
|
|
122997
|
+
packageName
|
|
122998
|
+
]]]
|
|
122999
|
+
};
|
|
123000
|
+
case "apk":
|
|
123001
|
+
return {
|
|
123002
|
+
manager,
|
|
123003
|
+
steps: [["apk", [
|
|
123004
|
+
"add",
|
|
123005
|
+
"--no-cache",
|
|
123006
|
+
packageName
|
|
123007
|
+
]]]
|
|
123008
|
+
};
|
|
123009
|
+
case "dnf":
|
|
123010
|
+
return {
|
|
123011
|
+
manager,
|
|
123012
|
+
steps: [["dnf", [
|
|
123013
|
+
"install",
|
|
123014
|
+
"-y",
|
|
123015
|
+
packageName
|
|
123016
|
+
]]]
|
|
123017
|
+
};
|
|
123018
|
+
case "brew":
|
|
123019
|
+
return {
|
|
123020
|
+
manager,
|
|
123021
|
+
steps: [["brew", ["install", packageName]]]
|
|
123022
|
+
};
|
|
123023
|
+
}
|
|
123024
|
+
}
|
|
123025
|
+
async function defaultHasBinary(binary) {
|
|
123026
|
+
try {
|
|
123027
|
+
await execFileAsync("command", ["-v", binary], {
|
|
123028
|
+
timeout: PROBE_TIMEOUT_MS,
|
|
123029
|
+
shell: process.platform === "win32" ? false : "/bin/sh"
|
|
123030
|
+
});
|
|
123031
|
+
return true;
|
|
123032
|
+
} catch {
|
|
123033
|
+
return false;
|
|
123034
|
+
}
|
|
123035
|
+
}
|
|
123036
|
+
async function defaultDetectManager() {
|
|
123037
|
+
const candidates = node_os.platform() === "darwin" ? ["brew"] : [
|
|
123038
|
+
"apt",
|
|
123039
|
+
"apk",
|
|
123040
|
+
"dnf",
|
|
123041
|
+
"brew"
|
|
123042
|
+
];
|
|
123043
|
+
for (const candidate of candidates) if (await defaultHasBinary(candidate === "apt" ? "apt-get" : candidate)) return candidate;
|
|
123044
|
+
return null;
|
|
123045
|
+
}
|
|
123046
|
+
async function defaultRun(command, args) {
|
|
123047
|
+
await execFileAsync(command, [...args], { timeout: INSTALL_TIMEOUT_MS });
|
|
123048
|
+
}
|
|
122161
123049
|
Object.defineProperty(exports, "AGENT_CAP_FWD_ACTION", {
|
|
122162
123050
|
enumerable: true,
|
|
122163
123051
|
get: function() {
|
|
@@ -122752,6 +123640,12 @@ var require_manifest_python_deps_DVODn_qc = __commonJS({
|
|
|
122752
123640
|
return installManifestPythonDeps;
|
|
122753
123641
|
}
|
|
122754
123642
|
});
|
|
123643
|
+
Object.defineProperty(exports, "installManifestSystemDeps", {
|
|
123644
|
+
enumerable: true,
|
|
123645
|
+
get: function() {
|
|
123646
|
+
return installManifestSystemDeps;
|
|
123647
|
+
}
|
|
123648
|
+
});
|
|
122755
123649
|
Object.defineProperty(exports, "ipcParentLink", {
|
|
122756
123650
|
enumerable: true,
|
|
122757
123651
|
get: function() {
|
|
@@ -126740,7 +127634,7 @@ var require_dist3 = __commonJS({
|
|
|
126740
127634
|
"use strict";
|
|
126741
127635
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
126742
127636
|
var require_chunk = require_chunk_Cek0wNdY();
|
|
126743
|
-
var require_dist10 =
|
|
127637
|
+
var require_dist10 = require_dist_Ck2jkBZk();
|
|
126744
127638
|
var require_builtins_alerts_alerts_addon = require_alerts_addon();
|
|
126745
127639
|
require_alerts();
|
|
126746
127640
|
var require_formatter = require_formatter_DqAKDlvN();
|
|
@@ -126766,7 +127660,7 @@ var require_dist3 = __commonJS({
|
|
|
126766
127660
|
var require_builtins_winston_logging_index = require_winston_logging();
|
|
126767
127661
|
var require_file_data_plane = require_file_data_plane_DO8KbxCe();
|
|
126768
127662
|
var require_tls$1 = require_tls_BxQlomxd();
|
|
126769
|
-
var
|
|
127663
|
+
var require_manifest_system_deps = require_manifest_system_deps_8boi90D9();
|
|
126770
127664
|
var require_resource_monitor = require_resource_monitor_CdnzxBLP();
|
|
126771
127665
|
var require_custom_action_registry = require_custom_action_registry_jY0NOZK8();
|
|
126772
127666
|
var zod = require_zod();
|
|
@@ -129235,7 +130129,7 @@ var require_dist3 = __commonJS({
|
|
|
129235
130129
|
if (!node_fs.existsSync(entryPath)) throw new Error(`Entry not found: ${entryPath}`);
|
|
129236
130130
|
const modUnknown = await importAddonModuleFresh(entryPath);
|
|
129237
130131
|
const mod = isRecord$2(modUnknown) ? modUnknown : {};
|
|
129238
|
-
const AddonClass =
|
|
130132
|
+
const AddonClass = require_manifest_system_deps.resolveAddonClass(mod);
|
|
129239
130133
|
if (!AddonClass) throw new Error(`No addon class in ${entryPath}`);
|
|
129240
130134
|
this.addons.set(declaration.id, {
|
|
129241
130135
|
declaration,
|
|
@@ -129251,7 +130145,7 @@ var require_dist3 = __commonJS({
|
|
|
129251
130145
|
async loadFromPath(addonId, modulePath, packageName, declaration, packageVersion = "0.0.0") {
|
|
129252
130146
|
const modUnknown = await importAddonModuleFresh(modulePath);
|
|
129253
130147
|
const mod = isRecord$2(modUnknown) ? modUnknown : {};
|
|
129254
|
-
const AddonClass =
|
|
130148
|
+
const AddonClass = require_manifest_system_deps.resolveAddonClass(mod);
|
|
129255
130149
|
if (!AddonClass) throw new Error(`Module ${modulePath} has no default export`);
|
|
129256
130150
|
this.addons.set(addonId, {
|
|
129257
130151
|
module: mod,
|
|
@@ -130154,7 +131048,7 @@ var require_dist3 = __commonJS({
|
|
|
130154
131048
|
await node_fs.promises.writeFile(node_path.join(targetDir, "package.json"), JSON.stringify(stripBundledDeps(pkgData), null, 2));
|
|
130155
131049
|
await copyDirRecursive(distDir, node_path.join(targetDir, "dist"));
|
|
130156
131050
|
await copyExtraFileDirs(pkgData, sourceDir, targetDir);
|
|
130157
|
-
|
|
131051
|
+
require_manifest_system_deps.copyBundledNativeModules(sourceDir, targetDir, this.logger);
|
|
130158
131052
|
await node_fs.promises.writeFile(node_path.join(targetDir, ".install-source"), "local");
|
|
130159
131053
|
const localPkgVersion = require_dist10.asString(pkgData.version, "0.0.0");
|
|
130160
131054
|
this.manifest.upsert(packageName, {
|
|
@@ -130163,7 +131057,7 @@ var require_dist3 = __commonJS({
|
|
|
130163
131057
|
});
|
|
130164
131058
|
const strippedDeps = stripBundledDeps(pkgData);
|
|
130165
131059
|
if (strippedDeps["dependencies"] && typeof strippedDeps["dependencies"] === "object" && Object.keys(strippedDeps["dependencies"]).length > 0) try {
|
|
130166
|
-
await
|
|
131060
|
+
await require_manifest_system_deps.runNpm([
|
|
130167
131061
|
"install",
|
|
130168
131062
|
"--omit=dev",
|
|
130169
131063
|
"--ignore-scripts=false"
|
|
@@ -130172,7 +131066,7 @@ var require_dist3 = __commonJS({
|
|
|
130172
131066
|
this.logger.warn(`${packageName} \u2014 npm install failed (continuing)`, { meta: { error: require_dist10.errMsg(err) } });
|
|
130173
131067
|
}
|
|
130174
131068
|
try {
|
|
130175
|
-
await
|
|
131069
|
+
await require_manifest_system_deps.installManifestNativeDeps(targetDir, pkgData, this.logger, this.registry, this.npmCacheDir);
|
|
130176
131070
|
} catch (err) {
|
|
130177
131071
|
this.logger.warn(`${packageName} \u2014 native deps install failed (continuing)`, { meta: { error: require_dist10.errMsg(err) } });
|
|
130178
131072
|
}
|
|
@@ -130208,7 +131102,7 @@ var require_dist3 = __commonJS({
|
|
|
130208
131102
|
tmpDir
|
|
130209
131103
|
];
|
|
130210
131104
|
if (this.registry) args.push("--registry", this.registry);
|
|
130211
|
-
const { stdout } = await
|
|
131105
|
+
const { stdout } = await require_manifest_system_deps.runNpm(args, this.npmRunOptions(tmpDir, 12e4));
|
|
130212
131106
|
const tgzFiles = node_fs.readdirSync(tmpDir).filter((f) => f.endsWith(".tgz"));
|
|
130213
131107
|
if (tgzFiles.length === 0) throw new Error(`npm pack produced no tgz. stdout: ${stdout.trim()}`);
|
|
130214
131108
|
return node_path.join(tmpDir, tgzFiles[0]);
|
|
@@ -130412,7 +131306,7 @@ var require_dist3 = __commonJS({
|
|
|
130412
131306
|
dependencies: depNames
|
|
130413
131307
|
} });
|
|
130414
131308
|
try {
|
|
130415
|
-
await
|
|
131309
|
+
await require_manifest_system_deps.runNpm([
|
|
130416
131310
|
"install",
|
|
130417
131311
|
"--omit=dev",
|
|
130418
131312
|
"--omit=peer",
|
|
@@ -130472,7 +131366,7 @@ var require_dist3 = __commonJS({
|
|
|
130472
131366
|
return;
|
|
130473
131367
|
}
|
|
130474
131368
|
try {
|
|
130475
|
-
await
|
|
131369
|
+
await require_manifest_system_deps.installManifestNativeDeps(pkgDir, pkgView.raw, this.logger, this.registry, this.npmCacheDir);
|
|
130476
131370
|
} catch (nativeErr) {
|
|
130477
131371
|
this.logger.error(`${packageName} \u2014 native dependency install FAILED; install ABORTED (a swapped-in copy would fail every load at the binding)`, { meta: {
|
|
130478
131372
|
pkgDir,
|
|
@@ -131016,7 +131910,7 @@ var require_dist3 = __commonJS({
|
|
|
131016
131910
|
if (!(!node_fs.existsSync(distDir) || this.isDistIncomplete(pkgData, sourceDir))) return;
|
|
131017
131911
|
this.logger.info(`${packageName} \u2014 building (dist/ missing or incomplete)`);
|
|
131018
131912
|
try {
|
|
131019
|
-
await
|
|
131913
|
+
await require_manifest_system_deps.runNpm(["run", "build"], this.npmRunOptions(sourceDir, 18e4));
|
|
131020
131914
|
} catch (err) {
|
|
131021
131915
|
const msg = require_dist10.errMsg(err);
|
|
131022
131916
|
this.logger.warn(`${packageName} auto-build failed`, { meta: { error: msg } });
|
|
@@ -205618,7 +206512,7 @@ globstar while`, t, d, e, f, m), this.matchOne(t.slice(d), e.slice(f), s)) retur
|
|
|
205618
206512
|
function createCoreCapService(options) {
|
|
205619
206513
|
const actions = {};
|
|
205620
206514
|
for (const { actionName, invoke } of options.actions) actions[actionName] = { handler: async (ctx) => {
|
|
205621
|
-
const raw =
|
|
206515
|
+
const raw = require_manifest_system_deps.deserializeTypedArrays(ctx.params);
|
|
205622
206516
|
return invoke(raw !== null && typeof raw === "object" && Object.keys(raw).length === 0 ? void 0 : raw, readOrigin(ctx));
|
|
205623
206517
|
} };
|
|
205624
206518
|
return {
|
|
@@ -206399,7 +207293,7 @@ globstar while`, t, d, e, f, m), this.matchOne(t.slice(d), e.slice(f), s)) retur
|
|
|
206399
207293
|
}
|
|
206400
207294
|
function emitRunnerEvent(category, sourceId, data) {
|
|
206401
207295
|
if (!capturedBroker) return;
|
|
206402
|
-
|
|
207296
|
+
require_manifest_system_deps.getBrokerEventBus(capturedBroker).emit(require_dist10.createEvent(category, {
|
|
206403
207297
|
type: "core",
|
|
206404
207298
|
id: sourceId,
|
|
206405
207299
|
nodeId: parentNodeId
|
|
@@ -206423,8 +207317,8 @@ globstar while`, t, d, e, f, m), this.matchOne(t.slice(d), e.slice(f), s)) retur
|
|
|
206423
207317
|
...applyRunnerNativeAllocator(process.env),
|
|
206424
207318
|
...env
|
|
206425
207319
|
};
|
|
206426
|
-
if (rssBudgetMb === void 0) delete childEnv[
|
|
206427
|
-
else childEnv[
|
|
207320
|
+
if (rssBudgetMb === void 0) delete childEnv[require_manifest_system_deps.RUNNER_RSS_BUDGET_ENV];
|
|
207321
|
+
else childEnv[require_manifest_system_deps.RUNNER_RSS_BUDGET_ENV] = String(rssBudgetMb);
|
|
206428
207322
|
const heapFlags = runnerHeapFlags(addons);
|
|
206429
207323
|
capturedBroker?.logger.info(`[${runnerId}] heap profile: ${heavy ? "heavy" : "light"} flags=[${heapFlags.join(" ")}] arenas=${childEnv["MALLOC_ARENA_MAX"] ?? "glibc-default"} vips=${childEnv["VIPS_CONCURRENCY"] ?? "sharp-default"}`);
|
|
206430
207324
|
const child = spawnFn(process.execPath, [...heapFlags, runnerPath], {
|
|
@@ -207157,12 +208051,12 @@ globstar while`, t, d, e, f, m), this.matchOne(t.slice(d), e.slice(f), s)) retur
|
|
|
207157
208051
|
return finalJob;
|
|
207158
208052
|
}
|
|
207159
208053
|
};
|
|
207160
|
-
exports.AGENT_CAP_FWD_ACTION =
|
|
207161
|
-
exports.AGENT_CAP_FWD_SERVICE =
|
|
208054
|
+
exports.AGENT_CAP_FWD_ACTION = require_manifest_system_deps.AGENT_CAP_FWD_ACTION;
|
|
208055
|
+
exports.AGENT_CAP_FWD_SERVICE = require_manifest_system_deps.AGENT_CAP_FWD_SERVICE;
|
|
207162
208056
|
exports.AGENT_READINESS_SERVICE_NAME = AGENT_READINESS_SERVICE_NAME;
|
|
207163
208057
|
exports.ALL_CAPABILITY_DEFINITIONS = require_dist10.ALL_CAPABILITY_DEFINITIONS;
|
|
207164
208058
|
exports.AddonApiFactory = AddonApiFactory;
|
|
207165
|
-
exports.AddonDepsManager =
|
|
208059
|
+
exports.AddonDepsManager = require_manifest_system_deps.AddonDepsManager;
|
|
207166
208060
|
exports.AddonEngineManager = AddonEngineManager;
|
|
207167
208061
|
exports.AddonHealthMonitor = AddonHealthMonitor;
|
|
207168
208062
|
exports.AddonInstaller = AddonInstaller;
|
|
@@ -207177,19 +208071,19 @@ globstar while`, t, d, e, f, m), this.matchOne(t.slice(d), e.slice(f), s)) retur
|
|
|
207177
208071
|
exports.CLUSTER_SECRET_MISMATCH_TYPE = CLUSTER_SECRET_MISMATCH_TYPE;
|
|
207178
208072
|
exports.CLUSTER_SECRET_REJECTED_EXIT_CODE = CLUSTER_SECRET_REJECTED_EXIT_CODE;
|
|
207179
208073
|
exports.CORE_CAP_SERVICE_NAME = CORE_CAP_SERVICE_NAME;
|
|
207180
|
-
exports.CapRouteError =
|
|
207181
|
-
exports.CapRouteResolver =
|
|
207182
|
-
exports.CapUsageRegistry =
|
|
207183
|
-
exports.CapabilityHandle =
|
|
208074
|
+
exports.CapRouteError = require_manifest_system_deps.CapRouteError;
|
|
208075
|
+
exports.CapRouteResolver = require_manifest_system_deps.CapRouteResolver;
|
|
208076
|
+
exports.CapUsageRegistry = require_manifest_system_deps.CapUsageRegistry;
|
|
208077
|
+
exports.CapabilityHandle = require_manifest_system_deps.CapabilityHandle;
|
|
207184
208078
|
exports.CapabilityRegistry = CapabilityRegistry;
|
|
207185
|
-
exports.CapabilityUnavailableError =
|
|
208079
|
+
exports.CapabilityUnavailableError = require_manifest_system_deps.CapabilityUnavailableError;
|
|
207186
208080
|
exports.ConfigManager = ConfigManager;
|
|
207187
208081
|
exports.ConfigStore = require_builtins_sqlite_storage_index.ConfigStore$1;
|
|
207188
208082
|
exports.ConsoleDestination = require_builtins_console_logging_index.ConsoleDestination$1;
|
|
207189
208083
|
exports.ConsoleLoggingAddon = require_builtins_console_logging_index.ConsoleLoggingAddon$1;
|
|
207190
208084
|
exports.CoreBlocksAddon = require_builtins_core_blocks_core_blocks_addon.CoreBlocksAddon;
|
|
207191
208085
|
exports.CustomActionRegistry = require_custom_action_registry.CustomActionRegistry;
|
|
207192
|
-
exports.DECISIVE_HEAP_SPACES =
|
|
208086
|
+
exports.DECISIVE_HEAP_SPACES = require_manifest_system_deps.DECISIVE_HEAP_SPACES;
|
|
207193
208087
|
exports.DEFAULT_DATA_PATH = DEFAULT_DATA_PATH;
|
|
207194
208088
|
exports.DEFAULT_LAN_HTTP_PORT = require_tls$1.DEFAULT_LAN_HTTP_PORT;
|
|
207195
208089
|
exports.DEFAULT_LOG_LEVEL = DEFAULT_LOG_LEVEL;
|
|
@@ -207197,33 +208091,33 @@ globstar while`, t, d, e, f, m), this.matchOne(t.slice(d), e.slice(f), s)) retur
|
|
|
207197
208091
|
exports.DEVICE_STATUS_METHOD = require_dist10.DEVICE_STATUS_METHOD;
|
|
207198
208092
|
exports.DataPlaneRegistry = DataPlaneRegistry;
|
|
207199
208093
|
exports.DeviceManagerAddon = require_builtins_device_manager_device_manager_addon.DeviceManagerAddon;
|
|
207200
|
-
exports.DeviceRegistry =
|
|
208094
|
+
exports.DeviceRegistry = require_manifest_system_deps.DeviceRegistry;
|
|
207201
208095
|
exports.DeviceStore = require_builtins_sqlite_storage_index.DeviceStore$1;
|
|
207202
|
-
exports.EMPTY_SOCKET_DIRECTION =
|
|
207203
|
-
exports.EMPTY_SOCKET_PLANE_BASELINE =
|
|
207204
|
-
exports.EVENT_PLANE_TOP_N =
|
|
207205
|
-
exports.EVENT_TOPIC_PREFIX =
|
|
208096
|
+
exports.EMPTY_SOCKET_DIRECTION = require_manifest_system_deps.EMPTY_SOCKET_DIRECTION;
|
|
208097
|
+
exports.EMPTY_SOCKET_PLANE_BASELINE = require_manifest_system_deps.EMPTY_SOCKET_PLANE_BASELINE;
|
|
208098
|
+
exports.EVENT_PLANE_TOP_N = require_manifest_system_deps.EVENT_PLANE_TOP_N;
|
|
208099
|
+
exports.EVENT_TOPIC_PREFIX = require_manifest_system_deps.EVENT_TOPIC_PREFIX;
|
|
207206
208100
|
exports.EngineManagerResolver = EngineManagerResolver;
|
|
207207
208101
|
exports.EventBus = EventBus;
|
|
207208
208102
|
exports.FeatureManager = FeatureManager;
|
|
207209
208103
|
exports.FilesystemStorageAddon = require_builtins_sqlite_storage_filesystem_storage_addon.FilesystemStorageAddon;
|
|
207210
208104
|
exports.FilesystemStorageProvider = require_builtins_sqlite_storage_filesystem_storage_addon.FilesystemStorageProvider;
|
|
207211
|
-
exports.FrameDecoder =
|
|
208105
|
+
exports.FrameDecoder = require_manifest_system_deps.FrameDecoder;
|
|
207212
208106
|
exports.FsStorageBackend = FsStorageBackend;
|
|
207213
208107
|
exports.HEALTH_MONITOR_GRACE_PERIOD_MS = HEALTH_MONITOR_GRACE_PERIOD_MS;
|
|
207214
208108
|
exports.HEALTH_MONITOR_RETRY_INTERVALS_MS = HEALTH_MONITOR_RETRY_INTERVALS_MS;
|
|
207215
208109
|
exports.HEALTH_MONITOR_TICK_MS = HEALTH_MONITOR_TICK_MS;
|
|
207216
|
-
exports.HEAP_RECLAIM_MIN_INTERVAL_MS =
|
|
207217
|
-
exports.HEAP_RECLAIM_STEADY_STATE_INTERVAL_MS =
|
|
207218
|
-
exports.HEAP_RECLAIM_TRIGGER_MB =
|
|
207219
|
-
exports.HEAP_SPACE_REPORT_MIN_MB =
|
|
207220
|
-
exports.HEAP_WATCH_INTERVAL_MS =
|
|
207221
|
-
exports.HEAP_WATCH_WARN_RATIO =
|
|
207222
|
-
exports.HUB_CAP_FWD_ACTION =
|
|
207223
|
-
exports.HUB_CAP_FWD_SERVICE =
|
|
207224
|
-
exports.HUB_MAIN_HEAP_WATCH_LABEL =
|
|
207225
|
-
exports.HUB_MAIN_RSS_BUDGET_MB =
|
|
207226
|
-
exports.HUB_RSS_BUDGET_ENV =
|
|
208110
|
+
exports.HEAP_RECLAIM_MIN_INTERVAL_MS = require_manifest_system_deps.HEAP_RECLAIM_MIN_INTERVAL_MS;
|
|
208111
|
+
exports.HEAP_RECLAIM_STEADY_STATE_INTERVAL_MS = require_manifest_system_deps.HEAP_RECLAIM_STEADY_STATE_INTERVAL_MS;
|
|
208112
|
+
exports.HEAP_RECLAIM_TRIGGER_MB = require_manifest_system_deps.HEAP_RECLAIM_TRIGGER_MB;
|
|
208113
|
+
exports.HEAP_SPACE_REPORT_MIN_MB = require_manifest_system_deps.HEAP_SPACE_REPORT_MIN_MB;
|
|
208114
|
+
exports.HEAP_WATCH_INTERVAL_MS = require_manifest_system_deps.HEAP_WATCH_INTERVAL_MS;
|
|
208115
|
+
exports.HEAP_WATCH_WARN_RATIO = require_manifest_system_deps.HEAP_WATCH_WARN_RATIO;
|
|
208116
|
+
exports.HUB_CAP_FWD_ACTION = require_manifest_system_deps.HUB_CAP_FWD_ACTION;
|
|
208117
|
+
exports.HUB_CAP_FWD_SERVICE = require_manifest_system_deps.HUB_CAP_FWD_SERVICE;
|
|
208118
|
+
exports.HUB_MAIN_HEAP_WATCH_LABEL = require_manifest_system_deps.HUB_MAIN_HEAP_WATCH_LABEL;
|
|
208119
|
+
exports.HUB_MAIN_RSS_BUDGET_MB = require_manifest_system_deps.HUB_MAIN_RSS_BUDGET_MB;
|
|
208120
|
+
exports.HUB_RSS_BUDGET_ENV = require_manifest_system_deps.HUB_RSS_BUDGET_ENV;
|
|
207227
208121
|
exports.HubForwarderAddon = require_builtins_hub_forwarder_index.HubForwarderAddon$1;
|
|
207228
208122
|
exports.HubForwarderDestination = require_builtins_hub_forwarder_index.HubForwarderDestination$1;
|
|
207229
208123
|
exports.HubLogForwarder = HubLogForwarder;
|
|
@@ -207236,8 +208130,8 @@ globstar while`, t, d, e, f, m), this.matchOne(t.slice(d), e.slice(f), s)) retur
|
|
|
207236
208130
|
exports.LifecycleStateMachine = LifecycleStateMachine;
|
|
207237
208131
|
exports.LivenessMonitorAddon = require_builtins_liveness_monitor_liveness_monitor_addon.LivenessMonitorAddon;
|
|
207238
208132
|
exports.LocalAuthAddon = require_builtins_local_auth_local_auth_addon.LocalAuthAddon;
|
|
207239
|
-
exports.LocalChildClient =
|
|
207240
|
-
exports.LocalChildRegistry =
|
|
208133
|
+
exports.LocalChildClient = require_manifest_system_deps.LocalChildClient;
|
|
208134
|
+
exports.LocalChildRegistry = require_manifest_system_deps.LocalChildRegistry;
|
|
207241
208135
|
exports.LogManager = LogManager;
|
|
207242
208136
|
exports.LogRingBuffer = LogRingBuffer;
|
|
207243
208137
|
exports.LoggingGate = LoggingGate;
|
|
@@ -207246,7 +208140,7 @@ globstar while`, t, d, e, f, m), this.matchOne(t.slice(d), e.slice(f), s)) retur
|
|
|
207246
208140
|
exports.MAX_LEAF_VALIDITY_DAYS = require_tls$1.MAX_LEAF_VALIDITY_DAYS;
|
|
207247
208141
|
exports.METHOD_ACCESS_MAP = require_dist10.METHOD_ACCESS_MAP;
|
|
207248
208142
|
exports.ModelDownloadService = require_file_data_plane.ModelDownloadService;
|
|
207249
|
-
exports.NATIVE_PROVIDER_SERVICE_INFIX =
|
|
208143
|
+
exports.NATIVE_PROVIDER_SERVICE_INFIX = require_manifest_system_deps.NATIVE_PROVIDER_SERVICE_INFIX;
|
|
207250
208144
|
exports.NATIVE_SCAN_DEPTH = NATIVE_SCAN_DEPTH;
|
|
207251
208145
|
exports.NativeMetricsAddon = require_builtins_native_metrics_native_metrics_addon.default;
|
|
207252
208146
|
exports.NativeMetricsProvider = require_builtins_native_metrics_native_metrics_addon.NativeMetricsProvider;
|
|
@@ -207263,21 +208157,21 @@ globstar while`, t, d, e, f, m), this.matchOne(t.slice(d), e.slice(f), s)) retur
|
|
|
207263
208157
|
exports.PythonEnvManager = PythonEnvManager;
|
|
207264
208158
|
exports.QUARANTINE_DIRNAME = QUARANTINE_DIRNAME;
|
|
207265
208159
|
exports.RESTART_MARKER_FILE = RESTART_MARKER_FILE;
|
|
207266
|
-
exports.RSS_BUDGET_REANNOUNCE_MIN_MS =
|
|
207267
|
-
exports.RSS_BUDGET_RELEASE_RATIO =
|
|
207268
|
-
exports.RUNNER_HEAP_SNAPSHOT_ENV =
|
|
207269
|
-
exports.RUNNER_HEAP_WATCH_INTERVAL_MS =
|
|
207270
|
-
exports.RUNNER_RSS_BUDGET_ENV =
|
|
208160
|
+
exports.RSS_BUDGET_REANNOUNCE_MIN_MS = require_manifest_system_deps.RSS_BUDGET_REANNOUNCE_MIN_MS;
|
|
208161
|
+
exports.RSS_BUDGET_RELEASE_RATIO = require_manifest_system_deps.RSS_BUDGET_RELEASE_RATIO;
|
|
208162
|
+
exports.RUNNER_HEAP_SNAPSHOT_ENV = require_manifest_system_deps.RUNNER_HEAP_SNAPSHOT_ENV;
|
|
208163
|
+
exports.RUNNER_HEAP_WATCH_INTERVAL_MS = require_manifest_system_deps.RUNNER_HEAP_WATCH_INTERVAL_MS;
|
|
208164
|
+
exports.RUNNER_RSS_BUDGET_ENV = require_manifest_system_deps.RUNNER_RSS_BUDGET_ENV;
|
|
207271
208165
|
exports.RUNTIME_DEFAULTS = require_dist10.RUNTIME_DEFAULTS;
|
|
207272
208166
|
exports.ReadinessRegistry = require_dist10.ReadinessRegistry;
|
|
207273
208167
|
exports.ReadinessTimeoutError = require_dist10.ReadinessTimeoutError;
|
|
207274
208168
|
exports.ReplEngine = ReplEngine;
|
|
207275
208169
|
exports.RingBuffer = RingBuffer;
|
|
207276
208170
|
exports.SERVER_AUTH_OID = require_tls$1.SERVER_AUTH_OID;
|
|
207277
|
-
exports.SOCKET_PLANE_TOP_N =
|
|
208171
|
+
exports.SOCKET_PLANE_TOP_N = require_manifest_system_deps.SOCKET_PLANE_TOP_N;
|
|
207278
208172
|
exports.ScopedLogger = ScopedLogger;
|
|
207279
208173
|
exports.ScopedTokenManager = require_builtins_local_auth_local_auth_addon.ScopedTokenManager;
|
|
207280
|
-
exports.SocketChannel =
|
|
208174
|
+
exports.SocketChannel = require_manifest_system_deps.SocketChannel;
|
|
207281
208175
|
exports.SqliteSettingsAddon = require_builtins_sqlite_storage_sqlite_settings_addon.SqliteSettingsAddon;
|
|
207282
208176
|
exports.SqliteSettingsBackend = require_builtins_sqlite_storage_sqlite_settings_addon.SqliteSettingsBackend;
|
|
207283
208177
|
exports.StagingArea = StagingArea;
|
|
@@ -207289,23 +208183,23 @@ globstar while`, t, d, e, f, m), this.matchOne(t.slice(d), e.slice(f), s)) retur
|
|
|
207289
208183
|
exports.SystemEventBus = SystemEventBus;
|
|
207290
208184
|
exports.TRADITIONAL_NATIVE_PACKAGES = TRADITIONAL_NATIVE_PACKAGES;
|
|
207291
208185
|
exports.ToastService = ToastService;
|
|
207292
|
-
exports.UDS_NO_ROUTE_PREFIX =
|
|
207293
|
-
exports.UdsLocalTransportClient =
|
|
207294
|
-
exports.UdsLocalTransportServer =
|
|
208186
|
+
exports.UDS_NO_ROUTE_PREFIX = require_manifest_system_deps.UDS_NO_ROUTE_PREFIX;
|
|
208187
|
+
exports.UdsLocalTransportClient = require_manifest_system_deps.UdsLocalTransportClient;
|
|
208188
|
+
exports.UdsLocalTransportServer = require_manifest_system_deps.UdsLocalTransportServer;
|
|
207295
208189
|
exports.UserManager = require_builtins_local_auth_local_auth_addon.UserManager;
|
|
207296
208190
|
exports.WinstonDestination = require_builtins_winston_logging_index.WinstonDestination$1;
|
|
207297
208191
|
exports.WinstonLoggingAddon = require_builtins_winston_logging_index.WinstonLoggingAddon$1;
|
|
207298
|
-
exports.ZERO_LOOP_DELAY =
|
|
207299
|
-
exports.__resetCapUsageRegistryForTests =
|
|
208192
|
+
exports.ZERO_LOOP_DELAY = require_manifest_system_deps.ZERO_LOOP_DELAY;
|
|
208193
|
+
exports.__resetCapUsageRegistryForTests = require_manifest_system_deps.__resetCapUsageRegistryForTests;
|
|
207300
208194
|
exports.__resetLoggingGateForTests = __resetLoggingGateForTests;
|
|
207301
|
-
exports.adaptBrokerToCluster =
|
|
208195
|
+
exports.adaptBrokerToCluster = require_manifest_system_deps.adaptBrokerToCluster;
|
|
207302
208196
|
exports.addonSettingsCapability = require_dist10.addonSettingsCapability;
|
|
207303
208197
|
exports.allFamiliesListenHost = require_tls$1.allFamiliesListenHost;
|
|
207304
208198
|
exports.applyLanHttp = require_tls$1.applyLanHttp;
|
|
207305
208199
|
exports.bindPendingLanHttp = require_tls$1.bindPendingLanHttp;
|
|
207306
208200
|
exports.bootstrapSchema = bootstrapSchema;
|
|
207307
|
-
exports.brokerCallForCap =
|
|
207308
|
-
exports.brokerTransportLink =
|
|
208201
|
+
exports.brokerCallForCap = require_manifest_system_deps.brokerCallForCap;
|
|
208202
|
+
exports.brokerTransportLink = require_manifest_system_deps.brokerTransportLink;
|
|
207309
208203
|
Object.defineProperty(exports, "buildBinaryPath", {
|
|
207310
208204
|
enumerable: true,
|
|
207311
208205
|
get: function() {
|
|
@@ -207313,70 +208207,70 @@ globstar while`, t, d, e, f, m), this.matchOne(t.slice(d), e.slice(f), s)) retur
|
|
|
207313
208207
|
}
|
|
207314
208208
|
});
|
|
207315
208209
|
exports.buildCapRouters = buildCapRouters;
|
|
207316
|
-
exports.buildHeapSample =
|
|
207317
|
-
exports.buildLinkChain =
|
|
207318
|
-
exports.buildNativeCapProxy =
|
|
208210
|
+
exports.buildHeapSample = require_manifest_system_deps.buildHeapSample;
|
|
208211
|
+
exports.buildLinkChain = require_manifest_system_deps.buildLinkChain;
|
|
208212
|
+
exports.buildNativeCapProxy = require_manifest_system_deps.buildNativeCapProxy;
|
|
207319
208213
|
exports.buildNodeManifest = buildNodeManifest;
|
|
207320
208214
|
exports.buildStorageLocationRegistry = require_builtins_storage_orchestrator_storage_orchestrator_addon.buildStorageLocationRegistry;
|
|
207321
|
-
exports.buildUdsNativeCapProxy =
|
|
208215
|
+
exports.buildUdsNativeCapProxy = require_manifest_system_deps.buildUdsNativeCapProxy;
|
|
207322
208216
|
exports.builderMountedCapNames = builderMountedCapNames;
|
|
207323
208217
|
exports.callRegisterNodeWithRetry = callRegisterNodeWithRetry;
|
|
207324
|
-
exports.callWithServiceDiscovery =
|
|
208218
|
+
exports.callWithServiceDiscovery = require_manifest_system_deps.callWithServiceDiscovery;
|
|
207325
208219
|
exports.canServeDataPlane = canServeDataPlane;
|
|
207326
|
-
exports.capActionName =
|
|
207327
|
-
exports.capActionSuffix =
|
|
207328
|
-
exports.capBareAction =
|
|
207329
|
-
exports.capServiceName =
|
|
208220
|
+
exports.capActionName = require_manifest_system_deps.capActionName;
|
|
208221
|
+
exports.capActionSuffix = require_manifest_system_deps.capActionSuffix;
|
|
208222
|
+
exports.capBareAction = require_manifest_system_deps.capBareAction;
|
|
208223
|
+
exports.capServiceName = require_manifest_system_deps.capServiceName;
|
|
207330
208224
|
exports.classifyAddonDir = classifyAddonDir;
|
|
207331
|
-
exports.classifyCapRoute =
|
|
208225
|
+
exports.classifyCapRoute = require_manifest_system_deps.classifyCapRoute;
|
|
207332
208226
|
exports.clearPendingRestart = clearPendingRestart;
|
|
207333
208227
|
exports.closeLanHttp = require_tls$1.closeLanHttp;
|
|
207334
|
-
exports.clusterEventTopic =
|
|
208228
|
+
exports.clusterEventTopic = require_manifest_system_deps.clusterEventTopic;
|
|
207335
208229
|
exports.clusterSecretMatches = clusterSecretMatches;
|
|
207336
208230
|
exports.collectCertIdentity = require_tls$1.collectCertIdentity;
|
|
207337
208231
|
exports.collectModelFiles = require_file_data_plane.collectModelFiles;
|
|
207338
208232
|
exports.contentTypeFor = require_file_data_plane.contentTypeFor;
|
|
207339
208233
|
exports.copyDirRecursive = copyDirRecursive;
|
|
207340
208234
|
exports.copyExtraFileDirs = copyExtraFileDirs;
|
|
207341
|
-
exports.createAddonContext =
|
|
207342
|
-
exports.createAddonDataPlaneFacility =
|
|
207343
|
-
exports.createAddonService =
|
|
208235
|
+
exports.createAddonContext = require_manifest_system_deps.createAddonContext;
|
|
208236
|
+
exports.createAddonDataPlaneFacility = require_manifest_system_deps.createAddonDataPlaneFacility;
|
|
208237
|
+
exports.createAddonService = require_manifest_system_deps.createAddonService;
|
|
207344
208238
|
exports.createAuthenticatedFileServer = require_file_data_plane.createAuthenticatedFileServer;
|
|
207345
208239
|
exports.createBroker = createBroker2;
|
|
207346
|
-
exports.createBrokerDeviceManagerApi =
|
|
208240
|
+
exports.createBrokerDeviceManagerApi = require_manifest_system_deps.createBrokerDeviceManagerApi;
|
|
207347
208241
|
exports.createCoreCapService = createCoreCapService;
|
|
207348
|
-
exports.createDeferredHeapWatchSink =
|
|
208242
|
+
exports.createDeferredHeapWatchSink = require_manifest_system_deps.createDeferredHeapWatchSink;
|
|
207349
208243
|
exports.createDoorSettingsView = createDoorSettingsView;
|
|
207350
|
-
exports.createEventPlaneMeter =
|
|
207351
|
-
exports.createEventPlaneReader =
|
|
208244
|
+
exports.createEventPlaneMeter = require_manifest_system_deps.createEventPlaneMeter;
|
|
208245
|
+
exports.createEventPlaneReader = require_manifest_system_deps.createEventPlaneReader;
|
|
207352
208246
|
exports.createFileDataPlaneHandler = require_file_data_plane.createFileDataPlaneHandler;
|
|
207353
|
-
exports.createHubCapForwardService =
|
|
208247
|
+
exports.createHubCapForwardService = require_manifest_system_deps.createHubCapForwardService;
|
|
207354
208248
|
exports.createHubService = createHubService;
|
|
207355
|
-
exports.createKernelHwAccel =
|
|
207356
|
-
exports.createLocalTransport =
|
|
207357
|
-
exports.createLoopDelayMeter =
|
|
207358
|
-
exports.createParentUnownedCallHandler =
|
|
208249
|
+
exports.createKernelHwAccel = require_manifest_system_deps.createKernelHwAccel;
|
|
208250
|
+
exports.createLocalTransport = require_manifest_system_deps.createLocalTransport;
|
|
208251
|
+
exports.createLoopDelayMeter = require_manifest_system_deps.createLoopDelayMeter;
|
|
208252
|
+
exports.createParentUnownedCallHandler = require_manifest_system_deps.createParentUnownedCallHandler;
|
|
207359
208253
|
exports.createProcessService = createProcessService;
|
|
207360
208254
|
exports.createReadinessService = createReadinessService;
|
|
207361
208255
|
exports.createReadinessServiceForRegistry = createReadinessServiceForRegistry;
|
|
207362
208256
|
exports.createScopedProcessManager = createScopedProcessManager;
|
|
207363
|
-
exports.createSocketDirectionCounters =
|
|
207364
|
-
exports.createSocketPlaneMeter =
|
|
207365
|
-
exports.createSocketPlaneReader =
|
|
208257
|
+
exports.createSocketDirectionCounters = require_manifest_system_deps.createSocketDirectionCounters;
|
|
208258
|
+
exports.createSocketPlaneMeter = require_manifest_system_deps.createSocketPlaneMeter;
|
|
208259
|
+
exports.createSocketPlaneReader = require_manifest_system_deps.createSocketPlaneReader;
|
|
207366
208260
|
exports.createStreamProbeBrokerService = createStreamProbeBrokerService;
|
|
207367
|
-
exports.createUdsAddonContext =
|
|
207368
|
-
exports.createUdsEventBridge =
|
|
207369
|
-
exports.createUdsEventBus =
|
|
207370
|
-
exports.createUdsLogger =
|
|
207371
|
-
exports.createUdsLoggerWithControl =
|
|
207372
|
-
exports.createV8Reclaimer =
|
|
208261
|
+
exports.createUdsAddonContext = require_manifest_system_deps.createUdsAddonContext;
|
|
208262
|
+
exports.createUdsEventBridge = require_manifest_system_deps.createUdsEventBridge;
|
|
208263
|
+
exports.createUdsEventBus = require_manifest_system_deps.createUdsEventBus;
|
|
208264
|
+
exports.createUdsLogger = require_manifest_system_deps.createUdsLogger;
|
|
208265
|
+
exports.createUdsLoggerWithControl = require_manifest_system_deps.createUdsLoggerWithControl;
|
|
208266
|
+
exports.createV8Reclaimer = require_manifest_system_deps.createV8Reclaimer;
|
|
207373
208267
|
exports.deleteModelFromDisk = require_file_data_plane.deleteModelFromDisk;
|
|
207374
208268
|
exports.deriveAgentListenPort = deriveAgentListenPort;
|
|
207375
208269
|
exports.describeProviderKindDrift = describeProviderKindDrift;
|
|
207376
|
-
exports.describeRss =
|
|
208270
|
+
exports.describeRss = require_manifest_system_deps.describeRss;
|
|
207377
208271
|
exports.detectWorkspacePackagesDir = detectWorkspacePackagesDir;
|
|
207378
|
-
exports.diffEventPlane =
|
|
207379
|
-
exports.diffSocketPlane =
|
|
208272
|
+
exports.diffEventPlane = require_manifest_system_deps.diffEventPlane;
|
|
208273
|
+
exports.diffSocketPlane = require_manifest_system_deps.diffSocketPlane;
|
|
207380
208274
|
Object.defineProperty(exports, "downloadBinary", {
|
|
207381
208275
|
enumerable: true,
|
|
207382
208276
|
get: function() {
|
|
@@ -207386,8 +208280,8 @@ globstar while`, t, d, e, f, m), this.matchOne(t.slice(d), e.slice(f), s)) retur
|
|
|
207386
208280
|
exports.downloadFile = require_file_data_plane.downloadFile;
|
|
207387
208281
|
exports.downloadModel = require_file_data_plane.downloadModel;
|
|
207388
208282
|
exports.emitDownForOwnedCaps = require_dist10.emitDownForOwnedCaps;
|
|
207389
|
-
exports.emitHeapDiagnosticReport =
|
|
207390
|
-
exports.encodeFrame =
|
|
208283
|
+
exports.emitHeapDiagnosticReport = require_manifest_system_deps.emitHeapDiagnosticReport;
|
|
208284
|
+
exports.encodeFrame = require_manifest_system_deps.encodeFrame;
|
|
207391
208285
|
exports.ensureAddonNativePrebuilds = ensureAddonNativePrebuilds;
|
|
207392
208286
|
Object.defineProperty(exports, "ensureBinary", {
|
|
207393
208287
|
enumerable: true,
|
|
@@ -207421,12 +208315,12 @@ globstar while`, t, d, e, f, m), this.matchOne(t.slice(d), e.slice(f), s)) retur
|
|
|
207421
208315
|
return _camstack_types_node.findInPath;
|
|
207422
208316
|
}
|
|
207423
208317
|
});
|
|
207424
|
-
exports.formatEventPlane =
|
|
207425
|
-
exports.formatHeapSpaces =
|
|
208318
|
+
exports.formatEventPlane = require_manifest_system_deps.formatEventPlane;
|
|
208319
|
+
exports.formatHeapSpaces = require_manifest_system_deps.formatHeapSpaces;
|
|
207426
208320
|
exports.formatLogLine = require_formatter.formatLogLine;
|
|
207427
|
-
exports.formatSocketPlane =
|
|
207428
|
-
exports.getBrokerEventBus =
|
|
207429
|
-
exports.getCapUsageRegistry =
|
|
208321
|
+
exports.formatSocketPlane = require_manifest_system_deps.formatSocketPlane;
|
|
208322
|
+
exports.getBrokerEventBus = require_manifest_system_deps.getBrokerEventBus;
|
|
208323
|
+
exports.getCapUsageRegistry = require_manifest_system_deps.getCapUsageRegistry;
|
|
207430
208324
|
Object.defineProperty(exports, "getFfmpegDownloadUrl", {
|
|
207431
208325
|
enumerable: true,
|
|
207432
208326
|
get: function() {
|
|
@@ -207435,9 +208329,9 @@ globstar while`, t, d, e, f, m), this.matchOne(t.slice(d), e.slice(f), s)) retur
|
|
|
207435
208329
|
});
|
|
207436
208330
|
exports.getLoggingGate = getLoggingGate;
|
|
207437
208331
|
exports.getModelFilePath = require_file_data_plane.getModelFilePath;
|
|
207438
|
-
exports.getMoleculerEventStats =
|
|
207439
|
-
exports.getOrInitReadinessRegistry =
|
|
207440
|
-
exports.getOrInitReadinessRegistryForClient =
|
|
208332
|
+
exports.getMoleculerEventStats = require_manifest_system_deps.getMoleculerEventStats;
|
|
208333
|
+
exports.getOrInitReadinessRegistry = require_manifest_system_deps.getOrInitReadinessRegistry;
|
|
208334
|
+
exports.getOrInitReadinessRegistryForClient = require_manifest_system_deps.getOrInitReadinessRegistryForClient;
|
|
207441
208335
|
exports.getPidStats = require_resource_monitor.getPidStats;
|
|
207442
208336
|
Object.defineProperty(exports, "getPlatformInfo", {
|
|
207443
208337
|
enumerable: true,
|
|
@@ -207453,14 +208347,15 @@ globstar while`, t, d, e, f, m), this.matchOne(t.slice(d), e.slice(f), s)) retur
|
|
|
207453
208347
|
});
|
|
207454
208348
|
exports.getRestartMarkerPath = getRestartMarkerPath;
|
|
207455
208349
|
exports.getSinglePidStats = require_resource_monitor.getSinglePidStats;
|
|
207456
|
-
exports.getWorkerDeviceRegistry =
|
|
208350
|
+
exports.getWorkerDeviceRegistry = require_manifest_system_deps.getWorkerDeviceRegistry;
|
|
207457
208351
|
exports.hasDotNode = hasDotNode;
|
|
207458
208352
|
exports.hashClusterSecret = hashClusterSecret;
|
|
207459
|
-
exports.heapSnapshotAuthorised =
|
|
207460
|
-
exports.heapSpaceField =
|
|
207461
|
-
exports.hubMainRssBudget =
|
|
207462
|
-
exports.installManifestNativeDeps =
|
|
207463
|
-
exports.installManifestPythonDeps =
|
|
208353
|
+
exports.heapSnapshotAuthorised = require_manifest_system_deps.heapSnapshotAuthorised;
|
|
208354
|
+
exports.heapSpaceField = require_manifest_system_deps.heapSpaceField;
|
|
208355
|
+
exports.hubMainRssBudget = require_manifest_system_deps.hubMainRssBudget;
|
|
208356
|
+
exports.installManifestNativeDeps = require_manifest_system_deps.installManifestNativeDeps;
|
|
208357
|
+
exports.installManifestPythonDeps = require_manifest_system_deps.installManifestPythonDeps;
|
|
208358
|
+
exports.installManifestSystemDeps = require_manifest_system_deps.installManifestSystemDeps;
|
|
207464
208359
|
exports.installPackageFromNpm = installPackageFromNpm;
|
|
207465
208360
|
Object.defineProperty(exports, "installPythonPackages", {
|
|
207466
208361
|
enumerable: true,
|
|
@@ -207474,7 +208369,7 @@ globstar while`, t, d, e, f, m), this.matchOne(t.slice(d), e.slice(f), s)) retur
|
|
|
207474
208369
|
return _camstack_types_node.installPythonRequirements;
|
|
207475
208370
|
}
|
|
207476
208371
|
});
|
|
207477
|
-
exports.ipcParentLink =
|
|
208372
|
+
exports.ipcParentLink = require_manifest_system_deps.ipcParentLink;
|
|
207478
208373
|
exports.isAddonDeploySource = isAddonDeploySource;
|
|
207479
208374
|
exports.isArrayOutputSchema = require_dist10.isArrayOutputSchema;
|
|
207480
208375
|
exports.isClusterSecretMismatchError = isClusterSecretMismatchError;
|
|
@@ -207484,55 +208379,55 @@ globstar while`, t, d, e, f, m), this.matchOne(t.slice(d), e.slice(f), s)) retur
|
|
|
207484
208379
|
exports.isSourceNewer = isSourceNewer;
|
|
207485
208380
|
exports.isolatedBuiltinPhase = isolatedBuiltinPhase;
|
|
207486
208381
|
exports.loadTlsCert = require_tls$1.loadTlsCert;
|
|
207487
|
-
exports.localEndpointPath =
|
|
207488
|
-
exports.localProviderLink =
|
|
207489
|
-
exports.mountNativeCapService =
|
|
207490
|
-
exports.nextRssBudgetState =
|
|
207491
|
-
exports.parseCapAction =
|
|
208382
|
+
exports.localEndpointPath = require_manifest_system_deps.localEndpointPath;
|
|
208383
|
+
exports.localProviderLink = require_manifest_system_deps.localProviderLink;
|
|
208384
|
+
exports.mountNativeCapService = require_manifest_system_deps.mountNativeCapService;
|
|
208385
|
+
exports.nextRssBudgetState = require_manifest_system_deps.nextRssBudgetState;
|
|
208386
|
+
exports.parseCapAction = require_manifest_system_deps.parseCapAction;
|
|
207492
208387
|
exports.parseRangeHeader = require_file_data_plane.parseRangeHeader;
|
|
207493
|
-
exports.parseRssBudgetMb =
|
|
208388
|
+
exports.parseRssBudgetMb = require_manifest_system_deps.parseRssBudgetMb;
|
|
207494
208389
|
exports.parseTokenizedUrl = require_file_data_plane.parseTokenizedUrl;
|
|
207495
208390
|
exports.partitionIsolatedBuiltinIds = partitionIsolatedBuiltinIds;
|
|
207496
208391
|
exports.proxyToUpstream = proxyToUpstream;
|
|
207497
208392
|
exports.quarantineAddonResidue = quarantineAddonResidue;
|
|
207498
208393
|
exports.readExtraSans = require_tls$1.readExtraSans;
|
|
207499
|
-
exports.readHeapSpaces =
|
|
208394
|
+
exports.readHeapSpaces = require_manifest_system_deps.readHeapSpaces;
|
|
207500
208395
|
exports.readLanHttpState = require_tls$1.readLanHttpState;
|
|
207501
|
-
exports.readMoleculerFanoutMode =
|
|
208396
|
+
exports.readMoleculerFanoutMode = require_manifest_system_deps.readMoleculerFanoutMode;
|
|
207502
208397
|
exports.readPendingRestart = readPendingRestart;
|
|
207503
208398
|
exports.readTlsAccessStatus = require_tls$1.readTlsAccessStatus;
|
|
207504
208399
|
exports.readTlsMode = require_tls$1.readTlsMode;
|
|
207505
208400
|
exports.readinessKey = require_dist10.readinessKey;
|
|
207506
|
-
exports.reclaimIntervalMs =
|
|
207507
|
-
exports.recordSocketFrame =
|
|
207508
|
-
exports.registerEventBusService =
|
|
208401
|
+
exports.reclaimIntervalMs = require_manifest_system_deps.reclaimIntervalMs;
|
|
208402
|
+
exports.recordSocketFrame = require_manifest_system_deps.recordSocketFrame;
|
|
208403
|
+
exports.registerEventBusService = require_manifest_system_deps.registerEventBusService;
|
|
207509
208404
|
exports.registerLanHttpHandler = require_tls$1.registerLanHttpHandler;
|
|
207510
208405
|
exports.reissueTlsLeaf = require_tls$1.reissueTlsLeaf;
|
|
207511
208406
|
exports.resolveFilePath = require_file_data_plane.resolveFilePath;
|
|
207512
|
-
exports.resolveHwAccel =
|
|
207513
|
-
exports.resolveNpmInvocation =
|
|
208407
|
+
exports.resolveHwAccel = require_manifest_system_deps.resolveHwAccel;
|
|
208408
|
+
exports.resolveNpmInvocation = require_manifest_system_deps.resolveNpmInvocation;
|
|
207514
208409
|
exports.runHubAddonBoot = runHubAddonBoot;
|
|
207515
|
-
exports.runNpm =
|
|
207516
|
-
exports.sampleSocketDirection =
|
|
208410
|
+
exports.runNpm = require_manifest_system_deps.runNpm;
|
|
208411
|
+
exports.sampleSocketDirection = require_manifest_system_deps.sampleSocketDirection;
|
|
207517
208412
|
exports.scheduleSelfRestart = scheduleSelfRestart;
|
|
207518
208413
|
exports.scopeKey = require_dist10.scopeKey;
|
|
207519
208414
|
exports.scopesAllowAddon = require_dist10.scopesAllowAddon;
|
|
207520
208415
|
exports.scopesAllowDeviceCap = require_dist10.scopesAllowDeviceCap;
|
|
207521
208416
|
exports.selectAddonResidue = selectAddonResidue;
|
|
207522
|
-
exports.selectReportedSpaces =
|
|
207523
|
-
exports.serializeTypedArrays =
|
|
207524
|
-
exports.setHubConnected =
|
|
207525
|
-
exports.setNodeEventInterest =
|
|
207526
|
-
exports.shouldReclaim =
|
|
207527
|
-
exports.socketDirectionBytes =
|
|
207528
|
-
exports.socketDirectionMessages =
|
|
207529
|
-
exports.startHeapWatch =
|
|
207530
|
-
exports.startRunnerHeapWatch =
|
|
207531
|
-
exports.strandedMb =
|
|
208417
|
+
exports.selectReportedSpaces = require_manifest_system_deps.selectReportedSpaces;
|
|
208418
|
+
exports.serializeTypedArrays = require_manifest_system_deps.serializeTypedArrays;
|
|
208419
|
+
exports.setHubConnected = require_manifest_system_deps.setHubConnected;
|
|
208420
|
+
exports.setNodeEventInterest = require_manifest_system_deps.setNodeEventInterest;
|
|
208421
|
+
exports.shouldReclaim = require_manifest_system_deps.shouldReclaim;
|
|
208422
|
+
exports.socketDirectionBytes = require_manifest_system_deps.socketDirectionBytes;
|
|
208423
|
+
exports.socketDirectionMessages = require_manifest_system_deps.socketDirectionMessages;
|
|
208424
|
+
exports.startHeapWatch = require_manifest_system_deps.startHeapWatch;
|
|
208425
|
+
exports.startRunnerHeapWatch = require_manifest_system_deps.startRunnerHeapWatch;
|
|
208426
|
+
exports.strandedMb = require_manifest_system_deps.strandedMb;
|
|
207532
208427
|
exports.stripCamstackDeps = stripCamstackDeps;
|
|
207533
|
-
exports.subscribePassthrough =
|
|
207534
|
-
exports.udsChildLogToWorkerEntry =
|
|
207535
|
-
exports.validateProviderRegistrations =
|
|
208428
|
+
exports.subscribePassthrough = require_manifest_system_deps.subscribePassthrough;
|
|
208429
|
+
exports.udsChildLogToWorkerEntry = require_manifest_system_deps.udsChildLogToWorkerEntry;
|
|
208430
|
+
exports.validateProviderRegistrations = require_manifest_system_deps.validateProviderRegistrations;
|
|
207536
208431
|
exports.validateUploadedTls = require_tls$1.validateUploadedTls;
|
|
207537
208432
|
exports.waitUntilReady = waitUntilReady;
|
|
207538
208433
|
exports.writeExtraSans = require_tls$1.writeExtraSans;
|
|
@@ -207567,7 +208462,7 @@ var require_dist4 = __commonJS({
|
|
|
207567
208462
|
"use strict";
|
|
207568
208463
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
207569
208464
|
var require_event_category = require_event_category_BaEgqJNv();
|
|
207570
|
-
var require_sleep =
|
|
208465
|
+
var require_sleep = require_sleep_CWWLTM6W();
|
|
207571
208466
|
var require_canonical_hash = require_canonical_hash_DNV8S5ET();
|
|
207572
208467
|
var require_enums2 = require_enums();
|
|
207573
208468
|
var require_err_msg = require_err_msg_COpsHMw2();
|
|
@@ -208277,6 +209172,48 @@ var require_dist4 = __commonJS({
|
|
|
208277
209172
|
unreadable
|
|
208278
209173
|
};
|
|
208279
209174
|
}
|
|
209175
|
+
var REDACTED_SECRET = "__camstack_redacted__";
|
|
209176
|
+
function isSecretConfigField(field) {
|
|
209177
|
+
if (field.type === "password") return true;
|
|
209178
|
+
return "secret" in field && field.secret === true;
|
|
209179
|
+
}
|
|
209180
|
+
function collectSecretConfigKeys(schema) {
|
|
209181
|
+
const keys = /* @__PURE__ */ new Set();
|
|
209182
|
+
for (const section of sectionsOf(schema)) for (const field of fieldsOf(section)) walkField(field, keys);
|
|
209183
|
+
return keys;
|
|
209184
|
+
}
|
|
209185
|
+
function schemaDeclaresAnyField(schema) {
|
|
209186
|
+
for (const section of sectionsOf(schema)) if (fieldsOf(section).length > 0) return true;
|
|
209187
|
+
return false;
|
|
209188
|
+
}
|
|
209189
|
+
function isRecord$2(value) {
|
|
209190
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
209191
|
+
}
|
|
209192
|
+
function sectionsOf(schema) {
|
|
209193
|
+
if (!isRecord$2(schema)) return [];
|
|
209194
|
+
const sections = schema["sections"];
|
|
209195
|
+
return Array.isArray(sections) ? sections : [];
|
|
209196
|
+
}
|
|
209197
|
+
function fieldsOf(node) {
|
|
209198
|
+
if (!isRecord$2(node)) return [];
|
|
209199
|
+
const fields = node["fields"];
|
|
209200
|
+
return Array.isArray(fields) ? fields : [];
|
|
209201
|
+
}
|
|
209202
|
+
function walkField(field, out) {
|
|
209203
|
+
if (!isRecord$2(field)) return;
|
|
209204
|
+
const type = field["type"];
|
|
209205
|
+
const key = field["key"];
|
|
209206
|
+
if ((type === "password" || field["secret"] === true) && typeof key === "string" && key.length > 0) out.add(key);
|
|
209207
|
+
if (type === "group") {
|
|
209208
|
+
for (const child of fieldsOf(field)) walkField(child, out);
|
|
209209
|
+
return;
|
|
209210
|
+
}
|
|
209211
|
+
if (type === "sub-tabs") {
|
|
209212
|
+
const tabs = field["tabs"];
|
|
209213
|
+
if (!Array.isArray(tabs)) return;
|
|
209214
|
+
for (const tab of tabs) for (const child of fieldsOf(tab)) walkField(child, out);
|
|
209215
|
+
}
|
|
209216
|
+
}
|
|
208280
209217
|
var STREAM_QUALITY_LABELS = {
|
|
208281
209218
|
high: "High",
|
|
208282
209219
|
mid: "Mid",
|
|
@@ -208945,13 +209882,29 @@ var require_dist4 = __commonJS({
|
|
|
208945
209882
|
"recorder",
|
|
208946
209883
|
"analytics"
|
|
208947
209884
|
]);
|
|
209885
|
+
var StorageMigrationMoveProgressSchema = zod.z.object({
|
|
209886
|
+
filesMoved: zod.z.number().int().nonnegative(),
|
|
209887
|
+
/** The archive census — the **M** of "N of M" (D295). `null` = unknowable. */
|
|
209888
|
+
filesTotal: zod.z.number().int().nonnegative().nullable(),
|
|
209889
|
+
bytesMoved: zod.z.number().int().nonnegative(),
|
|
209890
|
+
/** The MOVER's start, not the migration's: a drain restarted after an addon
|
|
209891
|
+
* crash gets a new mover, and a rate computed from the migration's start
|
|
209892
|
+
* would silently average in the time nothing was running. */
|
|
209893
|
+
startedAt: zod.z.number(),
|
|
209894
|
+
/** When the coordinator last read these numbers. Paired with `startedAt` it
|
|
209895
|
+
* is the only honest rate: both clocks are the hub's, so a UI never has to
|
|
209896
|
+
* subtract its own. */
|
|
209897
|
+
observedAt: zod.z.number()
|
|
209898
|
+
});
|
|
208948
209899
|
var StorageMigrationMoveSchema = zod.z.object({
|
|
208949
209900
|
storageClass: StorageMigrationClassSchema,
|
|
208950
209901
|
fromLocationId: zod.z.string(),
|
|
208951
209902
|
toLocationId: zod.z.string(),
|
|
208952
209903
|
moverJobId: zod.z.string().nullable(),
|
|
208953
209904
|
state: RelocateJobStateSchema.nullable(),
|
|
208954
|
-
error: zod.z.string().nullable()
|
|
209905
|
+
error: zod.z.string().nullable(),
|
|
209906
|
+
/** Last observed mover counters; `null` until the mover has been polled once. */
|
|
209907
|
+
progress: StorageMigrationMoveProgressSchema.nullable()
|
|
208955
209908
|
});
|
|
208956
209909
|
var StorageMigrationJobSchema = zod.z.object({
|
|
208957
209910
|
jobId: zod.z.string(),
|
|
@@ -208997,6 +209950,52 @@ var require_dist4 = __commonJS({
|
|
|
208997
209950
|
})),
|
|
208998
209951
|
findings: zod.z.array(StorageMigrationFindingSchema)
|
|
208999
209952
|
});
|
|
209953
|
+
var StorageMigrationLaneSchema = zod.z.enum(["footage", "media"]);
|
|
209954
|
+
var StorageMigrationMoverSchema = zod.z.object({
|
|
209955
|
+
lane: StorageMigrationLaneSchema,
|
|
209956
|
+
job: RelocateJobSchema,
|
|
209957
|
+
/** The coordinator job that armed this mover, or `null` for a mover armed
|
|
209958
|
+
* directly against the owning addon. */
|
|
209959
|
+
migrationJobId: zod.z.string().nullable(),
|
|
209960
|
+
/** When the hub read these counters. Stamped here so a rate is `bytesMoved`
|
|
209961
|
+
* over (`observedAt` − `job.startedAt`) with BOTH ends on the hub's clock —
|
|
209962
|
+
* a browser subtracting its own `Date.now()` from a server `startedAt` is a
|
|
209963
|
+
* rate made of two different clocks. */
|
|
209964
|
+
observedAt: zod.z.number()
|
|
209965
|
+
});
|
|
209966
|
+
var StorageMigrationResidueSchema = zod.z.object({
|
|
209967
|
+
storageClass: StorageMigrationClassSchema,
|
|
209968
|
+
/** The location still holding the data. `'*'` for the media lane, whose rows
|
|
209969
|
+
* move from wherever they are rather than from one named source. */
|
|
209970
|
+
fromLocationId: zod.z.string(),
|
|
209971
|
+
/** Where a drain would move it — the class's CURRENT default. */
|
|
209972
|
+
toLocationId: zod.z.string(),
|
|
209973
|
+
/** Segments (footage lane) or rows (media lane) still on the source. */
|
|
209974
|
+
items: zod.z.number().int().nonnegative().nullable(),
|
|
209975
|
+
/** Bytes on the source; `null` when the lane counts rows rather than bytes. */
|
|
209976
|
+
bytes: zod.z.number().int().nonnegative().nullable()
|
|
209977
|
+
});
|
|
209978
|
+
var StorageMigrationDrainInputSchema = zod.z.object({
|
|
209979
|
+
/** The classes to drain. Each must appear in `storageMigration.residue`, so
|
|
209980
|
+
* a class whose source is already empty is refused rather than started. */
|
|
209981
|
+
classes: zod.z.array(StorageMigrationClassSchema).min(1),
|
|
209982
|
+
throttleMbps: zod.z.number().min(1).max(1e3).optional()
|
|
209983
|
+
});
|
|
209984
|
+
var RelocateResidueInputSchema = zod.z.object({
|
|
209985
|
+
fromLocationId: zod.z.string().min(1),
|
|
209986
|
+
/** Narrow to one logical class; omit for every profile on the location. */
|
|
209987
|
+
footageClass: RelocateFootageClassSchema.optional()
|
|
209988
|
+
});
|
|
209989
|
+
var RelocateResidueSchema = zod.z.object({
|
|
209990
|
+
segments: zod.z.number().int().nonnegative(),
|
|
209991
|
+
bytes: zod.z.number().int().nonnegative()
|
|
209992
|
+
}).nullable();
|
|
209993
|
+
var RelocatableMediaCountSchema = zod.z.object({ rows: zod.z.number().int().nonnegative() }).nullable();
|
|
209994
|
+
var RelocatableMediaCountInputSchema = zod.z.object({
|
|
209995
|
+
toLocationId: zod.z.string().min(1),
|
|
209996
|
+
/** Omitted = `move`. */
|
|
209997
|
+
mode: MediaRelocateModeSchema.optional()
|
|
209998
|
+
});
|
|
209000
209999
|
var SUB_DETECTION_TYPES = ["face", "plate"];
|
|
209001
210000
|
var RECOGNITION_TYPES = [
|
|
209002
210001
|
"face",
|
|
@@ -209047,6 +210046,8 @@ var require_dist4 = __commonJS({
|
|
|
209047
210046
|
updatedAt: zod.z.number()
|
|
209048
210047
|
});
|
|
209049
210048
|
var StorageLocationRefSchema = zod.z.union([StorageLocationTypeSchema, zod.z.string().regex(/^[a-z][a-zA-Z0-9-]*:[a-zA-Z0-9-]+$/)]);
|
|
210049
|
+
var StorageAccessSchema = zod.z.enum(["local-path", "cap-mediated"]);
|
|
210050
|
+
var STORAGE_ACCESS_FALLBACK = "local-path";
|
|
209050
210051
|
var StorageLocationDeclarationSchema = zod.z.object({
|
|
209051
210052
|
/**
|
|
209052
210053
|
* Global location identifier, e.g. `recordings` or `recordingsLow`.
|
|
@@ -209066,6 +210067,19 @@ var require_dist4 = __commonJS({
|
|
|
209066
210067
|
*/
|
|
209067
210068
|
cardinality: zod.z.enum(["single", "multi"]),
|
|
209068
210069
|
/**
|
|
210070
|
+
* HOW the declaring service reaches the bytes — and therefore WHICH
|
|
210071
|
+
* providers may back a location of this kind. See {@link StorageAccessSchema}
|
|
210072
|
+
* and {@link STORAGE_ACCESS_FALLBACK}.
|
|
210073
|
+
*
|
|
210074
|
+
* Absent means `'local-path'`. That default is FAIL-CLOSED on purpose: it
|
|
210075
|
+
* can only over-restrict (refuse a remote provider for a kind that might
|
|
210076
|
+
* have coped) and never under-restrict. Declaring `'cap-mediated'` is the
|
|
210077
|
+
* permissive direction and is therefore never inferred — a repo guard
|
|
210078
|
+
* (`scripts/check-storage-access-declarations.ts`) refuses to let it be
|
|
210079
|
+
* reached by omission.
|
|
210080
|
+
*/
|
|
210081
|
+
access: StorageAccessSchema.optional(),
|
|
210082
|
+
/**
|
|
209069
210083
|
* When set, the default instance for this location inherits its resolved
|
|
209070
210084
|
* root from the named location's default instance. Useful for derivative
|
|
209071
210085
|
* slots (e.g. `recordingsLow` → `recordings`) so operators only need to
|
|
@@ -220998,8 +222012,10 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
220998
222012
|
lastSeen: zod.z.number(),
|
|
220999
222013
|
/** Frame-rate position history (subject to maxPositionHistory cap). */
|
|
221000
222014
|
positions: zod.z.array(TrackPositionSchema).readonly(),
|
|
221001
|
-
/** Periodic snapshots at snapshotIntervalMs cadence
|
|
221002
|
-
*
|
|
222015
|
+
/** Periodic snapshots at snapshotIntervalMs cadence — DEBUG media, produced
|
|
222016
|
+
* only while `MediaSettings.debugMediaEnabled` is on for the camera (D299;
|
|
222017
|
+
* the retired `saveThumbnails` used to gate this and the rolling
|
|
222018
|
+
* `lastFrame` together). Empty is the healthy default, not a capture gap. */
|
|
221003
222019
|
snapshots: zod.z.array(TrackSnapshotSchema).readonly(),
|
|
221004
222020
|
/** Deduplicated zones the track has entered at least once. Zone IDS. */
|
|
221005
222021
|
zonesVisited: zod.z.array(zod.z.string()).readonly(),
|
|
@@ -221982,6 +222998,21 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
221982
222998
|
* it to zero.
|
|
221983
222999
|
*/
|
|
221984
223000
|
countUnstampedEventMedia: require_sleep.method(zod.z.object({}), UnstampedEventMediaCountSchema, { auth: "admin" }),
|
|
223001
|
+
/**
|
|
223002
|
+
* How many rows a pass would STILL act on against `toLocationId`.
|
|
223003
|
+
*
|
|
223004
|
+
* One derivation, two consumers: it is the media lane's denominator (the
|
|
223005
|
+
* **M** the footage lane gets from the ledger census — D295) and it is the
|
|
223006
|
+
* residue behind "drain remaining". Deriving them separately is how "N of M"
|
|
223007
|
+
* ends up comparing two different populations.
|
|
223008
|
+
*
|
|
223009
|
+
* `null` means the count could not be taken; it is never zero-filled,
|
|
223010
|
+
* because a zero here reads as "nothing left to move".
|
|
223011
|
+
*/
|
|
223012
|
+
countRelocatableMedia: require_sleep.method(RelocatableMediaCountInputSchema, RelocatableMediaCountSchema, {
|
|
223013
|
+
kind: "query",
|
|
223014
|
+
auth: "admin"
|
|
223015
|
+
}),
|
|
221985
223016
|
/** Every relocate job this addon knows about, newest first (in RAM: the
|
|
221986
223017
|
* move is resumable, so a lost list costs nothing but the display). */
|
|
221987
223018
|
listRelocateMediaJobs: require_sleep.method(zod.z.object({}), zod.z.array(RelocateJobSchema).readonly(), {
|
|
@@ -224686,6 +225717,35 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
224686
225717
|
cancel: require_sleep.method(zod.z.object({ jobId: zod.z.string() }), zod.z.object({ cancelled: zod.z.boolean() }), {
|
|
224687
225718
|
kind: "mutation",
|
|
224688
225719
|
auth: "admin"
|
|
225720
|
+
}),
|
|
225721
|
+
/**
|
|
225722
|
+
* Every mover running RIGHT NOW, in both lanes, with its counters.
|
|
225723
|
+
*
|
|
225724
|
+
* `status` covers a migration's own moves — the coordinator folds their
|
|
225725
|
+
* progress onto the durable job record it is already polling. This covers
|
|
225726
|
+
* the other case, and it is not hypothetical: a drain armed straight against
|
|
225727
|
+
* `recording.relocateFootage` (the only path that existed before
|
|
225728
|
+
* {@link drain}) has no job to fold into and would otherwise be invisible.
|
|
225729
|
+
*/
|
|
225730
|
+
movers: require_sleep.method(zod.z.object({}), zod.z.array(StorageMigrationMoverSchema).readonly(), { auth: "admin" }),
|
|
225731
|
+
/**
|
|
225732
|
+
* What each class's SOURCE still holds, from the archive — never from the
|
|
225733
|
+
* resident index (D295). Only classes with something left (or something
|
|
225734
|
+
* unknown) are listed, so an empty list means there is nothing to drain and
|
|
225735
|
+
* the UI has no honest button to offer.
|
|
225736
|
+
*/
|
|
225737
|
+
residue: require_sleep.method(zod.z.object({}), zod.z.array(StorageMigrationResidueSchema).readonly(), { auth: "admin" }),
|
|
225738
|
+
/**
|
|
225739
|
+
* Run the drain half alone, on a class whose default has ALREADY moved.
|
|
225740
|
+
*
|
|
225741
|
+
* It never repoints anything, which is what lets `start` keep refusing a
|
|
225742
|
+
* destination that is already the default: the two verbs cannot be confused
|
|
225743
|
+
* for one another, and no operator can re-repoint a migrated class through
|
|
225744
|
+
* this door.
|
|
225745
|
+
*/
|
|
225746
|
+
drain: require_sleep.method(StorageMigrationDrainInputSchema, zod.z.object({ jobId: zod.z.string() }), {
|
|
225747
|
+
kind: "mutation",
|
|
225748
|
+
auth: "admin"
|
|
224689
225749
|
})
|
|
224690
225750
|
}
|
|
224691
225751
|
};
|
|
@@ -225195,7 +226255,20 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
225195
226255
|
*/
|
|
225196
226256
|
scanned: zod.z.number(),
|
|
225197
226257
|
/** True when the backend could not consider every row that passed the filter. */
|
|
225198
|
-
truncated: zod.z.boolean()
|
|
226258
|
+
truncated: zod.z.boolean(),
|
|
226259
|
+
/**
|
|
226260
|
+
* The `topK` the backend actually ran with.
|
|
226261
|
+
*
|
|
226262
|
+
* Every backend has a ceiling — sqlite-vec's is 4,096 — and a caller asking
|
|
226263
|
+
* past it used to learn nothing but a boolean, from a WARN in the provider's
|
|
226264
|
+
* own log rather than in its answer. That is how an audit asking for 20,000
|
|
226265
|
+
* consumed 4,096 and reported `examined: 4096` as if it had walked the index,
|
|
226266
|
+
* for weeks. `truncated` says THAT the answer was short; this says BY HOW
|
|
226267
|
+
* MUCH, in the return value, where the caller cannot fail to see it.
|
|
226268
|
+
*
|
|
226269
|
+
* Equals the requested `topK` whenever nothing was lowered.
|
|
226270
|
+
*/
|
|
226271
|
+
effectiveTopK: zod.z.number().int().positive()
|
|
225199
226272
|
});
|
|
225200
226273
|
var VectorDeleteInputSchema = zod.z.object({
|
|
225201
226274
|
index: zod.z.string(),
|
|
@@ -225214,6 +226287,35 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
225214
226287
|
id: zod.z.string(),
|
|
225215
226288
|
metadata: VectorMetadataSchema
|
|
225216
226289
|
})) });
|
|
226290
|
+
var VectorFetchInputSchema = zod.z.object({
|
|
226291
|
+
index: zod.z.string(),
|
|
226292
|
+
ids: zod.z.array(zod.z.string())
|
|
226293
|
+
});
|
|
226294
|
+
var VectorFetchResultSchema = zod.z.object({ items: zod.z.array(zod.z.object({
|
|
226295
|
+
id: zod.z.string(),
|
|
226296
|
+
/** base64 Float32LE — the same wire form `upsert` accepts. */
|
|
226297
|
+
vector: zod.z.string(),
|
|
226298
|
+
metadata: VectorMetadataSchema
|
|
226299
|
+
})) });
|
|
226300
|
+
var VectorScanInputSchema = zod.z.object({
|
|
226301
|
+
index: zod.z.string(),
|
|
226302
|
+
/** Opaque resume point. `0` starts at the top; pass back `nextCursor`. */
|
|
226303
|
+
cursor: zod.z.number().int().nonnegative().default(0),
|
|
226304
|
+
limit: zod.z.number().int().positive()
|
|
226305
|
+
});
|
|
226306
|
+
var VectorScanResultSchema = zod.z.object({
|
|
226307
|
+
items: zod.z.array(zod.z.object({
|
|
226308
|
+
id: zod.z.string(),
|
|
226309
|
+
metadata: VectorMetadataSchema
|
|
226310
|
+
})),
|
|
226311
|
+
/**
|
|
226312
|
+
* Where the next page starts, or `null` when the walk reached the end.
|
|
226313
|
+
*
|
|
226314
|
+
* `null` is the ONLY end-of-index signal. A caller must not infer the end
|
|
226315
|
+
* from a short page: a backend is free to return fewer rows than asked.
|
|
226316
|
+
*/
|
|
226317
|
+
nextCursor: zod.z.number().int().nonnegative().nullable()
|
|
226318
|
+
});
|
|
225217
226319
|
var VectorStatsInputSchema = zod.z.object({ index: zod.z.string() });
|
|
225218
226320
|
var VectorStatsResultSchema = zod.z.object({
|
|
225219
226321
|
/** Provider id, so an operator can tell brute force from an ANN index. */
|
|
@@ -225244,6 +226346,10 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
225244
226346
|
query: require_sleep.method(VectorQueryInputSchema, VectorQueryResultSchema, { auth: "admin" }),
|
|
225245
226347
|
/** Metadata by id, no vectors — see {@link VectorGetResultSchema}. */
|
|
225246
226348
|
getByIds: require_sleep.method(VectorGetInputSchema, VectorGetResultSchema, { auth: "admin" }),
|
|
226349
|
+
/** Metadata AND vectors, by named id — see {@link VectorFetchInputSchema}. */
|
|
226350
|
+
fetchByIds: require_sleep.method(VectorFetchInputSchema, VectorFetchResultSchema, { auth: "admin" }),
|
|
226351
|
+
/** One page of the whole index, unranked — see {@link VectorScanInputSchema}. */
|
|
226352
|
+
scan: require_sleep.method(VectorScanInputSchema, VectorScanResultSchema, { auth: "admin" }),
|
|
225247
226353
|
deleteByIds: require_sleep.method(VectorDeleteInputSchema, VectorDeleteResultSchema, {
|
|
225248
226354
|
kind: "mutation",
|
|
225249
226355
|
auth: "admin"
|
|
@@ -231714,6 +232820,20 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
231714
232820
|
kind: "query",
|
|
231715
232821
|
auth: "admin"
|
|
231716
232822
|
}),
|
|
232823
|
+
/**
|
|
232824
|
+
* What a location STILL holds, asked of the durable hour ledger.
|
|
232825
|
+
*
|
|
232826
|
+
* The number behind "drain remaining": segments and bytes that would still
|
|
232827
|
+
* have to move off `fromLocationId`. It is a ledger aggregate — the archive
|
|
232828
|
+
* — because the resident index is not the archive (D295), and a drain sized
|
|
232829
|
+
* off the index is exactly what reported `done` over 80.3 GB on 2026-08-29.
|
|
232830
|
+
* `null` means the archive could not be asked (no ledger on this node, or
|
|
232831
|
+
* the aggregate failed) and is never conflated with an empty source.
|
|
232832
|
+
*/
|
|
232833
|
+
getRelocateResidue: require_sleep.method(RelocateResidueInputSchema, RelocateResidueSchema, {
|
|
232834
|
+
kind: "query",
|
|
232835
|
+
auth: "admin"
|
|
232836
|
+
}),
|
|
231717
232837
|
/** Cancel a running or queued relocate job. A queued job never runs. */
|
|
231718
232838
|
cancelRelocateJob: require_sleep.method(zod.z.object({ jobId: zod.z.string() }), zod.z.object({ cancelled: zod.z.boolean() }), {
|
|
231719
232839
|
kind: "mutation",
|
|
@@ -240654,6 +241774,12 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
240654
241774
|
addonId: null,
|
|
240655
241775
|
access: "create"
|
|
240656
241776
|
},
|
|
241777
|
+
"pipelineAnalytics.countRelocatableMedia": {
|
|
241778
|
+
capName: "pipeline-analytics",
|
|
241779
|
+
capScope: "device",
|
|
241780
|
+
addonId: null,
|
|
241781
|
+
access: "view"
|
|
241782
|
+
},
|
|
240657
241783
|
"pipelineAnalytics.countUnstampedEventMedia": {
|
|
240658
241784
|
capName: "pipeline-analytics",
|
|
240659
241785
|
capScope: "device",
|
|
@@ -241818,6 +242944,12 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
241818
242944
|
addonId: null,
|
|
241819
242945
|
access: "view"
|
|
241820
242946
|
},
|
|
242947
|
+
"recording.getRelocateResidue": {
|
|
242948
|
+
capName: "recording",
|
|
242949
|
+
capScope: "system",
|
|
242950
|
+
addonId: null,
|
|
242951
|
+
access: "view"
|
|
242952
|
+
},
|
|
241821
242953
|
"recording.getStorageMigrationMoveStatus": {
|
|
241822
242954
|
capName: "recording",
|
|
241823
242955
|
capScope: "system",
|
|
@@ -242364,12 +243496,30 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
242364
243496
|
addonId: null,
|
|
242365
243497
|
access: "create"
|
|
242366
243498
|
},
|
|
243499
|
+
"storageMigration.drain": {
|
|
243500
|
+
capName: "storage-migration",
|
|
243501
|
+
capScope: "system",
|
|
243502
|
+
addonId: null,
|
|
243503
|
+
access: "create"
|
|
243504
|
+
},
|
|
243505
|
+
"storageMigration.movers": {
|
|
243506
|
+
capName: "storage-migration",
|
|
243507
|
+
capScope: "system",
|
|
243508
|
+
addonId: null,
|
|
243509
|
+
access: "view"
|
|
243510
|
+
},
|
|
242367
243511
|
"storageMigration.plan": {
|
|
242368
243512
|
capName: "storage-migration",
|
|
242369
243513
|
capScope: "system",
|
|
242370
243514
|
addonId: null,
|
|
242371
243515
|
access: "view"
|
|
242372
243516
|
},
|
|
243517
|
+
"storageMigration.residue": {
|
|
243518
|
+
capName: "storage-migration",
|
|
243519
|
+
capScope: "system",
|
|
243520
|
+
addonId: null,
|
|
243521
|
+
access: "view"
|
|
243522
|
+
},
|
|
242373
243523
|
"storageMigration.start": {
|
|
242374
243524
|
capName: "storage-migration",
|
|
242375
243525
|
capScope: "system",
|
|
@@ -243204,6 +244354,12 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
243204
244354
|
addonId: null,
|
|
243205
244355
|
access: "delete"
|
|
243206
244356
|
},
|
|
244357
|
+
"vectorStore.fetchByIds": {
|
|
244358
|
+
capName: "vector-store",
|
|
244359
|
+
capScope: "system",
|
|
244360
|
+
addonId: null,
|
|
244361
|
+
access: "view"
|
|
244362
|
+
},
|
|
243207
244363
|
"vectorStore.getByIds": {
|
|
243208
244364
|
capName: "vector-store",
|
|
243209
244365
|
capScope: "system",
|
|
@@ -243216,6 +244372,12 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
243216
244372
|
addonId: null,
|
|
243217
244373
|
access: "view"
|
|
243218
244374
|
},
|
|
244375
|
+
"vectorStore.scan": {
|
|
244376
|
+
capName: "vector-store",
|
|
244377
|
+
capScope: "system",
|
|
244378
|
+
addonId: null,
|
|
244379
|
+
access: "view"
|
|
244380
|
+
},
|
|
243219
244381
|
"vectorStore.stats": {
|
|
243220
244382
|
capName: "vector-store",
|
|
243221
244383
|
capScope: "system",
|
|
@@ -246390,6 +247552,7 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
246390
247552
|
cancelStorageMigrationMove: (input) => dispatch("recording", "cancelStorageMigrationMove", "mutation", input),
|
|
246391
247553
|
relocateFootage: (input) => dispatch("recording", "relocateFootage", "mutation", input),
|
|
246392
247554
|
listRelocateJobs: (input) => dispatch("recording", "listRelocateJobs", "query", input),
|
|
247555
|
+
getRelocateResidue: (input) => dispatch("recording", "getRelocateResidue", "query", input),
|
|
246393
247556
|
cancelRelocateJob: (input) => dispatch("recording", "cancelRelocateJob", "mutation", input),
|
|
246394
247557
|
planStorageRebalance: (input) => dispatch("recording", "planStorageRebalance", "query", input),
|
|
246395
247558
|
startStorageRebalance: (input) => dispatch("recording", "startStorageRebalance", "mutation", input)
|
|
@@ -246453,7 +247616,10 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
246453
247616
|
plan: (input) => dispatch("storageMigration", "plan", "query", input),
|
|
246454
247617
|
start: (input) => dispatch("storageMigration", "start", "mutation", input),
|
|
246455
247618
|
status: (input) => dispatch("storageMigration", "status", "query", input),
|
|
246456
|
-
cancel: (input) => dispatch("storageMigration", "cancel", "mutation", input)
|
|
247619
|
+
cancel: (input) => dispatch("storageMigration", "cancel", "mutation", input),
|
|
247620
|
+
movers: (input) => dispatch("storageMigration", "movers", "query", input),
|
|
247621
|
+
residue: (input) => dispatch("storageMigration", "residue", "query", input),
|
|
247622
|
+
drain: (input) => dispatch("storageMigration", "drain", "mutation", input)
|
|
246457
247623
|
},
|
|
246458
247624
|
streamBroker: {
|
|
246459
247625
|
fetchEventMedia: (input) => dispatch("streamBroker", "fetchEventMedia", "mutation", input),
|
|
@@ -249907,6 +251073,7 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
249907
251073
|
exports.REACHABILITY_PROBE_TIMEOUT_MS = REACHABILITY_PROBE_TIMEOUT_MS;
|
|
249908
251074
|
exports.RECOGNITION_TYPES = RECOGNITION_TYPES;
|
|
249909
251075
|
exports.RECORDING_EXPORT_MAX_READ_BYTES = RECORDING_EXPORT_MAX_READ_BYTES;
|
|
251076
|
+
exports.REDACTED_SECRET = REDACTED_SECRET;
|
|
249910
251077
|
exports.RESERVED_BINDING_NAMES = RESERVED_BINDING_NAMES;
|
|
249911
251078
|
exports.RESTORED_CAP_NAMES = RESTORED_CAP_NAMES;
|
|
249912
251079
|
exports.ROOT_BUCKET_KEY = ROOT_BUCKET_KEY;
|
|
@@ -249945,11 +251112,15 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
249945
251112
|
exports.RecordingTriggersSchema = RecordingTriggersSchema;
|
|
249946
251113
|
exports.RecordingWeekdaySchema = RecordingWeekdaySchema;
|
|
249947
251114
|
exports.RedirectLoginMethodSchema = RedirectLoginMethodSchema;
|
|
251115
|
+
exports.RelocatableMediaCountInputSchema = RelocatableMediaCountInputSchema;
|
|
251116
|
+
exports.RelocatableMediaCountSchema = RelocatableMediaCountSchema;
|
|
249948
251117
|
exports.RelocateFootageClassSchema = RelocateFootageClassSchema;
|
|
249949
251118
|
exports.RelocateFootageInputSchema = RelocateFootageInputSchema;
|
|
249950
251119
|
exports.RelocateJobSchema = RelocateJobSchema;
|
|
249951
251120
|
exports.RelocateJobStateSchema = RelocateJobStateSchema;
|
|
249952
251121
|
exports.RelocateMediaInputSchema = RelocateMediaInputSchema;
|
|
251122
|
+
exports.RelocateResidueInputSchema = RelocateResidueInputSchema;
|
|
251123
|
+
exports.RelocateResidueSchema = RelocateResidueSchema;
|
|
249953
251124
|
exports.RenderedAsSchema = RenderedAsSchema;
|
|
249954
251125
|
exports.ReportMotionInputSchema = ReportMotionInputSchema;
|
|
249955
251126
|
exports.ReportedFailureContributionSchema = ReportedFailureContributionSchema;
|
|
@@ -250000,6 +251171,7 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
250000
251171
|
exports.SOURCE_CAP_CHANGED_AT_FIELD = SOURCE_CAP_CHANGED_AT_FIELD;
|
|
250001
251172
|
exports.SOURCE_DEVICE_TYPES = SOURCE_DEVICE_TYPES;
|
|
250002
251173
|
exports.SOURCE_INFO_METADATA_KEY = SOURCE_INFO_METADATA_KEY;
|
|
251174
|
+
exports.STORAGE_ACCESS_FALLBACK = STORAGE_ACCESS_FALLBACK;
|
|
250003
251175
|
exports.STREAM_PROFILE_META = STREAM_PROFILE_META;
|
|
250004
251176
|
exports.STREAM_QUALITY_LABELS = STREAM_QUALITY_LABELS;
|
|
250005
251177
|
exports.SUB_DETECTION_TYPES = SUB_DETECTION_TYPES;
|
|
@@ -250049,6 +251221,7 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
250049
251221
|
exports.StartEmbeddedInputSchema = StartEmbeddedInputSchema;
|
|
250050
251222
|
exports.StationaryObjectSchema = StationaryObjectSchema;
|
|
250051
251223
|
exports.StorageAbortUploadInputSchema = AbortUploadInputSchema;
|
|
251224
|
+
exports.StorageAccessSchema = StorageAccessSchema;
|
|
250052
251225
|
exports.StorageBeginDownloadInputSchema = BeginDownloadInputSchema;
|
|
250053
251226
|
exports.StorageBeginDownloadResultSchema = BeginDownloadResultSchema;
|
|
250054
251227
|
exports.StorageBeginUploadInputSchema = BeginUploadInputSchema;
|
|
@@ -250061,18 +251234,23 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
250061
251234
|
exports.StorageLocationTypeSchema = StorageLocationTypeSchema;
|
|
250062
251235
|
exports.StorageMigrationClassSchema = StorageMigrationClassSchema;
|
|
250063
251236
|
exports.StorageMigrationDestinationsSchema = StorageMigrationDestinationsSchema;
|
|
251237
|
+
exports.StorageMigrationDrainInputSchema = StorageMigrationDrainInputSchema;
|
|
250064
251238
|
exports.StorageMigrationFindingCodeSchema = StorageMigrationFindingCodeSchema;
|
|
250065
251239
|
exports.StorageMigrationFindingSchema = StorageMigrationFindingSchema;
|
|
250066
251240
|
exports.StorageMigrationFootageMoveInputSchema = StorageMigrationFootageMoveInputSchema;
|
|
250067
251241
|
exports.StorageMigrationInputSchema = StorageMigrationInputSchema;
|
|
250068
251242
|
exports.StorageMigrationJobSchema = StorageMigrationJobSchema;
|
|
251243
|
+
exports.StorageMigrationLaneSchema = StorageMigrationLaneSchema;
|
|
250069
251244
|
exports.StorageMigrationLeaseInputSchema = StorageMigrationLeaseInputSchema;
|
|
250070
251245
|
exports.StorageMigrationMediaMoveInputSchema = StorageMigrationMediaMoveInputSchema;
|
|
250071
251246
|
exports.StorageMigrationModeSchema = StorageMigrationModeSchema;
|
|
251247
|
+
exports.StorageMigrationMoveProgressSchema = StorageMigrationMoveProgressSchema;
|
|
250072
251248
|
exports.StorageMigrationMoveSchema = StorageMigrationMoveSchema;
|
|
251249
|
+
exports.StorageMigrationMoverSchema = StorageMigrationMoverSchema;
|
|
250073
251250
|
exports.StorageMigrationParticipantSchema = StorageMigrationParticipantSchema;
|
|
250074
251251
|
exports.StorageMigrationPhaseSchema = StorageMigrationPhaseSchema;
|
|
250075
251252
|
exports.StorageMigrationPlanSchema = StorageMigrationPlanSchema;
|
|
251253
|
+
exports.StorageMigrationResidueSchema = StorageMigrationResidueSchema;
|
|
250076
251254
|
exports.StorageProviderInfoSchema = ProviderInfoSchema;
|
|
250077
251255
|
exports.StorageReadChunkInputSchema = ReadChunkInputSchema;
|
|
250078
251256
|
exports.StorageTestLocationResultSchema = TestLocationResultSchema;
|
|
@@ -250266,6 +251444,7 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
250266
251444
|
exports.clusterStepSettingKey = clusterStepSettingKey;
|
|
250267
251445
|
exports.collectHydratedFieldEntries = require_sleep.collectHydratedFieldEntries;
|
|
250268
251446
|
exports.collectHydratedFieldValues = require_sleep.collectHydratedFieldValues;
|
|
251447
|
+
exports.collectSecretConfigKeys = collectSecretConfigKeys;
|
|
250269
251448
|
exports.colorCapability = colorCapability;
|
|
250270
251449
|
exports.colorForKind = colorForKind;
|
|
250271
251450
|
exports.commitWatchdogRestart = commitWatchdogRestart;
|
|
@@ -250406,6 +251585,7 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
250406
251585
|
exports.isRestoredCap = isRestoredCap;
|
|
250407
251586
|
exports.isSameAddonId = isSameAddonId;
|
|
250408
251587
|
exports.isScheduleActive = isScheduleActive;
|
|
251588
|
+
exports.isSecretConfigField = isSecretConfigField;
|
|
250409
251589
|
exports.isSoftwareDecode = require_canonical_hash.isSoftwareDecode;
|
|
250410
251590
|
exports.isSourceCap = isSourceCap;
|
|
250411
251591
|
exports.isSystemDelivery = isSystemDelivery;
|
|
@@ -250553,6 +251733,7 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
250553
251733
|
exports.runtimeDevices = runtimeDevices;
|
|
250554
251734
|
exports.runtimeStatePolicyFor = runtimeStatePolicyFor;
|
|
250555
251735
|
exports.sceneMonitorCapability = sceneMonitorCapability;
|
|
251736
|
+
exports.schemaDeclaresAnyField = schemaDeclaresAnyField;
|
|
250556
251737
|
exports.scopeInherits = scopeInherits;
|
|
250557
251738
|
exports.scopeKey = require_sleep.scopeKey;
|
|
250558
251739
|
exports.scopesAllowAddon = scopesAllowAddon;
|