@camstack/addon-post-analysis 1.2.374 → 1.2.601

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.
Files changed (14) hide show
  1. package/dist/{clip-model-registry-BIJ0ZD7t.mjs → clip-model-registry-BuM8eXlN.mjs} +329 -28
  2. package/dist/{clip-model-registry-BRzN2GzR.js → clip-model-registry-DAZ9ie-f.js} +352 -27
  3. package/dist/embedding-encoder/index.js +1 -1
  4. package/dist/embedding-encoder/index.mjs +1 -1
  5. package/dist/pipeline-analytics/_stub.js +2 -2
  6. package/dist/pipeline-analytics/{_virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-BYu-s1rf.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-DAs_96VP.mjs} +3 -3
  7. package/dist/pipeline-analytics/{_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-Ds_wGoAi.mjs → _virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-CElkWYPg.mjs} +1 -1
  8. package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-SRvLcL_J.mjs +26 -0
  9. package/dist/pipeline-analytics/{hostInit-DEl2xA0o.mjs → hostInit-C3wjY7W8.mjs} +3 -3
  10. package/dist/pipeline-analytics/index.js +79597 -78981
  11. package/dist/pipeline-analytics/index.mjs +79599 -78983
  12. package/dist/pipeline-analytics/remoteEntry.js +1 -1
  13. package/package.json +1 -1
  14. package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-BjCURGur.mjs +0 -26
