ibm-watsonx-orchestrate 1.0.1__tar.gz → 1.1.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.
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/PKG-INFO +1 -1
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/src/ibm_watsonx_orchestrate/__init__.py +2 -1
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/src/ibm_watsonx_orchestrate/agent_builder/tools/python_tool.py +7 -2
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/src/ibm_watsonx_orchestrate/cli/commands/server/server_command.py +179 -52
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/src/ibm_watsonx_orchestrate/cli/commands/tools/tools_controller.py +3 -9
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/src/ibm_watsonx_orchestrate/cli/config.py +5 -1
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/src/ibm_watsonx_orchestrate/cli/main.py +5 -5
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/src/ibm_watsonx_orchestrate/docker/compose-lite.yml +12 -10
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/src/ibm_watsonx_orchestrate/docker/default.env +21 -18
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/.gitignore +0 -0
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/LICENSE +0 -0
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/pyproject.toml +0 -0
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/src/ibm_watsonx_orchestrate/agent_builder/__init__.py +0 -0
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/src/ibm_watsonx_orchestrate/agent_builder/agents/__init__.py +0 -0
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/src/ibm_watsonx_orchestrate/agent_builder/agents/agent.py +0 -0
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/src/ibm_watsonx_orchestrate/agent_builder/agents/assistant_agent.py +0 -0
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/src/ibm_watsonx_orchestrate/agent_builder/agents/external_agent.py +0 -0
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/src/ibm_watsonx_orchestrate/agent_builder/agents/types.py +0 -0
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/src/ibm_watsonx_orchestrate/agent_builder/connections/__init__.py +0 -0
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/src/ibm_watsonx_orchestrate/agent_builder/connections/connections.py +0 -0
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/src/ibm_watsonx_orchestrate/agent_builder/connections/types.py +0 -0
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/src/ibm_watsonx_orchestrate/agent_builder/knowledge_bases/knowledge_base.py +0 -0
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/src/ibm_watsonx_orchestrate/agent_builder/knowledge_bases/knowledge_base_requests.py +0 -0
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/src/ibm_watsonx_orchestrate/agent_builder/knowledge_bases/types.py +0 -0
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/src/ibm_watsonx_orchestrate/agent_builder/tools/__init__.py +0 -0
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/src/ibm_watsonx_orchestrate/agent_builder/tools/base_tool.py +0 -0
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/src/ibm_watsonx_orchestrate/agent_builder/tools/openapi_tool.py +0 -0
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/src/ibm_watsonx_orchestrate/agent_builder/tools/types.py +0 -0
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/src/ibm_watsonx_orchestrate/agent_builder/utils/__init__.py +0 -0
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/src/ibm_watsonx_orchestrate/agent_builder/utils/pydantic_utils.py +0 -0
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/src/ibm_watsonx_orchestrate/cli/__init__.py +0 -0
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/src/ibm_watsonx_orchestrate/cli/commands/__init__.py +0 -0
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/src/ibm_watsonx_orchestrate/cli/commands/agents/agents_command.py +0 -0
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/src/ibm_watsonx_orchestrate/cli/commands/agents/agents_controller.py +0 -0
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/src/ibm_watsonx_orchestrate/cli/commands/channels/channels_command.py +0 -0
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/src/ibm_watsonx_orchestrate/cli/commands/channels/channels_controller.py +0 -0
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/src/ibm_watsonx_orchestrate/cli/commands/channels/types.py +0 -0
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/src/ibm_watsonx_orchestrate/cli/commands/channels/webchat/channels_webchat_command.py +0 -0
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/src/ibm_watsonx_orchestrate/cli/commands/channels/webchat/channels_webchat_controller.py +0 -0
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/src/ibm_watsonx_orchestrate/cli/commands/chat/chat_command.py +0 -0
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/src/ibm_watsonx_orchestrate/cli/commands/connections/connections_command.py +0 -0
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/src/ibm_watsonx_orchestrate/cli/commands/connections/connections_controller.py +0 -0
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/src/ibm_watsonx_orchestrate/cli/commands/environment/environment_command.py +0 -0
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/src/ibm_watsonx_orchestrate/cli/commands/environment/environment_controller.py +0 -0
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/src/ibm_watsonx_orchestrate/cli/commands/environment/types.py +0 -0
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/src/ibm_watsonx_orchestrate/cli/commands/knowledge_bases/knowledge_bases_command.py +0 -0
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/src/ibm_watsonx_orchestrate/cli/commands/knowledge_bases/knowledge_bases_controller.py +0 -0
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/src/ibm_watsonx_orchestrate/cli/commands/login/login_command.py +0 -0
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/src/ibm_watsonx_orchestrate/cli/commands/models/models_command.py +0 -0
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/src/ibm_watsonx_orchestrate/cli/commands/settings/__init__.py +0 -0
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/src/ibm_watsonx_orchestrate/cli/commands/settings/observability/__init__.py +0 -0
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/src/ibm_watsonx_orchestrate/cli/commands/settings/observability/langfuse/__init__.py +0 -0
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/src/ibm_watsonx_orchestrate/cli/commands/settings/observability/langfuse/langfuse_command.py +0 -0
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/src/ibm_watsonx_orchestrate/cli/commands/settings/observability/observability_command.py +0 -0
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/src/ibm_watsonx_orchestrate/cli/commands/settings/settings_command.py +0 -0
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/src/ibm_watsonx_orchestrate/cli/commands/tools/tools_command.py +0 -0
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/src/ibm_watsonx_orchestrate/cli/commands/tools/types.py +0 -0
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/src/ibm_watsonx_orchestrate/client/__init__.py +0 -0
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/src/ibm_watsonx_orchestrate/client/agents/agent_client.py +0 -0
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/src/ibm_watsonx_orchestrate/client/agents/assistant_agent_client.py +0 -0
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/src/ibm_watsonx_orchestrate/client/agents/external_agent_client.py +0 -0
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/src/ibm_watsonx_orchestrate/client/analytics/__init__.py +0 -0
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/src/ibm_watsonx_orchestrate/client/analytics/llm/__init__.py +0 -0
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/src/ibm_watsonx_orchestrate/client/analytics/llm/analytics_llm_client.py +0 -0
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/src/ibm_watsonx_orchestrate/client/base_api_client.py +0 -0
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/src/ibm_watsonx_orchestrate/client/base_service_instance.py +0 -0
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/src/ibm_watsonx_orchestrate/client/client.py +0 -0
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/src/ibm_watsonx_orchestrate/client/client_errors.py +0 -0
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/src/ibm_watsonx_orchestrate/client/connections/__init__.py +0 -0
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/src/ibm_watsonx_orchestrate/client/connections/connections_client.py +0 -0
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/src/ibm_watsonx_orchestrate/client/connections/utils.py +0 -0
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/src/ibm_watsonx_orchestrate/client/credentials.py +0 -0
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/src/ibm_watsonx_orchestrate/client/knowledge_bases/knowledge_base_client.py +0 -0
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/src/ibm_watsonx_orchestrate/client/local_service_instance.py +0 -0
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/src/ibm_watsonx_orchestrate/client/service_instance.py +0 -0
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/src/ibm_watsonx_orchestrate/client/tools/tool_client.py +0 -0
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/src/ibm_watsonx_orchestrate/client/utils.py +0 -0
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/src/ibm_watsonx_orchestrate/docker/sdk/ibm_watsonx_orchestrate-0.6.0-py3-none-any.whl +0 -0
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/src/ibm_watsonx_orchestrate/docker/sdk/ibm_watsonx_orchestrate-0.6.0.tar.gz +0 -0
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/src/ibm_watsonx_orchestrate/docker/start-up.sh +0 -0
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/src/ibm_watsonx_orchestrate/docker/tempus/common-config.yaml +0 -0
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/src/ibm_watsonx_orchestrate/run/__init__.py +0 -0
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/src/ibm_watsonx_orchestrate/run/connections.py +0 -0
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/src/ibm_watsonx_orchestrate/utils/__init__.py +0 -0
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/src/ibm_watsonx_orchestrate/utils/logging/__init__.py +0 -0
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/src/ibm_watsonx_orchestrate/utils/logging/logger.py +0 -0
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/src/ibm_watsonx_orchestrate/utils/logging/logging.yaml +0 -0
- {ibm_watsonx_orchestrate-1.0.1 → ibm_watsonx_orchestrate-1.1.0}/src/ibm_watsonx_orchestrate/utils/utils.py +0 -0
@@ -121,6 +121,7 @@ def tool(
|
|
121
121
|
_desc = description
|
122
122
|
if description is None and doc is not None:
|
123
123
|
_desc = doc.description
|
124
|
+
|
124
125
|
|
125
126
|
spec = ToolSpec(
|
126
127
|
name=name or fn.__name__,
|
@@ -150,7 +151,11 @@ def tool(
|
|
150
151
|
|
151
152
|
sig = inspect.signature(fn)
|
152
153
|
if not input_schema:
|
153
|
-
|
154
|
+
try:
|
155
|
+
input_schema_model: type[BaseModel] = create_schema_from_function(spec.name, fn, parse_docstring=True)
|
156
|
+
except:
|
157
|
+
logger.warning("Unable to properly parse parameter descriptions due to incorrectly formatted docstring. This may result in degraded agent performance. To fix this, please ensure the docstring conforms to Google's docstring format.")
|
158
|
+
input_schema_model: type[BaseModel] = create_schema_from_function(spec.name, fn, parse_docstring=False)
|
154
159
|
input_schema_json = input_schema_model.model_json_schema()
|
155
160
|
input_schema_json = dereference_refs(input_schema_json)
|
156
161
|
|
@@ -165,7 +170,7 @@ def tool(
|
|
165
170
|
)
|
166
171
|
else:
|
167
172
|
spec.input_schema = input_schema
|
168
|
-
|
173
|
+
|
169
174
|
_validate_input_schema(spec.input_schema)
|
170
175
|
|
171
176
|
if not output_schema:
|
@@ -1,30 +1,25 @@
|
|
1
|
+
import importlib.resources as resources
|
1
2
|
import logging
|
2
|
-
import
|
3
|
+
import os
|
4
|
+
import platform
|
3
5
|
import subprocess
|
6
|
+
import sys
|
4
7
|
import tempfile
|
5
|
-
from pathlib import Path
|
6
|
-
import requests
|
7
8
|
import time
|
8
|
-
import
|
9
|
-
import platform
|
10
|
-
|
9
|
+
from pathlib import Path
|
11
10
|
|
12
|
-
import typer
|
13
|
-
import importlib.resources as resources
|
14
11
|
import jwt
|
12
|
+
import requests
|
13
|
+
import typer
|
14
|
+
from dotenv import dotenv_values
|
15
15
|
|
16
|
-
from dotenv import dotenv_values, load_dotenv
|
17
|
-
|
18
|
-
from ibm_watsonx_orchestrate.client.agents.agent_client import AgentClient
|
19
|
-
from ibm_watsonx_orchestrate.client.analytics.llm.analytics_llm_client import AnalyticsLLMClient, AnalyticsLLMConfig, \
|
20
|
-
AnalyticsLLMUpsertToolIdentifier
|
21
16
|
from ibm_watsonx_orchestrate.client.utils import instantiate_client, check_token_validity, is_local_dev
|
22
|
-
|
23
|
-
from ibm_watsonx_orchestrate.cli.
|
17
|
+
from ibm_watsonx_orchestrate.cli.commands.environment.environment_controller import _login
|
18
|
+
from ibm_watsonx_orchestrate.cli.config import LICENSE_HEADER, \
|
19
|
+
ENV_ACCEPT_LICENSE
|
24
20
|
from ibm_watsonx_orchestrate.cli.config import PROTECTED_ENV_NAME, clear_protected_env_credentials_token, Config, \
|
25
|
-
AUTH_CONFIG_FILE_FOLDER, AUTH_CONFIG_FILE, AUTH_MCSP_TOKEN_OPT,
|
26
|
-
|
27
|
-
from dotenv import dotenv_values, load_dotenv
|
21
|
+
AUTH_CONFIG_FILE_FOLDER, AUTH_CONFIG_FILE, AUTH_MCSP_TOKEN_OPT, AUTH_SECTION_HEADER, USER_ENV_CACHE_HEADER
|
22
|
+
from ibm_watsonx_orchestrate.client.agents.agent_client import AgentClient
|
28
23
|
|
29
24
|
logger = logging.getLogger(__name__)
|
30
25
|
|
@@ -52,11 +47,11 @@ def ensure_docker_compose_installed() -> list:
|
|
52
47
|
typer.echo("Unable to find an installed docker-compose or docker compose")
|
53
48
|
sys.exit(1)
|
54
49
|
|
55
|
-
def docker_login(
|
50
|
+
def docker_login(api_key: str, registry_url: str, username:str = "iamapikey") -> None:
|
56
51
|
logger.info(f"Logging into Docker registry: {registry_url} ...")
|
57
52
|
result = subprocess.run(
|
58
|
-
["docker", "login", "-u",
|
59
|
-
input=
|
53
|
+
["docker", "login", "-u", username, "--password-stdin", registry_url],
|
54
|
+
input=api_key.encode("utf-8"),
|
60
55
|
capture_output=True,
|
61
56
|
)
|
62
57
|
if result.returncode != 0:
|
@@ -64,6 +59,24 @@ def docker_login(iam_api_key: str, registry_url: str) -> None:
|
|
64
59
|
sys.exit(1)
|
65
60
|
logger.info("Successfully logged in to Docker.")
|
66
61
|
|
62
|
+
def docker_login_by_dev_edition_source(env_dict: dict, source: str) -> None:
|
63
|
+
registry_url = env_dict["REGISTRY_URL"]
|
64
|
+
if source == "internal":
|
65
|
+
iam_api_key = env_dict.get("DOCKER_IAM_KEY")
|
66
|
+
if not iam_api_key:
|
67
|
+
raise ValueError("DOCKER_IAM_KEY is required in the environment file if WO_DEVELOPER_EDITION_SOURCE is set to 'internal'.")
|
68
|
+
docker_login(iam_api_key, registry_url, "iamapikey")
|
69
|
+
elif source == "myibm":
|
70
|
+
wo_entitlement_key = env_dict.get("WO_ENTITLEMENT_KEY")
|
71
|
+
if not wo_entitlement_key:
|
72
|
+
raise ValueError("WO_ENTITLEMENT_KEY is required in the environment file.")
|
73
|
+
docker_login(wo_entitlement_key, registry_url, "cp")
|
74
|
+
elif source == "orchestrate":
|
75
|
+
wo_auth_type = env_dict.get("WO_AUTH_TYPE")
|
76
|
+
if not wo_auth_type:
|
77
|
+
raise ValueError("WO_AUTH_TYPE is required in the environment file if WO_DEVELOPER_EDITION_SOURCE is set to 'orchestrate'.")
|
78
|
+
api_key, username = get_docker_cred_by_wo_auth_type(env_dict, wo_auth_type)
|
79
|
+
docker_login(api_key, registry_url, username)
|
67
80
|
|
68
81
|
def get_compose_file() -> Path:
|
69
82
|
with resources.as_file(
|
@@ -93,9 +106,51 @@ def merge_env(
|
|
93
106
|
user_env = dotenv_values(str(user_env_path))
|
94
107
|
merged.update(user_env)
|
95
108
|
|
96
|
-
|
97
109
|
return merged
|
98
110
|
|
111
|
+
def get_default_registry_env_vars_by_dev_edition_source(env_dict: dict, source: str) -> dict[str,str]:
|
112
|
+
component_registry_var_names = {key for key in env_dict if key.endswith("_REGISTRY")}
|
113
|
+
|
114
|
+
result = {}
|
115
|
+
if source == "internal":
|
116
|
+
result["REGISTRY_URL"] = "us.icr.io"
|
117
|
+
for name in component_registry_var_names:
|
118
|
+
result[name] = "us.icr.io/watson-orchestrate-private"
|
119
|
+
elif source == "myibm":
|
120
|
+
result["REGISTRY_URL"] = "cp.icr.io"
|
121
|
+
for name in component_registry_var_names:
|
122
|
+
result[name] = "cp.icr.io/cp/wxo-lite"
|
123
|
+
elif source == "orchestrate":
|
124
|
+
raise NotImplementedError("The 'orchestrate' source is not implemented yet.")
|
125
|
+
# TODO: confirm with Tej about the registry url for orchestrate source
|
126
|
+
return result
|
127
|
+
|
128
|
+
def get_dev_edition_source(env_dict: dict) -> str:
|
129
|
+
source = env_dict.get("WO_DEVELOPER_EDITION_SOURCE")
|
130
|
+
|
131
|
+
if source:
|
132
|
+
return source
|
133
|
+
if env_dict.get("WO_INSTANCE"):
|
134
|
+
return "orchestrate"
|
135
|
+
return "myibm"
|
136
|
+
|
137
|
+
def get_docker_cred_by_wo_auth_type(env_dict: dict, auth_type: str) -> tuple[str, str]:
|
138
|
+
if auth_type in {"mcsp", "ibm_iam"}:
|
139
|
+
wo_api_key = env_dict.get("WO_API_KEY")
|
140
|
+
if not wo_api_key:
|
141
|
+
raise ValueError("WO_API_KEY is required in the environment file if the WO_AUTH_TYPE is set to 'mcsp' or 'ibm_iam'.")
|
142
|
+
return wo_api_key, "wouser"
|
143
|
+
elif auth_type == "cpd":
|
144
|
+
wo_api_key = env_dict.get("WO_API_KEY")
|
145
|
+
wo_password = env_dict.get("WO_PASSWORD")
|
146
|
+
if not wo_api_key and not wo_password:
|
147
|
+
raise ValueError("WO_API_KEY or WO_PASSWORD is required in the environment file if the WO_AUTH_TYPE is set to 'cpd'.")
|
148
|
+
wo_username = env_dict.get("WO_USERNAME")
|
149
|
+
if not wo_username:
|
150
|
+
raise ValueError("WO_USERNAME is required in the environment file if the WO_AUTH_TYPE is set to 'cpd'.")
|
151
|
+
return wo_api_key or wo_password, wo_username # type: ignore[return-value]
|
152
|
+
else:
|
153
|
+
raise ValueError(f"Unknown value for WO_AUTH_TYPE: {auth_type}. Must be one of ['mcsp', 'ibm_iam', 'cpd'].")
|
99
154
|
|
100
155
|
def apply_llm_api_key_defaults(env_dict: dict) -> None:
|
101
156
|
llm_value = env_dict.get("WATSONX_APIKEY")
|
@@ -138,7 +193,30 @@ def refresh_local_credentials() -> None:
|
|
138
193
|
clear_protected_env_credentials_token()
|
139
194
|
_login(name=PROTECTED_ENV_NAME, apikey=None)
|
140
195
|
|
196
|
+
NON_SECRET_ENV_ITEMS = {
|
197
|
+
"WO_DEVELOPER_EDITION_SOURCE",
|
198
|
+
"WO_INSTANCE",
|
199
|
+
"USE_SAAS_ML_TOOLS_RUNTIME",
|
200
|
+
"WXO_MCSP_EXCHANGE_URL",
|
201
|
+
"OPENSOURCE_REGISTRY_PROXY"
|
202
|
+
}
|
203
|
+
def persist_user_env(env: dict, include_secrets: bool = False) -> None:
|
204
|
+
if include_secrets:
|
205
|
+
persistable_env = env
|
206
|
+
else:
|
207
|
+
persistable_env = {k:env[k] for k in NON_SECRET_ENV_ITEMS if k in env}
|
141
208
|
|
209
|
+
cfg = Config()
|
210
|
+
cfg.save(
|
211
|
+
{
|
212
|
+
USER_ENV_CACHE_HEADER: persistable_env
|
213
|
+
}
|
214
|
+
)
|
215
|
+
|
216
|
+
def get_persisted_user_env() -> dict | None:
|
217
|
+
cfg = Config()
|
218
|
+
user_env = cfg.get(USER_ENV_CACHE_HEADER) if cfg.get(USER_ENV_CACHE_HEADER) else None
|
219
|
+
return user_env
|
142
220
|
|
143
221
|
def run_compose_lite(final_env_file: Path, experimental_with_langfuse=False, with_flow_runtime=False) -> None:
|
144
222
|
compose_path = get_compose_file()
|
@@ -256,12 +334,20 @@ def run_compose_lite_ui(user_env_file: Path) -> bool:
|
|
256
334
|
compose_path = get_compose_file()
|
257
335
|
compose_command = ensure_docker_compose_installed()
|
258
336
|
ensure_docker_installed()
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
337
|
+
|
338
|
+
default_env = read_env_file(get_default_env_file())
|
339
|
+
user_env = read_env_file(user_env_file) if user_env_file else {}
|
340
|
+
if not user_env:
|
341
|
+
user_env = get_persisted_user_env()
|
342
|
+
|
343
|
+
dev_edition_source = get_dev_edition_source(user_env)
|
344
|
+
default_registry_vars = get_default_registry_env_vars_by_dev_edition_source(default_env, source=dev_edition_source)
|
345
|
+
|
346
|
+
merged_env_dict = {
|
347
|
+
**default_env,
|
348
|
+
**default_registry_vars,
|
349
|
+
**user_env,
|
350
|
+
}
|
265
351
|
|
266
352
|
_login(name=PROTECTED_ENV_NAME)
|
267
353
|
auth_cfg = Config(AUTH_CONFIG_FILE_FOLDER, AUTH_CONFIG_FILE)
|
@@ -271,21 +357,17 @@ def run_compose_lite_ui(user_env_file: Path) -> bool:
|
|
271
357
|
tenant_id = token.get('woTenantId', None)
|
272
358
|
merged_env_dict['REACT_APP_TENANT_ID'] = tenant_id
|
273
359
|
|
274
|
-
|
275
|
-
registry_url = merged_env_dict.get("REGISTRY_URL")
|
276
|
-
if not registry_url:
|
277
|
-
logger.error("Error: REGISTRY_URL is required in the environment file.")
|
278
|
-
sys.exit(1)
|
279
|
-
|
280
360
|
agent_client = instantiate_client(AgentClient)
|
281
361
|
agents = agent_client.get()
|
282
362
|
if not agents:
|
283
363
|
logger.error("No agents found for the current environment. Please create an agent before starting the chat.")
|
284
364
|
sys.exit(1)
|
285
365
|
|
286
|
-
|
287
|
-
|
288
|
-
|
366
|
+
try:
|
367
|
+
docker_login_by_dev_edition_source(merged_env_dict, dev_edition_source)
|
368
|
+
except ValueError as ignored:
|
369
|
+
# do nothing, as the docker login here is not mandatory
|
370
|
+
pass
|
289
371
|
|
290
372
|
#These are to removed warning and not used in UI component
|
291
373
|
if not 'WATSONX_SPACE_ID' in merged_env_dict:
|
@@ -436,6 +518,35 @@ def run_compose_lite_logs(final_env_file: Path, is_reset: bool = False) -> None:
|
|
436
518
|
)
|
437
519
|
sys.exit(1)
|
438
520
|
|
521
|
+
def confirm_accepts_license_agreement(accepts_by_argument: bool):
|
522
|
+
cfg = Config()
|
523
|
+
accepts_license = cfg.read(LICENSE_HEADER, ENV_ACCEPT_LICENSE)
|
524
|
+
if accepts_license != True:
|
525
|
+
logger.warning(('''
|
526
|
+
By running the following command your machine will install IBM watsonx Orchestrate Developer Edition, which is governed by the following IBM license agreement:
|
527
|
+
- * https://www.ibm.com/support/customer/csol/terms/?id=L-YRMZ-PB6MHM&lc=en
|
528
|
+
Additionally, the following prerequisite open source programs will be obtained from Docker Hub and will be installed on your machine. Each of the below programs are Separately Licensed Code, and are governed by the separate license agreements identified below, and not by the IBM license agreement:
|
529
|
+
* redis (7.2) - https://github.com/redis/redis/blob/7.2.7/COPYING
|
530
|
+
* minio - https://github.com/minio/minio/blob/master/LICENSE
|
531
|
+
* milvus-io - https://github.com/milvus-io/milvus/blob/master/LICENSE
|
532
|
+
* etcd - https://github.com/etcd-io/etcd/blob/main/LICENSE
|
533
|
+
* clickhouse-server - https://github.com/ClickHouse/ClickHouse/blob/master/LICENSE
|
534
|
+
* langfuse - https://github.com/langfuse/langfuse/blob/main/LICENSE
|
535
|
+
After installation, you are solely responsible for obtaining and installing updates and fixes, including security patches, for the above prerequisite open source programs. To update images the customer will run `orchestrate server reset && orchestrate server start -e .env`.
|
536
|
+
''').strip())
|
537
|
+
if not accepts_by_argument:
|
538
|
+
result = input('\nTo accept the terms and conditions of the IBM license agreement and the Separately Licensed Code licenses above please enter "I accept": ')
|
539
|
+
else:
|
540
|
+
result = None
|
541
|
+
if result == 'I accept' or accepts_by_argument:
|
542
|
+
cfg.write(LICENSE_HEADER, ENV_ACCEPT_LICENSE, True)
|
543
|
+
else:
|
544
|
+
logger.error('The terms and conditions were not accepted, exiting.')
|
545
|
+
exit(1)
|
546
|
+
|
547
|
+
|
548
|
+
|
549
|
+
|
439
550
|
@server_app.command(name="start")
|
440
551
|
def server_start(
|
441
552
|
user_env_file: str = typer.Option(
|
@@ -454,33 +565,46 @@ def server_start(
|
|
454
565
|
help='Option to start server with tempus-runtime.',
|
455
566
|
hidden=True
|
456
567
|
)
|
568
|
+
,
|
569
|
+
persist_env_secrets: bool = typer.Option(
|
570
|
+
False,
|
571
|
+
'--persist-env-secrets', '-p',
|
572
|
+
help='Option to store secret values from the provided env file in the config file (~/.config/orchestrate/config.yaml)',
|
573
|
+
hidden=True
|
574
|
+
),
|
575
|
+
accept_terms_and_conditions: bool = typer.Option(
|
576
|
+
False,
|
577
|
+
"--accept-terms-and-conditions",
|
578
|
+
help="By providing this flag you accept the terms and conditions outlined in the logs on server start."
|
579
|
+
),
|
457
580
|
):
|
581
|
+
confirm_accepts_license_agreement(accept_terms_and_conditions)
|
582
|
+
|
458
583
|
if user_env_file and not Path(user_env_file).exists():
|
459
584
|
logger.error(f"Error: The specified environment file '{user_env_file}' does not exist.")
|
460
585
|
sys.exit(1)
|
461
586
|
ensure_docker_installed()
|
462
587
|
|
463
|
-
|
588
|
+
default_env = read_env_file(get_default_env_file())
|
589
|
+
user_env = read_env_file(user_env_file) if user_env_file else {}
|
590
|
+
persist_user_env(user_env, include_secrets=persist_env_secrets)
|
591
|
+
dev_edition_source = get_dev_edition_source(user_env)
|
592
|
+
default_registry_vars = get_default_registry_env_vars_by_dev_edition_source(default_env, source=dev_edition_source)
|
464
593
|
|
465
|
-
merged_env_dict =
|
466
|
-
|
467
|
-
|
468
|
-
|
594
|
+
merged_env_dict = {
|
595
|
+
**default_env,
|
596
|
+
**default_registry_vars,
|
597
|
+
**user_env,
|
598
|
+
}
|
469
599
|
|
470
600
|
merged_env_dict['DBTAG'] = get_dbtag_from_architecture(merged_env_dict=merged_env_dict)
|
471
601
|
|
472
|
-
|
473
|
-
|
474
|
-
|
475
|
-
|
476
|
-
|
477
|
-
registry_url = merged_env_dict.get("REGISTRY_URL")
|
478
|
-
if not registry_url:
|
479
|
-
logger.error("Error: REGISTRY_URL is required in the environment file.")
|
602
|
+
try:
|
603
|
+
docker_login_by_dev_edition_source(merged_env_dict, dev_edition_source)
|
604
|
+
except ValueError as e:
|
605
|
+
logger.error(f"Error: {e}")
|
480
606
|
sys.exit(1)
|
481
607
|
|
482
|
-
docker_login(iam_api_key, registry_url)
|
483
|
-
|
484
608
|
apply_llm_api_key_defaults(merged_env_dict)
|
485
609
|
|
486
610
|
|
@@ -511,6 +635,9 @@ def server_start(
|
|
511
635
|
|
512
636
|
logger.info(f"You can run `orchestrate env activate local` to set your environment or `orchestrate chat start` to start the UI service and begin chatting.")
|
513
637
|
|
638
|
+
if experimental_with_langfuse:
|
639
|
+
logger.info(f"You can access the observability platform Langfuse at http://localhost:3010, username: orchestrate@ibm.com, password: orchestrate")
|
640
|
+
|
514
641
|
if with_flow_runtime:
|
515
642
|
logger.info(f"Starting with flow runtime")
|
516
643
|
|
@@ -275,14 +275,8 @@ def import_python_tool(file: str, requirements_file: str = None, app_id: List[st
|
|
275
275
|
resolved_requirements_file = get_resolved_py_tool_reqs_file(tool_file=file, requirements_file=requirements_file,
|
276
276
|
package_root=resolved_package_root)
|
277
277
|
|
278
|
-
if resolved_requirements_file is None:
|
279
|
-
logger.
|
280
|
-
|
281
|
-
if resolved_requirements_file != requirements_file:
|
282
|
-
logger.info(f"Resolved Requirements file: \"{resolved_requirements_file}\"")
|
283
|
-
|
284
|
-
else:
|
285
|
-
logger.info(f"Requirements file: \"{requirements_file}\"")
|
278
|
+
if resolved_requirements_file is not None:
|
279
|
+
logger.info(f"Using requirement file: \"{resolved_requirements_file}\"")
|
286
280
|
|
287
281
|
if resolved_requirements_file is not None:
|
288
282
|
try:
|
@@ -472,7 +466,7 @@ class ToolsController:
|
|
472
466
|
raise typer.BadParameter(f"Symbolic links in packages are not supported. - {path_str}")
|
473
467
|
|
474
468
|
try:
|
475
|
-
zip_tool_artifacts.write(path_str, arcname=
|
469
|
+
zip_tool_artifacts.write(path_str, arcname=str(Path(path_str).relative_to(Path(resolved_package_root))))
|
476
470
|
|
477
471
|
except Exception as ex:
|
478
472
|
logger.error(f"Could not write file {path_str} to artifact. {ex}")
|
@@ -12,6 +12,8 @@ AUTH_SECTION_HEADER = "auth"
|
|
12
12
|
CONTEXT_SECTION_HEADER = "context"
|
13
13
|
ENVIRONMENTS_SECTION_HEADER = "environments"
|
14
14
|
PYTHON_REGISTRY_HEADER = "python_registry"
|
15
|
+
USER_ENV_CACHE_HEADER = "cached_user_env"
|
16
|
+
LICENSE_HEADER = "license"
|
15
17
|
|
16
18
|
# Option Names
|
17
19
|
AUTH_MCSP_API_KEY_OPT = "wxo_mcsp_api_key"
|
@@ -24,6 +26,7 @@ ENV_WXO_URL_OPT = "wxo_url"
|
|
24
26
|
ENV_IAM_URL_OPT = "iam_url"
|
25
27
|
PROTECTED_ENV_NAME = "local"
|
26
28
|
ENV_AUTH_TYPE = "auth_type"
|
29
|
+
ENV_ACCEPT_LICENSE = 'accepts_license_agreements'
|
27
30
|
|
28
31
|
DEFAULT_LOCAL_SERVICE_URL = "http://localhost:4321"
|
29
32
|
CHAT_UI_PORT = "3000"
|
@@ -40,7 +43,8 @@ DEFAULT_CONFIG_FILE_CONTENT = {
|
|
40
43
|
PROTECTED_ENV_NAME: {
|
41
44
|
ENV_WXO_URL_OPT: DEFAULT_LOCAL_SERVICE_URL
|
42
45
|
}
|
43
|
-
}
|
46
|
+
},
|
47
|
+
USER_ENV_CACHE_HEADER: {}
|
44
48
|
}
|
45
49
|
|
46
50
|
AUTH_CONFIG_FILE_FOLDER = f"{os.path.expanduser('~')}/.cache/orchestrate"
|
@@ -18,15 +18,15 @@ app = typer.Typer(
|
|
18
18
|
)
|
19
19
|
app.add_typer(login_app)
|
20
20
|
app.add_typer(environment_app, name="env", help='Add, remove, or select the activate env other commands will interact with (either your local server or a production instance)')
|
21
|
-
app.add_typer(tools_app, name="tools", help='Interact with the tools in your active env')
|
22
21
|
app.add_typer(agents_app, name="agents", help='Interact with the agents in your active env')
|
22
|
+
app.add_typer(tools_app, name="tools", help='Interact with the tools in your active env')
|
23
|
+
app.add_typer(knowledge_bases_app, name="knowledge-bases", help="Upload knowledge your agents can search through to your active env")
|
23
24
|
app.add_typer(connections_app, name="connections", help='Interact with the agents in your active env')
|
24
|
-
app.add_typer(server_app, name="server", help='Manipulate your local
|
25
|
-
app.add_typer(chat_app, name="chat", help='Launch the chat ui for your local
|
25
|
+
app.add_typer(server_app, name="server", help='Manipulate your local Orchestrate Developer Edition server [requires an Entitlement]')
|
26
|
+
app.add_typer(chat_app, name="chat", help='Launch the chat ui for your local Developer Edition server [requires docker pull credentials]')
|
26
27
|
app.add_typer(models_app, name="models", help='List the available large language models (llms) that can be used in your agent definitions')
|
28
|
+
app.add_typer(channel_app, name="channels", help="Configure channels where your agent can exist on (such as embedded webchat)")
|
27
29
|
app.add_typer(settings_app, name="settings", help='Configure the settings for your active env')
|
28
|
-
app.add_typer(channel_app, name="channels")
|
29
|
-
app.add_typer(knowledge_bases_app, name="knowledge-bases")
|
30
30
|
|
31
31
|
if __name__ == "__main__":
|
32
32
|
app()
|
@@ -13,7 +13,7 @@ services:
|
|
13
13
|
command: redis-server --loglevel warning
|
14
14
|
|
15
15
|
wxo-server-db:
|
16
|
-
image: us.icr.io
|
16
|
+
image: ${DB_REGISTRY:-us.icr.io/watson-orchestrate-private}/wxo-server-db:${DBTAG:-latest}
|
17
17
|
restart: unless-stopped
|
18
18
|
environment:
|
19
19
|
POSTGRES_USER: ${POSTGRES_USER:-postgres}
|
@@ -32,7 +32,7 @@ services:
|
|
32
32
|
command: -c shared_preload_libraries=pgsodium
|
33
33
|
|
34
34
|
wxo-server-connection-manager:
|
35
|
-
image: us.icr.io
|
35
|
+
image: ${CM_REGISTRY:-us.icr.io/watson-orchestrate-private}/wxo-connections:${CM_TAG:-latest}
|
36
36
|
platform: linux/amd64
|
37
37
|
restart: unless-stopped
|
38
38
|
environment:
|
@@ -44,12 +44,13 @@ services:
|
|
44
44
|
DB_PORT: ${DB_PORT:-5432}
|
45
45
|
DB_ENCRYPTION_KEY: abc
|
46
46
|
WXO_SERVER_URL: http://wxo-server:4321
|
47
|
-
MAX_POOL:
|
47
|
+
MAX_POOL: 60
|
48
|
+
DEPLOYMENT_MODE: laptop
|
48
49
|
ports:
|
49
50
|
- 3001:3001
|
50
51
|
|
51
52
|
ui:
|
52
|
-
image: us.icr.io
|
53
|
+
image: ${UI_REGISTRY:-us.icr.io/watson-orchestrate-private}/wxo-chat:${UITAG:-latest}
|
53
54
|
platform: linux/amd64
|
54
55
|
restart: unless-stopped
|
55
56
|
environment:
|
@@ -74,6 +75,7 @@ services:
|
|
74
75
|
MAX_FILE_UPLOAD_SIZE_BYTES_EXCEL: 1048576
|
75
76
|
VCAP_APP_HOST: localhost
|
76
77
|
DEPLOYMENT_PLATFORM: laptop
|
78
|
+
CONNECTION_MANAGER_URL: http://localhost:3001
|
77
79
|
DISMISS_NOTIFICATION_TIMEOUT: 10000
|
78
80
|
STANDALONE: "true"
|
79
81
|
STREAM_TIMEOUT: ${STREAM_TIMEOUT:-120000}
|
@@ -87,7 +89,7 @@ services:
|
|
87
89
|
- ui-data:/data
|
88
90
|
|
89
91
|
wxo-builder:
|
90
|
-
image: us.icr.io
|
92
|
+
image: ${BUILDER_REGISTRY:-us.icr.io/watson-orchestrate-private}/wxo-builder:${BUILDER_TAG:-latest}
|
91
93
|
platform: linux/amd64
|
92
94
|
restart: unless-stopped
|
93
95
|
environment:
|
@@ -199,7 +201,7 @@ services:
|
|
199
201
|
- wxo-server-redis
|
200
202
|
|
201
203
|
wxo-server:
|
202
|
-
image: us.icr.io
|
204
|
+
image: ${SERVER_REGISTRY:-us.icr.io/watson-orchestrate-private}/wxo-server-server:${SERVER_TAG:-latest}
|
203
205
|
platform: linux/amd64
|
204
206
|
restart: unless-stopped
|
205
207
|
ports:
|
@@ -294,7 +296,7 @@ services:
|
|
294
296
|
MILVUS_PASSWORD: Milvus
|
295
297
|
|
296
298
|
wxo-server-worker:
|
297
|
-
image: us.icr.io
|
299
|
+
image: ${WORKER_REGISTRY:-us.icr.io/watson-orchestrate-private}/wxo-server-conversation_controller:${WORKER_TAG:-latest}
|
298
300
|
platform: linux/amd64
|
299
301
|
restart: unless-stopped
|
300
302
|
depends_on:
|
@@ -372,7 +374,7 @@ services:
|
|
372
374
|
MILVUS_PASSWORD: Milvus
|
373
375
|
|
374
376
|
tools-runtime-manager:
|
375
|
-
image: us.icr.io
|
377
|
+
image: ${TRM_REGISTRY:-us.icr.io/watson-orchestrate-private}/tools-runtime-manager:${TRM_TAG:-latest}
|
376
378
|
platform: linux/amd64
|
377
379
|
restart: unless-stopped
|
378
380
|
ports:
|
@@ -409,7 +411,7 @@ services:
|
|
409
411
|
- "host.docker.internal:host-gateway"
|
410
412
|
|
411
413
|
tools-runtime:
|
412
|
-
image: us.icr.io
|
414
|
+
image: ${TR_REGISTRY:-us.icr.io/watson-orchestrate-private}/tools-runtime:${TR_TAG:-latest}
|
413
415
|
platform: linux/amd64
|
414
416
|
ports:
|
415
417
|
- "8000:8000"
|
@@ -527,7 +529,7 @@ services:
|
|
527
529
|
|
528
530
|
|
529
531
|
wxo-tempus-runtime:
|
530
|
-
image: us.icr.io/watson-orchestrate-private/wxo-tempus-runtime:${FLOW_RUNTIME_TAG:-latest}
|
532
|
+
image: ${FLOW_RUMTIME_REGISTRY:-us.icr.io/watson-orchestrate-private}/wxo-tempus-runtime:${FLOW_RUNTIME_TAG:-latest}
|
531
533
|
restart: unless-stopped
|
532
534
|
platform: linux/amd64
|
533
535
|
profiles: [with-tempus-runtime]
|
@@ -1,4 +1,3 @@
|
|
1
|
-
REGISTRY_URL=us.icr.io
|
2
1
|
#DOCKER_IAM_KEY=dummy #Must Define in env
|
3
2
|
#You can generate any JWT_SECRET with python -c 'import secrets; print(secrets.token_hex(32))'
|
4
3
|
JWT_SECRET=11759cbc89dbec64956715e10a854eb38f8b7a1775bdf68142786170f5e8b5b2
|
@@ -47,35 +46,39 @@ CELERY_RESULTS_TTL="3600"
|
|
47
46
|
EVENT_BROKER_TTL="-1"
|
48
47
|
|
49
48
|
# START -- IMAGE REGISTRIES AND TAGS
|
50
|
-
|
51
|
-
|
49
|
+
# THE VALUES FOR REGISTRY_URL AND *_REGISTRY ARE NOT SET HERE; THEY ARE EITHER PROVIDED BY THE USER OR DETERMINED AT RUNTIME BASED ON WO_DEVELOPER_EDITION_SOURCE.
|
50
|
+
REGISTRY_URL=
|
52
51
|
|
53
|
-
|
54
|
-
|
52
|
+
SERVER_TAG=02-05-2025
|
53
|
+
SERVER_REGISTRY=
|
55
54
|
|
56
|
-
|
55
|
+
WORKER_TAG=01-05-2025
|
56
|
+
WORKER_REGISTRY=
|
57
|
+
|
58
|
+
DB_REGISTRY=
|
57
59
|
# If you build multiarch set all three of these to the same, we have a pr against main
|
58
60
|
# to not have this separation, but we can merge it later
|
59
|
-
DBTAG=
|
60
|
-
AMDDBTAG=
|
61
|
-
ARM64DBTAG=
|
61
|
+
DBTAG=01-05-2025
|
62
|
+
AMDDBTAG=01-05-2025
|
63
|
+
ARM64DBTAG=01-05-2025
|
62
64
|
|
63
|
-
UI_REGISTRY=
|
64
|
-
UITAG=
|
65
|
+
UI_REGISTRY=
|
66
|
+
UITAG=01-05-2025
|
65
67
|
|
66
|
-
CM_REGISTRY=
|
68
|
+
CM_REGISTRY=
|
67
69
|
CM_TAG=30-04-2025
|
68
70
|
|
69
|
-
TRM_TAG=
|
70
|
-
TRM_REGISTRY=
|
71
|
+
TRM_TAG=01-05-2025
|
72
|
+
TRM_REGISTRY=
|
71
73
|
|
72
|
-
TR_TAG=
|
73
|
-
TR_REGISTRY=
|
74
|
+
TR_TAG=01-05-2025
|
75
|
+
TR_REGISTRY=
|
74
76
|
|
75
|
-
BUILDER_REGISTRY=
|
76
|
-
BUILDER_TAG=
|
77
|
+
BUILDER_REGISTRY=
|
78
|
+
BUILDER_TAG=02-05-2025
|
77
79
|
|
78
80
|
FLOW_RUNTIME_TAG=31-03-2025
|
81
|
+
FLOW_RUMTIME_REGISTRY=
|
79
82
|
|
80
83
|
# END -- IMAGE REGISTRIES AND TAGS
|
81
84
|
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|