@camstack/types 1.1.43 → 1.1.44

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 (36) hide show
  1. package/dist/addon.js +1 -1
  2. package/dist/addon.mjs +1 -1
  3. package/dist/capabilities/advanced-notifier.cap.d.ts +4 -0
  4. package/dist/capabilities/cap-router-predicates.d.ts +17 -0
  5. package/dist/capabilities/capability-definition.d.ts +1 -1
  6. package/dist/capabilities/custom-model-registry.cap.d.ts +20 -0
  7. package/dist/capabilities/index.d.ts +13 -6
  8. package/dist/capabilities/llm-runtime.cap.d.ts +286 -0
  9. package/dist/capabilities/llm-shared.d.ts +104 -0
  10. package/dist/capabilities/llm.cap.d.ts +596 -0
  11. package/dist/capabilities/login-method.cap.d.ts +53 -7
  12. package/dist/capabilities/model-convert.cap.d.ts +11 -0
  13. package/dist/capabilities/model-distributor.cap.d.ts +22 -0
  14. package/dist/capabilities/pipeline-analytics.cap.d.ts +101 -25
  15. package/dist/capabilities/pipeline-executor.cap.d.ts +22 -0
  16. package/dist/capabilities/pipeline-orchestrator.cap.d.ts +16 -0
  17. package/dist/capabilities/plate-gallery.cap.d.ts +114 -0
  18. package/dist/capabilities/platform-probe.cap.d.ts +1 -0
  19. package/dist/capabilities/scene-monitor.cap.d.ts +483 -0
  20. package/dist/enums/event-category.d.ts +33 -0
  21. package/dist/generated/addon-api.d.ts +2745 -647
  22. package/dist/generated/cap-status-types.d.ts +3 -1
  23. package/dist/generated/capability-router-map.d.ts +13 -4
  24. package/dist/generated/device-local-state.d.ts +3 -0
  25. package/dist/generated/device-proxy.d.ts +3 -0
  26. package/dist/generated/method-access-map.d.ts +1 -1
  27. package/dist/generated/provider-kind-map.d.ts +1 -1
  28. package/dist/generated/system-proxy.d.ts +3 -1
  29. package/dist/index.js +1135 -38
  30. package/dist/index.mjs +1103 -39
  31. package/dist/interfaces/advanced-notifier.d.ts +2 -0
  32. package/dist/interfaces/event-bus.d.ts +96 -1
  33. package/dist/{sleep-Baang_XW.mjs → sleep-DkhOVOjW.mjs} +47 -0
  34. package/dist/{sleep-DmvEGsRg.js → sleep-k6I1e98_.js} +47 -0
  35. package/dist/types/models.d.ts +33 -1
  36. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_sleep = require("./sleep-DmvEGsRg.js");
2
+ const require_sleep = require("./sleep-k6I1e98_.js");
3
3
  const require_err_msg = require("./err-msg-COpsHMw2.js");
4
4
  let zod = require("zod");
5
5
  //#region src/health/wiring-health.ts
@@ -69,7 +69,8 @@ var MODEL_FORMATS = [
69
69
  "coreml",
70
70
  "openvino",
71
71
  "tflite",
72
- "pt"
72
+ "pt",
73
+ "gguf"
73
74
  ];
74
75
  /**
75
76
  * Multi-file format payload.
@@ -113,7 +114,8 @@ var ModelFormatsSchema = zod.z.object({
113
114
  coreml: ModelFormatEntrySchema.optional(),
114
115
  openvino: ModelFormatEntrySchema.optional(),
115
116
  tflite: ModelFormatEntrySchema.optional(),
116
- pt: ModelFormatEntrySchema.optional()
117
+ pt: ModelFormatEntrySchema.optional(),
118
+ gguf: ModelFormatEntrySchema.optional()
117
119
  });
118
120
  /**
119
121
  * Variant-selector grouping axes. Shared by the full `ModelCatalogEntry` and by
@@ -7515,7 +7517,8 @@ var ModelFormatSchema$1 = zod.z.enum([
7515
7517
  "coreml",
7516
7518
  "openvino",
7517
7519
  "tflite",
7518
- "pt"
7520
+ "pt",
7521
+ "gguf"
7519
7522
  ]);
7520
7523
  var PipelineSlotSchema = zod.z.enum([
7521
7524
  "detector",
@@ -9713,6 +9716,169 @@ var ptzAutotrackCapability = {
9713
9716
  runtimeState: PtzAutotrackRuntimeStateSchema
9714
9717
  };
9715
9718
  //#endregion
9719
+ //#region src/capabilities/scene-monitor.cap.ts
9720
+ /**
9721
+ * scene-monitor — device-scoped reference-region state cap. An operator marks
9722
+ * a rect ROI on a camera frame and names one or more states; the engine
9723
+ * (pipeline-analytics, designated post-processing node) reports which state is
9724
+ * active on an ongoing basis. Two operator-selectable check modes share every-
9725
+ * thing except the comparator: `similarity` (CLIP cosine at the same ROI coords
9726
+ * vs condition-tagged references) and `llm` (vision-LLM judgment over the crop).
9727
+ *
9728
+ * D14 device-config archetype (`deviceConfig.ui.kind:'widget'`) — the framework
9729
+ * derives the device-detail contribution; the provider carries NO hand-written
9730
+ * settings-contribution methods. `status.kind:'push'` — the engine pushes on
9731
+ * every hysteresis flip / availability change; consumers never poll.
9732
+ */
9733
+ /** Extensible condition tag. Seeded 'day' | 'night'; open by design so more can
9734
+ * be added without a wire break (matching falls back to any-condition refs). */
9735
+ var SceneConditionSchema = zod.z.string();
9736
+ /** One captured reference — condition-tagged, model-version-gated. `embedding`
9737
+ * is `number[]` (Float32Array does NOT survive MsgPack/UDS). */
9738
+ var SceneReferenceSchema = zod.z.object({
9739
+ embedding: zod.z.array(zod.z.number()),
9740
+ modelId: zod.z.string(),
9741
+ condition: SceneConditionSchema,
9742
+ capturedAt: zod.z.number(),
9743
+ thumbnailMediaId: zod.z.string().optional()
9744
+ });
9745
+ var SceneMonitorStateSchema = zod.z.object({
9746
+ id: zod.z.string(),
9747
+ label: zod.z.string(),
9748
+ references: zod.z.array(SceneReferenceSchema),
9749
+ textPrompts: zod.z.array(zod.z.string()).optional(),
9750
+ referenceCount: zod.z.number(),
9751
+ currentlyMatched: zod.z.boolean()
9752
+ });
9753
+ /** Per-mode comparator params in a discriminated union so an `llm` scene never
9754
+ * carries similarity knobs and vice-versa. */
9755
+ var SceneCheckSchema = zod.z.discriminatedUnion("mode", [zod.z.object({
9756
+ mode: zod.z.literal("similarity"),
9757
+ threshold: zod.z.number().min(0).max(1),
9758
+ hysteresisCount: zod.z.number().int().positive()
9759
+ }), zod.z.object({
9760
+ mode: zod.z.literal("llm"),
9761
+ prompt: zod.z.string(),
9762
+ profileId: zod.z.string().optional(),
9763
+ hysteresisCount: zod.z.number().int().positive()
9764
+ })]);
9765
+ var SceneMonitorSchema = zod.z.object({
9766
+ id: zod.z.string(),
9767
+ label: zod.z.string(),
9768
+ roi: MaskRectShapeSchema,
9769
+ enabled: zod.z.boolean(),
9770
+ triggerMode: zod.z.enum([
9771
+ "periodic",
9772
+ "on-motion",
9773
+ "both"
9774
+ ]),
9775
+ checkIntervalSec: zod.z.number().optional(),
9776
+ check: SceneCheckSchema,
9777
+ states: zod.z.array(SceneMonitorStateSchema),
9778
+ currentStateId: zod.z.string().nullable(),
9779
+ lastCheckedAt: zod.z.number().nullable(),
9780
+ lastConfidence: zod.z.number().nullable(),
9781
+ currentCondition: SceneConditionSchema.nullable(),
9782
+ availability: zod.z.enum(["ok", "unavailable"]),
9783
+ unavailableReason: zod.z.string().nullable()
9784
+ });
9785
+ var SceneMonitorStatusSchema = zod.z.object({
9786
+ monitors: zod.z.array(SceneMonitorSchema),
9787
+ lastFetchedAt: zod.z.number()
9788
+ });
9789
+ var sceneMonitorCapability = {
9790
+ name: "scene-monitor",
9791
+ scope: "device",
9792
+ mode: "singleton",
9793
+ kind: "wrapper",
9794
+ defaultActive: true,
9795
+ deviceTypes: [require_sleep.DeviceType.Camera],
9796
+ deviceConfig: { ui: {
9797
+ kind: "widget",
9798
+ widgetId: "host/scene-monitor-editor",
9799
+ tab: "scenes",
9800
+ label: "Scenes"
9801
+ } },
9802
+ methods: {
9803
+ listScenes: require_sleep.method(zod.z.object({ deviceId: zod.z.number() }), SceneMonitorStatusSchema),
9804
+ createScene: require_sleep.method(zod.z.object({
9805
+ deviceId: zod.z.number(),
9806
+ label: zod.z.string(),
9807
+ roi: MaskRectShapeSchema,
9808
+ check: SceneCheckSchema,
9809
+ triggerMode: zod.z.enum([
9810
+ "periodic",
9811
+ "on-motion",
9812
+ "both"
9813
+ ]).optional(),
9814
+ checkIntervalSec: zod.z.number().optional()
9815
+ }), SceneMonitorSchema, {
9816
+ kind: "mutation",
9817
+ auth: "admin"
9818
+ }),
9819
+ updateScene: require_sleep.method(zod.z.object({
9820
+ deviceId: zod.z.number(),
9821
+ monitorId: zod.z.string(),
9822
+ patch: zod.z.object({
9823
+ label: zod.z.string().optional(),
9824
+ roi: MaskRectShapeSchema.optional(),
9825
+ enabled: zod.z.boolean().optional(),
9826
+ triggerMode: zod.z.enum([
9827
+ "periodic",
9828
+ "on-motion",
9829
+ "both"
9830
+ ]).optional(),
9831
+ checkIntervalSec: zod.z.number().optional(),
9832
+ check: SceneCheckSchema.optional()
9833
+ })
9834
+ }), zod.z.void(), {
9835
+ kind: "mutation",
9836
+ auth: "admin"
9837
+ }),
9838
+ deleteScene: require_sleep.method(zod.z.object({
9839
+ deviceId: zod.z.number(),
9840
+ monitorId: zod.z.string()
9841
+ }), zod.z.void(), {
9842
+ kind: "mutation",
9843
+ auth: "admin"
9844
+ }),
9845
+ captureReference: require_sleep.method(zod.z.object({
9846
+ deviceId: zod.z.number(),
9847
+ monitorId: zod.z.string(),
9848
+ stateId: zod.z.string().optional(),
9849
+ label: zod.z.string().optional(),
9850
+ condition: SceneConditionSchema.optional()
9851
+ }), zod.z.object({
9852
+ stateId: zod.z.string(),
9853
+ referenceCount: zod.z.number()
9854
+ }), {
9855
+ kind: "mutation",
9856
+ auth: "admin"
9857
+ }),
9858
+ deleteReference: require_sleep.method(zod.z.object({
9859
+ deviceId: zod.z.number(),
9860
+ monitorId: zod.z.string(),
9861
+ stateId: zod.z.string(),
9862
+ index: zod.z.number()
9863
+ }), zod.z.void(), {
9864
+ kind: "mutation",
9865
+ auth: "admin"
9866
+ }),
9867
+ recheckNow: require_sleep.method(zod.z.object({
9868
+ deviceId: zod.z.number(),
9869
+ monitorId: zod.z.string()
9870
+ }), zod.z.void(), {
9871
+ kind: "mutation",
9872
+ auth: "admin"
9873
+ })
9874
+ },
9875
+ status: {
9876
+ schema: SceneMonitorStatusSchema,
9877
+ kind: "push"
9878
+ },
9879
+ runtimeState: SceneMonitorStatusSchema
9880
+ };
9881
+ //#endregion
9716
9882
  //#region src/capabilities/script-runner.cap.ts
