@camstack/types 1.2.185 → 1.2.186
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 +3 -2
- package/dist/addon.mjs +3 -2
- package/dist/capabilities/index.d.ts +2 -2
- package/dist/capabilities/pipeline-analytics.cap.d.ts +93 -19
- package/dist/generated/addon-api.d.ts +7 -0
- 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.js +106 -5
- package/dist/index.mjs +106 -5
- package/dist/{sleep-CnLyvg3w.mjs → sleep-DBKu2-U5.mjs} +1 -0
- package/dist/{sleep-CfDqEZrs.js → sleep-DXsYD0RX.js} +1 -0
- package/package.json +1 -1
package/dist/addon.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-DXsYD0RX.js");
|
|
3
3
|
const require_event_category = require("./event-category-yW4s1MGD.js");
|
|
4
4
|
const require_err_msg = require("./err-msg-COpsHMw2.js");
|
|
5
5
|
//#region src/generated/cap-input-defaults.ts
|
|
@@ -16,7 +16,7 @@ const require_err_msg = require("./err-msg-COpsHMw2.js");
|
|
|
16
16
|
* Plain data, zero Zod: a forked runner must not import the schema barrel
|
|
17
17
|
* (~144MB RSS per runner — D28).
|
|
18
18
|
*
|
|
19
|
-
* Coverage: 24 caps,
|
|
19
|
+
* Coverage: 24 caps, 58 methods with defaults.
|
|
20
20
|
*/
|
|
21
21
|
var CAP_INPUT_DEFAULTS = Object.freeze({
|
|
22
22
|
"addons": { "getLogs": { "limit": 100 } },
|
|
@@ -136,6 +136,7 @@ var CAP_INPUT_DEFAULTS = Object.freeze({
|
|
|
136
136
|
"getMotionEvents": { "limit": 1e3 },
|
|
137
137
|
"getObjectEvents": { "limit": 1e3 },
|
|
138
138
|
"getSensorEvents": { "limit": 1e3 },
|
|
139
|
+
"listRecentSummaries": { "limit": 100 },
|
|
139
140
|
"listRecentTracks": { "limit": 200 },
|
|
140
141
|
"listSummaries": { "limit": 50 },
|
|
141
142
|
"reclaimDebugMedia": { "mode": "report" },
|
package/dist/addon.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { D as adminUiCapability, E as DeviceType, G as scopeKey, H as ReadinessTimeoutError, M as expandCapMethods, R as nodePin, S as DEVICE_CHILDREN_BATCH_MAX, St as normalizeAddonInitResult, Tt as emitReadiness, V as ReadinessRegistry, a as asJsonObject, b as deviceOpsCapability, bt as DisposerChain, d as BOOT_RECOVERY_BACKOFF_MS, f as DEVICE_SCOPED_CAPS, h as createEventBusSliceSource, m as createDeviceProxy, p as isDeviceScopedCap, s as asString, t as sleep, u as parseJsonUnknown, vt as DATAPLANE_SECRET_HEADER, x as viewerUiCapability, xt as BaseAddon, z as readNodePin } from "./sleep-
|
|
1
|
+
import { D as adminUiCapability, E as DeviceType, G as scopeKey, H as ReadinessTimeoutError, M as expandCapMethods, R as nodePin, S as DEVICE_CHILDREN_BATCH_MAX, St as normalizeAddonInitResult, Tt as emitReadiness, V as ReadinessRegistry, a as asJsonObject, b as deviceOpsCapability, bt as DisposerChain, d as BOOT_RECOVERY_BACKOFF_MS, f as DEVICE_SCOPED_CAPS, h as createEventBusSliceSource, m as createDeviceProxy, p as isDeviceScopedCap, s as asString, t as sleep, u as parseJsonUnknown, vt as DATAPLANE_SECRET_HEADER, x as viewerUiCapability, xt as BaseAddon, z as readNodePin } from "./sleep-DBKu2-U5.mjs";
|
|
2
2
|
import { t as EventCategory } from "./event-category-ZyX6jcse.mjs";
|
|
3
3
|
import { t as errMsg } from "./err-msg-IQTHeDzc.mjs";
|
|
4
4
|
//#region src/generated/cap-input-defaults.ts
|
|
@@ -15,7 +15,7 @@ import { t as errMsg } from "./err-msg-IQTHeDzc.mjs";
|
|
|
15
15
|
* Plain data, zero Zod: a forked runner must not import the schema barrel
|
|
16
16
|
* (~144MB RSS per runner — D28).
|
|
17
17
|
*
|
|
18
|
-
* Coverage: 24 caps,
|
|
18
|
+
* Coverage: 24 caps, 58 methods with defaults.
|
|
19
19
|
*/
|
|
20
20
|
var CAP_INPUT_DEFAULTS = Object.freeze({
|
|
21
21
|
"addons": { "getLogs": { "limit": 100 } },
|
|
@@ -135,6 +135,7 @@ var CAP_INPUT_DEFAULTS = Object.freeze({
|
|
|
135
135
|
"getMotionEvents": { "limit": 1e3 },
|
|
136
136
|
"getObjectEvents": { "limit": 1e3 },
|
|
137
137
|
"getSensorEvents": { "limit": 1e3 },
|
|
138
|
+
"listRecentSummaries": { "limit": 100 },
|
|
138
139
|
"listRecentTracks": { "limit": 200 },
|
|
139
140
|
"listSummaries": { "limit": 50 },
|
|
140
141
|
"reclaimDebugMedia": { "mode": "report" },
|
|
@@ -82,7 +82,7 @@ export { NetworkAccessStatusSchema, NetworkEndpointSchema, networkAccessCapabili
|
|
|
82
82
|
export { type Attachment, type AttachmentMediaType, AttachmentMediaTypeSchema, AttachmentSchema, type DiscoveredTarget, DiscoveredTargetSchema, type INotificationOutputProvider, type NotificationAction, type NotificationActionIcon, NotificationActionIconSchema, NotificationActionSchema, type NotificationFormat, NotificationFormatSchema, NotificationSchema, notificationOutputCapability, type RenderedAs, RenderedAsSchema, type SendResult, SendResultSchema, type Target, type TargetKind, type TargetKindCaps, TargetKindCapsSchema, type TargetKindLevel, TargetKindLevelSchema, TargetKindSchema, TargetSchema, type TestResult, TestResultSchema, } from './notification-output.cap.js';
|
|
83
83
|
export { type INotificationRulesProvider, NC_ALARM_SYSTEM_EVENT_KINDS, NC_AUDIO_DBFS_FLOOR, NC_AUTHORABLE_SYSTEM_EVENT_KINDS, NC_CONDITION_CATALOG, NC_CONFIRM_DEFAULT_MAX_IMAGE_PX, NC_CONFIRM_DEFAULT_TIMEOUT_MS, NC_CONFIRM_MAX_TIMEOUT_MS, NC_CONFIRM_MIN_TIMEOUT_MS, NC_DEFAULT_SNOOZE_MINUTES, NC_HISTORY_LIMIT_DEFAULT, NC_HISTORY_LIMIT_MAX, NC_MAX_PER_TRACK_IMMEDIATE, NC_SNOOZE_MAX_MINUTES, type NcAlarmConfig, NcAlarmConfigSchema, type NcAlarmModeCoverage, NcAlarmModeCoverageSchema, type NcAlarmSettings, type NcAlarmSettingsPatch, NcAlarmSettingsPatchSchema, NcAlarmSettingsSchema, type NcAlarmSkippedDevice, NcAlarmSkippedDeviceSchema, type NcAlarmSkipReason, NcAlarmSkipReasonSchema, type NcAudioCondition, NcAudioConditionSchema, type NcConditionDescriptor, NcConditionDescriptorSchema, type NcConditions, NcConditionsSchema, type NcConfirm, type NcConfirmExpect, NcConfirmExpectSchema, NcConfirmSchema, type NcCrossing, NcCrossingSchema, type NcDelivery, NcDeliverySchema, type NcDeviceStateCondition, NcDeviceStateConditionSchema, type NcHistoryEntry, NcHistoryEntrySchema, type NcHistoryFilter, NcHistoryFilterSchema, type NcHistoryRecordKind, NcHistoryRecordKindSchema, type NcHistoryStatus, NcHistoryStatusSchema, type NcHistorySubject, NcHistorySubjectSchema, type NcMediaFrame, NcMediaFrameSchema, type NcMediaPolicy, NcMediaPolicySchema, type NcOccupancyCondition, NcOccupancyConditionSchema, type NcPlateMatcher, NcPlateMatcherSchema, type NcRule, type NcRuleAction, NcRuleActionSchema, type NcRuleActionSequence, NcRuleActionSequenceSchema, type NcRuleActions, NcRuleActionsSchema, type NcRuleInput, NcRuleInputSchema, type NcRuleNotificationButton, NcRuleNotificationButtonSchema, type NcRulePatch, NcRulePatchSchema, NcRuleSchema, type NcRuleTarget, NcRuleTargetSchema, type NcSceneCondition, NcSceneConditionSchema, type NcSchedule, NcScheduleSchema, type NcScheduleWindow, NcScheduleWindowSchema, type NcSnooze, type NcSnoozeInput, NcSnoozeInputSchema, NcSnoozeSchema, type NcSnoozeScope, NcSnoozeScopeSchema, type NcSnoozeSuppressed, NcSnoozeSuppressedSchema, type NcSystemEventCondition, NcSystemEventConditionSchema, type NcSystemEventKind, NcSystemEventKindSchema, type NcTestResult, NcTestResultSchema, type NcThrottle, type NcThrottleGranularity, NcThrottleGranularitySchema, NcThrottleSchema, type NcZoneCondition, NcZoneConditionSchema, notificationRulesCapability, } from './notification-rules.cap.js';
|
|
84
84
|
export { type IOauthIntegrationProvider, type OauthIntegrationDescriptor, OauthIntegrationDescriptorSchema, oauthIntegrationCapability, } from './oauth-integration.cap.js';
|
|
85
|
-
export { type AudioEvent, type AudioEventDraft, AudioEventSchema, type DetectionSource, DetectionSourceSchema, EVENT_DENSITY_BATCH_MAX, type EventDensityBucket, EventDensityBucketSchema, type EventDensityForDevice, EventDensityForDeviceSchema, type EventKind, type EventKindCategory, EventKindCategorySchema, type EventKindDescriptor, EventKindDescriptorSchema, type EventKindIcon, EventKindIconSchema, EventKindSchema, type EventKindsForDevice, EventKindsForDeviceSchema, type EventMediaKindBreakdown, type EventMediaKindFootprint, type EventPruneCounts, type EventStoreDeviceFootprint, type EventStoreFootprint, type IPipelineAnalyticsProvider, type KeyEvent, KeyEventSchema, type KeyEventsForDevice, type LabelAttribution, LabelAttributionSchema, type LabelTier, LabelTierSchema, MAX_TRACK_DEBUG_NOTE_LEN, type MediaFile, type MediaFileBytes, type MediaFileInfo, MediaFileInfoSchema, type MediaFileKind, MediaFileKindEnum, type MediaFileRef, MediaFileRefSchema, MediaFileSchema, type MotionEvent, type MotionEventDraft, MotionEventSchema, type ObjectEvent, type ObjectEventDraft, ObjectEventSchema, pipelineAnalyticsCapability, type RecentTracksPage, RecentTracksPageSchema, type RecentTracksQuery, RecentTracksQueryInput, type RetrainAnnotation, type RetrainAnnotationDraft, RetrainAnnotationDraftSchema, RetrainAnnotationKindSchema, RetrainAnnotationSchema, RetrainAnnotationSourceSchema, type RetrainAssistResult, RetrainAssistResultSchema, RetrainAssistSubjectSchema, RetrainCopyRefusalSchema, type RetrainFrame, type RetrainFrameCandidate, RetrainFrameCandidateSchema, type RetrainFrameList, RetrainFrameListSchema, RetrainFrameSchema, type RetrainFrameSelection, RetrainFrameSelectionSchema, type RetrainMacroClass, RetrainMacroClassSchema, type RetrainStatus, RetrainStatusSchema, type RetrainTrack, RetrainTrackSchema, type RetrainTransitionResult, RetrainTransitionResultSchema, type ScoredObjectEvent, ScoredObjectEventSchema, type SensorEvent, SensorEventSchema, SUMMARIES_DEFAULT_LIMIT, SUMMARIES_MAX_LIMIT, type SummariesPage, type Summary, type SummaryDetail, SummarySchema, type Track, type TrackCascadeCounts, TrackCascadeCountsSchema, type TrackEnvelope, TrackEnvelopeSchema, TrackedDetectionSchema, type TrackFlags, type TrackFlagsPatch, TrackFlagsPatchSchema, TrackFlagsSchema, type TrackProjection, TrackProjectionSchema, TrackSchema, type TrackSource, TrackSourceSchema, type TrackState, TrackStateSchema, type TrackZoneFilter, TrackZoneFilterSchema, type TrainingExportDeviceTotals, TrainingExportDeviceTotalsSchema, type TrainingExportSummary, TrainingExportSummarySchema, type ZoneCrossing, type ZoneCrossingDirection, ZoneCrossingDirectionSchema, ZoneCrossingSchema, } from './pipeline-analytics.cap.js';
|
|
85
|
+
export { type AudioEvent, type AudioEventDraft, AudioEventSchema, type DetectionSource, DetectionSourceSchema, EVENT_DENSITY_BATCH_MAX, type EventDensityBucket, EventDensityBucketSchema, type EventDensityForDevice, EventDensityForDeviceSchema, type EventKind, type EventKindCategory, EventKindCategorySchema, type EventKindDescriptor, EventKindDescriptorSchema, type EventKindIcon, EventKindIconSchema, EventKindSchema, type EventKindsForDevice, EventKindsForDeviceSchema, type EventMediaKindBreakdown, type EventMediaKindFootprint, type EventPruneCounts, type EventStoreDeviceFootprint, type EventStoreFootprint, type IPipelineAnalyticsProvider, type KeyEvent, KeyEventSchema, type KeyEventsForDevice, type LabelAttribution, LabelAttributionSchema, type LabelTier, LabelTierSchema, MAX_TRACK_DEBUG_NOTE_LEN, type MediaFile, type MediaFileBytes, type MediaFileInfo, MediaFileInfoSchema, type MediaFileKind, MediaFileKindEnum, type MediaFileRef, MediaFileRefSchema, MediaFileSchema, type MotionEvent, type MotionEventDraft, MotionEventSchema, type ObjectEvent, type ObjectEventDraft, ObjectEventSchema, pipelineAnalyticsCapability, type RecentTracksPage, RecentTracksPageSchema, type RecentTracksQuery, RecentTracksQueryInput, type RetrainAnnotation, type RetrainAnnotationDraft, RetrainAnnotationDraftSchema, RetrainAnnotationKindSchema, RetrainAnnotationSchema, RetrainAnnotationSourceSchema, type RetrainAssistResult, RetrainAssistResultSchema, RetrainAssistSubjectSchema, RetrainCopyRefusalSchema, type RetrainFrame, type RetrainFrameCandidate, RetrainFrameCandidateSchema, type RetrainFrameList, RetrainFrameListSchema, RetrainFrameSchema, type RetrainFrameSelection, RetrainFrameSelectionSchema, type RetrainMacroClass, RetrainMacroClassSchema, type RetrainStatus, RetrainStatusSchema, type RetrainTrack, RetrainTrackSchema, type RetrainTransitionResult, RetrainTransitionResultSchema, type ScoredObjectEvent, ScoredObjectEventSchema, type SensorEvent, SensorEventSchema, SUMMARIES_DEFAULT_LIMIT, SUMMARIES_MAX_LIMIT, type SummariesPage, type Summary, type SummaryDetail, type SummaryListItem, SummarySchema, type Track, type TrackCascadeCounts, TrackCascadeCountsSchema, type TrackEnvelope, TrackEnvelopeSchema, TrackedDetectionSchema, type TrackFlags, type TrackFlagsPatch, TrackFlagsPatchSchema, TrackFlagsSchema, type TrackProjection, TrackProjectionSchema, TrackSchema, type TrackSource, TrackSourceSchema, type TrackState, TrackStateSchema, type TrackZoneFilter, TrackZoneFilterSchema, type TrainingExportDeviceTotals, TrainingExportDeviceTotalsSchema, type TrainingExportSummary, TrainingExportSummarySchema, type ZoneCrossing, type ZoneCrossingDirection, ZoneCrossingDirectionSchema, ZoneCrossingSchema, } from './pipeline-analytics.cap.js';
|
|
86
86
|
export type { NativeCropRef, PipelineStepInputOutput, PipelineValidationIssue, PipelineValidationResult, } from './pipeline-executor.cap.js';
|
|
87
87
|
export { ModelSubstitutionSchema, NativeCropRefSchema, PipelineDefaultStepSchema, PipelineEngineChoiceSchema, PipelineRunResultBridge, PipelineStepInputSchema, PipelineValidationIssueSchema, PipelineValidationResultSchema, pipelineExecutorCapability, } from './pipeline-executor.cap.js';
|
|
88
88
|
export type { CameraAssignmentStatus, CameraAudioStatus, CameraBrokerProfile, CameraBrokerStatus, CameraDecoderShm, CameraDecoderStatus, CameraDetectionPhase, CameraDetectionProvisioning, CameraDetectionProvisioningState, CameraDetectionStatus, CameraMotionStatus, CameraRecordingMode, CameraRecordingStatus, CameraSourceStatus, CameraSourceStream, CameraStatus, CameraStatusDegradation, CameraStatusDegradationReason, CameraStatusStage, DiskReconcileJob, InferenceDeviceExclusionReason, IngestOwner, NodeInferenceDevice, NodeInferenceDevices, } from './pipeline-orchestrator.cap.js';
|
|
@@ -92,7 +92,7 @@ export { FrameLazyCountersSchema, FrameLazyMetricsSchema, MotionSourceEnum, Moti
|
|
|
92
92
|
export { AudioChunkInputSchema, AudioClassificationLabelSchema, AudioLevelSchema, BoundingBoxSchema, FrameInputSchema, SpatialDetectionSchema, } from './schemas/detection-shared.js';
|
|
93
93
|
export { CameraMetricsSchema, CameraMetricsWithDeviceIdSchema, OrchestratorMetricsSchema, } from './schemas/orchestrator-metrics.js';
|
|
94
94
|
export type { CameraStream, CamProfile, CamStreamKind, DecodedAudioChunkWire, FrameHandleFormat, ProfileRtspEntry, ProfileSlot, ProfileSlotStatus, SubscribeAudioChunksInput, SubscribeAudioChunksResult, SubscribeFramesInput, SubscribeFramesResult, } from './schemas/streaming-shared.js';
|
|
95
|
-
export { BrokerStatsSchema, BrokerStatusSchema, CAM_PROFILE_ORDER, CameraStreamSchema, CamProfileSchema, CamStreamKindSchema, CamStreamResolutionSchema,
|
|
95
|
+
export { AudioChunkFormatSchema, BrokerStatsSchema, BrokerStatusSchema, CAM_PROFILE_ORDER, CameraStreamSchema, CamProfileSchema, CamStreamKindSchema, CamStreamResolutionSchema, DecodedAudioChunkSchema, DecodedFrameSchema, EncodedPacketSchema, FrameHandleFormatSchema, FrameHandleSchema, makeProfileBrokerId, makeSourceBrokerId, ProfileRtspEntrySchema, ProfileSlotSchema, ProfileSlotStatusSchema, parseProfileBrokerId, StreamSourceEntrySchema, StreamSourceSchema, SubscribeAudioChunksInputSchema, SubscribeAudioChunksResultSchema, SubscribeFramesInputSchema, SubscribeFramesResultSchema, selectAssignedProfileSlots, } from './schemas/streaming-shared.js';
|
|
96
96
|
export { buildEventKindDescriptor, EVENT_KIND_BY_CAP, EVENTFUL_CAP_NAMES, type SensorEventKindDescriptor, } from './sensor-event-kinds.js';
|
|
97
97
|
export { type ImageContract, ImageContractSchema, type ImageContractState, ImageContractStateSchema, type IServerManagementProvider, type ServerBootMode, ServerBootModeSchema, type ServerPackageStatus, ServerPackageStatusSchema, type ServerRollbackInfo, ServerRollbackInfoSchema, type ServerUpdateActionResult, ServerUpdateActionResultSchema, type ServerUpdateCheckResult, ServerUpdateCheckResultSchema, type ServerUpdateState, ServerUpdateStateSchema, serverManagementCapability, type WrapperEvidence, WrapperEvidenceSchema, type WrapperIdentity, WrapperIdentitySchema, type WrapperKind, WrapperKindSchema, } from './server-management.cap.js';
|
|
98
98
|
export { type BulkRecord, BulkRecordSchema, type CollectionColumn, CollectionColumnSchema, type CollectionIndex, CollectionIndexSchema, type ISettingsStoreProvider, type MutationFilter, MutationFilterSchema, QueryFilterSchema, SettingsRecordSchema, type SettingsStoreClient, settingsStoreCapability, } from './settings-store.cap.js';
|
|
@@ -1231,18 +1231,6 @@ export declare const SummarySchema: z.ZodObject<{
|
|
|
1231
1231
|
export type Summary = z.infer<typeof SummarySchema>;
|
|
1232
1232
|
export declare const SUMMARIES_MAX_LIMIT = 200;
|
|
1233
1233
|
export declare const SUMMARIES_DEFAULT_LIMIT = 50;
|
|
1234
|
-
declare const SummariesPageSchema: z.ZodObject<{
|
|
1235
|
-
summaries: z.ZodReadonly<z.ZodArray<z.ZodObject<{
|
|
1236
|
-
id: z.ZodString;
|
|
1237
|
-
deviceId: z.ZodNumber;
|
|
1238
|
-
openedAt: z.ZodNumber;
|
|
1239
|
-
lastActiveAt: z.ZodNumber;
|
|
1240
|
-
sealedAt: z.ZodNullable<z.ZodNumber>;
|
|
1241
|
-
memberCount: z.ZodNumber;
|
|
1242
|
-
groupShotMediaId: z.ZodNullable<z.ZodNumber>;
|
|
1243
|
-
}, z.core.$strip>>>;
|
|
1244
|
-
}, z.core.$strip>;
|
|
1245
|
-
export type SummariesPage = z.infer<typeof SummariesPageSchema>;
|
|
1246
1234
|
/**
|
|
1247
1235
|
* One member of a group, as a reader needs it.
|
|
1248
1236
|
*
|
|
@@ -1261,6 +1249,8 @@ declare const SummaryMemberSchema: z.ZodObject<{
|
|
|
1261
1249
|
child: "child";
|
|
1262
1250
|
}>>;
|
|
1263
1251
|
joinedAt: z.ZodNumber;
|
|
1252
|
+
label: z.ZodOptional<z.ZodString>;
|
|
1253
|
+
subLabel: z.ZodOptional<z.ZodString>;
|
|
1264
1254
|
}, z.core.$strip>;
|
|
1265
1255
|
export type SummaryMemberOut = z.infer<typeof SummaryMemberSchema>;
|
|
1266
1256
|
declare const SummaryDetailSchema: z.ZodObject<{
|
|
@@ -1282,8 +1272,54 @@ declare const SummaryDetailSchema: z.ZodObject<{
|
|
|
1282
1272
|
child: "child";
|
|
1283
1273
|
}>>;
|
|
1284
1274
|
joinedAt: z.ZodNumber;
|
|
1275
|
+
label: z.ZodOptional<z.ZodString>;
|
|
1276
|
+
subLabel: z.ZodOptional<z.ZodString>;
|
|
1277
|
+
}, z.core.$strip>>>;
|
|
1278
|
+
}, z.core.$strip>;
|
|
1279
|
+
/**
|
|
1280
|
+
* What a LIST of groups carries: the envelope plus what it is MADE OF.
|
|
1281
|
+
*
|
|
1282
|
+
* Coarse on purpose — the operator's rule is "only the rough data on the list,
|
|
1283
|
+
* we extend when we notice we need more". Enough to draw the card ("two people
|
|
1284
|
+
* and a dog") and no more. The MEMBERS, their names and the per-member links
|
|
1285
|
+
* are on {@link getSummary}: shipping every member of every group so a client
|
|
1286
|
+
* can count them turns a page of two hundred groups into a thousand records to
|
|
1287
|
+
* draw two hundred badges.
|
|
1288
|
+
*/
|
|
1289
|
+
declare const SummaryListItemSchema: z.ZodObject<{
|
|
1290
|
+
summary: z.ZodObject<{
|
|
1291
|
+
id: z.ZodString;
|
|
1292
|
+
deviceId: z.ZodNumber;
|
|
1293
|
+
openedAt: z.ZodNumber;
|
|
1294
|
+
lastActiveAt: z.ZodNumber;
|
|
1295
|
+
sealedAt: z.ZodNullable<z.ZodNumber>;
|
|
1296
|
+
memberCount: z.ZodNumber;
|
|
1297
|
+
groupShotMediaId: z.ZodNullable<z.ZodNumber>;
|
|
1298
|
+
}, z.core.$strip>;
|
|
1299
|
+
classes: z.ZodReadonly<z.ZodArray<z.ZodObject<{
|
|
1300
|
+
className: z.ZodNullable<z.ZodString>;
|
|
1301
|
+
count: z.ZodNumber;
|
|
1285
1302
|
}, z.core.$strip>>>;
|
|
1286
1303
|
}, z.core.$strip>;
|
|
1304
|
+
export type SummaryListItem = z.infer<typeof SummaryListItemSchema>;
|
|
1305
|
+
declare const SummariesPageSchema: z.ZodObject<{
|
|
1306
|
+
summaries: z.ZodReadonly<z.ZodArray<z.ZodObject<{
|
|
1307
|
+
summary: z.ZodObject<{
|
|
1308
|
+
id: z.ZodString;
|
|
1309
|
+
deviceId: z.ZodNumber;
|
|
1310
|
+
openedAt: z.ZodNumber;
|
|
1311
|
+
lastActiveAt: z.ZodNumber;
|
|
1312
|
+
sealedAt: z.ZodNullable<z.ZodNumber>;
|
|
1313
|
+
memberCount: z.ZodNumber;
|
|
1314
|
+
groupShotMediaId: z.ZodNullable<z.ZodNumber>;
|
|
1315
|
+
}, z.core.$strip>;
|
|
1316
|
+
classes: z.ZodReadonly<z.ZodArray<z.ZodObject<{
|
|
1317
|
+
className: z.ZodNullable<z.ZodString>;
|
|
1318
|
+
count: z.ZodNumber;
|
|
1319
|
+
}, z.core.$strip>>>;
|
|
1320
|
+
}, z.core.$strip>>>;
|
|
1321
|
+
}, z.core.$strip>;
|
|
1322
|
+
export type SummariesPage = z.infer<typeof SummariesPageSchema>;
|
|
1287
1323
|
export type SummaryDetail = z.infer<typeof SummaryDetailSchema>;
|
|
1288
1324
|
declare const RecentTracksPageSchema: z.ZodObject<{
|
|
1289
1325
|
tracks: z.ZodReadonly<z.ZodArray<z.ZodObject<{
|
|
@@ -2265,17 +2301,53 @@ export declare const pipelineAnalyticsCapability: {
|
|
|
2265
2301
|
since: z.ZodOptional<z.ZodNumber>;
|
|
2266
2302
|
until: z.ZodOptional<z.ZodNumber>;
|
|
2267
2303
|
limit: z.ZodDefault<z.ZodNumber>;
|
|
2304
|
+
classes: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
2268
2305
|
}, z.core.$strip>, z.ZodObject<{
|
|
2269
2306
|
summaries: z.ZodReadonly<z.ZodArray<z.ZodObject<{
|
|
2270
|
-
|
|
2271
|
-
|
|
2272
|
-
|
|
2273
|
-
|
|
2274
|
-
|
|
2275
|
-
|
|
2276
|
-
|
|
2307
|
+
summary: z.ZodObject<{
|
|
2308
|
+
id: z.ZodString;
|
|
2309
|
+
deviceId: z.ZodNumber;
|
|
2310
|
+
openedAt: z.ZodNumber;
|
|
2311
|
+
lastActiveAt: z.ZodNumber;
|
|
2312
|
+
sealedAt: z.ZodNullable<z.ZodNumber>;
|
|
2313
|
+
memberCount: z.ZodNumber;
|
|
2314
|
+
groupShotMediaId: z.ZodNullable<z.ZodNumber>;
|
|
2315
|
+
}, z.core.$strip>;
|
|
2316
|
+
classes: z.ZodReadonly<z.ZodArray<z.ZodObject<{
|
|
2317
|
+
className: z.ZodNullable<z.ZodString>;
|
|
2318
|
+
count: z.ZodNumber;
|
|
2319
|
+
}, z.core.$strip>>>;
|
|
2277
2320
|
}, z.core.$strip>>>;
|
|
2278
2321
|
}, z.core.$strip>, import("./capability-definition.js").CapabilityMethodKind>;
|
|
2322
|
+
/**
|
|
2323
|
+
* The PAGED feed — the reel and the Events gallery. Same cursor contract as
|
|
2324
|
+
* {@link listRecentTracks}, so one screen cannot hold two ideas of newest.
|
|
2325
|
+
*/
|
|
2326
|
+
readonly listRecentSummaries: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
|
|
2327
|
+
deviceIds: z.ZodArray<z.ZodNumber>;
|
|
2328
|
+
since: z.ZodOptional<z.ZodNumber>;
|
|
2329
|
+
until: z.ZodOptional<z.ZodNumber>;
|
|
2330
|
+
limit: z.ZodDefault<z.ZodNumber>;
|
|
2331
|
+
cursor: z.ZodOptional<z.ZodString>;
|
|
2332
|
+
classes: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
2333
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
2334
|
+
summaries: z.ZodReadonly<z.ZodArray<z.ZodObject<{
|
|
2335
|
+
summary: z.ZodObject<{
|
|
2336
|
+
id: z.ZodString;
|
|
2337
|
+
deviceId: z.ZodNumber;
|
|
2338
|
+
openedAt: z.ZodNumber;
|
|
2339
|
+
lastActiveAt: z.ZodNumber;
|
|
2340
|
+
sealedAt: z.ZodNullable<z.ZodNumber>;
|
|
2341
|
+
memberCount: z.ZodNumber;
|
|
2342
|
+
groupShotMediaId: z.ZodNullable<z.ZodNumber>;
|
|
2343
|
+
}, z.core.$strip>;
|
|
2344
|
+
classes: z.ZodReadonly<z.ZodArray<z.ZodObject<{
|
|
2345
|
+
className: z.ZodNullable<z.ZodString>;
|
|
2346
|
+
count: z.ZodNumber;
|
|
2347
|
+
}, z.core.$strip>>>;
|
|
2348
|
+
}, z.core.$strip>>>;
|
|
2349
|
+
nextCursor: z.ZodNullable<z.ZodString>;
|
|
2350
|
+
}, z.core.$strip>, import("./capability-definition.js").CapabilityMethodKind>;
|
|
2279
2351
|
/** One summary with its member track ids; `null` for an id nobody wrote. */
|
|
2280
2352
|
readonly getSummary: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
|
|
2281
2353
|
id: z.ZodString;
|
|
@@ -2298,6 +2370,8 @@ export declare const pipelineAnalyticsCapability: {
|
|
|
2298
2370
|
child: "child";
|
|
2299
2371
|
}>>;
|
|
2300
2372
|
joinedAt: z.ZodNumber;
|
|
2373
|
+
label: z.ZodOptional<z.ZodString>;
|
|
2374
|
+
subLabel: z.ZodOptional<z.ZodString>;
|
|
2301
2375
|
}, z.core.$strip>>>;
|
|
2302
2376
|
}, z.core.$strip>>, import("./capability-definition.js").CapabilityMethodKind>;
|
|
2303
2377
|
readonly clearTracks: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
|
|
@@ -5096,6 +5096,13 @@ export type AppRouter = TrpcCoreRouter<{
|
|
|
5096
5096
|
output: z.infer<typeof pipelineAnalyticsCapability.methods.listSummaries.output>;
|
|
5097
5097
|
meta: object;
|
|
5098
5098
|
}>;
|
|
5099
|
+
listRecentSummaries: TRPCQueryProcedure<{
|
|
5100
|
+
input: {
|
|
5101
|
+
[x: string]: unknown;
|
|
5102
|
+
} & z.input<typeof pipelineAnalyticsCapability.methods.listRecentSummaries.input>;
|
|
5103
|
+
output: z.infer<typeof pipelineAnalyticsCapability.methods.listRecentSummaries.output>;
|
|
5104
|
+
meta: object;
|
|
5105
|
+
}>;
|
|
5099
5106
|
getSummary: TRPCQueryProcedure<{
|
|
5100
5107
|
input: {
|
|
5101
5108
|
[x: string]: unknown;
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* Plain data, zero Zod: a forked runner must not import the schema barrel
|
|
12
12
|
* (~144MB RSS per runner — D28).
|
|
13
13
|
*
|
|
14
|
-
* Coverage: 24 caps,
|
|
14
|
+
* Coverage: 24 caps, 58 methods with defaults.
|
|
15
15
|
*/
|
|
16
16
|
export declare const CAP_INPUT_DEFAULTS: Readonly<Record<string, Readonly<Record<string, Readonly<Record<string, unknown>>>>>>;
|
|
17
17
|
/**
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* scope+access check inside `protectedProcedure` (see
|
|
7
7
|
* `server/backend/src/api/trpc/trpc.middleware.ts`).
|
|
8
8
|
*
|
|
9
|
-
* Coverage:
|
|
9
|
+
* Coverage: 1032 method paths across 129 capabilities.
|
|
10
10
|
*/
|
|
11
11
|
import type { CapabilityMethodAccess } from '../capabilities/capability-definition.js';
|
|
12
12
|
export interface MethodAccessRecord {
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* system-scope cap that takes a deviceId was previously never device-filtered
|
|
7
7
|
* — see the generator header).
|
|
8
8
|
*
|
|
9
|
-
* Coverage:
|
|
9
|
+
* Coverage: 375 methods carry a device reference, of which
|
|
10
10
|
* 139 are on SYSTEM-scope caps.
|
|
11
11
|
*
|
|
12
12
|
* Top-level fields, number arrays, and one-level arrays of objects carrying
|
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-DXsYD0RX.js");
|
|
3
3
|
const require_event_category = require("./event-category-yW4s1MGD.js");
|
|
4
4
|
const require_canonical_hash = require("./canonical-hash-DNV8S5ET.js");
|
|
5
5
|
const require_enums = require("./enums.js");
|
|
@@ -20249,9 +20249,11 @@ var SummariesQueryInput = zod.z.object({
|
|
|
20249
20249
|
deviceIds: zod.z.array(zod.z.number()).min(1),
|
|
20250
20250
|
since: zod.z.number().optional(),
|
|
20251
20251
|
until: zod.z.number().optional(),
|
|
20252
|
-
limit: zod.z.number().int().min(1).max(200).default(50)
|
|
20252
|
+
limit: zod.z.number().int().min(1).max(200).default(50),
|
|
20253
|
+
/** The same member-wise filter {@link listRecentSummaries} takes — one
|
|
20254
|
+
* meaning of "dog" on every summary surface. */
|
|
20255
|
+
classes: zod.z.array(zod.z.string().min(1).max(60)).max(40).optional()
|
|
20253
20256
|
});
|
|
20254
|
-
var SummariesPageSchema = zod.z.object({ summaries: zod.z.array(SummarySchema).readonly() });
|
|
20255
20257
|
/**
|
|
20256
20258
|
* One member of a group, as a reader needs it.
|
|
20257
20259
|
*
|
|
@@ -20263,7 +20265,16 @@ var SummariesPageSchema = zod.z.object({ summaries: zod.z.array(SummarySchema).r
|
|
|
20263
20265
|
*/
|
|
20264
20266
|
var SummaryMemberSchema = zod.z.object({
|
|
20265
20267
|
trackId: zod.z.string(),
|
|
20266
|
-
/**
|
|
20268
|
+
/**
|
|
20269
|
+
* The track's class at the time it JOINED, or `null` when it was unresolved
|
|
20270
|
+
* and the track no longer exists to fill it.
|
|
20271
|
+
*
|
|
20272
|
+
* The join, not the latest opinion: class voting can re-decide a track's
|
|
20273
|
+
* class afterwards, and a group's composition is the history of who came
|
|
20274
|
+
* together. A consumer counts these to badge a thumbnail — "two people and a
|
|
20275
|
+
* dog" — rather than being handed a second, denormalised tally that would
|
|
20276
|
+
* drift from the members it claims to describe.
|
|
20277
|
+
*/
|
|
20267
20278
|
className: zod.z.string().nullable(),
|
|
20268
20279
|
/** `primary` is the one member that carries the group's identity. */
|
|
20269
20280
|
role: zod.z.enum([
|
|
@@ -20271,13 +20282,87 @@ var SummaryMemberSchema = zod.z.object({
|
|
|
20271
20282
|
"sibling",
|
|
20272
20283
|
"child"
|
|
20273
20284
|
]).nullable(),
|
|
20274
|
-
joinedAt: zod.z.number()
|
|
20285
|
+
joinedAt: zod.z.number(),
|
|
20286
|
+
/** Tier 1 — the sub-class (`dog`, `van`), resolved from the member's track
|
|
20287
|
+
* at read time. Absent when nothing resolved, never an empty string. */
|
|
20288
|
+
label: zod.z.string().optional(),
|
|
20289
|
+
/** Tier 2 — the instance: a person's name, a plate. Absent when the pipeline
|
|
20290
|
+
* recognised nobody, and absent for a member whose track has been pruned —
|
|
20291
|
+
* a thumbnail that names the wrong person is worse than one naming nobody. */
|
|
20292
|
+
subLabel: zod.z.string().optional()
|
|
20275
20293
|
});
|
|
20276
20294
|
var SummaryDetailSchema = zod.z.object({
|
|
20277
20295
|
summary: SummarySchema,
|
|
20278
20296
|
/** Members in absorption order, oldest join first. */
|
|
20279
20297
|
members: zod.z.array(SummaryMemberSchema).readonly()
|
|
20280
20298
|
});
|
|
20299
|
+
/**
|
|
20300
|
+
* What a LIST of groups carries: the envelope plus what it is MADE OF.
|
|
20301
|
+
*
|
|
20302
|
+
* Coarse on purpose — the operator's rule is "only the rough data on the list,
|
|
20303
|
+
* we extend when we notice we need more". Enough to draw the card ("two people
|
|
20304
|
+
* and a dog") and no more. The MEMBERS, their names and the per-member links
|
|
20305
|
+
* are on {@link getSummary}: shipping every member of every group so a client
|
|
20306
|
+
* can count them turns a page of two hundred groups into a thousand records to
|
|
20307
|
+
* draw two hundred badges.
|
|
20308
|
+
*/
|
|
20309
|
+
var SummaryListItemSchema = zod.z.object({
|
|
20310
|
+
summary: SummarySchema,
|
|
20311
|
+
/** Class counts, most numerous first; `className: null` is a member whose
|
|
20312
|
+
* class never resolved, counted so the counts add up to `memberCount`. */
|
|
20313
|
+
classes: zod.z.array(zod.z.object({
|
|
20314
|
+
className: zod.z.string().nullable(),
|
|
20315
|
+
count: zod.z.number().int().positive()
|
|
20316
|
+
})).readonly()
|
|
20317
|
+
});
|
|
20318
|
+
var SummariesPageSchema = zod.z.object({ summaries: zod.z.array(SummaryListItemSchema).readonly() });
|
|
20319
|
+
/**
|
|
20320
|
+
* The paged feed, deliberately the SAME shape as {@link RecentTracksQueryInput}.
|
|
20321
|
+
*
|
|
20322
|
+
* The reel on the cameras page and the Events gallery both ride a cursor, so a
|
|
20323
|
+
* summaries feed that could only answer "the last N for these cameras"
|
|
20324
|
+
* (`listSummaries`) would make groups available in the timeline and nowhere
|
|
20325
|
+
* else. Two feeds with different ordering contracts would be two ideas of what
|
|
20326
|
+
* "newest" means, on one screen.
|
|
20327
|
+
*/
|
|
20328
|
+
var RecentSummariesQueryInput = zod.z.object({
|
|
20329
|
+
/** Devices to merge. An empty array yields an empty page. */
|
|
20330
|
+
deviceIds: zod.z.array(zod.z.number()),
|
|
20331
|
+
/** Window lower bound on `lastActiveAt` (inclusive). */
|
|
20332
|
+
since: zod.z.number().optional(),
|
|
20333
|
+
/** Window upper bound on `lastActiveAt` (inclusive). */
|
|
20334
|
+
until: zod.z.number().optional(),
|
|
20335
|
+
limit: zod.z.number().int().min(1).max(500).default(100),
|
|
20336
|
+
/** Opaque continuation cursor from a previous page's `nextCursor`. */
|
|
20337
|
+
cursor: zod.z.string().optional(),
|
|
20338
|
+
/**
|
|
20339
|
+
* Restrict to these classes — THE SAME FIELD `listRecentTracks` takes, and
|
|
20340
|
+
* deliberately the same name: the events filter tree emits one list of ticked
|
|
20341
|
+
* taxonomy nodes, and a summaries feed that called it something else would
|
|
20342
|
+
* make the operator's one filter component produce two shapes.
|
|
20343
|
+
*
|
|
20344
|
+
* A question about the MEMBERS: a group matches when ANY of them does. "Show
|
|
20345
|
+
* me the arrivals with a dog" has to return the group of four people who had
|
|
20346
|
+
* one with them; a filter on the group's own fields could only ever answer
|
|
20347
|
+
* about its primary.
|
|
20348
|
+
*
|
|
20349
|
+
* Matched against all THREE tiers of a member — the class (`animal`), the
|
|
20350
|
+
* sub-class (`dog`) and the instance (a name, a plate) — because which tier a
|
|
20351
|
+
* ticked node lives on is the taxonomy's business, not the caller's. `dog` is
|
|
20352
|
+
* an event kind in the tree and a tier-1 label on an `animal` track; a filter
|
|
20353
|
+
* that read only the class would answer "animal" and never "dog".
|
|
20354
|
+
*
|
|
20355
|
+
* ABSENT or EMPTY means no filter — absent is not a selection of none.
|
|
20356
|
+
*/
|
|
20357
|
+
classes: zod.z.array(zod.z.string().min(1).max(60)).max(40).optional()
|
|
20358
|
+
});
|
|
20359
|
+
var RecentSummariesPageSchema = zod.z.object({
|
|
20360
|
+
/** Ordered by (`lastActiveAt` DESC, id DESC). Same light item as
|
|
20361
|
+
* {@link listSummaries} — one list shape, so a card renders the same
|
|
20362
|
+
* whichever feed drew it. */
|
|
20363
|
+
summaries: zod.z.array(SummaryListItemSchema).readonly(),
|
|
20364
|
+
nextCursor: zod.z.string().nullable()
|
|
20365
|
+
});
|
|
20281
20366
|
var RecentTracksPageSchema = zod.z.object({
|
|
20282
20367
|
/** Merged page, ordered by (`lastSeen` DESC, `trackId` DESC). */
|
|
20283
20368
|
tracks: zod.z.array(TrackSchema).readonly(),
|
|
@@ -20734,6 +20819,11 @@ var pipelineAnalyticsCapability = {
|
|
|
20734
20819
|
listRecentTracks: require_sleep.method(RecentTracksQueryInput, RecentTracksPageSchema),
|
|
20735
20820
|
/** Newest first by `openedAt`, for a camera set, inside an optional window. */
|
|
20736
20821
|
listSummaries: require_sleep.method(SummariesQueryInput, SummariesPageSchema),
|
|
20822
|
+
/**
|
|
20823
|
+
* The PAGED feed — the reel and the Events gallery. Same cursor contract as
|
|
20824
|
+
* {@link listRecentTracks}, so one screen cannot hold two ideas of newest.
|
|
20825
|
+
*/
|
|
20826
|
+
listRecentSummaries: require_sleep.method(RecentSummariesQueryInput, RecentSummariesPageSchema),
|
|
20737
20827
|
/** One summary with its member track ids; `null` for an id nobody wrote. */
|
|
20738
20828
|
getSummary: require_sleep.method(zod.z.object({ id: zod.z.string() }), SummaryDetailSchema.nullable()),
|
|
20739
20829
|
clearTracks: require_sleep.method(zod.z.object({ deviceId: zod.z.number() }), zod.z.void(), {
|
|
@@ -45956,6 +46046,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
45956
46046
|
addonId: null,
|
|
45957
46047
|
access: "view"
|
|
45958
46048
|
},
|
|
46049
|
+
"pipelineAnalytics.listRecentSummaries": {
|
|
46050
|
+
capName: "pipeline-analytics",
|
|
46051
|
+
capScope: "device",
|
|
46052
|
+
addonId: null,
|
|
46053
|
+
access: "view"
|
|
46054
|
+
},
|
|
45959
46055
|
"pipelineAnalytics.listRecentTracks": {
|
|
45960
46056
|
capName: "pipeline-analytics",
|
|
45961
46057
|
capScope: "device",
|
|
@@ -50052,6 +50148,11 @@ var METHOD_DEVICE_SELECTORS = Object.freeze({
|
|
|
50052
50148
|
form: "single",
|
|
50053
50149
|
optional: true
|
|
50054
50150
|
}],
|
|
50151
|
+
"pipelineAnalytics.listRecentSummaries": [{
|
|
50152
|
+
name: "deviceIds",
|
|
50153
|
+
form: "array",
|
|
50154
|
+
optional: false
|
|
50155
|
+
}],
|
|
50055
50156
|
"pipelineAnalytics.listRecentTracks": [{
|
|
50056
50157
|
name: "deviceIds",
|
|
50057
50158
|
form: "array",
|
package/dist/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { $ as CameraStreamSchema, A as DEVICE_STATUS_METHOD, At as collectHydratedFieldValues, B as toNodeId, C as ChargingStatus, Ct as createDurableState, D as adminUiCapability, Dt as WELL_KNOWN_TABS, E as DeviceType, Et as isEvent, F as resolveCapMount, Ft as expandAudioChunkToF32le, G as scopeKey, H as ReadinessTimeoutError, I as systemMethod, It as isAudioChunkFormat, J as BrokerStatusSchema, K as AudioChunkFormatSchema, L as CAP_NODE_PIN_CONTEXT_KEY, M as expandCapMethods, Mt as resolveHydratedFieldValue, N as isDeviceConfigCap, Nt as AUDIO_CHUNK_FORMATS, O as DEFAULT_RUNTIME_STATE_DURABILITY, Ot as WELL_KNOWN_TAB_MAP, P as method, Pt as audioChunkBytesPerSample, Q as CamStreamResolutionSchema, R as nodePin, S as DEVICE_CHILDREN_BATCH_MAX, St as normalizeAddonInitResult, T as DeviceRole, Tt as emitReadiness, U as emitDownForOwnedCaps, V as ReadinessRegistry, W as readinessKey, X as CamProfileSchema, Y as CAM_PROFILE_ORDER, Z as CamStreamKindSchema, _ as createMirrorSource, _t as selectAssignedProfileSlots, a as asJsonObject, at as ProfileRtspEntrySchema, b as deviceOpsCapability, bt as DisposerChain, c as parseJsonArray, ct as StreamSourceEntrySchema, d as BOOT_RECOVERY_BACKOFF_MS, dt as SubscribeAudioChunksResultSchema, et as DecodedAudioChunkSchema, f as DEVICE_SCOPED_CAPS, ft as SubscribeFramesInputSchema, g as createLazyTrpcSource, gt as parseProfileBrokerId, h as createEventBusSliceSource, ht as makeSourceBrokerId, i as asJsonArray, it as FrameHandleSchema, j as event, jt as hydrateSchema, k as DEVICE_SETTINGS_CONTRIBUTION_METHODS, kt as collectHydratedFieldEntries, l as parseJsonObject, lt as StreamSourceSchema, m as createDeviceProxy, mt as makeProfileBrokerId, n as sleepCancellable, nt as EncodedPacketSchema, o as asNumber, ot as ProfileSlotSchema, p as isDeviceScopedCap, pt as SubscribeFramesResultSchema, q as BrokerStatsSchema, r as asBoolean, rt as FrameHandleFormatSchema, s as asString, st as ProfileSlotStatusSchema, t as sleep, tt as DecodedFrameSchema, u as parseJsonUnknown, ut as SubscribeAudioChunksInputSchema, v as createSliceHandle, vt as DATAPLANE_SECRET_HEADER, w as DeviceFeature, wt as createEvent, x as viewerUiCapability, xt as BaseAddon, y as RawStateResultSchema, yt as SHARE_VIEW_KINDS, z as readNodePin } from "./sleep-
|
|
1
|
+
import { $ as CameraStreamSchema, A as DEVICE_STATUS_METHOD, At as collectHydratedFieldValues, B as toNodeId, C as ChargingStatus, Ct as createDurableState, D as adminUiCapability, Dt as WELL_KNOWN_TABS, E as DeviceType, Et as isEvent, F as resolveCapMount, Ft as expandAudioChunkToF32le, G as scopeKey, H as ReadinessTimeoutError, I as systemMethod, It as isAudioChunkFormat, J as BrokerStatusSchema, K as AudioChunkFormatSchema, L as CAP_NODE_PIN_CONTEXT_KEY, M as expandCapMethods, Mt as resolveHydratedFieldValue, N as isDeviceConfigCap, Nt as AUDIO_CHUNK_FORMATS, O as DEFAULT_RUNTIME_STATE_DURABILITY, Ot as WELL_KNOWN_TAB_MAP, P as method, Pt as audioChunkBytesPerSample, Q as CamStreamResolutionSchema, R as nodePin, S as DEVICE_CHILDREN_BATCH_MAX, St as normalizeAddonInitResult, T as DeviceRole, Tt as emitReadiness, U as emitDownForOwnedCaps, V as ReadinessRegistry, W as readinessKey, X as CamProfileSchema, Y as CAM_PROFILE_ORDER, Z as CamStreamKindSchema, _ as createMirrorSource, _t as selectAssignedProfileSlots, a as asJsonObject, at as ProfileRtspEntrySchema, b as deviceOpsCapability, bt as DisposerChain, c as parseJsonArray, ct as StreamSourceEntrySchema, d as BOOT_RECOVERY_BACKOFF_MS, dt as SubscribeAudioChunksResultSchema, et as DecodedAudioChunkSchema, f as DEVICE_SCOPED_CAPS, ft as SubscribeFramesInputSchema, g as createLazyTrpcSource, gt as parseProfileBrokerId, h as createEventBusSliceSource, ht as makeSourceBrokerId, i as asJsonArray, it as FrameHandleSchema, j as event, jt as hydrateSchema, k as DEVICE_SETTINGS_CONTRIBUTION_METHODS, kt as collectHydratedFieldEntries, l as parseJsonObject, lt as StreamSourceSchema, m as createDeviceProxy, mt as makeProfileBrokerId, n as sleepCancellable, nt as EncodedPacketSchema, o as asNumber, ot as ProfileSlotSchema, p as isDeviceScopedCap, pt as SubscribeFramesResultSchema, q as BrokerStatsSchema, r as asBoolean, rt as FrameHandleFormatSchema, s as asString, st as ProfileSlotStatusSchema, t as sleep, tt as DecodedFrameSchema, u as parseJsonUnknown, ut as SubscribeAudioChunksInputSchema, v as createSliceHandle, vt as DATAPLANE_SECRET_HEADER, w as DeviceFeature, wt as createEvent, x as viewerUiCapability, xt as BaseAddon, y as RawStateResultSchema, yt as SHARE_VIEW_KINDS, z as readNodePin } from "./sleep-DBKu2-U5.mjs";
|
|
2
2
|
import { t as EventCategory } from "./event-category-ZyX6jcse.mjs";
|
|
3
3
|
import { a as buildAudioArgs, c as buildVideoArgs, d as logBannerArgs, f as pickVideoEncoder, i as audioPlanFromEncodeProfile, l as invocationFromEncodeProfile, n as Fmp4BoxSplitter, o as buildFfmpegArgs, r as AUDIO_PRESETS, s as buildInputArgs, t as canonicalHash, u as isSoftwareDecode } from "./canonical-hash-rO1sRmEK.mjs";
|
|
4
4
|
import { EventSourceType } from "./enums.mjs";
|
|
@@ -20248,9 +20248,11 @@ var SummariesQueryInput = z.object({
|
|
|
20248
20248
|
deviceIds: z.array(z.number()).min(1),
|
|
20249
20249
|
since: z.number().optional(),
|
|
20250
20250
|
until: z.number().optional(),
|
|
20251
|
-
limit: z.number().int().min(1).max(200).default(50)
|
|
20251
|
+
limit: z.number().int().min(1).max(200).default(50),
|
|
20252
|
+
/** The same member-wise filter {@link listRecentSummaries} takes — one
|
|
20253
|
+
* meaning of "dog" on every summary surface. */
|
|
20254
|
+
classes: z.array(z.string().min(1).max(60)).max(40).optional()
|
|
20252
20255
|
});
|
|
20253
|
-
var SummariesPageSchema = z.object({ summaries: z.array(SummarySchema).readonly() });
|
|
20254
20256
|
/**
|
|
20255
20257
|
* One member of a group, as a reader needs it.
|
|
20256
20258
|
*
|
|
@@ -20262,7 +20264,16 @@ var SummariesPageSchema = z.object({ summaries: z.array(SummarySchema).readonly(
|
|
|
20262
20264
|
*/
|
|
20263
20265
|
var SummaryMemberSchema = z.object({
|
|
20264
20266
|
trackId: z.string(),
|
|
20265
|
-
/**
|
|
20267
|
+
/**
|
|
20268
|
+
* The track's class at the time it JOINED, or `null` when it was unresolved
|
|
20269
|
+
* and the track no longer exists to fill it.
|
|
20270
|
+
*
|
|
20271
|
+
* The join, not the latest opinion: class voting can re-decide a track's
|
|
20272
|
+
* class afterwards, and a group's composition is the history of who came
|
|
20273
|
+
* together. A consumer counts these to badge a thumbnail — "two people and a
|
|
20274
|
+
* dog" — rather than being handed a second, denormalised tally that would
|
|
20275
|
+
* drift from the members it claims to describe.
|
|
20276
|
+
*/
|
|
20266
20277
|
className: z.string().nullable(),
|
|
20267
20278
|
/** `primary` is the one member that carries the group's identity. */
|
|
20268
20279
|
role: z.enum([
|
|
@@ -20270,13 +20281,87 @@ var SummaryMemberSchema = z.object({
|
|
|
20270
20281
|
"sibling",
|
|
20271
20282
|
"child"
|
|
20272
20283
|
]).nullable(),
|
|
20273
|
-
joinedAt: z.number()
|
|
20284
|
+
joinedAt: z.number(),
|
|
20285
|
+
/** Tier 1 — the sub-class (`dog`, `van`), resolved from the member's track
|
|
20286
|
+
* at read time. Absent when nothing resolved, never an empty string. */
|
|
20287
|
+
label: z.string().optional(),
|
|
20288
|
+
/** Tier 2 — the instance: a person's name, a plate. Absent when the pipeline
|
|
20289
|
+
* recognised nobody, and absent for a member whose track has been pruned —
|
|
20290
|
+
* a thumbnail that names the wrong person is worse than one naming nobody. */
|
|
20291
|
+
subLabel: z.string().optional()
|
|
20274
20292
|
});
|
|
20275
20293
|
var SummaryDetailSchema = z.object({
|
|
20276
20294
|
summary: SummarySchema,
|
|
20277
20295
|
/** Members in absorption order, oldest join first. */
|
|
20278
20296
|
members: z.array(SummaryMemberSchema).readonly()
|
|
20279
20297
|
});
|
|
20298
|
+
/**
|
|
20299
|
+
* What a LIST of groups carries: the envelope plus what it is MADE OF.
|
|
20300
|
+
*
|
|
20301
|
+
* Coarse on purpose — the operator's rule is "only the rough data on the list,
|
|
20302
|
+
* we extend when we notice we need more". Enough to draw the card ("two people
|
|
20303
|
+
* and a dog") and no more. The MEMBERS, their names and the per-member links
|
|
20304
|
+
* are on {@link getSummary}: shipping every member of every group so a client
|
|
20305
|
+
* can count them turns a page of two hundred groups into a thousand records to
|
|
20306
|
+
* draw two hundred badges.
|
|
20307
|
+
*/
|
|
20308
|
+
var SummaryListItemSchema = z.object({
|
|
20309
|
+
summary: SummarySchema,
|
|
20310
|
+
/** Class counts, most numerous first; `className: null` is a member whose
|
|
20311
|
+
* class never resolved, counted so the counts add up to `memberCount`. */
|
|
20312
|
+
classes: z.array(z.object({
|
|
20313
|
+
className: z.string().nullable(),
|
|
20314
|
+
count: z.number().int().positive()
|
|
20315
|
+
})).readonly()
|
|
20316
|
+
});
|
|
20317
|
+
var SummariesPageSchema = z.object({ summaries: z.array(SummaryListItemSchema).readonly() });
|
|
20318
|
+
/**
|
|
20319
|
+
* The paged feed, deliberately the SAME shape as {@link RecentTracksQueryInput}.
|
|
20320
|
+
*
|
|
20321
|
+
* The reel on the cameras page and the Events gallery both ride a cursor, so a
|
|
20322
|
+
* summaries feed that could only answer "the last N for these cameras"
|
|
20323
|
+
* (`listSummaries`) would make groups available in the timeline and nowhere
|
|
20324
|
+
* else. Two feeds with different ordering contracts would be two ideas of what
|
|
20325
|
+
* "newest" means, on one screen.
|
|
20326
|
+
*/
|
|
20327
|
+
var RecentSummariesQueryInput = z.object({
|
|
20328
|
+
/** Devices to merge. An empty array yields an empty page. */
|
|
20329
|
+
deviceIds: z.array(z.number()),
|
|
20330
|
+
/** Window lower bound on `lastActiveAt` (inclusive). */
|
|
20331
|
+
since: z.number().optional(),
|
|
20332
|
+
/** Window upper bound on `lastActiveAt` (inclusive). */
|
|
20333
|
+
until: z.number().optional(),
|
|
20334
|
+
limit: z.number().int().min(1).max(500).default(100),
|
|
20335
|
+
/** Opaque continuation cursor from a previous page's `nextCursor`. */
|
|
20336
|
+
cursor: z.string().optional(),
|
|
20337
|
+
/**
|
|
20338
|
+
* Restrict to these classes — THE SAME FIELD `listRecentTracks` takes, and
|
|
20339
|
+
* deliberately the same name: the events filter tree emits one list of ticked
|
|
20340
|
+
* taxonomy nodes, and a summaries feed that called it something else would
|
|
20341
|
+
* make the operator's one filter component produce two shapes.
|
|
20342
|
+
*
|
|
20343
|
+
* A question about the MEMBERS: a group matches when ANY of them does. "Show
|
|
20344
|
+
* me the arrivals with a dog" has to return the group of four people who had
|
|
20345
|
+
* one with them; a filter on the group's own fields could only ever answer
|
|
20346
|
+
* about its primary.
|
|
20347
|
+
*
|
|
20348
|
+
* Matched against all THREE tiers of a member — the class (`animal`), the
|
|
20349
|
+
* sub-class (`dog`) and the instance (a name, a plate) — because which tier a
|
|
20350
|
+
* ticked node lives on is the taxonomy's business, not the caller's. `dog` is
|
|
20351
|
+
* an event kind in the tree and a tier-1 label on an `animal` track; a filter
|
|
20352
|
+
* that read only the class would answer "animal" and never "dog".
|
|
20353
|
+
*
|
|
20354
|
+
* ABSENT or EMPTY means no filter — absent is not a selection of none.
|
|
20355
|
+
*/
|
|
20356
|
+
classes: z.array(z.string().min(1).max(60)).max(40).optional()
|
|
20357
|
+
});
|
|
20358
|
+
var RecentSummariesPageSchema = z.object({
|
|
20359
|
+
/** Ordered by (`lastActiveAt` DESC, id DESC). Same light item as
|
|
20360
|
+
* {@link listSummaries} — one list shape, so a card renders the same
|
|
20361
|
+
* whichever feed drew it. */
|
|
20362
|
+
summaries: z.array(SummaryListItemSchema).readonly(),
|
|
20363
|
+
nextCursor: z.string().nullable()
|
|
20364
|
+
});
|
|
20280
20365
|
var RecentTracksPageSchema = z.object({
|
|
20281
20366
|
/** Merged page, ordered by (`lastSeen` DESC, `trackId` DESC). */
|
|
20282
20367
|
tracks: z.array(TrackSchema).readonly(),
|
|
@@ -20733,6 +20818,11 @@ var pipelineAnalyticsCapability = {
|
|
|
20733
20818
|
listRecentTracks: method(RecentTracksQueryInput, RecentTracksPageSchema),
|
|
20734
20819
|
/** Newest first by `openedAt`, for a camera set, inside an optional window. */
|
|
20735
20820
|
listSummaries: method(SummariesQueryInput, SummariesPageSchema),
|
|
20821
|
+
/**
|
|
20822
|
+
* The PAGED feed — the reel and the Events gallery. Same cursor contract as
|
|
20823
|
+
* {@link listRecentTracks}, so one screen cannot hold two ideas of newest.
|
|
20824
|
+
*/
|
|
20825
|
+
listRecentSummaries: method(RecentSummariesQueryInput, RecentSummariesPageSchema),
|
|
20736
20826
|
/** One summary with its member track ids; `null` for an id nobody wrote. */
|
|
20737
20827
|
getSummary: method(z.object({ id: z.string() }), SummaryDetailSchema.nullable()),
|
|
20738
20828
|
clearTracks: method(z.object({ deviceId: z.number() }), z.void(), {
|
|
@@ -45948,6 +46038,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
45948
46038
|
addonId: null,
|
|
45949
46039
|
access: "view"
|
|
45950
46040
|
},
|
|
46041
|
+
"pipelineAnalytics.listRecentSummaries": {
|
|
46042
|
+
capName: "pipeline-analytics",
|
|
46043
|
+
capScope: "device",
|
|
46044
|
+
addonId: null,
|
|
46045
|
+
access: "view"
|
|
46046
|
+
},
|
|
45951
46047
|
"pipelineAnalytics.listRecentTracks": {
|
|
45952
46048
|
capName: "pipeline-analytics",
|
|
45953
46049
|
capScope: "device",
|
|
@@ -50044,6 +50140,11 @@ var METHOD_DEVICE_SELECTORS = Object.freeze({
|
|
|
50044
50140
|
form: "single",
|
|
50045
50141
|
optional: true
|
|
50046
50142
|
}],
|
|
50143
|
+
"pipelineAnalytics.listRecentSummaries": [{
|
|
50144
|
+
name: "deviceIds",
|
|
50145
|
+
form: "array",
|
|
50146
|
+
optional: false
|
|
50147
|
+
}],
|
|
50047
50148
|
"pipelineAnalytics.listRecentTracks": [{
|
|
50048
50149
|
name: "deviceIds",
|
|
50049
50150
|
form: "array",
|
|
@@ -3636,6 +3636,7 @@ function createDeviceProxy(api, binding, opts) {
|
|
|
3636
3636
|
listTracks: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "listTracks", "query", input),
|
|
3637
3637
|
listRecentTracks: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "listRecentTracks", "query", input),
|
|
3638
3638
|
listSummaries: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "listSummaries", "query", input),
|
|
3639
|
+
listRecentSummaries: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "listRecentSummaries", "query", input),
|
|
3639
3640
|
getSummary: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "getSummary", "query", input),
|
|
3640
3641
|
clearTracks: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "clearTracks", "mutation", input),
|
|
3641
3642
|
getMotionEvents: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "getMotionEvents", "query", input),
|
|
@@ -3636,6 +3636,7 @@ function createDeviceProxy(api, binding, opts) {
|
|
|
3636
3636
|
listTracks: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "listTracks", "query", input),
|
|
3637
3637
|
listRecentTracks: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "listRecentTracks", "query", input),
|
|
3638
3638
|
listSummaries: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "listSummaries", "query", input),
|
|
3639
|
+
listRecentSummaries: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "listRecentSummaries", "query", input),
|
|
3639
3640
|
getSummary: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "getSummary", "query", input),
|
|
3640
3641
|
clearTracks: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "clearTracks", "mutation", input),
|
|
3641
3642
|
getMotionEvents: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "getMotionEvents", "query", input),
|