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.
@@ -572,7 +572,8 @@ module Telnyx
572
572
  T::Array[
573
573
  T.any(
574
574
  Telnyx::AI::Assistants::UpdateAssistant::ConversationFlow::Node::Prompt,
575
- Telnyx::AI::Assistants::UpdateAssistant::ConversationFlow::Node::Tool
575
+ Telnyx::AI::Assistants::UpdateAssistant::ConversationFlow::Node::Tool,
576
+ Telnyx::AI::Assistants::UpdateAssistant::ConversationFlow::Node::Speak
576
577
  )
577
578
  ]
578
579
  )
@@ -616,7 +617,8 @@ module Telnyx
616
617
  T::Array[
617
618
  T.any(
618
619
  Telnyx::AI::Assistants::UpdateAssistant::ConversationFlow::Node::Prompt::OrHash,
619
- Telnyx::AI::Assistants::UpdateAssistant::ConversationFlow::Node::Tool::OrHash
620
+ Telnyx::AI::Assistants::UpdateAssistant::ConversationFlow::Node::Tool::OrHash,
621
+ Telnyx::AI::Assistants::UpdateAssistant::ConversationFlow::Node::Speak::OrHash
620
622
  )
621
623
  ],
622
624
  start_node_id: String,
@@ -644,7 +646,8 @@ module Telnyx
644
646
  T::Array[
645
647
  T.any(
646
648
  Telnyx::AI::Assistants::UpdateAssistant::ConversationFlow::Node::Prompt,
647
- Telnyx::AI::Assistants::UpdateAssistant::ConversationFlow::Node::Tool
649
+ Telnyx::AI::Assistants::UpdateAssistant::ConversationFlow::Node::Tool,
650
+ Telnyx::AI::Assistants::UpdateAssistant::ConversationFlow::Node::Speak
648
651
  )
649
652
  ],
650
653
  start_node_id: String,
@@ -669,7 +672,8 @@ module Telnyx
669
672
  T.type_alias do
670
673
  T.any(
671
674
  Telnyx::AI::Assistants::UpdateAssistant::ConversationFlow::Node::Prompt,
672
- Telnyx::AI::Assistants::UpdateAssistant::ConversationFlow::Node::Tool
675
+ Telnyx::AI::Assistants::UpdateAssistant::ConversationFlow::Node::Tool,
676
+ Telnyx::AI::Assistants::UpdateAssistant::ConversationFlow::Node::Speak
673
677
  )
674
678
  end
675
679
 
@@ -1264,6 +1268,192 @@ module Telnyx
1264
1268
  end
1265
1269
  end
1266
1270
 