9717
9883
  /**
9718
9884
  * Script-runner cap. Models HA `script.*` entities on
@@ -10799,6 +10965,7 @@ var DEVICE_LOCAL_STATE_CAPS = {
10799
10965
  pressureSensor: pressureSensorCapability,
10800
10966
  privacyMask: privacyMaskCapability,
10801
10967
  ptzAutotrack: ptzAutotrackCapability,
10968
+ sceneMonitor: sceneMonitorCapability,
10802
10969
  scriptRunner: scriptRunnerCapability,
10803
10970
  smoke: smokeCapability,
10804
10971
  streamParams: streamParamsCapability,
@@ -12558,6 +12725,27 @@ function createSystemProxy(api) {
12558
12725
  getAvailableTypes: (input) => dispatch("integrations", "getAvailableTypes", "query", input),
12559
12726
  testConnection: (input) => dispatch("integrations", "testConnection", "mutation", input)
12560
12727
  },
12728
+ llm: {
12729
+ generate: (input) => dispatch("llm", "generate", "mutation", input),
12730
+ generateVision: (input) => dispatch("llm", "generateVision", "mutation", input),
12731
+ listProfileKinds: (input) => dispatch("llm", "listProfileKinds", "query", input),
12732
+ listProfiles: (input) => dispatch("llm", "listProfiles", "query", input),
12733
+ upsertProfile: (input) => dispatch("llm", "upsertProfile", "mutation", input),
12734
+ deleteProfile: (input) => dispatch("llm", "deleteProfile", "mutation", input),
12735
+ testProfile: (input) => dispatch("llm", "testProfile", "mutation", input),
12736
+ listModels: (input) => dispatch("llm", "listModels", "query", input),
12737
+ getDefaults: (input) => dispatch("llm", "getDefaults", "query", input),
12738
+ setDefault: (input) => dispatch("llm", "setDefault", "mutation", input),
12739
+ getUsage: (input) => dispatch("llm", "getUsage", "query", input),
12740
+ listModelCatalog: (input) => dispatch("llm", "listModelCatalog", "query", input),
12741
+ listRuntimeNodes: (input) => dispatch("llm", "listRuntimeNodes", "query", input),
12742
+ listNodeModels: (input) => dispatch("llm", "listNodeModels", "query", input),
12743
+ installModel: (input) => dispatch("llm", "installModel", "mutation", input),
12744
+ deleteModel: (input) => dispatch("llm", "deleteModel", "mutation", input),
12745
+ getRuntimeStatus: (input) => dispatch("llm", "getRuntimeStatus", "query", input),
12746
+ startRuntime: (input) => dispatch("llm", "startRuntime", "mutation", input),
12747
+ stopRuntime: (input) => dispatch("llm", "stopRuntime", "mutation", input)
12748
+ },
12561
12749
  localNetwork: {
12562
12750
  list: (input) => dispatch("localNetwork", "list", "query", input),
12563
12751
  getPreferred: (input) => dispatch("localNetwork", "getPreferred", "query", input),
@@ -12707,7 +12895,17 @@ function createSystemProxy(api) {
12707
12895
  searchPlates: (input) => dispatch("plateGallery", "searchPlates", "query", input),
12708
12896
  suggestPlateClusters: (input) => dispatch("plateGallery", "suggestPlateClusters", "query", input),
12709
12897
  correctPlateText: (input) => dispatch("plateGallery", "correctPlateText", "mutation", input),
12710
- deletePlate: (input) => dispatch("plateGallery", "deletePlate", "mutation", input)
12898
+ deletePlate: (input) => dispatch("plateGallery", "deletePlate", "mutation", input),
12899
+ listVehicles: (input) => dispatch("plateGallery", "listVehicles", "query", input),
12900
+ createVehicle: (input) => dispatch("plateGallery", "createVehicle", "mutation", input),
12901
+ renameVehicle: (input) => dispatch("plateGallery", "renameVehicle", "mutation", input),
12902
+ deleteVehicle: (input) => dispatch("plateGallery", "deleteVehicle", "mutation", input),
12903
+ listVehicleSamples: (input) => dispatch("plateGallery", "listVehicleSamples", "query", input),
12904
+ removeVehicleSample: (input) => dispatch("plateGallery", "removeVehicleSample", "mutation", input),
12905
+ assignPlate: (input) => dispatch("plateGallery", "assignPlate", "mutation", input),
12906
+ unassignPlate: (input) => dispatch("plateGallery", "unassignPlate", "mutation", input),
12907
+ assignPlates: (input) => dispatch("plateGallery", "assignPlates", "mutation", input),
12908
+ unassignPlates: (input) => dispatch("plateGallery", "unassignPlates", "mutation", input)
12711
12909
  },
12712
12910
  recording: { getStorageUsage: (input) => dispatch("recording", "getStorageUsage", "query", input) },
12713
12911
  serverManagement: {
@@ -13909,7 +14107,12 @@ var NotificationRuleConditionsSchema = zod.z.object({
13909
14107
  clipDescription: zod.z.object({
13910
14108
  text: zod.z.string().min(1),
13911
14109
  minSimilarity: zod.z.number().min(0).max(1)
13912
- }).optional()
14110
+ }).optional(),
14111
+ /** Match events whose recognized-entity label (face identity name or plate
14112
+ * vehicle name, propagated onto `event.data.label`) is one of these values.
14113
+ * Empty/absent → unaffected (back-compat). Enables "notify me when <named
14114
+ * vehicle/person> is seen". */
14115
+ labels: zod.z.array(zod.z.string()).readonly().optional()
13913
14116
  });
