@wildix/wilma-agents-client 1.0.28 → 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.
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 +19 -7
  7. package/dist-cjs/schemas/schemas_0.js +233 -84
  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 +18 -6
  14. package/dist-es/schemas/schemas_0.js +230 -81
  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 -32
  18. package/dist-types/commands/DeletePronunciationDictionaryCommand.d.ts +82 -0
  19. package/dist-types/commands/GetAgentCommand.d.ts +106 -16
  20. package/dist-types/commands/GetAgentVersionCommand.d.ts +106 -16
  21. package/dist-types/commands/ListAgentsCommand.d.ts +107 -17
  22. package/dist-types/commands/ListAgentsNamesCommand.d.ts +18 -2
  23. package/dist-types/commands/ListPronunciationDictionariesCommand.d.ts +103 -0
  24. package/dist-types/commands/PublishAgentVersionCommand.d.ts +106 -16
  25. package/dist-types/commands/PutPronunciationDictionaryCommand.d.ts +117 -0
  26. package/dist-types/commands/RestoreAgentVersionToDraftCommand.d.ts +106 -16
  27. package/dist-types/commands/UpdateAgentCommand.d.ts +212 -32
  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 +68 -26
  31. package/dist-types/models/models_0.d.ts +618 -49
  32. package/dist-types/schemas/schemas_0.d.ts +18 -1
  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;
@@ -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 (typically a workflow agent) as a dedicated execution with its own state. The called agent runs independently and returns its result.
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 where a workflow agent's
401
- * invocation access is configured, since workflow agents have no agent-level access of their own.
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 (typically a workflow agent) as a dedicated execution with its own state. The called agent runs independently and returns its result.
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 {
@@ -1557,7 +1969,7 @@ export interface AgentGuardrailCheck {
1557
1969
  */
1558
1970
  sensitivity?: AgentGuardrailSensitivity | undefined;
1559
1971
  /**
1560
- * Overrides AgentGuardrailInput.action for this check alone.
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.
1561
1973
  * @public
1562
1974
  */
1563
1975
  action?: AgentGuardrailAction | undefined;
@@ -1570,6 +1982,10 @@ export interface AgentGuardrailCheck {
1570
1982
  * things before and after a platform release, invisibly to the tenant who published it. Listing the checks
1571
1983
  * costs a few lines in a document the console writes anyway, and the published version then states exactly
1572
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.
1573
1989
  * @public
1574
1990
  */
1575
1991
  export interface AgentGuardrailInput {
@@ -1583,11 +1999,6 @@ export interface AgentGuardrailInput {
1583
1999
  * @public
1584
2000
  */
1585
2001
  model?: string | undefined;
1586
- /**
1587
- * Action for checks that declare none. Defaults to a block.
1588
- * @public
1589
- */
1590
- action?: AgentGuardrailAction | undefined;
1591
2002
  /**
1592
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.
1593
2004
  * @public
@@ -1617,6 +2028,10 @@ export interface AgentGuardrails {
1617
2028
  * things before and after a platform release, invisibly to the tenant who published it. Listing the checks
1618
2029
  * costs a few lines in a document the console writes anyway, and the published version then states exactly
1619
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.
1620
2035
  * @public
1621
2036
  */
1622
2037
  input?: AgentGuardrailInput | undefined;
@@ -2747,18 +3162,6 @@ export interface AgentAiEngine {
2747
3162
  capabilities?: AgentCapability[] | undefined;
2748
3163
  variables?: AgentVariable[] | undefined;
2749
3164
  }
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
3165
  /**
2763
3166
  * Bring-your-own backend over SQS: turns are forwarded to the queue, replies are posted back via the API.
2764
3167
  * @public
@@ -2890,8 +3293,9 @@ export interface Agent {
2890
3293
  /**
2891
3294
  * Who is allowed to use the agent. There is no view/edit dimension — access solely grants the ability to use the agent.
2892
3295
  * 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).
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).
2895
3299
  * @public
2896
3300
  */
2897
3301
  access?: AgentAccess | undefined;
@@ -3005,25 +3409,44 @@ export interface AgentDefinitionSnapshot {
3005
3409
  /**
3006
3410
  * Who is allowed to use the agent. There is no view/edit dimension — access solely grants the ability to use the agent.
3007
3411
  * 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).
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).
3010
3415
  * @public
3011
3416
  */
3012
3417
  access?: AgentAccess | undefined;
3013
3418
  }
3014
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.
3015
3423
  * @public
3016
3424
  */
3017
3425
  export interface AgentInfo {
3018
3426
  id: string;
3019
3427
  name: string;
3428
+ /**
3429
+ * Avatar URL, from the agent definition.
3430
+ * @public
3431
+ */
3432
+ picture?: string | undefined;
3020
3433
  category?: string | undefined;
3021
3434
  status: AgentStatus;
3022
3435
  /**
3023
- * The channels this agent serves (voice / chat / assistant / workflow).
3436
+ * The channels this agent serves (voice / chat / assistant).
3024
3437
  * @public
3025
3438
  */
3026
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;
3027
3450
  /**
3028
3451
  * Published agent version number. Monotonic within an agent's version history, starting at 1.
3029
3452
  * @public
@@ -3192,8 +3615,9 @@ export interface CreateAgentInput {
3192
3615
  /**
3193
3616
  * Who is allowed to use the agent. There is no view/edit dimension — access solely grants the ability to use the agent.
3194
3617
  * 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).
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).
3197
3621
  * @public
3198
3622
  */
3199
3623
  access?: AgentAccess | undefined;
@@ -3258,6 +3682,25 @@ export interface DeleteAgentApiKeyInput {
3258
3682
  */
3259
3683
  export interface DeleteAgentApiKeyOutput {
3260
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
+ }
3261
3704
  /**
3262
3705
  * @public
3263
3706
  */
@@ -3329,7 +3772,7 @@ export interface ListAgentApiKeysOutput {
3329
3772
  export interface ListAgentsInput {
3330
3773
  company?: string | undefined;
3331
3774
  /**
3332
- * Only agents that have this channel enabled (voice / chat / assistant / workflow).
3775
+ * Only agents that have this channel enabled (voice / chat / assistant).
3333
3776
  * @public
3334
3777
  */
3335
3778
  channel?: ChannelType | undefined;
@@ -3363,7 +3806,7 @@ export interface ListAgentsOutput {
3363
3806
  export interface ListAgentsNamesInput {
3364
3807
  company?: string | undefined;
3365
3808
  /**
3366
- * 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.
3367
3810
  * @public
3368
3811
  */
3369
3812
  channel?: ChannelType | undefined;
@@ -3398,6 +3841,72 @@ export interface ListAgentVersionsOutput {
3398
3841
  */
3399
3842
  nextCursor?: string | undefined;
3400
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
+ }
3401
3910
  /**
3402
3911
  * @public
3403
3912
  */
@@ -3448,6 +3957,65 @@ export interface PutAgentDeploymentOutput {
3448
3957
  */
3449
3958
  deployment: AgentDeploymentRoute[];
3450
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
+ }
3451
4019
  /**
3452
4020
  * @public
3453
4021
  */
@@ -3527,8 +4095,9 @@ export interface UpdateAgentInput {
3527
4095
  /**
3528
4096
  * Who is allowed to use the agent. There is no view/edit dimension — access solely grants the ability to use the agent.
3529
4097
  * 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).
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).
3532
4101
  * @public
3533
4102
  */
3534
4103
  access?: AgentAccess | undefined;