@camstack/addon-post-analysis 1.2.668 → 1.2.670
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/CHANGELOG.md +13 -0
- package/dist/{clip-model-registry-BYJ5lbPi.mjs → clip-model-registry-7_dm-x-g.mjs} +197 -62
- package/dist/{clip-model-registry-DTC5bkf8.js → clip-model-registry-B3x4Npc9.js} +202 -61
- package/dist/embedding-encoder/index.js +6 -2
- package/dist/embedding-encoder/index.mjs +6 -2
- package/dist/pipeline-analytics/_stub.js +2 -2
- package/dist/pipeline-analytics/{_virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-DBEA3TPX.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-BYaeszka.mjs} +2 -2
- package/dist/pipeline-analytics/{_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-DxtNkzmw.mjs → _virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-9HsFj_VL.mjs} +1 -1
- package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-Bame_Xen.mjs +26 -0
- package/dist/pipeline-analytics/{hostInit-ChYqK-gn.mjs → hostInit-CNqHuab6.mjs} +9 -9
- package/dist/pipeline-analytics/index.js +186 -40
- package/dist/pipeline-analytics/index.mjs +186 -40
- package/dist/pipeline-analytics/remoteEntry.js +1 -1
- package/package.json +2 -2
- package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-CU7mDiJp.mjs +0 -26
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,19 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [1.2.670] - 2026-11-05
|
|
11
|
+
|
|
12
|
+
### Changed
|
|
13
|
+
|
|
14
|
+
- Fixed: the face-recognition switch and the parked-object suppression switch shared one setting, so turning one on or off flipped the other; each now has its own setting, and your current choice is carried into both
|
|
15
|
+
- The analytics settings are now declared per capability (face recognition under face-gallery, the rest under pipeline-analytics); the form you see is unchanged
|
|
16
|
+
|
|
17
|
+
## [1.2.669] - 2026-11-05
|
|
18
|
+
|
|
19
|
+
### Changed
|
|
20
|
+
|
|
21
|
+
- Embedding encoder model setting is declared on the cluster hook; the form and stored value are unchanged.
|
|
22
|
+
|
|
10
23
|
## [1.2.668] - 2026-11-05
|
|
11
24
|
|
|
12
25
|
### Changed
|
|
@@ -6038,7 +6038,7 @@ var ZodIssueCode = {
|
|
|
6038
6038
|
var ZodFirstPartyTypeKind;
|
|
6039
6039
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
6040
6040
|
//#endregion
|
|
6041
|
-
//#region ../types/dist/sleep-
|
|
6041
|
+
//#region ../types/dist/sleep-DEZaLbiu.mjs
|
|
6042
6042
|
/**
|
|
6043
6043
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
6044
6044
|
* window to float samples (D455).
|
|
@@ -6840,6 +6840,12 @@ function projectStore(store, perNodeKeys, nodeId) {
|
|
|
6840
6840
|
}
|
|
6841
6841
|
return out;
|
|
6842
6842
|
}
|
|
6843
|
+
/** Every scope, in the order the guard and the docs list them. */
|
|
6844
|
+
var SCOPED_SETTINGS_SCOPES = [
|
|
6845
|
+
"cluster",
|
|
6846
|
+
"device-defaults",
|
|
6847
|
+
"node"
|
|
6848
|
+
];
|
|
6843
6849
|
var GLOBAL_SCOPE = { kind: "global" };
|
|
6844
6850
|
/** The scope every addon-wide (not per-node, not per-device) setting lives in. */
|
|
6845
6851
|
function globalSecretScope() {
|
|
@@ -7689,6 +7695,13 @@ var BaseAddon = class {
|
|
|
7689
7695
|
*/
|
|
7690
7696
|
secretStatePaths = [];
|
|
7691
7697
|
_addonSecretTree = null;
|
|
7698
|
+
/**
|
|
7699
|
+
* D986 M4: the scoped schemas this addon declared, resolved once per capability
|
|
7700
|
+
* (`loadScopedSchemas`) so the sync readers (`perNodeKeys`, the secret tree, the restart check)
|
|
7701
|
+
* see them. Empty until loaded: the readers then fall back to {@link globalSettingsSchema}.
|
|
7702
|
+
*/
|
|
7703
|
+
_scopedByCap = /* @__PURE__ */ new Map();
|
|
7704
|
+
_nodeKeysByCap = /* @__PURE__ */ new Map();
|
|
7692
7705
|
_deviceSecretTree = null;
|
|
7693
7706
|
/** Refs the last resolved config pointed at — a change to one re-resolves. */
|
|
7694
7707
|
_configSecretRefs = /* @__PURE__ */ new Set();
|
|
@@ -7758,6 +7771,7 @@ var BaseAddon = class {
|
|
|
7758
7771
|
this._ctx = context;
|
|
7759
7772
|
this._secretSettings = null;
|
|
7760
7773
|
}
|
|
7774
|
+
await this.loadScopedSchemas();
|
|
7761
7775
|
await this.resolveConfig();
|
|
7762
7776
|
if (secrets !== void 0) this._secretChangeUnsub = secrets.onChange((ref) => {
|
|
7763
7777
|
if (this._configSecretRefs.has(ref)) this.scheduleSecretReresolve(SECRET_CHANGE_DEBOUNCE_MS);
|
|
@@ -7767,6 +7781,7 @@ var BaseAddon = class {
|
|
|
7767
7781
|
const normalized = normalizeAddonInitResult(result);
|
|
7768
7782
|
const providers = normalized && "providers" in normalized && normalized.providers ? normalized.providers : [];
|
|
7769
7783
|
this._registeredCapNames = providers.map((p) => p.capability.name);
|
|
7784
|
+
await this.loadScopedSchemas();
|
|
7770
7785
|
return normalized;
|
|
7771
7786
|
}
|
|
7772
7787
|
/**
|
|
@@ -7855,6 +7870,16 @@ var BaseAddon = class {
|
|
|
7855
7870
|
schema(schema) {
|
|
7856
7871
|
return schema;
|
|
7857
7872
|
}
|
|
7873
|
+
/**
|
|
7874
|
+
* The capability names whose scoped settings schemas ({@link clusterSettingsSchema},
|
|
7875
|
+
* {@link nodeSettingsSchema}, {@link deviceDefaultsSchema}) this addon declares. Read BEFORE
|
|
7876
|
+
* `onInitialize`, when the providers it registers are not known yet: the first config resolve
|
|
7877
|
+
* must already know which keys are per node. Names the providers register at init are added
|
|
7878
|
+
* once known.
|
|
7879
|
+
*/
|
|
7880
|
+
scopedSettingsCapabilities() {
|
|
7881
|
+
return [];
|
|
7882
|
+
}
|
|
7858
7883
|
/** Override to provide global-level settings UI schema. */
|
|
7859
7884
|
globalSettingsSchema(_cap) {
|
|
7860
7885
|
return null;
|
|
@@ -7898,7 +7923,8 @@ var BaseAddon = class {
|
|
|
7898
7923
|
return [];
|
|
7899
7924
|
}
|
|
7900
7925
|
async getGlobalSettings(overlay, cap, nodeId) {
|
|
7901
|
-
|
|
7926
|
+
await this.loadScopedSchemas(cap);
|
|
7927
|
+
const schema = this.globalSettingsSchema(cap) ?? this.scopedFormSchema(cap);
|
|
7902
7928
|
if (!schema) return { sections: [] };
|
|
7903
7929
|
const projected = await this.readRawProjectedStore(nodeId, cap);
|
|
7904
7930
|
return hydrateSchema(schema, overlay ? await this.overlayKeepingMarkers(projected, overlay) : projected, { inlineSecretsAsViews: true });
|
|
@@ -7933,10 +7959,9 @@ var BaseAddon = class {
|
|
|
7933
7959
|
*
|
|
7934
7960
|
* Override it only when an `instanceMode: multiple` addon's instances differ: an NVR integration
|
|
7935
7961
|
* needs its connection fields, the default integration the addon's own sections. It is the
|
|
7936
|
-
* SHAPE of the form only — the values live
|
|
7937
|
-
* unchanged (`integrations.setSettings` for an account integration).
|
|
7962
|
+
* SHAPE of the form only — the values live on the instance record.
|
|
7938
7963
|
*/
|
|
7939
|
-
async
|
|
7964
|
+
async integrationFormSchema(_instance) {
|
|
7940
7965
|
return null;
|
|
7941
7966
|
}
|
|
7942
7967
|
/**
|
|
@@ -7982,7 +8007,7 @@ var BaseAddon = class {
|
|
|
7982
8007
|
* per-instance schema when it declares one, else its global schema (what they always showed).
|
|
7983
8008
|
*/
|
|
7984
8009
|
async getIntegrationFormSchema(instance, nodeId) {
|
|
7985
|
-
const scoped = await this.
|
|
8010
|
+
const scoped = await this.integrationFormSchema(instance);
|
|
7986
8011
|
if (scoped === null) return this.getGlobalSettings(void 0, void 0, nodeId);
|
|
7987
8012
|
return hydrateSchema(scoped, {}, { inlineSecretsAsViews: true });
|
|
7988
8013
|
}
|
|
@@ -8030,6 +8055,7 @@ var BaseAddon = class {
|
|
|
8030
8055
|
* resolved blob back is a no-op for every unchanged secret.
|
|
8031
8056
|
*/
|
|
8032
8057
|
async resolveGlobalStore(nodeId, cap) {
|
|
8058
|
+
await this.loadScopedSchemas(cap);
|
|
8033
8059
|
const raw = await this._ctx?.settings?.readAddonStore() ?? {};
|
|
8034
8060
|
return this.projectForNode(raw, nodeId, cap);
|
|
8035
8061
|
}
|
|
@@ -8040,6 +8066,7 @@ var BaseAddon = class {
|
|
|
8040
8066
|
}
|
|
8041
8067
|
/** The PROJECTED store with its markers — the form hydrate only (D798). */
|
|
8042
8068
|
async readRawProjectedStore(nodeId, cap) {
|
|
8069
|
+
await this.loadScopedSchemas(cap);
|
|
8043
8070
|
const raw = await this.rawSettings()?.readAddonStore() ?? {};
|
|
8044
8071
|
return this.projectForNode(raw, nodeId, cap);
|
|
8045
8072
|
}
|
|
@@ -8142,6 +8169,7 @@ var BaseAddon = class {
|
|
|
8142
8169
|
await this.applyGlobalPatch(patch, nodeId);
|
|
8143
8170
|
}
|
|
8144
8171
|
async applyGlobalPatch(barePatch, nodeId) {
|
|
8172
|
+
await this.loadScopedSchemas();
|
|
8145
8173
|
const keys = this.perNodeKeys();
|
|
8146
8174
|
const localNode = normalizeNodeId(this._ctx?.kernel?.localNodeId);
|
|
8147
8175
|
const target = normalizeNodeId(nodeId ?? this._ctx?.kernel?.localNodeId);
|
|
@@ -8155,7 +8183,8 @@ var BaseAddon = class {
|
|
|
8155
8183
|
await this.resolveConfig();
|
|
8156
8184
|
await this.onConfigChanged();
|
|
8157
8185
|
this.emitLifecycle(EventCategory.AddonUpdated, { level: "global" });
|
|
8158
|
-
|
|
8186
|
+
const legacy = this.globalSettingsSchema();
|
|
8187
|
+
this.maybeAutoRestart(Object.keys(barePatch), [...legacy === null ? [] : [legacy], ...this.loadedScopedSchemas().map((entry) => entry.schema)]);
|
|
8159
8188
|
}
|
|
8160
8189
|
/**
|
|
8161
8190
|
* The set of field keys the global settings schema declares `perNode: true`
|
|
@@ -8163,14 +8192,67 @@ var BaseAddon = class {
|
|
|
8163
8192
|
* declarations). Empty set ⇒ every per-node code path is bypassed and the
|
|
8164
8193
|
* settings API behaves exactly like the legacy node-agnostic one.
|
|
8165
8194
|
*/
|
|
8166
|
-
|
|
8195
|
+
/**
|
|
8196
|
+
* Load the scoped schemas of every capability this addon declares (the override and the
|
|
8197
|
+
* providers registered at init, plus `extraCap`) that is not loaded yet, then drop what was
|
|
8198
|
+
* derived from the previous set. Idempotent.
|
|
8199
|
+
*/
|
|
8200
|
+
async loadScopedSchemas(extraCap) {
|
|
8201
|
+
const caps = new Set([
|
|
8202
|
+
...this.scopedSettingsCapabilities(),
|
|
8203
|
+
...this._registeredCapNames,
|
|
8204
|
+
...extraCap === void 0 ? [] : [extraCap]
|
|
8205
|
+
]);
|
|
8206
|
+
let added = false;
|
|
8207
|
+
for (const cap of caps) {
|
|
8208
|
+
if (this._scopedByCap.has(cap)) continue;
|
|
8209
|
+
const loaded = [];
|
|
8210
|
+
for (const scope of SCOPED_SETTINGS_SCOPES) {
|
|
8211
|
+
const schema = await this.getScopedSettingsSchema(scope, cap);
|
|
8212
|
+
if (schema !== null) loaded.push({
|
|
8213
|
+
scope,
|
|
8214
|
+
schema
|
|
8215
|
+
});
|
|
8216
|
+
}
|
|
8217
|
+
this._scopedByCap.set(cap, loaded);
|
|
8218
|
+
added = true;
|
|
8219
|
+
}
|
|
8220
|
+
if (!added) return;
|
|
8221
|
+
this._nodeKeysByCap = /* @__PURE__ */ new Map();
|
|
8222
|
+
this._addonSecretTree = null;
|
|
8223
|
+
}
|
|
8224
|
+
/**
|
|
8225
|
+
* The form the settings API serves while an addon declares no {@link globalSettingsSchema}: the
|
|
8226
|
+
* sections of its scoped schemas, so dropping the old hook does not blank the form.
|
|
8227
|
+
*/
|
|
8228
|
+
scopedFormSchema(cap) {
|
|
8229
|
+
const byId = /* @__PURE__ */ new Map();
|
|
8230
|
+
for (const entry of this.loadedScopedSchemas(cap)) for (const section of entry.schema.sections) if (!byId.has(section.id)) byId.set(section.id, section);
|
|
8231
|
+
return byId.size === 0 ? null : { sections: [...byId.values()] };
|
|
8232
|
+
}
|
|
8233
|
+
/** Every loaded scoped schema of `cap`, or of every loaded capability. */
|
|
8234
|
+
loadedScopedSchemas(cap) {
|
|
8235
|
+
if (cap !== void 0) return this._scopedByCap.get(cap) ?? [];
|
|
8236
|
+
return [...this._scopedByCap.values()].flat();
|
|
8237
|
+
}
|
|
8238
|
+
/**
|
|
8239
|
+
* The field keys that are stored per node: every field of a {@link nodeSettingsSchema}, plus
|
|
8240
|
+
* the fields the legacy {@link globalSettingsSchema} still marks `perNode: true`. Derived once
|
|
8241
|
+
* per `cap` argument and memoized (schemas are static declarations). Empty set ⇒ every
|
|
8242
|
+
* per-node code path is bypassed and the settings API behaves like the node-agnostic one.
|
|
8243
|
+
* Call {@link loadScopedSchemas} first (the async seams do).
|
|
8244
|
+
*/
|
|
8167
8245
|
perNodeKeys(cap) {
|
|
8168
8246
|
const cacheKey = cap ?? "";
|
|
8169
|
-
const cached = this.
|
|
8247
|
+
const cached = this._nodeKeysByCap.get(cacheKey);
|
|
8170
8248
|
if (cached) return cached;
|
|
8171
|
-
const
|
|
8172
|
-
const keys = new Set(
|
|
8173
|
-
this.
|
|
8249
|
+
const legacy = this.globalSettingsSchema(cap);
|
|
8250
|
+
const keys = new Set(legacy ? legacy.sections.flatMap((section) => collectPerNodeFieldKeys(section.fields)) : []);
|
|
8251
|
+
for (const { scope, schema } of this.loadedScopedSchemas(cap)) {
|
|
8252
|
+
if (scope !== "node") continue;
|
|
8253
|
+
for (const section of schema.sections) for (const key of collectValueFieldKeys(section.fields)) keys.add(key);
|
|
8254
|
+
}
|
|
8255
|
+
this._nodeKeysByCap.set(cacheKey, keys);
|
|
8174
8256
|
return keys;
|
|
8175
8257
|
}
|
|
8176
8258
|
/**
|
|
@@ -8180,10 +8262,9 @@ var BaseAddon = class {
|
|
|
8180
8262
|
* time to return its response before the addon is torn down and
|
|
8181
8263
|
* re-initialised by `AddonRegistryService.restartAddon`.
|
|
8182
8264
|
*/
|
|
8183
|
-
maybeAutoRestart(patchKeys,
|
|
8184
|
-
if (!schema) return;
|
|
8265
|
+
maybeAutoRestart(patchKeys, schemas) {
|
|
8185
8266
|
const restartKeys = /* @__PURE__ */ new Set();
|
|
8186
|
-
for (const section of schema.sections) for (const field of section.fields) {
|
|
8267
|
+
for (const schema of schemas) for (const section of schema.sections) for (const field of section.fields) {
|
|
8187
8268
|
if (field.type === "separator" || field.type === "info") continue;
|
|
8188
8269
|
if (field.requiresRestart) restartKeys.add(field.key);
|
|
8189
8270
|
}
|
|
@@ -8379,12 +8460,14 @@ var BaseAddon = class {
|
|
|
8379
8460
|
* here, in the addon's own process, so the hub keeps no copy of it.
|
|
8380
8461
|
*/
|
|
8381
8462
|
async getDeclaredSettingsKeys() {
|
|
8463
|
+
await this.loadScopedSchemas();
|
|
8382
8464
|
return { keys: [...this.declaredKeySet()].toSorted() };
|
|
8383
8465
|
}
|
|
8384
8466
|
declaredKeySet() {
|
|
8385
8467
|
const keys = new Set(Object.keys(this.defaults));
|
|
8386
8468
|
const schema = this.globalSettingsSchema();
|
|
8387
8469
|
if (schema) for (const section of schema.sections) for (const key of collectFieldKeys(section.fields)) keys.add(key);
|
|
8470
|
+
for (const { schema: scoped } of this.loadedScopedSchemas()) for (const section of scoped.sections) for (const key of collectFieldKeys(section.fields)) keys.add(key);
|
|
8388
8471
|
for (const key of this._declaredStateKeys) keys.add(key);
|
|
8389
8472
|
for (const path of this.secretStatePaths) {
|
|
8390
8473
|
const root = path.split(/[.[]/, 1)[0];
|
|
@@ -8480,7 +8563,11 @@ var BaseAddon = class {
|
|
|
8480
8563
|
}
|
|
8481
8564
|
/** The addon store's secret tree: schema fields by TYPE, plus `secretStatePaths`. */
|
|
8482
8565
|
addonSecretTree() {
|
|
8483
|
-
this._addonSecretTree
|
|
8566
|
+
if (this._addonSecretTree === null) {
|
|
8567
|
+
const tree = new Map(secretTreeFromSchema(this.globalSettingsSchema()));
|
|
8568
|
+
for (const { schema } of this.loadedScopedSchemas()) for (const [key, node] of secretTreeFromSchema(schema)) tree.set(key, node);
|
|
8569
|
+
this._addonSecretTree = mergeSecretStatePaths(tree, this.secretStatePaths);
|
|
8570
|
+
}
|
|
8484
8571
|
return this._addonSecretTree;
|
|
8485
8572
|
}
|
|
8486
8573
|
deviceSecretTree() {
|
|
@@ -8730,6 +8817,23 @@ function dropPerNodeFields(fields) {
|
|
|
8730
8817
|
}
|
|
8731
8818
|
return kept;
|
|
8732
8819
|
}
|
|
8820
|
+
/** The keys of the value-holding fields, recursing into layout containers. */
|
|
8821
|
+
function collectValueFieldKeys(fields) {
|
|
8822
|
+
const collected = [];
|
|
8823
|
+
for (const field of fields) {
|
|
8824
|
+
if (field.type === "group") {
|
|
8825
|
+
collected.push(...collectValueFieldKeys(field.fields));
|
|
8826
|
+
continue;
|
|
8827
|
+
}
|
|
8828
|
+
if (field.type === "sub-tabs") {
|
|
8829
|
+
for (const tab of field.tabs) collected.push(...collectValueFieldKeys(tab.fields));
|
|
8830
|
+
continue;
|
|
8831
|
+
}
|
|
8832
|
+
if (field.type === "separator" || field.type === "info") continue;
|
|
8833
|
+
if ("key" in field && typeof field.key === "string") collected.push(field.key);
|
|
8834
|
+
}
|
|
8835
|
+
return collected;
|
|
8836
|
+
}
|
|
8733
8837
|
function collectFieldKeys(fields) {
|
|
8734
8838
|
const collected = [];
|
|
8735
8839
|
for (const field of fields) {
|
|
@@ -14601,6 +14705,16 @@ var MigrationPlanSchema = object({ edits: array(discriminatedUnion("op", [
|
|
|
14601
14705
|
precondition: PreconditionSchema
|
|
14602
14706
|
})
|
|
14603
14707
|
])) });
|
|
14708
|
+
/** `JSON.stringify` with object keys sorted, so equal values spell the same. */
|
|
14709
|
+
function canonicalJson(value) {
|
|
14710
|
+
if (Array.isArray(value)) return `[${value.map((item) => canonicalJson(item)).join(",")}]`;
|
|
14711
|
+
if (typeof value === "object" && value !== null) return `{${Object.entries(value).filter(([, item]) => item !== void 0).sort(([a], [b]) => a < b ? -1 : a > b ? 1 : 0).map(([key, item]) => `${JSON.stringify(key)}:${canonicalJson(item)}`).join(",")}}`;
|
|
14712
|
+
return JSON.stringify(value) ?? "null";
|
|
14713
|
+
}
|
|
14714
|
+
/** The precondition string for a value a plan read (`null` when it read nothing). */
|
|
14715
|
+
function preconditionOf(value) {
|
|
14716
|
+
return canonicalJson(value ?? null);
|
|
14717
|
+
}
|
|
14604
14718
|
/**
|
|
14605
14719
|
* What a `procedure` body reports. `already-done` means the rerun observed the
|
|
14606
14720
|
* work finished (a crash between the work and the ledger row, or a manual fix)
|
|
@@ -52808,7 +52922,14 @@ var DiscoveryCandidateSchema = object({
|
|
|
52808
52922
|
/** `stableId` of the gateway candidate this device was found BEHIND. */
|
|
52809
52923
|
parentStableId: string().optional(),
|
|
52810
52924
|
/** `false` = shown for context but not pickable. Default true. */
|
|
52811
|
-
selectable: boolean().optional()
|
|
52925
|
+
selectable: boolean().optional(),
|
|
52926
|
+
/**
|
|
52927
|
+
* Keys of the provider's creation form (`getChildCreationSchema`) this candidate
|
|
52928
|
+
* cannot be adopted without — a key for an encrypted board, a pairing code. The
|
|
52929
|
+
* admin asks for exactly these, on the creation form prefilled with
|
|
52930
|
+
* `prefilledConfig`, before it adopts. Absent or empty = adopt as it is.
|
|
52931
|
+
*/
|
|
52932
|
+
needsParams: array(string()).optional()
|
|
52812
52933
|
});
|
|
52813
52934
|
/**
|
|
52814
52935
|
* Flat device summary returned by `createDevice` / `adoptDiscoveredDevice`.
|
|
@@ -52867,12 +52988,18 @@ method(_void(), _void(), { kind: "mutation" }), method(_void(), _void(), { kind:
|
|
|
52867
52988
|
}), array(DiscoveryCandidateSchema), {
|
|
52868
52989
|
kind: "mutation",
|
|
52869
52990
|
auth: "admin"
|
|
52870
|
-
}), method(object({}), CreationSchemaOutputSchema), method(object({}), object({ deviceType: _enum(DeviceType).nullable() })), method(object({
|
|
52991
|
+
}), method(object({}), CreationSchemaOutputSchema), method(object({}), object({ deviceType: _enum(DeviceType).nullable() })), method(object({
|
|
52992
|
+
candidate: DiscoveryCandidateSchema,
|
|
52993
|
+
/** The integration the operator adopts into; a provider with several instances needs it. */
|
|
52994
|
+
integrationId: string().optional()
|
|
52995
|
+
}), DeviceSummarySchema, {
|
|
52871
52996
|
kind: "mutation",
|
|
52872
52997
|
auth: "admin"
|
|
52873
52998
|
}), method(object({}), boolean()), method(object({ type: _enum(DeviceType) }), CreationSchemaOutputSchema), method(object({
|
|
52874
52999
|
type: _enum(DeviceType),
|
|
52875
|
-
config: record(string(), unknown())
|
|
53000
|
+
config: record(string(), unknown()),
|
|
53001
|
+
/** The integration the operator adds the device to; a provider with several instances needs it. */
|
|
53002
|
+
integrationId: string().optional()
|
|
52876
53003
|
}), DeviceSummarySchema, {
|
|
52877
53004
|
kind: "mutation",
|
|
52878
53005
|
auth: "admin"
|
|
@@ -57114,11 +57241,7 @@ var CreateIntegrationInputSchema = object({
|
|
|
57114
57241
|
info: record(string(), unknown()).optional(),
|
|
57115
57242
|
/** `stableId` of the discovery candidate the form was seeded from (D984). */
|
|
57116
57243
|
originStableId: string().optional(),
|
|
57117
|
-
settings: record(string(), unknown()).optional()
|
|
57118
|
-
/** Keys of `settings` the form's schema declares secret (by type) — kept in
|
|
57119
|
-
* the keychain, not the table (D787). */
|
|
57120
|
-
secretKeys: array(string()).optional(),
|
|
57121
|
-
skipRestart: boolean().optional()
|
|
57244
|
+
settings: record(string(), unknown()).optional()
|
|
57122
57245
|
});
|
|
57123
57246
|
var UpdateIntegrationInputSchema = object({
|
|
57124
57247
|
id: string(),
|
|
@@ -57139,22 +57262,6 @@ method(_void(), array(IntegrationWithStateSchema)), method(object({ id: string()
|
|
|
57139
57262
|
}), method(object({ id: string() }), DeleteIntegrationResultSchema, {
|
|
57140
57263
|
kind: "mutation",
|
|
57141
57264
|
auth: "admin"
|
|
57142
|
-
}), method(object({ id: string() }), record(string(), unknown()), { auth: "admin" }), method(object({
|
|
57143
|
-
id: string(),
|
|
57144
|
-
settings: record(string(), unknown()),
|
|
57145
|
-
/** Keys the form's schema declares secret (by type) — keychain-stored (D787). */
|
|
57146
|
-
secretKeys: array(string()).optional(),
|
|
57147
|
-
/** The integration's own addon applies the change in-process and asks the hub not to respawn it. */
|
|
57148
|
-
skipRestart: boolean().optional()
|
|
57149
|
-
}), object({ success: boolean() }), {
|
|
57150
|
-
kind: "mutation",
|
|
57151
|
-
auth: "admin"
|
|
57152
|
-
}), method(object({ id: string() }), object({
|
|
57153
|
-
rows: number().int().nonnegative(),
|
|
57154
|
-
secrets: number().int().nonnegative()
|
|
57155
|
-
}), {
|
|
57156
|
-
kind: "mutation",
|
|
57157
|
-
auth: "admin"
|
|
57158
57265
|
}), method(_void(), array(AvailableIntegrationTypeSchema), { auth: "admin" }), method(object({
|
|
57159
57266
|
addonId: string(),
|
|
57160
57267
|
settings: record(string(), unknown())
|
|
@@ -60226,6 +60333,27 @@ method(object({}), object({ entries: array(MigrationLedgerEntrySchema) }), { aut
|
|
|
60226
60333
|
}), {
|
|
60227
60334
|
kind: "mutation",
|
|
60228
60335
|
auth: "admin"
|
|
60336
|
+
}), method(object({ integrationId: string().min(1) }), record(string(), unknown()), { auth: "admin" }), method(object({ integrationId: string().min(1) }), object({
|
|
60337
|
+
rows: number().int().nonnegative(),
|
|
60338
|
+
secrets: number().int().nonnegative()
|
|
60339
|
+
}), {
|
|
60340
|
+
kind: "mutation",
|
|
60341
|
+
auth: "admin"
|
|
60342
|
+
}), method(object({
|
|
60343
|
+
integrationId: string().min(1),
|
|
60344
|
+
patch: record(string(), unknown())
|
|
60345
|
+
}), object({ written: boolean() }), {
|
|
60346
|
+
kind: "mutation",
|
|
60347
|
+
auth: "admin"
|
|
60348
|
+
}), method(object({
|
|
60349
|
+
integrationId: string().min(1),
|
|
60350
|
+
keys: array(string().min(1))
|
|
60351
|
+
}), object({
|
|
60352
|
+
present: boolean(),
|
|
60353
|
+
removed: record(string(), unknown())
|
|
60354
|
+
}), {
|
|
60355
|
+
kind: "mutation",
|
|
60356
|
+
auth: "admin"
|
|
60229
60357
|
});
|
|
60230
60358
|
method(object({
|
|
60231
60359
|
sourceUrl: string(),
|
|
@@ -88394,13 +88522,6 @@ Object.freeze({
|
|
|
88394
88522
|
access: "create",
|
|
88395
88523
|
role: "admin"
|
|
88396
88524
|
},
|
|
88397
|
-
"integrations.clearSettings": {
|
|
88398
|
-
capName: "integrations",
|
|
88399
|
-
capScope: "system",
|
|
88400
|
-
addonId: null,
|
|
88401
|
-
access: "delete",
|
|
88402
|
-
role: "admin"
|
|
88403
|
-
},
|
|
88404
88525
|
"integrations.create": {
|
|
88405
88526
|
capName: "integrations",
|
|
88406
88527
|
capScope: "system",
|
|
@@ -88436,13 +88557,6 @@ Object.freeze({
|
|
|
88436
88557
|
access: "view",
|
|
88437
88558
|
role: "admin"
|
|
88438
88559
|
},
|
|
88439
|
-
"integrations.getSettings": {
|
|
88440
|
-
capName: "integrations",
|
|
88441
|
-
capScope: "system",
|
|
88442
|
-
addonId: null,
|
|
88443
|
-
access: "view",
|
|
88444
|
-
role: "admin"
|
|
88445
|
-
},
|
|
88446
88560
|
"integrations.list": {
|
|
88447
88561
|
capName: "integrations",
|
|
88448
88562
|
capScope: "system",
|
|
@@ -88450,13 +88564,6 @@ Object.freeze({
|
|
|
88450
88564
|
access: "view",
|
|
88451
88565
|
role: "admin"
|
|
88452
88566
|
},
|
|
88453
|
-
"integrations.setSettings": {
|
|
88454
|
-
capName: "integrations",
|
|
88455
|
-
capScope: "system",
|
|
88456
|
-
addonId: null,
|
|
88457
|
-
access: "create",
|
|
88458
|
-
role: "admin"
|
|
88459
|
-
},
|
|
88460
88567
|
"integrations.testConnection": {
|
|
88461
88568
|
capName: "integrations",
|
|
88462
88569
|
capScope: "system",
|
|
@@ -89451,6 +89558,13 @@ Object.freeze({
|
|
|
89451
89558
|
access: "view",
|
|
89452
89559
|
role: "admin"
|
|
89453
89560
|
},
|
|
89561
|
+
"migrations.clearLegacyIntegrationRows": {
|
|
89562
|
+
capName: "migrations",
|
|
89563
|
+
capScope: "system",
|
|
89564
|
+
addonId: null,
|
|
89565
|
+
access: "delete",
|
|
89566
|
+
role: "admin"
|
|
89567
|
+
},
|
|
89454
89568
|
"migrations.declareOwner": {
|
|
89455
89569
|
capName: "migrations",
|
|
89456
89570
|
capScope: "system",
|
|
@@ -89458,6 +89572,13 @@ Object.freeze({
|
|
|
89458
89572
|
access: "create",
|
|
89459
89573
|
role: "admin"
|
|
89460
89574
|
},
|
|
89575
|
+
"migrations.deleteLegacyIntegrationRowKeys": {
|
|
89576
|
+
capName: "migrations",
|
|
89577
|
+
capScope: "system",
|
|
89578
|
+
addonId: null,
|
|
89579
|
+
access: "delete",
|
|
89580
|
+
role: "admin"
|
|
89581
|
+
},
|
|
89461
89582
|
"migrations.dryRun": {
|
|
89462
89583
|
capName: "migrations",
|
|
89463
89584
|
capScope: "system",
|
|
@@ -89493,6 +89614,20 @@ Object.freeze({
|
|
|
89493
89614
|
access: "create",
|
|
89494
89615
|
role: "admin"
|
|
89495
89616
|
},
|
|
89617
|
+
"migrations.patchLegacyIntegrationRows": {
|
|
89618
|
+
capName: "migrations",
|
|
89619
|
+
capScope: "system",
|
|
89620
|
+
addonId: null,
|
|
89621
|
+
access: "create",
|
|
89622
|
+
role: "admin"
|
|
89623
|
+
},
|
|
89624
|
+
"migrations.readLegacyIntegrationRows": {
|
|
89625
|
+
capName: "migrations",
|
|
89626
|
+
capScope: "system",
|
|
89627
|
+
addonId: null,
|
|
89628
|
+
access: "view",
|
|
89629
|
+
role: "admin"
|
|
89630
|
+
},
|
|
89496
89631
|
"migrations.restorePreMigration": {
|
|
89497
89632
|
capName: "migrations",
|
|
89498
89633
|
capScope: "system",
|
|
@@ -103616,4 +103751,4 @@ function buildClipModelRegistry(entries) {
|
|
|
103616
103751
|
/** The built-in catalog's registry. */
|
|
103617
103752
|
var BUILTIN_CLIP_MODELS = buildClipModelRegistry(CLIP_IMAGE_MODELS);
|
|
103618
103753
|
//#endregion
|
|
103619
|
-
export { MAX_TRACK_RELATIONS as $,
|
|
103754
|
+
export { MAX_TRACK_RELATIONS as $, withSystemEventClasses as $i, buildViewerLink as $n, ncMediaPolicyError as $r, NcTemplatePreviewSchema as $t, DETECTION_MACRO_CLASSES as A, partialRecord as Aa, ruleGroupingApplies as Ai, TrackPlacementSchema as An, isAlarmControllableCap as Ar, NcAlarmConfigSchema as At, EXPORT_DENSE_MAX_RANGES as B, EventCategory as Ba, subjectPathSvgPoints as Bi, alertEpisodeId as Bn, isKnownTemplateVar as Br, NcRuleSchema as Bt, COCO_TO_MACRO as C, array as Ca, resolveNcMediaImage as Ci, SetTrackPurityResultSchema as Cn, ensureAlarmProfiles as Cr, NC_GROUPING_MIN_SEC as Ct, DEFAULT_DETAIL_CROP_CONVENTION as D, looseObject as Da, ruleAutoTriggersAlarm as Di, TimelapseRuleInputSchema as Dn, failureContributionCapability as Dr, NC_SYSTEM_EVENT_KIND_GROUP_SPECS as Dt, CoverStateSchema as E, literal as Ea, rootSupplyServes as Ei, TRACK_RELATIONS_DEFAULT_LIMIT as En, faceGalleryCapability as Er, NC_STATE_SUMMARY_SECTION_IDS as Et, EMBEDDING_REQUIREMENTS_FAILED as F, tuple as Fa, servedTemplateVars as Fi, TrackSourceSchema as Fn, isDefaultAlarmProfileId as Fr, NcConditionDescriptorSchema as Ft, LabelAttributionSchema as G, systemEventFamilyProblems as Gi, applyNonBlockingEdit as Gn, isScheduleActive as Gr, NcSnoozeInputSchema as Gt, FULL_IMAGE_BBOX as H, sunTimes as Hi, alertEpisodePayload as Hn, isMediaOwnerType as Hr, NcRuleUpdateInputSchema as Ht, EMBEDDING_REQUIREMENTS_UNAVAILABLE as I, union as Ia, startMoverUnderClearance as Ii, activateAlarmProfile as In, isDetectionMacroClass as Ir, NcConditionsSchema as It, LockStateSchema as J, systemEventSummarySplitOf as Ji, assertTimelapseCadences as Jn, isVectorIndexDimConflict as Jr, NcStateSummarySectionIdSchema as Jt, ListTrackRelationsInputSchema as K, systemEventFilterApplies as Ki, applySecureOnArmEdit as Kn, isSystemDelivery as Kr, NcSnoozeSchema as Kt, EVENT_DENSITY_BATCH_MAX as L, unknown as La, storageOccupancyCapability as Li, addonWidgetsSourceCapability as Ln, isDrawableSubjectPath as Lr, NcRuleActionSchema as Lt, DeclaredDevices as M, strictObject as Ma, sceneMonitorCapability as Mi, TrackRelationKindSchema as Mn, isAlertEpisodeSeverity as Mr, NcAlarmSensorsInputSchema as Mt, DetectionSourceSchema as N, string as Na, secureActuationFor as Ni, TrackRelationSchema as Nn, isAppLinkBase as Nr, NcAlarmSensorsSchema as Nt, DEFAULT_EVENT_COLOR as O, number as Oa, ruleBelongsToAlarm as Oi, TimelapseRulePatchSchema as On, gifDeriveSpeed as Or, NC_TAXONOMY as Ot, EMBEDDING_MODEL_FAILED as P, templateLiteral as Pa, sensorRaisedOf as Pi, TrackSideSchema as Pn, isAudioClassName as Pr, NcAlarmSettingsPatchSchema as Pt, MAX_TRACK_PURITIES as Q, viewerLinkBaseOf as Qi, buildSubjectPath as Qn, memoizePinnedFfmpeg as Qr, NcTemplatePreviewInputSchema as Qt, EVENT_KIND_BY_CAP as R, DeviceType as Ra, subKindsOf as Ri, alarmDeviceSecureOnArm as Rn, isEventKindLabelKey as Rr, NcRuleInputSchema as Rt, BucketAccumulator as S, _enum as Sa, resolveModeNotifyPolicy as Si, SetTrackPurityInputSchema as Sn, encodeVectorBase64 as Sr, NC_GROUPING_MAX_SEC as St, ClearTrackRelationResultSchema as T, discriminatedUnion as Ta, retrainRevisionConflictMessage as Ti, TIMELAPSE_DENSE_FLOOR_SEC as Tn, evictionPolicyOfLocation as Tr, NC_SNOOZE_MAX_MINUTES as Tt, FailureCounters as U, syncActiveAlarmProfileSettings as Ui, applyBlockingEdit as Un, isRetiredClearKey as Ur, NcScheduleSchema as Ut, FIRST_LEVEL_MACRO_CLASSES as V, summarizeReview as Vi, alertEpisodeKind as Vn, isLabelSupplyStepId as Vr, NcRuleTargetSchema as Vt, LABEL_SUPPLY_MACRO as W, systemEventDeliveryProblems as Wi, applyModeDelaysEdits as Wn, isRootSuppliableStepId as Wr, NcSharedSequenceSchema as Wt, MAX_BIRTH_DECISION_RECORDS as X, templateVarsFor as Xi, audioModeOf as Xn, linkedStepOf as Xr, NcTaxonomySchema as Xt, MAX_ARCHIVED_DEBUG_NOTES as Y, templateCarriesSummary as Yi, audioMetricsCapability as Yn, kebabToCamel as Yr, NcSystemEventKindSchema as Yt, MAX_BIRTH_LATENCY_PROXY_MS as Z, vectorDimFromBase64 as Zi, buildEventKindDescriptor as Zn, mayWriteToLocation as Zr, NcTemplateDefaultSchema as Zt, AlarmArmModeSchema as _, isDeviceScopedCap as _a, renameAlarmProfile as _i, SCENE_DEFAULT_QUIET_SECONDS as _n, embeddingEncoderCapability as _r, NC_CONFIRM_DEFAULT_TIMEOUT_MS as _t, CLIP_EMBEDDING_STEP_ID as a, BaseAddon as aa, paintHex as ai, RECORDING_EXPORT_MAX_READ_BYTES as an, consumableLowPercentOf as ar, NC_ALARM_DELAY_FIELDS as at, BaseDevice as b, sleep as ba, resolveLocationMode as bi, SCENE_RESET_RECAPTURES as bn, embeddingRequirementsFailedError as br, NC_DEFAULT_SNOOZE_MINUTES as bt, readClusterModelPinStrict as c, InvalidRecordError as ca, parseProcStatus as ci, RetrainDismissedSchema as cn, createAlarmProfile as cr, NC_ALARM_SYSTEM_EVENT_KINDS as ct, APPEARANCE_BIN_COUNT as d, createEvent as da, plateGalleryCapability as di, RetrainVerdictSubjectSchema as dn, derivePostTriggeredAction as dr, NC_AUDIO_CONFIRM_WINDOW_SEC_DEFAULT as dt, zoneAnalyticsCapability as ea, normalizeNcAction as ei, NcTemplateVarDescriptorSchema as en, bundledCamstack as er, MOTION_CLOSE_AFTER_MS as et, APPEARANCE_BLOCKS as f, customAction as fa, preconditionOf as fi, SCENE_CONFIRM_DEFAULT_MAX_IMAGE_PX as fn, deriveRecordingMode as fr, NC_CLIP_POST_ROLL_DEFAULT_SEC as ft, ActionTargetResolver as g, hydrateSchema as ga, readTimelapseGeneratedAt as gi, SCENE_DEFAULT_OBSERVATION_SPACING_SEC as gn, deviceRemovalHookCapability as gr, NC_CONFIRM_DEFAULT_MAX_IMAGE_PX as gt, AUDIO_MACRO_LABELS as h, defineRecordKinds as ha, readMotionTriggeredBy as hi, SCENE_DEFAULT_CHECK_INTERVAL_SEC as hn, deviceAttentionKind as hr, NC_CONDITION_CATALOG as ht, CLIP_TEXT_MODELS as i, isSourceCap as ia, occupancyScope as ii, PoolMemoryWatchdog as in, consumableFormOf as ir, NC_ALARM_DEFAULT_TRIGGERED_DURATION_SEC as it, DETECTION_PIPELINE_CAP_NAME as j, record as ja, ruleKindOf as ji, TrackPuritySchema as jn, isAlertEpisodeOpen as jr, NcAlarmPostTriggeredActionSchema as jt, DEFAULT_TIMELAPSE_PREVIEW_TEXT as k, object as ka, ruleDeviceCompatCapQueries as ki, TimelapseRuleSchema as kn, gifFromMp4Args as kr, NC_TEMPLATE_VARS as kt, resolveClusterModelPin as l, RECORD_MAX_DATA_BYTES as la, pickFaceRescoreIntervalMinutes as li, RetrainOriginSchema as ln, deleteAlarmProfile as lr, NC_ALARM_TRIGGERED_MAX_SEC as lt, ARCHIVED_DEBUG_NOTES_DEFAULT_LIMIT as m, defineCustomActions as ma, readDeviceStateFrom as mi, SCENE_DEFAULT_ANCHOR_THRESHOLD as mn, describeSystemEventFamilyProblem as mr, NC_CLIP_RETENTION_MAX_SEC as mt, DEFAULT_CLIP_MODEL as n, canonicalHash as na, normalizeNcMediaPolicy as ni, OpsLogEntrySchema as nn, classifyRetrainReview as nr, MotionTriggeredBySchema as nt, CLUSTER_MODEL_OWNER_ADDON_ID as o, CAP_ADVANCE_FIELDS as oa, paletteResultSchema as oi, RECORDING_SOURCE_CAMSTACK_ADDON as on, coreBlockIdFromAddonId as or, NC_ALARM_DELAY_MAX_SEC as ot, APPEARANCE_RESOLVES_AMBIGUITY_DEFAULT as p, defineAddonMigrations as pa, projectSubjectPath as pi, SCENE_CONFIRM_DEFAULT_TIMEOUT_MS as pn, describeSystemEventDeliveryProblem as pr, NC_CLIP_PRE_ROLL_DEFAULT_SEC as pt, ListTrackRelationsResultSchema as q, systemEventSummaryScheduleOf as qi, armRemovalReconcile as qn, isSystemEventSummaryRule as qr, NcSnoozeSuppressedSchema as qt, CLIP_IMAGE_MODELS as r, evaluateSensorEdge as ra, notificationRulesCapability as ri, PackageLlmVerdictSchema as rn, cloneAlarmSettings as rr, NC_ALARM_DEFAULT_PROFILE_ID as rt, FACE_EMBEDDING_STEP_ID as s, CamProfileSchema as sa, parseAlertEpisodePayload as si, RebuildObjectEmbeddingsRefusalSchema as sn, cosineSimilarity as sr, NC_ALARM_NOTIFY_FIELDS as st, BUILTIN_CLIP_MODELS as t, DEFAULT_FIRST_SIGHTING_FRESHNESS_MS as ta, normalizeNcCapTarget as ti, OPS_LOG_DEFAULT_LIMIT as tn, calendarEventLocalSpan as tr, MediaFileKindEnum as tt, ACTION_TARGET_INVALIDATION_EVENTS as u, RECORD_QUERY_MAX as ua, pipelineAnalyticsCapability as ui, RetrainStatusSchema as un, deriveDetailCropRect as ur, NC_AUDIO_CONFIRM_HITS_DEFAULT as ut, ArchivedDebugNoteSchema as v, nodePin as va, resolveClipSearchMinScore as vi, SCENE_DEFAULT_UNCOVERED_POLICY as vn, embeddingModelFailedError as vr, NC_CONSUMABLE_LOW_PERCENT_DEFAULT as vt, ClearTrackRelationInputSchema as w, boolean as wa, resolvePoolMemoryPolicy as wi, SetTrackRelationInputSchema as wn, eventKindLabel as wr, NC_SENSOR_TRANSITION_KINDS as wt, BirthDecisionRecordSchema as x, ZodObject as xa, resolveModeDelays as xi, SceneMonitorSchema as xn, embeddingRequirementsUnavailableError as xr, NC_GROUPING_DEFAULT_SEC as xt, BIRTH_DECISION_DEFAULT_LIMIT as y, normalizeNodeId as ya, resolveDeliveryParams as yi, SCENE_DIVERGED as yn, embeddingRefusalOf as yr, NC_CONSUMABLE_SYSTEM_EVENT_KINDS as yt, EVENT_OWNER_TYPES as z, errMsg as za, subjectPathSampleFromBox as zi, alarmPanelCapability as zn, isEventOwnerType as zr, NcRulePatchSchema as zt };
|