@wildix/wilma-agents-client 1.0.18 → 1.0.24

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.
Files changed (32) hide show
  1. package/dist-cjs/WilmaAgents.js +6 -0
  2. package/dist-cjs/commands/DeletePronunciationDictionaryCommand.js +20 -0
  3. package/dist-cjs/commands/ListPronunciationDictionariesCommand.js +20 -0
  4. package/dist-cjs/commands/PutPronunciationDictionaryCommand.js +20 -0
  5. package/dist-cjs/commands/index.js +3 -0
  6. package/dist-cjs/models/enums.js +13 -1
  7. package/dist-cjs/schemas/schemas_0.js +134 -9
  8. package/dist-es/WilmaAgents.js +6 -0
  9. package/dist-es/commands/DeletePronunciationDictionaryCommand.js +16 -0
  10. package/dist-es/commands/ListPronunciationDictionariesCommand.js +16 -0
  11. package/dist-es/commands/PutPronunciationDictionaryCommand.js +16 -0
  12. package/dist-es/commands/index.js +3 -0
  13. package/dist-es/models/enums.js +12 -0
  14. package/dist-es/schemas/schemas_0.js +132 -7
  15. package/dist-types/WilmaAgents.d.ts +22 -0
  16. package/dist-types/WilmaAgentsClient.d.ts +5 -2
  17. package/dist-types/commands/CreateAgentCommand.d.ts +112 -6
  18. package/dist-types/commands/DeletePronunciationDictionaryCommand.d.ts +78 -0
  19. package/dist-types/commands/GetAgentCommand.d.ts +56 -3
  20. package/dist-types/commands/GetAgentVersionCommand.d.ts +56 -3
  21. package/dist-types/commands/ListAgentsCommand.d.ts +56 -3
  22. package/dist-types/commands/ListAgentsNamesCommand.d.ts +1 -0
  23. package/dist-types/commands/ListPronunciationDictionariesCommand.d.ts +96 -0
  24. package/dist-types/commands/PublishAgentVersionCommand.d.ts +56 -3
  25. package/dist-types/commands/PutPronunciationDictionaryCommand.d.ts +108 -0
  26. package/dist-types/commands/RestoreAgentVersionToDraftCommand.d.ts +56 -3
  27. package/dist-types/commands/UpdateAgentCommand.d.ts +112 -6
  28. package/dist-types/commands/index.d.ts +3 -0
  29. package/dist-types/models/enums.d.ts +42 -0
  30. package/dist-types/models/models_0.d.ts +385 -13
  31. package/dist-types/schemas/schemas_0.d.ts +15 -0
  32. package/package.json +1 -1
