supafone-labs 0.4.6 → 0.4.7
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/README.md +51 -6
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -44,9 +44,50 @@ const directive = await supafone.whisper(
|
|
|
44
44
|
```
|
|
45
45
|
|
|
46
46
|
Feed `directive` back into your agent however your platform injects context
|
|
47
|
-
(Ultravox `
|
|
48
|
-
`contextual_update`, an OpenAI Realtime `
|
|
49
|
-
the agent is doing fine — say nothing.
|
|
47
|
+
(Ultravox `send_data_message`, Vapi `add-message`, ElevenLabs
|
|
48
|
+
`contextual_update`, an OpenAI Realtime `conversation.item.create`, …). When
|
|
49
|
+
it's empty, the agent is doing fine — say nothing. Which frameworks accept a
|
|
50
|
+
silent directive, and the exact primitive for each, is in
|
|
51
|
+
[Supported frameworks](#supported-frameworks) below.
|
|
52
|
+
|
|
53
|
+
## Supported frameworks
|
|
54
|
+
|
|
55
|
+
Silent injection feeds the live agent hidden guidance it acts on but never
|
|
56
|
+
speaks. Two mechanisms cover every supported framework:
|
|
57
|
+
|
|
58
|
+
- **Mode A — native silent event:** speech-to-speech models take a vendor event
|
|
59
|
+
that adds context without triggering speech.
|
|
60
|
+
- **Mode B — own the LLM:** for STT→LLM→TTS pipelines, Supafone plugs in as the
|
|
61
|
+
LLM and splices a `system`/`developer` message into the prompt.
|
|
62
|
+
|
|
63
|
+
**Possible — 10 frameworks**, each with a real injection door:
|
|
64
|
+
|
|
65
|
+
| Framework | Mode | Exact primitive |
|
|
66
|
+
| --- | :--: | --- |
|
|
67
|
+
| Ultravox | A | `send_data_message` (`urgency:"later"`) — **live/proven today** |
|
|
68
|
+
| OpenAI Realtime | A | `conversation.item.create` (role `system`, no `response.create`) |
|
|
69
|
+
| Grok (xAI) | A | OpenAI-Realtime-compatible item inject |
|
|
70
|
+
| Gemini Live | A | `clientContent` (`turnComplete:false`, role `user`) |
|
|
71
|
+
| ElevenLabs | A | `contextual_update` |
|
|
72
|
+
| Inworld | A | OpenAI-Realtime-compatible item inject |
|
|
73
|
+
| Vapi | A+B | `add-message` (`triggerResponseEnabled:false`) or custom-LLM splice |
|
|
74
|
+
| Retell | B | `system` message into the custom-LLM turn |
|
|
75
|
+
| Deepgram | A+B | `UpdatePrompt`, or own the `think` LLM |
|
|
76
|
+
| LiveKit | B | inject into `chat_ctx` in-process |
|
|
77
|
+
|
|
78
|
+
**Impossible — Bland:** its live-call API is stop/listen/transfer only, with no
|
|
79
|
+
mid-call inject channel and no custom-LLM. Observe and score it, but you cannot
|
|
80
|
+
whisper to it live — a permanent vendor limitation, not a Supafone gap.
|
|
81
|
+
**Cartesia** (a TTS voice) and **Pipecat** (a DIY framework you own end to end)
|
|
82
|
+
are not conversational agents, so there is nothing to inject into.
|
|
83
|
+
|
|
84
|
+
Injection is *possible* for all 10, but managed delivery is wired end-to-end
|
|
85
|
+
**only for Ultravox today**; the other nine are supported via their native
|
|
86
|
+
primitive with managed delivery rolling out / BYO. A live test against any vendor
|
|
87
|
+
needs that vendor's key — free/trial tiers exist for all except OpenAI Realtime
|
|
88
|
+
(paid, no free tier). Full matrix:
|
|
89
|
+
[gitbook/framework-support.md](../gitbook/framework-support.md). *(The npm
|
|
90
|
+
package-page copy updates on the next release.)*
|
|
50
91
|
|
|
51
92
|
## Spawn a hosted Supafone agent
|
|
52
93
|
|
|
@@ -80,6 +121,10 @@ import { Supafone } from "supafone-labs";
|
|
|
80
121
|
const supafone = new Supafone({
|
|
81
122
|
apiKey: process.env.SUPAFONE_LABS_API_KEY || process.env.SUPAFONE_API_KEY!,
|
|
82
123
|
supafoneApiKey: process.env.SUPAFONE_API_KEY!,
|
|
124
|
+
// voiceWatcher is on by default (also accepts voice_watcher; deprecated: labs).
|
|
125
|
+
// Every provisioned agent runs under the Voice Watcher framework (live
|
|
126
|
+
// supervision + QA + call scoring). Set false for a raw agent.
|
|
127
|
+
voiceWatcher: true,
|
|
83
128
|
// Defaults to https://api.supafone.ai. Override for staging/local tests.
|
|
84
129
|
// supafoneApiBaseUrl: "http://localhost:8000",
|
|
85
130
|
});
|
|
@@ -228,9 +273,9 @@ npx tsx examples/smoke-hosted-agent.ts
|
|
|
228
273
|
```
|
|
229
274
|
|
|
230
275
|
The script discovers capabilities, presets, and voices; creates a web intake
|
|
231
|
-
agent; fetches it back; verifies `
|
|
232
|
-
|
|
233
|
-
the returned widget snippet.
|
|
276
|
+
agent; fetches it back; verifies `runtime.telephony.mode` is `supafone_managed`
|
|
277
|
+
and the runtime is managed (`runtime.managed === true`, no developer Ultravox key
|
|
278
|
+
required); and prints the returned widget snippet.
|
|
234
279
|
|
|
235
280
|
## Hosted voices
|
|
236
281
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "supafone-labs",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.7",
|
|
4
4
|
"description": "The Supafone agent framework: create hosted voice/web/campaign agents with managed numbers, stages, tools, artifacts, and Supafone Pro watcher built in.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/cjs/index.js",
|