refactor(imports): replace relative imports with path aliases (#2741)

This commit is contained in:
Hampus
2026-09-13 20:18:22 +02:00
committed by GitHub
parent a59b80ce11
commit 84dcf6b8a8
1834 changed files with 11601 additions and 10725 deletions
@@ -1,6 +1,5 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import {describe, expect, it} from 'vitest';
import {
assertAudioFrameInvariants,
assertVideoFrameInvariants,
@@ -8,14 +7,15 @@ import {
VOICE_ENGINE_V2_VIDEO_DIMENSION_MAX,
VOICE_ENGINE_V2_VIDEO_FRAME_BYTES_MAX,
VoiceEngineV2FfiAssertError,
} from './ffi_assertions';
} from '@fluxer/voice_engine_v2/src/bridge/ffi_assertions';
import {
assertVoiceEngineV2BridgeAudioOptionsInvariants,
assertVoiceEngineV2BridgeVideoOptionsInvariants,
normalizeVoiceEngineV2BridgeHardwareEncoderCapabilities,
unavailableVoiceEngineV2BridgeHardwareEncoderCapabilities,
VOICE_ENGINE_V2_HARDWARE_ENCODER_IPC_CHANNEL,
} from './index';
} from '@fluxer/voice_engine_v2/src/bridge/index';
import {describe, expect, it} from 'vitest';
describe('voice engine v2 bridge contract', () => {
it('pins the hardware encoder ipc channel shared by preload and the main process', () => {
+5 -2
View File
@@ -1,7 +1,10 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import type {VoiceEngineV2HardwareEncoderCapabilities} from '../protocol';
import {assertAudioFrameInvariants, assertVideoFrameInvariants} from './ffi_assertions';
import {
assertAudioFrameInvariants,
assertVideoFrameInvariants,
} from '@fluxer/voice_engine_v2/src/bridge/ffi_assertions';
import type {VoiceEngineV2HardwareEncoderCapabilities} from '@fluxer/voice_engine_v2/src/protocol';
export const VOICE_ENGINE_V2_HARDWARE_ENCODER_IPC_CHANNEL = 'voice-engine-v2:get-hardware-encoder-capabilities';
@@ -1,8 +1,8 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import assert from 'node:assert/strict';
import type {VoiceEngineV2Command} from '../protocol/commands';
import type {VoiceEngineV2Snapshot} from './state';
import type {VoiceEngineV2Snapshot} from '@fluxer/voice_engine_v2/src/core/state';
import type {VoiceEngineV2Command} from '@fluxer/voice_engine_v2/src/protocol/commands';
export function isVoiceEngineV2CommandCompletionStale(
snapshot: VoiceEngineV2Snapshot,
@@ -1,20 +1,20 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import {describe, expect, it} from 'vitest';
import gatewayConnectionFixtureJson from '../../fixtures/event_logs/gateway_connection.json';
import reconnectChannelMoveFixtureJson from '../../fixtures/event_logs/reconnect_channel_move.json';
import resumePreservesMediaFixtureJson from '../../fixtures/event_logs/resume_preserves_media.json';
import staleConnectionFixtureJson from '../../fixtures/event_logs/stale_connection.json';
import teardownRendererWindowFixtureJson from '../../fixtures/event_logs/teardown_renderer_window.json';
import type {VoiceEngineV2Command} from '../protocol/commands';
import type {VoiceEngineV2Event} from '../protocol/events';
import {transitionVoiceEngineV2} from './reducer';
import gatewayConnectionFixtureJson from '@fluxer/voice_engine_v2/fixtures/event_logs/gateway_connection.json';
import reconnectChannelMoveFixtureJson from '@fluxer/voice_engine_v2/fixtures/event_logs/reconnect_channel_move.json';
import resumePreservesMediaFixtureJson from '@fluxer/voice_engine_v2/fixtures/event_logs/resume_preserves_media.json';
import staleConnectionFixtureJson from '@fluxer/voice_engine_v2/fixtures/event_logs/stale_connection.json';
import teardownRendererWindowFixtureJson from '@fluxer/voice_engine_v2/fixtures/event_logs/teardown_renderer_window.json';
import {transitionVoiceEngineV2} from '@fluxer/voice_engine_v2/src/core/reducer';
import {
availableVoiceEngineV2Capabilities,
createVoiceEngineV2InitialSnapshot,
type VoiceEngineV2OperationStatus,
type VoiceEngineV2Snapshot,
} from './state';
} from '@fluxer/voice_engine_v2/src/core/state';
import type {VoiceEngineV2Command} from '@fluxer/voice_engine_v2/src/protocol/commands';
import type {VoiceEngineV2Event} from '@fluxer/voice_engine_v2/src/protocol/events';
import {describe, expect, it} from 'vitest';
interface VoiceEngineV2ConnectionGatewayFixtureStep {
name: string;
@@ -1,18 +1,21 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import fixtureJson from '@fluxer/voice_engine_v2/fixtures/basic_session.json';
import cameraInPlaceUpdateFixtureJson from '@fluxer/voice_engine_v2/fixtures/event_logs/camera_in_place_update.json';
import codecRepublishFixtureJson from '@fluxer/voice_engine_v2/fixtures/event_logs/codec_republish.json';
import nativeFrameSinkFixtureJson from '@fluxer/voice_engine_v2/fixtures/event_logs/native_frame_sink.json';
import nativeZeroCopyScreenFixtureJson from '@fluxer/voice_engine_v2/fixtures/event_logs/native_zero_copy_screen.json';
import screenAudioInclusionToggleFixtureJson from '@fluxer/voice_engine_v2/fixtures/event_logs/screen_audio_inclusion_toggle.json';
import screenAudioRoutingFixtureJson from '@fluxer/voice_engine_v2/fixtures/event_logs/screen_audio_routing.json';
import screenShareStartUpdateStopFixtureJson from '@fluxer/voice_engine_v2/fixtures/event_logs/screen_share_start_update_stop.json';
import externallyEstablishedFixtureJson from '@fluxer/voice_engine_v2/fixtures/externally_established_session.json';
import {transitionVoiceEngineV2} from '@fluxer/voice_engine_v2/src/core/reducer';
import {
availableVoiceEngineV2Capabilities,
createVoiceEngineV2InitialSnapshot,
} from '@fluxer/voice_engine_v2/src/core/state';
import type {VoiceEngineV2Command, VoiceEngineV2Event} from '@fluxer/voice_engine_v2/src/protocol';
import {describe, expect, it} from 'vitest';
import fixtureJson from '../../fixtures/basic_session.json';
import cameraInPlaceUpdateFixtureJson from '../../fixtures/event_logs/camera_in_place_update.json';
import codecRepublishFixtureJson from '../../fixtures/event_logs/codec_republish.json';
import nativeFrameSinkFixtureJson from '../../fixtures/event_logs/native_frame_sink.json';
import nativeZeroCopyScreenFixtureJson from '../../fixtures/event_logs/native_zero_copy_screen.json';
import screenAudioInclusionToggleFixtureJson from '../../fixtures/event_logs/screen_audio_inclusion_toggle.json';
import screenAudioRoutingFixtureJson from '../../fixtures/event_logs/screen_audio_routing.json';
import screenShareStartUpdateStopFixtureJson from '../../fixtures/event_logs/screen_share_start_update_stop.json';
import externallyEstablishedFixtureJson from '../../fixtures/externally_established_session.json';
import type {VoiceEngineV2Command, VoiceEngineV2Event} from '../protocol';
import {transitionVoiceEngineV2} from './reducer';
import {availableVoiceEngineV2Capabilities, createVoiceEngineV2InitialSnapshot} from './state';
interface VoiceEngineV2FixtureExpected {
nextOperationId: number;
+6 -6
View File
@@ -1,7 +1,7 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
export {isVoiceEngineV2CommandCompletionStale, transitionVoiceEngineV2} from './reducer';
export {shouldApplyGatewayVoiceStateEcho} from './reducers/gateway';
export {isVoiceEngineV2CommandCompletionStale, transitionVoiceEngineV2} from '@fluxer/voice_engine_v2/src/core/reducer';
export {shouldApplyGatewayVoiceStateEcho} from '@fluxer/voice_engine_v2/src/core/reducers/gateway';
export type {
VoiceEngineV2CapabilitiesProjection,
VoiceEngineV2DeviceProjection,
@@ -10,7 +10,7 @@ export type {
VoiceEngineV2StatsPresentationNetworkSummary,
VoiceEngineV2StatsPresentationProjection,
VoiceEngineV2StatsProjection,
} from './selectors';
} from '@fluxer/voice_engine_v2/src/core/selectors';
export {
selectVoiceEngineV2CapabilitiesProjection,
selectVoiceEngineV2ConnectionProjection,
@@ -26,7 +26,7 @@ export {
selectVoiceEngineV2StatsProjection,
selectVoiceEngineV2StatsSummary,
selectVoiceEngineV2WatchedStreams,
} from './selectors';
} from '@fluxer/voice_engine_v2/src/core/selectors';
export type {
SourceLifecycleState,
VoiceEngineV2ConnectionState,
@@ -49,11 +49,11 @@ export type {
VoiceEngineV2RoomState,
VoiceEngineV2Snapshot,
VoiceEngineV2Transition,
} from './state';
} from '@fluxer/voice_engine_v2/src/core/state';
export {
availableVoiceEngineV2Capabilities,
createVoiceEngineV2InitialSnapshot,
createVoiceEngineV2PermissionResult,
emptyVoiceEngineV2DeviceInventory,
unavailableVoiceEngineV2Capabilities,
} from './state';
} from '@fluxer/voice_engine_v2/src/core/state';
@@ -1,18 +1,18 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import {describe, expect, it} from 'vitest';
import deviceHotswapFixtureJson from '../../fixtures/event_logs/device_hotswap.json';
import localMediaFixtureJson from '../../fixtures/event_logs/local_media.json';
import microphoneFailureRecoveryFixtureJson from '../../fixtures/event_logs/microphone_failure_recovery.json';
import permissionsRecoveryFixtureJson from '../../fixtures/event_logs/permissions_recovery.json';
import pttPtmFixtureJson from '../../fixtures/event_logs/ptt_ptm.json';
import type {VoiceEngineV2Command, VoiceEngineV2Event} from '../protocol';
import {transitionVoiceEngineV2} from './reducer';
import deviceHotswapFixtureJson from '@fluxer/voice_engine_v2/fixtures/event_logs/device_hotswap.json';
import localMediaFixtureJson from '@fluxer/voice_engine_v2/fixtures/event_logs/local_media.json';
import microphoneFailureRecoveryFixtureJson from '@fluxer/voice_engine_v2/fixtures/event_logs/microphone_failure_recovery.json';
import permissionsRecoveryFixtureJson from '@fluxer/voice_engine_v2/fixtures/event_logs/permissions_recovery.json';
import pttPtmFixtureJson from '@fluxer/voice_engine_v2/fixtures/event_logs/ptt_ptm.json';
import {transitionVoiceEngineV2} from '@fluxer/voice_engine_v2/src/core/reducer';
import {
availableVoiceEngineV2Capabilities,
createVoiceEngineV2InitialSnapshot,
type VoiceEngineV2Snapshot,
} from './state';
} from '@fluxer/voice_engine_v2/src/core/state';
import type {VoiceEngineV2Command, VoiceEngineV2Event} from '@fluxer/voice_engine_v2/src/protocol';
import {describe, expect, it} from 'vitest';
interface LocalMediaSnapshotExpectation {
nextOperationId?: number;
@@ -1,26 +1,26 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import {describe, expect, it} from 'vitest';
import capabilitiesLifecycleFixtureJson from '../../fixtures/event_logs/capabilities_lifecycle.json';
import deviceInventoryFixtureJson from '../../fixtures/event_logs/device_inventory.json';
import diagnosticsLifecycleFixtureJson from '../../fixtures/event_logs/diagnostics_lifecycle.json';
import e2eeLifecycleFixtureJson from '../../fixtures/event_logs/e2ee_lifecycle.json';
import statsLifecycleFixtureJson from '../../fixtures/event_logs/stats_lifecycle.json';
import type {VoiceEngineV2Command} from '../protocol/commands';
import type {VoiceEngineV2Event} from '../protocol/events';
import {transitionVoiceEngineV2} from './reducer';
import capabilitiesLifecycleFixtureJson from '@fluxer/voice_engine_v2/fixtures/event_logs/capabilities_lifecycle.json';
import deviceInventoryFixtureJson from '@fluxer/voice_engine_v2/fixtures/event_logs/device_inventory.json';
import diagnosticsLifecycleFixtureJson from '@fluxer/voice_engine_v2/fixtures/event_logs/diagnostics_lifecycle.json';
import e2eeLifecycleFixtureJson from '@fluxer/voice_engine_v2/fixtures/event_logs/e2ee_lifecycle.json';
import statsLifecycleFixtureJson from '@fluxer/voice_engine_v2/fixtures/event_logs/stats_lifecycle.json';
import {transitionVoiceEngineV2} from '@fluxer/voice_engine_v2/src/core/reducer';
import {
selectVoiceEngineV2CapabilitiesProjection,
selectVoiceEngineV2DeviceProjection,
selectVoiceEngineV2DiagnosticsProjection,
selectVoiceEngineV2E2eeProjection,
selectVoiceEngineV2StatsProjection,
} from './selectors';
} from '@fluxer/voice_engine_v2/src/core/selectors';
import {
availableVoiceEngineV2Capabilities,
createVoiceEngineV2InitialSnapshot,
type VoiceEngineV2Snapshot,
} from './state';
} from '@fluxer/voice_engine_v2/src/core/state';
import type {VoiceEngineV2Command} from '@fluxer/voice_engine_v2/src/protocol/commands';
import type {VoiceEngineV2Event} from '@fluxer/voice_engine_v2/src/protocol/events';
import {describe, expect, it} from 'vitest';
interface VoiceEngineV2EventLogFixture<Expected> {
name: string;
@@ -1,27 +1,30 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import {describe, expect, it} from 'vitest';
import inboundVideoFrameStatsFixtureJson from '../../fixtures/event_logs/inbound_video_frame_stats.json';
import inboundVideoFramesFixtureJson from '../../fixtures/event_logs/inbound_video_frames.json';
import participantsTracksFixtureJson from '../../fixtures/event_logs/participants_tracks.json';
import subscriptionQualityFixtureJson from '../../fixtures/event_logs/subscription_quality.json';
import watchedStreamsFixtureJson from '../../fixtures/event_logs/watched_streams.json';
import type {VoiceEngineV2Command} from '../protocol/commands';
import type {VoiceEngineV2Event} from '../protocol/events';
import inboundVideoFrameStatsFixtureJson from '@fluxer/voice_engine_v2/fixtures/event_logs/inbound_video_frame_stats.json';
import inboundVideoFramesFixtureJson from '@fluxer/voice_engine_v2/fixtures/event_logs/inbound_video_frames.json';
import participantsTracksFixtureJson from '@fluxer/voice_engine_v2/fixtures/event_logs/participants_tracks.json';
import subscriptionQualityFixtureJson from '@fluxer/voice_engine_v2/fixtures/event_logs/subscription_quality.json';
import watchedStreamsFixtureJson from '@fluxer/voice_engine_v2/fixtures/event_logs/watched_streams.json';
import {transitionVoiceEngineV2} from '@fluxer/voice_engine_v2/src/core/reducer';
import {
selectVoiceEngineV2ParticipantProjection,
selectVoiceEngineV2WatchedStreams,
} from '@fluxer/voice_engine_v2/src/core/selectors';
import {
availableVoiceEngineV2Capabilities,
createVoiceEngineV2InitialSnapshot,
type VoiceEngineV2Snapshot,
} from '@fluxer/voice_engine_v2/src/core/state';
import type {VoiceEngineV2Command} from '@fluxer/voice_engine_v2/src/protocol/commands';
import type {VoiceEngineV2Event} from '@fluxer/voice_engine_v2/src/protocol/events';
import type {
VoiceEngineV2InboundVideoTrack,
VoiceEngineV2Participant,
VoiceEngineV2RemoteTrackSubscriptionOptions,
VoiceEngineV2Track,
VoiceEngineV2WatchedStream,
} from '../protocol/types';
import {transitionVoiceEngineV2} from './reducer';
import {selectVoiceEngineV2ParticipantProjection, selectVoiceEngineV2WatchedStreams} from './selectors';
import {
availableVoiceEngineV2Capabilities,
createVoiceEngineV2InitialSnapshot,
type VoiceEngineV2Snapshot,
} from './state';
} from '@fluxer/voice_engine_v2/src/protocol/types';
import {describe, expect, it} from 'vitest';
interface ParticipantsTracksFixtureExpected {
participants?: Array<VoiceEngineV2Participant>;
@@ -1,8 +1,13 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import {bench, describe} from 'vitest';
import basicSessionFixture from '../../fixtures/basic_session.json';
import type {VoiceEngineV2Event} from '../protocol/events';
import basicSessionFixture from '@fluxer/voice_engine_v2/fixtures/basic_session.json';
import {transitionVoiceEngineV2} from '@fluxer/voice_engine_v2/src/core/reducer';
import {
availableVoiceEngineV2Capabilities,
createVoiceEngineV2InitialSnapshot,
type VoiceEngineV2Snapshot,
} from '@fluxer/voice_engine_v2/src/core/state';
import type {VoiceEngineV2Event} from '@fluxer/voice_engine_v2/src/protocol/events';
import type {
VoiceEngineV2InboundVideoFrame,
VoiceEngineV2InboundVideoFrameStats,
@@ -10,13 +15,8 @@ import type {
VoiceEngineV2Participant,
VoiceEngineV2ScreenOptions,
VoiceEngineV2Stats,
} from '../protocol/types';
import {transitionVoiceEngineV2} from './reducer';
import {
availableVoiceEngineV2Capabilities,
createVoiceEngineV2InitialSnapshot,
type VoiceEngineV2Snapshot,
} from './state';
} from '@fluxer/voice_engine_v2/src/protocol/types';
import {bench, describe} from 'vitest';
interface VoiceEngineV2BenchFixture {
events: Array<VoiceEngineV2Event>;
@@ -1,17 +1,20 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import {describe, expect, it} from 'vitest';
import type {VoiceEngineV2Event} from '../protocol/events';
import type {VoiceEngineV2DiagnosticEntry} from '../protocol/types';
import {transitionVoiceEngineV2} from './reducer';
import {VOICE_ENGINE_V2_TERMINAL_OPERATIONS_KEPT_MAX} from './reducers/_helpers';
import {selectVoiceEngineV2FailedSourceIds, selectVoiceEngineV2SourceLifecycle} from './selectors';
import {transitionVoiceEngineV2} from '@fluxer/voice_engine_v2/src/core/reducer';
import {VOICE_ENGINE_V2_TERMINAL_OPERATIONS_KEPT_MAX} from '@fluxer/voice_engine_v2/src/core/reducers/_helpers';
import {
selectVoiceEngineV2FailedSourceIds,
selectVoiceEngineV2SourceLifecycle,
} from '@fluxer/voice_engine_v2/src/core/selectors';
import {
availableVoiceEngineV2Capabilities,
createVoiceEngineV2InitialSnapshot,
unavailableVoiceEngineV2Capabilities,
type VoiceEngineV2Snapshot,
} from './state';
} from '@fluxer/voice_engine_v2/src/core/state';
import type {VoiceEngineV2Event} from '@fluxer/voice_engine_v2/src/protocol/events';
import type {VoiceEngineV2DiagnosticEntry} from '@fluxer/voice_engine_v2/src/protocol/types';
import {describe, expect, it} from 'vitest';
function initialSnapshot(): VoiceEngineV2Snapshot {
return createVoiceEngineV2InitialSnapshot(availableVoiceEngineV2Capabilities());
+4 -4
View File
@@ -1,17 +1,17 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import assert from 'node:assert/strict';
import type {VoiceEngineV2Event} from '../protocol/events';
import {
dispatchLocalMediaEvent,
dispatchObservabilityEvent,
dispatchPlatformEvent,
dispatchRuntimeEvent,
dispatchSessionEvent,
} from './reducers/_dispatch';
import type {VoiceEngineV2Snapshot, VoiceEngineV2Transition} from './state';
} from '@fluxer/voice_engine_v2/src/core/reducers/_dispatch';
import type {VoiceEngineV2Snapshot, VoiceEngineV2Transition} from '@fluxer/voice_engine_v2/src/core/state';
import type {VoiceEngineV2Event} from '@fluxer/voice_engine_v2/src/protocol/events';
export {isVoiceEngineV2CommandCompletionStale} from './commandCompletion';
export {isVoiceEngineV2CommandCompletionStale} from '@fluxer/voice_engine_v2/src/core/commandCompletion';
export function transitionVoiceEngineV2(
snapshot: VoiceEngineV2Snapshot,
@@ -1,34 +1,34 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import assert from 'node:assert/strict';
import type {VoiceEngineV2Event} from '../../protocol/events';
import type {VoiceEngineV2Snapshot, VoiceEngineV2Transition} from '../state';
import {planDesiredState} from './_plan';
import {transitionCamera} from './camera';
import {transitionCapabilities} from './capabilities';
import {transitionCommand} from './command';
import {transitionConnection} from './connection';
import {transitionData} from './data';
import {transitionDevices} from './devices';
import {transitionE2ee} from './e2ee';
import {transitionGateway} from './gateway';
import {transitionImplementation} from './implementation';
import {transitionInboundVideo} from './inboundVideo';
import {transitionLifecycle} from './lifecycle';
import {transitionMicrophone} from './microphone';
import {transitionNativeAudioTap} from './nativeAudioTap';
import {transitionNativeCapture} from './nativeCapture';
import {transitionNativeFrameSink} from './nativeFrameSink';
import {transitionOutputDevice} from './outputDevice';
import {transitionParticipantVolume} from './participantVolume';
import {transitionPermissions} from './permissions';
import {transitionRemoteTrackSubscription} from './remoteTrackSubscription';
import {transitionRoom} from './room';
import {transitionScreen} from './screen';
import {transitionScreenAudio} from './screenAudio';
import {transitionSourceLifecycles} from './sourceLifecycles';
import {transitionStats} from './stats';
import {transitionUtilityPorts} from './utilityPorts';
import {planDesiredState} from '@fluxer/voice_engine_v2/src/core/reducers/_plan';
import {transitionCamera} from '@fluxer/voice_engine_v2/src/core/reducers/camera';
import {transitionCapabilities} from '@fluxer/voice_engine_v2/src/core/reducers/capabilities';
import {transitionCommand} from '@fluxer/voice_engine_v2/src/core/reducers/command';
import {transitionConnection} from '@fluxer/voice_engine_v2/src/core/reducers/connection';
import {transitionData} from '@fluxer/voice_engine_v2/src/core/reducers/data';
import {transitionDevices} from '@fluxer/voice_engine_v2/src/core/reducers/devices';
import {transitionE2ee} from '@fluxer/voice_engine_v2/src/core/reducers/e2ee';
import {transitionGateway} from '@fluxer/voice_engine_v2/src/core/reducers/gateway';
import {transitionImplementation} from '@fluxer/voice_engine_v2/src/core/reducers/implementation';
import {transitionInboundVideo} from '@fluxer/voice_engine_v2/src/core/reducers/inboundVideo';
import {transitionLifecycle} from '@fluxer/voice_engine_v2/src/core/reducers/lifecycle';
import {transitionMicrophone} from '@fluxer/voice_engine_v2/src/core/reducers/microphone';
import {transitionNativeAudioTap} from '@fluxer/voice_engine_v2/src/core/reducers/nativeAudioTap';
import {transitionNativeCapture} from '@fluxer/voice_engine_v2/src/core/reducers/nativeCapture';
import {transitionNativeFrameSink} from '@fluxer/voice_engine_v2/src/core/reducers/nativeFrameSink';
import {transitionOutputDevice} from '@fluxer/voice_engine_v2/src/core/reducers/outputDevice';
import {transitionParticipantVolume} from '@fluxer/voice_engine_v2/src/core/reducers/participantVolume';
import {transitionPermissions} from '@fluxer/voice_engine_v2/src/core/reducers/permissions';
import {transitionRemoteTrackSubscription} from '@fluxer/voice_engine_v2/src/core/reducers/remoteTrackSubscription';
import {transitionRoom} from '@fluxer/voice_engine_v2/src/core/reducers/room';
import {transitionScreen} from '@fluxer/voice_engine_v2/src/core/reducers/screen';
import {transitionScreenAudio} from '@fluxer/voice_engine_v2/src/core/reducers/screenAudio';
import {transitionSourceLifecycles} from '@fluxer/voice_engine_v2/src/core/reducers/sourceLifecycles';
import {transitionStats} from '@fluxer/voice_engine_v2/src/core/reducers/stats';
import {transitionUtilityPorts} from '@fluxer/voice_engine_v2/src/core/reducers/utilityPorts';
import type {VoiceEngineV2Snapshot, VoiceEngineV2Transition} from '@fluxer/voice_engine_v2/src/core/state';
import type {VoiceEngineV2Event} from '@fluxer/voice_engine_v2/src/protocol/events';
export function dispatchLocalMediaEvent(
snapshot: VoiceEngineV2Snapshot,
@@ -1,7 +1,16 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import assert from 'node:assert/strict';
import {getVoiceEngineV2CommandResourceKey, type VoiceEngineV2Command} from '../../protocol/commands';
import type {
VoiceEngineV2OperationState,
VoiceEngineV2OperationStatus,
VoiceEngineV2Snapshot,
VoiceEngineV2Transition,
} from '@fluxer/voice_engine_v2/src/core/state';
import {
getVoiceEngineV2CommandResourceKey,
type VoiceEngineV2Command,
} from '@fluxer/voice_engine_v2/src/protocol/commands';
import type {
VoiceEngineV2DataOptions,
VoiceEngineV2DiagnosticEntry,
@@ -11,13 +20,7 @@ import type {
VoiceEngineV2ParticipantVolumeOptions,
VoiceEngineV2RemoteTrackSubscriptionOptions,
VoiceEngineV2ResourceKey,
} from '../../protocol/types';
import type {
VoiceEngineV2OperationState,
VoiceEngineV2OperationStatus,
VoiceEngineV2Snapshot,
VoiceEngineV2Transition,
} from '../state';
} from '@fluxer/voice_engine_v2/src/protocol/types';
export const VOICE_ENGINE_V2_TERMINAL_OPERATIONS_KEPT_MAX = 64;
const VOICE_ENGINE_V2_DIAGNOSTICS_KEPT_MAX = 200;
@@ -1,8 +1,8 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import assert from 'node:assert/strict';
import type {VoiceEngineV2Error, VoiceEngineV2OperationId} from '../../protocol/types';
import type {VoiceEngineV2LocalMediaState, VoiceEngineV2Snapshot} from '../state';
import type {VoiceEngineV2LocalMediaState, VoiceEngineV2Snapshot} from '@fluxer/voice_engine_v2/src/core/state';
import type {VoiceEngineV2Error, VoiceEngineV2OperationId} from '@fluxer/voice_engine_v2/src/protocol/types';
export function applyMediaSuccess<Options>(
state: VoiceEngineV2LocalMediaState<Options>,
@@ -1,13 +1,13 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import assert from 'node:assert/strict';
import type {VoiceEngineV2Command} from '../../protocol/commands';
import type {VoiceEngineV2Snapshot, VoiceEngineV2Transition} from '../state';
import {allocateOperation, appendTransition} from './_helpers';
import {beginCameraPublish} from './camera';
import {beginMicrophonePublish} from './microphone';
import {beginScreenPublish} from './screen';
import {beginScreenAudioPublish} from './screenAudio';
import {allocateOperation, appendTransition} from '@fluxer/voice_engine_v2/src/core/reducers/_helpers';
import {beginCameraPublish} from '@fluxer/voice_engine_v2/src/core/reducers/camera';
import {beginMicrophonePublish} from '@fluxer/voice_engine_v2/src/core/reducers/microphone';
import {beginScreenPublish} from '@fluxer/voice_engine_v2/src/core/reducers/screen';
import {beginScreenAudioPublish} from '@fluxer/voice_engine_v2/src/core/reducers/screenAudio';
import type {VoiceEngineV2Snapshot, VoiceEngineV2Transition} from '@fluxer/voice_engine_v2/src/core/state';
import type {VoiceEngineV2Command} from '@fluxer/voice_engine_v2/src/protocol/commands';
function planDesiredLocalMedia(snapshot: VoiceEngineV2Snapshot): VoiceEngineV2Transition {
assert.ok(snapshot != null, 'planDesiredLocalMedia snapshot must not be null');
@@ -1,8 +1,8 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import assert from 'node:assert/strict';
import type {VoiceEngineV2Error} from '../../protocol/types';
import {implementationError} from './_helpers';
import {implementationError} from '@fluxer/voice_engine_v2/src/core/reducers/_helpers';
import type {VoiceEngineV2Error} from '@fluxer/voice_engine_v2/src/protocol/types';
export function nativeZeroCopyRequiredError(
resource: 'capture' | 'frame' | 'frameSink' | 'hardwareEncoder',
@@ -1,17 +1,27 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import assert from 'node:assert/strict';
import {planVoiceEngineV2CameraEncodingChange} from '../../policies/cameraShare';
import type {VoiceEngineV2Event} from '../../protocol/events';
import {
allocateOperation,
failUnpublish,
invalidArgument,
isConnected,
unsupportedCapability,
} from '@fluxer/voice_engine_v2/src/core/reducers/_helpers';
import {
applyMediaFailure,
applyMediaSuccess,
completeUnpublish,
} from '@fluxer/voice_engine_v2/src/core/reducers/_media';
import type {VoiceEngineV2Snapshot, VoiceEngineV2Transition} from '@fluxer/voice_engine_v2/src/core/state';
import {planVoiceEngineV2CameraEncodingChange} from '@fluxer/voice_engine_v2/src/policies/cameraShare';
import type {VoiceEngineV2Event} from '@fluxer/voice_engine_v2/src/protocol/events';
import type {
VoiceEngineV2CameraEncodingOptions,
VoiceEngineV2CameraOptions,
VoiceEngineV2Error,
VoiceEngineV2OperationId,
} from '../../protocol/types';
import type {VoiceEngineV2Snapshot, VoiceEngineV2Transition} from '../state';
import {allocateOperation, failUnpublish, invalidArgument, isConnected, unsupportedCapability} from './_helpers';
import {applyMediaFailure, applyMediaSuccess, completeUnpublish} from './_media';
} from '@fluxer/voice_engine_v2/src/protocol/types';
type VoiceEngineV2CameraEvent = Extract<VoiceEngineV2Event, {type: `camera.${string}`}>;
@@ -1,14 +1,19 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import assert from 'node:assert/strict';
import type {VoiceEngineV2Event} from '../../protocol/events';
import {
allocateOperation,
markOperation,
queueCommand,
unsupportedCapability,
} from '@fluxer/voice_engine_v2/src/core/reducers/_helpers';
import type {VoiceEngineV2Snapshot, VoiceEngineV2Transition} from '@fluxer/voice_engine_v2/src/core/state';
import type {VoiceEngineV2Event} from '@fluxer/voice_engine_v2/src/protocol/events';
import type {
VoiceEngineV2Error,
VoiceEngineV2HardwareEncoderCapabilities,
VoiceEngineV2OperationId,
} from '../../protocol/types';
import type {VoiceEngineV2Snapshot, VoiceEngineV2Transition} from '../state';
import {allocateOperation, markOperation, queueCommand, unsupportedCapability} from './_helpers';
} from '@fluxer/voice_engine_v2/src/protocol/types';
type VoiceEngineV2CapabilitiesEvent = Extract<VoiceEngineV2Event, {type: `capabilities.${string}`}>;
@@ -1,10 +1,15 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import assert from 'node:assert/strict';
import {getVoiceEngineV2CommandTypeResourceKey} from '../../protocol/commands';
import type {VoiceEngineV2Event} from '../../protocol/events';
import type {VoiceEngineV2Snapshot, VoiceEngineV2Transition} from '../state';
import {allocateOperation, clearOperationForResource, markOperation, queueCommand} from './_helpers';
import {
allocateOperation,
clearOperationForResource,
markOperation,
queueCommand,
} from '@fluxer/voice_engine_v2/src/core/reducers/_helpers';
import type {VoiceEngineV2Snapshot, VoiceEngineV2Transition} from '@fluxer/voice_engine_v2/src/core/state';
import {getVoiceEngineV2CommandTypeResourceKey} from '@fluxer/voice_engine_v2/src/protocol/commands';
import type {VoiceEngineV2Event} from '@fluxer/voice_engine_v2/src/protocol/events';
type VoiceEngineV2CommandEvent = Extract<VoiceEngineV2Event, {type: `command.${string}` | `operation.${string}`}>;
@@ -1,18 +1,28 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import assert from 'node:assert/strict';
import type {VoiceEngineV2Command} from '../../protocol/commands';
import type {VoiceEngineV2Event} from '../../protocol/events';
import {
allocateOperation,
markOperation,
queueCommand,
recordQueuedCommand,
unsupportedCapability,
} from '@fluxer/voice_engine_v2/src/core/reducers/_helpers';
import {resetPublishedMedia} from '@fluxer/voice_engine_v2/src/core/reducers/_media';
import {
createVoiceEngineV2InitialSnapshot,
type VoiceEngineV2Snapshot,
type VoiceEngineV2Transition,
} from '@fluxer/voice_engine_v2/src/core/state';
import type {VoiceEngineV2Command} from '@fluxer/voice_engine_v2/src/protocol/commands';
import type {VoiceEngineV2Event} from '@fluxer/voice_engine_v2/src/protocol/events';
import type {
VoiceEngineV2ConnectOptions,
VoiceEngineV2DisconnectReason,
VoiceEngineV2Error,
VoiceEngineV2LifecycleReason,
VoiceEngineV2OperationId,
} from '../../protocol/types';
import {createVoiceEngineV2InitialSnapshot, type VoiceEngineV2Snapshot, type VoiceEngineV2Transition} from '../state';
import {allocateOperation, markOperation, queueCommand, recordQueuedCommand, unsupportedCapability} from './_helpers';
import {resetPublishedMedia} from './_media';
} from '@fluxer/voice_engine_v2/src/protocol/types';
type VoiceEngineV2ConnectionEvent = Extract<VoiceEngineV2Event, {type: `connection.${string}`}>;
@@ -1,9 +1,9 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import assert from 'node:assert/strict';
import type {VoiceEngineV2Event} from '../../protocol/events';
import type {VoiceEngineV2Snapshot, VoiceEngineV2Transition} from '../state';
import {commandIfConnected} from './_helpers';
import {commandIfConnected} from '@fluxer/voice_engine_v2/src/core/reducers/_helpers';
import type {VoiceEngineV2Snapshot, VoiceEngineV2Transition} from '@fluxer/voice_engine_v2/src/core/state';
import type {VoiceEngineV2Event} from '@fluxer/voice_engine_v2/src/protocol/events';
type VoiceEngineV2DataEvent = Extract<VoiceEngineV2Event, {type: `data.${string}`}>;
@@ -1,12 +1,21 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import assert from 'node:assert/strict';
import type {VoiceEngineV2Command} from '../../protocol/commands';
import type {VoiceEngineV2Event} from '../../protocol/events';
import type {VoiceEngineV2DeviceInventory, VoiceEngineV2Error, VoiceEngineV2OperationId} from '../../protocol/types';
import type {VoiceEngineV2Snapshot, VoiceEngineV2Transition} from '../state';
import {allocateOperation, appendTransition, markOperation, queueCommand} from './_helpers';
import {planMicrophoneDeviceChange} from './microphone';
import {
allocateOperation,
appendTransition,
markOperation,
queueCommand,
} from '@fluxer/voice_engine_v2/src/core/reducers/_helpers';
import {planMicrophoneDeviceChange} from '@fluxer/voice_engine_v2/src/core/reducers/microphone';
import type {VoiceEngineV2Snapshot, VoiceEngineV2Transition} from '@fluxer/voice_engine_v2/src/core/state';
import type {VoiceEngineV2Command} from '@fluxer/voice_engine_v2/src/protocol/commands';
import type {VoiceEngineV2Event} from '@fluxer/voice_engine_v2/src/protocol/events';
import type {
VoiceEngineV2DeviceInventory,
VoiceEngineV2Error,
VoiceEngineV2OperationId,
} from '@fluxer/voice_engine_v2/src/protocol/types';
type VoiceEngineV2DevicesEvent = Extract<VoiceEngineV2Event, {type: `devices.${string}`}>;
@@ -1,9 +1,9 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import assert from 'node:assert/strict';
import type {VoiceEngineV2Event} from '../../protocol/events';
import type {VoiceEngineV2Snapshot, VoiceEngineV2Transition} from '../state';
import {allocateOperation, markOperation, queueCommand} from './_helpers';
import {allocateOperation, markOperation, queueCommand} from '@fluxer/voice_engine_v2/src/core/reducers/_helpers';
import type {VoiceEngineV2Snapshot, VoiceEngineV2Transition} from '@fluxer/voice_engine_v2/src/core/state';
import type {VoiceEngineV2Event} from '@fluxer/voice_engine_v2/src/protocol/events';
type VoiceEngineV2E2eeEvent = Extract<VoiceEngineV2Event, {type: `e2ee.${string}`}>;
@@ -1,16 +1,22 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import {describe, expect, it} from 'vitest';
import type {VoiceEngineV2GatewayDesiredVoiceState, VoiceEngineV2GatewayVoiceState} from '../../protocol/types';
import {transitionVoiceEngineV2} from '../reducer';
import type {VoiceEngineV2GatewayState, VoiceEngineV2Snapshot} from '../state';
import {availableVoiceEngineV2Capabilities, createVoiceEngineV2InitialSnapshot} from '../state';
import {transitionVoiceEngineV2} from '@fluxer/voice_engine_v2/src/core/reducer';
import {
deriveVoiceEngineV2DesiredGatewayVoiceState,
gatewayVoiceStateWriteMatchesReported,
reconcileGatewayVoiceState,
shouldApplyGatewayVoiceStateEcho,
} from './gateway';
} from '@fluxer/voice_engine_v2/src/core/reducers/gateway';
import type {VoiceEngineV2GatewayState, VoiceEngineV2Snapshot} from '@fluxer/voice_engine_v2/src/core/state';
import {
availableVoiceEngineV2Capabilities,
createVoiceEngineV2InitialSnapshot,
} from '@fluxer/voice_engine_v2/src/core/state';
import type {
VoiceEngineV2GatewayDesiredVoiceState,
VoiceEngineV2GatewayVoiceState,
} from '@fluxer/voice_engine_v2/src/protocol/types';
import {describe, expect, it} from 'vitest';
function reported(overrides: Partial<VoiceEngineV2GatewayVoiceState> = {}): VoiceEngineV2GatewayVoiceState {
return {
@@ -1,17 +1,25 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import assert from 'node:assert/strict';
import type {VoiceEngineV2Event} from '../../protocol/events';
import {
allocateOperation,
isConnected,
markOperation,
queueCommand,
} from '@fluxer/voice_engine_v2/src/core/reducers/_helpers';
import {
beginGatewayVoiceStateClear,
planPendingConnectionTeardown,
} from '@fluxer/voice_engine_v2/src/core/reducers/connection';
import type {VoiceEngineV2Snapshot, VoiceEngineV2Transition} from '@fluxer/voice_engine_v2/src/core/state';
import type {VoiceEngineV2Event} from '@fluxer/voice_engine_v2/src/protocol/events';
import type {
VoiceEngineV2Error,
VoiceEngineV2GatewayDesiredVoiceState,
VoiceEngineV2GatewayVoiceState,
VoiceEngineV2GatewayVoiceStateWrite,
VoiceEngineV2OperationId,
} from '../../protocol/types';
import type {VoiceEngineV2Snapshot, VoiceEngineV2Transition} from '../state';
import {allocateOperation, isConnected, markOperation, queueCommand} from './_helpers';
import {beginGatewayVoiceStateClear, planPendingConnectionTeardown} from './connection';
} from '@fluxer/voice_engine_v2/src/protocol/types';
type VoiceEngineV2GatewayEvent = Extract<VoiceEngineV2Event, {type: `gateway.${string}` | 'livekit.roomStateChanged'}>;
@@ -1,9 +1,9 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import assert from 'node:assert/strict';
import type {VoiceEngineV2Event} from '../../protocol/events';
import type {VoiceEngineV2Snapshot, VoiceEngineV2Transition} from '../state';
import {allocateOperation, recordFailure} from './_helpers';
import {allocateOperation, recordFailure} from '@fluxer/voice_engine_v2/src/core/reducers/_helpers';
import type {VoiceEngineV2Snapshot, VoiceEngineV2Transition} from '@fluxer/voice_engine_v2/src/core/state';
import type {VoiceEngineV2Event} from '@fluxer/voice_engine_v2/src/protocol/events';
type VoiceEngineV2ImplementationEvent = Extract<VoiceEngineV2Event, {type: `implementation.${string}`}>;
@@ -1,13 +1,13 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import assert from 'node:assert/strict';
import type {VoiceEngineV2Event} from '../../protocol/events';
import type {VoiceEngineV2Snapshot, VoiceEngineV2Transition} from '@fluxer/voice_engine_v2/src/core/state';
import type {VoiceEngineV2Event} from '@fluxer/voice_engine_v2/src/protocol/events';
import type {
VoiceEngineV2InboundVideoFrame,
VoiceEngineV2InboundVideoFrameStats,
VoiceEngineV2InboundVideoTrackSubscription,
} from '../../protocol/types';
import type {VoiceEngineV2Snapshot, VoiceEngineV2Transition} from '../state';
} from '@fluxer/voice_engine_v2/src/protocol/types';
type VoiceEngineV2InboundVideoEvent = Extract<VoiceEngineV2Event, {type: `inboundVideo.${string}`}>;
@@ -1,11 +1,14 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import assert from 'node:assert/strict';
import type {VoiceEngineV2Event} from '../../protocol/events';
import type {VoiceEngineV2Snapshot, VoiceEngineV2Transition} from '../state';
import {markOperation} from './_helpers';
import {resetPublishedMedia} from './_media';
import {planPendingConnectionTeardown, resetAfterDisconnect} from './connection';
import {markOperation} from '@fluxer/voice_engine_v2/src/core/reducers/_helpers';
import {resetPublishedMedia} from '@fluxer/voice_engine_v2/src/core/reducers/_media';
import {
planPendingConnectionTeardown,
resetAfterDisconnect,
} from '@fluxer/voice_engine_v2/src/core/reducers/connection';
import type {VoiceEngineV2Snapshot, VoiceEngineV2Transition} from '@fluxer/voice_engine_v2/src/core/state';
import type {VoiceEngineV2Event} from '@fluxer/voice_engine_v2/src/protocol/events';
type VoiceEngineV2LifecycleEvent = Extract<VoiceEngineV2Event, {type: `lifecycle.${string}`}>;
@@ -1,19 +1,6 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import assert from 'node:assert/strict';
import {
getVoiceEngineV2MicrophoneOperationFailureAction,
type VoiceEngineV2MicrophoneOperationFailureAction,
} from '../../policies/microphoneFailureAction';
import type {VoiceEngineV2Event} from '../../protocol/events';
import type {
VoiceEngineV2AudioControls,
VoiceEngineV2Error,
VoiceEngineV2MicrophoneOptions,
VoiceEngineV2OperationId,
VoiceEngineV2PermissionResult,
} from '../../protocol/types';
import type {VoiceEngineV2Snapshot, VoiceEngineV2Transition} from '../state';
import {
allocateOperation,
beginUnpublish,
@@ -21,8 +8,21 @@ import {
isConnected,
markOperation,
unsupportedCapability,
} from './_helpers';
import {applyMediaFailure, completeUnpublish} from './_media';
} from '@fluxer/voice_engine_v2/src/core/reducers/_helpers';
import {applyMediaFailure, completeUnpublish} from '@fluxer/voice_engine_v2/src/core/reducers/_media';
import type {VoiceEngineV2Snapshot, VoiceEngineV2Transition} from '@fluxer/voice_engine_v2/src/core/state';
import {
getVoiceEngineV2MicrophoneOperationFailureAction,
type VoiceEngineV2MicrophoneOperationFailureAction,
} from '@fluxer/voice_engine_v2/src/policies/microphoneFailureAction';
import type {VoiceEngineV2Event} from '@fluxer/voice_engine_v2/src/protocol/events';
import type {
VoiceEngineV2AudioControls,
VoiceEngineV2Error,
VoiceEngineV2MicrophoneOptions,
VoiceEngineV2OperationId,
VoiceEngineV2PermissionResult,
} from '@fluxer/voice_engine_v2/src/protocol/types';
type VoiceEngineV2MicrophoneEvent = Extract<
VoiceEngineV2Event,
@@ -1,9 +1,9 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import assert from 'node:assert/strict';
import type {VoiceEngineV2Event} from '../../protocol/events';
import type {VoiceEngineV2Snapshot, VoiceEngineV2Transition} from '../state';
import {allocateOperation, queueCommand} from './_helpers';
import {allocateOperation, queueCommand} from '@fluxer/voice_engine_v2/src/core/reducers/_helpers';
import type {VoiceEngineV2Snapshot, VoiceEngineV2Transition} from '@fluxer/voice_engine_v2/src/core/state';
import type {VoiceEngineV2Event} from '@fluxer/voice_engine_v2/src/protocol/events';
type VoiceEngineV2NativeAudioTapEvent = Extract<VoiceEngineV2Event, {type: `nativeAudioTap.${string}`}>;
@@ -1,16 +1,19 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import assert from 'node:assert/strict';
import type {VoiceEngineV2Command} from '../../protocol/commands';
import type {VoiceEngineV2Event} from '../../protocol/events';
import {allocateOperation, markOperation, queueCommand} from '@fluxer/voice_engine_v2/src/core/reducers/_helpers';
import {
nativeZeroCopyRequiredError,
unavailableZeroCopyTransportError,
} from '@fluxer/voice_engine_v2/src/core/reducers/_zeroCopy';
import type {VoiceEngineV2Snapshot, VoiceEngineV2Transition} from '@fluxer/voice_engine_v2/src/core/state';
import type {VoiceEngineV2Command} from '@fluxer/voice_engine_v2/src/protocol/commands';
import type {VoiceEngineV2Event} from '@fluxer/voice_engine_v2/src/protocol/events';
import type {
VoiceEngineV2Error,
VoiceEngineV2NativeCaptureOptions,
VoiceEngineV2OperationId,
} from '../../protocol/types';
import type {VoiceEngineV2Snapshot, VoiceEngineV2Transition} from '../state';
import {allocateOperation, markOperation, queueCommand} from './_helpers';
import {nativeZeroCopyRequiredError, unavailableZeroCopyTransportError} from './_zeroCopy';
} from '@fluxer/voice_engine_v2/src/protocol/types';
type VoiceEngineV2NativeCaptureEvent = Extract<VoiceEngineV2Event, {type: `nativeCapture.${string}`}>;
@@ -1,11 +1,14 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import assert from 'node:assert/strict';
import type {VoiceEngineV2Event} from '../../protocol/events';
import type {VoiceEngineV2NativeFrameSinkOptions} from '../../protocol/types';
import type {VoiceEngineV2Snapshot, VoiceEngineV2Transition} from '../state';
import {allocateOperation, queueCommand} from './_helpers';
import {nativeZeroCopyRequiredError, unavailableZeroCopyTransportError} from './_zeroCopy';
import {allocateOperation, queueCommand} from '@fluxer/voice_engine_v2/src/core/reducers/_helpers';
import {
nativeZeroCopyRequiredError,
unavailableZeroCopyTransportError,
} from '@fluxer/voice_engine_v2/src/core/reducers/_zeroCopy';
import type {VoiceEngineV2Snapshot, VoiceEngineV2Transition} from '@fluxer/voice_engine_v2/src/core/state';
import type {VoiceEngineV2Event} from '@fluxer/voice_engine_v2/src/protocol/events';
import type {VoiceEngineV2NativeFrameSinkOptions} from '@fluxer/voice_engine_v2/src/protocol/types';
type VoiceEngineV2NativeFrameSinkEvent = Extract<VoiceEngineV2Event, {type: `nativeFrameSink.${string}`}>;
@@ -1,9 +1,9 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import assert from 'node:assert/strict';
import type {VoiceEngineV2Event} from '../../protocol/events';
import type {VoiceEngineV2Snapshot, VoiceEngineV2Transition} from '../state';
import {commandIfConnected} from './_helpers';
import {commandIfConnected} from '@fluxer/voice_engine_v2/src/core/reducers/_helpers';
import type {VoiceEngineV2Snapshot, VoiceEngineV2Transition} from '@fluxer/voice_engine_v2/src/core/state';
import type {VoiceEngineV2Event} from '@fluxer/voice_engine_v2/src/protocol/events';
type VoiceEngineV2OutputDeviceEvent = Extract<VoiceEngineV2Event, {type: `outputDevice.${string}`}>;
@@ -1,9 +1,9 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import assert from 'node:assert/strict';
import type {VoiceEngineV2Event} from '../../protocol/events';
import type {VoiceEngineV2Snapshot, VoiceEngineV2Transition} from '../state';
import {commandIfConnected} from './_helpers';
import {commandIfConnected} from '@fluxer/voice_engine_v2/src/core/reducers/_helpers';
import type {VoiceEngineV2Snapshot, VoiceEngineV2Transition} from '@fluxer/voice_engine_v2/src/core/state';
import type {VoiceEngineV2Event} from '@fluxer/voice_engine_v2/src/protocol/events';
type VoiceEngineV2ParticipantVolumeEvent = Extract<VoiceEngineV2Event, {type: `participantVolume.${string}`}>;
@@ -1,16 +1,16 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import assert from 'node:assert/strict';
import type {VoiceEngineV2Event} from '../../protocol/events';
import {allocateOperation, markOperation, queueCommand} from '@fluxer/voice_engine_v2/src/core/reducers/_helpers';
import {applyMicrophonePermissionResult} from '@fluxer/voice_engine_v2/src/core/reducers/microphone';
import type {VoiceEngineV2Snapshot, VoiceEngineV2Transition} from '@fluxer/voice_engine_v2/src/core/state';
import type {VoiceEngineV2Event} from '@fluxer/voice_engine_v2/src/protocol/events';
import type {
VoiceEngineV2Error,
VoiceEngineV2OperationId,
VoiceEngineV2PermissionName,
VoiceEngineV2PermissionResult,
} from '../../protocol/types';
import type {VoiceEngineV2Snapshot, VoiceEngineV2Transition} from '../state';
import {allocateOperation, markOperation, queueCommand} from './_helpers';
import {applyMicrophonePermissionResult} from './microphone';
} from '@fluxer/voice_engine_v2/src/protocol/types';
type VoiceEngineV2PermissionsEvent = Extract<VoiceEngineV2Event, {type: `permissions.${string}`}>;
@@ -1,15 +1,15 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import assert from 'node:assert/strict';
import type {VoiceEngineV2Event} from '../../protocol/events';
import {appendTransition, commandIfConnected} from '@fluxer/voice_engine_v2/src/core/reducers/_helpers';
import type {VoiceEngineV2Snapshot, VoiceEngineV2Transition} from '@fluxer/voice_engine_v2/src/core/state';
import type {VoiceEngineV2Event} from '@fluxer/voice_engine_v2/src/protocol/events';
import type {
VoiceEngineV2RemoteTrackSubscriptionOptions,
VoiceEngineV2Track,
VoiceEngineV2WatchedStream,
VoiceEngineV2WatchedStreamKey,
} from '../../protocol/types';
import type {VoiceEngineV2Snapshot, VoiceEngineV2Transition} from '../state';
import {appendTransition, commandIfConnected} from './_helpers';
} from '@fluxer/voice_engine_v2/src/protocol/types';
type VoiceEngineV2RemoteTrackSubscriptionEvent = Extract<
VoiceEngineV2Event,
@@ -1,11 +1,14 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import assert from 'node:assert/strict';
import type {VoiceEngineV2Event} from '../../protocol/events';
import type {VoiceEngineV2Participant, VoiceEngineV2Track} from '../../protocol/types';
import type {VoiceEngineV2Snapshot, VoiceEngineV2Transition} from '../state';
import {removeInboundVideoTrack} from './inboundVideo';
import {clearWatchedStreamTrack, syncWatchedStreamTrack} from './remoteTrackSubscription';
import {removeInboundVideoTrack} from '@fluxer/voice_engine_v2/src/core/reducers/inboundVideo';
import {
clearWatchedStreamTrack,
syncWatchedStreamTrack,
} from '@fluxer/voice_engine_v2/src/core/reducers/remoteTrackSubscription';
import type {VoiceEngineV2Snapshot, VoiceEngineV2Transition} from '@fluxer/voice_engine_v2/src/core/state';
import type {VoiceEngineV2Event} from '@fluxer/voice_engine_v2/src/protocol/events';
import type {VoiceEngineV2Participant, VoiceEngineV2Track} from '@fluxer/voice_engine_v2/src/protocol/types';
type VoiceEngineV2RoomEvent = Extract<VoiceEngineV2Event, {type: `room.${string}`}>;
@@ -1,15 +1,6 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import assert from 'node:assert/strict';
import {planVoiceEngineV2ScreenEncodingChange} from '../../policies/screenShare';
import type {VoiceEngineV2Event} from '../../protocol/events';
import type {
VoiceEngineV2Error,
VoiceEngineV2OperationId,
VoiceEngineV2ScreenEncodingOptions,
VoiceEngineV2ScreenOptions,
} from '../../protocol/types';
import type {VoiceEngineV2Snapshot, VoiceEngineV2Transition} from '../state';
import {
allocateOperation,
beginUnpublish,
@@ -17,9 +8,25 @@ import {
invalidArgument,
isConnected,
unsupportedCapability,
} from './_helpers';
import {applyMediaFailure, applyMediaSuccess, completeUnpublish} from './_media';
import {nativeZeroCopyRequiredError, unavailableZeroCopyTransportError} from './_zeroCopy';
} from '@fluxer/voice_engine_v2/src/core/reducers/_helpers';
import {
applyMediaFailure,
applyMediaSuccess,
completeUnpublish,
} from '@fluxer/voice_engine_v2/src/core/reducers/_media';
import {
nativeZeroCopyRequiredError,
unavailableZeroCopyTransportError,
} from '@fluxer/voice_engine_v2/src/core/reducers/_zeroCopy';
import type {VoiceEngineV2Snapshot, VoiceEngineV2Transition} from '@fluxer/voice_engine_v2/src/core/state';
import {planVoiceEngineV2ScreenEncodingChange} from '@fluxer/voice_engine_v2/src/policies/screenShare';
import type {VoiceEngineV2Event} from '@fluxer/voice_engine_v2/src/protocol/events';
import type {
VoiceEngineV2Error,
VoiceEngineV2OperationId,
VoiceEngineV2ScreenEncodingOptions,
VoiceEngineV2ScreenOptions,
} from '@fluxer/voice_engine_v2/src/protocol/types';
type VoiceEngineV2ScreenEvent = Extract<VoiceEngineV2Event, {type: `screen.${string}`}>;
@@ -1,9 +1,6 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import assert from 'node:assert/strict';
import type {VoiceEngineV2Event} from '../../protocol/events';
import type {VoiceEngineV2Error, VoiceEngineV2OperationId, VoiceEngineV2ScreenAudioOptions} from '../../protocol/types';
import type {VoiceEngineV2Snapshot, VoiceEngineV2Transition} from '../state';
import {
allocateOperation,
beginUnpublish,
@@ -11,8 +8,19 @@ import {
invalidArgument,
isConnected,
unsupportedCapability,
} from './_helpers';
import {applyMediaFailure, applyMediaSuccess, completeUnpublish} from './_media';
} from '@fluxer/voice_engine_v2/src/core/reducers/_helpers';
import {
applyMediaFailure,
applyMediaSuccess,
completeUnpublish,
} from '@fluxer/voice_engine_v2/src/core/reducers/_media';
import type {VoiceEngineV2Snapshot, VoiceEngineV2Transition} from '@fluxer/voice_engine_v2/src/core/state';
import type {VoiceEngineV2Event} from '@fluxer/voice_engine_v2/src/protocol/events';
import type {
VoiceEngineV2Error,
VoiceEngineV2OperationId,
VoiceEngineV2ScreenAudioOptions,
} from '@fluxer/voice_engine_v2/src/protocol/types';
type VoiceEngineV2ScreenAudioEvent = Extract<VoiceEngineV2Event, {type: `screenAudio.${string}`}>;
@@ -1,14 +1,17 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import assert from 'node:assert/strict';
import {allocateOperation, appendDiagnostic, queueCommand} from '@fluxer/voice_engine_v2/src/core/reducers/_helpers';
import type {VoiceEngineV2Snapshot, VoiceEngineV2Transition} from '@fluxer/voice_engine_v2/src/core/state';
import type {
VoiceEngineV2SourceLifecycleRemovedEvent,
VoiceEngineV2SourceLifecycleTransitionedEvent,
} from '../../protocol/events';
import type {VoiceEngineV2DiagnosticEntry} from '../../protocol/types';
import type {SourceFault, SourceLifecycleState} from '../../source_isolation/SourceLifecycleState';
import type {VoiceEngineV2Snapshot, VoiceEngineV2Transition} from '../state';
import {allocateOperation, appendDiagnostic, queueCommand} from './_helpers';
} from '@fluxer/voice_engine_v2/src/protocol/events';
import type {VoiceEngineV2DiagnosticEntry} from '@fluxer/voice_engine_v2/src/protocol/types';
import type {
SourceFault,
SourceLifecycleState,
} from '@fluxer/voice_engine_v2/src/source_isolation/SourceLifecycleState';
const SOURCE_LIFECYCLE_DIAGNOSTICS_CODE = 'sourceFailed';
@@ -1,9 +1,9 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import assert from 'node:assert/strict';
import type {VoiceEngineV2Event} from '../../protocol/events';
import type {VoiceEngineV2Snapshot, VoiceEngineV2Transition} from '../state';
import {commandIfConnected} from './_helpers';
import {commandIfConnected} from '@fluxer/voice_engine_v2/src/core/reducers/_helpers';
import type {VoiceEngineV2Snapshot, VoiceEngineV2Transition} from '@fluxer/voice_engine_v2/src/core/state';
import type {VoiceEngineV2Event} from '@fluxer/voice_engine_v2/src/protocol/events';
type VoiceEngineV2StatsEvent = Extract<
VoiceEngineV2Event,
@@ -1,9 +1,14 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import assert from 'node:assert/strict';
import type {VoiceEngineV2Event} from '../../protocol/events';
import type {VoiceEngineV2Snapshot, VoiceEngineV2Transition} from '../state';
import {allocateOperation, appendDiagnostic, markOperation, queueCommand} from './_helpers';
import {
allocateOperation,
appendDiagnostic,
markOperation,
queueCommand,
} from '@fluxer/voice_engine_v2/src/core/reducers/_helpers';
import type {VoiceEngineV2Snapshot, VoiceEngineV2Transition} from '@fluxer/voice_engine_v2/src/core/state';
import type {VoiceEngineV2Event} from '@fluxer/voice_engine_v2/src/protocol/events';
type VoiceEngineV2UtilityPortsEvent = Extract<VoiceEngineV2Event, {type: `timer.${string}` | `diagnostics.${string}`}>;
@@ -1,12 +1,13 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import type {VoiceEngineV2Snapshot} from '@fluxer/voice_engine_v2/src/core/state';
import {
hasVoiceEngineV2NativeNvencEncoder,
hasVoiceEngineV2ZeroCopyNativeInput,
summarizeVoiceEngineV2Stats,
type VoiceEngineV2StatsNetworkSummary,
type VoiceEngineV2StatsSummary,
} from '../policies';
} from '@fluxer/voice_engine_v2/src/policies';
import type {
VoiceEngineV2AudioInputDevice,
VoiceEngineV2AudioOutputDevice,
@@ -26,9 +27,8 @@ import type {
VoiceEngineV2Stats,
VoiceEngineV2Track,
VoiceEngineV2WatchedStream,
} from '../protocol/types';
import type {SourceLifecycleState} from '../source_isolation/SourceLifecycleState';
import type {VoiceEngineV2Snapshot} from './state';
} from '@fluxer/voice_engine_v2/src/protocol/types';
import type {SourceLifecycleState} from '@fluxer/voice_engine_v2/src/source_isolation/SourceLifecycleState';
export interface VoiceEngineV2ParticipantProjection {
participants: Array<VoiceEngineV2Participant>;
+5 -6
View File
@@ -1,10 +1,6 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import type {VoiceEngineV2Command} from '../protocol/commands';
import type {SourceLifecycleState} from '../source_isolation/SourceLifecycleState';
export type {SourceLifecycleState} from '../source_isolation/SourceLifecycleState';
import type {VoiceEngineV2Command} from '@fluxer/voice_engine_v2/src/protocol/commands';
import type {
VoiceEngineV2AudioControls,
VoiceEngineV2CameraOptions,
@@ -41,7 +37,10 @@ import type {
VoiceEngineV2Stats,
VoiceEngineV2Track,
VoiceEngineV2WatchedStream,
} from '../protocol/types';
} from '@fluxer/voice_engine_v2/src/protocol/types';
import type {SourceLifecycleState} from '@fluxer/voice_engine_v2/src/source_isolation/SourceLifecycleState';
export type {SourceLifecycleState} from '@fluxer/voice_engine_v2/src/source_isolation/SourceLifecycleState';
export interface VoiceEngineV2ConnectionState {
status: VoiceEngineV2ConnectionStatus;
@@ -1,16 +1,22 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import assert from 'node:assert/strict';
import type {VoiceEngineV2Snapshot} from '../core/state';
import type {VoiceEngineV2Event} from '../protocol/events';
import type {VoiceEngineV2DisconnectReason, VoiceEngineV2LifecycleReason} from '../protocol/types';
import {createVoiceEngineV2MemoryEventLogSpillSink} from '../runtime/eventLogRing';
import {createVoiceEngineV2DeterministicClockPort} from '../runtime/platformPort';
import {assertEventLogInvariants, VoiceEngineV2Runtime} from '../runtime/VoiceEngineV2Runtime';
import {hashSnapshot} from '../simulation/Simulator';
import {type SimulatorDriverFaultPolicy, VoiceEngineV2SimulatorDriver} from '../simulation/SimulatorPorts';
import {VoiceEngineV2TestImplementation} from '../testing/VoiceEngineV2TestImplementation';
import {FuzzPrng} from './FuzzPrng';
import type {VoiceEngineV2Snapshot} from '@fluxer/voice_engine_v2/src/core/state';
import {FuzzPrng} from '@fluxer/voice_engine_v2/src/fuzz/FuzzPrng';
import type {VoiceEngineV2Event} from '@fluxer/voice_engine_v2/src/protocol/events';
import type {
VoiceEngineV2DisconnectReason,
VoiceEngineV2LifecycleReason,
} from '@fluxer/voice_engine_v2/src/protocol/types';
import {createVoiceEngineV2MemoryEventLogSpillSink} from '@fluxer/voice_engine_v2/src/runtime/eventLogRing';
import {createVoiceEngineV2DeterministicClockPort} from '@fluxer/voice_engine_v2/src/runtime/platformPort';
import {assertEventLogInvariants, VoiceEngineV2Runtime} from '@fluxer/voice_engine_v2/src/runtime/VoiceEngineV2Runtime';
import {hashSnapshot} from '@fluxer/voice_engine_v2/src/simulation/Simulator';
import {
type SimulatorDriverFaultPolicy,
VoiceEngineV2SimulatorDriver,
} from '@fluxer/voice_engine_v2/src/simulation/SimulatorPorts';
import {VoiceEngineV2TestImplementation} from '@fluxer/voice_engine_v2/src/testing/VoiceEngineV2TestImplementation';
const FUZZ_ITERATIONS_MAX = 1024;
@@ -1,13 +1,13 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import {describe, expect, it} from 'vitest';
import {FuzzPrng} from './FuzzPrng';
import {FuzzPrng} from '@fluxer/voice_engine_v2/src/fuzz/FuzzPrng';
import {
EXTERNAL_CONNECTION_EVENT_KINDS,
FUZZ_REDUCER_ARBITRARY_ITERATIONS,
FUZZ_REDUCER_EXTERNAL_CONNECTION_ITERATIONS,
ReducerFuzzer,
} from './ReducerFuzzer';
} from '@fluxer/voice_engine_v2/src/fuzz/ReducerFuzzer';
import {describe, expect, it} from 'vitest';
const SEEDS: ReadonlyArray<number> = [1, 2, 7, 13, 99];
@@ -1,13 +1,13 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import {describe, expect, it} from 'vitest';
import {FuzzPrng} from './FuzzPrng';
import {FuzzPrng} from '@fluxer/voice_engine_v2/src/fuzz/FuzzPrng';
import {
FUZZ_REDUCER_ARBITRARY_ITERATIONS,
FUZZ_REDUCER_NEGATIVE_ITERATIONS,
FUZZ_REDUCER_POSITIVE_ITERATIONS,
ReducerFuzzer,
} from './ReducerFuzzer';
} from '@fluxer/voice_engine_v2/src/fuzz/ReducerFuzzer';
import {describe, expect, it} from 'vitest';
const SEEDS: ReadonlyArray<number> = [1, 2, 7, 13];
@@ -1,5 +1,10 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import type {VoiceEngineV2ExternalEventListener} from '@fluxer/voice_engine_v2/src/implementations/VoiceEngineV2ImplementationBase';
import {
type VoiceEngineV2Driver,
VoiceEngineV2ImplementationBase,
} from '@fluxer/voice_engine_v2/src/implementations/VoiceEngineV2ImplementationBase';
import type {
CapabilitiesPort,
DevicePort,
@@ -16,8 +21,8 @@ import type {
VoiceEngineV2EventSourcePort,
VoiceEngineV2HostPorts,
VoiceStateIngestionPort,
} from '../ports';
import {unsupportedPortError} from '../ports';
} from '@fluxer/voice_engine_v2/src/ports';
import {unsupportedPortError} from '@fluxer/voice_engine_v2/src/ports';
import type {
VoiceEngineV2CameraEncodingOptions,
VoiceEngineV2CameraOptions,
@@ -40,9 +45,7 @@ import type {
VoiceEngineV2ScreenEncodingOptions,
VoiceEngineV2ScreenOptions,
VoiceEngineV2Stats,
} from '../protocol';
import type {VoiceEngineV2ExternalEventListener} from './VoiceEngineV2ImplementationBase';
import {type VoiceEngineV2Driver, VoiceEngineV2ImplementationBase} from './VoiceEngineV2ImplementationBase';
} from '@fluxer/voice_engine_v2/src/protocol';
export class VoiceEngineV2HostPortImplementation extends VoiceEngineV2ImplementationBase {
readonly kind = 'native' as const;
@@ -1,7 +1,7 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import type {VoiceEngineV2Command} from '../protocol/commands';
import type {VoiceEngineV2Event} from '../protocol/events';
import type {VoiceEngineV2Command} from '@fluxer/voice_engine_v2/src/protocol/commands';
import type {VoiceEngineV2Event} from '@fluxer/voice_engine_v2/src/protocol/events';
import type {
VoiceEngineV2CameraEncodingOptions,
VoiceEngineV2CameraOptions,
@@ -26,7 +26,7 @@ import type {
VoiceEngineV2ScreenEncodingOptions,
VoiceEngineV2ScreenOptions,
VoiceEngineV2Stats,
} from '../protocol/types';
} from '@fluxer/voice_engine_v2/src/protocol/types';
export interface VoiceEngineV2CommandSuccess {
ok: true;
@@ -1,6 +1,9 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
export {VoiceEngineV2HostPortDriver, VoiceEngineV2HostPortImplementation} from './VoiceEngineV2HostPortImplementation';
export {
VoiceEngineV2HostPortDriver,
VoiceEngineV2HostPortImplementation,
} from '@fluxer/voice_engine_v2/src/implementations/VoiceEngineV2HostPortImplementation';
export type {
VoiceEngineV2CommandFailure,
VoiceEngineV2CommandResult,
@@ -8,5 +11,8 @@ export type {
VoiceEngineV2Driver,
VoiceEngineV2ExternalEventListener,
VoiceEngineV2Implementation,
} from './VoiceEngineV2ImplementationBase';
export {errorToVoiceEngineV2Error, VoiceEngineV2ImplementationBase} from './VoiceEngineV2ImplementationBase';
} from '@fluxer/voice_engine_v2/src/implementations/VoiceEngineV2ImplementationBase';
export {
errorToVoiceEngineV2Error,
VoiceEngineV2ImplementationBase,
} from '@fluxer/voice_engine_v2/src/implementations/VoiceEngineV2ImplementationBase';
+14 -14
View File
@@ -28,7 +28,7 @@ export type {
VoiceEngineV2StatsPresentationProjection,
VoiceEngineV2StatsProjection,
VoiceEngineV2Transition,
} from './core';
} from '@fluxer/voice_engine_v2/src/core';
export {
availableVoiceEngineV2Capabilities,
createVoiceEngineV2InitialSnapshot,
@@ -50,7 +50,7 @@ export {
shouldApplyGatewayVoiceStateEcho,
transitionVoiceEngineV2,
unavailableVoiceEngineV2Capabilities,
} from './core';
} from '@fluxer/voice_engine_v2/src/core';
export type {
VoiceEngineV2CommandFailure,
VoiceEngineV2CommandResult,
@@ -58,13 +58,13 @@ export type {
VoiceEngineV2Driver,
VoiceEngineV2ExternalEventListener,
VoiceEngineV2Implementation,
} from './implementations';
} from '@fluxer/voice_engine_v2/src/implementations';
export {
errorToVoiceEngineV2Error,
VoiceEngineV2HostPortDriver,
VoiceEngineV2HostPortImplementation,
VoiceEngineV2ImplementationBase,
} from './implementations';
} from '@fluxer/voice_engine_v2/src/implementations';
export type {
VoiceEngineV2CameraEncodingPlan,
VoiceEngineV2CameraEncodingPlanAction,
@@ -92,7 +92,7 @@ export type {
VoiceStatsTrackRoleCandidate,
VoiceStatsTrackRoleSelection,
VoiceStatsTrackSummary,
} from './policies';
} from '@fluxer/voice_engine_v2/src/policies';
export {
applyVoiceEngineV2CameraEncodingOptions,
applyVoiceEngineV2ScreenEncodingOptions,
@@ -110,7 +110,7 @@ export {
summarizeVoiceEngineV2Stats,
unavailableVoiceEngineV2HardwareEncoderCapabilities,
VoiceEngineV2StatsTrackSource,
} from './policies';
} from '@fluxer/voice_engine_v2/src/policies';
export type {
CapabilitiesPort,
DevicePort,
@@ -128,8 +128,8 @@ export type {
VoiceEngineV2HostEventListener,
VoiceEngineV2HostPorts,
VoiceStateIngestionPort,
} from './ports';
export {unsupportedPortError} from './ports';
} from '@fluxer/voice_engine_v2/src/ports';
export {unsupportedPortError} from '@fluxer/voice_engine_v2/src/ports';
export type {
VoiceEngineV2AudioControls,
VoiceEngineV2AudioControlsPatch,
@@ -216,11 +216,11 @@ export type {
VoiceEngineV2VoiceStats,
VoiceEngineV2WatchedStream,
VoiceEngineV2WatchedStreamKey,
} from './protocol';
} from '@fluxer/voice_engine_v2/src/protocol';
export {
getVoiceEngineV2CommandResourceKey,
getVoiceEngineV2CommandTypeResourceKey,
} from './protocol';
} from '@fluxer/voice_engine_v2/src/protocol';
export type {
VoiceEngineV2EventLogEntry,
VoiceEngineV2EventLogSpillSink,
@@ -229,13 +229,13 @@ export type {
VoiceEngineV2RuntimeListener,
VoiceEngineV2RuntimeListenerPayload,
VoiceEngineV2RuntimeOptions,
} from './runtime';
} from '@fluxer/voice_engine_v2/src/runtime';
export {
commandResultToEvent,
createVoiceEngineV2MemoryEventLogSpillSink,
VoiceEngineV2Controller,
VoiceEngineV2Runtime,
} from './runtime';
} from '@fluxer/voice_engine_v2/src/runtime';
export type {
SourceFault,
SourceLifecycleAction,
@@ -245,7 +245,7 @@ export type {
SourceLifecycleSnapshotEntry,
SourceLifecycleState,
SourceLifecycleTransitionResult,
} from './source_isolation';
} from '@fluxer/voice_engine_v2/src/source_isolation';
export {
computeReconnectBackoffMs,
createInitialActiveState,
@@ -256,4 +256,4 @@ export {
SourceLifecycleError,
SourceLifecycleRegistry,
transitionSourceLifecycle,
} from './source_isolation';
} from '@fluxer/voice_engine_v2/src/source_isolation';
@@ -1,6 +1,10 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import type {VoiceEngineV2CameraEncodingOptions, VoiceEngineV2CameraOptions, VoiceEngineV2Error} from '../protocol';
import type {
VoiceEngineV2CameraEncodingOptions,
VoiceEngineV2CameraOptions,
VoiceEngineV2Error,
} from '@fluxer/voice_engine_v2/src/protocol';
export type VoiceEngineV2CameraEncodingPlanAction = 'noop' | 'updateEncoding' | 'republish' | 'reject';
@@ -1,6 +1,9 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import type {VoiceEngineV2HardwareEncoderCapabilities, VoiceEngineV2VideoCodec} from '../protocol';
import type {
VoiceEngineV2HardwareEncoderCapabilities,
VoiceEngineV2VideoCodec,
} from '@fluxer/voice_engine_v2/src/protocol';
const ZERO_COPY_NATIVE_INPUTS = new Set(['dmabuf', 'd3d11Texture', 'd3d11-texture', 'cvPixelBuffer', 'sharedTexture']);
+15 -9
View File
@@ -5,29 +5,35 @@ export type {
VoiceEngineV2CameraEncodingPlanAction,
VoiceEngineV2CameraEncodingPlanInput,
VoiceEngineV2CameraEncodingPlanReason,
} from './cameraShare';
export {applyVoiceEngineV2CameraEncodingOptions, planVoiceEngineV2CameraEncodingChange} from './cameraShare';
} from '@fluxer/voice_engine_v2/src/policies/cameraShare';
export {
applyVoiceEngineV2CameraEncodingOptions,
planVoiceEngineV2CameraEncodingChange,
} from '@fluxer/voice_engine_v2/src/policies/cameraShare';
export {
hasVoiceEngineV2NativeHardwareEncoder,
hasVoiceEngineV2NativeNvencEncoder,
hasVoiceEngineV2ZeroCopyNativeInput,
normalizeVoiceEngineV2HardwareEncoderCapabilities,
unavailableVoiceEngineV2HardwareEncoderCapabilities,
} from './hardwareEncoderCapabilities';
} from '@fluxer/voice_engine_v2/src/policies/hardwareEncoderCapabilities';
export type {
VoiceEngineV2MicrophoneFailureContext,
VoiceEngineV2MicrophoneOperationFailureAction,
VoiceEngineV2OperationFailureLike,
VoiceEngineV2OperationResultLike,
} from './microphoneFailureAction';
export {getVoiceEngineV2MicrophoneOperationFailureAction} from './microphoneFailureAction';
} from '@fluxer/voice_engine_v2/src/policies/microphoneFailureAction';
export {getVoiceEngineV2MicrophoneOperationFailureAction} from '@fluxer/voice_engine_v2/src/policies/microphoneFailureAction';
export type {
VoiceEngineV2ScreenEncodingPlan,
VoiceEngineV2ScreenEncodingPlanAction,
VoiceEngineV2ScreenEncodingPlanInput,
VoiceEngineV2ScreenEncodingPlanReason,
} from './screenShare';
export {applyVoiceEngineV2ScreenEncodingOptions, planVoiceEngineV2ScreenEncodingChange} from './screenShare';
} from '@fluxer/voice_engine_v2/src/policies/screenShare';
export {
applyVoiceEngineV2ScreenEncodingOptions,
planVoiceEngineV2ScreenEncodingChange,
} from '@fluxer/voice_engine_v2/src/policies/screenShare';
export type {
VoiceEngineV2StatsNetworkSummary,
VoiceEngineV2StatsSummary,
@@ -43,7 +49,7 @@ export type {
VoiceStatsTrackRoleCandidate,
VoiceStatsTrackRoleSelection,
VoiceStatsTrackSummary,
} from './voiceStats';
} from '@fluxer/voice_engine_v2/src/policies/voiceStats';
export {
asVoiceEngineV2StatsTrackSource,
classifyVoiceEngineV2TrackStats,
@@ -51,4 +57,4 @@ export {
coerceVoiceEngineV2Stats,
summarizeVoiceEngineV2Stats,
VoiceEngineV2StatsTrackSource,
} from './voiceStats';
} from '@fluxer/voice_engine_v2/src/policies/voiceStats';
@@ -1,20 +1,12 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import {describe, expect, it} from 'vitest';
import cameraShareEncodingPlanFixtures from '../../fixtures/policies/camera_share_encoding_plan.json';
import hardwareEncoderCapabilityFixtures from '../../fixtures/policies/hardware_encoder_capabilities.json';
import microphoneFailureFixtures from '../../fixtures/policies/microphone_failure_action.json';
import screenShareEncodingPlanFixtures from '../../fixtures/policies/screen_share_encoding_plan.json';
import voiceStatsCoercionFixtures from '../../fixtures/policies/voice_stats_coercion.json';
import voiceStatsSummaryFixtures from '../../fixtures/policies/voice_stats_summary.json';
import voiceTrackClassificationFixtures from '../../fixtures/policies/voice_track_classification.json';
import type {
VoiceEngineV2CameraEncodingOptions,
VoiceEngineV2CameraOptions,
VoiceEngineV2ScreenEncodingOptions,
VoiceEngineV2ScreenOptions,
VoiceEngineV2Stats,
} from '../protocol';
import cameraShareEncodingPlanFixtures from '@fluxer/voice_engine_v2/fixtures/policies/camera_share_encoding_plan.json';
import hardwareEncoderCapabilityFixtures from '@fluxer/voice_engine_v2/fixtures/policies/hardware_encoder_capabilities.json';
import microphoneFailureFixtures from '@fluxer/voice_engine_v2/fixtures/policies/microphone_failure_action.json';
import screenShareEncodingPlanFixtures from '@fluxer/voice_engine_v2/fixtures/policies/screen_share_encoding_plan.json';
import voiceStatsCoercionFixtures from '@fluxer/voice_engine_v2/fixtures/policies/voice_stats_coercion.json';
import voiceStatsSummaryFixtures from '@fluxer/voice_engine_v2/fixtures/policies/voice_stats_summary.json';
import voiceTrackClassificationFixtures from '@fluxer/voice_engine_v2/fixtures/policies/voice_track_classification.json';
import {
classifyVoiceEngineV2TrackStats,
coerceVoiceEngineV2Stats,
@@ -29,7 +21,15 @@ import {
type VoiceEngineV2StatsSummary,
type VoiceEngineV2StatsTrackClassificationInput,
type VoiceEngineV2StatsTrackRoleSelection,
} from './index';
} from '@fluxer/voice_engine_v2/src/policies/index';
import type {
VoiceEngineV2CameraEncodingOptions,
VoiceEngineV2CameraOptions,
VoiceEngineV2ScreenEncodingOptions,
VoiceEngineV2ScreenOptions,
VoiceEngineV2Stats,
} from '@fluxer/voice_engine_v2/src/protocol';
import {describe, expect, it} from 'vitest';
interface MicrophoneFailureFixture {
name: string;
@@ -1,6 +1,10 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import type {VoiceEngineV2Error, VoiceEngineV2ScreenEncodingOptions, VoiceEngineV2ScreenOptions} from '../protocol';
import type {
VoiceEngineV2Error,
VoiceEngineV2ScreenEncodingOptions,
VoiceEngineV2ScreenOptions,
} from '@fluxer/voice_engine_v2/src/protocol';
export type VoiceEngineV2ScreenEncodingPlanAction = 'noop' | 'updateEncoding' | 'republish' | 'reject';
@@ -6,7 +6,7 @@ import type {
VoiceEngineV2SendStats,
VoiceEngineV2Stats,
VoiceEngineV2TrackKind,
} from '../protocol';
} from '@fluxer/voice_engine_v2/src/protocol';
export const VoiceEngineV2StatsTrackSource = Object.freeze({
Microphone: 'microphone',
+2 -2
View File
@@ -1,6 +1,6 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import type {VoiceEngineV2Event} from '../protocol/events';
import type {VoiceEngineV2Event} from '@fluxer/voice_engine_v2/src/protocol/events';
import type {
VoiceEngineV2CameraEncodingOptions,
VoiceEngineV2CameraOptions,
@@ -25,7 +25,7 @@ import type {
VoiceEngineV2ScreenOptions,
VoiceEngineV2Stats,
VoiceEngineV2TimerOptions,
} from '../protocol/types';
} from '@fluxer/voice_engine_v2/src/protocol/types';
export type VoiceEngineV2HostEventListener = (event: VoiceEngineV2Event) => void;
@@ -23,7 +23,7 @@ import type {
VoiceEngineV2ScreenEncodingOptions,
VoiceEngineV2ScreenOptions,
VoiceEngineV2TimerOptions,
} from './types';
} from '@fluxer/voice_engine_v2/src/protocol/types';
export type VoiceEngineV2Command =
| {type: 'implementation.prewarm'; operationId: VoiceEngineV2OperationId}
+23 -21
View File
@@ -1,25 +1,6 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import type {SourceFault, SourceLifecycleState} from '../source_isolation/SourceLifecycleState';
import type {VoiceEngineV2CommandType} from './commands';
export type VoiceEngineV2SourceLifecycleTransitionKind = SourceLifecycleState['kind'];
export interface VoiceEngineV2SourceLifecycleTransitionedEvent {
type: 'sourceLifecycle.transitioned';
sourceId: string;
kind: VoiceEngineV2SourceLifecycleTransitionKind;
since: bigint;
attempts: number;
fault: SourceFault | null;
atMs: number;
}
export interface VoiceEngineV2SourceLifecycleRemovedEvent {
type: 'sourceLifecycle.removed';
sourceId: string;
}
import type {VoiceEngineV2CommandType} from '@fluxer/voice_engine_v2/src/protocol/commands';
import type {
VoiceEngineV2AudioControlsPatch,
VoiceEngineV2CameraEncodingOptions,
@@ -63,7 +44,28 @@ import type {
VoiceEngineV2Track,
VoiceEngineV2WatchedStream,
VoiceEngineV2WatchedStreamKey,
} from './types';
} from '@fluxer/voice_engine_v2/src/protocol/types';
import type {
SourceFault,
SourceLifecycleState,
} from '@fluxer/voice_engine_v2/src/source_isolation/SourceLifecycleState';
export type VoiceEngineV2SourceLifecycleTransitionKind = SourceLifecycleState['kind'];
export interface VoiceEngineV2SourceLifecycleTransitionedEvent {
type: 'sourceLifecycle.transitioned';
sourceId: string;
kind: VoiceEngineV2SourceLifecycleTransitionKind;
since: bigint;
attempts: number;
fault: SourceFault | null;
atMs: number;
}
export interface VoiceEngineV2SourceLifecycleRemovedEvent {
type: 'sourceLifecycle.removed';
sourceId: string;
}
export type VoiceEngineV2Event =
| {type: 'implementation.prewarmRequested'}
@@ -1,13 +1,16 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
export type {VoiceEngineV2Command, VoiceEngineV2CommandType} from './commands';
export {getVoiceEngineV2CommandResourceKey, getVoiceEngineV2CommandTypeResourceKey} from './commands';
export type {VoiceEngineV2Command, VoiceEngineV2CommandType} from '@fluxer/voice_engine_v2/src/protocol/commands';
export {
getVoiceEngineV2CommandResourceKey,
getVoiceEngineV2CommandTypeResourceKey,
} from '@fluxer/voice_engine_v2/src/protocol/commands';
export type {
VoiceEngineV2Event,
VoiceEngineV2SourceLifecycleRemovedEvent,
VoiceEngineV2SourceLifecycleTransitionedEvent,
VoiceEngineV2SourceLifecycleTransitionKind,
} from './events';
} from '@fluxer/voice_engine_v2/src/protocol/events';
export type {
VoiceEngineV2AudioControls,
VoiceEngineV2AudioControlsPatch,
@@ -88,4 +91,4 @@ export type {
VoiceEngineV2VoiceStats,
VoiceEngineV2WatchedStream,
VoiceEngineV2WatchedStreamKey,
} from './types';
} from '@fluxer/voice_engine_v2/src/protocol/types';
@@ -1,12 +1,19 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import type {
VoiceEngineV2CommandResult,
VoiceEngineV2Implementation,
} from '@fluxer/voice_engine_v2/src/implementations';
import type {VoiceEngineV2Command} from '@fluxer/voice_engine_v2/src/protocol';
import {createVoiceEngineV2MemoryEventLogSpillSink} from '@fluxer/voice_engine_v2/src/runtime/eventLogRing';
import {VoiceEngineV2Controller} from '@fluxer/voice_engine_v2/src/runtime/VoiceEngineV2Controller';
import {VoiceEngineV2Runtime} from '@fluxer/voice_engine_v2/src/runtime/VoiceEngineV2Runtime';
import {
FakeVoiceEngineV2Driver,
VoiceEngineV2TestImplementation,
waitForRuntime,
} from '@fluxer/voice_engine_v2/src/testing';
import {describe, expect, it} from 'vitest';
import type {VoiceEngineV2CommandResult, VoiceEngineV2Implementation} from '../implementations';
import type {VoiceEngineV2Command} from '../protocol';
import {FakeVoiceEngineV2Driver, VoiceEngineV2TestImplementation, waitForRuntime} from '../testing';
import {createVoiceEngineV2MemoryEventLogSpillSink} from './eventLogRing';
import {VoiceEngineV2Controller} from './VoiceEngineV2Controller';
import {VoiceEngineV2Runtime} from './VoiceEngineV2Runtime';
interface DeferredCommand {
command: VoiceEngineV2Command;
@@ -1,6 +1,6 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import {selectVoiceEngineV2Model, type VoiceEngineV2Snapshot} from '../core';
import {selectVoiceEngineV2Model, type VoiceEngineV2Snapshot} from '@fluxer/voice_engine_v2/src/core';
import type {
VoiceEngineV2AudioControlsPatch,
VoiceEngineV2CameraEncodingOptions,
@@ -28,9 +28,12 @@ import type {
VoiceEngineV2TimerOptions,
VoiceEngineV2WatchedStream,
VoiceEngineV2WatchedStreamKey,
} from '../protocol';
import type {VoiceEngineV2Event} from '../protocol/events';
import type {VoiceEngineV2Runtime, VoiceEngineV2RuntimeListener} from './VoiceEngineV2Runtime';
} from '@fluxer/voice_engine_v2/src/protocol';
import type {VoiceEngineV2Event} from '@fluxer/voice_engine_v2/src/protocol/events';
import type {
VoiceEngineV2Runtime,
VoiceEngineV2RuntimeListener,
} from '@fluxer/voice_engine_v2/src/runtime/VoiceEngineV2Runtime';
export class VoiceEngineV2Controller {
constructor(private readonly runtime: VoiceEngineV2Runtime) {}
@@ -1,24 +1,24 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import {bench, describe} from 'vitest';
import basicSessionFixture from '../../fixtures/basic_session.json';
import {availableVoiceEngineV2Capabilities} from '../core/state';
import basicSessionFixture from '@fluxer/voice_engine_v2/fixtures/basic_session.json';
import {availableVoiceEngineV2Capabilities} from '@fluxer/voice_engine_v2/src/core/state';
import type {
VoiceEngineV2CommandResult,
VoiceEngineV2ExternalEventListener,
VoiceEngineV2Implementation,
} from '../implementations';
import type {VoiceEngineV2Command} from '../protocol/commands';
import type {VoiceEngineV2Event} from '../protocol/events';
} from '@fluxer/voice_engine_v2/src/implementations';
import type {VoiceEngineV2Command} from '@fluxer/voice_engine_v2/src/protocol/commands';
import type {VoiceEngineV2Event} from '@fluxer/voice_engine_v2/src/protocol/events';
import type {
VoiceEngineV2InboundVideoFrame,
VoiceEngineV2MicrophoneOptions,
VoiceEngineV2Participant,
VoiceEngineV2ScreenOptions,
VoiceEngineV2Stats,
} from '../protocol/types';
import {createVoiceEngineV2MemoryEventLogSpillSink} from './eventLogRing';
import {VoiceEngineV2Runtime} from './VoiceEngineV2Runtime';
} from '@fluxer/voice_engine_v2/src/protocol/types';
import {createVoiceEngineV2MemoryEventLogSpillSink} from '@fluxer/voice_engine_v2/src/runtime/eventLogRing';
import {VoiceEngineV2Runtime} from '@fluxer/voice_engine_v2/src/runtime/VoiceEngineV2Runtime';
import {bench, describe} from 'vitest';
interface VoiceEngineV2BenchFixture {
events: Array<VoiceEngineV2Event>;
@@ -1,11 +1,12 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import assert from 'node:assert/strict';
import {describe, expect, it} from 'vitest';
import type {VoiceEngineV2CommandResult, VoiceEngineV2Implementation} from '../implementations';
import type {VoiceEngineV2Command} from '../protocol/commands';
import {FakeVoiceEngineV2Driver, VoiceEngineV2TestImplementation, waitForRuntime} from '../testing';
import {createVoiceEngineV2MemoryEventLogSpillSink} from './eventLogRing';
import type {
VoiceEngineV2CommandResult,
VoiceEngineV2Implementation,
} from '@fluxer/voice_engine_v2/src/implementations';
import type {VoiceEngineV2Command} from '@fluxer/voice_engine_v2/src/protocol/commands';
import {createVoiceEngineV2MemoryEventLogSpillSink} from '@fluxer/voice_engine_v2/src/runtime/eventLogRing';
import {
assertEventLogInvariants,
isVoiceEngineV2ProgrammerError,
@@ -16,7 +17,13 @@ import {
VOICE_ENGINE_V2_RESOURCE_QUEUES_CAP,
VoiceEngineV2Runtime,
type VoiceEngineV2RuntimeDiagnostic,
} from './VoiceEngineV2Runtime';
} from '@fluxer/voice_engine_v2/src/runtime/VoiceEngineV2Runtime';
import {
FakeVoiceEngineV2Driver,
VoiceEngineV2TestImplementation,
waitForRuntime,
} from '@fluxer/voice_engine_v2/src/testing';
import {describe, expect, it} from 'vitest';
class DeferredAllResolveImplementation implements VoiceEngineV2Implementation {
readonly kind = 'js' as const;
@@ -1,42 +1,52 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import assert from 'node:assert/strict';
import {isVoiceEngineV2CommandCompletionStale, transitionVoiceEngineV2} from '../core/reducer';
import {isVoiceEngineV2CommandCompletionStale, transitionVoiceEngineV2} from '@fluxer/voice_engine_v2/src/core/reducer';
import {
availableVoiceEngineV2Capabilities,
createVoiceEngineV2InitialSnapshot,
type VoiceEngineV2Snapshot,
type VoiceEngineV2Transition,
} from '../core/state';
} from '@fluxer/voice_engine_v2/src/core/state';
import {
errorToVoiceEngineV2Error,
type VoiceEngineV2CommandResult,
type VoiceEngineV2Implementation,
} from '../implementations';
import {getVoiceEngineV2CommandResourceKey, type VoiceEngineV2Command} from '../protocol/commands';
import type {VoiceEngineV2Event} from '../protocol/events';
import type {VoiceEngineV2Capabilities, VoiceEngineV2Error, VoiceEngineV2ResourceKey} from '../protocol/types';
import {commandResultToEvent} from './commandEvents';
} from '@fluxer/voice_engine_v2/src/implementations';
import {
getVoiceEngineV2CommandResourceKey,
type VoiceEngineV2Command,
} from '@fluxer/voice_engine_v2/src/protocol/commands';
import type {VoiceEngineV2Event} from '@fluxer/voice_engine_v2/src/protocol/events';
import type {
VoiceEngineV2Capabilities,
VoiceEngineV2Error,
VoiceEngineV2ResourceKey,
} from '@fluxer/voice_engine_v2/src/protocol/types';
import {commandResultToEvent} from '@fluxer/voice_engine_v2/src/runtime/commandEvents';
import {
assertEventLogRingInvariants,
VOICE_ENGINE_V2_EVENT_LOG_CAP,
type VoiceEngineV2EventLogEntry,
VoiceEngineV2EventLogRing,
type VoiceEngineV2EventLogSpillSink,
} from './eventLogRing';
} from '@fluxer/voice_engine_v2/src/runtime/eventLogRing';
import {
canCoalesceVoiceEngineV2Events,
isVoiceEngineV2FrameReceivedEvent,
VOICE_ENGINE_V2_COALESCED_TRACKS_CAP,
} from './frameCoalescing';
} from '@fluxer/voice_engine_v2/src/runtime/frameCoalescing';
import {
createVoiceEngineV2SystemClockPort,
createVoiceEngineV2SystemRandomPort,
type VoiceEngineV2ClockPort,
type VoiceEngineV2RandomPort,
} from './platformPort';
} from '@fluxer/voice_engine_v2/src/runtime/platformPort';
export type {VoiceEngineV2EventLogEntry, VoiceEngineV2EventLogSpillSink} from './eventLogRing';
export type {
VoiceEngineV2EventLogEntry,
VoiceEngineV2EventLogSpillSink,
} from '@fluxer/voice_engine_v2/src/runtime/eventLogRing';
export const VOICE_ENGINE_V2_QUEUED_COMMANDS_CAP = 4096;
export const VOICE_ENGINE_V2_RESOURCE_QUEUES_CAP = 256;
@@ -566,4 +576,4 @@ export function assertEventLogInvariants(runtime: VoiceEngineV2Runtime): void {
runtime.verifyEventLogInvariants();
}
export {commandResultToEvent} from './commandEvents';
export {commandResultToEvent} from '@fluxer/voice_engine_v2/src/runtime/commandEvents';
@@ -1,9 +1,9 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import type {VoiceEngineV2CommandResult} from '../implementations';
import type {VoiceEngineV2Command} from '../protocol/commands';
import type {VoiceEngineV2Event} from '../protocol/events';
import type {VoiceEngineV2Error} from '../protocol/types';
import type {VoiceEngineV2CommandResult} from '@fluxer/voice_engine_v2/src/implementations';
import type {VoiceEngineV2Command} from '@fluxer/voice_engine_v2/src/protocol/commands';
import type {VoiceEngineV2Event} from '@fluxer/voice_engine_v2/src/protocol/events';
import type {VoiceEngineV2Error} from '@fluxer/voice_engine_v2/src/protocol/types';
type VoiceEngineV2CommandOfType<Type extends VoiceEngineV2Command['type']> = Extract<
VoiceEngineV2Command,
@@ -1,16 +1,14 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import assert from 'node:assert/strict';
import {describe, expect, it} from 'vitest';
import {transitionVoiceEngineV2} from '../core/reducer';
import {transitionVoiceEngineV2} from '@fluxer/voice_engine_v2/src/core/reducer';
import {
availableVoiceEngineV2Capabilities,
createVoiceEngineV2InitialSnapshot,
type VoiceEngineV2Snapshot,
} from '../core/state';
import type {VoiceEngineV2Event} from '../protocol/events';
import type {VoiceEngineV2InboundVideoFrame} from '../protocol/types';
import {FakeVoiceEngineV2Driver, VoiceEngineV2TestImplementation} from '../testing';
} from '@fluxer/voice_engine_v2/src/core/state';
import type {VoiceEngineV2Event} from '@fluxer/voice_engine_v2/src/protocol/events';
import type {VoiceEngineV2InboundVideoFrame} from '@fluxer/voice_engine_v2/src/protocol/types';
import {
assertEventLogRingInvariants,
createVoiceEngineV2MemoryEventLogSpillSink,
@@ -18,12 +16,14 @@ import {
type VoiceEngineV2EventLogEntry,
VoiceEngineV2EventLogRing,
type VoiceEngineV2EventLogSpillSink,
} from './eventLogRing';
} from '@fluxer/voice_engine_v2/src/runtime/eventLogRing';
import {
assertEventLogInvariants,
type VoiceEngineV2EventLogEntry as RuntimeEventLogEntry,
VoiceEngineV2Runtime,
} from './VoiceEngineV2Runtime';
} from '@fluxer/voice_engine_v2/src/runtime/VoiceEngineV2Runtime';
import {FakeVoiceEngineV2Driver, VoiceEngineV2TestImplementation} from '@fluxer/voice_engine_v2/src/testing';
import {describe, expect, it} from 'vitest';
function makeInboundVideoFrameEvent(timestampUs: number): VoiceEngineV2Event {
const frame: VoiceEngineV2InboundVideoFrame = {
@@ -1,8 +1,8 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import assert from 'node:assert/strict';
import type {VoiceEngineV2Command} from '../protocol/commands';
import type {VoiceEngineV2Event} from '../protocol/events';
import type {VoiceEngineV2Command} from '@fluxer/voice_engine_v2/src/protocol/commands';
import type {VoiceEngineV2Event} from '@fluxer/voice_engine_v2/src/protocol/events';
export const VOICE_ENGINE_V2_EVENT_LOG_CAP = 4096;
@@ -1,11 +1,14 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import type {VoiceEngineV2Event} from '@fluxer/voice_engine_v2/src/protocol/events';
import {createVoiceEngineV2MemoryEventLogSpillSink} from '@fluxer/voice_engine_v2/src/runtime/eventLogRing';
import {
coalesceVoiceEngineV2EventSequence,
VOICE_ENGINE_V2_COALESCED_TRACKS_CAP,
} from '@fluxer/voice_engine_v2/src/runtime/frameCoalescing';
import {VoiceEngineV2Runtime} from '@fluxer/voice_engine_v2/src/runtime/VoiceEngineV2Runtime';
import {FakeVoiceEngineV2Driver, VoiceEngineV2TestImplementation} from '@fluxer/voice_engine_v2/src/testing';
import {describe, expect, it} from 'vitest';
import type {VoiceEngineV2Event} from '../protocol/events';
import {FakeVoiceEngineV2Driver, VoiceEngineV2TestImplementation} from '../testing';
import {createVoiceEngineV2MemoryEventLogSpillSink} from './eventLogRing';
import {coalesceVoiceEngineV2EventSequence, VOICE_ENGINE_V2_COALESCED_TRACKS_CAP} from './frameCoalescing';
import {VoiceEngineV2Runtime} from './VoiceEngineV2Runtime';
function makeRuntime(options?: {eventLogCap?: number}): VoiceEngineV2Runtime {
const driver = new FakeVoiceEngineV2Driver();
@@ -1,7 +1,7 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import assert from 'node:assert/strict';
import type {VoiceEngineV2Event} from '../protocol/events';
import type {VoiceEngineV2Event} from '@fluxer/voice_engine_v2/src/protocol/events';
export const VOICE_ENGINE_V2_COALESCED_TRACKS_CAP = 64;
@@ -1,20 +1,20 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
export type {VoiceEngineV2MemoryEventLogSpillSink} from './eventLogRing';
export type {VoiceEngineV2MemoryEventLogSpillSink} from '@fluxer/voice_engine_v2/src/runtime/eventLogRing';
export {
assertEventLogRingInvariants,
createVoiceEngineV2MemoryEventLogSpillSink,
VOICE_ENGINE_V2_EVENT_LOG_CAP,
VOICE_ENGINE_V2_MEMORY_EVENT_LOG_SPILL_SINK_CAP,
VoiceEngineV2EventLogRing,
} from './eventLogRing';
export type {VoiceEngineV2FrameReceivedEvent} from './frameCoalescing';
} from '@fluxer/voice_engine_v2/src/runtime/eventLogRing';
export type {VoiceEngineV2FrameReceivedEvent} from '@fluxer/voice_engine_v2/src/runtime/frameCoalescing';
export {
canCoalesceVoiceEngineV2Events,
coalesceVoiceEngineV2EventSequence,
isVoiceEngineV2FrameReceivedEvent,
VOICE_ENGINE_V2_COALESCED_TRACKS_CAP,
} from './frameCoalescing';
} from '@fluxer/voice_engine_v2/src/runtime/frameCoalescing';
export type {
VoiceEngineV2ClockPort,
VoiceEngineV2EntropySource,
@@ -23,7 +23,7 @@ export type {
VoiceEngineV2SystemClockPort,
VoiceEngineV2SystemRandomPort,
VoiceEngineV2WallClockSource,
} from './platformPort';
} from '@fluxer/voice_engine_v2/src/runtime/platformPort';
export {
createVoiceEngineV2DeterministicClockPort,
createVoiceEngineV2DeterministicPlatformPort,
@@ -31,8 +31,8 @@ export {
createVoiceEngineV2SystemClockPort,
createVoiceEngineV2SystemPlatformPort,
createVoiceEngineV2SystemRandomPort,
} from './platformPort';
export {VoiceEngineV2Controller} from './VoiceEngineV2Controller';
} from '@fluxer/voice_engine_v2/src/runtime/platformPort';
export {VoiceEngineV2Controller} from '@fluxer/voice_engine_v2/src/runtime/VoiceEngineV2Controller';
export type {
VoiceEngineV2EventLogEntry,
VoiceEngineV2EventLogSpillSink,
@@ -43,7 +43,7 @@ export type {
VoiceEngineV2RuntimeListenerPayload,
VoiceEngineV2RuntimeOptions,
VoiceEngineV2RuntimeQueueKind,
} from './VoiceEngineV2Runtime';
} from '@fluxer/voice_engine_v2/src/runtime/VoiceEngineV2Runtime';
export {
assertEventLogInvariants,
commandResultToEvent,
@@ -54,4 +54,4 @@ export {
VOICE_ENGINE_V2_QUEUED_COMMANDS_CAP,
VOICE_ENGINE_V2_RESOURCE_QUEUES_CAP,
VoiceEngineV2Runtime,
} from './VoiceEngineV2Runtime';
} from '@fluxer/voice_engine_v2/src/runtime/VoiceEngineV2Runtime';
@@ -1,11 +1,11 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import {afterEach, describe, expect, it, vi} from 'vitest';
import {
createVoiceEngineV2SeededRandomPort,
createVoiceEngineV2SystemClockPort,
createVoiceEngineV2SystemRandomPort,
} from './platformPort';
} from '@fluxer/voice_engine_v2/src/runtime/platformPort';
import {afterEach, describe, expect, it, vi} from 'vitest';
afterEach(() => {
vi.restoreAllMocks();
@@ -1,12 +1,16 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import {bench, describe} from 'vitest';
import {
availableVoiceEngineV2Capabilities,
createVoiceEngineV2InitialSnapshot,
type VoiceEngineV2Snapshot,
} from '../core/state';
import type {VoiceEngineV2Participant, VoiceEngineV2Track, VoiceEngineV2TrackSource} from '../protocol/types';
} from '@fluxer/voice_engine_v2/src/core/state';
import type {
VoiceEngineV2Participant,
VoiceEngineV2Track,
VoiceEngineV2TrackSource,
} from '@fluxer/voice_engine_v2/src/protocol/types';
import {bench, describe} from 'vitest';
const PARTICIPANT_COUNT = 8;
const TRACKS_PER_PARTICIPANT = 4;
@@ -1,7 +1,10 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import assert from 'node:assert/strict';
import {createSimulatorRandom, type VoiceEngineV2SimulatorRandom} from './SimulatorPorts';
import {
createSimulatorRandom,
type VoiceEngineV2SimulatorRandom,
} from '@fluxer/voice_engine_v2/src/simulation/SimulatorPorts';
const SIMULATOR_FAULTS_MAX = 128;
const SIMULATOR_PEERS_PER_FAULT_MAX = 16;
@@ -1,7 +1,7 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import assert from 'node:assert/strict';
import type {VoiceEngineV2EventLogEntry} from '../runtime/VoiceEngineV2Runtime';
import type {VoiceEngineV2EventLogEntry} from '@fluxer/voice_engine_v2/src/runtime/VoiceEngineV2Runtime';
const SIMULATOR_INVARIANT_LOG_MAX = 4096;
@@ -1,14 +1,21 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import {describe, expect, it} from 'vitest';
import {createVoiceEngineV2EmptyFaultPlan, createVoiceEngineV2FaultPlan} from './FaultInjector';
import {STABLE_STRINGIFY_DEPTH_MAX, stableStringify, VoiceEngineV2Simulator} from './Simulator';
import {
createVoiceEngineV2EmptyFaultPlan,
createVoiceEngineV2FaultPlan,
} from '@fluxer/voice_engine_v2/src/simulation/FaultInjector';
import {
STABLE_STRINGIFY_DEPTH_MAX,
stableStringify,
VoiceEngineV2Simulator,
} from '@fluxer/voice_engine_v2/src/simulation/Simulator';
import {
createVoiceEngineV2FiveParticipantConferenceWorkload,
createVoiceEngineV2OneOnOneCallWorkload,
createVoiceEngineV2ScreenShareWorkload,
VoiceEngineV2WorkloadBuilder,
} from './Workload';
} from '@fluxer/voice_engine_v2/src/simulation/Workload';
import {describe, expect, it} from 'vitest';
describe('VoiceEngineV2Simulator determinism', () => {
it('produces identical snapshot hashes for identical inputs', async () => {
@@ -1,23 +1,29 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import assert from 'node:assert/strict';
import type {VoiceEngineV2Event} from '../protocol/events';
import {createVoiceEngineV2MemoryEventLogSpillSink} from '../runtime/eventLogRing';
import {type VoiceEngineV2EventLogEntry, VoiceEngineV2Runtime} from '../runtime/VoiceEngineV2Runtime';
import {VoiceEngineV2TestImplementation} from '../testing/VoiceEngineV2TestImplementation';
import type {VoiceEngineV2Event} from '@fluxer/voice_engine_v2/src/protocol/events';
import {createVoiceEngineV2MemoryEventLogSpillSink} from '@fluxer/voice_engine_v2/src/runtime/eventLogRing';
import {
type VoiceEngineV2EventLogEntry,
VoiceEngineV2Runtime,
} from '@fluxer/voice_engine_v2/src/runtime/VoiceEngineV2Runtime';
import {
type VoiceEngineV2FaultDecision,
VoiceEngineV2FaultInjector,
type VoiceEngineV2FaultPlan,
} from './FaultInjector';
import {collectVoiceEngineV2SafetyViolations, type VoiceEngineV2SafetyViolation} from './SafetyInvariants';
} from '@fluxer/voice_engine_v2/src/simulation/FaultInjector';
import {
collectVoiceEngineV2SafetyViolations,
type VoiceEngineV2SafetyViolation,
} from '@fluxer/voice_engine_v2/src/simulation/SafetyInvariants';
import {
createSimulatorClock,
type SimulatorDriverDeviceInventory,
type SimulatorDriverFaultPolicy,
VoiceEngineV2SimulatorDriver,
} from './SimulatorPorts';
import type {VoiceEngineV2Workload} from './Workload';
} from '@fluxer/voice_engine_v2/src/simulation/SimulatorPorts';
import type {VoiceEngineV2Workload} from '@fluxer/voice_engine_v2/src/simulation/Workload';
import {VoiceEngineV2TestImplementation} from '@fluxer/voice_engine_v2/src/testing/VoiceEngineV2TestImplementation';
export const SIMULATOR_TICK_MAX = 4096;
const SIMULATOR_TICK_NS_DEFAULT = 16_666_666;
@@ -4,8 +4,8 @@ import assert from 'node:assert/strict';
import type {
VoiceEngineV2Driver,
VoiceEngineV2ExternalEventListener,
} from '../implementations/VoiceEngineV2ImplementationBase';
import type {VoiceEngineV2Event} from '../protocol/events';
} from '@fluxer/voice_engine_v2/src/implementations/VoiceEngineV2ImplementationBase';
import type {VoiceEngineV2Event} from '@fluxer/voice_engine_v2/src/protocol/events';
import type {
VoiceEngineV2CameraEncodingOptions,
VoiceEngineV2CameraOptions,
@@ -29,8 +29,8 @@ import type {
VoiceEngineV2ScreenEncodingOptions,
VoiceEngineV2ScreenOptions,
VoiceEngineV2Stats,
} from '../protocol/types';
import type {VoiceEngineV2ClockPort, VoiceEngineV2RandomPort} from '../runtime/platformPort';
} from '@fluxer/voice_engine_v2/src/protocol/types';
import type {VoiceEngineV2ClockPort, VoiceEngineV2RandomPort} from '@fluxer/voice_engine_v2/src/runtime/platformPort';
const SIMULATOR_CLOCK_MAX_NS = 1_000_000_000_000;
const SIMULATOR_NS_PER_MS = 1_000_000;
@@ -1,7 +1,7 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import assert from 'node:assert/strict';
import type {VoiceEngineV2Event} from '../protocol/events';
import type {VoiceEngineV2Event} from '@fluxer/voice_engine_v2/src/protocol/events';
import type {
VoiceEngineV2CameraOptions,
VoiceEngineV2ConnectOptions,
@@ -10,7 +10,7 @@ import type {
VoiceEngineV2NativeFrameSinkOptions,
VoiceEngineV2Participant,
VoiceEngineV2ScreenOptions,
} from '../protocol/types';
} from '@fluxer/voice_engine_v2/src/protocol/types';
const SIMULATOR_WORKLOAD_STEPS_MAX = 512;
const SIMULATOR_PARTICIPANTS_MAX = 32;
@@ -1,13 +1,16 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import {describe, expect, it} from 'vitest';
import {createVoiceEngineV2EmptyFaultPlan, createVoiceEngineV2FaultPlan} from './FaultInjector';
import {VoiceEngineV2Simulator} from './Simulator';
import {
createVoiceEngineV2EmptyFaultPlan,
createVoiceEngineV2FaultPlan,
} from '@fluxer/voice_engine_v2/src/simulation/FaultInjector';
import {VoiceEngineV2Simulator} from '@fluxer/voice_engine_v2/src/simulation/Simulator';
import {
createVoiceEngineV2ExternalEstablishmentCycleWorkload,
SIMULATOR_EXTERNAL_ESTABLISH_CYCLES,
VoiceEngineV2WorkloadBuilder,
} from './Workload';
} from '@fluxer/voice_engine_v2/src/simulation/Workload';
import {describe, expect, it} from 'vitest';
describe('external establishment workload shape', () => {
it('emits an establish and a remote disconnect for every cycle', () => {
@@ -1,10 +1,8 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import assert from 'node:assert/strict';
import {createVoiceEngineV2FaultPlan} from '../FaultInjector';
import type {VoiceEngineV2SimulatorResult} from '../Simulator';
import type {VoiceEngineV2Workload} from '../Workload';
import {VoiceEngineV2WorkloadBuilder} from '../Workload';
import {createVoiceEngineV2FaultPlan} from '@fluxer/voice_engine_v2/src/simulation/FaultInjector';
import type {VoiceEngineV2SimulatorResult} from '@fluxer/voice_engine_v2/src/simulation/Simulator';
import {
assertSeedWellFormed,
combineVerdicts,
@@ -12,7 +10,9 @@ import {
passVerdict,
type VoiceEngineV2AcceptanceVerdict,
type VoiceEngineV2SimulationScenario,
} from './index';
} from '@fluxer/voice_engine_v2/src/simulation/scenarios/index';
import type {VoiceEngineV2Workload} from '@fluxer/voice_engine_v2/src/simulation/Workload';
import {VoiceEngineV2WorkloadBuilder} from '@fluxer/voice_engine_v2/src/simulation/Workload';
const ASYM_PARTITION_FROM_TICK = 200;
const ASYM_PARTITION_PEER_ID = 'B';
@@ -1,10 +1,8 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import assert from 'node:assert/strict';
import {createVoiceEngineV2FaultPlan} from '../FaultInjector';
import type {VoiceEngineV2SimulatorResult} from '../Simulator';
import type {VoiceEngineV2Workload} from '../Workload';
import {VoiceEngineV2WorkloadBuilder} from '../Workload';
import {createVoiceEngineV2FaultPlan} from '@fluxer/voice_engine_v2/src/simulation/FaultInjector';
import type {VoiceEngineV2SimulatorResult} from '@fluxer/voice_engine_v2/src/simulation/Simulator';
import {
assertSeedWellFormed,
combineVerdicts,
@@ -12,7 +10,9 @@ import {
passVerdict,
type VoiceEngineV2AcceptanceVerdict,
type VoiceEngineV2SimulationScenario,
} from './index';
} from '@fluxer/voice_engine_v2/src/simulation/scenarios/index';
import type {VoiceEngineV2Workload} from '@fluxer/voice_engine_v2/src/simulation/Workload';
import {VoiceEngineV2WorkloadBuilder} from '@fluxer/voice_engine_v2/src/simulation/Workload';
const DEVICE_DISCONNECT_TICK = 100;
const DEVICE_DISCONNECT_DEVICE_ID = 'mic-1';
@@ -1,10 +1,8 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import assert from 'node:assert/strict';
import {createVoiceEngineV2FaultPlan} from '../FaultInjector';
import type {VoiceEngineV2SimulatorResult} from '../Simulator';
import type {VoiceEngineV2Workload} from '../Workload';
import {VoiceEngineV2WorkloadBuilder} from '../Workload';
import {createVoiceEngineV2FaultPlan} from '@fluxer/voice_engine_v2/src/simulation/FaultInjector';
import type {VoiceEngineV2SimulatorResult} from '@fluxer/voice_engine_v2/src/simulation/Simulator';
import {
assertSeedWellFormed,
combineVerdicts,
@@ -12,7 +10,9 @@ import {
passVerdict,
type VoiceEngineV2AcceptanceVerdict,
type VoiceEngineV2SimulationScenario,
} from './index';
} from '@fluxer/voice_engine_v2/src/simulation/scenarios/index';
import type {VoiceEngineV2Workload} from '@fluxer/voice_engine_v2/src/simulation/Workload';
import {VoiceEngineV2WorkloadBuilder} from '@fluxer/voice_engine_v2/src/simulation/Workload';
const ENCODER_FAIL_AT_TICK = 220;
const ENCODER_FAIL_PARTICIPANT_COUNT = 4;
@@ -1,10 +1,8 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import assert from 'node:assert/strict';
import {createVoiceEngineV2FaultPlan} from '../FaultInjector';
import type {VoiceEngineV2SimulatorResult} from '../Simulator';
import type {VoiceEngineV2Workload} from '../Workload';
import {VoiceEngineV2WorkloadBuilder} from '../Workload';
import {createVoiceEngineV2FaultPlan} from '@fluxer/voice_engine_v2/src/simulation/FaultInjector';
import type {VoiceEngineV2SimulatorResult} from '@fluxer/voice_engine_v2/src/simulation/Simulator';
import {
assertSeedWellFormed,
combineVerdicts,
@@ -12,7 +10,9 @@ import {
passVerdict,
type VoiceEngineV2AcceptanceVerdict,
type VoiceEngineV2SimulationScenario,
} from './index';
} from '@fluxer/voice_engine_v2/src/simulation/scenarios/index';
import type {VoiceEngineV2Workload} from '@fluxer/voice_engine_v2/src/simulation/Workload';
import {VoiceEngineV2WorkloadBuilder} from '@fluxer/voice_engine_v2/src/simulation/Workload';
const GPU_TDR_AT_TICK = 200;
const GPU_TDR_RECONNECT_TICK = 215;
@@ -1,9 +1,12 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import assert from 'node:assert/strict';
import type {VoiceEngineV2FaultPlan} from '../FaultInjector';
import type {VoiceEngineV2SimulatorMode, VoiceEngineV2SimulatorResult} from '../Simulator';
import type {VoiceEngineV2Workload} from '../Workload';
import type {VoiceEngineV2FaultPlan} from '@fluxer/voice_engine_v2/src/simulation/FaultInjector';
import type {
VoiceEngineV2SimulatorMode,
VoiceEngineV2SimulatorResult,
} from '@fluxer/voice_engine_v2/src/simulation/Simulator';
import type {VoiceEngineV2Workload} from '@fluxer/voice_engine_v2/src/simulation/Workload';
const SCENARIO_SEED_MAX = 0x7fffffff;
@@ -50,8 +53,8 @@ export function assertSeedWellFormed(seed: number): void {
assert.ok(seed <= SCENARIO_SEED_MAX, 'scenario seed exceeds SCENARIO_SEED_MAX');
}
export {defineAsymmetricNatAfterConnectScenario} from './asymmetricNatAfterConnect';
export {defineCaptureDeviceDisconnectScenario} from './captureDeviceDisconnect';
export {defineEncoderFailUnderLoadScenario} from './encoderFailUnderLoad';
export {defineGpuTdrMidFrameScenario} from './gpuTdrMidFrame';
export {defineNetworkPartitionDuringScreenShareScenario} from './networkPartitionDuringScreenShare';
export {defineAsymmetricNatAfterConnectScenario} from '@fluxer/voice_engine_v2/src/simulation/scenarios/asymmetricNatAfterConnect';
export {defineCaptureDeviceDisconnectScenario} from '@fluxer/voice_engine_v2/src/simulation/scenarios/captureDeviceDisconnect';
export {defineEncoderFailUnderLoadScenario} from '@fluxer/voice_engine_v2/src/simulation/scenarios/encoderFailUnderLoad';
export {defineGpuTdrMidFrameScenario} from '@fluxer/voice_engine_v2/src/simulation/scenarios/gpuTdrMidFrame';
export {defineNetworkPartitionDuringScreenShareScenario} from '@fluxer/voice_engine_v2/src/simulation/scenarios/networkPartitionDuringScreenShare';
@@ -1,10 +1,8 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import assert from 'node:assert/strict';
import {createVoiceEngineV2FaultPlan} from '../FaultInjector';
import type {VoiceEngineV2SimulatorResult} from '../Simulator';
import type {VoiceEngineV2Workload} from '../Workload';
import {VoiceEngineV2WorkloadBuilder} from '../Workload';
import {createVoiceEngineV2FaultPlan} from '@fluxer/voice_engine_v2/src/simulation/FaultInjector';
import type {VoiceEngineV2SimulatorResult} from '@fluxer/voice_engine_v2/src/simulation/Simulator';
import {
assertSeedWellFormed,
combineVerdicts,
@@ -12,7 +10,9 @@ import {
passVerdict,
type VoiceEngineV2AcceptanceVerdict,
type VoiceEngineV2SimulationScenario,
} from './index';
} from '@fluxer/voice_engine_v2/src/simulation/scenarios/index';
import type {VoiceEngineV2Workload} from '@fluxer/voice_engine_v2/src/simulation/Workload';
import {VoiceEngineV2WorkloadBuilder} from '@fluxer/voice_engine_v2/src/simulation/Workload';
const PARTITION_FROM_TICK = 150;
const PARTITION_UNTIL_TICK = 350;
@@ -1,7 +1,6 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import {describe, expect, it} from 'vitest';
import {SIMULATOR_TICK_MAX, VoiceEngineV2Simulator} from '../Simulator';
import {SIMULATOR_TICK_MAX, VoiceEngineV2Simulator} from '@fluxer/voice_engine_v2/src/simulation/Simulator';
import {
defineAsymmetricNatAfterConnectScenario,
defineCaptureDeviceDisconnectScenario,
@@ -9,7 +8,8 @@ import {
defineGpuTdrMidFrameScenario,
defineNetworkPartitionDuringScreenShareScenario,
type VoiceEngineV2SimulationScenario,
} from './index';
} from '@fluxer/voice_engine_v2/src/simulation/scenarios/index';
import {describe, expect, it} from 'vitest';
const SCENARIO_FACTORIES: ReadonlyArray<(seed: number) => VoiceEngineV2SimulationScenario> = [
defineNetworkPartitionDuringScreenShareScenario,
@@ -10,7 +10,7 @@ import {
type SourceLifecycleEvent,
type SourceLifecycleState,
transitionSourceLifecycle,
} from './SourceLifecycleState';
} from '@fluxer/voice_engine_v2/src/source_isolation/SourceLifecycleState';
export const MAX_TRACKED_SOURCES = 256;
@@ -1,6 +1,5 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import {describe, expect, it} from 'vitest';
import {
computeReconnectBackoffMs,
createInitialActiveState,
@@ -13,7 +12,8 @@ import {
SourceLifecycleRegistry,
type SourceLifecycleState,
transitionSourceLifecycle,
} from './index';
} from '@fluxer/voice_engine_v2/src/source_isolation/index';
import {describe, expect, it} from 'vitest';
function makeClock(startNs: bigint = 1_000n, stepNs: bigint = 1_000n): SourceLifecycleClock {
let value = startNs;
@@ -5,7 +5,7 @@ export {
type SourceLifecycleDispatchResult,
SourceLifecycleRegistry,
type SourceLifecycleSnapshotEntry,
} from './SourceLifecycleRegistry';
} from '@fluxer/voice_engine_v2/src/source_isolation/SourceLifecycleRegistry';
export {
computeReconnectBackoffMs,
createInitialActiveState,
@@ -20,4 +20,4 @@ export {
type SourceLifecycleState,
type SourceLifecycleTransitionResult,
transitionSourceLifecycle,
} from './SourceLifecycleState';
} from '@fluxer/voice_engine_v2/src/source_isolation/SourceLifecycleState';
@@ -3,8 +3,8 @@
import type {
VoiceEngineV2Driver,
VoiceEngineV2ExternalEventListener,
} from '../implementations/VoiceEngineV2ImplementationBase';
import type {VoiceEngineV2Event} from '../protocol/events';
} from '@fluxer/voice_engine_v2/src/implementations/VoiceEngineV2ImplementationBase';
import type {VoiceEngineV2Event} from '@fluxer/voice_engine_v2/src/protocol/events';
import type {
VoiceEngineV2CameraEncodingOptions,
VoiceEngineV2CameraOptions,
@@ -22,7 +22,7 @@ import type {
VoiceEngineV2ScreenEncodingOptions,
VoiceEngineV2ScreenOptions,
VoiceEngineV2Stats,
} from '../protocol/types';
} from '@fluxer/voice_engine_v2/src/protocol/types';
export type FakeVoiceEngineV2DriverCall =
| {type: 'prewarm'}
@@ -3,7 +3,7 @@
import {
type VoiceEngineV2Driver,
VoiceEngineV2ImplementationBase,
} from '../implementations/VoiceEngineV2ImplementationBase';
} from '@fluxer/voice_engine_v2/src/implementations/VoiceEngineV2ImplementationBase';
export interface VoiceEngineV2TestDriver extends VoiceEngineV2Driver {}
@@ -1,13 +1,13 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import {VoiceEngineV2HostPortImplementation} from '@fluxer/voice_engine_v2/src/implementations';
import type {VoiceEngineV2HostPorts} from '@fluxer/voice_engine_v2/src/ports';
import {createVoiceEngineV2MemoryEventLogSpillSink, VoiceEngineV2Runtime} from '@fluxer/voice_engine_v2/src/runtime';
import type {VoiceEngineV2ConformanceSubject} from '@fluxer/voice_engine_v2/src/testing/conformance';
import {runVoiceEngineV2ConformanceSuite, waitForRuntime} from '@fluxer/voice_engine_v2/src/testing/conformance';
import {FakeVoiceEngineV2Driver} from '@fluxer/voice_engine_v2/src/testing/FakeVoiceEngineV2Driver';
import {VoiceEngineV2TestImplementation} from '@fluxer/voice_engine_v2/src/testing/VoiceEngineV2TestImplementation';
import {describe, expect, it} from 'vitest';
import {VoiceEngineV2HostPortImplementation} from '../implementations';
import type {VoiceEngineV2HostPorts} from '../ports';
import {createVoiceEngineV2MemoryEventLogSpillSink, VoiceEngineV2Runtime} from '../runtime';
import type {VoiceEngineV2ConformanceSubject} from './conformance';
import {runVoiceEngineV2ConformanceSuite, waitForRuntime} from './conformance';
import {FakeVoiceEngineV2Driver} from './FakeVoiceEngineV2Driver';
import {VoiceEngineV2TestImplementation} from './VoiceEngineV2TestImplementation';
function createConformanceHostPorts(driver: FakeVoiceEngineV2Driver): VoiceEngineV2HostPorts {
return {
@@ -1,10 +1,10 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import {selectVoiceEngineV2Model} from '@fluxer/voice_engine_v2/src/core';
import type {VoiceEngineV2Implementation} from '@fluxer/voice_engine_v2/src/implementations';
import {createVoiceEngineV2MemoryEventLogSpillSink, VoiceEngineV2Runtime} from '@fluxer/voice_engine_v2/src/runtime';
import type {FakeVoiceEngineV2Driver} from '@fluxer/voice_engine_v2/src/testing/FakeVoiceEngineV2Driver';
import {describe, expect, it} from 'vitest';
import {selectVoiceEngineV2Model} from '../core';
import type {VoiceEngineV2Implementation} from '../implementations';
import {createVoiceEngineV2MemoryEventLogSpillSink, VoiceEngineV2Runtime} from '../runtime';
import type {FakeVoiceEngineV2Driver} from './FakeVoiceEngineV2Driver';
export interface VoiceEngineV2ConformanceSubject {
implementation: VoiceEngineV2Implementation;
@@ -1,15 +1,18 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import {describe, expect, it} from 'vitest';
import appVoiceSessionFixtureJson from '../../fixtures/event_logs/app_voice_session.json';
import {coalesceVoiceEngineV2OutboundStats} from '../policies/voiceStats';
import type {VoiceEngineV2OutboundStats} from '../protocol/types';
import appVoiceSessionFixtureJson from '@fluxer/voice_engine_v2/fixtures/event_logs/app_voice_session.json';
import {coalesceVoiceEngineV2OutboundStats} from '@fluxer/voice_engine_v2/src/policies/voiceStats';
import type {VoiceEngineV2OutboundStats} from '@fluxer/voice_engine_v2/src/protocol/types';
import {
createVoiceEngineV2DeterministicPlatformPort,
createVoiceEngineV2SeededRandomPort,
createVoiceEngineV2SystemClockPort,
} from '../runtime';
import {replayVoiceEngineV2EventLogFixture, type VoiceEngineV2EventLogFixture} from './eventLogReplay';
} from '@fluxer/voice_engine_v2/src/runtime';
import {
replayVoiceEngineV2EventLogFixture,
type VoiceEngineV2EventLogFixture,
} from '@fluxer/voice_engine_v2/src/testing/eventLogReplay';
import {describe, expect, it} from 'vitest';
const fixture = appVoiceSessionFixtureJson as unknown as VoiceEngineV2EventLogFixture;
@@ -1,18 +1,18 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import {describe, expect, it} from 'vitest';
import appVoiceSessionFixtureJson from '../../fixtures/event_logs/app_voice_session.json';
import type {VoiceEngineV2Event} from '../protocol/events';
import {createVoiceEngineV2MemoryEventLogSpillSink} from '../runtime/eventLogRing';
import {coalesceVoiceEngineV2EventSequence} from '../runtime/frameCoalescing';
import {VoiceEngineV2Runtime} from '../runtime/VoiceEngineV2Runtime';
import appVoiceSessionFixtureJson from '@fluxer/voice_engine_v2/fixtures/event_logs/app_voice_session.json';
import type {VoiceEngineV2Event} from '@fluxer/voice_engine_v2/src/protocol/events';
import {createVoiceEngineV2MemoryEventLogSpillSink} from '@fluxer/voice_engine_v2/src/runtime/eventLogRing';
import {coalesceVoiceEngineV2EventSequence} from '@fluxer/voice_engine_v2/src/runtime/frameCoalescing';
import {VoiceEngineV2Runtime} from '@fluxer/voice_engine_v2/src/runtime/VoiceEngineV2Runtime';
import {
replayVoiceEngineV2EventLogFixture,
VOICE_ENGINE_V2_EVENT_LOG_FIXTURE_VERSION,
type VoiceEngineV2EventLogFixture,
} from './eventLogReplay';
import {FakeVoiceEngineV2Driver} from './FakeVoiceEngineV2Driver';
import {VoiceEngineV2TestImplementation} from './VoiceEngineV2TestImplementation';
} from '@fluxer/voice_engine_v2/src/testing/eventLogReplay';
import {FakeVoiceEngineV2Driver} from '@fluxer/voice_engine_v2/src/testing/FakeVoiceEngineV2Driver';
import {VoiceEngineV2TestImplementation} from '@fluxer/voice_engine_v2/src/testing/VoiceEngineV2TestImplementation';
import {describe, expect, it} from 'vitest';
const appVoiceSessionFixture = appVoiceSessionFixtureJson as unknown as VoiceEngineV2EventLogFixture;
@@ -1,16 +1,16 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import assert from 'node:assert/strict';
import {transitionVoiceEngineV2} from '../core/reducer';
import {selectVoiceEngineV2Model} from '../core/selectors';
import {transitionVoiceEngineV2} from '@fluxer/voice_engine_v2/src/core/reducer';
import {selectVoiceEngineV2Model} from '@fluxer/voice_engine_v2/src/core/selectors';
import {
availableVoiceEngineV2Capabilities,
createVoiceEngineV2InitialSnapshot,
type VoiceEngineV2Snapshot,
} from '../core/state';
import type {VoiceEngineV2Command} from '../protocol/commands';
import type {VoiceEngineV2Event} from '../protocol/events';
import type {VoiceEngineV2Capabilities, VoiceEngineV2Model} from '../protocol/types';
} from '@fluxer/voice_engine_v2/src/core/state';
import type {VoiceEngineV2Command} from '@fluxer/voice_engine_v2/src/protocol/commands';
import type {VoiceEngineV2Event} from '@fluxer/voice_engine_v2/src/protocol/events';
import type {VoiceEngineV2Capabilities, VoiceEngineV2Model} from '@fluxer/voice_engine_v2/src/protocol/types';
export const VOICE_ENGINE_V2_EVENT_LOG_FIXTURE_VERSION = 1;
@@ -4,16 +4,16 @@
import {readFileSync} from 'node:fs';
import path from 'node:path';
import {fileURLToPath} from 'node:url';
import * as implementationsBarrel from '@fluxer/voice_engine_v2/src/implementations';
import * as packageBarrel from '@fluxer/voice_engine_v2/src/index';
import {describe, expect, it} from 'vitest';
import * as implementationsBarrel from '../implementations';
import * as packageBarrel from '../index';
const __dirname = path.dirname(fileURLToPath(import.meta.url));
const PACKAGE_ROOT = path.resolve(__dirname, '..');
const PUBLIC_EXPORT_FILES = ['index.ts', 'implementations/index.ts'];
const QUARANTINED_TESTING_EXPORTS = ['VoiceEngineV2TestImplementation', 'VoiceEngineV2TestDriver'];
const LEGACY_TESTING_EXPORTS = ['JsVoiceEngineV2Implementation', 'VoiceEngineV2JsDriver'];
const TESTING_MODULE_REFERENCE_PATTERN = /from\s+['"][./]*testing(?:\/[^'"]*)?['"]/;
const TESTING_MODULE_REFERENCE_PATTERN = /from\s+['"](?:[./]*|@fluxer\/voice_engine_v2\/src\/)testing(?:\/[^'"]*)?['"]/;
const PUBLIC_BARRELS: ReadonlyArray<[string, Record<string, unknown>]> = [
['src/index.ts', packageBarrel],

Some files were not shown because too many files have changed in this diff Show More