@camstack/addon-post-analysis 1.2.365 → 1.2.367
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/{clip-model-registry-CsJpPkau.js → clip-model-registry-4RExEITD.js} +396 -291
- package/dist/{clip-model-registry-BRXTB6Qa.mjs → clip-model-registry-vU1x2Lyf.mjs} +396 -291
- package/dist/embedding-encoder/index.js +1 -1
- package/dist/embedding-encoder/index.mjs +1 -1
- package/dist/pipeline-analytics/_stub.js +2 -2
- package/dist/pipeline-analytics/{_virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-DUGlfHVc.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-DQnRVBZI.mjs} +2 -2
- package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-vq8Jf6ja.mjs +26 -0
- package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-rBUOVUOg.mjs +26 -0
- package/dist/pipeline-analytics/{hostInit-DH-l3-BR.mjs → hostInit-D-t5Eh-v.mjs} +2 -2
- package/dist/pipeline-analytics/index.js +25 -3
- package/dist/pipeline-analytics/index.mjs +25 -3
- package/dist/pipeline-analytics/remoteEntry.js +1 -1
- package/package.json +1 -1
- package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-Cul2786X.mjs +0 -26
- package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-Duvan2CO.mjs +0 -26
|
@@ -10800,6 +10800,7 @@ var RETRAIN_REVIEW_STATUSES = [
|
|
|
10800
10800
|
];
|
|
10801
10801
|
/** Two boxes this close on every edge are the same rectangle (an exact match). */
|
|
10802
10802
|
var EXACT_EDGE_EPSILON = 1e-6;
|
|
10803
|
+
var optLabel = (label) => label !== void 0 ? { label } : {};
|
|
10803
10804
|
/** Intersection over union of two normalised rectangles. */
|
|
10804
10805
|
function retrainBoxIou(a, b) {
|
|
10805
10806
|
const inter = Math.max(0, Math.min(a.x + a.w, b.x + b.w) - Math.max(a.x, b.x)) * Math.max(0, Math.min(a.y + a.h, b.y + b.h) - Math.max(a.y, b.y));
|
|
@@ -10809,13 +10810,13 @@ function retrainBoxIou(a, b) {
|
|
|
10809
10810
|
function sameRect(a, b) {
|
|
10810
10811
|
return Math.abs(a.x - b.x) <= EXACT_EDGE_EPSILON && Math.abs(a.y - b.y) <= EXACT_EDGE_EPSILON && Math.abs(a.w - b.w) <= EXACT_EDGE_EPSILON && Math.abs(a.h - b.h) <= EXACT_EDGE_EPSILON;
|
|
10811
10812
|
}
|
|
10812
|
-
function
|
|
10813
|
+
function labelField(value) {
|
|
10813
10814
|
return value?.trim() ?? "";
|
|
10814
10815
|
}
|
|
10815
10816
|
/** Kept box versus its baseline: class/label first, then geometry. */
|
|
10816
10817
|
function compareKept(saved, baseline, adjustedIou) {
|
|
10817
10818
|
const iou = retrainBoxIou(saved.bbox, baseline.bbox);
|
|
10818
|
-
if (saved.macroClass !== baseline.macroClass ||
|
|
10819
|
+
if (saved.macroClass !== baseline.macroClass || labelField(saved.label) !== labelField(baseline.label)) return {
|
|
10819
10820
|
status: "reclassified",
|
|
10820
10821
|
iou
|
|
10821
10822
|
};
|
|
@@ -10890,6 +10891,8 @@ function classifyRetrainReview(saved, origins, dismissed, opts = {}) {
|
|
|
10890
10891
|
savedId: box.id,
|
|
10891
10892
|
status: "model-error",
|
|
10892
10893
|
approximate: false,
|
|
10894
|
+
macroClass: box.macroClass,
|
|
10895
|
+
...optLabel(box.label),
|
|
10893
10896
|
...baseline !== null ? {
|
|
10894
10897
|
origin: baseline,
|
|
10895
10898
|
iou: retrainBoxIou(box.bbox, baseline.bbox)
|
|
@@ -10903,6 +10906,8 @@ function classifyRetrainReview(saved, origins, dismissed, opts = {}) {
|
|
|
10903
10906
|
savedId: box.id,
|
|
10904
10907
|
status: "added",
|
|
10905
10908
|
approximate: approximate && baseline === null,
|
|
10909
|
+
macroClass: box.macroClass,
|
|
10910
|
+
...optLabel(box.label),
|
|
10906
10911
|
...baseline !== null ? { origin: baseline } : {}
|
|
10907
10912
|
});
|
|
10908
10913
|
return;
|
|
@@ -10913,6 +10918,8 @@ function classifyRetrainReview(saved, origins, dismissed, opts = {}) {
|
|
|
10913
10918
|
savedId: box.id,
|
|
10914
10919
|
status: verdict.status,
|
|
10915
10920
|
approximate,
|
|
10921
|
+
macroClass: box.macroClass,
|
|
10922
|
+
...optLabel(box.label),
|
|
10916
10923
|
origin: baseline,
|
|
10917
10924
|
iou: verdict.iou
|
|
10918
10925
|
});
|
|
@@ -10921,6 +10928,8 @@ function classifyRetrainReview(saved, origins, dismissed, opts = {}) {
|
|
|
10921
10928
|
ref: entry.ref,
|
|
10922
10929
|
status: "removed",
|
|
10923
10930
|
approximate: false,
|
|
10931
|
+
macroClass: entry.snapshot.macroClass,
|
|
10932
|
+
...optLabel(entry.snapshot.label),
|
|
10924
10933
|
origin: entry.snapshot
|
|
10925
10934
|
});
|
|
10926
10935
|
if (opts.inferRemoved === true) for (const origin of origins) {
|
|
@@ -10929,6 +10938,8 @@ function classifyRetrainReview(saved, origins, dismissed, opts = {}) {
|
|
|
10929
10938
|
ref: origin.ref,
|
|
10930
10939
|
status: "removed",
|
|
10931
10940
|
approximate: true,
|
|
10941
|
+
macroClass: origin.macroClass,
|
|
10942
|
+
...optLabel(origin.label),
|
|
10932
10943
|
origin
|
|
10933
10944
|
});
|
|
10934
10945
|
}
|
|
@@ -14298,6 +14309,329 @@ method(object({
|
|
|
14298
14309
|
password: string()
|
|
14299
14310
|
}), AuthResultSchema.nullable(), { kind: "mutation" }), method(object({ state: string() }), string()), method(record(string(), string()), AuthResultSchema, { kind: "mutation" }), method(object({ token: string() }), AuthResultSchema.nullable());
|
|
14300
14311
|
/**
|
|
14312
|
+
* Query filter for settings-store collections.
|
|
14313
|
+
*/
|
|
14314
|
+
var QueryFilterSchema = object({
|
|
14315
|
+
where: record(string(), unknown()).optional(),
|
|
14316
|
+
whereIn: record(string(), array(unknown())).optional(),
|
|
14317
|
+
whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
|
|
14318
|
+
/** NULL-safe exclusion: matches rows whose field is NULL OR != the value. */
|
|
14319
|
+
whereNot: record(string(), unknown()).optional(),
|
|
14320
|
+
/** NULL-safe exclusion of a SET — `whereNot` for more than one value. An
|
|
14321
|
+
* empty list excludes nothing. See `QueryFilter.whereNotIn`. */
|
|
14322
|
+
whereNotIn: record(string(), array(unknown())).optional(),
|
|
14323
|
+
orderBy: object({
|
|
14324
|
+
field: string(),
|
|
14325
|
+
direction: _enum(["asc", "desc"])
|
|
14326
|
+
}).optional(),
|
|
14327
|
+
limit: number().optional(),
|
|
14328
|
+
offset: number().optional()
|
|
14329
|
+
});
|
|
14330
|
+
/**
|
|
14331
|
+
* The predicate half of a filter, for BULK MUTATIONS.
|
|
14332
|
+
*
|
|
14333
|
+
* Deliberately not `QueryFilterSchema`: `orderBy` / `limit` / `offset` have no
|
|
14334
|
+
* meaning for a statement that rewrites a set, and accepting them would invite
|
|
14335
|
+
* a caller to believe `limit` bounds the damage. Every field is optional here
|
|
14336
|
+
* only so the shape stays composable — the implementation REJECTS a filter
|
|
14337
|
+
* that compiles to no predicate, because that is the whole collection.
|
|
14338
|
+
*/
|
|
14339
|
+
var MutationFilterSchema = object({
|
|
14340
|
+
where: record(string(), unknown()).optional(),
|
|
14341
|
+
whereIn: record(string(), array(unknown())).optional(),
|
|
14342
|
+
whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
|
|
14343
|
+
whereNot: record(string(), unknown()).optional(),
|
|
14344
|
+
whereNotIn: record(string(), array(unknown())).optional()
|
|
14345
|
+
});
|
|
14346
|
+
/**
|
|
14347
|
+
* One scalar an {@link settingsStoreCapability.methods.aggregate} call asks for.
|
|
14348
|
+
*
|
|
14349
|
+
* `as` names the slot in the result, so the SAME column may be asked twice with
|
|
14350
|
+
* two operations (`MIN(startMs)` and `MAX(startMs)` in one round trip) — which
|
|
14351
|
+
* a `Record<column, op>` shape could not express.
|
|
14352
|
+
*/
|
|
14353
|
+
var AggregateFieldSchema = object({
|
|
14354
|
+
/** Result key. */
|
|
14355
|
+
as: string().min(1),
|
|
14356
|
+
/** Column to aggregate. Must be a real column of a declared collection. */
|
|
14357
|
+
field: string().min(1),
|
|
14358
|
+
op: _enum([
|
|
14359
|
+
"sum",
|
|
14360
|
+
"min",
|
|
14361
|
+
"max"
|
|
14362
|
+
])
|
|
14363
|
+
});
|
|
14364
|
+
/**
|
|
14365
|
+
* `COUNT(*)` plus one number per requested field.
|
|
14366
|
+
*
|
|
14367
|
+
* `null` means NO ROW MATCHED, never zero: a `SUM` over an empty set and a sum
|
|
14368
|
+
* that really is 0 are different facts, and an accounting caller that renders
|
|
14369
|
+
* "0 bytes, oldest = 0" for "nothing here" reports a lie about a disk.
|
|
14370
|
+
*/
|
|
14371
|
+
var AggregateResultSchema = object({
|
|
14372
|
+
count: number().int(),
|
|
14373
|
+
values: record(string(), number().nullable())
|
|
14374
|
+
});
|
|
14375
|
+
/** A single stored record: `{ id, data }`. */
|
|
14376
|
+
var SettingsRecordSchema = object({
|
|
14377
|
+
id: string(),
|
|
14378
|
+
data: record(string(), unknown())
|
|
14379
|
+
});
|
|
14380
|
+
/**
|
|
14381
|
+
* One record of a BULK insert — {@link SettingsRecordSchema} with the id made
|
|
14382
|
+
* optional.
|
|
14383
|
+
*
|
|
14384
|
+
* A separate schema rather than loosening the shared one: every other method
|
|
14385
|
+
* on this cap addresses a row BY its id, and making that field optional
|
|
14386
|
+
* everywhere would turn a forgotten key into a silently generated one on
|
|
14387
|
+
* `update` and `delete` as well.
|
|
14388
|
+
*/
|
|
14389
|
+
var BulkRecordSchema = object({
|
|
14390
|
+
id: string().optional(),
|
|
14391
|
+
data: record(string(), unknown())
|
|
14392
|
+
});
|
|
14393
|
+
/**
|
|
14394
|
+
* The database FILES one `sqlite-settings` engine process owns (D851).
|
|
14395
|
+
* Closed on purpose: a file is a thing the engine opens, backs up and gives a
|
|
14396
|
+
* serving thread, so a new one is a code change, never a string a caller
|
|
14397
|
+
* invents. `settings` is `camstack.db` and the default for every collection
|
|
14398
|
+
* that names no file.
|
|
14399
|
+
*/
|
|
14400
|
+
var DataStoreDatabaseSchema = _enum([
|
|
14401
|
+
"settings",
|
|
14402
|
+
"events",
|
|
14403
|
+
"history"
|
|
14404
|
+
]);
|
|
14405
|
+
DataStoreDatabaseSchema.options;
|
|
14406
|
+
/**
|
|
14407
|
+
* One write inside a {@link settingsStoreCapability.methods.transact} call.
|
|
14408
|
+
* The three that a "replace this set, bump that revision" write needs, plus
|
|
14409
|
+
* the batched upsert a rollup writer needs.
|
|
14410
|
+
*/
|
|
14411
|
+
var TransactOpSchema = discriminatedUnion("op", [
|
|
14412
|
+
object({
|
|
14413
|
+
op: literal("deleteWhere"),
|
|
14414
|
+
collection: string(),
|
|
14415
|
+
filter: MutationFilterSchema
|
|
14416
|
+
}),
|
|
14417
|
+
object({
|
|
14418
|
+
op: literal("insertMany"),
|
|
14419
|
+
collection: string(),
|
|
14420
|
+
records: array(BulkRecordSchema).readonly()
|
|
14421
|
+
}),
|
|
14422
|
+
object({
|
|
14423
|
+
op: literal("update"),
|
|
14424
|
+
collection: string(),
|
|
14425
|
+
id: string(),
|
|
14426
|
+
data: record(string(), unknown())
|
|
14427
|
+
}),
|
|
14428
|
+
object({
|
|
14429
|
+
op: literal("upsertMany"),
|
|
14430
|
+
collection: string(),
|
|
14431
|
+
conflict: array(string()).readonly(),
|
|
14432
|
+
records: array(BulkRecordSchema).readonly()
|
|
14433
|
+
})
|
|
14434
|
+
]);
|
|
14435
|
+
/**
|
|
14436
|
+
* The precondition of a transaction: the row `key` of `collection` must hold
|
|
14437
|
+
* `equals` in `column`, read INSIDE the transaction.
|
|
14438
|
+
*/
|
|
14439
|
+
var TransactGuardSchema = object({
|
|
14440
|
+
collection: string(),
|
|
14441
|
+
key: string(),
|
|
14442
|
+
column: string(),
|
|
14443
|
+
equals: unknown()
|
|
14444
|
+
});
|
|
14445
|
+
/**
|
|
14446
|
+
* Column declaration for a structured (SQL-backed) collection.
|
|
14447
|
+
*
|
|
14448
|
+
* Logical types — the backend translates each to the matching SQLite
|
|
14449
|
+
* storage class and handles per-type marshaling:
|
|
14450
|
+
* - `TEXT` / `INTEGER` / `REAL` — native SQLite types, pass-through
|
|
14451
|
+
* - `JSON` — TEXT under the hood; serialised on write, parsed on read
|
|
14452
|
+
* - `BOOLEAN` — INTEGER 0/1 under the hood; coerced both directions
|
|
14453
|
+
*/
|
|
14454
|
+
var CollectionColumnSchema = object({
|
|
14455
|
+
name: string(),
|
|
14456
|
+
type: _enum([
|
|
14457
|
+
"TEXT",
|
|
14458
|
+
"INTEGER",
|
|
14459
|
+
"REAL",
|
|
14460
|
+
"JSON",
|
|
14461
|
+
"BOOLEAN"
|
|
14462
|
+
]),
|
|
14463
|
+
primaryKey: boolean().optional(),
|
|
14464
|
+
notNull: boolean().optional(),
|
|
14465
|
+
unique: boolean().optional(),
|
|
14466
|
+
/**
|
|
14467
|
+
* Column DEFAULT. Required for B2: the four `ensureTable` consumers declare
|
|
14468
|
+
* columns like `enabled INTEGER NOT NULL DEFAULT 1`, and without this the
|
|
14469
|
+
* collection surface simply cannot express their existing tables — which is
|
|
14470
|
+
* why they were still on the uncapped `table*` API.
|
|
14471
|
+
*/
|
|
14472
|
+
defaultValue: union([
|
|
14473
|
+
string(),
|
|
14474
|
+
number(),
|
|
14475
|
+
boolean()
|
|
14476
|
+
]).optional()
|
|
14477
|
+
});
|
|
14478
|
+
var CollectionIndexSchema = object({
|
|
14479
|
+
name: string(),
|
|
14480
|
+
columns: array(string()).readonly(),
|
|
14481
|
+
unique: boolean().optional()
|
|
14482
|
+
});
|
|
14483
|
+
/**
|
|
14484
|
+
* The input of `declareCollection` — ONE schema for the door and for the
|
|
14485
|
+
* engine behind it, so the two surfaces cannot drift (the dispatcher forwards
|
|
14486
|
+
* the payload untouched).
|
|
14487
|
+
*
|
|
14488
|
+
* - `database` — the file the collection lives in (D851). Absent means
|
|
14489
|
+
* `settings`. A declaration naming a file other than the one the table is
|
|
14490
|
+
* already in is REFUSED by the engine, never moved.
|
|
14491
|
+
* - `primaryKey` — a COMPOSITE key, as column names. A single name is the same
|
|
14492
|
+
* as `primaryKey: true` on that column. A composite-keyed collection has no
|
|
14493
|
+
* `id`: it is written with `insertMany` / `upsertMany` / `transact` and read
|
|
14494
|
+
* with `query` / `count` / `aggregate` / `deleteWhere`; the calls that
|
|
14495
|
+
* address one row by id are refused.
|
|
14496
|
+
* - `withoutRowid` — emit `WITHOUT ROWID`. Requires a primary key.
|
|
14497
|
+
*/
|
|
14498
|
+
var DeclareCollectionInputSchema = object({
|
|
14499
|
+
namespace: string().optional(),
|
|
14500
|
+
collection: string(),
|
|
14501
|
+
columns: array(CollectionColumnSchema).readonly(),
|
|
14502
|
+
indexes: array(CollectionIndexSchema).readonly().optional(),
|
|
14503
|
+
database: DataStoreDatabaseSchema.optional(),
|
|
14504
|
+
primaryKey: array(string()).readonly().optional(),
|
|
14505
|
+
withoutRowid: boolean().optional()
|
|
14506
|
+
});
|
|
14507
|
+
method(object({
|
|
14508
|
+
namespace: string().optional(),
|
|
14509
|
+
collection: string(),
|
|
14510
|
+
key: string()
|
|
14511
|
+
}), unknown(), { auth: "admin" }), method(object({
|
|
14512
|
+
namespace: string().optional(),
|
|
14513
|
+
collection: string(),
|
|
14514
|
+
key: string(),
|
|
14515
|
+
value: unknown()
|
|
14516
|
+
}), _void(), {
|
|
14517
|
+
kind: "mutation",
|
|
14518
|
+
auth: "admin"
|
|
14519
|
+
}), method(object({
|
|
14520
|
+
namespace: string().optional(),
|
|
14521
|
+
collection: string(),
|
|
14522
|
+
filter: QueryFilterSchema.optional(),
|
|
14523
|
+
columns: array(string()).readonly().optional()
|
|
14524
|
+
}), array(SettingsRecordSchema).readonly(), { auth: "admin" }), method(object({
|
|
14525
|
+
namespace: string().optional(),
|
|
14526
|
+
collection: string(),
|
|
14527
|
+
/** Declared columns identifying the slot; must be covered by a UNIQUE
|
|
14528
|
+
* index on the collection. Never empty. */
|
|
14529
|
+
conflict: array(string()).readonly(),
|
|
14530
|
+
record: BulkRecordSchema
|
|
14531
|
+
}), object({
|
|
14532
|
+
/** The id the row HAS: assigned by SQLite on an insert, or the existing
|
|
14533
|
+
* row's own id on an update. */
|
|
14534
|
+
id: union([string(), number()]) }), {
|
|
14535
|
+
kind: "mutation",
|
|
14536
|
+
auth: "admin"
|
|
14537
|
+
}), method(object({
|
|
14538
|
+
namespace: string().optional(),
|
|
14539
|
+
collection: string(),
|
|
14540
|
+
conflict: array(string()).readonly(),
|
|
14541
|
+
records: array(BulkRecordSchema).readonly()
|
|
14542
|
+
}), object({ upserted: number().int() }), {
|
|
14543
|
+
kind: "mutation",
|
|
14544
|
+
auth: "admin"
|
|
14545
|
+
}), method(object({
|
|
14546
|
+
namespace: string().optional(),
|
|
14547
|
+
collection: string(),
|
|
14548
|
+
record: object({
|
|
14549
|
+
id: string().optional(),
|
|
14550
|
+
data: record(string(), unknown())
|
|
14551
|
+
})
|
|
14552
|
+
}), object({
|
|
14553
|
+
/**
|
|
14554
|
+
* The id the row ACTUALLY got (D473): the one supplied, the UUID minted
|
|
14555
|
+
* for an absent one, or the ROWID SQLite assigned on an `INTEGER`
|
|
14556
|
+
* primary key — which is the only place an auto key is knowable.
|
|
14557
|
+
*/
|
|
14558
|
+
id: union([string(), number()]) }), {
|
|
14559
|
+
kind: "mutation",
|
|
14560
|
+
auth: "admin"
|
|
14561
|
+
}), method(object({
|
|
14562
|
+
namespace: string().optional(),
|
|
14563
|
+
collection: string(),
|
|
14564
|
+
records: array(BulkRecordSchema).readonly()
|
|
14565
|
+
}), object({ inserted: number().int() }), {
|
|
14566
|
+
kind: "mutation",
|
|
14567
|
+
auth: "admin"
|
|
14568
|
+
}), method(object({
|
|
14569
|
+
namespace: string().optional(),
|
|
14570
|
+
guard: TransactGuardSchema.optional(),
|
|
14571
|
+
ops: array(TransactOpSchema).readonly()
|
|
14572
|
+
}), object({
|
|
14573
|
+
applied: boolean(),
|
|
14574
|
+
current: unknown().optional()
|
|
14575
|
+
}), {
|
|
14576
|
+
kind: "mutation",
|
|
14577
|
+
auth: "admin"
|
|
14578
|
+
}), method(object({
|
|
14579
|
+
namespace: string().optional(),
|
|
14580
|
+
collection: string(),
|
|
14581
|
+
id: string(),
|
|
14582
|
+
data: record(string(), unknown())
|
|
14583
|
+
}), _void(), {
|
|
14584
|
+
kind: "mutation",
|
|
14585
|
+
auth: "admin"
|
|
14586
|
+
}), method(object({
|
|
14587
|
+
namespace: string().optional(),
|
|
14588
|
+
collection: string(),
|
|
14589
|
+
key: string()
|
|
14590
|
+
}), _void(), {
|
|
14591
|
+
kind: "mutation",
|
|
14592
|
+
auth: "admin"
|
|
14593
|
+
}), method(object({
|
|
14594
|
+
namespace: string().optional(),
|
|
14595
|
+
collection: string(),
|
|
14596
|
+
filter: MutationFilterSchema
|
|
14597
|
+
}), object({ deleted: number().int() }), {
|
|
14598
|
+
kind: "mutation",
|
|
14599
|
+
auth: "admin"
|
|
14600
|
+
}), method(object({
|
|
14601
|
+
namespace: string().optional(),
|
|
14602
|
+
collection: string(),
|
|
14603
|
+
filter: MutationFilterSchema,
|
|
14604
|
+
data: record(string(), unknown())
|
|
14605
|
+
}), object({ updated: number().int() }), {
|
|
14606
|
+
kind: "mutation",
|
|
14607
|
+
auth: "admin"
|
|
14608
|
+
}), method(object({
|
|
14609
|
+
namespace: string().optional(),
|
|
14610
|
+
collection: string(),
|
|
14611
|
+
filter: QueryFilterSchema.optional()
|
|
14612
|
+
}), number(), { auth: "admin" }), method(object({
|
|
14613
|
+
namespace: string().optional(),
|
|
14614
|
+
collection: string(),
|
|
14615
|
+
fields: array(AggregateFieldSchema).readonly(),
|
|
14616
|
+
filter: QueryFilterSchema.optional()
|
|
14617
|
+
}), AggregateResultSchema, { auth: "admin" }), method(object({
|
|
14618
|
+
namespace: string().optional(),
|
|
14619
|
+
collection: string(),
|
|
14620
|
+
field: string(),
|
|
14621
|
+
bucketSize: number().int().positive(),
|
|
14622
|
+
origin: number().int(),
|
|
14623
|
+
filter: QueryFilterSchema.optional()
|
|
14624
|
+
}), array(object({
|
|
14625
|
+
bucket: number().int(),
|
|
14626
|
+
count: number().int()
|
|
14627
|
+
})).readonly(), { auth: "admin" }), method(object({
|
|
14628
|
+
namespace: string().optional(),
|
|
14629
|
+
collection: string()
|
|
14630
|
+
}), boolean(), { auth: "admin" }), method(DeclareCollectionInputSchema, _void(), {
|
|
14631
|
+
kind: "mutation",
|
|
14632
|
+
auth: "admin"
|
|
14633
|
+
});
|
|
14634
|
+
/**
|
|
14301
14635
|
* How long one snapshot may take end to end: the pinned copy of the whole
|
|
14302
14636
|
* database plus `PRAGMA integrity_check` over the copy, on the hub's slowest
|
|
14303
14637
|
* disk. ~800 MB at a pessimistic 10 MB/s is under 3 minutes; the bound is
|
|
@@ -14310,7 +14644,11 @@ var DATABASE_SNAPSHOT_TIMEOUT_MS = 30 * 6e4;
|
|
|
14310
14644
|
* database has no sidecars and is just as owned). Paths are absolute on the
|
|
14311
14645
|
* owner's host.
|
|
14312
14646
|
*/
|
|
14313
|
-
var DatabaseSnapshotTargetsSchema = object({ databases: array(object({
|
|
14647
|
+
var DatabaseSnapshotTargetsSchema = object({ databases: array(object({
|
|
14648
|
+
/** Which owned file this is — the handle `writeSnapshot` takes. */
|
|
14649
|
+
databaseId: DataStoreDatabaseSchema,
|
|
14650
|
+
livePath: string()
|
|
14651
|
+
})) });
|
|
14314
14652
|
/** One b-tree table of the snapshot and the rows it holds. */
|
|
14315
14653
|
var DatabaseSnapshotTableSchema = object({
|
|
14316
14654
|
name: string(),
|
|
@@ -14343,6 +14681,10 @@ var DatabaseSnapshotResultSchema = object({
|
|
|
14343
14681
|
/** When the pinned read transaction began (ms epoch) — the snapshot's instant. */
|
|
14344
14682
|
takenAt: number()
|
|
14345
14683
|
});
|
|
14684
|
+
/** A snapshot the owner wrote, with the file it belongs to. */
|
|
14685
|
+
var DatabaseSnapshotWrittenSchema = DatabaseSnapshotResultSchema.extend({ databaseId: DataStoreDatabaseSchema });
|
|
14686
|
+
/** Which database `writeSnapshot` copies. Required: an unstated ask is not guessed. */
|
|
14687
|
+
var DatabaseSnapshotRequestSchema = object({ databaseId: DataStoreDatabaseSchema });
|
|
14346
14688
|
/**
|
|
14347
14689
|
* A snapshot as an ARCHIVE records it (`ArchiveManifest.sqliteSnapshots`):
|
|
14348
14690
|
* the same facts, with both paths relative to the archive root (the node's
|
|
@@ -14352,9 +14694,11 @@ var ArchiveSqliteSnapshotSchema = DatabaseSnapshotResultSchema.extend({
|
|
|
14352
14694
|
/** Archive-relative path of the live database the archive does NOT carry. */
|
|
14353
14695
|
livePath: string(),
|
|
14354
14696
|
/** Archive-relative path of the verified copy it carries in its place. */
|
|
14355
|
-
snapshotPath: string()
|
|
14697
|
+
snapshotPath: string(),
|
|
14698
|
+
/** Absent on an archive made before several files were owned: that was `settings`. */
|
|
14699
|
+
databaseId: DataStoreDatabaseSchema.optional()
|
|
14356
14700
|
});
|
|
14357
|
-
method(object({}), DatabaseSnapshotTargetsSchema, { auth: "admin" }), method(
|
|
14701
|
+
method(object({}), DatabaseSnapshotTargetsSchema, { auth: "admin" }), method(DatabaseSnapshotRequestSchema, DatabaseSnapshotWrittenSchema, {
|
|
14358
14702
|
kind: "mutation",
|
|
14359
14703
|
auth: "admin",
|
|
14360
14704
|
timeoutMs: DATABASE_SNAPSHOT_TIMEOUT_MS
|
|
@@ -14475,7 +14819,12 @@ var BackupArchiveEntrySchema = object({
|
|
|
14475
14819
|
/** Top-level locations included in the archive (db, addons, tls, …). */
|
|
14476
14820
|
locations: array(string()).readonly(),
|
|
14477
14821
|
/** Present when the archive is encrypted; restore then needs that key. */
|
|
14478
|
-
encryption: BackupArchiveEncryptionSchema.optional()
|
|
14822
|
+
encryption: BackupArchiveEncryptionSchema.optional(),
|
|
14823
|
+
/**
|
|
14824
|
+
* The databases the run asked to carry (its retention class). Absent on an
|
|
14825
|
+
* archive made before several files were owned: that was `['settings']`.
|
|
14826
|
+
*/
|
|
14827
|
+
databases: array(DataStoreDatabaseSchema).readonly().optional()
|
|
14479
14828
|
});
|
|
14480
14829
|
var BackupEntrySchema = object({
|
|
14481
14830
|
id: string(),
|
|
@@ -14509,7 +14858,12 @@ var ArchiveManifestSchema = object({
|
|
|
14509
14858
|
* Live SQLite databases this archive carries as their OWNER's verified
|
|
14510
14859
|
* snapshot instead of as files (D693). Absent on archives made before.
|
|
14511
14860
|
*/
|
|
14512
|
-
sqliteSnapshots: array(ArchiveSqliteSnapshotSchema).optional()
|
|
14861
|
+
sqliteSnapshots: array(ArchiveSqliteSnapshotSchema).optional(),
|
|
14862
|
+
/**
|
|
14863
|
+
* Owned database files the run did NOT carry (not selected): left out of the
|
|
14864
|
+
* tar and the entry list alike. Absent when every owned file was carried.
|
|
14865
|
+
*/
|
|
14866
|
+
omittedDatabases: array(DataStoreDatabaseSchema).optional()
|
|
14513
14867
|
});
|
|
14514
14868
|
var LocationStatSchema = object({
|
|
14515
14869
|
name: string(),
|
|
@@ -14631,6 +14985,12 @@ var BackupScheduleSchema = object({
|
|
|
14631
14985
|
/** Optional subset of source locations to include; omitted = all. */
|
|
14632
14986
|
dataSources: array(string()).readonly().optional(),
|
|
14633
14987
|
/**
|
|
14988
|
+
* Which database files this schedule carries. Absent = `['settings']`
|
|
14989
|
+
* (an unstated ask is the minimum, D382). Events and history run weekly,
|
|
14990
|
+
* settings nightly (D852).
|
|
14991
|
+
*/
|
|
14992
|
+
databases: array(DataStoreDatabaseSchema).readonly().optional(),
|
|
14993
|
+
/**
|
|
14634
14994
|
* ms-epoch of the last tick that FIRED this schedule. Stamped before the
|
|
14635
14995
|
* archive runs (it is the dedupe anchor), so it says "attempted", never
|
|
14636
14996
|
* "succeeded" — a run refused by every destination stamps it too.
|
|
@@ -14654,7 +15014,9 @@ method(_void(), array(BackupDestinationInfoSchema).readonly(), { auth: "admin" }
|
|
|
14654
15014
|
* retention). Omitted = each destination's own policy
|
|
14655
15015
|
* retention (manual runs).
|
|
14656
15016
|
*/
|
|
14657
|
-
retentionCount: number().int().min(1).max(1e3).optional()
|
|
15017
|
+
retentionCount: number().int().min(1).max(1e3).optional(),
|
|
15018
|
+
/** Database files to carry; omitted = `['settings']`. */
|
|
15019
|
+
databases: array(DataStoreDatabaseSchema).optional()
|
|
14658
15020
|
}).optional(), BackupTriggerResultSchema, {
|
|
14659
15021
|
kind: "mutation",
|
|
14660
15022
|
auth: "admin"
|
|
@@ -14736,7 +15098,8 @@ method(_void(), array(BackupDestinationInfoSchema).readonly(), { auth: "admin" }
|
|
|
14736
15098
|
enabled: boolean(),
|
|
14737
15099
|
locationIds: array(string()).readonly(),
|
|
14738
15100
|
retentionCount: number().int().min(1).max(1e3),
|
|
14739
|
-
dataSources: array(string()).readonly().optional()
|
|
15101
|
+
dataSources: array(string()).readonly().optional(),
|
|
15102
|
+
databases: array(DataStoreDatabaseSchema).readonly().optional()
|
|
14740
15103
|
}), BackupScheduleSchema, {
|
|
14741
15104
|
kind: "mutation",
|
|
14742
15105
|
auth: "admin"
|
|
@@ -16516,282 +16879,6 @@ method(_void(), array(CustomModelDescriptorSchema).readonly(), { auth: "admin" }
|
|
|
16516
16879
|
timeoutMs: 30 * 6e4
|
|
16517
16880
|
});
|
|
16518
16881
|
/**
|
|
16519
|
-
* Query filter for settings-store collections.
|
|
16520
|
-
*/
|
|
16521
|
-
var QueryFilterSchema = object({
|
|
16522
|
-
where: record(string(), unknown()).optional(),
|
|
16523
|
-
whereIn: record(string(), array(unknown())).optional(),
|
|
16524
|
-
whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
|
|
16525
|
-
/** NULL-safe exclusion: matches rows whose field is NULL OR != the value. */
|
|
16526
|
-
whereNot: record(string(), unknown()).optional(),
|
|
16527
|
-
/** NULL-safe exclusion of a SET — `whereNot` for more than one value. An
|
|
16528
|
-
* empty list excludes nothing. See `QueryFilter.whereNotIn`. */
|
|
16529
|
-
whereNotIn: record(string(), array(unknown())).optional(),
|
|
16530
|
-
orderBy: object({
|
|
16531
|
-
field: string(),
|
|
16532
|
-
direction: _enum(["asc", "desc"])
|
|
16533
|
-
}).optional(),
|
|
16534
|
-
limit: number().optional(),
|
|
16535
|
-
offset: number().optional()
|
|
16536
|
-
});
|
|
16537
|
-
/**
|
|
16538
|
-
* The predicate half of a filter, for BULK MUTATIONS.
|
|
16539
|
-
*
|
|
16540
|
-
* Deliberately not `QueryFilterSchema`: `orderBy` / `limit` / `offset` have no
|
|
16541
|
-
* meaning for a statement that rewrites a set, and accepting them would invite
|
|
16542
|
-
* a caller to believe `limit` bounds the damage. Every field is optional here
|
|
16543
|
-
* only so the shape stays composable — the implementation REJECTS a filter
|
|
16544
|
-
* that compiles to no predicate, because that is the whole collection.
|
|
16545
|
-
*/
|
|
16546
|
-
var MutationFilterSchema = object({
|
|
16547
|
-
where: record(string(), unknown()).optional(),
|
|
16548
|
-
whereIn: record(string(), array(unknown())).optional(),
|
|
16549
|
-
whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
|
|
16550
|
-
whereNot: record(string(), unknown()).optional(),
|
|
16551
|
-
whereNotIn: record(string(), array(unknown())).optional()
|
|
16552
|
-
});
|
|
16553
|
-
/**
|
|
16554
|
-
* One scalar an {@link settingsStoreCapability.methods.aggregate} call asks for.
|
|
16555
|
-
*
|
|
16556
|
-
* `as` names the slot in the result, so the SAME column may be asked twice with
|
|
16557
|
-
* two operations (`MIN(startMs)` and `MAX(startMs)` in one round trip) — which
|
|
16558
|
-
* a `Record<column, op>` shape could not express.
|
|
16559
|
-
*/
|
|
16560
|
-
var AggregateFieldSchema = object({
|
|
16561
|
-
/** Result key. */
|
|
16562
|
-
as: string().min(1),
|
|
16563
|
-
/** Column to aggregate. Must be a real column of a declared collection. */
|
|
16564
|
-
field: string().min(1),
|
|
16565
|
-
op: _enum([
|
|
16566
|
-
"sum",
|
|
16567
|
-
"min",
|
|
16568
|
-
"max"
|
|
16569
|
-
])
|
|
16570
|
-
});
|
|
16571
|
-
/**
|
|
16572
|
-
* `COUNT(*)` plus one number per requested field.
|
|
16573
|
-
*
|
|
16574
|
-
* `null` means NO ROW MATCHED, never zero: a `SUM` over an empty set and a sum
|
|
16575
|
-
* that really is 0 are different facts, and an accounting caller that renders
|
|
16576
|
-
* "0 bytes, oldest = 0" for "nothing here" reports a lie about a disk.
|
|
16577
|
-
*/
|
|
16578
|
-
var AggregateResultSchema = object({
|
|
16579
|
-
count: number().int(),
|
|
16580
|
-
values: record(string(), number().nullable())
|
|
16581
|
-
});
|
|
16582
|
-
/** A single stored record: `{ id, data }`. */
|
|
16583
|
-
var SettingsRecordSchema = object({
|
|
16584
|
-
id: string(),
|
|
16585
|
-
data: record(string(), unknown())
|
|
16586
|
-
});
|
|
16587
|
-
/**
|
|
16588
|
-
* One record of a BULK insert — {@link SettingsRecordSchema} with the id made
|
|
16589
|
-
* optional.
|
|
16590
|
-
*
|
|
16591
|
-
* A separate schema rather than loosening the shared one: every other method
|
|
16592
|
-
* on this cap addresses a row BY its id, and making that field optional
|
|
16593
|
-
* everywhere would turn a forgotten key into a silently generated one on
|
|
16594
|
-
* `update` and `delete` as well.
|
|
16595
|
-
*/
|
|
16596
|
-
var BulkRecordSchema = object({
|
|
16597
|
-
id: string().optional(),
|
|
16598
|
-
data: record(string(), unknown())
|
|
16599
|
-
});
|
|
16600
|
-
/**
|
|
16601
|
-
* One write inside a {@link settingsStoreCapability.methods.transact} call.
|
|
16602
|
-
* Only the three that a "replace this set, bump that revision" write needs.
|
|
16603
|
-
*/
|
|
16604
|
-
var TransactOpSchema = discriminatedUnion("op", [
|
|
16605
|
-
object({
|
|
16606
|
-
op: literal("deleteWhere"),
|
|
16607
|
-
collection: string(),
|
|
16608
|
-
filter: MutationFilterSchema
|
|
16609
|
-
}),
|
|
16610
|
-
object({
|
|
16611
|
-
op: literal("insertMany"),
|
|
16612
|
-
collection: string(),
|
|
16613
|
-
records: array(BulkRecordSchema).readonly()
|
|
16614
|
-
}),
|
|
16615
|
-
object({
|
|
16616
|
-
op: literal("update"),
|
|
16617
|
-
collection: string(),
|
|
16618
|
-
id: string(),
|
|
16619
|
-
data: record(string(), unknown())
|
|
16620
|
-
})
|
|
16621
|
-
]);
|
|
16622
|
-
/**
|
|
16623
|
-
* The precondition of a transaction: the row `key` of `collection` must hold
|
|
16624
|
-
* `equals` in `column`, read INSIDE the transaction.
|
|
16625
|
-
*/
|
|
16626
|
-
var TransactGuardSchema = object({
|
|
16627
|
-
collection: string(),
|
|
16628
|
-
key: string(),
|
|
16629
|
-
column: string(),
|
|
16630
|
-
equals: unknown()
|
|
16631
|
-
});
|
|
16632
|
-
/**
|
|
16633
|
-
* Column declaration for a structured (SQL-backed) collection.
|
|
16634
|
-
*
|
|
16635
|
-
* Logical types — the backend translates each to the matching SQLite
|
|
16636
|
-
* storage class and handles per-type marshaling:
|
|
16637
|
-
* - `TEXT` / `INTEGER` / `REAL` — native SQLite types, pass-through
|
|
16638
|
-
* - `JSON` — TEXT under the hood; serialised on write, parsed on read
|
|
16639
|
-
* - `BOOLEAN` — INTEGER 0/1 under the hood; coerced both directions
|
|
16640
|
-
*/
|
|
16641
|
-
var CollectionColumnSchema = object({
|
|
16642
|
-
name: string(),
|
|
16643
|
-
type: _enum([
|
|
16644
|
-
"TEXT",
|
|
16645
|
-
"INTEGER",
|
|
16646
|
-
"REAL",
|
|
16647
|
-
"JSON",
|
|
16648
|
-
"BOOLEAN"
|
|
16649
|
-
]),
|
|
16650
|
-
primaryKey: boolean().optional(),
|
|
16651
|
-
notNull: boolean().optional(),
|
|
16652
|
-
unique: boolean().optional(),
|
|
16653
|
-
/**
|
|
16654
|
-
* Column DEFAULT. Required for B2: the four `ensureTable` consumers declare
|
|
16655
|
-
* columns like `enabled INTEGER NOT NULL DEFAULT 1`, and without this the
|
|
16656
|
-
* collection surface simply cannot express their existing tables — which is
|
|
16657
|
-
* why they were still on the uncapped `table*` API.
|
|
16658
|
-
*/
|
|
16659
|
-
defaultValue: union([
|
|
16660
|
-
string(),
|
|
16661
|
-
number(),
|
|
16662
|
-
boolean()
|
|
16663
|
-
]).optional()
|
|
16664
|
-
});
|
|
16665
|
-
var CollectionIndexSchema = object({
|
|
16666
|
-
name: string(),
|
|
16667
|
-
columns: array(string()).readonly(),
|
|
16668
|
-
unique: boolean().optional()
|
|
16669
|
-
});
|
|
16670
|
-
method(object({
|
|
16671
|
-
namespace: string().optional(),
|
|
16672
|
-
collection: string(),
|
|
16673
|
-
key: string()
|
|
16674
|
-
}), unknown(), { auth: "admin" }), method(object({
|
|
16675
|
-
namespace: string().optional(),
|
|
16676
|
-
collection: string(),
|
|
16677
|
-
key: string(),
|
|
16678
|
-
value: unknown()
|
|
16679
|
-
}), _void(), {
|
|
16680
|
-
kind: "mutation",
|
|
16681
|
-
auth: "admin"
|
|
16682
|
-
}), method(object({
|
|
16683
|
-
namespace: string().optional(),
|
|
16684
|
-
collection: string(),
|
|
16685
|
-
filter: QueryFilterSchema.optional(),
|
|
16686
|
-
columns: array(string()).readonly().optional()
|
|
16687
|
-
}), array(SettingsRecordSchema).readonly(), { auth: "admin" }), method(object({
|
|
16688
|
-
namespace: string().optional(),
|
|
16689
|
-
collection: string(),
|
|
16690
|
-
/** Declared columns identifying the slot; must be covered by a UNIQUE
|
|
16691
|
-
* index on the collection. Never empty. */
|
|
16692
|
-
conflict: array(string()).readonly(),
|
|
16693
|
-
record: BulkRecordSchema
|
|
16694
|
-
}), object({
|
|
16695
|
-
/** The id the row HAS: assigned by SQLite on an insert, or the existing
|
|
16696
|
-
* row's own id on an update. */
|
|
16697
|
-
id: union([string(), number()]) }), {
|
|
16698
|
-
kind: "mutation",
|
|
16699
|
-
auth: "admin"
|
|
16700
|
-
}), method(object({
|
|
16701
|
-
namespace: string().optional(),
|
|
16702
|
-
collection: string(),
|
|
16703
|
-
record: object({
|
|
16704
|
-
id: string().optional(),
|
|
16705
|
-
data: record(string(), unknown())
|
|
16706
|
-
})
|
|
16707
|
-
}), object({
|
|
16708
|
-
/**
|
|
16709
|
-
* The id the row ACTUALLY got (D473): the one supplied, the UUID minted
|
|
16710
|
-
* for an absent one, or the ROWID SQLite assigned on an `INTEGER`
|
|
16711
|
-
* primary key — which is the only place an auto key is knowable.
|
|
16712
|
-
*/
|
|
16713
|
-
id: union([string(), number()]) }), {
|
|
16714
|
-
kind: "mutation",
|
|
16715
|
-
auth: "admin"
|
|
16716
|
-
}), method(object({
|
|
16717
|
-
namespace: string().optional(),
|
|
16718
|
-
collection: string(),
|
|
16719
|
-
records: array(BulkRecordSchema).readonly()
|
|
16720
|
-
}), object({ inserted: number().int() }), {
|
|
16721
|
-
kind: "mutation",
|
|
16722
|
-
auth: "admin"
|
|
16723
|
-
}), method(object({
|
|
16724
|
-
namespace: string().optional(),
|
|
16725
|
-
guard: TransactGuardSchema.optional(),
|
|
16726
|
-
ops: array(TransactOpSchema).readonly()
|
|
16727
|
-
}), object({
|
|
16728
|
-
applied: boolean(),
|
|
16729
|
-
current: unknown().optional()
|
|
16730
|
-
}), {
|
|
16731
|
-
kind: "mutation",
|
|
16732
|
-
auth: "admin"
|
|
16733
|
-
}), method(object({
|
|
16734
|
-
namespace: string().optional(),
|
|
16735
|
-
collection: string(),
|
|
16736
|
-
id: string(),
|
|
16737
|
-
data: record(string(), unknown())
|
|
16738
|
-
}), _void(), {
|
|
16739
|
-
kind: "mutation",
|
|
16740
|
-
auth: "admin"
|
|
16741
|
-
}), method(object({
|
|
16742
|
-
namespace: string().optional(),
|
|
16743
|
-
collection: string(),
|
|
16744
|
-
key: string()
|
|
16745
|
-
}), _void(), {
|
|
16746
|
-
kind: "mutation",
|
|
16747
|
-
auth: "admin"
|
|
16748
|
-
}), method(object({
|
|
16749
|
-
namespace: string().optional(),
|
|
16750
|
-
collection: string(),
|
|
16751
|
-
filter: MutationFilterSchema
|
|
16752
|
-
}), object({ deleted: number().int() }), {
|
|
16753
|
-
kind: "mutation",
|
|
16754
|
-
auth: "admin"
|
|
16755
|
-
}), method(object({
|
|
16756
|
-
namespace: string().optional(),
|
|
16757
|
-
collection: string(),
|
|
16758
|
-
filter: MutationFilterSchema,
|
|
16759
|
-
data: record(string(), unknown())
|
|
16760
|
-
}), object({ updated: number().int() }), {
|
|
16761
|
-
kind: "mutation",
|
|
16762
|
-
auth: "admin"
|
|
16763
|
-
}), method(object({
|
|
16764
|
-
namespace: string().optional(),
|
|
16765
|
-
collection: string(),
|
|
16766
|
-
filter: QueryFilterSchema.optional()
|
|
16767
|
-
}), number(), { auth: "admin" }), method(object({
|
|
16768
|
-
namespace: string().optional(),
|
|
16769
|
-
collection: string(),
|
|
16770
|
-
fields: array(AggregateFieldSchema).readonly(),
|
|
16771
|
-
filter: QueryFilterSchema.optional()
|
|
16772
|
-
}), AggregateResultSchema, { auth: "admin" }), method(object({
|
|
16773
|
-
namespace: string().optional(),
|
|
16774
|
-
collection: string(),
|
|
16775
|
-
field: string(),
|
|
16776
|
-
bucketSize: number().int().positive(),
|
|
16777
|
-
origin: number().int(),
|
|
16778
|
-
filter: QueryFilterSchema.optional()
|
|
16779
|
-
}), array(object({
|
|
16780
|
-
bucket: number().int(),
|
|
16781
|
-
count: number().int()
|
|
16782
|
-
})).readonly(), { auth: "admin" }), method(object({
|
|
16783
|
-
namespace: string().optional(),
|
|
16784
|
-
collection: string()
|
|
16785
|
-
}), boolean(), { auth: "admin" }), method(object({
|
|
16786
|
-
namespace: string().optional(),
|
|
16787
|
-
collection: string(),
|
|
16788
|
-
columns: array(CollectionColumnSchema).readonly(),
|
|
16789
|
-
indexes: array(CollectionIndexSchema).readonly().optional()
|
|
16790
|
-
}), _void(), {
|
|
16791
|
-
kind: "mutation",
|
|
16792
|
-
auth: "admin"
|
|
16793
|
-
});
|
|
16794
|
-
/**
|
|
16795
16882
|
* What one engine says about itself. The orchestrator uses `kind` to pick
|
|
16796
16883
|
* a registrant for a collection; `engineId` is what a log line names when
|
|
16797
16884
|
* a call is routed or refused.
|
|
@@ -16871,6 +16958,14 @@ id: union([string(), number()]) }), {
|
|
|
16871
16958
|
}), object({ id: union([string(), number()]) }), {
|
|
16872
16959
|
kind: "mutation",
|
|
16873
16960
|
auth: "admin"
|
|
16961
|
+
}), method(object({
|
|
16962
|
+
namespace: string().optional(),
|
|
16963
|
+
collection: string(),
|
|
16964
|
+
conflict: array(string()).readonly(),
|
|
16965
|
+
records: array(BulkRecordSchema).readonly()
|
|
16966
|
+
}), object({ upserted: number().int() }), {
|
|
16967
|
+
kind: "mutation",
|
|
16968
|
+
auth: "admin"
|
|
16874
16969
|
}), method(object({
|
|
16875
16970
|
namespace: string().optional(),
|
|
16876
16971
|
collection: string(),
|
|
@@ -16940,12 +17035,7 @@ id: union([string(), number()]) }), {
|
|
|
16940
17035
|
})).readonly(), { auth: "admin" }), method(object({
|
|
16941
17036
|
namespace: string().optional(),
|
|
16942
17037
|
collection: string()
|
|
16943
|
-
}), boolean(), { auth: "admin" }), method(
|
|
16944
|
-
namespace: string().optional(),
|
|
16945
|
-
collection: string(),
|
|
16946
|
-
columns: array(CollectionColumnSchema).readonly(),
|
|
16947
|
-
indexes: array(CollectionIndexSchema).readonly().optional()
|
|
16948
|
-
}), _void(), {
|
|
17038
|
+
}), boolean(), { auth: "admin" }), method(DeclareCollectionInputSchema, _void(), {
|
|
16949
17039
|
kind: "mutation",
|
|
16950
17040
|
auth: "admin"
|
|
16951
17041
|
});
|
|
@@ -26660,6 +26750,9 @@ var RetrainFrameReviewSchema = object({
|
|
|
26660
26750
|
/** The baseline was re-derived, not snapshotted (a pre-origin row). */
|
|
26661
26751
|
approximate: boolean(),
|
|
26662
26752
|
origin: RetrainOriginSchema.optional(),
|
|
26753
|
+
/** The class / label the box carries NOW (a removed box: its origin's). Absent on an older hub. */
|
|
26754
|
+
macroClass: RetrainMacroClassSchema.optional(),
|
|
26755
|
+
label: string().optional(),
|
|
26663
26756
|
iou: number().optional()
|
|
26664
26757
|
})).readonly(),
|
|
26665
26758
|
summary: object({
|
|
@@ -49091,6 +49184,12 @@ Object.freeze({
|
|
|
49091
49184
|
addonId: null,
|
|
49092
49185
|
access: "create"
|
|
49093
49186
|
},
|
|
49187
|
+
"dataStoreProvider.upsertMany": {
|
|
49188
|
+
capName: "data-store-provider",
|
|
49189
|
+
capScope: "system",
|
|
49190
|
+
addonId: null,
|
|
49191
|
+
access: "create"
|
|
49192
|
+
},
|
|
49094
49193
|
"dayNight.getOptions": {
|
|
49095
49194
|
capName: "day-night",
|
|
49096
49195
|
capScope: "device",
|
|
@@ -53939,6 +54038,12 @@ Object.freeze({
|
|
|
53939
54038
|
addonId: null,
|
|
53940
54039
|
access: "create"
|
|
53941
54040
|
},
|
|
54041
|
+
"settingsStore.upsertMany": {
|
|
54042
|
+
capName: "settings-store",
|
|
54043
|
+
capScope: "system",
|
|
54044
|
+
addonId: null,
|
|
54045
|
+
access: "create"
|
|
54046
|
+
},
|
|
53942
54047
|
"smoke.getStatus": {
|
|
53943
54048
|
capName: "smoke",
|
|
53944
54049
|
capScope: "device",
|