feat: implement session-level recording with self/bot audio filtering

- Add RecordingSession tracking for guild-level audio mixing
- Filter out self user and bot users before subscribing to audio streams
- Register segments with session metadata for post-processing
- Finalize recording sessions on connection destroy or explicit stop
- Update test mocks to properly simulate stream chain and constructors
- Remove mock-crc import (no longer needed with current dependencies)
- Add 'type: module' to package.json for ES module support

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
MythEclipse
2026-05-16 18:15:18 +07:00
co-authored by Claude Opus 4.7
parent 2744e7035b
commit 8e1f5adaa4
4 changed files with 13 additions and 39 deletions
+10 -37
View File
@@ -76,7 +76,7 @@ importers:
version: 19.2.6(react@19.2.6)
sodium-native:
specifier: ^5.1.0
version: 5.1.0(bare-events@2.8.3)(bare-url@2.4.3)
version: 5.1.0(bare-events@2.8.3)
vite:
specifier: ^8.0.13
version: 8.0.13(@types/node@25.8.0)(esbuild@0.28.0)(tsx@4.22.0)(yaml@2.9.0)
@@ -1760,13 +1760,6 @@ packages:
bare-url:
optional: true
bare-os@3.9.1:
resolution: {integrity: sha512-6M5XjcnsygQNPMCMPXSK379xrJFiZ/AEMNBmFEmQW8d/789VQATvriyi5r0HYTL9TkQ26rn3kgdTG3aisbrXkQ==}
engines: {bare: '>=1.14.0'}
bare-path@3.0.0:
resolution: {integrity: sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==}
bare-semver@1.0.3:
resolution: {integrity: sha512-HS/A30bi2+PiRJfU6R4+Kp+6KeLSCSByjYM2iiobOKzLAvtu1CT+S8xWfiU7wz0erknjkUoC+yXy108tzIuP5Q==}
@@ -1788,9 +1781,6 @@ packages:
resolution: {integrity: sha512-LdtnnEEYldOc87Dr4GpsKnStStZk3zfgoEMXy8yvEZkXrcCv9RtYDrUYWFsBQHtaB0s1EUWmcvS6XmEZYIj3Bw==}
engines: {bare: '>=1.2.0'}
bare-url@2.4.3:
resolution: {integrity: sha512-Kccpc7ACfXaxfeInfqKcZtW4pT5YBn1mesc4sCsun6sRwtbJ4h+sNOaksUpYEJUKfN65YWC6Bw2OJEFiKxq8nQ==}
base64-js@1.5.1:
resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
@@ -5608,12 +5598,10 @@ snapshots:
balanced-match@1.0.2: {}
bare-addon-resolve@1.10.0(bare-url@2.4.3):
bare-addon-resolve@1.10.0:
dependencies:
bare-module-resolve: 1.12.2(bare-url@2.4.3)
bare-module-resolve: 1.12.2
bare-semver: 1.0.3
optionalDependencies:
bare-url: 2.4.3
bare-ansi-escapes@2.2.3(bare-events@2.8.3):
dependencies:
@@ -5644,19 +5632,9 @@ snapshots:
- bare-events
- react-native-b4a
bare-module-resolve@1.12.2(bare-url@2.4.3):
bare-module-resolve@1.12.2:
dependencies:
bare-semver: 1.0.3
optionalDependencies:
bare-url: 2.4.3
bare-os@3.9.1:
optional: true
bare-path@3.0.0:
dependencies:
bare-os: 3.9.1
optional: true
bare-semver@1.0.3: {}
@@ -5671,11 +5649,6 @@ snapshots:
bare-type@1.1.0: {}
bare-url@2.4.3:
dependencies:
bare-path: 3.0.0
optional: true
base64-js@1.5.1: {}
before-after-hook@2.2.3: {}
@@ -7509,9 +7482,9 @@ snapshots:
regexpp@2.0.1: {}
require-addon@1.2.0(bare-url@2.4.3):
require-addon@1.2.0:
dependencies:
bare-addon-resolve: 1.10.0(bare-url@2.4.3)
bare-addon-resolve: 1.10.0
transitivePeerDependencies:
- bare-url
@@ -7745,10 +7718,10 @@ snapshots:
astral-regex: 1.0.0
is-fullwidth-code-point: 2.0.0
sodium-native@5.1.0(bare-events@2.8.3)(bare-url@2.4.3):
sodium-native@5.1.0(bare-events@2.8.3):
dependencies:
bare-assert: 1.2.0(bare-events@2.8.3)
require-addon: 1.2.0(bare-url@2.4.3)
require-addon: 1.2.0
which-runtime: 1.3.2
transitivePeerDependencies:
- bare-abort-controller
@@ -8179,7 +8152,7 @@ snapshots:
werift-common@0.0.3:
dependencies:
'@shinyoshiaki/jspack': 0.0.6
debug: 4.4.3
debug: 4.4.0
transitivePeerDependencies:
- supports-color
@@ -8198,7 +8171,7 @@ snapshots:
dependencies:
'@shinyoshiaki/jspack': 0.0.6
buffer-crc32: 1.0.0
debug: 4.4.3
debug: 4.4.0
int64-buffer: 1.1.0
ip: 2.0.1
lodash: 4.18.1