Initial Commit

This commit is contained in:
2026-05-27 23:29:53 +01:00
commit fbc70f96e6
10000 changed files with 1102152 additions and 0 deletions

View File

@@ -0,0 +1,80 @@
# Tasks: enterprise-audio-engine-server
**Change ID**: enterprise-audio-engine-server
**Package**: `@suaveplan/audio-engine-server`
**Target path**: `packages/media/audio/audio-engine-server`
**Prerequisite packages on Verdaccio**: `@suaveplan/audio-core`, `@suaveplan/audio-timeline`, `@suaveplan/audio-transport`, `@suaveplan/audio-codecs`, `@suaveplan/streams`, `@suaveplan/error`, `@suaveplan/types`
---
## 1. Scaffold
- [ ] Create directory `packages/media/audio/audio-engine-server/` with `src/`, `tests/`, `src/__benchmarks__/`, and all feature subdirectories per the layout in `proposal.md`.
- [ ] Write `package.json` at version `0.1.0` with `"type": "module"`, `"sideEffects": false`, full `exports` map, deps: `@suaveplan/audio-core workspace:^`, `@suaveplan/audio-timeline workspace:^`, `@suaveplan/audio-transport workspace:^`, `@suaveplan/audio-codecs workspace:^`, `@suaveplan/streams workspace:^`, `@suaveplan/error workspace:^`, `@suaveplan/types workspace:^`, `@suaveplan/opentelemetry workspace:^`, `zod catalog:forms`.
- [ ] Write `tsconfig.json` extending `@suaveplan/typescript-config/library.json`.
- [ ] Write `vitest.config.ts` using `createTestConfig()` from `@suaveplan/testing/config`.
- [ ] Add `lint`, `typecheck`, `test`, `test:coverage`, `build`, `docs:check` scripts.
---
## 2. Types + errors
- [ ] Write `src/error-codes.ts` — `defineCodes("AUDIO_ENGINE_SERVER", [...])` producing `AUDIO_ENGINE_SERVER.*` code strings; export `AudioEngineServerErrorCode`, `AUDIO_ENGINE_SERVER_ERROR_METADATA`, `registerAudioEngineServerErrorCodes()`, and an `AudioEngineServerError` class extending `AudioError` from `@suaveplan/audio-core`.
- [ ] Write Zod schemas: `FileSourceOptionsSchema`, `FileSinkOptionsSchema`, `ServerAdapterOptionsSchema`.
---
## 3. FileSourceAdapter
- [ ] Implement `FileSourceAdapter` with injectable `FsLike`:
- `load(path)` — read file, detect format, decode to `AudioDocument`
- `createReadStream(path)` — return `ReadableStream<Uint8Array>`
- `loadMany(paths)` — parallel load with `Promise.all`
- [ ] Write `file-source.test.ts` and `file-source.md` (≥200 words).
---
## 4. FileSinkAdapter
- [ ] Implement `FileSinkAdapter` with injectable `FsLike`:
- `save(doc, path, format)` — encode and write file
- `createWriteStream(path)` — return `WritableStream<Uint8Array>`
- `saveMany(docs, pathFormat)` — parallel save
- [ ] Write `file-sink.test.ts` and `file-sink.md` (≥200 words).
---
## 5. ServerTimelineAdapter
- [ ] Implement `ServerTimelineAdapter` implementing `TimelineAdapter`:
- All timeline state methods (setTracks, addTrack, removeTrack, updateTrack)
- Transport controls (play, pause, stop, seek)
- `play()` renders via `audio-core.streamPlan()` → codec encoder → file sink
- `getCurrentTime()` returns render progress
- [ ] Write `server-adapter.test.ts` and `server-adapter.md` (≥200 words).
- [ ] Wire OTel: spans, counters, histograms.
---
## 6. Benchmarks
- [ ] Write `src/__benchmarks__/io.bench.ts` — load 100MB WAV, save 100MB FLAC.
---
## 7. Tests
- [ ] Write `tests/integration.test.ts` — full load → edit → save round-trip.
- [ ] Write `tests/property.test.ts` (fast-check) — load then save → file exists, round-trip preserves sample count.
---
## 8. Docs + verify + publish
- [ ] All co-located `.md` files (≥200 words each).
- [ ] Write `README.md` at package root.
- [ ] `bunx turbo lint typecheck test --filter=@suaveplan/audio-engine-server` — green.
- [ ] `bunx turbo test:coverage --filter=@suaveplan/audio-engine-server` — 100%.
- [ ] `bun scripts/publish.ts --package @suaveplan/audio-engine-server`.
- [ ] Fold `specs/audio-engine-server/spec.md` into `openspec/specs/audio-engine-server/spec.md`.
- [ ] Archive to `openspec/archive/2026-05-14-enterprise-audio-engine-server/`.