camstack 1.2.62 → 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: [],
|
|
@@ -82635,8 +82997,8 @@ var require_storage_orchestrator_addon = __commonJS({
|
|
|
82635
82997
|
finishedAt: null,
|
|
82636
82998
|
error: null
|
|
82637
82999
|
};
|
|
82638
|
-
this.active = job;
|
|
82639
83000
|
await this.persist(job);
|
|
83001
|
+
this.active = job;
|
|
82640
83002
|
this.runPromise = this.run(job);
|
|
82641
83003
|
this.runPromise;
|
|
82642
83004
|
return job.jobId;
|
|
@@ -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 } });
|
|
@@ -135428,20 +136322,63 @@ var require_dist3 = __commonJS({
|
|
|
135428
136322
|
if (this.settingsStore === null) return;
|
|
135429
136323
|
this.settingsStore.clearDeviceRuntimeState(deviceId);
|
|
135430
136324
|
}
|
|
136325
|
+
/**
|
|
136326
|
+
* The addon's `ctx.settings`.
|
|
136327
|
+
*
|
|
136328
|
+
* The backend is chosen on EVERY call, never frozen when the view is built.
|
|
136329
|
+
* That is not a nicety: `settings-store` is owned by `storage-orchestrator`,
|
|
136330
|
+
* so the door is wired by `registerProvider` STRICTLY AFTER that addon's
|
|
136331
|
+
* context — and therefore its settings view — already exists. A view bound at
|
|
136332
|
+
* construction handed the door's own owner the sync-store backend, whose
|
|
136333
|
+
* writes throw for the whole life of the process once `sqlite-settings` runs
|
|
136334
|
+
* isolated (D181: no sync `ISettingsStore` reaches hub-main, only the async
|
|
136335
|
+
* door). Reads were worse than the writes: they answered `{}` in silence.
|
|
136336
|
+
* That is what made `storageMigration.start` fail on its first durable write
|
|
136337
|
+
* while every other addon's persistence worked. See D294.
|
|
136338
|
+
*/
|
|
135431
136339
|
createSettingsView(addonId) {
|
|
135432
|
-
|
|
136340
|
+
const storeBacked = this.createStoreSettingsView(addonId);
|
|
136341
|
+
let doorBacked = null;
|
|
136342
|
+
let doorBackedSource = null;
|
|
136343
|
+
const active = () => {
|
|
136344
|
+
if (this.settingsStore !== null) return storeBacked;
|
|
135433
136345
|
const door = this.settingsDoor;
|
|
135434
|
-
|
|
135435
|
-
|
|
135436
|
-
|
|
135437
|
-
|
|
135438
|
-
|
|
135439
|
-
|
|
135440
|
-
|
|
135441
|
-
|
|
135442
|
-
|
|
135443
|
-
|
|
135444
|
-
|
|
136346
|
+
if (door === null) return storeBacked;
|
|
136347
|
+
if (doorBacked === null || doorBackedSource !== door) {
|
|
136348
|
+
doorBackedSource = door;
|
|
136349
|
+
doorBacked = this.createDoorBackedSettingsView(addonId, door);
|
|
136350
|
+
}
|
|
136351
|
+
return doorBacked;
|
|
136352
|
+
};
|
|
136353
|
+
return {
|
|
136354
|
+
readAddonStore: () => active().readAddonStore(),
|
|
136355
|
+
writeAddonStore: (patch) => active().writeAddonStore(patch),
|
|
136356
|
+
readDeviceStore: (deviceId) => active().readDeviceStore(deviceId),
|
|
136357
|
+
readDeviceStoreBatch: (deviceIds) => active().readDeviceStoreBatch(deviceIds),
|
|
136358
|
+
writeDeviceStore: (deviceId, patch) => active().writeDeviceStore(deviceId, patch),
|
|
136359
|
+
clearDeviceStore: (deviceId) => active().clearDeviceStore(deviceId),
|
|
136360
|
+
getSection: (section) => active().getSection(section),
|
|
136361
|
+
setSection: (section, patch) => active().setSection(section, patch),
|
|
136362
|
+
readDeviceRuntimeState: (deviceId) => active().readDeviceRuntimeState(deviceId),
|
|
136363
|
+
writeDeviceRuntimeState: (deviceId, data) => active().writeDeviceRuntimeState(deviceId, data),
|
|
136364
|
+
clearDeviceRuntimeState: (deviceId) => active().clearDeviceRuntimeState(deviceId)
|
|
136365
|
+
};
|
|
136366
|
+
}
|
|
136367
|
+
/** The async-door backend of {@link createSettingsView}. */
|
|
136368
|
+
createDoorBackedSettingsView(addonId, door) {
|
|
136369
|
+
return createDoorSettingsView(addonId, door, {
|
|
136370
|
+
getSection: (section) => this.getSection(section),
|
|
136371
|
+
setSection: async (section, patch) => {
|
|
136372
|
+
for (const [key, value] of Object.entries(patch)) await door.set({
|
|
136373
|
+
collection: "system-settings",
|
|
136374
|
+
key: `${section}.${key}`,
|
|
136375
|
+
value
|
|
136376
|
+
});
|
|
136377
|
+
}
|
|
136378
|
+
});
|
|
136379
|
+
}
|
|
136380
|
+
/** The sync-`ISettingsStore` backend of {@link createSettingsView}. */
|
|
136381
|
+
createStoreSettingsView(addonId) {
|
|
135445
136382
|
const cm = this;
|
|
135446
136383
|
return {
|
|
135447
136384
|
async readAddonStore() {
|
|
@@ -135457,6 +136394,15 @@ var require_dist3 = __commonJS({
|
|
|
135457
136394
|
async readDeviceStore(deviceId) {
|
|
135458
136395
|
return cm.getAddonDevice(addonId, String(deviceId));
|
|
135459
136396
|
},
|
|
136397
|
+
async readDeviceStoreBatch(deviceIds) {
|
|
136398
|
+
const out = /* @__PURE__ */ new Map();
|
|
136399
|
+
for (const deviceId of deviceIds) try {
|
|
136400
|
+
out.set(deviceId, cm.getAddonDevice(addonId, String(deviceId)));
|
|
136401
|
+
} catch {
|
|
136402
|
+
out.set(deviceId, {});
|
|
136403
|
+
}
|
|
136404
|
+
return out;
|
|
136405
|
+
},
|
|
135460
136406
|
async writeDeviceStore(deviceId, patch) {
|
|
135461
136407
|
const key = String(deviceId);
|
|
135462
136408
|
const existing = cm.getAddonDevice(addonId, key);
|
|
@@ -205566,7 +206512,7 @@ globstar while`, t, d, e, f, m), this.matchOne(t.slice(d), e.slice(f), s)) retur
|
|
|
205566
206512
|
function createCoreCapService(options) {
|
|
205567
206513
|
const actions = {};
|
|
205568
206514
|
for (const { actionName, invoke } of options.actions) actions[actionName] = { handler: async (ctx) => {
|
|
205569
|
-
const raw =
|
|
206515
|
+
const raw = require_manifest_system_deps.deserializeTypedArrays(ctx.params);
|
|
205570
206516
|
return invoke(raw !== null && typeof raw === "object" && Object.keys(raw).length === 0 ? void 0 : raw, readOrigin(ctx));
|
|
205571
206517
|
} };
|
|
205572
206518
|
return {
|
|
@@ -206347,7 +207293,7 @@ globstar while`, t, d, e, f, m), this.matchOne(t.slice(d), e.slice(f), s)) retur
|
|
|
206347
207293
|
}
|
|
206348
207294
|
function emitRunnerEvent(category, sourceId, data) {
|
|
206349
207295
|
if (!capturedBroker) return;
|
|
206350
|
-
|
|
207296
|
+
require_manifest_system_deps.getBrokerEventBus(capturedBroker).emit(require_dist10.createEvent(category, {
|
|
206351
207297
|
type: "core",
|
|
206352
207298
|
id: sourceId,
|
|
206353
207299
|
nodeId: parentNodeId
|
|
@@ -206371,8 +207317,8 @@ globstar while`, t, d, e, f, m), this.matchOne(t.slice(d), e.slice(f), s)) retur
|
|
|
206371
207317
|
...applyRunnerNativeAllocator(process.env),
|
|
206372
207318
|
...env
|
|
206373
207319
|
};
|
|
206374
|
-
if (rssBudgetMb === void 0) delete childEnv[
|
|
206375
|
-
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);
|
|
206376
207322
|
const heapFlags = runnerHeapFlags(addons);
|
|
206377
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"}`);
|
|
206378
207324
|
const child = spawnFn(process.execPath, [...heapFlags, runnerPath], {
|
|
@@ -207105,12 +208051,12 @@ globstar while`, t, d, e, f, m), this.matchOne(t.slice(d), e.slice(f), s)) retur
|
|
|
207105
208051
|
return finalJob;
|
|
207106
208052
|
}
|
|
207107
208053
|
};
|
|
207108
|
-
exports.AGENT_CAP_FWD_ACTION =
|
|
207109
|
-
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;
|
|
207110
208056
|
exports.AGENT_READINESS_SERVICE_NAME = AGENT_READINESS_SERVICE_NAME;
|
|
207111
208057
|
exports.ALL_CAPABILITY_DEFINITIONS = require_dist10.ALL_CAPABILITY_DEFINITIONS;
|
|
207112
208058
|
exports.AddonApiFactory = AddonApiFactory;
|
|
207113
|
-
exports.AddonDepsManager =
|
|
208059
|
+
exports.AddonDepsManager = require_manifest_system_deps.AddonDepsManager;
|
|
207114
208060
|
exports.AddonEngineManager = AddonEngineManager;
|
|
207115
208061
|
exports.AddonHealthMonitor = AddonHealthMonitor;
|
|
207116
208062
|
exports.AddonInstaller = AddonInstaller;
|
|
@@ -207125,19 +208071,19 @@ globstar while`, t, d, e, f, m), this.matchOne(t.slice(d), e.slice(f), s)) retur
|
|
|
207125
208071
|
exports.CLUSTER_SECRET_MISMATCH_TYPE = CLUSTER_SECRET_MISMATCH_TYPE;
|
|
207126
208072
|
exports.CLUSTER_SECRET_REJECTED_EXIT_CODE = CLUSTER_SECRET_REJECTED_EXIT_CODE;
|
|
207127
208073
|
exports.CORE_CAP_SERVICE_NAME = CORE_CAP_SERVICE_NAME;
|
|
207128
|
-
exports.CapRouteError =
|
|
207129
|
-
exports.CapRouteResolver =
|
|
207130
|
-
exports.CapUsageRegistry =
|
|
207131
|
-
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;
|
|
207132
208078
|
exports.CapabilityRegistry = CapabilityRegistry;
|
|
207133
|
-
exports.CapabilityUnavailableError =
|
|
208079
|
+
exports.CapabilityUnavailableError = require_manifest_system_deps.CapabilityUnavailableError;
|
|
207134
208080
|
exports.ConfigManager = ConfigManager;
|
|
207135
208081
|
exports.ConfigStore = require_builtins_sqlite_storage_index.ConfigStore$1;
|
|
207136
208082
|
exports.ConsoleDestination = require_builtins_console_logging_index.ConsoleDestination$1;
|
|
207137
208083
|
exports.ConsoleLoggingAddon = require_builtins_console_logging_index.ConsoleLoggingAddon$1;
|
|
207138
208084
|
exports.CoreBlocksAddon = require_builtins_core_blocks_core_blocks_addon.CoreBlocksAddon;
|
|
207139
208085
|
exports.CustomActionRegistry = require_custom_action_registry.CustomActionRegistry;
|
|
207140
|
-
exports.DECISIVE_HEAP_SPACES =
|
|
208086
|
+
exports.DECISIVE_HEAP_SPACES = require_manifest_system_deps.DECISIVE_HEAP_SPACES;
|
|
207141
208087
|
exports.DEFAULT_DATA_PATH = DEFAULT_DATA_PATH;
|
|
207142
208088
|
exports.DEFAULT_LAN_HTTP_PORT = require_tls$1.DEFAULT_LAN_HTTP_PORT;
|
|
207143
208089
|
exports.DEFAULT_LOG_LEVEL = DEFAULT_LOG_LEVEL;
|
|
@@ -207145,33 +208091,33 @@ globstar while`, t, d, e, f, m), this.matchOne(t.slice(d), e.slice(f), s)) retur
|
|
|
207145
208091
|
exports.DEVICE_STATUS_METHOD = require_dist10.DEVICE_STATUS_METHOD;
|
|
207146
208092
|
exports.DataPlaneRegistry = DataPlaneRegistry;
|
|
207147
208093
|
exports.DeviceManagerAddon = require_builtins_device_manager_device_manager_addon.DeviceManagerAddon;
|
|
207148
|
-
exports.DeviceRegistry =
|
|
208094
|
+
exports.DeviceRegistry = require_manifest_system_deps.DeviceRegistry;
|
|
207149
208095
|
exports.DeviceStore = require_builtins_sqlite_storage_index.DeviceStore$1;
|
|
207150
|
-
exports.EMPTY_SOCKET_DIRECTION =
|
|
207151
|
-
exports.EMPTY_SOCKET_PLANE_BASELINE =
|
|
207152
|
-
exports.EVENT_PLANE_TOP_N =
|
|
207153
|
-
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;
|
|
207154
208100
|
exports.EngineManagerResolver = EngineManagerResolver;
|
|
207155
208101
|
exports.EventBus = EventBus;
|
|
207156
208102
|
exports.FeatureManager = FeatureManager;
|
|
207157
208103
|
exports.FilesystemStorageAddon = require_builtins_sqlite_storage_filesystem_storage_addon.FilesystemStorageAddon;
|
|
207158
208104
|
exports.FilesystemStorageProvider = require_builtins_sqlite_storage_filesystem_storage_addon.FilesystemStorageProvider;
|
|
207159
|
-
exports.FrameDecoder =
|
|
208105
|
+
exports.FrameDecoder = require_manifest_system_deps.FrameDecoder;
|
|
207160
208106
|
exports.FsStorageBackend = FsStorageBackend;
|
|
207161
208107
|
exports.HEALTH_MONITOR_GRACE_PERIOD_MS = HEALTH_MONITOR_GRACE_PERIOD_MS;
|
|
207162
208108
|
exports.HEALTH_MONITOR_RETRY_INTERVALS_MS = HEALTH_MONITOR_RETRY_INTERVALS_MS;
|
|
207163
208109
|
exports.HEALTH_MONITOR_TICK_MS = HEALTH_MONITOR_TICK_MS;
|
|
207164
|
-
exports.HEAP_RECLAIM_MIN_INTERVAL_MS =
|
|
207165
|
-
exports.HEAP_RECLAIM_STEADY_STATE_INTERVAL_MS =
|
|
207166
|
-
exports.HEAP_RECLAIM_TRIGGER_MB =
|
|
207167
|
-
exports.HEAP_SPACE_REPORT_MIN_MB =
|
|
207168
|
-
exports.HEAP_WATCH_INTERVAL_MS =
|
|
207169
|
-
exports.HEAP_WATCH_WARN_RATIO =
|
|
207170
|
-
exports.HUB_CAP_FWD_ACTION =
|
|
207171
|
-
exports.HUB_CAP_FWD_SERVICE =
|
|
207172
|
-
exports.HUB_MAIN_HEAP_WATCH_LABEL =
|
|
207173
|
-
exports.HUB_MAIN_RSS_BUDGET_MB =
|
|
207174
|
-
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;
|
|
207175
208121
|
exports.HubForwarderAddon = require_builtins_hub_forwarder_index.HubForwarderAddon$1;
|
|
207176
208122
|
exports.HubForwarderDestination = require_builtins_hub_forwarder_index.HubForwarderDestination$1;
|
|
207177
208123
|
exports.HubLogForwarder = HubLogForwarder;
|
|
@@ -207184,8 +208130,8 @@ globstar while`, t, d, e, f, m), this.matchOne(t.slice(d), e.slice(f), s)) retur
|
|
|
207184
208130
|
exports.LifecycleStateMachine = LifecycleStateMachine;
|
|
207185
208131
|
exports.LivenessMonitorAddon = require_builtins_liveness_monitor_liveness_monitor_addon.LivenessMonitorAddon;
|
|
207186
208132
|
exports.LocalAuthAddon = require_builtins_local_auth_local_auth_addon.LocalAuthAddon;
|
|
207187
|
-
exports.LocalChildClient =
|
|
207188
|
-
exports.LocalChildRegistry =
|
|
208133
|
+
exports.LocalChildClient = require_manifest_system_deps.LocalChildClient;
|
|
208134
|
+
exports.LocalChildRegistry = require_manifest_system_deps.LocalChildRegistry;
|
|
207189
208135
|
exports.LogManager = LogManager;
|
|
207190
208136
|
exports.LogRingBuffer = LogRingBuffer;
|
|
207191
208137
|
exports.LoggingGate = LoggingGate;
|
|
@@ -207194,7 +208140,7 @@ globstar while`, t, d, e, f, m), this.matchOne(t.slice(d), e.slice(f), s)) retur
|
|
|
207194
208140
|
exports.MAX_LEAF_VALIDITY_DAYS = require_tls$1.MAX_LEAF_VALIDITY_DAYS;
|
|
207195
208141
|
exports.METHOD_ACCESS_MAP = require_dist10.METHOD_ACCESS_MAP;
|
|
207196
208142
|
exports.ModelDownloadService = require_file_data_plane.ModelDownloadService;
|
|
207197
|
-
exports.NATIVE_PROVIDER_SERVICE_INFIX =
|
|
208143
|
+
exports.NATIVE_PROVIDER_SERVICE_INFIX = require_manifest_system_deps.NATIVE_PROVIDER_SERVICE_INFIX;
|
|
207198
208144
|
exports.NATIVE_SCAN_DEPTH = NATIVE_SCAN_DEPTH;
|
|
207199
208145
|
exports.NativeMetricsAddon = require_builtins_native_metrics_native_metrics_addon.default;
|
|
207200
208146
|
exports.NativeMetricsProvider = require_builtins_native_metrics_native_metrics_addon.NativeMetricsProvider;
|
|
@@ -207211,21 +208157,21 @@ globstar while`, t, d, e, f, m), this.matchOne(t.slice(d), e.slice(f), s)) retur
|
|
|
207211
208157
|
exports.PythonEnvManager = PythonEnvManager;
|
|
207212
208158
|
exports.QUARANTINE_DIRNAME = QUARANTINE_DIRNAME;
|
|
207213
208159
|
exports.RESTART_MARKER_FILE = RESTART_MARKER_FILE;
|
|
207214
|
-
exports.RSS_BUDGET_REANNOUNCE_MIN_MS =
|
|
207215
|
-
exports.RSS_BUDGET_RELEASE_RATIO =
|
|
207216
|
-
exports.RUNNER_HEAP_SNAPSHOT_ENV =
|
|
207217
|
-
exports.RUNNER_HEAP_WATCH_INTERVAL_MS =
|
|
207218
|
-
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;
|
|
207219
208165
|
exports.RUNTIME_DEFAULTS = require_dist10.RUNTIME_DEFAULTS;
|
|
207220
208166
|
exports.ReadinessRegistry = require_dist10.ReadinessRegistry;
|
|
207221
208167
|
exports.ReadinessTimeoutError = require_dist10.ReadinessTimeoutError;
|
|
207222
208168
|
exports.ReplEngine = ReplEngine;
|
|
207223
208169
|
exports.RingBuffer = RingBuffer;
|
|
207224
208170
|
exports.SERVER_AUTH_OID = require_tls$1.SERVER_AUTH_OID;
|
|
207225
|
-
exports.SOCKET_PLANE_TOP_N =
|
|
208171
|
+
exports.SOCKET_PLANE_TOP_N = require_manifest_system_deps.SOCKET_PLANE_TOP_N;
|
|
207226
208172
|
exports.ScopedLogger = ScopedLogger;
|
|
207227
208173
|
exports.ScopedTokenManager = require_builtins_local_auth_local_auth_addon.ScopedTokenManager;
|
|
207228
|
-
exports.SocketChannel =
|
|
208174
|
+
exports.SocketChannel = require_manifest_system_deps.SocketChannel;
|
|
207229
208175
|
exports.SqliteSettingsAddon = require_builtins_sqlite_storage_sqlite_settings_addon.SqliteSettingsAddon;
|
|
207230
208176
|
exports.SqliteSettingsBackend = require_builtins_sqlite_storage_sqlite_settings_addon.SqliteSettingsBackend;
|
|
207231
208177
|
exports.StagingArea = StagingArea;
|
|
@@ -207237,23 +208183,23 @@ globstar while`, t, d, e, f, m), this.matchOne(t.slice(d), e.slice(f), s)) retur
|
|
|
207237
208183
|
exports.SystemEventBus = SystemEventBus;
|
|
207238
208184
|
exports.TRADITIONAL_NATIVE_PACKAGES = TRADITIONAL_NATIVE_PACKAGES;
|
|
207239
208185
|
exports.ToastService = ToastService;
|
|
207240
|
-
exports.UDS_NO_ROUTE_PREFIX =
|
|
207241
|
-
exports.UdsLocalTransportClient =
|
|
207242
|
-
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;
|
|
207243
208189
|
exports.UserManager = require_builtins_local_auth_local_auth_addon.UserManager;
|
|
207244
208190
|
exports.WinstonDestination = require_builtins_winston_logging_index.WinstonDestination$1;
|
|
207245
208191
|
exports.WinstonLoggingAddon = require_builtins_winston_logging_index.WinstonLoggingAddon$1;
|
|
207246
|
-
exports.ZERO_LOOP_DELAY =
|
|
207247
|
-
exports.__resetCapUsageRegistryForTests =
|
|
208192
|
+
exports.ZERO_LOOP_DELAY = require_manifest_system_deps.ZERO_LOOP_DELAY;
|
|
208193
|
+
exports.__resetCapUsageRegistryForTests = require_manifest_system_deps.__resetCapUsageRegistryForTests;
|
|
207248
208194
|
exports.__resetLoggingGateForTests = __resetLoggingGateForTests;
|
|
207249
|
-
exports.adaptBrokerToCluster =
|
|
208195
|
+
exports.adaptBrokerToCluster = require_manifest_system_deps.adaptBrokerToCluster;
|
|
207250
208196
|
exports.addonSettingsCapability = require_dist10.addonSettingsCapability;
|
|
207251
208197
|
exports.allFamiliesListenHost = require_tls$1.allFamiliesListenHost;
|
|
207252
208198
|
exports.applyLanHttp = require_tls$1.applyLanHttp;
|
|
207253
208199
|
exports.bindPendingLanHttp = require_tls$1.bindPendingLanHttp;
|
|
207254
208200
|
exports.bootstrapSchema = bootstrapSchema;
|
|
207255
|
-
exports.brokerCallForCap =
|
|
207256
|
-
exports.brokerTransportLink =
|
|
208201
|
+
exports.brokerCallForCap = require_manifest_system_deps.brokerCallForCap;
|
|
208202
|
+
exports.brokerTransportLink = require_manifest_system_deps.brokerTransportLink;
|
|
207257
208203
|
Object.defineProperty(exports, "buildBinaryPath", {
|
|
207258
208204
|
enumerable: true,
|
|
207259
208205
|
get: function() {
|
|
@@ -207261,70 +208207,70 @@ globstar while`, t, d, e, f, m), this.matchOne(t.slice(d), e.slice(f), s)) retur
|
|
|
207261
208207
|
}
|
|
207262
208208
|
});
|
|
207263
208209
|
exports.buildCapRouters = buildCapRouters;
|
|
207264
|
-
exports.buildHeapSample =
|
|
207265
|
-
exports.buildLinkChain =
|
|
207266
|
-
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;
|
|
207267
208213
|
exports.buildNodeManifest = buildNodeManifest;
|
|
207268
208214
|
exports.buildStorageLocationRegistry = require_builtins_storage_orchestrator_storage_orchestrator_addon.buildStorageLocationRegistry;
|
|
207269
|
-
exports.buildUdsNativeCapProxy =
|
|
208215
|
+
exports.buildUdsNativeCapProxy = require_manifest_system_deps.buildUdsNativeCapProxy;
|
|
207270
208216
|
exports.builderMountedCapNames = builderMountedCapNames;
|
|
207271
208217
|
exports.callRegisterNodeWithRetry = callRegisterNodeWithRetry;
|
|
207272
|
-
exports.callWithServiceDiscovery =
|
|
208218
|
+
exports.callWithServiceDiscovery = require_manifest_system_deps.callWithServiceDiscovery;
|
|
207273
208219
|
exports.canServeDataPlane = canServeDataPlane;
|
|
207274
|
-
exports.capActionName =
|
|
207275
|
-
exports.capActionSuffix =
|
|
207276
|
-
exports.capBareAction =
|
|
207277
|
-
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;
|
|
207278
208224
|
exports.classifyAddonDir = classifyAddonDir;
|
|
207279
|
-
exports.classifyCapRoute =
|
|
208225
|
+
exports.classifyCapRoute = require_manifest_system_deps.classifyCapRoute;
|
|
207280
208226
|
exports.clearPendingRestart = clearPendingRestart;
|
|
207281
208227
|
exports.closeLanHttp = require_tls$1.closeLanHttp;
|
|
207282
|
-
exports.clusterEventTopic =
|
|
208228
|
+
exports.clusterEventTopic = require_manifest_system_deps.clusterEventTopic;
|
|
207283
208229
|
exports.clusterSecretMatches = clusterSecretMatches;
|
|
207284
208230
|
exports.collectCertIdentity = require_tls$1.collectCertIdentity;
|
|
207285
208231
|
exports.collectModelFiles = require_file_data_plane.collectModelFiles;
|
|
207286
208232
|
exports.contentTypeFor = require_file_data_plane.contentTypeFor;
|
|
207287
208233
|
exports.copyDirRecursive = copyDirRecursive;
|
|
207288
208234
|
exports.copyExtraFileDirs = copyExtraFileDirs;
|
|
207289
|
-
exports.createAddonContext =
|
|
207290
|
-
exports.createAddonDataPlaneFacility =
|
|
207291
|
-
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;
|
|
207292
208238
|
exports.createAuthenticatedFileServer = require_file_data_plane.createAuthenticatedFileServer;
|
|
207293
208239
|
exports.createBroker = createBroker2;
|
|
207294
|
-
exports.createBrokerDeviceManagerApi =
|
|
208240
|
+
exports.createBrokerDeviceManagerApi = require_manifest_system_deps.createBrokerDeviceManagerApi;
|
|
207295
208241
|
exports.createCoreCapService = createCoreCapService;
|
|
207296
|
-
exports.createDeferredHeapWatchSink =
|
|
208242
|
+
exports.createDeferredHeapWatchSink = require_manifest_system_deps.createDeferredHeapWatchSink;
|
|
207297
208243
|
exports.createDoorSettingsView = createDoorSettingsView;
|
|
207298
|
-
exports.createEventPlaneMeter =
|
|
207299
|
-
exports.createEventPlaneReader =
|
|
208244
|
+
exports.createEventPlaneMeter = require_manifest_system_deps.createEventPlaneMeter;
|
|
208245
|
+
exports.createEventPlaneReader = require_manifest_system_deps.createEventPlaneReader;
|
|
207300
208246
|
exports.createFileDataPlaneHandler = require_file_data_plane.createFileDataPlaneHandler;
|
|
207301
|
-
exports.createHubCapForwardService =
|
|
208247
|
+
exports.createHubCapForwardService = require_manifest_system_deps.createHubCapForwardService;
|
|
207302
208248
|
exports.createHubService = createHubService;
|
|
207303
|
-
exports.createKernelHwAccel =
|
|
207304
|
-
exports.createLocalTransport =
|
|
207305
|
-
exports.createLoopDelayMeter =
|
|
207306
|
-
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;
|
|
207307
208253
|
exports.createProcessService = createProcessService;
|
|
207308
208254
|
exports.createReadinessService = createReadinessService;
|
|
207309
208255
|
exports.createReadinessServiceForRegistry = createReadinessServiceForRegistry;
|
|
207310
208256
|
exports.createScopedProcessManager = createScopedProcessManager;
|
|
207311
|
-
exports.createSocketDirectionCounters =
|
|
207312
|
-
exports.createSocketPlaneMeter =
|
|
207313
|
-
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;
|
|
207314
208260
|
exports.createStreamProbeBrokerService = createStreamProbeBrokerService;
|
|
207315
|
-
exports.createUdsAddonContext =
|
|
207316
|
-
exports.createUdsEventBridge =
|
|
207317
|
-
exports.createUdsEventBus =
|
|
207318
|
-
exports.createUdsLogger =
|
|
207319
|
-
exports.createUdsLoggerWithControl =
|
|
207320
|
-
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;
|
|
207321
208267
|
exports.deleteModelFromDisk = require_file_data_plane.deleteModelFromDisk;
|
|
207322
208268
|
exports.deriveAgentListenPort = deriveAgentListenPort;
|
|
207323
208269
|
exports.describeProviderKindDrift = describeProviderKindDrift;
|
|
207324
|
-
exports.describeRss =
|
|
208270
|
+
exports.describeRss = require_manifest_system_deps.describeRss;
|
|
207325
208271
|
exports.detectWorkspacePackagesDir = detectWorkspacePackagesDir;
|
|
207326
|
-
exports.diffEventPlane =
|
|
207327
|
-
exports.diffSocketPlane =
|
|
208272
|
+
exports.diffEventPlane = require_manifest_system_deps.diffEventPlane;
|
|
208273
|
+
exports.diffSocketPlane = require_manifest_system_deps.diffSocketPlane;
|
|
207328
208274
|
Object.defineProperty(exports, "downloadBinary", {
|
|
207329
208275
|
enumerable: true,
|
|
207330
208276
|
get: function() {
|
|
@@ -207334,8 +208280,8 @@ globstar while`, t, d, e, f, m), this.matchOne(t.slice(d), e.slice(f), s)) retur
|
|
|
207334
208280
|
exports.downloadFile = require_file_data_plane.downloadFile;
|
|
207335
208281
|
exports.downloadModel = require_file_data_plane.downloadModel;
|
|
207336
208282
|
exports.emitDownForOwnedCaps = require_dist10.emitDownForOwnedCaps;
|
|
207337
|
-
exports.emitHeapDiagnosticReport =
|
|
207338
|
-
exports.encodeFrame =
|
|
208283
|
+
exports.emitHeapDiagnosticReport = require_manifest_system_deps.emitHeapDiagnosticReport;
|
|
208284
|
+
exports.encodeFrame = require_manifest_system_deps.encodeFrame;
|
|
207339
208285
|
exports.ensureAddonNativePrebuilds = ensureAddonNativePrebuilds;
|
|
207340
208286
|
Object.defineProperty(exports, "ensureBinary", {
|
|
207341
208287
|
enumerable: true,
|
|
@@ -207369,12 +208315,12 @@ globstar while`, t, d, e, f, m), this.matchOne(t.slice(d), e.slice(f), s)) retur
|
|
|
207369
208315
|
return _camstack_types_node.findInPath;
|
|
207370
208316
|
}
|
|
207371
208317
|
});
|
|
207372
|
-
exports.formatEventPlane =
|
|
207373
|
-
exports.formatHeapSpaces =
|
|
208318
|
+
exports.formatEventPlane = require_manifest_system_deps.formatEventPlane;
|
|
208319
|
+
exports.formatHeapSpaces = require_manifest_system_deps.formatHeapSpaces;
|
|
207374
208320
|
exports.formatLogLine = require_formatter.formatLogLine;
|
|
207375
|
-
exports.formatSocketPlane =
|
|
207376
|
-
exports.getBrokerEventBus =
|
|
207377
|
-
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;
|
|
207378
208324
|
Object.defineProperty(exports, "getFfmpegDownloadUrl", {
|
|
207379
208325
|
enumerable: true,
|
|
207380
208326
|
get: function() {
|
|
@@ -207383,9 +208329,9 @@ globstar while`, t, d, e, f, m), this.matchOne(t.slice(d), e.slice(f), s)) retur
|
|
|
207383
208329
|
});
|
|
207384
208330
|
exports.getLoggingGate = getLoggingGate;
|
|
207385
208331
|
exports.getModelFilePath = require_file_data_plane.getModelFilePath;
|
|
207386
|
-
exports.getMoleculerEventStats =
|
|
207387
|
-
exports.getOrInitReadinessRegistry =
|
|
207388
|
-
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;
|
|
207389
208335
|
exports.getPidStats = require_resource_monitor.getPidStats;
|
|
207390
208336
|
Object.defineProperty(exports, "getPlatformInfo", {
|
|
207391
208337
|
enumerable: true,
|
|
@@ -207401,14 +208347,15 @@ globstar while`, t, d, e, f, m), this.matchOne(t.slice(d), e.slice(f), s)) retur
|
|
|
207401
208347
|
});
|
|
207402
208348
|
exports.getRestartMarkerPath = getRestartMarkerPath;
|
|
207403
208349
|
exports.getSinglePidStats = require_resource_monitor.getSinglePidStats;
|
|
207404
|
-
exports.getWorkerDeviceRegistry =
|
|
208350
|
+
exports.getWorkerDeviceRegistry = require_manifest_system_deps.getWorkerDeviceRegistry;
|
|
207405
208351
|
exports.hasDotNode = hasDotNode;
|
|
207406
208352
|
exports.hashClusterSecret = hashClusterSecret;
|
|
207407
|
-
exports.heapSnapshotAuthorised =
|
|
207408
|
-
exports.heapSpaceField =
|
|
207409
|
-
exports.hubMainRssBudget =
|
|
207410
|
-
exports.installManifestNativeDeps =
|
|
207411
|
-
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;
|
|
207412
208359
|
exports.installPackageFromNpm = installPackageFromNpm;
|
|
207413
208360
|
Object.defineProperty(exports, "installPythonPackages", {
|
|
207414
208361
|
enumerable: true,
|
|
@@ -207422,7 +208369,7 @@ globstar while`, t, d, e, f, m), this.matchOne(t.slice(d), e.slice(f), s)) retur
|
|
|
207422
208369
|
return _camstack_types_node.installPythonRequirements;
|
|
207423
208370
|
}
|
|
207424
208371
|
});
|
|
207425
|
-
exports.ipcParentLink =
|
|
208372
|
+
exports.ipcParentLink = require_manifest_system_deps.ipcParentLink;
|
|
207426
208373
|
exports.isAddonDeploySource = isAddonDeploySource;
|
|
207427
208374
|
exports.isArrayOutputSchema = require_dist10.isArrayOutputSchema;
|
|
207428
208375
|
exports.isClusterSecretMismatchError = isClusterSecretMismatchError;
|
|
@@ -207432,55 +208379,55 @@ globstar while`, t, d, e, f, m), this.matchOne(t.slice(d), e.slice(f), s)) retur
|
|
|
207432
208379
|
exports.isSourceNewer = isSourceNewer;
|
|
207433
208380
|
exports.isolatedBuiltinPhase = isolatedBuiltinPhase;
|
|
207434
208381
|
exports.loadTlsCert = require_tls$1.loadTlsCert;
|
|
207435
|
-
exports.localEndpointPath =
|
|
207436
|
-
exports.localProviderLink =
|
|
207437
|
-
exports.mountNativeCapService =
|
|
207438
|
-
exports.nextRssBudgetState =
|
|
207439
|
-
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;
|
|
207440
208387
|
exports.parseRangeHeader = require_file_data_plane.parseRangeHeader;
|
|
207441
|
-
exports.parseRssBudgetMb =
|
|
208388
|
+
exports.parseRssBudgetMb = require_manifest_system_deps.parseRssBudgetMb;
|
|
207442
208389
|
exports.parseTokenizedUrl = require_file_data_plane.parseTokenizedUrl;
|
|
207443
208390
|
exports.partitionIsolatedBuiltinIds = partitionIsolatedBuiltinIds;
|
|
207444
208391
|
exports.proxyToUpstream = proxyToUpstream;
|
|
207445
208392
|
exports.quarantineAddonResidue = quarantineAddonResidue;
|
|
207446
208393
|
exports.readExtraSans = require_tls$1.readExtraSans;
|
|
207447
|
-
exports.readHeapSpaces =
|
|
208394
|
+
exports.readHeapSpaces = require_manifest_system_deps.readHeapSpaces;
|
|
207448
208395
|
exports.readLanHttpState = require_tls$1.readLanHttpState;
|
|
207449
|
-
exports.readMoleculerFanoutMode =
|
|
208396
|
+
exports.readMoleculerFanoutMode = require_manifest_system_deps.readMoleculerFanoutMode;
|
|
207450
208397
|
exports.readPendingRestart = readPendingRestart;
|
|
207451
208398
|
exports.readTlsAccessStatus = require_tls$1.readTlsAccessStatus;
|
|
207452
208399
|
exports.readTlsMode = require_tls$1.readTlsMode;
|
|
207453
208400
|
exports.readinessKey = require_dist10.readinessKey;
|
|
207454
|
-
exports.reclaimIntervalMs =
|
|
207455
|
-
exports.recordSocketFrame =
|
|
207456
|
-
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;
|
|
207457
208404
|
exports.registerLanHttpHandler = require_tls$1.registerLanHttpHandler;
|
|
207458
208405
|
exports.reissueTlsLeaf = require_tls$1.reissueTlsLeaf;
|
|
207459
208406
|
exports.resolveFilePath = require_file_data_plane.resolveFilePath;
|
|
207460
|
-
exports.resolveHwAccel =
|
|
207461
|
-
exports.resolveNpmInvocation =
|
|
208407
|
+
exports.resolveHwAccel = require_manifest_system_deps.resolveHwAccel;
|
|
208408
|
+
exports.resolveNpmInvocation = require_manifest_system_deps.resolveNpmInvocation;
|
|
207462
208409
|
exports.runHubAddonBoot = runHubAddonBoot;
|
|
207463
|
-
exports.runNpm =
|
|
207464
|
-
exports.sampleSocketDirection =
|
|
208410
|
+
exports.runNpm = require_manifest_system_deps.runNpm;
|
|
208411
|
+
exports.sampleSocketDirection = require_manifest_system_deps.sampleSocketDirection;
|
|
207465
208412
|
exports.scheduleSelfRestart = scheduleSelfRestart;
|
|
207466
208413
|
exports.scopeKey = require_dist10.scopeKey;
|
|
207467
208414
|
exports.scopesAllowAddon = require_dist10.scopesAllowAddon;
|
|
207468
208415
|
exports.scopesAllowDeviceCap = require_dist10.scopesAllowDeviceCap;
|
|
207469
208416
|
exports.selectAddonResidue = selectAddonResidue;
|
|
207470
|
-
exports.selectReportedSpaces =
|
|
207471
|
-
exports.serializeTypedArrays =
|
|
207472
|
-
exports.setHubConnected =
|
|
207473
|
-
exports.setNodeEventInterest =
|
|
207474
|
-
exports.shouldReclaim =
|
|
207475
|
-
exports.socketDirectionBytes =
|
|
207476
|
-
exports.socketDirectionMessages =
|
|
207477
|
-
exports.startHeapWatch =
|
|
207478
|
-
exports.startRunnerHeapWatch =
|
|
207479
|
-
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;
|
|
207480
208427
|
exports.stripCamstackDeps = stripCamstackDeps;
|
|
207481
|
-
exports.subscribePassthrough =
|
|
207482
|
-
exports.udsChildLogToWorkerEntry =
|
|
207483
|
-
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;
|
|
207484
208431
|
exports.validateUploadedTls = require_tls$1.validateUploadedTls;
|
|
207485
208432
|
exports.waitUntilReady = waitUntilReady;
|
|
207486
208433
|
exports.writeExtraSans = require_tls$1.writeExtraSans;
|
|
@@ -207515,7 +208462,7 @@ var require_dist4 = __commonJS({
|
|
|
207515
208462
|
"use strict";
|
|
207516
208463
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
207517
208464
|
var require_event_category = require_event_category_BaEgqJNv();
|
|
207518
|
-
var require_sleep =
|
|
208465
|
+
var require_sleep = require_sleep_CWWLTM6W();
|
|
207519
208466
|
var require_canonical_hash = require_canonical_hash_DNV8S5ET();
|
|
207520
208467
|
var require_enums2 = require_enums();
|
|
207521
208468
|
var require_err_msg = require_err_msg_COpsHMw2();
|
|
@@ -208225,6 +209172,48 @@ var require_dist4 = __commonJS({
|
|
|
208225
209172
|
unreadable
|
|
208226
209173
|
};
|
|
208227
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
|
+
}
|
|
208228
209217
|
var STREAM_QUALITY_LABELS = {
|
|
208229
209218
|
high: "High",
|
|
208230
209219
|
mid: "Mid",
|
|
@@ -208893,13 +209882,29 @@ var require_dist4 = __commonJS({
|
|
|
208893
209882
|
"recorder",
|
|
208894
209883
|
"analytics"
|
|
208895
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
|
+
});
|
|
208896
209899
|
var StorageMigrationMoveSchema = zod.z.object({
|
|
208897
209900
|
storageClass: StorageMigrationClassSchema,
|
|
208898
209901
|
fromLocationId: zod.z.string(),
|
|
208899
209902
|
toLocationId: zod.z.string(),
|
|
208900
209903
|
moverJobId: zod.z.string().nullable(),
|
|
208901
209904
|
state: RelocateJobStateSchema.nullable(),
|
|
208902
|
-
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()
|
|
208903
209908
|
});
|
|
208904
209909
|
var StorageMigrationJobSchema = zod.z.object({
|
|
208905
209910
|
jobId: zod.z.string(),
|
|
@@ -208945,6 +209950,52 @@ var require_dist4 = __commonJS({
|
|
|
208945
209950
|
})),
|
|
208946
209951
|
findings: zod.z.array(StorageMigrationFindingSchema)
|
|
208947
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
|
+
});
|
|
208948
209999
|
var SUB_DETECTION_TYPES = ["face", "plate"];
|
|
208949
210000
|
var RECOGNITION_TYPES = [
|
|
208950
210001
|
"face",
|
|
@@ -208995,6 +210046,8 @@ var require_dist4 = __commonJS({
|
|
|
208995
210046
|
updatedAt: zod.z.number()
|
|
208996
210047
|
});
|
|
208997
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";
|
|
208998
210051
|
var StorageLocationDeclarationSchema = zod.z.object({
|
|
208999
210052
|
/**
|
|
209000
210053
|
* Global location identifier, e.g. `recordings` or `recordingsLow`.
|
|
@@ -209014,6 +210067,19 @@ var require_dist4 = __commonJS({
|
|
|
209014
210067
|
*/
|
|
209015
210068
|
cardinality: zod.z.enum(["single", "multi"]),
|
|
209016
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
|
+
/**
|
|
209017
210083
|
* When set, the default instance for this location inherits its resolved
|
|
209018
210084
|
* root from the named location's default instance. Useful for derivative
|
|
209019
210085
|
* slots (e.g. `recordingsLow` → `recordings`) so operators only need to
|
|
@@ -220946,8 +222012,10 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
220946
222012
|
lastSeen: zod.z.number(),
|
|
220947
222013
|
/** Frame-rate position history (subject to maxPositionHistory cap). */
|
|
220948
222014
|
positions: zod.z.array(TrackPositionSchema).readonly(),
|
|
220949
|
-
/** Periodic snapshots at snapshotIntervalMs cadence
|
|
220950
|
-
*
|
|
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. */
|
|
220951
222019
|
snapshots: zod.z.array(TrackSnapshotSchema).readonly(),
|
|
220952
222020
|
/** Deduplicated zones the track has entered at least once. Zone IDS. */
|
|
220953
222021
|
zonesVisited: zod.z.array(zod.z.string()).readonly(),
|
|
@@ -221930,6 +222998,21 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
221930
222998
|
* it to zero.
|
|
221931
222999
|
*/
|
|
221932
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
|
+
}),
|
|
221933
223016
|
/** Every relocate job this addon knows about, newest first (in RAM: the
|
|
221934
223017
|
* move is resumable, so a lost list costs nothing but the display). */
|
|
221935
223018
|
listRelocateMediaJobs: require_sleep.method(zod.z.object({}), zod.z.array(RelocateJobSchema).readonly(), {
|
|
@@ -224634,6 +225717,35 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
224634
225717
|
cancel: require_sleep.method(zod.z.object({ jobId: zod.z.string() }), zod.z.object({ cancelled: zod.z.boolean() }), {
|
|
224635
225718
|
kind: "mutation",
|
|
224636
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"
|
|
224637
225749
|
})
|
|
224638
225750
|
}
|
|
224639
225751
|
};
|
|
@@ -225143,7 +226255,20 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
225143
226255
|
*/
|
|
225144
226256
|
scanned: zod.z.number(),
|
|
225145
226257
|
/** True when the backend could not consider every row that passed the filter. */
|
|
225146
|
-
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()
|
|
225147
226272
|
});
|
|
225148
226273
|
var VectorDeleteInputSchema = zod.z.object({
|
|
225149
226274
|
index: zod.z.string(),
|
|
@@ -225162,6 +226287,35 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
225162
226287
|
id: zod.z.string(),
|
|
225163
226288
|
metadata: VectorMetadataSchema
|
|
225164
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
|
+
});
|
|
225165
226319
|
var VectorStatsInputSchema = zod.z.object({ index: zod.z.string() });
|
|
225166
226320
|
var VectorStatsResultSchema = zod.z.object({
|
|
225167
226321
|
/** Provider id, so an operator can tell brute force from an ANN index. */
|
|
@@ -225192,6 +226346,10 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
225192
226346
|
query: require_sleep.method(VectorQueryInputSchema, VectorQueryResultSchema, { auth: "admin" }),
|
|
225193
226347
|
/** Metadata by id, no vectors — see {@link VectorGetResultSchema}. */
|
|
225194
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" }),
|
|
225195
226353
|
deleteByIds: require_sleep.method(VectorDeleteInputSchema, VectorDeleteResultSchema, {
|
|
225196
226354
|
kind: "mutation",
|
|
225197
226355
|
auth: "admin"
|
|
@@ -231662,6 +232820,20 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
231662
232820
|
kind: "query",
|
|
231663
232821
|
auth: "admin"
|
|
231664
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
|
+
}),
|
|
231665
232837
|
/** Cancel a running or queued relocate job. A queued job never runs. */
|
|
231666
232838
|
cancelRelocateJob: require_sleep.method(zod.z.object({ jobId: zod.z.string() }), zod.z.object({ cancelled: zod.z.boolean() }), {
|
|
231667
232839
|
kind: "mutation",
|
|
@@ -240602,6 +241774,12 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
240602
241774
|
addonId: null,
|
|
240603
241775
|
access: "create"
|
|
240604
241776
|
},
|
|
241777
|
+
"pipelineAnalytics.countRelocatableMedia": {
|
|
241778
|
+
capName: "pipeline-analytics",
|
|
241779
|
+
capScope: "device",
|
|
241780
|
+
addonId: null,
|
|
241781
|
+
access: "view"
|
|
241782
|
+
},
|
|
240605
241783
|
"pipelineAnalytics.countUnstampedEventMedia": {
|
|
240606
241784
|
capName: "pipeline-analytics",
|
|
240607
241785
|
capScope: "device",
|
|
@@ -241766,6 +242944,12 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
241766
242944
|
addonId: null,
|
|
241767
242945
|
access: "view"
|
|
241768
242946
|
},
|
|
242947
|
+
"recording.getRelocateResidue": {
|
|
242948
|
+
capName: "recording",
|
|
242949
|
+
capScope: "system",
|
|
242950
|
+
addonId: null,
|
|
242951
|
+
access: "view"
|
|
242952
|
+
},
|
|
241769
242953
|
"recording.getStorageMigrationMoveStatus": {
|
|
241770
242954
|
capName: "recording",
|
|
241771
242955
|
capScope: "system",
|
|
@@ -242312,12 +243496,30 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
242312
243496
|
addonId: null,
|
|
242313
243497
|
access: "create"
|
|
242314
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
|
+
},
|
|
242315
243511
|
"storageMigration.plan": {
|
|
242316
243512
|
capName: "storage-migration",
|
|
242317
243513
|
capScope: "system",
|
|
242318
243514
|
addonId: null,
|
|
242319
243515
|
access: "view"
|
|
242320
243516
|
},
|
|
243517
|
+
"storageMigration.residue": {
|
|
243518
|
+
capName: "storage-migration",
|
|
243519
|
+
capScope: "system",
|
|
243520
|
+
addonId: null,
|
|
243521
|
+
access: "view"
|
|
243522
|
+
},
|
|
242321
243523
|
"storageMigration.start": {
|
|
242322
243524
|
capName: "storage-migration",
|
|
242323
243525
|
capScope: "system",
|
|
@@ -243152,6 +244354,12 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
243152
244354
|
addonId: null,
|
|
243153
244355
|
access: "delete"
|
|
243154
244356
|
},
|
|
244357
|
+
"vectorStore.fetchByIds": {
|
|
244358
|
+
capName: "vector-store",
|
|
244359
|
+
capScope: "system",
|
|
244360
|
+
addonId: null,
|
|
244361
|
+
access: "view"
|
|
244362
|
+
},
|
|
243155
244363
|
"vectorStore.getByIds": {
|
|
243156
244364
|
capName: "vector-store",
|
|
243157
244365
|
capScope: "system",
|
|
@@ -243164,6 +244372,12 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
243164
244372
|
addonId: null,
|
|
243165
244373
|
access: "view"
|
|
243166
244374
|
},
|
|
244375
|
+
"vectorStore.scan": {
|
|
244376
|
+
capName: "vector-store",
|
|
244377
|
+
capScope: "system",
|
|
244378
|
+
addonId: null,
|
|
244379
|
+
access: "view"
|
|
244380
|
+
},
|
|
243167
244381
|
"vectorStore.stats": {
|
|
243168
244382
|
capName: "vector-store",
|
|
243169
244383
|
capScope: "system",
|
|
@@ -246338,6 +247552,7 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
246338
247552
|
cancelStorageMigrationMove: (input) => dispatch("recording", "cancelStorageMigrationMove", "mutation", input),
|
|
246339
247553
|
relocateFootage: (input) => dispatch("recording", "relocateFootage", "mutation", input),
|
|
246340
247554
|
listRelocateJobs: (input) => dispatch("recording", "listRelocateJobs", "query", input),
|
|
247555
|
+
getRelocateResidue: (input) => dispatch("recording", "getRelocateResidue", "query", input),
|
|
246341
247556
|
cancelRelocateJob: (input) => dispatch("recording", "cancelRelocateJob", "mutation", input),
|
|
246342
247557
|
planStorageRebalance: (input) => dispatch("recording", "planStorageRebalance", "query", input),
|
|
246343
247558
|
startStorageRebalance: (input) => dispatch("recording", "startStorageRebalance", "mutation", input)
|
|
@@ -246401,7 +247616,10 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
246401
247616
|
plan: (input) => dispatch("storageMigration", "plan", "query", input),
|
|
246402
247617
|
start: (input) => dispatch("storageMigration", "start", "mutation", input),
|
|
246403
247618
|
status: (input) => dispatch("storageMigration", "status", "query", input),
|
|
246404
|
-
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)
|
|
246405
247623
|
},
|
|
246406
247624
|
streamBroker: {
|
|
246407
247625
|
fetchEventMedia: (input) => dispatch("streamBroker", "fetchEventMedia", "mutation", input),
|
|
@@ -249855,6 +251073,7 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
249855
251073
|
exports.REACHABILITY_PROBE_TIMEOUT_MS = REACHABILITY_PROBE_TIMEOUT_MS;
|
|
249856
251074
|
exports.RECOGNITION_TYPES = RECOGNITION_TYPES;
|
|
249857
251075
|
exports.RECORDING_EXPORT_MAX_READ_BYTES = RECORDING_EXPORT_MAX_READ_BYTES;
|
|
251076
|
+
exports.REDACTED_SECRET = REDACTED_SECRET;
|
|
249858
251077
|
exports.RESERVED_BINDING_NAMES = RESERVED_BINDING_NAMES;
|
|
249859
251078
|
exports.RESTORED_CAP_NAMES = RESTORED_CAP_NAMES;
|
|
249860
251079
|
exports.ROOT_BUCKET_KEY = ROOT_BUCKET_KEY;
|
|
@@ -249893,11 +251112,15 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
249893
251112
|
exports.RecordingTriggersSchema = RecordingTriggersSchema;
|
|
249894
251113
|
exports.RecordingWeekdaySchema = RecordingWeekdaySchema;
|
|
249895
251114
|
exports.RedirectLoginMethodSchema = RedirectLoginMethodSchema;
|
|
251115
|
+
exports.RelocatableMediaCountInputSchema = RelocatableMediaCountInputSchema;
|
|
251116
|
+
exports.RelocatableMediaCountSchema = RelocatableMediaCountSchema;
|
|
249896
251117
|
exports.RelocateFootageClassSchema = RelocateFootageClassSchema;
|
|
249897
251118
|
exports.RelocateFootageInputSchema = RelocateFootageInputSchema;
|
|
249898
251119
|
exports.RelocateJobSchema = RelocateJobSchema;
|
|
249899
251120
|
exports.RelocateJobStateSchema = RelocateJobStateSchema;
|
|
249900
251121
|
exports.RelocateMediaInputSchema = RelocateMediaInputSchema;
|
|
251122
|
+
exports.RelocateResidueInputSchema = RelocateResidueInputSchema;
|
|
251123
|
+
exports.RelocateResidueSchema = RelocateResidueSchema;
|
|
249901
251124
|
exports.RenderedAsSchema = RenderedAsSchema;
|
|
249902
251125
|
exports.ReportMotionInputSchema = ReportMotionInputSchema;
|
|
249903
251126
|
exports.ReportedFailureContributionSchema = ReportedFailureContributionSchema;
|
|
@@ -249948,6 +251171,7 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
249948
251171
|
exports.SOURCE_CAP_CHANGED_AT_FIELD = SOURCE_CAP_CHANGED_AT_FIELD;
|
|
249949
251172
|
exports.SOURCE_DEVICE_TYPES = SOURCE_DEVICE_TYPES;
|
|
249950
251173
|
exports.SOURCE_INFO_METADATA_KEY = SOURCE_INFO_METADATA_KEY;
|
|
251174
|
+
exports.STORAGE_ACCESS_FALLBACK = STORAGE_ACCESS_FALLBACK;
|
|
249951
251175
|
exports.STREAM_PROFILE_META = STREAM_PROFILE_META;
|
|
249952
251176
|
exports.STREAM_QUALITY_LABELS = STREAM_QUALITY_LABELS;
|
|
249953
251177
|
exports.SUB_DETECTION_TYPES = SUB_DETECTION_TYPES;
|
|
@@ -249997,6 +251221,7 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
249997
251221
|
exports.StartEmbeddedInputSchema = StartEmbeddedInputSchema;
|
|
249998
251222
|
exports.StationaryObjectSchema = StationaryObjectSchema;
|
|
249999
251223
|
exports.StorageAbortUploadInputSchema = AbortUploadInputSchema;
|
|
251224
|
+
exports.StorageAccessSchema = StorageAccessSchema;
|
|
250000
251225
|
exports.StorageBeginDownloadInputSchema = BeginDownloadInputSchema;
|
|
250001
251226
|
exports.StorageBeginDownloadResultSchema = BeginDownloadResultSchema;
|
|
250002
251227
|
exports.StorageBeginUploadInputSchema = BeginUploadInputSchema;
|
|
@@ -250009,18 +251234,23 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
250009
251234
|
exports.StorageLocationTypeSchema = StorageLocationTypeSchema;
|
|
250010
251235
|
exports.StorageMigrationClassSchema = StorageMigrationClassSchema;
|
|
250011
251236
|
exports.StorageMigrationDestinationsSchema = StorageMigrationDestinationsSchema;
|
|
251237
|
+
exports.StorageMigrationDrainInputSchema = StorageMigrationDrainInputSchema;
|
|
250012
251238
|
exports.StorageMigrationFindingCodeSchema = StorageMigrationFindingCodeSchema;
|
|
250013
251239
|
exports.StorageMigrationFindingSchema = StorageMigrationFindingSchema;
|
|
250014
251240
|
exports.StorageMigrationFootageMoveInputSchema = StorageMigrationFootageMoveInputSchema;
|
|
250015
251241
|
exports.StorageMigrationInputSchema = StorageMigrationInputSchema;
|
|
250016
251242
|
exports.StorageMigrationJobSchema = StorageMigrationJobSchema;
|
|
251243
|
+
exports.StorageMigrationLaneSchema = StorageMigrationLaneSchema;
|
|
250017
251244
|
exports.StorageMigrationLeaseInputSchema = StorageMigrationLeaseInputSchema;
|
|
250018
251245
|
exports.StorageMigrationMediaMoveInputSchema = StorageMigrationMediaMoveInputSchema;
|
|
250019
251246
|
exports.StorageMigrationModeSchema = StorageMigrationModeSchema;
|
|
251247
|
+
exports.StorageMigrationMoveProgressSchema = StorageMigrationMoveProgressSchema;
|
|
250020
251248
|
exports.StorageMigrationMoveSchema = StorageMigrationMoveSchema;
|
|
251249
|
+
exports.StorageMigrationMoverSchema = StorageMigrationMoverSchema;
|
|
250021
251250
|
exports.StorageMigrationParticipantSchema = StorageMigrationParticipantSchema;
|
|
250022
251251
|
exports.StorageMigrationPhaseSchema = StorageMigrationPhaseSchema;
|
|
250023
251252
|
exports.StorageMigrationPlanSchema = StorageMigrationPlanSchema;
|
|
251253
|
+
exports.StorageMigrationResidueSchema = StorageMigrationResidueSchema;
|
|
250024
251254
|
exports.StorageProviderInfoSchema = ProviderInfoSchema;
|
|
250025
251255
|
exports.StorageReadChunkInputSchema = ReadChunkInputSchema;
|
|
250026
251256
|
exports.StorageTestLocationResultSchema = TestLocationResultSchema;
|
|
@@ -250214,6 +251444,7 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
250214
251444
|
exports.clusterStepSettingKey = clusterStepSettingKey;
|
|
250215
251445
|
exports.collectHydratedFieldEntries = require_sleep.collectHydratedFieldEntries;
|
|
250216
251446
|
exports.collectHydratedFieldValues = require_sleep.collectHydratedFieldValues;
|
|
251447
|
+
exports.collectSecretConfigKeys = collectSecretConfigKeys;
|
|
250217
251448
|
exports.colorCapability = colorCapability;
|
|
250218
251449
|
exports.colorForKind = colorForKind;
|
|
250219
251450
|
exports.commitWatchdogRestart = commitWatchdogRestart;
|
|
@@ -250354,6 +251585,7 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
250354
251585
|
exports.isRestoredCap = isRestoredCap;
|
|
250355
251586
|
exports.isSameAddonId = isSameAddonId;
|
|
250356
251587
|
exports.isScheduleActive = isScheduleActive;
|
|
251588
|
+
exports.isSecretConfigField = isSecretConfigField;
|
|
250357
251589
|
exports.isSoftwareDecode = require_canonical_hash.isSoftwareDecode;
|
|
250358
251590
|
exports.isSourceCap = isSourceCap;
|
|
250359
251591
|
exports.isSystemDelivery = isSystemDelivery;
|
|
@@ -250501,6 +251733,7 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
250501
251733
|
exports.runtimeDevices = runtimeDevices;
|
|
250502
251734
|
exports.runtimeStatePolicyFor = runtimeStatePolicyFor;
|
|
250503
251735
|
exports.sceneMonitorCapability = sceneMonitorCapability;
|
|
251736
|
+
exports.schemaDeclaresAnyField = schemaDeclaresAnyField;
|
|
250504
251737
|
exports.scopeInherits = scopeInherits;
|
|
250505
251738
|
exports.scopeKey = require_sleep.scopeKey;
|
|
250506
251739
|
exports.scopesAllowAddon = scopesAllowAddon;
|