ibm-watsonx-orchestrate 1.9.0b2__tar.gz → 1.10.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (132) hide show
  1. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/.gitignore +5 -1
  2. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/PKG-INFO +1 -1
  3. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/__init__.py +1 -2
  4. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/agent_builder/agents/types.py +2 -0
  5. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/agent_builder/connections/__init__.py +1 -1
  6. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/agent_builder/connections/connections.py +1 -1
  7. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/agent_builder/connections/types.py +16 -12
  8. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/agent_builder/knowledge_bases/types.py +47 -3
  9. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/agent_builder/toolkits/types.py +18 -15
  10. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/agent_builder/tools/python_tool.py +19 -7
  11. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/agent_builder/tools/types.py +1 -1
  12. ibm_watsonx_orchestrate-1.10.0/src/ibm_watsonx_orchestrate/agent_builder/voice_configurations/__init__.py +1 -0
  13. ibm_watsonx_orchestrate-1.10.0/src/ibm_watsonx_orchestrate/agent_builder/voice_configurations/types.py +98 -0
  14. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/cli/commands/agents/agents_command.py +20 -0
  15. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/cli/commands/agents/agents_controller.py +170 -1
  16. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/cli/commands/connections/connections_command.py +7 -7
  17. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/cli/commands/connections/connections_controller.py +36 -26
  18. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/cli/commands/knowledge_bases/knowledge_bases_controller.py +51 -22
  19. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/cli/commands/server/server_command.py +110 -16
  20. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/cli/commands/toolkit/toolkit_command.py +43 -10
  21. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/cli/commands/toolkit/toolkit_controller.py +52 -25
  22. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/cli/commands/tools/tools_controller.py +5 -0
  23. ibm_watsonx_orchestrate-1.10.0/src/ibm_watsonx_orchestrate/cli/commands/voice_configurations/voice_configurations_command.py +58 -0
  24. ibm_watsonx_orchestrate-1.10.0/src/ibm_watsonx_orchestrate/cli/commands/voice_configurations/voice_configurations_controller.py +173 -0
  25. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/cli/main.py +2 -0
  26. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/client/agents/agent_client.py +64 -1
  27. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/client/connections/connections_client.py +4 -3
  28. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/client/knowledge_bases/knowledge_base_client.py +4 -4
  29. ibm_watsonx_orchestrate-1.10.0/src/ibm_watsonx_orchestrate/client/voice_configurations/voice_configurations_client.py +75 -0
  30. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/docker/compose-lite.yml +54 -5
  31. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/docker/default.env +22 -14
  32. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/flow_builder/flows/__init__.py +2 -0
  33. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/flow_builder/flows/flow.py +115 -31
  34. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/flow_builder/node.py +39 -15
  35. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/flow_builder/types.py +114 -25
  36. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/run/connections.py +2 -2
  37. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/LICENSE +0 -0
  38. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/pyproject.toml +0 -0
  39. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/agent_builder/__init__.py +0 -0
  40. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/agent_builder/agents/__init__.py +0 -0
  41. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/agent_builder/agents/agent.py +0 -0
  42. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/agent_builder/agents/assistant_agent.py +0 -0
  43. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/agent_builder/agents/external_agent.py +0 -0
  44. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/agent_builder/agents/webchat_customizations/__init__.py +0 -0
  45. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/agent_builder/agents/webchat_customizations/prompts.py +0 -0
  46. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/agent_builder/agents/webchat_customizations/welcome_content.py +0 -0
  47. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/agent_builder/knowledge_bases/knowledge_base.py +0 -0
  48. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/agent_builder/knowledge_bases/knowledge_base_requests.py +0 -0
  49. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/agent_builder/model_policies/__init__.py +0 -0
  50. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/agent_builder/model_policies/types.py +0 -0
  51. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/agent_builder/models/__init__.py +0 -0
  52. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/agent_builder/models/types.py +0 -0
  53. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/agent_builder/toolkits/base_toolkit.py +0 -0
  54. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/agent_builder/tools/__init__.py +0 -0
  55. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/agent_builder/tools/base_tool.py +0 -0
  56. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/agent_builder/tools/flow_tool.py +0 -0
  57. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/agent_builder/tools/openapi_tool.py +0 -0
  58. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/agent_builder/utils/__init__.py +0 -0
  59. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/cli/__init__.py +0 -0
  60. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/cli/commands/__init__.py +0 -0
  61. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/cli/commands/channels/channels_command.py +0 -0
  62. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/cli/commands/channels/channels_controller.py +0 -0
  63. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/cli/commands/channels/types.py +0 -0
  64. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/cli/commands/channels/webchat/channels_webchat_command.py +0 -0
  65. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/cli/commands/channels/webchat/channels_webchat_controller.py +0 -0
  66. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/cli/commands/chat/chat_command.py +0 -0
  67. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/cli/commands/copilot/copilot_command.py +0 -0
  68. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/cli/commands/copilot/copilot_controller.py +0 -0
  69. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/cli/commands/copilot/copilot_server_controller.py +0 -0
  70. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/cli/commands/environment/environment_command.py +0 -0
  71. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/cli/commands/environment/environment_controller.py +0 -0
  72. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/cli/commands/environment/types.py +0 -0
  73. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/cli/commands/evaluations/evaluations_command.py +0 -0
  74. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/cli/commands/evaluations/evaluations_controller.py +0 -0
  75. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/cli/commands/knowledge_bases/knowledge_bases_command.py +0 -0
  76. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/cli/commands/login/login_command.py +0 -0
  77. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/cli/commands/models/model_provider_mapper.py +0 -0
  78. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/cli/commands/models/models_command.py +0 -0
  79. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/cli/commands/models/models_controller.py +0 -0
  80. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/cli/commands/server/types.py +0 -0
  81. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/cli/commands/settings/__init__.py +0 -0
  82. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/cli/commands/settings/observability/__init__.py +0 -0
  83. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/cli/commands/settings/observability/langfuse/__init__.py +0 -0
  84. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/cli/commands/settings/observability/langfuse/langfuse_command.py +0 -0
  85. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/cli/commands/settings/observability/observability_command.py +0 -0
  86. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/cli/commands/settings/settings_command.py +0 -0
  87. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/cli/commands/tools/tools_command.py +0 -0
  88. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/cli/commands/tools/types.py +0 -0
  89. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/cli/config.py +0 -0
  90. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/cli/init_helper.py +0 -0
  91. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/client/__init__.py +0 -0
  92. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/client/agents/assistant_agent_client.py +0 -0
  93. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/client/agents/external_agent_client.py +0 -0
  94. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/client/analytics/__init__.py +0 -0
  95. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/client/analytics/llm/__init__.py +0 -0
  96. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/client/analytics/llm/analytics_llm_client.py +0 -0
  97. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/client/base_api_client.py +0 -0
  98. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/client/base_service_instance.py +0 -0
  99. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/client/client.py +0 -0
  100. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/client/client_errors.py +0 -0
  101. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/client/connections/__init__.py +0 -0
  102. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/client/connections/utils.py +0 -0
  103. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/client/copilot/cpe/copilot_cpe_client.py +0 -0
  104. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/client/credentials.py +0 -0
  105. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/client/local_service_instance.py +0 -0
  106. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/client/model_policies/__init__.py +0 -0
  107. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/client/model_policies/model_policies_client.py +0 -0
  108. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/client/models/__init__.py +0 -0
  109. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/client/models/models_client.py +0 -0
  110. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/client/service_instance.py +0 -0
  111. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/client/toolkit/toolkit_client.py +0 -0
  112. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/client/tools/tempus_client.py +0 -0
  113. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/client/tools/tool_client.py +0 -0
  114. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/client/utils.py +0 -0
  115. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/docker/proxy-config-single.yaml +0 -0
  116. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/docker/sdk/ibm_watsonx_orchestrate-0.6.0-py3-none-any.whl +0 -0
  117. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/docker/sdk/ibm_watsonx_orchestrate-0.6.0.tar.gz +0 -0
  118. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/docker/start-up.sh +0 -0
  119. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/docker/tempus/common-config.yaml +0 -0
  120. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/flow_builder/__init__.py +0 -0
  121. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/flow_builder/data_map.py +0 -0
  122. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/flow_builder/flows/constants.py +0 -0
  123. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/flow_builder/flows/decorators.py +0 -0
  124. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/flow_builder/flows/events.py +0 -0
  125. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/flow_builder/utils.py +0 -0
  126. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/run/__init__.py +0 -0
  127. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/utils/__init__.py +0 -0
  128. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/utils/exceptions.py +0 -0
  129. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/utils/logging/__init__.py +0 -0
  130. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/utils/logging/logger.py +0 -0
  131. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/utils/logging/logging.yaml +0 -0
  132. {ibm_watsonx_orchestrate-1.9.0b2 → ibm_watsonx_orchestrate-1.10.0}/src/ibm_watsonx_orchestrate/utils/utils.py +0 -0
