@camstack/addon-agent-ui 1.2.133 → 1.2.134

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 (2) hide show
  1. package/dist/addon.js +56 -53
  2. package/package.json +1 -1
package/dist/addon.js CHANGED
@@ -5361,7 +5361,7 @@ var ZodIssueCode = {
5361
5361
  var ZodFirstPartyTypeKind;
5362
5362
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5363
5363
  //#endregion
5364
- //#region ../types/dist/sleep-7AN_Txmu.mjs
5364
+ //#region ../types/dist/sleep-CaB_hL5g.mjs
5365
5365
  /**
5366
5366
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5367
5367
  * window to float samples (D455).
@@ -7364,6 +7364,8 @@ var EVENT_OWNER_TYPES = [
7364
7364
  * nothing failing until a caller asked.
7365
7365
  */
7366
7366
  var EventOwnerTypeSchema = _enum(EVENT_OWNER_TYPES);
7367
+ /** The same list as a Zod enum, for the cap input that carries it. */
7368
+ var MediaPresenceOwnerKindSchema = _enum([...EVENT_OWNER_TYPES, "track"]);
7367
7369
  new Set(EVENT_OWNER_TYPES);
7368
7370
  var EncodeProfileSchema = object({
7369
7371
  video: object({
@@ -14058,8 +14060,6 @@ method(object({
14058
14060
  deviceId: number(),
14059
14061
  capName: string(),
14060
14062
  wrapperAddonId: string(),
14061
- /** The `ClipSource.source` id to toggle. Absent = all of the addon's. */
14062
- sourceId: string().optional(),
14063
14063
  active: boolean()
14064
14064
  }), _void(), {
14065
14065
  kind: "mutation",
@@ -20970,7 +20970,11 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
20970
20970
  ownerType: EventOwnerTypeSchema,
20971
20971
  eventId: number().int(),
20972
20972
  deviceId: number()
20973
- }), array(MediaFileInfoSchema).readonly()), method(SearchObjectEventsInput, array(ScoredObjectEventSchema).readonly()), method(object({}), WipeObjectEmbeddingsResultSchema, {
20973
+ }), array(MediaFileInfoSchema).readonly()), method(object({
20974
+ deviceId: number(),
20975
+ ownerKind: MediaPresenceOwnerKindSchema,
20976
+ ownerIds: array(string()).max(5e3)
20977
+ }), array(string()).readonly()), method(SearchObjectEventsInput, array(ScoredObjectEventSchema).readonly()), method(object({}), WipeObjectEmbeddingsResultSchema, {
20974
20978
  kind: "mutation",
20975
20979
  auth: "admin"
20976
20980
  }), method(RebuildObjectEmbeddingsInput, RebuildObjectEmbeddingsResultSchema, {
@@ -23964,6 +23968,18 @@ method(VectorDeclareIndexInputSchema, _void(), {
23964
23968
  kind: "mutation",
23965
23969
  auth: "admin"
23966
23970
  }), method(VectorStatsInputSchema, VectorStatsResultSchema, { auth: "admin" });
23971
+ _enum([
23972
+ "queue-full",
23973
+ "camera-backoff",
23974
+ "sleeping",
23975
+ "camera-refused",
23976
+ "no-keyframe",
23977
+ "no-catalog-row",
23978
+ "unsupported",
23979
+ "unknown-device",
23980
+ "uid-missing"
23981
+ ]);
23982
+ _enum(["deferred", "final"]);
23967
23983
  var ClipSchema = object({
23968
23984
  /** Opaque, provider-namespaced id. The default provider encodes the time
23969
23985
  * window so `getClipPlayback` is self-contained (no event re-query). */
@@ -24114,7 +24130,25 @@ var ClipSchema = object({
24114
24130
  */
24115
24131
  playable: boolean().optional(),
24116
24132
  /** Why {@link playable} is false, verbatim (`no-file-for-window`). */
24117
- unplayableReason: string().optional()
24133
+ unplayableReason: string().optional(),
24134
+ /**
24135
+ * This clip is STILL BEING WRITTEN, so {@link ClipSchema.timeRange}`.endMs`
24136
+ * is not its end.
24137
+ *
24138
+ * Absent — the common case — means the row is closed and its `endMs` is the
24139
+ * end of the recording. Present and `true` means the source told us the file
24140
+ * has no end yet, and the `endMs` we carry is whatever the camera's index
24141
+ * entry happened to hold: on a Reolink E1 Outdoor PoE (592, measured
24142
+ * 2026-09-20) the newest file `…_192927_000000_…_0.mp4` reported an `endTime`
24143
+ * of 19:29:56 and STILL reported it eight minutes later, while the file went
24144
+ * on growing. A surface that drew 29 s there was lying about a clip that
24145
+ * plays for minutes, on the one row the operator looks at first.
24146
+ *
24147
+ * `endMs` is deliberately still a number: it is the best bound anything has
24148
+ * for a mint window or a byte fetch, and every consumer already requires it.
24149
+ * This flag says what it is WORTH, and a duration is not drawn from it.
24150
+ */
24151
+ inProgress: boolean().optional()
24118
24152
  });
24119
24153
  var ClipPlaybackSchema = object({
24120
24154
  /**
@@ -24197,59 +24231,17 @@ var ClipSourceSchema = object({
24197
24231
  * alternative — a `native:reolink:* → provider-reolink` table inside the
24198
24232
  * widget — is a second authority on provider identity living in the one
24199
24233
  * package with no business knowing it, wrong the day a third source appears
24200
- * (D557). One addon may serve SEVERAL sources: `addon-provider-reolink`
24201
- * answers a hub child with both `native:reolink:onboard` and
24202
- * `native:reolink:hub`, which is why the per-device switch is keyed by
24203
- * SOURCE and not by this (D555).
24234
+ * (D557). One addon may serve SEVERAL sources, which is why the per-device
24235
+ * switch is keyed by SOURCE and not by this (D555) — `addon-provider-reolink`
24236
+ * served a hub child two of them until the two views were measured to be one
24237
+ * store read twice (D555) and then read ONE way (D565).
24204
24238
  *
24205
24239
  * Optional for version skew only. The collection dispatcher stamps it from
24206
24240
  * the registry, so a row that travelled through the fan-out carries the
24207
24241
  * authoritative id whatever the provider filled in.
24208
24242
  */
24209
24243
  addonId: string().optional(),
24210
- /**
24211
- * Which API this source resolved to FOR THIS CAMERA, when it has a choice.
24212
- *
24213
- * A source may cover one store through more than one surface — the Reolink
24214
- * provider reads a hub child through the parent's event log and a standalone
24215
- * through its own file list, because that is what each camera answers. The
24216
- * CHOICE is the provider's, made from what the camera is, and is never a row
24217
- * the operator has to understand; but it is REPORTED, because a source that
24218
- * silently reads a different API on two cameras and then behaves differently
24219
- * is the thing nobody can debug later. Absent when the source has only one
24220
- * way to read its store.
24221
- */
24222
- via: string().optional(),
24223
- availability: ClipSourceAvailabilitySchema,
24224
- /**
24225
- * The operator switched this source OFF for this camera.
24226
- *
24227
- * Deliberately NOT a member of {@link ClipSourceAvailabilitySchema}'s
24228
- * vocabulary. That enum models what the source CAN do — a sleeping camera, an
24229
- * unmounted card, an index that disagrees with its own calendar — and a
24230
- * switched-off source could answer perfectly well; the operator decided it
24231
- * should not. Folding the choice in is how `disabled` and `broken` stop being
24232
- * distinguishable, which is the D62 rule this repo has already paid for twice:
24233
- * an off switch is REPORTED off (`CameraStatus.switchedOff`, the same word),
24234
- * and disabled must never look like broken. It is also what lets every
24235
- * exhaustive consumer of the availability enum keep compiling.
24236
- *
24237
- * A switched-off source contributes NO clips (`listClips` never calls it) and
24238
- * its row carries no `catalogAsOf`: nothing confirms a catalog it is not
24239
- * allowed to serve, and a frozen age that can only grow draws a stalling
24240
- * source rather than an off switch.
24241
- *
24242
- * The row survives BECAUSE it is the control the operator switches the source
24243
- * back on from — D554 decision 4's rule ("a source that cannot answer
24244
- * produces a ROW, not an absence") applied to the one case D556 carved out of
24245
- * it, and D557's own kept property ("a source is never hidden, only its
24246
- * rows"). Absent means on.
24247
- *
24248
- * A provider never sets this — like {@link ClipSourceSchema.addonId} it is
24249
- * stamped by the collection dispatcher, which holds the registry's projection
24250
- * of the persisted authority (D556) and is the only place that knows it.
24251
- */
24252
- switchedOff: boolean().optional()
24244
+ availability: ClipSourceAvailabilitySchema
24253
24245
  });
24254
24246
  DeviceType.Camera, method(object({
24255
24247
  deviceId: number(),
@@ -35677,6 +35669,12 @@ Object.freeze({
35677
35669
  addonId: null,
35678
35670
  access: "view"
35679
35671
  },
35672
+ "pipelineAnalytics.ownersWithMedia": {
35673
+ capName: "pipeline-analytics",
35674
+ capScope: "device",
35675
+ addonId: null,
35676
+ access: "view"
35677
+ },
35680
35678
  "pipelineAnalytics.pauseForStorageMigration": {
35681
35679
  capName: "pipeline-analytics",
35682
35680
  capScope: "device",
@@ -39577,6 +39575,11 @@ Object.freeze({
39577
39575
  form: "single",
39578
39576
  optional: false
39579
39577
  }],
39578
+ "pipelineAnalytics.ownersWithMedia": [{
39579
+ name: "deviceId",
39580
+ form: "single",
39581
+ optional: false
39582
+ }],
39580
39583
  "pipelineAnalytics.proposeRetrainAnnotations": [{
39581
39584
  name: "deviceId",
39582
39585
  form: "single",
@@ -40967,7 +40970,7 @@ var AgentUIAddon = class extends BaseAddon {
40967
40970
  capability: adminUiCapability,
40968
40971
  provider: {
40969
40972
  getStaticDir: async () => ({ staticDir: path.resolve(__dirname) }),
40970
- getVersion: async () => ({ version: "1.2.133" })
40973
+ getVersion: async () => ({ version: "1.2.134" })
40971
40974
  }
40972
40975
  }];
40973
40976
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-agent-ui",
3
- "version": "1.2.133",
3
+ "version": "1.2.134",
4
4
  "description": "Agent UI — lightweight status dashboard served by every agent node",
5
5
  "keywords": [
6
6
  "camstack",