@talqing/sdk 0.4.1 → 0.4.2

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.
@@ -87,6 +87,10 @@ export type AddVoiceResponse = {
87
87
  *
88
88
  * The whole agent: what it says, which models run it, and what it can do.
89
89
  *
90
+ * ``AgentBase`` plus the session this agent owns and the media stack that
91
+ * session runs — which is what a task, running inside someone else's session,
92
+ * has none of.
93
+ *
90
94
  * A complete definition, not a patch — whatever it omits takes that field's
91
95
  * default.
92
96
  */
@@ -113,8 +117,11 @@ export type AgentConfig = {
113
117
  handoffs?: Array<HandoffTarget>;
114
118
  /**
115
119
  * Kb Ids
120
+ *
121
+ * Knowledge bases to read from: their outline goes into the prompt and pages are fetched on demand.
116
122
  */
117
123
  kb_ids?: Array<string>;
124
+ keypad_input?: KeypadInputSpec;
118
125
  /**
119
126
  * Language
120
127
  *
@@ -125,11 +132,13 @@ export type AgentConfig = {
125
132
  /**
126
133
  * Mcps
127
134
  *
128
- * MCP servers whose tools this agent may call — each named by the integration that holds its credential, or defined inline. Which of a named server's tools may be called is the integration's own `allowed_tools`, not this list.
135
+ * MCP servers whose tools may be called — each named by the integration that holds its credential, or defined inline. Which of a named server's tools may be called is the integration's own `allowed_tools`, not this list.
129
136
  */
130
137
  mcps?: Array<McpSelection>;
131
138
  /**
132
139
  * Name
140
+ *
141
+ * Unique in the workspace.
133
142
  */
134
143
  name: string;
135
144
  noise_cancellation?: NoiseCancellationSpec;
@@ -145,14 +154,22 @@ export type AgentConfig = {
145
154
  realtime?: RealtimeSpec | null;
146
155
  recording?: RecordingSpec;
147
156
  stt?: STTSpec | null;
157
+ /**
158
+ * Tasks
159
+ *
160
+ * Jobs this agent can enter and come back from. Each becomes one tool the model can call; the task runs inside this call, on its voice and its ears, and returns its typed output as the tool's result.
161
+ */
162
+ tasks?: Array<TaskSelection>;
148
163
  /**
149
164
  * Timezone
150
165
  *
151
- * The IANA timezone this agent's clock runs on, e.g. 'Asia/Kolkata'. Set it and the prompt, greeting and tools can read {{system_vars.now}}, {{system_vars.date}} and {{system_vars.time}}. Required only if one of those is used.
166
+ * The IANA timezone this clock runs on, e.g. 'Asia/Kolkata'. Set it and the prompt and tools can read {{system_vars.now}}, {{system_vars.date}} and {{system_vars.time}}. Required only if one of those is used.
152
167
  */
153
168
  timezone?: string | null;
154
169
  /**
155
170
  * Tools
171
+ *
172
+ * Tools the model may call. Publishing pins each one to the tool version live at that moment, so republishing a tool does not change this until it is published again.
156
173
  */
157
174
  tools?: Array<ToolSelection>;
158
175
  tts?: TTSSpec | null;
@@ -160,7 +177,7 @@ export type AgentConfig = {
160
177
  /**
161
178
  * Vars
162
179
  *
163
- * The variables this agent reads as {{vars.name}} in its prompt, greeting and tools. Values from the request that starts a session override the defaults. They are visible to the model - keep credentials in a workspace secret.
180
+ * The variables read as {{vars.name}} in the prompt, the greeting and the tools. Values from the request that starts a session override the defaults. They are visible to the model - keep credentials in a workspace secret.
164
181
  */
165
182
  vars?: Array<VarDeclaration>;
166
183
  vision_input?: VisionInputSpec;
@@ -206,8 +223,11 @@ export type AgentOverride = {
206
223
  handoffs?: Array<HandoffTarget> | null;
207
224
  /**
208
225
  * Kb Ids
226
+ *
227
+ * Knowledge bases to read from: their outline goes into the prompt and pages are fetched on demand.
209
228
  */
210
229
  kb_ids?: Array<string> | null;
230
+ keypad_input?: KeypadInputSpecOverride | null;
211
231
  /**
212
232
  * Language
213
233
  *
@@ -218,11 +238,13 @@ export type AgentOverride = {
218
238
  /**
219
239
  * Mcps
220
240
  *
221
- * MCP servers whose tools this agent may call — each named by the integration that holds its credential, or defined inline. Which of a named server's tools may be called is the integration's own `allowed_tools`, not this list.
241
+ * MCP servers whose tools may be called — each named by the integration that holds its credential, or defined inline. Which of a named server's tools may be called is the integration's own `allowed_tools`, not this list.
222
242
  */
223
243
  mcps?: Array<McpSelection> | null;
224
244
  /**
225
245
  * Name
246
+ *
247
+ * Unique in the workspace.
226
248
  */
227
249
  name?: string | null;
228
250
  noise_cancellation?: NoiseCancellationSpecOverride | null;
@@ -238,14 +260,22 @@ export type AgentOverride = {
238
260
  realtime?: RealtimeSpecOverride | null;
239
261
  recording?: RecordingSpecOverride | null;
240
262
  stt?: STTSpecOverride | null;
263
+ /**
264
+ * Tasks
265
+ *
266
+ * Jobs this agent can enter and come back from. Each becomes one tool the model can call; the task runs inside this call, on its voice and its ears, and returns its typed output as the tool's result.
267
+ */
268
+ tasks?: Array<TaskSelection> | null;
241
269
  /**
242
270
  * Timezone
243
271
  *
244
- * The IANA timezone this agent's clock runs on, e.g. 'Asia/Kolkata'. Set it and the prompt, greeting and tools can read {{system_vars.now}}, {{system_vars.date}} and {{system_vars.time}}. Required only if one of those is used.
272
+ * The IANA timezone this clock runs on, e.g. 'Asia/Kolkata'. Set it and the prompt and tools can read {{system_vars.now}}, {{system_vars.date}} and {{system_vars.time}}. Required only if one of those is used.
245
273
  */
246
274
  timezone?: string | null;
247
275
  /**
248
276
  * Tools
277
+ *
278
+ * Tools the model may call. Publishing pins each one to the tool version live at that moment, so republishing a tool does not change this until it is published again.
249
279
  */
250
280
  tools?: Array<ToolSelection> | null;
251
281
  tts?: TTSSpecOverride | null;
@@ -253,7 +283,7 @@ export type AgentOverride = {
253
283
  /**
254
284
  * Vars
255
285
  *
256
- * The variables this agent reads as {{vars.name}} in its prompt, greeting and tools. Values from the request that starts a session override the defaults. They are visible to the model - keep credentials in a workspace secret.
286
+ * The variables read as {{vars.name}} in the prompt, the greeting and the tools. Values from the request that starts a session override the defaults. They are visible to the model - keep credentials in a workspace secret.
257
287
  */
258
288
  vars?: Array<VarDeclaration> | null;
259
289
  vision_input?: VisionInputSpecOverride | null;
@@ -1346,6 +1376,7 @@ export type CallSessionResponse = {
1346
1376
  * Status
1347
1377
  */
1348
1378
  status: string;
1379
+ stream: StreamResponse | null;
1349
1380
  /**
1350
1381
  * Telephony Account Id
1351
1382
  */
@@ -1362,7 +1393,7 @@ export type CallSessionResponse = {
1362
1393
  /**
1363
1394
  * Type
1364
1395
  */
1365
- type: 'WEB' | 'SIP_INBOUND' | 'SIP_OUTBOUND';
1396
+ type: 'WEB' | 'SIP_INBOUND' | 'SIP_OUTBOUND' | 'STREAM';
1366
1397
  /**
1367
1398
  * Userdata
1368
1399
  */
@@ -1473,6 +1504,10 @@ export type CallSummaryResponse = {
1473
1504
  * Status
1474
1505
  */
1475
1506
  status: string;
1507
+ /**
1508
+ * Stream Connection Id
1509
+ */
1510
+ stream_connection_id?: string | null;
1476
1511
  /**
1477
1512
  * Summary
1478
1513
  */
@@ -1488,7 +1523,7 @@ export type CallSummaryResponse = {
1488
1523
  /**
1489
1524
  * Type
1490
1525
  */
1491
- type: 'WEB' | 'SIP_INBOUND' | 'SIP_OUTBOUND';
1526
+ type: 'WEB' | 'SIP_INBOUND' | 'SIP_OUTBOUND' | 'STREAM';
1492
1527
  };
1493
1528
  /**
1494
1529
  * CallTeamMemberResponse
@@ -2451,6 +2486,8 @@ export type CreateEmailBatchRequest = {
2451
2486
  draft_concurrency?: number;
2452
2487
  /**
2453
2488
  * Draft Gap Seconds
2489
+ *
2490
+ * Minimum seconds between STARTING two rows. 0 starts each as a slot frees; raise it when the task calls something that rate-limits.
2454
2491
  */
2455
2492
  draft_gap_seconds?: number;
2456
2493
  /**
@@ -2715,6 +2752,29 @@ export type CreateSecretRequest = {
2715
2752
  */
2716
2753
  value: string;
2717
2754
  };
2755
+ /**
2756
+ * CreateStreamConnectionRequest
2757
+ */
2758
+ export type CreateStreamConnectionRequest = {
2759
+ /**
2760
+ * Agent Id
2761
+ *
2762
+ * The published voice agent that answers on this connection.
2763
+ */
2764
+ agent_id: string;
2765
+ /**
2766
+ * Dialect
2767
+ *
2768
+ * Which platform's WebSocket protocol this partner speaks. One of sparktg, twilio, plivo, exotel, vonage.
2769
+ */
2770
+ dialect: 'twilio' | 'sparktg' | 'plivo' | 'exotel' | 'vonage';
2771
+ /**
2772
+ * Name
2773
+ *
2774
+ * What this partner integration is called in the dashboard.
2775
+ */
2776
+ name: string;
2777
+ };
2718
2778
  /**
2719
2779
  * CreateTaskRequest
2720
2780
  */
@@ -2829,7 +2889,7 @@ export type CreateToolRequest = {
2829
2889
  /**
2830
2890
  * Operations
2831
2891
  */
2832
- operations?: Array<HttpOperation | CodeOperation | FrontendRpcOperation | IfOperation | SetVariableOperation | SayOperation | GenerateReplyOperation | AddMessageOperation | EndCallOperation | HandoffOperation | TransferOperation>;
2892
+ operations?: Array<HttpOperation | CodeOperation | FrontendRpcOperation | IfOperation | SetVariableOperation | SayOperation | GenerateReplyOperation | AddMessageOperation | EndCallOperation | HandoffOperation | TransferOperation | SendDtmfOperation>;
2833
2893
  /**
2834
2894
  * Silent
2835
2895
  */
@@ -3189,6 +3249,10 @@ export type EmailBatchResponse = {
3189
3249
  * Next Draft At
3190
3250
  */
3191
3251
  next_draft_at: string | null;
3252
+ /**
3253
+ * Next Draft Reason
3254
+ */
3255
+ next_draft_reason: 'start' | 'retry' | null;
3192
3256
  /**
3193
3257
  * Output Columns
3194
3258
  */
@@ -3225,6 +3289,10 @@ export type EmailBatchResponse = {
3225
3289
  * Sent Today
3226
3290
  */
3227
3291
  sent_today: number;
3292
+ /**
3293
+ * Stale Redraftable
3294
+ */
3295
+ stale_redraftable: number;
3228
3296
  /**
3229
3297
  * Start At
3230
3298
  */
@@ -3440,6 +3508,10 @@ export type EmailSendResponse = {
3440
3508
  * Next Send At
3441
3509
  */
3442
3510
  next_send_at: string | null;
3511
+ /**
3512
+ * Next Send Reason
3513
+ */
3514
+ next_send_reason: 'start' | 'window' | 'daily_cap' | 'retry' | 'gap' | null;
3443
3515
  /**
3444
3516
  * Reply To
3445
3517
  */
@@ -3818,6 +3890,7 @@ export type HandoffTarget = {
3818
3890
  * Liveness of the API process itself.
3819
3891
  */
3820
3892
  export type HealthResponse = {
3893
+ model_registry?: ModelRegistryHealth | null;
3821
3894
  /**
3822
3895
  * Status
3823
3896
  */
@@ -4074,7 +4147,7 @@ export type IfOperation = {
4074
4147
  /**
4075
4148
  * Else
4076
4149
  */
4077
- else?: Array<HttpOperation | CodeOperation | FrontendRpcOperation | IfOperation | SetVariableOperation | SayOperation | GenerateReplyOperation | AddMessageOperation | EndCallOperation | HandoffOperation | TransferOperation> | null;
4150
+ else?: Array<HttpOperation | CodeOperation | FrontendRpcOperation | IfOperation | SetVariableOperation | SayOperation | GenerateReplyOperation | AddMessageOperation | EndCallOperation | HandoffOperation | TransferOperation | SendDtmfOperation> | null;
4078
4151
  /**
4079
4152
  * Kind
4080
4153
  */
@@ -4086,7 +4159,7 @@ export type IfOperation = {
4086
4159
  /**
4087
4160
  * Then
4088
4161
  */
4089
- then?: Array<HttpOperation | CodeOperation | FrontendRpcOperation | IfOperation | SetVariableOperation | SayOperation | GenerateReplyOperation | AddMessageOperation | EndCallOperation | HandoffOperation | TransferOperation> | null;
4162
+ then?: Array<HttpOperation | CodeOperation | FrontendRpcOperation | IfOperation | SetVariableOperation | SayOperation | GenerateReplyOperation | AddMessageOperation | EndCallOperation | HandoffOperation | TransferOperation | SendDtmfOperation> | null;
4090
4163
  };
4091
4164
  /**
4092
4165
  * ImportPhoneNumbersRequest
@@ -4224,7 +4297,7 @@ export type InlineTool = {
4224
4297
  /**
4225
4298
  * Operations
4226
4299
  */
4227
- operations?: Array<HttpOperation | CodeOperation | FrontendRpcOperation | IfOperation | SetVariableOperation | SayOperation | GenerateReplyOperation | AddMessageOperation | EndCallOperation | HandoffOperation | TransferOperation>;
4300
+ operations?: Array<HttpOperation | CodeOperation | FrontendRpcOperation | IfOperation | SetVariableOperation | SayOperation | GenerateReplyOperation | AddMessageOperation | EndCallOperation | HandoffOperation | TransferOperation | SendDtmfOperation>;
4228
4301
  /**
4229
4302
  * Silent
4230
4303
  */
@@ -5043,6 +5116,62 @@ export type KbTreeNode = {
5043
5116
  */
5044
5117
  title?: string | null;
5045
5118
  };
5119
+ /**
5120
+ * KeypadInputSpec
5121
+ *
5122
+ * Digits the caller types, delivered as a turn the agent can answer.
5123
+ *
5124
+ * Phone and stream calls only, and only where the platform sends DTMF as an
5125
+ * event — tones inside the audio are not detected. Cleared on any other
5126
+ * channel: a browser has no keypad, so a `video` agent (which is a web call
5127
+ * wearing an avatar) and a `text` agent both have nothing to collect, and only
5128
+ * a `voice` agent can hold a phone number or answer a media stream.
5129
+ */
5130
+ export type KeypadInputSpec = {
5131
+ /**
5132
+ * Enabled
5133
+ *
5134
+ * Let the caller answer with the keypad. Each entry arrives as one labelled user turn, and the first keypress interrupts whatever the agent is saying.
5135
+ */
5136
+ enabled?: boolean;
5137
+ /**
5138
+ * Terminator
5139
+ *
5140
+ * The key that ends an entry. It is not part of the entry, and pressing it on nothing is ignored. Empty means only the quiet timer ends one.
5141
+ */
5142
+ terminator?: '#' | '*' | '';
5143
+ /**
5144
+ * Timeout
5145
+ *
5146
+ * Seconds of quiet before an entry is taken as finished. 0 waits for the terminator however long it takes.
5147
+ */
5148
+ timeout?: number;
5149
+ };
5150
+ /**
5151
+ * KeypadInputSpecOverride
5152
+ *
5153
+ * A partial KeypadInputSpec: only the fields this call changes. Absent keeps the base value, an explicit null clears it, objects deep-merge and lists replace.
5154
+ */
5155
+ export type KeypadInputSpecOverride = {
5156
+ /**
5157
+ * Enabled
5158
+ *
5159
+ * Let the caller answer with the keypad. Each entry arrives as one labelled user turn, and the first keypress interrupts whatever the agent is saying.
5160
+ */
5161
+ enabled?: boolean | null;
5162
+ /**
5163
+ * Terminator
5164
+ *
5165
+ * The key that ends an entry. It is not part of the entry, and pressing it on nothing is ignored. Empty means only the quiet timer ends one.
5166
+ */
5167
+ terminator?: '#' | '*' | '' | null;
5168
+ /**
5169
+ * Timeout
5170
+ *
5171
+ * Seconds of quiet before an entry is taken as finished. 0 waits for the terminator however long it takes.
5172
+ */
5173
+ timeout?: number | null;
5174
+ };
5046
5175
  /**
5047
5176
  * LLMCatalogEntryResponse
5048
5177
  */
@@ -5059,6 +5188,10 @@ export type LLMCatalogEntryResponse = {
5059
5188
  * Channel
5060
5189
  */
5061
5190
  channel: Array<string>;
5191
+ /**
5192
+ * Context Length
5193
+ */
5194
+ context_length: number | null;
5062
5195
  /**
5063
5196
  * Label
5064
5197
  */
@@ -5160,6 +5293,10 @@ export type LLMPriceLine = {
5160
5293
  * Cost
5161
5294
  */
5162
5295
  cost: number;
5296
+ /**
5297
+ * Input Cache Write Tokens
5298
+ */
5299
+ input_cache_write_tokens: number | null;
5163
5300
  /**
5164
5301
  * Input Cached Tokens
5165
5302
  */
@@ -5184,6 +5321,10 @@ export type LLMPriceLine = {
5184
5321
  * Provider
5185
5322
  */
5186
5323
  provider: string;
5324
+ /**
5325
+ * Provider Reported
5326
+ */
5327
+ provider_reported: boolean;
5187
5328
  /**
5188
5329
  * Purpose
5189
5330
  */
@@ -5198,6 +5339,10 @@ export type LLMPriceLine = {
5198
5339
  * LLMPricing
5199
5340
  */
5200
5341
  export type LLMPricing = {
5342
+ /**
5343
+ * Cache Write Per 1M
5344
+ */
5345
+ cache_write_per_1m?: number | null;
5201
5346
  /**
5202
5347
  * Cached Input Per 1M
5203
5348
  */
@@ -5283,6 +5428,10 @@ export type LLMSpecOverride = {
5283
5428
  * billed separately today and are not persisted.
5284
5429
  */
5285
5430
  export type LLMUsage = {
5431
+ /**
5432
+ * Input Cache Write Tokens
5433
+ */
5434
+ input_cache_write_tokens: number;
5286
5435
  /**
5287
5436
  * Input Cached Tokens
5288
5437
  */
@@ -5311,6 +5460,10 @@ export type LLMUsage = {
5311
5460
  * Purpose
5312
5461
  */
5313
5462
  purpose: string;
5463
+ /**
5464
+ * Reported Cost
5465
+ */
5466
+ reported_cost: number | null;
5314
5467
  };
5315
5468
  /**
5316
5469
  * LLMUsageResponse
@@ -5408,6 +5561,50 @@ export type ModelMetadata = {
5408
5561
  model_provider?: string | null;
5409
5562
  [key: string]: unknown;
5410
5563
  };
5564
+ /**
5565
+ * ModelRegistryHealth
5566
+ *
5567
+ * How fresh this process's searched-provider model list is.
5568
+ *
5569
+ * A silently stale registry is the one failure this design trades for
5570
+ * freshness — a refresh that keeps failing holds the last good snapshot
5571
+ * indefinitely, on purpose, because clearing it would take every model of that
5572
+ * provider out of the editor and out of publish validation at once. So its age
5573
+ * has to be readable without opening a log.
5574
+ */
5575
+ export type ModelRegistryHealth = {
5576
+ /**
5577
+ * Age Seconds
5578
+ */
5579
+ age_seconds: number | null;
5580
+ /**
5581
+ * Last Error
5582
+ */
5583
+ last_error: string | null;
5584
+ /**
5585
+ * Models
5586
+ */
5587
+ models: number;
5588
+ };
5589
+ /**
5590
+ * ModelSearchResponse
5591
+ *
5592
+ * One page of a searched provider's models — never the whole registry.
5593
+ *
5594
+ * Ordered by real-world popularity when `q` is empty (OpenRouter ranks its own
5595
+ * list by tokens processed, so the first screen is the models people actually
5596
+ * run) and by match quality when it is not, popularity breaking the ties.
5597
+ */
5598
+ export type ModelSearchResponse = {
5599
+ /**
5600
+ * Models
5601
+ */
5602
+ models: Array<LLMCatalogEntryResponse>;
5603
+ /**
5604
+ * Next Cursor
5605
+ */
5606
+ next_cursor: string | null;
5607
+ };
5411
5608
  /**
5412
5609
  * NodeContentResponse
5413
5610
  */
@@ -6619,6 +6816,27 @@ export type PageSecretResponse = {
6619
6816
  */
6620
6817
  offset: number;
6621
6818
  };
6819
+ /**
6820
+ * Page[StreamConnectionResponse]
6821
+ */
6822
+ export type PageStreamConnectionResponse = {
6823
+ /**
6824
+ * Has More
6825
+ */
6826
+ has_more: boolean;
6827
+ /**
6828
+ * Items
6829
+ */
6830
+ items: Array<StreamConnectionResponse>;
6831
+ /**
6832
+ * Limit
6833
+ */
6834
+ limit: number;
6835
+ /**
6836
+ * Offset
6837
+ */
6838
+ offset: number;
6839
+ };
6622
6840
  /**
6623
6841
  * Page[TaskResponse]
6624
6842
  */
@@ -7073,6 +7291,23 @@ export type PatchPhoneNumberRequest = {
7073
7291
  */
7074
7292
  status?: 'disabled' | 'pending' | null;
7075
7293
  };
7294
+ /**
7295
+ * PatchStreamConnectionRequest
7296
+ */
7297
+ export type PatchStreamConnectionRequest = {
7298
+ /**
7299
+ * Agent Id
7300
+ */
7301
+ agent_id?: string | null;
7302
+ /**
7303
+ * Name
7304
+ */
7305
+ name?: string | null;
7306
+ /**
7307
+ * Status
7308
+ */
7309
+ status?: 'active' | 'disabled' | null;
7310
+ };
7076
7311
  /**
7077
7312
  * PatchTaskRequest
7078
7313
  *
@@ -7140,7 +7375,7 @@ export type PatchToolRequest = {
7140
7375
  /**
7141
7376
  * Operations
7142
7377
  */
7143
- operations?: Array<HttpOperation | CodeOperation | FrontendRpcOperation | IfOperation | SetVariableOperation | SayOperation | GenerateReplyOperation | AddMessageOperation | EndCallOperation | HandoffOperation | TransferOperation> | null;
7378
+ operations?: Array<HttpOperation | CodeOperation | FrontendRpcOperation | IfOperation | SetVariableOperation | SayOperation | GenerateReplyOperation | AddMessageOperation | EndCallOperation | HandoffOperation | TransferOperation | SendDtmfOperation> | null;
7144
7379
  /**
7145
7380
  * Silent
7146
7381
  */
@@ -7448,6 +7683,10 @@ export type PromptResponse = {
7448
7683
  * ProviderEntryResponse
7449
7684
  */
7450
7685
  export type ProviderEntryResponse = {
7686
+ /**
7687
+ * Browse
7688
+ */
7689
+ browse: 'list' | 'search';
7451
7690
  /**
7452
7691
  * Enabled
7453
7692
  */
@@ -8591,6 +8830,36 @@ export type SelectRecipientsRequest = {
8591
8830
  */
8592
8831
  selection?: 'all_eligible' | null;
8593
8832
  };
8833
+ /**
8834
+ * SendDtmfConfig
8835
+ */
8836
+ export type SendDtmfConfig = {
8837
+ /**
8838
+ * Digits
8839
+ *
8840
+ * Keys to press: 0-9, *, #, A-D. 'w' waits half a second and 'W' one second, for menus that need a pause. Supports {{args.*}} and {{userdata.*}}.
8841
+ */
8842
+ digits: string;
8843
+ };
8844
+ /**
8845
+ * SendDtmfOperation
8846
+ *
8847
+ * Press keys on the call's keypad, for an IVR on the other end.
8848
+ *
8849
+ * Not terminal, unlike `end_call` and `transfer`: sending digits and then
8850
+ * saying something is the normal case, so a chain carries on afterwards.
8851
+ */
8852
+ export type SendDtmfOperation = {
8853
+ config: SendDtmfConfig;
8854
+ /**
8855
+ * Kind
8856
+ */
8857
+ kind: 'send_dtmf';
8858
+ /**
8859
+ * On Error
8860
+ */
8861
+ on_error?: 'abort' | 'continue';
8862
+ };
8594
8863
  /**
8595
8864
  * SendMessageRequest
8596
8865
  */
@@ -8841,6 +9110,93 @@ export type StoredPlanMember = {
8841
9110
  */
8842
9111
  version: number | null;
8843
9112
  };
9113
+ /**
9114
+ * StreamConnectionResponse
9115
+ *
9116
+ * One connection, as a caller sees it.
9117
+ *
9118
+ * `url` is the whole configuration a partner needs, in full, on every read: it
9119
+ * carries no credential, so there is nothing here to mask and nothing to show
9120
+ * once and never again.
9121
+ */
9122
+ export type StreamConnectionResponse = {
9123
+ /**
9124
+ * Agent Id
9125
+ */
9126
+ agent_id: string;
9127
+ /**
9128
+ * Agent Name
9129
+ */
9130
+ agent_name: string | null;
9131
+ /**
9132
+ * Created At
9133
+ */
9134
+ created_at: string;
9135
+ /**
9136
+ * Dialect
9137
+ */
9138
+ dialect: 'twilio' | 'sparktg' | 'plivo' | 'exotel' | 'vonage';
9139
+ /**
9140
+ * Id
9141
+ */
9142
+ id: string;
9143
+ /**
9144
+ * Name
9145
+ */
9146
+ name: string;
9147
+ /**
9148
+ * Readiness
9149
+ */
9150
+ readiness: 'live' | 'needs_agent' | 'disabled';
9151
+ /**
9152
+ * Status
9153
+ */
9154
+ status: 'active' | 'disabled';
9155
+ /**
9156
+ * Updated At
9157
+ */
9158
+ updated_at: string;
9159
+ /**
9160
+ * Url
9161
+ */
9162
+ url: string;
9163
+ };
9164
+ /**
9165
+ * StreamResponse
9166
+ *
9167
+ * Which partner connection carried this call, and on what.
9168
+ *
9169
+ * Sits beside `transfer` for the same reason it does: it explains something
9170
+ * about the call that no other field can. A `STREAM` call has no phone number
9171
+ * and no carrier account, so without this the "Runtime identifiers" panel is a
9172
+ * row of nulls and there is nothing to say where the audio came from.
9173
+ */
9174
+ export type StreamResponse = {
9175
+ /**
9176
+ * Codec
9177
+ */
9178
+ codec?: string | null;
9179
+ /**
9180
+ * Connection Id
9181
+ */
9182
+ connection_id?: string | null;
9183
+ /**
9184
+ * Connection Name
9185
+ */
9186
+ connection_name?: string | null;
9187
+ /**
9188
+ * Dialect
9189
+ */
9190
+ dialect?: string | null;
9191
+ /**
9192
+ * Platform Call Id
9193
+ */
9194
+ platform_call_id?: string | null;
9195
+ /**
9196
+ * Sample Rate
9197
+ */
9198
+ sample_rate?: number | null;
9199
+ };
8844
9200
  /**
8845
9201
  * SystemVarResponse
8846
9202
  *
@@ -9215,20 +9571,37 @@ export type TTSUsageResponse = {
9215
9571
  /**
9216
9572
  * TaskConfig
9217
9573
  *
9218
- * The task definition the draft you edit, and what publishing freezes.
9574
+ * LiveKit's `AgentTask`: an agent with a typed result, on someone else's stack.
9575
+ *
9576
+ * It declares no channel, no media and no greeting. Entered by an agent it
9577
+ * speaks with that call's voice and hears with its ears; run on its own from
9578
+ * `POST /tasks/{id}/run` it is an LLM with tools and nobody to talk to. Which
9579
+ * of the two happens is the caller's, never the task's.
9219
9580
  */
9220
9581
  export type TaskConfig = {
9582
+ /**
9583
+ * Finish Without Result Description
9584
+ *
9585
+ * Description of `finish_without_result`, the tool that abandons a task an agent entered. Narrow it if the task gives up too readily. Unused by a standalone run.
9586
+ */
9587
+ finish_without_result_description?: string;
9588
+ /**
9589
+ * Kb Ids
9590
+ *
9591
+ * Knowledge bases to read from: their outline goes into the prompt and pages are fetched on demand.
9592
+ */
9593
+ kb_ids?: Array<string>;
9221
9594
  llm?: LLMSpec;
9222
9595
  /**
9223
9596
  * Max Steps
9224
9597
  *
9225
- * How many LLM -> tools -> LLM rounds the run may take. A round, not a tool call: four tools in one reply cost one step. The runaway-loop guard, not the time budget - lower it and a research task fails with `step_limit`.
9598
+ * How many LLM -> tools -> LLM rounds a standalone run may take. A round, not a tool call: four tools in one reply cost one step. Entered by an agent, the calling call's own limit applies instead.
9226
9599
  */
9227
9600
  max_steps?: number;
9228
9601
  /**
9229
9602
  * Mcps
9230
9603
  *
9231
- * MCP servers whose tools this task may call - each named by the integration that holds its credential, or defined inline.
9604
+ * MCP servers whose tools may be called each named by the integration that holds its credential, or defined inline. Which of a named server's tools may be called is the integration's own `allowed_tools`, not this list.
9232
9605
  */
9233
9606
  mcps?: Array<McpSelection>;
9234
9607
  /**
@@ -9237,6 +9610,9 @@ export type TaskConfig = {
9237
9610
  * Unique in the workspace.
9238
9611
  */
9239
9612
  name: string;
9613
+ on_enter?: ToolSelection | null;
9614
+ on_exit?: ToolSelection | null;
9615
+ on_user_turn_completed?: ToolSelection | null;
9240
9616
  /**
9241
9617
  * Output
9242
9618
  *
@@ -9246,31 +9622,37 @@ export type TaskConfig = {
9246
9622
  /**
9247
9623
  * Prompt
9248
9624
  *
9249
- * The system prompt. `{{vars.name}}` is substituted from the values the run was started with, so one definition reads differently for every input it is given.
9625
+ * The system prompt. `{{vars.name}}` is substituted from the values the run was started with — or, entered by an agent, from the call's own values and the arguments the model supplied.
9250
9626
  */
9251
9627
  prompt?: string;
9628
+ /**
9629
+ * Submit Result Description
9630
+ *
9631
+ * Description of the generated `submit_result` tool - what the call is, where the output fields describe the values.
9632
+ */
9633
+ submit_result_description?: string;
9252
9634
  /**
9253
9635
  * Timeout Seconds
9254
9636
  *
9255
- * How long the whole run may take before it is abandoned and fails.
9637
+ * How long this may take before it is abandoned. Entered by an agent it is the only bound on how long the caller is held, so keep it short on a voice agent.
9256
9638
  */
9257
9639
  timeout_seconds?: number;
9258
9640
  /**
9259
9641
  * Timezone
9260
9642
  *
9261
- * The IANA timezone this task's clock runs on, e.g. 'Asia/Kolkata'. Required only if the prompt or a tool reads {{system_vars.now}} / .date / .time.
9643
+ * The IANA timezone this clock runs on, e.g. 'Asia/Kolkata'. Set it and the prompt and tools can read {{system_vars.now}}, {{system_vars.date}} and {{system_vars.time}}. Required only if one of those is used.
9262
9644
  */
9263
9645
  timezone?: string | null;
9264
9646
  /**
9265
9647
  * Tools
9266
9648
  *
9267
- * Tools the model may call during the run. Publishing pins each one to the tool version live at that moment, so republishing a tool does not change this task until the task is published again.
9649
+ * Tools the model may call. Publishing pins each one to the tool version live at that moment, so republishing a tool does not change this until it is published again.
9268
9650
  */
9269
9651
  tools?: Array<ToolSelection>;
9270
9652
  /**
9271
9653
  * Vars
9272
9654
  *
9273
- * The inputs this task takes, read as {{vars.name}} in the prompt and in its tools. Whoever starts a run supplies the values; a variable the run omits falls back to its declared default, and a `required` one with neither is refused before the run starts.
9655
+ * The inputs this task takes, read as {{vars.name}} in the prompt and in its tools. Declare only what the caller or the model must supply: anything the task can read for itself ({{userdata.*}}, {{system_vars.*}}) it should read in its prompt instead.
9274
9656
  */
9275
9657
  vars?: Array<VarDeclaration>;
9276
9658
  };
@@ -9459,6 +9841,35 @@ export type TaskRunSummary = {
9459
9841
  */
9460
9842
  status: 'running' | 'completed' | 'failed';
9461
9843
  };
9844
+ /**
9845
+ * TaskSelection
9846
+ *
9847
+ * One job this agent can enter and come back from: name a stored task, or
9848
+ * define one inline.
9849
+ */
9850
+ export type TaskSelection = {
9851
+ /**
9852
+ * Description
9853
+ */
9854
+ description: string;
9855
+ /**
9856
+ * Message
9857
+ */
9858
+ message?: string | null;
9859
+ /**
9860
+ * Name
9861
+ */
9862
+ name: string;
9863
+ task?: TaskConfig | null;
9864
+ /**
9865
+ * Task Id
9866
+ */
9867
+ task_id?: string | null;
9868
+ /**
9869
+ * Task Version
9870
+ */
9871
+ task_version?: number | null;
9872
+ };
9462
9873
  /**
9463
9874
  * TaskVersionDetailResponse
9464
9875
  *
@@ -9911,7 +10322,7 @@ export type ToolResponse = {
9911
10322
  /**
9912
10323
  * Operations
9913
10324
  */
9914
- operations: Array<HttpOperation | CodeOperation | FrontendRpcOperation | IfOperation | SetVariableOperation | SayOperation | GenerateReplyOperation | AddMessageOperation | EndCallOperation | HandoffOperation | TransferOperation>;
10325
+ operations: Array<HttpOperation | CodeOperation | FrontendRpcOperation | IfOperation | SetVariableOperation | SayOperation | GenerateReplyOperation | AddMessageOperation | EndCallOperation | HandoffOperation | TransferOperation | SendDtmfOperation>;
9915
10326
  /**
9916
10327
  * Published At
9917
10328
  */
@@ -9987,7 +10398,7 @@ export type ToolVersionDetailResponse = {
9987
10398
  /**
9988
10399
  * Operations
9989
10400
  */
9990
- operations: Array<HttpOperation | CodeOperation | FrontendRpcOperation | IfOperation | SetVariableOperation | SayOperation | GenerateReplyOperation | AddMessageOperation | EndCallOperation | HandoffOperation | TransferOperation>;
10401
+ operations: Array<HttpOperation | CodeOperation | FrontendRpcOperation | IfOperation | SetVariableOperation | SayOperation | GenerateReplyOperation | AddMessageOperation | EndCallOperation | HandoffOperation | TransferOperation | SendDtmfOperation>;
9991
10402
  /**
9992
10403
  * Published At
9993
10404
  */
@@ -11400,7 +11811,7 @@ export type CallsListData = {
11400
11811
  *
11401
11812
  * how the call reached the agent
11402
11813
  */
11403
- type?: 'WEB' | 'SIP_INBOUND' | 'SIP_OUTBOUND' | null;
11814
+ type?: 'WEB' | 'SIP_INBOUND' | 'SIP_OUTBOUND' | 'STREAM' | null;
11404
11815
  /**
11405
11816
  * Status
11406
11817
  *
@@ -12386,6 +12797,47 @@ export type CatalogAvatarsListResults = {
12386
12797
  200: AvatarsResponse;
12387
12798
  };
12388
12799
  export type CatalogAvatarsListResult = CatalogAvatarsListResults[keyof CatalogAvatarsListResults];
12800
+ export type CatalogModelsSearchData = {
12801
+ body?: never;
12802
+ path?: never;
12803
+ query?: {
12804
+ /**
12805
+ * Q
12806
+ */
12807
+ q?: string;
12808
+ /**
12809
+ * Limit
12810
+ */
12811
+ limit?: number;
12812
+ /**
12813
+ * Cursor
12814
+ */
12815
+ cursor?: string;
12816
+ };
12817
+ url: '/v1/catalog/models';
12818
+ };
12819
+ export type CatalogModelsSearchErrors = {
12820
+ /**
12821
+ * Missing credential, or one that is revoked or no longer a member of this organization.
12822
+ */
12823
+ 401: ErrorResponse;
12824
+ /**
12825
+ * The request did not match this operation's schema; `detail.errors` lists each field.
12826
+ */
12827
+ 422: ErrorResponse;
12828
+ /**
12829
+ * Unexpected error. Every error this API returns carries this body.
12830
+ */
12831
+ default: ErrorResponse;
12832
+ };
12833
+ export type CatalogModelsSearchError = CatalogModelsSearchErrors[keyof CatalogModelsSearchErrors];
12834
+ export type CatalogModelsSearchResults = {
12835
+ /**
12836
+ * Successful Response
12837
+ */
12838
+ 200: ModelSearchResponse;
12839
+ };
12840
+ export type CatalogModelsSearchResult = CatalogModelsSearchResults[keyof CatalogModelsSearchResults];
12389
12841
  export type CatalogVoicesListData = {
12390
12842
  body?: never;
12391
12843
  path?: never;
@@ -15518,6 +15970,218 @@ export type SecretsDeleteResults = {
15518
15970
  200: OkResponse;
15519
15971
  };
15520
15972
  export type SecretsDeleteResult = SecretsDeleteResults[keyof SecretsDeleteResults];
15973
+ export type TelephonyStreamsListData = {
15974
+ body?: never;
15975
+ path?: never;
15976
+ query?: {
15977
+ /**
15978
+ * Limit
15979
+ */
15980
+ limit?: number;
15981
+ /**
15982
+ * Offset
15983
+ */
15984
+ offset?: number;
15985
+ };
15986
+ url: '/v1/streams';
15987
+ };
15988
+ export type TelephonyStreamsListErrors = {
15989
+ /**
15990
+ * Missing credential, or one that is revoked or no longer a member of this organization.
15991
+ */
15992
+ 401: ErrorResponse;
15993
+ /**
15994
+ * The request did not match this operation's schema; `detail.errors` lists each field.
15995
+ */
15996
+ 422: ErrorResponse;
15997
+ /**
15998
+ * Unexpected error. Every error this API returns carries this body.
15999
+ */
16000
+ default: ErrorResponse;
16001
+ };
16002
+ export type TelephonyStreamsListError = TelephonyStreamsListErrors[keyof TelephonyStreamsListErrors];
16003
+ export type TelephonyStreamsListResults = {
16004
+ /**
16005
+ * Successful Response
16006
+ */
16007
+ 200: PageStreamConnectionResponse;
16008
+ };
16009
+ export type TelephonyStreamsListResult = TelephonyStreamsListResults[keyof TelephonyStreamsListResults];
16010
+ export type TelephonyStreamsCreateData = {
16011
+ body: CreateStreamConnectionRequest;
16012
+ path?: never;
16013
+ query?: never;
16014
+ url: '/v1/streams';
16015
+ };
16016
+ export type TelephonyStreamsCreateErrors = {
16017
+ /**
16018
+ * Well-formed, but rejected by a rule; `detail.errors` lists each problem.
16019
+ */
16020
+ 400: ErrorResponse;
16021
+ /**
16022
+ * Missing credential, or one that is revoked or no longer a member of this organization.
16023
+ */
16024
+ 401: ErrorResponse;
16025
+ /**
16026
+ * Authenticated, but this organization role may not perform the operation.
16027
+ */
16028
+ 403: ErrorResponse;
16029
+ /**
16030
+ * The resource's current state forbids this — a name already taken, a job already running.
16031
+ */
16032
+ 409: ErrorResponse;
16033
+ /**
16034
+ * The request did not match this operation's schema; `detail.errors` lists each field.
16035
+ */
16036
+ 422: ErrorResponse;
16037
+ /**
16038
+ * Unexpected error. Every error this API returns carries this body.
16039
+ */
16040
+ default: ErrorResponse;
16041
+ };
16042
+ export type TelephonyStreamsCreateError = TelephonyStreamsCreateErrors[keyof TelephonyStreamsCreateErrors];
16043
+ export type TelephonyStreamsCreateResults = {
16044
+ /**
16045
+ * Successful Response
16046
+ */
16047
+ 201: StreamConnectionResponse;
16048
+ };
16049
+ export type TelephonyStreamsCreateResult = TelephonyStreamsCreateResults[keyof TelephonyStreamsCreateResults];
16050
+ export type TelephonyStreamsDeleteData = {
16051
+ body?: never;
16052
+ path: {
16053
+ /**
16054
+ * Connection Id
16055
+ */
16056
+ connection_id: string;
16057
+ };
16058
+ query?: never;
16059
+ url: '/v1/streams/{connection_id}';
16060
+ };
16061
+ export type TelephonyStreamsDeleteErrors = {
16062
+ /**
16063
+ * Well-formed, but rejected by a rule; `detail.errors` lists each problem.
16064
+ */
16065
+ 400: ErrorResponse;
16066
+ /**
16067
+ * Missing credential, or one that is revoked or no longer a member of this organization.
16068
+ */
16069
+ 401: ErrorResponse;
16070
+ /**
16071
+ * Authenticated, but this organization role may not perform the operation.
16072
+ */
16073
+ 403: ErrorResponse;
16074
+ /**
16075
+ * No such resource in this organization.
16076
+ */
16077
+ 404: ErrorResponse;
16078
+ /**
16079
+ * The resource's current state forbids this — a name already taken, a job already running.
16080
+ */
16081
+ 409: ErrorResponse;
16082
+ /**
16083
+ * The request did not match this operation's schema; `detail.errors` lists each field.
16084
+ */
16085
+ 422: ErrorResponse;
16086
+ /**
16087
+ * Unexpected error. Every error this API returns carries this body.
16088
+ */
16089
+ default: ErrorResponse;
16090
+ };
16091
+ export type TelephonyStreamsDeleteError = TelephonyStreamsDeleteErrors[keyof TelephonyStreamsDeleteErrors];
16092
+ export type TelephonyStreamsDeleteResults = {
16093
+ /**
16094
+ * Successful Response
16095
+ */
16096
+ 200: OkResponse;
16097
+ };
16098
+ export type TelephonyStreamsDeleteResult = TelephonyStreamsDeleteResults[keyof TelephonyStreamsDeleteResults];
16099
+ export type TelephonyStreamsGetData = {
16100
+ body?: never;
16101
+ path: {
16102
+ /**
16103
+ * Connection Id
16104
+ */
16105
+ connection_id: string;
16106
+ };
16107
+ query?: never;
16108
+ url: '/v1/streams/{connection_id}';
16109
+ };
16110
+ export type TelephonyStreamsGetErrors = {
16111
+ /**
16112
+ * Missing credential, or one that is revoked or no longer a member of this organization.
16113
+ */
16114
+ 401: ErrorResponse;
16115
+ /**
16116
+ * No such resource in this organization.
16117
+ */
16118
+ 404: ErrorResponse;
16119
+ /**
16120
+ * The request did not match this operation's schema; `detail.errors` lists each field.
16121
+ */
16122
+ 422: ErrorResponse;
16123
+ /**
16124
+ * Unexpected error. Every error this API returns carries this body.
16125
+ */
16126
+ default: ErrorResponse;
16127
+ };
16128
+ export type TelephonyStreamsGetError = TelephonyStreamsGetErrors[keyof TelephonyStreamsGetErrors];
16129
+ export type TelephonyStreamsGetResults = {
16130
+ /**
16131
+ * Successful Response
16132
+ */
16133
+ 200: StreamConnectionResponse;
16134
+ };
16135
+ export type TelephonyStreamsGetResult = TelephonyStreamsGetResults[keyof TelephonyStreamsGetResults];
16136
+ export type TelephonyStreamsUpdateData = {
16137
+ body: PatchStreamConnectionRequest;
16138
+ path: {
16139
+ /**
16140
+ * Connection Id
16141
+ */
16142
+ connection_id: string;
16143
+ };
16144
+ query?: never;
16145
+ url: '/v1/streams/{connection_id}';
16146
+ };
16147
+ export type TelephonyStreamsUpdateErrors = {
16148
+ /**
16149
+ * Well-formed, but rejected by a rule; `detail.errors` lists each problem.
16150
+ */
16151
+ 400: ErrorResponse;
16152
+ /**
16153
+ * Missing credential, or one that is revoked or no longer a member of this organization.
16154
+ */
16155
+ 401: ErrorResponse;
16156
+ /**
16157
+ * Authenticated, but this organization role may not perform the operation.
16158
+ */
16159
+ 403: ErrorResponse;
16160
+ /**
16161
+ * No such resource in this organization.
16162
+ */
16163
+ 404: ErrorResponse;
16164
+ /**
16165
+ * The resource's current state forbids this — a name already taken, a job already running.
16166
+ */
16167
+ 409: ErrorResponse;
16168
+ /**
16169
+ * The request did not match this operation's schema; `detail.errors` lists each field.
16170
+ */
16171
+ 422: ErrorResponse;
16172
+ /**
16173
+ * Unexpected error. Every error this API returns carries this body.
16174
+ */
16175
+ default: ErrorResponse;
16176
+ };
16177
+ export type TelephonyStreamsUpdateError = TelephonyStreamsUpdateErrors[keyof TelephonyStreamsUpdateErrors];
16178
+ export type TelephonyStreamsUpdateResults = {
16179
+ /**
16180
+ * Successful Response
16181
+ */
16182
+ 200: StreamConnectionResponse;
16183
+ };
16184
+ export type TelephonyStreamsUpdateResult = TelephonyStreamsUpdateResults[keyof TelephonyStreamsUpdateResults];
15521
16185
  export type TasksListData = {
15522
16186
  body?: never;
15523
16187
  path?: never;