@@ -74,4 +74,8 @@ sdk/python/ibm_watsonx_orchestrate/ibm_watsonx_orchestrate/utils/__pycache__/
74
74
  .env.*
75
75
  .idea/
76
76
  .vscode/
77
- coverage/
77
+ coverage/
78
+
79
+ # Ignore local examples
80
+ examples/local/
81
+ examples/*/local/
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ibm-watsonx-orchestrate
3
- Version: 1.9.0b2
3
+ Version: 1.10.0
4
4
  Summary: IBM watsonx.orchestrate SDK
5
5
  Author-email: IBM <support@ibm.com>
6
6
  License: MIT License
@@ -5,8 +5,7 @@
5
5
 
6
6
  pkg_name = "ibm-watsonx-orchestrate"
7
7
 
8
- __version__ = "1.9.0b2"
9
-
8
+ __version__ = "1.10.0"
10
9
 
11
10
 
12
11
  from ibm_watsonx_orchestrate.utils.logging.logger import setup_logging
@@ -77,6 +77,8 @@ class BaseAgentSpec(BaseModel):
77
77
  description: Annotated[str, Field(json_schema_extra={"min_length_str":1})]
78
78
  context_access_enabled: bool = True
79
79
  context_variables: Optional[List[str]] = []
80
+ voice_configuration_id: Optional[str] = None
81
+ voice_configuration: Optional[str] = None
80
82
 
81
83
  def dump_spec(self, file: str) -> None:
82
84
  dumped = self.model_dump(mode='json', exclude_unset=True, exclude_none=True)
@@ -18,7 +18,7 @@ from .types import (
18
18
  OAuth2AuthCodeCredentials,
19
19
  OAuth2ClientCredentials,
20
20
  # OAuth2ImplicitCredentials,
21
- # OAuth2PasswordCredentials,
21
+ OAuth2PasswordCredentials,
22
22
  OAuthOnBehalfOfCredentials,
23
23
  KeyValueConnectionCredentials,
24
24
  CONNECTION_KIND_SCHEME_MAPPING,
@@ -37,7 +37,7 @@ connection_type_security_schema_map = {
37
37
  ConnectionType.OAUTH2_CLIENT_CREDS: ConnectionSecurityScheme.OAUTH2,
38
38
  ConnectionType.OAUTH_ON_BEHALF_OF_FLOW: ConnectionSecurityScheme.OAUTH2,
39
39
  # ConnectionType.OAUTH2_IMPLICIT: ConnectionSecurityScheme.OAUTH2,
40
- # ConnectionType.OAUTH2_PASSWORD: ConnectionSecurityScheme.OAUTH2
40
+ ConnectionType.OAUTH2_PASSWORD: ConnectionSecurityScheme.OAUTH2
41
41
  }
42
42
 
43
43
  def _clean_env_vars(vars: dict[str:str], requirements: List[str], app_id: str) -> dict[str,str]:
@@ -8,7 +8,7 @@ class ConnectionKind(str, Enum):
8
8
  api_key = 'api_key'
9
9
  oauth_auth_code_flow = 'oauth_auth_code_flow'
10
10
  # oauth_auth_implicit_flow = 'oauth_auth_implicit_flow'
11
- # oauth_auth_password_flow = 'oauth_auth_password_flow'
11
+ oauth_auth_password_flow = 'oauth_auth_password_flow'
12
12
  oauth_auth_client_credentials_flow = 'oauth_auth_client_credentials_flow'
13
13
  oauth_auth_on_behalf_of_flow = 'oauth_auth_on_behalf_of_flow'
14
14
  key_value = 'key_value'
@@ -34,7 +34,7 @@ class ConnectionPreference(str, Enum):
34
34
  class ConnectionAuthType(str, Enum):
35
35
  OAUTH2_AUTH_CODE = 'oauth2_auth_code'
36
36
  # OAUTH2_IMPLICIT = 'oauth2_implicit'
37
- # OAUTH2_PASSWORD = 'oauth2_password'
37
+ OAUTH2_PASSWORD = 'oauth2_password'
38
38
  OAUTH2_CLIENT_CREDS = 'oauth2_client_creds'
39
39
  OAUTH_ON_BEHALF_OF_FLOW = 'oauth_on_behalf_of_flow'
40
40
 
@@ -65,7 +65,7 @@ class ConnectionType(str, Enum):
65
65
  API_KEY_AUTH = ConnectionSecurityScheme.API_KEY_AUTH.value
66
66
  OAUTH2_AUTH_CODE = ConnectionAuthType.OAUTH2_AUTH_CODE.value
67
67
  # OAUTH2_IMPLICIT = ConnectionAuthType.OAUTH2_IMPLICIT.value
68
- # OAUTH2_PASSWORD = ConnectionAuthType.OAUTH2_PASSWORD.value
68
+ OAUTH2_PASSWORD = ConnectionAuthType.OAUTH2_PASSWORD.value
69
69
  OAUTH2_CLIENT_CREDS = ConnectionAuthType.OAUTH2_CLIENT_CREDS.value
70
70
  OAUTH_ON_BEHALF_OF_FLOW = ConnectionAuthType.OAUTH_ON_BEHALF_OF_FLOW.value
71
71
  KEY_VALUE = ConnectionSecurityScheme.KEY_VALUE.value
@@ -90,7 +90,7 @@ OAUTH_CONNECTION_TYPES = {
90
90
  ConnectionType.OAUTH2_AUTH_CODE,
91
91
  ConnectionType.OAUTH2_CLIENT_CREDS,
92
92
  # ConnectionType.OAUTH2_IMPLICIT,
93
- # ConnectionType.OAUTH2_PASSWORD,
93
+ ConnectionType.OAUTH2_PASSWORD,
94
94
  ConnectionType.OAUTH_ON_BEHALF_OF_FLOW,
95
95
  }
96
96
 
@@ -193,11 +193,15 @@ class OAuth2AuthCodeCredentials(BaseModel):
193
193
  # client_id: str
194
194
  # authorization_url: str
195
195
 
196
- # class OAuth2PasswordCredentials(BaseModel):
197
- # client_id: str
198
- # client_secret: str
199
- # token_url: str
200
- # authorization_url: str
196
+ class OAuth2PasswordCredentials(BaseModel):
197
+ username: str
198
+ password: str
199
+ client_id: str
200
+ client_secret: str
201
+ token_url: str
202
+ scope: Optional[str] = None
203
+ grant_type: str = "password"
204
+
201
205
 
202
206
  class OAuth2ClientCredentials(BaseModel):
203
207
  client_id: str
@@ -226,7 +230,7 @@ CREDENTIALS_SET = Union[
226
230
  APIKeyAuthCredentials,
227
231
  OAuth2AuthCodeCredentials,
228
232
  # OAuth2ImplicitCredentials,
229
- # OAuth2PasswordCredentials,
233
+ OAuth2PasswordCredentials,
230
234
  OAuth2ClientCredentials,
231
235
  OAuthOnBehalfOfCredentials,
232
236
  KeyValueConnectionCredentials
@@ -240,7 +244,7 @@ CONNECTION_KIND_SCHEME_MAPPING = {
240
244
  ConnectionKind.api_key: ConnectionSecurityScheme.API_KEY_AUTH,
241
245
  ConnectionKind.oauth_auth_code_flow: ConnectionSecurityScheme.OAUTH2,
242
246
  # ConnectionKind.oauth_auth_implicit_flow: ConnectionSecurityScheme.OAUTH2,
243
- # ConnectionKind.oauth_auth_password_flow: ConnectionSecurityScheme.OAUTH2,
247
+ ConnectionKind.oauth_auth_password_flow: ConnectionSecurityScheme.OAUTH2,
244
248
  ConnectionKind.oauth_auth_client_credentials_flow: ConnectionSecurityScheme.OAUTH2,
245
249
  ConnectionKind.oauth_auth_on_behalf_of_flow: ConnectionSecurityScheme.OAUTH2,
246
250
  ConnectionKind.key_value: ConnectionSecurityScheme.KEY_VALUE,
@@ -250,7 +254,7 @@ CONNECTION_KIND_SCHEME_MAPPING = {
250
254
  CONNECTION_KIND_OAUTH_TYPE_MAPPING = {
251
255
  ConnectionKind.oauth_auth_code_flow: ConnectionAuthType.OAUTH2_AUTH_CODE,
252
256
  # ConnectionKind.oauth_auth_implicit_flow: ConnectionAuthType.OAUTH2_IMPLICIT,
253
- # ConnectionKind.oauth_auth_password_flow: ConnectionAuthType.OAUTH2_PASSWORD,
257
+ ConnectionKind.oauth_auth_password_flow: ConnectionAuthType.OAUTH2_PASSWORD,
254
258
  ConnectionKind.oauth_auth_client_credentials_flow: ConnectionAuthType.OAUTH2_CLIENT_CREDS,
255
259
  ConnectionKind.oauth_auth_on_behalf_of_flow: ConnectionAuthType.OAUTH_ON_BEHALF_OF_FLOW,
256
260
  }
@@ -11,6 +11,7 @@ class SpecVersion(str, Enum):
11
11
  class KnowledgeBaseKind(str, Enum):
12
12
  KNOWLEDGE_BASE = "knowledge_base"
13
13
  class RetrievalConfidenceThreshold(str, Enum):
14
+ Off = "Off"
14
15
  Lowest = "Lowest"
15
16
  Low = "Low"
16
17
  High = "High"
@@ -24,6 +25,7 @@ class GeneratedResponseLength(str, Enum):
24
25
 
25
26
 
26
27
  class ResponseConfidenceThreshold(str, Enum):
28
+ Off = "Off"
27
29
  Lowest = "Lowest"
28
30
  Low = "Low"
29
31
  High = "High"
@@ -86,6 +88,8 @@ class GenerationConfiguration(BaseModel):
86
88
  {
87
89
  "model_id": "meta-llama/llama-3-1-70b-instruct",
88
90
  "prompt_instruction": "When the documents are in different languages, you should respond in english.",
91
+ "max_docs_passed_to_llm": 10,
92
+ "retrieval_confidence_threshold": "Lowest",
89
93
  "generated_response_length": "Moderate",
90
94
  "display_text_no_results_found": "no docs found",
91
95
  "display_text_connectivity_issue": "conn failed",
@@ -95,6 +99,7 @@ class GenerationConfiguration(BaseModel):
95
99
 
96
100
  model_id: Optional[str] = None
97
101
  prompt_instruction: Optional[str] = None
102
+ max_docs_passed_to_llm: Optional[int] = None
98
103
  generated_response_length: Optional[GeneratedResponseLength] = None
99
104
  display_text_no_results_found: Optional[str] = None
100
105
  display_text_connectivity_issue: Optional[str] = None
@@ -134,12 +139,13 @@ class MilvusConnection(BaseModel):
134
139
  }
135
140
  """
136
141
  grpc_host: Optional[str] = None
142
+ grpc_port: Optional[str] = None
143
+ server_cert: Optional[str] = None
137
144
  database: Optional[str] = None
138
145
  collection: Optional[str] = None
139
146
  index: Optional[str] = None
140
147
  embedding_model_id: Optional[str] = None
141
148
  limit : Optional[int] = None
142
- grpc_port: Optional[str] = None
143
149
  filter: Optional[str] = None
144
150
  field_mapping: Optional[FieldMapping] = None
145
151
 
@@ -197,12 +203,46 @@ class CustomSearchConnection(BaseModel):
197
203
  filter: Optional[str] = None
198
204
  metadata: Optional[dict] = None
199
205
 
206
+ class AstraDBConnection(BaseModel):
207
+ """
208
+ example:
209
+ {
210
+ "api_endpoint": "https://xxx-us-east-2.apps.astra.datastax.com",
211
+ "key_space": "default_keyspace",
212
+ "collection": "search_wa_docs",
213
+ "embedding_model_id": "sentence-transformers/all-minilm-l12-v2",
214
+ "port": "443",
215
+ "filter": "productType: \"boots\"",
216
+ "limit": 5,
217
+ "field_mapping": {
218
+ "title": "title",
219
+ "body": "text",
220
+ "url": "some-url"
221
+ }
222
+ }
223
+ """
224
+ api_endpoint: str
225
+ port: Optional[str] = None
226
+ server_cert: Optional[str] = None
227
+ keyspace: Optional[str]
228
+ data_type: str
229
+ collection: Optional[str]
230
+ table: Optional[str]
231
+ index_column: Optional[str]
232
+ embedding_mode: str
233
+ embedding_model_id: Optional[str]
234
+ credentials: dict
235
+ search_mode: str
236
+ limit: Optional[int] = 5
237
+ filter: Optional[str] = None
238
+ field_mapping: Optional[FieldMapping] = None
239
+
200
240
  class IndexConnection(BaseModel):
201
241
  connection_id: Optional[str] = None
202
242
  milvus: Optional[MilvusConnection] = None
203
243
  elastic_search: Optional[ElasticSearchConnection] = None
204
244
  custom_search: Optional[CustomSearchConnection] = None
205
-
245
+ astradb: Optional[AstraDBConnection] = None
206
246
 
207
247
  class ConversationalSearchConfig(BaseModel):
208
248
  language: Optional[str] = None
@@ -218,6 +258,10 @@ class KnowledgeBaseBuiltInVectorIndexConfig(BaseModel):
218
258
  chunk_size: Optional[int] = None
219
259
  chunk_overlap: Optional[int] = None
220
260
  limit: Optional[int] = None
261
+
262
+ class FileUpload(BaseModel):
263
+ path: str
264
+ url: Optional[str] = None
221
265
 
222
266
  class KnowledgeBaseSpec(BaseModel):
223
267
  """Schema for a complete knowledge-base."""
@@ -236,4 +280,4 @@ class KnowledgeBaseSpec(BaseModel):
236
280
  created_on: Optional[datetime] = None
237
281
  updated_at: Optional[datetime] = None
238
282
  # For import/update
239
- documents: list[str] = None
283
+ documents: list[str] | list[FileUpload] = None
@@ -1,27 +1,36 @@
1
- from typing import List, Dict, Optional
1
+ from typing import List, Dict, Optional, Union
2
2
  from enum import Enum
3
- from pydantic import BaseModel, model_validator
3
+ from pydantic import BaseModel
4
4
 
5
5
  class ToolkitKind(str, Enum):
6
6
  MCP = "mcp"
7
7
 
8
- class Language(str, Enum):
9
- NODE = "node"
10
- PYTHON ="python"
11
-
12
8
  class ToolkitSource(str, Enum):
13
9
  FILES = "files"
14
10
  PUBLIC_REGISTRY = "public-registry"
15
11
 
12
+ class ToolkitTransportKind(str, Enum):
13
+ STREAMABLE_HTTP = "streamable_http"
14
+ SSE = "sse"
16
15
 
16
+ class Language(str, Enum):
17
+ NODE = "node"
18
+ PYTHON ="python"
17
19
 
18
- class McpModel(BaseModel):
19
- source: str
20
+ class LocalMcpModel(BaseModel):
21
+ source: ToolkitSource
20
22
  command: str
21
23
  args: List[str]
22
24
  tools: List[str]
23
25
  connections: Dict[str, str]
24
26
 
27
+ class RemoteMcpModel(BaseModel):
28
+ server_url: str
29
+ transport: ToolkitTransportKind
30
+ tools: List[str]
31
+ connections: Dict[str, str]
32
+
33
+ McpModel = Union[LocalMcpModel, RemoteMcpModel]
25
34
 
26
35
  class ToolkitSpec(BaseModel):
27
36
  id: str
@@ -33,10 +42,4 @@ class ToolkitSpec(BaseModel):
33
42
  created_by: str
34
43
  created_by_username: str
35
44
  tools: List[str] | None
36
- mcp: McpModel
37
-
38
- @model_validator(mode='after')
39
- def validate_tools_and_mcp(self) -> 'ToolkitSpec':
40
- if self.mcp.source not in {"files", "public-registry"}:
41
- raise ValueError("MCP source must be either 'files' or 'public-registry'.")
42
- return self
45
+ mcp: McpModel
@@ -187,15 +187,27 @@ def _fix_optional(schema):
187
187
  replacements = {}
188
188
  if schema.required is None:
189
189
  schema.required = []
190
-
191
190
  for k, v in schema.properties.items():
191
+ # Simple null type & required -> not required
192
192
  if v.type == 'null' and k in schema.required:
193
193
  not_required.append(k)
194
- if v.anyOf is not None and next(filter(lambda x: x.type == 'null', v.anyOf)) and k in schema.required:
195
- v.anyOf = list(filter(lambda x: x.type != 'null', v.anyOf))
196
- if len(v.anyOf) == 1:
197
- replacements[k] = v.anyOf[0]
198
- not_required.append(k)
194
+ # Optional with null & required
195
+ if v.anyOf is not None and [x for x in v.anyOf if x.type == 'null']:
196
+ if k in schema.required:
197
+ # required with default -> not required
198
+ # required without default -> required & remove null from union
199
+ if v.default:
200
+ not_required.append(k)
201
+ else:
202
+ v.anyOf = list(filter(lambda x: x.type != 'null', v.anyOf))
203
+ if len(v.anyOf) == 1:
204
+ replacements[k] = v.anyOf[0]
205
+ else:
206
+ # not required with default -> no change
207
+ # not required without default -> means default input is 'None'
208
+ v.default = v.default if v.default else 'null'
209
+
210
+
199
211
  schema.required = list(filter(lambda x: x not in not_required, schema.required if schema.required is not None else []))
200
212
  for k, v in replacements.items():
201
213
  combined = {
@@ -204,7 +216,7 @@ def _fix_optional(schema):
204
216
  }
205
217
  schema.properties[k] = JsonSchemaObject(**combined)
206
218
  schema.properties[k].anyOf = None
207
-
219
+
208
220
  for k in schema.properties.keys():
209
221
  if schema.properties[k].type == 'object':
210
222
  schema.properties[k] = _fix_optional(schema.properties[k])
@@ -152,7 +152,7 @@ class ClientSideToolBinding(BaseModel):
152
152
 
153
153
  class McpToolBinding(BaseModel):
154
154
  server_url: Optional[str] = None
155
- source: str
155
+ source: str | None
156
156
  connections: Dict[str, str] | None
157
157
 
158
158
  class FlowToolBinding(BaseModel):
@@ -0,0 +1,98 @@
1
+ import json
2
+ from typing import Annotated, Optional, List, Dict
3
+ from pydantic import BaseModel, Field, model_validator
4
+
5
+ def _validate_exactly_one_of_fields(object: BaseModel, object_name: str, fields: list[str]):
6
+ present_fields = [getattr(object,field) for field in fields if getattr(object,field) is not None]
7
+
8
+ if len(present_fields) != 1:
9
+ raise ValueError(f"{object_name} requires exactly one of {','.join(fields)}")
10
+
11
+
12
+ def _validate_language_uniqueness(config: BaseModel):
13
+ if hasattr(config,'language') and hasattr(config,'additional_languages'):
14
+ if config.language and config.additional_languages and config.language in config.additional_languages:
15
+ raise ValueError(f"Language '{config.language}' cannot be in both the default language and additional_languages")
16
+
17
+
18
+ class WatsonSTTConfig(BaseModel):
19
+ api_url: Annotated[str, Field(min_length=1,max_length=2048)]
20
+ api_key: Optional[Annotated[str, Field(min_length=1,max_length=2048)]] = None
21
+ bearer_token: Optional[Annotated[str, Field(min_length=1,max_length=2048)]] = None
22
+ model: Annotated[str, Field(min_length=1,max_length=256)]
23
+
24
+ class EmotechSTTConfig(BaseModel):
25
+ api_key: Annotated[str,Field(min_length=1,max_length=2048)]
26
+ api_url: Annotated[str,Field(min_length=1,max_length=2048)]
27
+
28
+
29
+ class SpeechToTextConfig(BaseModel):
30
+ provider: Annotated[str, Field(min_length=1,max_length=128)]
31
+ watson_stt_config: Optional[WatsonSTTConfig] = None
32
+ emotech_stt_config: Optional[EmotechSTTConfig] = None
33
+
34
+ @model_validator(mode='after')
35
+ def validate_providers(self):
36
+ _validate_exactly_one_of_fields(self,'SpeechToTextConfig',['watson_stt_config','emotech_stt_config'])
37
+ return self
38
+
39
+ class WatsonTTSConfig(BaseModel):
40
+ api_url: Annotated[str, Field(min_length=1,max_length=2048)]
41
+ api_key: Optional[Annotated[str, Field(min_length=1,max_length=2048)]] = None
42
+ bearer_token: Optional[Annotated[str, Field(min_length=1,max_length=2048)]] = None
43
+ voice: Annotated[str, Field(min_length=1,max_length=128)]
44
+ rate_percentage: Optional[int] = None
45
+ pitch_percentage: Optional[int] = None
46
+ language: Optional[str] = None
47
+
48
+ class EmotechTTSConfig(BaseModel):
49
+ api_url: Annotated[str, Field(min_length=1,max_length=2048)]
50
+ api_key: Annotated[str, Field(min_length=1,max_length=2048)]
51
+ voice: Optional[Annotated[str, Field(min_length=1,max_length=128)]]
52
+
53
+ class TextToSpeechConfig(BaseModel):
54
+ provider: Annotated[str, Field(min_length=1,max_length=128)]
55
+ watson_tts_config: Optional[WatsonTTSConfig] = None
56
+ emotech_tts_config: Optional[EmotechTTSConfig] = None
57
+
58
+ @model_validator(mode='after')
59
+ def validate_providers(self):
60
+ _validate_exactly_one_of_fields(self,'TextToSpeechConfig',['watson_tts_config','emotech_tts_config'])
61
+ return self
62
+
63
+ class AdditionalProperties(BaseModel):
64
+ speech_to_text: Optional[SpeechToTextConfig] = None
65
+ text_to_speech: Optional[TextToSpeechConfig] = None
66
+
67
+ class DTMFInput(BaseModel):
68
+ inter_digit_timeout_ms: Optional[int] = None
69
+ termination_key: Optional[str] = None
70
+ maximum_count: Optional[int] = None
71
+ ignore_speech: Optional[bool] = None
72
+
73
+ class AttachedAgent(BaseModel):
74
+ id: str
75
+ name: Optional[str] = None
76
+ display_name: Optional[str] = None
77
+
78
+ class VoiceConfiguration(BaseModel):
79
+ name: Annotated[str, Field(min_length=1,max_length=128)]
80
+ speech_to_text: SpeechToTextConfig
81
+ text_to_speech: TextToSpeechConfig
82
+ language: Optional[Annotated[str,Field(min_length=2,max_length=16)]] = None
83
+ additional_languages: Optional[dict[str,AdditionalProperties]] = None
84
+ dtmf_input: Optional[DTMFInput] = None
85
+ voice_configuration_id: Optional[str] = None
86
+ tenant_id: Optional[Annotated[str, Field(min_length=1,max_length=128)]] = None
87
+ attached_agents: Optional[list[AttachedAgent]] = None
88
+
89
+ @model_validator(mode='after')
90
+ def validate_language(self):
91
+ _validate_language_uniqueness(self)
92
+ return self
93
+
94
+ def dumps_spec(self) -> str:
95
+ dumped = self.model_dump(mode='json', exclude_none=True)
96
+ return json.dumps(dumped, indent=2)
97
+
98
+
@@ -253,3 +253,23 @@ def export_agent(
253
253
  ):
254
254
  agents_controller = AgentsController()
255
255
  agents_controller.export_agent(name=name, kind=kind, output_path=output_file, agent_only_flag=agent_only_flag)
256
+
257
+ @agents_app.command(name="deploy", help="Deploy Agent")
258
+ def deploy_agent(
259
+ name: Annotated[
260
+ str,
261
+ typer.Option("--name", "-n", help="Name of the agent you wish to deploy"),
262
+ ]
263
+ ):
264
+ agents_controller = AgentsController()
265
+ agents_controller.deploy_agent(name=name)
266
+
267
+ @agents_app.command(name="undeploy", help="Undeploy Agent")
268
+ def undeploy_agent(
269
+ name: Annotated[
270
+ str,
271
+ typer.Option("--name", "-n", help="Name of the agent you wish to undeploy"),
272
+ ]
273
+ ):
274
+ agents_controller = AgentsController()
275
+ agents_controller.undeploy_agent(name=name)