ibm-watsonx-orchestrate 1.10.0b0__py3-none-any.whl → 1.10.1__py3-none-any.whl
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/__init__.py +1 -2
- ibm_watsonx_orchestrate/agent_builder/connections/__init__.py +1 -1
- ibm_watsonx_orchestrate/agent_builder/connections/connections.py +6 -3
- ibm_watsonx_orchestrate/agent_builder/connections/types.py +68 -17
- ibm_watsonx_orchestrate/agent_builder/knowledge_bases/types.py +47 -3
- ibm_watsonx_orchestrate/agent_builder/toolkits/types.py +18 -15
- ibm_watsonx_orchestrate/agent_builder/tools/types.py +1 -1
- ibm_watsonx_orchestrate/cli/commands/connections/connections_command.py +40 -11
- ibm_watsonx_orchestrate/cli/commands/connections/connections_controller.py +96 -30
- ibm_watsonx_orchestrate/cli/commands/knowledge_bases/knowledge_bases_controller.py +32 -10
- ibm_watsonx_orchestrate/cli/commands/server/server_command.py +95 -17
- ibm_watsonx_orchestrate/cli/commands/server/types.py +14 -6
- ibm_watsonx_orchestrate/cli/commands/toolkit/toolkit_command.py +43 -10
- ibm_watsonx_orchestrate/cli/commands/toolkit/toolkit_controller.py +52 -25
- ibm_watsonx_orchestrate/client/connections/connections_client.py +4 -3
- ibm_watsonx_orchestrate/client/knowledge_bases/knowledge_base_client.py +4 -4
- ibm_watsonx_orchestrate/docker/compose-lite.yml +52 -13
- ibm_watsonx_orchestrate/docker/default.env +21 -14
- ibm_watsonx_orchestrate/flow_builder/data_map.py +4 -1
- ibm_watsonx_orchestrate/flow_builder/flows/__init__.py +2 -0
- ibm_watsonx_orchestrate/flow_builder/flows/flow.py +204 -17
- ibm_watsonx_orchestrate/flow_builder/node.py +114 -19
- ibm_watsonx_orchestrate/flow_builder/types.py +206 -34
- ibm_watsonx_orchestrate/run/connections.py +2 -2
- {ibm_watsonx_orchestrate-1.10.0b0.dist-info → ibm_watsonx_orchestrate-1.10.1.dist-info}/METADATA +1 -1
- {ibm_watsonx_orchestrate-1.10.0b0.dist-info → ibm_watsonx_orchestrate-1.10.1.dist-info}/RECORD +29 -29
- {ibm_watsonx_orchestrate-1.10.0b0.dist-info → ibm_watsonx_orchestrate-1.10.1.dist-info}/WHEEL +0 -0
- {ibm_watsonx_orchestrate-1.10.0b0.dist-info → ibm_watsonx_orchestrate-1.10.1.dist-info}/entry_points.txt +0 -0
- {ibm_watsonx_orchestrate-1.10.0b0.dist-info → ibm_watsonx_orchestrate-1.10.1.dist-info}/licenses/LICENSE +0 -0
@@ -1,7 +1,7 @@
|
|
1
1
|
import typer
|
2
2
|
from typing import List
|
3
3
|
from typing_extensions import Annotated, Optional
|
4
|
-
from ibm_watsonx_orchestrate.agent_builder.toolkits.types import ToolkitKind, Language
|
4
|
+
from ibm_watsonx_orchestrate.agent_builder.toolkits.types import ToolkitKind, Language, ToolkitTransportKind
|
5
5
|
from ibm_watsonx_orchestrate.cli.commands.toolkit.toolkit_controller import ToolkitController
|
6
6
|
import logging
|
7
7
|
import sys
|
@@ -45,6 +45,14 @@ def import_toolkit(
|
|
45
45
|
"The first argument will be used as the executable, the rest as its arguments."
|
46
46
|
),
|
47
47
|
] = None,
|
48
|
+
url: Annotated[
|
49
|
+
Optional[str],
|
50
|
+
typer.Option("--url", "-u", help="The URL of the remote MCP server", hidden=True),
|
51
|
+
] = None,
|
52
|
+
transport: Annotated[
|
53
|
+
ToolkitTransportKind,
|
54
|
+
typer.Option("--transport", help="The communication protocol to use for the remote MCP server. Only \"sse\" or \"streamable_http\" supported", hidden=True),
|
55
|
+
] = None,
|
48
56
|
tools: Annotated[
|
49
57
|
Optional[str],
|
50
58
|
typer.Option("--tools", "-t", help="Comma-separated list of tools to import. Or you can use \"*\" to use all tools"),
|
@@ -64,18 +72,41 @@ def import_toolkit(
|
|
64
72
|
else:
|
65
73
|
tool_list = None
|
66
74
|
|
67
|
-
if not
|
68
|
-
|
69
|
-
|
75
|
+
if not url and not transport:
|
76
|
+
if not package and not package_root and not command:
|
77
|
+
logger.error("You must provide either '--package', '--package-root' or '--command'.")
|
78
|
+
sys.exit(1)
|
70
79
|
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
80
|
+
if package_root and not command:
|
81
|
+
logger.error("Error: '--command' flag must be provided when '--package-root' is specified.")
|
82
|
+
sys.exit(1)
|
83
|
+
|
84
|
+
if package_root and package:
|
85
|
+
logger.error("Please choose either '--package-root' or '--package' but not both.")
|
86
|
+
sys.exit(1)
|
87
|
+
|
88
|
+
if (url and not transport) or (transport and not url):
|
89
|
+
logger.error("Both '--url' and '--transport' must be provided together for remote MCP.")
|
77
90
|
sys.exit(1)
|
78
91
|
|
92
|
+
if url and transport:
|
93
|
+
forbidden_local_opts = []
|
94
|
+
if package:
|
95
|
+
forbidden_local_opts.append("--package")
|
96
|
+
if package_root:
|
97
|
+
forbidden_local_opts.append("--package-root")
|
98
|
+
if language:
|
99
|
+
forbidden_local_opts.append("--language")
|
100
|
+
if command:
|
101
|
+
forbidden_local_opts.append("--command")
|
102
|
+
|
103
|
+
if forbidden_local_opts:
|
104
|
+
logger.error(
|
105
|
+
f"When using '--url' and '--transport' for a remote MCP, you cannot specify: "
|
106
|
+
f"{', '.join(forbidden_local_opts)}"
|
107
|
+
)
|
108
|
+
sys.exit(1)
|
109
|
+
|
79
110
|
if package and not package_root:
|
80
111
|
if not command:
|
81
112
|
if language == Language.NODE:
|
@@ -97,6 +128,8 @@ def import_toolkit(
|
|
97
128
|
package_root=package_root,
|
98
129
|
language=language,
|
99
130
|
command=command,
|
131
|
+
url=url,
|
132
|
+
transport=transport
|
100
133
|
)
|
101
134
|
toolkit_controller.import_toolkit(tools=tool_list, app_id=app_id)
|
102
135
|
|
@@ -10,7 +10,7 @@ import requests
|
|
10
10
|
from ibm_watsonx_orchestrate.client.toolkit.toolkit_client import ToolKitClient
|
11
11
|
from ibm_watsonx_orchestrate.client.tools.tool_client import ToolClient
|
12
12
|
from ibm_watsonx_orchestrate.agent_builder.toolkits.base_toolkit import BaseToolkit, ToolkitSpec
|
13
|
-
from ibm_watsonx_orchestrate.agent_builder.toolkits.types import ToolkitKind, Language, ToolkitSource
|
13
|
+
from ibm_watsonx_orchestrate.agent_builder.toolkits.types import ToolkitKind, Language, ToolkitSource, ToolkitTransportKind
|
14
14
|
from ibm_watsonx_orchestrate.client.utils import instantiate_client
|
15
15
|
from ibm_watsonx_orchestrate.utils.utils import sanatize_app_id
|
16
16
|
from ibm_watsonx_orchestrate.client.connections import get_connections_client
|
@@ -26,15 +26,16 @@ import json
|
|
26
26
|
|
27
27
|
logger = logging.getLogger(__name__)
|
28
28
|
|
29
|
-
def get_connection_id(app_id: str) -> str:
|
29
|
+
def get_connection_id(app_id: str, is_local_mcp: bool) -> str:
|
30
30
|
connections_client = get_connections_client()
|
31
31
|
existing_draft_configuration = connections_client.get_config(app_id=app_id, env='draft')
|
32
32
|
existing_live_configuration = connections_client.get_config(app_id=app_id, env='live')
|
33
33
|
|
34
34
|
for config in [existing_draft_configuration, existing_live_configuration]:
|
35
|
-
if
|
36
|
-
|
37
|
-
|
35
|
+
if is_local_mcp is True:
|
36
|
+
if config and config.security_scheme != 'key_value_creds':
|
37
|
+
logger.error("Only key_value credentials are currently supported for local MCP")
|
38
|
+
exit(1)
|
38
39
|
connection_id = None
|
39
40
|
if app_id is not None:
|
40
41
|
connection = connections_client.get(app_id=app_id)
|
@@ -59,6 +60,8 @@ class ToolkitController:
|
|
59
60
|
package_root: str = None,
|
60
61
|
language: Language = None,
|
61
62
|
command: str = None,
|
63
|
+
url: str = None,
|
64
|
+
transport: ToolkitTransportKind = None
|
62
65
|
):
|
63
66
|
self.kind = kind
|
64
67
|
self.name = name
|
@@ -68,6 +71,8 @@ class ToolkitController:
|
|
68
71
|
self.language = language
|
69
72
|
self.command = command
|
70
73
|
self.client = None
|
74
|
+
self.url = url
|
75
|
+
self.transport = transport
|
71
76
|
|
72
77
|
self.source: ToolkitSource = (
|
73
78
|
ToolkitSource.FILES if package_root else ToolkitSource.PUBLIC_REGISTRY
|
@@ -95,15 +100,23 @@ class ToolkitController:
|
|
95
100
|
logger.error(f"Existing toolkit found with name '{self.name}'. Failed to create toolkit.")
|
96
101
|
sys.exit(1)
|
97
102
|
|
98
|
-
|
99
|
-
command_parts =
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
103
|
+
if not self.command:
|
104
|
+
command_parts = []
|
105
|
+
else:
|
106
|
+
try:
|
107
|
+
command_parts = json.loads(self.command)
|
108
|
+
if not isinstance(command_parts, list):
|
109
|
+
raise ValueError("JSON command must be a list of strings")
|
110
|
+
except (json.JSONDecodeError, ValueError):
|
111
|
+
command_parts = self.command.split()
|
112
|
+
|
113
|
+
if command_parts:
|
114
|
+
command = command_parts[0]
|
115
|
+
args = command_parts[1:]
|
116
|
+
else:
|
117
|
+
command = None
|
118
|
+
args = []
|
104
119
|
|
105
|
-
command = command_parts[0]
|
106
|
-
args = command_parts[1:]
|
107
120
|
|
108
121
|
if self.package_root:
|
109
122
|
is_folder = os.path.isdir(self.package_root)
|
@@ -150,18 +163,31 @@ class ToolkitController:
|
|
150
163
|
console.print(f" • {tool}")
|
151
164
|
|
152
165
|
# Create toolkit metadata
|
153
|
-
payload = {
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
"
|
158
|
-
"
|
159
|
-
"
|
160
|
-
|
161
|
-
|
166
|
+
payload = {}
|
167
|
+
|
168
|
+
if self.transport is not None and self.url is not None:
|
169
|
+
payload = {
|
170
|
+
"name": self.name,
|
171
|
+
"description": self.description,
|
172
|
+
"mcp": {
|
173
|
+
"server_url": self.url,
|
174
|
+
"transport": self.transport.value,
|
175
|
+
"tools": tools,
|
176
|
+
"connections": remapped_connections,
|
177
|
+
}
|
178
|
+
}
|
179
|
+
else:
|
180
|
+
payload = {
|
181
|
+
"name": self.name,
|
182
|
+
"description": self.description,
|
183
|
+
"mcp": {
|
184
|
+
"source": self.source.value,
|
185
|
+
"command": command,
|
186
|
+
"args": args,
|
187
|
+
"tools": tools,
|
188
|
+
"connections": remapped_connections,
|
189
|
+
}
|
162
190
|
}
|
163
|
-
}
|
164
|
-
|
165
191
|
|
166
192
|
with Progress(
|
167
193
|
SpinnerColumn(spinner_name="dots"),
|
@@ -215,7 +241,8 @@ class ToolkitController:
|
|
215
241
|
raise typer.BadParameter(f"The provided --app-id '{app_id}' is not valid. --app-id cannot be empty or whitespace")
|
216
242
|
|
217
243
|
runtime_id = sanatize_app_id(runtime_id)
|
218
|
-
|
244
|
+
is_local_mcp = self.package is not None or self.package_root is not None
|
245
|
+
app_id_dict[runtime_id] = get_connection_id(local_id, is_local_mcp)
|
219
246
|
|
220
247
|
return app_id_dict
|
221
248
|
|
@@ -19,7 +19,7 @@ class FetchConfigAuthTypes(str, Enum):
|
|
19
19
|
API_KEY_AUTH = ConnectionType.API_KEY_AUTH.value
|
20
20
|
OAUTH2_AUTH_CODE = ConnectionType.OAUTH2_AUTH_CODE.value
|
21
21
|
OAUTH2_IMPLICIT = 'oauth2_implicit'
|
22
|
-
OAUTH2_PASSWORD =
|
22
|
+
OAUTH2_PASSWORD = ConnectionType.OAUTH2_PASSWORD.value
|
23
23
|
OAUTH2_CLIENT_CREDS = ConnectionType.OAUTH2_CLIENT_CREDS.value
|
24
24
|
OAUTH_ON_BEHALF_OF_FLOW = ConnectionType.OAUTH_ON_BEHALF_OF_FLOW.value
|
25
25
|
KEY_VALUE = ConnectionType.KEY_VALUE.value
|
@@ -50,7 +50,7 @@ class GetConfigResponse(BaseModel):
|
|
50
50
|
class GetConnectionResponse(BaseModel):
|
51
51
|
connection_id: str = None
|
52
52
|
app_id: str = None
|
53
|
-
tenant_id: str = None
|
53
|
+
tenant_id: Optional[str] = None
|
54
54
|
|
55
55
|
|
56
56
|
|
@@ -141,7 +141,8 @@ class ConnectionsClient(BaseAPIClient):
|
|
141
141
|
else:
|
142
142
|
return self._get(f"/connections/applications/runtime_credentials?app_id={app_id}&env={env}")
|
143
143
|
except ClientAPIException as e:
|
144
|
-
|
144
|
+
# Returns 400 when app creds exist but runtime cred don't yet exist
|
145
|
+
if e.response.status_code == 404 or e.response.status_code == 400:
|
145
146
|
return None
|
146
147
|
raise e
|
147
148
|
|
@@ -15,10 +15,10 @@ class KnowledgeBaseClient(BaseAPIClient):
|
|
15
15
|
self.base_endpoint = "/orchestrate/knowledge-bases" if is_local_dev(self.base_url) else "/knowledge-bases"
|
16
16
|
|
17
17
|
def create(self, payload: dict) -> dict:
|
18
|
-
return self._post_form_data(f"{self.base_endpoint}/documents", data=
|
18
|
+
return self._post_form_data(f"{self.base_endpoint}/documents", data=payload)
|
19
19
|
|
20
20
|
def create_built_in(self, payload: dict, files: list) -> dict:
|
21
|
-
return self._post_form_data(f"{self.base_endpoint}/documents", data=
|
21
|
+
return self._post_form_data(f"{self.base_endpoint}/documents", data=payload, files=files)
|
22
22
|
|
23
23
|
def get(self) -> dict:
|
24
24
|
return self._get(self.base_endpoint)
|
@@ -38,10 +38,10 @@ class KnowledgeBaseClient(BaseAPIClient):
|
|
38
38
|
return self._get(f"{self.base_endpoint}/{knowledge_base_id}/status")
|
39
39
|
|
40
40
|
def update(self, knowledge_base_id: str, payload: dict) -> dict:
|
41
|
-
return self._patch_form_data(f"{self.base_endpoint}/{knowledge_base_id}/documents", data=
|
41
|
+
return self._patch_form_data(f"{self.base_endpoint}/{knowledge_base_id}/documents", data=payload)
|
42
42
|
|
43
43
|
def update_with_documents(self, knowledge_base_id: str, payload: dict, files: list) -> dict:
|
44
|
-
return self._patch_form_data(f"{self.base_endpoint}/{knowledge_base_id}/documents", data=
|
44
|
+
return self._patch_form_data(f"{self.base_endpoint}/{knowledge_base_id}/documents", data=payload, files=files)
|
45
45
|
|
46
46
|
def delete(self, knowledge_base_id: str,) -> dict:
|
47
47
|
return self._delete(f"{self.base_endpoint}/{knowledge_base_id}")
|
@@ -32,6 +32,7 @@ services:
|
|
32
32
|
- wxo-applied-migrations:/var/lib/postgresql/applied_migrations
|
33
33
|
command: -c shared_preload_libraries=pgsodium
|
34
34
|
|
35
|
+
|
35
36
|
wxo-server-connection-manager:
|
36
37
|
image: ${CM_REGISTRY:-us.icr.io/watson-orchestrate-private}/wxo-connections:${CM_TAG:-latest}
|
37
38
|
platform: linux/amd64
|
@@ -61,6 +62,7 @@ services:
|
|
61
62
|
WATSONX_API_KEY: ${WATSONX_APIKEY}
|
62
63
|
WATSONX_URL: ${WATSONX_URL}
|
63
64
|
WATSONX_SPACE_ID: ${WATSONX_SPACE_ID}
|
65
|
+
NODE_TLS_REJECT_UNAUTHORIZED: ${AI_GATEWAY_TLS_REJECT_UNAUTHORIZED}
|
64
66
|
|
65
67
|
wxo-agent-gateway:
|
66
68
|
image: ${AGENT_GATEWAY_REGISTRY:-us.icr.io/watson-orchestrate-private}/wxo-agent-gateway:${AGENT_GATEWAY_TAG:-latest}
|
@@ -128,8 +130,11 @@ services:
|
|
128
130
|
IBM_DPS_CACHE_SERVICE: https://wxo-doc-processing-cache:8080
|
129
131
|
DOCPROC_BASE_URL: http://wxo-doc-processing-infra-standalone:9080
|
130
132
|
BUILDER_ASYNC_CALLBACK_ENDPOINT: http://wxo-builder:4025
|
133
|
+
DOCPROC_ENABLED: ${DOCPROC_ENABLED:-false}
|
131
134
|
IS_OBSERVABILITY_FEATURE_ENABLED: "true"
|
132
135
|
ALLOW_INSECURE_TLS: "true"
|
136
|
+
ENABLE_EDIT_PROMPTS: "true"
|
137
|
+
LANGFLOW_ENABLED: ${LANGFLOW_ENABLED:-false}
|
133
138
|
command: 'npm start'
|
134
139
|
ports:
|
135
140
|
- "4025:4025"
|
@@ -261,6 +266,7 @@ services:
|
|
261
266
|
- default
|
262
267
|
- jaeger-network
|
263
268
|
environment:
|
269
|
+
DEFAULT_AGENT_ENABLED: "true"
|
264
270
|
RUNTIME_MANAGER_API_KEY: ${RUNTIME_MANAGER_API_KEY:-testapikey}
|
265
271
|
PIP_NO_CACHE_DIR:
|
266
272
|
JWT_SECRET: ${JWT_SECRET}
|
@@ -322,6 +328,7 @@ services:
|
|
322
328
|
ENABLE_WEBHOOKS: false
|
323
329
|
DISABLE_JSON_LOG_CELERY: true
|
324
330
|
WXO_DEPLOYMENT_PLATFORM: saas
|
331
|
+
CPD_VERIFY: ${CPD_VERIFY}
|
325
332
|
CONNECTION_MANAGER_URL: http://wxo-server-connection-manager:3001
|
326
333
|
CHANNEL_SESSION_REDIS_URL: redis://wxo-server-redis:6379/5
|
327
334
|
WXO_MILVUS_URI: http://wxo-milvus-standalone:19530
|
@@ -344,6 +351,7 @@ services:
|
|
344
351
|
AGENTOPS_API_KEY: ${AGENTOPS_API_KEY}
|
345
352
|
ES_HOST: http://elasticsearch:9200
|
346
353
|
ORIGIN_HEADER: "internal"
|
354
|
+
LANGFLOW_ENABLED: ${LANGFLOW_ENABLED:-false}
|
347
355
|
|
348
356
|
wxo-server-worker:
|
349
357
|
image: ${WORKER_REGISTRY:-us.icr.io/watson-orchestrate-private}/wxo-server-conversation_controller:${WORKER_TAG:-latest}
|
@@ -440,7 +448,9 @@ services:
|
|
440
448
|
IBM_TELEMETRY_TRACER_ENDPOINT: http://jaeger:4318/v1/traces
|
441
449
|
USE_IBM_TELEMETRY: ${USE_IBM_TELEMETRY:-false}
|
442
450
|
WXO_DEPLOYMENT_PLATFORM: saas
|
451
|
+
CPD_VERIFY: ${CPD_VERIFY}
|
443
452
|
CALLBACK_HOST_URL: ${CALLBACK_HOST_URL:-http://wxo-server:4321}
|
453
|
+
LANGFLOW_ENABLED: ${LANGFLOW_ENABLED:-false}
|
444
454
|
|
445
455
|
tools-runtime-manager:
|
446
456
|
image: ${TRM_REGISTRY:-us.icr.io/watson-orchestrate-private}/tools-runtime-manager:${TRM_TAG:-latest}
|
@@ -482,7 +492,8 @@ services:
|
|
482
492
|
STORAGE_S3_REGION: us-east-1
|
483
493
|
AWS_ACCESS_KEY_ID: ${MINIO_ROOT_USER:-minioadmin}
|
484
494
|
AWS_SECRET_ACCESS_KEY: ${MINIO_ROOT_PASSWORD:-watsonxorchestrate}
|
485
|
-
TEMPUS_HOST_NAME: http://wxo-tempus-runtime:9044
|
495
|
+
TEMPUS_HOST_NAME: http://wxo-tempus-runtime:9044
|
496
|
+
LANGFLOW_ENABLED: ${LANGFLOW_ENABLED:-false}
|
486
497
|
extra_hosts:
|
487
498
|
- "host.docker.internal:host-gateway"
|
488
499
|
|
@@ -514,6 +525,7 @@ services:
|
|
514
525
|
STORAGE_S3_REGION: us-east-1
|
515
526
|
AWS_ACCESS_KEY_ID: ${MINIO_ROOT_USER:-minioadmin}
|
516
527
|
AWS_SECRET_ACCESS_KEY: ${MINIO_ROOT_PASSWORD:-watsonxorchestrate}
|
528
|
+
LANGFLOW_ENABLED: ${LANGFLOW_ENABLED:-false}
|
517
529
|
|
518
530
|
########################
|
519
531
|
# IBM AGENT-OPS
|
@@ -644,6 +656,7 @@ services:
|
|
644
656
|
- WATSONX_URL=${WATSONX_URL}
|
645
657
|
- PROXY_SERVER_URL=http://jaeger-proxy:9201
|
646
658
|
- WXO_DEPLOYMENT_PLATFORM=saas
|
659
|
+
- CPD_VERIFY=${CPD_VERIFY}
|
647
660
|
- TENANT_API_KEY=${AGENTOPS_API_KEY}
|
648
661
|
- TENANT_CONFIG_URL=http://wxo-server:4321
|
649
662
|
- TENANT_DEFAULT_USERNAME=${ES_USERNAME}
|
@@ -792,6 +805,7 @@ services:
|
|
792
805
|
LOG_LEVEL: info
|
793
806
|
DOCPROC_ENABLED: ${DOCPROC_ENABLED:-false}
|
794
807
|
DOCPROC_BASE_URL: http://wxo-doc-processing-infra-standalone:9080
|
808
|
+
DOCPROC_OUTPUT_FILE_SERVER_URL: ${DOCPROC_OUTPUT_FILE_SERVER_URL:-http://wxo-server:4321}
|
795
809
|
WO_API_KEY: ${WO_API_KEY}
|
796
810
|
WO_INSTANCE: ${WO_INSTANCE}
|
797
811
|
AUTHORIZATION_URL: ${AUTHORIZATION_URL}
|
@@ -872,6 +886,19 @@ services:
|
|
872
886
|
PREFLIGHT_MAX_SIZE: 10Mb
|
873
887
|
PREFLIGHT_MAX_PAGES: 600
|
874
888
|
RUNTIME_LIBRARY: "watson_doc_understanding"
|
889
|
+
WXAI_API_KEY: ${WXAI_API_KEY:-}
|
890
|
+
WXAI_IMAGE_DESCRIPTION_MODEL_ID: ${WXAI_IMAGE_DESCRIPTION_MODEL_ID:-mistralai/pixtral-12b}
|
891
|
+
WXAI_IMAGE_DESCRIPTION_PROJECT_ID: ${WXAI_IMAGE_DESCRIPTION_PROJECT_ID:-}
|
892
|
+
WXAI_KVP_MODEL_ID: ${WXAI_KVP_MODEL_ID:-}
|
893
|
+
WXAI_KVP_PROJECT_ID: ${WXAI_KVP_PROJECT_ID:-}
|
894
|
+
WXAI_SEMANTIC_KVP_PROJECT_ID: ${WXAI_SEMANTIC_KVP_PROJECT_ID:-}
|
895
|
+
WXAI_SEMANTIC_KVP_MODEL_ID: ${WXAI_SEMANTIC_KVP_MODEL_ID:-mistralai/pixtral-12b}
|
896
|
+
WXAI_SEMANTIC_KVP_SPACE_ID: ${WXAI_SEMANTIC_KVP_SPACE_ID:-}
|
897
|
+
WXAI_URL: ${WXAI_URL:-}
|
898
|
+
WXAI_USERNAME: ${WXAI_USERNAME:-}
|
899
|
+
WXAI_INSTANCE_ID: ${WXAI_INSTANCE_ID:-}
|
900
|
+
WXAI_VERSION: ${WXAI_VERSION:-5.1}
|
901
|
+
|
875
902
|
profiles:
|
876
903
|
- docproc
|
877
904
|
ports:
|
@@ -1000,9 +1027,7 @@ services:
|
|
1000
1027
|
SERVICE_NAME: wxo-doc-processing-llm-service
|
1001
1028
|
LOG_LEVEL: info
|
1002
1029
|
WATSONX_API_ENDPOINT: ${WATSONX_URL:-https://us-south.ml.cloud.ibm.com}
|
1003
|
-
|
1004
|
-
WATSONX_PROJECT_ID: ${WATSONX_PROJECT_ID}
|
1005
|
-
WATSONX_SPACE_ID: ${WATSONX_SPACE_ID}
|
1030
|
+
WXO_SERVER_BASE_URL : http://wxo-server:4321
|
1006
1031
|
IBM_DPS_CACHE_SERVICE: 'wxo-doc-processing-cache:8080'
|
1007
1032
|
profiles:
|
1008
1033
|
- docproc
|
@@ -1096,15 +1121,28 @@ services:
|
|
1096
1121
|
"
|
1097
1122
|
|
1098
1123
|
wxo-server-voice:
|
1099
|
-
|
1100
|
-
|
1101
|
-
|
1102
|
-
|
1103
|
-
|
1104
|
-
|
1105
|
-
|
1106
|
-
|
1107
|
-
|
1124
|
+
image: ${VOICE_CONTROLLER_REGISTRY:-us.icr.io/watson-orchestrate-private}/wxo-server-voice:${VOICE_CONTROLLER_TAG:-latest}
|
1125
|
+
profiles: [voice]
|
1126
|
+
restart: unless-stopped
|
1127
|
+
ports:
|
1128
|
+
- 9876:8765
|
1129
|
+
environment:
|
1130
|
+
WXO_BASE_DOMAIN_URL: "http://wxo-server:4321"
|
1131
|
+
AI_GATEWAY_URL: "http://ai-gateway:8787"
|
1132
|
+
WXO_ORIGIN_HEADER: "internal"
|
1133
|
+
|
1134
|
+
langflow:
|
1135
|
+
image: ${OPENSOURCE_REGISTRY_PROXY:-docker.io}/langflowai/${LANGFLOW_IMAGE:-langflow}:${LANGFLOW_TAG:-latest}
|
1136
|
+
profiles: [langflow]
|
1137
|
+
ports:
|
1138
|
+
- 7861:7861
|
1139
|
+
environment:
|
1140
|
+
LANGFLOW_PORT: 7861
|
1141
|
+
LANGFLOW_DATABASE_URL: postgresql://${POSTGRES_USER:-postgres}:${POSTGRES_PASSWORD:-postgres}@wxo-server-db:5432/langflow
|
1142
|
+
LANGFLOW_CONFIG_DIR: app/langflow
|
1143
|
+
volumes:
|
1144
|
+
- langflow-data:/app/langflow
|
1145
|
+
|
1108
1146
|
|
1109
1147
|
volumes:
|
1110
1148
|
tools:
|
@@ -1138,6 +1176,7 @@ volumes:
|
|
1138
1176
|
wdu-models:
|
1139
1177
|
driver: local
|
1140
1178
|
es_data:
|
1179
|
+
langflow-data:
|
1141
1180
|
|
1142
1181
|
networks:
|
1143
1182
|
default:
|
@@ -57,13 +57,14 @@ EVENT_BROKER_TTL="3600"
|
|
57
57
|
REGISTRY_URL=
|
58
58
|
|
59
59
|
|
60
|
-
|
60
|
+
|
61
|
+
SERVER_TAG=29-08-2025-59ef405
|
61
62
|
SERVER_REGISTRY=
|
62
63
|
|
63
|
-
WORKER_TAG=
|
64
|
+
WORKER_TAG=29-08-2025-cf32b2d
|
64
65
|
WORKER_REGISTRY=
|
65
66
|
|
66
|
-
AI_GATEWAY_TAG=
|
67
|
+
AI_GATEWAY_TAG=20-08-2025-9ed6d40
|
67
68
|
AI_GATEWAY_REGISTRY=
|
68
69
|
|
69
70
|
AGENT_GATEWAY_TAG=29-07-2025
|
@@ -77,21 +78,21 @@ AMDDBTAG=29-07-2025-9f3661b
|
|
77
78
|
ARM64DBTAG=29-07-2025-9f3661b
|
78
79
|
|
79
80
|
UI_REGISTRY=
|
80
|
-
UITAG=
|
81
|
+
UITAG=29-08-2025
|
81
82
|
|
82
83
|
CM_REGISTRY=
|
83
84
|
CM_TAG=24-07-2025
|
84
85
|
|
85
|
-
TRM_TAG=
|
86
|
+
TRM_TAG=19-08-2025-fe105eb0b950ff304f712a1a5b9fa3cba92d09da
|
86
87
|
TRM_REGISTRY=
|
87
88
|
|
88
|
-
TR_TAG=
|
89
|
+
TR_TAG=25-08-2025-58ae475
|
89
90
|
TR_REGISTRY=
|
90
91
|
|
91
|
-
BUILDER_TAG=
|
92
|
+
BUILDER_TAG=27-08-2025-7432aca
|
92
93
|
BUILDER_REGISTRY=
|
93
94
|
|
94
|
-
FLOW_RUNTIME_TAG=
|
95
|
+
FLOW_RUNTIME_TAG=26-08-2025-3b7f19e
|
95
96
|
FLOW_RUMTIME_REGISTRY=
|
96
97
|
|
97
98
|
|
@@ -104,24 +105,29 @@ JAEGER_PROXY_REGISTRY=
|
|
104
105
|
SOCKET_HANDLER_TAG=29-05-2025
|
105
106
|
SOCKET_HANDLER_REGISTRY=
|
106
107
|
|
107
|
-
CPE_TAG=
|
108
|
+
CPE_TAG=18-08-2025-ae1308e
|
108
109
|
CPE_REGISTRY=
|
109
110
|
|
110
111
|
VOICE_CONTROLLER_TAG=12-08-2025
|
111
112
|
VOICE_CONTROLLER_REGISTRY=
|
112
113
|
|
114
|
+
LANGFLOW_TAG=
|
115
|
+
LANGFLOW_IMAGE=
|
116
|
+
|
113
117
|
# IBM Document Processing
|
114
|
-
WDU_TAG=2.
|
118
|
+
WDU_TAG=2.6.1
|
115
119
|
WDU_REGISTRY=
|
116
120
|
|
117
|
-
DOCPROC_DPS_TAG=
|
118
|
-
DOCPROC_LLMSERVICE_TAG=
|
119
|
-
DOCPROC_CACHE_TAG=
|
120
|
-
DOCPROC_DPI_TAG=
|
121
|
+
DOCPROC_DPS_TAG=20250815-010747-277-173db2a
|
122
|
+
DOCPROC_LLMSERVICE_TAG=20250820-153924-128-55cf4d5
|
123
|
+
DOCPROC_CACHE_TAG=20250814-master-82-cf33f87
|
124
|
+
DOCPROC_DPI_TAG=20250815-004755-273-e65f26b4
|
121
125
|
DOCPROC_REGISTRY=
|
122
126
|
|
123
127
|
# END -- IMAGE REGISTRIES AND TAGS
|
124
128
|
|
129
|
+
CPD_VERIFY=true
|
130
|
+
AI_GATEWAY_TLS_REJECT_UNAUTHORIZED=1
|
125
131
|
TAVILY_API_KEY=dummy_tavily_api_key
|
126
132
|
PREFERRED_MODELS=meta-llama/llama-3-2-90b-vision-instruct,meta-llama/llama-3-405b-instruct
|
127
133
|
INCOMPATIBLE_MODELS=flan,embedding,cross-encoder,tinytimemixers
|
@@ -152,6 +158,7 @@ TOOLS_RUNTIME_MANAGER_BASE_URL="http://tools-runtime-manager:8080"
|
|
152
158
|
CONNECTION_SERVICE_BASE_URL="http://wxo-server-connection-manager:3001"
|
153
159
|
AI_GATEWAY_BASE_URL="http://ai-gateway:8787/v1"
|
154
160
|
AI_GATEWAY_ENABLED=True
|
161
|
+
DEFAULT_AGENT_ENABLED=True
|
155
162
|
AGENT_GATEWAY_URI="http://wxo-agent-gateway:8989"
|
156
163
|
DEFAULT_TENANT_ID=10000000-0000-0000-0000-000000000000
|
157
164
|
ES_USERNAME=elastic
|
@@ -12,7 +12,10 @@ 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"] = [
|
15
|
+
model_spec["maps"] = []
|
16
|
+
for assignment in self.maps:
|
17
|
+
model_spec["maps"].append(assignment.model_dump())
|
18
|
+
return model_spec
|
16
19
|
|
17
20
|
def add(self, line: Assignment) -> Self:
|
18
21
|
self.maps.append(line)
|