@wildix/wilma-agents-client 1.0.28 → 1.0.30

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 (33) 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 +20 -7
  7. package/dist-cjs/schemas/schemas_0.js +231 -76
  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 +19 -6
  14. package/dist-es/schemas/schemas_0.js +228 -73
  15. package/dist-types/WilmaAgents.d.ts +25 -3
  16. package/dist-types/WilmaAgentsClient.d.ts +8 -5
  17. package/dist-types/commands/CreateAgentCommand.d.ts +212 -30
  18. package/dist-types/commands/DeletePronunciationDictionaryCommand.d.ts +82 -0
  19. package/dist-types/commands/GetAgentCommand.d.ts +106 -15
  20. package/dist-types/commands/GetAgentVersionCommand.d.ts +106 -15
  21. package/dist-types/commands/ListAgentsCommand.d.ts +106 -15
  22. package/dist-types/commands/ListAgentsNamesCommand.d.ts +16 -0
  23. package/dist-types/commands/ListPronunciationDictionariesCommand.d.ts +103 -0
  24. package/dist-types/commands/PublishAgentVersionCommand.d.ts +106 -15
  25. package/dist-types/commands/PutPronunciationDictionaryCommand.d.ts +117 -0
  26. package/dist-types/commands/RestoreAgentVersionToDraftCommand.d.ts +106 -15
  27. package/dist-types/commands/UpdateAgentCommand.d.ts +212 -30
  28. package/dist-types/commands/index.d.ts +3 -0
  29. package/dist-types/index.d.ts +3 -3
  30. package/dist-types/models/enums.d.ts +72 -26
  31. package/dist-types/models/models_0.d.ts +620 -40
  32. package/dist-types/schemas/schemas_0.d.ts +18 -0
  33. package/package.json +2 -2
