3.3 KiB
3.3 KiB
Tasks: voice
Change ID: voice
Package: @suaveplan/voice
Target path: universal/media/voice
Prerequisite packages on Verdaccio: @suaveplan/error, @suaveplan/types, @suaveplan/streams
1. Scaffold
- Create
universal/media/voice/withsrc/,tests/, and all feature subdirectories per the layout inproposal.md. - Write
package.jsonat version0.1.0with"type": "module","sideEffects": false, correctexportsmap,dependencies, anddevDependencies. - Write
tsconfig.lib.jsonextending../../../tsconfig.base.json. - Write
vitest.config.tsusingcreateTestConfig()from@suaveplan/testing/config. - Add
lint,typecheck,test,test:coverage,build,docs:checkscripts.
2. Errors + types
src/errors/voice-error/voice-error.ts—VoiceError extends SuaveplanError;defineCodes('VOICE', [...])with all 12 codes;voice-error.md.src/types/common.ts—AudioFormat,LatencyMode,VoiceCategory,VoiceGender,VoiceAge,VoiceSettings,Voice,ListVoicesOptions,VoiceList,AudioSource,WordTimestamp,SpeakerSegment,DetectedEntity; shared Zod schemas incommon.schemas.ts;common.md.src/types/common.test.ts— schema round-trips forAudioFormat,Voice,VoiceSettings; invalid values rejected.
3. Engine interfaces + schemas
src/tts/tts-engine/tts-engine.ts+tts-engine.types.ts—VoiceSynthesizerinterface,SynthesisRequest,SynthesisResult;tts-engine.schemas.ts— Zod schemas;tts-engine.md;tts-engine.test.ts— schema validation only (no impl to test).src/stt/stt-engine/stt-engine.ts+stt-engine.types.ts—TranscriptionEngineinterface,TranscriptionRequest,TranscriptionResult;stt-engine.schemas.ts;stt-engine.md;stt-engine.test.ts.src/voices/voice-repository/voice-repository.ts+voice-repository.types.ts—VoiceRepositoryinterface;voice-repository.schemas.ts;voice-repository.md;voice-repository.test.ts.src/effects/sound-effect-engine/sound-effect-engine.ts+sound-effect-engine.types.ts—SoundEffectEngineinterface;sound-effect-engine.schemas.ts;sound-effect-engine.md;sound-effect-engine.test.ts.src/isolation/voice-isolation-engine/voice-isolation-engine.ts+voice-isolation-engine.types.ts—VoiceIsolationEngineinterface;voice-isolation-engine.schemas.ts;voice-isolation-engine.md;voice-isolation-engine.test.ts.
4. Property-based tests (tests/property.test.ts)
AudioFormatround-trip: every valid format string parses and serialises to itself.VoiceSettingsbounds:stability,similarityBoost,style∈ [0, 1] when parsed via Zod.WordTimestampordering: for any generated array of words,startMs < endMsand sequences are monotonic.
5. Docs + verify
- Root
README.mdwith install, quick-start, modules table linking every co-located.md. bun run docs:check --filter=@suaveplan/voice≥ 90%.bunx turbo lint typecheck test:coverage --filter=@suaveplan/voicegreen with 100% coverage (statement + branch + function + line).- No
TODO,FIXME,@deprecated,any,ts-ignore, or.skipinsrc/. - Publish to Verdaccio, update
CLAUDE.md, archive OpenSpec change.