telnyx 5.124.0 → 5.126.0

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.
@@ -542,7 +542,8 @@ module Telnyx
542
542
  T::Array[
543
543
  T.any(
544
544
  Telnyx::AI::AssistantCreateParams::ConversationFlow::Node::Prompt,
545
- Telnyx::AI::AssistantCreateParams::ConversationFlow::Node::Tool
545
+ Telnyx::AI::AssistantCreateParams::ConversationFlow::Node::Tool,
546
+ Telnyx::AI::AssistantCreateParams::ConversationFlow::Node::Speak
546
547
  )
547
548
  ]
548
549
  )
@@ -586,7 +587,8 @@ module Telnyx
586
587
  T::Array[
587
588
  T.any(
588
589
  Telnyx::AI::AssistantCreateParams::ConversationFlow::Node::Prompt::OrHash,
589
- Telnyx::AI::AssistantCreateParams::ConversationFlow::Node::Tool::OrHash
590
+ Telnyx::AI::AssistantCreateParams::ConversationFlow::Node::Tool::OrHash,
591
+ Telnyx::AI::AssistantCreateParams::ConversationFlow::Node::Speak::OrHash
590
592
  )
591
593
  ],
592
594
  start_node_id: String,
@@ -614,7 +616,8 @@ module Telnyx
614
616
  T::Array[
615
617
  T.any(
616
618
  Telnyx::AI::AssistantCreateParams::ConversationFlow::Node::Prompt,
617
- Telnyx::AI::AssistantCreateParams::ConversationFlow::Node::Tool
619
+ Telnyx::AI::AssistantCreateParams::ConversationFlow::Node::Tool,
620
+ Telnyx::AI::AssistantCreateParams::ConversationFlow::Node::Speak
618
621
  )
619
622
  ],
620
623
  start_node_id: String,
@@ -639,7 +642,8 @@ module Telnyx
639
642
  T.type_alias do
640
643
  T.any(
641
644
  Telnyx::AI::AssistantCreateParams::ConversationFlow::Node::Prompt,
642
- Telnyx::AI::AssistantCreateParams::ConversationFlow::Node::Tool
645
+ Telnyx::AI::AssistantCreateParams::ConversationFlow::Node::Tool,
646
+ Telnyx::AI::AssistantCreateParams::ConversationFlow::Node::Speak
643
647
  )
644
648
  end
645
649
 
@@ -1234,6 +1238,192 @@ module Telnyx
1234
1238
  end
1235
1239
  end
1236
1240
 
