@camstack/types 1.1.42 → 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 (41) 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 +8 -4
  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 +14 -7
  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 +26 -0
  16. package/dist/capabilities/pipeline-orchestrator.cap.d.ts +16 -0
  17. package/dist/capabilities/pipeline-runner.cap.d.ts +107 -0
  18. package/dist/capabilities/plate-gallery.cap.d.ts +114 -0
  19. package/dist/capabilities/platform-probe.cap.d.ts +1 -0
  20. package/dist/capabilities/scene-monitor.cap.d.ts +483 -0
  21. package/dist/enums/event-category.d.ts +33 -0
  22. package/dist/generated/addon-api.d.ts +3305 -1081
  23. package/dist/generated/cap-status-types.d.ts +3 -1
  24. package/dist/generated/capability-router-map.d.ts +13 -4
  25. package/dist/generated/device-local-state.d.ts +3 -0
  26. package/dist/generated/device-proxy.d.ts +4 -1
  27. package/dist/generated/method-access-map.d.ts +1 -1
  28. package/dist/generated/provider-kind-map.d.ts +1 -1
  29. package/dist/generated/system-proxy.d.ts +3 -1
  30. package/dist/index.js +1201 -48
  31. package/dist/index.mjs +1169 -49
  32. package/dist/interfaces/advanced-notifier.d.ts +2 -0
  33. package/dist/interfaces/event-bus.d.ts +111 -2
  34. package/dist/interfaces/pipeline-executor-capability.d.ts +9 -0
  35. package/dist/interfaces/pipeline-runner-capability.d.ts +8 -0
  36. package/dist/{sleep-BC9Yqte7.mjs → sleep-DkhOVOjW.mjs} +49 -1
  37. package/dist/{sleep-ByctZsHo.js → sleep-k6I1e98_.js} +49 -1
  38. package/dist/types/detection.d.ts +12 -0
  39. package/dist/types/models.d.ts +33 -1
  40. package/dist/types/pipeline-step.d.ts +31 -0
  41. 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-ByctZsHo.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",
@@ -7880,7 +7883,15 @@ var pipelineExecutorCapability = {
7880
7883
  image: zod.z.instanceof(Uint8Array).optional(),
7881
7884
  referenceImage: zod.z.string().optional(),
7882
7885
  deviceId: zod.z.number().optional(),
7883
- sessionId: zod.z.string().optional()
7886
+ sessionId: zod.z.string().optional(),
7887
+ /**
7888
+ * Execution plane. 'full' (default) runs the whole tree — benchmark,
7889
+ * reference-image, and detail-subtree calls. 'frame' is the live
7890
+ * per-frame dispatch: ONLY root-plane steps run; crop children
7891
+ * (inputClasses ≠ null) are skipped and served per-track via
7892
+ * pipelineRunner.runDetailSubtree (two-plane design).
7893
+ */
7894
+ plane: zod.z.enum(["full", "frame"]).optional()
7884
7895
  }), PipelineRunResultBridge, { kind: "mutation" }),
