@applica-software-guru/persona-sdk 0.1.107 → 0.1.109

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/index.d.ts CHANGED
@@ -22,6 +22,8 @@ export declare interface Agent {
22
22
  initialMessageMode?: "processed" | "static";
23
23
  knowledge?: KnowledgeConfiguration;
24
24
  wakeup?: WakeupConfiguration;
25
+ backchannel?: BackchannelConfiguration;
26
+ thinkingFiller?: ThinkingFillerConfiguration;
25
27
  telegram?: TelegramConfiguration;
26
28
  whatsapp?: WhatsAppConfiguration;
27
29
  collaboration?: CollaborationConfiguration;
@@ -56,6 +58,8 @@ export declare interface AgentCreateRequest {
56
58
  initialMessageMode?: "processed" | "static";
57
59
  knowledge?: KnowledgeConfiguration;
58
60
  wakeup?: WakeupConfiguration;
61
+ backchannel?: BackchannelConfiguration;
62
+ thinkingFiller?: ThinkingFillerConfiguration;
59
63
  telegram?: TelegramConfiguration;
60
64
  whatsapp?: WhatsAppConfiguration;
61
65
  collaboration?: CollaborationConfiguration;
@@ -165,6 +169,44 @@ export declare interface AuthorizeResponse {
165
169
  redirectUrl?: string;
166
170
  }
167
171
 
172
+ /**
173
+ * Riempitivi vocali emessi mentre l'utente sta ancora parlando.
174
+ *
175
+ * Due modalità con compromessi diversi:
176
+ * - `static`: una parola scelta a caso dalla lista. Le clip sono
177
+ * pre-sintetizzate e in cache, quindi la latenza aggiunta è zero.
178
+ * - `llm`: un modello veloce genera la frase seguendo `instructions`. Più
179
+ * pertinente, ma la prima volta che produce un testo nuovo si paga LLM più
180
+ * TTS; se non è pronto in tempo si ripiega su una parola della lista.
181
+ *
182
+ * Richiede un synthesizer con sintesi one-shot (gcloud o elevenlabs).
183
+ */
184
+ export declare interface BackchannelConfiguration {
185
+ enabled?: boolean;
186
+ mode?: BackchannelMode;
187
+ /** Lista per `static`, e fallback per `llm` quando il modello tarda. */
188
+ words?: string[];
189
+ /** Solo `llm`: cosa deve generare il modello. */
190
+ instructions?: string;
191
+ /** Tetto sulle parole generate, per non parlare sopra l'utente. */
192
+ maxGeneratedWords?: number;
193
+ /** Parlato continuo richiesto prima di intervenire. */
194
+ minSpeechSeconds?: number;
195
+ maxPerUserTurn?: number;
196
+ partialFreshnessSeconds?: number;
197
+ agentSilenceSeconds?: number;
198
+ throttleSeconds?: number;
199
+ /**
200
+ * Modello usato dalla modalità `llm`. Va scelto piccolo e veloce: sta nel
201
+ * percorso critico di un riempitivo che deve arrivare entro un secondo.
202
+ */
203
+ model?: ModelConfiguration;
204
+ llmTimeoutSeconds?: number;
205
+ prewarm?: boolean;
206
+ }
207
+
208
+ export declare type BackchannelMode = 'static' | 'llm';
209
+
168
210
  export declare class BearerTokenAuthenticationProvider implements AuthenticationProvider {
169
211
  private readonly token;
170
212
  constructor(token: string);
@@ -246,6 +288,8 @@ export declare interface Collaborator {
246
288
  scope?: string;
247
289
  }
248
290
 
291
+ export declare type CommitStrategy = 'vad' | 'manual';
292
+
249
293
  export declare interface CommittedUsage {
250
294
  id?: string;
251
295
  committedAt?: string;
@@ -1240,10 +1284,25 @@ export declare interface SynthesizerConfiguration {
1240
1284
  stability?: number;
1241
1285
  style?: number;
1242
1286
  voiceInstructions?: string;
1287
+ /**
1288
+ * Solo ElevenLabs. `websocket` spinge il testo man mano che arriva dal
1289
+ * modello su una connessione persistente (un socket per sessione, un contesto
1290
+ * per turno) invece di una richiesta HTTP per frase: l'handshake si paga una
1291
+ * volta per chiamata e non per turno. Se il socket cade si degrada sull'HTTP.
1292
+ */
1293
+ transport?: SynthesizerTransport;
1294
+ /**
1295
+ * Solo ElevenLabs, 0-4. Valori alti riducono la latenza ma dal 4 il
1296
+ * normalizzatore del testo viene disattivato e numeri e date vengono
1297
+ * pronunciati male.
1298
+ */
1299
+ optimizeStreamingLatency?: number;
1243
1300
  }
1244
1301
 
1245
1302
  export declare type SynthesizerName = 'gcloud' | 'elevenlabs' | 'gtts' | 'openai';
1246
1303
 
1304
+ export declare type SynthesizerTransport = 'http' | 'websocket';
1305
+
1247
1306
  export declare interface SynthesizerVoice {
1248
1307
  id?: string;
1249
1308
  name?: string;
@@ -1257,6 +1316,31 @@ export declare interface TelegramConfiguration {
1257
1316
  enabledUsers?: string[];
1258
1317
  }
1259
1318
 
1319
+ /**
1320
+ * Riempitivo emesso quando l'agente è occupato e muto.
1321
+ *
1322
+ * Copre due momenti che per l'utente sono lo stesso silenzio: la chiamata di uno
1323
+ * strumento e la fase di ragionamento del modello. Non scatta se l'agente ha già
1324
+ * detto qualcosa prima di occuparsi.
1325
+ */
1326
+ export declare interface ThinkingFillerConfiguration {
1327
+ enabled?: boolean;
1328
+ /** `sound` è il tono breve, `words` una frase parlata scelta a caso. */
1329
+ mode?: ThinkingFillerMode;
1330
+ words?: string[];
1331
+ /** Attesa prima di emettere: le attese rapide non producono niente. */
1332
+ delaySeconds?: number;
1333
+ /** Distanza minima tra due riempitivi, condivisa col backchannel. */
1334
+ throttleSeconds?: number;
1335
+ /**
1336
+ * Se emettere il riempitivo anche mentre il modello ragiona. Disattivo per
1337
+ * default: con modelli che ragionano a ogni turno può diventare invadente.
1338
+ */
1339
+ onReasoning?: boolean;
1340
+ }
1341
+
1342
+ export declare type ThinkingFillerMode = 'sound' | 'words';
1343
+
1260
1344
  export declare interface Tool {
1261
1345
  type?: ToolType;
1262
1346
  name?: string;
@@ -1297,9 +1381,22 @@ export declare interface TranscriberConfiguration {
1297
1381
  transcriberName?: TranscriberName;
1298
1382
  languageCode?: LanguageCode;
1299
1383
  sampleRateHertz?: number;
1384
+ /**
1385
+ * Secondi di silenzio dopo i quali il turno dell'utente è considerato
1386
+ * concluso: è il parametro con più impatto sulla latenza percepita, perché
1387
+ * l'agente non inizia a elaborare prima che scada. Valori bassi rendono la
1388
+ * conversazione reattiva ma spezzano le pause di pensiero in due turni.
1389
+ */
1390
+ silenceDurationThreshold?: number;
1391
+ /** Solo ElevenLabs Scribe. */
1392
+ modelId?: string;
1393
+ commitStrategy?: CommitStrategy;
1394
+ keyterms?: string[];
1395
+ secondaryLanguages?: string[];
1396
+ filterBackgroundAudio?: boolean;
1300
1397
  }
1301
1398
 
1302
- export declare type TranscriberName = 'gcloud' | 'deepgram' | 'vosk';
1399
+ export declare type TranscriberName = 'gcloud' | 'deepgram' | 'elevenlabs' | 'vosk';
1303
1400
 
1304
1401
  export declare interface TransferAction {
1305
1402
  request?: string;
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@applica-software-guru/persona-sdk",
3
3
  "description": "Official TypeScript SDK for the Persona API — manage agents, sessions, projects, knowledge bases, workflows, triggers and more.",
4
4
  "private": false,
5
- "version": "0.1.107",
5
+ "version": "0.1.109",
6
6
  "type": "module",
7
7
  "scripts": {
8
8
  "dev": "vite",
@@ -6,8 +6,9 @@ export type LanguageCode = 'en-US' | 'it-IT' | 'es-ES' | 'fr-FR' | 'de-DE' | 'pt
6
6
 
7
7
 
8
8
  export type SynthesizerName = 'gcloud' | 'elevenlabs' | 'gtts' | 'openai';
9
+ export type SynthesizerTransport = 'http' | 'websocket';
9
10
 
10
- export type TranscriberName = 'gcloud' | 'deepgram' | 'vosk';
11
+ export type TranscriberName = 'gcloud' | 'deepgram' | 'elevenlabs' | 'vosk';
11
12
 
12
13
 
13
14
  export type ToolType = 'remote' | 'local';
@@ -93,13 +94,41 @@ export interface SynthesizerConfiguration {
93
94
  stability?: number;
94
95
  style?: number;
95
96
  voiceInstructions?: string;
96
- }
97
+ /**
98
+ * Solo ElevenLabs. `websocket` spinge il testo man mano che arriva dal
99
+ * modello su una connessione persistente (un socket per sessione, un contesto
100
+ * per turno) invece di una richiesta HTTP per frase: l'handshake si paga una
101
+ * volta per chiamata e non per turno. Se il socket cade si degrada sull'HTTP.
102
+ */
103
+ transport?: SynthesizerTransport;
104
+ /**
105
+ * Solo ElevenLabs, 0-4. Valori alti riducono la latenza ma dal 4 il
106
+ * normalizzatore del testo viene disattivato e numeri e date vengono
107
+ * pronunciati male.
108
+ */
109
+ optimizeStreamingLatency?: number;
110
+ }
111
+
112
+ export type CommitStrategy = 'vad' | 'manual';
97
113
 
98
114
  export interface TranscriberConfiguration {
99
115
  enabled?: boolean;
100
116
  transcriberName?: TranscriberName;
101
117
  languageCode?: LanguageCode;
102
118
  sampleRateHertz?: number;
119
+ /**
120
+ * Secondi di silenzio dopo i quali il turno dell'utente è considerato
121
+ * concluso: è il parametro con più impatto sulla latenza percepita, perché
122
+ * l'agente non inizia a elaborare prima che scada. Valori bassi rendono la
123
+ * conversazione reattiva ma spezzano le pause di pensiero in due turni.
124
+ */
125
+ silenceDurationThreshold?: number;
126
+ /** Solo ElevenLabs Scribe. */
127
+ modelId?: string;
128
+ commitStrategy?: CommitStrategy;
129
+ keyterms?: string[];
130
+ secondaryLanguages?: string[];
131
+ filterBackgroundAudio?: boolean;
103
132
  }
104
133
 
105
134
  export interface KnowledgeConfiguration {
@@ -149,6 +178,69 @@ export interface WakeupConfiguration {
149
178
  sleepDelaySeconds?: number;
150
179
  }
151
180
 
181
+ export type ThinkingFillerMode = 'sound' | 'words';
182
+
183
+ /**
184
+ * Riempitivo emesso quando l'agente è occupato e muto.
185
+ *
186
+ * Copre due momenti che per l'utente sono lo stesso silenzio: la chiamata di uno
187
+ * strumento e la fase di ragionamento del modello. Non scatta se l'agente ha già
188
+ * detto qualcosa prima di occuparsi.
189
+ */
190
+ export interface ThinkingFillerConfiguration {
191
+ enabled?: boolean;
192
+ /** `sound` è il tono breve, `words` una frase parlata scelta a caso. */
193
+ mode?: ThinkingFillerMode;
194
+ words?: string[];
195
+ /** Attesa prima di emettere: le attese rapide non producono niente. */
196
+ delaySeconds?: number;
197
+ /** Distanza minima tra due riempitivi, condivisa col backchannel. */
198
+ throttleSeconds?: number;
199
+ /**
200
+ * Se emettere il riempitivo anche mentre il modello ragiona. Disattivo per
201
+ * default: con modelli che ragionano a ogni turno può diventare invadente.
202
+ */
203
+ onReasoning?: boolean;
204
+ }
205
+
206
+ export type BackchannelMode = 'static' | 'llm';
207
+
208
+ /**
209
+ * Riempitivi vocali emessi mentre l'utente sta ancora parlando.
210
+ *
211
+ * Due modalità con compromessi diversi:
212
+ * - `static`: una parola scelta a caso dalla lista. Le clip sono
213
+ * pre-sintetizzate e in cache, quindi la latenza aggiunta è zero.
214
+ * - `llm`: un modello veloce genera la frase seguendo `instructions`. Più
215
+ * pertinente, ma la prima volta che produce un testo nuovo si paga LLM più
216
+ * TTS; se non è pronto in tempo si ripiega su una parola della lista.
217
+ *
218
+ * Richiede un synthesizer con sintesi one-shot (gcloud o elevenlabs).
219
+ */
220
+ export interface BackchannelConfiguration {
221
+ enabled?: boolean;
222
+ mode?: BackchannelMode;
223
+ /** Lista per `static`, e fallback per `llm` quando il modello tarda. */
224
+ words?: string[];
225
+ /** Solo `llm`: cosa deve generare il modello. */
226
+ instructions?: string;
227
+ /** Tetto sulle parole generate, per non parlare sopra l'utente. */
228
+ maxGeneratedWords?: number;
229
+ /** Parlato continuo richiesto prima di intervenire. */
230
+ minSpeechSeconds?: number;
231
+ maxPerUserTurn?: number;
232
+ partialFreshnessSeconds?: number;
233
+ agentSilenceSeconds?: number;
234
+ throttleSeconds?: number;
235
+ /**
236
+ * Modello usato dalla modalità `llm`. Va scelto piccolo e veloce: sta nel
237
+ * percorso critico di un riempitivo che deve arrivare entro un secondo.
238
+ */
239
+ model?: ModelConfiguration;
240
+ llmTimeoutSeconds?: number;
241
+ prewarm?: boolean;
242
+ }
243
+
152
244
  export interface TelegramConfiguration {
153
245
  enabled?: boolean;
154
246
  botToken?: string;
@@ -286,6 +378,8 @@ export interface Agent {
286
378
  initialMessageMode?: "processed" | "static";
287
379
  knowledge?: KnowledgeConfiguration;
288
380
  wakeup?: WakeupConfiguration;
381
+ backchannel?: BackchannelConfiguration;
382
+ thinkingFiller?: ThinkingFillerConfiguration;
289
383
  telegram?: TelegramConfiguration;
290
384
  whatsapp?: WhatsAppConfiguration;
291
385
  collaboration?: CollaborationConfiguration;
@@ -317,6 +411,8 @@ export interface AgentCreateRequest {
317
411
  initialMessageMode?: "processed" | "static";
318
412
  knowledge?: KnowledgeConfiguration;
319
413
  wakeup?: WakeupConfiguration;
414
+ backchannel?: BackchannelConfiguration;
415
+ thinkingFiller?: ThinkingFillerConfiguration;
320
416
  telegram?: TelegramConfiguration;
321
417
  whatsapp?: WhatsAppConfiguration;
322
418
  collaboration?: CollaborationConfiguration;
package/src/index.ts CHANGED
@@ -31,6 +31,7 @@ export type {
31
31
  OrchestrationAgent,
32
32
  SynthesizerConfiguration,
33
33
  SynthesizerName,
34
+ SynthesizerTransport,
34
35
  SynthesizerVoice,
35
36
  TranscriberConfiguration,
36
37
  TranscriberName,
@@ -39,6 +40,11 @@ export type {
39
40
  Variable,
40
41
  VariableSource,
41
42
  WakeupConfiguration,
43
+ BackchannelConfiguration,
44
+ BackchannelMode,
45
+ ThinkingFillerConfiguration,
46
+ ThinkingFillerMode,
47
+ CommitStrategy,
42
48
  WhatsAppConfiguration,
43
49
  Tool,
44
50
  ToolType,