1241
+ class Speak < Telnyx::Internal::Type::BaseModel
1242
+ OrHash =
1243
+ T.type_alias do
1244
+ T.any(
1245
+ Telnyx::AI::AssistantCreateParams::ConversationFlow::Node::Speak,
1246
+ Telnyx::Internal::AnyHash
1247
+ )
1248
+ end
1249
+
1250
+ # Caller-supplied unique identifier for this node within the flow.
1251
+ sig { returns(String) }
1252
+ attr_accessor :id
1253
+
1254
+ # Message delivered to the user verbatim when the flow reaches this node. No LLM
1255
+ # turn — the text is spoken/sent exactly as written. `{{variable}}` placeholders
1256
+ # are interpolated from the conversation's dynamic variables; an unresolved
1257
+ # placeholder renders as an empty string. After delivering, the flow routes via
1258
+ # the node's outgoing `llm` / `expression` edges (commonly a single unconditional
1259
+ # edge).
1260
+ sig { returns(String) }
1261
+ attr_accessor :message
1262
+
1263
+ # Optional human-readable label, displayed in authoring UIs.
1264
+ sig { returns(T.nilable(String)) }
1265
+ attr_reader :name
1266
+
1267
+ sig { params(name: String).void }
1268
+ attr_writer :name
1269
+
1270
+ # Optional canvas coordinates used by authoring UIs to lay out the graph. Ignored
1271
+ # by the runtime; round-trips so frontends can persist graph layout across
1272
+ # reloads.
1273
+ sig do
1274
+ returns(
1275
+ T.nilable(
1276
+ Telnyx::AI::AssistantCreateParams::ConversationFlow::Node::Speak::Position
1277
+ )
1278
+ )
1279
+ end
1280
+ attr_reader :position
1281
+
1282
+ sig do
1283
+ params(
1284
+ position:
1285
+ Telnyx::AI::AssistantCreateParams::ConversationFlow::Node::Speak::Position::OrHash
1286
+ ).void
1287
+ end
1288
+ attr_writer :position
1289
+
1290
+ # Node kind discriminator. Always `speak` for a speak node.
1291
+ sig do
1292
+ returns(
1293
+ T.nilable(
1294
+ Telnyx::AI::AssistantCreateParams::ConversationFlow::Node::Speak::Type::OrSymbol
1295
+ )
1296
+ )
1297
+ end
1298
+ attr_reader :type
1299
+
1300
+ sig do
1301
+ params(
1302
+ type:
1303
+ Telnyx::AI::AssistantCreateParams::ConversationFlow::Node::Speak::Type::OrSymbol
1304
+ ).void
1305
+ end
1306
+ attr_writer :type
1307
+
1308
+ # A standalone scripted-message step in a flow, as supplied by clients.
1309
+ #
1310
+ # Unlike a prompt node, a speak node has no instructions or model — it isn't an
1311
+ # LLM turn. Reaching it delivers `message` to the user verbatim (with
1312
+ # `{{variable}}` interpolation), then routes via outgoing `llm` / `expression`
1313
+ # edges.
1314
+ sig do
1315
+ params(
1316
+ id: String,
1317
+ message: String,
1318
+ name: String,
1319
+ position:
1320
+ Telnyx::AI::AssistantCreateParams::ConversationFlow::Node::Speak::Position::OrHash,
1321
+ type:
1322
+ Telnyx::AI::AssistantCreateParams::ConversationFlow::Node::Speak::Type::OrSymbol
1323
+ ).returns(T.attached_class)
1324
+ end
1325
+ def self.new(
1326
+ # Caller-supplied unique identifier for this node within the flow.
1327
+ id:,
1328
+ # Message delivered to the user verbatim when the flow reaches this node. No LLM
1329
+ # turn — the text is spoken/sent exactly as written. `{{variable}}` placeholders
1330
+ # are interpolated from the conversation's dynamic variables; an unresolved
1331
+ # placeholder renders as an empty string. After delivering, the flow routes via
1332
+ # the node's outgoing `llm` / `expression` edges (commonly a single unconditional
1333
+ # edge).
1334
+ message:,
1335
+ # Optional human-readable label, displayed in authoring UIs.
1336
+ name: nil,
1337
+ # Optional canvas coordinates used by authoring UIs to lay out the graph. Ignored
1338
+ # by the runtime; round-trips so frontends can persist graph layout across
1339
+ # reloads.
1340
+ position: nil,
1341
+ # Node kind discriminator. Always `speak` for a speak node.
1342
+ type: nil
1343
+ )
1344
+ end
1345
+
1346
+ sig do
1347
+ override.returns(
1348
+ {
1349
+ id: String,
1350
+ message: String,
1351
+ name: String,
1352
+ position:
1353
+ Telnyx::AI::AssistantCreateParams::ConversationFlow::Node::Speak::Position,
1354
+ type:
1355
+ Telnyx::AI::AssistantCreateParams::ConversationFlow::Node::Speak::Type::OrSymbol
1356
+ }
1357
+ )
1358
+ end
1359
+ def to_hash
1360
+ end
1361
+
1362
+ class Position < Telnyx::Internal::Type::BaseModel
1363
+ OrHash =
1364
+ T.type_alias do
1365
+ T.any(
1366
+ Telnyx::AI::AssistantCreateParams::ConversationFlow::Node::Speak::Position,
1367
+ Telnyx::Internal::AnyHash
1368
+ )
1369
+ end
1370
+
1371
+ # Horizontal coordinate in the authoring canvas.
1372
+ sig { returns(Float) }
1373
+ attr_accessor :x
1374
+
1375
+ # Vertical coordinate in the authoring canvas.
1376
+ sig { returns(Float) }
1377
+ attr_accessor :y_
1378
+
1379
+ # Optional canvas coordinates used by authoring UIs to lay out the graph. Ignored
1380
+ # by the runtime; round-trips so frontends can persist graph layout across
1381
+ # reloads.
1382
+ sig { params(x: Float, y_: Float).returns(T.attached_class) }
1383
+ def self.new(
1384
+ # Horizontal coordinate in the authoring canvas.
1385
+ x:,
1386
+ # Vertical coordinate in the authoring canvas.
1387
+ y_:
1388
+ )
1389
+ end
1390
+
1391
+ sig { override.returns({ x: Float, y_: Float }) }
1392
+ def to_hash
1393
+ end
1394
+ end
1395
+
1396
+ # Node kind discriminator. Always `speak` for a speak node.
1397
+ module Type
1398
+ extend Telnyx::Internal::Type::Enum
1399
+
1400
+ TaggedSymbol =
1401
+ T.type_alias do
1402
+ T.all(
1403
+ Symbol,
1404
+ Telnyx::AI::AssistantCreateParams::ConversationFlow::Node::Speak::Type
1405
+ )
1406
+ end
1407
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
1408
+
1409
+ SPEAK =
1410
+ T.let(
1411
+ :speak,
1412
+ Telnyx::AI::AssistantCreateParams::ConversationFlow::Node::Speak::Type::TaggedSymbol
1413
+ )
1414
+
1415
+ sig do
1416
+ override.returns(
1417
+ T::Array[
1418
+ Telnyx::AI::AssistantCreateParams::ConversationFlow::Node::Speak::Type::TaggedSymbol
1419
+ ]
1420
+ )
1421
+ end
1422
+ def self.values
1423
+ end
1424
+ end
1425
+ end
1426
+
1237
1427
  sig do
