ibm-watsonx-orchestrate 1.10.1__tar.gz → 1.10.2__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.
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/PKG-INFO +1 -1
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/__init__.py +1 -2
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/agent_builder/connections/types.py +6 -53
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/cli/commands/connections/connections_command.py +4 -33
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/cli/commands/connections/connections_controller.py +6 -62
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/cli/commands/server/server_command.py +3 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/cli/commands/server/types.py +6 -14
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/docker/compose-lite.yml +0 -4
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/docker/default.env +1 -3
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/flow_builder/data_map.py +1 -4
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/flow_builder/flows/flow.py +6 -114
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/flow_builder/node.py +5 -76
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/flow_builder/types.py +9 -92
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/.gitignore +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/LICENSE +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/pyproject.toml +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/agent_builder/__init__.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/agent_builder/agents/__init__.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/agent_builder/agents/agent.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/agent_builder/agents/assistant_agent.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/agent_builder/agents/external_agent.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/agent_builder/agents/types.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/agent_builder/agents/webchat_customizations/__init__.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/agent_builder/agents/webchat_customizations/prompts.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/agent_builder/agents/webchat_customizations/welcome_content.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/agent_builder/connections/__init__.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/agent_builder/connections/connections.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/agent_builder/knowledge_bases/knowledge_base.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/agent_builder/knowledge_bases/knowledge_base_requests.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/agent_builder/knowledge_bases/types.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/agent_builder/model_policies/__init__.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/agent_builder/model_policies/types.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/agent_builder/models/__init__.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/agent_builder/models/types.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/agent_builder/toolkits/base_toolkit.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/agent_builder/toolkits/types.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/agent_builder/tools/__init__.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/agent_builder/tools/base_tool.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/agent_builder/tools/flow_tool.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/agent_builder/tools/openapi_tool.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/agent_builder/tools/python_tool.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/agent_builder/tools/types.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/agent_builder/utils/__init__.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/agent_builder/voice_configurations/__init__.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/agent_builder/voice_configurations/types.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/cli/__init__.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/cli/commands/__init__.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/cli/commands/agents/agents_command.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/cli/commands/agents/agents_controller.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/cli/commands/channels/channels_command.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/cli/commands/channels/channels_controller.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/cli/commands/channels/types.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/cli/commands/channels/webchat/channels_webchat_command.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/cli/commands/channels/webchat/channels_webchat_controller.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/cli/commands/chat/chat_command.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/cli/commands/copilot/copilot_command.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/cli/commands/copilot/copilot_controller.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/cli/commands/copilot/copilot_server_controller.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/cli/commands/environment/environment_command.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/cli/commands/environment/environment_controller.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/cli/commands/environment/types.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/cli/commands/evaluations/evaluations_command.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/cli/commands/evaluations/evaluations_controller.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/cli/commands/knowledge_bases/knowledge_bases_command.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/cli/commands/knowledge_bases/knowledge_bases_controller.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/cli/commands/login/login_command.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/cli/commands/models/model_provider_mapper.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/cli/commands/models/models_command.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/cli/commands/models/models_controller.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/cli/commands/settings/__init__.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/cli/commands/settings/observability/__init__.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/cli/commands/settings/observability/langfuse/__init__.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/cli/commands/settings/observability/langfuse/langfuse_command.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/cli/commands/settings/observability/observability_command.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/cli/commands/settings/settings_command.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/cli/commands/toolkit/toolkit_command.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/cli/commands/toolkit/toolkit_controller.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/cli/commands/tools/tools_command.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/cli/commands/tools/tools_controller.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/cli/commands/tools/types.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/cli/commands/voice_configurations/voice_configurations_command.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/cli/commands/voice_configurations/voice_configurations_controller.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/cli/config.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/cli/init_helper.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/cli/main.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/client/__init__.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/client/agents/agent_client.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/client/agents/assistant_agent_client.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/client/agents/external_agent_client.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/client/analytics/__init__.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/client/analytics/llm/__init__.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/client/analytics/llm/analytics_llm_client.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/client/base_api_client.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/client/base_service_instance.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/client/client.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/client/client_errors.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/client/connections/__init__.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/client/connections/connections_client.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/client/connections/utils.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/client/copilot/cpe/copilot_cpe_client.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/client/credentials.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/client/knowledge_bases/knowledge_base_client.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/client/local_service_instance.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/client/model_policies/__init__.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/client/model_policies/model_policies_client.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/client/models/__init__.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/client/models/models_client.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/client/service_instance.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/client/toolkit/toolkit_client.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/client/tools/tempus_client.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/client/tools/tool_client.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/client/utils.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/client/voice_configurations/voice_configurations_client.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/docker/proxy-config-single.yaml +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/docker/sdk/ibm_watsonx_orchestrate-0.6.0-py3-none-any.whl +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/docker/sdk/ibm_watsonx_orchestrate-0.6.0.tar.gz +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/docker/start-up.sh +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/docker/tempus/common-config.yaml +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/flow_builder/__init__.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/flow_builder/flows/__init__.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/flow_builder/flows/constants.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/flow_builder/flows/decorators.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/flow_builder/flows/events.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/flow_builder/utils.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/run/__init__.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/run/connections.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/utils/__init__.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/utils/exceptions.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/utils/logging/__init__.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/utils/logging/logger.py +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/utils/logging/logging.yaml +0 -0
- {ibm_watsonx_orchestrate-1.10.1 → ibm_watsonx_orchestrate-1.10.2}/src/ibm_watsonx_orchestrate/utils/utils.py +0 -0
@@ -165,53 +165,6 @@ class ConnectionConfiguration(BaseModel):
|
|
165
165
|
raise ValueError("Connection of type 'key_value' cannot be configured at the 'member' level. Key value connections must be of type 'team'")
|
166
166
|
return self
|
167
167
|
|
168
|
-
class ConnectionCredentialsEntryLocation(str, Enum):
|
169
|
-
BODY = 'body'
|
170
|
-
HEADER = 'header',
|
171
|
-
QUERY = 'query'
|
172
|
-
|
173
|
-
def __str__(self):
|
174
|
-
return self.value
|
175
|
-
|
176
|
-
class ConnectionCredentialsEntry(BaseModel):
|
177
|
-
key: str
|
178
|
-
value: str
|
179
|
-
location: ConnectionCredentialsEntryLocation
|
180
|
-
|
181
|
-
def __str__(self):
|
182
|
-
return f"<ConnectionCredentialsEntry: {self.location}:{self.key}={self.value}>"
|
183
|
-
|
184
|
-
class BaseOAuthCredentials(BaseModel):
|
185
|
-
custom_token_query: Optional[dict] = None
|
186
|
-
custom_token_header: Optional[dict] = None
|
187
|
-
custom_token_body: Optional[dict] = None
|
188
|
-
custom_auth_query: Optional[dict] = None
|
189
|
-
|
190
|
-
class ConnectionCredentialsCustomFields(BaseOAuthCredentials):
|
191
|
-
def add_field(self, entry: ConnectionCredentialsEntry, is_token:bool=True) -> None:
|
192
|
-
match entry.location:
|
193
|
-
case ConnectionCredentialsEntryLocation.HEADER:
|
194
|
-
if not is_token:
|
195
|
-
return
|
196
|
-
attribute = "custom_token_header"
|
197
|
-
case ConnectionCredentialsEntryLocation.BODY:
|
198
|
-
if not is_token:
|
199
|
-
return
|
200
|
-
attribute = "custom_token_body"
|
201
|
-
case ConnectionCredentialsEntryLocation.QUERY:
|
202
|
-
if is_token:
|
203
|
-
attribute = "custom_token_query"
|
204
|
-
else:
|
205
|
-
attribute = "custom_auth_query"
|
206
|
-
case _:
|
207
|
-
return
|
208
|
-
|
209
|
-
fields = getattr(self, attribute)
|
210
|
-
if not fields:
|
211
|
-
setattr(self, attribute, {})
|
212
|
-
fields = getattr(self, attribute)
|
213
|
-
fields[entry.key] = entry.value
|
214
|
-
|
215
168
|
class BasicAuthCredentials(BaseModel):
|
216
169
|
username: str
|
217
170
|
password: str
|
@@ -229,7 +182,7 @@ class OAuth2TokenCredentials(BaseModel):
|
|
229
182
|
access_token: str
|
230
183
|
url: Optional[str] = None
|
231
184
|
|
232
|
-
class OAuth2AuthCodeCredentials(
|
185
|
+
class OAuth2AuthCodeCredentials(BaseModel):
|
233
186
|
client_id: str
|
234
187
|
client_secret: str
|
235
188
|
token_url: str
|
@@ -240,7 +193,7 @@ class OAuth2AuthCodeCredentials(BaseOAuthCredentials):
|
|
240
193
|
# client_id: str
|
241
194
|
# authorization_url: str
|
242
195
|
|
243
|
-
class OAuth2PasswordCredentials(
|
196
|
+
class OAuth2PasswordCredentials(BaseModel):
|
244
197
|
username: str
|
245
198
|
password: str
|
246
199
|
client_id: str
|
@@ -250,7 +203,7 @@ class OAuth2PasswordCredentials(BaseOAuthCredentials):
|
|
250
203
|
grant_type: str = "password"
|
251
204
|
|
252
205
|
|
253
|
-
class OAuth2ClientCredentials(
|
206
|
+
class OAuth2ClientCredentials(BaseModel):
|
254
207
|
client_id: str
|
255
208
|
client_secret: str
|
256
209
|
token_url: str
|
@@ -258,7 +211,7 @@ class OAuth2ClientCredentials(BaseOAuthCredentials):
|
|
258
211
|
send_via: ConnectionSendVia = ConnectionSendVia.HEADER
|
259
212
|
grant_type: str = "client_credentials"
|
260
213
|
|
261
|
-
class OAuthOnBehalfOfCredentials(
|
214
|
+
class OAuthOnBehalfOfCredentials(BaseModel):
|
262
215
|
client_id: str
|
263
216
|
access_token_url: str
|
264
217
|
grant_type: str
|
@@ -314,7 +267,7 @@ CONNECTION_TYPE_CREDENTIAL_MAPPING = {
|
|
314
267
|
ConnectionSecurityScheme.KEY_VALUE: KeyValueConnectionCredentials,
|
315
268
|
}
|
316
269
|
|
317
|
-
class IdentityProviderCredentials(
|
270
|
+
class IdentityProviderCredentials(BaseModel):
|
318
271
|
idp_url: str = Field(validation_alias=AliasChoices('idp_url', 'url'), serialization_alias='idp_url')
|
319
272
|
client_id: str
|
320
273
|
client_secret: str
|
@@ -323,4 +276,4 @@ class IdentityProviderCredentials(BaseOAuthCredentials):
|
|
323
276
|
|
324
277
|
class ExpectedCredentials(BaseModel):
|
325
278
|
app_id: str
|
326
|
-
type: ConnectionType | List[ConnectionType]
|
279
|
+
type: ConnectionType | List[ConnectionType]
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import typer
|
2
2
|
from typing_extensions import Annotated, List
|
3
|
-
from ibm_watsonx_orchestrate.agent_builder.connections.types import ConnectionEnvironment, ConnectionPreference, ConnectionKind
|
3
|
+
from ibm_watsonx_orchestrate.agent_builder.connections.types import ConnectionEnvironment, ConnectionPreference, ConnectionKind
|
4
4
|
from ibm_watsonx_orchestrate.cli.commands.connections.connections_controller import (
|
5
5
|
add_connection,
|
6
6
|
remove_connection,
|
@@ -8,9 +8,7 @@ from ibm_watsonx_orchestrate.cli.commands.connections.connections_controller imp
|
|
8
8
|
import_connection,
|
9
9
|
configure_connection,
|
10
10
|
set_credentials_connection,
|
11
|
-
set_identity_provider_connection
|
12
|
-
token_entry_connection_credentials_parse,
|
13
|
-
auth_entry_connection_credentials_parse
|
11
|
+
set_identity_provider_connection
|
14
12
|
)
|
15
13
|
|
16
14
|
connections_app = typer.Typer(no_args_is_help=True)
|
@@ -246,22 +244,6 @@ def set_credentials_connection_command(
|
|
246
244
|
help="For key_value, a key value pair in the form '<key>=<value>'. Multiple values can be passed using `-e key1=value1 -e key2=value2`"
|
247
245
|
)
|
248
246
|
] = None,
|
249
|
-
token_entries: Annotated[
|
250
|
-
List[ConnectionCredentialsEntry],
|
251
|
-
typer.Option(
|
252
|
-
'--token-entries', "-t",
|
253
|
-
parser=token_entry_connection_credentials_parse,
|
254
|
-
help="Custom field options for oauth types token request, a key value location option in the form 'location:<key>=<value>' or '<key>=<value>' with location defaulting to 'header'. Multiple values can be passed using `-t key1=value1 -t location:key2=value2`"
|
255
|
-
)
|
256
|
-
] = None,
|
257
|
-
auth_entries: Annotated[
|
258
|
-
List[ConnectionCredentialsEntry],
|
259
|
-
typer.Option(
|
260
|
-
'--auth-entries',
|
261
|
-
parser=auth_entry_connection_credentials_parse,
|
262
|
-
help="Custom field options for oauth_auth_code_flow auth server request, a key value location option in the form 'location:<key>=<value>' or '<key>=<value>' with location defaulting to 'query'. Note only 'query' is a valid location. Multiple values can be passed using `--auth-entries key1=value1 --auth-entries location:key2=value2`"
|
263
|
-
)
|
264
|
-
] = None,
|
265
247
|
):
|
266
248
|
set_credentials_connection(
|
267
249
|
app_id=app_id,
|
@@ -277,9 +259,7 @@ def set_credentials_connection_command(
|
|
277
259
|
auth_url=auth_url,
|
278
260
|
grant_type=grant_type,
|
279
261
|
scope=scope,
|
280
|
-
entries=entries
|
281
|
-
token_entries=token_entries,
|
282
|
-
auth_entries=auth_entries
|
262
|
+
entries=entries
|
283
263
|
)
|
284
264
|
|
285
265
|
@connections_app.command(name="set-identity-provider")
|
@@ -331,14 +311,6 @@ def set_identity_provider_connection_command(
|
|
331
311
|
help='The grant-type of the the identity provider'
|
332
312
|
)
|
333
313
|
],
|
334
|
-
token_entries: Annotated[
|
335
|
-
List[ConnectionCredentialsEntry],
|
336
|
-
typer.Option(
|
337
|
-
'--token-entries', "-t",
|
338
|
-
parser=token_entry_connection_credentials_parse,
|
339
|
-
help="Custom field options for oauth types token request, a key value location option in the form 'location:<key>=<value>' or '<key>=<value>' with location defaulting to 'header'. Multiple values can be passed using `-t key1=value1 -t location:key2=value2`"
|
340
|
-
)
|
341
|
-
] = None,
|
342
314
|
):
|
343
315
|
set_identity_provider_connection(
|
344
316
|
app_id=app_id,
|
@@ -347,6 +319,5 @@ def set_identity_provider_connection_command(
|
|
347
319
|
client_id=client_id,
|
348
320
|
client_secret=client_secret,
|
349
321
|
scope=scope,
|
350
|
-
grant_type=grant_type
|
351
|
-
token_entries=token_entries
|
322
|
+
grant_type=grant_type
|
352
323
|
)
|
@@ -27,10 +27,7 @@ from ibm_watsonx_orchestrate.agent_builder.connections.types import (
|
|
27
27
|
KeyValueConnectionCredentials,
|
28
28
|
CREDENTIALS,
|
29
29
|
IdentityProviderCredentials,
|
30
|
-
OAUTH_CONNECTION_TYPES
|
31
|
-
ConnectionCredentialsEntryLocation,
|
32
|
-
ConnectionCredentialsEntry,
|
33
|
-
ConnectionCredentialsCustomFields
|
30
|
+
OAUTH_CONNECTION_TYPES
|
34
31
|
|
35
32
|
)
|
36
33
|
|
@@ -170,13 +167,6 @@ def _validate_connection_params(type: ConnectionType, **args) -> None:
|
|
170
167
|
f"Missing flags --grant-type is required for type {type}"
|
171
168
|
)
|
172
169
|
|
173
|
-
if type != ConnectionType.OAUTH2_AUTH_CODE and (
|
174
|
-
args.get('auth_entries')
|
175
|
-
):
|
176
|
-
raise typer.BadParameter(
|
177
|
-
f"The flag --auth-entries is only supported by type {type}"
|
178
|
-
)
|
179
|
-
|
180
170
|
|
181
171
|
def _parse_entry(entry: str) -> dict[str,str]:
|
182
172
|
split_entry = entry.split('=', 1)
|
@@ -186,19 +176,6 @@ def _parse_entry(entry: str) -> dict[str,str]:
|
|
186
176
|
exit(1)
|
187
177
|
return {split_entry[0]: split_entry[1]}
|
188
178
|
|
189
|
-
def _get_oauth_custom_fields(token_entries: List[ConnectionCredentialsEntry] | None, auth_entries: List[ConnectionCredentialsEntry] | None) -> dict:
|
190
|
-
custom_fields = ConnectionCredentialsCustomFields()
|
191
|
-
|
192
|
-
if token_entries:
|
193
|
-
for entry in token_entries:
|
194
|
-
custom_fields.add_field(entry, is_token=True)
|
195
|
-
|
196
|
-
if auth_entries:
|
197
|
-
for entry in auth_entries:
|
198
|
-
custom_fields.add_field(entry, is_token=False)
|
199
|
-
|
200
|
-
return custom_fields.model_dump(exclude_none=True)
|
201
|
-
|
202
179
|
def _get_credentials(type: ConnectionType, **kwargs):
|
203
180
|
match type:
|
204
181
|
case ConnectionType.BASIC_AUTH:
|
@@ -215,21 +192,18 @@ def _get_credentials(type: ConnectionType, **kwargs):
|
|
215
192
|
api_key=kwargs.get("api_key")
|
216
193
|
)
|
217
194
|
case ConnectionType.OAUTH2_AUTH_CODE:
|
218
|
-
custom_fields = _get_oauth_custom_fields(kwargs.get("token_entries"), kwargs.get("auth_entries"))
|
219
195
|
return OAuth2AuthCodeCredentials(
|
220
196
|
authorization_url=kwargs.get("auth_url"),
|
221
197
|
client_id=kwargs.get("client_id"),
|
222
198
|
client_secret=kwargs.get("client_secret"),
|
223
199
|
token_url=kwargs.get("token_url"),
|
224
|
-
scope=kwargs.get("scope")
|
225
|
-
**custom_fields
|
200
|
+
scope=kwargs.get("scope")
|
226
201
|
)
|
227
202
|
case ConnectionType.OAUTH2_CLIENT_CREDS:
|
228
203
|
# using filtered args as default values will not be set if 'None' is passed, causing validation errors
|
229
204
|
keys = ["client_id","client_secret","token_url","grant_type","send_via", "scope"]
|
230
205
|
filtered_args = { key_name: kwargs[key_name] for key_name in keys if kwargs.get(key_name) }
|
231
|
-
|
232
|
-
return OAuth2ClientCredentials(**filtered_args, **custom_fields)
|
206
|
+
return OAuth2ClientCredentials(**filtered_args)
|
233
207
|
# case ConnectionType.OAUTH2_IMPLICIT:
|
234
208
|
# return OAuth2ImplicitCredentials(
|
235
209
|
# authorization_url=kwargs.get("auth_url"),
|
@@ -238,16 +212,13 @@ def _get_credentials(type: ConnectionType, **kwargs):
|
|
238
212
|
case ConnectionType.OAUTH2_PASSWORD:
|
239
213
|
keys = ["username", "password", "client_id","client_secret","token_url","grant_type", "scope"]
|
240
214
|
filtered_args = { key_name: kwargs[key_name] for key_name in keys if kwargs.get(key_name) }
|
241
|
-
|
242
|
-
return OAuth2PasswordCredentials(**filtered_args, **custom_fields)
|
215
|
+
return OAuth2PasswordCredentials(**filtered_args)
|
243
216
|
|
244
217
|
case ConnectionType.OAUTH_ON_BEHALF_OF_FLOW:
|
245
|
-
custom_fields = _get_oauth_custom_fields(kwargs.get("token_entries"), kwargs.get("auth_entries"))
|
246
218
|
return OAuthOnBehalfOfCredentials(
|
247
219
|
client_id=kwargs.get("client_id"),
|
248
220
|
access_token_url=kwargs.get("token_url"),
|
249
|
-
grant_type=kwargs.get("grant_type")
|
250
|
-
**custom_fields
|
221
|
+
grant_type=kwargs.get("grant_type")
|
251
222
|
)
|
252
223
|
case ConnectionType.KEY_VALUE:
|
253
224
|
env = {}
|
@@ -260,23 +231,6 @@ def _get_credentials(type: ConnectionType, **kwargs):
|
|
260
231
|
case _:
|
261
232
|
raise ValueError(f"Invalid type '{type}' selected")
|
262
233
|
|
263
|
-
def _connection_credentials_parse_entry(text: str, default_location: ConnectionCredentialsEntryLocation) -> ConnectionCredentialsEntry:
|
264
|
-
location_kv_pair = text.split(":", 1)
|
265
|
-
key_value = location_kv_pair[-1]
|
266
|
-
location = location_kv_pair[0] if len(location_kv_pair)>1 else default_location
|
267
|
-
|
268
|
-
valid_locations = [item.value for item in ConnectionCredentialsEntryLocation]
|
269
|
-
if location not in valid_locations:
|
270
|
-
raise typer.BadParameter(f"The provided location '{location}' is not in the allowed values {valid_locations}.")
|
271
|
-
|
272
|
-
key_value_pair = key_value.split('=', 1)
|
273
|
-
if len(key_value_pair) != 2:
|
274
|
-
message = f"The entry '{text}' is not in the expected form '<location>:<key>=<value>' or '<key>=<value>'"
|
275
|
-
raise typer.BadParameter(message)
|
276
|
-
key, value = key_value_pair[0], key_value_pair[1]
|
277
|
-
|
278
|
-
return ConnectionCredentialsEntry(key=key, value=value, location=location)
|
279
|
-
|
280
234
|
|
281
235
|
def add_configuration(config: ConnectionConfiguration) -> None:
|
282
236
|
client = get_connections_client()
|
@@ -570,15 +524,5 @@ def set_identity_provider_connection(
|
|
570
524
|
logger.error(f"Cannot set Identity Provider when 'sso' is false in configuration. Please enable sso for connection '{app_id}' in environment '{environment}' and try again.")
|
571
525
|
sys.exit(1)
|
572
526
|
|
573
|
-
|
574
|
-
idp = IdentityProviderCredentials(**kwargs, **custom_fields)
|
527
|
+
idp = IdentityProviderCredentials.model_validate(kwargs)
|
575
528
|
add_identity_provider(app_id=app_id, environment=environment, idp=idp)
|
576
|
-
|
577
|
-
def token_entry_connection_credentials_parse(text: str) -> ConnectionCredentialsEntry:
|
578
|
-
return _connection_credentials_parse_entry(text=text, default_location=ConnectionCredentialsEntryLocation.HEADER)
|
579
|
-
|
580
|
-
def auth_entry_connection_credentials_parse(text: str) -> ConnectionCredentialsEntry:
|
581
|
-
entry = _connection_credentials_parse_entry(text=text, default_location=ConnectionCredentialsEntryLocation.QUERY)
|
582
|
-
if entry.location != ConnectionCredentialsEntryLocation.QUERY:
|
583
|
-
raise typer.BadParameter(f"Only location '{ConnectionCredentialsEntryLocation.QUERY}' is supported for --auth-entry")
|
584
|
-
return entry
|
@@ -191,6 +191,9 @@ def get_default_registry_env_vars_by_dev_edition_source(default_env: dict, user_
|
|
191
191
|
parsed = urlparse(wo_url)
|
192
192
|
hostname = parsed.hostname
|
193
193
|
|
194
|
+
if not hostname or not hostname.startswith("api."):
|
195
|
+
raise ValueError(f"Invalid WO_INSTANCE URL: '{wo_url}'. It should starts with 'api.'")
|
196
|
+
|
194
197
|
registry_url = f"registry.{hostname[4:]}/cp/wxo-lite"
|
195
198
|
else:
|
196
199
|
raise ValueError(f"Unknown value for developer edition source: {source}. Must be one of ['internal', 'myibm', 'orchestrate'].")
|
@@ -1,6 +1,5 @@
|
|
1
1
|
import logging
|
2
2
|
import sys
|
3
|
-
import uuid
|
4
3
|
from enum import Enum
|
5
4
|
from pydantic import BaseModel, model_validator, ConfigDict
|
6
5
|
|
@@ -44,6 +43,9 @@ class WatsonXAIEnvConfig(BaseModel):
|
|
44
43
|
if not config.get("WATSONX_SPACE_ID") and not config.get("WATSONX_APIKEY"):
|
45
44
|
raise ValueError("Missing configuration requirements 'WATSONX_SPACE_ID' and 'WATSONX_APIKEY'")
|
46
45
|
|
46
|
+
if config.get("WATSONX_SPACE_ID") and not config.get("WATSONX_APIKEY"):
|
47
|
+
logger.error("Cannot use env var 'WATSONX_SPACE_ID' without setting the corresponding 'WATSONX_APIKEY'")
|
48
|
+
sys.exit(1)
|
47
49
|
|
48
50
|
if not config.get("WATSONX_SPACE_ID") and config.get("WATSONX_APIKEY"):
|
49
51
|
logger.error("Cannot use env var 'WATSONX_APIKEY' without setting the corresponding 'WATSONX_SPACE_ID'")
|
@@ -52,12 +54,6 @@ class WatsonXAIEnvConfig(BaseModel):
|
|
52
54
|
config["USE_SAAS_ML_TOOLS_RUNTIME"] = False
|
53
55
|
return config
|
54
56
|
|
55
|
-
def is_valid_uuid(value) -> bool:
|
56
|
-
try:
|
57
|
-
uuid.UUID(str(value))
|
58
|
-
return True
|
59
|
-
except (ValueError, TypeError, AttributeError):
|
60
|
-
return False
|
61
57
|
|
62
58
|
class ModelGatewayEnvConfig(BaseModel):
|
63
59
|
WO_API_KEY: str | None = None
|
@@ -88,10 +84,7 @@ class ModelGatewayEnvConfig(BaseModel):
|
|
88
84
|
if not config.get("AUTHORIZATION_URL"):
|
89
85
|
inferred_auth_url = AUTH_TYPE_DEFAULT_URL_MAPPING.get(auth_type)
|
90
86
|
if not inferred_auth_url:
|
91
|
-
|
92
|
-
inferred_auth_url = config.get("WO_INSTANCE") + '/icp4d-api/v1/authorize'
|
93
|
-
else:
|
94
|
-
logger.error(f"No 'AUTHORIZATION_URL' found. Auth type '{auth_type}' does not support defaulting. Please set the 'AUTHORIZATION_URL' explictly")
|
87
|
+
logger.error(f"No 'AUTHORIZATION_URL' found. Auth type '{auth_type}' does not support defaulting. Please set the 'AUTHORIZATION_URL' explictly")
|
95
88
|
sys.exit(1)
|
96
89
|
config["AUTHORIZATION_URL"] = inferred_auth_url
|
97
90
|
|
@@ -108,7 +101,6 @@ class ModelGatewayEnvConfig(BaseModel):
|
|
108
101
|
sys.exit(1)
|
109
102
|
|
110
103
|
config["USE_SAAS_ML_TOOLS_RUNTIME"] = True
|
111
|
-
|
112
|
-
|
113
|
-
config["WATSONX_SPACE_ID"] = "aaaaaaaa-aaaa-4aaa-aaaa-aaaaaaaaaaaa"
|
104
|
+
# Fake (but valid) UUIDv4 for knowledgebase check
|
105
|
+
config["WATSONX_SPACE_ID"] = "aaaaaaaa-aaaa-4aaa-aaaa-aaaaaaaaaaaa"
|
114
106
|
return config
|
@@ -62,7 +62,6 @@ services:
|
|
62
62
|
WATSONX_API_KEY: ${WATSONX_APIKEY}
|
63
63
|
WATSONX_URL: ${WATSONX_URL}
|
64
64
|
WATSONX_SPACE_ID: ${WATSONX_SPACE_ID}
|
65
|
-
NODE_TLS_REJECT_UNAUTHORIZED: ${AI_GATEWAY_TLS_REJECT_UNAUTHORIZED}
|
66
65
|
|
67
66
|
wxo-agent-gateway:
|
68
67
|
image: ${AGENT_GATEWAY_REGISTRY:-us.icr.io/watson-orchestrate-private}/wxo-agent-gateway:${AGENT_GATEWAY_TAG:-latest}
|
@@ -328,7 +327,6 @@ services:
|
|
328
327
|
ENABLE_WEBHOOKS: false
|
329
328
|
DISABLE_JSON_LOG_CELERY: true
|
330
329
|
WXO_DEPLOYMENT_PLATFORM: saas
|
331
|
-
CPD_VERIFY: ${CPD_VERIFY}
|
332
330
|
CONNECTION_MANAGER_URL: http://wxo-server-connection-manager:3001
|
333
331
|
CHANNEL_SESSION_REDIS_URL: redis://wxo-server-redis:6379/5
|
334
332
|
WXO_MILVUS_URI: http://wxo-milvus-standalone:19530
|
@@ -448,7 +446,6 @@ services:
|
|
448
446
|
IBM_TELEMETRY_TRACER_ENDPOINT: http://jaeger:4318/v1/traces
|
449
447
|
USE_IBM_TELEMETRY: ${USE_IBM_TELEMETRY:-false}
|
450
448
|
WXO_DEPLOYMENT_PLATFORM: saas
|
451
|
-
CPD_VERIFY: ${CPD_VERIFY}
|
452
449
|
CALLBACK_HOST_URL: ${CALLBACK_HOST_URL:-http://wxo-server:4321}
|
453
450
|
LANGFLOW_ENABLED: ${LANGFLOW_ENABLED:-false}
|
454
451
|
|
@@ -656,7 +653,6 @@ services:
|
|
656
653
|
- WATSONX_URL=${WATSONX_URL}
|
657
654
|
- PROXY_SERVER_URL=http://jaeger-proxy:9201
|
658
655
|
- WXO_DEPLOYMENT_PLATFORM=saas
|
659
|
-
- CPD_VERIFY=${CPD_VERIFY}
|
660
656
|
- TENANT_API_KEY=${AGENTOPS_API_KEY}
|
661
657
|
- TENANT_CONFIG_URL=http://wxo-server:4321
|
662
658
|
- TENANT_DEFAULT_USERNAME=${ES_USERNAME}
|
@@ -92,7 +92,7 @@ TR_REGISTRY=
|
|
92
92
|
BUILDER_TAG=27-08-2025-7432aca
|
93
93
|
BUILDER_REGISTRY=
|
94
94
|
|
95
|
-
FLOW_RUNTIME_TAG=
|
95
|
+
FLOW_RUNTIME_TAG=18-08-2025-v3
|
96
96
|
FLOW_RUMTIME_REGISTRY=
|
97
97
|
|
98
98
|
|
@@ -126,8 +126,6 @@ DOCPROC_REGISTRY=
|
|
126
126
|
|
127
127
|
# END -- IMAGE REGISTRIES AND TAGS
|
128
128
|
|
129
|
-
CPD_VERIFY=true
|
130
|
-
AI_GATEWAY_TLS_REJECT_UNAUTHORIZED=1
|
131
129
|
TAVILY_API_KEY=dummy_tavily_api_key
|
132
130
|
PREFERRED_MODELS=meta-llama/llama-3-2-90b-vision-instruct,meta-llama/llama-3-405b-instruct
|
133
131
|
INCOMPATIBLE_MODELS=flan,embedding,cross-encoder,tinytimemixers
|
@@ -12,10 +12,7 @@ class DataMap(BaseModel):
|
|
12
12
|
def to_json(self) -> dict[str, Any]:
|
13
13
|
model_spec = {}
|
14
14
|
if self.maps and len(self.maps) > 0:
|
15
|
-
model_spec["maps"] = []
|
16
|
-
for assignment in self.maps:
|
17
|
-
model_spec["maps"].append(assignment.model_dump())
|
18
|
-
return model_spec
|
15
|
+
model_spec["maps"] = [assignment.model_dump() for assignment in self.maps]
|
19
16
|
|
20
17
|
def add(self, line: Assignment) -> Self:
|
21
18
|
self.maps.append(line)
|
@@ -25,7 +25,7 @@ from ibm_watsonx_orchestrate.client.tools.tool_client import ToolClient
|
|
25
25
|
from ibm_watsonx_orchestrate.client.tools.tempus_client import TempusClient
|
26
26
|
from ibm_watsonx_orchestrate.client.utils import instantiate_client
|
27
27
|
from ..types import (
|
28
|
-
DocProcKVPSchema,
|
28
|
+
DocProcKVPSchema, EndNodeSpec, Expression, ForeachPolicy, ForeachSpec, LoopSpec, BranchNodeSpec, MatchPolicy, PlainTextReadingOrder, PromptLLMParameters, PromptNodeSpec, TimerNodeSpec,
|
29
29
|
StartNodeSpec, ToolSpec, JsonSchemaObject, ToolRequestBody, ToolResponseBody, UserFieldKind, UserFieldOption, UserFlowSpec, UserNodeSpec, WaitPolicy,
|
30
30
|
DocProcSpec, TextExtractionResponse, DocProcInput, DecisionsNodeSpec, DecisionsRule, DocExtSpec, File, DocumentClassificationResponse, DocClassifierSpec, DocumentProcessingCommonInput
|
31
31
|
)
|
@@ -64,7 +64,7 @@ class FlowEdge(BaseModel):
|
|
64
64
|
|
65
65
|
class Flow(Node):
|
66
66
|
'''Flow represents a flow that will be run by wxO Flow engine.'''
|
67
|
-
output_map:
|
67
|
+
output_map: DataMap | None = None
|
68
68
|
nodes: dict[str, SerializeAsAny[Node]] = {}
|
69
69
|
edges: List[FlowEdge] = []
|
70
70
|
schemas: dict[str, JsonSchemaObject] = {}
|
@@ -401,7 +401,6 @@ class Flow(Node):
|
|
401
401
|
display_name: str|None=None,
|
402
402
|
system_prompt: str | list[str] | None = None,
|
403
403
|
user_prompt: str | list[str] | None = None,
|
404
|
-
prompt_examples: list[PromptExample] | None = None,
|
405
404
|
llm: str | None = None,
|
406
405
|
llm_parameters: PromptLLMParameters | None = None,
|
407
406
|
description: str | None = None,
|
@@ -423,7 +422,6 @@ class Flow(Node):
|
|
423
422
|
description=description,
|
424
423
|
system_prompt=system_prompt,
|
425
424
|
user_prompt=user_prompt,
|
426
|
-
prompt_examples=prompt_examples,
|
427
425
|
llm=llm,
|
428
426
|
llm_parameters=llm_parameters,
|
429
427
|
input_schema=_get_tool_request_body(input_schema_obj),
|
@@ -723,7 +721,7 @@ class Flow(Node):
|
|
723
721
|
'''Create a single node flow with an automatic START and END node.'''
|
724
722
|
return self.sequence(START, node, END)
|
725
723
|
|
726
|
-
def branch(self, evaluator: Union[Callable, Expression
|
724
|
+
def branch(self, evaluator: Union[Callable, Expression]) -> "Branch":
|
727
725
|
'''Create a BRANCH node'''
|
728
726
|
e = evaluator
|
729
727
|
if isinstance(evaluator, Callable):
|
@@ -737,19 +735,11 @@ class Flow(Node):
|
|
737
735
|
# e = new_script_spec
|
738
736
|
elif isinstance(evaluator, str):
|
739
737
|
e = Expression(expression=evaluator)
|
740
|
-
elif isinstance(evaluator, list):
|
741
|
-
e = Conditions(conditions=evaluator)
|
742
738
|
|
743
739
|
spec = BranchNodeSpec(name = "branch_" + str(self._next_sequence_id()), evaluator=e)
|
744
740
|
branch_node = Branch(spec = spec, containing_flow=self)
|
745
741
|
return cast(Branch, self._add_node(branch_node))
|
746
742
|
|
747
|
-
def conditions(self) -> 'Branch':
|
748
|
-
'''Create a Branch node with empty Conditions evaluator (if-else)'''
|
749
|
-
spec = BranchNodeSpec(name = "branch_" + str(self._next_sequence_id()), evaluator=Conditions(conditions=[]))
|
750
|
-
branch_conditions_node = Branch(spec = spec, containing_flow=self)
|
751
|
-
return cast(Branch, self._add_node(branch_conditions_node))
|
752
|
-
|
753
743
|
def wait_for(self, *args) -> "Wait":
|
754
744
|
'''Wait for all incoming nodes to complete.'''
|
755
745
|
raise ValueError("Not implemented yet.")
|
@@ -764,77 +754,6 @@ class Flow(Node):
|
|
764
754
|
|
765
755
|
# return cast(Wait, self.node(wait_node))
|
766
756
|
|
767
|
-
def map_flow_output_with_variable(self, target_output_variable: str, variable: str, default_value: str = None) -> Self:
|
768
|
-
if self.output_map and "spec" in self.output_map:
|
769
|
-
maps = self.output_map["spec"].maps or []
|
770
|
-
else:
|
771
|
-
maps = []
|
772
|
-
|
773
|
-
curr_map_metadata = {
|
774
|
-
"assignmentType": "variable"
|
775
|
-
}
|
776
|
-
|
777
|
-
target_variable = "flow.output." + target_output_variable
|
778
|
-
value_expression = "flow." + variable
|
779
|
-
|
780
|
-
if default_value:
|
781
|
-
maps.append(Assignment(target_variable=target_variable, value_expression=value_expression, default_value=default_value, metadata=curr_map_metadata))
|
782
|
-
else:
|
783
|
-
maps.append(Assignment(target_variable=target_variable, value_expression=value_expression, metadata=curr_map_metadata))
|
784
|
-
|
785
|
-
flow_output_map_spec = DataMap(maps=maps)
|
786
|
-
|
787
|
-
if self.output_map and "spec" in self.output_map:
|
788
|
-
self.output_map["spec"] = flow_output_map_spec
|
789
|
-
else:
|
790
|
-
self.output_map = {"spec": flow_output_map_spec}
|
791
|
-
return self
|
792
|
-
|
793
|
-
def map_output(self, output_variable: str, expression: str, default_value: str = None) -> Self:
|
794
|
-
if self.output_map and "spec" in self.output_map:
|
795
|
-
maps = self.output_map["spec"].maps or []
|
796
|
-
else:
|
797
|
-
maps = []
|
798
|
-
|
799
|
-
curr_map_metadata = {
|
800
|
-
"assignmentType": "pyExpression"
|
801
|
-
}
|
802
|
-
|
803
|
-
target_variable = "flow.output." + output_variable
|
804
|
-
value_expression = expression
|
805
|
-
|
806
|
-
if default_value:
|
807
|
-
maps.append(Assignment(target_variable=target_variable, value_expression=value_expression, default_value=default_value, metadata=curr_map_metadata))
|
808
|
-
else:
|
809
|
-
maps.append(Assignment(target_variable=target_variable, value_expression=value_expression, metadata=curr_map_metadata))
|
810
|
-
|
811
|
-
flow_output_map_spec = DataMap(maps=maps)
|
812
|
-
|
813
|
-
if self.output_map and "spec" in self.output_map:
|
814
|
-
self.output_map["spec"] = flow_output_map_spec
|
815
|
-
else:
|
816
|
-
self.output_map = {"spec": flow_output_map_spec}
|
817
|
-
return self
|
818
|
-
|
819
|
-
def map_flow_output_with_none(self, target_output_variable: str) -> Self:
|
820
|
-
if self.output_map and "spec" in self.output_map:
|
821
|
-
maps = self.output_map["spec"].maps or []
|
822
|
-
else:
|
823
|
-
maps = []
|
824
|
-
|
825
|
-
|
826
|
-
target_variable = "flow.output." + target_output_variable
|
827
|
-
|
828
|
-
maps.append(Assignment(target_variable=target_variable, value_expression=None))
|
829
|
-
|
830
|
-
flow_output_map_spec = DataMap(maps=maps)
|
831
|
-
|
832
|
-
if self.output_map and "spec" in self.output_map:
|
833
|
-
self.output_map["spec"] = flow_output_map_spec
|
834
|
-
else:
|
835
|
-
self.output_map = {"spec": flow_output_map_spec}
|
836
|
-
return self
|
837
|
-
|
838
757
|
|
839
758
|
def foreach(self, item_schema: type[BaseModel],
|
840
759
|
input_schema: type[BaseModel] |None=None,
|
@@ -895,6 +814,8 @@ class Flow(Node):
|
|
895
814
|
input_schema: type[BaseModel] |None=None,
|
896
815
|
output_schema: type[BaseModel] |None=None) -> "UserFlow": # return a UserFlow object
|
897
816
|
|
817
|
+
raise ValueError("userflow is NOT supported yet and it's interface will change.")
|
818
|
+
|
898
819
|
output_schema_obj = _get_json_schema_obj("output", output_schema)
|
899
820
|
input_schema_obj = _get_json_schema_obj("input", input_schema)
|
900
821
|
|
@@ -996,11 +917,6 @@ class Flow(Node):
|
|
996
917
|
for key, value in self.metadata.items():
|
997
918
|
metadata_dict[key] = value
|
998
919
|
flow_dict["metadata"] = metadata_dict
|
999
|
-
|
1000
|
-
if self.output_map and "spec" in self.output_map:
|
1001
|
-
flow_dict["output_map"] = {
|
1002
|
-
"spec": self.output_map["spec"].to_json()
|
1003
|
-
}
|
1004
920
|
return flow_dict
|
1005
921
|
|
1006
922
|
def _get_node_id(self, node: Union[str, Node]) -> str:
|
@@ -1310,27 +1226,6 @@ class Branch(FlowControl):
|
|
1310
1226
|
raise ValueError("Cannot have custom label __default__. Use default() instead.")
|
1311
1227
|
|
1312
1228
|
return self._add_case(label, node)
|
1313
|
-
|
1314
|
-
def condition(self, to_node: Node, expression: str="", default: bool=False) -> Self:
|
1315
|
-
'''
|
1316
|
-
Add a condition to this branch node.
|
1317
|
-
|
1318
|
-
Parameters:
|
1319
|
-
expression (str): The expression of this condition.
|
1320
|
-
to_node (Node): The node to go to when expression is evaluated to true.
|
1321
|
-
default (bool): The condition is the default (else) case.
|
1322
|
-
'''
|
1323
|
-
|
1324
|
-
node_id = self.containing_flow._get_node_id(to_node)
|
1325
|
-
if default:
|
1326
|
-
condition = NodeIdCondition(node_id=node_id, default=default)
|
1327
|
-
else:
|
1328
|
-
condition = NodeIdCondition(expression=expression, node_id=node_id, default=default)
|
1329
|
-
|
1330
|
-
self.spec.evaluator.conditions.append(condition)
|
1331
|
-
self.containing_flow.edge(self, to_node)
|
1332
|
-
|
1333
|
-
return self
|
1334
1229
|
|
1335
1230
|
def default(self, node: Node) -> Self:
|
1336
1231
|
'''
|
@@ -1550,14 +1445,13 @@ class UserFlow(Flow):
|
|
1550
1445
|
kind: UserFieldKind = UserFieldKind.Text,
|
1551
1446
|
display_name: str | None = None,
|
1552
1447
|
description: str | None = None,
|
1553
|
-
direction: str | None = None,
|
1554
1448
|
default: Any | None = None,
|
1555
1449
|
text: str = None, # The text used to ask question to the user, e.g. 'what is your name?'
|
1556
1450
|
option: UserFieldOption | None = None,
|
1557
1451
|
is_list: bool = False,
|
1558
1452
|
min: Any | None = None,
|
1559
1453
|
max: Any | None = None,
|
1560
|
-
input_map: DataMap
|
1454
|
+
input_map: DataMap = None,
|
1561
1455
|
custom: dict[str, Any] = {}) -> UserNode:
|
1562
1456
|
'''create a node in the flow'''
|
1563
1457
|
# create a json schema object based on the single field
|
@@ -1589,8 +1483,6 @@ class UserFlow(Flow):
|
|
1589
1483
|
description = description,
|
1590
1484
|
default = default,
|
1591
1485
|
text = text,
|
1592
|
-
direction = direction,
|
1593
|
-
input_map = input_map,
|
1594
1486
|
option = option,
|
1595
1487
|
is_list = is_list,
|
1596
1488
|
min = min,
|