@ouro.bot/cli 0.1.0-alpha.593 → 0.1.0-alpha.595
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/changelog.json
CHANGED
|
@@ -1,6 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"_note": "This changelog is maintained as part of the PR/version-bump workflow. Agent-curated, not auto-generated. Agents read this file directly via read_file to understand what changed between versions.",
|
|
3
3
|
"versions": [
|
|
4
|
+
{
|
|
5
|
+
"version": "0.1.0-alpha.595",
|
|
6
|
+
"changes": [
|
|
7
|
+
"Voice phone transport defaults to media-stream when OpenAI Realtime or OpenAI SIP is configured but no explicit voice.twilioTransportMode is set. Previously the default was record-play, which made conversationEngine resolve to cascade and routed inbound calls through the ElevenLabs/Whisper greeting path operators with realtime-only credentials never configured — producing a fully silent first turn (\"no greeting at all\"). Realtime requires media-stream by nature, so we now infer it. Defensive prewarm guard branch marked with a v8 ignore since the implicit default makes it unreachable in current outbound tests."
|
|
8
|
+
]
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"version": "0.1.0-alpha.594",
|
|
12
|
+
"changes": [
|
|
13
|
+
"Voice phone transport defaults to media-stream when OpenAI Realtime or OpenAI SIP is configured but no explicit voice.twilioTransportMode is set. Previously the default was record-play, which made conversationEngine resolve to cascade and routed inbound calls through the ElevenLabs/Whisper greeting path operators with realtime-only credentials never configured — producing a fully silent first turn (\"no greeting at all\"). Realtime requires media-stream by nature, so we now infer it."
|
|
14
|
+
]
|
|
15
|
+
},
|
|
4
16
|
{
|
|
5
17
|
"version": "0.1.0-alpha.593",
|
|
6
18
|
"changes": [
|
|
@@ -248,8 +248,20 @@ function resolveTwilioPhoneTransportRuntime(options) {
|
|
|
248
248
|
?? configString(options.machineConfig, "voice.twilioBasePath")
|
|
249
249
|
?? options.defaultBasePath
|
|
250
250
|
?? twilio_phone_1.TWILIO_PHONE_WEBHOOK_BASE_PATH);
|
|
251
|
+
const explicitTransportModeString = configString(options.machineConfig, "voice.twilioTransportMode");
|
|
252
|
+
// When the operator has only configured OpenAI Realtime (key) or OpenAI SIP
|
|
253
|
+
// (project id) and not picked a transport mode, infer media-stream — the
|
|
254
|
+
// legacy `record-play` default would otherwise pin `conversationEngine` to
|
|
255
|
+
// `cascade`, route inbound calls through the ElevenLabs/Whisper greeting
|
|
256
|
+
// path the operator never configured, and produce a fully silent first
|
|
257
|
+
// turn ("no greeting at all"). Realtime requires media-stream by nature.
|
|
258
|
+
const hasRealtimeApiKey = !!resolveOpenAIRealtimeApiKey({ runtimeConfig: options.runtimeConfig, overrides });
|
|
259
|
+
const hasSipProjectConfig = !!(configString(options.runtimeConfig, "voice.openaiSipProjectId")
|
|
260
|
+
|| configString(options.machineConfig, "voice.openaiSipProjectId"));
|
|
261
|
+
const realtimeImpliesMediaStream = hasRealtimeApiKey || hasSipProjectConfig;
|
|
251
262
|
const transportMode = overrides.transportMode
|
|
252
|
-
?? (0, twilio_phone_1.normalizeTwilioPhoneTransportMode)(
|
|
263
|
+
?? (0, twilio_phone_1.normalizeTwilioPhoneTransportMode)(explicitTransportModeString
|
|
264
|
+
?? (realtimeImpliesMediaStream ? "media-stream" : twilio_phone_1.DEFAULT_TWILIO_PHONE_TRANSPORT_MODE));
|
|
253
265
|
const conversationEngine = configuredConversationEngine(options, overrides, transportMode);
|
|
254
266
|
const outboundConversationEngine = configuredOutboundConversationEngine(options, overrides, conversationEngine, transportMode);
|
|
255
267
|
const needsOpenAIRealtime = conversationEngine === "openai-realtime"
|
|
@@ -601,6 +613,7 @@ function safeRuntimeSegment(input) {
|
|
|
601
613
|
return input.trim().replace(/[^A-Za-z0-9._-]+/g, "-").replace(/^-+|-+$/g, "") || "unknown";
|
|
602
614
|
}
|
|
603
615
|
async function prewarmOutboundGreeting(options, deps) {
|
|
616
|
+
/* v8 ignore next -- defensive guard against record-play prewarm calls; the implicit-media-stream default added when realtime/SIP credentials are configured prevents this branch from being reachable in current outbound tests @preserve */
|
|
604
617
|
if (options.settings.transportMode !== "media-stream")
|
|
605
618
|
return undefined;
|
|
606
619
|
/* v8 ignore next -- Realtime/SIP outbound tests assert no cascade prewarm is attempted @preserve */
|