7885
7896
  /**
7886
7897
  * Batched run — N raw frames packed into one cap call. The provider
@@ -8114,6 +8125,28 @@ var NativeCropResultSchema = zod.z.object({
8114
8125
  width: zod.z.number().int().positive(),
8115
8126
  height: zod.z.number().int().positive()
8116
8127
  });
8128
+ /** Parent detection context passed to `runDetailSubtree` — the crop's
8129
+ * originating detection, in FRAME-space coordinates. Reuses
8130
+ * `NativeCropBboxSchema`'s `{x,y,w,h}` shape (same numeric fields; here
8131
+ * the coordinates are frame-space rather than getNativeCrop's
8132
+ * normalized [0,1] convention). */
8133
+ var DetailParentSchema = zod.z.object({
8134
+ bbox: NativeCropBboxSchema,
8135
+ className: zod.z.string()
8136
+ });
8137
+ /** One child-step result from `runDetailSubtree` — an embedding, label,
8138
+ * or refined detection produced by running the crop-subtree on a
8139
+ * single tracked detection. */
8140
+ var DetailResultSchema = zod.z.object({
8141
+ stepId: zod.z.string(),
8142
+ className: zod.z.string(),
8143
+ score: zod.z.number(),
8144
+ /** FRAME-space bbox (already mapped back from crop space). */
8145
+ bbox: NativeCropBboxSchema.optional(),
8146
+ embedding: zod.z.string().optional(),
8147
+ label: zod.z.string().optional(),
8148
+ alignedCropJpeg: zod.z.string().optional()
8149
+ });
8117
8150
  /**
8118
8151
  * Per-camera tunable ranges + defaults. Single source of truth used
8119
8152
  * by both the Zod data schema (validation + default fallback) and
@@ -8557,7 +8590,27 @@ var pipelineRunnerCapability = {
8557
8590
  handle: require_sleep.FrameHandleSchema,
8558
8591
  bbox: NativeCropBboxSchema,
8559
8592
  maxWidth: zod.z.number().int().positive().optional()
8560
- }), NativeCropResultSchema.nullable())
8593
+ }), NativeCropResultSchema.nullable()),
8594
+ /**
8595
+ * Two-plane design: run the DETAIL subtree (crop children —
8596
+ * embedding, classifier, refiner steps whose `inputClasses ≠ null`)
8597
+ * for a single tracked detection. The per-frame plane (`runPipeline`
8598
+ * with `plane: 'frame'`) skips crop children entirely; a track-level
8599
+ * caller invokes this per-track, on its own cadence, instead of on
8600
+ * every frame. Takes either a `frameHandle` (shm lease/session —
8601
+ * preferred, zero-copy) or a `cropJpeg` fallback when the lease/
8602
+ * session backing the frame is already gone. `steps` narrows which
8603
+ * configured children to run (default: all configured children for
8604
+ * `parent.className`). Returns `null` when neither frame source is
8605
+ * resolvable (handle evicted and no cropJpeg fallback supplied).
8606
+ */
8607
+ runDetailSubtree: require_sleep.method(zod.z.object({
8608
+ deviceId: zod.z.number(),
8609
+ frameHandle: require_sleep.FrameHandleSchema.optional(),
8610
+ cropJpeg: zod.z.string().optional(),
8611
+ parent: DetailParentSchema,
8612
+ steps: zod.z.array(zod.z.string()).optional()
8613
+ }), zod.z.object({ details: zod.z.array(DetailResultSchema) }).nullable(), { kind: "mutation" })
8561
8614
  }
8562
8615
  };
8563
8616
  //#endregion
@@ -9663,6 +9716,169 @@ var ptzAutotrackCapability = {
9663
9716
  runtimeState: PtzAutotrackRuntimeStateSchema
9664
9717
  };
9665
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
9666
9882
  //#region src/capabilities/script-runner.cap.ts
