@wildix/wilma-agents-client 1.0.27 → 1.0.29
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-cjs/WilmaAgents.js +6 -0
- package/dist-cjs/commands/DeletePronunciationDictionaryCommand.js +20 -0
- package/dist-cjs/commands/ListPronunciationDictionariesCommand.js +20 -0
- package/dist-cjs/commands/PutPronunciationDictionaryCommand.js +20 -0
- package/dist-cjs/commands/index.js +3 -0
- package/dist-cjs/models/enums.js +46 -7
- package/dist-cjs/schemas/schemas_0.js +333 -99
- package/dist-es/WilmaAgents.js +6 -0
- package/dist-es/commands/DeletePronunciationDictionaryCommand.js +16 -0
- package/dist-es/commands/ListPronunciationDictionariesCommand.js +16 -0
- package/dist-es/commands/PutPronunciationDictionaryCommand.js +16 -0
- package/dist-es/commands/index.js +3 -0
- package/dist-es/models/enums.js +45 -6
- package/dist-es/schemas/schemas_0.js +329 -95
- package/dist-types/WilmaAgents.d.ts +25 -3
- package/dist-types/WilmaAgentsClient.d.ts +8 -5
- package/dist-types/commands/CreateAgentCommand.d.ts +286 -16
- package/dist-types/commands/DeletePronunciationDictionaryCommand.d.ts +82 -0
- package/dist-types/commands/GetAgentCommand.d.ts +143 -8
- package/dist-types/commands/GetAgentVersionCommand.d.ts +143 -8
- package/dist-types/commands/ListAgentsCommand.d.ts +144 -9
- package/dist-types/commands/ListAgentsNamesCommand.d.ts +18 -2
- package/dist-types/commands/ListPronunciationDictionariesCommand.d.ts +103 -0
- package/dist-types/commands/PublishAgentVersionCommand.d.ts +143 -8
- package/dist-types/commands/PutPronunciationDictionaryCommand.d.ts +117 -0
- package/dist-types/commands/RestoreAgentVersionToDraftCommand.d.ts +143 -8
- package/dist-types/commands/UpdateAgentCommand.d.ts +286 -16
- package/dist-types/commands/index.d.ts +3 -0
- package/dist-types/index.d.ts +3 -3
- package/dist-types/models/enums.d.ts +159 -26
- package/dist-types/models/models_0.d.ts +913 -49
- package/dist-types/schemas/schemas_0.d.ts +29 -1
- package/package.json +2 -2
|
@@ -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, AgentWorkflowEntryBehavior, AgentWorkflowFailureKind, AgentWorkflowLayout, AgentWorkflowMessageButtonVariant, ChannelType, SandboxNetworkAccess, SandboxSize, WebSearchContextSize } from "./enums";
|
|
2
|
+
import type { ActorType, AgentGuardrailErrorMode, AgentGuardrailMode, AgentGuardrailPreset, AgentGuardrailSensitivity, AgentGuardrailWindow, AgentHandoverPipelineType, AgentHandoverVariant, AgentHangupPipelineType, AgentStatus, AgentToolPipelineType, AgentTransferPipelineType, AgentTransferVariant, AgentVariableType, AgentVisibility, AgentWorkflowEntryBehavior, AgentWorkflowFailureKind, AgentWorkflowLayout, AgentWorkflowMessageButtonVariant, 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
|
|
@@ -40,8 +40,9 @@ export declare namespace AgentGrantPrincipal {
|
|
|
40
40
|
/**
|
|
41
41
|
* Who is allowed to use the agent. There is no view/edit dimension — access solely grants the ability to use the agent.
|
|
42
42
|
* Per channel: on `chat` and `assistant` agents `grants` govern which colleagues can use the agent; on `voice` agents `grants`
|
|
43
|
-
* are ignored (inbound calls are routed by the PBX dialplan, and data ACL is the agent-level `settings.pbxGroupId`)
|
|
44
|
-
* access is not used — invocation access is configured per reference on the calling agent
|
|
43
|
+
* are ignored (inbound calls are routed by the PBX dialplan, and data ACL is the agent-level `settings.pbxGroupId`). When an agent is
|
|
44
|
+
* invoked as a background task its agent-level access is not used — invocation access is configured per reference on the calling agent
|
|
45
|
+
* (see AgentCallCapability.access).
|
|
45
46
|
* @public
|
|
46
47
|
*/
|
|
47
48
|
export interface AgentAccess {
|
|
@@ -56,6 +57,64 @@ export interface AgentAccess {
|
|
|
56
57
|
*/
|
|
57
58
|
grants?: AgentGrantPrincipal[] | undefined;
|
|
58
59
|
}
|
|
60
|
+
/**
|
|
61
|
+
* A starter prompt offered as a card on an empty thread. Picking it sends `prompt` as the user's first message, so the user never types it.
|
|
62
|
+
* @public
|
|
63
|
+
*/
|
|
64
|
+
export interface AssistantQuickCommand {
|
|
65
|
+
/**
|
|
66
|
+
* Card label, e.g. 'Summarize my day'. Rendered on one line and truncated when it does not fit.
|
|
67
|
+
* @public
|
|
68
|
+
*/
|
|
69
|
+
title: string;
|
|
70
|
+
/**
|
|
71
|
+
* Optional line under the label. Also one line, so keep it to a short clarification of what the command does.
|
|
72
|
+
* @public
|
|
73
|
+
*/
|
|
74
|
+
description?: string | undefined;
|
|
75
|
+
/**
|
|
76
|
+
* The message actually sent when the card is picked. Usually longer and more explicit than the label, since it is what the model reads.
|
|
77
|
+
* @public
|
|
78
|
+
*/
|
|
79
|
+
prompt: string;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Greeting shown on an empty thread, above the quick commands.
|
|
83
|
+
* @public
|
|
84
|
+
*/
|
|
85
|
+
export interface AssistantWelcomeSettings {
|
|
86
|
+
/**
|
|
87
|
+
* Heading, e.g. 'How can I help?'. Rendered on one line.
|
|
88
|
+
* @public
|
|
89
|
+
*/
|
|
90
|
+
title?: string | undefined;
|
|
91
|
+
/**
|
|
92
|
+
* Line under the heading, saying what this agent is for, e.g. 'Ask about your conversations, accounts and calls.'.
|
|
93
|
+
* @public
|
|
94
|
+
*/
|
|
95
|
+
subtitle?: string | undefined;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* How the agent presents itself in the assistant UI: what the user reads before typing anything, and what they can start from without typing at all. Everything here is presentation — it never changes what the agent can do.
|
|
99
|
+
* @public
|
|
100
|
+
*/
|
|
101
|
+
export interface AssistantUiSettings {
|
|
102
|
+
/**
|
|
103
|
+
* Greeting shown on an empty thread, above the quick commands.
|
|
104
|
+
* @public
|
|
105
|
+
*/
|
|
106
|
+
welcome?: AssistantWelcomeSettings | undefined;
|
|
107
|
+
/**
|
|
108
|
+
* Cards offered under the welcome message on an empty thread, in the order given. Empty or omitted shows no cards.
|
|
109
|
+
* @public
|
|
110
|
+
*/
|
|
111
|
+
commands?: AssistantQuickCommand[] | undefined;
|
|
112
|
+
/**
|
|
113
|
+
* Placeholder text in the composer, e.g. 'Ask about an account…'. Defaults to the client's own placeholder when omitted.
|
|
114
|
+
* @public
|
|
115
|
+
*/
|
|
116
|
+
placeholder?: string | undefined;
|
|
117
|
+
}
|
|
59
118
|
/**
|
|
60
119
|
* @public
|
|
61
120
|
*/
|
|
@@ -65,6 +124,11 @@ export interface AssistantChannelSettings {
|
|
|
65
124
|
* @public
|
|
66
125
|
*/
|
|
67
126
|
default?: boolean | undefined;
|
|
127
|
+
/**
|
|
128
|
+
* How the agent presents itself in the assistant UI. Served to clients on AgentInfo, so it reaches the end user without exposing the rest of the agent definition.
|
|
129
|
+
* @public
|
|
130
|
+
*/
|
|
131
|
+
ui?: AssistantUiSettings | undefined;
|
|
68
132
|
}
|
|
69
133
|
/**
|
|
70
134
|
* @public
|
|
@@ -218,6 +282,262 @@ export interface VoiceSilenceTimeoutSettings {
|
|
|
218
282
|
seconds: number;
|
|
219
283
|
action: VoiceTerminateAction;
|
|
220
284
|
}
|
|
285
|
+
/**
|
|
286
|
+
* A reference to a stored secret, held by other services in place of the value.
|
|
287
|
+
* Resolved server-to-server via GetSecretValue at execution time — always to the current value.
|
|
288
|
+
* @public
|
|
289
|
+
*/
|
|
290
|
+
export interface SecretRef {
|
|
291
|
+
/**
|
|
292
|
+
* Unique identifier of a secret.
|
|
293
|
+
* @public
|
|
294
|
+
*/
|
|
295
|
+
id: string;
|
|
296
|
+
}
|
|
297
|
+
/**
|
|
298
|
+
* A pronunciation rule for one phrase. Belongs to a LANGUAGE, not to the agent: 'Wildix' is
|
|
299
|
+
* respelled differently for an Italian and a German voice. A dictionary shared ACROSS languages
|
|
300
|
+
* would fight itself, which is why the company dictionary is keyed by language too — see
|
|
301
|
+
* PronunciationDictionary.
|
|
302
|
+
* @public
|
|
303
|
+
*/
|
|
304
|
+
export interface VoicePronunciation {
|
|
305
|
+
/**
|
|
306
|
+
* 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.
|
|
307
|
+
* @public
|
|
308
|
+
*/
|
|
309
|
+
phrase: string;
|
|
310
|
+
/**
|
|
311
|
+
* Respelling (ALIAS) or phonetic transcription (IPA), e.g. 'Wil-dix'.
|
|
312
|
+
* @public
|
|
313
|
+
*/
|
|
314
|
+
as: string;
|
|
315
|
+
/**
|
|
316
|
+
* Defaults to ALIAS.
|
|
317
|
+
* @public
|
|
318
|
+
*/
|
|
319
|
+
encoding?: VoicePronunciationEncoding | undefined;
|
|
320
|
+
}
|
|
321
|
+
/**
|
|
322
|
+
* Synthesis options, used at two levels: as provider-level defaults on VoiceSpeechSettings and as
|
|
323
|
+
* per-language overrides on VoiceLanguage. Absent means inherit; there is no way to express
|
|
324
|
+
* 'explicitly the same as the parent', which is the intended simplification — the merged result is
|
|
325
|
+
* identical either way. Which members apply is a property of the provider AND the model (Chirp 3:
|
|
326
|
+
* HD documents only speakingRate; eleven_v3 carries no stability, similarity or speaker boost), so
|
|
327
|
+
* the console renders them from a catalog rather than unconditionally.
|
|
328
|
+
* @public
|
|
329
|
+
*/
|
|
330
|
+
export interface VoiceSynthesisOptions {
|
|
331
|
+
/**
|
|
332
|
+
* Provider model id, e.g. 'eleven_flash_v2_5'.
|
|
333
|
+
* @public
|
|
334
|
+
*/
|
|
335
|
+
model?: string | undefined;
|
|
336
|
+
/**
|
|
337
|
+
* Speaking rate. ElevenLabs 0.7-1.2 (default 1.0); Google 0.25-2.0 (default 1.0).
|
|
338
|
+
* @public
|
|
339
|
+
*/
|
|
340
|
+
speed?: number | undefined;
|
|
341
|
+
/**
|
|
342
|
+
* ElevenLabs stability, 0-1 (default 0.5). Our clamp, not a vendor-stated bound.
|
|
343
|
+
* @public
|
|
344
|
+
*/
|
|
345
|
+
stability?: number | undefined;
|
|
346
|
+
/**
|
|
347
|
+
* ElevenLabs similarity boost, 0-1 (default 0.75). Our clamp.
|
|
348
|
+
* @public
|
|
349
|
+
*/
|
|
350
|
+
similarity?: number | undefined;
|
|
351
|
+
/**
|
|
352
|
+
* ElevenLabs style exaggeration, 0-1 (default 0). Our clamp.
|
|
353
|
+
* @public
|
|
354
|
+
*/
|
|
355
|
+
style?: number | undefined;
|
|
356
|
+
/**
|
|
357
|
+
* ElevenLabs speaker boost (default true).
|
|
358
|
+
* @public
|
|
359
|
+
*/
|
|
360
|
+
speakerBoost?: boolean | undefined;
|
|
361
|
+
/**
|
|
362
|
+
* Google pitch in semitones, -20 to 20. Not offered for Chirp 3: HD voices.
|
|
363
|
+
* @public
|
|
364
|
+
*/
|
|
365
|
+
pitch?: number | undefined;
|
|
366
|
+
/**
|
|
367
|
+
* Google volume gain in dB, -96 to 16 (default 0); the vendor recommends staying under +10. Not offered for Chirp 3: HD voices.
|
|
368
|
+
* @public
|
|
369
|
+
*/
|
|
370
|
+
volumeGain?: number | undefined;
|
|
371
|
+
}
|
|
372
|
+
/**
|
|
373
|
+
* One configured language: its voice, its initial phrase and its overrides.
|
|
374
|
+
* @public
|
|
375
|
+
*/
|
|
376
|
+
export interface VoiceLanguage {
|
|
377
|
+
/**
|
|
378
|
+
* BCP-47 code with locale, e.g. 'en-US', 'it-IT'.
|
|
379
|
+
* @public
|
|
380
|
+
*/
|
|
381
|
+
code: string;
|
|
382
|
+
/**
|
|
383
|
+
* Text-to-speech provider for THIS language. Absent falls back to
|
|
384
|
+
* VoiceSpeechSettings.provider, which is what records written before this member
|
|
385
|
+
* existed rely on. The console writes it on every language it creates.
|
|
386
|
+
*
|
|
387
|
+
* Per language rather than per bot because provider quality is not uniform across
|
|
388
|
+
* languages, and because a single bot-wide provider made changing it invalidate
|
|
389
|
+
* every configured voice at once: a voice id belongs to one provider, so switching
|
|
390
|
+
* the bot meant reselecting a speaker for every language.
|
|
391
|
+
* @public
|
|
392
|
+
*/
|
|
393
|
+
provider?: VoiceSpeechProvider | undefined;
|
|
394
|
+
/**
|
|
395
|
+
* Provider voice id (ElevenLabs voice_id, Google voice name, Polly Id).
|
|
396
|
+
* A CR OR LF IS REFUSED BY THE PATTERN, and the reason is not tidiness: this value reaches the
|
|
397
|
+
* PBX as an AMI action parameter, and AMI frames on CRLF, so a newline inside it closes the
|
|
398
|
+
* action and starts another one on a local, already-authenticated manager connection. Whoever
|
|
399
|
+
* configures a voice agent in the cloud needs no PBX credential, so the model is the first place
|
|
400
|
+
* that can refuse it. `pbx-data-engine` refuses it again on the send path — two layers, because
|
|
401
|
+
* the AMI serializer is out of tree and neither layer can promise the other's behaviour.
|
|
402
|
+
* @public
|
|
403
|
+
*/
|
|
404
|
+
voice: string;
|
|
405
|
+
/**
|
|
406
|
+
* Initial phrase spoken when the call starts in this language. Absent or empty means
|
|
407
|
+
* the agent says nothing and waits — it does NOT fall back to VoiceChannelSettings.greeting,
|
|
408
|
+
* which would speak one language's text in another language's voice.
|
|
409
|
+
* @public
|
|
410
|
+
*/
|
|
411
|
+
greeting?: string | undefined;
|
|
412
|
+
/**
|
|
413
|
+
* Marks the language a caller hears when their own matches nothing configured.
|
|
414
|
+
*
|
|
415
|
+
* THE FULL RESOLUTION ORDER, since a client author reading only this contract cannot
|
|
416
|
+
* otherwise find it: an exact match on the call's language, then a match on its primary
|
|
417
|
+
* subtag (`fr` finds `fr-FR`), then the language marked here, then a language whose
|
|
418
|
+
* primary subtag is `en`, then the first entry in the list.
|
|
419
|
+
*
|
|
420
|
+
* Marked is consulted BEFORE the English step, so a record with none marked resolves
|
|
421
|
+
* exactly as it did before this member existed. English is deliberate rather than
|
|
422
|
+
* arbitrary — it is the language a caller the agent was not built for is likeliest to
|
|
423
|
+
* understand — and the last step exists only to keep the rule total, which is why list
|
|
424
|
+
* order should not be treated as configuration.
|
|
425
|
+
*
|
|
426
|
+
* At most one language may carry it. A record with two — reachable through the API or
|
|
427
|
+
* the CLI, where no form prevents it — resolves to the first marked one in list order,
|
|
428
|
+
* because refusing a call over configuration drift is worse than serving it and saying
|
|
429
|
+
* so in the trace.
|
|
430
|
+
* @public
|
|
431
|
+
*/
|
|
432
|
+
isDefault?: boolean | undefined;
|
|
433
|
+
/**
|
|
434
|
+
* Extra instructions active only while the conversation runs in this language.
|
|
435
|
+
* @public
|
|
436
|
+
*/
|
|
437
|
+
instructions?: string | undefined;
|
|
438
|
+
/**
|
|
439
|
+
* Overrides VoiceSpeechSettings.synthesis member by member.
|
|
440
|
+
* @public
|
|
441
|
+
*/
|
|
442
|
+
synthesis?: VoiceSynthesisOptions | undefined;
|
|
443
|
+
/**
|
|
444
|
+
* The company's own credential for THIS language's provider (secret variant
|
|
445
|
+
* `auth_bearer`). Absent falls back to VoiceSpeechSettings.credential, then to the
|
|
446
|
+
* platform key.
|
|
447
|
+
*
|
|
448
|
+
* It lives beside the provider because a credential belongs to one: a company's
|
|
449
|
+
* ElevenLabs key cannot serve a language synthesized by Google, and a single
|
|
450
|
+
* bot-wide credential would have been silently inapplicable to some languages.
|
|
451
|
+
* @public
|
|
452
|
+
*/
|
|
453
|
+
credential?: SecretRef | undefined;
|
|
454
|
+
/**
|
|
455
|
+
* This agent's OWN rules for this language. A rule whose phrase also exists in the
|
|
456
|
+
* company dictionary replaces it; a rule whose phrase does not is simply an addition —
|
|
457
|
+
* the two are the same member because they are the same act.
|
|
458
|
+
* @public
|
|
459
|
+
*/
|
|
460
|
+
pronunciations?: VoicePronunciation[] | undefined;
|
|
461
|
+
/**
|
|
462
|
+
* Company-dictionary phrases this agent declines. See VoicePronunciationSuppressionList.
|
|
463
|
+
* @public
|
|
464
|
+
*/
|
|
465
|
+
pronunciationSuppressions?: string[] | undefined;
|
|
466
|
+
}
|
|
467
|
+
/**
|
|
468
|
+
* Speech-to-text configuration. Vendor-specific recognition options — term hints, custom
|
|
469
|
+
* vocabulary — land here alongside the vendors that take them; nothing writes them today.
|
|
470
|
+
* @public
|
|
471
|
+
*/
|
|
472
|
+
export interface VoiceTranscriptionSettings {
|
|
473
|
+
/**
|
|
474
|
+
* Recognition vendor. Absent resolves to the platform default (`aws` today), resolved by the
|
|
475
|
+
* server so exactly one component decides it.
|
|
476
|
+
*
|
|
477
|
+
* DELIBERATELY NOT @required, and the sentence above is why: the server already answers the
|
|
478
|
+
* default for a `transcription` that carries no vendor, and both consoles were written to
|
|
479
|
+
* that promise. @required contradicted it — it made the server-side default reachable only
|
|
480
|
+
* for a WHOLLY ABSENT `transcription`, and refused a shape this documentation describes as
|
|
481
|
+
* legal.
|
|
482
|
+
* @public
|
|
483
|
+
*/
|
|
484
|
+
vendor?: VoiceTranscriptionVendor | undefined;
|
|
485
|
+
}
|
|
486
|
+
/**
|
|
487
|
+
* Speech configuration for the voice channel. When present it WINS over the dialplan's `voice` and
|
|
488
|
+
* `initialMessage` connect parameters; `language` is the single exception, because it is the
|
|
489
|
+
* channel's own input signal and the feature has no starting point without it.
|
|
490
|
+
* @public
|
|
491
|
+
*/
|
|
492
|
+
export interface VoiceSpeechSettings {
|
|
493
|
+
/**
|
|
494
|
+
* DEFAULT text-to-speech provider, used by a language that names none of its own.
|
|
495
|
+
* Still required, so a record always answers 'which provider' — but the console now
|
|
496
|
+
* writes `provider` on every language, so this is what pre-existing records and API
|
|
497
|
+
* callers fall back to rather than the primary control.
|
|
498
|
+
* @public
|
|
499
|
+
*/
|
|
500
|
+
provider: VoiceSpeechProvider;
|
|
501
|
+
/**
|
|
502
|
+
* Configured languages. The @length bound is a STORAGE ceiling, not the product rule: the real
|
|
503
|
+
* cap is the selected transcription vendor's `maxCandidates` (five for Amazon Transcribe),
|
|
504
|
+
* enforced in the service from its catalog so a vendor with a different limit needs no model
|
|
505
|
+
* change.
|
|
506
|
+
* @public
|
|
507
|
+
*/
|
|
508
|
+
languages: VoiceLanguage[];
|
|
509
|
+
/**
|
|
510
|
+
* 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.
|
|
511
|
+
* @public
|
|
512
|
+
*/
|
|
513
|
+
autoDetect?: boolean | undefined;
|
|
514
|
+
/**
|
|
515
|
+
* Speak the first message of every configured language in turn when the call is answered, each
|
|
516
|
+
* in the voice, provider account and pronunciation rules of its own language, instead of only the
|
|
517
|
+
* language the call resolved to. Languages whose first message is empty, and languages the PBX
|
|
518
|
+
* synthesizes itself, are skipped. Absent means off. Requires at least two languages carrying a
|
|
519
|
+
* first message; below that the runtime speaks only the resolved language's phrase, and the
|
|
520
|
+
* console clamps the member on save.
|
|
521
|
+
* @public
|
|
522
|
+
*/
|
|
523
|
+
greetEveryLanguage?: boolean | undefined;
|
|
524
|
+
/**
|
|
525
|
+
* Speech-to-text configuration. Vendor-specific recognition options — term hints, custom
|
|
526
|
+
* vocabulary — land here alongside the vendors that take them; nothing writes them today.
|
|
527
|
+
* @public
|
|
528
|
+
*/
|
|
529
|
+
transcription?: VoiceTranscriptionSettings | undefined;
|
|
530
|
+
/**
|
|
531
|
+
* Provider-level synthesis defaults, inherited by every language.
|
|
532
|
+
* @public
|
|
533
|
+
*/
|
|
534
|
+
synthesis?: VoiceSynthesisOptions | undefined;
|
|
535
|
+
/**
|
|
536
|
+
* 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.
|
|
537
|
+
* @public
|
|
538
|
+
*/
|
|
539
|
+
credential?: SecretRef | undefined;
|
|
540
|
+
}
|
|
221
541
|
/**
|
|
222
542
|
* 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
543
|
* @public
|
|
@@ -228,6 +548,25 @@ export interface VoiceChannelSettings {
|
|
|
228
548
|
* @public
|
|
229
549
|
*/
|
|
230
550
|
greeting?: string | undefined;
|
|
551
|
+
/**
|
|
552
|
+
* Ambient background played under the call, as a music-on-hold class name.
|
|
553
|
+
*
|
|
554
|
+
* ABSENT MEANS OFF. There is no value meaning 'none': the member is simply not sent, which is
|
|
555
|
+
* exactly the state every call was in before this setting existed, so a bot that never touches
|
|
556
|
+
* it behaves as it always did and the PBX needs no new case.
|
|
557
|
+
*
|
|
558
|
+
* It belongs to the CHANNEL rather than to `speech`, even though the console shows the control
|
|
559
|
+
* under the automatic-language switch. `speech` is the recognition and synthesis
|
|
560
|
+
* configuration and is sent only when languages are configured — background audio has nothing
|
|
561
|
+
* to do with either, and a bot with no languages must still be able to have it.
|
|
562
|
+
* @public
|
|
563
|
+
*/
|
|
564
|
+
backgroundSound?: string | undefined;
|
|
565
|
+
/**
|
|
566
|
+
* 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.
|
|
567
|
+
* @public
|
|
568
|
+
*/
|
|
569
|
+
speech?: VoiceSpeechSettings | undefined;
|
|
231
570
|
interruptions?: VoiceInterruptionSettings | undefined;
|
|
232
571
|
silenceTimeout?: VoiceSilenceTimeoutSettings | undefined;
|
|
233
572
|
maxDuration?: VoiceMaxDurationSettings | undefined;
|
|
@@ -238,12 +577,6 @@ export interface VoiceChannelSettings {
|
|
|
238
577
|
*/
|
|
239
578
|
callerMetadata?: VoiceCallerMetadataSettings | undefined;
|
|
240
579
|
}
|
|
241
|
-
/**
|
|
242
|
-
* Workflow channel settings. Currently empty; presence enables the workflow channel.
|
|
243
|
-
* @public
|
|
244
|
-
*/
|
|
245
|
-
export interface WorkflowChannelSettings {
|
|
246
|
-
}
|
|
247
580
|
/**
|
|
248
581
|
* The channels an agent serves and their channel-specific settings. Presence of a member enables that channel; at least one must be set. Enabled channels are mirrored as ChannelType values on AgentInfo.
|
|
249
582
|
* @public
|
|
@@ -256,11 +589,6 @@ export interface AgentChannels {
|
|
|
256
589
|
voice?: VoiceChannelSettings | undefined;
|
|
257
590
|
chat?: ChatChannelSettings | undefined;
|
|
258
591
|
assistant?: AssistantChannelSettings | undefined;
|
|
259
|
-
/**
|
|
260
|
-
* Workflow channel settings. Currently empty; presence enables the workflow channel.
|
|
261
|
-
* @public
|
|
262
|
-
*/
|
|
263
|
-
workflow?: WorkflowChannelSettings | undefined;
|
|
264
592
|
}
|
|
265
593
|
/**
|
|
266
594
|
* Who performed an action: an interactive user, an API key or an internal service.
|
|
@@ -384,7 +712,7 @@ export interface AgentToolVariable {
|
|
|
384
712
|
handler?: AgentToolVariableHandler | undefined;
|
|
385
713
|
}
|
|
386
714
|
/**
|
|
387
|
-
* Invoke another agent
|
|
715
|
+
* Invoke another agent as a dedicated execution with its own state. The called agent runs independently and returns its result.
|
|
388
716
|
* @public
|
|
389
717
|
*/
|
|
390
718
|
export interface AgentCallCapability {
|
|
@@ -397,12 +725,19 @@ export interface AgentCallCapability {
|
|
|
397
725
|
/**
|
|
398
726
|
* Who may invoke this sub-agent tool. Evaluated per invoking user when the calling agent (chat / assistant) builds its
|
|
399
727
|
* toolset: if the user is not granted, this capability is omitted from the tools offered to the model for that session.
|
|
400
|
-
* When omitted, the tool is available to everyone who can use the calling agent. This is
|
|
401
|
-
*
|
|
728
|
+
* When omitted, the tool is available to everyone who can use the calling agent. This is the only place invocation
|
|
729
|
+
* access is configured — the called agent's own access settings do not apply to being invoked.
|
|
402
730
|
* @public
|
|
403
731
|
*/
|
|
404
732
|
access?: AgentAccess | undefined;
|
|
405
733
|
variables?: AgentToolVariable[] | undefined;
|
|
734
|
+
/**
|
|
735
|
+
* Channels this capability is offered on. Absent or empty — the default — means every channel the agent serves
|
|
736
|
+
* that can honour it. Listing channels narrows that set and never widens it: a `transfer` listed for `chat` is
|
|
737
|
+
* still ignored there, because the chat channel has no call to transfer.
|
|
738
|
+
* @public
|
|
739
|
+
*/
|
|
740
|
+
channels?: ChannelType[] | undefined;
|
|
406
741
|
}
|
|
407
742
|
/**
|
|
408
743
|
* Comment annotation emitted after a tool completes.
|
|
@@ -587,6 +922,13 @@ export interface AgentConnectorCapability {
|
|
|
587
922
|
* @public
|
|
588
923
|
*/
|
|
589
924
|
approval?: AgentToolApproval | undefined;
|
|
925
|
+
/**
|
|
926
|
+
* Channels this capability is offered on. Absent or empty — the default — means every channel the agent serves
|
|
927
|
+
* that can honour it. Listing channels narrows that set and never widens it: a `transfer` listed for `chat` is
|
|
928
|
+
* still ignored there, because the chat channel has no call to transfer.
|
|
929
|
+
* @public
|
|
930
|
+
*/
|
|
931
|
+
channels?: ChannelType[] | undefined;
|
|
590
932
|
annotations?: AgentToolAnnotation[] | undefined;
|
|
591
933
|
}
|
|
592
934
|
/**
|
|
@@ -614,6 +956,13 @@ export interface AgentDelegationCapability {
|
|
|
614
956
|
* @public
|
|
615
957
|
*/
|
|
616
958
|
agentVersion?: number | undefined;
|
|
959
|
+
/**
|
|
960
|
+
* Channels this capability is offered on. Absent or empty — the default — means every channel the agent serves
|
|
961
|
+
* that can honour it. Listing channels narrows that set and never widens it: a `transfer` listed for `chat` is
|
|
962
|
+
* still ignored there, because the chat channel has no call to transfer.
|
|
963
|
+
* @public
|
|
964
|
+
*/
|
|
965
|
+
channels?: ChannelType[] | undefined;
|
|
617
966
|
annotations?: AgentToolAnnotation[] | undefined;
|
|
618
967
|
}
|
|
619
968
|
/**
|
|
@@ -664,6 +1013,13 @@ export interface AgentHandoverCapability {
|
|
|
664
1013
|
*/
|
|
665
1014
|
silent?: boolean | undefined;
|
|
666
1015
|
pipeline?: AgentHandoverPipeline | undefined;
|
|
1016
|
+
/**
|
|
1017
|
+
* Channels this capability is offered on. Absent or empty — the default — means every channel the agent serves
|
|
1018
|
+
* that can honour it. Listing channels narrows that set and never widens it: a `transfer` listed for `chat` is
|
|
1019
|
+
* still ignored there, because the chat channel has no call to transfer.
|
|
1020
|
+
* @public
|
|
1021
|
+
*/
|
|
1022
|
+
channels?: ChannelType[] | undefined;
|
|
667
1023
|
annotations?: AgentToolAnnotation[] | undefined;
|
|
668
1024
|
}
|
|
669
1025
|
/**
|
|
@@ -693,6 +1049,13 @@ export interface AgentHangupCapability {
|
|
|
693
1049
|
*/
|
|
694
1050
|
description?: string | undefined;
|
|
695
1051
|
pipeline?: AgentHangupPipeline | undefined;
|
|
1052
|
+
/**
|
|
1053
|
+
* Channels this capability is offered on. Absent or empty — the default — means every channel the agent serves
|
|
1054
|
+
* that can honour it. Listing channels narrows that set and never widens it: a `transfer` listed for `chat` is
|
|
1055
|
+
* still ignored there, because the chat channel has no call to transfer.
|
|
1056
|
+
* @public
|
|
1057
|
+
*/
|
|
1058
|
+
channels?: ChannelType[] | undefined;
|
|
696
1059
|
annotations?: AgentToolAnnotation[] | undefined;
|
|
697
1060
|
}
|
|
698
1061
|
/**
|
|
@@ -705,6 +1068,13 @@ export interface AgentKnowledgeBase {
|
|
|
705
1068
|
* @public
|
|
706
1069
|
*/
|
|
707
1070
|
instructions?: string | undefined;
|
|
1071
|
+
/**
|
|
1072
|
+
* Channels this capability is offered on. Absent or empty — the default — means every channel the agent serves
|
|
1073
|
+
* that can honour it. Listing channels narrows that set and never widens it: a `transfer` listed for `chat` is
|
|
1074
|
+
* still ignored there, because the chat channel has no call to transfer.
|
|
1075
|
+
* @public
|
|
1076
|
+
*/
|
|
1077
|
+
channels?: ChannelType[] | undefined;
|
|
708
1078
|
annotations?: AgentToolAnnotation[] | undefined;
|
|
709
1079
|
}
|
|
710
1080
|
/**
|
|
@@ -755,7 +1125,7 @@ export interface AgentVercelSandboxOptions {
|
|
|
755
1125
|
allowedDomains?: string[] | undefined;
|
|
756
1126
|
}
|
|
757
1127
|
/**
|
|
758
|
-
* Embedded sandbox: shell + file tools backed by an execution environment.
|
|
1128
|
+
* Embedded sandbox: shell + file tools backed by an execution environment. The only capability with no `channels` list — being a union it has nowhere to carry one — so it is offered on every channel the agent serves.
|
|
759
1129
|
* @public
|
|
760
1130
|
*/
|
|
761
1131
|
export type AgentSandboxCapability = AgentSandboxCapability.SnapshotMember | AgentSandboxCapability.VercelMember | AgentSandboxCapability.$UnknownMember;
|
|
@@ -809,6 +1179,13 @@ export interface AgentSuggestionsCapability {
|
|
|
809
1179
|
* @public
|
|
810
1180
|
*/
|
|
811
1181
|
name?: string | undefined;
|
|
1182
|
+
/**
|
|
1183
|
+
* Channels this capability is offered on. Absent or empty — the default — means every channel the agent serves
|
|
1184
|
+
* that can honour it. Listing channels narrows that set and never widens it: a `transfer` listed for `chat` is
|
|
1185
|
+
* still ignored there, because the chat channel has no call to transfer.
|
|
1186
|
+
* @public
|
|
1187
|
+
*/
|
|
1188
|
+
channels?: ChannelType[] | undefined;
|
|
812
1189
|
annotations?: AgentToolAnnotation[] | undefined;
|
|
813
1190
|
}
|
|
814
1191
|
/**
|
|
@@ -920,6 +1297,13 @@ export interface AgentTool {
|
|
|
920
1297
|
* @public
|
|
921
1298
|
*/
|
|
922
1299
|
approval?: AgentToolApproval | undefined;
|
|
1300
|
+
/**
|
|
1301
|
+
* Channels this capability is offered on. Absent or empty — the default — means every channel the agent serves
|
|
1302
|
+
* that can honour it. Listing channels narrows that set and never widens it: a `transfer` listed for `chat` is
|
|
1303
|
+
* still ignored there, because the chat channel has no call to transfer.
|
|
1304
|
+
* @public
|
|
1305
|
+
*/
|
|
1306
|
+
channels?: ChannelType[] | undefined;
|
|
923
1307
|
annotations?: AgentToolAnnotation[] | undefined;
|
|
924
1308
|
}
|
|
925
1309
|
/**
|
|
@@ -960,6 +1344,13 @@ export interface AgentTransferCapability {
|
|
|
960
1344
|
*/
|
|
961
1345
|
extension?: string | undefined;
|
|
962
1346
|
pipeline?: AgentTransferPipeline | undefined;
|
|
1347
|
+
/**
|
|
1348
|
+
* Channels this capability is offered on. Absent or empty — the default — means every channel the agent serves
|
|
1349
|
+
* that can honour it. Listing channels narrows that set and never widens it: a `transfer` listed for `chat` is
|
|
1350
|
+
* still ignored there, because the chat channel has no call to transfer.
|
|
1351
|
+
* @public
|
|
1352
|
+
*/
|
|
1353
|
+
channels?: ChannelType[] | undefined;
|
|
963
1354
|
annotations?: AgentToolAnnotation[] | undefined;
|
|
964
1355
|
}
|
|
965
1356
|
/**
|
|
@@ -982,6 +1373,13 @@ export interface AgentWaitCapability {
|
|
|
982
1373
|
* @public
|
|
983
1374
|
*/
|
|
984
1375
|
message?: string | undefined;
|
|
1376
|
+
/**
|
|
1377
|
+
* Channels this capability is offered on. Absent or empty — the default — means every channel the agent serves
|
|
1378
|
+
* that can honour it. Listing channels narrows that set and never widens it: a `transfer` listed for `chat` is
|
|
1379
|
+
* still ignored there, because the chat channel has no call to transfer.
|
|
1380
|
+
* @public
|
|
1381
|
+
*/
|
|
1382
|
+
channels?: ChannelType[] | undefined;
|
|
985
1383
|
annotations?: AgentToolAnnotation[] | undefined;
|
|
986
1384
|
}
|
|
987
1385
|
/**
|
|
@@ -994,6 +1392,13 @@ export interface AgentWebFetchCapability {
|
|
|
994
1392
|
* @public
|
|
995
1393
|
*/
|
|
996
1394
|
allowedDomains?: string[] | undefined;
|
|
1395
|
+
/**
|
|
1396
|
+
* Channels this capability is offered on. Absent or empty — the default — means every channel the agent serves
|
|
1397
|
+
* that can honour it. Listing channels narrows that set and never widens it: a `transfer` listed for `chat` is
|
|
1398
|
+
* still ignored there, because the chat channel has no call to transfer.
|
|
1399
|
+
* @public
|
|
1400
|
+
*/
|
|
1401
|
+
channels?: ChannelType[] | undefined;
|
|
997
1402
|
}
|
|
998
1403
|
/**
|
|
999
1404
|
* @public
|
|
@@ -1028,6 +1433,13 @@ export interface AgentWebSearchCapability {
|
|
|
1028
1433
|
*/
|
|
1029
1434
|
allowedDomains?: string[] | undefined;
|
|
1030
1435
|
userLocation?: WebSearchUserLocation | undefined;
|
|
1436
|
+
/**
|
|
1437
|
+
* Channels this capability is offered on. Absent or empty — the default — means every channel the agent serves
|
|
1438
|
+
* that can honour it. Listing channels narrows that set and never widens it: a `transfer` listed for `chat` is
|
|
1439
|
+
* still ignored there, because the chat channel has no call to transfer.
|
|
1440
|
+
* @public
|
|
1441
|
+
*/
|
|
1442
|
+
channels?: ChannelType[] | undefined;
|
|
1031
1443
|
}
|
|
1032
1444
|
/**
|
|
1033
1445
|
* @public
|
|
@@ -1093,7 +1505,7 @@ export declare namespace AgentCapability {
|
|
|
1093
1505
|
$unknown?: never;
|
|
1094
1506
|
}
|
|
1095
1507
|
/**
|
|
1096
|
-
* Embedded sandbox: shell + file tools backed by an execution environment.
|
|
1508
|
+
* Embedded sandbox: shell + file tools backed by an execution environment. The only capability with no `channels` list — being a union it has nowhere to carry one — so it is offered on every channel the agent serves.
|
|
1097
1509
|
* @public
|
|
1098
1510
|
*/
|
|
1099
1511
|
interface SandboxMember {
|
|
@@ -1153,7 +1565,7 @@ export declare namespace AgentCapability {
|
|
|
1153
1565
|
$unknown?: never;
|
|
1154
1566
|
}
|
|
1155
1567
|
/**
|
|
1156
|
-
* Invoke another agent
|
|
1568
|
+
* Invoke another agent as a dedicated execution with its own state. The called agent runs independently and returns its result.
|
|
1157
1569
|
* @public
|
|
1158
1570
|
*/
|
|
1159
1571
|
interface AgentMember {
|
|
@@ -1332,6 +1744,298 @@ export declare namespace AgentCapability {
|
|
|
1332
1744
|
_: (name: string, value: any) => T;
|
|
1333
1745
|
}
|
|
1334
1746
|
}
|
|
1747
|
+
/**
|
|
1748
|
+
* Refuse the turn. The agent's model is never called, no tool runs, and the caller is answered with `message` instead. The session stays alive and the conversation continues, so on a check meant to redirect rather than stop — 'let me take a few details first' — the message is doing the work.
|
|
1749
|
+
* @public
|
|
1750
|
+
*/
|
|
1751
|
+
export interface AgentGuardrailBlockAction {
|
|
1752
|
+
/**
|
|
1753
|
+
* Said to the caller in place of the agent's reply. Falls back to a channel default when unset.
|
|
1754
|
+
* @public
|
|
1755
|
+
*/
|
|
1756
|
+
message?: string | undefined;
|
|
1757
|
+
}
|
|
1758
|
+
/**
|
|
1759
|
+
* End the session. It lands in SessionStatus TERMINATED — not STOPPED, which is what a user asking to stop means — so a refused session is never read back as a clean finish. On voice this hangs up the call; on the other channels the session simply accepts no further turns.
|
|
1760
|
+
* @public
|
|
1761
|
+
*/
|
|
1762
|
+
export interface AgentGuardrailEndAction {
|
|
1763
|
+
/**
|
|
1764
|
+
* Said to the caller before the session ends.
|
|
1765
|
+
* @public
|
|
1766
|
+
*/
|
|
1767
|
+
message?: string | undefined;
|
|
1768
|
+
}
|
|
1769
|
+
/**
|
|
1770
|
+
* Record the verdict and let the turn through. The rollout mode: every guardrail should run here first, against real traffic, until its trips are read and its sensitivity is tuned. A tripped check still emits GuardrailTrippedEvent and still appears in the trace, which is what makes this a tuning tool rather than a switched-off check.
|
|
1771
|
+
* @public
|
|
1772
|
+
*/
|
|
1773
|
+
export interface AgentGuardrailObserveAction {
|
|
1774
|
+
}
|
|
1775
|
+
/**
|
|
1776
|
+
* Mask the matched spans and let the turn continue. The mask is chosen by the platform and is not configurable — a tenant-authored placeholder that collides with real text, or that the model reads as an instruction, is worse than having no choice. Only valid on checks that return spans (PII, SECRETS).
|
|
1777
|
+
* @public
|
|
1778
|
+
*/
|
|
1779
|
+
export interface AgentGuardrailRedactAction {
|
|
1780
|
+
}
|
|
1781
|
+
/**
|
|
1782
|
+
* What happens when a check trips. Exactly one member is set.
|
|
1783
|
+
*
|
|
1784
|
+
* Ordered by severity: observe < redact < block < end. When more than one check trips in the same call the
|
|
1785
|
+
* most severe action wins and ties break on the order of `checks`, so a set can mix an observed check with
|
|
1786
|
+
* an enforced one without the observation weakening the enforcement.
|
|
1787
|
+
*
|
|
1788
|
+
* There is no hand-over member yet. Handing a session to a human is a different mechanism on every channel
|
|
1789
|
+
* — a voice transfer, a chat assignment, an assistant with no human behind it — and wiring a guardrail into
|
|
1790
|
+
* all of them is out of proportion to the rest of this feature. Until AgentHandoverCapability has a runtime
|
|
1791
|
+
* on more than one channel, the crisis path is a block whose message routes the caller.
|
|
1792
|
+
* @public
|
|
1793
|
+
*/
|
|
1794
|
+
export type AgentGuardrailAction = AgentGuardrailAction.BlockMember | AgentGuardrailAction.EndMember | AgentGuardrailAction.ObserveMember | AgentGuardrailAction.RedactMember | AgentGuardrailAction.$UnknownMember;
|
|
1795
|
+
/**
|
|
1796
|
+
* @public
|
|
1797
|
+
*/
|
|
1798
|
+
export declare namespace AgentGuardrailAction {
|
|
1799
|
+
/**
|
|
1800
|
+
* Record the verdict and let the turn through. The rollout mode: every guardrail should run here first, against real traffic, until its trips are read and its sensitivity is tuned. A tripped check still emits GuardrailTrippedEvent and still appears in the trace, which is what makes this a tuning tool rather than a switched-off check.
|
|
1801
|
+
* @public
|
|
1802
|
+
*/
|
|
1803
|
+
interface ObserveMember {
|
|
1804
|
+
observe: AgentGuardrailObserveAction;
|
|
1805
|
+
redact?: never;
|
|
1806
|
+
block?: never;
|
|
1807
|
+
end?: never;
|
|
1808
|
+
$unknown?: never;
|
|
1809
|
+
}
|
|
1810
|
+
/**
|
|
1811
|
+
* Mask the matched spans and let the turn continue. The mask is chosen by the platform and is not configurable — a tenant-authored placeholder that collides with real text, or that the model reads as an instruction, is worse than having no choice. Only valid on checks that return spans (PII, SECRETS).
|
|
1812
|
+
* @public
|
|
1813
|
+
*/
|
|
1814
|
+
interface RedactMember {
|
|
1815
|
+
observe?: never;
|
|
1816
|
+
redact: AgentGuardrailRedactAction;
|
|
1817
|
+
block?: never;
|
|
1818
|
+
end?: never;
|
|
1819
|
+
$unknown?: never;
|
|
1820
|
+
}
|
|
1821
|
+
/**
|
|
1822
|
+
* Refuse the turn. The agent's model is never called, no tool runs, and the caller is answered with `message` instead. The session stays alive and the conversation continues, so on a check meant to redirect rather than stop — 'let me take a few details first' — the message is doing the work.
|
|
1823
|
+
* @public
|
|
1824
|
+
*/
|
|
1825
|
+
interface BlockMember {
|
|
1826
|
+
observe?: never;
|
|
1827
|
+
redact?: never;
|
|
1828
|
+
block: AgentGuardrailBlockAction;
|
|
1829
|
+
end?: never;
|
|
1830
|
+
$unknown?: never;
|
|
1831
|
+
}
|
|
1832
|
+
/**
|
|
1833
|
+
* End the session. It lands in SessionStatus TERMINATED — not STOPPED, which is what a user asking to stop means — so a refused session is never read back as a clean finish. On voice this hangs up the call; on the other channels the session simply accepts no further turns.
|
|
1834
|
+
* @public
|
|
1835
|
+
*/
|
|
1836
|
+
interface EndMember {
|
|
1837
|
+
observe?: never;
|
|
1838
|
+
redact?: never;
|
|
1839
|
+
block?: never;
|
|
1840
|
+
end: AgentGuardrailEndAction;
|
|
1841
|
+
$unknown?: never;
|
|
1842
|
+
}
|
|
1843
|
+
/**
|
|
1844
|
+
* @public
|
|
1845
|
+
*/
|
|
1846
|
+
interface $UnknownMember {
|
|
1847
|
+
observe?: never;
|
|
1848
|
+
redact?: never;
|
|
1849
|
+
block?: never;
|
|
1850
|
+
end?: never;
|
|
1851
|
+
$unknown: [string, any];
|
|
1852
|
+
}
|
|
1853
|
+
/**
|
|
1854
|
+
* @deprecated unused in schema-serde mode.
|
|
1855
|
+
*
|
|
1856
|
+
*/
|
|
1857
|
+
interface Visitor<T> {
|
|
1858
|
+
observe: (value: AgentGuardrailObserveAction) => T;
|
|
1859
|
+
redact: (value: AgentGuardrailRedactAction) => T;
|
|
1860
|
+
block: (value: AgentGuardrailBlockAction) => T;
|
|
1861
|
+
end: (value: AgentGuardrailEndAction) => T;
|
|
1862
|
+
_: (name: string, value: any) => T;
|
|
1863
|
+
}
|
|
1864
|
+
}
|
|
1865
|
+
/**
|
|
1866
|
+
* A check written by the tenant. A name and a prompt is the whole surface: no category enum can express the rules customers actually buy, such as refusing to quote a price before qualifying.
|
|
1867
|
+
* @public
|
|
1868
|
+
*/
|
|
1869
|
+
export interface AgentGuardrailCustomCheck {
|
|
1870
|
+
/**
|
|
1871
|
+
* Natural-language description of what a custom check looks for. Describe the *content* to be caught, not an instruction to the checker: 'The caller is asking about cryptocurrency investments' works, 'Block all content about crypto' does not, and a negative definition ('anything except billing questions') reliably misfires.
|
|
1872
|
+
* @public
|
|
1873
|
+
*/
|
|
1874
|
+
instructions: string;
|
|
1875
|
+
/**
|
|
1876
|
+
* Up to five turns that should trip this check. They steer the model's judgement and are NOT matched literally — a description plus examples catches the plural, the typo and the paraphrase that a term list misses.
|
|
1877
|
+
* @public
|
|
1878
|
+
*/
|
|
1879
|
+
examples?: string[] | undefined;
|
|
1880
|
+
}
|
|
1881
|
+
/**
|
|
1882
|
+
* A check backed by one of the platform's prebuilt prompts.
|
|
1883
|
+
* @public
|
|
1884
|
+
*/
|
|
1885
|
+
export interface AgentGuardrailPresetCheck {
|
|
1886
|
+
/**
|
|
1887
|
+
* A prebuilt check. Each preset is a platform-maintained prompt shipped in code and versioned with the
|
|
1888
|
+
* platform, not a tenant row — so a support question about what a preset caught has one answer. A preset
|
|
1889
|
+
* check is otherwise an ordinary AgentGuardrailCheck: its sensitivity and action are the tenant's to set,
|
|
1890
|
+
* and `notes` narrows its prompt without replacing it.
|
|
1891
|
+
* @public
|
|
1892
|
+
*/
|
|
1893
|
+
preset: AgentGuardrailPreset;
|
|
1894
|
+
/**
|
|
1895
|
+
* Appended to the preset's prompt. For narrowing, not redefining — 'ignore card numbers read back after our own IVR prompts for them' — so the preset keeps its maintenance while fitting a tenant whose product would otherwise fight it.
|
|
1896
|
+
* @public
|
|
1897
|
+
*/
|
|
1898
|
+
notes?: string | undefined;
|
|
1899
|
+
}
|
|
1900
|
+
/**
|
|
1901
|
+
* What a check is: one of the platform's presets, or a prompt the tenant wrote. Exactly one member is set.
|
|
1902
|
+
* @public
|
|
1903
|
+
*/
|
|
1904
|
+
export type AgentGuardrailCheckKind = AgentGuardrailCheckKind.CustomMember | AgentGuardrailCheckKind.PresetMember | AgentGuardrailCheckKind.$UnknownMember;
|
|
1905
|
+
/**
|
|
1906
|
+
* @public
|
|
1907
|
+
*/
|
|
1908
|
+
export declare namespace AgentGuardrailCheckKind {
|
|
1909
|
+
/**
|
|
1910
|
+
* A check backed by one of the platform's prebuilt prompts.
|
|
1911
|
+
* @public
|
|
1912
|
+
*/
|
|
1913
|
+
interface PresetMember {
|
|
1914
|
+
preset: AgentGuardrailPresetCheck;
|
|
1915
|
+
custom?: never;
|
|
1916
|
+
$unknown?: never;
|
|
1917
|
+
}
|
|
1918
|
+
/**
|
|
1919
|
+
* A check written by the tenant. A name and a prompt is the whole surface: no category enum can express the rules customers actually buy, such as refusing to quote a price before qualifying.
|
|
1920
|
+
* @public
|
|
1921
|
+
*/
|
|
1922
|
+
interface CustomMember {
|
|
1923
|
+
preset?: never;
|
|
1924
|
+
custom: AgentGuardrailCustomCheck;
|
|
1925
|
+
$unknown?: never;
|
|
1926
|
+
}
|
|
1927
|
+
/**
|
|
1928
|
+
* @public
|
|
1929
|
+
*/
|
|
1930
|
+
interface $UnknownMember {
|
|
1931
|
+
preset?: never;
|
|
1932
|
+
custom?: never;
|
|
1933
|
+
$unknown: [string, any];
|
|
1934
|
+
}
|
|
1935
|
+
/**
|
|
1936
|
+
* @deprecated unused in schema-serde mode.
|
|
1937
|
+
*
|
|
1938
|
+
*/
|
|
1939
|
+
interface Visitor<T> {
|
|
1940
|
+
preset: (value: AgentGuardrailPresetCheck) => T;
|
|
1941
|
+
custom: (value: AgentGuardrailCustomCheck) => T;
|
|
1942
|
+
_: (name: string, value: any) => T;
|
|
1943
|
+
}
|
|
1944
|
+
}
|
|
1945
|
+
/**
|
|
1946
|
+
* One thing the checker is asked about a turn. There is deliberately no `enabled` flag: a check that
|
|
1947
|
+
* should not run is removed, so a published version never carries a switched-off check that reads like
|
|
1948
|
+
* policy.
|
|
1949
|
+
* @public
|
|
1950
|
+
*/
|
|
1951
|
+
export interface AgentGuardrailCheck {
|
|
1952
|
+
/**
|
|
1953
|
+
* Name of a check, unique within a guardrail set. Stable and machine-facing: session events and trace spans report a verdict by this name, so a reader needs no copy of the agent definition to tell which check fired.
|
|
1954
|
+
* @public
|
|
1955
|
+
*/
|
|
1956
|
+
name: string;
|
|
1957
|
+
description?: string | undefined;
|
|
1958
|
+
/**
|
|
1959
|
+
* What a check is: one of the platform's presets, or a prompt the tenant wrote. Exactly one member is set.
|
|
1960
|
+
* @public
|
|
1961
|
+
*/
|
|
1962
|
+
kind: AgentGuardrailCheckKind;
|
|
1963
|
+
/**
|
|
1964
|
+
* How much confidence a verdict needs before it counts as tripped. The checker reports a confidence per
|
|
1965
|
+
* check and this is the threshold against it, so raising sensitivity catches more and costs more false
|
|
1966
|
+
* positives without changing the prompt or the model: `low` trips only on high confidence, `medium` on
|
|
1967
|
+
* high and medium, `high` on anything but a clear pass. Defaults to MEDIUM.
|
|
1968
|
+
* @public
|
|
1969
|
+
*/
|
|
1970
|
+
sensitivity?: AgentGuardrailSensitivity | undefined;
|
|
1971
|
+
/**
|
|
1972
|
+
* What happens when this check trips. Defaults to the preset's own — a block for most, a redaction for PII and SECRETS, and for SELF_HARM a block whose message routes the caller. A custom check with none defaults to a block.
|
|
1973
|
+
* @public
|
|
1974
|
+
*/
|
|
1975
|
+
action?: AgentGuardrailAction | undefined;
|
|
1976
|
+
}
|
|
1977
|
+
/**
|
|
1978
|
+
* Screening applied to what reaches the model.
|
|
1979
|
+
*
|
|
1980
|
+
* There is deliberately no bundle or preset-group member. A named group that expands to a set of checks
|
|
1981
|
+
* reads like convenience and behaves like version skew: the same agent definition would mean different
|
|
1982
|
+
* things before and after a platform release, invisibly to the tenant who published it. Listing the checks
|
|
1983
|
+
* costs a few lines in a document the console writes anyway, and the published version then states exactly
|
|
1984
|
+
* what it enforces.
|
|
1985
|
+
*
|
|
1986
|
+
* There is also no set-level default action. One field standing behind every check reads as a convenience
|
|
1987
|
+
* and hides the thing a reader most needs to see: what a given check will actually do. A check's action is
|
|
1988
|
+
* its own or its preset's, and both are visible on the check.
|
|
1989
|
+
* @public
|
|
1990
|
+
*/
|
|
1991
|
+
export interface AgentGuardrailInput {
|
|
1992
|
+
/**
|
|
1993
|
+
* The checks to run, evaluated together in one call. Absent or empty means no screening.
|
|
1994
|
+
* @public
|
|
1995
|
+
*/
|
|
1996
|
+
checks?: AgentGuardrailCheck[] | undefined;
|
|
1997
|
+
/**
|
|
1998
|
+
* The model that runs the checks. Defaults to the platform's guardrail model — deliberately small and fast, and deliberately not the agent's own, whose cost and latency are what this exists to avoid spending on a bad turn.
|
|
1999
|
+
* @public
|
|
2000
|
+
*/
|
|
2001
|
+
model?: string | undefined;
|
|
2002
|
+
/**
|
|
2003
|
+
* Runs the checker before the agent's model (BLOCKING) or alongside it (PARALLEL). Blocking costs the checker's latency on every turn but guarantees that a refused turn spent no tokens and fired no tool; parallel adds no latency and is the right trade on voice, where the delay is audible, at the risk that part of a reply reaches the caller and that a tool has already run before the cancellation lands. Defaults to BLOCKING.
|
|
2004
|
+
* @public
|
|
2005
|
+
*/
|
|
2006
|
+
mode?: AgentGuardrailMode | undefined;
|
|
2007
|
+
/**
|
|
2008
|
+
* What happens when the checker itself errors or times out. OPEN lets the turn through unscreened and records GuardrailFailedEvent, so an unscreened turn is a fact in the log rather than an absence; CLOSED refuses it. Defaults to OPEN: an agent that stops answering because a small model had a bad minute is a worse and far likelier outage than the rare turn that goes unscreened. Background tasks, where nobody is waiting and a retry is free, are the case for CLOSED.
|
|
2009
|
+
* @public
|
|
2010
|
+
*/
|
|
2011
|
+
errorMode?: AgentGuardrailErrorMode | undefined;
|
|
2012
|
+
/**
|
|
2013
|
+
* How much of the conversation the checker sees. Defaults to LAST_WITH_PRIOR, because the jailbreaks worth catching are built across several turns — establish a fiction, then cash it in — and a checker shown only the last turn sees an innocuous sentence. There is no full-transcript option: screening a whole call on every turn would make the guardrail dearer than the agent.
|
|
2014
|
+
* @public
|
|
2015
|
+
*/
|
|
2016
|
+
window?: AgentGuardrailWindow | undefined;
|
|
2017
|
+
}
|
|
2018
|
+
/**
|
|
2019
|
+
* Turn screening, by side. Only `input` exists: it guards what reaches the model, and output screening is a separate policy with different actions, added here when it is built.
|
|
2020
|
+
* @public
|
|
2021
|
+
*/
|
|
2022
|
+
export interface AgentGuardrails {
|
|
2023
|
+
/**
|
|
2024
|
+
* Screening applied to what reaches the model.
|
|
2025
|
+
*
|
|
2026
|
+
* There is deliberately no bundle or preset-group member. A named group that expands to a set of checks
|
|
2027
|
+
* reads like convenience and behaves like version skew: the same agent definition would mean different
|
|
2028
|
+
* things before and after a platform release, invisibly to the tenant who published it. Listing the checks
|
|
2029
|
+
* costs a few lines in a document the console writes anyway, and the published version then states exactly
|
|
2030
|
+
* what it enforces.
|
|
2031
|
+
*
|
|
2032
|
+
* There is also no set-level default action. One field standing behind every check reads as a convenience
|
|
2033
|
+
* and hides the thing a reader most needs to see: what a given check will actually do. A check's action is
|
|
2034
|
+
* its own or its preset's, and both are visible on the check.
|
|
2035
|
+
* @public
|
|
2036
|
+
*/
|
|
2037
|
+
input?: AgentGuardrailInput | undefined;
|
|
2038
|
+
}
|
|
1335
2039
|
/**
|
|
1336
2040
|
* Reference to a skill attached to an agent.
|
|
1337
2041
|
* @public
|
|
@@ -2298,15 +3002,12 @@ export interface AgentWorkflowStep {
|
|
|
2298
3002
|
*/
|
|
2299
3003
|
id: string;
|
|
2300
3004
|
/**
|
|
2301
|
-
* Human readable name of a step,
|
|
3005
|
+
* Human readable name of a step, e.g. 'Transfer to the sales desk'. Shown in the builder and in traces, and
|
|
3006
|
+
* read by the model too: when this step is an exit of the live step, the label is the preview offered alongside
|
|
3007
|
+
* the exit's condition. Never a routing key — see AgentWorkflowStepId — so renaming one never unwires a graph.
|
|
2302
3008
|
* @public
|
|
2303
3009
|
*/
|
|
2304
3010
|
label: string;
|
|
2305
|
-
/**
|
|
2306
|
-
* One line saying what happens here, shown to the model as the preview of any exit that leads to this step.
|
|
2307
|
-
* @public
|
|
2308
|
-
*/
|
|
2309
|
-
summary?: string | undefined;
|
|
2310
3011
|
/**
|
|
2311
3012
|
* The phase this step belongs to. Inherited by steps downstream, so a handful of tags organise a long graph.
|
|
2312
3013
|
* @public
|
|
@@ -2425,6 +3126,15 @@ export interface AgentAiEngine {
|
|
|
2425
3126
|
* @public
|
|
2426
3127
|
*/
|
|
2427
3128
|
workflow?: AgentWorkflow | undefined;
|
|
3129
|
+
/**
|
|
3130
|
+
* Screening applied to a turn before this agent's model sees it. Sits next to `instructions` and
|
|
3131
|
+
* `workflow` because it is the third thing that governs a session, and it is enforced outside the prompt
|
|
3132
|
+
* on purpose: a refusal written into `instructions` is one the caller can argue the agent out of.
|
|
3133
|
+
* Optional — absent means no screening, which is what every agent authored before guardrails existed
|
|
3134
|
+
* keeps doing. See AgentGuardrails.
|
|
3135
|
+
* @public
|
|
3136
|
+
*/
|
|
3137
|
+
guardrails?: AgentGuardrails | undefined;
|
|
2428
3138
|
/**
|
|
2429
3139
|
* Defaults to the platform default model when omitted.
|
|
2430
3140
|
* @public
|
|
@@ -2452,18 +3162,6 @@ export interface AgentAiEngine {
|
|
|
2452
3162
|
capabilities?: AgentCapability[] | undefined;
|
|
2453
3163
|
variables?: AgentVariable[] | undefined;
|
|
2454
3164
|
}
|
|
2455
|
-
/**
|
|
2456
|
-
* A reference to a stored secret, held by other services in place of the value.
|
|
2457
|
-
* Resolved server-to-server via GetSecretValue at execution time — always to the current value.
|
|
2458
|
-
* @public
|
|
2459
|
-
*/
|
|
2460
|
-
export interface SecretRef {
|
|
2461
|
-
/**
|
|
2462
|
-
* Unique identifier of a secret.
|
|
2463
|
-
* @public
|
|
2464
|
-
*/
|
|
2465
|
-
id: string;
|
|
2466
|
-
}
|
|
2467
3165
|
/**
|
|
2468
3166
|
* Bring-your-own backend over SQS: turns are forwarded to the queue, replies are posted back via the API.
|
|
2469
3167
|
* @public
|
|
@@ -2595,8 +3293,9 @@ export interface Agent {
|
|
|
2595
3293
|
/**
|
|
2596
3294
|
* Who is allowed to use the agent. There is no view/edit dimension — access solely grants the ability to use the agent.
|
|
2597
3295
|
* Per channel: on `chat` and `assistant` agents `grants` govern which colleagues can use the agent; on `voice` agents `grants`
|
|
2598
|
-
* are ignored (inbound calls are routed by the PBX dialplan, and data ACL is the agent-level `settings.pbxGroupId`)
|
|
2599
|
-
* access is not used — invocation access is configured per reference on the calling agent
|
|
3296
|
+
* are ignored (inbound calls are routed by the PBX dialplan, and data ACL is the agent-level `settings.pbxGroupId`). When an agent is
|
|
3297
|
+
* invoked as a background task its agent-level access is not used — invocation access is configured per reference on the calling agent
|
|
3298
|
+
* (see AgentCallCapability.access).
|
|
2600
3299
|
* @public
|
|
2601
3300
|
*/
|
|
2602
3301
|
access?: AgentAccess | undefined;
|
|
@@ -2710,25 +3409,44 @@ export interface AgentDefinitionSnapshot {
|
|
|
2710
3409
|
/**
|
|
2711
3410
|
* Who is allowed to use the agent. There is no view/edit dimension — access solely grants the ability to use the agent.
|
|
2712
3411
|
* Per channel: on `chat` and `assistant` agents `grants` govern which colleagues can use the agent; on `voice` agents `grants`
|
|
2713
|
-
* are ignored (inbound calls are routed by the PBX dialplan, and data ACL is the agent-level `settings.pbxGroupId`)
|
|
2714
|
-
* access is not used — invocation access is configured per reference on the calling agent
|
|
3412
|
+
* are ignored (inbound calls are routed by the PBX dialplan, and data ACL is the agent-level `settings.pbxGroupId`). When an agent is
|
|
3413
|
+
* invoked as a background task its agent-level access is not used — invocation access is configured per reference on the calling agent
|
|
3414
|
+
* (see AgentCallCapability.access).
|
|
2715
3415
|
* @public
|
|
2716
3416
|
*/
|
|
2717
3417
|
access?: AgentAccess | undefined;
|
|
2718
3418
|
}
|
|
2719
3419
|
/**
|
|
3420
|
+
* What a client needs to render an agent, and nothing more: AgentInfo is the end-user view of an agent,
|
|
3421
|
+
* served by the channel runtimes (e.g. GetAgent / GetSettings on wilma-assistant) to callers who must not
|
|
3422
|
+
* see instructions, capabilities or access rules. Everything here is safe to show to whoever can use the agent.
|
|
2720
3423
|
* @public
|
|
2721
3424
|
*/
|
|
2722
3425
|
export interface AgentInfo {
|
|
2723
3426
|
id: string;
|
|
2724
3427
|
name: string;
|
|
3428
|
+
/**
|
|
3429
|
+
* Avatar URL, from the agent definition.
|
|
3430
|
+
* @public
|
|
3431
|
+
*/
|
|
3432
|
+
picture?: string | undefined;
|
|
2725
3433
|
category?: string | undefined;
|
|
2726
3434
|
status: AgentStatus;
|
|
2727
3435
|
/**
|
|
2728
|
-
* The channels this agent serves (voice / chat / assistant
|
|
3436
|
+
* The channels this agent serves (voice / chat / assistant).
|
|
2729
3437
|
* @public
|
|
2730
3438
|
*/
|
|
2731
3439
|
channels: ChannelType[];
|
|
3440
|
+
/**
|
|
3441
|
+
* 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.
|
|
3442
|
+
* @public
|
|
3443
|
+
*/
|
|
3444
|
+
speechConfigured?: boolean | undefined;
|
|
3445
|
+
/**
|
|
3446
|
+
* How the agent presents itself in the assistant UI: welcome message, quick commands and composer placeholder, copied from `channels.assistant.ui`. Absent when the agent does not serve the assistant channel, or when its author configured no presentation and the client should use its own defaults.
|
|
3447
|
+
* @public
|
|
3448
|
+
*/
|
|
3449
|
+
assistant?: AssistantUiSettings | undefined;
|
|
2732
3450
|
/**
|
|
2733
3451
|
* Published agent version number. Monotonic within an agent's version history, starting at 1.
|
|
2734
3452
|
* @public
|
|
@@ -2897,8 +3615,9 @@ export interface CreateAgentInput {
|
|
|
2897
3615
|
/**
|
|
2898
3616
|
* Who is allowed to use the agent. There is no view/edit dimension — access solely grants the ability to use the agent.
|
|
2899
3617
|
* Per channel: on `chat` and `assistant` agents `grants` govern which colleagues can use the agent; on `voice` agents `grants`
|
|
2900
|
-
* are ignored (inbound calls are routed by the PBX dialplan, and data ACL is the agent-level `settings.pbxGroupId`)
|
|
2901
|
-
* access is not used — invocation access is configured per reference on the calling agent
|
|
3618
|
+
* are ignored (inbound calls are routed by the PBX dialplan, and data ACL is the agent-level `settings.pbxGroupId`). When an agent is
|
|
3619
|
+
* invoked as a background task its agent-level access is not used — invocation access is configured per reference on the calling agent
|
|
3620
|
+
* (see AgentCallCapability.access).
|
|
2902
3621
|
* @public
|
|
2903
3622
|
*/
|
|
2904
3623
|
access?: AgentAccess | undefined;
|
|
@@ -2963,6 +3682,25 @@ export interface DeleteAgentApiKeyInput {
|
|
|
2963
3682
|
*/
|
|
2964
3683
|
export interface DeleteAgentApiKeyOutput {
|
|
2965
3684
|
}
|
|
3685
|
+
/**
|
|
3686
|
+
* @public
|
|
3687
|
+
*/
|
|
3688
|
+
export interface DeletePronunciationDictionaryInput {
|
|
3689
|
+
company?: string | undefined;
|
|
3690
|
+
/**
|
|
3691
|
+
* BCP-47 language tag, optionally with a region subtag: 'en', 'en-US', 'pt-BR'. Deliberately a
|
|
3692
|
+
* constrained string rather than an enum: the offerable set is a property of the selected
|
|
3693
|
+
* transcription vendor and changes with it, so an enumeration here would cap the set at whatever
|
|
3694
|
+
* was known when the model was released.
|
|
3695
|
+
* @public
|
|
3696
|
+
*/
|
|
3697
|
+
code: string;
|
|
3698
|
+
}
|
|
3699
|
+
/**
|
|
3700
|
+
* @public
|
|
3701
|
+
*/
|
|
3702
|
+
export interface DeletePronunciationDictionaryOutput {
|
|
3703
|
+
}
|
|
2966
3704
|
/**
|
|
2967
3705
|
* @public
|
|
2968
3706
|
*/
|
|
@@ -3034,7 +3772,7 @@ export interface ListAgentApiKeysOutput {
|
|
|
3034
3772
|
export interface ListAgentsInput {
|
|
3035
3773
|
company?: string | undefined;
|
|
3036
3774
|
/**
|
|
3037
|
-
* Only agents that have this channel enabled (voice / chat / assistant
|
|
3775
|
+
* Only agents that have this channel enabled (voice / chat / assistant).
|
|
3038
3776
|
* @public
|
|
3039
3777
|
*/
|
|
3040
3778
|
channel?: ChannelType | undefined;
|
|
@@ -3068,7 +3806,7 @@ export interface ListAgentsOutput {
|
|
|
3068
3806
|
export interface ListAgentsNamesInput {
|
|
3069
3807
|
company?: string | undefined;
|
|
3070
3808
|
/**
|
|
3071
|
-
* A channel an agent can serve (see AgentChannels for enablement). Also the runtime channel recorded by the channel runtimes / wilma-traces.
|
|
3809
|
+
* A channel an agent can serve (see AgentChannels for enablement). Also the runtime channel recorded by the channel runtimes / wilma-traces. A background task has no delivery surface and therefore no channel.
|
|
3072
3810
|
* @public
|
|
3073
3811
|
*/
|
|
3074
3812
|
channel?: ChannelType | undefined;
|
|
@@ -3103,6 +3841,72 @@ export interface ListAgentVersionsOutput {
|
|
|
3103
3841
|
*/
|
|
3104
3842
|
nextCursor?: string | undefined;
|
|
3105
3843
|
}
|
|
3844
|
+
/**
|
|
3845
|
+
* @public
|
|
3846
|
+
*/
|
|
3847
|
+
export interface ListPronunciationDictionariesInput {
|
|
3848
|
+
company?: string | undefined;
|
|
3849
|
+
/**
|
|
3850
|
+
* Page size. ABSENT MEANS EVERY DICTIONARY — see the operation's documentation.
|
|
3851
|
+
* @public
|
|
3852
|
+
*/
|
|
3853
|
+
limit?: number | undefined;
|
|
3854
|
+
/**
|
|
3855
|
+
* Opaque cursor returned by a previous page; pass it back to fetch the next page.
|
|
3856
|
+
* @public
|
|
3857
|
+
*/
|
|
3858
|
+
cursor?: string | undefined;
|
|
3859
|
+
}
|
|
3860
|
+
/**
|
|
3861
|
+
* Every pronunciation rule a company has written for one language.
|
|
3862
|
+
* @public
|
|
3863
|
+
*/
|
|
3864
|
+
export interface PronunciationDictionary {
|
|
3865
|
+
id: string;
|
|
3866
|
+
/**
|
|
3867
|
+
* BCP-47 code with locale, e.g. 'en-US'. Unique per company — this is the link.
|
|
3868
|
+
* @public
|
|
3869
|
+
*/
|
|
3870
|
+
code: string;
|
|
3871
|
+
/**
|
|
3872
|
+
* Pronunciation rules for one language.
|
|
3873
|
+
*
|
|
3874
|
+
* BOUNDED, and the bound is not decoration. Both runtimes compile every rule of a language into
|
|
3875
|
+
* a SINGLE alternating regular expression, so the cost is the pattern's total size: measured
|
|
3876
|
+
* against the real escaping and matching logic, 1,000 rules cost ~0.9 s of CPU per synthesized
|
|
3877
|
+
* sentence, 5,000 cost ~4.9 s, and around 10,000 `new RegExp` throws V8's pattern-size error.
|
|
3878
|
+
*
|
|
3879
|
+
* 200 is far above any real use — a product glossary is a handful of names — and far below where
|
|
3880
|
+
* either cost begins. Found by a security review.
|
|
3881
|
+
* NO LOWER BOUND on `phrase` or `as`, deliberately. Both consoles add an EMPTY rule row the
|
|
3882
|
+
* moment someone clicks 'Add pronunciation', so a `min: 1` would make saving an agent with a
|
|
3883
|
+
* half-typed row fail entirely — and the runtime already ignores a rule with no phrase. Dropping
|
|
3884
|
+
* blank rows belongs in the consoles' save filters, not in a refusal here.
|
|
3885
|
+
* @public
|
|
3886
|
+
*/
|
|
3887
|
+
rules: VoicePronunciation[];
|
|
3888
|
+
/**
|
|
3889
|
+
* ISO-8601 timestamp with millisecond precision, e.g. '2026-07-10T14:12:30.123Z'.
|
|
3890
|
+
* @public
|
|
3891
|
+
*/
|
|
3892
|
+
updatedAt: string;
|
|
3893
|
+
/**
|
|
3894
|
+
* Who performed an action: an interactive user, an API key or an internal service.
|
|
3895
|
+
* @public
|
|
3896
|
+
*/
|
|
3897
|
+
updatedBy: Actor;
|
|
3898
|
+
}
|
|
3899
|
+
/**
|
|
3900
|
+
* @public
|
|
3901
|
+
*/
|
|
3902
|
+
export interface ListPronunciationDictionariesOutput {
|
|
3903
|
+
dictionaries: PronunciationDictionary[];
|
|
3904
|
+
/**
|
|
3905
|
+
* Absent on the last page, and always absent when `limit` was not sent — there is then nothing left to continue from.
|
|
3906
|
+
* @public
|
|
3907
|
+
*/
|
|
3908
|
+
nextCursor?: string | undefined;
|
|
3909
|
+
}
|
|
3106
3910
|
/**
|
|
3107
3911
|
* @public
|
|
3108
3912
|
*/
|
|
@@ -3153,6 +3957,65 @@ export interface PutAgentDeploymentOutput {
|
|
|
3153
3957
|
*/
|
|
3154
3958
|
deployment: AgentDeploymentRoute[];
|
|
3155
3959
|
}
|
|
3960
|
+
/**
|
|
3961
|
+
* @public
|
|
3962
|
+
*/
|
|
3963
|
+
export interface PutPronunciationDictionaryInput {
|
|
3964
|
+
company?: string | undefined;
|
|
3965
|
+
/**
|
|
3966
|
+
* BCP-47 language tag, optionally with a region subtag: 'en', 'en-US', 'pt-BR'. Deliberately a
|
|
3967
|
+
* constrained string rather than an enum: the offerable set is a property of the selected
|
|
3968
|
+
* transcription vendor and changes with it, so an enumeration here would cap the set at whatever
|
|
3969
|
+
* was known when the model was released.
|
|
3970
|
+
* @public
|
|
3971
|
+
*/
|
|
3972
|
+
code: string;
|
|
3973
|
+
/**
|
|
3974
|
+
* Pronunciation rules for one language.
|
|
3975
|
+
*
|
|
3976
|
+
* BOUNDED, and the bound is not decoration. Both runtimes compile every rule of a language into
|
|
3977
|
+
* a SINGLE alternating regular expression, so the cost is the pattern's total size: measured
|
|
3978
|
+
* against the real escaping and matching logic, 1,000 rules cost ~0.9 s of CPU per synthesized
|
|
3979
|
+
* sentence, 5,000 cost ~4.9 s, and around 10,000 `new RegExp` throws V8's pattern-size error.
|
|
3980
|
+
*
|
|
3981
|
+
* 200 is far above any real use — a product glossary is a handful of names — and far below where
|
|
3982
|
+
* either cost begins. Found by a security review.
|
|
3983
|
+
* NO LOWER BOUND on `phrase` or `as`, deliberately. Both consoles add an EMPTY rule row the
|
|
3984
|
+
* moment someone clicks 'Add pronunciation', so a `min: 1` would make saving an agent with a
|
|
3985
|
+
* half-typed row fail entirely — and the runtime already ignores a rule with no phrase. Dropping
|
|
3986
|
+
* blank rows belongs in the consoles' save filters, not in a refusal here.
|
|
3987
|
+
* @public
|
|
3988
|
+
*/
|
|
3989
|
+
rules: VoicePronunciation[];
|
|
3990
|
+
/**
|
|
3991
|
+
* Precondition: the `updatedAt` of the dictionary this edit was made against, echoed back
|
|
3992
|
+
* from the PronunciationDictionary the caller read. When it does not match the stored value
|
|
3993
|
+
* the write is refused with RevisionConflictException and the caller re-reads rather than
|
|
3994
|
+
* overwriting an edit it never saw.
|
|
3995
|
+
*
|
|
3996
|
+
* A TIMESTAMP RATHER THAN AN INTEGER REVISION, unlike UpdateAgent: the dictionary already
|
|
3997
|
+
* carries `updatedAt` on every read, so the round trip exists today and no stored record
|
|
3998
|
+
* needs a new field to take part. The meaning is UpdateAgent's meaning — 'based on the
|
|
3999
|
+
* version I read' — and the error is the same one.
|
|
4000
|
+
*
|
|
4001
|
+
* OPTIONAL, and ABSENCE MEANS LAST-WRITE-WINS: this operation shipped without a precondition,
|
|
4002
|
+
* so making it mandatory would break every existing caller for a guarantee they can opt into.
|
|
4003
|
+
* RevisionConflictException carries no `currentRevision` here — this resource is versioned by
|
|
4004
|
+
* its timestamp, and the current one is on the dictionary a re-read returns.
|
|
4005
|
+
* @public
|
|
4006
|
+
*/
|
|
4007
|
+
expectedUpdatedAt?: string | undefined;
|
|
4008
|
+
}
|
|
4009
|
+
/**
|
|
4010
|
+
* @public
|
|
4011
|
+
*/
|
|
4012
|
+
export interface PutPronunciationDictionaryOutput {
|
|
4013
|
+
/**
|
|
4014
|
+
* Every pronunciation rule a company has written for one language.
|
|
4015
|
+
* @public
|
|
4016
|
+
*/
|
|
4017
|
+
dictionary: PronunciationDictionary;
|
|
4018
|
+
}
|
|
3156
4019
|
/**
|
|
3157
4020
|
* @public
|
|
3158
4021
|
*/
|
|
@@ -3232,8 +4095,9 @@ export interface UpdateAgentInput {
|
|
|
3232
4095
|
/**
|
|
3233
4096
|
* Who is allowed to use the agent. There is no view/edit dimension — access solely grants the ability to use the agent.
|
|
3234
4097
|
* Per channel: on `chat` and `assistant` agents `grants` govern which colleagues can use the agent; on `voice` agents `grants`
|
|
3235
|
-
* are ignored (inbound calls are routed by the PBX dialplan, and data ACL is the agent-level `settings.pbxGroupId`)
|
|
3236
|
-
* access is not used — invocation access is configured per reference on the calling agent
|
|
4098
|
+
* are ignored (inbound calls are routed by the PBX dialplan, and data ACL is the agent-level `settings.pbxGroupId`). When an agent is
|
|
4099
|
+
* invoked as a background task its agent-level access is not used — invocation access is configured per reference on the calling agent
|
|
4100
|
+
* (see AgentCallCapability.access).
|
|
3237
4101
|
* @public
|
|
3238
4102
|
*/
|
|
3239
4103
|
access?: AgentAccess | undefined;
|