@@ -4199,6 +4199,12 @@ var numberProcessor = (schema, ctx, _json, _params) => {
4199
4199
  var booleanProcessor = (_schema, _ctx, json, _params) => {
4200
4200
  json.type = "boolean";
4201
4201
  };
4202
+ var bigintProcessor = (_schema, ctx, _json, _params) => {
4203
+ if (ctx.unrepresentable === "throw") throw new Error("BigInt cannot be represented in JSON Schema");
4204
+ };
4205
+ var symbolProcessor = (_schema, ctx, _json, _params) => {
4206
+ if (ctx.unrepresentable === "throw") throw new Error("Symbols cannot be represented in JSON Schema");
4207
+ };
4202
4208
  var nullProcessor = (_schema, ctx, json, _params) => {
4203
4209
  if (ctx.target === "openapi-3.0") {
4204
4210
  json.type = "string";
@@ -4206,12 +4212,17 @@ var nullProcessor = (_schema, ctx, json, _params) => {
4206
4212
  json.enum = [null];
4207
4213
  } else json.type = "null";
4208
4214
  };
4215
+ var undefinedProcessor = (_schema, ctx, _json, _params) => {
4216
+ if (ctx.unrepresentable === "throw") throw new Error("Undefined cannot be represented in JSON Schema");
4217
+ };
4209
4218
  var voidProcessor = (_schema, ctx, _json, _params) => {
4210
4219
  if (ctx.unrepresentable === "throw") throw new Error("Void cannot be represented in JSON Schema");
4211
4220
  };
4212
4221
  var neverProcessor = (_schema, _ctx, json, _params) => {
4213
4222
  json.not = {};
4214
4223
  };
4224
+ var anyProcessor = (_schema, _ctx, _json, _params) => {};
4225
+ var unknownProcessor = (_schema, _ctx, _json, _params) => {};
4215
4226
  var dateProcessor = (_schema, ctx, _json, _params) => {
4216
4227
  if (ctx.unrepresentable === "throw") throw new Error("Date cannot be represented in JSON Schema");
4217
4228
  };
@@ -4243,6 +4254,9 @@ var literalProcessor = (schema, ctx, json, _params) => {
4243
4254
  json.enum = vals;
4244
4255
  }
4245
4256
  };
4257
+ var nanProcessor = (_schema, ctx, _json, _params) => {
4258
+ if (ctx.unrepresentable === "throw") throw new Error("NaN cannot be represented in JSON Schema");
4259
+ };
4246
4260
  var templateLiteralProcessor = (schema, _ctx, json, _params) => {
4247
4261
  const _json = json;
4248
4262
  const pattern = schema._zod.pattern;
@@ -4250,12 +4264,43 @@ var templateLiteralProcessor = (schema, _ctx, json, _params) => {
4250
4264
  _json.type = "string";
4251
4265
  _json.pattern = pattern.source;
4252
4266
  };
4267
+ var fileProcessor = (schema, _ctx, json, _params) => {
4268
+ const _json = json;
4269
+ const file = {
4270
+ type: "string",
4271
+ format: "binary",
4272
+ contentEncoding: "binary"
4273
+ };
4274
+ const { minimum, maximum, mime } = schema._zod.bag;
4275
+ if (minimum !== void 0) file.minLength = minimum;
4276
+ if (maximum !== void 0) file.maxLength = maximum;
4277
+ if (mime) if (mime.length === 1) {
4278
+ file.contentMediaType = mime[0];
4279
+ Object.assign(_json, file);
4280
+ } else {
4281
+ Object.assign(_json, file);
4282
+ _json.anyOf = mime.map((m) => ({ contentMediaType: m }));
4283
+ }
4284
+ else Object.assign(_json, file);
4285
+ };
4286
+ var successProcessor = (_schema, _ctx, json, _params) => {
4287
+ json.type = "boolean";
4288
+ };
4253
4289
  var customProcessor = (_schema, ctx, _json, _params) => {
4254
4290
  if (ctx.unrepresentable === "throw") throw new Error("Custom types cannot be represented in JSON Schema");
4255
4291
  };
4292
+ var functionProcessor = (_schema, ctx, _json, _params) => {
4293
+ if (ctx.unrepresentable === "throw") throw new Error("Function types cannot be represented in JSON Schema");
4294
+ };
4256
4295
  var transformProcessor = (_schema, ctx, _json, _params) => {
4257
4296
  if (ctx.unrepresentable === "throw") throw new Error("Transforms cannot be represented in JSON Schema");
4258
4297
  };
4298
+ var mapProcessor = (_schema, ctx, _json, _params) => {
4299
+ if (ctx.unrepresentable === "throw") throw new Error("Map cannot be represented in JSON Schema");
4300
+ };
4301
+ var setProcessor = (_schema, ctx, _json, _params) => {
4302
+ if (ctx.unrepresentable === "throw") throw new Error("Set cannot be represented in JSON Schema");
4303
+ };
4259
4304
  var arrayProcessor = (schema, ctx, _json, params) => {
4260
4305
  const json = _json;
4261
4306
  const def = schema._zod.def;
@@ -4460,6 +4505,12 @@ var readonlyProcessor = (schema, ctx, json, params) => {
4460
4505
  seen.ref = def.innerType;
4461
4506
  json.readOnly = true;
4462
4507
  };
4508
+ var promiseProcessor = (schema, ctx, _json, params) => {
4509
+ const def = schema._zod.def;
4510
+ process(def.innerType, ctx, params);
4511
+ const seen = ctx.seen.get(schema);
4512
+ seen.ref = def.innerType;
4513
+ };
4463
4514
  var optionalProcessor = (schema, ctx, _json, params) => {
4464
4515
  const def = schema._zod.def;
4465
4516
  process(def.innerType, ctx, params);
@@ -4472,6 +4523,81 @@ var lazyProcessor = (schema, ctx, _json, params) => {
4472
4523
  const seen = ctx.seen.get(schema);
4473
4524
  seen.ref = innerType;
4474
4525
  };
4526
+ var allProcessors = {
4527
+ string: stringProcessor,
4528
+ number: numberProcessor,
4529
+ boolean: booleanProcessor,
4530
+ bigint: bigintProcessor,
4531
+ symbol: symbolProcessor,
4532
+ null: nullProcessor,
4533
+ undefined: undefinedProcessor,
4534
+ void: voidProcessor,
4535
+ never: neverProcessor,
4536
+ any: anyProcessor,
4537
+ unknown: unknownProcessor,
4538
+ date: dateProcessor,
4539
+ enum: enumProcessor,
4540
+ literal: literalProcessor,
4541
+ nan: nanProcessor,
4542
+ template_literal: templateLiteralProcessor,
4543
+ file: fileProcessor,
4544
+ success: successProcessor,
4545
+ custom: customProcessor,
4546
+ function: functionProcessor,
4547
+ transform: transformProcessor,
4548
+ map: mapProcessor,
4549
+ set: setProcessor,
4550
+ array: arrayProcessor,
4551
+ object: objectProcessor,
4552
+ union: unionProcessor,
4553
+ intersection: intersectionProcessor,
4554
+ tuple: tupleProcessor,
4555
+ record: recordProcessor,
4556
+ nullable: nullableProcessor,
4557
+ nonoptional: nonoptionalProcessor,
4558
+ default: defaultProcessor,
4559
+ prefault: prefaultProcessor,
4560
+ catch: catchProcessor,
4561
+ pipe: pipeProcessor,
4562
+ readonly: readonlyProcessor,
4563
+ promise: promiseProcessor,
4564
+ optional: optionalProcessor,
4565
+ lazy: lazyProcessor
4566
+ };
4567
+ function toJSONSchema(input, params) {
4568
+ if ("_idmap" in input) {
4569
+ const registry = input;
4570
+ const ctx = initializeContext({
4571
+ ...params,
4572
+ processors: allProcessors
4573
+ });
4574
+ const defs = {};
4575
+ for (const entry of registry._idmap.entries()) {
4576
+ const [_, schema] = entry;
4577
+ process(schema, ctx);
4578
+ }
4579
+ const schemas = {};
4580
+ ctx.external = {
4581
+ registry,
4582
+ uri: params?.uri,
4583
+ defs
4584
+ };
4585
+ for (const entry of registry._idmap.entries()) {
4586
+ const [key, schema] = entry;
4587
+ extractDefs(ctx, schema);
4588
+ schemas[key] = finalize(ctx, schema);
4589
+ }
4590
+ if (Object.keys(defs).length > 0) schemas.__shared = { [ctx.target === "draft-2020-12" ? "$defs" : "definitions"]: defs };
4591
+ return { schemas };
4592
+ }
4593
+ const ctx = initializeContext({
4594
+ ...params,
4595
+ processors: allProcessors
4596
+ });
4597
+ process(input, ctx);
4598
+ extractDefs(ctx, input);
4599
+ return finalize(ctx, input);
4600
+ }
4475
4601
  //#endregion
4476
4602
  //#region ../../node_modules/zod/v4/classic/iso.js
4477
4603
  var ZodISODateTime = /*@__PURE__*/ $constructor("ZodISODateTime", (inst, def) => {
@@ -5508,7 +5634,7 @@ var ZodIssueCode = {
5508
5634
  var ZodFirstPartyTypeKind;
5509
5635
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5510
5636
  //#endregion
5511
- //#region ../types/dist/sleep-WsrozGDL.mjs
5637
+ //#region ../types/dist/sleep-bZIhUvjd.mjs
5512
5638
  /**
5513
5639
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5514
5640
  * window to float samples (D455).
@@ -5625,7 +5751,7 @@ function isKeychainStoredField(field) {
5625
5751
  var SECRET_CLEAR = { $secretClear: true };
5626
5752
  /** The `'***'` token D634 redaction writes for non-admins. */
5627
5753
  var LEGACY_DEVICE_REDACTION = "***";
5628
- function isRecord$4(value) {
5754
+ function isRecord$5(value) {
5629
5755
  return typeof value === "object" && value !== null && !Array.isArray(value);
5630
5756
  }
5631
5757
  function makeSecretMarker(ref) {
@@ -5636,12 +5762,12 @@ function makeSecretMarker(ref) {
5636
5762
  }
5637
5763
  /** A stored marker: an object whose `$secret` is a non-empty string. */
5638
5764
  function isSecretMarker(value) {
5639
- if (!isRecord$4(value)) return false;
5765
+ if (!isRecord$5(value)) return false;
5640
5766
  const ref = value["$secret"];
5641
5767
  return typeof ref === "string" && ref.length > 0;
5642
5768
  }
5643
5769
  function isSecretClear(value) {
5644
- return isRecord$4(value) && value["$secretClear"] === true;
5770
+ return isRecord$5(value) && value["$secretClear"] === true;
5645
5771
  }
5646
5772
  /**
5647
5773
  * The UI view of a stored secret field value: a marker becomes "set", inline
@@ -6251,7 +6377,7 @@ var KeychainWriteRefusedError = class extends Error {
6251
6377
  }
6252
6378
  };
6253
6379
  var KEEP = { kind: "keep" };
6254
- function isRecord$3(value) {
6380
+ function isRecord$4(value) {
6255
6381
  return typeof value === "object" && value !== null && !Array.isArray(value);
6256
6382
  }
6257
6383
  function defaultMintId() {
@@ -6264,7 +6390,7 @@ function collectSecretMarkerRefs(value, out = []) {
6264
6390
  return out;
6265
6391
  }
6266
6392
  if (Array.isArray(value)) for (const item of value) collectSecretMarkerRefs(item, out);
6267
- else if (isRecord$3(value)) for (const child of Object.values(value)) collectSecretMarkerRefs(child, out);
6393
+ else if (isRecord$4(value)) for (const child of Object.values(value)) collectSecretMarkerRefs(child, out);
6268
6394
  return out;
6269
6395
  }
6270
6396
  async function storedValueEquals(secrets, marker, candidate) {
@@ -6319,7 +6445,7 @@ function rowId(row, idKey) {
6319
6445
  return null;
6320
6446
  }
6321
6447
  async function writeArray(ctx, node, incoming, stored, fieldPath) {
6322
- const storedRows = Array.isArray(stored) ? stored.filter(isRecord$3) : [];
6448
+ const storedRows = Array.isArray(stored) ? stored.filter(isRecord$4) : [];
6323
6449
  if (!Array.isArray(incoming)) {
6324
6450
  ctx.deletes.push(...collectSecretMarkerRefs(storedRows));
6325
6451
  return {
@@ -6335,7 +6461,7 @@ async function writeArray(ctx, node, incoming, stored, fieldPath) {
6335
6461
  const kept = /* @__PURE__ */ new Set();
6336
6462
  const rows = [];
6337
6463
  for (const row of incoming) {
6338
- if (!isRecord$3(row)) {
6464
+ if (!isRecord$4(row)) {
6339
6465
  rows.push(row);
6340
6466
  continue;
6341
6467
  }
@@ -6360,7 +6486,7 @@ async function writeNode(ctx, node, incoming, stored, fieldPath) {
6360
6486
  case "leaf": return writeLeaf(ctx, incoming, stored, fieldPath);
6361
6487
  case "array": return writeArray(ctx, node, incoming, stored, fieldPath);
6362
6488
  case "object": {
6363
- if (!isRecord$3(incoming)) {
6489
+ if (!isRecord$4(incoming)) {
6364
6490
  if (incoming === void 0) return KEEP;
6365
6491
  ctx.deletes.push(...collectSecretMarkerRefs(stored));
6366
6492
  return {
@@ -6368,7 +6494,7 @@ async function writeNode(ctx, node, incoming, stored, fieldPath) {
6368
6494
  value: incoming
6369
6495
  };
6370
6496
  }
6371
- const storedObj = isRecord$3(stored) ? stored : {};
6497
+ const storedObj = isRecord$4(stored) ? stored : {};
6372
6498
  return {
6373
6499
  kind: "value",
6374
6500
  value: await writeMembers(ctx, node.children, incoming, storedObj, (m) => `${fieldPath}.${m}`)
@@ -6491,7 +6617,7 @@ async function resolveSecretMarkers(value, secrets, options = {}) {
6491
6617
  value: items
6492
6618
  };
6493
6619
  }
6494
- if (isRecord$3(v)) {
6620
+ if (isRecord$4(v)) {
6495
6621
  const out = {};
6496
6622
  for (const [k, child] of Object.entries(v)) {
6497
6623
  const s = substitute(child);
@@ -6523,7 +6649,7 @@ var SecretOverwriteRefusedError = class extends Error {
6523
6649
  this.name = "SecretOverwriteRefusedError";
6524
6650
  }
6525
6651
  };
6526
- function isRecord$2(value) {
6652
+ function isRecord$3(value) {
6527
6653
  return typeof value === "object" && value !== null && !Array.isArray(value);
6528
6654
  }
6529
6655
  function resolvedValue(pass, marker) {
@@ -6552,7 +6678,7 @@ function inArray(pass, incoming, stored) {
6552
6678
  return incoming.map((item, index) => {
6553
6679
  const twin = stored[index];
6554
6680
  if (isSecretMarker(twin)) return typeof item === "string" && item === resolvedValue(pass, twin) ? twin : item;
6555
- if (isRecord$2(item) && isRecord$2(twin)) return inArrayRow(pass, item, twin);
6681
+ if (isRecord$3(item) && isRecord$3(twin)) return inArrayRow(pass, item, twin);
6556
6682
  if (Array.isArray(item) && Array.isArray(twin)) return inArray(pass, item, twin);
6557
6683
  return item;
6558
6684
  });
@@ -6563,7 +6689,7 @@ function inArrayRow(pass, incoming, stored) {
6563
6689
  const twin = stored[key];
6564
6690
  if (isSecretMarker(twin)) {
6565
6691
  if (typeof value === "string" && value === resolvedValue(pass, twin)) out[key] = twin;
6566
- } else if (isRecord$2(value) && isRecord$2(twin)) out[key] = inArrayRow(pass, value, twin);
6692
+ } else if (isRecord$3(value) && isRecord$3(twin)) out[key] = inArrayRow(pass, value, twin);
6567
6693
  else if (Array.isArray(value) && Array.isArray(twin)) out[key] = inArray(pass, value, twin);
6568
6694
  }
6569
6695
  return out;
@@ -6571,7 +6697,7 @@ function inArrayRow(pass, incoming, stored) {
6571
6697
  async function walk(pass, incoming, stored) {
6572
6698
  if (isSecretMarker(stored)) return atMarker(pass, incoming, stored);
6573
6699
  if (Array.isArray(incoming) && Array.isArray(stored)) return inArray(pass, incoming, stored);
6574
- if (!isRecord$2(incoming) || !isRecord$2(stored)) return incoming;
6700
+ if (!isRecord$3(incoming) || !isRecord$3(stored)) return incoming;
6575
6701
  const out = { ...incoming };
6576
6702
  for (const [key, value] of Object.entries(incoming)) out[key] = await walk(pass, value, stored[key]);
6577
6703
  return out;
@@ -6602,7 +6728,7 @@ async function restoreUnchangedSecrets(input) {
6602
6728
  function isJsonEqual(a, b) {
6603
6729
  if (Object.is(a, b)) return true;
6604
6730
  if (Array.isArray(a)) return Array.isArray(b) && a.length === b.length && a.every((v, i) => isJsonEqual(v, b[i]));
6605
- if (isRecord$2(a) && isRecord$2(b)) {
6731
+ if (isRecord$3(a) && isRecord$3(b)) {
6606
6732
  const keys = Object.keys(a);
6607
6733
  if (keys.length !== Object.keys(b).length) return false;
6608
6734
  return keys.every((k) => Object.prototype.hasOwnProperty.call(b, k) && isJsonEqual(a[k], b[k]));
@@ -6626,7 +6752,7 @@ function markerKeysOf(blob, owner) {
6626
6752
  }
6627
6753
  function nodeFromStored(value, owner) {
6628
6754
  if (isSecretMarker(value)) return isSecretRefOwnedBy(value.$secret, owner) ? { kind: "leaf" } : null;
6629
- if (!isRecord$2(value)) return null;
6755
+ if (!isRecord$3(value)) return null;
6630
6756
  const children = /* @__PURE__ */ new Map();
6631
6757
  for (const [key, child] of Object.entries(value)) {
6632
6758
  const node = nodeFromStored(child, owner);
@@ -7414,7 +7540,7 @@ var BaseAddon = class {
7414
7540
  if (!ctx) return;
7415
7541
  const addonId = ctx.id;
7416
7542
  setImmediate(() => {
7417
- ctx.api.addons?.restartAddon?.mutate({ addonId }).then(() => {
7543
+ ctx.api.addons.restartAddon.mutate({ addonId }).then(() => {
7418
7544
  ctx.logger.info("addon auto-restart triggered by restart-required setting change", { meta: { changedFields: patchKeys.filter((k) => restartKeys.has(k)) } });
7419
7545
  }).catch((err) => {
7420
7546
  ctx.logger.error("addon auto-restart failed", { meta: { error: err instanceof Error ? err.message : String(err) } });
@@ -7923,8 +8049,39 @@ var RECORD_DEFAULT_MAX_DATA_BYTES = 64 * 1024;
7923
8049
  var RECORD_MAX_DATA_BYTES = 1024 * 1024;
7924
8050
  var RECORD_BATCH_MAX = 1e3;
7925
8051
  var RECORD_QUERY_MAX = 1e3;
8052
+ /** A kind in the `settings` file may not bound itself above this (D447: high volume is `events`). */
8053
+ var RECORD_SETTINGS_MAX_ROWS = 5e4;
8054
+ var PREFIX = "records/";
8055
+ /** The base of every records failure. `detail` is the human part of the message. */
8056
+ var RecordsError = class extends Error {
8057
+ code;
8058
+ detail;
8059
+ constructor(code, detail) {
8060
+ super(`${PREFIX}${code}: ${detail}`);
8061
+ this.name = "RecordsError";
8062
+ this.code = code;
8063
+ this.detail = detail;
8064
+ }
8065
+ };
8066
+ var InvalidRecordError = class extends RecordsError {
8067
+ constructor(detail) {
8068
+ super("invalid-record", detail);
8069
+ this.name = "InvalidRecordError";
8070
+ }
8071
+ };
8072
+ /** A kind declaration the engine refuses (non-additive change, bad shape, wrong file). */
8073
+ var DeclarationRefusedError = class extends RecordsError {
8074
+ constructor(detail) {
8075
+ super("declaration-refused", detail);
8076
+ this.name = "DeclarationRefusedError";
8077
+ }
8078
+ };
7926
8079
  function defOf(schema) {
7927
- return schema._zod?.def ?? {};
8080
+ const zodBag = Reflect.get(schema, "_zod");
8081
+ if (typeof zodBag !== "object" || zodBag === null) return {};
8082
+ const def = Reflect.get(zodBag, "def");
8083
+ if (typeof def !== "object" || def === null) return {};
8084
+ return def;
7928
8085
  }
7929
8086
  function declaredHere(schema) {
7930
8087
  return globalRegistry.get(schema)?.secret === true;
@@ -7987,6 +8144,42 @@ function collectZodSecretPaths(schema, prefix = "") {
7987
8144
  return [...new Set(paths)];
7988
8145
  }
7989
8146
  /**
8147
+ * Secret fields of a record, addressed the way a Zod schema declares them
8148
+ * (`collectZodSecretPaths`): dotted keys, `[]` for "each element of this array"
8149
+ * (`auth.accessToken`, `headers[].value`).
8150
+ *
8151
+ * Array elements are matched by a DECLARED id key (`secretArrayKeys`:
8152
+ * `{ headers: 'name' }`), never by index, so reordering a list keeps every
8153
+ * keychain ref (the same rule as `arrayItemFieldPath`). The concrete path of a
8154
+ * leaf names its element: `headers[X-Api].value`.
8155
+ *
8156
+ * Pure and browser-safe. Nothing here mutates: every transform returns a new value.
8157
+ */
8158
+ /** The array prefixes (declared form, e.g. `headers` or `a.headers`) of a path. */
8159
+ function parseSecretPath(path) {
8160
+ if (path.length === 0) throw new InvalidRecordError("an empty secret path");
8161
+ return path.split(".").map((raw) => {
8162
+ const each = raw.endsWith("[]");
8163
+ const key = each ? raw.slice(0, -2) : raw;
8164
+ if (key.length === 0) throw new InvalidRecordError(`secret path "${path}" has an empty segment`);
8165
+ return {
8166
+ key,
8167
+ each
8168
+ };
8169
+ });
8170
+ }
8171
+ /** The declared array prefixes of `path` that need an id key (`headers`, `a.rows`). */
8172
+ function secretArrayPrefixes(path) {
8173
+ const segments = parseSecretPath(path);
8174
+ const prefixes = [];
8175
+ const walked = [];
8176
+ for (const segment of segments) {
8177
+ walked.push(segment.key);
8178
+ if (segment.each) prefixes.push(walked.join("."));
8179
+ }
8180
+ return prefixes;
8181
+ }
8182
+ /**
7990
8183
  * Record kinds (D881): the declaration an addon makes of one kind of fact, the
7991
8184
  * Zod row schema that describes it, and the helper that turns the two into the
7992
8185
  * JSON the engine stores.
@@ -8054,6 +8247,90 @@ var RecordKindDeclarationSchema = object({
8054
8247
  }).strict();
8055
8248
  /** The kind names: lower-case, dash separated, short enough for an index name. */
8056
8249
  var RecordKindNameSchema = string().regex(/^[a-z][a-z0-9-]{0,47}$/);
8250
+ /** Cross-field rules a declaration must satisfy. Throws {@link DeclarationRefusedError}. */
8251
+ function assertValidDeclaration(name, decl) {
8252
+ const refuse = (why) => {
8253
+ throw new DeclarationRefusedError(`kind "${name}": ${why}`);
8254
+ };
8255
+ if (!RecordKindNameSchema.safeParse(name).success) refuse("the name must be lower-case-dashed");
8256
+ const seen = /* @__PURE__ */ new Set();
8257
+ for (const index of decl.indexes) {
8258
+ if (seen.has(index.name)) refuse(`index name "${index.name}" is declared twice`);
8259
+ seen.add(index.name);
8260
+ }
8261
+ const { retention } = decl;
8262
+ const hasSecrets = decl.secretPaths.length > 0;
8263
+ if ("ttlMs" in retention) {
8264
+ if (retention.from === "at" && decl.at !== "required") refuse("a ttl from \"at\" needs at: \"required\"");
8265
+ if (hasSecrets) refuse("a kind with secret fields cannot use engine TTL (its keychain values would be orphaned)");
8266
+ }
8267
+ if ("maxRows" in retention || "maxRowsPerDevice" in retention) {
8268
+ if (retention.maxRowsPerDevice !== void 0 && decl.device !== "required") refuse("maxRowsPerDevice needs device: \"required\"");
8269
+ if (decl.at !== "required") refuse("a row bound trims the oldest \"at\": it needs at: \"required\"");
8270
+ if (hasSecrets) refuse("a kind with secret fields cannot use an engine row bound");
8271
+ const bound = Math.max(retention.maxRows ?? 0, retention.maxRowsPerDevice ?? 0);
8272
+ if (decl.database === "settings" && bound > 5e4) refuse(`a row bound above ${RECORD_SETTINGS_MAX_ROWS} belongs in database: "events" (a big delete on the settings thread stalls every configuration read)`);
8273
+ }
8274
+ if (decl.deviceRemoval === "delete" && decl.device === "none") refuse("deviceRemoval: \"delete\" needs a device: \"required\" or \"optional\"");
8275
+ for (const path of decl.secretPaths) for (const prefix of secretArrayPrefixes(path)) if (decl.secretArrayKeys[prefix] === void 0) refuse(`secret path "${path}" crosses the array "${prefix}": declare its id key in secretArrayKeys`);
8276
+ }
8277
+ function bodyFieldsOf(schema) {
8278
+ return { ...toJSONSchema(schema, {
8279
+ unrepresentable: "any",
8280
+ io: "input"
8281
+ }) };
8282
+ }
8283
+ function isRecordLike(value) {
8284
+ return typeof value === "object" && value !== null && !Array.isArray(value);
8285
+ }
8286
+ /** Does every branch of the body schema carry `field`? (A discriminated union has several.) */
8287
+ function hasNameField(json, field) {
8288
+ const branches = json["oneOf"] ?? json["anyOf"];
8289
+ if (Array.isArray(branches)) return branches.length > 0 && branches.every((b) => isRecordLike(b) && hasNameField(b, field));
8290
+ const properties = json["properties"];
8291
+ return isRecordLike(properties) && Object.prototype.hasOwnProperty.call(properties, field);
8292
+ }
8293
+ /**
8294
+ * Declare the kinds of a package. The keys are the kind names. The result is
8295
+ * what `ctx.records.declare` sends to the engine and what `ctx.records.kind`
8296
+ * types its handle from.
8297
+ */
8298
+ function defineRecordKinds(specs) {
8299
+ const out = {};
8300
+ for (const [name, spec] of Object.entries(specs)) {
8301
+ const secretPaths = collectZodSecretPaths(spec.schema);
8302
+ const nameField = spec.entry?.nameField ?? "name";
8303
+ const fields = bodyFieldsOf(spec.schema);
8304
+ if (spec.entry !== void 0 && !hasNameField(fields, nameField)) throw new DeclarationRefusedError(`kind "${name}": an entry kind's schema needs a "${nameField}" field`);
8305
+ const parsed = RecordKindDeclarationSchema.parse({
8306
+ database: spec.database,
8307
+ class: spec.class,
8308
+ writeTrigger: spec.writeTrigger,
8309
+ device: spec.device,
8310
+ at: spec.at,
8311
+ indexes: spec.indexes === void 0 ? void 0 : [...spec.indexes],
8312
+ retention: spec.retention,
8313
+ deviceRemoval: spec.deviceRemoval,
8314
+ maxDataBytes: spec.maxDataBytes,
8315
+ secretPaths: [...secretPaths],
8316
+ secretArrayKeys: spec.secretArrayKeys === void 0 ? void 0 : { ...spec.secretArrayKeys },
8317
+ adoptsFrom: spec.adoptsFrom,
8318
+ transactFamily: spec.transactFamily,
8319
+ entry: spec.entry === void 0 ? void 0 : {
8320
+ title: spec.entry.title,
8321
+ nameField,
8322
+ fields
8323
+ }
8324
+ });
8325
+ assertValidDeclaration(name, parsed);
8326
+ out[name] = {
8327
+ name,
8328
+ schema: spec.schema,
8329
+ declaration: parsed
8330
+ };
8331
+ }
8332
+ return out;
8333
+ }
8057
8334
  /** Shared Zod schemas used across streaming capabilities. */
8058
8335
  var CamProfileSchema = _enum([
8059
8336
  "high",
@@ -17741,13 +18018,23 @@ method(object({ ownerPrefix: string().min(1).optional() }), object({ tables: arr
17741
18018
  }), RecordQueryResultSchema, { auth: "admin" }), method(object({
17742
18019
  owner: string().min(1),
17743
18020
  kind: RecordKindNameSchema,
17744
- records: array(RecordInputSchema).min(1).max(RECORD_BATCH_MAX),
18021
+ records: array(RecordInputSchema).max(RECORD_BATCH_MAX),
17745
18022
  /** The LAST batch: the copy is complete, the boot guard stops asking. */
17746
18023
  complete: boolean().optional()
17747
- }), object({ adopted: number().int() }), {
18024
+ }).refine((input) => input.records.length > 0 || input.complete === true, { message: "records must be non-empty unless complete is true" }), object({ adopted: number().int() }), {
17748
18025
  kind: "mutation",
17749
18026
  auth: "admin"
17750
- });
18027
+ }), method(object({
18028
+ collection: string().min(1),
18029
+ cursor: string().optional(),
18030
+ limit: number().int().min(1).max(1e3).optional()
18031
+ }), object({
18032
+ rows: array(object({
18033
+ id: string(),
18034
+ data: record(string(), unknown())
18035
+ })),
18036
+ nextCursor: string().nullable()
18037
+ }), { auth: "admin" }), method(object({ collection: string().min(1) }), object({ adopted: boolean() }), { auth: "admin" });
17751
18038
  /**
17752
18039
  * record-entries - the ONE admin surface for every list of user-created entries
17753
18040
  * (D881): notification targets, brokers, LLM profiles, anything an addon
@@ -44142,6 +44429,7 @@ var NcThrottleSchema = object({
44142
44429
  var NC_CONFIRM_MIN_TIMEOUT_MS = 1e3;
44143
44430
  var NC_CONFIRM_MAX_TIMEOUT_MS = 2e4;
44144
44431
  var NC_CONFIRM_DEFAULT_TIMEOUT_MS = 8e3;
44432
+ var NC_CONFIRM_DEFAULT_MAX_IMAGE_PX = 448;
44145
44433
  /** Comparison the model's COUNT must satisfy for the notification to fire. */
44146
44434
  var NcConfirmExpectSchema = object({
44147
44435
  op: _enum([
@@ -68972,13 +69260,14 @@ var BaseDevice = class {
68972
69260
  get state() {
68973
69261
  if (!this._stateProxyCache) {
68974
69262
  const cache = {};
68975
- const handler = { get: (_target, key) => {
69263
+ const handler = { get: (target, key) => {
68976
69264
  const k = key;
68977
- if (k in cache) return cache[k];
69265
+ const existing = Reflect.get(target, k);
69266
+ if (existing !== void 0) return existing;
68978
69267
  const cap = DEVICE_LOCAL_STATE_CAPS[k];
68979
69268
  if (!cap) return void 0;
68980
69269
  const proxy = this.sliceProxy(cap);
68981
- cache[k] = proxy;
69270
+ Reflect.set(target, k, proxy);
68982
69271
  return proxy;
68983
69272
  } };
68984
69273
  this._stateProxyCache = new Proxy(cache, handler);
@@ -69177,7 +69466,7 @@ var BaseDevice = class {
69177
69466
  async updateSourceInfo(patch) {
69178
69467
  const next = mergeSourceInfo(this.sourceInfo, patch);
69179
69468
  this._sourceInfoCache = Object.freeze({ ...next });
69180
- const action = this.ctx.api?.deviceManager?.setMetadata;
69469
+ const action = this.ctx.api.deviceManager?.setMetadata;
69181
69470
  if (action) try {
69182
69471
  await action.mutate({
69183
69472
  deviceId: this.id,
@@ -69212,7 +69501,7 @@ var BaseDevice = class {
69212
69501
  * device boot on a meta refresh.
69213
69502
  */
69214
69503
  async refreshFeatures() {
69215
- const action = this.ctx.api?.deviceManager?.registerDevice;
69504
+ const action = this.ctx.api.deviceManager?.registerDevice;
69216
69505
  if (!action) return;
69217
69506
  try {
69218
69507
  await action.mutate({
@@ -76431,6 +76720,12 @@ Object.freeze({
76431
76720
  addonId: null,
76432
76721
  access: "delete"
76433
76722
  },
76723
+ "storageAdmin.isAdoptedLegacyTable": {
76724
+ capName: "storage-admin",
76725
+ capScope: "system",
76726
+ addonId: null,
76727
+ access: "view"
76728
+ },
76434
76729
  "storageAdmin.listKinds": {
76435
76730
  capName: "storage-admin",
76436
76731
  capScope: "system",
@@ -76443,6 +76738,12 @@ Object.freeze({
76443
76738
  addonId: null,
76444
76739
  access: "view"
76445
76740
  },
76741
+ "storageAdmin.readLegacyCollection": {
76742
+ capName: "storage-admin",
76743
+ capScope: "system",
76744
+ addonId: null,
76745
+ access: "view"
76746
+ },
76446
76747
  "storageAdmin.readRecords": {
76447
76748
  capName: "storage-admin",
76448
76749
  capScope: "system",
@@ -85087,6 +85388,18 @@ Object.defineProperty(exports, "NC_CONDITION_CATALOG", {
85087
85388
  return NC_CONDITION_CATALOG;
85088
85389
  }
85089
85390
  });
85391
+ Object.defineProperty(exports, "NC_CONFIRM_DEFAULT_MAX_IMAGE_PX", {
85392
+ enumerable: true,
85393
+ get: function() {
85394
+ return NC_CONFIRM_DEFAULT_MAX_IMAGE_PX;
85395
+ }
85396
+ });
85397
+ Object.defineProperty(exports, "NC_CONFIRM_DEFAULT_TIMEOUT_MS", {
85398
+ enumerable: true,
85399
+ get: function() {
85400
+ return NC_CONFIRM_DEFAULT_TIMEOUT_MS;
85401
+ }
85402
+ });
85090
85403
  Object.defineProperty(exports, "NC_CONSUMABLE_LOW_PERCENT_DEFAULT", {
85091
85404
  enumerable: true,
85092
85405
  get: function() {
@@ -85345,6 +85658,12 @@ Object.defineProperty(exports, "RECORDING_SOURCE_CAMSTACK_ADDON", {
85345
85658
  return RECORDING_SOURCE_CAMSTACK_ADDON;
85346
85659
  }
85347
85660
  });
85661
+ Object.defineProperty(exports, "RECORD_MAX_DATA_BYTES", {
85662
+ enumerable: true,
85663
+ get: function() {
85664
+ return RECORD_MAX_DATA_BYTES;
85665
+ }
85666
+ });
85348
85667
  Object.defineProperty(exports, "RebuildObjectEmbeddingsRefusalSchema", {
85349
85668
  enumerable: true,
85350
85669
  get: function() {
@@ -85693,6 +86012,12 @@ Object.defineProperty(exports, "defineCustomActions", {
85693
86012
  return defineCustomActions;
85694
86013
  }
85695
86014
  });
86015
+ Object.defineProperty(exports, "defineRecordKinds", {
86016
+ enumerable: true,
86017
+ get: function() {
86018
+ return defineRecordKinds;
86019
+ }
86020
+ });
85696
86021
  Object.defineProperty(exports, "deleteAlarmProfile", {
85697
86022
  enumerable: true,
85698
86023
  get: function() {
@@ -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-BRzN2GzR.js");
5
+ const require_clip_model_registry = require("../clip-model-registry-DAZ9ie-f.js");
6
6
  let node_fs = require("node:fs");
7
7
  node_fs = require_clip_model_registry.__toESM(node_fs);
8
8
  let node_path = require("node:path");
@@ -1,4 +1,4 @@
1
- import { $t as PoolMemoryWatchdog, Ii as normalizeNodeId, Oi as BaseAddon, Rr as parseProcStatus, Xr as resolvePoolMemoryPolicy, a as CLIP_EMBEDDING_STEP_ID, i as CLIP_TEXT_MODELS, ir as embeddingModelFailedError, l as resolveClusterModelPin, n as DEFAULT_CLIP_MODEL, or as embeddingRequirementsFailedError, r as CLIP_IMAGE_MODELS, rr as embeddingEncoderCapability, sr as embeddingRequirementsUnavailableError, t as BUILTIN_CLIP_MODELS } from "../clip-model-registry-BIJ0ZD7t.mjs";
1
+ import { Ai as BaseAddon, Bi as normalizeNodeId, Br as parseProcStatus, Qr as resolvePoolMemoryPolicy, a as CLIP_EMBEDDING_STEP_ID, ar as embeddingEncoderCapability, cr as embeddingRequirementsFailedError, i as CLIP_TEXT_MODELS, l as resolveClusterModelPin, lr as embeddingRequirementsUnavailableError, n as DEFAULT_CLIP_MODEL, or as embeddingModelFailedError, r as CLIP_IMAGE_MODELS, t as BUILTIN_CLIP_MODELS, tn as PoolMemoryWatchdog } from "../clip-model-registry-BuM8eXlN.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,8 +1,8 @@
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, c, i as l, n as u, o as d, r as f, s as p, t as m } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-BjCURGur.mjs";
3
+ import { a as s, c, i as l, n as u, o as d, r as f, s as p, t as m } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-SRvLcL_J.mjs";
4
4
  import { n as h, r as g, t as _ } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.js-Bm-iyjmq.mjs";
5
- import { t as v } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-Ds_wGoAi.mjs";
5
+ import { t as v } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-CElkWYPg.mjs";
6
6
  //#region ../../node_modules/lucide-react/dist/esm/shared/src/utils/mergeClasses.js
7
7
  var y = (...e) => e.filter((e, t, n) => !!e && e.trim() !== "" && n.indexOf(e) === t).join(" ").trim(), b = (e) => e.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase(), x = (e) => e.replace(/^([A-Z])|[\s-_]+(\w)/g, (e, t, n) => n ? n.toUpperCase() : t.toLowerCase()), S = (e) => {
8
8
  let t = x(e);