9667
9883
  /**
9668
9884
  * Script-runner cap. Models HA `script.*` entities on
@@ -10749,6 +10965,7 @@ var DEVICE_LOCAL_STATE_CAPS = {
10749
10965
  pressureSensor: pressureSensorCapability,
10750
10966
  privacyMask: privacyMaskCapability,
10751
10967
  ptzAutotrack: ptzAutotrackCapability,
10968
+ sceneMonitor: sceneMonitorCapability,
10752
10969
  scriptRunner: scriptRunnerCapability,
10753
10970
  smoke: smokeCapability,
10754
10971
  streamParams: streamParamsCapability,
@@ -12508,6 +12725,27 @@ function createSystemProxy(api) {
12508
12725
  getAvailableTypes: (input) => dispatch("integrations", "getAvailableTypes", "query", input),
12509
12726
  testConnection: (input) => dispatch("integrations", "testConnection", "mutation", input)
12510
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
+ },
12511
12749
  localNetwork: {
12512
12750
  list: (input) => dispatch("localNetwork", "list", "query", input),
12513
12751
  getPreferred: (input) => dispatch("localNetwork", "getPreferred", "query", input),
@@ -12657,7 +12895,17 @@ function createSystemProxy(api) {
12657
12895
  searchPlates: (input) => dispatch("plateGallery", "searchPlates", "query", input),
12658
12896
  suggestPlateClusters: (input) => dispatch("plateGallery", "suggestPlateClusters", "query", input),
12659
12897
  correctPlateText: (input) => dispatch("plateGallery", "correctPlateText", "mutation", input),
12660
- 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)
12661
12909
  },
12662
12910
  recording: { getStorageUsage: (input) => dispatch("recording", "getStorageUsage", "query", input) },
12663
12911
  serverManagement: {
@@ -13859,7 +14107,12 @@ var NotificationRuleConditionsSchema = zod.z.object({
13859
14107
  clipDescription: zod.z.object({
13860
14108
  text: zod.z.string().min(1),
13861
14109
  minSimilarity: zod.z.number().min(0).max(1)
13862
- }).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()
13863
14116
  });
13864
14117
  var NotificationRuleTemplateSchema = zod.z.object({
13865
14118
  title: zod.z.string(),
@@ -14289,11 +14542,19 @@ var authProviderCapability = {
14289
14542
  * login page needs NO change.
14290
14543
  *
14291
14544
  * - `widget` — a Module-Federation widget the login page mounts (via
14292
- * `loadRemoteBundle`) for an in-page ceremony. Covers the passkey
14293
- * login ceremony, which must run `@simplewebauthn/browser` INSIDE the
14294
- * addon bundle. The referenced widget also declares `preAuth: true` in
14295
- * its `addon-widgets-source` catalog entry. `auth.listLoginMethods`
14296
- * 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.
14297
14558
  *
14298
14559
  * Every contribution carries a `stage`:
14299
14560
  * - `primary` — shown on the first credentials screen (OIDC /
@@ -14342,8 +14603,30 @@ var WidgetLoginMethodSchema = zod.z.object({
14342
14603
  remote: WidgetRemoteSchema,
14343
14604
  stage: LoginStageEnum
14344
14605
  });
14345
- /** One login-method contribution — redirect button OR pre-auth widget. */
14346
- 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
+ ]);
14347
14630
  var loginMethodCapability = {
14348
14631
  name: "login-method",
14349
14632
  scope: "system",
@@ -14865,18 +15148,6 @@ var cameraPipelineConfigCapability = {
14865
15148
  };
14866
15149
  //#endregion
14867
15150
  //#region src/capabilities/cap-router-predicates.ts
14868
- /**
14869
- * Shared cap-router predicates — the SINGLE source for the structural Zod-shape
14870
- * checks + naming used by BOTH the runtime cap-router builder
14871
- * (`@camstack/system` `cap-router-builder.ts` + the server's
14872
- * `cap-router-runtime.ts`) AND the codegen scripts (`scripts/generate-cap-*.ts`).
14873
- *
14874
- * These used to be independently reimplemented on each side, held in sync only
14875
- * by "must stay byte-identical" comments — a live drift risk. Consolidating them
14876
- * here (next to `resolveCapMount` / `expandCapMethods`, the other shared model)
14877
- * makes the two paths provably agree. Each predicate accepts both Zod 4
14878
- * (`_def.type`) and legacy Zod 3 (`_def.typeName` / `constructor.name`) shapes.
14879
- */
14880
15151
  /** `z.void()` — input carries no data. */
14881
15152
  function isVoidInput(schema) {
14882
15153
  const def = schema._def;
@@ -14904,6 +15175,26 @@ function isArrayOutputSchema(schema) {
14904
15175
  return false;
14905
15176
  }
14906
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
+ /**
14907
15198
  * Apply `.loose()` to an object input schema when available (Zod 4) so the
14908
15199
  * router accepts the out-of-band `nodeId`/`addonId` selector keys without
14909
15200
  * stripping them. Falls back to the schema unchanged when `.loose()` is absent.
@@ -17162,14 +17453,14 @@ var TargetKindCapsSchema = zod.z.object({
17162
17453
  * the union is large and not meant for runtime validation here; the exported
17163
17454
  * `TargetKind` type re-tightens `configSchema` to `ConfigUISchema`.
17164
17455
  */
17165
- var ConfigSchemaPassthrough = zod.z.unknown();
17456
+ var ConfigSchemaPassthrough$1 = zod.z.unknown();
17166
17457
  var TargetKindSchema = zod.z.object({
17167
17458
  kind: zod.z.string(),
17168
17459
  label: zod.z.string(),
17169
17460
  icon: zod.z.string(),
17170
17461
  /** Stamped by each provider so the concat-fanned catalog stays routable. */
17171
17462
  addonId: zod.z.string(),
17172
- configSchema: ConfigSchemaPassthrough,
17463
+ configSchema: ConfigSchemaPassthrough$1,
17173
17464
  supportsDiscovery: zod.z.boolean(),
17174
17465
  caps: TargetKindCapsSchema
17175
17466
  });
@@ -17236,6 +17527,352 @@ var notificationOutputCapability = {
17236
17527
  }
17237
17528
  };
17238
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
17239
17876
  //#region src/schemas/auth-records.ts
17240
17877
  /**
17241
17878
  * Zod schemas for persisted record types.
@@ -17463,6 +18100,10 @@ var TrackSchema = zod.z.object({
17463
18100
  snapshots: zod.z.array(TrackSnapshotSchema).readonly(),
17464
18101
  /** Deduplicated zones the track has entered at least once. */
17465
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(),
17466
18107
  /** Cumulative normalized distance travelled (0..1 units = full frame width). */
17467
18108
  totalDistance: zod.z.number(),
17468
18109
  state: TrackStateSchema,
@@ -17632,6 +18273,23 @@ var TrackedDetectionSchema = zod.z.object({
17632
18273
  zones: zod.z.array(zod.z.string()).readonly(),
17633
18274
  state: TrackStateSchema
17634
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
+ });
17635
18293
  var ScoredObjectEventSchema = ObjectEventSchema.extend({ score: zod.z.number() });
17636
18294
  var SearchObjectEventsInput = zod.z.object({
17637
18295
  text: zod.z.string(),
@@ -17642,6 +18300,20 @@ var SearchObjectEventsInput = zod.z.object({
17642
18300
  limit: zod.z.number().default(50),
17643
18301
  minScore: zod.z.number().min(0).max(1).default(.2)
17644
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
+ });
17645
18317
  var pipelineAnalyticsCapability = {
17646
18318
  name: "pipeline-analytics",
17647
18319
  scope: "device",
@@ -17695,12 +18367,14 @@ var pipelineAnalyticsCapability = {
17695
18367
  audio: zod.z.number().int()
17696
18368
  })).readonly()),
17697
18369
  /**
17698
- * Delete all events (motion + object + audio) for the given device
17699
- * that are older than `cutoffMs` (exclusive), and delete their
17700
- * thumbnails in lockstep. Returns per-kind deleted counts.
17701
- *
17702
- * Called by Phase B3 recorder orchestration to keep event history
17703
- * 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.
17704
18378
  */
17705
18379
  pruneEventsBefore: require_sleep.method(zod.z.object({
17706
18380
  deviceId: zod.z.number(),
@@ -17713,6 +18387,55 @@ var pipelineAnalyticsCapability = {
17713
18387
  kind: "mutation",
17714
18388
  auth: "admin"
17715
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
+ }),
17716
18439
  getEventMedia: require_sleep.method(zod.z.object({
17717
18440
  eventId: zod.z.string(),
17718
18441
  kind: MediaFileKindEnum.optional()
@@ -17730,17 +18453,19 @@ var pipelineAnalyticsCapability = {
17730
18453
  },
17731
18454
  events: {
17732
18455
  /**
17733
- * Enriched frame emitted after refinement. Carries lightweight
17734
- * tracked-detection metadata (track id, class, zones, state) so
17735
- * downstream consumers (stream overlays, notifications) can
17736
- * 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.
17737
18462
  */
17738
18463
  onFrameTracked: { data: zod.z.object({
17739
18464
  deviceId: zod.z.number(),
17740
18465
  timestamp: zod.z.number(),
17741
18466
  frameWidth: zod.z.number(),
17742
18467
  frameHeight: zod.z.number(),
17743
- detections: zod.z.array(TrackedDetectionSchema).readonly()
18468
+ detections: zod.z.array(OverlayDetectionSchema).readonly()
17744
18469
  }) },
17745
18470
  /** Track entered active state (first-seen). */
17746
18471
  onTrackStarted: { data: zod.z.object({
@@ -21792,17 +22517,45 @@ setOverlay: require_sleep.method(zod.z.object({
21792
22517
  };
21793
22518
  //#endregion
21794
22519
  //#region src/capabilities/plate-gallery.cap.ts
21795
- var PlateInfoSchema = zod.z.object({
21796
- plateId: zod.z.string(),
21797
- deviceId: zod.z.number().int(),
21798
- trackId: zod.z.string(),
21799
- timestamp: zod.z.number().int(),
21800
- /** Normalized OCR text (upper, no separators), or the human-corrected value. */
21801
- text: zod.z.string(),
21802
- /** OCR confidence of the stored read (0..1); 1 when manually corrected. */
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
+ });
22538
+ var PlateInfoSchema = zod.z.object({
22539
+ plateId: zod.z.string(),
22540
+ deviceId: zod.z.number().int(),
22541
+ trackId: zod.z.string(),
22542
+ timestamp: zod.z.number().int(),
22543
+ /** Normalized OCR text (upper, no separators), or the human-corrected value. */
22544
+ text: zod.z.string(),
22545
+ /** OCR confidence of the stored read (0..1); 1 when manually corrected. */
21803
22546
  score: zod.z.number(),
21804
22547
  /** True when the text was manually corrected (exempt from retention). */
21805
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(),
21806
22559
  base64: zod.z.string().optional()
21807
22560
  });
21808
22561
  var MediaFileLiteSchema = zod.z.object({
@@ -21864,6 +22617,58 @@ var plateGalleryCapability = {
21864
22617
  deletePlate: require_sleep.method(zod.z.object({ plateId: zod.z.string() }), zod.z.void(), {
21865
22618
  kind: "mutation",
21866
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"
21867
22672
  })
21868
22673
  }
21869
22674
  };
@@ -23062,6 +23867,8 @@ var CAPABILITY_NAMES = {
23062
23867
  integrations: "integrations",
23063
23868
  intercom: "intercom",
23064
23869
  lawnMowerControl: "lawn-mower-control",
23870
+ llm: "llm",
23871
+ llmRuntime: "llm-runtime",
23065
23872
  localNetwork: "local-network",
23066
23873
  lockControl: "lock-control",
23067
23874
  logDestination: "log-destination",
@@ -23100,6 +23907,7 @@ var CAPABILITY_NAMES = {
23100
23907
  ptzAutotrack: "ptz-autotrack",
23101
23908
  reboot: "reboot",
23102
23909
  recording: "recording",
23910
+ sceneMonitor: "scene-monitor",
23103
23911
  scriptRunner: "script-runner",
23104
23912
  serverManagement: "server-management",
23105
23913
  settingsStore: "settings-store",
@@ -23404,6 +24212,14 @@ var CAPABILITY_ROUTER_KEYS = [
23404
24212
  key: "lawnMowerControl",
23405
24213
  name: "lawn-mower-control"
23406
24214
  },
24215
+ {
24216
+ key: "llm",
24217
+ name: "llm"
24218
+ },
24219
+ {
24220
+ key: "llmRuntime",
24221
+ name: "llm-runtime"
24222
+ },
23407
24223
  {
23408
24224
  key: "localNetwork",
23409
24225
  name: "local-network"
@@ -23556,6 +24372,10 @@ var CAPABILITY_ROUTER_KEYS = [
23556
24372
  key: "recording",
23557
24373
  name: "recording"
23558
24374
  },
24375
+ {
24376
+ key: "sceneMonitor",
24377
+ name: "scene-monitor"
24378
+ },
23559
24379
  {
23560
24380
  key: "scriptRunner",
23561
24381
  name: "script-runner"
@@ -23766,6 +24586,8 @@ var ALL_CAPABILITY_DEFINITIONS = [
23766
24586
  integrationsCapability,
23767
24587
  intercomCapability,
23768
24588
  lawnMowerControlCapability,
24589
+ llmCapability,
24590
+ llmRuntimeCapability,
23769
24591
  localNetworkCapability,
23770
24592
  lockControlCapability,
23771
24593
  logDestinationCapability,
@@ -23804,6 +24626,7 @@ var ALL_CAPABILITY_DEFINITIONS = [
23804
24626
  ptzAutotrackCapability,
23805
24627
  rebootCapability,
23806
24628
  recordingCapability,
24629
+ sceneMonitorCapability,
23807
24630
  scriptRunnerCapability,
23808
24631
  serverManagementCapability,
23809
24632
  settingsStoreCapability,
@@ -23900,6 +24723,7 @@ var CAP_NAMES_WITH_STATUS = [
23900
24723
  "ptz",
23901
24724
  "ptz-autotrack",
23902
24725
  "recording",
24726
+ "scene-monitor",
23903
24727
  "script-runner",
23904
24728
  "smoke",
23905
24729
  "snapshot",
@@ -25825,6 +26649,168 @@ var METHOD_ACCESS_MAP = Object.freeze({
25825
26649
  addonId: null,
25826
26650
  access: "create"
25827
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
+ },
25828
26814
  "localNetwork.getAllowedAddresses": {
25829
26815
  capName: "local-network",
25830
26816
  capScope: "system",
@@ -26455,6 +27441,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
26455
27441
  addonId: null,
26456
27442
  access: "delete"
26457
27443
  },
27444
+ "pipelineAnalytics.deleteTracks": {
27445
+ capName: "pipeline-analytics",
27446
+ capScope: "device",
27447
+ addonId: null,
27448
+ access: "delete"
27449
+ },
26458
27450
  "pipelineAnalytics.getActiveTracks": {
26459
27451
  capName: "pipeline-analytics",
26460
27452
  capScope: "device",
@@ -26521,12 +27513,24 @@ var METHOD_ACCESS_MAP = Object.freeze({
26521
27513
  addonId: null,
26522
27514
  access: "create"
26523
27515
  },
27516
+ "pipelineAnalytics.pruneTracksBefore": {
27517
+ capName: "pipeline-analytics",
27518
+ capScope: "device",
27519
+ addonId: null,
27520
+ access: "create"
27521
+ },
26524
27522
  "pipelineAnalytics.searchObjectEvents": {
26525
27523
  capName: "pipeline-analytics",
26526
27524
  capScope: "device",
26527
27525
  addonId: null,
26528
27526
  access: "view"
26529
27527
  },
27528
+ "pipelineAnalytics.wipeAllAnalytics": {
27529
+ capName: "pipeline-analytics",
27530
+ capScope: "device",
27531
+ addonId: null,
27532
+ access: "delete"
27533
+ },
26530
27534
  "pipelineExecutor.cacheFrameInPool": {
26531
27535
  capName: "pipeline-executor",
26532
27536
  capScope: "system",
@@ -27025,18 +28029,48 @@ var METHOD_ACCESS_MAP = Object.freeze({
27025
28029
  addonId: null,
27026
28030
  access: "create"
27027
28031
  },
28032
+ "pipelineRunner.runDetailSubtree": {
28033
+ capName: "pipeline-runner",
28034
+ capScope: "system",
28035
+ addonId: null,
28036
+ access: "create"
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
+ },
27028
28050
  "plateGallery.correctPlateText": {
27029
28051
  capName: "plate-gallery",
27030
28052
  capScope: "system",
27031
28053
  addonId: null,
27032
28054
  access: "create"
27033
28055
  },
28056
+ "plateGallery.createVehicle": {
28057
+ capName: "plate-gallery",
28058
+ capScope: "system",
28059
+ addonId: null,
28060
+ access: "create"
28061
+ },
27034
28062
  "plateGallery.deletePlate": {
27035
28063
  capName: "plate-gallery",
27036
28064
  capScope: "system",
27037
28065
  addonId: null,
27038
28066
  access: "delete"
27039
28067
  },
28068
+ "plateGallery.deleteVehicle": {
28069
+ capName: "plate-gallery",
28070
+ capScope: "system",
28071
+ addonId: null,
28072
+ access: "delete"
28073
+ },
27040
28074
  "plateGallery.getPlateByTrack": {
27041
28075
  capName: "plate-gallery",
27042
28076
  capScope: "system",
@@ -27055,6 +28089,30 @@ var METHOD_ACCESS_MAP = Object.freeze({
27055
28089
  addonId: null,
27056
28090
  access: "view"
27057
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
+ },
27058
28116
  "plateGallery.searchPlates": {
27059
28117
  capName: "plate-gallery",
27060
28118
  capScope: "system",
@@ -27067,6 +28125,18 @@ var METHOD_ACCESS_MAP = Object.freeze({
27067
28125
  addonId: null,
27068
28126
  access: "view"
27069
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
+ },
27070
28140
  "platformProbe.getCapabilities": {
27071
28141
  capName: "platform-probe",
27072
28142
  capScope: "system",
@@ -27259,6 +28329,48 @@ var METHOD_ACCESS_MAP = Object.freeze({
27259
28329
  addonId: null,
27260
28330
  access: "create"
27261
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
+ },
27262
28374
  "scriptRunner.run": {
27263
28375
  capName: "script-runner",
27264
28376
  capScope: "device",
@@ -28392,6 +29504,8 @@ var KNOWN_CAP_NAMES = [
28392
29504
  "integrations",
28393
29505
  "intercom",
28394
29506
  "lawn-mower-control",
29507
+ "llm",
29508
+ "llm-runtime",
28395
29509
  "local-network",
28396
29510
  "lock-control",
28397
29511
  "log-destination",
@@ -28426,6 +29540,7 @@ var KNOWN_CAP_NAMES = [
28426
29540
  "ptz-autotrack",
28427
29541
  "reboot",
28428
29542
  "recording",
29543
+ "scene-monitor",
28429
29544
  "script-runner",
28430
29545
  "server-management",
28431
29546
  "settings-store",
@@ -28496,6 +29611,7 @@ var DEVICE_CAP_NAMES = [
28496
29611
  "ptz",
28497
29612
  "ptz-autotrack",
28498
29613
  "reboot",
29614
+ "scene-monitor",
28499
29615
  "script-runner",
28500
29616
  "snapshot",
28501
29617
  "stream-catalog",
@@ -28539,6 +29655,8 @@ var SYSTEM_CAP_NAMES = [
28539
29655
  "face-gallery",
28540
29656
  "filesystem-browse",
28541
29657
  "integrations",
29658
+ "llm",
29659
+ "llm-runtime",
28542
29660
  "local-network",
28543
29661
  "log-destination",
28544
29662
  "login-method",
@@ -28634,6 +29752,7 @@ var SCOPE_PRESETS = [
28634
29752
  var CAP_PROVIDER_KIND_MAP = Object.freeze({
28635
29753
  "broker": "broker",
28636
29754
  "device-export": "device-export",
29755
+ "llm": "ai",
28637
29756
  "mesh-network": "mesh",
28638
29757
  "mqtt-broker": "broker",
28639
29758
  "network-access": "ingress",
@@ -28643,6 +29762,7 @@ var CAP_PROVIDER_KIND_MAP = Object.freeze({
28643
29762
  var PROVIDER_KIND_CAP_NAMES = [
28644
29763
  "broker",
28645
29764
  "device-export",
29765
+ "llm",
28646
29766
  "mesh-network",
28647
29767
  "mqtt-broker",
28648
29768
  "network-access",
@@ -29390,6 +30510,24 @@ exports.KeyEventSchema = KeyEventSchema;
29390
30510
  exports.LabelDefinitionSchema = LabelDefinitionSchema;
29391
30511
  exports.LawnMowerActivitySchema = LawnMowerActivitySchema;
29392
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;
29393
30531
  exports.LocateSegmentResultSchema = LocateSegmentResultSchema;
29394
30532
  exports.LocationStatSchema = LocationStatSchema;
29395
30533
  exports.LockControlStatusSchema = LockControlStatusSchema;
@@ -29407,6 +30545,9 @@ exports.MAX_EXPRESSION_EVAL_STEPS = MAX_EXPRESSION_EVAL_STEPS;
29407
30545
  exports.MAX_EXPRESSION_SOURCE_LENGTH = MAX_EXPRESSION_SOURCE_LENGTH;
29408
30546
  exports.METHOD_ACCESS_MAP = METHOD_ACCESS_MAP;
29409
30547
  exports.MODEL_FORMATS = MODEL_FORMATS;
30548
+ exports.ManagedModelCatalogEntrySchema = ManagedModelCatalogEntrySchema;
30549
+ exports.ManagedModelRefSchema = ManagedModelRefSchema;
30550
+ exports.ManagedRuntimeConfigSchema = ManagedRuntimeConfigSchema;
29410
30551
  exports.MaskGridDimsSchema = MaskGridDimsSchema;
29411
30552
  exports.MaskGridShapeSchema = MaskGridShapeSchema;
29412
30553
  exports.MaskLineShapeSchema = MaskLineShapeSchema;
@@ -29477,6 +30618,7 @@ exports.PROVIDER_KIND_CAP_NAMES = PROVIDER_KIND_CAP_NAMES;
29477
30618
  exports.PYTHON_SCRIPT = PYTHON_SCRIPT;
29478
30619
  exports.PackageUpdateSchema = PackageUpdateSchema;
29479
30620
  exports.PackageVersionInfoSchema = PackageVersionInfoSchema;
30621
+ exports.PasskeyLoginMethodSchema = PasskeyLoginMethodSchema;
29480
30622
  exports.PasskeySummarySchema = PasskeySummarySchema;
29481
30623
  exports.PcmSampleFormatSchema = PcmSampleFormatSchema;
29482
30624
  exports.PerScopeBreakdownSchema = PerScopeBreakdownSchema;
@@ -29561,6 +30703,12 @@ exports.STREAM_PROFILE_META = STREAM_PROFILE_META;
29561
30703
  exports.STREAM_QUALITY_LABELS = STREAM_QUALITY_LABELS;
29562
30704
  exports.SUB_DETECTION_TYPES = SUB_DETECTION_TYPES;
29563
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;
29564
30712
  exports.ScopedTokenSchema = ScopedTokenSchema;
29565
30713
  exports.ScopedTokenSummarySchema = ScopedTokenSummarySchema;
29566
30714
  exports.ScoredObjectEventSchema = ScoredObjectEventSchema;
@@ -29635,6 +30783,7 @@ exports.TokenScopeSchema = TokenScopeSchema;
29635
30783
  exports.TopologyNodeSchema = TopologyNodeSchema;
29636
30784
  exports.TopologyProcessSchema = TopologyProcessSchema;
29637
30785
  exports.TopologyServiceSchema = TopologyServiceSchema;
30786
+ exports.TrackCascadeCountsSchema = TrackCascadeCountsSchema;
29638
30787
  exports.TrackSchema = TrackSchema;
29639
30788
  exports.TrackStateSchema = TrackStateSchema;
29640
30789
  exports.TrackedDetectionSchema = TrackedDetectionSchema;
@@ -29802,6 +30951,7 @@ exports.integrationsCapability = integrationsCapability;
29802
30951
  exports.intercomCapability = intercomCapability;
29803
30952
  exports.isAgentOnlyPlacement = isAgentOnlyPlacement;
29804
30953
  exports.isArrayOutputSchema = isArrayOutputSchema;
30954
+ exports.isCollectionArrayMethod = isCollectionArrayMethod;
29805
30955
  exports.isDeployableToAgent = isDeployableToAgent;
29806
30956
  exports.isDeviceConfigCap = require_sleep.isDeviceConfigCap;
29807
30957
  exports.isEvent = require_sleep.isEvent;
@@ -29814,6 +30964,8 @@ exports.lifecycleJobSchema = lifecycleJobSchema;
29814
30964
  exports.lifecycleJobScopeSchema = lifecycleJobScopeSchema;
29815
30965
  exports.lifecycleJobStateSchema = lifecycleJobStateSchema;
29816
30966
  exports.lifecycleTaskSchema = lifecycleTaskSchema;
30967
+ exports.llmCapability = llmCapability;
30968
+ exports.llmRuntimeCapability = llmRuntimeCapability;
29817
30969
  exports.localNetworkCapability = localNetworkCapability;
29818
30970
  exports.locationSimilarity = locationSimilarity;
29819
30971
  exports.lockControlCapability = lockControlCapability;
@@ -29897,6 +31049,7 @@ exports.resolveRunnerId = resolveRunnerId;
29897
31049
  exports.resolveVariantModelId = resolveVariantModelId;
29898
31050
  exports.runInferenceStep = runInferenceStep;
29899
31051
  exports.runtimeDevices = runtimeDevices;
31052
+ exports.sceneMonitorCapability = sceneMonitorCapability;
29900
31053
  exports.scopeKey = require_sleep.scopeKey;
29901
31054
  exports.scoreRuntimes = scoreRuntimes;
29902
31055
  exports.scriptRunnerCapability = scriptRunnerCapability;