@camstack/addon-osd-manager 0.1.137 → 0.1.138

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 (18) hide show
  1. package/dist/{MotionZonesSettings-B4onRgUN.mjs → MotionZonesSettings-DAj9BKEa.mjs} +2 -2
  2. package/dist/{PrivacyMaskSettings-15mTDT2b.mjs → PrivacyMaskSettings-vXcp9vB2.mjs} +4 -4
  3. package/dist/{SceneMonitorEditor-DFU0p0mQ.mjs → SceneMonitorEditor-DT_0sAwx.mjs} +3 -3
  4. package/dist/_stub.js +10 -10
  5. package/dist/{_virtual_mf-localSharedImportMap___mfe_internal__addon_osd_manager_page-CGBPavbq.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_osd_manager_page-CMdv28lH.mjs} +3 -3
  6. package/dist/_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-CsJH8KoP.mjs +26 -0
  7. package/dist/{hostInit-jIJC0_ID.mjs → hostInit-VlmwYq1r.mjs} +2 -2
  8. package/dist/index.js +244 -17
  9. package/dist/index.mjs +244 -17
  10. package/dist/{player-overlays-B_ERqzqj.mjs → player-overlays-C-UoK7-y.mjs} +1 -1
  11. package/dist/remoteEntry.js +1 -1
  12. package/dist/{responsive-BOpuh3Lr.mjs → responsive--rRptNaI.mjs} +1 -1
  13. package/dist/{scene-monitor-copy-D5o6-VNM.mjs → scene-monitor-copy-CODV9mw1.mjs} +1 -1
  14. package/dist/{square-oUeZZbza.mjs → square-BZnt2TOu.mjs} +1 -1
  15. package/dist/{trash-2-BrFLAkuW.mjs → trash-2-C1vqC31x.mjs} +1 -1
  16. package/dist/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_osd_manager_page__remoteEntry_js-C-OUB_74.mjs → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_osd_manager_page__remoteEntry_js-D-_aQIjJ.mjs} +1 -1
  17. package/package.json +1 -1
  18. package/dist/_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-CVM3jGoe.mjs +0 -26
package/dist/index.js CHANGED
@@ -16742,18 +16742,30 @@ var LlmErrorCodeSchema = _enum([
16742
16742
  "budget-exceeded",
16743
16743
  "adapter-error"
16744
16744
  ]);
