@camstack/addon-post-analysis 1.2.145 → 1.2.147
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.
- package/dist/{dist-C8RL0Hzy.js → dist-1xYuXmDS.js} +131 -12
- package/dist/{dist-3FJkk7Mx.mjs → dist-4eP-xmjY.mjs} +131 -12
- package/dist/embedding-encoder/index.js +1 -1
- package/dist/embedding-encoder/index.mjs +1 -1
- package/dist/pipeline-analytics/_stub.js +1 -1
- package/dist/pipeline-analytics/{_virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-Bb5cXFSY.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-B8VSQDMs.mjs} +3 -3
- package/dist/pipeline-analytics/{_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-DC69_fX2.mjs → _virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-C7KsMvFR.mjs} +1 -1
- package/dist/pipeline-analytics/{hostInit-Btr3CZPD.mjs → hostInit-Dt9TGWyM.mjs} +3 -3
- package/dist/pipeline-analytics/index.js +189 -126
- package/dist/pipeline-analytics/index.mjs +189 -126
- package/dist/pipeline-analytics/remoteEntry.js +1 -1
- package/package.json +1 -1
|
@@ -8309,18 +8309,61 @@ var RelocateFootageInputSchema = object({
|
|
|
8309
8309
|
* `RecordingConfig.enabled` or camera wrapper bindings. */
|
|
8310
8310
|
var StorageMigrationLeaseInputSchema = object({ leaseId: string().min(1) });
|
|
8311
8311
|
var StorageMigrationFootageMoveInputSchema = RelocateFootageInputSchema.extend({ leaseId: string().min(1) });
|
|
8312
|
+
/**
|
|
8313
|
+
* What a `relocateMedia` pass DOES. One engine, three passes — never a second
|
|
8314
|
+
* mover (the engine already walks both collections with a timestamp cursor and
|
|
8315
|
+
* already has a stamp-without-copy path).
|
|
8316
|
+
*
|
|
8317
|
+
* - `move` — the default and the historical behaviour: event-media and
|
|
8318
|
+
* retrain blobs move to `toLocationId` and their rows are
|
|
8319
|
+
* stamped. The enrolled gallery is skipped (D197).
|
|
8320
|
+
* - `seal` — ROWS ONLY, no bytes. Every row whose `locationId` is NULL is
|
|
8321
|
+
* stamped with `toLocationId`. `toLocationId` here is the id the
|
|
8322
|
+
* bytes ALREADY sit on — today's `eventMedia` default — because
|
|
8323
|
+
* a NULL row means "wherever `eventMedia` points *now*", and the
|
|
8324
|
+
* instant a repoint moves that pointer the row reads from the
|
|
8325
|
+
* new disk while its bytes are on the old one.
|
|
8326
|
+
* - `gallery` — the inverse selection of `move`: ONLY the retention-exempt
|
|
8327
|
+
* (enrolled-gallery) rows, which `move` deliberately skips.
|
|
8328
|
+
* `galleryMedia` is `cardinality: 'single'`, so this pass can
|
|
8329
|
+
* never run beside a live second location: it is stop-the-world
|
|
8330
|
+
* by construction, which is acceptable only because the gallery
|
|
8331
|
+
* is a few KB per enrolled sample.
|
|
8332
|
+
*/
|
|
8333
|
+
var MediaRelocateModeSchema = _enum([
|
|
8334
|
+
"move",
|
|
8335
|
+
"seal",
|
|
8336
|
+
"gallery"
|
|
8337
|
+
]);
|
|
8312
8338
|
var RelocateMediaInputSchema = object({
|
|
8313
8339
|
toLocationId: string(),
|
|
8314
|
-
throttleMbps: number().min(1).max(1e3).optional()
|
|
8340
|
+
throttleMbps: number().min(1).max(1e3).optional(),
|
|
8341
|
+
/** Omitted = `move`, the pre-existing behaviour. */
|
|
8342
|
+
mode: MediaRelocateModeSchema.optional()
|
|
8343
|
+
});
|
|
8344
|
+
/** How many rows still carry NO `locationId` — the population a repoint would
|
|
8345
|
+
* silently re-aim at a disk that does not hold their bytes. Zero is the only
|
|
8346
|
+
* value that permits a non-blocking `eventMedia` cutover. */
|
|
8347
|
+
var UnstampedEventMediaCountSchema = object({
|
|
8348
|
+
media: number().int().nonnegative(),
|
|
8349
|
+
retrainFrames: number().int().nonnegative(),
|
|
8350
|
+
total: number().int().nonnegative()
|
|
8315
8351
|
});
|
|
8316
8352
|
var StorageMigrationMediaMoveInputSchema = RelocateMediaInputSchema.extend({ leaseId: string().min(1) });
|
|
8317
|
-
/** The independently selectable logical storage classes
|
|
8318
|
-
*
|
|
8319
|
-
*
|
|
8353
|
+
/** The independently selectable logical storage classes — every class
|
|
8354
|
+
* `storage.listLocationDeclarations` reports, so an operator never meets a
|
|
8355
|
+
* Zod enum error where they should meet an explanation.
|
|
8356
|
+
*
|
|
8357
|
+
* `recordings` encompasses the high and mid segment profiles; `recordingsLow`
|
|
8358
|
+
* is low segments; `eventMedia` is post-analysis blobs; `galleryMedia` is the
|
|
8359
|
+
* enrolled gallery; `backups` is the system backup archive. The last two have
|
|
8360
|
+
* their own rules — see {@link StorageMigrationFindingCodeSchema}. */
|
|
8320
8361
|
var StorageMigrationClassSchema = _enum([
|
|
8321
8362
|
"recordings",
|
|
8322
8363
|
"recordingsLow",
|
|
8323
|
-
"eventMedia"
|
|
8364
|
+
"eventMedia",
|
|
8365
|
+
"backups",
|
|
8366
|
+
"galleryMedia"
|
|
8324
8367
|
]);
|
|
8325
8368
|
/** A destination is always an existing, fully-qualified location id. The
|
|
8326
8369
|
* migration API intentionally never changes a source location's `basePath`:
|
|
@@ -8328,20 +8371,56 @@ var StorageMigrationClassSchema = _enum([
|
|
|
8328
8371
|
var StorageMigrationDestinationsSchema = object({
|
|
8329
8372
|
recordings: string().min(1).optional(),
|
|
8330
8373
|
recordingsLow: string().min(1).optional(),
|
|
8331
|
-
eventMedia: string().min(1).optional()
|
|
8374
|
+
eventMedia: string().min(1).optional(),
|
|
8375
|
+
backups: string().min(1).optional(),
|
|
8376
|
+
galleryMedia: string().min(1).optional()
|
|
8332
8377
|
}).refine((value) => Object.keys(value).length > 0, { message: "select at least one storage class" });
|
|
8378
|
+
/**
|
|
8379
|
+
* How a migration sequences the cutover against the byte move.
|
|
8380
|
+
*
|
|
8381
|
+
* - `blocking` — the historical order: pause, move every byte, repoint,
|
|
8382
|
+
* resume. Recording is stopped for the whole move. Right
|
|
8383
|
+
* for a small or a cold class, and the only legal mode for
|
|
8384
|
+
* a `cardinality: 'single'` class.
|
|
8385
|
+
* - `nonBlocking` — repoint FIRST, drain behind: seal, pause, repoint,
|
|
8386
|
+
* refresh, resume, then move the past with everything
|
|
8387
|
+
* running. The pause is three bounded instants (a detach +
|
|
8388
|
+
* attach round, a write-gate drain, a lease) instead of one
|
|
8389
|
+
* bounded by bytes. 1.09 TB at 7–14 MB/s is thirty hours of
|
|
8390
|
+
* stopped recording under `blocking`; the same move is
|
|
8391
|
+
* seconds of stopped recording under `nonBlocking`.
|
|
8392
|
+
*
|
|
8393
|
+
* The mode is on the JOB, not only on the input, because `status` is where an
|
|
8394
|
+
* operator finds out which one is running.
|
|
8395
|
+
*/
|
|
8396
|
+
var StorageMigrationModeSchema = _enum(["blocking", "nonBlocking"]);
|
|
8333
8397
|
/** Shared input for planning and starting an orchestrated storage migration. */
|
|
8334
8398
|
var StorageMigrationInputSchema = object({
|
|
8335
8399
|
destinations: StorageMigrationDestinationsSchema,
|
|
8336
|
-
throttleMbps: number().min(1).max(1e3).optional()
|
|
8400
|
+
throttleMbps: number().min(1).max(1e3).optional(),
|
|
8401
|
+
/** Omitted = `blocking`, which stays the default. */
|
|
8402
|
+
mode: StorageMigrationModeSchema.optional()
|
|
8337
8403
|
});
|
|
8338
|
-
/**
|
|
8339
|
-
*
|
|
8340
|
-
*
|
|
8404
|
+
/**
|
|
8405
|
+
* The durable coordinator state machine.
|
|
8406
|
+
*
|
|
8407
|
+
* `blocking`:
|
|
8408
|
+
* planning → pausing → moving → verifying → repointing → refreshing → resuming → done
|
|
8409
|
+
*
|
|
8410
|
+
* `nonBlocking`:
|
|
8411
|
+
* planning → sealing → pausing → repointing → refreshing → resuming → draining → verifying → done
|
|
8412
|
+
*
|
|
8413
|
+
* Same phases, different order plus two new ones — not a second mover.
|
|
8414
|
+
* `sealing` closes the `eventMedia` NULL-row hole BEFORE anything is paused;
|
|
8415
|
+
* `draining` runs the same movers UNLEASED, after every writer is back up.
|
|
8416
|
+
* `repointing` is still the only phase that changes a default location.
|
|
8417
|
+
*/
|
|
8341
8418
|
var StorageMigrationPhaseSchema = _enum([
|
|
8342
8419
|
"planning",
|
|
8420
|
+
"sealing",
|
|
8343
8421
|
"pausing",
|
|
8344
8422
|
"moving",
|
|
8423
|
+
"draining",
|
|
8345
8424
|
"verifying",
|
|
8346
8425
|
"repointing",
|
|
8347
8426
|
"refreshing",
|
|
@@ -8366,6 +8445,9 @@ var StorageMigrationMoveSchema = object({
|
|
|
8366
8445
|
var StorageMigrationJobSchema = object({
|
|
8367
8446
|
jobId: string(),
|
|
8368
8447
|
phase: StorageMigrationPhaseSchema,
|
|
8448
|
+
/** Which order this job is running. `status` is the only place an operator
|
|
8449
|
+
* can tell a seconds-long cutover from a thirty-hour one. */
|
|
8450
|
+
mode: StorageMigrationModeSchema,
|
|
8369
8451
|
destinations: StorageMigrationDestinationsSchema,
|
|
8370
8452
|
throttleMbps: number(),
|
|
8371
8453
|
moves: array(StorageMigrationMoveSchema),
|
|
@@ -8378,13 +8460,30 @@ var StorageMigrationJobSchema = object({
|
|
|
8378
8460
|
finishedAt: number().nullable(),
|
|
8379
8461
|
error: string().nullable()
|
|
8380
8462
|
});
|
|
8463
|
+
var StorageMigrationFindingSchema = object({
|
|
8464
|
+
code: _enum([
|
|
8465
|
+
"sharesDeviceWithSource",
|
|
8466
|
+
"deviceIdentityUnknown",
|
|
8467
|
+
"unstampedEventMediaRows",
|
|
8468
|
+
"blockingOnly",
|
|
8469
|
+
"noMover"
|
|
8470
|
+
]),
|
|
8471
|
+
storageClass: StorageMigrationClassSchema,
|
|
8472
|
+
/** Human-readable, already carrying the ids and counts. */
|
|
8473
|
+
message: string()
|
|
8474
|
+
});
|
|
8381
8475
|
var StorageMigrationPlanSchema = object({
|
|
8382
8476
|
destinations: StorageMigrationDestinationsSchema,
|
|
8477
|
+
/** The mode this plan was built for. A plan is only valid for its mode: the
|
|
8478
|
+
* `eventMedia` seal gate and the single-cardinality refusal both depend on
|
|
8479
|
+
* it. */
|
|
8480
|
+
mode: StorageMigrationModeSchema,
|
|
8383
8481
|
moves: array(object({
|
|
8384
8482
|
storageClass: StorageMigrationClassSchema,
|
|
8385
8483
|
fromLocationId: string(),
|
|
8386
8484
|
toLocationId: string()
|
|
8387
|
-
}))
|
|
8485
|
+
})),
|
|
8486
|
+
findings: array(StorageMigrationFindingSchema)
|
|
8388
8487
|
});
|
|
8389
8488
|
/**
|
|
8390
8489
|
* `StorageLocationType` — an addon-declared id that identifies the *kind* of
|
|
@@ -20209,6 +20308,17 @@ var pipelineAnalyticsCapability = {
|
|
|
20209
20308
|
kind: "mutation",
|
|
20210
20309
|
auth: "admin"
|
|
20211
20310
|
}),
|
|
20311
|
+
/**
|
|
20312
|
+
* How many media / retrain rows still carry NO `locationId`.
|
|
20313
|
+
*
|
|
20314
|
+
* A NULL row means "wherever `eventMedia` points NOW", so the instant a
|
|
20315
|
+
* repoint moves that pointer every such row reads from the new disk while
|
|
20316
|
+
* its bytes are on the old one — the archive goes dark until a drain
|
|
20317
|
+
* happens to stamp it. This count is what the migration planner's
|
|
20318
|
+
* non-blocking gate reads; `relocateMedia({ mode: 'seal' })` is what drives
|
|
20319
|
+
* it to zero.
|
|
20320
|
+
*/
|
|
20321
|
+
countUnstampedEventMedia: method(object({}), UnstampedEventMediaCountSchema, { auth: "admin" }),
|
|
20212
20322
|
/** Every relocate job this addon knows about, newest first (in RAM: the
|
|
20213
20323
|
* move is resumable, so a lost list costs nothing but the display). */
|
|
20214
20324
|
listRelocateMediaJobs: method(object({}), array(RelocateJobSchema).readonly(), {
|
|
@@ -22372,7 +22482,10 @@ method(object({
|
|
|
22372
22482
|
}), StorageLocationSchema, {
|
|
22373
22483
|
kind: "mutation",
|
|
22374
22484
|
auth: "admin"
|
|
22375
|
-
}), method(object({
|
|
22485
|
+
}), method(object({
|
|
22486
|
+
id: string(),
|
|
22487
|
+
force: boolean().optional()
|
|
22488
|
+
}), _void(), {
|
|
22376
22489
|
kind: "mutation",
|
|
22377
22490
|
auth: "admin"
|
|
22378
22491
|
}), method(object({ id: string() }), object({
|
|
@@ -36380,6 +36493,12 @@ Object.freeze({
|
|
|
36380
36493
|
addonId: null,
|
|
36381
36494
|
access: "create"
|
|
36382
36495
|
},
|
|
36496
|
+
"pipelineAnalytics.countUnstampedEventMedia": {
|
|
36497
|
+
capName: "pipeline-analytics",
|
|
36498
|
+
capScope: "device",
|
|
36499
|
+
addonId: null,
|
|
36500
|
+
access: "view"
|
|
36501
|
+
},
|
|
36383
36502
|
"pipelineAnalytics.deleteDeviceEvents": {
|
|
36384
36503
|
capName: "pipeline-analytics",
|
|
36385
36504
|
capScope: "device",
|
|
@@ -8278,18 +8278,61 @@ var RelocateFootageInputSchema = object({
|
|
|
8278
8278
|
* `RecordingConfig.enabled` or camera wrapper bindings. */
|
|
8279
8279
|
var StorageMigrationLeaseInputSchema = object({ leaseId: string().min(1) });
|
|
8280
8280
|
var StorageMigrationFootageMoveInputSchema = RelocateFootageInputSchema.extend({ leaseId: string().min(1) });
|
|
8281
|
+
/**
|
|
8282
|
+
* What a `relocateMedia` pass DOES. One engine, three passes — never a second
|
|
8283
|
+
* mover (the engine already walks both collections with a timestamp cursor and
|
|
8284
|
+
* already has a stamp-without-copy path).
|
|
8285
|
+
*
|
|
8286
|
+
* - `move` — the default and the historical behaviour: event-media and
|
|
8287
|
+
* retrain blobs move to `toLocationId` and their rows are
|
|
8288
|
+
* stamped. The enrolled gallery is skipped (D197).
|
|
8289
|
+
* - `seal` — ROWS ONLY, no bytes. Every row whose `locationId` is NULL is
|
|
8290
|
+
* stamped with `toLocationId`. `toLocationId` here is the id the
|
|
8291
|
+
* bytes ALREADY sit on — today's `eventMedia` default — because
|
|
8292
|
+
* a NULL row means "wherever `eventMedia` points *now*", and the
|
|
8293
|
+
* instant a repoint moves that pointer the row reads from the
|
|
8294
|
+
* new disk while its bytes are on the old one.
|
|
8295
|
+
* - `gallery` — the inverse selection of `move`: ONLY the retention-exempt
|
|
8296
|
+
* (enrolled-gallery) rows, which `move` deliberately skips.
|
|
8297
|
+
* `galleryMedia` is `cardinality: 'single'`, so this pass can
|
|
8298
|
+
* never run beside a live second location: it is stop-the-world
|
|
8299
|
+
* by construction, which is acceptable only because the gallery
|
|
8300
|
+
* is a few KB per enrolled sample.
|
|
8301
|
+
*/
|
|
8302
|
+
var MediaRelocateModeSchema = _enum([
|
|
8303
|
+
"move",
|
|
8304
|
+
"seal",
|
|
8305
|
+
"gallery"
|
|
8306
|
+
]);
|
|
8281
8307
|
var RelocateMediaInputSchema = object({
|
|
8282
8308
|
toLocationId: string(),
|
|
8283
|
-
throttleMbps: number().min(1).max(1e3).optional()
|
|
8309
|
+
throttleMbps: number().min(1).max(1e3).optional(),
|
|
8310
|
+
/** Omitted = `move`, the pre-existing behaviour. */
|
|
8311
|
+
mode: MediaRelocateModeSchema.optional()
|
|
8312
|
+
});
|
|
8313
|
+
/** How many rows still carry NO `locationId` — the population a repoint would
|
|
8314
|
+
* silently re-aim at a disk that does not hold their bytes. Zero is the only
|
|
8315
|
+
* value that permits a non-blocking `eventMedia` cutover. */
|
|
8316
|
+
var UnstampedEventMediaCountSchema = object({
|
|
8317
|
+
media: number().int().nonnegative(),
|
|
8318
|
+
retrainFrames: number().int().nonnegative(),
|
|
8319
|
+
total: number().int().nonnegative()
|
|
8284
8320
|
});
|
|
8285
8321
|
var StorageMigrationMediaMoveInputSchema = RelocateMediaInputSchema.extend({ leaseId: string().min(1) });
|
|
8286
|
-
/** The independently selectable logical storage classes
|
|
8287
|
-
*
|
|
8288
|
-
*
|
|
8322
|
+
/** The independently selectable logical storage classes — every class
|
|
8323
|
+
* `storage.listLocationDeclarations` reports, so an operator never meets a
|
|
8324
|
+
* Zod enum error where they should meet an explanation.
|
|
8325
|
+
*
|
|
8326
|
+
* `recordings` encompasses the high and mid segment profiles; `recordingsLow`
|
|
8327
|
+
* is low segments; `eventMedia` is post-analysis blobs; `galleryMedia` is the
|
|
8328
|
+
* enrolled gallery; `backups` is the system backup archive. The last two have
|
|
8329
|
+
* their own rules — see {@link StorageMigrationFindingCodeSchema}. */
|
|
8289
8330
|
var StorageMigrationClassSchema = _enum([
|
|
8290
8331
|
"recordings",
|
|
8291
8332
|
"recordingsLow",
|
|
8292
|
-
"eventMedia"
|
|
8333
|
+
"eventMedia",
|
|
8334
|
+
"backups",
|
|
8335
|
+
"galleryMedia"
|
|
8293
8336
|
]);
|
|
8294
8337
|
/** A destination is always an existing, fully-qualified location id. The
|
|
8295
8338
|
* migration API intentionally never changes a source location's `basePath`:
|
|
@@ -8297,20 +8340,56 @@ var StorageMigrationClassSchema = _enum([
|
|
|
8297
8340
|
var StorageMigrationDestinationsSchema = object({
|
|
8298
8341
|
recordings: string().min(1).optional(),
|
|
8299
8342
|
recordingsLow: string().min(1).optional(),
|
|
8300
|
-
eventMedia: string().min(1).optional()
|
|
8343
|
+
eventMedia: string().min(1).optional(),
|
|
8344
|
+
backups: string().min(1).optional(),
|
|
8345
|
+
galleryMedia: string().min(1).optional()
|
|
8301
8346
|
}).refine((value) => Object.keys(value).length > 0, { message: "select at least one storage class" });
|
|
8347
|
+
/**
|
|
8348
|
+
* How a migration sequences the cutover against the byte move.
|
|
8349
|
+
*
|
|
8350
|
+
* - `blocking` — the historical order: pause, move every byte, repoint,
|
|
8351
|
+
* resume. Recording is stopped for the whole move. Right
|
|
8352
|
+
* for a small or a cold class, and the only legal mode for
|
|
8353
|
+
* a `cardinality: 'single'` class.
|
|
8354
|
+
* - `nonBlocking` — repoint FIRST, drain behind: seal, pause, repoint,
|
|
8355
|
+
* refresh, resume, then move the past with everything
|
|
8356
|
+
* running. The pause is three bounded instants (a detach +
|
|
8357
|
+
* attach round, a write-gate drain, a lease) instead of one
|
|
8358
|
+
* bounded by bytes. 1.09 TB at 7–14 MB/s is thirty hours of
|
|
8359
|
+
* stopped recording under `blocking`; the same move is
|
|
8360
|
+
* seconds of stopped recording under `nonBlocking`.
|
|
8361
|
+
*
|
|
8362
|
+
* The mode is on the JOB, not only on the input, because `status` is where an
|
|
8363
|
+
* operator finds out which one is running.
|
|
8364
|
+
*/
|
|
8365
|
+
var StorageMigrationModeSchema = _enum(["blocking", "nonBlocking"]);
|
|
8302
8366
|
/** Shared input for planning and starting an orchestrated storage migration. */
|
|
8303
8367
|
var StorageMigrationInputSchema = object({
|
|
8304
8368
|
destinations: StorageMigrationDestinationsSchema,
|
|
8305
|
-
throttleMbps: number().min(1).max(1e3).optional()
|
|
8369
|
+
throttleMbps: number().min(1).max(1e3).optional(),
|
|
8370
|
+
/** Omitted = `blocking`, which stays the default. */
|
|
8371
|
+
mode: StorageMigrationModeSchema.optional()
|
|
8306
8372
|
});
|
|
8307
|
-
/**
|
|
8308
|
-
*
|
|
8309
|
-
*
|
|
8373
|
+
/**
|
|
8374
|
+
* The durable coordinator state machine.
|
|
8375
|
+
*
|
|
8376
|
+
* `blocking`:
|
|
8377
|
+
* planning → pausing → moving → verifying → repointing → refreshing → resuming → done
|
|
8378
|
+
*
|
|
8379
|
+
* `nonBlocking`:
|
|
8380
|
+
* planning → sealing → pausing → repointing → refreshing → resuming → draining → verifying → done
|
|
8381
|
+
*
|
|
8382
|
+
* Same phases, different order plus two new ones — not a second mover.
|
|
8383
|
+
* `sealing` closes the `eventMedia` NULL-row hole BEFORE anything is paused;
|
|
8384
|
+
* `draining` runs the same movers UNLEASED, after every writer is back up.
|
|
8385
|
+
* `repointing` is still the only phase that changes a default location.
|
|
8386
|
+
*/
|
|
8310
8387
|
var StorageMigrationPhaseSchema = _enum([
|
|
8311
8388
|
"planning",
|
|
8389
|
+
"sealing",
|
|
8312
8390
|
"pausing",
|
|
8313
8391
|
"moving",
|
|
8392
|
+
"draining",
|
|
8314
8393
|
"verifying",
|
|
8315
8394
|
"repointing",
|
|
8316
8395
|
"refreshing",
|
|
@@ -8335,6 +8414,9 @@ var StorageMigrationMoveSchema = object({
|
|
|
8335
8414
|
var StorageMigrationJobSchema = object({
|
|
8336
8415
|
jobId: string(),
|
|
8337
8416
|
phase: StorageMigrationPhaseSchema,
|
|
8417
|
+
/** Which order this job is running. `status` is the only place an operator
|
|
8418
|
+
* can tell a seconds-long cutover from a thirty-hour one. */
|
|
8419
|
+
mode: StorageMigrationModeSchema,
|
|
8338
8420
|
destinations: StorageMigrationDestinationsSchema,
|
|
8339
8421
|
throttleMbps: number(),
|
|
8340
8422
|
moves: array(StorageMigrationMoveSchema),
|
|
@@ -8347,13 +8429,30 @@ var StorageMigrationJobSchema = object({
|
|
|
8347
8429
|
finishedAt: number().nullable(),
|
|
8348
8430
|
error: string().nullable()
|
|
8349
8431
|
});
|
|
8432
|
+
var StorageMigrationFindingSchema = object({
|
|
8433
|
+
code: _enum([
|
|
8434
|
+
"sharesDeviceWithSource",
|
|
8435
|
+
"deviceIdentityUnknown",
|
|
8436
|
+
"unstampedEventMediaRows",
|
|
8437
|
+
"blockingOnly",
|
|
8438
|
+
"noMover"
|
|
8439
|
+
]),
|
|
8440
|
+
storageClass: StorageMigrationClassSchema,
|
|
8441
|
+
/** Human-readable, already carrying the ids and counts. */
|
|
8442
|
+
message: string()
|
|
8443
|
+
});
|
|
8350
8444
|
var StorageMigrationPlanSchema = object({
|
|
8351
8445
|
destinations: StorageMigrationDestinationsSchema,
|
|
8446
|
+
/** The mode this plan was built for. A plan is only valid for its mode: the
|
|
8447
|
+
* `eventMedia` seal gate and the single-cardinality refusal both depend on
|
|
8448
|
+
* it. */
|
|
8449
|
+
mode: StorageMigrationModeSchema,
|
|
8352
8450
|
moves: array(object({
|
|
8353
8451
|
storageClass: StorageMigrationClassSchema,
|
|
8354
8452
|
fromLocationId: string(),
|
|
8355
8453
|
toLocationId: string()
|
|
8356
|
-
}))
|
|
8454
|
+
})),
|
|
8455
|
+
findings: array(StorageMigrationFindingSchema)
|
|
8357
8456
|
});
|
|
8358
8457
|
/**
|
|
8359
8458
|
* `StorageLocationType` — an addon-declared id that identifies the *kind* of
|
|
@@ -20178,6 +20277,17 @@ var pipelineAnalyticsCapability = {
|
|
|
20178
20277
|
kind: "mutation",
|
|
20179
20278
|
auth: "admin"
|
|
20180
20279
|
}),
|
|
20280
|
+
/**
|
|
20281
|
+
* How many media / retrain rows still carry NO `locationId`.
|
|
20282
|
+
*
|
|
20283
|
+
* A NULL row means "wherever `eventMedia` points NOW", so the instant a
|
|
20284
|
+
* repoint moves that pointer every such row reads from the new disk while
|
|
20285
|
+
* its bytes are on the old one — the archive goes dark until a drain
|
|
20286
|
+
* happens to stamp it. This count is what the migration planner's
|
|
20287
|
+
* non-blocking gate reads; `relocateMedia({ mode: 'seal' })` is what drives
|
|
20288
|
+
* it to zero.
|
|
20289
|
+
*/
|
|
20290
|
+
countUnstampedEventMedia: method(object({}), UnstampedEventMediaCountSchema, { auth: "admin" }),
|
|
20181
20291
|
/** Every relocate job this addon knows about, newest first (in RAM: the
|
|
20182
20292
|
* move is resumable, so a lost list costs nothing but the display). */
|
|
20183
20293
|
listRelocateMediaJobs: method(object({}), array(RelocateJobSchema).readonly(), {
|
|
@@ -22341,7 +22451,10 @@ method(object({
|
|
|
22341
22451
|
}), StorageLocationSchema, {
|
|
22342
22452
|
kind: "mutation",
|
|
22343
22453
|
auth: "admin"
|
|
22344
|
-
}), method(object({
|
|
22454
|
+
}), method(object({
|
|
22455
|
+
id: string(),
|
|
22456
|
+
force: boolean().optional()
|
|
22457
|
+
}), _void(), {
|
|
22345
22458
|
kind: "mutation",
|
|
22346
22459
|
auth: "admin"
|
|
22347
22460
|
}), method(object({ id: string() }), object({
|
|
@@ -36349,6 +36462,12 @@ Object.freeze({
|
|
|
36349
36462
|
addonId: null,
|
|
36350
36463
|
access: "create"
|
|
36351
36464
|
},
|
|
36465
|
+
"pipelineAnalytics.countUnstampedEventMedia": {
|
|
36466
|
+
capName: "pipeline-analytics",
|
|
36467
|
+
capScope: "device",
|
|
36468
|
+
addonId: null,
|
|
36469
|
+
access: "view"
|
|
36470
|
+
},
|
|
36352
36471
|
"pipelineAnalytics.deleteDeviceEvents": {
|
|
36353
36472
|
capName: "pipeline-analytics",
|
|
36354
36473
|
capScope: "device",
|
|
@@ -2,7 +2,7 @@ Object.defineProperties(exports, {
|
|
|
2
2
|
__esModule: { value: true },
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
|
-
const require_dist = require("../dist-
|
|
5
|
+
const require_dist = require("../dist-1xYuXmDS.js");
|
|
6
6
|
let node_fs = require("node:fs");
|
|
7
7
|
node_fs = require_dist.__toESM(node_fs);
|
|
8
8
|
let node_path = require("node:path");
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Dt as BaseAddon, P as PoolMemoryWatchdog, ct as hfModelUrl, it as embeddingEncoderCapability, pt as parseProcStatus, yt as resolvePoolMemoryPolicy } from "../dist-
|
|
1
|
+
import { Dt as BaseAddon, P as PoolMemoryWatchdog, ct as hfModelUrl, it as embeddingEncoderCapability, pt as parseProcStatus, yt as resolvePoolMemoryPolicy } from "../dist-4eP-xmjY.mjs";
|
|
2
2
|
import { createRequire } from "node:module";
|
|
3
3
|
import * as fs from "node:fs";
|
|
4
4
|
import * as path$1 from "node:path";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { a as e, i as t, n, o as r, r as i, t as a } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare__react__loadShare__.js-C0AuF9av.mjs";
|
|
2
2
|
import { t as o } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_tanstack_mf_1_react_mf_2_query__loadShare__.js-B3Wx5J80.mjs";
|
|
3
|
-
import { a as s, i as c, n as l, o as u, r as d, s as f, t as p } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-
|
|
3
|
+
import { a as s, i as c, n as l, o as u, r as d, s as f, t as p } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-C7KsMvFR.mjs";
|
|
4
4
|
import { n as m, r as h, t as g } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.js-Bm-iyjmq.mjs";
|
|
5
5
|
//#region ../../node_modules/lucide-react/dist/esm/shared/src/utils.js
|
|
6
6
|
var _ = (e) => e.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase(), v = (e) => e.replace(/^([A-Z])|[\s-_]+(\w)/g, (e, t, n) => n ? n.toUpperCase() : t.toLowerCase()), y = (e) => {
|
|
@@ -3,7 +3,7 @@ import "./dist-CYZr2fwk.mjs";
|
|
|
3
3
|
var e = {
|
|
4
4
|
"@camstack/sdk": {
|
|
5
5
|
name: "@camstack/sdk",
|
|
6
|
-
version: "1.2.
|
|
6
|
+
version: "1.2.46",
|
|
7
7
|
scope: ["default"],
|
|
8
8
|
loaded: !1,
|
|
9
9
|
from: "addon_pipeline_analytics_widgets",
|
|
@@ -18,7 +18,7 @@ var e = {
|
|
|
18
18
|
},
|
|
19
19
|
"@camstack/types": {
|
|
20
20
|
name: "@camstack/types",
|
|
21
|
-
version: "1.2.
|
|
21
|
+
version: "1.2.124",
|
|
22
22
|
scope: ["default"],
|
|
23
23
|
loaded: !1,
|
|
24
24
|
from: "addon_pipeline_analytics_widgets",
|
|
@@ -33,7 +33,7 @@ var e = {
|
|
|
33
33
|
},
|
|
34
34
|
"@camstack/ui-library": {
|
|
35
35
|
name: "@camstack/ui-library",
|
|
36
|
-
version: "1.2.
|
|
36
|
+
version: "1.2.87",
|
|
37
37
|
scope: ["default"],
|
|
38
38
|
loaded: !1,
|
|
39
39
|
from: "addon_pipeline_analytics_widgets",
|