saravanakumardb1
031e910607
fix(extraction-service): review fixes — locale mapping, model passthrough, content-type validation
...
BUG 1: Azure locale derivation produced 'en-EN' (invalid) for 2-letter codes.
→ Added toAzureLocale() with 28-language mapping table (en→en-US, pt→pt-BR, etc.)
→ Exported for testing; falls back to code-CODE for unmapped languages.
BUG 2: model field from request schema was silently dropped after provider refactor.
→ Added optional model field to TranscriptionInput interface.
→ OpenAI provider now uses input.model override (falls back to config.model).
→ Route passes model through to provider.transcribe().
GAP 4: SUPPORTED_AUDIO_TYPES was defined but never validated against.
→ Route now rejects unsupported content-types with a clear error message.
→ Allows application/octet-stream (Azure Blob SAS URLs often return this).
GAP 5: Client JSDoc still said 'via OpenAI Whisper API' — now 'via configured STT provider'.
GAP 8: Azure WAV content-type hardcoded samplerate=16000 — now generic audio/wav.
Tests: 42 transcription tests (was 35), 178 total passing.
→ toAzureLocale: 4 tests (locale mapping, passthrough, fallback, case-insensitive)
→ setSTT: 1 test (singleton override)
→ model passthrough: 2 tests (mock ignores, input accepts)
2026-04-06 11:40:27 -07:00
saravanakumardb1
a77b3ff931
refactor(extraction-service): provider-agnostic transcription — OpenAI + Azure Speech + Mock
...
- TranscriptionProvider interface with transcribe() + isConfigured()
- OpenAITranscriptionProvider: Whisper API (existing behavior)
- AzureTranscriptionProvider: Azure Speech REST API for short audio
- MockTranscriptionProvider: deterministic results for testing
- Factory: getSTT() singleton with env-driven auto-detection
- STT_PROVIDER=openai|azure|mock (explicit)
- Auto-detect: AZURE_SPEECH_KEY → azure, OPENAI_API_KEY → openai, else mock
- Config: add STT_PROVIDER, AZURE_SPEECH_KEY, AZURE_SPEECH_REGION env vars
- Route refactored: audio download (common) → provider.transcribe() (swappable)
- deriveFilename() extracted to types.ts (shared by route + providers)
- 35 transcription tests (was 12), 171 total passing
- Follows same pattern as @bytelyst/llm provider abstraction
2026-04-06 11:30:22 -07:00
saravanakumardb1
f8e15880d2
feat(extraction): add transcribe() to ExtractionClient — reusable speech-to-text client
...
- TranscribeRequest/TranscribeResponse types exported from @bytelyst/extraction
- transcribe() method on ExtractionClient calls POST /api/transcribe
- 3 new client tests (correct body, optional fields, error propagation)
- Package test count: 16 → 19
2026-04-06 11:11:17 -07:00
saravanakumardb1
cc3fbf8187
feat(extraction-service): add /api/transcribe route — speech-to-text via OpenAI Whisper API
...
- POST /api/transcribe: download audio from URL, call Whisper API, return transcript
- Types: TranscribeRequestSchema (Zod), TranscribeResponse, SUPPORTED_AUDIO_TYPES
- Guards: 25MB size limit, 30s download timeout, 120s Whisper timeout, 429 rate limit
- Config: OPENAI_API_KEY, OPENAI_BASE_URL, WHISPER_MODEL env vars
- 12 new tests (schema validation + constants)
- Registered in server.ts alongside extract + task routes
2026-04-06 11:10:57 -07:00
saravanakumardb1
8e5403a47e
chore(workflows): rename publish-outdated-packages → publish-outdated-pnpm-packages
2026-04-06 10:50:15 -07:00
saravanakumardb1
151e07207b
feat(llm): add vision, streaming, and embedding support
...
- ContentPart types (TextContentPart, ImageUrlContentPart) for multipart messages
- ChatMessage.content now accepts string | ContentPart[] for vision
- EmbeddingRequest/Response types + optional embed() on LLMProvider
- chatCompletionStream() implemented in OpenAI + Azure providers (SSE parsing)
- embed() implemented in OpenAI + Azure providers
- Vision helpers: isVisionMessage, hasVisionContent, buildVisionMessage, getMessageText
- MockLLMProvider: streaming, embedding, vision content support
- 27 tests passing (up from 7)
2026-04-06 07:42:30 -07:00
43bf51a290
feat(llm): add Perplexity, Gemini providers and createFallbackChain
...
- Add PerplexityProvider (OpenAI-compatible, reads PERPLEXITY_API_KEY)
- Add GeminiProvider (Google Generative Language API adapter, reads GEMINI_API_KEY)
- Add createFallbackChain() — ordered provider chain, skips unconfigured,
aggregates errors; allows any app to replace custom LLM fallback loops
- Extend LLMProviderType with 'perplexity' | 'gemini'
- Update factory to resolve and instantiate new provider types
- Add PAID_PROVIDERS to llm-router registry (OpenAI, Perplexity) for apps
using round-robin routing alongside free-tier providers
- 27 tests covering fallback chain, new providers, error/edge cases
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-05 12:50:08 -07:00
saravanakumardb1
a762c5b07f
docs: add Apple App Store + Google Play Store release guides
...
- APPLE/README.md: API key details, App Store Connect setup, TestFlight workflow, submission checklist, provisioning, screenshots/metadata requirements
- GOOGLE/README.md: Play Console setup, service account config, signing keys, AAB upload, testing tracks, data safety, content rating, submission checklist
2026-04-04 23:37:25 -07:00
saravanakumardb1
05594a334f
feat(jobs): register devintelli-daily-sync cron job (0 6 * * *)
...
- Add devintelli-daily-sync handler: POST to DevIntelli backend /api/sync/daily
- Uses x-internal-key header for service-to-service auth
- Add DEVINTELLI_BACKEND_URL + DEVINTELLI_INTERNAL_API_KEY env vars
- Cron: 0 6 * * * (6am UTC daily), timeout: 5 min
- Returns triggered/skipped/totalConnections metrics from DevIntelli response
2026-04-04 23:37:25 -07:00
saravanakumardb1
89e200fa9f
feat(flags): seed devintelli feature flags (11 flags)
...
- devintelli_enabled, devintelli_scan_enabled, devintelli_daily_sync
- 6 analytics panel flags (overview, commit, pr, review, language, productivity, repo)
- devintelli_billing_enabled (disabled by default)
Aligns with backend/src/lib/feature-flags.ts defaults
2026-04-04 23:37:25 -07:00
f8949d230f
chore(admin-web): reduce high-signal lint warnings
2026-04-04 17:56:53 -07:00
631784e551
chore(admin-web): clear repo-wide lint errors
2026-04-04 17:50:20 -07:00
5e40cd1b6e
docs(runtime): record Cowork checkpoint drill-in
2026-04-04 17:29:44 -07:00
82a44c249f
feat(runtime): add Cowork checkpoint drill-in
2026-04-04 17:29:12 -07:00
9cc4bbe906
docs(runtime): record FlowMonk replay controls
2026-04-04 17:18:55 -07:00
cff76d9037
docs(ecosystem): add optional enhancement backlog
2026-04-04 17:03:37 -07:00
cedfacc408
docs(ecosystem): close hardening tracker gaps
2026-04-04 16:48:33 -07:00
066e75f0c3
docs(ecosystem): harden approvals marketplace and timeline policy
2026-04-04 16:47:20 -07:00
617d970718
docs(ecosystem): harden artifact lifecycle and event taxonomy
2026-04-04 16:45:58 -07:00
ab50831d28
docs(ecosystem): harden adoption coverage and governance
2026-04-04 16:44:52 -07:00
065c025854
docs(ecosystem): split remaining roadmap into hardening buckets
2026-04-04 16:37:27 -07:00
9e2257200c
docs(ecosystem): add roadmap summary to tracker
2026-04-04 16:36:25 -07:00
51bbeb86fd
docs(runtime): record FlowMonk live e2e verification
2026-04-04 16:33:03 -07:00
2a4d8a7b75
docs(runtime): record FlowMonk replay review
2026-04-04 15:02:26 -07:00
1c92284314
docs(runtime): clarify Cowork direct and projected states
2026-04-04 14:59:15 -07:00
ec593d722e
docs(runtime): record FlowMonk checkpoint guidance
2026-04-04 14:57:52 -07:00
1addccfeb5
docs(runtime): record FlowMonk runtime drill-in
2026-04-04 14:40:03 -07:00
e3f72fa22d
docs(runtime): record FlowMonk runtime review UI
2026-04-04 14:37:10 -07:00
e6fb20f86b
docs(runtime): record checkpoint artifact id rollout
2026-04-04 14:27:34 -07:00
59ae0e1943
feat(runtime): add checkpoint artifact id contract
2026-04-04 14:27:26 -07:00
2d86c9801a
docs(runtime): reconcile checkpoint refs and editing surfaces
2026-04-04 13:53:58 -07:00
32b46f0625
feat(cowork-service): map enriched checkpoint refs and IPC ids
2026-04-04 13:51:57 -07:00
41673125af
docs(runtime): close checkpoint and primitive follow-through
2026-04-04 12:15:40 -07:00
9aeb9bbd59
feat(runtime): add checkpoint summaries to shared and cowork surfaces
2026-04-04 12:13:46 -07:00
3330ca55cd
docs(runtime): define first conforming product plan
2026-04-04 11:52:32 -07:00
4bb8efe375
docs(runtime): define ActionTrail replay requirements
2026-04-04 11:45:12 -07:00
2ad979ce19
docs(runtime): define checkpoint and resume semantics
2026-04-04 11:44:26 -07:00
6eaf5980a7
docs(ecosystem): update timeline and runtime remainder
2026-04-04 11:41:39 -07:00
d328c7ad68
feat(admin-web): harden timeline review console
2026-04-04 11:40:56 -07:00
977d41486a
docs(ecosystem): reconcile runtime lifecycle and verification
2026-04-04 11:38:07 -07:00
97b731e14f
feat(cowork-service): add runtime todo projection
2026-04-04 11:32:46 -07:00
fdf9286e34
fix(audit): preserve source event timestamps
2026-04-04 11:27:21 -07:00
eee122506c
docs(ecosystem): record canonical audit event id rollout
2026-04-04 11:21:08 -07:00
a57b367fe5
feat(cowork-service): prefer canonical audit event ids
2026-04-04 11:19:25 -07:00
69bced0a25
docs(ecosystem): record queued runtime commit
2026-04-04 11:12:19 -07:00
ff8c5eb704
fix(runtime): add queued agent run state
2026-04-04 11:11:45 -07:00
152b294d38
docs(ecosystem): mark FlowMonk runtime integration complete
2026-04-04 04:14:32 -07:00
2fdeb136e4
docs(ecosystem): tighten remaining runtime blockers
2026-04-04 02:21:28 -07:00
48c9e51f43
docs(ecosystem): record cowork action log commit
2026-04-04 02:20:35 -07:00
b8242b4601
feat(cowork-service): add runtime action log projection
2026-04-04 02:20:19 -07:00