camstack 1.2.175 → 1.2.176
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.
|
@@ -14681,7 +14681,7 @@ function date4(params) {
|
|
|
14681
14681
|
// ../../node_modules/zod/v4/classic/external.js
|
|
14682
14682
|
config(en_default());
|
|
14683
14683
|
|
|
14684
|
-
// ../types/dist/sleep-
|
|
14684
|
+
// ../types/dist/sleep-gU6hqv4_.mjs
|
|
14685
14685
|
var AUDIO_CHUNK_FORMATS = [
|
|
14686
14686
|
"f32le",
|
|
14687
14687
|
"pcmu",
|
|
@@ -16775,6 +16775,81 @@ var ArchivedDebugNoteQueryInputSchema = external_exports.object({
|
|
|
16775
16775
|
/** Max rows returned, newest-first. */
|
|
16776
16776
|
limit: external_exports.number().int().min(1).max(1e3).optional()
|
|
16777
16777
|
});
|
|
16778
|
+
var TrackRelationKindSchema = external_exports.enum(["same-subject", "different-subjects"]);
|
|
16779
|
+
var TrackSideSchema = external_exports.enum(["before", "after"]);
|
|
16780
|
+
var TrackPurityValueSchema = external_exports.enum(["mixed", "not-a-subject"]);
|
|
16781
|
+
var TrackRelationSchema = external_exports.object({
|
|
16782
|
+
id: external_exports.string(),
|
|
16783
|
+
deviceId: external_exports.number().int(),
|
|
16784
|
+
leftTrackId: external_exports.string(),
|
|
16785
|
+
rightTrackId: external_exports.string(),
|
|
16786
|
+
leftSide: TrackSideSchema.nullable(),
|
|
16787
|
+
rightSide: TrackSideSchema.nullable(),
|
|
16788
|
+
relation: TrackRelationKindSchema,
|
|
16789
|
+
presence: external_exports.literal("continuous").nullable(),
|
|
16790
|
+
leftStartedAt: external_exports.number().int().nullable(),
|
|
16791
|
+
rightStartedAt: external_exports.number().int().nullable(),
|
|
16792
|
+
createdAt: external_exports.number().int(),
|
|
16793
|
+
updatedAt: external_exports.number().int(),
|
|
16794
|
+
author: external_exports.string().nullable()
|
|
16795
|
+
});
|
|
16796
|
+
var TrackPuritySchema = external_exports.object({
|
|
16797
|
+
id: external_exports.string(),
|
|
16798
|
+
deviceId: external_exports.number().int(),
|
|
16799
|
+
sourceTrackId: external_exports.string(),
|
|
16800
|
+
purity: TrackPurityValueSchema,
|
|
16801
|
+
switchAtMs: external_exports.number().int().nullable(),
|
|
16802
|
+
startedAt: external_exports.number().int().nullable(),
|
|
16803
|
+
createdAt: external_exports.number().int(),
|
|
16804
|
+
updatedAt: external_exports.number().int(),
|
|
16805
|
+
author: external_exports.string().nullable()
|
|
16806
|
+
});
|
|
16807
|
+
var SetTrackRelationInputSchema = external_exports.object({
|
|
16808
|
+
deviceId: external_exports.number().int(),
|
|
16809
|
+
trackId: external_exports.string().min(1),
|
|
16810
|
+
otherTrackId: external_exports.string().min(1),
|
|
16811
|
+
relation: TrackRelationKindSchema,
|
|
16812
|
+
presence: external_exports.literal("continuous").optional(),
|
|
16813
|
+
trackSide: TrackSideSchema.optional(),
|
|
16814
|
+
otherSide: TrackSideSchema.optional()
|
|
16815
|
+
});
|
|
16816
|
+
var ClearTrackRelationInputSchema = external_exports.object({
|
|
16817
|
+
deviceId: external_exports.number().int(),
|
|
16818
|
+
trackId: external_exports.string().min(1),
|
|
16819
|
+
otherTrackId: external_exports.string().min(1)
|
|
16820
|
+
});
|
|
16821
|
+
var ClearTrackRelationResultSchema = external_exports.object({ cleared: external_exports.boolean() });
|
|
16822
|
+
var SetTrackPurityInputSchema = external_exports.object({
|
|
16823
|
+
deviceId: external_exports.number().int(),
|
|
16824
|
+
trackId: external_exports.string().min(1),
|
|
16825
|
+
purity: external_exports.enum([
|
|
16826
|
+
"pure",
|
|
16827
|
+
"mixed",
|
|
16828
|
+
"not-a-subject"
|
|
16829
|
+
]),
|
|
16830
|
+
switchAtMs: external_exports.number().int().optional()
|
|
16831
|
+
});
|
|
16832
|
+
var SetTrackPurityResultSchema = external_exports.object({ purity: TrackPuritySchema.nullable() });
|
|
16833
|
+
var ListTrackRelationsInputSchema = external_exports.object({
|
|
16834
|
+
deviceId: external_exports.number().int(),
|
|
16835
|
+
trackId: external_exports.string().optional(),
|
|
16836
|
+
since: external_exports.number().int().optional(),
|
|
16837
|
+
until: external_exports.number().int().optional(),
|
|
16838
|
+
limit: external_exports.number().int().min(1).max(5e3).optional()
|
|
16839
|
+
});
|
|
16840
|
+
var ListTrackRelationsResultSchema = external_exports.object({
|
|
16841
|
+
relations: external_exports.array(TrackRelationSchema).readonly(),
|
|
16842
|
+
purities: external_exports.array(TrackPuritySchema).readonly(),
|
|
16843
|
+
truncated: external_exports.boolean()
|
|
16844
|
+
});
|
|
16845
|
+
var TrackRelationRefusalSchema = external_exports.enum([
|
|
16846
|
+
"unknown-track",
|
|
16847
|
+
"cross-device",
|
|
16848
|
+
"self-relation",
|
|
16849
|
+
"contradiction",
|
|
16850
|
+
"switch-outside-track",
|
|
16851
|
+
"switch-needs-mixed"
|
|
16852
|
+
]);
|
|
16778
16853
|
var OpsLogDomainSchema = external_exports.enum(["recording", "events"]);
|
|
16779
16854
|
var OpsLogOpSchema = external_exports.enum([
|
|
16780
16855
|
"prune",
|
|
@@ -18757,6 +18832,63 @@ var authProviderCapability = {
|
|
|
18757
18832
|
/** BIG PLAN 2: declarative mount hint — read by `@camstack/system` `buildCapRouters`. */
|
|
18758
18833
|
mount: { kind: "skip" }
|
|
18759
18834
|
};
|
|
18835
|
+
var DATABASE_SNAPSHOT_TIMEOUT_MS = 30 * 6e4;
|
|
18836
|
+
var DatabaseSnapshotTargetsSchema = external_exports.object({ databases: external_exports.array(external_exports.object({ livePath: external_exports.string() })) });
|
|
18837
|
+
var DatabaseSnapshotTableSchema = external_exports.object({
|
|
18838
|
+
name: external_exports.string(),
|
|
18839
|
+
rows: external_exports.number().int().nonnegative()
|
|
18840
|
+
});
|
|
18841
|
+
var DatabaseSnapshotResultSchema = external_exports.object({
|
|
18842
|
+
/** The live database the snapshot copies. Never to be copied as a file. */
|
|
18843
|
+
livePath: external_exports.string(),
|
|
18844
|
+
/** The verified copy: `<livePath>` + {@link DATABASE_SNAPSHOT_SUFFIX}. */
|
|
18845
|
+
snapshotPath: external_exports.string(),
|
|
18846
|
+
sizeBytes: external_exports.number().int().nonnegative(),
|
|
18847
|
+
pageCount: external_exports.number().int().nonnegative(),
|
|
18848
|
+
pageSize: external_exports.number().int().positive(),
|
|
18849
|
+
/**
|
|
18850
|
+
* Every b-tree table with its row count. Read inside the SAME read
|
|
18851
|
+
* transaction the copy was taken from, and found EQUAL on the copy — so
|
|
18852
|
+
* this is the content of the snapshot, not an estimate of the source.
|
|
18853
|
+
*/
|
|
18854
|
+
tables: external_exports.array(DatabaseSnapshotTableSchema),
|
|
18855
|
+
/** Wall time of the pinned copy (row counts included). */
|
|
18856
|
+
copyMs: external_exports.number().nonnegative(),
|
|
18857
|
+
/** Wall time of the checks on the copy (`integrity_check`, row counts). */
|
|
18858
|
+
verifyMs: external_exports.number().nonnegative(),
|
|
18859
|
+
/** When the pinned read transaction began (ms epoch) — the snapshot's instant. */
|
|
18860
|
+
takenAt: external_exports.number()
|
|
18861
|
+
});
|
|
18862
|
+
var ArchiveSqliteSnapshotSchema = DatabaseSnapshotResultSchema.extend({
|
|
18863
|
+
/** Archive-relative path of the live database the archive does NOT carry. */
|
|
18864
|
+
livePath: external_exports.string(),
|
|
18865
|
+
/** Archive-relative path of the verified copy it carries in its place. */
|
|
18866
|
+
snapshotPath: external_exports.string()
|
|
18867
|
+
});
|
|
18868
|
+
var databaseSnapshotCapability = {
|
|
18869
|
+
name: "database-snapshot",
|
|
18870
|
+
scope: "system",
|
|
18871
|
+
mode: "singleton",
|
|
18872
|
+
internal: true,
|
|
18873
|
+
methods: {
|
|
18874
|
+
/**
|
|
18875
|
+
* Which databases this owner snapshots. Answered from memory — no file is
|
|
18876
|
+
* touched — so a backup can ask it before deciding anything.
|
|
18877
|
+
*/
|
|
18878
|
+
listDatabases: method(external_exports.object({}), DatabaseSnapshotTargetsSchema, { auth: "admin" }),
|
|
18879
|
+
/**
|
|
18880
|
+
* Write `<db>.backup-snapshot` and return what it holds. Throws — and
|
|
18881
|
+
* leaves no file under the final name — when the copy fails
|
|
18882
|
+
* `integrity_check` or its row counts differ from the pinned source's.
|
|
18883
|
+
* A second call while one is running joins it.
|
|
18884
|
+
*/
|
|
18885
|
+
writeSnapshot: method(external_exports.object({}), DatabaseSnapshotResultSchema, {
|
|
18886
|
+
kind: "mutation",
|
|
18887
|
+
auth: "admin",
|
|
18888
|
+
timeoutMs: DATABASE_SNAPSHOT_TIMEOUT_MS
|
|
18889
|
+
})
|
|
18890
|
+
}
|
|
18891
|
+
};
|
|
18760
18892
|
var BackupDestinationInfoSchema = external_exports.object({
|
|
18761
18893
|
/**
|
|
18762
18894
|
* Sub-id within this addon. Convention `default` for single-
|
|
@@ -18848,7 +18980,12 @@ var ArchiveManifestSchema = external_exports.object({
|
|
|
18848
18980
|
locations: external_exports.array(external_exports.string()),
|
|
18849
18981
|
entries: external_exports.array(ArchiveEntrySchema),
|
|
18850
18982
|
totalBytes: external_exports.number(),
|
|
18851
|
-
totalFiles: external_exports.number()
|
|
18983
|
+
totalFiles: external_exports.number(),
|
|
18984
|
+
/**
|
|
18985
|
+
* Live SQLite databases this archive carries as their OWNER's verified
|
|
18986
|
+
* snapshot instead of as files (D693). Absent on archives made before.
|
|
18987
|
+
*/
|
|
18988
|
+
sqliteSnapshots: external_exports.array(ArchiveSqliteSnapshotSchema).optional()
|
|
18852
18989
|
});
|
|
18853
18990
|
var LocationStatSchema = external_exports.object({
|
|
18854
18991
|
name: external_exports.string(),
|
|
@@ -20604,6 +20741,123 @@ var CompositionBlockStateSchema = external_exports.object({
|
|
|
20604
20741
|
reason: external_exports.string().optional(),
|
|
20605
20742
|
fields: external_exports.array(CompositionFieldStateSchema)
|
|
20606
20743
|
});
|
|
20744
|
+
var ComposerBlockSchema = external_exports.object({
|
|
20745
|
+
id: external_exports.string().min(1),
|
|
20746
|
+
name: external_exports.string().min(1).max(120),
|
|
20747
|
+
enabled: external_exports.boolean(),
|
|
20748
|
+
updatedAt: external_exports.number(),
|
|
20749
|
+
composition: CompositionSchema
|
|
20750
|
+
});
|
|
20751
|
+
var ComposerUnreadableBlockSchema = external_exports.object({
|
|
20752
|
+
id: external_exports.string().min(1),
|
|
20753
|
+
/** The row's stored name column; null when even that is unreadable (the device keeps the name it has). */
|
|
20754
|
+
name: external_exports.string().nullable(),
|
|
20755
|
+
/** The parse error, in the operator's words. */
|
|
20756
|
+
error: external_exports.string()
|
|
20757
|
+
});
|
|
20758
|
+
var ComposerApplyInputSchema = external_exports.object({
|
|
20759
|
+
/** The shared Blocks integration; null until `core-blocks` has reconciled it. */
|
|
20760
|
+
integrationId: external_exports.string().nullable(),
|
|
20761
|
+
/** False when the `core_blocks` read failed: then nothing may be withdrawn (D49). */
|
|
20762
|
+
storeLoaded: external_exports.boolean(),
|
|
20763
|
+
blocks: external_exports.array(ComposerBlockSchema),
|
|
20764
|
+
/** Operator restarts: rebuild these runtimes and re-resolve their sources. Stores nothing (D62). */
|
|
20765
|
+
restartBlockIds: external_exports.array(external_exports.string()),
|
|
20766
|
+
/** Composition rows that exist but do not parse: held, never withdrawn, reported failed. */
|
|
20767
|
+
unreadableBlocks: external_exports.array(ComposerUnreadableBlockSchema)
|
|
20768
|
+
});
|
|
20769
|
+
var ComposerBlockVerdictSchema = external_exports.object({
|
|
20770
|
+
blockId: external_exports.string(),
|
|
20771
|
+
status: CompositionRunStatusSchema,
|
|
20772
|
+
reason: external_exports.string().optional()
|
|
20773
|
+
});
|
|
20774
|
+
var ComposerApplyResultSchema = external_exports.object({
|
|
20775
|
+
blocks: external_exports.array(ComposerBlockVerdictSchema),
|
|
20776
|
+
/**
|
|
20777
|
+
* False when the composer declared and withdrew NOTHING (store not loaded,
|
|
20778
|
+
* integration unknown, its own rows unread or read empty once). An empty
|
|
20779
|
+
* apply the caller owes is paid off only by one the composer acted on (D49).
|
|
20780
|
+
*/
|
|
20781
|
+
acted: external_exports.boolean()
|
|
20782
|
+
});
|
|
20783
|
+
var composerCapability = {
|
|
20784
|
+
name: "composer",
|
|
20785
|
+
scope: "system",
|
|
20786
|
+
mode: "singleton",
|
|
20787
|
+
internal: true,
|
|
20788
|
+
methods: {
|
|
20789
|
+
/**
|
|
20790
|
+
* Not `apply`: tRPC reserves `apply`, `call` and `then` as router keys, and
|
|
20791
|
+
* `router({})` throws on one — every cap router is built at boot.
|
|
20792
|
+
*/
|
|
20793
|
+
applyBlocks: method(ComposerApplyInputSchema, ComposerApplyResultSchema, {
|
|
20794
|
+
kind: "mutation",
|
|
20795
|
+
auth: "admin"
|
|
20796
|
+
}),
|
|
20797
|
+
getStates: method(external_exports.object({ blockIds: external_exports.array(external_exports.string()) }), external_exports.object({ states: external_exports.array(CompositionBlockStateSchema) }), { auth: "admin" })
|
|
20798
|
+
}
|
|
20799
|
+
};
|
|
20800
|
+
var NUMBER = {
|
|
20801
|
+
kind: "fixed",
|
|
20802
|
+
result: ["number"]
|
|
20803
|
+
};
|
|
20804
|
+
var BOOLEAN = {
|
|
20805
|
+
kind: "fixed",
|
|
20806
|
+
result: ["boolean"]
|
|
20807
|
+
};
|
|
20808
|
+
var BUILTIN_RESULT_KINDS = Object.freeze({
|
|
20809
|
+
min: NUMBER,
|
|
20810
|
+
max: NUMBER,
|
|
20811
|
+
abs: NUMBER,
|
|
20812
|
+
floor: NUMBER,
|
|
20813
|
+
ceil: NUMBER,
|
|
20814
|
+
sqrt: NUMBER,
|
|
20815
|
+
round: NUMBER,
|
|
20816
|
+
pow: NUMBER,
|
|
20817
|
+
clamp: NUMBER,
|
|
20818
|
+
avg: NUMBER,
|
|
20819
|
+
sum: NUMBER,
|
|
20820
|
+
age: NUMBER,
|
|
20821
|
+
convert: NUMBER,
|
|
20822
|
+
coalesce: { kind: "coalesce" },
|
|
20823
|
+
any: BOOLEAN,
|
|
20824
|
+
all: BOOLEAN,
|
|
20825
|
+
within: BOOLEAN,
|
|
20826
|
+
latest: {
|
|
20827
|
+
kind: "fixed",
|
|
20828
|
+
result: ["number", "null"]
|
|
20829
|
+
},
|
|
20830
|
+
number: {
|
|
20831
|
+
kind: "fixed",
|
|
20832
|
+
result: ["number", "null"]
|
|
20833
|
+
},
|
|
20834
|
+
rose: {
|
|
20835
|
+
kind: "fixed",
|
|
20836
|
+
result: ["number", "null"]
|
|
20837
|
+
},
|
|
20838
|
+
count: NUMBER
|
|
20839
|
+
});
|
|
20840
|
+
var PENDING_SELF = {
|
|
20841
|
+
addonId: COMPOSER_ADDON_ID,
|
|
20842
|
+
stableId: `${COMPOSED_DEVICE_STABLE_ID_PREFIX}(unsaved)`
|
|
20843
|
+
};
|
|
20844
|
+
var ComposableFieldSchema = external_exports.object({
|
|
20845
|
+
path: external_exports.string(),
|
|
20846
|
+
kind: CompositionFieldKindSchema,
|
|
20847
|
+
nullable: external_exports.boolean(),
|
|
20848
|
+
required: external_exports.boolean(),
|
|
20849
|
+
enumValues: external_exports.array(external_exports.string()).optional()
|
|
20850
|
+
});
|
|
20851
|
+
var ComposableCapabilitySchema = external_exports.object({
|
|
20852
|
+
cap: external_exports.string(),
|
|
20853
|
+
fields: external_exports.array(ComposableFieldSchema),
|
|
20854
|
+
/** Present for an item-array cap (`consumables.items`). */
|
|
20855
|
+
itemArray: external_exports.object({
|
|
20856
|
+
path: external_exports.string(),
|
|
20857
|
+
keyField: external_exports.string()
|
|
20858
|
+
}).optional()
|
|
20859
|
+
});
|
|
20860
|
+
var ComposableCapabilitiesSchema = external_exports.object({ caps: external_exports.array(ComposableCapabilitySchema) });
|
|
20607
20861
|
var CoreBlockPlacementSchema = external_exports.union([external_exports.literal("hub"), external_exports.string().min(1)]);
|
|
20608
20862
|
var CoreBlockStatusSchema = external_exports.enum([
|
|
20609
20863
|
"stopped",
|
|
@@ -20804,6 +21058,14 @@ var coreBlocksCapability = {
|
|
|
20804
21058
|
stableId: external_exports.string().min(1)
|
|
20805
21059
|
}), CompositionCustomizationReadSchema, { auth: "admin" }),
|
|
20806
21060
|
/**
|
|
21061
|
+
* The capabilities a composition may BUILD on a device of `deviceType`
|
|
21062
|
+
* (a new device, or added to an existing one), with their fields — the
|
|
21063
|
+
* editor's feature list and the presets' availability (G2, D676). Built
|
|
21064
|
+
* from the validator's own blockers; a replace of a BOUND cap is not
|
|
21065
|
+
* listed here (the device's bindings say what it has).
|
|
21066
|
+
*/
|
|
21067
|
+
listComposableCaps: method(external_exports.object({ deviceType: external_exports.enum(DeviceType) }), ComposableCapabilitiesSchema, { auth: "admin" }),
|
|
21068
|
+
/**
|
|
20807
21069
|
* Validate without saving — the same verdict the save reaches. A mutation
|
|
20808
21070
|
* for its body size; it writes nothing, so its access is `view`.
|
|
20809
21071
|
*/
|
|
@@ -20817,62 +21079,6 @@ var coreBlocksCapability = {
|
|
|
20817
21079
|
})
|
|
20818
21080
|
}
|
|
20819
21081
|
};
|
|
20820
|
-
var ComposerBlockSchema = external_exports.object({
|
|
20821
|
-
id: external_exports.string().min(1),
|
|
20822
|
-
name: external_exports.string().min(1).max(120),
|
|
20823
|
-
enabled: external_exports.boolean(),
|
|
20824
|
-
updatedAt: external_exports.number(),
|
|
20825
|
-
composition: CompositionSchema
|
|
20826
|
-
});
|
|
20827
|
-
var ComposerUnreadableBlockSchema = external_exports.object({
|
|
20828
|
-
id: external_exports.string().min(1),
|
|
20829
|
-
/** The row's stored name column; null when even that is unreadable (the device keeps the name it has). */
|
|
20830
|
-
name: external_exports.string().nullable(),
|
|
20831
|
-
/** The parse error, in the operator's words. */
|
|
20832
|
-
error: external_exports.string()
|
|
20833
|
-
});
|
|
20834
|
-
var ComposerApplyInputSchema = external_exports.object({
|
|
20835
|
-
/** The shared Blocks integration; null until `core-blocks` has reconciled it. */
|
|
20836
|
-
integrationId: external_exports.string().nullable(),
|
|
20837
|
-
/** False when the `core_blocks` read failed: then nothing may be withdrawn (D49). */
|
|
20838
|
-
storeLoaded: external_exports.boolean(),
|
|
20839
|
-
blocks: external_exports.array(ComposerBlockSchema),
|
|
20840
|
-
/** Operator restarts: rebuild these runtimes and re-resolve their sources. Stores nothing (D62). */
|
|
20841
|
-
restartBlockIds: external_exports.array(external_exports.string()),
|
|
20842
|
-
/** Composition rows that exist but do not parse: held, never withdrawn, reported failed. */
|
|
20843
|
-
unreadableBlocks: external_exports.array(ComposerUnreadableBlockSchema)
|
|
20844
|
-
});
|
|
20845
|
-
var ComposerBlockVerdictSchema = external_exports.object({
|
|
20846
|
-
blockId: external_exports.string(),
|
|
20847
|
-
status: CompositionRunStatusSchema,
|
|
20848
|
-
reason: external_exports.string().optional()
|
|
20849
|
-
});
|
|
20850
|
-
var ComposerApplyResultSchema = external_exports.object({
|
|
20851
|
-
blocks: external_exports.array(ComposerBlockVerdictSchema),
|
|
20852
|
-
/**
|
|
20853
|
-
* False when the composer declared and withdrew NOTHING (store not loaded,
|
|
20854
|
-
* integration unknown, its own rows unread or read empty once). An empty
|
|
20855
|
-
* apply the caller owes is paid off only by one the composer acted on (D49).
|
|
20856
|
-
*/
|
|
20857
|
-
acted: external_exports.boolean()
|
|
20858
|
-
});
|
|
20859
|
-
var composerCapability = {
|
|
20860
|
-
name: "composer",
|
|
20861
|
-
scope: "system",
|
|
20862
|
-
mode: "singleton",
|
|
20863
|
-
internal: true,
|
|
20864
|
-
methods: {
|
|
20865
|
-
/**
|
|
20866
|
-
* Not `apply`: tRPC reserves `apply`, `call` and `then` as router keys, and
|
|
20867
|
-
* `router({})` throws on one — every cap router is built at boot.
|
|
20868
|
-
*/
|
|
20869
|
-
applyBlocks: method(ComposerApplyInputSchema, ComposerApplyResultSchema, {
|
|
20870
|
-
kind: "mutation",
|
|
20871
|
-
auth: "admin"
|
|
20872
|
-
}),
|
|
20873
|
-
getStates: method(external_exports.object({ blockIds: external_exports.array(external_exports.string()) }), external_exports.object({ states: external_exports.array(CompositionBlockStateSchema) }), { auth: "admin" })
|
|
20874
|
-
}
|
|
20875
|
-
};
|
|
20876
21082
|
var CustomModelDescriptorSchema = external_exports.object({
|
|
20877
21083
|
stepId: external_exports.string(),
|
|
20878
21084
|
entry: ModelCatalogEntrySchema
|
|
@@ -23359,6 +23565,208 @@ var deviceManagerCapability = {
|
|
|
23359
23565
|
}), external_exports.record(external_exports.string(), external_exports.record(external_exports.string(), external_exports.unknown().nullable())))
|
|
23360
23566
|
}
|
|
23361
23567
|
};
|
|
23568
|
+
var DoorbellStatusSchema = external_exports.object({
|
|
23569
|
+
/** Ms epoch of the last press. null = never observed since this provider started. */
|
|
23570
|
+
lastPressedAt: external_exports.number().nullable(),
|
|
23571
|
+
/** Counter since provider start. Resets on reboot. Useful for metrics/debug. */
|
|
23572
|
+
pressCountSinceStart: external_exports.number()
|
|
23573
|
+
});
|
|
23574
|
+
var DoorbellPressEventSchema = external_exports.object({
|
|
23575
|
+
deviceId: external_exports.number(),
|
|
23576
|
+
timestamp: external_exports.number()
|
|
23577
|
+
});
|
|
23578
|
+
var DoorbellSourceSlotValueSchema = external_exports.object({ deviceIds: external_exports.array(external_exports.number().int().positive()) });
|
|
23579
|
+
var DOORBELL_SOURCE_SLOT = {
|
|
23580
|
+
id: "doorbell-source",
|
|
23581
|
+
label: "Doorbell trigger devices",
|
|
23582
|
+
description: "Any of these becoming active rings this camera's virtual doorbell: a binary sensor when it goes active, a switch when it turns on.",
|
|
23583
|
+
shape: "association",
|
|
23584
|
+
hostDeviceTypes: [DeviceType.Camera],
|
|
23585
|
+
sourceCaps: SOURCE_CAPS,
|
|
23586
|
+
cardinality: "many",
|
|
23587
|
+
value: DoorbellSourceSlotValueSchema
|
|
23588
|
+
};
|
|
23589
|
+
var doorbellCapability = {
|
|
23590
|
+
name: "doorbell",
|
|
23591
|
+
scope: "device",
|
|
23592
|
+
deviceNative: true,
|
|
23593
|
+
mode: "singleton",
|
|
23594
|
+
kind: "wrapper",
|
|
23595
|
+
defaultActive: false,
|
|
23596
|
+
deviceTypes: [DeviceType.Button, DeviceType.Camera],
|
|
23597
|
+
extensionSlots: [DOORBELL_SOURCE_SLOT],
|
|
23598
|
+
methods: {},
|
|
23599
|
+
events: {
|
|
23600
|
+
/**
|
|
23601
|
+
* Fires once per physical press. Reolink delivers via Baichuan
|
|
23602
|
+
* push (`ReolinkSimpleEvent.type === 'doorbell'`). There is no
|
|
23603
|
+
* release/duration — it's a pulse.
|
|
23604
|
+
*/
|
|
23605
|
+
onPressed: {
|
|
23606
|
+
data: DoorbellPressEventSchema,
|
|
23607
|
+
fromState: {
|
|
23608
|
+
field: "lastPressedAt",
|
|
23609
|
+
on: "advance"
|
|
23610
|
+
}
|
|
23611
|
+
}
|
|
23612
|
+
},
|
|
23613
|
+
status: {
|
|
23614
|
+
schema: DoorbellStatusSchema,
|
|
23615
|
+
kind: "push"
|
|
23616
|
+
},
|
|
23617
|
+
/**
|
|
23618
|
+
* Runtime-state slice — last press timestamp + lifetime press count.
|
|
23619
|
+
* Mirrored by the kernel and readable via
|
|
23620
|
+
* `device.state.doorbell.value`. UIs can show "last ring 5m ago"
|
|
23621
|
+
* without subscribing.
|
|
23622
|
+
*/
|
|
23623
|
+
runtimeState: DoorbellStatusSchema,
|
|
23624
|
+
/**
|
|
23625
|
+
* Runtime-state durability: **restored** — a monotonic accumulator: the slice IS the record. `lastPressedAt` is content here, not a clock, so it is deliberately NOT volatile.
|
|
23626
|
+
*
|
|
23627
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
23628
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
23629
|
+
*/
|
|
23630
|
+
durability: "restored"
|
|
23631
|
+
};
|
|
23632
|
+
var EXTENSION_SLOT_IDS = ["doorbell-source", "linked-devices"];
|
|
23633
|
+
var ExtensionSlotIdSchema = external_exports.enum(EXTENSION_SLOT_IDS);
|
|
23634
|
+
var EXTENSION_SLOTS = {
|
|
23635
|
+
"doorbell-source": {
|
|
23636
|
+
descriptor: DOORBELL_SOURCE_SLOT,
|
|
23637
|
+
declaringCap: "doorbell",
|
|
23638
|
+
hostDeviceTypes: [DeviceType.Camera]
|
|
23639
|
+
},
|
|
23640
|
+
"linked-devices": {
|
|
23641
|
+
descriptor: LINKED_DEVICES_SLOT,
|
|
23642
|
+
declaringCap: "device-manager",
|
|
23643
|
+
hostDeviceTypes: [DeviceType.Camera]
|
|
23644
|
+
}
|
|
23645
|
+
};
|
|
23646
|
+
var ExtensionSlotValueSchema = external_exports.discriminatedUnion("slot", [DoorbellSourceSlotValueSchema.extend({ slot: external_exports.literal("doorbell-source") }), LinkedDevicesSlotValueSchema.extend({ slot: external_exports.literal("linked-devices") })]);
|
|
23647
|
+
var EXTENSION_HOST_DEVICE_TYPES = [DeviceType.Camera];
|
|
23648
|
+
var ExtensionSourceAvailabilitySchema = external_exports.discriminatedUnion("state", [external_exports.object({ state: external_exports.literal("ok") }), external_exports.object({
|
|
23649
|
+
state: external_exports.literal("unreachable"),
|
|
23650
|
+
reason: external_exports.string()
|
|
23651
|
+
})]);
|
|
23652
|
+
var ExtensionSourceSchema = external_exports.object({
|
|
23653
|
+
/** The routing prefix of every `slotRef` this provider serves. */
|
|
23654
|
+
source: external_exports.string(),
|
|
23655
|
+
label: external_exports.string(),
|
|
23656
|
+
/** Stamped by the dispatcher from the registry (D557). */
|
|
23657
|
+
addonId: external_exports.string().optional(),
|
|
23658
|
+
availability: ExtensionSourceAvailabilitySchema
|
|
23659
|
+
});
|
|
23660
|
+
var ExtensionSourceHealthSchema = external_exports.enum([
|
|
23661
|
+
"ok",
|
|
23662
|
+
"missing",
|
|
23663
|
+
"foreign",
|
|
23664
|
+
"unavailable"
|
|
23665
|
+
]);
|
|
23666
|
+
var ExtensionSlotSourceSchema = external_exports.object({
|
|
23667
|
+
deviceId: external_exports.number().int(),
|
|
23668
|
+
/** The device's name, or null when it could not be resolved (`missing`). */
|
|
23669
|
+
name: external_exports.string().nullable(),
|
|
23670
|
+
health: ExtensionSourceHealthSchema,
|
|
23671
|
+
detail: external_exports.string().optional()
|
|
23672
|
+
});
|
|
23673
|
+
var ExtensionSlotActivationSchema = external_exports.object({
|
|
23674
|
+
state: external_exports.enum([
|
|
23675
|
+
"active",
|
|
23676
|
+
"inactive",
|
|
23677
|
+
"unknown"
|
|
23678
|
+
]),
|
|
23679
|
+
authority: external_exports.string(),
|
|
23680
|
+
detail: external_exports.string().optional()
|
|
23681
|
+
});
|
|
23682
|
+
var ExtensionSlotStateSchema = external_exports.object({
|
|
23683
|
+
state: external_exports.literal("ok"),
|
|
23684
|
+
/** `<source>:<slotId>` — the routing key for `listCandidates` / `setSlot`. */
|
|
23685
|
+
slotRef: external_exports.string(),
|
|
23686
|
+
slot: ExtensionSlotIdSchema,
|
|
23687
|
+
/** Names the store written (D62), e.g. `virtual-doorbell:doorbellSources`. */
|
|
23688
|
+
authority: external_exports.string(),
|
|
23689
|
+
activation: ExtensionSlotActivationSchema.nullable(),
|
|
23690
|
+
value: ExtensionSlotValueSchema,
|
|
23691
|
+
sources: external_exports.array(ExtensionSlotSourceSchema),
|
|
23692
|
+
/**
|
|
23693
|
+
* Devices the owner links to the host ON ITS OWN, by structure, and that
|
|
23694
|
+
* are therefore not in `value` (D655): a camera's device-tree children, and
|
|
23695
|
+
* the child a picked container stands for (D356 — a container is never a
|
|
23696
|
+
* pick, its children are). Read-only; the editor shows them and may offer
|
|
23697
|
+
* per-device options on them (the linked-devices tracked-event opt-in).
|
|
23698
|
+
* Absent when the owner links nothing beyond the picks, and from an owner
|
|
23699
|
+
* older than D655.
|
|
23700
|
+
*/
|
|
23701
|
+
impliedSources: external_exports.array(ExtensionSlotSourceSchema).optional()
|
|
23702
|
+
});
|
|
23703
|
+
var ExtensionSlotUnreachableSchema = external_exports.object({
|
|
23704
|
+
state: external_exports.literal("unreachable"),
|
|
23705
|
+
addonId: external_exports.string(),
|
|
23706
|
+
reason: external_exports.string()
|
|
23707
|
+
});
|
|
23708
|
+
var ExtensionSlotRowSchema = external_exports.discriminatedUnion("state", [ExtensionSlotStateSchema, ExtensionSlotUnreachableSchema]);
|
|
23709
|
+
var ExtensionCandidateSchema = external_exports.object({
|
|
23710
|
+
deviceId: external_exports.number().int(),
|
|
23711
|
+
name: external_exports.string(),
|
|
23712
|
+
type: external_exports.string(),
|
|
23713
|
+
location: external_exports.string().nullable(),
|
|
23714
|
+
/** The container a child belongs to — "Spotlight 2" alone does not say which. */
|
|
23715
|
+
parentName: external_exports.string().nullable(),
|
|
23716
|
+
/** Pre-marked by the owner's suggestion rule. NEVER saved on its own (D356). */
|
|
23717
|
+
suggested: external_exports.boolean(),
|
|
23718
|
+
/** Why it is suggested ("same location"), null when it is not. */
|
|
23719
|
+
reason: external_exports.string().nullable()
|
|
23720
|
+
});
|
|
23721
|
+
var ExtensionCandidatesSchema = external_exports.object({ candidates: external_exports.array(ExtensionCandidateSchema) });
|
|
23722
|
+
var ExtensionSetResultSchema = external_exports.object({
|
|
23723
|
+
applied: external_exports.literal(true),
|
|
23724
|
+
reload: external_exports.enum([
|
|
23725
|
+
"none",
|
|
23726
|
+
"host",
|
|
23727
|
+
"parent"
|
|
23728
|
+
])
|
|
23729
|
+
});
|
|
23730
|
+
var ExtensionSlotRefInputSchema = external_exports.object({
|
|
23731
|
+
deviceId: external_exports.number().int(),
|
|
23732
|
+
slotRef: external_exports.string().min(1)
|
|
23733
|
+
});
|
|
23734
|
+
var ExtensionSetSlotInputSchema = ExtensionSlotRefInputSchema.extend({ value: ExtensionSlotValueSchema });
|
|
23735
|
+
var deviceExtensionCapability = {
|
|
23736
|
+
name: "device-extension",
|
|
23737
|
+
scope: "device",
|
|
23738
|
+
mode: "collection",
|
|
23739
|
+
kind: "wrapper",
|
|
23740
|
+
defaultActive: true,
|
|
23741
|
+
deviceTypes: EXTENSION_HOST_DEVICE_TYPES,
|
|
23742
|
+
deviceConfig: { ui: {
|
|
23743
|
+
kind: "widget",
|
|
23744
|
+
widgetId: "host/extensions-panel",
|
|
23745
|
+
tab: "general",
|
|
23746
|
+
label: "Extensions",
|
|
23747
|
+
order: 72
|
|
23748
|
+
} },
|
|
23749
|
+
methods: {
|
|
23750
|
+
/** One row per slot owner — the D554 source listing `slotRef` routes by. */
|
|
23751
|
+
listSources: method(external_exports.object({ deviceId: external_exports.number().int() }), external_exports.array(ExtensionSourceSchema)),
|
|
23752
|
+
/**
|
|
23753
|
+
* Every slot this device is offered, read by each owner from its own
|
|
23754
|
+
* store. A provider that throws is ONE `unreachable` row (D554.4).
|
|
23755
|
+
*/
|
|
23756
|
+
listSlots: method(external_exports.object({ deviceId: external_exports.number().int() }), external_exports.array(ExtensionSlotRowSchema)),
|
|
23757
|
+
/** The devices the slot's editor may offer, suggestions pre-marked (D356). */
|
|
23758
|
+
listCandidates: method(ExtensionSlotRefInputSchema, ExtensionCandidatesSchema),
|
|
23759
|
+
/**
|
|
23760
|
+
* Write one slot through its owner's EXISTING write path. The owner
|
|
23761
|
+
* validates (a container is never a linked device, a camera is never its
|
|
23762
|
+
* own source) and refuses by name before persisting.
|
|
23763
|
+
*/
|
|
23764
|
+
setSlot: method(ExtensionSetSlotInputSchema, ExtensionSetResultSchema, {
|
|
23765
|
+
kind: "mutation",
|
|
23766
|
+
auth: "admin"
|
|
23767
|
+
})
|
|
23768
|
+
}
|
|
23769
|
+
};
|
|
23362
23770
|
var FieldClaimModeSchema = external_exports.enum(["replace", "add"]);
|
|
23363
23771
|
var ClaimOutcomeSchema = external_exports.discriminatedUnion("ok", [external_exports.object({
|
|
23364
23772
|
ok: external_exports.literal(true),
|
|
@@ -26155,9 +26563,11 @@ var NcScheduleSchema = external_exports.object({
|
|
|
26155
26563
|
invert: external_exports.boolean().optional()
|
|
26156
26564
|
});
|
|
26157
26565
|
var NcSystemEventDeliveryModeSchema = external_exports.enum(["instant", "summary"]);
|
|
26566
|
+
var NcStateSummarySplitSchema = external_exports.enum(["rule", "section"]);
|
|
26158
26567
|
var NcSystemEventDeliverySchema = external_exports.discriminatedUnion("mode", [external_exports.object({ mode: external_exports.literal("instant") }), external_exports.object({
|
|
26159
26568
|
mode: external_exports.literal("summary"),
|
|
26160
|
-
schedule: NcScheduleSchema
|
|
26569
|
+
schedule: NcScheduleSchema,
|
|
26570
|
+
split: NcStateSummarySplitSchema.optional()
|
|
26161
26571
|
})]);
|
|
26162
26572
|
var NcPlateMatcherSchema = external_exports.object({
|
|
26163
26573
|
/**
|
|
@@ -26213,8 +26623,14 @@ var NcCrossingSchema = external_exports.enum([
|
|
|
26213
26623
|
var NcSensorTransitionSchema = external_exports.enum(["raised", "cleared"]);
|
|
26214
26624
|
var NcZoneConditionSchema = external_exports.object({
|
|
26215
26625
|
ids: external_exports.array(external_exports.string().min(1)).min(1),
|
|
26216
|
-
/**
|
|
26217
|
-
|
|
26626
|
+
/**
|
|
26627
|
+
* LEGACY quantifier over `ids`. Absent = `any` (at least one visited), which
|
|
26628
|
+
* is what both editors mean and all they write since D690: "all of" was
|
|
26629
|
+
* removed from the editors because on an immediate rule it asked one
|
|
26630
|
+
* detection to stand in every zone at once. Still ACCEPTED, and `all` still
|
|
26631
|
+
* evaluated, so a stored rule keeps parsing and meaning what it meant.
|
|
26632
|
+
*/
|
|
26633
|
+
match: external_exports.enum(["any", "all"]).optional()
|
|
26218
26634
|
});
|
|
26219
26635
|
var NcRuleActionSchema = external_exports.discriminatedUnion("kind", [external_exports.object({
|
|
26220
26636
|
kind: external_exports.literal("wait"),
|
|
@@ -26583,8 +26999,11 @@ var NcThrottleSchema = external_exports.object({
|
|
|
26583
26999
|
/**
|
|
26584
27000
|
* Class granularity of the cooldown key. Optional rather than defaulted:
|
|
26585
27001
|
* a Zod default does NOT run on the addon→addon cap path, so a persisted
|
|
26586
|
-
* rule authored before this field simply carries none
|
|
26587
|
-
*
|
|
27002
|
+
* rule authored before this field simply carries none. The engine used to
|
|
27003
|
+
* read absent as `shared` (D36); since 2026-10-01 it reads absent as
|
|
27004
|
+
* `per-class` — the operator's default — and only an explicit `shared`
|
|
27005
|
+
* still means `shared`. See `cooldownKey` / `keysPerClass` in the rule
|
|
27006
|
+
* engine, and D36's dated note.
|
|
26588
27007
|
*/
|
|
26589
27008
|
granularity: NcThrottleGranularitySchema.optional()
|
|
26590
27009
|
});
|
|
@@ -26867,13 +27286,22 @@ var NcStateSummaryPreviewSectionSchema = external_exports.object({
|
|
|
26867
27286
|
items: external_exports.number().int().nonnegative(),
|
|
26868
27287
|
reason: external_exports.string().optional()
|
|
26869
27288
|
});
|
|
27289
|
+
var NcStateSummaryPreviewRowSchema = external_exports.object({
|
|
27290
|
+
section: external_exports.string().optional(),
|
|
27291
|
+
/** The section's name on a per-section row; every reported section's, joined, on a combined one. */
|
|
27292
|
+
title: external_exports.string(),
|
|
27293
|
+
text: external_exports.string(),
|
|
27294
|
+
count: external_exports.number().int().nonnegative()
|
|
27295
|
+
});
|
|
26870
27296
|
var NcStateSummaryPreviewSchema = external_exports.object({
|
|
26871
27297
|
empty: external_exports.boolean(),
|
|
26872
27298
|
count: external_exports.number().int().nonnegative(),
|
|
26873
27299
|
text: external_exports.string(),
|
|
26874
27300
|
sections: external_exports.array(NcStateSummaryPreviewSectionSchema),
|
|
26875
27301
|
dropped: external_exports.record(external_exports.string(), external_exports.number().int().nonnegative()),
|
|
26876
|
-
excludedGroups: external_exports.array(external_exports.string())
|
|
27302
|
+
excludedGroups: external_exports.array(external_exports.string()),
|
|
27303
|
+
split: NcStateSummarySplitSchema.optional(),
|
|
27304
|
+
rows: external_exports.array(NcStateSummaryPreviewRowSchema).optional()
|
|
26877
27305
|
});
|
|
26878
27306
|
var NcTestResultSchema = external_exports.object({
|
|
26879
27307
|
recordId: external_exports.string(),
|
|
@@ -29361,13 +29789,19 @@ var pipelineAnalyticsCapability = {
|
|
|
29361
29789
|
*
|
|
29362
29790
|
* Operator-driven from the DI Events page (batch delete). Routes through
|
|
29363
29791
|
* the same widened track-deletion cascade (design §5.2).
|
|
29792
|
+
*
|
|
29793
|
+
* `sparedMediaIds` (D683 Task 14): media rows the cascade LEFT because a
|
|
29794
|
+
* live stationary entry vouches for them (its key frame, owned by a track
|
|
29795
|
+
* that moved and was kept). Released when the entry retires. Optional:
|
|
29796
|
+
* absent from a provider that predates it.
|
|
29364
29797
|
*/
|
|
29365
29798
|
deleteTracks: method(external_exports.object({
|
|
29366
29799
|
deviceId: external_exports.number(),
|
|
29367
29800
|
trackIds: external_exports.array(external_exports.string()).min(1)
|
|
29368
29801
|
}), external_exports.object({
|
|
29369
29802
|
deleted: external_exports.number().int(),
|
|
29370
|
-
failed: external_exports.array(external_exports.string()).readonly()
|
|
29803
|
+
failed: external_exports.array(external_exports.string()).readonly(),
|
|
29804
|
+
sparedMediaIds: external_exports.array(external_exports.number().int()).readonly().optional()
|
|
29371
29805
|
}), {
|
|
29372
29806
|
kind: "mutation",
|
|
29373
29807
|
auth: "admin"
|
|
@@ -29450,6 +29884,25 @@ var pipelineAnalyticsCapability = {
|
|
|
29450
29884
|
*/
|
|
29451
29885
|
listArchivedDebugNotes: method(ArchivedDebugNoteQueryInputSchema, external_exports.array(ArchivedDebugNoteSchema).readonly(), { kind: "query" }),
|
|
29452
29886
|
/**
|
|
29887
|
+
* Tracking-bench ground truth (D681): "this track and that one are the
|
|
29888
|
+
* same subject" / "different subjects". One row per unordered pair —
|
|
29889
|
+
* re-marking replaces it — and a mark that contradicts an existing chain
|
|
29890
|
+
* is REFUSED with the chain named. Writing a mark also sets `debug` on
|
|
29891
|
+
* both tracks. `protected`, matching `setTrackFlags`: marking is done from
|
|
29892
|
+
* the viewer's track detail by an authenticated non-admin session.
|
|
29893
|
+
*/
|
|
29894
|
+
setTrackRelation: method(SetTrackRelationInputSchema, TrackRelationSchema, { kind: "mutation" }),
|
|
29895
|
+
/** Remove the mark between two tracks. */
|
|
29896
|
+
clearTrackRelation: method(ClearTrackRelationInputSchema, ClearTrackRelationResultSchema, { kind: "mutation" }),
|
|
29897
|
+
/**
|
|
29898
|
+
* A track that is not ONE subject: `mixed` (two subjects, optionally
|
|
29899
|
+
* switching at `switchAtMs`) or `not-a-subject`. `pure` clears the mark
|
|
29900
|
+
* and answers `{ purity: null }` (D681).
|
|
29901
|
+
*/
|
|
29902
|
+
setTrackPurity: method(SetTrackPurityInputSchema, SetTrackPurityResultSchema, { kind: "mutation" }),
|
|
29903
|
+
/** A camera's marks, optionally one track's, windowed by track start. */
|
|
29904
|
+
listTrackRelations: method(ListTrackRelationsInputSchema, ListTrackRelationsResultSchema, { kind: "query" }),
|
|
29905
|
+
/**
|
|
29453
29906
|
* Birth decisions — one row per resolved confirmation-gate verdict (D409).
|
|
29454
29907
|
*
|
|
29455
29908
|
* The READ half of a measurement, and only that: it gates nothing and no
|
|
@@ -32214,6 +32667,32 @@ var NodeInferenceDevicesSchema = external_exports.object({
|
|
|
32214
32667
|
reachable: external_exports.boolean(),
|
|
32215
32668
|
devices: external_exports.array(NodeInferenceDeviceSchema).readonly()
|
|
32216
32669
|
});
|
|
32670
|
+
var SetCameraSensorsInputSchema = external_exports.object({
|
|
32671
|
+
deviceId: external_exports.number().int().nonnegative(),
|
|
32672
|
+
/** `null` removes the attachment: the camera goes back to `not-configured`. */
|
|
32673
|
+
config: CameraSensorsConfigSchema.nullable()
|
|
32674
|
+
});
|
|
32675
|
+
var OccupancyLookRefusalSchema = external_exports.enum([
|
|
32676
|
+
"unknown-camera",
|
|
32677
|
+
"out-of-range",
|
|
32678
|
+
"no-burst-producer",
|
|
32679
|
+
"already-looked"
|
|
32680
|
+
]);
|
|
32681
|
+
var OccupancyLookRequestSchema = external_exports.object({
|
|
32682
|
+
deviceId: external_exports.number().int().nonnegative(),
|
|
32683
|
+
/** How long from NOW until the pending flip's sustain window ends. RELATIVE,
|
|
32684
|
+
* so the caller's clock and the orchestrator's never have to agree. */
|
|
32685
|
+
afterMs: external_exports.number().finite(),
|
|
32686
|
+
/** Why, for the log. */
|
|
32687
|
+
reason: external_exports.string()
|
|
32688
|
+
});
|
|
32689
|
+
var OccupancyLookAnswerSchema = external_exports.object({
|
|
32690
|
+
scheduled: external_exports.boolean(),
|
|
32691
|
+
/** When `scheduled`: how long until the burst is dialled. */
|
|
32692
|
+
dueInMs: external_exports.number().optional(),
|
|
32693
|
+
/** When not `scheduled`: why. */
|
|
32694
|
+
refusedBecause: OccupancyLookRefusalSchema.optional()
|
|
32695
|
+
});
|
|
32217
32696
|
var pipelineOrchestratorCapability = {
|
|
32218
32697
|
name: "pipeline-orchestrator",
|
|
32219
32698
|
scope: "system",
|
|
@@ -32221,6 +32700,19 @@ var pipelineOrchestratorCapability = {
|
|
|
32221
32700
|
nodeIdMode: "data",
|
|
32222
32701
|
exposesDeviceSettings: true,
|
|
32223
32702
|
methods: {
|
|
32703
|
+
/**
|
|
32704
|
+
* D691 — an occupancy flip is pending on this camera and can commit
|
|
32705
|
+
* `afterMs` from now: dial ONE occupancy burst at the end of its sustain
|
|
32706
|
+
* window instead of leaving the commit to the 300 s parked-object cadence.
|
|
32707
|
+
* Called by the notification centre, the only component that knows a flip
|
|
32708
|
+
* is pending; the dial is the recheck's own (attach on the last session
|
|
32709
|
+
* node, `requestOccupancyBurst`, detach). One pending look per camera; a
|
|
32710
|
+
* session open at the due time is the look, and no burst is dialled.
|
|
32711
|
+
*/
|
|
32712
|
+
requestOccupancyLook: method(OccupancyLookRequestSchema, OccupancyLookAnswerSchema, {
|
|
32713
|
+
kind: "mutation",
|
|
32714
|
+
auth: "admin"
|
|
32715
|
+
}),
|
|
32224
32716
|
/** Internal storage-migration participant lease. While held, dispatch
|
|
32225
32717
|
* requests are accepted as pending but no new runner attachment starts. */
|
|
32226
32718
|
pauseForStorageMigration: method(StorageMigrationLeaseInputSchema, external_exports.object({ paused: external_exports.literal(true) }), {
|
|
@@ -32679,6 +33171,18 @@ var pipelineOrchestratorCapability = {
|
|
|
32679
33171
|
*/
|
|
32680
33172
|
getCameraStatuses: method(external_exports.object({ deviceIds: external_exports.array(external_exports.number()).optional() }), external_exports.array(CameraStatusSchema).readonly()),
|
|
32681
33173
|
/**
|
|
33174
|
+
* Attach sensors to a camera, or detach them with `config: null` (D672
|
|
33175
|
+
* configuration, G5/D676). Written to the orchestrator's per-device store
|
|
33176
|
+
* under the same key `applyDeviceSettingsPatch` writes, and announced as a
|
|
33177
|
+
* settings change so the camera-sensors bridge refreshes. Refused by name
|
|
33178
|
+
* — nothing written — for a device that cannot be read, does not exist,
|
|
33179
|
+
* is not a camera, or names itself as its own sensor.
|
|
33180
|
+
*/
|
|
33181
|
+
setCameraSensors: method(SetCameraSensorsInputSchema, external_exports.object({ success: external_exports.literal(true) }), {
|
|
33182
|
+
kind: "mutation",
|
|
33183
|
+
auth: "admin"
|
|
33184
|
+
}),
|
|
33185
|
+
/**
|
|
32682
33186
|
* Disk-wins fleet reconcile after a recordings wipe. Starts the walk in
|
|
32683
33187
|
* the addon process and returns immediately with the job snapshot — the
|
|
32684
33188
|
* work outlives the tRPC/UDS 60s timeout. Poll `getReconcileFromDiskStatus`.
|
|
@@ -34981,208 +35485,6 @@ var videoclipsCapability = {
|
|
|
34981
35485
|
})
|
|
34982
35486
|
}
|
|
34983
35487
|
};
|
|
34984
|
-
var DoorbellStatusSchema = external_exports.object({
|
|
34985
|
-
/** Ms epoch of the last press. null = never observed since this provider started. */
|
|
34986
|
-
lastPressedAt: external_exports.number().nullable(),
|
|
34987
|
-
/** Counter since provider start. Resets on reboot. Useful for metrics/debug. */
|
|
34988
|
-
pressCountSinceStart: external_exports.number()
|
|
34989
|
-
});
|
|
34990
|
-
var DoorbellPressEventSchema = external_exports.object({
|
|
34991
|
-
deviceId: external_exports.number(),
|
|
34992
|
-
timestamp: external_exports.number()
|
|
34993
|
-
});
|
|
34994
|
-
var DoorbellSourceSlotValueSchema = external_exports.object({ deviceIds: external_exports.array(external_exports.number().int().positive()) });
|
|
34995
|
-
var DOORBELL_SOURCE_SLOT = {
|
|
34996
|
-
id: "doorbell-source",
|
|
34997
|
-
label: "Doorbell trigger devices",
|
|
34998
|
-
description: "Any of these becoming active rings this camera's virtual doorbell: a binary sensor when it goes active, a switch when it turns on.",
|
|
34999
|
-
shape: "association",
|
|
35000
|
-
hostDeviceTypes: [DeviceType.Camera],
|
|
35001
|
-
sourceCaps: SOURCE_CAPS,
|
|
35002
|
-
cardinality: "many",
|
|
35003
|
-
value: DoorbellSourceSlotValueSchema
|
|
35004
|
-
};
|
|
35005
|
-
var doorbellCapability = {
|
|
35006
|
-
name: "doorbell",
|
|
35007
|
-
scope: "device",
|
|
35008
|
-
deviceNative: true,
|
|
35009
|
-
mode: "singleton",
|
|
35010
|
-
kind: "wrapper",
|
|
35011
|
-
defaultActive: false,
|
|
35012
|
-
deviceTypes: [DeviceType.Button, DeviceType.Camera],
|
|
35013
|
-
extensionSlots: [DOORBELL_SOURCE_SLOT],
|
|
35014
|
-
methods: {},
|
|
35015
|
-
events: {
|
|
35016
|
-
/**
|
|
35017
|
-
* Fires once per physical press. Reolink delivers via Baichuan
|
|
35018
|
-
* push (`ReolinkSimpleEvent.type === 'doorbell'`). There is no
|
|
35019
|
-
* release/duration — it's a pulse.
|
|
35020
|
-
*/
|
|
35021
|
-
onPressed: {
|
|
35022
|
-
data: DoorbellPressEventSchema,
|
|
35023
|
-
fromState: {
|
|
35024
|
-
field: "lastPressedAt",
|
|
35025
|
-
on: "advance"
|
|
35026
|
-
}
|
|
35027
|
-
}
|
|
35028
|
-
},
|
|
35029
|
-
status: {
|
|
35030
|
-
schema: DoorbellStatusSchema,
|
|
35031
|
-
kind: "push"
|
|
35032
|
-
},
|
|
35033
|
-
/**
|
|
35034
|
-
* Runtime-state slice — last press timestamp + lifetime press count.
|
|
35035
|
-
* Mirrored by the kernel and readable via
|
|
35036
|
-
* `device.state.doorbell.value`. UIs can show "last ring 5m ago"
|
|
35037
|
-
* without subscribing.
|
|
35038
|
-
*/
|
|
35039
|
-
runtimeState: DoorbellStatusSchema,
|
|
35040
|
-
/**
|
|
35041
|
-
* Runtime-state durability: **restored** — a monotonic accumulator: the slice IS the record. `lastPressedAt` is content here, not a clock, so it is deliberately NOT volatile.
|
|
35042
|
-
*
|
|
35043
|
-
* See `RuntimeStateDurability`. Enforced by
|
|
35044
|
-
* `scripts/check-runtime-state-durability.ts`.
|
|
35045
|
-
*/
|
|
35046
|
-
durability: "restored"
|
|
35047
|
-
};
|
|
35048
|
-
var EXTENSION_SLOT_IDS = ["doorbell-source", "linked-devices"];
|
|
35049
|
-
var ExtensionSlotIdSchema = external_exports.enum(EXTENSION_SLOT_IDS);
|
|
35050
|
-
var EXTENSION_SLOTS = {
|
|
35051
|
-
"doorbell-source": {
|
|
35052
|
-
descriptor: DOORBELL_SOURCE_SLOT,
|
|
35053
|
-
declaringCap: "doorbell",
|
|
35054
|
-
hostDeviceTypes: [DeviceType.Camera]
|
|
35055
|
-
},
|
|
35056
|
-
"linked-devices": {
|
|
35057
|
-
descriptor: LINKED_DEVICES_SLOT,
|
|
35058
|
-
declaringCap: "device-manager",
|
|
35059
|
-
hostDeviceTypes: [DeviceType.Camera]
|
|
35060
|
-
}
|
|
35061
|
-
};
|
|
35062
|
-
var ExtensionSlotValueSchema = external_exports.discriminatedUnion("slot", [DoorbellSourceSlotValueSchema.extend({ slot: external_exports.literal("doorbell-source") }), LinkedDevicesSlotValueSchema.extend({ slot: external_exports.literal("linked-devices") })]);
|
|
35063
|
-
var EXTENSION_HOST_DEVICE_TYPES = [DeviceType.Camera];
|
|
35064
|
-
var ExtensionSourceAvailabilitySchema = external_exports.discriminatedUnion("state", [external_exports.object({ state: external_exports.literal("ok") }), external_exports.object({
|
|
35065
|
-
state: external_exports.literal("unreachable"),
|
|
35066
|
-
reason: external_exports.string()
|
|
35067
|
-
})]);
|
|
35068
|
-
var ExtensionSourceSchema = external_exports.object({
|
|
35069
|
-
/** The routing prefix of every `slotRef` this provider serves. */
|
|
35070
|
-
source: external_exports.string(),
|
|
35071
|
-
label: external_exports.string(),
|
|
35072
|
-
/** Stamped by the dispatcher from the registry (D557). */
|
|
35073
|
-
addonId: external_exports.string().optional(),
|
|
35074
|
-
availability: ExtensionSourceAvailabilitySchema
|
|
35075
|
-
});
|
|
35076
|
-
var ExtensionSourceHealthSchema = external_exports.enum([
|
|
35077
|
-
"ok",
|
|
35078
|
-
"missing",
|
|
35079
|
-
"foreign",
|
|
35080
|
-
"unavailable"
|
|
35081
|
-
]);
|
|
35082
|
-
var ExtensionSlotSourceSchema = external_exports.object({
|
|
35083
|
-
deviceId: external_exports.number().int(),
|
|
35084
|
-
/** The device's name, or null when it could not be resolved (`missing`). */
|
|
35085
|
-
name: external_exports.string().nullable(),
|
|
35086
|
-
health: ExtensionSourceHealthSchema,
|
|
35087
|
-
detail: external_exports.string().optional()
|
|
35088
|
-
});
|
|
35089
|
-
var ExtensionSlotActivationSchema = external_exports.object({
|
|
35090
|
-
state: external_exports.enum([
|
|
35091
|
-
"active",
|
|
35092
|
-
"inactive",
|
|
35093
|
-
"unknown"
|
|
35094
|
-
]),
|
|
35095
|
-
authority: external_exports.string(),
|
|
35096
|
-
detail: external_exports.string().optional()
|
|
35097
|
-
});
|
|
35098
|
-
var ExtensionSlotStateSchema = external_exports.object({
|
|
35099
|
-
state: external_exports.literal("ok"),
|
|
35100
|
-
/** `<source>:<slotId>` — the routing key for `listCandidates` / `setSlot`. */
|
|
35101
|
-
slotRef: external_exports.string(),
|
|
35102
|
-
slot: ExtensionSlotIdSchema,
|
|
35103
|
-
/** Names the store written (D62), e.g. `virtual-doorbell:doorbellSources`. */
|
|
35104
|
-
authority: external_exports.string(),
|
|
35105
|
-
activation: ExtensionSlotActivationSchema.nullable(),
|
|
35106
|
-
value: ExtensionSlotValueSchema,
|
|
35107
|
-
sources: external_exports.array(ExtensionSlotSourceSchema),
|
|
35108
|
-
/**
|
|
35109
|
-
* Devices the owner links to the host ON ITS OWN, by structure, and that
|
|
35110
|
-
* are therefore not in `value` (D655): a camera's device-tree children, and
|
|
35111
|
-
* the child a picked container stands for (D356 — a container is never a
|
|
35112
|
-
* pick, its children are). Read-only; the editor shows them and may offer
|
|
35113
|
-
* per-device options on them (the linked-devices tracked-event opt-in).
|
|
35114
|
-
* Absent when the owner links nothing beyond the picks, and from an owner
|
|
35115
|
-
* older than D655.
|
|
35116
|
-
*/
|
|
35117
|
-
impliedSources: external_exports.array(ExtensionSlotSourceSchema).optional()
|
|
35118
|
-
});
|
|
35119
|
-
var ExtensionSlotUnreachableSchema = external_exports.object({
|
|
35120
|
-
state: external_exports.literal("unreachable"),
|
|
35121
|
-
addonId: external_exports.string(),
|
|
35122
|
-
reason: external_exports.string()
|
|
35123
|
-
});
|
|
35124
|
-
var ExtensionSlotRowSchema = external_exports.discriminatedUnion("state", [ExtensionSlotStateSchema, ExtensionSlotUnreachableSchema]);
|
|
35125
|
-
var ExtensionCandidateSchema = external_exports.object({
|
|
35126
|
-
deviceId: external_exports.number().int(),
|
|
35127
|
-
name: external_exports.string(),
|
|
35128
|
-
type: external_exports.string(),
|
|
35129
|
-
location: external_exports.string().nullable(),
|
|
35130
|
-
/** The container a child belongs to — "Spotlight 2" alone does not say which. */
|
|
35131
|
-
parentName: external_exports.string().nullable(),
|
|
35132
|
-
/** Pre-marked by the owner's suggestion rule. NEVER saved on its own (D356). */
|
|
35133
|
-
suggested: external_exports.boolean(),
|
|
35134
|
-
/** Why it is suggested ("same location"), null when it is not. */
|
|
35135
|
-
reason: external_exports.string().nullable()
|
|
35136
|
-
});
|
|
35137
|
-
var ExtensionCandidatesSchema = external_exports.object({ candidates: external_exports.array(ExtensionCandidateSchema) });
|
|
35138
|
-
var ExtensionSetResultSchema = external_exports.object({
|
|
35139
|
-
applied: external_exports.literal(true),
|
|
35140
|
-
reload: external_exports.enum([
|
|
35141
|
-
"none",
|
|
35142
|
-
"host",
|
|
35143
|
-
"parent"
|
|
35144
|
-
])
|
|
35145
|
-
});
|
|
35146
|
-
var ExtensionSlotRefInputSchema = external_exports.object({
|
|
35147
|
-
deviceId: external_exports.number().int(),
|
|
35148
|
-
slotRef: external_exports.string().min(1)
|
|
35149
|
-
});
|
|
35150
|
-
var ExtensionSetSlotInputSchema = ExtensionSlotRefInputSchema.extend({ value: ExtensionSlotValueSchema });
|
|
35151
|
-
var deviceExtensionCapability = {
|
|
35152
|
-
name: "device-extension",
|
|
35153
|
-
scope: "device",
|
|
35154
|
-
mode: "collection",
|
|
35155
|
-
kind: "wrapper",
|
|
35156
|
-
defaultActive: true,
|
|
35157
|
-
deviceTypes: EXTENSION_HOST_DEVICE_TYPES,
|
|
35158
|
-
deviceConfig: { ui: {
|
|
35159
|
-
kind: "widget",
|
|
35160
|
-
widgetId: "host/extensions-panel",
|
|
35161
|
-
tab: "general",
|
|
35162
|
-
label: "Extensions",
|
|
35163
|
-
order: 72
|
|
35164
|
-
} },
|
|
35165
|
-
methods: {
|
|
35166
|
-
/** One row per slot owner — the D554 source listing `slotRef` routes by. */
|
|
35167
|
-
listSources: method(external_exports.object({ deviceId: external_exports.number().int() }), external_exports.array(ExtensionSourceSchema)),
|
|
35168
|
-
/**
|
|
35169
|
-
* Every slot this device is offered, read by each owner from its own
|
|
35170
|
-
* store. A provider that throws is ONE `unreachable` row (D554.4).
|
|
35171
|
-
*/
|
|
35172
|
-
listSlots: method(external_exports.object({ deviceId: external_exports.number().int() }), external_exports.array(ExtensionSlotRowSchema)),
|
|
35173
|
-
/** The devices the slot's editor may offer, suggestions pre-marked (D356). */
|
|
35174
|
-
listCandidates: method(ExtensionSlotRefInputSchema, ExtensionCandidatesSchema),
|
|
35175
|
-
/**
|
|
35176
|
-
* Write one slot through its owner's EXISTING write path. The owner
|
|
35177
|
-
* validates (a container is never a linked device, a camera is never its
|
|
35178
|
-
* own source) and refuses by name before persisting.
|
|
35179
|
-
*/
|
|
35180
|
-
setSlot: method(ExtensionSetSlotInputSchema, ExtensionSetResultSchema, {
|
|
35181
|
-
kind: "mutation",
|
|
35182
|
-
auth: "admin"
|
|
35183
|
-
})
|
|
35184
|
-
}
|
|
35185
|
-
};
|
|
35186
35488
|
var webrtcClientHintsSchema = external_exports.object({
|
|
35187
35489
|
viewportWidth: external_exports.number().int().positive().optional(),
|
|
35188
35490
|
viewportHeight: external_exports.number().int().positive().optional(),
|
|
@@ -45352,49 +45654,232 @@ var PIPELINE_OWNER_CAPABILITY_NAMES = [
|
|
|
45352
45654
|
"pipeline-orchestrator",
|
|
45353
45655
|
"pipeline-runner"
|
|
45354
45656
|
];
|
|
45355
|
-
var
|
|
45356
|
-
|
|
45357
|
-
|
|
45358
|
-
|
|
45359
|
-
|
|
45360
|
-
kind: "fixed",
|
|
45361
|
-
result: ["boolean"]
|
|
45362
|
-
};
|
|
45363
|
-
var BUILTIN_RESULT_KINDS = Object.freeze({
|
|
45364
|
-
min: NUMBER,
|
|
45365
|
-
max: NUMBER,
|
|
45366
|
-
abs: NUMBER,
|
|
45367
|
-
floor: NUMBER,
|
|
45368
|
-
ceil: NUMBER,
|
|
45369
|
-
sqrt: NUMBER,
|
|
45370
|
-
round: NUMBER,
|
|
45371
|
-
pow: NUMBER,
|
|
45372
|
-
clamp: NUMBER,
|
|
45373
|
-
avg: NUMBER,
|
|
45374
|
-
sum: NUMBER,
|
|
45375
|
-
age: NUMBER,
|
|
45376
|
-
convert: NUMBER,
|
|
45377
|
-
coalesce: { kind: "coalesce" },
|
|
45378
|
-
any: BOOLEAN,
|
|
45379
|
-
all: BOOLEAN,
|
|
45380
|
-
within: BOOLEAN,
|
|
45381
|
-
latest: {
|
|
45382
|
-
kind: "fixed",
|
|
45383
|
-
result: ["number", "null"]
|
|
45657
|
+
var UNIT_TABLE = {
|
|
45658
|
+
"\xB0C": {
|
|
45659
|
+
dimension: "temperature",
|
|
45660
|
+
factor: 1,
|
|
45661
|
+
offset: 0
|
|
45384
45662
|
},
|
|
45385
|
-
|
|
45386
|
-
|
|
45387
|
-
|
|
45663
|
+
"\xB0F": {
|
|
45664
|
+
dimension: "temperature",
|
|
45665
|
+
factor: 5 / 9,
|
|
45666
|
+
offset: -160 / 9
|
|
45388
45667
|
},
|
|
45389
|
-
|
|
45390
|
-
|
|
45391
|
-
|
|
45668
|
+
K: {
|
|
45669
|
+
dimension: "temperature",
|
|
45670
|
+
factor: 1,
|
|
45671
|
+
offset: -273.15
|
|
45392
45672
|
},
|
|
45393
|
-
|
|
45394
|
-
|
|
45395
|
-
|
|
45396
|
-
|
|
45397
|
-
|
|
45673
|
+
hPa: {
|
|
45674
|
+
dimension: "pressure",
|
|
45675
|
+
factor: 1,
|
|
45676
|
+
offset: 0
|
|
45677
|
+
},
|
|
45678
|
+
kPa: {
|
|
45679
|
+
dimension: "pressure",
|
|
45680
|
+
factor: 10,
|
|
45681
|
+
offset: 0
|
|
45682
|
+
},
|
|
45683
|
+
Pa: {
|
|
45684
|
+
dimension: "pressure",
|
|
45685
|
+
factor: 0.01,
|
|
45686
|
+
offset: 0
|
|
45687
|
+
},
|
|
45688
|
+
mbar: {
|
|
45689
|
+
dimension: "pressure",
|
|
45690
|
+
factor: 1,
|
|
45691
|
+
offset: 0
|
|
45692
|
+
},
|
|
45693
|
+
bar: {
|
|
45694
|
+
dimension: "pressure",
|
|
45695
|
+
factor: 1e3,
|
|
45696
|
+
offset: 0
|
|
45697
|
+
},
|
|
45698
|
+
inHg: {
|
|
45699
|
+
dimension: "pressure",
|
|
45700
|
+
factor: 33.8639,
|
|
45701
|
+
offset: 0
|
|
45702
|
+
},
|
|
45703
|
+
mmHg: {
|
|
45704
|
+
dimension: "pressure",
|
|
45705
|
+
factor: 1.33322,
|
|
45706
|
+
offset: 0
|
|
45707
|
+
},
|
|
45708
|
+
psi: {
|
|
45709
|
+
dimension: "pressure",
|
|
45710
|
+
factor: 68.9476,
|
|
45711
|
+
offset: 0
|
|
45712
|
+
},
|
|
45713
|
+
"m/s": {
|
|
45714
|
+
dimension: "speed",
|
|
45715
|
+
factor: 1,
|
|
45716
|
+
offset: 0
|
|
45717
|
+
},
|
|
45718
|
+
"km/h": {
|
|
45719
|
+
dimension: "speed",
|
|
45720
|
+
factor: 1 / 3.6,
|
|
45721
|
+
offset: 0
|
|
45722
|
+
},
|
|
45723
|
+
mph: {
|
|
45724
|
+
dimension: "speed",
|
|
45725
|
+
factor: 0.44704,
|
|
45726
|
+
offset: 0
|
|
45727
|
+
},
|
|
45728
|
+
kn: {
|
|
45729
|
+
dimension: "speed",
|
|
45730
|
+
factor: 0.514444,
|
|
45731
|
+
offset: 0
|
|
45732
|
+
},
|
|
45733
|
+
"mm/h": {
|
|
45734
|
+
dimension: "precipitation-rate",
|
|
45735
|
+
factor: 1,
|
|
45736
|
+
offset: 0
|
|
45737
|
+
},
|
|
45738
|
+
"in/h": {
|
|
45739
|
+
dimension: "precipitation-rate",
|
|
45740
|
+
factor: 25.4,
|
|
45741
|
+
offset: 0
|
|
45742
|
+
},
|
|
45743
|
+
m: {
|
|
45744
|
+
dimension: "length",
|
|
45745
|
+
factor: 1,
|
|
45746
|
+
offset: 0
|
|
45747
|
+
},
|
|
45748
|
+
mm: {
|
|
45749
|
+
dimension: "length",
|
|
45750
|
+
factor: 1e-3,
|
|
45751
|
+
offset: 0
|
|
45752
|
+
},
|
|
45753
|
+
cm: {
|
|
45754
|
+
dimension: "length",
|
|
45755
|
+
factor: 0.01,
|
|
45756
|
+
offset: 0
|
|
45757
|
+
},
|
|
45758
|
+
km: {
|
|
45759
|
+
dimension: "length",
|
|
45760
|
+
factor: 1e3,
|
|
45761
|
+
offset: 0
|
|
45762
|
+
},
|
|
45763
|
+
in: {
|
|
45764
|
+
dimension: "length",
|
|
45765
|
+
factor: 0.0254,
|
|
45766
|
+
offset: 0
|
|
45767
|
+
},
|
|
45768
|
+
ft: {
|
|
45769
|
+
dimension: "length",
|
|
45770
|
+
factor: 0.3048,
|
|
45771
|
+
offset: 0
|
|
45772
|
+
},
|
|
45773
|
+
mi: {
|
|
45774
|
+
dimension: "length",
|
|
45775
|
+
factor: 1609.344,
|
|
45776
|
+
offset: 0
|
|
45777
|
+
},
|
|
45778
|
+
lx: {
|
|
45779
|
+
dimension: "illuminance",
|
|
45780
|
+
factor: 1,
|
|
45781
|
+
offset: 0
|
|
45782
|
+
},
|
|
45783
|
+
"W/m\xB2": {
|
|
45784
|
+
dimension: "irradiance",
|
|
45785
|
+
factor: 1,
|
|
45786
|
+
offset: 0
|
|
45787
|
+
},
|
|
45788
|
+
W: {
|
|
45789
|
+
dimension: "power",
|
|
45790
|
+
factor: 1,
|
|
45791
|
+
offset: 0
|
|
45792
|
+
},
|
|
45793
|
+
kW: {
|
|
45794
|
+
dimension: "power",
|
|
45795
|
+
factor: 1e3,
|
|
45796
|
+
offset: 0
|
|
45797
|
+
},
|
|
45798
|
+
VA: {
|
|
45799
|
+
dimension: "apparent-power",
|
|
45800
|
+
factor: 1,
|
|
45801
|
+
offset: 0
|
|
45802
|
+
},
|
|
45803
|
+
Wh: {
|
|
45804
|
+
dimension: "energy",
|
|
45805
|
+
factor: 1,
|
|
45806
|
+
offset: 0
|
|
45807
|
+
},
|
|
45808
|
+
kWh: {
|
|
45809
|
+
dimension: "energy",
|
|
45810
|
+
factor: 1e3,
|
|
45811
|
+
offset: 0
|
|
45812
|
+
},
|
|
45813
|
+
MWh: {
|
|
45814
|
+
dimension: "energy",
|
|
45815
|
+
factor: 1e6,
|
|
45816
|
+
offset: 0
|
|
45817
|
+
},
|
|
45818
|
+
V: {
|
|
45819
|
+
dimension: "voltage",
|
|
45820
|
+
factor: 1,
|
|
45821
|
+
offset: 0
|
|
45822
|
+
},
|
|
45823
|
+
mV: {
|
|
45824
|
+
dimension: "voltage",
|
|
45825
|
+
factor: 1e-3,
|
|
45826
|
+
offset: 0
|
|
45827
|
+
},
|
|
45828
|
+
A: {
|
|
45829
|
+
dimension: "current",
|
|
45830
|
+
factor: 1,
|
|
45831
|
+
offset: 0
|
|
45832
|
+
},
|
|
45833
|
+
mA: {
|
|
45834
|
+
dimension: "current",
|
|
45835
|
+
factor: 1e-3,
|
|
45836
|
+
offset: 0
|
|
45837
|
+
},
|
|
45838
|
+
ppm: {
|
|
45839
|
+
dimension: "concentration-volume",
|
|
45840
|
+
factor: 1,
|
|
45841
|
+
offset: 0
|
|
45842
|
+
},
|
|
45843
|
+
ppb: {
|
|
45844
|
+
dimension: "concentration-volume",
|
|
45845
|
+
factor: 1e-3,
|
|
45846
|
+
offset: 0
|
|
45847
|
+
},
|
|
45848
|
+
"\xB5g/m\xB3": {
|
|
45849
|
+
dimension: "concentration-mass",
|
|
45850
|
+
factor: 1,
|
|
45851
|
+
offset: 0
|
|
45852
|
+
},
|
|
45853
|
+
"mg/m\xB3": {
|
|
45854
|
+
dimension: "concentration-mass",
|
|
45855
|
+
factor: 1e3,
|
|
45856
|
+
offset: 0
|
|
45857
|
+
},
|
|
45858
|
+
kg: {
|
|
45859
|
+
dimension: "mass",
|
|
45860
|
+
factor: 1,
|
|
45861
|
+
offset: 0
|
|
45862
|
+
},
|
|
45863
|
+
g: {
|
|
45864
|
+
dimension: "mass",
|
|
45865
|
+
factor: 1e-3,
|
|
45866
|
+
offset: 0
|
|
45867
|
+
},
|
|
45868
|
+
lb: {
|
|
45869
|
+
dimension: "mass",
|
|
45870
|
+
factor: 0.453592,
|
|
45871
|
+
offset: 0
|
|
45872
|
+
},
|
|
45873
|
+
oz: {
|
|
45874
|
+
dimension: "mass",
|
|
45875
|
+
factor: 0.0283495,
|
|
45876
|
+
offset: 0
|
|
45877
|
+
},
|
|
45878
|
+
"%": {
|
|
45879
|
+
dimension: "percentage",
|
|
45880
|
+
factor: 1,
|
|
45881
|
+
offset: 0
|
|
45882
|
+
}
|
|
45398
45883
|
};
|
|
45399
45884
|
var HF_REPO = "camstack/camstack-models";
|
|
45400
45885
|
var HF_BASE_URL = `https://huggingface.co/${HF_REPO}/resolve/main`;
|
|
@@ -47837,6 +48322,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
47837
48322
|
addonId: null,
|
|
47838
48323
|
access: "view"
|
|
47839
48324
|
},
|
|
48325
|
+
"coreBlocks.listComposableCaps": {
|
|
48326
|
+
capName: "core-blocks",
|
|
48327
|
+
capScope: "system",
|
|
48328
|
+
addonId: null,
|
|
48329
|
+
access: "view"
|
|
48330
|
+
},
|
|
47840
48331
|
"coreBlocks.listCompositions": {
|
|
47841
48332
|
capName: "core-blocks",
|
|
47842
48333
|
capScope: "system",
|
|
@@ -47915,6 +48406,18 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
47915
48406
|
addonId: null,
|
|
47916
48407
|
access: "view"
|
|
47917
48408
|
},
|
|
48409
|
+
"databaseSnapshot.listDatabases": {
|
|
48410
|
+
capName: "database-snapshot",
|
|
48411
|
+
capScope: "system",
|
|
48412
|
+
addonId: null,
|
|
48413
|
+
access: "view"
|
|
48414
|
+
},
|
|
48415
|
+
"databaseSnapshot.writeSnapshot": {
|
|
48416
|
+
capName: "database-snapshot",
|
|
48417
|
+
capScope: "system",
|
|
48418
|
+
addonId: null,
|
|
48419
|
+
access: "create"
|
|
48420
|
+
},
|
|
47918
48421
|
"dataStoreProvider.aggregate": {
|
|
47919
48422
|
capName: "data-store-provider",
|
|
47920
48423
|
capScope: "system",
|
|
@@ -50651,6 +51154,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
50651
51154
|
addonId: null,
|
|
50652
51155
|
access: "create"
|
|
50653
51156
|
},
|
|
51157
|
+
"pipelineAnalytics.clearTrackRelation": {
|
|
51158
|
+
capName: "pipeline-analytics",
|
|
51159
|
+
capScope: "device",
|
|
51160
|
+
addonId: null,
|
|
51161
|
+
access: "delete"
|
|
51162
|
+
},
|
|
50654
51163
|
"pipelineAnalytics.clearTracks": {
|
|
50655
51164
|
capName: "pipeline-analytics",
|
|
50656
51165
|
capScope: "device",
|
|
@@ -50903,6 +51412,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
50903
51412
|
addonId: null,
|
|
50904
51413
|
access: "view"
|
|
50905
51414
|
},
|
|
51415
|
+
"pipelineAnalytics.listTrackRelations": {
|
|
51416
|
+
capName: "pipeline-analytics",
|
|
51417
|
+
capScope: "device",
|
|
51418
|
+
addonId: null,
|
|
51419
|
+
access: "view"
|
|
51420
|
+
},
|
|
50906
51421
|
"pipelineAnalytics.listTracks": {
|
|
50907
51422
|
capName: "pipeline-analytics",
|
|
50908
51423
|
capScope: "device",
|
|
@@ -51017,6 +51532,18 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
51017
51532
|
addonId: null,
|
|
51018
51533
|
access: "create"
|
|
51019
51534
|
},
|
|
51535
|
+
"pipelineAnalytics.setTrackPurity": {
|
|
51536
|
+
capName: "pipeline-analytics",
|
|
51537
|
+
capScope: "device",
|
|
51538
|
+
addonId: null,
|
|
51539
|
+
access: "create"
|
|
51540
|
+
},
|
|
51541
|
+
"pipelineAnalytics.setTrackRelation": {
|
|
51542
|
+
capName: "pipeline-analytics",
|
|
51543
|
+
capScope: "device",
|
|
51544
|
+
addonId: null,
|
|
51545
|
+
access: "create"
|
|
51546
|
+
},
|
|
51020
51547
|
"pipelineAnalytics.startStorageMigrationMove": {
|
|
51021
51548
|
capName: "pipeline-analytics",
|
|
51022
51549
|
capScope: "device",
|
|
@@ -51455,6 +51982,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
51455
51982
|
addonId: null,
|
|
51456
51983
|
access: "delete"
|
|
51457
51984
|
},
|
|
51985
|
+
"pipelineOrchestrator.requestOccupancyLook": {
|
|
51986
|
+
capName: "pipeline-orchestrator",
|
|
51987
|
+
capScope: "system",
|
|
51988
|
+
addonId: null,
|
|
51989
|
+
access: "create"
|
|
51990
|
+
},
|
|
51458
51991
|
"pipelineOrchestrator.resetNodePipelineDefaults": {
|
|
51459
51992
|
capName: "pipeline-orchestrator",
|
|
51460
51993
|
capScope: "system",
|
|
@@ -51521,6 +52054,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
51521
52054
|
addonId: null,
|
|
51522
52055
|
access: "create"
|
|
51523
52056
|
},
|
|
52057
|
+
"pipelineOrchestrator.setCameraSensors": {
|
|
52058
|
+
capName: "pipeline-orchestrator",
|
|
52059
|
+
capScope: "system",
|
|
52060
|
+
addonId: null,
|
|
52061
|
+
access: "create"
|
|
52062
|
+
},
|
|
51524
52063
|
"pipelineOrchestrator.setCameraStepOverride": {
|
|
51525
52064
|
capName: "pipeline-orchestrator",
|
|
51526
52065
|
capScope: "system",
|
|
@@ -54931,6 +55470,11 @@ var METHOD_DEVICE_SELECTORS = Object.freeze({
|
|
|
54931
55470
|
form: "single",
|
|
54932
55471
|
optional: false
|
|
54933
55472
|
}],
|
|
55473
|
+
"pipelineAnalytics.clearTrackRelation": [{
|
|
55474
|
+
name: "deviceId",
|
|
55475
|
+
form: "single",
|
|
55476
|
+
optional: false
|
|
55477
|
+
}],
|
|
54934
55478
|
"pipelineAnalytics.clearTracks": [{
|
|
54935
55479
|
name: "deviceId",
|
|
54936
55480
|
form: "single",
|
|
@@ -55081,6 +55625,11 @@ var METHOD_DEVICE_SELECTORS = Object.freeze({
|
|
|
55081
55625
|
form: "single",
|
|
55082
55626
|
optional: false
|
|
55083
55627
|
}],
|
|
55628
|
+
"pipelineAnalytics.listTrackRelations": [{
|
|
55629
|
+
name: "deviceId",
|
|
55630
|
+
form: "single",
|
|
55631
|
+
optional: false
|
|
55632
|
+
}],
|
|
55084
55633
|
"pipelineAnalytics.listTracks": [{
|
|
55085
55634
|
name: "deviceId",
|
|
55086
55635
|
form: "single",
|
|
@@ -55151,6 +55700,16 @@ var METHOD_DEVICE_SELECTORS = Object.freeze({
|
|
|
55151
55700
|
form: "single",
|
|
55152
55701
|
optional: false
|
|
55153
55702
|
}],
|
|
55703
|
+
"pipelineAnalytics.setTrackPurity": [{
|
|
55704
|
+
name: "deviceId",
|
|
55705
|
+
form: "single",
|
|
55706
|
+
optional: false
|
|
55707
|
+
}],
|
|
55708
|
+
"pipelineAnalytics.setTrackRelation": [{
|
|
55709
|
+
name: "deviceId",
|
|
55710
|
+
form: "single",
|
|
55711
|
+
optional: false
|
|
55712
|
+
}],
|
|
55154
55713
|
"pipelineAnalytics.wipeAllAnalytics": [{
|
|
55155
55714
|
name: "deviceId",
|
|
55156
55715
|
form: "single",
|
|
@@ -55221,6 +55780,11 @@ var METHOD_DEVICE_SELECTORS = Object.freeze({
|
|
|
55221
55780
|
form: "single",
|
|
55222
55781
|
optional: false
|
|
55223
55782
|
}],
|
|
55783
|
+
"pipelineOrchestrator.requestOccupancyLook": [{
|
|
55784
|
+
name: "deviceId",
|
|
55785
|
+
form: "single",
|
|
55786
|
+
optional: false
|
|
55787
|
+
}],
|
|
55224
55788
|
"pipelineOrchestrator.resolvePipeline": [{
|
|
55225
55789
|
name: "deviceId",
|
|
55226
55790
|
form: "single",
|
|
@@ -55231,6 +55795,11 @@ var METHOD_DEVICE_SELECTORS = Object.freeze({
|
|
|
55231
55795
|
form: "single",
|
|
55232
55796
|
optional: false
|
|
55233
55797
|
}],
|
|
55798
|
+
"pipelineOrchestrator.setCameraSensors": [{
|
|
55799
|
+
name: "deviceId",
|
|
55800
|
+
form: "single",
|
|
55801
|
+
optional: false
|
|
55802
|
+
}],
|
|
55234
55803
|
"pipelineOrchestrator.setCameraStepOverride": [{
|
|
55235
55804
|
name: "deviceId",
|
|
55236
55805
|
form: "single",
|
|
@@ -56273,6 +56842,18 @@ var STATE_SUMMARY_VARS = [
|
|
|
56273
56842
|
systemEventKinds: [...SUMMARISABLE],
|
|
56274
56843
|
systemEventDeliveries: ["summary"]
|
|
56275
56844
|
},
|
|
56845
|
+
{
|
|
56846
|
+
name: "summarySection",
|
|
56847
|
+
label: "Summary: this section",
|
|
56848
|
+
description: "The section a per-section summary row is about (D698); on a summary sent as one message, every section it reports, comma-separated.",
|
|
56849
|
+
example: "Batterie scariche",
|
|
56850
|
+
group: "system",
|
|
56851
|
+
families: ["rule"],
|
|
56852
|
+
fields: [...RULE_TEXT],
|
|
56853
|
+
kinds: ["system"],
|
|
56854
|
+
systemEventKinds: [...SUMMARISABLE],
|
|
56855
|
+
systemEventDeliveries: ["summary"]
|
|
56856
|
+
},
|
|
56276
56857
|
...STATE_SUMMARY_SECTION_VARS.map((v) => ({
|
|
56277
56858
|
name: v.name,
|
|
56278
56859
|
label: v.label,
|
|
@@ -56982,6 +57563,38 @@ var NC_TEMPLATE_VARS = [
|
|
|
56982
57563
|
},
|
|
56983
57564
|
...STATE_SUMMARY_VARS
|
|
56984
57565
|
];
|
|
57566
|
+
var STATE_LABEL_KEYS = [
|
|
57567
|
+
"disarmed",
|
|
57568
|
+
"armed_home",
|
|
57569
|
+
"armed_away",
|
|
57570
|
+
"armed_night",
|
|
57571
|
+
"armed_vacation",
|
|
57572
|
+
"armed_custom_bypass",
|
|
57573
|
+
"arming",
|
|
57574
|
+
"disarming",
|
|
57575
|
+
"pending",
|
|
57576
|
+
"triggered",
|
|
57577
|
+
"open",
|
|
57578
|
+
"opening",
|
|
57579
|
+
"closing",
|
|
57580
|
+
"closed",
|
|
57581
|
+
"stopped",
|
|
57582
|
+
"locked",
|
|
57583
|
+
"unlocked",
|
|
57584
|
+
"locking",
|
|
57585
|
+
"unlocking",
|
|
57586
|
+
"jammed",
|
|
57587
|
+
"on",
|
|
57588
|
+
"off",
|
|
57589
|
+
"home",
|
|
57590
|
+
"not_home",
|
|
57591
|
+
"matched",
|
|
57592
|
+
"diverged",
|
|
57593
|
+
"unknown",
|
|
57594
|
+
"latched",
|
|
57595
|
+
"live"
|
|
57596
|
+
];
|
|
57597
|
+
var KEY_SET = new Set(STATE_LABEL_KEYS);
|
|
56985
57598
|
var TimelapseTemplateSchema = external_exports.object({
|
|
56986
57599
|
title: external_exports.string().max(500).optional(),
|
|
56987
57600
|
body: external_exports.string().max(2e3).optional()
|
|
@@ -57280,233 +57893,6 @@ var NATIVE_LEASE_ADMISSION_FIELD = {
|
|
|
57280
57893
|
}],
|
|
57281
57894
|
default: DEFAULT_NATIVE_LEASE_SETTINGS.admission
|
|
57282
57895
|
};
|
|
57283
|
-
var UNIT_TABLE = {
|
|
57284
|
-
"\xB0C": {
|
|
57285
|
-
dimension: "temperature",
|
|
57286
|
-
factor: 1,
|
|
57287
|
-
offset: 0
|
|
57288
|
-
},
|
|
57289
|
-
"\xB0F": {
|
|
57290
|
-
dimension: "temperature",
|
|
57291
|
-
factor: 5 / 9,
|
|
57292
|
-
offset: -160 / 9
|
|
57293
|
-
},
|
|
57294
|
-
K: {
|
|
57295
|
-
dimension: "temperature",
|
|
57296
|
-
factor: 1,
|
|
57297
|
-
offset: -273.15
|
|
57298
|
-
},
|
|
57299
|
-
hPa: {
|
|
57300
|
-
dimension: "pressure",
|
|
57301
|
-
factor: 1,
|
|
57302
|
-
offset: 0
|
|
57303
|
-
},
|
|
57304
|
-
kPa: {
|
|
57305
|
-
dimension: "pressure",
|
|
57306
|
-
factor: 10,
|
|
57307
|
-
offset: 0
|
|
57308
|
-
},
|
|
57309
|
-
Pa: {
|
|
57310
|
-
dimension: "pressure",
|
|
57311
|
-
factor: 0.01,
|
|
57312
|
-
offset: 0
|
|
57313
|
-
},
|
|
57314
|
-
mbar: {
|
|
57315
|
-
dimension: "pressure",
|
|
57316
|
-
factor: 1,
|
|
57317
|
-
offset: 0
|
|
57318
|
-
},
|
|
57319
|
-
bar: {
|
|
57320
|
-
dimension: "pressure",
|
|
57321
|
-
factor: 1e3,
|
|
57322
|
-
offset: 0
|
|
57323
|
-
},
|
|
57324
|
-
inHg: {
|
|
57325
|
-
dimension: "pressure",
|
|
57326
|
-
factor: 33.8639,
|
|
57327
|
-
offset: 0
|
|
57328
|
-
},
|
|
57329
|
-
mmHg: {
|
|
57330
|
-
dimension: "pressure",
|
|
57331
|
-
factor: 1.33322,
|
|
57332
|
-
offset: 0
|
|
57333
|
-
},
|
|
57334
|
-
psi: {
|
|
57335
|
-
dimension: "pressure",
|
|
57336
|
-
factor: 68.9476,
|
|
57337
|
-
offset: 0
|
|
57338
|
-
},
|
|
57339
|
-
"m/s": {
|
|
57340
|
-
dimension: "speed",
|
|
57341
|
-
factor: 1,
|
|
57342
|
-
offset: 0
|
|
57343
|
-
},
|
|
57344
|
-
"km/h": {
|
|
57345
|
-
dimension: "speed",
|
|
57346
|
-
factor: 1 / 3.6,
|
|
57347
|
-
offset: 0
|
|
57348
|
-
},
|
|
57349
|
-
mph: {
|
|
57350
|
-
dimension: "speed",
|
|
57351
|
-
factor: 0.44704,
|
|
57352
|
-
offset: 0
|
|
57353
|
-
},
|
|
57354
|
-
kn: {
|
|
57355
|
-
dimension: "speed",
|
|
57356
|
-
factor: 0.514444,
|
|
57357
|
-
offset: 0
|
|
57358
|
-
},
|
|
57359
|
-
"mm/h": {
|
|
57360
|
-
dimension: "precipitation-rate",
|
|
57361
|
-
factor: 1,
|
|
57362
|
-
offset: 0
|
|
57363
|
-
},
|
|
57364
|
-
"in/h": {
|
|
57365
|
-
dimension: "precipitation-rate",
|
|
57366
|
-
factor: 25.4,
|
|
57367
|
-
offset: 0
|
|
57368
|
-
},
|
|
57369
|
-
m: {
|
|
57370
|
-
dimension: "length",
|
|
57371
|
-
factor: 1,
|
|
57372
|
-
offset: 0
|
|
57373
|
-
},
|
|
57374
|
-
mm: {
|
|
57375
|
-
dimension: "length",
|
|
57376
|
-
factor: 1e-3,
|
|
57377
|
-
offset: 0
|
|
57378
|
-
},
|
|
57379
|
-
cm: {
|
|
57380
|
-
dimension: "length",
|
|
57381
|
-
factor: 0.01,
|
|
57382
|
-
offset: 0
|
|
57383
|
-
},
|
|
57384
|
-
km: {
|
|
57385
|
-
dimension: "length",
|
|
57386
|
-
factor: 1e3,
|
|
57387
|
-
offset: 0
|
|
57388
|
-
},
|
|
57389
|
-
in: {
|
|
57390
|
-
dimension: "length",
|
|
57391
|
-
factor: 0.0254,
|
|
57392
|
-
offset: 0
|
|
57393
|
-
},
|
|
57394
|
-
ft: {
|
|
57395
|
-
dimension: "length",
|
|
57396
|
-
factor: 0.3048,
|
|
57397
|
-
offset: 0
|
|
57398
|
-
},
|
|
57399
|
-
mi: {
|
|
57400
|
-
dimension: "length",
|
|
57401
|
-
factor: 1609.344,
|
|
57402
|
-
offset: 0
|
|
57403
|
-
},
|
|
57404
|
-
lx: {
|
|
57405
|
-
dimension: "illuminance",
|
|
57406
|
-
factor: 1,
|
|
57407
|
-
offset: 0
|
|
57408
|
-
},
|
|
57409
|
-
"W/m\xB2": {
|
|
57410
|
-
dimension: "irradiance",
|
|
57411
|
-
factor: 1,
|
|
57412
|
-
offset: 0
|
|
57413
|
-
},
|
|
57414
|
-
W: {
|
|
57415
|
-
dimension: "power",
|
|
57416
|
-
factor: 1,
|
|
57417
|
-
offset: 0
|
|
57418
|
-
},
|
|
57419
|
-
kW: {
|
|
57420
|
-
dimension: "power",
|
|
57421
|
-
factor: 1e3,
|
|
57422
|
-
offset: 0
|
|
57423
|
-
},
|
|
57424
|
-
VA: {
|
|
57425
|
-
dimension: "apparent-power",
|
|
57426
|
-
factor: 1,
|
|
57427
|
-
offset: 0
|
|
57428
|
-
},
|
|
57429
|
-
Wh: {
|
|
57430
|
-
dimension: "energy",
|
|
57431
|
-
factor: 1,
|
|
57432
|
-
offset: 0
|
|
57433
|
-
},
|
|
57434
|
-
kWh: {
|
|
57435
|
-
dimension: "energy",
|
|
57436
|
-
factor: 1e3,
|
|
57437
|
-
offset: 0
|
|
57438
|
-
},
|
|
57439
|
-
MWh: {
|
|
57440
|
-
dimension: "energy",
|
|
57441
|
-
factor: 1e6,
|
|
57442
|
-
offset: 0
|
|
57443
|
-
},
|
|
57444
|
-
V: {
|
|
57445
|
-
dimension: "voltage",
|
|
57446
|
-
factor: 1,
|
|
57447
|
-
offset: 0
|
|
57448
|
-
},
|
|
57449
|
-
mV: {
|
|
57450
|
-
dimension: "voltage",
|
|
57451
|
-
factor: 1e-3,
|
|
57452
|
-
offset: 0
|
|
57453
|
-
},
|
|
57454
|
-
A: {
|
|
57455
|
-
dimension: "current",
|
|
57456
|
-
factor: 1,
|
|
57457
|
-
offset: 0
|
|
57458
|
-
},
|
|
57459
|
-
mA: {
|
|
57460
|
-
dimension: "current",
|
|
57461
|
-
factor: 1e-3,
|
|
57462
|
-
offset: 0
|
|
57463
|
-
},
|
|
57464
|
-
ppm: {
|
|
57465
|
-
dimension: "concentration-volume",
|
|
57466
|
-
factor: 1,
|
|
57467
|
-
offset: 0
|
|
57468
|
-
},
|
|
57469
|
-
ppb: {
|
|
57470
|
-
dimension: "concentration-volume",
|
|
57471
|
-
factor: 1e-3,
|
|
57472
|
-
offset: 0
|
|
57473
|
-
},
|
|
57474
|
-
"\xB5g/m\xB3": {
|
|
57475
|
-
dimension: "concentration-mass",
|
|
57476
|
-
factor: 1,
|
|
57477
|
-
offset: 0
|
|
57478
|
-
},
|
|
57479
|
-
"mg/m\xB3": {
|
|
57480
|
-
dimension: "concentration-mass",
|
|
57481
|
-
factor: 1e3,
|
|
57482
|
-
offset: 0
|
|
57483
|
-
},
|
|
57484
|
-
kg: {
|
|
57485
|
-
dimension: "mass",
|
|
57486
|
-
factor: 1,
|
|
57487
|
-
offset: 0
|
|
57488
|
-
},
|
|
57489
|
-
g: {
|
|
57490
|
-
dimension: "mass",
|
|
57491
|
-
factor: 1e-3,
|
|
57492
|
-
offset: 0
|
|
57493
|
-
},
|
|
57494
|
-
lb: {
|
|
57495
|
-
dimension: "mass",
|
|
57496
|
-
factor: 0.453592,
|
|
57497
|
-
offset: 0
|
|
57498
|
-
},
|
|
57499
|
-
oz: {
|
|
57500
|
-
dimension: "mass",
|
|
57501
|
-
factor: 0.0283495,
|
|
57502
|
-
offset: 0
|
|
57503
|
-
},
|
|
57504
|
-
"%": {
|
|
57505
|
-
dimension: "percentage",
|
|
57506
|
-
factor: 1,
|
|
57507
|
-
offset: 0
|
|
57508
|
-
}
|
|
57509
|
-
};
|
|
57510
57896
|
var MB = 1024 * 1024;
|
|
57511
57897
|
var DEFAULT_POOL_MEMORY_POLICY = {
|
|
57512
57898
|
sampleIntervalMs: 6e4,
|