@camstack/addon-osd-manager 0.1.135 → 0.1.137
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{MotionZonesSettings-DjSGOYEZ.mjs → MotionZonesSettings-B4onRgUN.mjs} +2 -2
- package/dist/{PrivacyMaskSettings-BrJjxUTV.mjs → PrivacyMaskSettings-15mTDT2b.mjs} +4 -4
- package/dist/{SceneMonitorEditor-lFwk-5Ag.mjs → SceneMonitorEditor-DFU0p0mQ.mjs} +3 -3
- package/dist/_stub.js +10 -10
- package/dist/{_virtual_mf-localSharedImportMap___mfe_internal__addon_osd_manager_page-Dk3P7vDo.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_osd_manager_page-CGBPavbq.mjs} +3 -3
- package/dist/_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-CVM3jGoe.mjs +26 -0
- package/dist/{hostInit-C0GXEvIS.mjs → hostInit-jIJC0_ID.mjs} +2 -2
- package/dist/index.js +289 -53
- package/dist/index.mjs +289 -53
- package/dist/{player-overlays-8DJJmri3.mjs → player-overlays-B_ERqzqj.mjs} +1 -1
- package/dist/remoteEntry.js +1 -1
- package/dist/{responsive-BJTLnN-p.mjs → responsive-BOpuh3Lr.mjs} +1 -1
- package/dist/{scene-monitor-copy-CXXU8X6V.mjs → scene-monitor-copy-D5o6-VNM.mjs} +1 -1
- package/dist/{square-CxBZyzy5.mjs → square-oUeZZbza.mjs} +1 -1
- package/dist/{trash-2-CDkpE8nN.mjs → trash-2-BrFLAkuW.mjs} +1 -1
- package/dist/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_osd_manager_page__remoteEntry_js-vuxTr550.mjs → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_osd_manager_page__remoteEntry_js-C-OUB_74.mjs} +1 -1
- package/package.json +1 -1
- package/dist/_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-MNSRdKcG.mjs +0 -26
package/dist/index.mjs
CHANGED
|
@@ -5359,7 +5359,7 @@ var ZodIssueCode = {
|
|
|
5359
5359
|
var ZodFirstPartyTypeKind;
|
|
5360
5360
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5361
5361
|
//#endregion
|
|
5362
|
-
//#region ../types/dist/sleep-
|
|
5362
|
+
//#region ../types/dist/sleep-D_4W7xuQ.mjs
|
|
5363
5363
|
/**
|
|
5364
5364
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5365
5365
|
* window to float samples (D455).
|
|
@@ -7410,7 +7410,10 @@ var deviceOpsCapability = {
|
|
|
7410
7410
|
setConfig: method(object({
|
|
7411
7411
|
deviceId: number(),
|
|
7412
7412
|
values: record(string(), unknown())
|
|
7413
|
-
}), _void(), {
|
|
7413
|
+
}), _void(), {
|
|
7414
|
+
kind: "mutation",
|
|
7415
|
+
auth: "admin"
|
|
7416
|
+
}),
|
|
7414
7417
|
/**
|
|
7415
7418
|
* Invoke a device custom action on a forked/remote device (the
|
|
7416
7419
|
* cross-process transport for `IDevice.runDeviceAction`). Mirrors
|
|
@@ -7427,7 +7430,10 @@ var deviceOpsCapability = {
|
|
|
7427
7430
|
* (close sockets, stop background tasks, …). The device-manager still
|
|
7428
7431
|
* performs its own persistence cleanup before/after this call.
|
|
7429
7432
|
*/
|
|
7430
|
-
removeDevice: method(object({ deviceId: number() }), _void(), {
|
|
7433
|
+
removeDevice: method(object({ deviceId: number() }), _void(), {
|
|
7434
|
+
kind: "mutation",
|
|
7435
|
+
auth: "admin"
|
|
7436
|
+
}),
|
|
7431
7437
|
/**
|
|
7432
7438
|
* Build the ConfigUISchema (FormBuilder input shape) from the device's
|
|
7433
7439
|
* Zod config schema. Runs on the worker that owns the IDevice so the
|
|
@@ -12053,7 +12059,7 @@ var brokerCapability = {
|
|
|
12053
12059
|
}),
|
|
12054
12060
|
/** Read the broker's cached state for a key. Returns `null` when
|
|
12055
12061
|
* unknown to the broker (never published / unknown entity). */
|
|
12056
|
-
getState: method(GetStateInputSchema, unknown().nullable()),
|
|
12062
|
+
getState: method(GetStateInputSchema, unknown().nullable(), { auth: "admin" }),
|
|
12057
12063
|
/** Status method — explicit registration with a `z.void()` input so
|
|
12058
12064
|
* the codegen-generated tRPC router types its input as
|
|
12059
12065
|
* `{addonId?: string, nodeId?: string}` (system-scoped collection
|
|
@@ -13610,6 +13616,16 @@ var CollectionIndexSchema = object({
|
|
|
13610
13616
|
* namespace, or none. Making the door enforce it is tracked separately —
|
|
13611
13617
|
* it renames tables, so it needs a migration.
|
|
13612
13618
|
*
|
|
13619
|
+
* **So every method is `auth: 'admin'` (D634).** Because nothing scopes a
|
|
13620
|
+
* call to its caller, a `protected` method here was a raw, unredacted read
|
|
13621
|
+
* (and write) of every addon's collections for any role holding
|
|
13622
|
+
* `category:system` — which is every role: a `viewer` could read every
|
|
13623
|
+
* notifier token in plaintext from `notifiers:notification-targets`. No
|
|
13624
|
+
* browser or app client calls this cap. Addons are not affected: an
|
|
13625
|
+
* addon's `ctx.api` cap call is resolved to the provider directly and never
|
|
13626
|
+
* enters the tRPC router (so the tier gates sessions and tokens, never
|
|
13627
|
+
* addons), and the hub itself calls it through the capability registry.
|
|
13628
|
+
*
|
|
13613
13629
|
* - `{ collection: 'addon-settings' }` → table `addon-settings`
|
|
13614
13630
|
* - `{ namespace: 'my-addon', collection: 'addon-settings' }` →
|
|
13615
13631
|
* table `my-addon:addon-settings`
|
|
@@ -13631,14 +13647,17 @@ var settingsStoreCapability = {
|
|
|
13631
13647
|
namespace: string().optional(),
|
|
13632
13648
|
collection: string(),
|
|
13633
13649
|
key: string()
|
|
13634
|
-
}), unknown()),
|
|
13650
|
+
}), unknown(), { auth: "admin" }),
|
|
13635
13651
|
/** Set a value by key in a collection (upsert). */
|
|
13636
13652
|
set: method(object({
|
|
13637
13653
|
namespace: string().optional(),
|
|
13638
13654
|
collection: string(),
|
|
13639
13655
|
key: string(),
|
|
13640
13656
|
value: unknown()
|
|
13641
|
-
}), _void(), {
|
|
13657
|
+
}), _void(), {
|
|
13658
|
+
kind: "mutation",
|
|
13659
|
+
auth: "admin"
|
|
13660
|
+
}),
|
|
13642
13661
|
/**
|
|
13643
13662
|
* Rows matching a filter.
|
|
13644
13663
|
*
|
|
@@ -13659,7 +13678,7 @@ var settingsStoreCapability = {
|
|
|
13659
13678
|
collection: string(),
|
|
13660
13679
|
filter: QueryFilterSchema.optional(),
|
|
13661
13680
|
columns: array(string()).readonly().optional()
|
|
13662
|
-
}), array(SettingsRecordSchema).readonly()),
|
|
13681
|
+
}), array(SettingsRecordSchema).readonly(), { auth: "admin" }),
|
|
13663
13682
|
/**
|
|
13664
13683
|
* Make a SLOT hold this row — insert it, or update whatever already
|
|
13665
13684
|
* occupies the slot — and answer with the id the row HAS.
|
|
@@ -13712,7 +13731,10 @@ var settingsStoreCapability = {
|
|
|
13712
13731
|
}), object({
|
|
13713
13732
|
/** The id the row HAS: assigned by SQLite on an insert, or the existing
|
|
13714
13733
|
* row's own id on an update. */
|
|
13715
|
-
id: union([string(), number()]) }), {
|
|
13734
|
+
id: union([string(), number()]) }), {
|
|
13735
|
+
kind: "mutation",
|
|
13736
|
+
auth: "admin"
|
|
13737
|
+
}),
|
|
13716
13738
|
/** Insert a new record. */
|
|
13717
13739
|
insert: method(object({
|
|
13718
13740
|
namespace: string().optional(),
|
|
@@ -13727,7 +13749,10 @@ id: union([string(), number()]) }), { kind: "mutation" }),
|
|
|
13727
13749
|
* for an absent one, or the ROWID SQLite assigned on an `INTEGER`
|
|
13728
13750
|
* primary key — which is the only place an auto key is knowable.
|
|
13729
13751
|
*/
|
|
13730
|
-
id: union([string(), number()]) }), {
|
|
13752
|
+
id: union([string(), number()]) }), {
|
|
13753
|
+
kind: "mutation",
|
|
13754
|
+
auth: "admin"
|
|
13755
|
+
}),
|
|
13731
13756
|
/**
|
|
13732
13757
|
* Insert MANY records in ONE transaction, returning how many landed.
|
|
13733
13758
|
*
|
|
@@ -13755,20 +13780,29 @@ id: union([string(), number()]) }), { kind: "mutation" }),
|
|
|
13755
13780
|
namespace: string().optional(),
|
|
13756
13781
|
collection: string(),
|
|
13757
13782
|
records: array(BulkRecordSchema).readonly()
|
|
13758
|
-
}), object({ inserted: number().int() }), {
|
|
13783
|
+
}), object({ inserted: number().int() }), {
|
|
13784
|
+
kind: "mutation",
|
|
13785
|
+
auth: "admin"
|
|
13786
|
+
}),
|
|
13759
13787
|
/** Update an existing record by ID. */
|
|
13760
13788
|
update: method(object({
|
|
13761
13789
|
namespace: string().optional(),
|
|
13762
13790
|
collection: string(),
|
|
13763
13791
|
id: string(),
|
|
13764
13792
|
data: record(string(), unknown())
|
|
13765
|
-
}), _void(), {
|
|
13793
|
+
}), _void(), {
|
|
13794
|
+
kind: "mutation",
|
|
13795
|
+
auth: "admin"
|
|
13796
|
+
}),
|
|
13766
13797
|
/** Delete a record by key/ID. */
|
|
13767
13798
|
delete: method(object({
|
|
13768
13799
|
namespace: string().optional(),
|
|
13769
13800
|
collection: string(),
|
|
13770
13801
|
key: string()
|
|
13771
|
-
}), _void(), {
|
|
13802
|
+
}), _void(), {
|
|
13803
|
+
kind: "mutation",
|
|
13804
|
+
auth: "admin"
|
|
13805
|
+
}),
|
|
13772
13806
|
/**
|
|
13773
13807
|
* Delete every record matching `filter`, in ONE statement, returning how
|
|
13774
13808
|
* many rows went. This exists because its absence made every retention
|
|
@@ -13787,7 +13821,10 @@ id: union([string(), number()]) }), { kind: "mutation" }),
|
|
|
13787
13821
|
namespace: string().optional(),
|
|
13788
13822
|
collection: string(),
|
|
13789
13823
|
filter: MutationFilterSchema
|
|
13790
|
-
}), object({ deleted: number().int() }), {
|
|
13824
|
+
}), object({ deleted: number().int() }), {
|
|
13825
|
+
kind: "mutation",
|
|
13826
|
+
auth: "admin"
|
|
13827
|
+
}),
|
|
13791
13828
|
/**
|
|
13792
13829
|
* Apply `data` to every record matching `filter`, in one statement,
|
|
13793
13830
|
* returning how many rows changed. Same filter contract as
|
|
@@ -13798,13 +13835,16 @@ id: union([string(), number()]) }), { kind: "mutation" }),
|
|
|
13798
13835
|
collection: string(),
|
|
13799
13836
|
filter: MutationFilterSchema,
|
|
13800
13837
|
data: record(string(), unknown())
|
|
13801
|
-
}), object({ updated: number().int() }), {
|
|
13838
|
+
}), object({ updated: number().int() }), {
|
|
13839
|
+
kind: "mutation",
|
|
13840
|
+
auth: "admin"
|
|
13841
|
+
}),
|
|
13802
13842
|
/** Count entries in a collection, optionally filtered. */
|
|
13803
13843
|
count: method(object({
|
|
13804
13844
|
namespace: string().optional(),
|
|
13805
13845
|
collection: string(),
|
|
13806
13846
|
filter: QueryFilterSchema.optional()
|
|
13807
|
-
}), number()),
|
|
13847
|
+
}), number(), { auth: "admin" }),
|
|
13808
13848
|
/**
|
|
13809
13849
|
* `COUNT(*)` and one `SUM` / `MIN` / `MAX` per requested field, in ONE
|
|
13810
13850
|
* statement, over the rows `filter` selects.
|
|
@@ -13830,7 +13870,7 @@ id: union([string(), number()]) }), { kind: "mutation" }),
|
|
|
13830
13870
|
collection: string(),
|
|
13831
13871
|
fields: array(AggregateFieldSchema).readonly(),
|
|
13832
13872
|
filter: QueryFilterSchema.optional()
|
|
13833
|
-
}), AggregateResultSchema),
|
|
13873
|
+
}), AggregateResultSchema, { auth: "admin" }),
|
|
13834
13874
|
/** Grouped counts per ((field-origin)/bucketSize) bucket, filtered. */
|
|
13835
13875
|
histogram: method(object({
|
|
13836
13876
|
namespace: string().optional(),
|
|
@@ -13842,12 +13882,12 @@ id: union([string(), number()]) }), { kind: "mutation" }),
|
|
|
13842
13882
|
}), array(object({
|
|
13843
13883
|
bucket: number().int(),
|
|
13844
13884
|
count: number().int()
|
|
13845
|
-
})).readonly()),
|
|
13885
|
+
})).readonly(), { auth: "admin" }),
|
|
13846
13886
|
/** Check if a collection is empty. */
|
|
13847
13887
|
isEmpty: method(object({
|
|
13848
13888
|
namespace: string().optional(),
|
|
13849
13889
|
collection: string()
|
|
13850
|
-
}), boolean()),
|
|
13890
|
+
}), boolean(), { auth: "admin" }),
|
|
13851
13891
|
/**
|
|
13852
13892
|
* Declare a typed (SQL-backed) collection with explicit columns +
|
|
13853
13893
|
* indexes. Idempotent: re-declaring an existing collection with the
|
|
@@ -13868,7 +13908,10 @@ id: union([string(), number()]) }), { kind: "mutation" }),
|
|
|
13868
13908
|
collection: string(),
|
|
13869
13909
|
columns: array(CollectionColumnSchema).readonly(),
|
|
13870
13910
|
indexes: array(CollectionIndexSchema).readonly().optional()
|
|
13871
|
-
}), _void(), {
|
|
13911
|
+
}), _void(), {
|
|
13912
|
+
kind: "mutation",
|
|
13913
|
+
auth: "admin"
|
|
13914
|
+
})
|
|
13872
13915
|
}
|
|
13873
13916
|
};
|
|
13874
13917
|
/**
|
|
@@ -14813,8 +14856,14 @@ var deviceExportCapability = {
|
|
|
14813
14856
|
getStatus: method(_void(), DeviceExportStatusSchema),
|
|
14814
14857
|
listSupportedDeviceKinds: method(_void(), array(DeviceKindSchema)),
|
|
14815
14858
|
listExposedDevices: method(_void(), array(ExposedDeviceSchema)),
|
|
14816
|
-
exposeDevice: method(ExposeInputSchema, _void(), {
|
|
14817
|
-
|
|
14859
|
+
exposeDevice: method(ExposeInputSchema, _void(), {
|
|
14860
|
+
kind: "mutation",
|
|
14861
|
+
auth: "admin"
|
|
14862
|
+
}),
|
|
14863
|
+
unexposeDevice: method(UnexposeInputSchema, _void(), {
|
|
14864
|
+
kind: "mutation",
|
|
14865
|
+
auth: "admin"
|
|
14866
|
+
})
|
|
14818
14867
|
}
|
|
14819
14868
|
};
|
|
14820
14869
|
/** Wire/storage schema for one icon id. */
|
|
@@ -15445,11 +15494,14 @@ var deviceManagerCapability = {
|
|
|
15445
15494
|
/** Remove a device from the DB + in-memory registry. Called by DeviceManagerApi.remove(). */
|
|
15446
15495
|
removeDevice: method(DeviceRemovePayloadSchema, _void(), { kind: "mutation" }),
|
|
15447
15496
|
/** Persist device config blob. Called by DeviceConfig.set/setAll(). */
|
|
15448
|
-
persistConfig: method(DevicePersistConfigPayloadSchema, _void(), {
|
|
15497
|
+
persistConfig: method(DevicePersistConfigPayloadSchema, _void(), {
|
|
15498
|
+
kind: "mutation",
|
|
15499
|
+
auth: "admin"
|
|
15500
|
+
}),
|
|
15449
15501
|
/** Load persisted config for a device. Called at restore time. */
|
|
15450
|
-
loadConfig: method(object({ deviceId: number() }), record(string(), unknown())),
|
|
15502
|
+
loadConfig: method(object({ deviceId: number() }), record(string(), unknown()), { auth: "admin" }),
|
|
15451
15503
|
/** Load persisted runtime state. Called at device adopt time. */
|
|
15452
|
-
loadRuntimeState: method(object({ deviceId: number() }), record(string(), unknown())),
|
|
15504
|
+
loadRuntimeState: method(object({ deviceId: number() }), record(string(), unknown()), { auth: "admin" }),
|
|
15453
15505
|
/** Load operator-organisational meta surface for a device. Called by
|
|
15454
15506
|
* the kernel proxy to populate `DeviceContext.deviceMeta` before
|
|
15455
15507
|
* the device class constructor runs. Returns `null` when the id
|
|
@@ -16014,6 +16066,23 @@ var deviceManagerCapability = {
|
|
|
16014
16066
|
*/
|
|
16015
16067
|
getAllBindings: method(object({}), array(DeviceBindingsForDeviceSchema)),
|
|
16016
16068
|
/**
|
|
16069
|
+
* The ids of every device bound to AT LEAST ONE of `capNames` — ids only,
|
|
16070
|
+
* ascending (D636).
|
|
16071
|
+
*
|
|
16072
|
+
* The targeted form of "which devices are openings / carry a battery":
|
|
16073
|
+
* before it, the alarm's household scan and the battery section's picker
|
|
16074
|
+
* read the whole fleet (~433 KB slim) and then `getBindingsBatch` over
|
|
16075
|
+
* ~900 ids in five calls. Same resolver as `getBindings` (so a WRAPPED
|
|
16076
|
+
* binding counts exactly as the routing does), walked server-side like
|
|
16077
|
+
* `getAllBindings`; only the matching ids cross the wire. Names are the
|
|
16078
|
+
* caller's to resolve with the targeted `listAll({ deviceIds })`.
|
|
16079
|
+
*
|
|
16080
|
+
* Tier: `protected`, like its siblings `getBindings` / `getBindingsBatch` /
|
|
16081
|
+
* `getAllBindings` — which devices carry a cap is routing metadata every
|
|
16082
|
+
* signed-in client already reads, and it reveals nothing those do not.
|
|
16083
|
+
*/
|
|
16084
|
+
listDeviceIdsByCaps: method(object({ capNames: array(string().min(1)).min(1).max(16) }), array(number())),
|
|
16085
|
+
/**
|
|
16017
16086
|
* Activate (or deactivate) a wrapper addon for a (device, cap) pair — the
|
|
16018
16087
|
* per-camera function switch's ONE authority (D62).
|
|
16019
16088
|
*
|
|
@@ -18098,12 +18167,27 @@ var mqttBrokerCapability = {
|
|
|
18098
18167
|
},
|
|
18099
18168
|
methods: {
|
|
18100
18169
|
listBrokers: method(_void(), array(BrokerInfoSchema)),
|
|
18101
|
-
getBrokerConfig: method(IdInputSchema, BrokerConnectionDetailsSchema),
|
|
18102
|
-
addBroker: method(AddBrokerInputSchema, AddBrokerResultSchema, {
|
|
18103
|
-
|
|
18104
|
-
|
|
18105
|
-
|
|
18106
|
-
|
|
18170
|
+
getBrokerConfig: method(IdInputSchema, BrokerConnectionDetailsSchema, { auth: "admin" }),
|
|
18171
|
+
addBroker: method(AddBrokerInputSchema, AddBrokerResultSchema, {
|
|
18172
|
+
kind: "mutation",
|
|
18173
|
+
auth: "admin"
|
|
18174
|
+
}),
|
|
18175
|
+
removeBroker: method(IdInputSchema, _void(), {
|
|
18176
|
+
kind: "mutation",
|
|
18177
|
+
auth: "admin"
|
|
18178
|
+
}),
|
|
18179
|
+
testConnection: method(IdInputSchema, TestResultSchema$1, {
|
|
18180
|
+
kind: "mutation",
|
|
18181
|
+
auth: "admin"
|
|
18182
|
+
}),
|
|
18183
|
+
startEmbeddedBroker: method(StartEmbeddedInputSchema, StartEmbeddedResultSchema, {
|
|
18184
|
+
kind: "mutation",
|
|
18185
|
+
auth: "admin"
|
|
18186
|
+
}),
|
|
18187
|
+
stopEmbeddedBroker: method(IdInputSchema, _void(), {
|
|
18188
|
+
kind: "mutation",
|
|
18189
|
+
auth: "admin"
|
|
18190
|
+
}),
|
|
18107
18191
|
getStatus: method(_void(), StatusSchema)
|
|
18108
18192
|
}
|
|
18109
18193
|
};
|
|
@@ -18418,6 +18502,18 @@ var TargetKindSchema = object({
|
|
|
18418
18502
|
*/
|
|
18419
18503
|
iconMediaType: string().optional(),
|
|
18420
18504
|
configSchema: ConfigSchemaPassthrough,
|
|
18505
|
+
/**
|
|
18506
|
+
* The config keys that decide WHERE this kind's secrets are sent (server,
|
|
18507
|
+
* base URL, instance, chat, recipient). A save that changes any of them
|
|
18508
|
+
* while leaving a secret redacted is refused by the provider (D634), so an
|
|
18509
|
+
* editor uses this to ask for the secret on exactly those edits instead of
|
|
18510
|
+
* on every edit.
|
|
18511
|
+
*
|
|
18512
|
+
* Optional: absent from a provider that holds no secret (the Home Assistant
|
|
18513
|
+
* kinds) and from a provider older than this field — an editor that finds
|
|
18514
|
+
* it absent must assume ANY edit may need the secret.
|
|
18515
|
+
*/
|
|
18516
|
+
destinationKeys: array(string()).optional(),
|
|
18421
18517
|
supportsDiscovery: boolean(),
|
|
18422
18518
|
caps: TargetKindCapsSchema
|
|
18423
18519
|
});
|
|
@@ -18462,25 +18558,40 @@ var notificationOutputCapability = {
|
|
|
18462
18558
|
mode: "collection",
|
|
18463
18559
|
methods: {
|
|
18464
18560
|
listTargetKinds: method(object({}), array(TargetKindSchema)),
|
|
18465
|
-
listTargets: method(object({}), array(TargetSchema)),
|
|
18561
|
+
listTargets: method(object({}), array(TargetSchema), { auth: "admin" }),
|
|
18466
18562
|
discoverTargets: method(object({
|
|
18467
18563
|
kind: string(),
|
|
18468
18564
|
config: record(string(), unknown()).optional()
|
|
18469
|
-
}), array(DiscoveredTargetSchema)),
|
|
18565
|
+
}), array(DiscoveredTargetSchema), { auth: "admin" }),
|
|
18470
18566
|
send: method(object({
|
|
18471
18567
|
targetId: string(),
|
|
18472
18568
|
notification: NotificationSchema
|
|
18473
|
-
}), SendResultSchema, {
|
|
18569
|
+
}), SendResultSchema, {
|
|
18570
|
+
kind: "mutation",
|
|
18571
|
+
auth: "admin"
|
|
18572
|
+
}),
|
|
18474
18573
|
testTarget: method(object({
|
|
18475
18574
|
targetId: string(),
|
|
18476
18575
|
sample: NotificationSchema.optional()
|
|
18477
|
-
}), TestResultSchema, {
|
|
18478
|
-
|
|
18479
|
-
|
|
18576
|
+
}), TestResultSchema, {
|
|
18577
|
+
kind: "mutation",
|
|
18578
|
+
auth: "admin"
|
|
18579
|
+
}),
|
|
18580
|
+
upsertTarget: method(object({ target: TargetSchema }), TargetSchema, {
|
|
18581
|
+
kind: "mutation",
|
|
18582
|
+
auth: "admin"
|
|
18583
|
+
}),
|
|
18584
|
+
deleteTarget: method(object({ targetId: string() }), _void(), {
|
|
18585
|
+
kind: "mutation",
|
|
18586
|
+
auth: "admin"
|
|
18587
|
+
}),
|
|
18480
18588
|
setTargetEnabled: method(object({
|
|
18481
18589
|
targetId: string(),
|
|
18482
18590
|
enabled: boolean()
|
|
18483
|
-
}), _void(), {
|
|
18591
|
+
}), _void(), {
|
|
18592
|
+
kind: "mutation",
|
|
18593
|
+
auth: "admin"
|
|
18594
|
+
})
|
|
18484
18595
|
}
|
|
18485
18596
|
};
|
|
18486
18597
|
new Set([
|
|
@@ -19363,6 +19474,19 @@ var NcSystemEventConditionSchema = object({
|
|
|
19363
19474
|
* does not carry) matches no `deviceTypes` list.
|
|
19364
19475
|
*/
|
|
19365
19476
|
deviceTypes: array(string().min(1)).min(1).optional(),
|
|
19477
|
+
/**
|
|
19478
|
+
* Devices this rule NEVER speaks about, whatever else matched. Scoped to the
|
|
19479
|
+
* same kind family as `deviceIds` (`systemEventFilterApplies(kind,
|
|
19480
|
+
* 'deviceIds')`) and applied AFTER it: include first, then exclude. A
|
|
19481
|
+
* consumable subject (`consumable:<id>:<key>`) is excluded by its device id.
|
|
19482
|
+
*
|
|
19483
|
+
* It never fails closed: a subject that carries no device id is not in the
|
|
19484
|
+
* list, so it is not excluded. "Every battery except the one thermometer that
|
|
19485
|
+
* reads 0 % forever" is the question this answers — expressed as an include
|
|
19486
|
+
* list it would have to name every other battery device, and every device
|
|
19487
|
+
* adopted later would be silently left out (D636).
|
|
19488
|
+
*/
|
|
19489
|
+
excludeDeviceIds: array(number().int()).min(1).optional(),
|
|
19366
19490
|
nodeIds: array(string().min(1)).min(1).optional(),
|
|
19367
19491
|
packageNames: array(string().min(1)).min(1).optional()
|
|
19368
19492
|
});
|
|
@@ -20554,6 +20678,14 @@ var NC_CONDITION_CATALOG = [
|
|
|
20554
20678
|
value: "server-updated",
|
|
20555
20679
|
label: "Server updated"
|
|
20556
20680
|
},
|
|
20681
|
+
{
|
|
20682
|
+
value: "device-battery-low",
|
|
20683
|
+
label: "Battery low"
|
|
20684
|
+
},
|
|
20685
|
+
{
|
|
20686
|
+
value: "device-battery-normal",
|
|
20687
|
+
label: "Battery back to normal"
|
|
20688
|
+
},
|
|
20557
20689
|
{
|
|
20558
20690
|
value: "device-consumable-low",
|
|
20559
20691
|
label: "Consumable low"
|
|
@@ -28128,54 +28260,78 @@ var storageCapability = {
|
|
|
28128
28260
|
resolve: method(object({
|
|
28129
28261
|
location: StorageLocationRefSchema,
|
|
28130
28262
|
relativePath: string()
|
|
28131
|
-
}), string()),
|
|
28263
|
+
}), string(), { auth: "admin" }),
|
|
28132
28264
|
write: method(object({
|
|
28133
28265
|
location: StorageLocationRefSchema,
|
|
28134
28266
|
relativePath: string(),
|
|
28135
28267
|
data: _instanceof(Uint8Array)
|
|
28136
|
-
}), _void(), {
|
|
28268
|
+
}), _void(), {
|
|
28269
|
+
kind: "mutation",
|
|
28270
|
+
auth: "admin"
|
|
28271
|
+
}),
|
|
28137
28272
|
read: method(object({
|
|
28138
28273
|
location: StorageLocationRefSchema,
|
|
28139
28274
|
relativePath: string()
|
|
28140
|
-
}), _instanceof(Uint8Array)),
|
|
28275
|
+
}), _instanceof(Uint8Array), { auth: "admin" }),
|
|
28141
28276
|
exists: method(object({
|
|
28142
28277
|
location: StorageLocationRefSchema,
|
|
28143
28278
|
relativePath: string()
|
|
28144
|
-
}), boolean()),
|
|
28279
|
+
}), boolean(), { auth: "admin" }),
|
|
28145
28280
|
list: method(object({
|
|
28146
28281
|
location: StorageLocationRefSchema,
|
|
28147
28282
|
prefix: string().optional()
|
|
28148
|
-
}), array(string()).readonly()),
|
|
28283
|
+
}), array(string()).readonly(), { auth: "admin" }),
|
|
28149
28284
|
delete: method(object({
|
|
28150
28285
|
location: StorageLocationRefSchema,
|
|
28151
28286
|
relativePath: string()
|
|
28152
|
-
}), _void(), {
|
|
28287
|
+
}), _void(), {
|
|
28288
|
+
kind: "mutation",
|
|
28289
|
+
auth: "admin"
|
|
28290
|
+
}),
|
|
28153
28291
|
getAvailableSpace: method(object({ location: StorageLocationRefSchema }), number().nullable()),
|
|
28154
28292
|
beginUpload: method(object({
|
|
28155
28293
|
location: StorageLocationRefSchema,
|
|
28156
28294
|
relativePath: string(),
|
|
28157
28295
|
sizeBytes: number().optional()
|
|
28158
|
-
}), object({ uploadId: string() }), {
|
|
28296
|
+
}), object({ uploadId: string() }), {
|
|
28297
|
+
kind: "mutation",
|
|
28298
|
+
auth: "admin"
|
|
28299
|
+
}),
|
|
28159
28300
|
writeChunk: method(object({
|
|
28160
28301
|
uploadId: string(),
|
|
28161
28302
|
offset: number(),
|
|
28162
28303
|
data: _instanceof(Uint8Array)
|
|
28163
|
-
}), _void(), {
|
|
28164
|
-
|
|
28165
|
-
|
|
28304
|
+
}), _void(), {
|
|
28305
|
+
kind: "mutation",
|
|
28306
|
+
auth: "admin"
|
|
28307
|
+
}),
|
|
28308
|
+
finalizeUpload: method(object({ uploadId: string() }), _void(), {
|
|
28309
|
+
kind: "mutation",
|
|
28310
|
+
auth: "admin"
|
|
28311
|
+
}),
|
|
28312
|
+
abortUpload: method(object({ uploadId: string() }), _void(), {
|
|
28313
|
+
kind: "mutation",
|
|
28314
|
+
auth: "admin"
|
|
28315
|
+
}),
|
|
28166
28316
|
beginDownload: method(object({
|
|
28167
28317
|
location: StorageLocationRefSchema,
|
|
28168
28318
|
relativePath: string()
|
|
28169
28319
|
}), object({
|
|
28170
28320
|
downloadId: string(),
|
|
28171
28321
|
sizeBytes: number()
|
|
28172
|
-
}), {
|
|
28322
|
+
}), {
|
|
28323
|
+
kind: "mutation",
|
|
28324
|
+
auth: "admin"
|
|
28325
|
+
}),
|
|
28173
28326
|
readChunk: method(object({
|
|
28174
28327
|
downloadId: string(),
|
|
28175
28328
|
offset: number(),
|
|
28176
28329
|
length: number()
|
|
28177
|
-
}), _instanceof(Uint8Array)),
|
|
28178
|
-
endDownload: method(object({ downloadId: string() }), _void(), {
|
|
28330
|
+
}), _instanceof(Uint8Array), { auth: "admin" }),
|
|
28331
|
+
endDownload: method(object({ downloadId: string() }), _void(), {
|
|
28332
|
+
kind: "mutation",
|
|
28333
|
+
auth: "admin"
|
|
28334
|
+
}),
|
|
28179
28335
|
listLocations: method(object({ type: StorageLocationTypeSchema.optional() }), array(StorageLocationSchema).readonly()),
|
|
28180
28336
|
listLocationDeclarations: method(_void(), array(StorageLocationDeclarationSchema).readonly()),
|
|
28181
28337
|
upsertLocation: method(StorageLocationSchema.omit({
|
|
@@ -30263,7 +30419,67 @@ var WebrtcLadderDecisionSchema = object({
|
|
|
30263
30419
|
serverSending: boolean().nullable(),
|
|
30264
30420
|
/** Epoch ms. The overlay prints its age; a decision from 40 minutes ago
|
|
30265
30421
|
* must not read like one from this second. */
|
|
30266
|
-
at: number()
|
|
30422
|
+
at: number(),
|
|
30423
|
+
/** The broker's own cause when it is finer than `cause` can carry, e.g.
|
|
30424
|
+
* `trial-revert` (reported as `stall`/`loss` for older consumers). Optional:
|
|
30425
|
+
* an older server strips it instead of rejecting the answer. */
|
|
30426
|
+
causeDetail: string().optional()
|
|
30427
|
+
});
|
|
30428
|
+
var WebrtcClimbHoldSchema = object({
|
|
30429
|
+
/** `stall-building` — the client receives ≪ what is sent; `delivery` — the
|
|
30430
|
+
* current rung is not landing whole; `no-evidence` — no receiver feedback;
|
|
30431
|
+
* `warming` — healthy, accumulating the streak; `cooldown` — too soon after
|
|
30432
|
+
* a change; `capacity` — a MEASURED probe below the next rung's bar;
|
|
30433
|
+
* `try-unclean` — no capacity evidence, and the path is not clean enough to
|
|
30434
|
+
* try; `try-backoff` — a try reverted, waiting out its backoff; `trial` —
|
|
30435
|
+
* this rung IS a try, reverting if it does not land; `suspended` —
|
|
30436
|
+
* recorded playback on the track. */
|
|
30437
|
+
code: string(),
|
|
30438
|
+
/** The rung a climb would go to. */
|
|
30439
|
+
nextTier: CamProfileSchema,
|
|
30440
|
+
/** Bytes received ÷ bytes sent over the delivery window (≥ one GOP). */
|
|
30441
|
+
deliveryRatio: number().nullable(),
|
|
30442
|
+
deliveryWindowMs: number().nullable(),
|
|
30443
|
+
/** The ratio a climb requires. */
|
|
30444
|
+
climbDeliveryRatio: number(),
|
|
30445
|
+
/** The receiver's bandwidth estimate (REMB), kbps. Capped by what is sent. */
|
|
30446
|
+
capacityKbps: number().nullable(),
|
|
30447
|
+
/** The viewer's downlink probe for this session, kbps. */
|
|
30448
|
+
probeKbps: number().nullable(),
|
|
30449
|
+
/** The next rung's measured bitrate, kbps. */
|
|
30450
|
+
nextTierKbps: number().nullable(),
|
|
30451
|
+
capacityMargin: number(),
|
|
30452
|
+
/** The capacity a climb to `nextTier` needs, kbps (bitrate × margin, or the
|
|
30453
|
+
* client ladder threshold when the rung has measured nothing). */
|
|
30454
|
+
neededKbps: number().nullable(),
|
|
30455
|
+
/** For `try-unclean`: which clean-path condition failed (a `WebrtcTryBlocker`,
|
|
30456
|
+
* carried as a string for the same reason as `code`). */
|
|
30457
|
+
tryBlockedBy: string().nullable(),
|
|
30458
|
+
/** The delivery ratio and the loss ratio a try requires / must stay under.
|
|
30459
|
+
* Optional, like every field added to this schema after it first shipped:
|
|
30460
|
+
* the router validates output, so a REQUIRED new field makes a newer server
|
|
30461
|
+
* reject an older broker's whole answer (review m1). */
|
|
30462
|
+
tryDeliveryRatio: number().optional(),
|
|
30463
|
+
tryMaxLossRatio: number().optional(),
|
|
30464
|
+
/** For `try-backoff`: time until the next try, ms. */
|
|
30465
|
+
retryInMs: number().nullable(),
|
|
30466
|
+
/** The last try that reverted in this viewer session. */
|
|
30467
|
+
lastRevert: object({
|
|
30468
|
+
tier: CamProfileSchema,
|
|
30469
|
+
deliveryRatio: number().nullable(),
|
|
30470
|
+
stalled: boolean(),
|
|
30471
|
+
at: number()
|
|
30472
|
+
}).nullable(),
|
|
30473
|
+
/** For `trial`: how long this rung has been on trial, and for how long it must hold. */
|
|
30474
|
+
trialForMs: number().nullable(),
|
|
30475
|
+
trialMs: number().nullable(),
|
|
30476
|
+
healthyForMs: number().nullable(),
|
|
30477
|
+
requiredHealthyMs: number().nullable(),
|
|
30478
|
+
/** Epoch ms this hold's code began. */
|
|
30479
|
+
since: number(),
|
|
30480
|
+
/** The same one-line account the broker logs, e.g.
|
|
30481
|
+
* `held: delivery 0.97 over 4.0s ok, REMB 480 kbps < mid 1800 kbps × 1.2`. */
|
|
30482
|
+
summary: string()
|
|
30267
30483
|
});
|
|
30268
30484
|
/** Per-tier count of MEASURED downgrades this viewer session has suffered. */
|
|
30269
30485
|
var WebrtcTierFailureSchema = object({
|
|
@@ -30327,7 +30543,12 @@ var WebrtcSessionDebugSchema = object({
|
|
|
30327
30543
|
tierFailures: array(WebrtcTierFailureSchema),
|
|
30328
30544
|
/** Successful promotions in this viewer session (drives the progressive
|
|
30329
30545
|
* healthy timer). Null when no ladder is running. */
|
|
30330
|
-
upgradeCount: number().nullable()
|
|
30546
|
+
upgradeCount: number().nullable(),
|
|
30547
|
+
/** Why the ladder is not climbing right now. Null when no ladder runs, it
|
|
30548
|
+
* is at the top rung, or it just moved. Optional because this output is
|
|
30549
|
+
* validated by the router: a server carrying this schema must still accept
|
|
30550
|
+
* the answer of a stream-broker deployed before the field existed. */
|
|
30551
|
+
climbHold: WebrtcClimbHoldSchema.nullable().optional()
|
|
30331
30552
|
});
|
|
30332
30553
|
/**
|
|
30333
30554
|
* WebRTC session — device-scoped facade over the system `webrtc` cap.
|
|
@@ -36176,6 +36397,11 @@ var ClientNetworkStatsSchema = object({
|
|
|
36176
36397
|
jitterMs: number(),
|
|
36177
36398
|
estimatedBandwidthKbps: number(),
|
|
36178
36399
|
packetLossPercent: number().min(0).max(100),
|
|
36400
|
+
/** The viewer's latest `/adaptive-probe` reading, Mbps — whatever it read
|
|
36401
|
+
* (D635 I4). Absent when it never probed or the probe failed (unknown). */
|
|
36402
|
+
downlinkMbps: number().optional(),
|
|
36403
|
+
/** Age of that reading when this report was sent, ms. */
|
|
36404
|
+
downlinkAgeMs: number().optional(),
|
|
36179
36405
|
lastUpdated: number()
|
|
36180
36406
|
});
|
|
36181
36407
|
var DeviceNetworkStatsSchema = object({
|
|
@@ -36195,7 +36421,11 @@ var networkQualityCapability = {
|
|
|
36195
36421
|
rttMs: number().min(0).max(6e4),
|
|
36196
36422
|
jitterMs: number().min(0).max(1e4),
|
|
36197
36423
|
estimatedBandwidthKbps: number().min(0).max(1e6),
|
|
36198
|
-
packetLossPercent: number().min(0).max(100)
|
|
36424
|
+
packetLossPercent: number().min(0).max(100),
|
|
36425
|
+
/** Latest downlink probe, Mbps, whatever it read; absent = never / failed. */
|
|
36426
|
+
downlinkMbps: number().min(0).max(1e5).optional(),
|
|
36427
|
+
/** Age of that probe when this report is sent, ms. */
|
|
36428
|
+
downlinkAgeMs: number().min(0).max(864e5).optional()
|
|
36199
36429
|
}), _void(), { kind: "mutation" })
|
|
36200
36430
|
},
|
|
36201
36431
|
/** BIG PLAN 2: declarative mount hint — read by `@camstack/system` `buildCapRouters`. */
|
|
@@ -45871,6 +46101,12 @@ Object.freeze({
|
|
|
45871
46101
|
addonId: null,
|
|
45872
46102
|
access: "view"
|
|
45873
46103
|
},
|
|
46104
|
+
"deviceManager.listDeviceIdsByCaps": {
|
|
46105
|
+
capName: "device-manager",
|
|
46106
|
+
capScope: "system",
|
|
46107
|
+
addonId: null,
|
|
46108
|
+
access: "view"
|
|
46109
|
+
},
|
|
45874
46110
|
"deviceManager.listLocationDescriptions": {
|
|
45875
46111
|
capName: "device-manager",
|
|
45876
46112
|
capScope: "system",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { h as e, l as t, u as n, y as r } from "./_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare__react__loadShare__.js-Bs1t18EM.mjs";
|
|
2
|
-
import { o as i, s as a } from "./responsive-
|
|
2
|
+
import { o as i, s as a } from "./responsive-BOpuh3Lr.mjs";
|
|
3
3
|
import { n as o, r as s, t as c } from "./_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.js-DalfdIDw.mjs";
|
|
4
4
|
var l = a("chevron-down", [["path", {
|
|
5
5
|
d: "m6 9 6 6 6-6",
|
package/dist/remoteEntry.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as e, t } from "./virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_osd_manager_page__remoteEntry_js-
|
|
1
|
+
import { n as e, t } from "./virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_osd_manager_page__remoteEntry_js-C-OUB_74.mjs";
|
|
2
2
|
export { t as get, e as init };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { c as e, g as t, h as n, l as r, n as i, p as a, r as o, t as s, u as c, y as l } from "./_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare__react__loadShare__.js-Bs1t18EM.mjs";
|
|
2
2
|
import "./_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.js-DalfdIDw.mjs";
|
|
3
|
-
import { n as u } from "./_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-
|
|
3
|
+
import { n as u } from "./_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-CVM3jGoe.mjs";
|
|
4
4
|
//#region ../../node_modules/lucide-react/dist/esm/shared/src/utils/mergeClasses.js
|
|
5
5
|
l();
|
|
6
6
|
var d = (...e) => e.filter((e, t, n) => !!e && e.trim() !== "" && n.indexOf(e) === t).join(" ").trim(), f = (e) => e.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase(), p = (e) => e.replace(/^([A-Z])|[\s-_]+(\w)/g, (e, t, n) => n ? n.toUpperCase() : t.toLowerCase()), m = (e) => {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { c as e, h as t, p as n, y as r } from "./_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare__react__loadShare__.js-Bs1t18EM.mjs";
|
|
2
|
-
import { s as i } from "./responsive-
|
|
2
|
+
import { s as i } from "./responsive-BOpuh3Lr.mjs";
|
|
3
3
|
var a = i("camera", [["path", {
|
|
4
4
|
d: "M13.997 4a2 2 0 0 1 1.76 1.05l.486.9A2 2 0 0 0 18.003 7H20a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V9a2 2 0 0 1 2-2h1.997a2 2 0 0 0 1.759-1.048l.489-.904A2 2 0 0 1 10.004 4z",
|
|
5
5
|
key: "18u6gg"
|
|
@@ -2753,7 +2753,7 @@ async function rr(e) {
|
|
|
2753
2753
|
}
|
|
2754
2754
|
}
|
|
2755
2755
|
async function ir() {
|
|
2756
|
-
return tr ||= rr(() => import("./_virtual_mf-localSharedImportMap___mfe_internal__addon_osd_manager_page-
|
|
2756
|
+
return tr ||= rr(() => import("./_virtual_mf-localSharedImportMap___mfe_internal__addon_osd_manager_page-CGBPavbq.mjs")).catch((e) => {
|
|
2757
2757
|
throw tr = void 0, e;
|
|
2758
2758
|
}), tr;
|
|
2759
2759
|
}
|