@@ -1,5 +1,5 @@
1
1
  import type { DocumentType as __DocumentType } from "@smithy/types";
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, 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`); on `workflow` agents agent-level
44
- * access is not used — invocation access is configured per reference on the calling agent (see AgentCallCapability.access).
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;
@@ -239,7 +578,7 @@ export interface VoiceChannelSettings {
239
578
  callerMetadata?: VoiceCallerMetadataSettings | undefined;
240
579
  }
241
580
  /**
242
- * Workflow channel settings. Currently empty; presence enables the workflow channel.
581
+ * Enablement only: a workflow agent has no delivery surface to configure. Present so `channels` can express that the agent runs as background tasks.
243
582
  * @public
244
583
  */
245
584
  export interface WorkflowChannelSettings {
@@ -257,7 +596,7 @@ export interface AgentChannels {
257
596
  chat?: ChatChannelSettings | undefined;
258
597
  assistant?: AssistantChannelSettings | undefined;
259
598
  /**
260
- * Workflow channel settings. Currently empty; presence enables the workflow channel.
599
+ * Enablement only: a workflow agent has no delivery surface to configure. Present so `channels` can express that the agent runs as background tasks.
261
600
  * @public
262
601
  */
263
602
  workflow?: WorkflowChannelSettings | undefined;
@@ -384,7 +723,7 @@ export interface AgentToolVariable {
384
723
  handler?: AgentToolVariableHandler | undefined;
385
724
  }
386
725
  /**
387
- * Invoke another agent (typically a workflow agent) as a dedicated execution with its own state. The called agent runs independently and returns its result.
726
+ * Invoke another agent as a dedicated execution with its own state. The called agent runs independently and returns its result.
388
727
  * @public
389
728
  */
390
729
  export interface AgentCallCapability {
@@ -397,12 +736,19 @@ export interface AgentCallCapability {
397
736
  /**
398
737
  * Who may invoke this sub-agent tool. Evaluated per invoking user when the calling agent (chat / assistant) builds its
399
738
  * 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 where a workflow agent's
401
- * invocation access is configured, since workflow agents have no agent-level access of their own.
739
+ * When omitted, the tool is available to everyone who can use the calling agent. This is the only place invocation
740
+ * access is configured — the called agent's own access settings do not apply to being invoked.
402
741
  * @public
403
742
  */
404
743
  access?: AgentAccess | undefined;
405
744
  variables?: AgentToolVariable[] | undefined;
745
+ /**
746
+ * Channels this capability is offered on. Absent or empty — the default — means every channel the agent serves
747
+ * that can honour it. Listing channels narrows that set and never widens it: a `transfer` listed for `chat` is
748
+ * still ignored there, because the chat channel has no call to transfer.
749
+ * @public
750
+ */
751
+ channels?: ChannelType[] | undefined;
406
752
  }
407
753
  /**
408
754
  * Comment annotation emitted after a tool completes.
@@ -587,6 +933,13 @@ export interface AgentConnectorCapability {
587
933
  * @public
588
934
  */
589
935
  approval?: AgentToolApproval | undefined;
936
+ /**
937
+ * Channels this capability is offered on. Absent or empty — the default — means every channel the agent serves
938
+ * that can honour it. Listing channels narrows that set and never widens it: a `transfer` listed for `chat` is
939
+ * still ignored there, because the chat channel has no call to transfer.
940
+ * @public
941
+ */
942
+ channels?: ChannelType[] | undefined;
590
943
  annotations?: AgentToolAnnotation[] | undefined;
591
944
  }
592
945
  /**
@@ -614,6 +967,13 @@ export interface AgentDelegationCapability {
614
967
  * @public
615
968
  */
616
969
  agentVersion?: number | undefined;
970
+ /**
971
+ * Channels this capability is offered on. Absent or empty — the default — means every channel the agent serves
972
+ * that can honour it. Listing channels narrows that set and never widens it: a `transfer` listed for `chat` is
973
+ * still ignored there, because the chat channel has no call to transfer.
974
+ * @public
975
+ */
976
+ channels?: ChannelType[] | undefined;
617
977
  annotations?: AgentToolAnnotation[] | undefined;
618
978
  }
619
979
  /**
@@ -664,6 +1024,13 @@ export interface AgentHandoverCapability {
664
1024
  */
665
1025
  silent?: boolean | undefined;
666
1026
  pipeline?: AgentHandoverPipeline | undefined;
1027
+ /**
1028
+ * Channels this capability is offered on. Absent or empty — the default — means every channel the agent serves
1029
+ * that can honour it. Listing channels narrows that set and never widens it: a `transfer` listed for `chat` is
1030
+ * still ignored there, because the chat channel has no call to transfer.
1031
+ * @public
1032
+ */
1033
+ channels?: ChannelType[] | undefined;
667
1034
  annotations?: AgentToolAnnotation[] | undefined;
668
1035
  }
669
1036
  /**
@@ -693,6 +1060,13 @@ export interface AgentHangupCapability {
693
1060
  */
694
1061
  description?: string | undefined;
695
1062
  pipeline?: AgentHangupPipeline | undefined;
1063
+ /**
1064
+ * Channels this capability is offered on. Absent or empty — the default — means every channel the agent serves
1065
+ * that can honour it. Listing channels narrows that set and never widens it: a `transfer` listed for `chat` is
1066
+ * still ignored there, because the chat channel has no call to transfer.
1067
+ * @public
1068
+ */
1069
+ channels?: ChannelType[] | undefined;
696
1070
  annotations?: AgentToolAnnotation[] | undefined;
697
1071
  }
698
1072
  /**
@@ -705,6 +1079,13 @@ export interface AgentKnowledgeBase {
705
1079
  * @public
706
1080
  */
707
1081
  instructions?: string | undefined;
1082
+ /**
1083
+ * Channels this capability is offered on. Absent or empty — the default — means every channel the agent serves
1084
+ * that can honour it. Listing channels narrows that set and never widens it: a `transfer` listed for `chat` is
1085
+ * still ignored there, because the chat channel has no call to transfer.
1086
+ * @public
1087
+ */
1088
+ channels?: ChannelType[] | undefined;
708
1089
  annotations?: AgentToolAnnotation[] | undefined;
709
1090
  }
710
1091
  /**
@@ -755,7 +1136,7 @@ export interface AgentVercelSandboxOptions {
755
1136
  allowedDomains?: string[] | undefined;
756
1137
  }
757
1138
  /**
758
- * Embedded sandbox: shell + file tools backed by an execution environment.
1139
+ * 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
1140
  * @public
760
1141
  */
761
1142
  export type AgentSandboxCapability = AgentSandboxCapability.SnapshotMember | AgentSandboxCapability.VercelMember | AgentSandboxCapability.$UnknownMember;
@@ -809,6 +1190,13 @@ export interface AgentSuggestionsCapability {
809
1190
  * @public
810
1191
  */
811
1192
  name?: string | undefined;
1193
+ /**
1194
+ * Channels this capability is offered on. Absent or empty — the default — means every channel the agent serves
1195
+ * that can honour it. Listing channels narrows that set and never widens it: a `transfer` listed for `chat` is
1196
+ * still ignored there, because the chat channel has no call to transfer.
1197
+ * @public
1198
+ */
1199
+ channels?: ChannelType[] | undefined;
812
1200
  annotations?: AgentToolAnnotation[] | undefined;
813
1201
  }
814
1202
  /**
@@ -920,6 +1308,13 @@ export interface AgentTool {
920
1308
  * @public
921
1309
  */
922
1310
  approval?: AgentToolApproval | undefined;
1311
+ /**
1312
+ * Channels this capability is offered on. Absent or empty — the default — means every channel the agent serves
1313
+ * that can honour it. Listing channels narrows that set and never widens it: a `transfer` listed for `chat` is
1314
+ * still ignored there, because the chat channel has no call to transfer.
1315
+ * @public
1316
+ */
1317
+ channels?: ChannelType[] | undefined;
923
1318
  annotations?: AgentToolAnnotation[] | undefined;
924
1319
  }
925
1320
  /**
@@ -960,6 +1355,13 @@ export interface AgentTransferCapability {
960
1355
  */
961
1356
  extension?: string | undefined;
962
1357
  pipeline?: AgentTransferPipeline | undefined;
1358
+ /**
1359
+ * Channels this capability is offered on. Absent or empty — the default — means every channel the agent serves
1360
+ * that can honour it. Listing channels narrows that set and never widens it: a `transfer` listed for `chat` is
1361
+ * still ignored there, because the chat channel has no call to transfer.
1362
+ * @public
1363
+ */
1364
+ channels?: ChannelType[] | undefined;
963
1365
  annotations?: AgentToolAnnotation[] | undefined;
964
1366
  }
965
1367
  /**
@@ -982,6 +1384,13 @@ export interface AgentWaitCapability {
982
1384
  * @public
983
1385
  */
984
1386
  message?: string | undefined;
1387
+ /**
1388
+ * Channels this capability is offered on. Absent or empty — the default — means every channel the agent serves
1389
+ * that can honour it. Listing channels narrows that set and never widens it: a `transfer` listed for `chat` is
1390
+ * still ignored there, because the chat channel has no call to transfer.
1391
+ * @public
1392
+ */
1393
+ channels?: ChannelType[] | undefined;
985
1394
  annotations?: AgentToolAnnotation[] | undefined;
986
1395
  }
987
1396
  /**
@@ -994,6 +1403,13 @@ export interface AgentWebFetchCapability {
994
1403
  * @public
995
1404
  */
996
1405
  allowedDomains?: string[] | undefined;
1406
+ /**
1407
+ * Channels this capability is offered on. Absent or empty — the default — means every channel the agent serves
1408
+ * that can honour it. Listing channels narrows that set and never widens it: a `transfer` listed for `chat` is
1409
+ * still ignored there, because the chat channel has no call to transfer.
1410
+ * @public
1411
+ */
1412
+ channels?: ChannelType[] | undefined;
997
1413
  }
998
1414
  /**
999
1415
  * @public
@@ -1028,6 +1444,13 @@ export interface AgentWebSearchCapability {
1028
1444
  */
1029
1445
  allowedDomains?: string[] | undefined;
1030
1446
  userLocation?: WebSearchUserLocation | undefined;
1447
+ /**
1448
+ * Channels this capability is offered on. Absent or empty — the default — means every channel the agent serves
1449
+ * that can honour it. Listing channels narrows that set and never widens it: a `transfer` listed for `chat` is
1450
+ * still ignored there, because the chat channel has no call to transfer.
1451
+ * @public
1452
+ */
1453
+ channels?: ChannelType[] | undefined;
1031
1454
  }
1032
1455
  /**
1033
1456
  * @public
@@ -1093,7 +1516,7 @@ export declare namespace AgentCapability {
1093
1516
  $unknown?: never;
1094
1517
  }
1095
1518
  /**
1096
- * Embedded sandbox: shell + file tools backed by an execution environment.
1519
+ * 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
1520
  * @public
1098
1521
  */
1099
1522
  interface SandboxMember {
@@ -1153,7 +1576,7 @@ export declare namespace AgentCapability {
1153
1576
  $unknown?: never;
1154
1577
  }
1155
1578
  /**
1156
- * Invoke another agent (typically a workflow agent) as a dedicated execution with its own state. The called agent runs independently and returns its result.
1579
+ * Invoke another agent as a dedicated execution with its own state. The called agent runs independently and returns its result.
1157
1580
  * @public
1158
1581
  */
1159
1582
  interface AgentMember {
@@ -1557,7 +1980,7 @@ export interface AgentGuardrailCheck {
1557
1980
  */
1558
1981
  sensitivity?: AgentGuardrailSensitivity | undefined;
1559
1982
  /**
1560
- * Overrides AgentGuardrailInput.action for this check alone.
1983
+ * 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.
1561
1984
  * @public
1562
1985
  */
1563
1986
  action?: AgentGuardrailAction | undefined;
@@ -1570,6 +1993,10 @@ export interface AgentGuardrailCheck {
1570
1993
  * things before and after a platform release, invisibly to the tenant who published it. Listing the checks
1571
1994
  * costs a few lines in a document the console writes anyway, and the published version then states exactly
1572
1995
  * what it enforces.
1996
+ *
1997
+ * There is also no set-level default action. One field standing behind every check reads as a convenience
1998
+ * and hides the thing a reader most needs to see: what a given check will actually do. A check's action is
1999
+ * its own or its preset's, and both are visible on the check.
1573
2000
  * @public
1574
2001
  */
1575
2002
  export interface AgentGuardrailInput {
@@ -1583,11 +2010,6 @@ export interface AgentGuardrailInput {
1583
2010
  * @public
1584
2011
  */
1585
2012
  model?: string | undefined;
1586
- /**
1587
- * Action for checks that declare none. Defaults to a block.
1588
- * @public
1589
- */
1590
- action?: AgentGuardrailAction | undefined;
1591
2013
  /**
1592
2014
  * 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.
1593
2015
  * @public
@@ -1617,6 +2039,10 @@ export interface AgentGuardrails {
1617
2039
  * things before and after a platform release, invisibly to the tenant who published it. Listing the checks
1618
2040
  * costs a few lines in a document the console writes anyway, and the published version then states exactly
1619
2041
  * what it enforces.
2042
+ *
2043
+ * There is also no set-level default action. One field standing behind every check reads as a convenience
2044
+ * and hides the thing a reader most needs to see: what a given check will actually do. A check's action is
2045
+ * its own or its preset's, and both are visible on the check.
1620
2046
  * @public
1621
2047
  */
1622
2048
  input?: AgentGuardrailInput | undefined;
@@ -2747,18 +3173,6 @@ export interface AgentAiEngine {
2747
3173
  capabilities?: AgentCapability[] | undefined;
2748
3174
  variables?: AgentVariable[] | undefined;
2749
3175
  }
2750
- /**
2751
- * A reference to a stored secret, held by other services in place of the value.
2752
- * Resolved server-to-server via GetSecretValue at execution time — always to the current value.
2753
- * @public
2754
- */
2755
- export interface SecretRef {
2756
- /**
2757
- * Unique identifier of a secret.
2758
- * @public
2759
- */
2760
- id: string;
2761
- }
2762
3176
  /**
2763
3177
  * Bring-your-own backend over SQS: turns are forwarded to the queue, replies are posted back via the API.
2764
3178
  * @public
@@ -2890,8 +3304,9 @@ export interface Agent {
2890
3304
  /**
2891
3305
  * Who is allowed to use the agent. There is no view/edit dimension — access solely grants the ability to use the agent.
2892
3306
  * Per channel: on `chat` and `assistant` agents `grants` govern which colleagues can use the agent; on `voice` agents `grants`
2893
- * are ignored (inbound calls are routed by the PBX dialplan, and data ACL is the agent-level `settings.pbxGroupId`); on `workflow` agents agent-level
2894
- * access is not used — invocation access is configured per reference on the calling agent (see AgentCallCapability.access).
3307
+ * are ignored (inbound calls are routed by the PBX dialplan, and data ACL is the agent-level `settings.pbxGroupId`). When an agent is
3308
+ * invoked as a background task its agent-level access is not used — invocation access is configured per reference on the calling agent
3309
+ * (see AgentCallCapability.access).
2895
3310
  * @public
2896
3311
  */
2897
3312
  access?: AgentAccess | undefined;
@@ -3005,25 +3420,44 @@ export interface AgentDefinitionSnapshot {
3005
3420
  /**
3006
3421
  * Who is allowed to use the agent. There is no view/edit dimension — access solely grants the ability to use the agent.
3007
3422
  * Per channel: on `chat` and `assistant` agents `grants` govern which colleagues can use the agent; on `voice` agents `grants`
3008
- * are ignored (inbound calls are routed by the PBX dialplan, and data ACL is the agent-level `settings.pbxGroupId`); on `workflow` agents agent-level
3009
- * access is not used — invocation access is configured per reference on the calling agent (see AgentCallCapability.access).
3423
+ * are ignored (inbound calls are routed by the PBX dialplan, and data ACL is the agent-level `settings.pbxGroupId`). When an agent is
3424
+ * invoked as a background task its agent-level access is not used — invocation access is configured per reference on the calling agent
3425
+ * (see AgentCallCapability.access).
3010
3426
  * @public
3011
3427
  */
3012
3428
  access?: AgentAccess | undefined;
3013
3429
  }
3014
3430
  /**
3431
+ * What a client needs to render an agent, and nothing more: AgentInfo is the end-user view of an agent,
3432
+ * served by the channel runtimes (e.g. GetAgent / GetSettings on wilma-assistant) to callers who must not
3433
+ * see instructions, capabilities or access rules. Everything here is safe to show to whoever can use the agent.
3015
3434
  * @public
3016
3435
  */
3017
3436
  export interface AgentInfo {
3018
3437
  id: string;
3019
3438
  name: string;
3439
+ /**
3440
+ * Avatar URL, from the agent definition.
3441
+ * @public
3442
+ */
3443
+ picture?: string | undefined;
3020
3444
  category?: string | undefined;
3021
3445
  status: AgentStatus;
3022
3446
  /**
3023
- * The channels this agent serves (voice / chat / assistant / workflow).
3447
+ * The channels this agent serves (voice / chat / assistant).
3024
3448
  * @public
3025
3449
  */
3026
3450
  channels: ChannelType[];
3451
+ /**
3452
+ * 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.
3453
+ * @public
3454
+ */
3455
+ speechConfigured?: boolean | undefined;
3456
+ /**
3457
+ * 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.
3458
+ * @public
3459
+ */
3460
+ assistant?: AssistantUiSettings | undefined;
3027
3461
  /**
3028
3462
  * Published agent version number. Monotonic within an agent's version history, starting at 1.
3029
3463
  * @public
@@ -3192,8 +3626,9 @@ export interface CreateAgentInput {
3192
3626
  /**
3193
3627
  * Who is allowed to use the agent. There is no view/edit dimension — access solely grants the ability to use the agent.
3194
3628
  * Per channel: on `chat` and `assistant` agents `grants` govern which colleagues can use the agent; on `voice` agents `grants`
3195
- * are ignored (inbound calls are routed by the PBX dialplan, and data ACL is the agent-level `settings.pbxGroupId`); on `workflow` agents agent-level
3196
- * access is not used — invocation access is configured per reference on the calling agent (see AgentCallCapability.access).
3629
+ * are ignored (inbound calls are routed by the PBX dialplan, and data ACL is the agent-level `settings.pbxGroupId`). When an agent is
3630
+ * invoked as a background task its agent-level access is not used — invocation access is configured per reference on the calling agent
3631
+ * (see AgentCallCapability.access).
3197
3632
  * @public
3198
3633
  */
3199
3634
  access?: AgentAccess | undefined;
@@ -3258,6 +3693,25 @@ export interface DeleteAgentApiKeyInput {
3258
3693
  */
3259
3694
  export interface DeleteAgentApiKeyOutput {
3260
3695
  }
3696
+ /**
3697
+ * @public
3698
+ */
3699
+ export interface DeletePronunciationDictionaryInput {
3700
+ company?: string | undefined;
3701
+ /**
3702
+ * BCP-47 language tag, optionally with a region subtag: 'en', 'en-US', 'pt-BR'. Deliberately a
3703
+ * constrained string rather than an enum: the offerable set is a property of the selected
3704
+ * transcription vendor and changes with it, so an enumeration here would cap the set at whatever
3705
+ * was known when the model was released.
3706
+ * @public
3707
+ */
3708
+ code: string;
3709
+ }
3710
+ /**
3711
+ * @public
3712
+ */
3713
+ export interface DeletePronunciationDictionaryOutput {
3714
+ }
3261
3715
  /**
3262
3716
  * @public
3263
3717
  */
@@ -3329,7 +3783,7 @@ export interface ListAgentApiKeysOutput {
3329
3783
  export interface ListAgentsInput {
3330
3784
  company?: string | undefined;
3331
3785
  /**
3332
- * Only agents that have this channel enabled (voice / chat / assistant / workflow).
3786
+ * Only agents that have this channel enabled (voice / chat / assistant).
3333
3787
  * @public
3334
3788
  */
3335
3789
  channel?: ChannelType | undefined;
@@ -3363,7 +3817,7 @@ export interface ListAgentsOutput {
3363
3817
  export interface ListAgentsNamesInput {
3364
3818
  company?: string | undefined;
3365
3819
  /**
3366
- * A channel an agent can serve (see AgentChannels for enablement). Also the runtime channel recorded by the channel runtimes / wilma-traces.
3820
+ * 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.
3367
3821
  * @public
3368
3822
  */
3369
3823
  channel?: ChannelType | undefined;
@@ -3398,6 +3852,72 @@ export interface ListAgentVersionsOutput {
3398
3852
  */
3399
3853
  nextCursor?: string | undefined;
3400
3854
  }
3855
+ /**
3856
+ * @public
3857
+ */
3858
+ export interface ListPronunciationDictionariesInput {
3859
+ company?: string | undefined;
3860
+ /**
3861
+ * Page size. ABSENT MEANS EVERY DICTIONARY — see the operation's documentation.
3862
+ * @public
3863
+ */
3864
+ limit?: number | undefined;
3865
+ /**
3866
+ * Opaque cursor returned by a previous page; pass it back to fetch the next page.
3867
+ * @public
3868
+ */
3869
+ cursor?: string | undefined;
3870
+ }
3871
+ /**
3872
+ * Every pronunciation rule a company has written for one language.
3873
+ * @public
3874
+ */
3875
+ export interface PronunciationDictionary {
3876
+ id: string;
3877
+ /**
3878
+ * BCP-47 code with locale, e.g. 'en-US'. Unique per company — this is the link.
3879
+ * @public
3880
+ */
3881
+ code: string;
3882
+ /**
3883
+ * Pronunciation rules for one language.
3884
+ *
3885
+ * BOUNDED, and the bound is not decoration. Both runtimes compile every rule of a language into
3886
+ * a SINGLE alternating regular expression, so the cost is the pattern's total size: measured
3887
+ * against the real escaping and matching logic, 1,000 rules cost ~0.9 s of CPU per synthesized
3888
+ * sentence, 5,000 cost ~4.9 s, and around 10,000 `new RegExp` throws V8's pattern-size error.
3889
+ *
3890
+ * 200 is far above any real use — a product glossary is a handful of names — and far below where
3891
+ * either cost begins. Found by a security review.
3892
+ * NO LOWER BOUND on `phrase` or `as`, deliberately. Both consoles add an EMPTY rule row the
3893
+ * moment someone clicks 'Add pronunciation', so a `min: 1` would make saving an agent with a
3894
+ * half-typed row fail entirely — and the runtime already ignores a rule with no phrase. Dropping
3895
+ * blank rows belongs in the consoles' save filters, not in a refusal here.
3896
+ * @public
3897
+ */
3898
+ rules: VoicePronunciation[];
3899
+ /**
3900
+ * ISO-8601 timestamp with millisecond precision, e.g. '2026-07-10T14:12:30.123Z'.
3901
+ * @public
3902
+ */
3903
+ updatedAt: string;
3904
+ /**
3905
+ * Who performed an action: an interactive user, an API key or an internal service.
3906
+ * @public
3907
+ */
3908
+ updatedBy: Actor;
3909
+ }
3910
+ /**
3911
+ * @public
3912
+ */
3913
+ export interface ListPronunciationDictionariesOutput {
3914
+ dictionaries: PronunciationDictionary[];
3915
+ /**
3916
+ * Absent on the last page, and always absent when `limit` was not sent — there is then nothing left to continue from.
3917
+ * @public
3918
+ */
3919
+ nextCursor?: string | undefined;
3920
+ }
3401
3921
  /**
3402
3922
  * @public
3403
3923
  */
@@ -3448,6 +3968,65 @@ export interface PutAgentDeploymentOutput {
3448
3968
  */
3449
3969
  deployment: AgentDeploymentRoute[];
3450
3970
  }
3971
+ /**
3972
+ * @public
3973
+ */
3974
+ export interface PutPronunciationDictionaryInput {
3975
+ company?: string | undefined;
3976
+ /**
3977
+ * BCP-47 language tag, optionally with a region subtag: 'en', 'en-US', 'pt-BR'. Deliberately a
3978
+ * constrained string rather than an enum: the offerable set is a property of the selected
3979
+ * transcription vendor and changes with it, so an enumeration here would cap the set at whatever
3980
+ * was known when the model was released.
3981
+ * @public
3982
+ */
3983
+ code: string;
3984
+ /**
3985
+ * Pronunciation rules for one language.
3986
+ *
3987
+ * BOUNDED, and the bound is not decoration. Both runtimes compile every rule of a language into
3988
+ * a SINGLE alternating regular expression, so the cost is the pattern's total size: measured
3989
+ * against the real escaping and matching logic, 1,000 rules cost ~0.9 s of CPU per synthesized
3990
+ * sentence, 5,000 cost ~4.9 s, and around 10,000 `new RegExp` throws V8's pattern-size error.
3991
+ *
3992
+ * 200 is far above any real use — a product glossary is a handful of names — and far below where
3993
+ * either cost begins. Found by a security review.
3994
+ * NO LOWER BOUND on `phrase` or `as`, deliberately. Both consoles add an EMPTY rule row the
3995
+ * moment someone clicks 'Add pronunciation', so a `min: 1` would make saving an agent with a
3996
+ * half-typed row fail entirely — and the runtime already ignores a rule with no phrase. Dropping
3997
+ * blank rows belongs in the consoles' save filters, not in a refusal here.
3998
+ * @public
3999
+ */
4000
+ rules: VoicePronunciation[];
4001
+ /**
4002
+ * Precondition: the `updatedAt` of the dictionary this edit was made against, echoed back
4003
+ * from the PronunciationDictionary the caller read. When it does not match the stored value
4004
+ * the write is refused with RevisionConflictException and the caller re-reads rather than
4005
+ * overwriting an edit it never saw.
4006
+ *
4007
+ * A TIMESTAMP RATHER THAN AN INTEGER REVISION, unlike UpdateAgent: the dictionary already
4008
+ * carries `updatedAt` on every read, so the round trip exists today and no stored record
4009
+ * needs a new field to take part. The meaning is UpdateAgent's meaning — 'based on the
4010
+ * version I read' — and the error is the same one.
4011
+ *
4012
+ * OPTIONAL, and ABSENCE MEANS LAST-WRITE-WINS: this operation shipped without a precondition,
4013
+ * so making it mandatory would break every existing caller for a guarantee they can opt into.
4014
+ * RevisionConflictException carries no `currentRevision` here — this resource is versioned by
4015
+ * its timestamp, and the current one is on the dictionary a re-read returns.
4016
+ * @public
4017
+ */
4018
+ expectedUpdatedAt?: string | undefined;
4019
+ }
4020
+ /**
4021
+ * @public
4022
+ */
4023
+ export interface PutPronunciationDictionaryOutput {
4024
+ /**
4025
+ * Every pronunciation rule a company has written for one language.
4026
+ * @public
4027
+ */
4028
+ dictionary: PronunciationDictionary;
4029
+ }
3451
4030
  /**
3452
4031
  * @public
3453
4032
  */
@@ -3527,8 +4106,9 @@ export interface UpdateAgentInput {
3527
4106
  /**
3528
4107
  * Who is allowed to use the agent. There is no view/edit dimension — access solely grants the ability to use the agent.
3529
4108
  * Per channel: on `chat` and `assistant` agents `grants` govern which colleagues can use the agent; on `voice` agents `grants`
3530
- * are ignored (inbound calls are routed by the PBX dialplan, and data ACL is the agent-level `settings.pbxGroupId`); on `workflow` agents agent-level
3531
- * access is not used — invocation access is configured per reference on the calling agent (see AgentCallCapability.access).
4109
+ * are ignored (inbound calls are routed by the PBX dialplan, and data ACL is the agent-level `settings.pbxGroupId`). When an agent is
4110
+ * invoked as a background task its agent-level access is not used — invocation access is configured per reference on the calling agent
4111
+ * (see AgentCallCapability.access).
3532
4112
  * @public
3533
4113
  */
3534
4114
  access?: AgentAccess | undefined;