@camstack/types 1.2.393 → 1.2.395
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 +1 -1
- package/dist/addon.mjs +1 -1
- package/dist/capabilities/index.d.ts +1 -1
- package/dist/capabilities/notification-rules.cap.d.ts +13 -0
- package/dist/capabilities/storage-admin.cap.d.ts +5 -34
- package/dist/client.d.ts +1 -1
- package/dist/client.js +190 -0
- package/dist/client.mjs +186 -1
- package/dist/generated/addon-api.d.ts +0 -7
- package/dist/generated/method-access-map.d.ts +1 -1
- package/dist/geometry/subject-path.d.ts +104 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.js +225 -60
- package/dist/index.mjs +217 -59
- package/dist/notification/media-image.d.ts +8 -1
- package/dist/records/in-memory-records-plan.d.ts +63 -0
- package/dist/records/in-memory-records-rows.d.ts +31 -0
- package/dist/records/in-memory-records-support.d.ts +29 -0
- package/dist/records/in-memory-records.d.ts +28 -9
- package/dist/records/index.d.ts +1 -1
- package/dist/{sleep-gRQc2IoX.js → sleep-Re8daN0Y.js} +683 -159
- package/dist/{sleep-CSuN0thG.mjs → sleep-_sV1BE2f.mjs} +683 -159
- 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-Re8daN0Y.js");
|
|
3
3
|
const require_event_category = require("./event-category-eSqkye-K.js");
|
|
4
4
|
const require_err_msg = require("./err-msg-BhVbr0NX.js");
|
|
5
5
|
//#region src/generated/cap-input-defaults.ts
|
package/dist/addon.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { $n as DisposerChain, $t as recordSecretRef, A as HF_REPO, An as RECORD_MAX_INDEXES, B as describeCustomActions, Bn as clearKnownSecrets, Br as toSecretFieldView, Bt as RecordIndexSchema, C as addonSliceHandleApi, Cn as RECORD_BATCH_MAX_BYTES, Cr as emitReadiness, Dn as RECORD_DELETE_BATCH, En as RECORD_DEFAULT_MAX_DATA_BYTES, F as DEVICE_CHILDREN_BATCH_MAX, Fn as RECORD_SWEEP_INTERVAL_MS, Fr as isSecretClear, Ft as defineEntryKind, Gn as shortSecretRefHash, Gt as declarationsOf, H as adminUiCapability, Hn as knownSecretCount, Ht as RecordKindNameSchema, I as CALLER_STAMPED_CAPABILITIES, In as resolveSecretViewsIn, Ir as isSecretFieldView, It as entryBody, Jn as PEER_BYTES_STALL_MS, Jt as collectSecretLeaves, Kn as PEER_BYTES_CHUNK_BYTES, Kt as defineRecordKinds, L as withoutCallerStamp, Ln as REVALIDATE_AFTER_MS, Lr as isSecretMarker, Lt as createRecordsAccess, Mn as RECORD_QUERY_MAX, N as deviceOpsCapability, Nn as RECORD_SECRET_COLLECTION_PREFIX, Nr as SECRET_CLEAR, On as RECORD_ID_MAX_LENGTH, P as viewerUiCapability, Pn as RECORD_SETTINGS_MAX_ROWS, Pr as classifySecretWrite, Pt as makeInMemoryRecords, Qt as recordSecretCollection, Rn as createSecretsAccess, Rr as isSecretMarkerLike, Rt as EntryDescriptorSchema, Sn as RECORD_BATCH_MAX, Sr as createEvent, Tn as RECORD_DATABASES, Un as registerKnownSecret, Ut as RecordRetentionSchema, Vn as forgetKnownSecret, Vt as RecordKindDeclarationSchema, Wn as scrubKnownSecrets, Wt as assertValidDeclaration, X as expandCapMethods, Xt as parseSecretPath, Yn as PEER_BYTES_TICKET_TTL_MS, Yt as mapSecretLeaves, Zn as DATAPLANE_SECRET_HEADER, Zt as recordArrayItemPath, _ as readErrorI18n, _n as RevConflictError, _r as isSecretRef, an as DeclarationRefusedError, b as isDeviceScopedCap, bn as asRecordsError, c as asString, cn as InvalidRecordError, ct as ReadinessTimeoutError, d as parseJsonUnknown, dn as RECORDS_ERROR_CODES, dt as scopeKey, en as secretArrayPrefixes, er as BaseAddon, f as hfModelUrl, fn as RecordNotFoundError, fr as SECRET_REF_SCHEME, g as ErrorI18nPayloadSchema, gn as RecordsError, gr as globalSecretScope, hn as RecordUniqueViolationError, hr as formatSecretScope, in as BatchTooLargeError, it as readNodePin, jn as RECORD_MAX_INDEX_FIELDS, kn as RECORD_MAX_DATA_BYTES, ln as NoCallerError, mn as RecordTooLargeError, mr as buildSecretRef, nn as collectZodSecretPaths, nr as normalizeAddonInitResult, o as asJsonObject, on as FilterRequiredError, ot as MODEL_FORMATS, p as BOOT_RECOVERY_BACKOFF_MS, pn as RecordSecretUnavailableError, pr as arrayItemFieldPath, qn as PEER_BYTES_MAX_OUTSTANDING, qt as REMOVE_LEAF, r as maskUrlCredentials, rn as isZodSecret, rt as nodePin, sn as ForeignSecretMarkerError, st as ReadinessRegistry, t as sleep, un as PlaintextSecretError, vn as UnindexedFilterError, vr as normalizeSecretOwner, w as createEventBusSliceSource, wn as RECORD_CLASSES, x as createDeviceProxy, xn as recordsErrorFromMessage, y as DEVICE_SCOPED_CAPS, yn as UnknownRecordKindError, yr as parseSecretRef, zn as MIN_SCRUBBED_LENGTH, zr as makeSecretMarker, zt as RecordFieldPathSchema } from "./sleep-
|
|
1
|
+
import { $n as DisposerChain, $t as recordSecretRef, A as HF_REPO, An as RECORD_MAX_INDEXES, B as describeCustomActions, Bn as clearKnownSecrets, Br as toSecretFieldView, Bt as RecordIndexSchema, C as addonSliceHandleApi, Cn as RECORD_BATCH_MAX_BYTES, Cr as emitReadiness, Dn as RECORD_DELETE_BATCH, En as RECORD_DEFAULT_MAX_DATA_BYTES, F as DEVICE_CHILDREN_BATCH_MAX, Fn as RECORD_SWEEP_INTERVAL_MS, Fr as isSecretClear, Ft as defineEntryKind, Gn as shortSecretRefHash, Gt as declarationsOf, H as adminUiCapability, Hn as knownSecretCount, Ht as RecordKindNameSchema, I as CALLER_STAMPED_CAPABILITIES, In as resolveSecretViewsIn, Ir as isSecretFieldView, It as entryBody, Jn as PEER_BYTES_STALL_MS, Jt as collectSecretLeaves, Kn as PEER_BYTES_CHUNK_BYTES, Kt as defineRecordKinds, L as withoutCallerStamp, Ln as REVALIDATE_AFTER_MS, Lr as isSecretMarker, Lt as createRecordsAccess, Mn as RECORD_QUERY_MAX, N as deviceOpsCapability, Nn as RECORD_SECRET_COLLECTION_PREFIX, Nr as SECRET_CLEAR, On as RECORD_ID_MAX_LENGTH, P as viewerUiCapability, Pn as RECORD_SETTINGS_MAX_ROWS, Pr as classifySecretWrite, Pt as makeInMemoryRecords, Qt as recordSecretCollection, Rn as createSecretsAccess, Rr as isSecretMarkerLike, Rt as EntryDescriptorSchema, Sn as RECORD_BATCH_MAX, Sr as createEvent, Tn as RECORD_DATABASES, Un as registerKnownSecret, Ut as RecordRetentionSchema, Vn as forgetKnownSecret, Vt as RecordKindDeclarationSchema, Wn as scrubKnownSecrets, Wt as assertValidDeclaration, X as expandCapMethods, Xt as parseSecretPath, Yn as PEER_BYTES_TICKET_TTL_MS, Yt as mapSecretLeaves, Zn as DATAPLANE_SECRET_HEADER, Zt as recordArrayItemPath, _ as readErrorI18n, _n as RevConflictError, _r as isSecretRef, an as DeclarationRefusedError, b as isDeviceScopedCap, bn as asRecordsError, c as asString, cn as InvalidRecordError, ct as ReadinessTimeoutError, d as parseJsonUnknown, dn as RECORDS_ERROR_CODES, dt as scopeKey, en as secretArrayPrefixes, er as BaseAddon, f as hfModelUrl, fn as RecordNotFoundError, fr as SECRET_REF_SCHEME, g as ErrorI18nPayloadSchema, gn as RecordsError, gr as globalSecretScope, hn as RecordUniqueViolationError, hr as formatSecretScope, in as BatchTooLargeError, it as readNodePin, jn as RECORD_MAX_INDEX_FIELDS, kn as RECORD_MAX_DATA_BYTES, ln as NoCallerError, mn as RecordTooLargeError, mr as buildSecretRef, nn as collectZodSecretPaths, nr as normalizeAddonInitResult, o as asJsonObject, on as FilterRequiredError, ot as MODEL_FORMATS, p as BOOT_RECOVERY_BACKOFF_MS, pn as RecordSecretUnavailableError, pr as arrayItemFieldPath, qn as PEER_BYTES_MAX_OUTSTANDING, qt as REMOVE_LEAF, r as maskUrlCredentials, rn as isZodSecret, rt as nodePin, sn as ForeignSecretMarkerError, st as ReadinessRegistry, t as sleep, un as PlaintextSecretError, vn as UnindexedFilterError, vr as normalizeSecretOwner, w as createEventBusSliceSource, wn as RECORD_CLASSES, x as createDeviceProxy, xn as recordsErrorFromMessage, y as DEVICE_SCOPED_CAPS, yn as UnknownRecordKindError, yr as parseSecretRef, zn as MIN_SCRUBBED_LENGTH, zr as makeSecretMarker, zt as RecordFieldPathSchema } from "./sleep-_sV1BE2f.mjs";
|
|
2
2
|
import { t as EventCategory } from "./event-category-DOl51-Ij.mjs";
|
|
3
3
|
import { a as DeviceType, t as errMsg } from "./err-msg-BXKzRBwg.mjs";
|
|
4
4
|
//#region src/generated/cap-input-defaults.ts
|
|
@@ -46,7 +46,7 @@ export { CustomModelDescriptorSchema, customModelRegistryCapability, ImportModel
|
|
|
46
46
|
export { type DataStoreEngineInfo, dataStoreProviderCapability, EngineInfoSchema as DataStoreEngineInfoSchema, type IDataStoreProvider, } from './data-store-provider.cap.js';
|
|
47
47
|
export { type ArchiveSqliteSnapshot, ArchiveSqliteSnapshotSchema, DATABASE_SNAPSHOT_PARTIAL_SUFFIX, DATABASE_SNAPSHOT_SUFFIX, DATABASE_SNAPSHOT_TIMEOUT_MS, type DatabaseSnapshotRequest, DatabaseSnapshotRequestSchema, type DatabaseSnapshotResult, DatabaseSnapshotResultSchema, type DatabaseSnapshotTable, DatabaseSnapshotTableSchema, type DatabaseSnapshotTargets, DatabaseSnapshotTargetsSchema, type DatabaseSnapshotWritten, DatabaseSnapshotWrittenSchema, databaseSnapshotCapability, type IDatabaseSnapshotProvider, } from './database-snapshot.cap.js';
|
|
48
48
|
export { CALLER_STAMPED_CAPABILITIES, withoutCallerStamp } from './caller-stamp.js';
|
|
49
|
-
export { type IStorageAdminProvider,
|
|
49
|
+
export { type IStorageAdminProvider, type StorageKind, StorageKindSchema, type StorageTable, StorageTableSchema, storageAdminCapability, } from './storage-admin.cap.js';
|
|
50
50
|
export { type DeclareKindResult, DeclareKindResultSchema, type IRecordsProvider, type RecordInput, RecordInputSchema, type RecordQueryInput, RecordQueryInputSchema, type RecordQueryResult, RecordQueryResultSchema, type RecordView, RecordViewSchema, type RecordWhere, RecordWhereSchema, type RecordWhereValue, RecordIdSchema, RecordBodySchema, RecordSecretRefsSchema, recordsCapability, } from './records.cap.js';
|
|
51
51
|
export { type EntryKindInfo, EntryKindInfoSchema, type EntryView, EntryViewSchema, type IRecordEntriesProvider, recordEntriesCapability, } from './record-entries.cap.js';
|
|
52
52
|
export { type IKeychainProvider, KEYCHAIN_MAX_REFS_PER_CALL, type KeychainResolveEntry, KeychainResolveEntrySchema, type KeychainResolveResult, KeychainResolveResultSchema, type KeychainSecretMeta, KeychainSecretMetaSchema, type KeychainState, KeychainStateSchema, type KeychainUnavailableReason, KeychainUnavailableReasonSchema, keychainCapability, } from './keychain.cap.js';
|
|
@@ -1097,6 +1097,7 @@ export declare const NcMediaPolicySchema: z.ZodObject<{
|
|
|
1097
1097
|
"scene-boxes": "scene-boxes";
|
|
1098
1098
|
}>>;
|
|
1099
1099
|
showTriggerZone: z.ZodOptional<z.ZodBoolean>;
|
|
1100
|
+
showSubjectPath: z.ZodOptional<z.ZodBoolean>;
|
|
1100
1101
|
attach: z.ZodOptional<z.ZodEnum<{
|
|
1101
1102
|
best: "best";
|
|
1102
1103
|
"best-matching": "best-matching";
|
|
@@ -1434,6 +1435,7 @@ export declare const NcRuleInputSchema: z.ZodObject<{
|
|
|
1434
1435
|
"scene-boxes": "scene-boxes";
|
|
1435
1436
|
}>>;
|
|
1436
1437
|
showTriggerZone: z.ZodOptional<z.ZodBoolean>;
|
|
1438
|
+
showSubjectPath: z.ZodOptional<z.ZodBoolean>;
|
|
1437
1439
|
attach: z.ZodOptional<z.ZodEnum<{
|
|
1438
1440
|
best: "best";
|
|
1439
1441
|
"best-matching": "best-matching";
|
|
@@ -1924,6 +1926,7 @@ export declare const NcRulePatchSchema: z.ZodObject<{
|
|
|
1924
1926
|
"scene-boxes": "scene-boxes";
|
|
1925
1927
|
}>>;
|
|
1926
1928
|
showTriggerZone: z.ZodOptional<z.ZodBoolean>;
|
|
1929
|
+
showSubjectPath: z.ZodOptional<z.ZodBoolean>;
|
|
1927
1930
|
attach: z.ZodOptional<z.ZodEnum<{
|
|
1928
1931
|
best: "best";
|
|
1929
1932
|
"best-matching": "best-matching";
|
|
@@ -2323,6 +2326,7 @@ export declare const NcRuleUpdateInputSchema: z.ZodObject<{
|
|
|
2323
2326
|
"scene-boxes": "scene-boxes";
|
|
2324
2327
|
}>>;
|
|
2325
2328
|
showTriggerZone: z.ZodOptional<z.ZodBoolean>;
|
|
2329
|
+
showSubjectPath: z.ZodOptional<z.ZodBoolean>;
|
|
2326
2330
|
attach: z.ZodOptional<z.ZodEnum<{
|
|
2327
2331
|
best: "best";
|
|
2328
2332
|
"best-matching": "best-matching";
|
|
@@ -2575,6 +2579,7 @@ export declare const NcRuleSchema: z.ZodObject<{
|
|
|
2575
2579
|
"scene-boxes": "scene-boxes";
|
|
2576
2580
|
}>>;
|
|
2577
2581
|
showTriggerZone: z.ZodOptional<z.ZodBoolean>;
|
|
2582
|
+
showSubjectPath: z.ZodOptional<z.ZodBoolean>;
|
|
2578
2583
|
attach: z.ZodOptional<z.ZodEnum<{
|
|
2579
2584
|
best: "best";
|
|
2580
2585
|
"best-matching": "best-matching";
|
|
@@ -4706,6 +4711,7 @@ export declare const notificationRulesCapability: {
|
|
|
4706
4711
|
"scene-boxes": "scene-boxes";
|
|
4707
4712
|
}>>;
|
|
4708
4713
|
showTriggerZone: z.ZodOptional<z.ZodBoolean>;
|
|
4714
|
+
showSubjectPath: z.ZodOptional<z.ZodBoolean>;
|
|
4709
4715
|
attach: z.ZodOptional<z.ZodEnum<{
|
|
4710
4716
|
best: "best";
|
|
4711
4717
|
"best-matching": "best-matching";
|
|
@@ -5073,6 +5079,7 @@ export declare const notificationRulesCapability: {
|
|
|
5073
5079
|
"scene-boxes": "scene-boxes";
|
|
5074
5080
|
}>>;
|
|
5075
5081
|
showTriggerZone: z.ZodOptional<z.ZodBoolean>;
|
|
5082
|
+
showSubjectPath: z.ZodOptional<z.ZodBoolean>;
|
|
5076
5083
|
attach: z.ZodOptional<z.ZodEnum<{
|
|
5077
5084
|
best: "best";
|
|
5078
5085
|
"best-matching": "best-matching";
|
|
@@ -5438,6 +5445,7 @@ export declare const notificationRulesCapability: {
|
|
|
5438
5445
|
"scene-boxes": "scene-boxes";
|
|
5439
5446
|
}>>;
|
|
5440
5447
|
showTriggerZone: z.ZodOptional<z.ZodBoolean>;
|
|
5448
|
+
showSubjectPath: z.ZodOptional<z.ZodBoolean>;
|
|
5441
5449
|
attach: z.ZodOptional<z.ZodEnum<{
|
|
5442
5450
|
best: "best";
|
|
5443
5451
|
"best-matching": "best-matching";
|
|
@@ -5797,6 +5805,7 @@ export declare const notificationRulesCapability: {
|
|
|
5797
5805
|
"scene-boxes": "scene-boxes";
|
|
5798
5806
|
}>>;
|
|
5799
5807
|
showTriggerZone: z.ZodOptional<z.ZodBoolean>;
|
|
5808
|
+
showSubjectPath: z.ZodOptional<z.ZodBoolean>;
|
|
5800
5809
|
attach: z.ZodOptional<z.ZodEnum<{
|
|
5801
5810
|
best: "best";
|
|
5802
5811
|
"best-matching": "best-matching";
|
|
@@ -6287,6 +6296,7 @@ export declare const notificationRulesCapability: {
|
|
|
6287
6296
|
"scene-boxes": "scene-boxes";
|
|
6288
6297
|
}>>;
|
|
6289
6298
|
showTriggerZone: z.ZodOptional<z.ZodBoolean>;
|
|
6299
|
+
showSubjectPath: z.ZodOptional<z.ZodBoolean>;
|
|
6290
6300
|
attach: z.ZodOptional<z.ZodEnum<{
|
|
6291
6301
|
best: "best";
|
|
6292
6302
|
"best-matching": "best-matching";
|
|
@@ -6537,6 +6547,7 @@ export declare const notificationRulesCapability: {
|
|
|
6537
6547
|
"scene-boxes": "scene-boxes";
|
|
6538
6548
|
}>>;
|
|
6539
6549
|
showTriggerZone: z.ZodOptional<z.ZodBoolean>;
|
|
6550
|
+
showSubjectPath: z.ZodOptional<z.ZodBoolean>;
|
|
6540
6551
|
attach: z.ZodOptional<z.ZodEnum<{
|
|
6541
6552
|
best: "best";
|
|
6542
6553
|
"best-matching": "best-matching";
|
|
@@ -7095,6 +7106,7 @@ export declare const notificationRulesCapability: {
|
|
|
7095
7106
|
"scene-boxes": "scene-boxes";
|
|
7096
7107
|
}>>;
|
|
7097
7108
|
showTriggerZone: z.ZodOptional<z.ZodBoolean>;
|
|
7109
|
+
showSubjectPath: z.ZodOptional<z.ZodBoolean>;
|
|
7098
7110
|
attach: z.ZodOptional<z.ZodEnum<{
|
|
7099
7111
|
best: "best";
|
|
7100
7112
|
"best-matching": "best-matching";
|
|
@@ -7479,6 +7491,7 @@ export declare const notificationRulesCapability: {
|
|
|
7479
7491
|
"scene-boxes": "scene-boxes";
|
|
7480
7492
|
}>>;
|
|
7481
7493
|
showTriggerZone: z.ZodOptional<z.ZodBoolean>;
|
|
7494
|
+
showSubjectPath: z.ZodOptional<z.ZodBoolean>;
|
|
7482
7495
|
attach: z.ZodOptional<z.ZodEnum<{
|
|
7483
7496
|
best: "best";
|
|
7484
7497
|
"best-matching": "best-matching";
|
|
@@ -102,25 +102,13 @@ export declare const StorageKindSchema: z.ZodObject<{
|
|
|
102
102
|
}, z.core.$strip>;
|
|
103
103
|
export type StorageKind = z.infer<typeof StorageKindSchema>;
|
|
104
104
|
/**
|
|
105
|
-
*
|
|
106
|
-
*
|
|
107
|
-
*
|
|
108
|
-
* these, the per-addon scoped `addon-settings` / `addon-devices` / `sections`
|
|
109
|
-
* tables, and the tables of owners that are no longer installed - nothing else.
|
|
110
|
-
* The records-migration leftovers (D871 `stats-5m`, the phase-0 tables) were
|
|
111
|
-
* dropped by hand on the operator hubs and left this list with D900.
|
|
112
|
-
*/
|
|
113
|
-
export declare const STORAGE_ADMIN_MOVED_COLLECTIONS: readonly string[];
|
|
114
|
-
/** The per-addon blob tables a scoped name may carry. */
|
|
115
|
-
export declare const STORAGE_ADMIN_SCOPED_BASES: readonly string[];
|
|
116
|
-
/**
|
|
117
|
-
* storage-admin - the operator's maintenance reach into the settings database:
|
|
118
|
-
* list its tables, drop one that nothing owns any more (D870).
|
|
105
|
+
* storage-admin - the operator's maintenance reach into the databases: list
|
|
106
|
+
* their tables and record kinds, read a kind for diagnosis. Read-only: a table
|
|
107
|
+
* the code no longer creates is dropped by hand, offline (D901).
|
|
119
108
|
*
|
|
120
109
|
* Hub-only, internal and `auth: 'admin'` explicitly (`internal` does not gate
|
|
121
|
-
* the mount, see `data-store-provider`).
|
|
122
|
-
* with the
|
|
123
|
-
* migration and is marked for removal once the last hub has run it.
|
|
110
|
+
* the mount, see `data-store-provider`). `listTables` is LOGGED by the engine
|
|
111
|
+
* with the counts.
|
|
124
112
|
*
|
|
125
113
|
* `listTables` is READ-ONLY: it never creates a table, which `count` and `get`
|
|
126
114
|
* on an undeclared scoped name used to do.
|
|
@@ -146,23 +134,6 @@ export declare const storageAdminCapability: {
|
|
|
146
134
|
declaredThisBoot: z.ZodBoolean;
|
|
147
135
|
}, z.core.$strip>>;
|
|
148
136
|
}, z.core.$strip>, import("./capability-definition.js").CapabilityMethodKind>;
|
|
149
|
-
/**
|
|
150
|
-
* Drop one table. REFUSES when an addon declared it since the engine
|
|
151
|
-
* started (a running addon still owns it), when it is an engine or
|
|
152
|
-
* canonical table, when it does not exist, or when its row count is not
|
|
153
|
-
* `expectRows` - the caller states what it believes it is deleting. The
|
|
154
|
-
* engine also refuses anything but `<owner>:(addon-settings|addon-devices|
|
|
155
|
-
* sections)`, the retired collections by name, and tables of owners that
|
|
156
|
-
* are not installed (and refuses when it cannot read the installed list).
|
|
157
|
-
* Removed with the D870 migration script once the last hub ran it.
|
|
158
|
-
*/
|
|
159
|
-
readonly dropCollection: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
|
|
160
|
-
collection: z.ZodString;
|
|
161
|
-
expectRows: z.ZodNumber;
|
|
162
|
-
}, z.core.$strip>, z.ZodObject<{
|
|
163
|
-
dropped: z.ZodLiteral<true>;
|
|
164
|
-
rows: z.ZodNumber;
|
|
165
|
-
}, z.core.$strip>, "mutation">;
|
|
166
137
|
/** Every record kind of both files with rows, a size estimate, class and retention (D881). */
|
|
167
138
|
readonly listKinds: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
|
|
168
139
|
owner: z.ZodOptional<z.ZodString>;
|
package/dist/client.d.ts
CHANGED
|
@@ -14,4 +14,4 @@
|
|
|
14
14
|
* value this entry does not export — a missing name here is `undefined` at
|
|
15
15
|
* runtime, not a build error.
|
|
16
16
|
*/
|
|
17
|
-
export { APPLE_SA_TO_MACRO, AUDIO_MACRO_LABELS, AlarmArmModeSchema, CLIP_BROKER_PACED_RATES, COCO_TO_MACRO, CamProfileSchema, ICON_CATEGORIES, ICON_ENTRIES, ICON_KEYS, ICON_VIEWER_MODULES, IconKeySchema, LOCATION_ICON_FALLBACK, DEFINITIVE_DEVICE_REFUSALS, DEVICE_CERT_RENEW_WINDOW_DAYS, DEVICE_DEFINITIVE_REFUSALS_BEFORE_DELETE, DEVICE_REFRESH_REFUSAL_PREFIX, DEVICE_CERT_SIGNATURE, DEVICE_SIGNATURE_MESSAGE_VERSION, DEFAULT_TIMELAPSE_PREVIEW_TEXT, DeviceType, EVENTFUL_CAP_NAMES, EVENT_KIND_BY_CAP, EVENT_TAXONOMY, MACRO_LABELS, NC_ALARM_DELAY_MAX_SEC, NC_ALARM_SENSORS_MAX, NC_ALARM_SYSTEM_EVENT_KINDS, NC_ALARM_TRIGGERED_MAX_SEC, NC_BATTERY_CONSUMABLE_SYSTEM_EVENT_KINDS, NC_CAMERA_SCOPE_CAP_NAME, NC_CONSUMABLE_LOW_PERCENT_DEFAULT, NC_CONSUMABLE_LOW_PERCENT_MAX, NC_GROUPING_DEFAULT_SEC, NC_GROUPING_MAX_SEC, NC_GROUPING_MIN_SEC, NC_RULE_EDITOR_SECTION_ORDER, NC_RULE_KIND_SPECS, NC_SENSOR_TRANSITION_UNSUPPORTED_REASON, NC_SYSTEM_EVENT_FAMILY_FILTERS, NC_SYSTEM_EVENT_KIND_GROUP_SPECS, NC_SYSTEM_EVENT_SUMMARY_FAMILIES, NC_TEMPLATE_HELD_BACK_SYSTEM_EVENT_KINDS, NC_TEMPLATE_VARS, NcAlarmConfigSchema, NcAlarmSensorsSchema, NcAlarmSettingsPatchSchema, NcHistoryEntrySchema, NcRuleLastRunsSchema, NodeDirectorySchema, RECORDING_EXPORT_MAX_READ_BYTES, RETRAIN_REVIEW_ADJUSTED_IOU, RETRAIN_REVIEW_MATCH_IOU, RETRAIN_REVIEW_STATUSES, RETRAIN_REVISION_CONFLICT, SystemMirror, TIMELAPSE_DENSE_FLOOR_SEC, TimelapseRuleSchema, YAMNET_TO_MACRO, alarmDeviceBlocksArming, alarmDeviceSecureOnArm, alarmPatchLanded, canonicalIconKey, buildDeviceEnrollmentLink, buildDeviceSignatureMessage, deviceRefusalFromMessage, isDefinitiveDeviceRefusal, classifyRetrainReview, conditionVisibleForKind, createSystemProxy, droppedConditionsForKind, iconCategoryLabel, iconEntry, iconsInCategory, isIconKey, isHeldBackTemplateVar, isSystemRuleKind, kindsForDiscriminator, locationIconKey, knownValues, nodePickerItems, parseDeviceEnrollmentLink, packagePickerItems, pickerForCondition, pickerForRuleClasses, parseRetrainRevisionConflict, resolveIconKey, resolveModeDelays, retrainBoxIou, retrainRevisionConflictMessage, ruleDeviceCompatCapNames, ruleEditorSectionsForKind, ruleGroupingApplies, ruleKindOf, ruleKindSpec, ruleSeedForSection, searchIcons, sensorTransitionNeverFires, sensorTransitionOffered, stateLabel, summarizeReview, systemEventDeliveryProblems, systemEventFilterAppliesToAnyKind, systemEventKindsOfFamily, systemFamilyOfKind, templateCarriesSummary, templateVarDeliveryApplies, templateVarKindApplies, templateVarSystemEventApplies, } from './index.js';
|
|
17
|
+
export { APPLE_SA_TO_MACRO, AUDIO_MACRO_LABELS, AlarmArmModeSchema, CLIP_BROKER_PACED_RATES, COCO_TO_MACRO, CamProfileSchema, ICON_CATEGORIES, ICON_ENTRIES, ICON_KEYS, ICON_VIEWER_MODULES, IconKeySchema, LOCATION_ICON_FALLBACK, DEFINITIVE_DEVICE_REFUSALS, DEVICE_CERT_RENEW_WINDOW_DAYS, DEVICE_DEFINITIVE_REFUSALS_BEFORE_DELETE, DEVICE_REFRESH_REFUSAL_PREFIX, DEVICE_CERT_SIGNATURE, DEVICE_SIGNATURE_MESSAGE_VERSION, DEFAULT_TIMELAPSE_PREVIEW_TEXT, DeviceType, EVENTFUL_CAP_NAMES, EVENT_KIND_BY_CAP, EVENT_TAXONOMY, MACRO_LABELS, NC_ALARM_DELAY_MAX_SEC, NC_ALARM_SENSORS_MAX, NC_ALARM_SYSTEM_EVENT_KINDS, NC_ALARM_TRIGGERED_MAX_SEC, NC_BATTERY_CONSUMABLE_SYSTEM_EVENT_KINDS, NC_CAMERA_SCOPE_CAP_NAME, NC_CONSUMABLE_LOW_PERCENT_DEFAULT, NC_CONSUMABLE_LOW_PERCENT_MAX, NC_GROUPING_DEFAULT_SEC, NC_GROUPING_MAX_SEC, NC_GROUPING_MIN_SEC, NC_RULE_EDITOR_SECTION_ORDER, NC_RULE_KIND_SPECS, NC_SENSOR_TRANSITION_UNSUPPORTED_REASON, NC_SYSTEM_EVENT_FAMILY_FILTERS, NC_SYSTEM_EVENT_KIND_GROUP_SPECS, NC_SYSTEM_EVENT_SUMMARY_FAMILIES, NC_TEMPLATE_HELD_BACK_SYSTEM_EVENT_KINDS, NC_TEMPLATE_VARS, NcAlarmConfigSchema, NcAlarmSensorsSchema, NcAlarmSettingsPatchSchema, NcHistoryEntrySchema, NcRuleLastRunsSchema, NodeDirectorySchema, RECORDING_EXPORT_MAX_READ_BYTES, RETRAIN_REVIEW_ADJUSTED_IOU, RETRAIN_REVIEW_MATCH_IOU, RETRAIN_REVIEW_STATUSES, RETRAIN_REVISION_CONFLICT, SystemMirror, TIMELAPSE_DENSE_FLOOR_SEC, TimelapseRuleSchema, YAMNET_TO_MACRO, alarmDeviceBlocksArming, alarmDeviceSecureOnArm, alarmPatchLanded, canonicalIconKey, buildDeviceEnrollmentLink, buildDeviceSignatureMessage, deviceRefusalFromMessage, isDefinitiveDeviceRefusal, classifyRetrainReview, conditionVisibleForKind, createSystemProxy, droppedConditionsForKind, iconCategoryLabel, iconEntry, iconsInCategory, isIconKey, isHeldBackTemplateVar, isSystemRuleKind, kindsForDiscriminator, locationIconKey, knownValues, nodePickerItems, parseDeviceEnrollmentLink, packagePickerItems, pickerForCondition, pickerForRuleClasses, parseRetrainRevisionConflict, resolveIconKey, resolveModeDelays, retrainBoxIou, retrainRevisionConflictMessage, ruleDeviceCompatCapNames, ruleEditorSectionsForKind, ruleGroupingApplies, ruleKindOf, ruleKindSpec, ruleSeedForSection, searchIcons, sensorTransitionNeverFires, sensorTransitionOffered, stateLabel, summarizeReview, systemEventDeliveryProblems, systemEventFilterAppliesToAnyKind, systemEventKindsOfFamily, systemFamilyOfKind, templateCarriesSummary, templateVarDeliveryApplies, templateVarKindApplies, templateVarSystemEventApplies, buildSubjectPath, isDrawableSubjectPath, projectSubjectPath, subjectPathSampleFromBox, subjectPathSvgPoints, } from './index.js';
|
package/dist/client.js
CHANGED
|
@@ -23121,6 +23121,15 @@ var NcMediaPolicySchema = zod.z.object({
|
|
|
23121
23121
|
* Replaces `zoneCrop`.
|
|
23122
23122
|
*/
|
|
23123
23123
|
showTriggerZone: zod.z.boolean().optional(),
|
|
23124
|
+
/**
|
|
23125
|
+
* Draw the SUBJECT'S PATH on the picture — a line in the subject's colour
|
|
23126
|
+
* through the track's positions up to the frame shown, the same path the
|
|
23127
|
+
* debug views draw (`buildSubjectPath`, D903). Every picture mode a subject
|
|
23128
|
+
* is drawn on: a `crop` maps the path into the crop and clips it. Valid only
|
|
23129
|
+
* on a rule whose subject is a tracked object (refused on a sound rule);
|
|
23130
|
+
* dropped on `image: 'none'`. Absent = off.
|
|
23131
|
+
*/
|
|
23132
|
+
showSubjectPath: zod.z.boolean().optional(),
|
|
23124
23133
|
/** @deprecated D897 — accepted from an editor that predates `image`, folded into it on save. */
|
|
23125
23134
|
attach: zod.z.enum([
|
|
23126
23135
|
"best",
|
|
@@ -29375,6 +29384,182 @@ function ruleEditorSectionsForKind(kind) {
|
|
|
29375
29384
|
}
|
|
29376
29385
|
return sections;
|
|
29377
29386
|
}
|
|
29387
|
+
var clamp01 = (n) => n < 0 ? 0 : n > 1 ? 1 : n;
|
|
29388
|
+
/** The sample of a normalised box: its centre, its extent. */
|
|
29389
|
+
function subjectPathSampleFromBox(bbox, timestamp) {
|
|
29390
|
+
return {
|
|
29391
|
+
x: bbox.x + bbox.w / 2,
|
|
29392
|
+
y: bbox.y + bbox.h / 2,
|
|
29393
|
+
w: bbox.w,
|
|
29394
|
+
h: bbox.h,
|
|
29395
|
+
...timestamp !== void 0 ? { timestamp } : {}
|
|
29396
|
+
};
|
|
29397
|
+
}
|
|
29398
|
+
function isPlaceholder(s) {
|
|
29399
|
+
return s.w !== void 0 && s.h !== void 0 && s.w >= .85 && s.h >= .85;
|
|
29400
|
+
}
|
|
29401
|
+
function downsample(xs, max) {
|
|
29402
|
+
if (xs.length <= max || max < 2) return xs;
|
|
29403
|
+
const step = (xs.length - 1) / (max - 1);
|
|
29404
|
+
const out = [];
|
|
29405
|
+
for (let i = 0; i < max - 1; i++) {
|
|
29406
|
+
const x = xs[Math.round(i * step)];
|
|
29407
|
+
if (x !== void 0) out.push(x);
|
|
29408
|
+
}
|
|
29409
|
+
const last = xs[xs.length - 1];
|
|
29410
|
+
if (last !== void 0) out.push(last);
|
|
29411
|
+
return out;
|
|
29412
|
+
}
|
|
29413
|
+
function isFiniteSample(s) {
|
|
29414
|
+
return Number.isFinite(s.x) && Number.isFinite(s.y);
|
|
29415
|
+
}
|
|
29416
|
+
/**
|
|
29417
|
+
* The path of one track from its samples (normalised, oldest → newest).
|
|
29418
|
+
* Pure; never throws; malformed samples are skipped.
|
|
29419
|
+
*/
|
|
29420
|
+
function buildSubjectPath(samples, opts) {
|
|
29421
|
+
const until = opts?.untilTimestamp;
|
|
29422
|
+
const nodes = [];
|
|
29423
|
+
let unlocalized = 0;
|
|
29424
|
+
let tail = null;
|
|
29425
|
+
for (let index = 0; index < samples.length; index++) {
|
|
29426
|
+
const s = samples[index];
|
|
29427
|
+
if (s === void 0 || !isFiniteSample(s)) continue;
|
|
29428
|
+
if (until !== void 0 && s.timestamp !== void 0 && s.timestamp > until) continue;
|
|
29429
|
+
if (isPlaceholder(s)) {
|
|
29430
|
+
unlocalized += 1;
|
|
29431
|
+
continue;
|
|
29432
|
+
}
|
|
29433
|
+
const ts = s.timestamp !== void 0 && Number.isFinite(s.timestamp) ? s.timestamp : index;
|
|
29434
|
+
const x = clamp01(s.x);
|
|
29435
|
+
const y = clamp01(s.y);
|
|
29436
|
+
const prev = nodes[nodes.length - 1];
|
|
29437
|
+
if (prev !== void 0 && Math.hypot(x - prev.x, y - prev.y) < .005) {
|
|
29438
|
+
nodes[nodes.length - 1] = {
|
|
29439
|
+
...prev,
|
|
29440
|
+
samples: prev.samples + 1,
|
|
29441
|
+
lastTs: Math.max(prev.lastTs, ts)
|
|
29442
|
+
};
|
|
29443
|
+
tail = {
|
|
29444
|
+
x,
|
|
29445
|
+
y,
|
|
29446
|
+
samples: 1,
|
|
29447
|
+
firstTs: ts,
|
|
29448
|
+
lastTs: ts
|
|
29449
|
+
};
|
|
29450
|
+
continue;
|
|
29451
|
+
}
|
|
29452
|
+
tail = null;
|
|
29453
|
+
nodes.push({
|
|
29454
|
+
x,
|
|
29455
|
+
y,
|
|
29456
|
+
samples: 1,
|
|
29457
|
+
firstTs: ts,
|
|
29458
|
+
lastTs: ts
|
|
29459
|
+
});
|
|
29460
|
+
}
|
|
29461
|
+
const end = nodes[nodes.length - 1];
|
|
29462
|
+
if (tail !== null && end !== void 0 && end.samples > 1 && (tail.x !== end.x || tail.y !== end.y)) {
|
|
29463
|
+
nodes[nodes.length - 1] = {
|
|
29464
|
+
...end,
|
|
29465
|
+
samples: end.samples - 1
|
|
29466
|
+
};
|
|
29467
|
+
nodes.push(tail);
|
|
29468
|
+
}
|
|
29469
|
+
return {
|
|
29470
|
+
nodes: downsample(nodes, opts?.maxPoints ?? 120),
|
|
29471
|
+
unlocalized
|
|
29472
|
+
};
|
|
29473
|
+
}
|
|
29474
|
+
/** True when the path has something to draw (two nodes or more). */
|
|
29475
|
+
function isDrawableSubjectPath(path) {
|
|
29476
|
+
return path.nodes.length >= 2;
|
|
29477
|
+
}
|
|
29478
|
+
function inside(p) {
|
|
29479
|
+
return p.x >= 0 && p.x <= 1 && p.y >= 0 && p.y <= 1;
|
|
29480
|
+
}
|
|
29481
|
+
/** Liang–Barsky: the part of segment a→b inside the unit square, or null. */
|
|
29482
|
+
function clipSegment(a, b) {
|
|
29483
|
+
const dx = b.x - a.x;
|
|
29484
|
+
const dy = b.y - a.y;
|
|
29485
|
+
let t0 = 0;
|
|
29486
|
+
let t1 = 1;
|
|
29487
|
+
const edges = [
|
|
29488
|
+
[-dx, a.x],
|
|
29489
|
+
[dx, 1 - a.x],
|
|
29490
|
+
[-dy, a.y],
|
|
29491
|
+
[dy, 1 - a.y]
|
|
29492
|
+
];
|
|
29493
|
+
for (const [p, q] of edges) {
|
|
29494
|
+
if (p === 0) {
|
|
29495
|
+
if (q < 0) return null;
|
|
29496
|
+
continue;
|
|
29497
|
+
}
|
|
29498
|
+
const r = q / p;
|
|
29499
|
+
if (p < 0) {
|
|
29500
|
+
if (r > t1) return null;
|
|
29501
|
+
if (r > t0) t0 = r;
|
|
29502
|
+
} else {
|
|
29503
|
+
if (r < t0) return null;
|
|
29504
|
+
if (r < t1) t1 = r;
|
|
29505
|
+
}
|
|
29506
|
+
}
|
|
29507
|
+
return [{
|
|
29508
|
+
x: a.x + t0 * dx,
|
|
29509
|
+
y: a.y + t0 * dy
|
|
29510
|
+
}, {
|
|
29511
|
+
x: a.x + t1 * dx,
|
|
29512
|
+
y: a.y + t1 * dy
|
|
29513
|
+
}];
|
|
29514
|
+
}
|
|
29515
|
+
function samePoint(a, b) {
|
|
29516
|
+
return Math.abs(a.x - b.x) < 1e-9 && Math.abs(a.y - b.y) < 1e-9;
|
|
29517
|
+
}
|
|
29518
|
+
/**
|
|
29519
|
+
* The path as seen through `view` — a normalised rectangle of the frame (the
|
|
29520
|
+
* whole frame `{0,0,1,1}`, or the rectangle a crop cut). Points are re-mapped
|
|
29521
|
+
* into the view's own 0..1 space and the line is CLIPPED to it: a path that
|
|
29522
|
+
* leaves the crop and comes back is two runs. Runs of fewer than two points
|
|
29523
|
+
* are dropped, so an empty result means "nothing to draw".
|
|
29524
|
+
*/
|
|
29525
|
+
function projectSubjectPath(points, view) {
|
|
29526
|
+
if (points.length < 2 || !(view.w > 0) || !(view.h > 0)) return [];
|
|
29527
|
+
const local = points.map((p) => ({
|
|
29528
|
+
x: (p.x - view.x) / view.w,
|
|
29529
|
+
y: (p.y - view.y) / view.h
|
|
29530
|
+
}));
|
|
29531
|
+
const runs = [];
|
|
29532
|
+
let run = [];
|
|
29533
|
+
for (let i = 1; i < local.length; i++) {
|
|
29534
|
+
const a = local[i - 1];
|
|
29535
|
+
const b = local[i];
|
|
29536
|
+
if (a === void 0 || b === void 0) continue;
|
|
29537
|
+
const seg = clipSegment(a, b);
|
|
29538
|
+
if (seg === null) {
|
|
29539
|
+
if (run.length >= 2) runs.push(run);
|
|
29540
|
+
run = [];
|
|
29541
|
+
continue;
|
|
29542
|
+
}
|
|
29543
|
+
const [from, to] = seg;
|
|
29544
|
+
const last = run[run.length - 1];
|
|
29545
|
+
if (last === void 0 || !samePoint(last, from)) {
|
|
29546
|
+
if (run.length >= 2) runs.push(run);
|
|
29547
|
+
run = [from];
|
|
29548
|
+
}
|
|
29549
|
+
run.push(to);
|
|
29550
|
+
if (!inside(b)) {
|
|
29551
|
+
if (run.length >= 2) runs.push(run);
|
|
29552
|
+
run = [];
|
|
29553
|
+
}
|
|
29554
|
+
}
|
|
29555
|
+
if (run.length >= 2) runs.push(run);
|
|
29556
|
+
return runs;
|
|
29557
|
+
}
|
|
29558
|
+
/** An SVG `points` attribute for a run in a `width` × `height` drawing ("x,y x,y …"). */
|
|
29559
|
+
function subjectPathSvgPoints(run, width, height) {
|
|
29560
|
+
const fmt = (v) => String(Math.round(v * 100) / 100);
|
|
29561
|
+
return run.map((p) => `${fmt(p.x * width)},${fmt(p.y * height)}`).join(" ");
|
|
29562
|
+
}
|
|
29378
29563
|
//#endregion
|
|
29379
29564
|
//#region src/notification/alarm-membership.ts
|
|
29380
29565
|
var ARMED_WORD_PREFIX = "armed_";
|
|
@@ -31400,6 +31585,7 @@ exports.alarmDeviceSecureOnArm = alarmDeviceSecureOnArm;
|
|
|
31400
31585
|
exports.alarmPatchLanded = alarmPatchLanded;
|
|
31401
31586
|
exports.buildDeviceEnrollmentLink = buildDeviceEnrollmentLink;
|
|
31402
31587
|
exports.buildDeviceSignatureMessage = buildDeviceSignatureMessage;
|
|
31588
|
+
exports.buildSubjectPath = buildSubjectPath;
|
|
31403
31589
|
exports.canonicalIconKey = canonicalIconKey;
|
|
31404
31590
|
exports.classifyRetrainReview = classifyRetrainReview;
|
|
31405
31591
|
exports.conditionVisibleForKind = conditionVisibleForKind;
|
|
@@ -31410,6 +31596,7 @@ exports.iconCategoryLabel = iconCategoryLabel;
|
|
|
31410
31596
|
exports.iconEntry = iconEntry;
|
|
31411
31597
|
exports.iconsInCategory = iconsInCategory;
|
|
31412
31598
|
exports.isDefinitiveDeviceRefusal = isDefinitiveDeviceRefusal;
|
|
31599
|
+
exports.isDrawableSubjectPath = isDrawableSubjectPath;
|
|
31413
31600
|
exports.isHeldBackTemplateVar = isHeldBackTemplateVar;
|
|
31414
31601
|
exports.isIconKey = isIconKey;
|
|
31415
31602
|
exports.isSystemRuleKind = isSystemRuleKind;
|
|
@@ -31422,6 +31609,7 @@ exports.parseDeviceEnrollmentLink = parseDeviceEnrollmentLink;
|
|
|
31422
31609
|
exports.parseRetrainRevisionConflict = parseRetrainRevisionConflict;
|
|
31423
31610
|
exports.pickerForCondition = pickerForCondition;
|
|
31424
31611
|
exports.pickerForRuleClasses = pickerForRuleClasses;
|
|
31612
|
+
exports.projectSubjectPath = projectSubjectPath;
|
|
31425
31613
|
exports.resolveIconKey = resolveIconKey;
|
|
31426
31614
|
exports.resolveModeDelays = resolveModeDelays;
|
|
31427
31615
|
exports.retrainBoxIou = retrainBoxIou;
|
|
@@ -31436,6 +31624,8 @@ exports.searchIcons = searchIcons;
|
|
|
31436
31624
|
exports.sensorTransitionNeverFires = sensorTransitionNeverFires;
|
|
31437
31625
|
exports.sensorTransitionOffered = sensorTransitionOffered;
|
|
31438
31626
|
exports.stateLabel = stateLabel;
|
|
31627
|
+
exports.subjectPathSampleFromBox = subjectPathSampleFromBox;
|
|
31628
|
+
exports.subjectPathSvgPoints = subjectPathSvgPoints;
|
|
31439
31629
|
exports.summarizeReview = summarizeReview;
|
|
31440
31630
|
exports.systemEventDeliveryProblems = systemEventDeliveryProblems;
|
|
31441
31631
|
exports.systemEventFilterAppliesToAnyKind = systemEventFilterAppliesToAnyKind;
|
package/dist/client.mjs
CHANGED
|
@@ -23120,6 +23120,15 @@ var NcMediaPolicySchema = z.object({
|
|
|
23120
23120
|
* Replaces `zoneCrop`.
|
|
23121
23121
|
*/
|
|
23122
23122
|
showTriggerZone: z.boolean().optional(),
|
|
23123
|
+
/**
|
|
23124
|
+
* Draw the SUBJECT'S PATH on the picture — a line in the subject's colour
|
|
23125
|
+
* through the track's positions up to the frame shown, the same path the
|
|
23126
|
+
* debug views draw (`buildSubjectPath`, D903). Every picture mode a subject
|
|
23127
|
+
* is drawn on: a `crop` maps the path into the crop and clips it. Valid only
|
|
23128
|
+
* on a rule whose subject is a tracked object (refused on a sound rule);
|
|
23129
|
+
* dropped on `image: 'none'`. Absent = off.
|
|
23130
|
+
*/
|
|
23131
|
+
showSubjectPath: z.boolean().optional(),
|
|
23123
23132
|
/** @deprecated D897 — accepted from an editor that predates `image`, folded into it on save. */
|
|
23124
23133
|
attach: z.enum([
|
|
23125
23134
|
"best",
|
|
@@ -29374,6 +29383,182 @@ function ruleEditorSectionsForKind(kind) {
|
|
|
29374
29383
|
}
|
|
29375
29384
|
return sections;
|
|
29376
29385
|
}
|
|
29386
|
+
var clamp01 = (n) => n < 0 ? 0 : n > 1 ? 1 : n;
|
|
29387
|
+
/** The sample of a normalised box: its centre, its extent. */
|
|
29388
|
+
function subjectPathSampleFromBox(bbox, timestamp) {
|
|
29389
|
+
return {
|
|
29390
|
+
x: bbox.x + bbox.w / 2,
|
|
29391
|
+
y: bbox.y + bbox.h / 2,
|
|
29392
|
+
w: bbox.w,
|
|
29393
|
+
h: bbox.h,
|
|
29394
|
+
...timestamp !== void 0 ? { timestamp } : {}
|
|
29395
|
+
};
|
|
29396
|
+
}
|
|
29397
|
+
function isPlaceholder(s) {
|
|
29398
|
+
return s.w !== void 0 && s.h !== void 0 && s.w >= .85 && s.h >= .85;
|
|
29399
|
+
}
|
|
29400
|
+
function downsample(xs, max) {
|
|
29401
|
+
if (xs.length <= max || max < 2) return xs;
|
|
29402
|
+
const step = (xs.length - 1) / (max - 1);
|
|
29403
|
+
const out = [];
|
|
29404
|
+
for (let i = 0; i < max - 1; i++) {
|
|
29405
|
+
const x = xs[Math.round(i * step)];
|
|
29406
|
+
if (x !== void 0) out.push(x);
|
|
29407
|
+
}
|
|
29408
|
+
const last = xs[xs.length - 1];
|
|
29409
|
+
if (last !== void 0) out.push(last);
|
|
29410
|
+
return out;
|
|
29411
|
+
}
|
|
29412
|
+
function isFiniteSample(s) {
|
|
29413
|
+
return Number.isFinite(s.x) && Number.isFinite(s.y);
|
|
29414
|
+
}
|
|
29415
|
+
/**
|
|
29416
|
+
* The path of one track from its samples (normalised, oldest → newest).
|
|
29417
|
+
* Pure; never throws; malformed samples are skipped.
|
|
29418
|
+
*/
|
|
29419
|
+
function buildSubjectPath(samples, opts) {
|
|
29420
|
+
const until = opts?.untilTimestamp;
|
|
29421
|
+
const nodes = [];
|
|
29422
|
+
let unlocalized = 0;
|
|
29423
|
+
let tail = null;
|
|
29424
|
+
for (let index = 0; index < samples.length; index++) {
|
|
29425
|
+
const s = samples[index];
|
|
29426
|
+
if (s === void 0 || !isFiniteSample(s)) continue;
|
|
29427
|
+
if (until !== void 0 && s.timestamp !== void 0 && s.timestamp > until) continue;
|
|
29428
|
+
if (isPlaceholder(s)) {
|
|
29429
|
+
unlocalized += 1;
|
|
29430
|
+
continue;
|
|
29431
|
+
}
|
|
29432
|
+
const ts = s.timestamp !== void 0 && Number.isFinite(s.timestamp) ? s.timestamp : index;
|
|
29433
|
+
const x = clamp01(s.x);
|
|
29434
|
+
const y = clamp01(s.y);
|
|
29435
|
+
const prev = nodes[nodes.length - 1];
|
|
29436
|
+
if (prev !== void 0 && Math.hypot(x - prev.x, y - prev.y) < .005) {
|
|
29437
|
+
nodes[nodes.length - 1] = {
|
|
29438
|
+
...prev,
|
|
29439
|
+
samples: prev.samples + 1,
|
|
29440
|
+
lastTs: Math.max(prev.lastTs, ts)
|
|
29441
|
+
};
|
|
29442
|
+
tail = {
|
|
29443
|
+
x,
|
|
29444
|
+
y,
|
|
29445
|
+
samples: 1,
|
|
29446
|
+
firstTs: ts,
|
|
29447
|
+
lastTs: ts
|
|
29448
|
+
};
|
|
29449
|
+
continue;
|
|
29450
|
+
}
|
|
29451
|
+
tail = null;
|
|
29452
|
+
nodes.push({
|
|
29453
|
+
x,
|
|
29454
|
+
y,
|
|
29455
|
+
samples: 1,
|
|
29456
|
+
firstTs: ts,
|
|
29457
|
+
lastTs: ts
|
|
29458
|
+
});
|
|
29459
|
+
}
|
|
29460
|
+
const end = nodes[nodes.length - 1];
|
|
29461
|
+
if (tail !== null && end !== void 0 && end.samples > 1 && (tail.x !== end.x || tail.y !== end.y)) {
|
|
29462
|
+
nodes[nodes.length - 1] = {
|
|
29463
|
+
...end,
|
|
29464
|
+
samples: end.samples - 1
|
|
29465
|
+
};
|
|
29466
|
+
nodes.push(tail);
|
|
29467
|
+
}
|
|
29468
|
+
return {
|
|
29469
|
+
nodes: downsample(nodes, opts?.maxPoints ?? 120),
|
|
29470
|
+
unlocalized
|
|
29471
|
+
};
|
|
29472
|
+
}
|
|
29473
|
+
/** True when the path has something to draw (two nodes or more). */
|
|
29474
|
+
function isDrawableSubjectPath(path) {
|
|
29475
|
+
return path.nodes.length >= 2;
|
|
29476
|
+
}
|
|
29477
|
+
function inside(p) {
|
|
29478
|
+
return p.x >= 0 && p.x <= 1 && p.y >= 0 && p.y <= 1;
|
|
29479
|
+
}
|
|
29480
|
+
/** Liang–Barsky: the part of segment a→b inside the unit square, or null. */
|
|
29481
|
+
function clipSegment(a, b) {
|
|
29482
|
+
const dx = b.x - a.x;
|
|
29483
|
+
const dy = b.y - a.y;
|
|
29484
|
+
let t0 = 0;
|
|
29485
|
+
let t1 = 1;
|
|
29486
|
+
const edges = [
|
|
29487
|
+
[-dx, a.x],
|
|
29488
|
+
[dx, 1 - a.x],
|
|
29489
|
+
[-dy, a.y],
|
|
29490
|
+
[dy, 1 - a.y]
|
|
29491
|
+
];
|
|
29492
|
+
for (const [p, q] of edges) {
|
|
29493
|
+
if (p === 0) {
|
|
29494
|
+
if (q < 0) return null;
|
|
29495
|
+
continue;
|
|
29496
|
+
}
|
|
29497
|
+
const r = q / p;
|
|
29498
|
+
if (p < 0) {
|
|
29499
|
+
if (r > t1) return null;
|
|
29500
|
+
if (r > t0) t0 = r;
|
|
29501
|
+
} else {
|
|
29502
|
+
if (r < t0) return null;
|
|
29503
|
+
if (r < t1) t1 = r;
|
|
29504
|
+
}
|
|
29505
|
+
}
|
|
29506
|
+
return [{
|
|
29507
|
+
x: a.x + t0 * dx,
|
|
29508
|
+
y: a.y + t0 * dy
|
|
29509
|
+
}, {
|
|
29510
|
+
x: a.x + t1 * dx,
|
|
29511
|
+
y: a.y + t1 * dy
|
|
29512
|
+
}];
|
|
29513
|
+
}
|
|
29514
|
+
function samePoint(a, b) {
|
|
29515
|
+
return Math.abs(a.x - b.x) < 1e-9 && Math.abs(a.y - b.y) < 1e-9;
|
|
29516
|
+
}
|
|
29517
|
+
/**
|
|
29518
|
+
* The path as seen through `view` — a normalised rectangle of the frame (the
|
|
29519
|
+
* whole frame `{0,0,1,1}`, or the rectangle a crop cut). Points are re-mapped
|
|
29520
|
+
* into the view's own 0..1 space and the line is CLIPPED to it: a path that
|
|
29521
|
+
* leaves the crop and comes back is two runs. Runs of fewer than two points
|
|
29522
|
+
* are dropped, so an empty result means "nothing to draw".
|
|
29523
|
+
*/
|
|
29524
|
+
function projectSubjectPath(points, view) {
|
|
29525
|
+
if (points.length < 2 || !(view.w > 0) || !(view.h > 0)) return [];
|
|
29526
|
+
const local = points.map((p) => ({
|
|
29527
|
+
x: (p.x - view.x) / view.w,
|
|
29528
|
+
y: (p.y - view.y) / view.h
|
|
29529
|
+
}));
|
|
29530
|
+
const runs = [];
|
|
29531
|
+
let run = [];
|
|
29532
|
+
for (let i = 1; i < local.length; i++) {
|
|
29533
|
+
const a = local[i - 1];
|
|
29534
|
+
const b = local[i];
|
|
29535
|
+
if (a === void 0 || b === void 0) continue;
|
|
29536
|
+
const seg = clipSegment(a, b);
|
|
29537
|
+
if (seg === null) {
|
|
29538
|
+
if (run.length >= 2) runs.push(run);
|
|
29539
|
+
run = [];
|
|
29540
|
+
continue;
|
|
29541
|
+
}
|
|
29542
|
+
const [from, to] = seg;
|
|
29543
|
+
const last = run[run.length - 1];
|
|
29544
|
+
if (last === void 0 || !samePoint(last, from)) {
|
|
29545
|
+
if (run.length >= 2) runs.push(run);
|
|
29546
|
+
run = [from];
|
|
29547
|
+
}
|
|
29548
|
+
run.push(to);
|
|
29549
|
+
if (!inside(b)) {
|
|
29550
|
+
if (run.length >= 2) runs.push(run);
|
|
29551
|
+
run = [];
|
|
29552
|
+
}
|
|
29553
|
+
}
|
|
29554
|
+
if (run.length >= 2) runs.push(run);
|
|
29555
|
+
return runs;
|
|
29556
|
+
}
|
|
29557
|
+
/** An SVG `points` attribute for a run in a `width` × `height` drawing ("x,y x,y …"). */
|
|
29558
|
+
function subjectPathSvgPoints(run, width, height) {
|
|
29559
|
+
const fmt = (v) => String(Math.round(v * 100) / 100);
|
|
29560
|
+
return run.map((p) => `${fmt(p.x * width)},${fmt(p.y * height)}`).join(" ");
|
|
29561
|
+
}
|
|
29377
29562
|
//#endregion
|
|
29378
29563
|
//#region src/notification/alarm-membership.ts
|
|
29379
29564
|
var ARMED_WORD_PREFIX = "armed_";
|
|
@@ -31336,4 +31521,4 @@ var TimelapseRuleSchema = TimelapseRuleInputSchema.extend({
|
|
|
31336
31521
|
updatedAt: z.number()
|
|
31337
31522
|
});
|
|
31338
31523
|
//#endregion
|
|
31339
|
-
export { APPLE_SA_TO_MACRO, AUDIO_MACRO_LABELS, AlarmArmModeSchema, CLIP_BROKER_PACED_RATES, COCO_TO_MACRO, CamProfileSchema, DEFAULT_TIMELAPSE_PREVIEW_TEXT, DEFINITIVE_DEVICE_REFUSALS, DEVICE_CERT_RENEW_WINDOW_DAYS, DEVICE_CERT_SIGNATURE, DEVICE_DEFINITIVE_REFUSALS_BEFORE_DELETE, DEVICE_REFRESH_REFUSAL_PREFIX, DEVICE_SIGNATURE_MESSAGE_VERSION, DeviceType, EVENTFUL_CAP_NAMES, EVENT_KIND_BY_CAP, EVENT_TAXONOMY, ICON_CATEGORIES, ICON_ENTRIES, ICON_KEYS, ICON_VIEWER_MODULES, IconKeySchema, LOCATION_ICON_FALLBACK, MACRO_LABELS, NC_ALARM_DELAY_MAX_SEC, NC_ALARM_SENSORS_MAX, NC_ALARM_SYSTEM_EVENT_KINDS, NC_ALARM_TRIGGERED_MAX_SEC, NC_BATTERY_CONSUMABLE_SYSTEM_EVENT_KINDS, NC_CAMERA_SCOPE_CAP_NAME, NC_CONSUMABLE_LOW_PERCENT_DEFAULT, NC_CONSUMABLE_LOW_PERCENT_MAX, NC_GROUPING_DEFAULT_SEC, NC_GROUPING_MAX_SEC, NC_GROUPING_MIN_SEC, NC_RULE_EDITOR_SECTION_ORDER, NC_RULE_KIND_SPECS, NC_SENSOR_TRANSITION_UNSUPPORTED_REASON, NC_SYSTEM_EVENT_FAMILY_FILTERS, NC_SYSTEM_EVENT_KIND_GROUP_SPECS, NC_SYSTEM_EVENT_SUMMARY_FAMILIES, NC_TEMPLATE_HELD_BACK_SYSTEM_EVENT_KINDS, NC_TEMPLATE_VARS, NcAlarmConfigSchema, NcAlarmSensorsSchema, NcAlarmSettingsPatchSchema, NcHistoryEntrySchema, NcRuleLastRunsSchema, NodeDirectorySchema, RECORDING_EXPORT_MAX_READ_BYTES, RETRAIN_REVIEW_ADJUSTED_IOU, RETRAIN_REVIEW_MATCH_IOU, RETRAIN_REVIEW_STATUSES, RETRAIN_REVISION_CONFLICT, SystemMirror, TIMELAPSE_DENSE_FLOOR_SEC, TimelapseRuleSchema, YAMNET_TO_MACRO, alarmDeviceBlocksArming, alarmDeviceSecureOnArm, alarmPatchLanded, buildDeviceEnrollmentLink, buildDeviceSignatureMessage, canonicalIconKey, classifyRetrainReview, conditionVisibleForKind, createSystemProxy, deviceRefusalFromMessage, droppedConditionsForKind, iconCategoryLabel, iconEntry, iconsInCategory, isDefinitiveDeviceRefusal, isHeldBackTemplateVar, isIconKey, isSystemRuleKind, kindsForDiscriminator, knownValues, locationIconKey, nodePickerItems, packagePickerItems, parseDeviceEnrollmentLink, parseRetrainRevisionConflict, pickerForCondition, pickerForRuleClasses, resolveIconKey, resolveModeDelays, retrainBoxIou, retrainRevisionConflictMessage, ruleDeviceCompatCapNames, ruleEditorSectionsForKind, ruleGroupingApplies, ruleKindOf, ruleKindSpec, ruleSeedForSection, searchIcons, sensorTransitionNeverFires, sensorTransitionOffered, stateLabel, summarizeReview, systemEventDeliveryProblems, systemEventFilterAppliesToAnyKind, systemEventKindsOfFamily, systemFamilyOfKind, templateCarriesSummary, templateVarDeliveryApplies, templateVarKindApplies, templateVarSystemEventApplies };
|
|
31524
|
+
export { APPLE_SA_TO_MACRO, AUDIO_MACRO_LABELS, AlarmArmModeSchema, CLIP_BROKER_PACED_RATES, COCO_TO_MACRO, CamProfileSchema, DEFAULT_TIMELAPSE_PREVIEW_TEXT, DEFINITIVE_DEVICE_REFUSALS, DEVICE_CERT_RENEW_WINDOW_DAYS, DEVICE_CERT_SIGNATURE, DEVICE_DEFINITIVE_REFUSALS_BEFORE_DELETE, DEVICE_REFRESH_REFUSAL_PREFIX, DEVICE_SIGNATURE_MESSAGE_VERSION, DeviceType, EVENTFUL_CAP_NAMES, EVENT_KIND_BY_CAP, EVENT_TAXONOMY, ICON_CATEGORIES, ICON_ENTRIES, ICON_KEYS, ICON_VIEWER_MODULES, IconKeySchema, LOCATION_ICON_FALLBACK, MACRO_LABELS, NC_ALARM_DELAY_MAX_SEC, NC_ALARM_SENSORS_MAX, NC_ALARM_SYSTEM_EVENT_KINDS, NC_ALARM_TRIGGERED_MAX_SEC, NC_BATTERY_CONSUMABLE_SYSTEM_EVENT_KINDS, NC_CAMERA_SCOPE_CAP_NAME, NC_CONSUMABLE_LOW_PERCENT_DEFAULT, NC_CONSUMABLE_LOW_PERCENT_MAX, NC_GROUPING_DEFAULT_SEC, NC_GROUPING_MAX_SEC, NC_GROUPING_MIN_SEC, NC_RULE_EDITOR_SECTION_ORDER, NC_RULE_KIND_SPECS, NC_SENSOR_TRANSITION_UNSUPPORTED_REASON, NC_SYSTEM_EVENT_FAMILY_FILTERS, NC_SYSTEM_EVENT_KIND_GROUP_SPECS, NC_SYSTEM_EVENT_SUMMARY_FAMILIES, NC_TEMPLATE_HELD_BACK_SYSTEM_EVENT_KINDS, NC_TEMPLATE_VARS, NcAlarmConfigSchema, NcAlarmSensorsSchema, NcAlarmSettingsPatchSchema, NcHistoryEntrySchema, NcRuleLastRunsSchema, NodeDirectorySchema, RECORDING_EXPORT_MAX_READ_BYTES, RETRAIN_REVIEW_ADJUSTED_IOU, RETRAIN_REVIEW_MATCH_IOU, RETRAIN_REVIEW_STATUSES, RETRAIN_REVISION_CONFLICT, SystemMirror, TIMELAPSE_DENSE_FLOOR_SEC, TimelapseRuleSchema, YAMNET_TO_MACRO, alarmDeviceBlocksArming, alarmDeviceSecureOnArm, alarmPatchLanded, buildDeviceEnrollmentLink, buildDeviceSignatureMessage, buildSubjectPath, canonicalIconKey, classifyRetrainReview, conditionVisibleForKind, createSystemProxy, deviceRefusalFromMessage, droppedConditionsForKind, iconCategoryLabel, iconEntry, iconsInCategory, isDefinitiveDeviceRefusal, isDrawableSubjectPath, isHeldBackTemplateVar, isIconKey, isSystemRuleKind, kindsForDiscriminator, knownValues, locationIconKey, nodePickerItems, packagePickerItems, parseDeviceEnrollmentLink, parseRetrainRevisionConflict, pickerForCondition, pickerForRuleClasses, projectSubjectPath, resolveIconKey, resolveModeDelays, retrainBoxIou, retrainRevisionConflictMessage, ruleDeviceCompatCapNames, ruleEditorSectionsForKind, ruleGroupingApplies, ruleKindOf, ruleKindSpec, ruleSeedForSection, searchIcons, sensorTransitionNeverFires, sensorTransitionOffered, stateLabel, subjectPathSampleFromBox, subjectPathSvgPoints, summarizeReview, systemEventDeliveryProblems, systemEventFilterAppliesToAnyKind, systemEventKindsOfFamily, systemFamilyOfKind, templateCarriesSummary, templateVarDeliveryApplies, templateVarKindApplies, templateVarSystemEventApplies };
|
|
@@ -9137,13 +9137,6 @@ export type AppRouter = TrpcCoreRouter<{
|
|
|
9137
9137
|
output: z.infer<typeof storageAdminCapability.methods.listTables.output>;
|
|
9138
9138
|
meta: object;
|
|
9139
9139
|
}>;
|
|
9140
|
-
dropCollection: TRPCMutationProcedure<{
|
|
9141
|
-
input: {
|
|
9142
|
-
[x: string]: unknown;
|
|
9143
|
-
} & z.input<typeof storageAdminCapability.methods.dropCollection.input>;
|
|
9144
|
-
output: z.infer<typeof storageAdminCapability.methods.dropCollection.output>;
|
|
9145
|
-
meta: object;
|
|
9146
|
-
}>;
|
|
9147
9140
|
listKinds: TRPCQueryProcedure<{
|
|
9148
9141
|
input: {
|
|
9149
9142
|
[x: string]: unknown;
|