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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4676560827be51866793bae28744fcad5a78ea1e6776e804597ef1aac0f190a4
4
- data.tar.gz: 5b9b67dd126addacde8219a43f41f4370b5127c909ba77ede6625fa00ffca0bb
3
+ metadata.gz: 38400c7c7133b3cfaa627f43c292c3194d2f87efaf0e819c13088be952500785
4
+ data.tar.gz: 58e04f17c0d460699113f2f91648083a1573ca42de2db3aca7dc778ad1bc68a8
5
5
  SHA512:
6
- metadata.gz: 73c4a64ee675ca96d79a76e03aff2447d69eb71fd10a8ddbd9554e068545e5f6d469f0ddebf1ed8b5b7139d5025fb7fc44074339136d18d1b045cf7b4dfdbd85
7
- data.tar.gz: 40138b13daf242d20083ae36e09a6ded91f1d9220e7aa6c26c6a2c269a4428f61147136a710c2a939b956cfc0cdd312ca0fe61889c7d71cc907845fe8acc0f7b
6
+ metadata.gz: b3f601736a30fef841818e9e766236ebcf276fbf55424040a8e2c02798ab34e0ab895b2c1ccd30cc84d342486a8d1c79ef8e9b10e23b5199ea119c479f42cd15
7
+ data.tar.gz: 056d6e835b260c5ab4f1f0783657e602d13614b363b4ad7d00ee5138e01ef05d3cc9270ec13ed25c0fee4b73d65671e7b4d4e35ab395100d4bb0dfc3dd17da02
data/CHANGELOG.md CHANGED
@@ -1,5 +1,21 @@
1
1
  # Changelog
2
2
 