1271
+ class Speak < Telnyx::Internal::Type::BaseModel
1272
+ OrHash =
1273
+ T.type_alias do
1274
+ T.any(
1275
+ Telnyx::AI::Assistants::UpdateAssistant::ConversationFlow::Node::Speak,
1276
+ Telnyx::Internal::AnyHash
1277
+ )
1278
+ end
1279
+
1280
+ # Caller-supplied unique identifier for this node within the flow.
1281
+ sig { returns(String) }
1282
+ attr_accessor :id
1283
+
1284
+ # Message delivered to the user verbatim when the flow reaches this node. No LLM
1285
+ # turn — the text is spoken/sent exactly as written. `{{variable}}` placeholders
1286
+ # are interpolated from the conversation's dynamic variables; an unresolved
1287
+ # placeholder renders as an empty string. After delivering, the flow routes via
1288
+ # the node's outgoing `llm` / `expression` edges (commonly a single unconditional
1289
+ # edge).
1290
+ sig { returns(String) }
1291
+ attr_accessor :message
1292
+
1293
+ # Optional human-readable label, displayed in authoring UIs.
1294
+ sig { returns(T.nilable(String)) }
1295
+ attr_reader :name
1296
+
1297
+ sig { params(name: String).void }
1298
+ attr_writer :name
1299
+
1300
+ # Optional canvas coordinates used by authoring UIs to lay out the graph. Ignored
1301
+ # by the runtime; round-trips so frontends can persist graph layout across
1302
+ # reloads.
1303
+ sig do
1304
+ returns(
1305
+ T.nilable(
1306
+ Telnyx::AI::Assistants::UpdateAssistant::ConversationFlow::Node::Speak::Position
1307
+ )
1308
+ )
1309
+ end
1310
+ attr_reader :position
1311
+
1312
+ sig do
1313
+ params(
1314
+ position:
1315
+ Telnyx::AI::Assistants::UpdateAssistant::ConversationFlow::Node::Speak::Position::OrHash
1316
+ ).void
1317
+ end
1318
+ attr_writer :position
1319
+
1320
+ # Node kind discriminator. Always `speak` for a speak node.
1321
+ sig do
1322
+ returns(
1323
+ T.nilable(
1324
+ Telnyx::AI::Assistants::UpdateAssistant::ConversationFlow::Node::Speak::Type::OrSymbol
1325
+ )
1326
+ )
1327
+ end
1328
+ attr_reader :type
1329
+
1330
+ sig do
1331
+ params(
1332
+ type:
1333
+ Telnyx::AI::Assistants::UpdateAssistant::ConversationFlow::Node::Speak::Type::OrSymbol
1334
+ ).void
1335
+ end
1336
+ attr_writer :type
1337
+
1338
+ # A standalone scripted-message step in a flow, as supplied by clients.
1339
+ #
1340
+ # Unlike a prompt node, a speak node has no instructions or model — it isn't an
1341
+ # LLM turn. Reaching it delivers `message` to the user verbatim (with
1342
+ # `{{variable}}` interpolation), then routes via outgoing `llm` / `expression`
1343
+ # edges.
1344
+ sig do
1345
+ params(
1346
+ id: String,
1347
+ message: String,
1348
+ name: String,
1349
+ position:
1350
+ Telnyx::AI::Assistants::UpdateAssistant::ConversationFlow::Node::Speak::Position::OrHash,
1351
+ type:
1352
+ Telnyx::AI::Assistants::UpdateAssistant::ConversationFlow::Node::Speak::Type::OrSymbol
1353
+ ).returns(T.attached_class)
1354
+ end
1355
+ def self.new(
1356
+ # Caller-supplied unique identifier for this node within the flow.
1357
+ id:,
1358
+ # Message delivered to the user verbatim when the flow reaches this node. No LLM
1359
+ # turn — the text is spoken/sent exactly as written. `{{variable}}` placeholders
1360
+ # are interpolated from the conversation's dynamic variables; an unresolved
1361
+ # placeholder renders as an empty string. After delivering, the flow routes via
1362
+ # the node's outgoing `llm` / `expression` edges (commonly a single unconditional
1363
+ # edge).
1364
+ message:,
1365
+ # Optional human-readable label, displayed in authoring UIs.
1366
+ name: nil,
1367
+ # Optional canvas coordinates used by authoring UIs to lay out the graph. Ignored
1368
+ # by the runtime; round-trips so frontends can persist graph layout across
1369
+ # reloads.
1370
+ position: nil,
1371
+ # Node kind discriminator. Always `speak` for a speak node.
1372
+ type: nil
1373
+ )
1374
+ end
1375
+
1376
+ sig do
1377
+ override.returns(
1378
+ {
1379
+ id: String,
1380
+ message: String,
1381
+ name: String,
1382
+ position:
1383
+ Telnyx::AI::Assistants::UpdateAssistant::ConversationFlow::Node::Speak::Position,
1384
+ type:
1385
+ Telnyx::AI::Assistants::UpdateAssistant::ConversationFlow::Node::Speak::Type::OrSymbol
1386
+ }
1387
+ )
1388
+ end
1389
+ def to_hash
1390
+ end
1391
+
1392
+ class Position < Telnyx::Internal::Type::BaseModel
1393
+ OrHash =
1394
+ T.type_alias do
1395
+ T.any(
1396
+ Telnyx::AI::Assistants::UpdateAssistant::ConversationFlow::Node::Speak::Position,
1397
+ Telnyx::Internal::AnyHash
1398
+ )
1399
+ end
1400
+
1401
+ # Horizontal coordinate in the authoring canvas.
1402
+ sig { returns(Float) }
1403
+ attr_accessor :x
1404
+
1405
+ # Vertical coordinate in the authoring canvas.
1406
+ sig { returns(Float) }
1407
+ attr_accessor :y_
1408
+
1409
+ # Optional canvas coordinates used by authoring UIs to lay out the graph. Ignored
1410
+ # by the runtime; round-trips so frontends can persist graph layout across
1411
+ # reloads.
1412
+ sig { params(x: Float, y_: Float).returns(T.attached_class) }
1413
+ def self.new(
1414
+ # Horizontal coordinate in the authoring canvas.
1415
+ x:,
1416
+ # Vertical coordinate in the authoring canvas.
1417
+ y_:
1418
+ )
1419
+ end
1420
+
1421
+ sig { override.returns({ x: Float, y_: Float }) }
1422
+ def to_hash
1423
+ end
1424
+ end
1425
+
1426
+ # Node kind discriminator. Always `speak` for a speak node.
1427
+ module Type
1428
+ extend Telnyx::Internal::Type::Enum
1429
+
1430
+ TaggedSymbol =
1431
+ T.type_alias do
1432
+ T.all(
1433
+ Symbol,
1434
+ Telnyx::AI::Assistants::UpdateAssistant::ConversationFlow::Node::Speak::Type
1435
+ )
1436
+ end
1437
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
1438
+
1439
+ SPEAK =
1440
+ T.let(
1441
+ :speak,
1442
+ Telnyx::AI::Assistants::UpdateAssistant::ConversationFlow::Node::Speak::Type::TaggedSymbol
1443
+ )
1444
+
1445
+ sig do
1446
+ override.returns(
1447
+ T::Array[
1448
+ Telnyx::AI::Assistants::UpdateAssistant::ConversationFlow::Node::Speak::Type::TaggedSymbol
1449
+ ]
1450
+ )
1451
+ end
1452
+ def self.values
1453
+ end
1454
+ end
1455
+ end
1456
+
1267
1457
  sig do