16745
- var LlmGenerateResultSchema = discriminatedUnion("ok", [object({
16745
+ var LlmGenerateOkSchema = object({
16746
16746
  ok: literal(true),
16747
16747
  text: string(),
16748
16748
  model: string(),
16749
16749
  usage: LlmUsageSchema,
16750
16750
  truncated: boolean(),
16751
16751
  latencyMs: number()
16752
- }), object({
16752
+ });
16753
+ /**
16754
+ * WHO refused, on a `refusal`. `guardrail` = a safety filter in front of the
16755
+ * model rejected the request before it answered (Apple Foundation Models
16756
+ * refuses surveillance-framed prompts in 0.1 s); `model` = the model itself
16757
+ * declined. They are different faults: a guardrail refusal is a property of
16758
+ * the BACKEND, so the provider falls back to the next profile; a model refusal
16759
+ * is an answer. Absent on every other code, and on a refusal a wire cannot
16760
+ * attribute.
16761
+ */
16762
+ var LlmRefusalSourceSchema = _enum(["guardrail", "model"]);
16763
+ var LlmGenerateResultSchema = discriminatedUnion("ok", [LlmGenerateOkSchema, object({
16753
16764
  ok: literal(false),
16754
16765
  code: LlmErrorCodeSchema,
16755
16766
  message: string(),
16756
- retryAfterMs: number().optional()
16767
+ retryAfterMs: number().optional(),
16768
+ refusalSource: LlmRefusalSourceSchema.optional()
16757
16769
  })]);
16758
16770
  /**
16759
16771
  * `Uint8Array` is the sanctioned binary convention — superjson + the UDS
@@ -16983,6 +16995,77 @@ var LlmRuntimeDiskUsageSchema = object({
16983
16995
  modelsBytes: number(),
16984
16996
  freeBytes: number().optional()
16985
16997
  });
16998
+ var LlmRuntimeCompleteInputSchema = LlmGenerateBaseInputSchema.extend({
16999
+ images: array(LlmImageSchema).optional(),
17000
+ runtime: ManagedRuntimeConfigSchema,
17001
+ /** The managed profile's timeout, threaded by the hub provider. */
17002
+ timeoutMs: number().int().positive().optional()
17003
+ });
17004
+ /**
17005
+ * Why Apple Foundation Models cannot run on a node that has it in principle.
17006
+ * The first three are Apple's own `UnavailableReason`s, verbatim; the rest are
17007
+ * ours: the OS predates the framework (macOS < 26), the helper binary is not
17008
+ * in the installed addon, or it crashed past the respawn bound.
17009
+ */
17010
+ var AppleFmUnavailableReasonSchema = _enum([
17011
+ "deviceNotEligible",
17012
+ "appleIntelligenceNotEnabled",
17013
+ "modelNotReady",
17014
+ "osTooOld",
17015
+ "helperMissing",
17016
+ "helperCrashed"
17017
+ ]);
17018
+ /**
17019
+ * Apple Foundation Models on ONE node — four states, never a boolean (D315).
17020
+ *
17021
+ * - `available` — the helper probed it; what it CAN do is reported
17022
+ * here (`imageInput`, `contextSize`, languages),
17023
+ * never typed by an operator.
17024
+ * - `unavailable` — a known absence, with the reason to act on.
17025
+ * - `unsupported-platform` — not a Mac; there is nothing to enable.
17026
+ * - `unknown` — the probe did not answer (not yet run, timed
17027
+ * out, helper crashed mid-probe). A failed
17028
+ * measurement is NEVER `unavailable` (D393).
17029
+ */
17030
+ var AppleFmAvailabilitySchema = discriminatedUnion("state", [
17031
+ object({
17032
+ state: literal("available"),
17033
+ osVersion: string(),
17034
+ /** Tokens, as the framework reports it. Read at runtime, never assumed. */
17035
+ contextSize: number().int().positive(),
17036
+ /** BCP-47-ish tags (`it-IT`) of the languages the model supports. */
17037
+ languages: array(string()),
17038
+ /** Whether prompts may carry images. `false` on a macOS 26 build. */
17039
+ imageInput: boolean()
17040
+ }),
17041
+ object({
17042
+ state: literal("unavailable"),
17043
+ reason: AppleFmUnavailableReasonSchema,
17044
+ osVersion: string().nullable(),
17045
+ detail: string()
17046
+ }),
17047
+ object({
17048
+ state: literal("unsupported-platform"),
17049
+ platform: string()
17050
+ }),
17051
+ object({
17052
+ state: literal("unknown"),
17053
+ error: string()
17054
+ })
17055
+ ]);
17056
+ /**
17057
+ * A generation on the node's Apple Foundation Models helper. A separate verb
17058
+ * from `complete`, whose `runtime` is a llama.cpp config: overloading it would
17059
+ * drag a GGUF model reference into a backend that has none. `images` is part
17060
+ * of the contract so vision needs no cap change later; a node whose model has
17061
+ * no image input REFUSES them (`unavailable`), never drops them.
17062
+ */
17063
+ var LlmRuntimeAppleCompleteInputSchema = LlmGenerateBaseInputSchema.extend({
17064
+ images: array(LlmImageSchema).optional(),
17065
+ /** The profile's timeout, threaded by the hub provider. */
17066
+ timeoutMs: number().int().positive().optional()
17067
+ });
17068
+ var LlmRuntimeCancelInputSchema = object({ requestId: string() });
16986
17069
  var llmRuntimeCapability = {
16987
17070
  name: "llm-runtime",
16988
17071
  scope: "system",
@@ -17002,12 +17085,7 @@ var llmRuntimeCapability = {
17002
17085
  * nothing; the public `llm` cap (which end users and non-admin sessions
17003
17086
  * legitimately call for chat/generation) is untouched.
17004
17087
  */
17005
- complete: method(LlmGenerateBaseInputSchema.extend({
17006
- images: array(LlmImageSchema).optional(),
17007
- runtime: ManagedRuntimeConfigSchema,
17008
- /** The managed profile's timeout, threaded by the hub provider. */
17009
- timeoutMs: number().int().positive().optional()
17010
- }), LlmGenerateResultSchema, {
17088
+ complete: method(LlmRuntimeCompleteInputSchema, LlmGenerateResultSchema, {
17011
17089
  kind: "mutation",
17012
17090
  auth: "admin",
17013
17091
  timeoutMs: AI_CAP_TRANSPORT_TIMEOUT_MS
@@ -17032,7 +17110,28 @@ var llmRuntimeCapability = {
17032
17110
  auth: "admin"
17033
17111
  }),
17034
17112
  listLocalModels: method(object({}), array(LlmNodeModelSchema), { auth: "admin" }),
17035
- getDiskUsage: method(object({}), LlmRuntimeDiskUsageSchema, { auth: "admin" })
17113
+ getDiskUsage: method(object({}), LlmRuntimeDiskUsageSchema, { auth: "admin" }),
17114
+ /**
17115
+ * Stop a node-side generation started with a `requestId` — `complete` or
17116
+ * `completeApple`. The hub's `llm.cancel` forwards here with the same
17117
+ * nodePin the generation took; before this existed a cancelled
17118
+ * managed-local generation kept running on the node to its own timeout.
17119
+ * Idempotent: an unknown or finished id is a no-op.
17120
+ */
17121
+ cancel: method(LlmRuntimeCancelInputSchema, _void(), {
17122
+ kind: "mutation",
17123
+ auth: "admin"
17124
+ }),
17125
+ /**
17126
+ * This node's Apple Foundation Models state, answered from a mirror the
17127
+ * node refreshes in the background — it never waits on a probe.
17128
+ */
17129
+ appleAvailability: method(object({}), AppleFmAvailabilitySchema, { auth: "admin" }),
17130
+ completeApple: method(LlmRuntimeAppleCompleteInputSchema, LlmGenerateResultSchema, {
17131
+ kind: "mutation",
17132
+ auth: "admin",
17133
+ timeoutMs: AI_CAP_TRANSPORT_TIMEOUT_MS
17134
+ })
17036
17135
  }
17037
17136
  };
17038
17137
  /**
@@ -17051,7 +17150,8 @@ var LlmProfileKindSchema = _enum([
17051
17150
  "openai",
17052
17151
  "anthropic",
17053
17152
  "google",
17054
- "managed-local"
17153
+ "managed-local",
17154
+ "apple-foundation"
17055
17155
  ]);
17056
17156
  var LlmProfileSchema = object({
17057
17157
  id: string(),
@@ -17109,7 +17209,14 @@ var LlmProfileSchema = object({
17109
17209
  toolsEnabled: boolean().default(false),
17110
17210
  extraHeaders: record(string(), string()).optional(),
17111
17211
  /** kind === 'managed-local' only (spec §4). */
17112
- runtime: ManagedRuntimeConfigSchema.optional()
17212
+ runtime: ManagedRuntimeConfigSchema.optional(),
17213
+ /**
17214
+ * kind === 'apple-foundation' only: WHERE it runs — the only thing there is
17215
+ * to configure (no key, no URL, no download; `model` is `apple-system`).
17216
+ * `supportsVision` on such a row is stamped by the provider from the node's
17217
+ * reported `imageInput`, never taken from the operator (D62).
17218
+ */
17219
+ appleFoundation: object({ nodeId: string() }).optional()
17113
17220
  });
17114
17221
  /** ConfigUISchema tree passed through untyped on the wire (the
17115
17222
  * notification-output `ConfigSchemaPassthrough` precedent at
@@ -17191,7 +17298,9 @@ var LlmRuntimeNodeSchema = object({
17191
17298
  reachable: boolean(),
17192
17299
  status: LlmRuntimeStatusSchema.optional(),
17193
17300
  disk: LlmRuntimeDiskUsageSchema.optional(),
17194
- error: string().optional()
17301
+ error: string().optional(),
17302
+ /** Absent = the node did not answer the question (render as unknown). */
17303
+ apple: AppleFmAvailabilitySchema.optional()
17195
17304
  });
17196
17305
  var GenerateVisionInputSchema = LlmGenerateBaseInputSchema.extend({ images: array(LlmImageSchema).min(1) });
17197
17306
  var ProfileRefInputSchema = object({
@@ -20456,9 +20565,29 @@ var NcTestResultSchema = object({
20456
20565
  className: string().optional(),
20457
20566
  label: string().optional()
20458
20567
  });
20459
- /** The five rule kinds, as data. `NcRuleKind` in `notification/rule-kinds.ts`
20460
- * is the same union; the template-vars spec pins the two together. */
20568
+ /** The rule kinds, as data. `NcRuleKind` in `notification/rule-kinds.ts` is the
20569
+ * same union; the template-vars spec pins the two together. `mixed` is DERIVED
20570
+ * (a stored system rule whose kinds span families, D637) and never authored. */
20461
20571
  var NcRuleKindSchema = _enum([
20572
+ "detection",
20573
+ "sensor",
20574
+ "occupancy",
20575
+ "sound",
20576
+ "device-events",
20577
+ "system",
20578
+ "alarm",
20579
+ "mixed"
20580
+ ]);
20581
+ /**
20582
+ * The kinds a SERVED template-variable descriptor may name: the five that
20583
+ * existed before D637, frozen. `getTemplateCatalog` ships `kinds` to every
20584
+ * installed viewer, and a viewer at `@camstack/types` 1.2.25x parses them with a
20585
+ * strict five-member enum — one `device-events` in one descriptor fails the
20586
+ * whole catalog parse. So the WIRE says `system`, and the MATCH widens it:
20587
+ * `templateVarKindApplies` reads a `system` descriptor as applying to every
20588
+ * system rule kind (`device-events`, `system`, `alarm`, `mixed`).
20589
+ */
20590
+ var NcTemplateVarKindSchema = _enum([
20462
20591
  "detection",
20463
20592
  "sensor",
20464
20593
  "occupancy",
@@ -20496,7 +20625,7 @@ var NcTemplateVarGroupSchema = _enum([
20496
20625
  *
20497
20626
  * `families` / `fields` / `kinds` / `deliveries` / `systemEventKinds` say WHERE
20498
20627
  * it has a value; absent = no restriction on that axis. `systemEventKinds` is
20499
- * read only for a `system` rule. `dynamic` declares a FAMILY of names
20628
+ * read only for a system-event rule (any family, or `mixed`). `dynamic` declares a FAMILY of names
20500
20629
  * (`count_<class>`): the descriptor's `name` is the example member.
20501
20630
  */
20502
20631
  var NcTemplateVarDescriptorSchema = object({
@@ -20507,7 +20636,7 @@ var NcTemplateVarDescriptorSchema = object({
20507
20636
  group: NcTemplateVarGroupSchema,
20508
20637
  families: array(NcTemplateFamilySchema).min(1),
20509
20638
  fields: array(NcTemplateFieldSchema).optional(),
20510
- kinds: array(NcRuleKindSchema).optional(),
20639
+ kinds: array(NcTemplateVarKindSchema).optional(),
20511
20640
  deliveries: array(NcDeliverySchema).optional(),
20512
20641
  systemEventKinds: array(NcSystemEventKindSchema).optional(),
20513
20642
  dynamic: object({
@@ -36553,6 +36682,29 @@ var RenameNodeResultSchema = object({
36553
36682
  name: string()
36554
36683
  });
36555
36684
  /**
36685
+ * The cheap node list. A consumer's rule for a STORED node id (a rule's
36686
+ * `nodeIds`) that is missing from `nodes`, whatever `complete` says: render it
36687
+ * as a removable chip labelled unknown, never drop it (D49). Even a complete
36688
+ * list omits a node that joined and left between two history captures, so a
36689
+ * missing id means "not known to the hub", never "removed". Only the operator
36690
+ * removes it.
36691
+ *
36692
+ * `complete` changes only the WORDING: `false` = no history read has ever
36693
+ * answered, so the list may be missing offline nodes the hub does know (D315).
36694
+ *
36695
+ * `name` is the history row's name (≤ 30 s behind a rename), or the id when
36696
+ * the history has none.
36697
+ */
36698
+ var NodeDirectorySchema = object({
36699
+ nodes: array(object({
36700
+ id: string(),
36701
+ name: string(),
36702
+ isHub: boolean(),
36703
+ isOnline: boolean()
36704
+ })).readonly(),
36705
+ complete: boolean()
36706
+ });
36707
+ /**
36556
36708
  * `nodes` is a **hub-centric** cluster-management cap: the hub hosts
36557
36709
  * the single provider and every per-node method (`getNodeAddons`,
36558
36710
  * `restartProcess`, `restartNode`, `undeployAddon`, …) takes `nodeId`
@@ -36571,6 +36723,12 @@ var nodesCapability = {
36571
36723
  nodeIdMode: "data",
36572
36724
  methods: {
36573
36725
  topology: method(_void(), array(TopologyNodeSchema).readonly(), { auth: "admin" }),
36726
+ /**
36727
+ * The cheap node list for pickers (D637): the hub's in-memory registry plus
36728
+ * the durable node history, no per-node RPC. `complete: false` when the
36729
+ * history could not be read.
36730
+ */
36731
+ directory: method(_void(), NodeDirectorySchema, { auth: "admin" }),
36574
36732
  deployAddon: method(NodeAddonInputSchema, SuccessSchema, {
36575
36733
  kind: "mutation",
36576
36734
  auth: "admin"
@@ -47071,12 +47229,30 @@ Object.freeze({
47071
47229
  addonId: null,
47072
47230
  access: "create"
47073
47231
  },
47232
+ "llmRuntime.appleAvailability": {
47233
+ capName: "llm-runtime",
47234
+ capScope: "system",
47235
+ addonId: null,
47236
+ access: "view"
47237
+ },
47238
+ "llmRuntime.cancel": {
47239
+ capName: "llm-runtime",
47240
+ capScope: "system",
47241
+ addonId: null,
47242
+ access: "create"
47243
+ },
47074
47244
  "llmRuntime.complete": {
47075
47245
  capName: "llm-runtime",
47076
47246
  capScope: "system",
47077
47247
  addonId: null,
47078
47248
  access: "create"
47079
47249
  },
47250
+ "llmRuntime.completeApple": {
47251
+ capName: "llm-runtime",
47252
+ capScope: "system",
47253
+ addonId: null,
47254
+ access: "create"
47255
+ },
47080
47256
  "llmRuntime.deleteModel": {
47081
47257
  capName: "llm-runtime",
47082
47258
  capScope: "system",
@@ -47749,6 +47925,12 @@ Object.freeze({
47749
47925
  addonId: null,
47750
47926
  access: "create"
47751
47927
  },
47928
+ "nodes.directory": {
47929
+ capName: "nodes",
47930
+ capScope: "system",
47931
+ addonId: null,
47932
+ access: "view"
47933
+ },
47752
47934
  "nodes.executeQuery": {
47753
47935
  capName: "nodes",
47754
47936
  capScope: "system",
@@ -53513,6 +53695,51 @@ var NC_AUDIO_DEFAULTS = {
53513
53695
  samplingSeconds: 10
53514
53696
  };
53515
53697
  new Set(["devices", "classes"]);
53698
+ /** Every filter, for the callers that must cover all four (guards, tests). */
53699
+ var NC_SYSTEM_EVENT_FILTER_KEYS = [
53700
+ "deviceIds",
53701
+ "deviceTypes",
53702
+ "nodeIds",
53703
+ "packageNames"
53704
+ ];
53705
+ new Map(Object.entries({
53706
+ "device-online": "device-events",
53707
+ "device-offline": "device-events",
53708
+ "device-disabled": "device-events",
53709
+ "device-enabled": "device-events",
53710
+ "device-battery-low": "device-events",
53711
+ "device-battery-normal": "device-events",
53712
+ "device-consumable-low": "device-events",
53713
+ "device-consumable-normal": "device-events",
53714
+ "stream-online": "device-events",
53715
+ "stream-offline": "device-events",
53716
+ "detection-blind": "device-events",
53717
+ "node-online": "system",
53718
+ "node-offline": "system",
53719
+ "node-inference-unavailable": "system",
53720
+ "addon-crash-loop": "system",
53721
+ "addon-update-available": "system",
53722
+ "addon-updated": "system",
53723
+ "server-update-available": "system",
53724
+ "server-updated": "system",
53725
+ "wrapper-update-available": "system",
53726
+ "backup-completed": "system",
53727
+ "export-completed": "system",
53728
+ "alarm-triggered": "alarm",
53729
+ "alarm-armed": "alarm",
53730
+ "alarm-disarmed": "alarm",
53731
+ "alarm-arming": "alarm",
53732
+ "alarm-arm-refused": "alarm",
53733
+ "alarm-pending": "alarm",
53734
+ "alarm-rearmed": "alarm",
53735
+ "alarm-sensor-bypass": "alarm",
53736
+ "alarm-check-failed": "alarm",
53737
+ "camera-online": null,
53738
+ "camera-offline": null,
53739
+ "camera-disabled": null,
53740
+ "camera-enabled": null
53741
+ }));
53742
+ [...NC_SYSTEM_EVENT_FILTER_KEYS];
53516
53743
  NC_AUDIO_DEFAULTS.hitPercent, NC_AUDIO_DEFAULTS.samplingSeconds;
53517
53744
  var WEEKDAY_TO_DAY = {
53518
53745
  Sun: 0,