@camstack/system 1.2.348 → 1.2.350

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 (68) hide show
  1. package/dist/addon-runner.js +2 -2
  2. package/dist/addon-runner.mjs +1 -1
  3. package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.js +1 -1
  4. package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.mjs +1 -1
  5. package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.js +1 -1
  6. package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.mjs +1 -1
  7. package/dist/builtins/alerts/alerts.addon.d.ts +8 -0
  8. package/dist/builtins/alerts/alerts.addon.js +146 -31
  9. package/dist/builtins/alerts/alerts.addon.mjs +146 -31
  10. package/dist/builtins/alerts/device-label.d.ts +8 -0
  11. package/dist/builtins/autotrack/index.js +1 -1
  12. package/dist/builtins/autotrack/index.mjs +1 -1
  13. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.js +1 -1
  14. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.mjs +1 -1
  15. package/dist/builtins/calendars/calendars.addon.js +1 -1
  16. package/dist/builtins/calendars/calendars.addon.mjs +1 -1
  17. package/dist/builtins/camera-grid/index.js +1 -1
  18. package/dist/builtins/camera-grid/index.mjs +1 -1
  19. package/dist/builtins/composer/composer.addon.js +2 -2
  20. package/dist/builtins/composer/composer.addon.mjs +2 -2
  21. package/dist/builtins/console-logging/index.js +1 -1
  22. package/dist/builtins/console-logging/index.mjs +1 -1
  23. package/dist/builtins/core-blocks/block-type-defs.d.ts +20 -5
  24. package/dist/builtins/core-blocks/core-blocks.addon.js +171 -26
  25. package/dist/builtins/core-blocks/core-blocks.addon.mjs +171 -26
  26. package/dist/builtins/device-manager/device-bindings-store.d.ts +3 -1
  27. package/dist/builtins/device-manager/device-manager.addon.js +4 -56
  28. package/dist/builtins/device-manager/device-manager.addon.mjs +4 -56
  29. package/dist/builtins/hub-forwarder/index.js +1 -1
  30. package/dist/builtins/hub-forwarder/index.mjs +1 -1
  31. package/dist/builtins/liveness-monitor/liveness-checks.d.ts +7 -0
  32. package/dist/builtins/liveness-monitor/liveness-monitor.addon.js +8 -4
  33. package/dist/builtins/liveness-monitor/liveness-monitor.addon.mjs +8 -4
  34. package/dist/builtins/local-auth/local-auth.addon.js +1 -1
  35. package/dist/builtins/local-auth/local-auth.addon.mjs +1 -1
  36. package/dist/builtins/local-network/local-network.addon.js +1 -1
  37. package/dist/builtins/local-network/local-network.addon.mjs +1 -1
  38. package/dist/builtins/loki-logging/index.js +1 -1
  39. package/dist/builtins/loki-logging/index.mjs +1 -1
  40. package/dist/builtins/native-metrics/native-metrics.addon.js +1 -1
  41. package/dist/builtins/native-metrics/native-metrics.addon.mjs +1 -1
  42. package/dist/builtins/platform-probe/index.js +1 -1
  43. package/dist/builtins/platform-probe/index.mjs +1 -1
  44. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.js +1 -1
  45. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.mjs +1 -1
  46. package/dist/builtins/snapshot/index.js +1 -1
  47. package/dist/builtins/snapshot/index.mjs +1 -1
  48. package/dist/builtins/sqlite-storage/filesystem-storage.addon.js +1 -1
  49. package/dist/builtins/sqlite-storage/filesystem-storage.addon.mjs +1 -1
  50. package/dist/builtins/sqlite-storage/sqlite-settings.addon.js +0 -0
  51. package/dist/builtins/sqlite-storage/sqlite-settings.addon.mjs +0 -0
  52. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.js +1 -1
  53. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.mjs +1 -1
  54. package/dist/builtins/system-config/system-config.addon.js +1 -1
  55. package/dist/builtins/system-config/system-config.addon.mjs +1 -1
  56. package/dist/builtins/winston-logging/index.js +1 -1
  57. package/dist/builtins/winston-logging/index.mjs +1 -1
  58. package/dist/{child-cap-dispatch-k3dEOCnu.js → child-cap-dispatch-CYgHiMdj.js} +1 -1
  59. package/dist/{child-cap-dispatch-B2N_gWV-.mjs → child-cap-dispatch-zEt3rqy-.mjs} +1 -1
  60. package/dist/{composition-sources-C42s3_1h.js → composition-sources-DyxH-DLr.js} +1 -1
  61. package/dist/{composition-sources-D7cxA4Yv.mjs → composition-sources-d7zXAC70.mjs} +1 -1
  62. package/dist/{dist-BgV_QADz.js → dist-DZKm2EOp.js} +103 -3
  63. package/dist/{dist-nUn3vto_.mjs → dist-Di0aX2zy.mjs} +103 -3
  64. package/dist/index.js +2 -2
  65. package/dist/index.mjs +2 -2
  66. package/dist/{retired-settings-keys-D980hwnw.js → retired-settings-keys-BEY9Wjf1.js} +1 -1
  67. package/dist/{retired-settings-keys-pKNWq-CL.mjs → retired-settings-keys-jzB4iJpq.mjs} +1 -1
  68. package/package.json +1 -1
@@ -710,7 +710,7 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
710
710
  return EventCategory;
