mirror of
https://github.com/fluxerapp/fluxer
synced 2026-10-07 19:22:14 +09:00
refactor(imports): replace relative imports with path aliases (#2741)
This commit is contained in:
@@ -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', () => {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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>;
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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']);
|
||||
|
||||
|
||||
@@ -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',
|
||||
|
||||
@@ -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}
|
||||
|
||||
@@ -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';
|
||||
|
||||
+5
-5
@@ -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
Reference in New Issue
Block a user