@camstack/addon-provider-rademacher 0.2.40 → 0.2.41
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/addon.js +33 -6
- package/dist/addon.mjs +33 -6
- package/package.json +1 -1
package/dist/addon.js
CHANGED
|
@@ -25927,6 +25927,33 @@ var intercomCapability = {
|
|
|
25927
25927
|
deviceNative: true,
|
|
25928
25928
|
mode: "singleton",
|
|
25929
25929
|
deviceTypes: [DeviceType.Camera],
|
|
25930
|
+
/**
|
|
25931
|
+
* **Auth tier: `protected` on every method — deliberate, and load-bearing.**
|
|
25932
|
+
*
|
|
25933
|
+
* Talking through a camera is an OPERATE action, not a CONFIGURE one. This
|
|
25934
|
+
* cap has no configuration surface at all: all six methods open, feed and
|
|
25935
|
+
* close one live audio session against one `deviceId`. That is the same
|
|
25936
|
+
* authority as `ptz.move` or `snapshot.getSnapshot`, both `protected` — and
|
|
25937
|
+
* the opposite of `ptz.savePreset` / `snapshot.invalidateCache`, which are
|
|
25938
|
+
* `admin` because they change what the device IS.
|
|
25939
|
+
*
|
|
25940
|
+
* `protected` does not mean ungated: `protectedProcedure` runs the
|
|
25941
|
+
* `METHOD_ACCESS_MAP` scope check, and every method here is `scope: 'device'`
|
|
25942
|
+
* with `access: 'create'` and a `deviceId` in its input. So a caller needs a
|
|
25943
|
+
* grant that covers THAT camera at `create` — a `camera-viewer` (`view`
|
|
25944
|
+
* only) still cannot talk, and a grant on camera 5 cannot talk through
|
|
25945
|
+
* camera 7.
|
|
25946
|
+
*
|
|
25947
|
+
* Every method was `auth: 'admin'` from the initial commit, which made the
|
|
25948
|
+
* cap unreachable by every non-admin principal — `adminProcedure` throws
|
|
25949
|
+
* `FORBIDDEN: Admin required` BEFORE the scope check runs, so the scope
|
|
25950
|
+
* machinery generated for this cap (`METHOD_ACCESS_MAP`,
|
|
25951
|
+
* `DEVICE_SCOPED_CAPS`, `METHOD_DEVICE_SELECTORS`) was complete and dead. The
|
|
25952
|
+
* `camera-operator` scope preset has promised "PTZ control, intercom,
|
|
25953
|
+
* snapshots" since that same commit; the promise could not be kept. Recorded
|
|
25954
|
+
* as D289; `scripts/check-scope-preset-promises.ts` now fails the build if a
|
|
25955
|
+
* preset promises a cap no row of that preset can reach.
|
|
25956
|
+
*/
|
|
25930
25957
|
methods: {
|
|
25931
25958
|
/**
|
|
25932
25959
|
* Open a server-side WebRTC audio-only session. Returns an SDP
|
|
@@ -25939,7 +25966,7 @@ var intercomCapability = {
|
|
|
25939
25966
|
sdpOffer: string()
|
|
25940
25967
|
}), {
|
|
25941
25968
|
kind: "mutation",
|
|
25942
|
-
auth: "
|
|
25969
|
+
auth: "protected"
|
|
25943
25970
|
}),
|
|
25944
25971
|
handleAnswer: method(object({
|
|
25945
25972
|
deviceId: number(),
|
|
@@ -25947,7 +25974,7 @@ var intercomCapability = {
|
|
|
25947
25974
|
sdpAnswer: string()
|
|
25948
25975
|
}), _void(), {
|
|
25949
25976
|
kind: "mutation",
|
|
25950
|
-
auth: "
|
|
25977
|
+
auth: "protected"
|
|
25951
25978
|
}),
|
|
25952
25979
|
/** Close explicitly. Server also auto-closes on 30s idle. */
|
|
25953
25980
|
stopSession: method(object({
|
|
@@ -25955,7 +25982,7 @@ var intercomCapability = {
|
|
|
25955
25982
|
sessionId: string()
|
|
25956
25983
|
}), _void(), {
|
|
25957
25984
|
kind: "mutation",
|
|
25958
|
-
auth: "
|
|
25985
|
+
auth: "protected"
|
|
25959
25986
|
}),
|
|
25960
25987
|
/**
|
|
25961
25988
|
* Open a raw-PCM talk session (no WebRTC SDP plumbing). Used by
|
|
@@ -25968,7 +25995,7 @@ var intercomCapability = {
|
|
|
25968
25995
|
*/
|
|
25969
25996
|
startTalkSession: method(object({ deviceId: number() }), object({ sessionId: string() }), {
|
|
25970
25997
|
kind: "mutation",
|
|
25971
|
-
auth: "
|
|
25998
|
+
auth: "protected"
|
|
25972
25999
|
}),
|
|
25973
26000
|
/**
|
|
25974
26001
|
* Push one chunk of talk-back audio onto the active talk session.
|
|
@@ -26003,12 +26030,12 @@ var intercomCapability = {
|
|
|
26003
26030
|
sequenceNumber: number().int()
|
|
26004
26031
|
}), object({ accepted: boolean() }), {
|
|
26005
26032
|
kind: "mutation",
|
|
26006
|
-
auth: "
|
|
26033
|
+
auth: "protected"
|
|
26007
26034
|
}),
|
|
26008
26035
|
/** Close the raw-PCM talk session. Idempotent. */
|
|
26009
26036
|
endTalkSession: method(object({ deviceId: number() }), _void(), {
|
|
26010
26037
|
kind: "mutation",
|
|
26011
|
-
auth: "
|
|
26038
|
+
auth: "protected"
|
|
26012
26039
|
})
|
|
26013
26040
|
},
|
|
26014
26041
|
events: { onStatusChanged: { data: object({
|
package/dist/addon.mjs
CHANGED
|
@@ -25926,6 +25926,33 @@ var intercomCapability = {
|
|
|
25926
25926
|
deviceNative: true,
|
|
25927
25927
|
mode: "singleton",
|
|
25928
25928
|
deviceTypes: [DeviceType.Camera],
|
|
25929
|
+
/**
|
|
25930
|
+
* **Auth tier: `protected` on every method — deliberate, and load-bearing.**
|
|
25931
|
+
*
|
|
25932
|
+
* Talking through a camera is an OPERATE action, not a CONFIGURE one. This
|
|
25933
|
+
* cap has no configuration surface at all: all six methods open, feed and
|
|
25934
|
+
* close one live audio session against one `deviceId`. That is the same
|
|
25935
|
+
* authority as `ptz.move` or `snapshot.getSnapshot`, both `protected` — and
|
|
25936
|
+
* the opposite of `ptz.savePreset` / `snapshot.invalidateCache`, which are
|
|
25937
|
+
* `admin` because they change what the device IS.
|
|
25938
|
+
*
|
|
25939
|
+
* `protected` does not mean ungated: `protectedProcedure` runs the
|
|
25940
|
+
* `METHOD_ACCESS_MAP` scope check, and every method here is `scope: 'device'`
|
|
25941
|
+
* with `access: 'create'` and a `deviceId` in its input. So a caller needs a
|
|
25942
|
+
* grant that covers THAT camera at `create` — a `camera-viewer` (`view`
|
|
25943
|
+
* only) still cannot talk, and a grant on camera 5 cannot talk through
|
|
25944
|
+
* camera 7.
|
|
25945
|
+
*
|
|
25946
|
+
* Every method was `auth: 'admin'` from the initial commit, which made the
|
|
25947
|
+
* cap unreachable by every non-admin principal — `adminProcedure` throws
|
|
25948
|
+
* `FORBIDDEN: Admin required` BEFORE the scope check runs, so the scope
|
|
25949
|
+
* machinery generated for this cap (`METHOD_ACCESS_MAP`,
|
|
25950
|
+
* `DEVICE_SCOPED_CAPS`, `METHOD_DEVICE_SELECTORS`) was complete and dead. The
|
|
25951
|
+
* `camera-operator` scope preset has promised "PTZ control, intercom,
|
|
25952
|
+
* snapshots" since that same commit; the promise could not be kept. Recorded
|
|
25953
|
+
* as D289; `scripts/check-scope-preset-promises.ts` now fails the build if a
|
|
25954
|
+
* preset promises a cap no row of that preset can reach.
|
|
25955
|
+
*/
|
|
25929
25956
|
methods: {
|
|
25930
25957
|
/**
|
|
25931
25958
|
* Open a server-side WebRTC audio-only session. Returns an SDP
|
|
@@ -25938,7 +25965,7 @@ var intercomCapability = {
|
|
|
25938
25965
|
sdpOffer: string()
|
|
25939
25966
|
}), {
|
|
25940
25967
|
kind: "mutation",
|
|
25941
|
-
auth: "
|
|
25968
|
+
auth: "protected"
|
|
25942
25969
|
}),
|
|
25943
25970
|
handleAnswer: method(object({
|
|
25944
25971
|
deviceId: number(),
|
|
@@ -25946,7 +25973,7 @@ var intercomCapability = {
|
|
|
25946
25973
|
sdpAnswer: string()
|
|
25947
25974
|
}), _void(), {
|
|
25948
25975
|
kind: "mutation",
|
|
25949
|
-
auth: "
|
|
25976
|
+
auth: "protected"
|
|
25950
25977
|
}),
|
|
25951
25978
|
/** Close explicitly. Server also auto-closes on 30s idle. */
|
|
25952
25979
|
stopSession: method(object({
|
|
@@ -25954,7 +25981,7 @@ var intercomCapability = {
|
|
|
25954
25981
|
sessionId: string()
|
|
25955
25982
|
}), _void(), {
|
|
25956
25983
|
kind: "mutation",
|
|
25957
|
-
auth: "
|
|
25984
|
+
auth: "protected"
|
|
25958
25985
|
}),
|
|
25959
25986
|
/**
|
|
25960
25987
|
* Open a raw-PCM talk session (no WebRTC SDP plumbing). Used by
|
|
@@ -25967,7 +25994,7 @@ var intercomCapability = {
|
|
|
25967
25994
|
*/
|
|
25968
25995
|
startTalkSession: method(object({ deviceId: number() }), object({ sessionId: string() }), {
|
|
25969
25996
|
kind: "mutation",
|
|
25970
|
-
auth: "
|
|
25997
|
+
auth: "protected"
|
|
25971
25998
|
}),
|
|
25972
25999
|
/**
|
|
25973
26000
|
* Push one chunk of talk-back audio onto the active talk session.
|
|
@@ -26002,12 +26029,12 @@ var intercomCapability = {
|
|
|
26002
26029
|
sequenceNumber: number().int()
|
|
26003
26030
|
}), object({ accepted: boolean() }), {
|
|
26004
26031
|
kind: "mutation",
|
|
26005
|
-
auth: "
|
|
26032
|
+
auth: "protected"
|
|
26006
26033
|
}),
|
|
26007
26034
|
/** Close the raw-PCM talk session. Idempotent. */
|
|
26008
26035
|
endTalkSession: method(object({ deviceId: number() }), _void(), {
|
|
26009
26036
|
kind: "mutation",
|
|
26010
|
-
auth: "
|
|
26037
|
+
auth: "protected"
|
|
26011
26038
|
})
|
|
26012
26039
|
},
|
|
26013
26040
|
events: { onStatusChanged: { data: object({
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@camstack/addon-provider-rademacher",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.41",
|
|
4
4
|
"description": "Rademacher HomePilot device-provider addon for CamStack — wraps the @apocaliss92/noderademacher local-hub client (roller shutters over the cover cap)",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"camstack",
|