1238
1428
  override.returns(
1239
1429
  T::Array[
@@ -1264,7 +1454,8 @@ module Telnyx
1264
1454
  returns(
1265
1455
  T.any(
1266
1456
  Telnyx::AI::AssistantCreateParams::ConversationFlow::Edge::Condition::Llm,
1267
- Telnyx::AI::AssistantCreateParams::ConversationFlow::Edge::Condition::Expression
1457
+ Telnyx::AI::AssistantCreateParams::ConversationFlow::Edge::Condition::Expression,
1458
+ Telnyx::AI::AssistantCreateParams::ConversationFlow::Edge::Condition::Default
1268
1459
  )
1269
1460
  )
1270
1461
  end
@@ -1298,7 +1489,8 @@ module Telnyx
1298
1489
  condition:
1299
1490
  T.any(
1300
1491
  Telnyx::AI::AssistantCreateParams::ConversationFlow::Edge::Condition::Llm::OrHash,
1301
- Telnyx::AI::AssistantCreateParams::ConversationFlow::Edge::Condition::Expression::OrHash
1492
+ Telnyx::AI::AssistantCreateParams::ConversationFlow::Edge::Condition::Expression::OrHash,
1493
+ Telnyx::AI::AssistantCreateParams::ConversationFlow::Edge::Condition::Default::OrHash
1302
1494
  ),
1303
1495
  start_node_id: String,
1304
1496
  target:
@@ -1329,7 +1521,8 @@ module Telnyx
1329
1521
  condition:
1330
1522
  T.any(
1331
1523
  Telnyx::AI::AssistantCreateParams::ConversationFlow::Edge::Condition::Llm,
1332
- Telnyx::AI::AssistantCreateParams::ConversationFlow::Edge::Condition::Expression
1524
+ Telnyx::AI::AssistantCreateParams::ConversationFlow::Edge::Condition::Expression,
1525
+ Telnyx::AI::AssistantCreateParams::ConversationFlow::Edge::Condition::Default
1333
1526
  ),
1334
1527
  start_node_id: String,
1335
1528
  target:
@@ -1352,7 +1545,8 @@ module Telnyx
1352
1545
  T.type_alias do
1353
1546
  T.any(
1354
1547
  Telnyx::AI::AssistantCreateParams::ConversationFlow::Edge::Condition::Llm,
1355
- Telnyx::AI::AssistantCreateParams::ConversationFlow::Edge::Condition::Expression
1548
+ Telnyx::AI::AssistantCreateParams::ConversationFlow::Edge::Condition::Expression,
1549
+ Telnyx::AI::AssistantCreateParams::ConversationFlow::Edge::Condition::Default
1356
1550
  )
1357
1551
  end
1358
1552
 
@@ -1647,6 +1841,36 @@ module Telnyx
1647
1841
  end
1648
1842
  end
1649
1843
 
1844
+ class Default < Telnyx::Internal::Type::BaseModel
1845
+ OrHash =
1846
+ T.type_alias do
1847
+ T.any(
1848
+ Telnyx::AI::AssistantCreateParams::ConversationFlow::Edge::Condition::Default,
1849
+ Telnyx::Internal::AnyHash
1850
+ )
1851
+ end
1852
+
1853
+ sig { returns(Symbol) }
1854
+ attr_accessor :type
1855
+
1856
+ # Fallback edge condition: fires only when no other edge's condition is true.
1857
+ #
1858
+ # Evaluated after every conditioned (`llm` / `expression`) edge regardless of
1859
+ # declaration order, so it routes the flow whenever none of the node's other
1860
+ # outgoing edges match. Valid **only** on edges leaving a `tool` or `speak` node,
1861
+ # where the deterministic step auto-advances and must always have somewhere to go.
1862
+ # A tool/speak node with any outgoing edge is required to carry exactly one
1863
+ # `default` edge so it never dead-ends; a tool/speak node with no outgoing edges
1864
+ # is a valid terminal step. Carries no parameters.
1865
+ sig { params(type: Symbol).returns(T.attached_class) }
1866
+ def self.new(type: :default)
1867
+ end
1868
+
1869
+ sig { override.returns({ type: Symbol }) }
1870
+ def to_hash
1871
+ end
1872
+ end
1873
+
1650
1874
  sig do
1651
1875
  override.returns(
1652
1876
  T::Array[
@@ -305,6 +305,17 @@ module Telnyx
305
305
  end
306
306
  attr_writer :custom_headers
307
307
 
308
+ # A description of the transfer tool. By default, Telnyx generates this
309
+ # automatically based on the configured targets. Typically only set when importing
310
+ # an assistant from another provider that allowed a custom description; in that
311
+ # case the provided value is preserved. Most users should leave this empty and let
312
+ # Telnyx manage it.
313
+ sig { returns(T.nilable(String)) }
314
+ attr_reader :description
315
+
316
+ sig { params(description: String).void }
317
+ attr_writer :description
318
+
308
319
  # Configuration for voicemail detection (AMD - Answering Machine Detection) on the
309
320
  # transferred call. Allows the assistant to detect when a voicemail system answers
310
321
  # the transferred call and take appropriate action.
@@ -349,6 +360,7 @@ module Telnyx
349
360
  T::Array[
350
361
  Telnyx::AI::AssistantTool::Transfer::Transfer::CustomHeader::OrHash
351
362
  ],
363
+ description: String,
352
364
  voicemail_detection:
353
365
  Telnyx::AI::AssistantTool::Transfer::Transfer::VoicemailDetection::OrHash,
354
366
  warm_message_delay_ms: T.nilable(Integer),
@@ -365,6 +377,12 @@ module Telnyx
365
377
  targets:,
366
378
  # Custom headers to be added to the SIP INVITE for the transfer command.
367
379
  custom_headers: nil,
380
+ # A description of the transfer tool. By default, Telnyx generates this
381
+ # automatically based on the configured targets. Typically only set when importing
382
+ # an assistant from another provider that allowed a custom description; in that
383
+ # case the provided value is preserved. Most users should leave this empty and let
384
+ # Telnyx manage it.
385
+ description: nil,
368
386
  # Configuration for voicemail detection (AMD - Answering Machine Detection) on the
369
387
  # transferred call. Allows the assistant to detect when a voicemail system answers
370
388
  # the transferred call and take appropriate action.
@@ -390,6 +408,7 @@ module Telnyx
390
408
  T::Array[
391
409
  Telnyx::AI::AssistantTool::Transfer::Transfer::CustomHeader
392
410
  ],
411
+ description: String,
393
412
  voicemail_detection:
394
413
  Telnyx::AI::AssistantTool::Transfer::Transfer::VoicemailDetection,
395
414
  warm_message_delay_ms: T.nilable(Integer),
@@ -578,7 +578,8 @@ module Telnyx
578
578
  T::Array[
579
579
  T.any(
580
580
  Telnyx::AI::AssistantUpdateParams::ConversationFlow::Node::Prompt,
581
- Telnyx::AI::AssistantUpdateParams::ConversationFlow::Node::Tool
581
+ Telnyx::AI::AssistantUpdateParams::ConversationFlow::Node::Tool,
582
+ Telnyx::AI::AssistantUpdateParams::ConversationFlow::Node::Speak
582
583
  )
583
584
  ]
584
585
  )
@@ -622,7 +623,8 @@ module Telnyx
622
623
  T::Array[
623
624
  T.any(
624
625
  Telnyx::AI::AssistantUpdateParams::ConversationFlow::Node::Prompt::OrHash,
625
- Telnyx::AI::AssistantUpdateParams::ConversationFlow::Node::Tool::OrHash
626
+ Telnyx::AI::AssistantUpdateParams::ConversationFlow::Node::Tool::OrHash,
627
+ Telnyx::AI::AssistantUpdateParams::ConversationFlow::Node::Speak::OrHash
626
628
  )
627
629
  ],
628
630
  start_node_id: String,
@@ -650,7 +652,8 @@ module Telnyx
650
652
  T::Array[
651
653
  T.any(
652
654
  Telnyx::AI::AssistantUpdateParams::ConversationFlow::Node::Prompt,
653
- Telnyx::AI::AssistantUpdateParams::ConversationFlow::Node::Tool
655
+ Telnyx::AI::AssistantUpdateParams::ConversationFlow::Node::Tool,
656
+ Telnyx::AI::AssistantUpdateParams::ConversationFlow::Node::Speak
654
657
  )
655
658
  ],
656
659
  start_node_id: String,
@@ -675,7 +678,8 @@ module Telnyx
675
678
  T.type_alias do
676
679
  T.any(
677
680
  Telnyx::AI::AssistantUpdateParams::ConversationFlow::Node::Prompt,
678
- Telnyx::AI::AssistantUpdateParams::ConversationFlow::Node::Tool
681
+ Telnyx::AI::AssistantUpdateParams::ConversationFlow::Node::Tool,
682
+ Telnyx::AI::AssistantUpdateParams::ConversationFlow::Node::Speak
679
683
  )
680
684
  end
681
685
 
@@ -1270,6 +1274,192 @@ module Telnyx
1270
1274
  end
1271
1275
  end
1272
1276
 
1277
+ class Speak < Telnyx::Internal::Type::BaseModel
1278
+ OrHash =
1279
+ T.type_alias do
1280
+ T.any(
1281
+ Telnyx::AI::AssistantUpdateParams::ConversationFlow::Node::Speak,
1282
+ Telnyx::Internal::AnyHash
1283
+ )
1284
+ end
1285
+
1286
+ # Caller-supplied unique identifier for this node within the flow.
1287
+ sig { returns(String) }
1288
+ attr_accessor :id
1289
+
1290
+ # Message delivered to the user verbatim when the flow reaches this node. No LLM
1291
+ # turn — the text is spoken/sent exactly as written. `{{variable}}` placeholders
1292
+ # are interpolated from the conversation's dynamic variables; an unresolved
1293
+ # placeholder renders as an empty string. After delivering, the flow routes via
1294
+ # the node's outgoing `llm` / `expression` edges (commonly a single unconditional
1295
+ # edge).
1296
+ sig { returns(String) }
1297
+ attr_accessor :message
1298
+
1299
+ # Optional human-readable label, displayed in authoring UIs.
1300
+ sig { returns(T.nilable(String)) }
1301
+ attr_reader :name
1302
+
1303
+ sig { params(name: String).void }
1304
+ attr_writer :name
1305
+
1306
+ # Optional canvas coordinates used by authoring UIs to lay out the graph. Ignored
1307
+ # by the runtime; round-trips so frontends can persist graph layout across
1308
+ # reloads.
1309
+ sig do
1310
+ returns(
1311
+ T.nilable(
1312
+ Telnyx::AI::AssistantUpdateParams::ConversationFlow::Node::Speak::Position
1313
+ )
1314
+ )
1315
+ end
1316
+ attr_reader :position
1317
+
1318
+ sig do
1319
+ params(
1320
+ position:
1321
+ Telnyx::AI::AssistantUpdateParams::ConversationFlow::Node::Speak::Position::OrHash
1322
+ ).void
1323
+ end
1324
+ attr_writer :position
1325
+
1326
+ # Node kind discriminator. Always `speak` for a speak node.
1327
+ sig do
1328
+ returns(
1329
+ T.nilable(
1330
+ Telnyx::AI::AssistantUpdateParams::ConversationFlow::Node::Speak::Type::OrSymbol
1331
+ )
1332
+ )
1333
+ end
1334
+ attr_reader :type
1335
+
1336
+ sig do
1337
+ params(
1338
+ type:
1339
+ Telnyx::AI::AssistantUpdateParams::ConversationFlow::Node::Speak::Type::OrSymbol
1340
+ ).void
1341
+ end
1342
+ attr_writer :type
1343
+
1344
+ # A standalone scripted-message step in a flow, as supplied by clients.
1345
+ #
1346
+ # Unlike a prompt node, a speak node has no instructions or model — it isn't an
1347
+ # LLM turn. Reaching it delivers `message` to the user verbatim (with
1348
+ # `{{variable}}` interpolation), then routes via outgoing `llm` / `expression`
1349
+ # edges.
1350
+ sig do
1351
+ params(
1352
+ id: String,
1353
+ message: String,
1354
+ name: String,
1355
+ position:
1356
+ Telnyx::AI::AssistantUpdateParams::ConversationFlow::Node::Speak::Position::OrHash,
1357
+ type:
1358
+ Telnyx::AI::AssistantUpdateParams::ConversationFlow::Node::Speak::Type::OrSymbol
1359
+ ).returns(T.attached_class)
1360
+ end
1361
+ def self.new(
1362
+ # Caller-supplied unique identifier for this node within the flow.
1363
+ id:,
1364
+ # Message delivered to the user verbatim when the flow reaches this node. No LLM
1365
+ # turn — the text is spoken/sent exactly as written. `{{variable}}` placeholders
1366
+ # are interpolated from the conversation's dynamic variables; an unresolved
1367
+ # placeholder renders as an empty string. After delivering, the flow routes via
1368
+ # the node's outgoing `llm` / `expression` edges (commonly a single unconditional
1369
+ # edge).
1370
+ message:,
1371
+ # Optional human-readable label, displayed in authoring UIs.
1372
+ name: nil,
1373
+ # Optional canvas coordinates used by authoring UIs to lay out the graph. Ignored
1374
+ # by the runtime; round-trips so frontends can persist graph layout across
1375
+ # reloads.
1376
+ position: nil,
1377
+ # Node kind discriminator. Always `speak` for a speak node.
1378
+ type: nil
1379
+ )
1380
+ end
1381
+
1382
+ sig do
1383
+ override.returns(
1384
+ {
1385
+ id: String,
1386
+ message: String,
1387
+ name: String,
1388
+ position:
1389
+ Telnyx::AI::AssistantUpdateParams::ConversationFlow::Node::Speak::Position,
1390
+ type:
1391
+ Telnyx::AI::AssistantUpdateParams::ConversationFlow::Node::Speak::Type::OrSymbol
1392
+ }
1393
+ )
1394
+ end
1395
+ def to_hash
1396
+ end
1397
+
1398
+ class Position < Telnyx::Internal::Type::BaseModel
1399
+ OrHash =
1400
+ T.type_alias do
1401
+ T.any(
1402
+ Telnyx::AI::AssistantUpdateParams::ConversationFlow::Node::Speak::Position,
1403
+ Telnyx::Internal::AnyHash
1404
+ )
1405
+ end
1406
+
1407
+ # Horizontal coordinate in the authoring canvas.
1408
+ sig { returns(Float) }
1409
+ attr_accessor :x
1410
+
1411
+ # Vertical coordinate in the authoring canvas.
1412
+ sig { returns(Float) }
1413
+ attr_accessor :y_
1414
+
1415
+ # Optional canvas coordinates used by authoring UIs to lay out the graph. Ignored
1416
+ # by the runtime; round-trips so frontends can persist graph layout across
1417
+ # reloads.
1418
+ sig { params(x: Float, y_: Float).returns(T.attached_class) }
1419
+ def self.new(
1420
+ # Horizontal coordinate in the authoring canvas.
1421
+ x:,
1422
+ # Vertical coordinate in the authoring canvas.
1423
+ y_:
1424
+ )
1425
+ end
1426
+
1427
+ sig { override.returns({ x: Float, y_: Float }) }
1428
+ def to_hash
1429
+ end
1430
+ end
1431
+
1432
+ # Node kind discriminator. Always `speak` for a speak node.
1433
+ module Type
1434
+ extend Telnyx::Internal::Type::Enum
1435
+
1436
+ TaggedSymbol =
1437
+ T.type_alias do
1438
+ T.all(
1439
+ Symbol,
1440
+ Telnyx::AI::AssistantUpdateParams::ConversationFlow::Node::Speak::Type
1441
+ )
1442
+ end
1443
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
1444
+
1445
+ SPEAK =
1446
+ T.let(
1447
+ :speak,
1448
+ Telnyx::AI::AssistantUpdateParams::ConversationFlow::Node::Speak::Type::TaggedSymbol
1449
+ )
1450
+
1451
+ sig do
1452
+ override.returns(
1453
+ T::Array[
1454
+ Telnyx::AI::AssistantUpdateParams::ConversationFlow::Node::Speak::Type::TaggedSymbol
1455
+ ]
1456
+ )
1457
+ end
1458
+ def self.values
1459
+ end
1460
+ end
1461
+ end
1462
+
1273
1463
  sig do
1274
1464
  override.returns(
1275
1465
  T::Array[
@@ -1300,7 +1490,8 @@ module Telnyx
1300
1490
  returns(
1301
1491
  T.any(
1302
1492
  Telnyx::AI::AssistantUpdateParams::ConversationFlow::Edge::Condition::Llm,
1303
- Telnyx::AI::AssistantUpdateParams::ConversationFlow::Edge::Condition::Expression
1493
+ Telnyx::AI::AssistantUpdateParams::ConversationFlow::Edge::Condition::Expression,
1494
+ Telnyx::AI::AssistantUpdateParams::ConversationFlow::Edge::Condition::Default
1304
1495
  )
1305
1496
  )
1306
1497
  end
@@ -1334,7 +1525,8 @@ module Telnyx
1334
1525
  condition:
1335
1526
  T.any(
1336
1527
  Telnyx::AI::AssistantUpdateParams::ConversationFlow::Edge::Condition::Llm::OrHash,
1337
- Telnyx::AI::AssistantUpdateParams::ConversationFlow::Edge::Condition::Expression::OrHash
1528
+ Telnyx::AI::AssistantUpdateParams::ConversationFlow::Edge::Condition::Expression::OrHash,
1529
+ Telnyx::AI::AssistantUpdateParams::ConversationFlow::Edge::Condition::Default::OrHash
1338
1530
  ),
1339
1531
  start_node_id: String,
1340
1532
  target:
@@ -1365,7 +1557,8 @@ module Telnyx
1365
1557
  condition:
1366
1558
  T.any(
1367
1559
  Telnyx::AI::AssistantUpdateParams::ConversationFlow::Edge::Condition::Llm,
1368
- Telnyx::AI::AssistantUpdateParams::ConversationFlow::Edge::Condition::Expression
1560
+ Telnyx::AI::AssistantUpdateParams::ConversationFlow::Edge::Condition::Expression,
1561
+ Telnyx::AI::AssistantUpdateParams::ConversationFlow::Edge::Condition::Default
1369
1562
  ),
1370
1563
  start_node_id: String,
1371
1564
  target:
@@ -1388,7 +1581,8 @@ module Telnyx
1388
1581
  T.type_alias do
1389
1582
  T.any(
1390
1583
  Telnyx::AI::AssistantUpdateParams::ConversationFlow::Edge::Condition::Llm,
1391
- Telnyx::AI::AssistantUpdateParams::ConversationFlow::Edge::Condition::Expression
1584
+ Telnyx::AI::AssistantUpdateParams::ConversationFlow::Edge::Condition::Expression,
1585
+ Telnyx::AI::AssistantUpdateParams::ConversationFlow::Edge::Condition::Default
1392
1586
  )
1393
1587
  end
1394
1588
 
@@ -1683,6 +1877,36 @@ module Telnyx
1683
1877
  end
1684
1878
  end
1685
1879
 
1880
+ class Default < Telnyx::Internal::Type::BaseModel
1881
+ OrHash =
1882
+ T.type_alias do
1883
+ T.any(
1884
+ Telnyx::AI::AssistantUpdateParams::ConversationFlow::Edge::Condition::Default,
1885
+ Telnyx::Internal::AnyHash
1886
+ )
1887
+ end
1888
+
1889
+ sig { returns(Symbol) }
1890
+ attr_accessor :type
1891
+
1892
+ # Fallback edge condition: fires only when no other edge's condition is true.
1893
+ #
1894
+ # Evaluated after every conditioned (`llm` / `expression`) edge regardless of
1895
+ # declaration order, so it routes the flow whenever none of the node's other
1896
+ # outgoing edges match. Valid **only** on edges leaving a `tool` or `speak` node,
1897
+ # where the deterministic step auto-advances and must always have somewhere to go.
1898
+ # A tool/speak node with any outgoing edge is required to carry exactly one
1899
+ # `default` edge so it never dead-ends; a tool/speak node with no outgoing edges
1900
+ # is a valid terminal step. Carries no parameters.
1901
+ sig { params(type: Symbol).returns(T.attached_class) }
1902
+ def self.new(type: :default)
1903
+ end
1904
+
1905
+ sig { override.returns({ type: Symbol }) }
1906
+ def to_hash
1907
+ end
1908
+ end
1909
+
1686
1910
  sig do
1687
1911
  override.returns(
1688
1912
  T::Array[