@camstack/addon-post-analysis 1.2.614 → 1.2.615
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-D6tdLEFB.mjs → clip-model-registry-BtK1fPgi.mjs} +21 -52
- package/dist/{clip-model-registry-CM-m6e1l.js → clip-model-registry-ycbGgfo_.js} +21 -52
- 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-PyXxg2Wg.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-CnHfiisq.mjs} +3 -3
- package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-CSQBGkvs.mjs +26 -0
- package/dist/pipeline-analytics/{hostInit-RCMuxWxC.mjs → hostInit-BGsx8mDn.mjs} +3 -3
- package/dist/pipeline-analytics/index.js +257 -312
- package/dist/pipeline-analytics/index.mjs +257 -312
- 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-mydSlNUz.mjs +0 -26
|
@@ -2,7 +2,7 @@ Object.defineProperties(exports, {
|
|
|
2
2
|
__esModule: { value: true },
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
|
-
const require_clip_model_registry = require("../clip-model-registry-
|
|
5
|
+
const require_clip_model_registry = require("../clip-model-registry-ycbGgfo_.js");
|
|
6
6
|
let node_fs = require("node:fs");
|
|
7
7
|
node_fs = require_clip_model_registry.__toESM(node_fs, 1);
|
|
8
8
|
let node_path = require("node:path");
|
|
@@ -4078,6 +4078,224 @@ function ncAlarmPanelPort(panel) {
|
|
|
4078
4078
|
};
|
|
4079
4079
|
}
|
|
4080
4080
|
//#endregion
|
|
4081
|
+
//#region src/durable/durable-record-body.ts
|
|
4082
|
+
/**
|
|
4083
|
+
* Zod body for phase-3 durable ledger record kinds. The engine validates on
|
|
4084
|
+
* write; each owner's `fromRecord` / `toValue` remain authoritative on read.
|
|
4085
|
+
*/
|
|
4086
|
+
var DurableLedgerBodySchema = require_clip_model_registry.record(require_clip_model_registry.string(), require_clip_model_registry.unknown());
|
|
4087
|
+
//#endregion
|
|
4088
|
+
//#region src/notification-center/nc-durable-record-kinds.ts
|
|
4089
|
+
/**
|
|
4090
|
+
* Record kinds for NC live-state ledgers (records plan phase 3, steps 25–36).
|
|
4091
|
+
*
|
|
4092
|
+
* Hosted in the pipeline-analytics addon (`pipeline-analytics` owner stamp).
|
|
4093
|
+
* Declared by the hub; every node reads and writes them through `ctx.records`.
|
|
4094
|
+
* The legacy settings-store handles (`durableLegacyKind`, `legacyCollectionKind`)
|
|
4095
|
+
* serve only a centre built WITHOUT `records` — the specs.
|
|
4096
|
+
*/
|
|
4097
|
+
/** The settings-store tables these kinds replaced; read only WITHOUT `ctx.records` (the specs). */
|
|
4098
|
+
var NC_LIVENESS_LEGACY = "notification-center:liveness";
|
|
4099
|
+
var NC_DEVICE_ALERTS_LEGACY = "notification-center:device-alerts";
|
|
4100
|
+
var NC_SYSTEM_STATE_LEGACY = "notification-center:system-state";
|
|
4101
|
+
var NC_OCCUPANCY_LEGACY = "notification-center:occupancy";
|
|
4102
|
+
var NC_DEVICE_PRUNES_LEGACY = "notification-center:device-prunes";
|
|
4103
|
+
var NC_STATE_SUMMARY_STAMPS_LEGACY = "notification-center:state-summary-stamps";
|
|
4104
|
+
var NC_ALERT_EPISODES_LEGACY = "notification-center:alert-episodes";
|
|
4105
|
+
var NC_META_LEGACY = "notification-center:meta";
|
|
4106
|
+
var NC_SNOOZES_LEGACY = "notification-center:snoozes";
|
|
4107
|
+
var NC_SNOOZE_SUPPRESSED_LEGACY = "notification-center:snooze-suppressed";
|
|
4108
|
+
var NC_TRACK_GROUPS_LEGACY = "notification-center:track-groups";
|
|
4109
|
+
var NC_OUTBOX_LEGACY = "notification-center:outbox";
|
|
4110
|
+
var NC_ARTIFACTS_LEGACY = "notification-center:artifacts";
|
|
4111
|
+
var ledger = (writeTrigger, database = "settings", retention = { none: "mirror load-all at boot; rows drop only via owner prune or device-removal hook" }) => ({
|
|
4112
|
+
schema: DurableLedgerBodySchema,
|
|
4113
|
+
class: "ledger",
|
|
4114
|
+
database,
|
|
4115
|
+
writeTrigger,
|
|
4116
|
+
device: "optional",
|
|
4117
|
+
at: "none",
|
|
4118
|
+
retention
|
|
4119
|
+
});
|
|
4120
|
+
/**
|
|
4121
|
+
* The shape the four QUERIED kinds share with the mirrors. Each spells its own
|
|
4122
|
+
* file, trigger, indexes and retention as literals (the records guards read them).
|
|
4123
|
+
* `device` and `at` stay what the first (empty) declaration said — the engine
|
|
4124
|
+
* refuses to change either — so every read is served by a DATA-field index, and
|
|
4125
|
+
* the camera rides the record envelope (`deviceId`) for the D865 removal.
|
|
4126
|
+
*/
|
|
4127
|
+
var QUERIED = {
|
|
4128
|
+
schema: DurableLedgerBodySchema,
|
|
4129
|
+
device: "optional",
|
|
4130
|
+
at: "none"
|
|
4131
|
+
};
|
|
4132
|
+
var ncDurableRecordKinds = require_clip_model_registry.defineRecordKinds({
|
|
4133
|
+
liveness: ledger("a liveness state TRANSITION the centre accepted (seed or flip); a no-flip writes nothing"),
|
|
4134
|
+
"device-alerts": ledger("a sustained device alert episode the centre confirmed or cleared"),
|
|
4135
|
+
"system-state": ledger("a system-state subject flip the state summary accepted"),
|
|
4136
|
+
"alert-episodes": ledger("an alert episode the centre notified (critical or error); its resolution deletes the row"),
|
|
4137
|
+
occupancy: ledger("a confirmed occupancy level write-through after the watcher decided an edge"),
|
|
4138
|
+
"device-prunes": ledger("one row recording what a deleted-device prune removed"),
|
|
4139
|
+
"state-summary-stamps": ledger("digest delivery stamps per rule kind"),
|
|
4140
|
+
meta: ledger("outbox boot-reconcile watermark and other single-key meta rows", "settings", { none: "one fixed key (watermark), overwritten in place, never deleted" }),
|
|
4141
|
+
snoozes: ledger("operator opens or closes a snooze window (write-through)"),
|
|
4142
|
+
"snooze-suppressed": {
|
|
4143
|
+
...QUERIED,
|
|
4144
|
+
class: "ledger",
|
|
4145
|
+
database: "events",
|
|
4146
|
+
writeTrigger: "aggregate count per (window, target, rule, camera) for suppressed notifications",
|
|
4147
|
+
indexes: [{
|
|
4148
|
+
name: "snooze",
|
|
4149
|
+
fields: ["snoozeId"]
|
|
4150
|
+
}],
|
|
4151
|
+
retention: {
|
|
4152
|
+
owner: "notification-center",
|
|
4153
|
+
reason: "deleted with its snooze window, 6 h after that window closes"
|
|
4154
|
+
}
|
|
4155
|
+
},
|
|
4156
|
+
"track-groups": {
|
|
4157
|
+
...QUERIED,
|
|
4158
|
+
class: "ledger",
|
|
4159
|
+
database: "events",
|
|
4160
|
+
writeTrigger: "one row per grouped delivery window opened at admission time",
|
|
4161
|
+
indexes: [
|
|
4162
|
+
{
|
|
4163
|
+
name: "open",
|
|
4164
|
+
fields: ["sealed"]
|
|
4165
|
+
},
|
|
4166
|
+
{
|
|
4167
|
+
name: "opened",
|
|
4168
|
+
fields: ["openedAt"]
|
|
4169
|
+
},
|
|
4170
|
+
{
|
|
4171
|
+
name: "device_opened",
|
|
4172
|
+
fields: ["deviceId", "openedAt"]
|
|
4173
|
+
},
|
|
4174
|
+
{
|
|
4175
|
+
name: "rule_opened",
|
|
4176
|
+
fields: ["ruleId", "openedAt"]
|
|
4177
|
+
},
|
|
4178
|
+
{
|
|
4179
|
+
name: "rule_device_opened",
|
|
4180
|
+
fields: [
|
|
4181
|
+
"ruleId",
|
|
4182
|
+
"deviceId",
|
|
4183
|
+
"openedAt"
|
|
4184
|
+
]
|
|
4185
|
+
}
|
|
4186
|
+
],
|
|
4187
|
+
retention: {
|
|
4188
|
+
owner: "notification-center",
|
|
4189
|
+
reason: "ring: the newest NC_GROUP_MAX_ROWS_PER_DEVICE rows per camera, trimmed on write"
|
|
4190
|
+
}
|
|
4191
|
+
},
|
|
4192
|
+
outbox: {
|
|
4193
|
+
...QUERIED,
|
|
4194
|
+
class: "ledger",
|
|
4195
|
+
database: "events",
|
|
4196
|
+
writeTrigger: "one row per (rule, dedupRef, target) enqueued for delivery",
|
|
4197
|
+
indexes: [
|
|
4198
|
+
{
|
|
4199
|
+
name: "created",
|
|
4200
|
+
fields: ["createdAt"]
|
|
4201
|
+
},
|
|
4202
|
+
{
|
|
4203
|
+
name: "rule_created",
|
|
4204
|
+
fields: ["ruleId", "createdAt"]
|
|
4205
|
+
},
|
|
4206
|
+
{
|
|
4207
|
+
name: "status_created",
|
|
4208
|
+
fields: ["status", "createdAt"]
|
|
4209
|
+
},
|
|
4210
|
+
{
|
|
4211
|
+
name: "device_created",
|
|
4212
|
+
fields: ["deviceId", "createdAt"]
|
|
4213
|
+
},
|
|
4214
|
+
{
|
|
4215
|
+
name: "rule_status_created",
|
|
4216
|
+
fields: [
|
|
4217
|
+
"ruleId",
|
|
4218
|
+
"status",
|
|
4219
|
+
"createdAt"
|
|
4220
|
+
]
|
|
4221
|
+
},
|
|
4222
|
+
{
|
|
4223
|
+
name: "rule_device_created",
|
|
4224
|
+
fields: [
|
|
4225
|
+
"ruleId",
|
|
4226
|
+
"deviceId",
|
|
4227
|
+
"createdAt"
|
|
4228
|
+
]
|
|
4229
|
+
},
|
|
4230
|
+
{
|
|
4231
|
+
name: "status_device_created",
|
|
4232
|
+
fields: [
|
|
4233
|
+
"status",
|
|
4234
|
+
"deviceId",
|
|
4235
|
+
"createdAt"
|
|
4236
|
+
]
|
|
4237
|
+
},
|
|
4238
|
+
{
|
|
4239
|
+
name: "rule_status_device_created",
|
|
4240
|
+
fields: [
|
|
4241
|
+
"ruleId",
|
|
4242
|
+
"status",
|
|
4243
|
+
"deviceId",
|
|
4244
|
+
"createdAt"
|
|
4245
|
+
]
|
|
4246
|
+
}
|
|
4247
|
+
],
|
|
4248
|
+
retention: {
|
|
4249
|
+
owner: "notification-center",
|
|
4250
|
+
reason: "terminal (sent/dead) rows older than 7 days pruned at boot; a pending row retries to dead first"
|
|
4251
|
+
},
|
|
4252
|
+
maxDataBytes: require_clip_model_registry.RECORD_MAX_DATA_BYTES
|
|
4253
|
+
},
|
|
4254
|
+
artifacts: {
|
|
4255
|
+
...QUERIED,
|
|
4256
|
+
class: "ledger",
|
|
4257
|
+
database: "events",
|
|
4258
|
+
writeTrigger: "retained notification artefact metadata indexed for lookup and expiry",
|
|
4259
|
+
indexes: [{
|
|
4260
|
+
name: "captured",
|
|
4261
|
+
fields: ["capturedAt"]
|
|
4262
|
+
}, {
|
|
4263
|
+
name: "expires",
|
|
4264
|
+
fields: ["expiresAt"]
|
|
4265
|
+
}],
|
|
4266
|
+
retention: {
|
|
4267
|
+
owner: "notification-center",
|
|
4268
|
+
reason: "falls with its bytes: expired rows on every node, orphans against the shelf on the producer node"
|
|
4269
|
+
}
|
|
4270
|
+
}
|
|
4271
|
+
});
|
|
4272
|
+
/**
|
|
4273
|
+
* The settings-store table each kind stands in for when a centre is built
|
|
4274
|
+
* WITHOUT `ctx.records` - the specs' fake store (`legacyCollectionKind`,
|
|
4275
|
+
* `durableLegacyKind`). Production never reads it: every node has
|
|
4276
|
+
* `ctx.records`, and the operator dropped these tables offline (D900).
|
|
4277
|
+
*/
|
|
4278
|
+
var NC_DURABLE_LEGACY_TABLES = {
|
|
4279
|
+
liveness: NC_LIVENESS_LEGACY,
|
|
4280
|
+
"device-alerts": NC_DEVICE_ALERTS_LEGACY,
|
|
4281
|
+
"system-state": NC_SYSTEM_STATE_LEGACY,
|
|
4282
|
+
"alert-episodes": NC_ALERT_EPISODES_LEGACY,
|
|
4283
|
+
occupancy: NC_OCCUPANCY_LEGACY,
|
|
4284
|
+
"device-prunes": NC_DEVICE_PRUNES_LEGACY,
|
|
4285
|
+
"state-summary-stamps": NC_STATE_SUMMARY_STAMPS_LEGACY,
|
|
4286
|
+
meta: NC_META_LEGACY,
|
|
4287
|
+
snoozes: NC_SNOOZES_LEGACY,
|
|
4288
|
+
"snooze-suppressed": NC_SNOOZE_SUPPRESSED_LEGACY,
|
|
4289
|
+
"track-groups": NC_TRACK_GROUPS_LEGACY,
|
|
4290
|
+
outbox: NC_OUTBOX_LEGACY,
|
|
4291
|
+
artifacts: NC_ARTIFACTS_LEGACY
|
|
4292
|
+
};
|
|
4293
|
+
/** The legacy table of an NC durable kind by name, or `undefined` for any other kind. */
|
|
4294
|
+
function ncDurableLegacyTableOf(kind) {
|
|
4295
|
+
for (const [name, table] of Object.entries(NC_DURABLE_LEGACY_TABLES)) if (name === kind) return table;
|
|
4296
|
+
}
|
|
4297
|
+
Object.values(NC_DURABLE_LEGACY_TABLES);
|
|
4298
|
+
//#endregion
|
|
4081
4299
|
//#region src/durable/legacy-collection-kind.ts
|
|
4082
4300
|
/** Bounds of a half-open range on the legacy filter (the store has no `>=`). */
|
|
4083
4301
|
var RANGE_MIN = -864e13;
|
|
@@ -4223,8 +4441,8 @@ var LegacyCollectionKind = class {
|
|
|
4223
4441
|
/** The handle an NC owner reads and writes through: records when present, else the legacy table. */
|
|
4224
4442
|
function queriedKind(definition, deps) {
|
|
4225
4443
|
if (deps.records !== void 0) return deps.records.kind(definition);
|
|
4226
|
-
const collection = definition.
|
|
4227
|
-
if (collection === void 0) throw new Error(`kind "${definition.name}"
|
|
4444
|
+
const collection = ncDurableLegacyTableOf(definition.name);
|
|
4445
|
+
if (collection === void 0) throw new Error(`kind "${definition.name}" has no legacy table to stand in for it`);
|
|
4228
4446
|
return new LegacyCollectionKind({
|
|
4229
4447
|
definition,
|
|
4230
4448
|
collection,
|
|
@@ -4269,203 +4487,6 @@ async function collectRecordPages(kind, q, max) {
|
|
|
4269
4487
|
}
|
|
4270
4488
|
}
|
|
4271
4489
|
//#endregion
|
|
4272
|
-
//#region src/durable/durable-record-body.ts
|
|
4273
|
-
/**
|
|
4274
|
-
* Zod body for phase-3 durable ledger record kinds. The engine validates on
|
|
4275
|
-
* write; each owner's `fromRecord` / `toValue` remain authoritative on read.
|
|
4276
|
-
*/
|
|
4277
|
-
var DurableLedgerBodySchema = require_clip_model_registry.record(require_clip_model_registry.string(), require_clip_model_registry.unknown());
|
|
4278
|
-
//#endregion
|
|
4279
|
-
//#region src/notification-center/nc-durable-record-kinds.ts
|
|
4280
|
-
/**
|
|
4281
|
-
* Record kinds for NC live-state ledgers (records plan phase 3, steps 25–36).
|
|
4282
|
-
*
|
|
4283
|
-
* Hosted in the pipeline-analytics addon (`pipeline-analytics` owner stamp).
|
|
4284
|
-
* Declared by the hub; every node reads and writes them through `ctx.records`.
|
|
4285
|
-
* The legacy settings-store handles (`durableLegacyKind`, `legacyCollectionKind`)
|
|
4286
|
-
* serve only a centre built WITHOUT `records` — the specs.
|
|
4287
|
-
*/
|
|
4288
|
-
/** Legacy collection names — keep in sync with owner constants. */
|
|
4289
|
-
var NC_LIVENESS_LEGACY = "notification-center:liveness";
|
|
4290
|
-
var NC_DEVICE_ALERTS_LEGACY = "notification-center:device-alerts";
|
|
4291
|
-
var NC_SYSTEM_STATE_LEGACY = "notification-center:system-state";
|
|
4292
|
-
var NC_OCCUPANCY_LEGACY = "notification-center:occupancy";
|
|
4293
|
-
var NC_DEVICE_PRUNES_LEGACY = "notification-center:device-prunes";
|
|
4294
|
-
var NC_STATE_SUMMARY_STAMPS_LEGACY = "notification-center:state-summary-stamps";
|
|
4295
|
-
var NC_ALERT_EPISODES_LEGACY = "notification-center:alert-episodes";
|
|
4296
|
-
var NC_META_LEGACY = "notification-center:meta";
|
|
4297
|
-
var NC_SNOOZES_LEGACY = "notification-center:snoozes";
|
|
4298
|
-
var NC_SNOOZE_SUPPRESSED_LEGACY = "notification-center:snooze-suppressed";
|
|
4299
|
-
var NC_TRACK_GROUPS_LEGACY = "notification-center:track-groups";
|
|
4300
|
-
var NC_OUTBOX_LEGACY = "notification-center:outbox";
|
|
4301
|
-
var NC_ARTIFACTS_LEGACY = "notification-center:artifacts";
|
|
4302
|
-
var ledger = (adoptsFrom, writeTrigger, database = "settings", retention = { none: "mirror load-all at boot; rows drop only via owner prune or device-removal hook" }) => ({
|
|
4303
|
-
schema: DurableLedgerBodySchema,
|
|
4304
|
-
class: "ledger",
|
|
4305
|
-
database,
|
|
4306
|
-
writeTrigger,
|
|
4307
|
-
device: "optional",
|
|
4308
|
-
at: "none",
|
|
4309
|
-
retention,
|
|
4310
|
-
adoptsFrom
|
|
4311
|
-
});
|
|
4312
|
-
/**
|
|
4313
|
-
* The shape the four QUERIED kinds share with the mirrors. Each spells its own
|
|
4314
|
-
* file, trigger, indexes and retention as literals (the records guards read them).
|
|
4315
|
-
* `device` and `at` stay what the first (empty) declaration said — the engine
|
|
4316
|
-
* refuses to change either — so every read is served by a DATA-field index, and
|
|
4317
|
-
* the camera rides the record envelope (`deviceId`) for the D865 removal.
|
|
4318
|
-
*/
|
|
4319
|
-
var QUERIED = {
|
|
4320
|
-
schema: DurableLedgerBodySchema,
|
|
4321
|
-
device: "optional",
|
|
4322
|
-
at: "none"
|
|
4323
|
-
};
|
|
4324
|
-
var ncDurableRecordKinds = require_clip_model_registry.defineRecordKinds({
|
|
4325
|
-
liveness: ledger(NC_LIVENESS_LEGACY, "a liveness state TRANSITION the centre accepted (seed or flip); a no-flip writes nothing"),
|
|
4326
|
-
"device-alerts": ledger(NC_DEVICE_ALERTS_LEGACY, "a sustained device alert episode the centre confirmed or cleared"),
|
|
4327
|
-
"system-state": ledger(NC_SYSTEM_STATE_LEGACY, "a system-state subject flip the state summary accepted"),
|
|
4328
|
-
"alert-episodes": ledger(NC_ALERT_EPISODES_LEGACY, "an alert episode the centre notified (critical or error); its resolution deletes the row"),
|
|
4329
|
-
occupancy: ledger(NC_OCCUPANCY_LEGACY, "a confirmed occupancy level write-through after the watcher decided an edge"),
|
|
4330
|
-
"device-prunes": ledger(NC_DEVICE_PRUNES_LEGACY, "one row recording what a deleted-device prune removed"),
|
|
4331
|
-
"state-summary-stamps": ledger(NC_STATE_SUMMARY_STAMPS_LEGACY, "digest delivery stamps per rule kind"),
|
|
4332
|
-
meta: ledger(NC_META_LEGACY, "outbox boot-reconcile watermark and other single-key meta rows", "settings", { none: "one fixed key (watermark), overwritten in place, never deleted" }),
|
|
4333
|
-
snoozes: ledger(NC_SNOOZES_LEGACY, "operator opens or closes a snooze window (write-through)"),
|
|
4334
|
-
"snooze-suppressed": {
|
|
4335
|
-
...QUERIED,
|
|
4336
|
-
class: "ledger",
|
|
4337
|
-
database: "events",
|
|
4338
|
-
writeTrigger: "aggregate count per (window, target, rule, camera) for suppressed notifications",
|
|
4339
|
-
indexes: [{
|
|
4340
|
-
name: "snooze",
|
|
4341
|
-
fields: ["snoozeId"]
|
|
4342
|
-
}],
|
|
4343
|
-
retention: {
|
|
4344
|
-
owner: "notification-center",
|
|
4345
|
-
reason: "deleted with its snooze window, 6 h after that window closes"
|
|
4346
|
-
},
|
|
4347
|
-
adoptsFrom: NC_SNOOZE_SUPPRESSED_LEGACY
|
|
4348
|
-
},
|
|
4349
|
-
"track-groups": {
|
|
4350
|
-
...QUERIED,
|
|
4351
|
-
class: "ledger",
|
|
4352
|
-
database: "events",
|
|
4353
|
-
writeTrigger: "one row per grouped delivery window opened at admission time",
|
|
4354
|
-
indexes: [
|
|
4355
|
-
{
|
|
4356
|
-
name: "open",
|
|
4357
|
-
fields: ["sealed"]
|
|
4358
|
-
},
|
|
4359
|
-
{
|
|
4360
|
-
name: "opened",
|
|
4361
|
-
fields: ["openedAt"]
|
|
4362
|
-
},
|
|
4363
|
-
{
|
|
4364
|
-
name: "device_opened",
|
|
4365
|
-
fields: ["deviceId", "openedAt"]
|
|
4366
|
-
},
|
|
4367
|
-
{
|
|
4368
|
-
name: "rule_opened",
|
|
4369
|
-
fields: ["ruleId", "openedAt"]
|
|
4370
|
-
},
|
|
4371
|
-
{
|
|
4372
|
-
name: "rule_device_opened",
|
|
4373
|
-
fields: [
|
|
4374
|
-
"ruleId",
|
|
4375
|
-
"deviceId",
|
|
4376
|
-
"openedAt"
|
|
4377
|
-
]
|
|
4378
|
-
}
|
|
4379
|
-
],
|
|
4380
|
-
retention: {
|
|
4381
|
-
owner: "notification-center",
|
|
4382
|
-
reason: "ring: the newest NC_GROUP_MAX_ROWS_PER_DEVICE rows per camera, trimmed on write"
|
|
4383
|
-
},
|
|
4384
|
-
adoptsFrom: NC_TRACK_GROUPS_LEGACY
|
|
4385
|
-
},
|
|
4386
|
-
outbox: {
|
|
4387
|
-
...QUERIED,
|
|
4388
|
-
class: "ledger",
|
|
4389
|
-
database: "events",
|
|
4390
|
-
writeTrigger: "one row per (rule, dedupRef, target) enqueued for delivery",
|
|
4391
|
-
indexes: [
|
|
4392
|
-
{
|
|
4393
|
-
name: "created",
|
|
4394
|
-
fields: ["createdAt"]
|
|
4395
|
-
},
|
|
4396
|
-
{
|
|
4397
|
-
name: "rule_created",
|
|
4398
|
-
fields: ["ruleId", "createdAt"]
|
|
4399
|
-
},
|
|
4400
|
-
{
|
|
4401
|
-
name: "status_created",
|
|
4402
|
-
fields: ["status", "createdAt"]
|
|
4403
|
-
},
|
|
4404
|
-
{
|
|
4405
|
-
name: "device_created",
|
|
4406
|
-
fields: ["deviceId", "createdAt"]
|
|
4407
|
-
},
|
|
4408
|
-
{
|
|
4409
|
-
name: "rule_status_created",
|
|
4410
|
-
fields: [
|
|
4411
|
-
"ruleId",
|
|
4412
|
-
"status",
|
|
4413
|
-
"createdAt"
|
|
4414
|
-
]
|
|
4415
|
-
},
|
|
4416
|
-
{
|
|
4417
|
-
name: "rule_device_created",
|
|
4418
|
-
fields: [
|
|
4419
|
-
"ruleId",
|
|
4420
|
-
"deviceId",
|
|
4421
|
-
"createdAt"
|
|
4422
|
-
]
|
|
4423
|
-
},
|
|
4424
|
-
{
|
|
4425
|
-
name: "status_device_created",
|
|
4426
|
-
fields: [
|
|
4427
|
-
"status",
|
|
4428
|
-
"deviceId",
|
|
4429
|
-
"createdAt"
|
|
4430
|
-
]
|
|
4431
|
-
},
|
|
4432
|
-
{
|
|
4433
|
-
name: "rule_status_device_created",
|
|
4434
|
-
fields: [
|
|
4435
|
-
"ruleId",
|
|
4436
|
-
"status",
|
|
4437
|
-
"deviceId",
|
|
4438
|
-
"createdAt"
|
|
4439
|
-
]
|
|
4440
|
-
}
|
|
4441
|
-
],
|
|
4442
|
-
retention: {
|
|
4443
|
-
owner: "notification-center",
|
|
4444
|
-
reason: "terminal (sent/dead) rows older than 7 days pruned at boot; a pending row retries to dead first"
|
|
4445
|
-
},
|
|
4446
|
-
maxDataBytes: require_clip_model_registry.RECORD_MAX_DATA_BYTES,
|
|
4447
|
-
adoptsFrom: NC_OUTBOX_LEGACY
|
|
4448
|
-
},
|
|
4449
|
-
artifacts: {
|
|
4450
|
-
...QUERIED,
|
|
4451
|
-
class: "ledger",
|
|
4452
|
-
database: "events",
|
|
4453
|
-
writeTrigger: "retained notification artefact metadata indexed for lookup and expiry",
|
|
4454
|
-
indexes: [{
|
|
4455
|
-
name: "captured",
|
|
4456
|
-
fields: ["capturedAt"]
|
|
4457
|
-
}, {
|
|
4458
|
-
name: "expires",
|
|
4459
|
-
fields: ["expiresAt"]
|
|
4460
|
-
}],
|
|
4461
|
-
retention: {
|
|
4462
|
-
owner: "notification-center",
|
|
4463
|
-
reason: "falls with its bytes: expired rows on every node, orphans against the shelf on the producer node"
|
|
4464
|
-
},
|
|
4465
|
-
adoptsFrom: NC_ARTIFACTS_LEGACY
|
|
4466
|
-
}
|
|
4467
|
-
});
|
|
4468
|
-
//#endregion
|
|
4469
4490
|
//#region src/notification-center/artifact-index.ts
|
|
4470
4491
|
/**
|
|
4471
4492
|
* @durable class=ledger owner=notification-center database=events
|
|
@@ -9441,38 +9462,12 @@ var FaceRescoreJobStatusSchema = require_clip_model_registry.object({
|
|
|
9441
9462
|
* Record kinds owned by the pipeline-analytics addon (records plan phase 2,
|
|
9442
9463
|
* steps 7-11).
|
|
9443
9464
|
*
|
|
9444
|
-
* Each kind
|
|
9445
|
-
* name
|
|
9446
|
-
*
|
|
9447
|
-
*
|
|
9465
|
+
* Each kind replaced the legacy `pipeline-analytics:*` collection of the same
|
|
9466
|
+
* name; the records migration that copied them is closed (D900) and the tables
|
|
9467
|
+
* are gone (`retired-legacy-tables.ts`). The addon declares no
|
|
9468
|
+
* `execution.group`, so the hub owner stamp is the addon id
|
|
9448
9469
|
* (`pipeline-analytics`).
|
|
9449
9470
|
*/
|
|
9450
|
-
/** Legacy names for phase-3 analytics ledgers (keep in sync with owner constants). */
|
|
9451
|
-
var PA_PHANTOM_CELLS = "pipeline-analytics:phantom-cells";
|
|
9452
|
-
var PA_PACKAGE_BACKGROUND = "pipeline-analytics:package-background";
|
|
9453
|
-
var PA_STATIONARY_EVIDENCE = "pipeline-analytics:stationary-evidence";
|
|
9454
|
-
var PA_STATIONARY_OBJECTS = "pipeline-analytics:stationary-objects";
|
|
9455
|
-
var PA_SCENE_LATCH = "pipeline-analytics:scene-latch";
|
|
9456
|
-
var PA_MOTION_EVENTS = "pipeline-analytics:motion-events";
|
|
9457
|
-
var PA_AUDIO_EVENTS = "pipeline-analytics:audio-events";
|
|
9458
|
-
var PA_SENSOR_EVENTS = "pipeline-analytics:sensor-events";
|
|
9459
|
-
var PA_FACES = "pipeline-analytics:faces";
|
|
9460
|
-
var PA_PLATES = "pipeline-analytics:plates";
|
|
9461
|
-
var PA_TRACK_ALIASES = "pipeline-analytics:track-aliases";
|
|
9462
|
-
var PA_TRACK_PURITY = "pipeline-analytics:track-purity";
|
|
9463
|
-
var PA_TRACK_RELATIONS = "pipeline-analytics:track-relations";
|
|
9464
|
-
var PA_TRACKING_TAPES = "pipeline-analytics:tracking-tapes";
|
|
9465
|
-
var PA_BIRTH_DECISION_LEDGER = "pipeline-analytics:birth-decision-ledger";
|
|
9466
|
-
var PA_DEBUG_NOTE_ARCHIVE = "pipeline-analytics:debug-note-archive";
|
|
9467
|
-
var PA_OPS_LOG = "pipeline-analytics:ops-log";
|
|
9468
|
-
var PA_RETRAIN_FRAMES = "pipeline-analytics:retrain-frames";
|
|
9469
|
-
var PA_RETRAIN_ANNOTATIONS = "pipeline-analytics:retrain-annotations";
|
|
9470
|
-
var PA_RETRAIN_COLLECTIONS = "pipeline-analytics:retrain-collections";
|
|
9471
|
-
var PA_RETRAIN_COLLECTION_FRAMES = "pipeline-analytics:retrain-collection-frames";
|
|
9472
|
-
var PA_IDENTITIES = "pipeline-analytics:identities";
|
|
9473
|
-
var PA_IDENTITY_SAMPLES = "pipeline-analytics:identity-samples";
|
|
9474
|
-
var PA_VEHICLES = "pipeline-analytics:vehicles";
|
|
9475
|
-
var PA_VEHICLE_SAMPLES = "pipeline-analytics:vehicle-samples";
|
|
9476
9471
|
/**
|
|
9477
9472
|
* Kinds that must agree through ONE `transact` sit in one file under one family
|
|
9478
9473
|
* name, and the engine refuses a family split across files (records plan risk 8).
|
|
@@ -9526,8 +9521,7 @@ var pipelineAnalyticsRecordKinds = require_clip_model_registry.defineRecordKinds
|
|
|
9526
9521
|
fields: ["deviceId"]
|
|
9527
9522
|
}],
|
|
9528
9523
|
retention: { none: "operator intent: a scene goes only through deleteScene, never by age" },
|
|
9529
|
-
maxDataBytes: require_clip_model_registry.RECORD_MAX_DATA_BYTES
|
|
9530
|
-
adoptsFrom: "pipeline-analytics:scenes"
|
|
9524
|
+
maxDataBytes: require_clip_model_registry.RECORD_MAX_DATA_BYTES
|
|
9531
9525
|
},
|
|
9532
9526
|
migrations: {
|
|
9533
9527
|
schema: MigrationMarkerBodySchema,
|
|
@@ -9536,8 +9530,7 @@ var pipelineAnalyticsRecordKinds = require_clip_model_registry.defineRecordKinds
|
|
|
9536
9530
|
writeTrigger: "one marker row when a boot migration (label-tier-4g, audio-track-class-d189) completes without truncating",
|
|
9537
9531
|
device: "none",
|
|
9538
9532
|
at: "none",
|
|
9539
|
-
retention: { none: "its PRESENCE stops the migration re-scanning every track, face and event row on the next boot; bounded by the number of migrations ever written (two today)" }
|
|
9540
|
-
adoptsFrom: "pipeline-analytics:migrations"
|
|
9533
|
+
retention: { none: "its PRESENCE stops the migration re-scanning every track, face and event row on the next boot; bounded by the number of migrations ever written (two today)" }
|
|
9541
9534
|
},
|
|
9542
9535
|
"sweep-cursors": {
|
|
9543
9536
|
schema: SweepCursorBodySchema,
|
|
@@ -9546,8 +9539,7 @@ var pipelineAnalyticsRecordKinds = require_clip_model_registry.defineRecordKinds
|
|
|
9546
9539
|
writeTrigger: "the end of every orphan-audit pass rewrites the one row holding every scope cursor",
|
|
9547
9540
|
device: "none",
|
|
9548
9541
|
at: "none",
|
|
9549
|
-
retention: { none: "one row (id orphan-audit); losing it costs a re-walk from offset 0, never a wrong delete" }
|
|
9550
|
-
adoptsFrom: "pipeline-analytics:sweep-cursors"
|
|
9542
|
+
retention: { none: "one row (id orphan-audit); losing it costs a re-walk from offset 0, never a wrong delete" }
|
|
9551
9543
|
},
|
|
9552
9544
|
"face-rescore-state": {
|
|
9553
9545
|
schema: FaceRescoreStateBodySchema,
|
|
@@ -9555,8 +9547,7 @@ var pipelineAnalyticsRecordKinds = require_clip_model_registry.defineRecordKinds
|
|
|
9555
9547
|
writeTrigger: "a whole-archive face rescore (manual or scheduled) completes",
|
|
9556
9548
|
device: "none",
|
|
9557
9549
|
at: "none",
|
|
9558
|
-
retention: { none: "one row (id last-run); losing it costs one idempotent rescore on the next scheduler tick" }
|
|
9559
|
-
adoptsFrom: "pipeline-analytics:face-rescore-state"
|
|
9550
|
+
retention: { none: "one row (id last-run); losing it costs one idempotent rescore on the next scheduler tick" }
|
|
9560
9551
|
},
|
|
9561
9552
|
"phantom-cells": {
|
|
9562
9553
|
schema: DurableLedgerBodySchema,
|
|
@@ -9564,8 +9555,7 @@ var pipelineAnalyticsRecordKinds = require_clip_model_registry.defineRecordKinds
|
|
|
9564
9555
|
writeTrigger: "a phantom cell closes and the short-motionless bar records it",
|
|
9565
9556
|
device: "required",
|
|
9566
9557
|
at: "none",
|
|
9567
|
-
retention: { none: "bounded by per-device cap in application code" }
|
|
9568
|
-
adoptsFrom: PA_PHANTOM_CELLS
|
|
9558
|
+
retention: { none: "bounded by per-device cap in application code" }
|
|
9569
9559
|
},
|
|
9570
9560
|
"package-background": {
|
|
9571
9561
|
schema: DurableLedgerBodySchema,
|
|
@@ -9573,8 +9563,7 @@ var pipelineAnalyticsRecordKinds = require_clip_model_registry.defineRecordKinds
|
|
|
9573
9563
|
writeTrigger: "package background state accepted for a device",
|
|
9574
9564
|
device: "required",
|
|
9575
9565
|
at: "none",
|
|
9576
|
-
retention: { none: "one row per device key the owner tracks" }
|
|
9577
|
-
adoptsFrom: PA_PACKAGE_BACKGROUND
|
|
9566
|
+
retention: { none: "one row per device key the owner tracks" }
|
|
9578
9567
|
},
|
|
9579
9568
|
"stationary-evidence": {
|
|
9580
9569
|
schema: DurableLedgerBodySchema,
|
|
@@ -9582,8 +9571,7 @@ var pipelineAnalyticsRecordKinds = require_clip_model_registry.defineRecordKinds
|
|
|
9582
9571
|
writeTrigger: "stationary evidence row written on the registry sweep",
|
|
9583
9572
|
device: "required",
|
|
9584
9573
|
at: "none",
|
|
9585
|
-
retention: { none: "owner sweep drops idle evidence; maxRowsPerDevice in kind metadata" }
|
|
9586
|
-
adoptsFrom: PA_STATIONARY_EVIDENCE
|
|
9574
|
+
retention: { none: "owner sweep drops idle evidence; maxRowsPerDevice in kind metadata" }
|
|
9587
9575
|
},
|
|
9588
9576
|
"stationary-objects": {
|
|
9589
9577
|
schema: DurableLedgerBodySchema,
|
|
@@ -9591,8 +9579,7 @@ var pipelineAnalyticsRecordKinds = require_clip_model_registry.defineRecordKinds
|
|
|
9591
9579
|
writeTrigger: "parked object registry upsert or flush on the sweep interval",
|
|
9592
9580
|
device: "required",
|
|
9593
9581
|
at: "none",
|
|
9594
|
-
retention: { none: "rows drop when the object moves or TTL expires" }
|
|
9595
|
-
adoptsFrom: PA_STATIONARY_OBJECTS
|
|
9582
|
+
retention: { none: "rows drop when the object moves or TTL expires" }
|
|
9596
9583
|
},
|
|
9597
9584
|
"scene-latch": {
|
|
9598
9585
|
schema: DurableLedgerBodySchema,
|
|
@@ -9600,8 +9587,7 @@ var pipelineAnalyticsRecordKinds = require_clip_model_registry.defineRecordKinds
|
|
|
9600
9587
|
writeTrigger: "scene monitor latch state write-through after a verdict",
|
|
9601
9588
|
device: "required",
|
|
9602
9589
|
at: "none",
|
|
9603
|
-
retention: { none: "one row per (deviceId, monitorId) scene latch" }
|
|
9604
|
-
adoptsFrom: PA_SCENE_LATCH
|
|
9590
|
+
retention: { none: "one row per (deviceId, monitorId) scene latch" }
|
|
9605
9591
|
},
|
|
9606
9592
|
"motion-events": {
|
|
9607
9593
|
schema: MotionEventBodySchema,
|
|
@@ -9618,8 +9604,7 @@ var pipelineAnalyticsRecordKinds = require_clip_model_registry.defineRecordKinds
|
|
|
9618
9604
|
retention: {
|
|
9619
9605
|
owner: "device-window",
|
|
9620
9606
|
reason: "terminal age-keyed root swept with the device retention window (D61/D62)"
|
|
9621
|
-
}
|
|
9622
|
-
adoptsFrom: PA_MOTION_EVENTS
|
|
9607
|
+
}
|
|
9623
9608
|
},
|
|
9624
9609
|
"audio-events": {
|
|
9625
9610
|
schema: AudioEventBodySchema,
|
|
@@ -9636,8 +9621,7 @@ var pipelineAnalyticsRecordKinds = require_clip_model_registry.defineRecordKinds
|
|
|
9636
9621
|
retention: {
|
|
9637
9622
|
owner: "device-window",
|
|
9638
9623
|
reason: "terminal age-keyed root on the device window, same as motion-events"
|
|
9639
|
-
}
|
|
9640
|
-
adoptsFrom: PA_AUDIO_EVENTS
|
|
9624
|
+
}
|
|
9641
9625
|
},
|
|
9642
9626
|
"sensor-events": {
|
|
9643
9627
|
schema: SensorEventBodySchema,
|
|
@@ -9657,8 +9641,7 @@ var pipelineAnalyticsRecordKinds = require_clip_model_registry.defineRecordKinds
|
|
|
9657
9641
|
retention: {
|
|
9658
9642
|
owner: "device-window",
|
|
9659
9643
|
reason: "terminal age-keyed root on the camera retention window (D61)"
|
|
9660
|
-
}
|
|
9661
|
-
adoptsFrom: PA_SENSOR_EVENTS
|
|
9644
|
+
}
|
|
9662
9645
|
},
|
|
9663
9646
|
faces: {
|
|
9664
9647
|
schema: FaceLedgerBodySchema,
|
|
@@ -9685,8 +9668,7 @@ var pipelineAnalyticsRecordKinds = require_clip_model_registry.defineRecordKinds
|
|
|
9685
9668
|
fields: ["trackId"]
|
|
9686
9669
|
}
|
|
9687
9670
|
],
|
|
9688
|
-
retention: { none: "track-owned (D61): rows leave with their track; enrolled faces exempt from capacity sweeps" }
|
|
9689
|
-
adoptsFrom: PA_FACES
|
|
9671
|
+
retention: { none: "track-owned (D61): rows leave with their track; enrolled faces exempt from capacity sweeps" }
|
|
9690
9672
|
},
|
|
9691
9673
|
identities: {
|
|
9692
9674
|
schema: IdentityConfigBodySchema,
|
|
@@ -9700,8 +9682,7 @@ var pipelineAnalyticsRecordKinds = require_clip_model_registry.defineRecordKinds
|
|
|
9700
9682
|
name: "name",
|
|
9701
9683
|
fields: ["name"]
|
|
9702
9684
|
}],
|
|
9703
|
-
retention: { none: "operator delete only — losing the gallery un-enrols every person" }
|
|
9704
|
-
adoptsFrom: PA_IDENTITIES
|
|
9685
|
+
retention: { none: "operator delete only — losing the gallery un-enrols every person" }
|
|
9705
9686
|
},
|
|
9706
9687
|
"identity-samples": {
|
|
9707
9688
|
schema: IdentitySampleLedgerBodySchema,
|
|
@@ -9715,7 +9696,6 @@ var pipelineAnalyticsRecordKinds = require_clip_model_registry.defineRecordKinds
|
|
|
9715
9696
|
fields: ["identityId", "addedAt"]
|
|
9716
9697
|
}],
|
|
9717
9698
|
retention: { none: "enrollment exempt — rows leave only on removeSample or deleteIdentity" },
|
|
9718
|
-
adoptsFrom: PA_IDENTITY_SAMPLES,
|
|
9719
9699
|
transactFamily: IDENTITY_GALLERY
|
|
9720
9700
|
},
|
|
9721
9701
|
vehicles: {
|
|
@@ -9730,8 +9710,7 @@ var pipelineAnalyticsRecordKinds = require_clip_model_registry.defineRecordKinds
|
|
|
9730
9710
|
name: "name",
|
|
9731
9711
|
fields: ["name"]
|
|
9732
9712
|
}],
|
|
9733
|
-
retention: { none: "operator delete only — losing the gallery un-enrols every vehicle" }
|
|
9734
|
-
adoptsFrom: PA_VEHICLES
|
|
9713
|
+
retention: { none: "operator delete only — losing the gallery un-enrols every vehicle" }
|
|
9735
9714
|
},
|
|
9736
9715
|
"vehicle-samples": {
|
|
9737
9716
|
schema: VehicleSampleLedgerBodySchema,
|
|
@@ -9745,7 +9724,6 @@ var pipelineAnalyticsRecordKinds = require_clip_model_registry.defineRecordKinds
|
|
|
9745
9724
|
fields: ["vehicleId", "addedAt"]
|
|
9746
9725
|
}],
|
|
9747
9726
|
retention: { none: "enrollment exempt — rows leave only on removeSample or deleteVehicle" },
|
|
9748
|
-
adoptsFrom: PA_VEHICLE_SAMPLES,
|
|
9749
9727
|
transactFamily: VEHICLE_GALLERY
|
|
9750
9728
|
},
|
|
9751
9729
|
plates: {
|
|
@@ -9769,8 +9747,7 @@ var pipelineAnalyticsRecordKinds = require_clip_model_registry.defineRecordKinds
|
|
|
9769
9747
|
fields: ["recognizedVehicleId", "timestamp"]
|
|
9770
9748
|
}
|
|
9771
9749
|
],
|
|
9772
|
-
retention: { none: "track-owned (D61): rows leave with their track; corrected and enrolled reads exempt" }
|
|
9773
|
-
adoptsFrom: PA_PLATES
|
|
9750
|
+
retention: { none: "track-owned (D61): rows leave with their track; corrected and enrolled reads exempt" }
|
|
9774
9751
|
},
|
|
9775
9752
|
"track-aliases": {
|
|
9776
9753
|
schema: PaEventsLedgerBodySchema,
|
|
@@ -9786,8 +9763,7 @@ var pipelineAnalyticsRecordKinds = require_clip_model_registry.defineRecordKinds
|
|
|
9786
9763
|
name: "device",
|
|
9787
9764
|
fields: ["deviceId"]
|
|
9788
9765
|
}],
|
|
9789
|
-
retention: { none: "track-owned via survivor `trackId`; widens retention cascade (D683)" }
|
|
9790
|
-
adoptsFrom: PA_TRACK_ALIASES
|
|
9766
|
+
retention: { none: "track-owned via survivor `trackId`; widens retention cascade (D683)" }
|
|
9791
9767
|
},
|
|
9792
9768
|
"track-purity": {
|
|
9793
9769
|
schema: PaEventsLedgerBodySchema,
|
|
@@ -9803,8 +9779,7 @@ var pipelineAnalyticsRecordKinds = require_clip_model_registry.defineRecordKinds
|
|
|
9803
9779
|
name: "updated",
|
|
9804
9780
|
fields: ["updatedAt"]
|
|
9805
9781
|
}],
|
|
9806
|
-
retention: { none: "row-count ceiling MAX_TRACK_PURITIES in application code (D681)" }
|
|
9807
|
-
adoptsFrom: PA_TRACK_PURITY
|
|
9782
|
+
retention: { none: "row-count ceiling MAX_TRACK_PURITIES in application code (D681)" }
|
|
9808
9783
|
},
|
|
9809
9784
|
"track-relations": {
|
|
9810
9785
|
schema: PaEventsLedgerBodySchema,
|
|
@@ -9820,8 +9795,7 @@ var pipelineAnalyticsRecordKinds = require_clip_model_registry.defineRecordKinds
|
|
|
9820
9795
|
name: "updated",
|
|
9821
9796
|
fields: ["updatedAt"]
|
|
9822
9797
|
}],
|
|
9823
|
-
retention: { none: "row-count ceiling MAX_TRACK_RELATIONS in application code (D681)" }
|
|
9824
|
-
adoptsFrom: PA_TRACK_RELATIONS
|
|
9798
|
+
retention: { none: "row-count ceiling MAX_TRACK_RELATIONS in application code (D681)" }
|
|
9825
9799
|
},
|
|
9826
9800
|
"tracking-tapes": {
|
|
9827
9801
|
schema: PaEventsLedgerBodySchema,
|
|
@@ -9834,8 +9808,7 @@ var pipelineAnalyticsRecordKinds = require_clip_model_registry.defineRecordKinds
|
|
|
9834
9808
|
name: "device_created",
|
|
9835
9809
|
fields: ["deviceId", "createdAt"]
|
|
9836
9810
|
}],
|
|
9837
|
-
retention: { none: "promotion budget MAX_PROMOTED_TAPES — refused, never evicted by age" }
|
|
9838
|
-
adoptsFrom: PA_TRACKING_TAPES
|
|
9811
|
+
retention: { none: "promotion budget MAX_PROMOTED_TAPES — refused, never evicted by age" }
|
|
9839
9812
|
},
|
|
9840
9813
|
"birth-decision-ledger": {
|
|
9841
9814
|
schema: PaEventsLedgerBodySchema,
|
|
@@ -9851,8 +9824,7 @@ var pipelineAnalyticsRecordKinds = require_clip_model_registry.defineRecordKinds
|
|
|
9851
9824
|
name: "device_at",
|
|
9852
9825
|
fields: ["deviceId", "at"]
|
|
9853
9826
|
}],
|
|
9854
|
-
retention: { none: "row-count ceiling MAX_BIRTH_DECISION_RECORDS in application code" }
|
|
9855
|
-
adoptsFrom: PA_BIRTH_DECISION_LEDGER
|
|
9827
|
+
retention: { none: "row-count ceiling MAX_BIRTH_DECISION_RECORDS in application code" }
|
|
9856
9828
|
},
|
|
9857
9829
|
"debug-note-archive": {
|
|
9858
9830
|
schema: PaEventsLedgerBodySchema,
|
|
@@ -9868,8 +9840,7 @@ var pipelineAnalyticsRecordKinds = require_clip_model_registry.defineRecordKinds
|
|
|
9868
9840
|
name: "device_archived",
|
|
9869
9841
|
fields: ["deviceId", "archivedAt"]
|
|
9870
9842
|
}],
|
|
9871
|
-
retention: { none: "row-count ceiling MAX_ARCHIVED_DEBUG_NOTES in application code" }
|
|
9872
|
-
adoptsFrom: PA_DEBUG_NOTE_ARCHIVE
|
|
9843
|
+
retention: { none: "row-count ceiling MAX_ARCHIVED_DEBUG_NOTES in application code" }
|
|
9873
9844
|
},
|
|
9874
9845
|
"ops-log": {
|
|
9875
9846
|
schema: PaEventsLedgerBodySchema,
|
|
@@ -9888,8 +9859,7 @@ var pipelineAnalyticsRecordKinds = require_clip_model_registry.defineRecordKinds
|
|
|
9888
9859
|
retention: {
|
|
9889
9860
|
ttlMs: 720 * 60 * 60 * 1e3,
|
|
9890
9861
|
from: "at"
|
|
9891
|
-
}
|
|
9892
|
-
adoptsFrom: PA_OPS_LOG
|
|
9862
|
+
}
|
|
9893
9863
|
},
|
|
9894
9864
|
"retrain-frames": {
|
|
9895
9865
|
schema: PaEventsLedgerBodySchema,
|
|
@@ -9906,7 +9876,6 @@ var pipelineAnalyticsRecordKinds = require_clip_model_registry.defineRecordKinds
|
|
|
9906
9876
|
fields: ["deviceId", "complete"]
|
|
9907
9877
|
}],
|
|
9908
9878
|
retention: { none: "operator curation only; blobs on artifacts tenant (D781)" },
|
|
9909
|
-
adoptsFrom: PA_RETRAIN_FRAMES,
|
|
9910
9879
|
transactFamily: RETRAIN
|
|
9911
9880
|
},
|
|
9912
9881
|
"retrain-annotations": {
|
|
@@ -9931,7 +9900,6 @@ var pipelineAnalyticsRecordKinds = require_clip_model_registry.defineRecordKinds
|
|
|
9931
9900
|
}
|
|
9932
9901
|
],
|
|
9933
9902
|
retention: { none: "leaves with frame deselect / operator delete" },
|
|
9934
|
-
adoptsFrom: PA_RETRAIN_ANNOTATIONS,
|
|
9935
9903
|
transactFamily: RETRAIN
|
|
9936
9904
|
},
|
|
9937
9905
|
"retrain-collections": {
|
|
@@ -9950,7 +9918,6 @@ var pipelineAnalyticsRecordKinds = require_clip_model_registry.defineRecordKinds
|
|
|
9950
9918
|
fields: ["createdAt"]
|
|
9951
9919
|
}],
|
|
9952
9920
|
retention: { none: "deleted with operator deleteCollection" },
|
|
9953
|
-
adoptsFrom: PA_RETRAIN_COLLECTIONS,
|
|
9954
9921
|
transactFamily: RETRAIN
|
|
9955
9922
|
},
|
|
9956
9923
|
"retrain-collection-frames": {
|
|
@@ -9968,7 +9935,6 @@ var pipelineAnalyticsRecordKinds = require_clip_model_registry.defineRecordKinds
|
|
|
9968
9935
|
fields: ["frameId"]
|
|
9969
9936
|
}],
|
|
9970
9937
|
retention: { none: "membership only; frame pixels live in retrain-frames" },
|
|
9971
|
-
adoptsFrom: PA_RETRAIN_COLLECTION_FRAMES,
|
|
9972
9938
|
transactFamily: RETRAIN
|
|
9973
9939
|
}
|
|
9974
9940
|
});
|
|
@@ -38485,22 +38451,8 @@ async function migrateLegacyRuleActions(actions, createSequence) {
|
|
|
38485
38451
|
* The notification-center module is hosted inside the pipeline-analytics addon.
|
|
38486
38452
|
* That addon declares no `execution.group`, so the UDS owner stamp is the addon
|
|
38487
38453
|
* id: `pipeline-analytics`. Declared hub-only (agents have no `ctx.records`).
|
|
38488
|
-
* One deploy covers all 7 kinds
|
|
38489
|
-
*/
|
|
38490
|
-
/** Legacy collection for the text-catalog document. */
|
|
38491
|
-
var NC_TEXTS_COLLECTION$1 = "notification-center:texts";
|
|
38492
|
-
/** Legacy collection for shared action sequences. */
|
|
38493
|
-
var NC_SEQUENCES_COLLECTION$1 = "notification-center:sequences";
|
|
38494
|
-
/** Legacy collection for per-rule AI sections. */
|
|
38495
|
-
var NC_RULE_AI_COLLECTION$1 = "notification-center:rule-ai";
|
|
38496
|
-
/** Legacy collection for calendar-events rules. */
|
|
38497
|
-
var NC_CALENDAR_EVENTS_RULES_COLLECTION$1 = "notification-center:calendar-events-rules";
|
|
38498
|
-
/** Legacy collection for multi-camera digest rules. */
|
|
38499
|
-
var NC_SUMMARY_RULES_COLLECTION$1 = "notification-center:summary-rules";
|
|
38500
|
-
/** Legacy collection for timelapse rules. */
|
|
38501
|
-
var NC_TIMELAPSE_RULES_COLLECTION$1 = "notification-center:timelapse-rules";
|
|
38502
|
-
/** Legacy collection for notification rules. */
|
|
38503
|
-
var NC_RULES_COLLECTION$1 = "notification-center:rules";
|
|
38454
|
+
* One deploy covers all 7 kinds.
|
|
38455
|
+
*/
|
|
38504
38456
|
/**
|
|
38505
38457
|
* The hub language and operator-authored per-key overrides.
|
|
38506
38458
|
* One row, id `texts`. Losing it degrades to the shipped English catalog.
|
|
@@ -38542,8 +38494,7 @@ var ncRecordKinds = require_clip_model_registry.defineRecordKinds({
|
|
|
38542
38494
|
writeTrigger: "an operator changes the hub language (setLanguage) or replaces the per-key override set (setOverrides)",
|
|
38543
38495
|
device: "none",
|
|
38544
38496
|
at: "none",
|
|
38545
|
-
retention: { none: "one row (id `texts`); losing it costs the chosen language and household wording, never a notification — every read degrades to the shipped English catalog" }
|
|
38546
|
-
adoptsFrom: NC_TEXTS_COLLECTION$1
|
|
38497
|
+
retention: { none: "one row (id `texts`); losing it costs the chosen language and household wording, never a notification — every read degrades to the shipped English catalog" }
|
|
38547
38498
|
},
|
|
38548
38499
|
/**
|
|
38549
38500
|
* Shared action sequences — named, ordered runs of steps with their own throttle.
|
|
@@ -38555,8 +38506,7 @@ var ncRecordKinds = require_clip_model_registry.defineRecordKinds({
|
|
|
38555
38506
|
writeTrigger: "an admin creates/edits/deletes a shared sequence via notificationRules.createSequence / updateSequence / deleteSequence, or the one-shot boot migration that materialises legacy inline sequences",
|
|
38556
38507
|
device: "none",
|
|
38557
38508
|
at: "none",
|
|
38558
|
-
retention: { none: "a row goes only when an admin deletes it; bounded by the sequence set a human is willing to author" }
|
|
38559
|
-
adoptsFrom: NC_SEQUENCES_COLLECTION$1
|
|
38509
|
+
retention: { none: "a row goes only when an admin deletes it; bounded by the sequence set a human is willing to author" }
|
|
38560
38510
|
},
|
|
38561
38511
|
/**
|
|
38562
38512
|
* Per-rule AI section: whether and how a rule narrates itself.
|
|
@@ -38568,8 +38518,7 @@ var ncRecordKinds = require_clip_model_registry.defineRecordKinds({
|
|
|
38568
38518
|
writeTrigger: "an operator switches the AI section of a notification rule on or off, or edits its prompt / word cap / language",
|
|
38569
38519
|
device: "none",
|
|
38570
38520
|
at: "none",
|
|
38571
|
-
retention: { none: "a row goes when the operator clears the section or deletes the rule; bounded by the rule set a human is willing to author" }
|
|
38572
|
-
adoptsFrom: NC_RULE_AI_COLLECTION$1
|
|
38521
|
+
retention: { none: "a row goes when the operator clears the section or deletes the rule; bounded by the rule set a human is willing to author" }
|
|
38573
38522
|
},
|
|
38574
38523
|
/**
|
|
38575
38524
|
* Calendar-events rules. One row per rule, id = rule UUID.
|
|
@@ -38584,8 +38533,7 @@ var ncRecordKinds = require_clip_model_registry.defineRecordKinds({
|
|
|
38584
38533
|
name: "enabled",
|
|
38585
38534
|
fields: ["enabled"]
|
|
38586
38535
|
}],
|
|
38587
|
-
retention: { none: "a row goes only when the operator deletes the rule; bounded by the rule set a human is willing to author" }
|
|
38588
|
-
adoptsFrom: NC_CALENDAR_EVENTS_RULES_COLLECTION$1
|
|
38536
|
+
retention: { none: "a row goes only when the operator deletes the rule; bounded by the rule set a human is willing to author" }
|
|
38589
38537
|
},
|
|
38590
38538
|
/**
|
|
38591
38539
|
* Multi-camera digest rules. One row per rule, id = rule UUID.
|
|
@@ -38600,8 +38548,7 @@ var ncRecordKinds = require_clip_model_registry.defineRecordKinds({
|
|
|
38600
38548
|
name: "enabled",
|
|
38601
38549
|
fields: ["enabled"]
|
|
38602
38550
|
}],
|
|
38603
|
-
retention: { none: "a row goes only when the operator deletes the rule; bounded by the rule set a human is willing to author" }
|
|
38604
|
-
adoptsFrom: NC_SUMMARY_RULES_COLLECTION$1
|
|
38551
|
+
retention: { none: "a row goes only when the operator deletes the rule; bounded by the rule set a human is willing to author" }
|
|
38605
38552
|
},
|
|
38606
38553
|
/**
|
|
38607
38554
|
* Timelapse rules. One row per rule, id = rule UUID.
|
|
@@ -38617,8 +38564,7 @@ var ncRecordKinds = require_clip_model_registry.defineRecordKinds({
|
|
|
38617
38564
|
name: "enabled",
|
|
38618
38565
|
fields: ["enabled"]
|
|
38619
38566
|
}],
|
|
38620
|
-
retention: { none: "a row goes only when the operator deletes the rule; bounded by the rule set a human is willing to author" }
|
|
38621
|
-
adoptsFrom: NC_TIMELAPSE_RULES_COLLECTION$1
|
|
38567
|
+
retention: { none: "a row goes only when the operator deletes the rule; bounded by the rule set a human is willing to author" }
|
|
38622
38568
|
},
|
|
38623
38569
|
/**
|
|
38624
38570
|
* Notification rules — the main rule set. One row per rule, id = rule UUID.
|
|
@@ -38634,8 +38580,7 @@ var ncRecordKinds = require_clip_model_registry.defineRecordKinds({
|
|
|
38634
38580
|
name: "delivery",
|
|
38635
38581
|
fields: ["delivery"]
|
|
38636
38582
|
}],
|
|
38637
|
-
retention: { none: "a row goes only when the operator deletes the rule; bounded by the rule set a human is willing to author" }
|
|
38638
|
-
adoptsFrom: NC_RULES_COLLECTION$1
|
|
38583
|
+
retention: { none: "a row goes only when the operator deletes the rule; bounded by the rule set a human is willing to author" }
|
|
38639
38584
|
}
|
|
38640
38585
|
});
|
|
38641
38586
|
//#endregion
|