@camstack/types 1.2.271 → 1.2.273
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.
- package/dist/addon.js +2 -4
- package/dist/addon.mjs +2 -4
- package/dist/capabilities/control.cap.d.ts +4 -4
- package/dist/capabilities/core-blocks.cap.d.ts +1 -1
- package/dist/capabilities/device-discovery.cap.d.ts +1 -1
- package/dist/capabilities/device-extension.cap.d.ts +8 -8
- package/dist/capabilities/index.d.ts +2 -2
- package/dist/capabilities/integrations.cap.d.ts +3 -3
- package/dist/capabilities/llm-runtime.cap.d.ts +3 -3
- package/dist/capabilities/llm.cap.d.ts +4 -4
- package/dist/capabilities/motion.cap.d.ts +12 -0
- package/dist/capabilities/notification-rules.cap.d.ts +9 -9
- package/dist/capabilities/osd-manager.cap.d.ts +10 -10
- package/dist/capabilities/pet-feeder.cap.d.ts +4 -4
- package/dist/capabilities/pipeline-analytics.cap.d.ts +22 -199
- package/dist/capabilities/pipeline-executor.cap.d.ts +2 -2
- package/dist/capabilities/pipeline-orchestrator.cap.d.ts +156 -6
- package/dist/capabilities/pipeline-runner.cap.d.ts +9 -0
- package/dist/capabilities/recording-archive.cap.d.ts +4 -4
- package/dist/capabilities/recording-export.cap.d.ts +7 -7
- package/dist/capabilities/recording-onboard.cap.d.ts +5 -5
- package/dist/capabilities/recording.cap.d.ts +5 -5
- package/dist/capabilities/snapshot.cap.d.ts +2 -2
- package/dist/capabilities/storage-provider.cap.d.ts +11 -11
- package/dist/capabilities/storage.cap.d.ts +3 -3
- package/dist/capabilities/stream-broker.cap.d.ts +1 -1
- package/dist/capabilities/videoclips.cap.d.ts +3 -3
- package/dist/capabilities/zone-analytics.cap.d.ts +2 -2
- package/dist/composition/composition-report.d.ts +3 -3
- package/dist/generated/addon-api.d.ts +0 -21
- package/dist/generated/cap-input-defaults.d.ts +1 -1
- package/dist/generated/method-access-map.d.ts +1 -1
- package/dist/generated/method-device-selectors.d.ts +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +182 -195
- package/dist/index.mjs +168 -193
- package/dist/interfaces/storage-location-mode.d.ts +1 -1
- package/dist/interfaces/storage-location.d.ts +1 -1
- package/dist/media/media-owner-key.d.ts +6 -2
- package/dist/pipeline/camera-sensors.d.ts +146 -0
- package/dist/{sleep-DlrgY4Qb.mjs → sleep-C-v96WpE.mjs} +0 -3
- package/dist/{sleep-DYGSsCgK.js → sleep-WOeeZ4FU.js} +0 -3
- 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-
|
|
2
|
+
const require_sleep = require("./sleep-WOeeZ4FU.js");
|
|
3
3
|
const require_event_category = require("./event-category-MbnB-6AN.js");
|
|
4
4
|
const require_composition = require("./composition-BRxAnxtU.js");
|
|
5
5
|
const require_err_msg = require("./err-msg-Dx2Kor0g.js");
|
|
@@ -16,7 +16,7 @@ let zod = require("zod");
|
|
|
16
16
|
* ```
|
|
17
17
|
*
|
|
18
18
|
* The owner type is a TABLE. That is already true of every owner on the live
|
|
19
|
-
* hub - `track`, `
|
|
19
|
+
* hub - `track`, `face`, `identity`, `plate` - and the exception was
|
|
20
20
|
* `event`, which covered three tables at once. While event ids were UUIDs the
|
|
21
21
|
* ambiguity cost nothing, because a UUID is unique across tables. D474 made an
|
|
22
22
|
* event id a SQLite rowid alias, so each table numbers from 1 and `event:5`
|
|
@@ -62,10 +62,13 @@ let zod = require("zod");
|
|
|
62
62
|
* are declared owner kinds with no rows today, and the parser would have
|
|
63
63
|
* rejected their keys the day one appeared. A list derived from data is a list
|
|
64
64
|
* that is correct until the data changes.
|
|
65
|
+
*
|
|
66
|
+
* `summary` is gone with the session summary it named (D680): a `summary:` key
|
|
67
|
+
* left on disk is unreadable by design, like a legacy `event:` one, and the
|
|
68
|
+
* orphan audit reclaims its row as a retired owner.
|
|
65
69
|
*/
|
|
66
70
|
var MEDIA_OWNER_TYPES = [
|
|
67
71
|
"track",
|
|
68
|
-
"summary",
|
|
69
72
|
"face",
|
|
70
73
|
"identity",
|
|
71
74
|
"plate",
|
|
@@ -20524,6 +20527,123 @@ var oauthIntegrationCapability = {
|
|
|
20524
20527
|
getDescriptor: require_sleep.method(zod.z.void(), OauthIntegrationDescriptorSchema, { auth: "admin" }) }
|
|
20525
20528
|
};
|
|
20526
20529
|
//#endregion
|
|
20530
|
+
//#region src/pipeline/camera-sensors.ts
|
|
20531
|
+
/**
|
|
20532
|
+
* What started a camera's onboard motion (D672). `camera` is the camera's own
|
|
20533
|
+
* firmware; `sensor` is a device the operator ATTACHED to it. Absent on the
|
|
20534
|
+
* wire means the camera: only the camera-sensors bridge ever says `sensor`.
|
|
20535
|
+
*/
|
|
20536
|
+
var MotionTriggeredBySchema = zod.z.discriminatedUnion("kind", [zod.z.object({ kind: zod.z.literal("camera") }), zod.z.object({
|
|
20537
|
+
kind: zod.z.literal("sensor"),
|
|
20538
|
+
deviceId: zod.z.number().int().positive()
|
|
20539
|
+
})]);
|
|
20540
|
+
var CAMERA_TRIGGER = Object.freeze({ kind: "camera" });
|
|
20541
|
+
function readMotionTriggeredBy(value) {
|
|
20542
|
+
if (value === void 0) return {
|
|
20543
|
+
triggeredBy: CAMERA_TRIGGER,
|
|
20544
|
+
malformed: false
|
|
20545
|
+
};
|
|
20546
|
+
const parsed = MotionTriggeredBySchema.safeParse(value);
|
|
20547
|
+
return parsed.success ? {
|
|
20548
|
+
triggeredBy: parsed.data,
|
|
20549
|
+
malformed: false
|
|
20550
|
+
} : {
|
|
20551
|
+
triggeredBy: CAMERA_TRIGGER,
|
|
20552
|
+
malformed: true
|
|
20553
|
+
};
|
|
20554
|
+
}
|
|
20555
|
+
/** The orchestrator device-store key, beside `motionSources`. */
|
|
20556
|
+
var CAMERA_SENSORS_SETTINGS_KEY = "cameraSensors";
|
|
20557
|
+
/** More than this is a configuration error, not a camera. */
|
|
20558
|
+
var MAX_CAMERA_SENSORS = 8;
|
|
20559
|
+
var CameraSensorRefSchema = zod.z.object({
|
|
20560
|
+
addonId: zod.z.string().min(1),
|
|
20561
|
+
stableId: zod.z.string().min(1)
|
|
20562
|
+
});
|
|
20563
|
+
function cameraSensorRefKey(ref) {
|
|
20564
|
+
return `${ref.addonId}/${ref.stableId}`;
|
|
20565
|
+
}
|
|
20566
|
+
/** CS-1 accepts exactly one mode; CS-2 (D673) widens it to confirm / replace. */
|
|
20567
|
+
var CameraSensorsModeSchema = zod.z.enum(["in-addition"]);
|
|
20568
|
+
var CameraSensorsConfigSchema = zod.z.object({
|
|
20569
|
+
mode: CameraSensorsModeSchema,
|
|
20570
|
+
sensors: zod.z.array(CameraSensorRefSchema).min(1).max(8)
|
|
20571
|
+
}).superRefine((value, ctx) => {
|
|
20572
|
+
const seen = /* @__PURE__ */ new Set();
|
|
20573
|
+
value.sensors.forEach((ref, index) => {
|
|
20574
|
+
const key = cameraSensorRefKey(ref);
|
|
20575
|
+
if (seen.has(key)) ctx.addIssue({
|
|
20576
|
+
code: "custom",
|
|
20577
|
+
path: ["sensors", index],
|
|
20578
|
+
message: `duplicate camera sensor ${key}`
|
|
20579
|
+
});
|
|
20580
|
+
seen.add(key);
|
|
20581
|
+
});
|
|
20582
|
+
});
|
|
20583
|
+
var RefFields = {
|
|
20584
|
+
addonId: zod.z.string(),
|
|
20585
|
+
stableId: zod.z.string()
|
|
20586
|
+
};
|
|
20587
|
+
var CameraSensorAttachmentSchema = zod.z.discriminatedUnion("state", [
|
|
20588
|
+
zod.z.object({
|
|
20589
|
+
...RefFields,
|
|
20590
|
+
state: zod.z.literal("ready"),
|
|
20591
|
+
deviceId: zod.z.number(),
|
|
20592
|
+
name: zod.z.string(),
|
|
20593
|
+
caps: zod.z.array(zod.z.string()).readonly()
|
|
20594
|
+
}),
|
|
20595
|
+
zod.z.object({
|
|
20596
|
+
...RefFields,
|
|
20597
|
+
state: zod.z.literal("offline"),
|
|
20598
|
+
deviceId: zod.z.number(),
|
|
20599
|
+
name: zod.z.string(),
|
|
20600
|
+
reason: zod.z.enum(["offline", "disabled"])
|
|
20601
|
+
}),
|
|
20602
|
+
zod.z.object({
|
|
20603
|
+
...RefFields,
|
|
20604
|
+
state: zod.z.literal("missing"),
|
|
20605
|
+
reason: zod.z.string()
|
|
20606
|
+
}),
|
|
20607
|
+
zod.z.object({
|
|
20608
|
+
...RefFields,
|
|
20609
|
+
state: zod.z.literal("unsupported"),
|
|
20610
|
+
deviceId: zod.z.number(),
|
|
20611
|
+
name: zod.z.string(),
|
|
20612
|
+
reason: zod.z.string()
|
|
20613
|
+
}),
|
|
20614
|
+
zod.z.object({
|
|
20615
|
+
...RefFields,
|
|
20616
|
+
state: zod.z.literal("unreadable"),
|
|
20617
|
+
reason: zod.z.string()
|
|
20618
|
+
})
|
|
20619
|
+
]);
|
|
20620
|
+
/**
|
|
20621
|
+
* Why a configured camera forwards NOTHING from its sensors, however ready they
|
|
20622
|
+
* are (D672): it does not list `onboard` in `motionSources` (attaching a sensor
|
|
20623
|
+
* does not add it), or it has no active detection config at all (the bridge
|
|
20624
|
+
* reads the active config). Absent = forwarded, or an older node that does not
|
|
20625
|
+
* say.
|
|
20626
|
+
*/
|
|
20627
|
+
var CameraSensorsNotForwardedSchema = zod.z.enum(["onboard-not-listed", "no-active-detection"]);
|
|
20628
|
+
var CameraSensorsStatusSchema = zod.z.discriminatedUnion("state", [
|
|
20629
|
+
zod.z.object({ state: zod.z.literal("not-configured") }),
|
|
20630
|
+
zod.z.object({
|
|
20631
|
+
state: zod.z.literal("unreadable"),
|
|
20632
|
+
reason: zod.z.string()
|
|
20633
|
+
}),
|
|
20634
|
+
zod.z.object({
|
|
20635
|
+
state: zod.z.literal("configured"),
|
|
20636
|
+
mode: CameraSensorsModeSchema,
|
|
20637
|
+
sensors: zod.z.array(CameraSensorAttachmentSchema).readonly(),
|
|
20638
|
+
notForwarded: CameraSensorsNotForwardedSchema.optional()
|
|
20639
|
+
})
|
|
20640
|
+
]);
|
|
20641
|
+
/** What a camera reads before its first settings read ANSWERED (D315). */
|
|
20642
|
+
var CAMERA_SENSORS_NOT_LOADED = Object.freeze({
|
|
20643
|
+
state: "unreadable",
|
|
20644
|
+
reason: "camera sensor mappings not loaded"
|
|
20645
|
+
});
|
|
20646
|
+
//#endregion
|
|
20527
20647
|
//#region src/pipeline/cluster-model-scope.ts
|
|
20528
20648
|
/**
|
|
20529
20649
|
* A model choice has a SCOPE, and a scope change has a workflow.
|
|
@@ -21446,6 +21566,12 @@ var MotionEventSchema = zod.z.object({
|
|
|
21446
21566
|
/** Populated by B5 (recording playback URL for this event). */
|
|
21447
21567
|
mediaUrl: zod.z.string().optional(),
|
|
21448
21568
|
/**
|
|
21569
|
+
* The FIRST trigger of an `onboard` episode, written once at open (D672).
|
|
21570
|
+
* Absent = not recorded (a row written before D672, or an analyzer /
|
|
21571
|
+
* device-activity episode) — never read as "the camera" (D393).
|
|
21572
|
+
*/
|
|
21573
|
+
triggeredBy: MotionTriggeredBySchema.optional(),
|
|
21574
|
+
/**
|
|
21449
21575
|
* One row per motion EPISODE, not one per push (D475). `null` while the
|
|
21450
21576
|
* episode is still open — a further rising edge extends it in place rather
|
|
21451
21577
|
* than inserting a new row. Set once, at close, to `lastOnAt - startedAt`
|
|
@@ -21957,143 +22083,6 @@ var RecentTracksQueryInput = zod.z.object({
|
|
|
21957
22083
|
/** See {@link ExcludeSourcesDoc}. */
|
|
21958
22084
|
excludeSources: zod.z.array(TrackSourceSchema).optional()
|
|
21959
22085
|
});
|
|
21960
|
-
/**
|
|
21961
|
-
* A Summary (D359): the per-camera session envelope that references tracks.
|
|
21962
|
-
* `groupShotMediaId` is the media ROW id of its group shot (`ownerKind:
|
|
21963
|
-
* 'summary'`, served by the event-media plane at `/m/<id>`), null until the
|
|
21964
|
-
* first frame with a member visible has been materialised (D482 — it was the
|
|
21965
|
-
* row's composite key, which embedded the owner and could name another table's
|
|
21966
|
-
* row once event ids became per-table rowids).
|
|
21967
|
-
*/
|
|
21968
|
-
var SummarySchema = zod.z.object({
|
|
21969
|
-
id: zod.z.string(),
|
|
21970
|
-
deviceId: zod.z.number(),
|
|
21971
|
-
openedAt: zod.z.number(),
|
|
21972
|
-
lastActiveAt: zod.z.number(),
|
|
21973
|
-
sealedAt: zod.z.number().nullable(),
|
|
21974
|
-
memberCount: zod.z.number().int().nonnegative(),
|
|
21975
|
-
groupShotMediaId: zod.z.number().int().nullable()
|
|
21976
|
-
});
|
|
21977
|
-
var SUMMARIES_MAX_LIMIT = 200;
|
|
21978
|
-
var SUMMARIES_DEFAULT_LIMIT = 50;
|
|
21979
|
-
var SummariesQueryInput = zod.z.object({
|
|
21980
|
-
deviceIds: zod.z.array(zod.z.number()).min(1),
|
|
21981
|
-
since: zod.z.number().optional(),
|
|
21982
|
-
until: zod.z.number().optional(),
|
|
21983
|
-
limit: zod.z.number().int().min(1).max(200).default(50),
|
|
21984
|
-
/** The same member-wise filter {@link listRecentSummaries} takes — one
|
|
21985
|
-
* meaning of "dog" on every summary surface. */
|
|
21986
|
-
classes: zod.z.array(zod.z.string().min(1).max(60)).max(40).optional()
|
|
21987
|
-
});
|
|
21988
|
-
/**
|
|
21989
|
-
* One member of a group, as a reader needs it.
|
|
21990
|
-
*
|
|
21991
|
-
* The class and the role travel WITH the id because every consumer that shows
|
|
21992
|
-
* a group has to say what it was made of — "two people and a dog" — and asking
|
|
21993
|
-
* `getTrack` per member to find that out turns one card into `memberCount`
|
|
21994
|
-
* round trips. The member row already holds both (they are written at the
|
|
21995
|
-
* join), so this costs the reader nothing.
|
|
21996
|
-
*/
|
|
21997
|
-
var SummaryMemberSchema = zod.z.object({
|
|
21998
|
-
trackId: zod.z.string(),
|
|
21999
|
-
/**
|
|
22000
|
-
* The track's class at the time it JOINED, or `null` when it was unresolved
|
|
22001
|
-
* and the track no longer exists to fill it.
|
|
22002
|
-
*
|
|
22003
|
-
* The join, not the latest opinion: class voting can re-decide a track's
|
|
22004
|
-
* class afterwards, and a group's composition is the history of who came
|
|
22005
|
-
* together. A consumer counts these to badge a thumbnail — "two people and a
|
|
22006
|
-
* dog" — rather than being handed a second, denormalised tally that would
|
|
22007
|
-
* drift from the members it claims to describe.
|
|
22008
|
-
*/
|
|
22009
|
-
className: zod.z.string().nullable(),
|
|
22010
|
-
/** `primary` is the one member that carries the group's identity. */
|
|
22011
|
-
role: zod.z.enum([
|
|
22012
|
-
"primary",
|
|
22013
|
-
"sibling",
|
|
22014
|
-
"child"
|
|
22015
|
-
]).nullable(),
|
|
22016
|
-
joinedAt: zod.z.number(),
|
|
22017
|
-
/** Tier 1 — the sub-class (`dog`, `van`), resolved from the member's track
|
|
22018
|
-
* at read time. Absent when nothing resolved, never an empty string. */
|
|
22019
|
-
label: zod.z.string().optional(),
|
|
22020
|
-
/** Tier 2 — the instance: a person's name, a plate. Absent when the pipeline
|
|
22021
|
-
* recognised nobody, and absent for a member whose track has been pruned —
|
|
22022
|
-
* a thumbnail that names the wrong person is worse than one naming nobody. */
|
|
22023
|
-
subLabel: zod.z.string().optional()
|
|
22024
|
-
});
|
|
22025
|
-
var SummaryDetailSchema = zod.z.object({
|
|
22026
|
-
summary: SummarySchema,
|
|
22027
|
-
/** Members in absorption order, oldest join first. */
|
|
22028
|
-
members: zod.z.array(SummaryMemberSchema).readonly()
|
|
22029
|
-
});
|
|
22030
|
-
/**
|
|
22031
|
-
* What a LIST of groups carries: the envelope plus what it is MADE OF.
|
|
22032
|
-
*
|
|
22033
|
-
* Coarse on purpose — the operator's rule is "only the rough data on the list,
|
|
22034
|
-
* we extend when we notice we need more". Enough to draw the card ("two people
|
|
22035
|
-
* and a dog") and no more. The MEMBERS, their names and the per-member links
|
|
22036
|
-
* are on {@link getSummary}: shipping every member of every group so a client
|
|
22037
|
-
* can count them turns a page of two hundred groups into a thousand records to
|
|
22038
|
-
* draw two hundred badges.
|
|
22039
|
-
*/
|
|
22040
|
-
var SummaryListItemSchema = zod.z.object({
|
|
22041
|
-
summary: SummarySchema,
|
|
22042
|
-
/** Class counts, most numerous first; `className: null` is a member whose
|
|
22043
|
-
* class never resolved, counted so the counts add up to `memberCount`. */
|
|
22044
|
-
classes: zod.z.array(zod.z.object({
|
|
22045
|
-
className: zod.z.string().nullable(),
|
|
22046
|
-
count: zod.z.number().int().positive()
|
|
22047
|
-
})).readonly()
|
|
22048
|
-
});
|
|
22049
|
-
var SummariesPageSchema = zod.z.object({ summaries: zod.z.array(SummaryListItemSchema).readonly() });
|
|
22050
|
-
/**
|
|
22051
|
-
* The paged feed, deliberately the SAME shape as {@link RecentTracksQueryInput}.
|
|
22052
|
-
*
|
|
22053
|
-
* The reel on the cameras page and the Events gallery both ride a cursor, so a
|
|
22054
|
-
* summaries feed that could only answer "the last N for these cameras"
|
|
22055
|
-
* (`listSummaries`) would make groups available in the timeline and nowhere
|
|
22056
|
-
* else. Two feeds with different ordering contracts would be two ideas of what
|
|
22057
|
-
* "newest" means, on one screen.
|
|
22058
|
-
*/
|
|
22059
|
-
var RecentSummariesQueryInput = zod.z.object({
|
|
22060
|
-
/** Devices to merge. An empty array yields an empty page. */
|
|
22061
|
-
deviceIds: zod.z.array(zod.z.number()),
|
|
22062
|
-
/** Window lower bound on `lastActiveAt` (inclusive). */
|
|
22063
|
-
since: zod.z.number().optional(),
|
|
22064
|
-
/** Window upper bound on `lastActiveAt` (inclusive). */
|
|
22065
|
-
until: zod.z.number().optional(),
|
|
22066
|
-
limit: zod.z.number().int().min(1).max(500).default(100),
|
|
22067
|
-
/** Opaque continuation cursor from a previous page's `nextCursor`. */
|
|
22068
|
-
cursor: zod.z.string().optional(),
|
|
22069
|
-
/**
|
|
22070
|
-
* Restrict to these classes — THE SAME FIELD `listRecentTracks` takes, and
|
|
22071
|
-
* deliberately the same name: the events filter tree emits one list of ticked
|
|
22072
|
-
* taxonomy nodes, and a summaries feed that called it something else would
|
|
22073
|
-
* make the operator's one filter component produce two shapes.
|
|
22074
|
-
*
|
|
22075
|
-
* A question about the MEMBERS: a group matches when ANY of them does. "Show
|
|
22076
|
-
* me the arrivals with a dog" has to return the group of four people who had
|
|
22077
|
-
* one with them; a filter on the group's own fields could only ever answer
|
|
22078
|
-
* about its primary.
|
|
22079
|
-
*
|
|
22080
|
-
* Matched against all THREE tiers of a member — the class (`animal`), the
|
|
22081
|
-
* sub-class (`dog`) and the instance (a name, a plate) — because which tier a
|
|
22082
|
-
* ticked node lives on is the taxonomy's business, not the caller's. `dog` is
|
|
22083
|
-
* an event kind in the tree and a tier-1 label on an `animal` track; a filter
|
|
22084
|
-
* that read only the class would answer "animal" and never "dog".
|
|
22085
|
-
*
|
|
22086
|
-
* ABSENT or EMPTY means no filter — absent is not a selection of none.
|
|
22087
|
-
*/
|
|
22088
|
-
classes: zod.z.array(zod.z.string().min(1).max(60)).max(40).optional()
|
|
22089
|
-
});
|
|
22090
|
-
var RecentSummariesPageSchema = zod.z.object({
|
|
22091
|
-
/** Ordered by (`lastActiveAt` DESC, id DESC). Same light item as
|
|
22092
|
-
* {@link listSummaries} — one list shape, so a card renders the same
|
|
22093
|
-
* whichever feed drew it. */
|
|
22094
|
-
summaries: zod.z.array(SummaryListItemSchema).readonly(),
|
|
22095
|
-
nextCursor: zod.z.string().nullable()
|
|
22096
|
-
});
|
|
22097
22086
|
var RecentTracksPageSchema = zod.z.object({
|
|
22098
22087
|
/** Merged page, ordered by (`lastSeen` DESC, `trackId` DESC). */
|
|
22099
22088
|
tracks: zod.z.array(TrackSchema).readonly(),
|
|
@@ -22680,15 +22669,6 @@ var pipelineAnalyticsCapability = {
|
|
|
22680
22669
|
* are not included (same contract as `listTracks`).
|
|
22681
22670
|
*/
|
|
22682
22671
|
listRecentTracks: require_sleep.method(RecentTracksQueryInput, RecentTracksPageSchema),
|
|
22683
|
-
/** Newest first by `openedAt`, for a camera set, inside an optional window. */
|
|
22684
|
-
listSummaries: require_sleep.method(SummariesQueryInput, SummariesPageSchema),
|
|
22685
|
-
/**
|
|
22686
|
-
* The PAGED feed — the reel and the Events gallery. Same cursor contract as
|
|
22687
|
-
* {@link listRecentTracks}, so one screen cannot hold two ideas of newest.
|
|
22688
|
-
*/
|
|
22689
|
-
listRecentSummaries: require_sleep.method(RecentSummariesQueryInput, RecentSummariesPageSchema),
|
|
22690
|
-
/** One summary with its member track ids; `null` for an id nobody wrote. */
|
|
22691
|
-
getSummary: require_sleep.method(zod.z.object({ id: zod.z.string() }), SummaryDetailSchema.nullable()),
|
|
22692
22672
|
clearTracks: require_sleep.method(zod.z.object({ deviceId: zod.z.number() }), zod.z.void(), {
|
|
22693
22673
|
kind: "mutation",
|
|
22694
22674
|
auth: "admin"
|
|
@@ -24725,6 +24705,28 @@ var MotionSourceEnum = zod.z.enum([
|
|
|
24725
24705
|
*/
|
|
24726
24706
|
var MotionSourcesSchema = zod.z.array(MotionSourceEnum);
|
|
24727
24707
|
/**
|
|
24708
|
+
* The operator-facing name of each MOTION source (D672: `onboard` = the
|
|
24709
|
+
* camera's sensors — its own motion plus any sensor attached to it). The wire
|
|
24710
|
+
* value stays `onboard`; only the label changed. `detectionSources: 'onboard'`
|
|
24711
|
+
* ("Camera onboard AI") and the notification source filter keep their labels.
|
|
24712
|
+
*/
|
|
24713
|
+
var MOTION_SOURCE_LABELS = {
|
|
24714
|
+
analyzer: "Frame-diff Analyzer (motion addon)",
|
|
24715
|
+
onboard: "Camera sensors",
|
|
24716
|
+
"device-activity": "Device activity (the device says it is working)"
|
|
24717
|
+
};
|
|
24718
|
+
/** A value this build does not know (a newer node's) is shown as itself. */
|
|
24719
|
+
function motionSourceLabel(value) {
|
|
24720
|
+
const parsed = MotionSourceEnum.safeParse(value);
|
|
24721
|
+
return parsed.success ? MOTION_SOURCE_LABELS[parsed.data] : value;
|
|
24722
|
+
}
|
|
24723
|
+
/** The order the motion-source picker offers them in (not the enum's order). */
|
|
24724
|
+
var MOTION_SOURCE_PICKER_ORDER = [
|
|
24725
|
+
"analyzer",
|
|
24726
|
+
"onboard",
|
|
24727
|
+
"device-activity"
|
|
24728
|
+
];
|
|
24729
|
+
/**
|
|
24728
24730
|
* Which root detector a camera runs — EXACTLY ONE.
|
|
24729
24731
|
*
|
|
24730
24732
|
* Deliberately the SAME vocabulary post-analysis already tags every detection
|
|
@@ -25092,20 +25094,14 @@ var RunnerCameraDeviceUIFields = [
|
|
|
25092
25094
|
type: "multiselect",
|
|
25093
25095
|
label: "Motion Sources",
|
|
25094
25096
|
default: ["analyzer"],
|
|
25095
|
-
options:
|
|
25096
|
-
|
|
25097
|
-
|
|
25098
|
-
|
|
25099
|
-
|
|
25100
|
-
|
|
25101
|
-
|
|
25102
|
-
|
|
25103
|
-
},
|
|
25104
|
-
{
|
|
25105
|
-
value: "device-activity",
|
|
25106
|
-
label: "Device activity (the device says it is working)"
|
|
25107
|
-
}
|
|
25108
|
-
]
|
|
25097
|
+
options: MOTION_SOURCE_PICKER_ORDER.map((value) => value === "onboard" ? {
|
|
25098
|
+
value,
|
|
25099
|
+
label: MOTION_SOURCE_LABELS[value],
|
|
25100
|
+
description: "The camera's own motion, plus any sensor attached to it"
|
|
25101
|
+
} : {
|
|
25102
|
+
value,
|
|
25103
|
+
label: MOTION_SOURCE_LABELS[value]
|
|
25104
|
+
})
|
|
25109
25105
|
},
|
|
25110
25106
|
{
|
|
25111
25107
|
key: "detectionSources",
|
|
@@ -26070,6 +26066,11 @@ var CameraStatusSchema = zod.z.object({
|
|
|
26070
26066
|
*/
|
|
26071
26067
|
switchedOff: zod.z.array(CameraSwitchIdSchema).readonly(),
|
|
26072
26068
|
/**
|
|
26069
|
+
* The camera's attached sensors (D672). Optional only for a status composed
|
|
26070
|
+
* by an orchestrator older than D672; this orchestrator always sets it.
|
|
26071
|
+
*/
|
|
26072
|
+
cameraSensors: CameraSensorsStatusSchema.optional(),
|
|
26073
|
+
/**
|
|
26073
26074
|
* Stages of the bounded fan-out that were CUT SHORT — a timeout or a
|
|
26074
26075
|
* rejection — and whose block is therefore `null` because we could not
|
|
26075
26076
|
* READ it, not because there is nothing there.
|
|
@@ -35950,7 +35951,9 @@ var MotionOnMotionChangedDataSchema = zod.z.object({
|
|
|
35950
35951
|
detected: zod.z.boolean(),
|
|
35951
35952
|
timestamp: zod.z.number(),
|
|
35952
35953
|
source: MotionSourceEnum,
|
|
35953
|
-
regions: zod.z.array(MotionRegionSchema).readonly().optional()
|
|
35954
|
+
regions: zod.z.array(MotionRegionSchema).readonly().optional(),
|
|
35955
|
+
/** Who started it (D672). Absent = the camera itself. Only `onboard` carries `sensor`. */
|
|
35956
|
+
triggeredBy: MotionTriggeredBySchema.optional()
|
|
35954
35957
|
});
|
|
35955
35958
|
var motionCapability = {
|
|
35956
35959
|
name: "motion",
|
|
@@ -55816,12 +55819,6 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
55816
55819
|
addonId: null,
|
|
55817
55820
|
access: "view"
|
|
55818
55821
|
},
|
|
55819
|
-
"pipelineAnalytics.getSummary": {
|
|
55820
|
-
capName: "pipeline-analytics",
|
|
55821
|
-
capScope: "device",
|
|
55822
|
-
addonId: null,
|
|
55823
|
-
access: "view"
|
|
55824
|
-
},
|
|
55825
55822
|
"pipelineAnalytics.getTrack": {
|
|
55826
55823
|
capName: "pipeline-analytics",
|
|
55827
55824
|
capScope: "device",
|
|
@@ -55882,12 +55879,6 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
55882
55879
|
addonId: null,
|
|
55883
55880
|
access: "view"
|
|
55884
55881
|
},
|
|
55885
|
-
"pipelineAnalytics.listRecentSummaries": {
|
|
55886
|
-
capName: "pipeline-analytics",
|
|
55887
|
-
capScope: "device",
|
|
55888
|
-
addonId: null,
|
|
55889
|
-
access: "view"
|
|
55890
|
-
},
|
|
55891
55882
|
"pipelineAnalytics.listRecentTracks": {
|
|
55892
55883
|
capName: "pipeline-analytics",
|
|
55893
55884
|
capScope: "device",
|
|
@@ -55918,12 +55909,6 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
55918
55909
|
addonId: null,
|
|
55919
55910
|
access: "view"
|
|
55920
55911
|
},
|
|
55921
|
-
"pipelineAnalytics.listSummaries": {
|
|
55922
|
-
capName: "pipeline-analytics",
|
|
55923
|
-
capScope: "device",
|
|
55924
|
-
addonId: null,
|
|
55925
|
-
access: "view"
|
|
55926
|
-
},
|
|
55927
55912
|
"pipelineAnalytics.listTrackMedia": {
|
|
55928
55913
|
capName: "pipeline-analytics",
|
|
55929
55914
|
capScope: "device",
|
|
@@ -60428,11 +60413,6 @@ var METHOD_DEVICE_SELECTORS = Object.freeze({
|
|
|
60428
60413
|
form: "single",
|
|
60429
60414
|
optional: true
|
|
60430
60415
|
}],
|
|
60431
|
-
"pipelineAnalytics.listRecentSummaries": [{
|
|
60432
|
-
name: "deviceIds",
|
|
60433
|
-
form: "array",
|
|
60434
|
-
optional: false
|
|
60435
|
-
}],
|
|
60436
60416
|
"pipelineAnalytics.listRecentTracks": [{
|
|
60437
60417
|
name: "deviceIds",
|
|
60438
60418
|
form: "array",
|
|
@@ -60443,11 +60423,6 @@ var METHOD_DEVICE_SELECTORS = Object.freeze({
|
|
|
60443
60423
|
form: "array",
|
|
60444
60424
|
optional: true
|
|
60445
60425
|
}],
|
|
60446
|
-
"pipelineAnalytics.listSummaries": [{
|
|
60447
|
-
name: "deviceIds",
|
|
60448
|
-
form: "array",
|
|
60449
|
-
optional: false
|
|
60450
|
-
}],
|
|
60451
60426
|
"pipelineAnalytics.listTrackMedia": [{
|
|
60452
60427
|
name: "deviceId",
|
|
60453
60428
|
form: "single",
|
|
@@ -68364,8 +68339,11 @@ exports.BrokerSubscribeResultSchema = SubscribeResultSchema;
|
|
|
68364
68339
|
exports.BrokerTestConnectionResultSchema = TestConnectionResultSchema;
|
|
68365
68340
|
exports.BrokerUnsubscribeInputSchema = UnsubscribeInputSchema;
|
|
68366
68341
|
exports.BulkRecordSchema = BulkRecordSchema;
|
|
68342
|
+
exports.CAMERA_SENSORS_NOT_LOADED = CAMERA_SENSORS_NOT_LOADED;
|
|
68343
|
+
exports.CAMERA_SENSORS_SETTINGS_KEY = CAMERA_SENSORS_SETTINGS_KEY;
|
|
68367
68344
|
exports.CAMERA_SWITCH_CATALOG = CAMERA_SWITCH_CATALOG;
|
|
68368
68345
|
exports.CAMERA_SWITCH_ORDER = CAMERA_SWITCH_ORDER;
|
|
68346
|
+
exports.CAMERA_TRIGGER = CAMERA_TRIGGER;
|
|
68369
68347
|
exports.CAM_PROFILE_ORDER = require_sleep.CAM_PROFILE_ORDER;
|
|
68370
68348
|
exports.CAPABILITY_NAMES = CAPABILITY_NAMES;
|
|
68371
68349
|
exports.CAPABILITY_ROUTER_KEYS = CAPABILITY_ROUTER_KEYS;
|
|
@@ -68425,6 +68403,12 @@ exports.CameraMotionStatusSchema = CameraMotionStatusSchema;
|
|
|
68425
68403
|
exports.CameraOccupancySnapshotForDeviceSchema = CameraOccupancySnapshotForDeviceSchema;
|
|
68426
68404
|
exports.CameraRecordingModeSchema = CameraRecordingModeSchema;
|
|
68427
68405
|
exports.CameraRecordingStatusSchema = CameraRecordingStatusSchema;
|
|
68406
|
+
exports.CameraSensorAttachmentSchema = CameraSensorAttachmentSchema;
|
|
68407
|
+
exports.CameraSensorRefSchema = CameraSensorRefSchema;
|
|
68408
|
+
exports.CameraSensorsConfigSchema = CameraSensorsConfigSchema;
|
|
68409
|
+
exports.CameraSensorsModeSchema = CameraSensorsModeSchema;
|
|
68410
|
+
exports.CameraSensorsNotForwardedSchema = CameraSensorsNotForwardedSchema;
|
|
68411
|
+
exports.CameraSensorsStatusSchema = CameraSensorsStatusSchema;
|
|
68428
68412
|
exports.CameraSourceStatusSchema = CameraSourceStatusSchema;
|
|
68429
68413
|
exports.CameraSourceStreamSchema = CameraSourceStreamSchema;
|
|
68430
68414
|
exports.CameraStatusDegradationReasonSchema = CameraStatusDegradationReasonSchema;
|
|
@@ -68870,6 +68854,7 @@ exports.MACRO_LABELS = MACRO_LABELS;
|
|
|
68870
68854
|
exports.MAX_ARCHIVED_DEBUG_NOTES = MAX_ARCHIVED_DEBUG_NOTES;
|
|
68871
68855
|
exports.MAX_BIRTH_DECISION_RECORDS = MAX_BIRTH_DECISION_RECORDS;
|
|
68872
68856
|
exports.MAX_BIRTH_LATENCY_PROXY_MS = MAX_BIRTH_LATENCY_PROXY_MS;
|
|
68857
|
+
exports.MAX_CAMERA_SENSORS = MAX_CAMERA_SENSORS;
|
|
68873
68858
|
exports.MAX_CLIP_EVENT_IDS = MAX_CLIP_EVENT_IDS;
|
|
68874
68859
|
exports.MAX_CLIP_LABELS = MAX_CLIP_LABELS;
|
|
68875
68860
|
exports.MAX_COMPOSITION_CODE_LENGTH = require_composition.MAX_COMPOSITION_CODE_LENGTH;
|
|
@@ -68896,6 +68881,7 @@ exports.MODEL_FORMATS = MODEL_FORMATS;
|
|
|
68896
68881
|
exports.MODEL_HOSTING = MODEL_HOSTING;
|
|
68897
68882
|
exports.MODEL_PROVIDER_IDS = MODEL_PROVIDER_IDS;
|
|
68898
68883
|
exports.MOTION_CLOSE_AFTER_MS = MOTION_CLOSE_AFTER_MS;
|
|
68884
|
+
exports.MOTION_SOURCE_LABELS = MOTION_SOURCE_LABELS;
|
|
68899
68885
|
exports.MOTION_TRIGGER_FEATURE = MOTION_TRIGGER_FEATURE;
|
|
68900
68886
|
exports.ManagedModelCatalogEntrySchema = ManagedModelCatalogEntrySchema;
|
|
68901
68887
|
exports.ManagedModelExtraFileSchema = ManagedModelExtraFileSchema;
|
|
@@ -68946,6 +68932,7 @@ exports.MotionSourcesSchema = MotionSourcesSchema;
|
|
|
68946
68932
|
exports.MotionStatusSchema = MotionStatusSchema;
|
|
68947
68933
|
exports.MotionTriggerRuntimeStateSchema = MotionTriggerRuntimeStateSchema;
|
|
68948
68934
|
exports.MotionTriggerStatusSchema = MotionTriggerStatusSchema;
|
|
68935
|
+
exports.MotionTriggeredBySchema = MotionTriggeredBySchema;
|
|
68949
68936
|
exports.MotionZoneOptionsSchema = MotionZoneOptionsSchema;
|
|
68950
68937
|
exports.MotionZonePatchSchema = MotionZonePatchSchema;
|
|
68951
68938
|
exports.MotionZoneRegionSchema = MotionZoneRegionSchema;
|
|
@@ -69367,8 +69354,6 @@ exports.STORAGE_LOCATION_MODES = STORAGE_LOCATION_MODES;
|
|
|
69367
69354
|
exports.STREAM_PROFILE_META = STREAM_PROFILE_META;
|
|
69368
69355
|
exports.STREAM_QUALITY_LABELS = STREAM_QUALITY_LABELS;
|
|
69369
69356
|
exports.SUB_DETECTION_TYPES = SUB_DETECTION_TYPES;
|
|
69370
|
-
exports.SUMMARIES_DEFAULT_LIMIT = SUMMARIES_DEFAULT_LIMIT;
|
|
69371
|
-
exports.SUMMARIES_MAX_LIMIT = SUMMARIES_MAX_LIMIT;
|
|
69372
69357
|
exports.SYSTEM_CAP_NAMES = SYSTEM_CAP_NAMES;
|
|
69373
69358
|
exports.SYSTEM_SCOPE_DEVICE_METHODS = SYSTEM_SCOPE_DEVICE_METHODS;
|
|
69374
69359
|
exports.SceneCheckSchema = SceneCheckSchema;
|
|
@@ -69478,7 +69463,6 @@ exports.SubscribeAudioChunksInputSchema = require_sleep.SubscribeAudioChunksInpu
|
|
|
69478
69463
|
exports.SubscribeAudioChunksResultSchema = require_sleep.SubscribeAudioChunksResultSchema;
|
|
69479
69464
|
exports.SubscribeFramesInputSchema = require_sleep.SubscribeFramesInputSchema;
|
|
69480
69465
|
exports.SubscribeFramesResultSchema = require_sleep.SubscribeFramesResultSchema;
|
|
69481
|
-
exports.SummarySchema = SummarySchema;
|
|
69482
69466
|
exports.SwitchStatusSchema = SwitchStatusSchema;
|
|
69483
69467
|
exports.SystemMetricsSchema = SystemMetricsSchema;
|
|
69484
69468
|
exports.SystemMirror = SystemMirror;
|
|
@@ -69659,6 +69643,7 @@ exports.buttonCapability = buttonCapability;
|
|
|
69659
69643
|
exports.cameraCredentialsCapability = cameraCredentialsCapability;
|
|
69660
69644
|
exports.cameraGridLayoutCapability = cameraGridLayoutCapability;
|
|
69661
69645
|
exports.cameraPipelineConfigCapability = cameraPipelineConfigCapability;
|
|
69646
|
+
exports.cameraSensorRefKey = cameraSensorRefKey;
|
|
69662
69647
|
exports.cameraStreamsCapability = cameraStreamsCapability;
|
|
69663
69648
|
exports.canConvertUnit = canConvertUnit;
|
|
69664
69649
|
exports.canonicalEgressPlan = canonicalEgressPlan;
|
|
@@ -69948,6 +69933,7 @@ exports.modelDistributorCapability = modelDistributorCapability;
|
|
|
69948
69933
|
exports.modelFormatForRuntime = modelFormatForRuntime;
|
|
69949
69934
|
exports.motionCapability = motionCapability;
|
|
69950
69935
|
exports.motionDetectionCapability = motionDetectionCapability;
|
|
69936
|
+
exports.motionSourceLabel = motionSourceLabel;
|
|
69951
69937
|
exports.motionTriggerCapability = motionTriggerCapability;
|
|
69952
69938
|
exports.motionZonesCapability = motionZonesCapability;
|
|
69953
69939
|
exports.mqttBrokerCapability = mqttBrokerCapability;
|
|
@@ -70028,6 +70014,7 @@ exports.readClusterStepModels = readClusterStepModels;
|
|
|
70028
70014
|
exports.readClusterStepSettings = readClusterStepSettings;
|
|
70029
70015
|
exports.readDetailCropConvention = readDetailCropConvention;
|
|
70030
70016
|
exports.readDeviceStateFrom = readDeviceStateFrom;
|
|
70017
|
+
exports.readMotionTriggeredBy = readMotionTriggeredBy;
|
|
70031
70018
|
exports.readNativeLeaseOverride = readNativeLeaseOverride;
|
|
70032
70019
|
exports.readNodePin = require_sleep.readNodePin;
|
|
70033
70020
|
exports.readTimelapseGeneratedAt = readTimelapseGeneratedAt;
|