1268
1458
  override.returns(
1269
1459
  T::Array[
@@ -1294,7 +1484,8 @@ module Telnyx
1294
1484
  returns(
1295
1485
  T.any(
1296
1486
  Telnyx::AI::Assistants::UpdateAssistant::ConversationFlow::Edge::Condition::Llm,
1297
- Telnyx::AI::Assistants::UpdateAssistant::ConversationFlow::Edge::Condition::Expression
1487
+ Telnyx::AI::Assistants::UpdateAssistant::ConversationFlow::Edge::Condition::Expression,
1488
+ Telnyx::AI::Assistants::UpdateAssistant::ConversationFlow::Edge::Condition::Default
1298
1489
  )
1299
1490
  )
1300
1491
  end
@@ -1328,7 +1519,8 @@ module Telnyx
1328
1519
  condition:
1329
1520
  T.any(
1330
1521
  Telnyx::AI::Assistants::UpdateAssistant::ConversationFlow::Edge::Condition::Llm::OrHash,
1331
- Telnyx::AI::Assistants::UpdateAssistant::ConversationFlow::Edge::Condition::Expression::OrHash
1522
+ Telnyx::AI::Assistants::UpdateAssistant::ConversationFlow::Edge::Condition::Expression::OrHash,
1523
+ Telnyx::AI::Assistants::UpdateAssistant::ConversationFlow::Edge::Condition::Default::OrHash
1332
1524
  ),
1333
1525
  start_node_id: String,
1334
1526
  target:
@@ -1359,7 +1551,8 @@ module Telnyx
1359
1551
  condition:
1360
1552
  T.any(
1361
1553
  Telnyx::AI::Assistants::UpdateAssistant::ConversationFlow::Edge::Condition::Llm,
1362
- Telnyx::AI::Assistants::UpdateAssistant::ConversationFlow::Edge::Condition::Expression
1554
+ Telnyx::AI::Assistants::UpdateAssistant::ConversationFlow::Edge::Condition::Expression,
1555
+ Telnyx::AI::Assistants::UpdateAssistant::ConversationFlow::Edge::Condition::Default
1363
1556
  ),
1364
1557
  start_node_id: String,
1365
1558
  target:
@@ -1382,7 +1575,8 @@ module Telnyx
1382
1575
  T.type_alias do
1383
1576
  T.any(
1384
1577
  Telnyx::AI::Assistants::UpdateAssistant::ConversationFlow::Edge::Condition::Llm,
1385
- Telnyx::AI::Assistants::UpdateAssistant::ConversationFlow::Edge::Condition::Expression
1578
+ Telnyx::AI::Assistants::UpdateAssistant::ConversationFlow::Edge::Condition::Expression,
1579
+ Telnyx::AI::Assistants::UpdateAssistant::ConversationFlow::Edge::Condition::Default
1386
1580
  )
1387
1581
  end
1388
1582
 
@@ -1679,6 +1873,36 @@ module Telnyx
1679
1873
  end
1680
1874
  end
1681
1875
 
1876
+ class Default < Telnyx::Internal::Type::BaseModel
1877
+ OrHash =
1878
+ T.type_alias do
1879
+ T.any(
1880
+ Telnyx::AI::Assistants::UpdateAssistant::ConversationFlow::Edge::Condition::Default,
1881
+ Telnyx::Internal::AnyHash
1882
+ )
1883
+ end
1884
+
1885
+ sig { returns(Symbol) }
1886
+ attr_accessor :type
1887
+
1888
+ # Fallback edge condition: fires only when no other edge's condition is true.
1889
+ #
1890
+ # Evaluated after every conditioned (`llm` / `expression`) edge regardless of
1891
+ # declaration order, so it routes the flow whenever none of the node's other
1892
+ # outgoing edges match. Valid **only** on edges leaving a `tool` or `speak` node,
1893
+ # where the deterministic step auto-advances and must always have somewhere to go.
1894
+ # A tool/speak node with any outgoing edge is required to carry exactly one
1895
+ # `default` edge so it never dead-ends; a tool/speak node with no outgoing edges
1896
+ # is a valid terminal step. Carries no parameters.
1897
+ sig { params(type: Symbol).returns(T.attached_class) }
1898
+ def self.new(type: :default)
1899
+ end
1900
+
1901
+ sig { override.returns({ type: Symbol }) }
1902
+ def to_hash
1903
+ end
1904
+ end
1905
+
1682
1906
  sig do
1683
1907
  override.returns(
1684
1908
  T::Array[
@@ -578,7 +578,8 @@ module Telnyx
578
578
  T::Array[
579
579
  T.any(
580
580
  Telnyx::AI::InferenceEmbedding::ConversationFlow::Node::Prompt::OrHash,
581
- Telnyx::AI::InferenceEmbedding::ConversationFlow::Node::Tool::OrHash
581
+ Telnyx::AI::InferenceEmbedding::ConversationFlow::Node::Tool::OrHash,
582
+ Telnyx::AI::InferenceEmbedding::ConversationFlow::Node::Speak::OrHash
582
583
  )
583
584
  ],
584
585
  start_node_id: String,
@@ -624,7 +625,8 @@ module Telnyx
624
625
  T.type_alias do
625
626
  T.any(
626
627
  Telnyx::AI::InferenceEmbedding::ConversationFlow::Node::Prompt,
627
- Telnyx::AI::InferenceEmbedding::ConversationFlow::Node::Tool
628
+ Telnyx::AI::InferenceEmbedding::ConversationFlow::Node::Tool,
629
+ Telnyx::AI::InferenceEmbedding::ConversationFlow::Node::Speak
628
630
  )
629
631
  end
630
632
 
@@ -1313,6 +1315,187 @@ module Telnyx
1313
1315
  end
1314
1316
  end
1315
1317
 
1318
+ class Speak < Telnyx::Internal::Type::BaseModel
1319
+ OrHash =
1320
+ T.type_alias do
1321
+ T.any(
1322
+ Telnyx::AI::InferenceEmbedding::ConversationFlow::Node::Speak,
1323
+ Telnyx::Internal::AnyHash
1324
+ )
1325
+ end
1326
+
1327
+ # Caller-supplied unique identifier for this node within the flow.
1328
+ sig { returns(String) }
1329
+ attr_accessor :id
1330
+
1331
+ # Message delivered to the user verbatim when the flow reaches this node. No LLM
1332
+ # turn — the text is spoken/sent exactly as written. `{{variable}}` placeholders
1333
+ # are interpolated from the conversation's dynamic variables; an unresolved
1334
+ # placeholder renders as an empty string. After delivering, the flow routes via
1335
+ # the node's outgoing `llm` / `expression` edges (commonly a single unconditional
1336
+ # edge).
1337
+ sig { returns(String) }
1338
+ attr_accessor :message
1339
+
1340
+ # Optional human-readable label, displayed in authoring UIs.
1341
+ sig { returns(T.nilable(String)) }
1342
+ attr_reader :name
1343
+
1344
+ sig { params(name: String).void }
1345
+ attr_writer :name
1346
+
1347
+ # Optional canvas coordinates used by authoring UIs to lay out the graph. Ignored
1348
+ # by the runtime; round-trips so frontends can persist graph layout across
1349
+ # reloads.
1350
+ sig do
1351
+ returns(
1352
+ T.nilable(
1353
+ Telnyx::AI::InferenceEmbedding::ConversationFlow::Node::Speak::Position
1354
+ )
1355
+ )
1356
+ end
1357
+ attr_reader :position
1358
+
1359
+ sig do
1360
+ params(
1361
+ position:
1362
+ Telnyx::AI::InferenceEmbedding::ConversationFlow::Node::Speak::Position::OrHash
1363
+ ).void
1364
+ end
1365
+ attr_writer :position
1366
+
1367
+ # Node kind discriminator. Always `speak` for a speak node.
1368
+ sig do
1369
+ returns(
1370
+ T.nilable(
1371
+ Telnyx::AI::InferenceEmbedding::ConversationFlow::Node::Speak::Type::TaggedSymbol
1372
+ )
1373
+ )
1374
+ end
1375
+ attr_reader :type
1376
+
1377
+ sig do
1378
+ params(
1379
+ type:
1380
+ Telnyx::AI::InferenceEmbedding::ConversationFlow::Node::Speak::Type::OrSymbol
1381
+ ).void
1382
+ end
1383
+ attr_writer :type
1384
+
1385
+ # A standalone scripted-message step in a flow, as returned by the API.
1386
+ sig do
1387
+ params(
1388
+ id: String,
1389
+ message: String,
1390
+ name: String,
1391
+ position:
1392
+ Telnyx::AI::InferenceEmbedding::ConversationFlow::Node::Speak::Position::OrHash,
1393
+ type:
1394
+ Telnyx::AI::InferenceEmbedding::ConversationFlow::Node::Speak::Type::OrSymbol
1395
+ ).returns(T.attached_class)
1396
+ end
1397
+ def self.new(
1398
+ # Caller-supplied unique identifier for this node within the flow.
1399
+ id:,
1400
+ # Message delivered to the user verbatim when the flow reaches this node. No LLM
1401
+ # turn — the text is spoken/sent exactly as written. `{{variable}}` placeholders
1402
+ # are interpolated from the conversation's dynamic variables; an unresolved
1403
+ # placeholder renders as an empty string. After delivering, the flow routes via
1404
+ # the node's outgoing `llm` / `expression` edges (commonly a single unconditional
1405
+ # edge).
1406
+ message:,
1407
+ # Optional human-readable label, displayed in authoring UIs.
1408
+ name: nil,
1409
+ # Optional canvas coordinates used by authoring UIs to lay out the graph. Ignored
1410
+ # by the runtime; round-trips so frontends can persist graph layout across
1411
+ # reloads.
1412
+ position: nil,
1413
+ # Node kind discriminator. Always `speak` for a speak node.
1414
+ type: nil
1415
+ )
1416
+ end
1417
+
1418
+ sig do
1419
+ override.returns(
1420
+ {
1421
+ id: String,
1422
+ message: String,
1423
+ name: String,
1424
+ position:
1425
+ Telnyx::AI::InferenceEmbedding::ConversationFlow::Node::Speak::Position,
1426
+ type:
1427
+ Telnyx::AI::InferenceEmbedding::ConversationFlow::Node::Speak::Type::TaggedSymbol
1428
+ }
1429
+ )
1430
+ end
1431
+ def to_hash
1432
+ end
1433
+
1434
+ class Position < Telnyx::Internal::Type::BaseModel
1435
+ OrHash =
1436
+ T.type_alias do
1437
+ T.any(
1438
+ Telnyx::AI::InferenceEmbedding::ConversationFlow::Node::Speak::Position,
1439
+ Telnyx::Internal::AnyHash
1440
+ )
1441
+ end
1442
+
1443
+ # Horizontal coordinate in the authoring canvas.
1444
+ sig { returns(Float) }
1445
+ attr_accessor :x
1446
+
1447
+ # Vertical coordinate in the authoring canvas.
1448
+ sig { returns(Float) }
1449
+ attr_accessor :y_
1450
+
1451
+ # Optional canvas coordinates used by authoring UIs to lay out the graph. Ignored
1452
+ # by the runtime; round-trips so frontends can persist graph layout across
1453
+ # reloads.
1454
+ sig { params(x: Float, y_: Float).returns(T.attached_class) }
1455
+ def self.new(
1456
+ # Horizontal coordinate in the authoring canvas.
1457
+ x:,
1458
+ # Vertical coordinate in the authoring canvas.
1459
+ y_:
1460
+ )
1461
+ end
1462
+
1463
+ sig { override.returns({ x: Float, y_: Float }) }
1464
+ def to_hash
1465
+ end
1466
+ end
1467
+
1468
+ # Node kind discriminator. Always `speak` for a speak node.
1469
+ module Type
1470
+ extend Telnyx::Internal::Type::Enum
1471
+
1472
+ TaggedSymbol =
1473
+ T.type_alias do
1474
+ T.all(
1475
+ Symbol,
1476
+ Telnyx::AI::InferenceEmbedding::ConversationFlow::Node::Speak::Type
1477
+ )
1478
+ end
1479
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
1480
+
1481
+ SPEAK =
1482
+ T.let(
1483
+ :speak,
1484
+ Telnyx::AI::InferenceEmbedding::ConversationFlow::Node::Speak::Type::TaggedSymbol
1485
+ )
1486
+
1487
+ sig do
1488
+ override.returns(
1489
+ T::Array[
1490
+ Telnyx::AI::InferenceEmbedding::ConversationFlow::Node::Speak::Type::TaggedSymbol
1491
+ ]
1492
+ )
1493
+ end
1494
+ def self.values
1495
+ end
1496
+ end
1497
+ end
1498
+
1316
1499
  sig do
1317
1500
  override.returns(
1318
1501
  T::Array[
@@ -1371,7 +1554,8 @@ module Telnyx
1371
1554
  condition:
1372
1555
  T.any(
1373
1556
  Telnyx::AI::InferenceEmbedding::ConversationFlow::Edge::Condition::Llm::OrHash,
1374
- Telnyx::AI::InferenceEmbedding::ConversationFlow::Edge::Condition::Expression::OrHash
1557
+ Telnyx::AI::InferenceEmbedding::ConversationFlow::Edge::Condition::Expression::OrHash,
1558
+ Telnyx::AI::InferenceEmbedding::ConversationFlow::Edge::Condition::Default::OrHash
1375
1559
  ),
1376
1560
  start_node_id: String,
1377
1561
  target:
@@ -1419,7 +1603,8 @@ module Telnyx
1419
1603
  T.type_alias do
1420
1604
  T.any(
1421
1605
  Telnyx::AI::InferenceEmbedding::ConversationFlow::Edge::Condition::Llm,
1422
- Telnyx::AI::InferenceEmbedding::ConversationFlow::Edge::Condition::Expression
1606
+ Telnyx::AI::InferenceEmbedding::ConversationFlow::Edge::Condition::Expression,
1607
+ Telnyx::AI::InferenceEmbedding::ConversationFlow::Edge::Condition::Default
1423
1608
  )
1424
1609
  end
1425
1610
 
@@ -1702,6 +1887,36 @@ module Telnyx
1702
1887
  end
1703
1888
  end
1704
1889
 
1890
+ class Default < Telnyx::Internal::Type::BaseModel
1891
+ OrHash =
1892
+ T.type_alias do
1893
+ T.any(
1894
+ Telnyx::AI::InferenceEmbedding::ConversationFlow::Edge::Condition::Default,
1895
+ Telnyx::Internal::AnyHash
1896
+ )
1897
+ end
1898
+
1899
+ sig { returns(Symbol) }
1900
+ attr_accessor :type
1901
+
1902
+ # Fallback edge condition: fires only when no other edge's condition is true.
1903
+ #
1904
+ # Evaluated after every conditioned (`llm` / `expression`) edge regardless of
1905
+ # declaration order, so it routes the flow whenever none of the node's other
1906
+ # outgoing edges match. Valid **only** on edges leaving a `tool` or `speak` node,
1907
+ # where the deterministic step auto-advances and must always have somewhere to go.
1908
+ # A tool/speak node with any outgoing edge is required to carry exactly one
1909
+ # `default` edge so it never dead-ends; a tool/speak node with no outgoing edges
1910
+ # is a valid terminal step. Carries no parameters.
1911
+ sig { params(type: Symbol).returns(T.attached_class) }
1912
+ def self.new(type: :default)
1913
+ end
1914
+
1915
+ sig { override.returns({ type: Symbol }) }
1916
+ def to_hash
1917
+ end
1918
+ end
1919
+
1705
1920
  sig do
1706
1921
  override.returns(
1707
1922
  T::Array[
@@ -277,6 +277,7 @@ module Telnyx
277
277
  type node =
278
278
  Telnyx::AI::AssistantCreateParams::ConversationFlow::Node::Prompt
279
279
  | Telnyx::AI::AssistantCreateParams::ConversationFlow::Node::Tool
280
+ | Telnyx::AI::AssistantCreateParams::ConversationFlow::Node::Speak
280
281
 
281
282
  module Node
282
283
  extend Telnyx::Internal::Type::Union
@@ -507,6 +508,75 @@ module Telnyx
507
508
  end
508
509
  end
509
510
 
511
+ type speak =
512
+ {
513
+ id: String,
514
+ message: String,
515
+ name: String,
516
+ position: Telnyx::AI::AssistantCreateParams::ConversationFlow::Node::Speak::Position,
517
+ type: Telnyx::Models::AI::AssistantCreateParams::ConversationFlow::Node::Speak::type_
518
+ }
519
+
520
+ class Speak < Telnyx::Internal::Type::BaseModel
521
+ attr_accessor id: String
522
+
523
+ attr_accessor message: String
524
+
525
+ attr_reader name: String?
526
+
527
+ def name=: (String) -> String
528
+
529
+ attr_reader position: Telnyx::AI::AssistantCreateParams::ConversationFlow::Node::Speak::Position?
530
+
531
+ def position=: (
532
+ Telnyx::AI::AssistantCreateParams::ConversationFlow::Node::Speak::Position
533
+ ) -> Telnyx::AI::AssistantCreateParams::ConversationFlow::Node::Speak::Position
534
+
535
+ attr_reader type: Telnyx::Models::AI::AssistantCreateParams::ConversationFlow::Node::Speak::type_?
536
+
537
+ def type=: (
538
+ Telnyx::Models::AI::AssistantCreateParams::ConversationFlow::Node::Speak::type_
539
+ ) -> Telnyx::Models::AI::AssistantCreateParams::ConversationFlow::Node::Speak::type_
540
+
541
+ def initialize: (
542
+ id: String,
543
+ message: String,
544
+ ?name: String,
545
+ ?position: Telnyx::AI::AssistantCreateParams::ConversationFlow::Node::Speak::Position,
546
+ ?type: Telnyx::Models::AI::AssistantCreateParams::ConversationFlow::Node::Speak::type_
547
+ ) -> void
548
+
549
+ def to_hash: -> {
550
+ id: String,
551
+ message: String,
552
+ name: String,
553
+ position: Telnyx::AI::AssistantCreateParams::ConversationFlow::Node::Speak::Position,
554
+ type: Telnyx::Models::AI::AssistantCreateParams::ConversationFlow::Node::Speak::type_
555
+ }
556
+
557
+ type position = { x: Float, y_: Float }
558
+
559
+ class Position < Telnyx::Internal::Type::BaseModel
560
+ attr_accessor x: Float
561
+
562
+ attr_accessor y_: Float
563
+
564
+ def initialize: (x: Float, y_: Float) -> void
565
+
566
+ def to_hash: -> { x: Float, y_: Float }
567
+ end
568
+
569
+ type type_ = :speak
570
+
571
+ module Type
572
+ extend Telnyx::Internal::Type::Enum
573
+
574
+ SPEAK: :speak
575
+
576
+ def self?.values: -> ::Array[Telnyx::Models::AI::AssistantCreateParams::ConversationFlow::Node::Speak::type_]
577
+ end
578
+ end
579
+
510
580
  def self?.variants: -> ::Array[Telnyx::Models::AI::AssistantCreateParams::ConversationFlow::node]
511
581
  end
512
582
 
@@ -544,6 +614,7 @@ module Telnyx
544
614
  type condition =
545
615
  Telnyx::AI::AssistantCreateParams::ConversationFlow::Edge::Condition::Llm
546
616
  | Telnyx::AI::AssistantCreateParams::ConversationFlow::Edge::Condition::Expression
617
+ | Telnyx::AI::AssistantCreateParams::ConversationFlow::Edge::Condition::Default
547
618
 
548
619
  module Condition
549
620
  extend Telnyx::Internal::Type::Union
@@ -653,6 +724,16 @@ module Telnyx
653
724
  end
654
725
  end
655
726
 
727
+ type default = { type: :default }
728
+
729
+ class Default < Telnyx::Internal::Type::BaseModel
730
+ attr_accessor type: :default
731
+
732
+ def initialize: (?type: :default) -> void
733
+
734
+ def to_hash: -> { type: :default }
735
+ end
736
+
656
737
  def self?.variants: -> ::Array[Telnyx::Models::AI::AssistantCreateParams::ConversationFlow::Edge::condition]
657
738
  end
658
739