3
+ ## 5.126.0 (2026-06-05)
4
+
5
+ Full Changelog: [v5.125.0...v5.126.0](https://github.com/team-telnyx/telnyx-ruby/compare/v5.125.0...v5.126.0)
6
+
7
+ ### Features
8
+
9
+ * Conversation flow update ([4f9dd27](https://github.com/team-telnyx/telnyx-ruby/commit/4f9dd27ac620fef2f1d080f4ba1bdce028ce70c5))
10
+
11
+ ## 5.125.0 (2026-06-04)
12
+
13
+ Full Changelog: [v5.124.0...v5.125.0](https://github.com/team-telnyx/telnyx-ruby/compare/v5.124.0...v5.125.0)
14
+
15
+ ### Features
16
+
17
+ * **inference:** expose description on transfer tool params ([a2d8c5d](https://github.com/team-telnyx/telnyx-ruby/commit/a2d8c5d52b468045bb173b4a77f629ec3c24ede6))
18
+
3
19
  ## 5.124.0 (2026-06-04)
4
20
 
5
21
  Full Changelog: [v5.123.0...v5.124.0](https://github.com/team-telnyx/telnyx-ruby/compare/v5.123.0...v5.124.0)
data/README.md CHANGED
@@ -24,7 +24,7 @@ To use this gem, install via Bundler by adding the following to your application
24
24
  <!-- x-release-please-start-version -->
25
25
 
26
26
  ```ruby
27
- gem "telnyx", "~> 5.124.0"
27
+ gem "telnyx", "~> 5.126.0"
28
28
  ```
29
29
 
30
30
  <!-- x-release-please-end -->
@@ -278,7 +278,7 @@ module Telnyx
278
278
  # All nodes in the flow. Must contain `start_node_id`. Each node is a prompt node
279
279
  # (`type: prompt`) or a tool node (`type: tool`).
280
280
  #
281
- # @return [Array<Telnyx::Models::AI::AssistantCreateParams::ConversationFlow::Node::Prompt, Telnyx::Models::AI::AssistantCreateParams::ConversationFlow::Node::Tool>]
281
+ # @return [Array<Telnyx::Models::AI::AssistantCreateParams::ConversationFlow::Node::Prompt, Telnyx::Models::AI::AssistantCreateParams::ConversationFlow::Node::Tool, Telnyx::Models::AI::AssistantCreateParams::ConversationFlow::Node::Speak>]
282
282
  required :nodes,
283
283
  -> { Telnyx::Internal::Type::ArrayOf[union: Telnyx::AI::AssistantCreateParams::ConversationFlow::Node] }
284
284
 
@@ -305,7 +305,7 @@ module Telnyx
305
305
  # unique node/edge IDs, that `start_node_id` references a real node, and that
306
306
  # every edge's endpoints reference real nodes.
307
307
  #
308
- # @param nodes [Array<Telnyx::Models::AI::AssistantCreateParams::ConversationFlow::Node::Prompt, Telnyx::Models::AI::AssistantCreateParams::ConversationFlow::Node::Tool>] All nodes in the flow. Must contain `start_node_id`. Each node is a prompt node
308
+ # @param nodes [Array<Telnyx::Models::AI::AssistantCreateParams::ConversationFlow::Node::Prompt, Telnyx::Models::AI::AssistantCreateParams::ConversationFlow::Node::Tool, Telnyx::Models::AI::AssistantCreateParams::ConversationFlow::Node::Speak>] All nodes in the flow. Must contain `start_node_id`. Each node is a prompt node
309
309
  #
310
310
  # @param start_node_id [String] ID of the node where the conversation begins.
311
311
  #
@@ -334,6 +334,14 @@ module Telnyx
334
334
  # on the result via outgoing `tool_result` edges.
335
335
  variant :tool, -> { Telnyx::AI::AssistantCreateParams::ConversationFlow::Node::Tool }
336
336
 
337
+ # A standalone scripted-message step in a flow, as supplied by clients.
338
+ #
339
+ # Unlike a prompt node, a speak node has no instructions or model — it isn't
340
+ # an LLM turn. Reaching it delivers `message` to the user verbatim (with
341
+ # `{{variable}}` interpolation), then routes via outgoing `llm` /
342
+ # `expression` edges.
343
+ variant :speak, -> { Telnyx::AI::AssistantCreateParams::ConversationFlow::Node::Speak }
344
+
337
345
  class Prompt < Telnyx::Internal::Type::BaseModel
338
346
  # @!attribute id
339
347
  # Caller-supplied unique identifier for this node within the flow.
@@ -635,8 +643,105 @@ module Telnyx
635
643
  end
636
644
  end
637
645
 
646
+ class Speak < Telnyx::Internal::Type::BaseModel
647
+ # @!attribute id
648
+ # Caller-supplied unique identifier for this node within the flow.
649
+ #
650
+ # @return [String]
651
+ required :id, String
652
+
653
+ # @!attribute message
654
+ # Message delivered to the user verbatim when the flow reaches this node. No LLM
655
+ # turn — the text is spoken/sent exactly as written. `{{variable}}` placeholders
656
+ # are interpolated from the conversation's dynamic variables; an unresolved
657
+ # placeholder renders as an empty string. After delivering, the flow routes via
658
+ # the node's outgoing `llm` / `expression` edges (commonly a single unconditional
659
+ # edge).
660
+ #
661
+ # @return [String]
662
+ required :message, String
663
+
664
+ # @!attribute name
665
+ # Optional human-readable label, displayed in authoring UIs.
666
+ #
667
+ # @return [String, nil]
668
+ optional :name, String
669
+
670
+ # @!attribute position
671
+ # Optional canvas coordinates used by authoring UIs to lay out the graph. Ignored
672
+ # by the runtime; round-trips so frontends can persist graph layout across
673
+ # reloads.
674
+ #
675
+ # @return [Telnyx::Models::AI::AssistantCreateParams::ConversationFlow::Node::Speak::Position, nil]
676
+ optional :position, -> { Telnyx::AI::AssistantCreateParams::ConversationFlow::Node::Speak::Position }
677
+
678
+ # @!attribute type
679
+ # Node kind discriminator. Always `speak` for a speak node.
680
+ #
681
+ # @return [Symbol, Telnyx::Models::AI::AssistantCreateParams::ConversationFlow::Node::Speak::Type, nil]
682
+ optional :type, enum: -> { Telnyx::AI::AssistantCreateParams::ConversationFlow::Node::Speak::Type }
683
+
684
+ # @!method initialize(id:, message:, name: nil, position: nil, type: nil)
685
+ # Some parameter documentations has been truncated, see
686
+ # {Telnyx::Models::AI::AssistantCreateParams::ConversationFlow::Node::Speak} for
687
+ # more details.
688
+ #
689
+ # A standalone scripted-message step in a flow, as supplied by clients.
690
+ #
691
+ # Unlike a prompt node, a speak node has no instructions or model — it isn't an
692
+ # LLM turn. Reaching it delivers `message` to the user verbatim (with
693
+ # `{{variable}}` interpolation), then routes via outgoing `llm` / `expression`
694
+ # edges.
695
+ #
696
+ # @param id [String] Caller-supplied unique identifier for this node within the flow.
697
+ #
698
+ # @param message [String] Message delivered to the user verbatim when the flow reaches this node. No LLM t
699
+ #
700
+ # @param name [String] Optional human-readable label, displayed in authoring UIs.
701
+ #
702
+ # @param position [Telnyx::Models::AI::AssistantCreateParams::ConversationFlow::Node::Speak::Position] Optional canvas coordinates used by authoring UIs to lay out the graph. Ignored
703
+ #
704
+ # @param type [Symbol, Telnyx::Models::AI::AssistantCreateParams::ConversationFlow::Node::Speak::Type] Node kind discriminator. Always `speak` for a speak node.
705
+
706
+ # @see Telnyx::Models::AI::AssistantCreateParams::ConversationFlow::Node::Speak#position
707
+ class Position < Telnyx::Internal::Type::BaseModel
708
+ # @!attribute x
709
+ # Horizontal coordinate in the authoring canvas.
710
+ #
711
+ # @return [Float]
712
+ required :x, Float
713
+
714
+ # @!attribute y_
715
+ # Vertical coordinate in the authoring canvas.
716
+ #
717
+ # @return [Float]
718
+ required :y_, Float, api_name: :y
719
+
720
+ # @!method initialize(x:, y_:)
721
+ # Optional canvas coordinates used by authoring UIs to lay out the graph. Ignored
722
+ # by the runtime; round-trips so frontends can persist graph layout across
723
+ # reloads.
724
+ #
725
+ # @param x [Float] Horizontal coordinate in the authoring canvas.
726
+ #
727
+ # @param y_ [Float] Vertical coordinate in the authoring canvas.
728
+ end
729
+
730
+ # Node kind discriminator. Always `speak` for a speak node.
731
+ #
732
+ # @see Telnyx::Models::AI::AssistantCreateParams::ConversationFlow::Node::Speak#type
733
+ module Type
734
+ extend Telnyx::Internal::Type::Enum
735
+
736
+ SPEAK = :speak
737
+
738
+ # @!method self.values
739
+ # @return [Array<Symbol>]
740
+ end
741
+ end
742
+
638
743
  # @!method self.variants
639
- # @return [Array(Telnyx::Models::AI::AssistantCreateParams::ConversationFlow::Node::Prompt, Telnyx::Models::AI::AssistantCreateParams::ConversationFlow::Node::Tool)]
744
+ # @return [Array(Telnyx::Models::AI::AssistantCreateParams::ConversationFlow::Node::Prompt, Telnyx::Models::AI::AssistantCreateParams::ConversationFlow::Node::Tool, Telnyx::Models::AI::AssistantCreateParams::ConversationFlow::Node::Speak)]
640
745
  end
641
746
 
642
747
  class Edge < Telnyx::Internal::Type::BaseModel
@@ -650,7 +755,7 @@ module Telnyx
650
755
  # Condition that gates the transition. Discriminated by `type`: `llm`,
651
756
  # `expression`.
652
757
  #
653
- # @return [Telnyx::Models::AI::AssistantCreateParams::ConversationFlow::Edge::Condition::Llm, Telnyx::Models::AI::AssistantCreateParams::ConversationFlow::Edge::Condition::Expression]
758
+ # @return [Telnyx::Models::AI::AssistantCreateParams::ConversationFlow::Edge::Condition::Llm, Telnyx::Models::AI::AssistantCreateParams::ConversationFlow::Edge::Condition::Expression, Telnyx::Models::AI::AssistantCreateParams::ConversationFlow::Edge::Condition::Default]
654
759
  required :condition, union: -> { Telnyx::AI::AssistantCreateParams::ConversationFlow::Edge::Condition }
655
760
 
656
761
  # @!attribute start_node_id
@@ -680,7 +785,7 @@ module Telnyx
680
785
  #
681
786
  # @param id [String] Caller-supplied unique identifier for this edge within the flow.
682
787
  #
683
- # @param condition [Telnyx::Models::AI::AssistantCreateParams::ConversationFlow::Edge::Condition::Llm, Telnyx::Models::AI::AssistantCreateParams::ConversationFlow::Edge::Condition::Expression] Condition that gates the transition. Discriminated by `type`: `llm`, `expression
788
+ # @param condition [Telnyx::Models::AI::AssistantCreateParams::ConversationFlow::Edge::Condition::Llm, Telnyx::Models::AI::AssistantCreateParams::ConversationFlow::Edge::Condition::Expression, Telnyx::Models::AI::AssistantCreateParams::ConversationFlow::Edge::Condition::Default] Condition that gates the transition. Discriminated by `type`: `llm`, `expression
684
789
  #
685
790
  # @param start_node_id [String] ID of the node this edge transitions away from.
686
791
  #
@@ -710,6 +815,17 @@ module Telnyx
710
815
  variant :expression,
711
816
  -> { Telnyx::AI::AssistantCreateParams::ConversationFlow::Edge::Condition::Expression }
712
817
 
818
+ # Fallback edge condition: fires only when no other edge's condition is true.
819
+ #
820
+ # Evaluated after every conditioned (`llm` / `expression`) edge regardless
821
+ # of declaration order, so it routes the flow whenever none of the node's
822
+ # other outgoing edges match. Valid **only** on edges leaving a `tool` or
823
+ # `speak` node, where the deterministic step auto-advances and must always
824
+ # have somewhere to go. A tool/speak node with any outgoing edge is required
825
+ # to carry exactly one `default` edge so it never dead-ends; a tool/speak
826
+ # node with no outgoing edges is a valid terminal step. Carries no parameters.
827
+ variant :default, -> { Telnyx::AI::AssistantCreateParams::ConversationFlow::Edge::Condition::Default }
828
+
713
829
  class Llm < Telnyx::Internal::Type::BaseModel
714
830
  # @!attribute prompt
715
831
  # Natural-language criterion the LLM judges as true/false.
@@ -885,8 +1001,28 @@ module Telnyx
885
1001
  end
886
1002
  end
887
1003
 
1004
+ class Default < Telnyx::Internal::Type::BaseModel
1005
+ # @!attribute type
1006
+ #
1007
+ # @return [Symbol, :default]
1008
+ required :type, const: :default
1009
+
1010
+ # @!method initialize(type: :default)
1011
+ # Fallback edge condition: fires only when no other edge's condition is true.
1012
+ #
1013
+ # Evaluated after every conditioned (`llm` / `expression`) edge regardless of
1014
+ # declaration order, so it routes the flow whenever none of the node's other
1015
+ # outgoing edges match. Valid **only** on edges leaving a `tool` or `speak` node,
1016
+ # where the deterministic step auto-advances and must always have somewhere to go.
1017
+ # A tool/speak node with any outgoing edge is required to carry exactly one
1018
+ # `default` edge so it never dead-ends; a tool/speak node with no outgoing edges
1019
+ # is a valid terminal step. Carries no parameters.
1020
+ #
1021
+ # @param type [Symbol, :default]
1022
+ end
1023
+
888
1024
  # @!method self.variants
889
- # @return [Array(Telnyx::Models::AI::AssistantCreateParams::ConversationFlow::Edge::Condition::Llm, Telnyx::Models::AI::AssistantCreateParams::ConversationFlow::Edge::Condition::Expression)]
1025
+ # @return [Array(Telnyx::Models::AI::AssistantCreateParams::ConversationFlow::Edge::Condition::Llm, Telnyx::Models::AI::AssistantCreateParams::ConversationFlow::Edge::Condition::Expression, Telnyx::Models::AI::AssistantCreateParams::ConversationFlow::Edge::Condition::Default)]
890
1026
  end
891
1027
 
892
1028
  # Destination of the transition. Discriminated by `type`: `node` (jump to another
@@ -154,6 +154,16 @@ module Telnyx
154
154
  optional :custom_headers,
155
155
  -> { Telnyx::Internal::Type::ArrayOf[Telnyx::AI::AssistantTool::Transfer::Transfer::CustomHeader] }
156
156
 
157
+ # @!attribute description
158
+ # A description of the transfer tool. By default, Telnyx generates this
159
+ # automatically based on the configured targets. Typically only set when importing
160
+ # an assistant from another provider that allowed a custom description; in that
161
+ # case the provided value is preserved. Most users should leave this empty and let
162
+ # Telnyx manage it.
163
+ #
164
+ # @return [String, nil]
165
+ optional :description, String
166
+
157
167
  # @!attribute voicemail_detection
158
168
  # Configuration for voicemail detection (AMD - Answering Machine Detection) on the
159
169
  # transferred call. Allows the assistant to detect when a voicemail system answers
@@ -178,7 +188,7 @@ module Telnyx
178
188
  # @return [String, nil]
179
189
  optional :warm_transfer_instructions, String
180
190
 
181
- # @!method initialize(from:, targets:, custom_headers: nil, voicemail_detection: nil, warm_message_delay_ms: nil, warm_transfer_instructions: nil)
191
+ # @!method initialize(from:, targets:, custom_headers: nil, description: nil, voicemail_detection: nil, warm_message_delay_ms: nil, warm_transfer_instructions: nil)
182
192
  # Some parameter documentations has been truncated, see
183
193
  # {Telnyx::Models::AI::AssistantTool::Transfer::Transfer} for more details.
184
194
  #
@@ -188,6 +198,8 @@ module Telnyx
188
198
  #
189
199
  # @param custom_headers [Array<Telnyx::Models::AI::AssistantTool::Transfer::Transfer::CustomHeader>] Custom headers to be added to the SIP INVITE for the transfer command.
190
200
  #
201
+ # @param description [String] A description of the transfer tool. By default, Telnyx generates this automatica
202
+ #
191
203
  # @param voicemail_detection [Telnyx::Models::AI::AssistantTool::Transfer::Transfer::VoicemailDetection] Configuration for voicemail detection (AMD - Answering Machine Detection) on the
192
204
  #
193
205
  # @param warm_message_delay_ms [Integer, nil] Optional delay in milliseconds before playing the warm message audio when the tr
@@ -302,7 +302,7 @@ module Telnyx
302
302
  # All nodes in the flow. Must contain `start_node_id`. Each node is a prompt node
303
303
  # (`type: prompt`) or a tool node (`type: tool`).
304
304
  #
305
- # @return [Array<Telnyx::Models::AI::AssistantUpdateParams::ConversationFlow::Node::Prompt, Telnyx::Models::AI::AssistantUpdateParams::ConversationFlow::Node::Tool>]
305
+ # @return [Array<Telnyx::Models::AI::AssistantUpdateParams::ConversationFlow::Node::Prompt, Telnyx::Models::AI::AssistantUpdateParams::ConversationFlow::Node::Tool, Telnyx::Models::AI::AssistantUpdateParams::ConversationFlow::Node::Speak>]
306
306
  required :nodes,
307
307
  -> { Telnyx::Internal::Type::ArrayOf[union: Telnyx::AI::AssistantUpdateParams::ConversationFlow::Node] }
308
308
 
@@ -329,7 +329,7 @@ module Telnyx
329
329
  # unique node/edge IDs, that `start_node_id` references a real node, and that
330
330
  # every edge's endpoints reference real nodes.
331
331
  #
332
- # @param nodes [Array<Telnyx::Models::AI::AssistantUpdateParams::ConversationFlow::Node::Prompt, Telnyx::Models::AI::AssistantUpdateParams::ConversationFlow::Node::Tool>] All nodes in the flow. Must contain `start_node_id`. Each node is a prompt node
332
+ # @param nodes [Array<Telnyx::Models::AI::AssistantUpdateParams::ConversationFlow::Node::Prompt, Telnyx::Models::AI::AssistantUpdateParams::ConversationFlow::Node::Tool, Telnyx::Models::AI::AssistantUpdateParams::ConversationFlow::Node::Speak>] All nodes in the flow. Must contain `start_node_id`. Each node is a prompt node
333
333
  #
334
334
  # @param start_node_id [String] ID of the node where the conversation begins.
335
335
  #
@@ -358,6 +358,14 @@ module Telnyx
358
358
  # on the result via outgoing `tool_result` edges.
359
359
  variant :tool, -> { Telnyx::AI::AssistantUpdateParams::ConversationFlow::Node::Tool }
360
360
 
361
+ # A standalone scripted-message step in a flow, as supplied by clients.
362
+ #
363
+ # Unlike a prompt node, a speak node has no instructions or model — it isn't
364
+ # an LLM turn. Reaching it delivers `message` to the user verbatim (with
365
+ # `{{variable}}` interpolation), then routes via outgoing `llm` /
366
+ # `expression` edges.
367
+ variant :speak, -> { Telnyx::AI::AssistantUpdateParams::ConversationFlow::Node::Speak }
368
+
361
369
  class Prompt < Telnyx::Internal::Type::BaseModel
362
370
  # @!attribute id
363
371
  # Caller-supplied unique identifier for this node within the flow.
@@ -659,8 +667,105 @@ module Telnyx
659
667
  end
660
668
  end
661
669
 
670
+ class Speak < Telnyx::Internal::Type::BaseModel
671
+ # @!attribute id
672
+ # Caller-supplied unique identifier for this node within the flow.
673
+ #
674
+ # @return [String]
675
+ required :id, String
676
+
677
+ # @!attribute message
678
+ # Message delivered to the user verbatim when the flow reaches this node. No LLM
679
+ # turn — the text is spoken/sent exactly as written. `{{variable}}` placeholders
680
+ # are interpolated from the conversation's dynamic variables; an unresolved
681
+ # placeholder renders as an empty string. After delivering, the flow routes via
682
+ # the node's outgoing `llm` / `expression` edges (commonly a single unconditional
683
+ # edge).
684
+ #
685
+ # @return [String]
686
+ required :message, String
687
+
688
+ # @!attribute name
689
+ # Optional human-readable label, displayed in authoring UIs.
690
+ #
691
+ # @return [String, nil]
692
+ optional :name, String
693
+
694
+ # @!attribute position
695
+ # Optional canvas coordinates used by authoring UIs to lay out the graph. Ignored
696
+ # by the runtime; round-trips so frontends can persist graph layout across
697
+ # reloads.
698
+ #
699
+ # @return [Telnyx::Models::AI::AssistantUpdateParams::ConversationFlow::Node::Speak::Position, nil]
700
+ optional :position, -> { Telnyx::AI::AssistantUpdateParams::ConversationFlow::Node::Speak::Position }
701
+
702
+ # @!attribute type
703
+ # Node kind discriminator. Always `speak` for a speak node.
704
+ #
705
+ # @return [Symbol, Telnyx::Models::AI::AssistantUpdateParams::ConversationFlow::Node::Speak::Type, nil]
706
+ optional :type, enum: -> { Telnyx::AI::AssistantUpdateParams::ConversationFlow::Node::Speak::Type }
707
+
708
+ # @!method initialize(id:, message:, name: nil, position: nil, type: nil)
709
+ # Some parameter documentations has been truncated, see
710
+ # {Telnyx::Models::AI::AssistantUpdateParams::ConversationFlow::Node::Speak} for
711
+ # more details.
712
+ #
713
+ # A standalone scripted-message step in a flow, as supplied by clients.
714
+ #
715
+ # Unlike a prompt node, a speak node has no instructions or model — it isn't an
716
+ # LLM turn. Reaching it delivers `message` to the user verbatim (with
717
+ # `{{variable}}` interpolation), then routes via outgoing `llm` / `expression`
718
+ # edges.
719
+ #
720
+ # @param id [String] Caller-supplied unique identifier for this node within the flow.
721
+ #
722
+ # @param message [String] Message delivered to the user verbatim when the flow reaches this node. No LLM t
723
+ #
724
+ # @param name [String] Optional human-readable label, displayed in authoring UIs.
725
+ #
726
+ # @param position [Telnyx::Models::AI::AssistantUpdateParams::ConversationFlow::Node::Speak::Position] Optional canvas coordinates used by authoring UIs to lay out the graph. Ignored
727
+ #
728
+ # @param type [Symbol, Telnyx::Models::AI::AssistantUpdateParams::ConversationFlow::Node::Speak::Type] Node kind discriminator. Always `speak` for a speak node.
729
+
730
+ # @see Telnyx::Models::AI::AssistantUpdateParams::ConversationFlow::Node::Speak#position
731
+ class Position < Telnyx::Internal::Type::BaseModel
732
+ # @!attribute x
733
+ # Horizontal coordinate in the authoring canvas.
734
+ #
735
+ # @return [Float]
736
+ required :x, Float
737
+
738
+ # @!attribute y_
739
+ # Vertical coordinate in the authoring canvas.
740
+ #
741
+ # @return [Float]
742
+ required :y_, Float, api_name: :y
743
+
744
+ # @!method initialize(x:, y_:)
745
+ # Optional canvas coordinates used by authoring UIs to lay out the graph. Ignored
746
+ # by the runtime; round-trips so frontends can persist graph layout across
747
+ # reloads.
748
+ #
749
+ # @param x [Float] Horizontal coordinate in the authoring canvas.
750
+ #
751
+ # @param y_ [Float] Vertical coordinate in the authoring canvas.
752
+ end
753
+
754
+ # Node kind discriminator. Always `speak` for a speak node.
755
+ #
756
+ # @see Telnyx::Models::AI::AssistantUpdateParams::ConversationFlow::Node::Speak#type
757
+ module Type
758
+ extend Telnyx::Internal::Type::Enum
759
+
760
+ SPEAK = :speak
761
+
762
+ # @!method self.values
763
+ # @return [Array<Symbol>]
764
+ end
765
+ end
766
+
662
767
  # @!method self.variants
663
- # @return [Array(Telnyx::Models::AI::AssistantUpdateParams::ConversationFlow::Node::Prompt, Telnyx::Models::AI::AssistantUpdateParams::ConversationFlow::Node::Tool)]
768
+ # @return [Array(Telnyx::Models::AI::AssistantUpdateParams::ConversationFlow::Node::Prompt, Telnyx::Models::AI::AssistantUpdateParams::ConversationFlow::Node::Tool, Telnyx::Models::AI::AssistantUpdateParams::ConversationFlow::Node::Speak)]
664
769
  end
665
770
 
666
771
  class Edge < Telnyx::Internal::Type::BaseModel
@@ -674,7 +779,7 @@ module Telnyx
674
779
  # Condition that gates the transition. Discriminated by `type`: `llm`,
675
780
  # `expression`.
676
781
  #
677
- # @return [Telnyx::Models::AI::AssistantUpdateParams::ConversationFlow::Edge::Condition::Llm, Telnyx::Models::AI::AssistantUpdateParams::ConversationFlow::Edge::Condition::Expression]
782
+ # @return [Telnyx::Models::AI::AssistantUpdateParams::ConversationFlow::Edge::Condition::Llm, Telnyx::Models::AI::AssistantUpdateParams::ConversationFlow::Edge::Condition::Expression, Telnyx::Models::AI::AssistantUpdateParams::ConversationFlow::Edge::Condition::Default]
678
783
  required :condition, union: -> { Telnyx::AI::AssistantUpdateParams::ConversationFlow::Edge::Condition }
679
784
 
680
785
  # @!attribute start_node_id
@@ -704,7 +809,7 @@ module Telnyx
704
809
  #
705
810
  # @param id [String] Caller-supplied unique identifier for this edge within the flow.
706
811
  #
707
- # @param condition [Telnyx::Models::AI::AssistantUpdateParams::ConversationFlow::Edge::Condition::Llm, Telnyx::Models::AI::AssistantUpdateParams::ConversationFlow::Edge::Condition::Expression] Condition that gates the transition. Discriminated by `type`: `llm`, `expression
812
+ # @param condition [Telnyx::Models::AI::AssistantUpdateParams::ConversationFlow::Edge::Condition::Llm, Telnyx::Models::AI::AssistantUpdateParams::ConversationFlow::Edge::Condition::Expression, Telnyx::Models::AI::AssistantUpdateParams::ConversationFlow::Edge::Condition::Default] Condition that gates the transition. Discriminated by `type`: `llm`, `expression
708
813
  #
709
814
  # @param start_node_id [String] ID of the node this edge transitions away from.
710
815
  #
@@ -734,6 +839,17 @@ module Telnyx
734
839
  variant :expression,
735
840
  -> { Telnyx::AI::AssistantUpdateParams::ConversationFlow::Edge::Condition::Expression }
736
841
 
842
+ # Fallback edge condition: fires only when no other edge's condition is true.
843
+ #
844
+ # Evaluated after every conditioned (`llm` / `expression`) edge regardless
845
+ # of declaration order, so it routes the flow whenever none of the node's
846
+ # other outgoing edges match. Valid **only** on edges leaving a `tool` or
847
+ # `speak` node, where the deterministic step auto-advances and must always
848
+ # have somewhere to go. A tool/speak node with any outgoing edge is required
849
+ # to carry exactly one `default` edge so it never dead-ends; a tool/speak
850
+ # node with no outgoing edges is a valid terminal step. Carries no parameters.
851
+ variant :default, -> { Telnyx::AI::AssistantUpdateParams::ConversationFlow::Edge::Condition::Default }
852
+
737
853
  class Llm < Telnyx::Internal::Type::BaseModel
738
854
  # @!attribute prompt
739
855
  # Natural-language criterion the LLM judges as true/false.
@@ -909,8 +1025,28 @@ module Telnyx
909
1025
  end
910
1026
  end
911
1027
 
1028
+ class Default < Telnyx::Internal::Type::BaseModel
1029
+ # @!attribute type
1030
+ #
1031
+ # @return [Symbol, :default]
1032
+ required :type, const: :default
1033
+
1034
+ # @!method initialize(type: :default)
1035
+ # Fallback edge condition: fires only when no other edge's condition is true.
1036
+ #
1037
+ # Evaluated after every conditioned (`llm` / `expression`) edge regardless of
1038
+ # declaration order, so it routes the flow whenever none of the node's other
1039
+ # outgoing edges match. Valid **only** on edges leaving a `tool` or `speak` node,
1040
+ # where the deterministic step auto-advances and must always have somewhere to go.
1041
+ # A tool/speak node with any outgoing edge is required to carry exactly one
1042
+ # `default` edge so it never dead-ends; a tool/speak node with no outgoing edges
1043
+ # is a valid terminal step. Carries no parameters.
1044
+ #
1045
+ # @param type [Symbol, :default]
1046
+ end
1047
+
912
1048
  # @!method self.variants
913
- # @return [Array(Telnyx::Models::AI::AssistantUpdateParams::ConversationFlow::Edge::Condition::Llm, Telnyx::Models::AI::AssistantUpdateParams::ConversationFlow::Edge::Condition::Expression)]
1049
+ # @return [Array(Telnyx::Models::AI::AssistantUpdateParams::ConversationFlow::Edge::Condition::Llm, Telnyx::Models::AI::AssistantUpdateParams::ConversationFlow::Edge::Condition::Expression, Telnyx::Models::AI::AssistantUpdateParams::ConversationFlow::Edge::Condition::Default)]
914
1050
  end
915
1051
 
916
1052
  # Destination of the transition. Discriminated by `type`: `node` (jump to another