@@ -44,6 +44,61 @@ declare const UpdateAgentCommand_base: {
44
44
  * channels: { // AgentChannels
45
45
  * voice: { // VoiceChannelSettings
46
46
  * greeting: "STRING_VALUE",
47
+ * backgroundSound: "STRING_VALUE",
48
+ * speech: { // VoiceSpeechSettings
49
+ * provider: "elevenlabs" || "google" || "amazon_polly", // required
50
+ * languages: [ // VoiceLanguageList // required
51
+ * { // VoiceLanguage
52
+ * code: "STRING_VALUE", // required
53
+ * provider: "elevenlabs" || "google" || "amazon_polly",
54
+ * voice: "STRING_VALUE", // required
55
+ * greeting: "STRING_VALUE",
56
+ * isDefault: true || false,
57
+ * instructions: "STRING_VALUE",
58
+ * synthesis: { // VoiceSynthesisOptions
59
+ * model: "STRING_VALUE",
60
+ * speed: Number("float"),
61
+ * stability: Number("float"),
62
+ * similarity: Number("float"),
63
+ * style: Number("float"),
64
+ * speakerBoost: true || false,
65
+ * pitch: Number("float"),
66
+ * volumeGain: Number("float"),
67
+ * },
68
+ * credential: { // SecretRef
69
+ * id: "STRING_VALUE", // required
70
+ * },
71
+ * pronunciations: [ // VoicePronunciationList
72
+ * { // VoicePronunciation
73
+ * phrase: "STRING_VALUE", // required
74
+ * as: "STRING_VALUE", // required
75
+ * encoding: "alias" || "ipa",
76
+ * },
77
+ * ],
78
+ * pronunciationSuppressions: [ // VoicePronunciationSuppressionList
79
+ * "STRING_VALUE",
80
+ * ],
81
+ * },
82
+ * ],
83
+ * autoDetect: true || false,
84
+ * greetEveryLanguage: true || false,
85
+ * transcription: { // VoiceTranscriptionSettings
86
+ * vendor: "aws", // required
87
+ * },
88
+ * synthesis: {
89
+ * model: "STRING_VALUE",
90
+ * speed: Number("float"),
91
+ * stability: Number("float"),
92
+ * similarity: Number("float"),
93
+ * style: Number("float"),
94
+ * speakerBoost: true || false,
95
+ * pitch: Number("float"),
96
+ * volumeGain: Number("float"),
97
+ * },
98
+ * credential: {
99
+ * id: "STRING_VALUE", // required
100
+ * },
101
+ * },
47
102
  * interruptions: { // VoiceInterruptionSettings
48
103
  * enabled: true || false, // required
49
104
  * minWords: Number("int"),
@@ -370,9 +425,7 @@ declare const UpdateAgentCommand_base: {
370
425
  * sqs: { // AgentSqsEngine
371
426
  * url: "STRING_VALUE", // required
372
427
  * key: "STRING_VALUE", // required
373
- * secret: { // SecretRef
374
- * id: "STRING_VALUE", // required
375
- * },
428
+ * secret: "<SecretRef>", // required
376
429
  * },
377
430
  * },
378
431
  * settings: { // AgentSettings
@@ -394,6 +447,61 @@ declare const UpdateAgentCommand_base: {
394
447
  * // channels: { // AgentChannels
395
448
  * // voice: { // VoiceChannelSettings
396
449
  * // greeting: "STRING_VALUE",
450
+ * // backgroundSound: "STRING_VALUE",
451
+ * // speech: { // VoiceSpeechSettings
452
+ * // provider: "elevenlabs" || "google" || "amazon_polly", // required
453
+ * // languages: [ // VoiceLanguageList // required
454
+ * // { // VoiceLanguage
455
+ * // code: "STRING_VALUE", // required
456
+ * // provider: "elevenlabs" || "google" || "amazon_polly",
457
+ * // voice: "STRING_VALUE", // required
458
+ * // greeting: "STRING_VALUE",
459
+ * // isDefault: true || false,
460
+ * // instructions: "STRING_VALUE",
461
+ * // synthesis: { // VoiceSynthesisOptions
462
+ * // model: "STRING_VALUE",
463
+ * // speed: Number("float"),
464
+ * // stability: Number("float"),
465
+ * // similarity: Number("float"),
466
+ * // style: Number("float"),
467
+ * // speakerBoost: true || false,
468
+ * // pitch: Number("float"),
469
+ * // volumeGain: Number("float"),
470
+ * // },
471
+ * // credential: { // SecretRef
472
+ * // id: "STRING_VALUE", // required
473
+ * // },
474
+ * // pronunciations: [ // VoicePronunciationList
475
+ * // { // VoicePronunciation
476
+ * // phrase: "STRING_VALUE", // required
477
+ * // as: "STRING_VALUE", // required
478
+ * // encoding: "alias" || "ipa",
479
+ * // },
480
+ * // ],
481
+ * // pronunciationSuppressions: [ // VoicePronunciationSuppressionList
482
+ * // "STRING_VALUE",
483
+ * // ],
484
+ * // },
485
+ * // ],
486
+ * // autoDetect: true || false,
487
+ * // greetEveryLanguage: true || false,
488
+ * // transcription: { // VoiceTranscriptionSettings
489
+ * // vendor: "aws", // required
490
+ * // },
491
+ * // synthesis: {
492
+ * // model: "STRING_VALUE",
493
+ * // speed: Number("float"),
494
+ * // stability: Number("float"),
495
+ * // similarity: Number("float"),
496
+ * // style: Number("float"),
497
+ * // speakerBoost: true || false,
498
+ * // pitch: Number("float"),
499
+ * // volumeGain: Number("float"),
500
+ * // },
501
+ * // credential: {
502
+ * // id: "STRING_VALUE", // required
503
+ * // },
504
+ * // },
397
505
  * // interruptions: { // VoiceInterruptionSettings
398
506
  * // enabled: true || false, // required
399
507
  * // minWords: Number("int"),
@@ -720,9 +828,7 @@ declare const UpdateAgentCommand_base: {
720
828
  * // sqs: { // AgentSqsEngine
721
829
  * // url: "STRING_VALUE", // required
722
830
  * // key: "STRING_VALUE", // required
723
- * // secret: { // SecretRef
724
- * // id: "STRING_VALUE", // required
725
- * // },
831
+ * // secret: "<SecretRef>", // required
726
832
  * // },
727
833
  * // },
728
834
  * // settings: { // AgentSettings
@@ -3,6 +3,7 @@ export * from "./CreateAgentApiKeyCommand";
3
3
  export * from "./CreateAgentCommand";
4
4
  export * from "./DeleteAgentApiKeyCommand";
5
5
  export * from "./DeleteAgentCommand";
6
+ export * from "./DeletePronunciationDictionaryCommand";
6
7
  export * from "./GetAgentCommand";
7
8
  export * from "./GetAgentDeploymentCommand";
8
9
  export * from "./GetAgentVersionCommand";
@@ -10,8 +11,10 @@ export * from "./ListAgentApiKeysCommand";
10
11
  export * from "./ListAgentVersionsCommand";
11
12
  export * from "./ListAgentsCommand";
12
13
  export * from "./ListAgentsNamesCommand";
14
+ export * from "./ListPronunciationDictionariesCommand";
13
15
  export * from "./PublishAgentVersionCommand";
14
16
  export * from "./PutAgentDeploymentCommand";
17
+ export * from "./PutPronunciationDictionaryCommand";
15
18
  export * from "./ResetAgentDeploymentCommand";
16
19
  export * from "./RestoreAgentVersionToDraftCommand";
17
20
  export * from "./UpdateAgentCommand";
@@ -16,6 +16,48 @@ export declare const AgentVisibility: {
16
16
  * @public
17
17
  */
18
18
  export type AgentVisibility = (typeof AgentVisibility)[keyof typeof AgentVisibility];
19
+ /**
20
+ * @public
21
+ * @enum
22
+ */
23
+ export declare const VoicePronunciationEncoding: {
24
+ /**
25
+ * A respelling substituted into the text before it reaches the provider. The only encoding version 1 applies.
26
+ */
27
+ readonly ALIAS: "alias";
28
+ /**
29
+ * Phonetic transcription. Declared so IPA can be enabled per provider later; ignored by the runtime today.
30
+ */
31
+ readonly IPA: "ipa";
32
+ };
33
+ /**
34
+ * @public
35
+ */
36
+ export type VoicePronunciationEncoding = (typeof VoicePronunciationEncoding)[keyof typeof VoicePronunciationEncoding];
37
+ /**
38
+ * @public
39
+ * @enum
40
+ */
41
+ export declare const VoiceSpeechProvider: {
42
+ readonly AMAZON_POLLY: "amazon_polly";
43
+ readonly ELEVENLABS: "elevenlabs";
44
+ readonly GOOGLE: "google";
45
+ };
46
+ /**
47
+ * @public
48
+ */
49
+ export type VoiceSpeechProvider = (typeof VoiceSpeechProvider)[keyof typeof VoiceSpeechProvider];
50
+ /**
51
+ * @public
52
+ * @enum
53
+ */
54
+ export declare const VoiceTranscriptionVendor: {
55
+ readonly AWS: "aws";
56
+ };
57
+ /**
58
+ * @public
59
+ */
60
+ export type VoiceTranscriptionVendor = (typeof VoiceTranscriptionVendor)[keyof typeof VoiceTranscriptionVendor];
19
61
  /**
20
62
  * @public
21
63
  * @enum
@@ -1,5 +1,5 @@
1
1
  import type { DocumentType as __DocumentType } from "@smithy/types";
2
- import type { ActorType, AgentHandoverPipelineType, AgentHandoverVariant, AgentHangupPipelineType, AgentStatus, AgentToolPipelineType, AgentTransferPipelineType, AgentTransferVariant, AgentVariableType, AgentVisibility, ChannelType, SandboxNetworkAccess, SandboxSize, WebSearchContextSize } from "./enums";
2
+ import type { ActorType, AgentHandoverPipelineType, AgentHandoverVariant, AgentHangupPipelineType, AgentStatus, AgentToolPipelineType, AgentTransferPipelineType, AgentTransferVariant, AgentVariableType, AgentVisibility, ChannelType, SandboxNetworkAccess, SandboxSize, VoicePronunciationEncoding, VoiceSpeechProvider, VoiceTranscriptionVendor, WebSearchContextSize } from "./enums";
3
3
  /**
4
4
  * A user or group that access is granted to.
5
5
  * @public
@@ -218,6 +218,255 @@ export interface VoiceSilenceTimeoutSettings {
218
218
  seconds: number;
219
219
  action: VoiceTerminateAction;
220
220
  }
221
+ /**
222
+ * A reference to a stored secret, held by other services in place of the value.
223
+ * Resolved server-to-server via GetSecretValue at execution time — always to the current value.
224
+ * @public
225
+ */
226
+ export interface SecretRef {
227
+ /**
228
+ * Unique identifier of a secret.
229
+ * @public
230
+ */
231
+ id: string;
232
+ }
233
+ /**
234
+ * A pronunciation rule for one phrase. Belongs to a LANGUAGE, not to the agent: 'Wildix' is
235
+ * respelled differently for an Italian and a German voice. A dictionary shared ACROSS languages
236
+ * would fight itself, which is why the company dictionary is keyed by language too — see
237
+ * PronunciationDictionary.
238
+ * @public
239
+ */
240
+ export interface VoicePronunciation {
241
+ /**
242
+ * The phrase as it appears in the text, e.g. 'Wildix'. Bounded because every rule is compiled into ONE regular expression — see the list below.
243
+ * @public
244
+ */
245
+ phrase: string;
246
+ /**
247
+ * Respelling (ALIAS) or phonetic transcription (IPA), e.g. 'Wil-dix'.
248
+ * @public
249
+ */
250
+ as: string;
251
+ /**
252
+ * Defaults to ALIAS.
253
+ * @public
254
+ */
255
+ encoding?: VoicePronunciationEncoding | undefined;
256
+ }
257
+ /**
258
+ * Synthesis options, used at two levels: as provider-level defaults on VoiceSpeechSettings and as
259
+ * per-language overrides on VoiceLanguage. Absent means inherit; there is no way to express
260
+ * 'explicitly the same as the parent', which is the intended simplification — the merged result is
261
+ * identical either way. Which members apply is a property of the provider AND the model (Chirp 3:
262
+ * HD documents only speakingRate; eleven_v3 carries no stability, similarity or speaker boost), so
263
+ * the console renders them from a catalog rather than unconditionally.
264
+ * @public
265
+ */
266
+ export interface VoiceSynthesisOptions {
267
+ /**
268
+ * Provider model id, e.g. 'eleven_flash_v2_5'.
269
+ * @public
270
+ */
271
+ model?: string | undefined;
272
+ /**
273
+ * Speaking rate. ElevenLabs 0.7-1.2 (default 1.0); Google 0.25-2.0 (default 1.0).
274
+ * @public
275
+ */
276
+ speed?: number | undefined;
277
+ /**
278
+ * ElevenLabs stability, 0-1 (default 0.5). Our clamp, not a vendor-stated bound.
279
+ * @public
280
+ */
281
+ stability?: number | undefined;
282
+ /**
283
+ * ElevenLabs similarity boost, 0-1 (default 0.75). Our clamp.
284
+ * @public
285
+ */
286
+ similarity?: number | undefined;
287
+ /**
288
+ * ElevenLabs style exaggeration, 0-1 (default 0). Our clamp.
289
+ * @public
290
+ */
291
+ style?: number | undefined;
292
+ /**
293
+ * ElevenLabs speaker boost (default true).
294
+ * @public
295
+ */
296
+ speakerBoost?: boolean | undefined;
297
+ /**
298
+ * Google pitch in semitones, -20 to 20. Not offered for Chirp 3: HD voices.
299
+ * @public
300
+ */
301
+ pitch?: number | undefined;
302
+ /**
303
+ * Google volume gain in dB, -96 to 16 (default 0); the vendor recommends staying under +10. Not offered for Chirp 3: HD voices.
304
+ * @public
305
+ */
306
+ volumeGain?: number | undefined;
307
+ }
308
+ /**
309
+ * One configured language: its voice, its initial phrase and its overrides.
310
+ * @public
311
+ */
312
+ export interface VoiceLanguage {
313
+ /**
314
+ * BCP-47 code with locale, e.g. 'en-US', 'it-IT'.
315
+ * @public
316
+ */
317
+ code: string;
318
+ /**
319
+ * Text-to-speech provider for THIS language. Absent falls back to
320
+ * VoiceSpeechSettings.provider, which is what records written before this member
321
+ * existed rely on. The console writes it on every language it creates.
322
+ *
323
+ * Per language rather than per bot because provider quality is not uniform across
324
+ * languages, and because a single bot-wide provider made changing it invalidate
325
+ * every configured voice at once: a voice id belongs to one provider, so switching
326
+ * the bot meant reselecting a speaker for every language.
327
+ * @public
328
+ */
329
+ provider?: VoiceSpeechProvider | undefined;
330
+ /**
331
+ * Provider voice id (ElevenLabs voice_id, Google voice name, Polly Id).
332
+ * A CR OR LF IS REFUSED BY THE PATTERN, and the reason is not tidiness: this value reaches the
333
+ * PBX as an AMI action parameter, and AMI frames on CRLF, so a newline inside it closes the
334
+ * action and starts another one on a local, already-authenticated manager connection. Whoever
335
+ * configures a voice agent in the cloud needs no PBX credential, so the model is the first place
336
+ * that can refuse it. `pbx-data-engine` refuses it again on the send path — two layers, because
337
+ * the AMI serializer is out of tree and neither layer can promise the other's behaviour.
338
+ * @public
339
+ */
340
+ voice: string;
341
+ /**
342
+ * Initial phrase spoken when the call starts in this language. Absent or empty means
343
+ * the agent says nothing and waits — it does NOT fall back to VoiceChannelSettings.greeting,
344
+ * which would speak one language's text in another language's voice.
345
+ * @public
346
+ */
347
+ greeting?: string | undefined;
348
+ /**
349
+ * Marks the language a caller hears when their own matches nothing configured.
350
+ *
351
+ * THE FULL RESOLUTION ORDER, since a client author reading only this contract cannot
352
+ * otherwise find it: an exact match on the call's language, then a match on its primary
353
+ * subtag (`fr` finds `fr-FR`), then the language marked here, then a language whose
354
+ * primary subtag is `en`, then the first entry in the list.
355
+ *
356
+ * Marked is consulted BEFORE the English step, so a record with none marked resolves
357
+ * exactly as it did before this member existed. English is deliberate rather than
358
+ * arbitrary — it is the language a caller the agent was not built for is likeliest to
359
+ * understand — and the last step exists only to keep the rule total, which is why list
360
+ * order should not be treated as configuration.
361
+ *
362
+ * At most one language may carry it. A record with two — reachable through the API or
363
+ * the CLI, where no form prevents it — resolves to the first marked one in list order,
364
+ * because refusing a call over configuration drift is worse than serving it and saying
365
+ * so in the trace.
366
+ * @public
367
+ */
368
+ isDefault?: boolean | undefined;
369
+ /**
370
+ * Extra instructions active only while the conversation runs in this language.
371
+ * @public
372
+ */
373
+ instructions?: string | undefined;
374
+ /**
375
+ * Overrides VoiceSpeechSettings.synthesis member by member.
376
+ * @public
377
+ */
378
+ synthesis?: VoiceSynthesisOptions | undefined;
379
+ /**
380
+ * The company's own credential for THIS language's provider (secret variant
381
+ * `auth_bearer`). Absent falls back to VoiceSpeechSettings.credential, then to the
382
+ * platform key.
383
+ *
384
+ * It lives beside the provider because a credential belongs to one: a company's
385
+ * ElevenLabs key cannot serve a language synthesized by Google, and a single
386
+ * bot-wide credential would have been silently inapplicable to some languages.
387
+ * @public
388
+ */
389
+ credential?: SecretRef | undefined;
390
+ /**
391
+ * This agent's OWN rules for this language. A rule whose phrase also exists in the
392
+ * company dictionary replaces it; a rule whose phrase does not is simply an addition —
393
+ * the two are the same member because they are the same act.
394
+ * @public
395
+ */
396
+ pronunciations?: VoicePronunciation[] | undefined;
397
+ /**
398
+ * Company-dictionary phrases this agent declines. See VoicePronunciationSuppressionList.
399
+ * @public
400
+ */
401
+ pronunciationSuppressions?: string[] | undefined;
402
+ }
403
+ /**
404
+ * Speech-to-text configuration. Vendor-specific recognition options — term hints, custom
405
+ * vocabulary — land here alongside the vendors that take them; nothing writes them today.
406
+ * @public
407
+ */
408
+ export interface VoiceTranscriptionSettings {
409
+ /**
410
+ * Recognition vendor. Absent resolves to the platform default (`aws` today), resolved by the server so exactly one component decides it.
411
+ * @public
412
+ */
413
+ vendor: VoiceTranscriptionVendor;
414
+ }
415
+ /**
416
+ * Speech configuration for the voice channel. When present it WINS over the dialplan's `voice` and
417
+ * `initialMessage` connect parameters; `language` is the single exception, because it is the
418
+ * channel's own input signal and the feature has no starting point without it.
419
+ * @public
420
+ */
421
+ export interface VoiceSpeechSettings {
422
+ /**
423
+ * DEFAULT text-to-speech provider, used by a language that names none of its own.
424
+ * Still required, so a record always answers 'which provider' — but the console now
425
+ * writes `provider` on every language, so this is what pre-existing records and API
426
+ * callers fall back to rather than the primary control.
427
+ * @public
428
+ */
429
+ provider: VoiceSpeechProvider;
430
+ /**
431
+ * Configured languages. The @length bound is a STORAGE ceiling, not the product rule: the real
432
+ * cap is the selected transcription vendor's `maxCandidates` (five for Amazon Transcribe),
433
+ * enforced in the service from its catalog so a vendor with a different limit needs no model
434
+ * change.
435
+ * @public
436
+ */
437
+ languages: VoiceLanguage[];
438
+ /**
439
+ * Identify the caller's language automatically and switch voice and reply language mid-call. Requires at least two languages and a vendor that can identify languages; the server clamps it to false otherwise.
440
+ * @public
441
+ */
442
+ autoDetect?: boolean | undefined;
443
+ /**
444
+ * Speak the first message of every configured language in turn when the call is answered, each
445
+ * in the voice, provider account and pronunciation rules of its own language, instead of only the
446
+ * language the call resolved to. Languages whose first message is empty, and languages the PBX
447
+ * synthesizes itself, are skipped. Absent means off. Requires at least two languages carrying a
448
+ * first message; below that the runtime speaks only the resolved language's phrase, and the
449
+ * console clamps the member on save.
450
+ * @public
451
+ */
452
+ greetEveryLanguage?: boolean | undefined;
453
+ /**
454
+ * Speech-to-text configuration. Vendor-specific recognition options — term hints, custom
455
+ * vocabulary — land here alongside the vendors that take them; nothing writes them today.
456
+ * @public
457
+ */
458
+ transcription?: VoiceTranscriptionSettings | undefined;
459
+ /**
460
+ * Provider-level synthesis defaults, inherited by every language.
461
+ * @public
462
+ */
463
+ synthesis?: VoiceSynthesisOptions | undefined;
464
+ /**
465
+ * The company's own provider credential (secret variant `auth_bearer`). Absent means the platform key. Has no counterpart in wim-voicebots — a deliberate parity gap.
466
+ * @public
467
+ */
468
+ credential?: SecretRef | undefined;
469
+ }
221
470
  /**
222
471
  * Voice channel settings. Note: a voice agent's AgentAccess.grants are ignored — inbound calls are routed by the PBX dialplan and data ACL is the agent-level `settings.pbxGroupId`, not per-user grants.
223
472
  * @public
@@ -228,6 +477,25 @@ export interface VoiceChannelSettings {
228
477
  * @public
229
478
  */
230
479
  greeting?: string | undefined;
480
+ /**
481
+ * Ambient background played under the call, as a music-on-hold class name.
482
+ *
483
+ * ABSENT MEANS OFF. There is no value meaning 'none': the member is simply not sent, which is
484
+ * exactly the state every call was in before this setting existed, so a bot that never touches
485
+ * it behaves as it always did and the PBX needs no new case.
486
+ *
487
+ * It belongs to the CHANNEL rather than to `speech`, even though the console shows the control
488
+ * under the automatic-language switch. `speech` is the recognition and synthesis
489
+ * configuration and is sent only when languages are configured — background audio has nothing
490
+ * to do with either, and a bot with no languages must still be able to have it.
491
+ * @public
492
+ */
493
+ backgroundSound?: string | undefined;
494
+ /**
495
+ * Provider, languages, voices, initial phrases and pronunciation. Absent means the legacy behavior: voice URI from the dialplan connect parameter, one voice, language as prompt context only.
496
+ * @public
497
+ */
498
+ speech?: VoiceSpeechSettings | undefined;
231
499
  interruptions?: VoiceInterruptionSettings | undefined;
232
500
  silenceTimeout?: VoiceSilenceTimeoutSettings | undefined;
233
501
  maxDuration?: VoiceMaxDurationSettings | undefined;
@@ -1391,18 +1659,6 @@ export interface AgentAiEngine {
1391
1659
  capabilities?: AgentCapability[] | undefined;
1392
1660
  variables?: AgentVariable[] | undefined;
1393
1661
  }
1394
- /**
1395
- * A reference to a stored secret, held by other services in place of the value.
1396
- * Resolved server-to-server via GetSecretValue at execution time — always to the current value.
1397
- * @public
1398
- */
1399
- export interface SecretRef {
1400
- /**
1401
- * Unique identifier of a secret.
1402
- * @public
1403
- */
1404
- id: string;
1405
- }
1406
1662
  /**
1407
1663
  * Bring-your-own backend over SQS: turns are forwarded to the queue, replies are posted back via the API.
1408
1664
  * @public
@@ -1668,6 +1924,11 @@ export interface AgentInfo {
1668
1924
  * @public
1669
1925
  */
1670
1926
  channels: ChannelType[];
1927
+ /**
1928
+ * Whether the agent's voice channel has at least one configured speech language. A dialplan form partitions its application lists on this, so the answer has to travel with the list rather than cost one lookup per entry. Absent is read as false.
1929
+ * @public
1930
+ */
1931
+ speechConfigured?: boolean | undefined;
1671
1932
  /**
1672
1933
  * Published agent version number. Monotonic within an agent's version history, starting at 1.
1673
1934
  * @public
@@ -1902,6 +2163,25 @@ export interface DeleteAgentApiKeyInput {
1902
2163
  */
1903
2164
  export interface DeleteAgentApiKeyOutput {
1904
2165
  }
2166
+ /**
2167
+ * @public
2168
+ */
2169
+ export interface DeletePronunciationDictionaryInput {
2170
+ company?: string | undefined;
2171
+ /**
2172
+ * BCP-47 language tag, optionally with a region subtag: 'en', 'en-US', 'pt-BR'. Deliberately a
2173
+ * constrained string rather than an enum: the offerable set is a property of the selected
2174
+ * transcription vendor and changes with it, so an enumeration here would cap the set at whatever
2175
+ * was known when the model was released.
2176
+ * @public
2177
+ */
2178
+ code: string;
2179
+ }
2180
+ /**
2181
+ * @public
2182
+ */
2183
+ export interface DeletePronunciationDictionaryOutput {
2184
+ }
1905
2185
  /**
1906
2186
  * @public
1907
2187
  */
@@ -2042,6 +2322,57 @@ export interface ListAgentVersionsOutput {
2042
2322
  */
2043
2323
  nextCursor?: string | undefined;
2044
2324
  }
2325
+ /**
2326
+ * @public
2327
+ */
2328
+ export interface ListPronunciationDictionariesInput {
2329
+ company?: string | undefined;
2330
+ }
2331
+ /**
2332
+ * Every pronunciation rule a company has written for one language.
2333
+ * @public
2334
+ */
2335
+ export interface PronunciationDictionary {
2336
+ id: string;
2337
+ /**
2338
+ * BCP-47 code with locale, e.g. 'en-US'. Unique per company — this is the link.
2339
+ * @public
2340
+ */
2341
+ code: string;
2342
+ /**
2343
+ * Pronunciation rules for one language.
2344
+ *
2345
+ * BOUNDED, and the bound is not decoration. Both runtimes compile every rule of a language into
2346
+ * a SINGLE alternating regular expression, so the cost is the pattern's total size: measured
2347
+ * against the real escaping and matching logic, 1,000 rules cost ~0.9 s of CPU per synthesized
2348
+ * sentence, 5,000 cost ~4.9 s, and around 10,000 `new RegExp` throws V8's pattern-size error.
2349
+ *
2350
+ * 200 is far above any real use — a product glossary is a handful of names — and far below where
2351
+ * either cost begins. Found by a security review.
2352
+ * NO LOWER BOUND on `phrase` or `as`, deliberately. Both consoles add an EMPTY rule row the
2353
+ * moment someone clicks 'Add pronunciation', so a `min: 1` would make saving an agent with a
2354
+ * half-typed row fail entirely — and the runtime already ignores a rule with no phrase. Dropping
2355
+ * blank rows belongs in the consoles' save filters, not in a refusal here.
2356
+ * @public
2357
+ */
2358
+ rules: VoicePronunciation[];
2359
+ /**
2360
+ * ISO-8601 timestamp with millisecond precision, e.g. '2026-07-10T14:12:30.123Z'.
2361
+ * @public
2362
+ */
2363
+ updatedAt: string;
2364
+ /**
2365
+ * Who performed an action: an interactive user, an API key or an internal service.
2366
+ * @public
2367
+ */
2368
+ updatedBy: Actor;
2369
+ }
2370
+ /**
2371
+ * @public
2372
+ */
2373
+ export interface ListPronunciationDictionariesOutput {
2374
+ dictionaries: PronunciationDictionary[];
2375
+ }
2045
2376
  /**
2046
2377
  * @public
2047
2378
  */
@@ -2092,6 +2423,47 @@ export interface PutAgentDeploymentOutput {
2092
2423
  */
2093
2424
  deployment: AgentDeploymentRoute[];
2094
2425
  }
2426
+ /**
2427
+ * @public
2428
+ */
2429
+ export interface PutPronunciationDictionaryInput {
2430
+ company?: string | undefined;
2431
+ /**
2432
+ * BCP-47 language tag, optionally with a region subtag: 'en', 'en-US', 'pt-BR'. Deliberately a
2433
+ * constrained string rather than an enum: the offerable set is a property of the selected
2434
+ * transcription vendor and changes with it, so an enumeration here would cap the set at whatever
2435
+ * was known when the model was released.
2436
+ * @public
2437
+ */
2438
+ code: string;
2439
+ /**
2440
+ * Pronunciation rules for one language.
2441
+ *
2442
+ * BOUNDED, and the bound is not decoration. Both runtimes compile every rule of a language into
2443
+ * a SINGLE alternating regular expression, so the cost is the pattern's total size: measured
2444
+ * against the real escaping and matching logic, 1,000 rules cost ~0.9 s of CPU per synthesized
2445
+ * sentence, 5,000 cost ~4.9 s, and around 10,000 `new RegExp` throws V8's pattern-size error.
2446
+ *
2447
+ * 200 is far above any real use — a product glossary is a handful of names — and far below where
2448
+ * either cost begins. Found by a security review.
2449
+ * NO LOWER BOUND on `phrase` or `as`, deliberately. Both consoles add an EMPTY rule row the
2450
+ * moment someone clicks 'Add pronunciation', so a `min: 1` would make saving an agent with a
2451
+ * half-typed row fail entirely — and the runtime already ignores a rule with no phrase. Dropping
2452
+ * blank rows belongs in the consoles' save filters, not in a refusal here.
2453
+ * @public
2454
+ */
2455
+ rules: VoicePronunciation[];
2456
+ }
2457
+ /**
2458
+ * @public
2459
+ */
2460
+ export interface PutPronunciationDictionaryOutput {
2461
+ /**
2462
+ * Every pronunciation rule a company has written for one language.
2463
+ * @public
2464
+ */
2465
+ dictionary: PronunciationDictionary;
2466
+ }
2095
2467
  /**
2096
2468
  * @public
2097
2469
  */