osborn 0.9.192 → 0.9.194

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/config.js CHANGED
@@ -61,7 +61,7 @@ const DEFAULT_CONFIG = {
61
61
  // Pricing: $0.70/hr of generated speech (preview). Needs SONIOX_API_KEY.
62
62
  provider: 'soniox',
63
63
  model: 'tts-rt-v1',
64
- voice: 'Maya',
64
+ voice: 'Victoria',
65
65
  // Previous: OpenAI tts-1-hd, voice fable — high quality, $30/M chars, ~500ms TTFB.
66
66
  // Switch back: provider: 'openai', model: 'tts-1-hd', voice: 'fable'
67
67
  // Other options already wired in voice-io.ts:
@@ -210,16 +210,19 @@ export function getVoiceMode(_config) {
210
210
  export function getDirectConfig(config) {
211
211
  const defaults = DEFAULT_CONFIG.direct;
212
212
  const userConfig = config.direct || {};
213
+ // Env vars take priority over config.yaml — escape hatch for stale volume configs.
214
+ // Set OSBORN_STT_PROVIDER / OSBORN_TTS_PROVIDER / OSBORN_TTS_VOICE on the machine
215
+ // to override whatever is baked into /workspace/.osborn/config.yaml.
213
216
  return {
214
217
  stt: {
215
- provider: userConfig.stt?.provider || defaults.stt.provider,
216
- model: userConfig.stt?.model || defaults.stt.model,
218
+ provider: (process.env.OSBORN_STT_PROVIDER || userConfig.stt?.provider || defaults.stt.provider),
219
+ model: process.env.OSBORN_STT_MODEL || userConfig.stt?.model || defaults.stt.model,
217
220
  language: userConfig.stt?.language || 'en',
218
221
  },
219
222
  tts: {
220
- provider: userConfig.tts?.provider || defaults.tts.provider,
221
- model: userConfig.tts?.model || defaults.tts.model,
222
- voice: userConfig.tts?.voice || defaults.tts.voice,
223
+ provider: (process.env.OSBORN_TTS_PROVIDER || userConfig.tts?.provider || defaults.tts.provider),
224
+ model: process.env.OSBORN_TTS_MODEL || userConfig.tts?.model || defaults.tts.model,
225
+ voice: process.env.OSBORN_TTS_VOICE || userConfig.tts?.voice || defaults.tts.voice,
223
226
  },
224
227
  };
225
228
  }
package/dist/index.js CHANGED
@@ -30,7 +30,7 @@ const __filename = fileURLToPath(import.meta.url);
30
30
  const __dirname = dirname(__filename);
31
31
  import { createPatch } from 'diff';
32
32
  import { loadConfig, getMcpServers, getEnabledMcpServerNames, getVoiceMode, getDirectConfig, listSessions, listAllClaudeSessions, invalidateSessionListCache, getMostRecentSessionId, sessionExists, getSessionSummary, getConversationHistory, ensureSessionWorkspace, getMcpServerStatusList, buildMcpServersForKeys, listWorkspaceArtifacts } from './config.js';
33
- import { createSTT, createTTS, DIRECT_MODE_STT, DIRECT_MODE_TTS } from './voice-io.js';
33
+ import { createSTT, createTTS, DIRECT_MODE_TTS } from './voice-io.js';
34
34
  import { createClaudeLLM, NAMED_AGENTS, applyTurbo } from './claude-llm.js';
35
35
  import { clearPipelineFastBrainSession, prewarmBM25Index } from './pipeline-fastbrain.js';
36
36
  import { getIndexPath, buildSummaryIndex } from './summary-index.js';
@@ -3173,8 +3173,8 @@ async function main() {
3173
3173
  // Create DIRECT session (STT + Claude Agent SDK + TTS)
3174
3174
  async function createDirectSession(resumeSessionId, llmOverride) {
3175
3175
  console.log('🎯 Creating direct session...');
3176
- const stt = createSTT(DIRECT_MODE_STT);
3177
- const tts = createTTS(DIRECT_MODE_TTS);
3176
+ const stt = createSTT(directConfig.stt);
3177
+ const tts = createTTS(directConfig.tts);
3178
3178
  // Create Claude LLM wrapper — direct mode uses speech-optimized system prompt
3179
3179
  // skipTTSQueue: bypass LiveKit's BufferedTokenStream, use session.say() instead
3180
3180
  // llmOverride: pipeline mode passes PipelineDirectLLM which wraps its own ClaudeLLM
package/dist/voice-io.js CHANGED
@@ -162,13 +162,15 @@ export const DIRECT_MODE_STT = {
162
162
  // provider: 'groq-whisper', model: 'whisper-large-v3-turbo', // Batch — needs VAD
163
163
  // provider: 'openai-whisper', model: 'whisper-1', // Batch — needs VAD
164
164
  // provider: 'deepgram-flux', model: 'flux-general-en', language: 'en', // Streaming, ML-based turn detection — Flux V2 has silent keepalive timeout bug (~30s silence kills connection)
165
- provider: 'deepgram', model: 'nova-3', language: 'en', // Streaming, silence-based endpointing (550ms)
165
+ // provider: 'deepgram', model: 'nova-3', language: 'en', // Silence-based endpointing (550ms) — $0.0043/min
166
+ provider: 'soniox', model: 'stt-rt-v4', language: 'en', // Semantic endpointing, ~60% cheaper ($0.0017/min) — needs SONIOX_API_KEY
166
167
  };
167
168
  export const DIRECT_MODE_TTS = {
168
169
  // provider: 'deepgram', model: 'aura-2-asteria-en', // WebSocket-based: handles TTS abort cleanly — but quality rejected (run-on sentences)
169
170
  // provider: 'openai', model: 'tts-1', voice: 'fable', // HTTP streaming: throws APIUserAbortError on interrupt → unrecoverable session crash
170
- provider: 'openai', model: 'tts-1-hd', voice: 'fable', // 0.9.70: test tts-1-hd — tts-1 had chronic per-sentence HTTP hangs (40s SDK watchdog → APIUserAbortError mid-message)
171
+ // provider: 'openai', model: 'tts-1-hd', voice: 'fable', // $30/M chars, ~500ms TTFB — fallback if Soniox has issues
171
172
  // provider: 'groq-orpheus', model: 'canopylabs/orpheus-v1-english', voice: 'autumn', // $22/M chars — voices: autumn, diana, hannah, austin, daniel, troy
172
173
  // provider: 'fishaudio', model: 's2-pro', voice: '<voice-id>', // $15/M chars — blind test winner, HTTP streaming (test abort behavior)
173
174
  // provider: 'rime', model: 'mistv3', voice: 'cove', // $30/M chars, 37ms TTFB — WebSocket (safe on interruption); voices: aurora, ember, cove
175
+ provider: 'soniox', model: 'tts-rt-v1', voice: 'Victoria', // WebSocket streaming, ~$4–16/M chars, British female — needs SONIOX_API_KEY
174
176
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "osborn",
3
- "version": "0.9.192",
3
+ "version": "0.9.194",
4
4
  "description": "Voice AI coding assistant - local agent that connects to Osborn frontend",
5
5
  "type": "module",
6
6
  "bin": {