13914
14117
  var NotificationRuleTemplateSchema = zod.z.object({
13915
14118
  title: zod.z.string(),
@@ -14339,11 +14542,19 @@ var authProviderCapability = {
14339
14542
  * login page needs NO change.
14340
14543
  *
14341
14544
  * - `widget` — a Module-Federation widget the login page mounts (via
14342
- * `loadRemoteBundle`) for an in-page ceremony. Covers the passkey
14343
- * login ceremony, which must run `@simplewebauthn/browser` INSIDE the
14344
- * addon bundle. The referenced widget also declares `preAuth: true` in
14345
- * its `addon-widgets-source` catalog entry. `auth.listLoginMethods`
14346
- * stamps a public `bundleUrl` from `addonId` + `bundle`.
14545
+ * `loadRemoteBundle`) for an in-page ceremony. `auth.listLoginMethods`
14546
+ * stamps a public `bundleUrl` from `addonId` + `bundle`. Generic
14547
+ * mechanism kept for future use; no shipped addon uses it on the login
14548
+ * page (the passkey ceremony below runs natively in the shell instead).
14549
+ *
14550
+ * - `passkey` — a declarative WebAuthn ceremony the shell renders
14551
+ * natively (`@simplewebauthn/browser` lives in `addon-admin-ui`, not in
14552
+ * a remotely-loaded bundle). Carries the addon's effective `rpId` /
14553
+ * `origin` (from its `resolveRpID()` / `resolveOrigin()`) so the shell
14554
+ * can gate visibility (IP-literal origin, hostname/rpId mismatch) WITHOUT
14555
+ * fetching any remote code pre-auth. Contribution stays unconditional —
14556
+ * enrollment state is never leaked pre-auth; visibility is a shell
14557
+ * decision.
14347
14558
  *
14348
14559
  * Every contribution carries a `stage`:
14349
14560
  * - `primary` — shown on the first credentials screen (OIDC /
@@ -14392,8 +14603,30 @@ var WidgetLoginMethodSchema = zod.z.object({
14392
14603
  remote: WidgetRemoteSchema,
14393
14604
  stage: LoginStageEnum
14394
14605
  });
14395
- /** One login-method contribution — redirect button OR pre-auth widget. */
14396
- var LoginMethodContributionSchema = zod.z.discriminatedUnion("kind", [RedirectLoginMethodSchema, WidgetLoginMethodSchema]);
14606
+ /**
14607
+ * A declarative WebAuthn ceremony the shell renders natively (no remote
14608
+ * code). Carries the addon's EFFECTIVE `rpId`/`origin` so the shell can
14609
+ * gate visibility (IP-literal origin, hostname/rpId mismatch) before ever
14610
+ * showing the button — the contribution itself stays unconditional.
14611
+ */
14612
+ var PasskeyLoginMethodSchema = zod.z.object({
14613
+ kind: zod.z.literal("passkey"),
14614
+ /** Stable id within the login-method set (e.g. `auth-webauthn/passkey-direct-login`). */
14615
+ id: zod.z.string(),
14616
+ /** Operator-facing button label. */
14617
+ label: zod.z.string(),
14618
+ stage: LoginStageEnum,
14619
+ /** Effective WebAuthn RP ID (`resolveRpID()`) — the shell gates visibility on it. */
14620
+ rpId: zod.z.string(),
14621
+ /** Effective expected origin (`resolveOrigin()`), null when unconfigured. */
14622
+ origin: zod.z.string().nullable()
14623
+ });
14624
+ /** One login-method contribution — redirect button, pre-auth widget, or native passkey ceremony. */
14625
+ var LoginMethodContributionSchema = zod.z.discriminatedUnion("kind", [
14626
+ RedirectLoginMethodSchema,
14627
+ WidgetLoginMethodSchema,
14628
+ PasskeyLoginMethodSchema
14629
+ ]);
14397
14630
  var loginMethodCapability = {
14398
14631
  name: "login-method",
14399
14632
  scope: "system",
@@ -14915,18 +15148,6 @@ var cameraPipelineConfigCapability = {
14915
15148
  };
14916
15149
  //#endregion
14917
15150
  //#region src/capabilities/cap-router-predicates.ts
14918
- /**
14919
- * Shared cap-router predicates — the SINGLE source for the structural Zod-shape
14920
- * checks + naming used by BOTH the runtime cap-router builder
14921
- * (`@camstack/system` `cap-router-builder.ts` + the server's
14922
- * `cap-router-runtime.ts`) AND the codegen scripts (`scripts/generate-cap-*.ts`).
14923
- *
14924
- * These used to be independently reimplemented on each side, held in sync only
14925
- * by "must stay byte-identical" comments — a live drift risk. Consolidating them
14926
- * here (next to `resolveCapMount` / `expandCapMethods`, the other shared model)
14927
- * makes the two paths provably agree. Each predicate accepts both Zod 4
14928
- * (`_def.type`) and legacy Zod 3 (`_def.typeName` / `constructor.name`) shapes.
14929
- */
14930
15151
  /** `z.void()` — input carries no data. */
14931
15152
  function isVoidInput(schema) {
14932
15153
  const def = schema._def;
@@ -14954,6 +15175,26 @@ function isArrayOutputSchema(schema) {
14954
15175
  return false;
14955
15176
  }
14956
15177
  /**
15178
+ * True when `method` on cap `def` is a COLLECTION cap's array-returning
15179
+ * (non-subscription) method — the methods whose contract is "union the result
15180
+ * across every registered provider" (`listTargets`, `listTargetKinds`,
15181
+ * `discoverTargets`, `listEndpoints`, …).
15182
+ *
15183
+ * Such a method is aggregated at the hub via `concatCollection` / the runtime
15184
+ * `concatArrayMethod`, both of which SKIP a provider that doesn't implement it
15185
+ * (contributes `[]`). That local skip is invisible across the UDS boundary — a
15186
+ * hub-side per-provider proxy fabricates a callable for every property, so the
15187
+ * call reaches the child's real (possibly partial) provider. This predicate lets
15188
+ * the child-side dispatcher reproduce the same graceful skip: a missing method
15189
+ * here yields `[]`, not a "method not found" error. Singleton caps and non-array
15190
+ * methods return `false` so a genuinely missing method still surfaces as a bug.
15191
+ */
15192
+ function isCollectionArrayMethod(def, method) {
15193
+ if (def === void 0 || def.mode !== "collection") return false;
15194
+ const m = require_sleep.expandCapMethods(def)[method];
15195
+ return m !== void 0 && m.kind !== "subscription" && isArrayOutputSchema(m.output);
15196
+ }
15197
+ /**
14957
15198
  * Apply `.loose()` to an object input schema when available (Zod 4) so the
14958
15199
  * router accepts the out-of-band `nodeId`/`addonId` selector keys without
14959
15200
  * stripping them. Falls back to the schema unchanged when `.loose()` is absent.
@@ -17212,14 +17453,14 @@ var TargetKindCapsSchema = zod.z.object({
17212
17453
  * the union is large and not meant for runtime validation here; the exported
17213
17454
  * `TargetKind` type re-tightens `configSchema` to `ConfigUISchema`.
17214
17455
  */
17215
- var ConfigSchemaPassthrough = zod.z.unknown();
17456
+ var ConfigSchemaPassthrough$1 = zod.z.unknown();
17216
17457
  var TargetKindSchema = zod.z.object({
17217
17458
  kind: zod.z.string(),
17218
17459
  label: zod.z.string(),
17219
17460
  icon: zod.z.string(),
17220
17461
  /** Stamped by each provider so the concat-fanned catalog stays routable. */
17221
17462
  addonId: zod.z.string(),
17222
- configSchema: ConfigSchemaPassthrough,
17463
+ configSchema: ConfigSchemaPassthrough$1,
17223
17464
  supportsDiscovery: zod.z.boolean(),
17224
17465
  caps: TargetKindCapsSchema
17225
17466
  });
@@ -17286,6 +17527,352 @@ var notificationOutputCapability = {
17286
17527
  }
17287
17528
  };
17288
17529
  //#endregion
17530
+ //#region src/capabilities/llm-shared.ts
17531
+ /**
17532
+ * Shared LLM generate contracts — imported by BOTH `llm.cap.ts` (consumer
17533
+ * surface) and `llm-runtime.cap.ts` (node-side managed executor) so the two
17534
+ * caps stay wire-compatible without a circular cap→cap import.
17535
+ *
17536
+ * Errors are a discriminated-union RESULT, never thrown: the shape survives
17537
+ * every transport tier structurally, and failed calls still write usage rows.
17538
+ * Token counts only in v1 — no costUsd (operator decision, 2026-07-15).
17539
+ */
17540
+ var LlmUsageSchema = zod.z.object({
17541
+ inputTokens: zod.z.number(),
17542
+ outputTokens: zod.z.number()
17543
+ });
17544
+ var LlmErrorCodeSchema = zod.z.enum([
17545
+ "timeout",
17546
+ "rate-limited",
17547
+ "auth",
17548
+ "refusal",
17549
+ "bad-request",
17550
+ "unavailable",
17551
+ "no-profile",
17552
+ "budget-exceeded",
17553
+ "adapter-error"
17554
+ ]);
17555
+ var LlmGenerateOkSchema = zod.z.object({
17556
+ ok: zod.z.literal(true),
17557
+ text: zod.z.string(),
17558
+ model: zod.z.string(),
17559
+ usage: LlmUsageSchema,
17560
+ truncated: zod.z.boolean(),
17561
+ latencyMs: zod.z.number()
17562
+ });
17563
+ var LlmGenerateErrSchema = zod.z.object({
17564
+ ok: zod.z.literal(false),
17565
+ code: LlmErrorCodeSchema,
17566
+ message: zod.z.string(),
17567
+ retryAfterMs: zod.z.number().optional()
17568
+ });
17569
+ var LlmGenerateResultSchema = zod.z.discriminatedUnion("ok", [LlmGenerateOkSchema, LlmGenerateErrSchema]);
17570
+ /**
17571
+ * `Uint8Array` is the sanctioned binary convention — superjson + the UDS
17572
+ * MsgPack channel round-trip typed arrays (embedding-encoder.cap.ts:29,
17573
+ * notification-output.cap.ts:27-31 precedents).
17574
+ */
17575
+ var LlmImageSchema = zod.z.object({
17576
+ bytes: zod.z.instanceof(Uint8Array),
17577
+ mimeType: zod.z.string()
17578
+ });
17579
+ var LlmGenerateBaseInputSchema = zod.z.object({
17580
+ /** Collection routing (the notification-output posture). */
17581
+ addonId: zod.z.string().optional(),
17582
+ /** Explicit profile; else the resolution chain (spec §3). */
17583
+ profileId: zod.z.string().optional(),
17584
+ /** MANDATORY usage tag: 'ai-summary', 'notifier-rules', 'adhoc-ui', … */
17585
+ consumer: zod.z.string(),
17586
+ system: zod.z.string().optional(),
17587
+ /** v1: single-turn. `messages[]` is a v2 additive field. */
17588
+ prompt: zod.z.string(),
17589
+ /** Structured output — adapter-mapped (response_format / forced tool / responseSchema). */
17590
+ jsonSchema: zod.z.record(zod.z.string(), zod.z.unknown()).optional(),
17591
+ /** Per-call override of the profile default. */
17592
+ maxTokens: zod.z.number().int().positive().optional(),
17593
+ temperature: zod.z.number().optional()
17594
+ });
17595
+ //#endregion
17596
+ //#region src/capabilities/llm-runtime.cap.ts
17597
+ /**
17598
+ * `llm-runtime` — node-side managed llama.cpp executor (spec §4). Registered
17599
+ * on EVERY node where `addon-ai` is installed; the hub `llm` provider reaches
17600
+ * a specific node's runtime with `nodePin(profile.runtime.nodeId)` — normal
17601
+ * cap routing, zero bespoke plumbing. `internal: true`: the operator reaches
17602
+ * this only through the `llm` cap's methods.
17603
+ *
17604
+ * One running llama-server child per node in v1 (models are RAM-heavy).
17605
+ * Resource ceiling = llama-server flags + idleStopMinutes ONLY (no RSS
17606
+ * watchdog — operator decision #3).
17607
+ */
17608
+ var ManagedModelRefSchema = zod.z.discriminatedUnion("kind", [
17609
+ zod.z.object({
17610
+ kind: zod.z.literal("catalog"),
17611
+ catalogId: zod.z.string()
17612
+ }),
17613
+ zod.z.object({
17614
+ kind: zod.z.literal("url"),
17615
+ url: zod.z.string(),
17616
+ sha256: zod.z.string().optional()
17617
+ }),
17618
+ zod.z.object({
17619
+ kind: zod.z.literal("path"),
17620
+ path: zod.z.string()
17621
+ })
17622
+ ]);
17623
+ var ManagedRuntimeConfigSchema = zod.z.object({
17624
+ /** WHERE the runtime lives — hub or any agent. */
17625
+ nodeId: zod.z.string(),
17626
+ /** Closed for v1; 'ollama' is a v2 candidate. */
17627
+ engine: zod.z.enum(["llama-cpp"]),
17628
+ model: ManagedModelRefSchema,
17629
+ contextSize: zod.z.number().int().default(4096),
17630
+ /** 0 = CPU-only. */
17631
+ gpuLayers: zod.z.number().int().default(0),
17632
+ /** Default: cpus-2, clamped ≥1 (resolved node-side). */
17633
+ threads: zod.z.number().int().optional(),
17634
+ /** Concurrent slots. */
17635
+ parallel: zod.z.number().int().default(1),
17636
+ /** Else lazy: first generate boots it. */
17637
+ autoStart: zod.z.boolean().default(false),
17638
+ /** 0 = never; frees RAM after quiet periods. */
17639
+ idleStopMinutes: zod.z.number().int().default(30)
17640
+ });
17641
+ var LlmRuntimeStatusSchema = zod.z.object({
17642
+ /** Status is ALWAYS node-qualified. */
17643
+ nodeId: zod.z.string(),
17644
+ state: zod.z.enum([
17645
+ "stopped",
17646
+ "downloading",
17647
+ "starting",
17648
+ "ready",
17649
+ "crashed",
17650
+ "failed"
17651
+ ]),
17652
+ pid: zod.z.number().optional(),
17653
+ port: zod.z.number().optional(),
17654
+ modelPath: zod.z.string().optional(),
17655
+ modelId: zod.z.string().optional(),
17656
+ downloadProgress: zod.z.number().min(0).max(1).optional(),
17657
+ lastError: zod.z.string().optional(),
17658
+ crashesInWindow: zod.z.number(),
17659
+ /** Child RSS (sampled best-effort). */
17660
+ memoryBytes: zod.z.number().optional(),
17661
+ vramBytes: zod.z.number().optional()
17662
+ });
17663
+ var LlmNodeModelSchema = zod.z.object({
17664
+ file: zod.z.string(),
17665
+ sizeBytes: zod.z.number(),
17666
+ catalogId: zod.z.string().optional(),
17667
+ installedAt: zod.z.number().optional()
17668
+ });
17669
+ var LlmRuntimeDiskUsageSchema = zod.z.object({
17670
+ nodeId: zod.z.string(),
17671
+ modelsBytes: zod.z.number(),
17672
+ freeBytes: zod.z.number().optional()
17673
+ });
17674
+ var LlmRuntimeCompleteInputSchema = LlmGenerateBaseInputSchema.extend({
17675
+ images: zod.z.array(LlmImageSchema).optional(),
17676
+ runtime: ManagedRuntimeConfigSchema,
17677
+ /** The managed profile's timeout, threaded by the hub provider. */
17678
+ timeoutMs: zod.z.number().int().positive().optional()
17679
+ });
17680
+ var llmRuntimeCapability = {
17681
+ name: "llm-runtime",
17682
+ scope: "system",
17683
+ mode: "singleton",
17684
+ internal: true,
17685
+ methods: {
17686
+ complete: require_sleep.method(LlmRuntimeCompleteInputSchema, LlmGenerateResultSchema, { kind: "mutation" }),
17687
+ ensureStarted: require_sleep.method(zod.z.object({ runtime: ManagedRuntimeConfigSchema }), LlmRuntimeStatusSchema, {
17688
+ kind: "mutation",
17689
+ auth: "admin"
17690
+ }),
17691
+ stop: require_sleep.method(zod.z.object({}), zod.z.void(), {
17692
+ kind: "mutation",
17693
+ auth: "admin"
17694
+ }),
17695
+ status: require_sleep.method(zod.z.object({}), LlmRuntimeStatusSchema),
17696
+ installModel: require_sleep.method(zod.z.object({ model: ManagedModelRefSchema }), zod.z.void(), {
17697
+ kind: "mutation",
17698
+ auth: "admin"
17699
+ }),
17700
+ deleteModel: require_sleep.method(zod.z.object({ file: zod.z.string() }), zod.z.void(), {
17701
+ kind: "mutation",
17702
+ auth: "admin"
17703
+ }),
17704
+ listLocalModels: require_sleep.method(zod.z.object({}), zod.z.array(LlmNodeModelSchema)),
17705
+ getDiskUsage: require_sleep.method(zod.z.object({}), LlmRuntimeDiskUsageSchema)
17706
+ }
17707
+ };
17708
+ //#endregion
17709
+ //#region src/capabilities/llm.cap.ts
17710
+ /**
17711
+ * `llm` — consumer-facing LLM surface (spec §1-§3). Collection-mode: array
17712
+ * methods concat-fan across providers; single-row methods route to ONE
17713
+ * provider by the `addonId` in the call input (the notification-output
17714
+ * posture, notification-output.cap.ts:215-250). Provided by `addon-ai`
17715
+ * (hub-placed); the cap stays open for future providers.
17716
+ *
17717
+ * Profiles are ROWS (data), not addons: one row = one usable model endpoint.
17718
+ * `apiKey` is a password field — providers REDACT it on read and merge on
17719
+ * write; a stored key NEVER round-trips to a client.
17720
+ */
17721
+ var LlmProfileKindSchema = zod.z.enum([
17722
+ "openai-compatible",
17723
+ "openai",
17724
+ "anthropic",
17725
+ "google",
17726
+ "managed-local"
17727
+ ]);
17728
+ var LlmProfileSchema = zod.z.object({
17729
+ id: zod.z.string(),
17730
+ name: zod.z.string(),
17731
+ kind: LlmProfileKindSchema,
17732
+ /** Stamped by the provider — keeps the fanned catalog routable. */
17733
+ addonId: zod.z.string(),
17734
+ enabled: zod.z.boolean(),
17735
+ /** Vendor model id, or the managed runtime's loaded model. */
17736
+ model: zod.z.string(),
17737
+ /** Required for openai-compatible; override for cloud kinds. */
17738
+ baseUrl: zod.z.string().optional(),
17739
+ /** ConfigUISchema type:'password' — never round-trips (spec §5). */
17740
+ apiKey: zod.z.string().optional(),
17741
+ supportsVision: zod.z.boolean(),
17742
+ temperature: zod.z.number().min(0).max(2).optional(),
17743
+ maxTokens: zod.z.number().int().positive().optional(),
17744
+ timeoutMs: zod.z.number().int().positive().default(6e4),
17745
+ extraHeaders: zod.z.record(zod.z.string(), zod.z.string()).optional(),
17746
+ /** kind === 'managed-local' only (spec §4). */
17747
+ runtime: ManagedRuntimeConfigSchema.optional()
17748
+ });
17749
+ /** ConfigUISchema tree passed through untyped on the wire (the
17750
+ * notification-output `ConfigSchemaPassthrough` precedent at
17751
+ * notification-output.cap.ts:151); the exported TS type re-tightens it. */
17752
+ var ConfigSchemaPassthrough = zod.z.unknown();
17753
+ var LlmProfileKindDescriptorSchema = zod.z.object({
17754
+ kind: LlmProfileKindSchema,
17755
+ label: zod.z.string(),
17756
+ icon: zod.z.string(),
17757
+ /** Stamped by each provider so the concat-fanned catalog stays routable. */
17758
+ addonId: zod.z.string(),
17759
+ configSchema: ConfigSchemaPassthrough
17760
+ });
17761
+ var LlmDefaultSelectorSchema = zod.z.union([zod.z.object({ consumer: zod.z.string() }), zod.z.object({ purpose: zod.z.enum(["text", "vision"]) })]);
17762
+ var LlmDefaultSchema = zod.z.object({
17763
+ selector: LlmDefaultSelectorSchema,
17764
+ profileId: zod.z.string()
17765
+ });
17766
+ /** Server-side rollup row — getUsage never dumps raw call rows (spec §6). */
17767
+ var LlmUsageRollupSchema = zod.z.object({
17768
+ day: zod.z.string(),
17769
+ consumer: zod.z.string(),
17770
+ profileId: zod.z.string(),
17771
+ calls: zod.z.number(),
17772
+ okCalls: zod.z.number(),
17773
+ errorCalls: zod.z.number(),
17774
+ inputTokens: zod.z.number(),
17775
+ outputTokens: zod.z.number(),
17776
+ avgLatencyMs: zod.z.number()
17777
+ });
17778
+ /** LLM-facing view over the reused ModelCatalogEntry mechanism (spec §4.2). */
17779
+ var ManagedModelCatalogEntrySchema = zod.z.object({
17780
+ id: zod.z.string(),
17781
+ label: zod.z.string(),
17782
+ family: zod.z.string(),
17783
+ purpose: zod.z.enum(["text", "vision"]),
17784
+ url: zod.z.string(),
17785
+ sha256: zod.z.string(),
17786
+ sizeBytes: zod.z.number(),
17787
+ quantization: zod.z.string(),
17788
+ /** Load-time guidance shown in the picker. */
17789
+ minRamBytes: zod.z.number(),
17790
+ contextSizeDefault: zod.z.number().int(),
17791
+ /** Vision models: companion projector file. */
17792
+ mmprojUrl: zod.z.string().optional()
17793
+ });
17794
+ var LlmRuntimeNodeSchema = zod.z.object({
17795
+ nodeId: zod.z.string(),
17796
+ reachable: zod.z.boolean(),
17797
+ status: LlmRuntimeStatusSchema.optional(),
17798
+ disk: LlmRuntimeDiskUsageSchema.optional(),
17799
+ error: zod.z.string().optional()
17800
+ });
17801
+ var GenerateVisionInputSchema = LlmGenerateBaseInputSchema.extend({ images: zod.z.array(LlmImageSchema).min(1) });
17802
+ var ProfileRefInputSchema = zod.z.object({
17803
+ addonId: zod.z.string(),
17804
+ profileId: zod.z.string()
17805
+ });
17806
+ var llmCapability = {
17807
+ name: "llm",
17808
+ scope: "system",
17809
+ mode: "collection",
17810
+ internal: false,
17811
+ providerKind: "ai",
17812
+ /** `nodeId` inputs below are DATA (the hub provider pins itself), never routing. */
17813
+ nodeIdMode: "data",
17814
+ methods: {
17815
+ generate: require_sleep.method(LlmGenerateBaseInputSchema, LlmGenerateResultSchema, { kind: "mutation" }),
17816
+ generateVision: require_sleep.method(GenerateVisionInputSchema, LlmGenerateResultSchema, { kind: "mutation" }),
17817
+ listProfileKinds: require_sleep.method(zod.z.object({}), zod.z.array(LlmProfileKindDescriptorSchema)),
17818
+ listProfiles: require_sleep.method(zod.z.object({}), zod.z.array(LlmProfileSchema)),
17819
+ upsertProfile: require_sleep.method(zod.z.object({ profile: LlmProfileSchema }), LlmProfileSchema, {
17820
+ kind: "mutation",
17821
+ auth: "admin"
17822
+ }),
17823
+ deleteProfile: require_sleep.method(ProfileRefInputSchema, zod.z.void(), {
17824
+ kind: "mutation",
17825
+ auth: "admin"
17826
+ }),
17827
+ testProfile: require_sleep.method(ProfileRefInputSchema, LlmGenerateResultSchema, {
17828
+ kind: "mutation",
17829
+ auth: "admin"
17830
+ }),
17831
+ /** Live vendor enumeration (GET /models etc.). */
17832
+ listModels: require_sleep.method(ProfileRefInputSchema, zod.z.array(zod.z.string())),
17833
+ getDefaults: require_sleep.method(zod.z.object({}), zod.z.array(LlmDefaultSchema)),
17834
+ setDefault: require_sleep.method(zod.z.object({
17835
+ selector: LlmDefaultSelectorSchema,
17836
+ profileId: zod.z.string().nullable()
17837
+ }), zod.z.void(), {
17838
+ kind: "mutation",
17839
+ auth: "admin"
17840
+ }),
17841
+ getUsage: require_sleep.method(zod.z.object({
17842
+ since: zod.z.number().optional(),
17843
+ until: zod.z.number().optional(),
17844
+ consumer: zod.z.string().optional(),
17845
+ profileId: zod.z.string().optional()
17846
+ }), zod.z.array(LlmUsageRollupSchema)),
17847
+ listModelCatalog: require_sleep.method(zod.z.object({}), zod.z.array(ManagedModelCatalogEntrySchema)),
17848
+ listRuntimeNodes: require_sleep.method(zod.z.object({}), zod.z.array(LlmRuntimeNodeSchema)),
17849
+ listNodeModels: require_sleep.method(zod.z.object({ nodeId: zod.z.string() }), zod.z.array(LlmNodeModelSchema)),
17850
+ installModel: require_sleep.method(zod.z.object({
17851
+ nodeId: zod.z.string(),
17852
+ model: ManagedModelRefSchema
17853
+ }), zod.z.void(), {
17854
+ kind: "mutation",
17855
+ auth: "admin"
17856
+ }),
17857
+ deleteModel: require_sleep.method(zod.z.object({
17858
+ nodeId: zod.z.string(),
17859
+ file: zod.z.string()
17860
+ }), zod.z.void(), {
17861
+ kind: "mutation",
17862
+ auth: "admin"
17863
+ }),
17864
+ getRuntimeStatus: require_sleep.method(ProfileRefInputSchema, LlmRuntimeStatusSchema),
17865
+ startRuntime: require_sleep.method(ProfileRefInputSchema, LlmRuntimeStatusSchema, {
17866
+ kind: "mutation",
17867
+ auth: "admin"
17868
+ }),
17869
+ stopRuntime: require_sleep.method(ProfileRefInputSchema, zod.z.void(), {
17870
+ kind: "mutation",
17871
+ auth: "admin"
17872
+ })
17873
+ }
17874
+ };
17875
+ //#endregion
17289
17876
  //#region src/schemas/auth-records.ts
17290
17877
  /**
17291
17878
  * Zod schemas for persisted record types.
@@ -17513,6 +18100,10 @@ var TrackSchema = zod.z.object({
17513
18100
  snapshots: zod.z.array(TrackSnapshotSchema).readonly(),
17514
18101
  /** Deduplicated zones the track has entered at least once. */
17515
18102
  zonesVisited: zod.z.array(zod.z.string()).readonly(),
18103
+ /** Deduplicated set of detector classes observed for this track over its
18104
+ * life (a track may be reclassified, e.g. person→vehicle). Absent on
18105
+ * legacy rows written before class accumulation shipped. */
18106
+ classes: zod.z.array(zod.z.string()).readonly().optional(),
17516
18107
  /** Cumulative normalized distance travelled (0..1 units = full frame width). */
17517
18108
  totalDistance: zod.z.number(),
17518
18109
  state: TrackStateSchema,
@@ -17682,6 +18273,23 @@ var TrackedDetectionSchema = zod.z.object({
17682
18273
  zones: zod.z.array(zod.z.string()).readonly(),
17683
18274
  state: TrackStateSchema
17684
18275
  });
18276
+ var OverlayDetectionSchema = zod.z.looseObject({
18277
+ id: zod.z.string(),
18278
+ kind: zod.z.enum(["first-level", "detail"]),
18279
+ macroClass: zod.z.string(),
18280
+ score: zod.z.number(),
18281
+ bbox: zod.z.object({
18282
+ x: zod.z.number(),
18283
+ y: zod.z.number(),
18284
+ width: zod.z.number(),
18285
+ height: zod.z.number()
18286
+ }),
18287
+ labels: zod.z.array(zod.z.looseObject({
18288
+ label: zod.z.string(),
18289
+ score: zod.z.number()
18290
+ })).readonly(),
18291
+ parentId: zod.z.string().optional()
18292
+ });
17685
18293
  var ScoredObjectEventSchema = ObjectEventSchema.extend({ score: zod.z.number() });
17686
18294
  var SearchObjectEventsInput = zod.z.object({
17687
18295
  text: zod.z.string(),
@@ -17692,6 +18300,20 @@ var SearchObjectEventsInput = zod.z.object({
17692
18300
  limit: zod.z.number().default(50),
17693
18301
  minScore: zod.z.number().min(0).max(1).default(.2)
17694
18302
  });
18303
+ var TrackCascadeCountsSchema = zod.z.object({
18304
+ /** Persisted track roots deleted (authoritative). */
18305
+ tracks: zod.z.number().int(),
18306
+ /** Object events removed with their tracks (best-effort; see note above). */
18307
+ events: zod.z.number().int(),
18308
+ /** Track/face/plate-owned media removed (best-effort). Never identity media. */
18309
+ media: zod.z.number().int(),
18310
+ /** Unassigned (non-enrolled) face reads removed (best-effort). */
18311
+ faces: zod.z.number().int(),
18312
+ /** Unassigned plate reads removed (best-effort; plate leg deferred to plate-intelligence). */
18313
+ plates: zod.z.number().int(),
18314
+ /** Per-track CLIP search vectors removed (best-effort). */
18315
+ embeddings: zod.z.number().int()
18316
+ });
17695
18317
  var pipelineAnalyticsCapability = {
17696
18318
  name: "pipeline-analytics",
17697
18319
  scope: "device",
@@ -17745,12 +18367,14 @@ var pipelineAnalyticsCapability = {
17745
18367
  audio: zod.z.number().int()
17746
18368
  })).readonly()),
17747
18369
  /**
17748
- * Delete all events (motion + object + audio) for the given device
17749
- * that are older than `cutoffMs` (exclusive), and delete their
17750
- * thumbnails in lockstep. Returns per-kind deleted counts.
17751
- *
17752
- * Called by Phase B3 recorder orchestration to keep event history
17753
- * aligned with available footage.
18370
+ * @deprecated Prefer `pruneTracksBefore` the track is the ROOT of the
18371
+ * analytics model and retention must cascade from it (design §5.1). This
18372
+ * event-only prune leaves orphaned tracks/faces/plates/embeddings behind.
18373
+ * Retained as a compat shim for the Phase-B3 recorder orchestration caller,
18374
+ * which prunes events to keep history aligned with available footage and
18375
+ * reads the per-kind counts. Delete all events (motion + object + audio)
18376
+ * for the given device older than `cutoffMs` (exclusive) + their thumbnails
18377
+ * in lockstep; returns per-kind deleted counts.
17754
18378
  */
17755
18379
  pruneEventsBefore: require_sleep.method(zod.z.object({
17756
18380
  deviceId: zod.z.number(),
@@ -17763,6 +18387,55 @@ var pipelineAnalyticsCapability = {
17763
18387
  kind: "mutation",
17764
18388
  auth: "admin"
17765
18389
  }),
18390
+ /**
18391
+ * Track-centric retention entry point (design §5.1). Selects every
18392
+ * persisted track for the device whose `lastSeen < cutoffMs` (paged) and
18393
+ * runs the extensible whole-track deletion cascade (design §3): object
18394
+ * events + their media, track/face/plate-owned media, unassigned face
18395
+ * reads, per-track CLIP embeddings, then the track root LAST. ENROLLED
18396
+ * (assigned) faces/plates and `ownerKind:'identity'` media are exempt —
18397
+ * the durable matching gallery always persists. Fires the per-track
18398
+ * live-state cleanup so a pruned track can't linger in dispatch/overlay
18399
+ * state. Returns per-family deleted counts (`tracks` authoritative).
18400
+ *
18401
+ * Replaces `pruneEventsBefore` as the correct time-based retention prune.
18402
+ */
18403
+ pruneTracksBefore: require_sleep.method(zod.z.object({
18404
+ deviceId: zod.z.number(),
18405
+ cutoffMs: zod.z.number()
18406
+ }), TrackCascadeCountsSchema, {
18407
+ kind: "mutation",
18408
+ auth: "admin"
18409
+ }),
18410
+ /**
18411
+ * Operator "clean slate" for a device (design §5.3): prune EVERY track for
18412
+ * the device via the same cascade as `pruneTracksBefore` with `cutoffMs =
18413
+ * now`. One call per device — no client-side track enumeration. Enrolled
18414
+ * gallery + identity media are exempt (design §4). Returns per-family
18415
+ * deleted counts.
18416
+ */
18417
+ wipeAllAnalytics: require_sleep.method(zod.z.object({ deviceId: zod.z.number() }), TrackCascadeCountsSchema, {
18418
+ kind: "mutation",
18419
+ auth: "admin"
18420
+ }),
18421
+ /**
18422
+ * Delete whole tracks (object events) by id for the given device,
18423
+ * cascading their media in lockstep. Returns the number of tracks
18424
+ * actually deleted plus the ids that could not be removed.
18425
+ *
18426
+ * Operator-driven from the DI Events page (batch delete). Routes through
18427
+ * the same widened track-deletion cascade (design §5.2).
18428
+ */
18429
+ deleteTracks: require_sleep.method(zod.z.object({
18430
+ deviceId: zod.z.number(),
18431
+ trackIds: zod.z.array(zod.z.string()).min(1)
18432
+ }), zod.z.object({
18433
+ deleted: zod.z.number().int(),
18434
+ failed: zod.z.array(zod.z.string()).readonly()
18435
+ }), {
18436
+ kind: "mutation",
18437
+ auth: "admin"
18438
+ }),
17766
18439
  getEventMedia: require_sleep.method(zod.z.object({
17767
18440
  eventId: zod.z.string(),
17768
18441
  kind: MediaFileKindEnum.optional()
@@ -17780,17 +18453,19 @@ var pipelineAnalyticsCapability = {
17780
18453
  },
17781
18454
  events: {
17782
18455
  /**
17783
- * Enriched frame emitted after refinement. Carries lightweight
17784
- * tracked-detection metadata (track id, class, zones, state) so
17785
- * downstream consumers (stream overlays, notifications) can
17786
- * annotate without querying full Track state.
18456
+ * Enriched frame emitted after refinement the live-overlay source of
18457
+ * truth (two-plane re-injection). Carries the frame's detections in the
18458
+ * `ObjectDetection` wire shape: first-level roots (with track info +
18459
+ * enrichment labels) plus synthesized `kind:'detail'` face/plate entries
18460
+ * re-projected from per-track detail state, so stream overlays render
18461
+ * boxes + recognized names without querying full Track state.
17787
18462
  */
17788
18463
  onFrameTracked: { data: zod.z.object({
17789
18464
  deviceId: zod.z.number(),
17790
18465
  timestamp: zod.z.number(),
17791
18466
  frameWidth: zod.z.number(),
17792
18467
  frameHeight: zod.z.number(),
17793
- detections: zod.z.array(TrackedDetectionSchema).readonly()
18468
+ detections: zod.z.array(OverlayDetectionSchema).readonly()
17794
18469
  }) },
17795
18470
  /** Track entered active state (first-seen). */
17796
18471
  onTrackStarted: { data: zod.z.object({
@@ -21842,6 +22517,24 @@ setOverlay: require_sleep.method(zod.z.object({
21842
22517
  };
21843
22518
  //#endregion
21844
22519
  //#region src/capabilities/plate-gallery.cap.ts
22520
+ var VehicleSchema = zod.z.object({
22521
+ id: zod.z.string(),
22522
+ name: zod.z.string(),
22523
+ sampleCount: zod.z.number().int().nonnegative(),
22524
+ coverMediaKey: zod.z.string().optional(),
22525
+ /** Inline base64 of the cover sample's plate crop, resolved from `coverMediaKey`. */
22526
+ coverBase64: zod.z.string().optional()
22527
+ });
22528
+ var VehicleSampleInfoSchema = zod.z.object({
22529
+ id: zod.z.string(),
22530
+ /** The plate text this sample enrolled (self-labeling — no embedding). */
22531
+ text: zod.z.string(),
22532
+ /** OCR confidence of the enrolled read (0..1). */
22533
+ score: zod.z.number(),
22534
+ addedAt: zod.z.number().int(),
22535
+ deviceId: zod.z.number().int().optional(),
22536
+ base64: zod.z.string().optional()
22537
+ });
21845
22538
  var PlateInfoSchema = zod.z.object({
21846
22539
  plateId: zod.z.string(),
21847
22540
  deviceId: zod.z.number().int(),
@@ -21853,6 +22546,16 @@ var PlateInfoSchema = zod.z.object({
21853
22546
  score: zod.z.number(),
21854
22547
  /** True when the text was manually corrected (exempt from retention). */
21855
22548
  corrected: zod.z.boolean(),
22549
+ /** Recognized vehicle id when a matcher lookup named this read (SQL NULL → absent). */
22550
+ recognizedVehicleId: zod.z.string().optional(),
22551
+ /** Resolved vehicle name for `recognizedVehicleId` (UI convenience). */
22552
+ vehicleName: zod.z.string().optional(),
22553
+ /** True once the read was assigned to a vehicle (enrolled as a sample). */
22554
+ assigned: zod.z.boolean(),
22555
+ /** keyFrame parity: the plate bbox (pixel space) on the native key frame. */
22556
+ plateBbox: BoundingBoxSchema.optional(),
22557
+ /** keyFrame parity: MediaStore key of the track's native-resolution key frame. */
22558
+ keyFrameMediaKey: zod.z.string().optional(),
21856
22559
  base64: zod.z.string().optional()
21857
22560
  });
21858
22561
  var MediaFileLiteSchema = zod.z.object({
@@ -21914,6 +22617,58 @@ var plateGalleryCapability = {
21914
22617
  deletePlate: require_sleep.method(zod.z.object({ plateId: zod.z.string() }), zod.z.void(), {
21915
22618
  kind: "mutation",
21916
22619
  auth: "admin"
22620
+ }),
22621
+ listVehicles: require_sleep.method(zod.z.void(), zod.z.array(VehicleSchema).readonly()),
22622
+ createVehicle: require_sleep.method(zod.z.object({ name: zod.z.string().min(1) }), VehicleSchema, {
22623
+ kind: "mutation",
22624
+ auth: "admin"
22625
+ }),
22626
+ renameVehicle: require_sleep.method(zod.z.object({
22627
+ id: zod.z.string(),
22628
+ name: zod.z.string().min(1)
22629
+ }), zod.z.void(), {
22630
+ kind: "mutation",
22631
+ auth: "admin"
22632
+ }),
22633
+ deleteVehicle: require_sleep.method(zod.z.object({ id: zod.z.string() }), zod.z.void(), {
22634
+ kind: "mutation",
22635
+ auth: "admin"
22636
+ }),
22637
+ listVehicleSamples: require_sleep.method(zod.z.object({ vehicleId: zod.z.string() }), zod.z.array(VehicleSampleInfoSchema).readonly()),
22638
+ removeVehicleSample: require_sleep.method(zod.z.object({
22639
+ vehicleId: zod.z.string(),
22640
+ sampleId: zod.z.string()
22641
+ }), zod.z.void(), {
22642
+ kind: "mutation",
22643
+ auth: "admin"
22644
+ }),
22645
+ assignPlate: require_sleep.method(zod.z.object({
22646
+ plateId: zod.z.string(),
22647
+ vehicleId: zod.z.string()
22648
+ }), zod.z.void(), {
22649
+ kind: "mutation",
22650
+ auth: "admin"
22651
+ }),
22652
+ unassignPlate: require_sleep.method(zod.z.object({ plateId: zod.z.string() }), zod.z.void(), {
22653
+ kind: "mutation",
22654
+ auth: "admin"
22655
+ }),
22656
+ assignPlates: require_sleep.method(zod.z.object({
22657
+ plateIds: zod.z.array(zod.z.string()).min(1),
22658
+ vehicleId: zod.z.string()
22659
+ }), zod.z.object({
22660
+ assigned: zod.z.number().int(),
22661
+ failed: zod.z.array(zod.z.string()).readonly()
22662
+ }), {
22663
+ kind: "mutation",
22664
+ auth: "admin"
22665
+ }),
22666
+ unassignPlates: require_sleep.method(zod.z.object({ plateIds: zod.z.array(zod.z.string()).min(1) }), zod.z.object({
22667
+ unassigned: zod.z.number().int(),
22668
+ failed: zod.z.array(zod.z.string()).readonly()
22669
+ }), {
22670
+ kind: "mutation",
22671
+ auth: "admin"
21917
22672
  })
21918
22673
  }
21919
22674
  };
@@ -23112,6 +23867,8 @@ var CAPABILITY_NAMES = {
23112
23867
  integrations: "integrations",
23113
23868
  intercom: "intercom",
23114
23869
  lawnMowerControl: "lawn-mower-control",
23870
+ llm: "llm",
23871
+ llmRuntime: "llm-runtime",
23115
23872
  localNetwork: "local-network",
23116
23873
  lockControl: "lock-control",
23117
23874
  logDestination: "log-destination",
@@ -23150,6 +23907,7 @@ var CAPABILITY_NAMES = {
23150
23907
  ptzAutotrack: "ptz-autotrack",
23151
23908
  reboot: "reboot",
23152
23909
  recording: "recording",
23910
+ sceneMonitor: "scene-monitor",
23153
23911
  scriptRunner: "script-runner",
23154
23912
  serverManagement: "server-management",
23155
23913
  settingsStore: "settings-store",
@@ -23454,6 +24212,14 @@ var CAPABILITY_ROUTER_KEYS = [
23454
24212
  key: "lawnMowerControl",
23455
24213
  name: "lawn-mower-control"
23456
24214
  },
24215
+ {
24216
+ key: "llm",
24217
+ name: "llm"
24218
+ },
24219
+ {
24220
+ key: "llmRuntime",
24221
+ name: "llm-runtime"
24222
+ },
23457
24223
  {
23458
24224
  key: "localNetwork",
23459
24225
  name: "local-network"
@@ -23606,6 +24372,10 @@ var CAPABILITY_ROUTER_KEYS = [
23606
24372
  key: "recording",
23607
24373
  name: "recording"
23608
24374
  },
24375
+ {
24376
+ key: "sceneMonitor",
24377
+ name: "scene-monitor"
24378
+ },
23609
24379
  {
23610
24380
  key: "scriptRunner",
23611
24381
  name: "script-runner"
@@ -23816,6 +24586,8 @@ var ALL_CAPABILITY_DEFINITIONS = [
23816
24586
  integrationsCapability,
23817
24587
  intercomCapability,
23818
24588
  lawnMowerControlCapability,
24589
+ llmCapability,
24590
+ llmRuntimeCapability,
23819
24591
  localNetworkCapability,
23820
24592
  lockControlCapability,
23821
24593
  logDestinationCapability,
@@ -23854,6 +24626,7 @@ var ALL_CAPABILITY_DEFINITIONS = [
23854
24626
  ptzAutotrackCapability,
23855
24627
  rebootCapability,
23856
24628
  recordingCapability,
24629
+ sceneMonitorCapability,
23857
24630
  scriptRunnerCapability,
23858
24631
  serverManagementCapability,
23859
24632
  settingsStoreCapability,
@@ -23950,6 +24723,7 @@ var CAP_NAMES_WITH_STATUS = [
23950
24723
  "ptz",
23951
24724
  "ptz-autotrack",
23952
24725
  "recording",
24726
+ "scene-monitor",
23953
24727
  "script-runner",
23954
24728
  "smoke",
23955
24729
  "snapshot",
@@ -25875,6 +26649,168 @@ var METHOD_ACCESS_MAP = Object.freeze({
25875
26649
  addonId: null,
25876
26650
  access: "create"
25877
26651
  },
26652
+ "llm.deleteModel": {
26653
+ capName: "llm",
26654
+ capScope: "system",
26655
+ addonId: null,
26656
+ access: "delete"
26657
+ },
26658
+ "llm.deleteProfile": {
26659
+ capName: "llm",
26660
+ capScope: "system",
26661
+ addonId: null,
26662
+ access: "delete"
26663
+ },
26664
+ "llm.generate": {
26665
+ capName: "llm",
26666
+ capScope: "system",
26667
+ addonId: null,
26668
+ access: "create"
26669
+ },
26670
+ "llm.generateVision": {
26671
+ capName: "llm",
26672
+ capScope: "system",
26673
+ addonId: null,
26674
+ access: "create"
26675
+ },
26676
+ "llm.getDefaults": {
26677
+ capName: "llm",
26678
+ capScope: "system",
26679
+ addonId: null,
26680
+ access: "view"
26681
+ },
26682
+ "llm.getRuntimeStatus": {
26683
+ capName: "llm",
26684
+ capScope: "system",
26685
+ addonId: null,
26686
+ access: "view"
26687
+ },
26688
+ "llm.getUsage": {
26689
+ capName: "llm",
26690
+ capScope: "system",
26691
+ addonId: null,
26692
+ access: "view"
26693
+ },
26694
+ "llm.installModel": {
26695
+ capName: "llm",
26696
+ capScope: "system",
26697
+ addonId: null,
26698
+ access: "create"
26699
+ },
26700
+ "llm.listModelCatalog": {
26701
+ capName: "llm",
26702
+ capScope: "system",
26703
+ addonId: null,
26704
+ access: "view"
26705
+ },
26706
+ "llm.listModels": {
26707
+ capName: "llm",
26708
+ capScope: "system",
26709
+ addonId: null,
26710
+ access: "view"
26711
+ },
26712
+ "llm.listNodeModels": {
26713
+ capName: "llm",
26714
+ capScope: "system",
26715
+ addonId: null,
26716
+ access: "view"
26717
+ },
26718
+ "llm.listProfileKinds": {
26719
+ capName: "llm",
26720
+ capScope: "system",
26721
+ addonId: null,
26722
+ access: "view"
26723
+ },
26724
+ "llm.listProfiles": {
26725
+ capName: "llm",
26726
+ capScope: "system",
26727
+ addonId: null,
26728
+ access: "view"
26729
+ },
26730
+ "llm.listRuntimeNodes": {
26731
+ capName: "llm",
26732
+ capScope: "system",
26733
+ addonId: null,
26734
+ access: "view"
26735
+ },
26736
+ "llm.setDefault": {
26737
+ capName: "llm",
26738
+ capScope: "system",
26739
+ addonId: null,
26740
+ access: "create"
26741
+ },
26742
+ "llm.startRuntime": {
26743
+ capName: "llm",
26744
+ capScope: "system",
26745
+ addonId: null,
26746
+ access: "create"
26747
+ },
26748
+ "llm.stopRuntime": {
26749
+ capName: "llm",
26750
+ capScope: "system",
26751
+ addonId: null,
26752
+ access: "create"
26753
+ },
26754
+ "llm.testProfile": {
26755
+ capName: "llm",
26756
+ capScope: "system",
26757
+ addonId: null,
26758
+ access: "create"
26759
+ },
26760
+ "llm.upsertProfile": {
26761
+ capName: "llm",
26762
+ capScope: "system",
26763
+ addonId: null,
26764
+ access: "create"
26765
+ },
26766
+ "llmRuntime.complete": {
26767
+ capName: "llm-runtime",
26768
+ capScope: "system",
26769
+ addonId: null,
26770
+ access: "create"
26771
+ },
26772
+ "llmRuntime.deleteModel": {
26773
+ capName: "llm-runtime",
26774
+ capScope: "system",
26775
+ addonId: null,
26776
+ access: "delete"
26777
+ },
26778
+ "llmRuntime.ensureStarted": {
26779
+ capName: "llm-runtime",
26780
+ capScope: "system",
26781
+ addonId: null,
26782
+ access: "create"
26783
+ },
26784
+ "llmRuntime.getDiskUsage": {
26785
+ capName: "llm-runtime",
26786
+ capScope: "system",
26787
+ addonId: null,
26788
+ access: "view"
26789
+ },
26790
+ "llmRuntime.installModel": {
26791
+ capName: "llm-runtime",
26792
+ capScope: "system",
26793
+ addonId: null,
26794
+ access: "create"
26795
+ },
26796
+ "llmRuntime.listLocalModels": {
26797
+ capName: "llm-runtime",
26798
+ capScope: "system",
26799
+ addonId: null,
26800
+ access: "view"
26801
+ },
26802
+ "llmRuntime.status": {
26803
+ capName: "llm-runtime",
26804
+ capScope: "system",
26805
+ addonId: null,
26806
+ access: "view"
26807
+ },
26808
+ "llmRuntime.stop": {
26809
+ capName: "llm-runtime",
26810
+ capScope: "system",
26811
+ addonId: null,
26812
+ access: "create"
26813
+ },
25878
26814
  "localNetwork.getAllowedAddresses": {
25879
26815
  capName: "local-network",
25880
26816
  capScope: "system",
@@ -26505,6 +27441,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
26505
27441
  addonId: null,
26506
27442
  access: "delete"
26507
27443
  },
27444
+ "pipelineAnalytics.deleteTracks": {
27445
+ capName: "pipeline-analytics",
27446
+ capScope: "device",
27447
+ addonId: null,
27448
+ access: "delete"
27449
+ },
26508
27450
  "pipelineAnalytics.getActiveTracks": {
26509
27451
  capName: "pipeline-analytics",
26510
27452
  capScope: "device",
@@ -26571,12 +27513,24 @@ var METHOD_ACCESS_MAP = Object.freeze({
26571
27513
  addonId: null,
26572
27514
  access: "create"
26573
27515
  },
27516
+ "pipelineAnalytics.pruneTracksBefore": {
27517
+ capName: "pipeline-analytics",
27518
+ capScope: "device",
27519
+ addonId: null,
27520
+ access: "create"
27521
+ },
26574
27522
  "pipelineAnalytics.searchObjectEvents": {
26575
27523
  capName: "pipeline-analytics",
26576
27524
  capScope: "device",
26577
27525
  addonId: null,
26578
27526
  access: "view"
26579
27527
  },
27528
+ "pipelineAnalytics.wipeAllAnalytics": {
27529
+ capName: "pipeline-analytics",
27530
+ capScope: "device",
27531
+ addonId: null,
27532
+ access: "delete"
27533
+ },
26580
27534
  "pipelineExecutor.cacheFrameInPool": {
26581
27535
  capName: "pipeline-executor",
26582
27536
  capScope: "system",
@@ -27081,18 +28035,42 @@ var METHOD_ACCESS_MAP = Object.freeze({
27081
28035
  addonId: null,
27082
28036
  access: "create"
27083
28037
  },
28038
+ "plateGallery.assignPlate": {
28039
+ capName: "plate-gallery",
28040
+ capScope: "system",
28041
+ addonId: null,
28042
+ access: "create"
28043
+ },
28044
+ "plateGallery.assignPlates": {
28045
+ capName: "plate-gallery",
28046
+ capScope: "system",
28047
+ addonId: null,
28048
+ access: "create"
28049
+ },
27084
28050
  "plateGallery.correctPlateText": {
27085
28051
  capName: "plate-gallery",
27086
28052
  capScope: "system",
27087
28053
  addonId: null,
27088
28054
  access: "create"
27089
28055
  },
28056
+ "plateGallery.createVehicle": {
28057
+ capName: "plate-gallery",
28058
+ capScope: "system",
28059
+ addonId: null,
28060
+ access: "create"
28061
+ },
27090
28062
  "plateGallery.deletePlate": {
27091
28063
  capName: "plate-gallery",
27092
28064
  capScope: "system",
27093
28065
  addonId: null,
27094
28066
  access: "delete"
27095
28067
  },
28068
+ "plateGallery.deleteVehicle": {
28069
+ capName: "plate-gallery",
28070
+ capScope: "system",
28071
+ addonId: null,
28072
+ access: "delete"
28073
+ },
27096
28074
  "plateGallery.getPlateByTrack": {
27097
28075
  capName: "plate-gallery",
27098
28076
  capScope: "system",
@@ -27111,6 +28089,30 @@ var METHOD_ACCESS_MAP = Object.freeze({
27111
28089
  addonId: null,
27112
28090
  access: "view"
27113
28091
  },
28092
+ "plateGallery.listVehicles": {
28093
+ capName: "plate-gallery",
28094
+ capScope: "system",
28095
+ addonId: null,
28096
+ access: "view"
28097
+ },
28098
+ "plateGallery.listVehicleSamples": {
28099
+ capName: "plate-gallery",
28100
+ capScope: "system",
28101
+ addonId: null,
28102
+ access: "view"
28103
+ },
28104
+ "plateGallery.removeVehicleSample": {
28105
+ capName: "plate-gallery",
28106
+ capScope: "system",
28107
+ addonId: null,
28108
+ access: "delete"
28109
+ },
28110
+ "plateGallery.renameVehicle": {
28111
+ capName: "plate-gallery",
28112
+ capScope: "system",
28113
+ addonId: null,
28114
+ access: "create"
28115
+ },
27114
28116
  "plateGallery.searchPlates": {
27115
28117
  capName: "plate-gallery",
27116
28118
  capScope: "system",
@@ -27123,6 +28125,18 @@ var METHOD_ACCESS_MAP = Object.freeze({
27123
28125
  addonId: null,
27124
28126
  access: "view"
27125
28127
  },
28128
+ "plateGallery.unassignPlate": {
28129
+ capName: "plate-gallery",
28130
+ capScope: "system",
28131
+ addonId: null,
28132
+ access: "create"
28133
+ },
28134
+ "plateGallery.unassignPlates": {
28135
+ capName: "plate-gallery",
28136
+ capScope: "system",
28137
+ addonId: null,
28138
+ access: "create"
28139
+ },
27126
28140
  "platformProbe.getCapabilities": {
27127
28141
  capName: "platform-probe",
27128
28142
  capScope: "system",
@@ -27315,6 +28329,48 @@ var METHOD_ACCESS_MAP = Object.freeze({
27315
28329
  addonId: null,
27316
28330
  access: "create"
27317
28331
  },
28332
+ "sceneMonitor.captureReference": {
28333
+ capName: "scene-monitor",
28334
+ capScope: "device",
28335
+ addonId: null,
28336
+ access: "create"
28337
+ },
28338
+ "sceneMonitor.createScene": {
28339
+ capName: "scene-monitor",
28340
+ capScope: "device",
28341
+ addonId: null,
28342
+ access: "create"
28343
+ },
28344
+ "sceneMonitor.deleteReference": {
28345
+ capName: "scene-monitor",
28346
+ capScope: "device",
28347
+ addonId: null,
28348
+ access: "delete"
28349
+ },
28350
+ "sceneMonitor.deleteScene": {
28351
+ capName: "scene-monitor",
28352
+ capScope: "device",
28353
+ addonId: null,
28354
+ access: "delete"
28355
+ },
28356
+ "sceneMonitor.listScenes": {
28357
+ capName: "scene-monitor",
28358
+ capScope: "device",
28359
+ addonId: null,
28360
+ access: "view"
28361
+ },
28362
+ "sceneMonitor.recheckNow": {
28363
+ capName: "scene-monitor",
28364
+ capScope: "device",
28365
+ addonId: null,
28366
+ access: "create"
28367
+ },
28368
+ "sceneMonitor.updateScene": {
28369
+ capName: "scene-monitor",
28370
+ capScope: "device",
28371
+ addonId: null,
28372
+ access: "create"
28373
+ },
27318
28374
  "scriptRunner.run": {
27319
28375
  capName: "script-runner",
27320
28376
  capScope: "device",
@@ -28448,6 +29504,8 @@ var KNOWN_CAP_NAMES = [
28448
29504
  "integrations",
28449
29505
  "intercom",
28450
29506
  "lawn-mower-control",
29507
+ "llm",
29508
+ "llm-runtime",
28451
29509
  "local-network",
28452
29510
  "lock-control",
28453
29511
  "log-destination",
@@ -28482,6 +29540,7 @@ var KNOWN_CAP_NAMES = [
28482
29540
  "ptz-autotrack",
28483
29541
  "reboot",
28484
29542
  "recording",
29543
+ "scene-monitor",
28485
29544
  "script-runner",
28486
29545
  "server-management",
28487
29546
  "settings-store",
@@ -28552,6 +29611,7 @@ var DEVICE_CAP_NAMES = [
28552
29611
  "ptz",
28553
29612
  "ptz-autotrack",
28554
29613
  "reboot",
29614
+ "scene-monitor",
28555
29615
  "script-runner",
28556
29616
  "snapshot",
28557
29617
  "stream-catalog",
@@ -28595,6 +29655,8 @@ var SYSTEM_CAP_NAMES = [
28595
29655
  "face-gallery",
28596
29656
  "filesystem-browse",
28597
29657
  "integrations",
29658
+ "llm",
29659
+ "llm-runtime",
28598
29660
  "local-network",
28599
29661
  "log-destination",
28600
29662
  "login-method",
@@ -28690,6 +29752,7 @@ var SCOPE_PRESETS = [
28690
29752
  var CAP_PROVIDER_KIND_MAP = Object.freeze({
28691
29753
  "broker": "broker",
28692
29754
  "device-export": "device-export",
29755
+ "llm": "ai",
28693
29756
  "mesh-network": "mesh",
28694
29757
  "mqtt-broker": "broker",
28695
29758
  "network-access": "ingress",
@@ -28699,6 +29762,7 @@ var CAP_PROVIDER_KIND_MAP = Object.freeze({
28699
29762
  var PROVIDER_KIND_CAP_NAMES = [
28700
29763
  "broker",
28701
29764
  "device-export",
29765
+ "llm",
28702
29766
  "mesh-network",
28703
29767
  "mqtt-broker",
28704
29768
  "network-access",
@@ -29446,6 +30510,24 @@ exports.KeyEventSchema = KeyEventSchema;
29446
30510
  exports.LabelDefinitionSchema = LabelDefinitionSchema;
29447
30511
  exports.LawnMowerActivitySchema = LawnMowerActivitySchema;
29448
30512
  exports.LawnMowerControlStatusSchema = LawnMowerControlStatusSchema;
30513
+ exports.LlmDefaultSchema = LlmDefaultSchema;
30514
+ exports.LlmDefaultSelectorSchema = LlmDefaultSelectorSchema;
30515
+ exports.LlmErrorCodeSchema = LlmErrorCodeSchema;
30516
+ exports.LlmGenerateBaseInputSchema = LlmGenerateBaseInputSchema;
30517
+ exports.LlmGenerateErrSchema = LlmGenerateErrSchema;
30518
+ exports.LlmGenerateOkSchema = LlmGenerateOkSchema;
30519
+ exports.LlmGenerateResultSchema = LlmGenerateResultSchema;
30520
+ exports.LlmImageSchema = LlmImageSchema;
30521
+ exports.LlmNodeModelSchema = LlmNodeModelSchema;
30522
+ exports.LlmProfileKindDescriptorSchema = LlmProfileKindDescriptorSchema;
30523
+ exports.LlmProfileKindSchema = LlmProfileKindSchema;
30524
+ exports.LlmProfileSchema = LlmProfileSchema;
30525
+ exports.LlmRuntimeCompleteInputSchema = LlmRuntimeCompleteInputSchema;
30526
+ exports.LlmRuntimeDiskUsageSchema = LlmRuntimeDiskUsageSchema;
30527
+ exports.LlmRuntimeNodeSchema = LlmRuntimeNodeSchema;
30528
+ exports.LlmRuntimeStatusSchema = LlmRuntimeStatusSchema;
30529
+ exports.LlmUsageRollupSchema = LlmUsageRollupSchema;
30530
+ exports.LlmUsageSchema = LlmUsageSchema;
29449
30531
  exports.LocateSegmentResultSchema = LocateSegmentResultSchema;
29450
30532
  exports.LocationStatSchema = LocationStatSchema;
29451
30533
  exports.LockControlStatusSchema = LockControlStatusSchema;
@@ -29463,6 +30545,9 @@ exports.MAX_EXPRESSION_EVAL_STEPS = MAX_EXPRESSION_EVAL_STEPS;
29463
30545
  exports.MAX_EXPRESSION_SOURCE_LENGTH = MAX_EXPRESSION_SOURCE_LENGTH;
29464
30546
  exports.METHOD_ACCESS_MAP = METHOD_ACCESS_MAP;
29465
30547
  exports.MODEL_FORMATS = MODEL_FORMATS;
30548
+ exports.ManagedModelCatalogEntrySchema = ManagedModelCatalogEntrySchema;
30549
+ exports.ManagedModelRefSchema = ManagedModelRefSchema;
30550
+ exports.ManagedRuntimeConfigSchema = ManagedRuntimeConfigSchema;
29466
30551
  exports.MaskGridDimsSchema = MaskGridDimsSchema;
29467
30552
  exports.MaskGridShapeSchema = MaskGridShapeSchema;
29468
30553
  exports.MaskLineShapeSchema = MaskLineShapeSchema;
@@ -29533,6 +30618,7 @@ exports.PROVIDER_KIND_CAP_NAMES = PROVIDER_KIND_CAP_NAMES;
29533
30618
  exports.PYTHON_SCRIPT = PYTHON_SCRIPT;
29534
30619
  exports.PackageUpdateSchema = PackageUpdateSchema;
29535
30620
  exports.PackageVersionInfoSchema = PackageVersionInfoSchema;
30621
+ exports.PasskeyLoginMethodSchema = PasskeyLoginMethodSchema;
29536
30622
  exports.PasskeySummarySchema = PasskeySummarySchema;
29537
30623
  exports.PcmSampleFormatSchema = PcmSampleFormatSchema;
29538
30624
  exports.PerScopeBreakdownSchema = PerScopeBreakdownSchema;
@@ -29617,6 +30703,12 @@ exports.STREAM_PROFILE_META = STREAM_PROFILE_META;
29617
30703
  exports.STREAM_QUALITY_LABELS = STREAM_QUALITY_LABELS;
29618
30704
  exports.SUB_DETECTION_TYPES = SUB_DETECTION_TYPES;
29619
30705
  exports.SYSTEM_CAP_NAMES = SYSTEM_CAP_NAMES;
30706
+ exports.SceneCheckSchema = SceneCheckSchema;
30707
+ exports.SceneConditionSchema = SceneConditionSchema;
30708
+ exports.SceneMonitorSchema = SceneMonitorSchema;
30709
+ exports.SceneMonitorStateSchema = SceneMonitorStateSchema;
30710
+ exports.SceneMonitorStatusSchema = SceneMonitorStatusSchema;
30711
+ exports.SceneReferenceSchema = SceneReferenceSchema;
29620
30712
  exports.ScopedTokenSchema = ScopedTokenSchema;
29621
30713
  exports.ScopedTokenSummarySchema = ScopedTokenSummarySchema;
29622
30714
  exports.ScoredObjectEventSchema = ScoredObjectEventSchema;
@@ -29691,6 +30783,7 @@ exports.TokenScopeSchema = TokenScopeSchema;
29691
30783
  exports.TopologyNodeSchema = TopologyNodeSchema;
29692
30784
  exports.TopologyProcessSchema = TopologyProcessSchema;
29693
30785
  exports.TopologyServiceSchema = TopologyServiceSchema;
30786
+ exports.TrackCascadeCountsSchema = TrackCascadeCountsSchema;
29694
30787
  exports.TrackSchema = TrackSchema;
29695
30788
  exports.TrackStateSchema = TrackStateSchema;
29696
30789
  exports.TrackedDetectionSchema = TrackedDetectionSchema;
@@ -29858,6 +30951,7 @@ exports.integrationsCapability = integrationsCapability;
29858
30951
  exports.intercomCapability = intercomCapability;
29859
30952
  exports.isAgentOnlyPlacement = isAgentOnlyPlacement;
29860
30953
  exports.isArrayOutputSchema = isArrayOutputSchema;
30954
+ exports.isCollectionArrayMethod = isCollectionArrayMethod;
29861
30955
  exports.isDeployableToAgent = isDeployableToAgent;
29862
30956
  exports.isDeviceConfigCap = require_sleep.isDeviceConfigCap;
29863
30957
  exports.isEvent = require_sleep.isEvent;
@@ -29870,6 +30964,8 @@ exports.lifecycleJobSchema = lifecycleJobSchema;
29870
30964
  exports.lifecycleJobScopeSchema = lifecycleJobScopeSchema;
29871
30965
  exports.lifecycleJobStateSchema = lifecycleJobStateSchema;
29872
30966
  exports.lifecycleTaskSchema = lifecycleTaskSchema;
30967
+ exports.llmCapability = llmCapability;
30968
+ exports.llmRuntimeCapability = llmRuntimeCapability;
29873
30969
  exports.localNetworkCapability = localNetworkCapability;
29874
30970
  exports.locationSimilarity = locationSimilarity;
29875
30971
  exports.lockControlCapability = lockControlCapability;
@@ -29953,6 +31049,7 @@ exports.resolveRunnerId = resolveRunnerId;
29953
31049
  exports.resolveVariantModelId = resolveVariantModelId;
29954
31050
  exports.runInferenceStep = runInferenceStep;
29955
31051
  exports.runtimeDevices = runtimeDevices;
31052
+ exports.sceneMonitorCapability = sceneMonitorCapability;
29956
31053
  exports.scopeKey = require_sleep.scopeKey;
29957
31054
  exports.scoreRuntimes = scoreRuntimes;
29958
31055
  exports.scriptRunnerCapability = scriptRunnerCapability;