711
711
  }({});
712
712
  //#endregion
713
- //#region ../types/dist/sleep-CDCONfkt.mjs
713
+ //#region ../types/dist/sleep-DXKLNFvA.mjs
714
714
  /**
715
715
  * The audio chunk plane's byte format, and the ONE expansion from a coded
716
716
  * window to float samples (D455).
@@ -1019,6 +1019,43 @@ function hydrateField(field, values) {
1019
1019
  }
1020
1020
  const rawValue = storedValue !== void 0 ? storedValue : defaultValue !== void 0 ? defaultValue : null;
1021
1021
  const value = field.type === "textarea" && field.isJson && rawValue !== null && typeof rawValue === "object" ? JSON.stringify(rawValue, null, 2) : rawValue;
1022
+ if (field.type === "tags" && typeof field.suggestionsFrom === "string") {
1023
+ const from = values[field.suggestionsFrom];
1024
+ const extra = Array.isArray(from) ? from.filter((s) => typeof s === "string" && s.length > 0) : [];
1025
+ const merged = [...new Set([...field.suggestions ?? [], ...extra])];
1026
+ return {
1027
+ ...field,
1028
+ suggestions: merged,
1029
+ value
1030
+ };
1031
+ }
1032
+ if ((field.type === "select" || field.type === "multiselect") && typeof field.optionsFrom === "string") {
1033
+ const from = values[field.optionsFrom];
1034
+ const byValue = /* @__PURE__ */ new Map();
1035
+ for (const opt of field.options) byValue.set(opt.value, opt);
1036
+ if (Array.isArray(from)) for (const entry of from) {
1037
+ if (typeof entry === "string" && entry.length > 0) {
1038
+ if (!byValue.has(entry)) byValue.set(entry, {
1039
+ value: entry,
1040
+ label: entry
1041
+ });
1042
+ continue;
1043
+ }
1044
+ if (entry === null || typeof entry !== "object") continue;
1045
+ const v = Reflect.get(entry, "value");
1046
+ const lbl = Reflect.get(entry, "label");
1047
+ if (typeof v !== "string" || v.length === 0) continue;
1048
+ if (!byValue.has(v)) byValue.set(v, {
1049
+ value: v,
1050
+ label: typeof lbl === "string" && lbl.length > 0 ? lbl : v
1051
+ });
1052
+ }
1053
+ return {
1054
+ ...field,
1055
+ options: [...byValue.values()],
1056
+ value
1057
+ };
1058
+ }
1022
1059
  return {
1023
1060
  ...field,
1024
1061
  value
@@ -19082,6 +19119,17 @@ var SendResultSchema = zod.z.object({
19082
19119
  });
19083
19120
  /** Same shape as SendResult — kept as a distinct name for the test panel. */
19084
19121
  var TestResultSchema = SendResultSchema;
19122
+ /**
19123
+ * Pre-save credential probe against a partial (unsaved) target config.
19124
+ * `resolvedUrl` never includes secrets (token stripped from path).
19125
+ */
19126
+ var ProbeTargetConfigResultSchema = zod.z.object({
19127
+ ok: zod.z.boolean(),
19128
+ resolvedUrl: zod.z.string(),
19129
+ httpStatus: zod.z.number().int().optional(),
19130
+ stateInstance: zod.z.string().optional(),
19131
+ error: zod.z.string().optional()
19132
+ });
19085
19133
  var notificationOutputCapability = {
19086
19134
  name: "notification-output",
19087
19135
  scope: "system",
@@ -19089,10 +19137,32 @@ var notificationOutputCapability = {
19089
19137
  methods: {
19090
19138
  listTargetKinds: method(zod.z.object({}), zod.z.array(TargetKindSchema)),
19091
19139
  listTargets: method(zod.z.object({}), zod.z.array(TargetSchema), { auth: "admin" }),
19140
+ /**
19141
+ * One target WITH secrets — admin edit / duplicate hydration only.
19142
+ * `listTargets` stays redacted; the editor loads this so password fields
19143
+ * are filled (masked in the input) and a save can round-trip the token
19144
+ * when a destination changes (Duplicate with a new chatId, etc.).
19145
+ */
19146
+ getTarget: method(zod.z.object({ targetId: zod.z.string() }), TargetSchema, { auth: "admin" }),
19092
19147
  discoverTargets: method(zod.z.object({
19093
19148
  kind: zod.z.string(),
19094
- config: zod.z.record(zod.z.string(), zod.z.unknown()).optional()
19149
+ config: zod.z.record(zod.z.string(), zod.z.unknown()).optional(),
19150
+ /**
19151
+ * When editing / duplicating, the blank password field never round-trips
19152
+ * the stored token. Pass the source target id so the provider can restore
19153
+ * secrets server-side before dialling (same merge as upsert).
19154
+ */
19155
+ targetId: zod.z.string().optional()
19095
19156
  }), zod.z.array(DiscoveredTargetSchema), { auth: "admin" }),
19157
+ probeTargetConfig: method(zod.z.object({
19158
+ kind: zod.z.string(),
19159
+ config: zod.z.record(zod.z.string(), zod.z.unknown()),
19160
+ /** See `discoverTargets.targetId` — restore stored secrets for a blank password. */
19161
+ targetId: zod.z.string().optional()
19162
+ }), ProbeTargetConfigResultSchema, {
19163
+ kind: "mutation",
19164
+ auth: "admin"
19165
+ }),
19096
19166
  send: method(zod.z.object({
19097
19167
  targetId: zod.z.string(),
19098
19168
  notification: NotificationSchema
@@ -19107,7 +19177,16 @@ var notificationOutputCapability = {
19107
19177
  kind: "mutation",
19108
19178
  auth: "admin"
19109
19179
  }),
19110
- upsertTarget: method(zod.z.object({ target: TargetSchema }), TargetSchema, {
19180
+ upsertTarget: method(zod.z.object({
19181
+ target: TargetSchema,
19182
+ /**
19183
+ * Duplicate flow: create a NEW target id while copying secrets from an
19184
+ * existing row. The UI never holds the stored token; blank / redacted
19185
+ * password fields are restored from this source (D634 still applies if
19186
+ * destinations diverge without a re-typed secret).
19187
+ */
19188
+ cloneSecretsFrom: zod.z.string().optional()
19189
+ }), TargetSchema, {
19111
19190
  kind: "mutation",
19112
19191
  auth: "admin"
19113
19192
  }),
@@ -19748,6 +19827,15 @@ var AlarmArmModeSchema = zod.z.enum([
19748
19827
  var AlarmPanelStatusSchema = zod.z.object({
19749
19828
  /** Current lifecycle state. */
19750
19829
  state: AlarmStateSchema,
19830
+ /**
19831
+ * The arm mode the machine belongs to under transitional words
19832
+ * (`arming` / `pending` / `triggered` / `disarming`). `null` when
19833
+ * disarmed or when a provider cannot name one. Exporters MUST prefer
19834
+ * this over an in-process memo — a HomeKit accessory that missed the
19835
+ * settled `armed_*` slice used to map `pending` to DISARMED and hide
19836
+ * an entry delay.
19837
+ */
19838
+ targetMode: AlarmArmModeSchema.nullable().optional(),
19751
19839
  /** Subset of arm modes the panel accepts. UI renders one button per
19752
19840
  * mode in this list. */
19753
19841
  availableModes: zod.z.array(AlarmArmModeSchema),
@@ -50109,6 +50197,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
50109
50197
  addonId: null,
50110
50198
  access: "view"
50111
50199
  },
50200
+ "notificationOutput.getTarget": {
50201
+ capName: "notification-output",
50202
+ capScope: "system",
50203
+ addonId: null,
50204
+ access: "view"
50205
+ },
50112
50206
  "notificationOutput.listTargetKinds": {
50113
50207
  capName: "notification-output",
50114
50208
  capScope: "system",
@@ -50121,6 +50215,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
50121
50215
  addonId: null,
50122
50216
  access: "view"
50123
50217
  },
50218
+ "notificationOutput.probeTargetConfig": {
50219
+ capName: "notification-output",
50220
+ capScope: "system",
50221
+ addonId: null,
50222
+ access: "create"
50223
+ },
50124
50224
  "notificationOutput.send": {
50125
50225
  capName: "notification-output",
50126
50226
  capScope: "system",
@@ -710,7 +710,7 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
710
710
  return EventCategory;
711
711
  }({});
712
712
  //#endregion
713
- //#region ../types/dist/sleep-CDCONfkt.mjs
713
+ //#region ../types/dist/sleep-DXKLNFvA.mjs
714
714
  /**
715
715
  * The audio chunk plane's byte format, and the ONE expansion from a coded
716
716
  * window to float samples (D455).
@@ -1019,6 +1019,43 @@ function hydrateField(field, values) {
1019
1019
  }
1020
1020
  const rawValue = storedValue !== void 0 ? storedValue : defaultValue !== void 0 ? defaultValue : null;
1021
1021
  const value = field.type === "textarea" && field.isJson && rawValue !== null && typeof rawValue === "object" ? JSON.stringify(rawValue, null, 2) : rawValue;
1022
+ if (field.type === "tags" && typeof field.suggestionsFrom === "string") {
1023
+ const from = values[field.suggestionsFrom];
1024
+ const extra = Array.isArray(from) ? from.filter((s) => typeof s === "string" && s.length > 0) : [];
1025
+ const merged = [...new Set([...field.suggestions ?? [], ...extra])];
1026
+ return {
1027
+ ...field,
1028
+ suggestions: merged,
1029
+ value
1030
+ };
1031
+ }
1032
+ if ((field.type === "select" || field.type === "multiselect") && typeof field.optionsFrom === "string") {
1033
+ const from = values[field.optionsFrom];
1034
+ const byValue = /* @__PURE__ */ new Map();
1035
+ for (const opt of field.options) byValue.set(opt.value, opt);
1036
+ if (Array.isArray(from)) for (const entry of from) {
1037
+ if (typeof entry === "string" && entry.length > 0) {
1038
+ if (!byValue.has(entry)) byValue.set(entry, {
1039
+ value: entry,
1040
+ label: entry
1041
+ });
1042
+ continue;
1043
+ }
1044
+ if (entry === null || typeof entry !== "object") continue;
1045
+ const v = Reflect.get(entry, "value");
1046
+ const lbl = Reflect.get(entry, "label");
1047
+ if (typeof v !== "string" || v.length === 0) continue;
1048
+ if (!byValue.has(v)) byValue.set(v, {
1049
+ value: v,
1050
+ label: typeof lbl === "string" && lbl.length > 0 ? lbl : v
1051
+ });
1052
+ }
1053
+ return {
1054
+ ...field,
1055
+ options: [...byValue.values()],
1056
+ value
1057
+ };
1058
+ }
1022
1059
  return {
1023
1060
  ...field,
1024
1061
  value
@@ -19082,6 +19119,17 @@ var SendResultSchema = z.object({
19082
19119
  });
19083
19120
  /** Same shape as SendResult — kept as a distinct name for the test panel. */
19084
19121
  var TestResultSchema = SendResultSchema;
19122
+ /**
19123
+ * Pre-save credential probe against a partial (unsaved) target config.
19124
+ * `resolvedUrl` never includes secrets (token stripped from path).
19125
+ */
19126
+ var ProbeTargetConfigResultSchema = z.object({
19127
+ ok: z.boolean(),
19128
+ resolvedUrl: z.string(),
19129
+ httpStatus: z.number().int().optional(),
19130
+ stateInstance: z.string().optional(),
19131
+ error: z.string().optional()
19132
+ });
19085
19133
  var notificationOutputCapability = {
19086
19134
  name: "notification-output",
19087
19135
  scope: "system",
@@ -19089,10 +19137,32 @@ var notificationOutputCapability = {
19089
19137
  methods: {
19090
19138
  listTargetKinds: method(z.object({}), z.array(TargetKindSchema)),
19091
19139
  listTargets: method(z.object({}), z.array(TargetSchema), { auth: "admin" }),
19140
+ /**
19141
+ * One target WITH secrets — admin edit / duplicate hydration only.
19142
+ * `listTargets` stays redacted; the editor loads this so password fields
19143
+ * are filled (masked in the input) and a save can round-trip the token
19144
+ * when a destination changes (Duplicate with a new chatId, etc.).
19145
+ */
19146
+ getTarget: method(z.object({ targetId: z.string() }), TargetSchema, { auth: "admin" }),
19092
19147
  discoverTargets: method(z.object({
19093
19148
  kind: z.string(),
19094
- config: z.record(z.string(), z.unknown()).optional()
19149
+ config: z.record(z.string(), z.unknown()).optional(),
19150
+ /**
19151
+ * When editing / duplicating, the blank password field never round-trips
19152
+ * the stored token. Pass the source target id so the provider can restore
19153
+ * secrets server-side before dialling (same merge as upsert).
19154
+ */
19155
+ targetId: z.string().optional()
19095
19156
  }), z.array(DiscoveredTargetSchema), { auth: "admin" }),
19157
+ probeTargetConfig: method(z.object({
19158
+ kind: z.string(),
19159
+ config: z.record(z.string(), z.unknown()),
19160
+ /** See `discoverTargets.targetId` — restore stored secrets for a blank password. */
19161
+ targetId: z.string().optional()
19162
+ }), ProbeTargetConfigResultSchema, {
19163
+ kind: "mutation",
19164
+ auth: "admin"
19165
+ }),
19096
19166
  send: method(z.object({
19097
19167
  targetId: z.string(),
19098
19168
  notification: NotificationSchema
@@ -19107,7 +19177,16 @@ var notificationOutputCapability = {
19107
19177
  kind: "mutation",
19108
19178
  auth: "admin"
19109
19179
  }),
19110
- upsertTarget: method(z.object({ target: TargetSchema }), TargetSchema, {
19180
+ upsertTarget: method(z.object({
19181
+ target: TargetSchema,
19182
+ /**
19183
+ * Duplicate flow: create a NEW target id while copying secrets from an
19184
+ * existing row. The UI never holds the stored token; blank / redacted
19185
+ * password fields are restored from this source (D634 still applies if
19186
+ * destinations diverge without a re-typed secret).
19187
+ */
19188
+ cloneSecretsFrom: z.string().optional()
19189
+ }), TargetSchema, {
19111
19190
  kind: "mutation",
19112
19191
  auth: "admin"
19113
19192
  }),
@@ -19748,6 +19827,15 @@ var AlarmArmModeSchema = z.enum([
19748
19827
  var AlarmPanelStatusSchema = z.object({
19749
19828
  /** Current lifecycle state. */
19750
19829
  state: AlarmStateSchema,
19830
+ /**
19831
+ * The arm mode the machine belongs to under transitional words
19832
+ * (`arming` / `pending` / `triggered` / `disarming`). `null` when
19833
+ * disarmed or when a provider cannot name one. Exporters MUST prefer
19834
+ * this over an in-process memo — a HomeKit accessory that missed the
19835
+ * settled `armed_*` slice used to map `pending` to DISARMED and hide
19836
+ * an entry delay.
19837
+ */
19838
+ targetMode: AlarmArmModeSchema.nullable().optional(),
19751
19839
  /** Subset of arm modes the panel accepts. UI renders one button per
19752
19840
  * mode in this list. */
19753
19841
  availableModes: z.array(AlarmArmModeSchema),
@@ -50109,6 +50197,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
50109
50197
  addonId: null,
50110
50198
  access: "view"
50111
50199
  },
50200
+ "notificationOutput.getTarget": {
50201
+ capName: "notification-output",
50202
+ capScope: "system",
50203
+ addonId: null,
50204
+ access: "view"
50205
+ },
50112
50206
  "notificationOutput.listTargetKinds": {
50113
50207
  capName: "notification-output",
50114
50208
  capScope: "system",
@@ -50121,6 +50215,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
50121
50215
  addonId: null,
50122
50216
  access: "view"
50123
50217
  },
50218
+ "notificationOutput.probeTargetConfig": {
50219
+ capName: "notification-output",
50220
+ capScope: "system",
50221
+ addonId: null,
50222
+ access: "create"
50223
+ },
50124
50224
  "notificationOutput.send": {
50125
50225
  capName: "notification-output",
50126
50226
  capScope: "system",
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_chunk = require("./chunk-Cek0wNdY.js");
3
- const require_dist = require("./dist-BgV_QADz.js");
3
+ const require_dist = require("./dist-DZKm2EOp.js");
4
4
  const require_builtins_alerts_alerts_addon = require("./builtins/alerts/alerts.addon.js");
5
5
  require("./builtins/alerts/index.js");
6
6
  const require_builtins_calendars_calendars_addon = require("./builtins/calendars/calendars.addon.js");
@@ -31,7 +31,7 @@ require("./builtins/system-config/index.js");
31
31
  const require_builtins_winston_logging_index = require("./builtins/winston-logging/index.js");
32
32
  const require_event_loop_stall_monitor = require("./event-loop-stall-monitor-ey4mbofz.js");
33
33
  const require_tls$1 = require("./tls-ue_Xefmv.js");
34
- const require_child_cap_dispatch = require("./child-cap-dispatch-k3dEOCnu.js");
34
+ const require_child_cap_dispatch = require("./child-cap-dispatch-CYgHiMdj.js");
35
35
  const require_resource_monitor = require("./resource-monitor-BgWGRxN5.js");
36
36
  const require_custom_action_registry = require("./custom-action-registry-acBY3mHA.js");
37
37
  let zod = require("zod");
package/dist/index.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  import { a as __toCommonJS, i as __require, n as __esmMin, o as __toESM$1, r as __exportAll, t as __commonJSMin$1 } from "./chunk-CNf5ZN-e.mjs";
2
- import { $n as ReadinessRegistry, Bt as lifecycleJobSchema, D as METHOD_ACCESS_MAP, Dt as extractNestedAddonId, Ft as isObjectInput, Gt as looseSchema, It as isVoidInput, Jn as errMsg$1, Lt as kebabToCamel, M as RUNTIME_DEFAULTS, Mt as isArrayOutputSchema, Nt as isCollectionArrayMethod, Qn as DEVICE_STATUS_METHOD, U as addonSettingsCapability, Wt as logLevelAtMost, Xn as DATAPLANE_SECRET_HEADER$1, Zn as DEVICE_SETTINGS_CONTRIBUTION_METHODS, _r as scopeKey, an as procedureAuthKey, ar as createEvent, br as EventCategory$1, cr as expandCapMethods, en as objectInputDeclaresAddonId, er as ReadinessTimeoutError, gn as scopesAllowDeviceCap, gr as resolveCapMount, hn as scopesAllowAddon, hr as readinessKey, ir as asString$1, mr as parseJsonUnknown, nr as asJsonObject$1, or as emitDownForOwnedCaps, pn as resolveMethodAuth, pr as parseJsonObject, rr as asNumber, t as ALL_CAPABILITY_DEFINITIONS, tn as objectInputDeclaresRequiredDeviceId, w as LOG_LEVEL_RANK } from "./dist-nUn3vto_.mjs";
2
+ import { $n as ReadinessRegistry, Bt as lifecycleJobSchema, D as METHOD_ACCESS_MAP, Dt as extractNestedAddonId, Ft as isObjectInput, Gt as looseSchema, It as isVoidInput, Jn as errMsg$1, Lt as kebabToCamel, M as RUNTIME_DEFAULTS, Mt as isArrayOutputSchema, Nt as isCollectionArrayMethod, Qn as DEVICE_STATUS_METHOD, U as addonSettingsCapability, Wt as logLevelAtMost, Xn as DATAPLANE_SECRET_HEADER$1, Zn as DEVICE_SETTINGS_CONTRIBUTION_METHODS, _r as scopeKey, an as procedureAuthKey, ar as createEvent, br as EventCategory$1, cr as expandCapMethods, en as objectInputDeclaresAddonId, er as ReadinessTimeoutError, gn as scopesAllowDeviceCap, gr as resolveCapMount, hn as scopesAllowAddon, hr as readinessKey, ir as asString$1, mr as parseJsonUnknown, nr as asJsonObject$1, or as emitDownForOwnedCaps, pn as resolveMethodAuth, pr as parseJsonObject, rr as asNumber, t as ALL_CAPABILITY_DEFINITIONS, tn as objectInputDeclaresRequiredDeviceId, w as LOG_LEVEL_RANK } from "./dist-Di0aX2zy.mjs";
3
3
  import { AlertCenterAddon } from "./builtins/alerts/alerts.addon.mjs";
4
4
  import "./builtins/alerts/index.mjs";
5
5
  import { CalendarsAddon } from "./builtins/calendars/calendars.addon.mjs";
@@ -30,7 +30,7 @@ import "./builtins/system-config/index.mjs";
30
30
  import { WinstonDestination, WinstonLoggingAddon } from "./builtins/winston-logging/index.mjs";
31
31
  import { _ as ensureModel, a as createFileDataPlaneHandler, c as parseRangeHeader, d as ModelDownloadService, g as downloadModel, h as downloadFile, i as startEventLoopStallMonitor, l as parseTokenizedUrl, m as deleteModelFromDisk, n as STALL_TICK_MS, o as contentTypeFor, p as collectModelFiles, r as attributeStall, s as createAuthenticatedFileServer, t as STALL_REPORT_MS, u as resolveFilePath, v as fetchJson, x as isModelDownloaded, y as getModelFilePath } from "./event-loop-stall-monitor-EXjzIxDz.mjs";
32
32
  import { C as registerLanHttpHandler, S as readLanHttpState, _ as DEFAULT_LAN_HTTP_PORT, a as writeTlsMode, b as bindPendingLanHttp, c as loadTlsCert, d as collectCertIdentity, f as CA_VALIDITY_DAYS, g as evaluateExistingCert, h as SERVER_AUTH_OID, i as writeExtraSans, l as reissueTlsLeaf, m as MAX_LEAF_VALIDITY_DAYS, n as readTlsAccessStatus, o as validateUploadedTls, p as LEAF_RENEWAL_WINDOW_DAYS, r as readTlsMode, s as ensureTlsCert, t as readExtraSans, u as CA_COMMON_NAME, v as allFamiliesListenHost, x as closeLanHttp, y as applyLanHttp } from "./tls-DTlVWwAI.mjs";
33
- import { $ as CapRouteError, $n as CAP_ACTION_UNLABELLED, $t as RUNNER_HEAP_WATCH_INTERVAL_MS, A as resolveHwAccel, An as OUTBOUND_QUEUE_COOLDOWN_MS, At as serializeTypedArrays, B as udsChildLogToWorkerEntry, Bn as SOCKET_QUEUE_TOP_N, Bt as createAddonPeerBytesFacility, C as getBrokerEventBus, Cn as DECISIVE_HEAP_SPACES, Ct as NATIVE_PROVIDER_SERVICE_INFIX, D as subscribePassthrough, Dn as heapSpaceField, Dt as capServiceName, E as setNodeEventInterest, En as formatHeapSpaces, Et as capBareAction, F as ipcParentLink, Fn as MESH_QUEUE_TOP_N, Ft as installManifestNativeDeps, G as UDS_NO_ROUTE_PREFIX, Gn as readSocketQueues, Gt as HEAP_RECLAIM_TRIGGER_MB, H as createUdsLoggerWithControl, Hn as createSocketPlaneReader, Ht as createAddonDataPlaneFacility, I as localProviderLink, In as createMeshQueueReader, It as resolveAddonClass, J as answerClaimedGetStatus, Jn as recordSocketFrame, Jt as HUB_MAIN_HEAP_WATCH_LABEL, K as afterWorkerOnlineAnnounce, Kn as EMPTY_SOCKET_DIRECTION, Kt as HEAP_WATCH_INTERVAL_MS, L as createParentUnownedCallHandler, Ln as formatMeshQueue, Lt as buildNpmChildEnv, M as brokerTransportLink, Mn as OUTBOUND_QUEUE_THRESHOLD_BYTES, Mt as CapabilityHandle, N as buildLinkChain, Nn as createOutboundQueueGate, Nt as CapabilityUnavailableError, O as AddonDepsManager, On as readHeapSpaces, Ot as parseCapAction, P as deviceCapResolverLink, Pn as formatOutboundQueueVerdict, Pt as copyBundledNativeModules, Q as CapRouteResolver, Qn as CAP_ACTION_OVERFLOW_LABEL, Qt as RSS_BUDGET_RELEASE_RATIO, R as createUdsEventBridge, Rn as EMPTY_SOCKET_PLANE_BASELINE, Rt as resolveNpmInvocation, S as clusterEventTopic, Sn as isArrayBufferCensusReport, St as validateProviderRegistrations, T as registerEventBusService, Tn as emitHeapDiagnosticReport, Tt as capActionSuffix, U as LocalChildClient, Un as diffSocketPlane, Ut as HEAP_RECLAIM_MIN_INTERVAL_MS, V as createUdsLogger, Vn as createSocketPlaneMeter, Vt as hostNodeIdOf, W as LocalChildRegistry, Wn as formatSocketPlane, Wt as HEAP_RECLAIM_STEADY_STATE_INTERVAL_MS, X as AGENT_CAP_FWD_ACTION, Xn as socketDirectionBytes, Xt as HUB_RSS_BUDGET_ENV, Y as deviceOfGetStatus, Yn as sampleSocketDirection, Yt as HUB_MAIN_RSS_BUDGET_MB, Z as AGENT_CAP_FWD_SERVICE, Zn as socketDirectionMessages, Zt as RSS_BUDGET_REANNOUNCE_MIN_MS, _ as getWorkerDeviceRegistry, _n as ARRAY_BUFFER_CENSUS_THRESHOLD_MB, a as reapProcessGroup, an as createV8Reclaimer, ar as EVENT_PLANE_TOP_N, at as __resetCapUsageRegistryForTests, b as setHubConnected, bn as createInspectorArrayBufferCensus, c as runnerOwnsProcessGroup, cn as nextRssBudgetState, cr as diffEventPlane, ct as UdsLocalTransportClient, d as summarizeMembers, dn as shouldReclaim, dt as PeerAnsweredError, en as RUNNER_RSS_BUDGET_ENV, er as EMPTY_CAP_ACTION_READING, et as classifyCapRoute, f as installManifestSystemDeps, fn as startHeapWatch, ft as localEndpointPath, g as createUdsAddonContext, gn as ARRAY_BUFFER_CENSUS_SUSTAIN_MS, gt as createBrokerDeviceManagerApi, h as createAddonContext, hn as ARRAY_BUFFER_CENSUS_COOLDOWN_MS, ht as buildNativeCapProxy, in as createLoopDelayMeter, ir as diffCapActionCensus, it as PARENT_ROUTED_PROVIDER_ADDON_ID, j as brokerCallForCap, jn as OUTBOUND_QUEUE_SUSTAIN_MS, jt as DeviceRegistry, k as createKernelHwAccel, kn as selectReportedSpaces, kt as deserializeTypedArrays, l as signalAllRunnerGroups, ln as parseRssBudgetMb, lr as formatEventPlane, lt as UdsLocalTransportServer, m as adaptBrokerToCluster, mn as strandedMb, mt as encodeFrame, nn as buildHeapSample, nr as capActionLabel, nt as readMoleculerFanoutMode, o as registerRunnerGroup, on as describeRss, or as createEventPlaneMeter, ot as getCapUsageRegistry, p as installManifestPythonDeps, pn as startRunnerHeapWatch, pt as FrameDecoder, q as GET_STATUS_METHOD, qn as createSocketDirectionCounters, qt as HEAP_WATCH_WARN_RATIO, r as defaultProcessGroupOps, rn as createDeferredHeapWatchSink, rr as createCapActionCensus, rt as CapUsageRegistry, s as releaseRunnerGroup, sn as hubMainRssBudget, sr as createEventPlaneReader, st as createLocalTransport, t as CAP_METHOD_NOT_IMPLEMENTED, tn as ZERO_LOOP_DELAY, tr as MAX_CAP_ACTIONS_PER_PEER, tt as callWithServiceDiscovery, un as reclaimIntervalMs, ut as SocketChannel, v as getOrInitReadinessRegistry, vn as ARRAY_BUFFER_RELEASE_MIN_DROP_RATIO, w as getMoleculerEventStats, wn as HEAP_SPACE_REPORT_MIN_MB, wt as capActionName, x as EVENT_TOPIC_PREFIX, xn as formatArrayBufferCensus, xt as createAddonService, y as getOrInitReadinessRegistryForClient, yn as createArrayBufferCensusGate, yt as mountNativeCapService, z as createUdsEventBus, zn as SOCKET_PLANE_TOP_N, zt as runNpm } from "./child-cap-dispatch-B2N_gWV-.mjs";
33
+ import { $ as CapRouteError, $n as CAP_ACTION_UNLABELLED, $t as RUNNER_HEAP_WATCH_INTERVAL_MS, A as resolveHwAccel, An as OUTBOUND_QUEUE_COOLDOWN_MS, At as serializeTypedArrays, B as udsChildLogToWorkerEntry, Bn as SOCKET_QUEUE_TOP_N, Bt as createAddonPeerBytesFacility, C as getBrokerEventBus, Cn as DECISIVE_HEAP_SPACES, Ct as NATIVE_PROVIDER_SERVICE_INFIX, D as subscribePassthrough, Dn as heapSpaceField, Dt as capServiceName, E as setNodeEventInterest, En as formatHeapSpaces, Et as capBareAction, F as ipcParentLink, Fn as MESH_QUEUE_TOP_N, Ft as installManifestNativeDeps, G as UDS_NO_ROUTE_PREFIX, Gn as readSocketQueues, Gt as HEAP_RECLAIM_TRIGGER_MB, H as createUdsLoggerWithControl, Hn as createSocketPlaneReader, Ht as createAddonDataPlaneFacility, I as localProviderLink, In as createMeshQueueReader, It as resolveAddonClass, J as answerClaimedGetStatus, Jn as recordSocketFrame, Jt as HUB_MAIN_HEAP_WATCH_LABEL, K as afterWorkerOnlineAnnounce, Kn as EMPTY_SOCKET_DIRECTION, Kt as HEAP_WATCH_INTERVAL_MS, L as createParentUnownedCallHandler, Ln as formatMeshQueue, Lt as buildNpmChildEnv, M as brokerTransportLink, Mn as OUTBOUND_QUEUE_THRESHOLD_BYTES, Mt as CapabilityHandle, N as buildLinkChain, Nn as createOutboundQueueGate, Nt as CapabilityUnavailableError, O as AddonDepsManager, On as readHeapSpaces, Ot as parseCapAction, P as deviceCapResolverLink, Pn as formatOutboundQueueVerdict, Pt as copyBundledNativeModules, Q as CapRouteResolver, Qn as CAP_ACTION_OVERFLOW_LABEL, Qt as RSS_BUDGET_RELEASE_RATIO, R as createUdsEventBridge, Rn as EMPTY_SOCKET_PLANE_BASELINE, Rt as resolveNpmInvocation, S as clusterEventTopic, Sn as isArrayBufferCensusReport, St as validateProviderRegistrations, T as registerEventBusService, Tn as emitHeapDiagnosticReport, Tt as capActionSuffix, U as LocalChildClient, Un as diffSocketPlane, Ut as HEAP_RECLAIM_MIN_INTERVAL_MS, V as createUdsLogger, Vn as createSocketPlaneMeter, Vt as hostNodeIdOf, W as LocalChildRegistry, Wn as formatSocketPlane, Wt as HEAP_RECLAIM_STEADY_STATE_INTERVAL_MS, X as AGENT_CAP_FWD_ACTION, Xn as socketDirectionBytes, Xt as HUB_RSS_BUDGET_ENV, Y as deviceOfGetStatus, Yn as sampleSocketDirection, Yt as HUB_MAIN_RSS_BUDGET_MB, Z as AGENT_CAP_FWD_SERVICE, Zn as socketDirectionMessages, Zt as RSS_BUDGET_REANNOUNCE_MIN_MS, _ as getWorkerDeviceRegistry, _n as ARRAY_BUFFER_CENSUS_THRESHOLD_MB, a as reapProcessGroup, an as createV8Reclaimer, ar as EVENT_PLANE_TOP_N, at as __resetCapUsageRegistryForTests, b as setHubConnected, bn as createInspectorArrayBufferCensus, c as runnerOwnsProcessGroup, cn as nextRssBudgetState, cr as diffEventPlane, ct as UdsLocalTransportClient, d as summarizeMembers, dn as shouldReclaim, dt as PeerAnsweredError, en as RUNNER_RSS_BUDGET_ENV, er as EMPTY_CAP_ACTION_READING, et as classifyCapRoute, f as installManifestSystemDeps, fn as startHeapWatch, ft as localEndpointPath, g as createUdsAddonContext, gn as ARRAY_BUFFER_CENSUS_SUSTAIN_MS, gt as createBrokerDeviceManagerApi, h as createAddonContext, hn as ARRAY_BUFFER_CENSUS_COOLDOWN_MS, ht as buildNativeCapProxy, in as createLoopDelayMeter, ir as diffCapActionCensus, it as PARENT_ROUTED_PROVIDER_ADDON_ID, j as brokerCallForCap, jn as OUTBOUND_QUEUE_SUSTAIN_MS, jt as DeviceRegistry, k as createKernelHwAccel, kn as selectReportedSpaces, kt as deserializeTypedArrays, l as signalAllRunnerGroups, ln as parseRssBudgetMb, lr as formatEventPlane, lt as UdsLocalTransportServer, m as adaptBrokerToCluster, mn as strandedMb, mt as encodeFrame, nn as buildHeapSample, nr as capActionLabel, nt as readMoleculerFanoutMode, o as registerRunnerGroup, on as describeRss, or as createEventPlaneMeter, ot as getCapUsageRegistry, p as installManifestPythonDeps, pn as startRunnerHeapWatch, pt as FrameDecoder, q as GET_STATUS_METHOD, qn as createSocketDirectionCounters, qt as HEAP_WATCH_WARN_RATIO, r as defaultProcessGroupOps, rn as createDeferredHeapWatchSink, rr as createCapActionCensus, rt as CapUsageRegistry, s as releaseRunnerGroup, sn as hubMainRssBudget, sr as createEventPlaneReader, st as createLocalTransport, t as CAP_METHOD_NOT_IMPLEMENTED, tn as ZERO_LOOP_DELAY, tr as MAX_CAP_ACTIONS_PER_PEER, tt as callWithServiceDiscovery, un as reclaimIntervalMs, ut as SocketChannel, v as getOrInitReadinessRegistry, vn as ARRAY_BUFFER_RELEASE_MIN_DROP_RATIO, w as getMoleculerEventStats, wn as HEAP_SPACE_REPORT_MIN_MB, wt as capActionName, x as EVENT_TOPIC_PREFIX, xn as formatArrayBufferCensus, xt as createAddonService, y as getOrInitReadinessRegistryForClient, yn as createArrayBufferCensusGate, yt as mountNativeCapService, z as createUdsEventBus, zn as SOCKET_PLANE_TOP_N, zt as runNpm } from "./child-cap-dispatch-zEt3rqy-.mjs";
34
34
  import { n as getSinglePidStats, t as getPidStats } from "./resource-monitor-B2WZ8_q9.mjs";
35
35
  import { t as CustomActionRegistry } from "./custom-action-registry-B4Cf4O_X.mjs";
36
36
  import { z } from "zod";
@@ -1,4 +1,4 @@
1
- const require_dist = require("./dist-BgV_QADz.js");
1
+ const require_dist = require("./dist-DZKm2EOp.js");
2
2
  //#region src/builtins/sqlite-storage/retired-settings-keys.ts
3
3
  /**
4
4
  * Is THIS node the one whose settings store is the cluster's authority?
@@ -1,4 +1,4 @@
1
- import { nr as asJsonObject } from "./dist-nUn3vto_.mjs";
1
+ import { nr as asJsonObject } from "./dist-Di0aX2zy.mjs";
2
2
  //#region src/builtins/sqlite-storage/retired-settings-keys.ts
3
3
  /**
4
4
  * Is THIS node the one whose settings store is the cluster's authority?
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/system",
3
- "version": "1.2.348",
3
+ "version": "1.2.350",
4
4
  "description": "Core addon for CamStack — builtins, pipeline, process management, auth, logging, events",
5
5
  "keywords": [
6
6
  "camstack",