@pinecall/skills 0.1.1 → 0.1.2
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/build.mjs +3 -1
- package/package.json +1 -1
- package/skills/pinecall-agent-skills/SKILL.md +3 -1
- package/skills/pinecall-concepts/SKILL.md +3 -1
- package/skills/pinecall-examples/SKILL.md +3 -1
- package/skills/pinecall-guides/SKILL.md +3 -1
- package/skills/pinecall-quickstart/SKILL.md +3 -1
- package/skills/pinecall-reference/SKILL.md +3 -1
- package/skills/pinecall-reference/references/reference/tts-providers.md +39 -2
- package/skills/pinecall-sdk-api/SKILL.md +3 -1
- package/skills/pinecall-sdk-api/references/api/agent.md +2 -1
- package/skills/pinecall-security/SKILL.md +3 -1
- package/skills/pinecall-web-chat/SKILL.md +3 -1
- package/skills/pinecall-web-components/SKILL.md +3 -1
- package/skills/pinecall-web-voice/SKILL.md +3 -1
- package/skills/pinecall-web-widget/SKILL.md +3 -1
package/build.mjs
CHANGED
|
@@ -33,7 +33,9 @@ const HOUSE_RULES = `## House rules — always apply
|
|
|
33
33
|
- **TTS model is auto-derived from \`language\`** — non-English agents (e.g.
|
|
34
34
|
\`language: "es"\`) default ElevenLabs to \`eleven_multilingual_v2\` so numbers,
|
|
35
35
|
dates and currency are pronounced correctly (flash/turbo don't normalize text).
|
|
36
|
-
English stays on \`eleven_flash_v2_5\`.
|
|
36
|
+
English stays on \`eleven_flash_v2_5\`. To keep flash on a non-English agent
|
|
37
|
+
(lower latency/cost), set the top-level \`flash: true\` flag. To pin any model,
|
|
38
|
+
use \`voice: { ..., model: "..." }\` (explicit model always wins over \`flash\`).
|
|
37
39
|
- **Greeting**: inbound → \`greeting\` field in \`pc.agent()\`; outbound → \`greeting\`
|
|
38
40
|
field in \`agent.dial()\`. It is sugar for \`call.say()\` in \`call.started\`.
|
|
39
41
|
- **Auth**: \`new Pinecall()\` reads \`PINECALL_API_KEY\` from env and auto-connects.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pinecall/skills",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"description": "Agent Skills for the Pinecall SDK — installable into Claude Code, Antigravity, Cursor, Copilot and any agent that supports the open Skills format.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -30,7 +30,9 @@ table below indexes every page; open the `references/…` file for the full text
|
|
|
30
30
|
- **TTS model is auto-derived from `language`** — non-English agents (e.g.
|
|
31
31
|
`language: "es"`) default ElevenLabs to `eleven_multilingual_v2` so numbers,
|
|
32
32
|
dates and currency are pronounced correctly (flash/turbo don't normalize text).
|
|
33
|
-
English stays on `eleven_flash_v2_5`.
|
|
33
|
+
English stays on `eleven_flash_v2_5`. To keep flash on a non-English agent
|
|
34
|
+
(lower latency/cost), set the top-level `flash: true` flag. To pin any model,
|
|
35
|
+
use `voice: { ..., model: "..." }` (explicit model always wins over `flash`).
|
|
34
36
|
- **Greeting**: inbound → `greeting` field in `pc.agent()`; outbound → `greeting`
|
|
35
37
|
field in `agent.dial()`. It is sugar for `call.say()` in `call.started`.
|
|
36
38
|
- **Auth**: `new Pinecall()` reads `PINECALL_API_KEY` from env and auto-connects.
|
|
@@ -34,7 +34,9 @@ table below indexes every page; open the `references/…` file for the full text
|
|
|
34
34
|
- **TTS model is auto-derived from `language`** — non-English agents (e.g.
|
|
35
35
|
`language: "es"`) default ElevenLabs to `eleven_multilingual_v2` so numbers,
|
|
36
36
|
dates and currency are pronounced correctly (flash/turbo don't normalize text).
|
|
37
|
-
English stays on `eleven_flash_v2_5`.
|
|
37
|
+
English stays on `eleven_flash_v2_5`. To keep flash on a non-English agent
|
|
38
|
+
(lower latency/cost), set the top-level `flash: true` flag. To pin any model,
|
|
39
|
+
use `voice: { ..., model: "..." }` (explicit model always wins over `flash`).
|
|
38
40
|
- **Greeting**: inbound → `greeting` field in `pc.agent()`; outbound → `greeting`
|
|
39
41
|
field in `agent.dial()`. It is sugar for `call.say()` in `call.started`.
|
|
40
42
|
- **Auth**: `new Pinecall()` reads `PINECALL_API_KEY` from env and auto-connects.
|
|
@@ -52,7 +52,9 @@ const agent = pc.agent("mara", {
|
|
|
52
52
|
- **TTS model is auto-derived from `language`** — non-English agents (e.g.
|
|
53
53
|
`language: "es"`) default ElevenLabs to `eleven_multilingual_v2` so numbers,
|
|
54
54
|
dates and currency are pronounced correctly (flash/turbo don't normalize text).
|
|
55
|
-
English stays on `eleven_flash_v2_5`.
|
|
55
|
+
English stays on `eleven_flash_v2_5`. To keep flash on a non-English agent
|
|
56
|
+
(lower latency/cost), set the top-level `flash: true` flag. To pin any model,
|
|
57
|
+
use `voice: { ..., model: "..." }` (explicit model always wins over `flash`).
|
|
56
58
|
- **Greeting**: inbound → `greeting` field in `pc.agent()`; outbound → `greeting`
|
|
57
59
|
field in `agent.dial()`. It is sugar for `call.say()` in `call.started`.
|
|
58
60
|
- **Auth**: `new Pinecall()` reads `PINECALL_API_KEY` from env and auto-connects.
|
|
@@ -61,7 +61,9 @@ const agent = pc.agent("mara", {
|
|
|
61
61
|
- **TTS model is auto-derived from `language`** — non-English agents (e.g.
|
|
62
62
|
`language: "es"`) default ElevenLabs to `eleven_multilingual_v2` so numbers,
|
|
63
63
|
dates and currency are pronounced correctly (flash/turbo don't normalize text).
|
|
64
|
-
English stays on `eleven_flash_v2_5`.
|
|
64
|
+
English stays on `eleven_flash_v2_5`. To keep flash on a non-English agent
|
|
65
|
+
(lower latency/cost), set the top-level `flash: true` flag. To pin any model,
|
|
66
|
+
use `voice: { ..., model: "..." }` (explicit model always wins over `flash`).
|
|
65
67
|
- **Greeting**: inbound → `greeting` field in `pc.agent()`; outbound → `greeting`
|
|
66
68
|
field in `agent.dial()`. It is sugar for `call.say()` in `call.started`.
|
|
67
69
|
- **Auth**: `new Pinecall()` reads `PINECALL_API_KEY` from env and auto-connects.
|
|
@@ -47,7 +47,9 @@ const agent = pc.agent("mara", {
|
|
|
47
47
|
- **TTS model is auto-derived from `language`** — non-English agents (e.g.
|
|
48
48
|
`language: "es"`) default ElevenLabs to `eleven_multilingual_v2` so numbers,
|
|
49
49
|
dates and currency are pronounced correctly (flash/turbo don't normalize text).
|
|
50
|
-
English stays on `eleven_flash_v2_5`.
|
|
50
|
+
English stays on `eleven_flash_v2_5`. To keep flash on a non-English agent
|
|
51
|
+
(lower latency/cost), set the top-level `flash: true` flag. To pin any model,
|
|
52
|
+
use `voice: { ..., model: "..." }` (explicit model always wins over `flash`).
|
|
51
53
|
- **Greeting**: inbound → `greeting` field in `pc.agent()`; outbound → `greeting`
|
|
52
54
|
field in `agent.dial()`. It is sugar for `call.say()` in `call.started`.
|
|
53
55
|
- **Auth**: `new Pinecall()` reads `PINECALL_API_KEY` from env and auto-connects.
|
|
@@ -36,7 +36,9 @@ table below indexes every page; open the `references/…` file for the full text
|
|
|
36
36
|
- **TTS model is auto-derived from `language`** — non-English agents (e.g.
|
|
37
37
|
`language: "es"`) default ElevenLabs to `eleven_multilingual_v2` so numbers,
|
|
38
38
|
dates and currency are pronounced correctly (flash/turbo don't normalize text).
|
|
39
|
-
English stays on `eleven_flash_v2_5`.
|
|
39
|
+
English stays on `eleven_flash_v2_5`. To keep flash on a non-English agent
|
|
40
|
+
(lower latency/cost), set the top-level `flash: true` flag. To pin any model,
|
|
41
|
+
use `voice: { ..., model: "..." }` (explicit model always wins over `flash`).
|
|
40
42
|
- **Greeting**: inbound → `greeting` field in `pc.agent()`; outbound → `greeting`
|
|
41
43
|
field in `agent.dial()`. It is sugar for `call.say()` in `call.started`.
|
|
42
44
|
- **Auth**: `new Pinecall()` reads `PINECALL_API_KEY` from env and auto-connects.
|
|
@@ -77,9 +77,46 @@ The server picks the ElevenLabs model from your `language`:
|
|
|
77
77
|
| `en` (or unset) | `eleven_flash_v2_5` | Fastest, optimized for real-time streaming |
|
|
78
78
|
| Any non-English (`es`, `fr`, `de`, …) | `eleven_multilingual_v2` | Flash/Turbo don't normalize text, so Spanish & other languages mispronounce numbers, dates, currency and abbreviations. The multilingual model reads them naturally. |
|
|
79
79
|
|
|
80
|
-
> `eleven_multilingual_v2` is billed at a higher rate than flash (it's a higher-quality model). If you'd rather keep the faster/cheaper flash model for a non-English agent, pin
|
|
80
|
+
> `eleven_multilingual_v2` is billed at a higher rate than flash (it's a higher-quality model). If you'd rather keep the faster/cheaper flash model for a non-English agent, use the `flash` shortcut or pin the model explicitly (both below).
|
|
81
81
|
|
|
82
|
-
|
|
82
|
+
#### `flash: true` — keep flash on a non-English agent
|
|
83
|
+
|
|
84
|
+
The multilingual model trades a little **latency** for much better pronunciation.
|
|
85
|
+
If your non-English agent should prioritize **lowest latency / lowest cost** over
|
|
86
|
+
pronunciation quality, set the top-level `flash` flag — it opts out of the
|
|
87
|
+
multilingual auto-default and keeps `eleven_flash_v2_5`:
|
|
88
|
+
|
|
89
|
+
```typescript
|
|
90
|
+
const agent = pc.agent("sofia", {
|
|
91
|
+
prompt: "Sos Sofía, asistente de la clínica.",
|
|
92
|
+
llm: "openai/gpt-5-chat-latest",
|
|
93
|
+
voice: "elevenlabs/agus",
|
|
94
|
+
stt: "deepgram/flux",
|
|
95
|
+
language: "es",
|
|
96
|
+
flash: true, // ← stay on eleven_flash_v2_5 despite language: "es"
|
|
97
|
+
});
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
`flash` is a sibling of `language` (not inside `voice`), so it reads cleanly with
|
|
101
|
+
the rest of the shortcuts. Semantics:
|
|
102
|
+
|
|
103
|
+
| Config | Resulting ElevenLabs model |
|
|
104
|
+
|---|---|
|
|
105
|
+
| `language: "es"` | `eleven_multilingual_v2` (auto) |
|
|
106
|
+
| `language: "es"`, `flash: true` | `eleven_flash_v2_5` |
|
|
107
|
+
| `language: "en"` (with or without `flash`) | `eleven_flash_v2_5` |
|
|
108
|
+
| `voice: { model: "..." }` (any `flash`/`language`) | the pinned model — explicit always wins |
|
|
109
|
+
|
|
110
|
+
Notes:
|
|
111
|
+
|
|
112
|
+
- **ElevenLabs only.** `flash` has no effect on Cartesia or Polly.
|
|
113
|
+
- **No-op for English** — English already defaults to flash.
|
|
114
|
+
- **An explicit `voice: { model }` always wins** over `flash`. Use `flash: true`
|
|
115
|
+
for the common "I want the cheap fast model" case; use the `model` field when
|
|
116
|
+
you need a specific model id.
|
|
117
|
+
- Works per-channel too: `phoneNumbers: [{ number, language: "es", flash: true }]`.
|
|
118
|
+
|
|
119
|
+
**Override the model** with the optional `model` field — it always wins over both the auto-default and `flash`:
|
|
83
120
|
|
|
84
121
|
```typescript
|
|
85
122
|
voice: {
|
|
@@ -49,7 +49,9 @@ const agent = pc.agent("mara", {
|
|
|
49
49
|
- **TTS model is auto-derived from `language`** — non-English agents (e.g.
|
|
50
50
|
`language: "es"`) default ElevenLabs to `eleven_multilingual_v2` so numbers,
|
|
51
51
|
dates and currency are pronounced correctly (flash/turbo don't normalize text).
|
|
52
|
-
English stays on `eleven_flash_v2_5`.
|
|
52
|
+
English stays on `eleven_flash_v2_5`. To keep flash on a non-English agent
|
|
53
|
+
(lower latency/cost), set the top-level `flash: true` flag. To pin any model,
|
|
54
|
+
use `voice: { ..., model: "..." }` (explicit model always wins over `flash`).
|
|
53
55
|
- **Greeting**: inbound → `greeting` field in `pc.agent()`; outbound → `greeting`
|
|
54
56
|
field in `agent.dial()`. It is sugar for `call.say()` in `call.started`.
|
|
55
57
|
- **Auth**: `new Pinecall()` reads `PINECALL_API_KEY` from env and auto-connects.
|
|
@@ -35,7 +35,8 @@ const agent = pc.agent("my-agent", {
|
|
|
35
35
|
| Config field | Type | Description |
|
|
36
36
|
|---|---|---|
|
|
37
37
|
| `voice` | `string \| VoiceConfig` | TTS provider — shortcut or full config |
|
|
38
|
-
| `language` | `string` | BCP-47 language code |
|
|
38
|
+
| `language` | `string` | BCP-47 language code. Non-English auto-selects ElevenLabs `eleven_multilingual_v2` |
|
|
39
|
+
| `flash` | `boolean` | Keep ElevenLabs `eleven_flash_v2_5` on a non-English agent (lowest latency/cost) instead of the multilingual auto-default. ElevenLabs-only; see [TTS Providers](/reference/tts-providers) |
|
|
39
40
|
| `stt` | `string \| STTConfig` | STT provider — shortcut or full config |
|
|
40
41
|
| `llm` | `LLMConfig` | LLM provider, model, prompt, enabled flag |
|
|
41
42
|
| `tools` | `Tool[]` | Declarative tools created with `tool()` + Zod schemas (auto-executed) |
|
|
@@ -30,7 +30,9 @@ table below indexes every page; open the `references/…` file for the full text
|
|
|
30
30
|
- **TTS model is auto-derived from `language`** — non-English agents (e.g.
|
|
31
31
|
`language: "es"`) default ElevenLabs to `eleven_multilingual_v2` so numbers,
|
|
32
32
|
dates and currency are pronounced correctly (flash/turbo don't normalize text).
|
|
33
|
-
English stays on `eleven_flash_v2_5`.
|
|
33
|
+
English stays on `eleven_flash_v2_5`. To keep flash on a non-English agent
|
|
34
|
+
(lower latency/cost), set the top-level `flash: true` flag. To pin any model,
|
|
35
|
+
use `voice: { ..., model: "..." }` (explicit model always wins over `flash`).
|
|
34
36
|
- **Greeting**: inbound → `greeting` field in `pc.agent()`; outbound → `greeting`
|
|
35
37
|
field in `agent.dial()`. It is sugar for `call.say()` in `call.started`.
|
|
36
38
|
- **Auth**: `new Pinecall()` reads `PINECALL_API_KEY` from env and auto-connects.
|
|
@@ -31,7 +31,9 @@ table below indexes every page; open the `references/…` file for the full text
|
|
|
31
31
|
- **TTS model is auto-derived from `language`** — non-English agents (e.g.
|
|
32
32
|
`language: "es"`) default ElevenLabs to `eleven_multilingual_v2` so numbers,
|
|
33
33
|
dates and currency are pronounced correctly (flash/turbo don't normalize text).
|
|
34
|
-
English stays on `eleven_flash_v2_5`.
|
|
34
|
+
English stays on `eleven_flash_v2_5`. To keep flash on a non-English agent
|
|
35
|
+
(lower latency/cost), set the top-level `flash: true` flag. To pin any model,
|
|
36
|
+
use `voice: { ..., model: "..." }` (explicit model always wins over `flash`).
|
|
35
37
|
- **Greeting**: inbound → `greeting` field in `pc.agent()`; outbound → `greeting`
|
|
36
38
|
field in `agent.dial()`. It is sugar for `call.say()` in `call.started`.
|
|
37
39
|
- **Auth**: `new Pinecall()` reads `PINECALL_API_KEY` from env and auto-connects.
|
|
@@ -30,7 +30,9 @@ table below indexes every page; open the `references/…` file for the full text
|
|
|
30
30
|
- **TTS model is auto-derived from `language`** — non-English agents (e.g.
|
|
31
31
|
`language: "es"`) default ElevenLabs to `eleven_multilingual_v2` so numbers,
|
|
32
32
|
dates and currency are pronounced correctly (flash/turbo don't normalize text).
|
|
33
|
-
English stays on `eleven_flash_v2_5`.
|
|
33
|
+
English stays on `eleven_flash_v2_5`. To keep flash on a non-English agent
|
|
34
|
+
(lower latency/cost), set the top-level `flash: true` flag. To pin any model,
|
|
35
|
+
use `voice: { ..., model: "..." }` (explicit model always wins over `flash`).
|
|
34
36
|
- **Greeting**: inbound → `greeting` field in `pc.agent()`; outbound → `greeting`
|
|
35
37
|
field in `agent.dial()`. It is sugar for `call.say()` in `call.started`.
|
|
36
38
|
- **Auth**: `new Pinecall()` reads `PINECALL_API_KEY` from env and auto-connects.
|
|
@@ -33,7 +33,9 @@ table below indexes every page; open the `references/…` file for the full text
|
|
|
33
33
|
- **TTS model is auto-derived from `language`** — non-English agents (e.g.
|
|
34
34
|
`language: "es"`) default ElevenLabs to `eleven_multilingual_v2` so numbers,
|
|
35
35
|
dates and currency are pronounced correctly (flash/turbo don't normalize text).
|
|
36
|
-
English stays on `eleven_flash_v2_5`.
|
|
36
|
+
English stays on `eleven_flash_v2_5`. To keep flash on a non-English agent
|
|
37
|
+
(lower latency/cost), set the top-level `flash: true` flag. To pin any model,
|
|
38
|
+
use `voice: { ..., model: "..." }` (explicit model always wins over `flash`).
|
|
37
39
|
- **Greeting**: inbound → `greeting` field in `pc.agent()`; outbound → `greeting`
|
|
38
40
|
field in `agent.dial()`. It is sugar for `call.say()` in `call.started`.
|
|
39
41
|
- **Auth**: `new Pinecall()` reads `PINECALL_API_KEY` from env and auto-connects.
|
|
@@ -34,7 +34,9 @@ table below indexes every page; open the `references/…` file for the full text
|
|
|
34
34
|
- **TTS model is auto-derived from `language`** — non-English agents (e.g.
|
|
35
35
|
`language: "es"`) default ElevenLabs to `eleven_multilingual_v2` so numbers,
|
|
36
36
|
dates and currency are pronounced correctly (flash/turbo don't normalize text).
|
|
37
|
-
English stays on `eleven_flash_v2_5`.
|
|
37
|
+
English stays on `eleven_flash_v2_5`. To keep flash on a non-English agent
|
|
38
|
+
(lower latency/cost), set the top-level `flash: true` flag. To pin any model,
|
|
39
|
+
use `voice: { ..., model: "..." }` (explicit model always wins over `flash`).
|
|
38
40
|
- **Greeting**: inbound → `greeting` field in `pc.agent()`; outbound → `greeting`
|
|
39
41
|
field in `agent.dial()`. It is sugar for `call.say()` in `call.started`.
|
|
40
42
|
- **Auth**: `new Pinecall()` reads `PINECALL_API_KEY` from env and auto-connects.
|