ibm-watsonx-orchestrate 1.8.0b1__py3-none-any.whl → 1.9.0__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 -1
- ibm_watsonx_orchestrate/agent_builder/knowledge_bases/types.py +2 -2
- ibm_watsonx_orchestrate/agent_builder/models/types.py +5 -0
- ibm_watsonx_orchestrate/agent_builder/tools/openapi_tool.py +61 -11
- ibm_watsonx_orchestrate/agent_builder/tools/python_tool.py +18 -6
- ibm_watsonx_orchestrate/agent_builder/tools/types.py +12 -5
- ibm_watsonx_orchestrate/cli/commands/agents/agents_controller.py +15 -3
- ibm_watsonx_orchestrate/cli/commands/channels/types.py +2 -2
- ibm_watsonx_orchestrate/cli/commands/channels/webchat/channels_webchat_controller.py +2 -3
- ibm_watsonx_orchestrate/cli/commands/connections/connections_controller.py +6 -3
- ibm_watsonx_orchestrate/cli/commands/copilot/copilot_controller.py +103 -23
- ibm_watsonx_orchestrate/cli/commands/evaluations/evaluations_command.py +86 -31
- ibm_watsonx_orchestrate/cli/commands/models/model_provider_mapper.py +17 -13
- ibm_watsonx_orchestrate/cli/commands/models/models_controller.py +5 -8
- ibm_watsonx_orchestrate/cli/commands/server/server_command.py +147 -37
- ibm_watsonx_orchestrate/cli/commands/toolkit/toolkit_command.py +4 -2
- ibm_watsonx_orchestrate/cli/commands/toolkit/toolkit_controller.py +9 -1
- ibm_watsonx_orchestrate/cli/commands/tools/tools_controller.py +1 -1
- ibm_watsonx_orchestrate/client/connections/connections_client.py +19 -32
- ibm_watsonx_orchestrate/client/copilot/cpe/copilot_cpe_client.py +5 -3
- ibm_watsonx_orchestrate/client/utils.py +17 -16
- ibm_watsonx_orchestrate/docker/compose-lite.yml +127 -12
- ibm_watsonx_orchestrate/docker/default.env +26 -21
- ibm_watsonx_orchestrate/flow_builder/flows/__init__.py +2 -2
- ibm_watsonx_orchestrate/flow_builder/flows/constants.py +2 -0
- ibm_watsonx_orchestrate/flow_builder/flows/flow.py +52 -10
- ibm_watsonx_orchestrate/flow_builder/node.py +34 -3
- ibm_watsonx_orchestrate/flow_builder/types.py +144 -26
- ibm_watsonx_orchestrate/flow_builder/utils.py +7 -5
- {ibm_watsonx_orchestrate-1.8.0b1.dist-info → ibm_watsonx_orchestrate-1.9.0.dist-info}/METADATA +1 -3
- {ibm_watsonx_orchestrate-1.8.0b1.dist-info → ibm_watsonx_orchestrate-1.9.0.dist-info}/RECORD +34 -35
- ibm_watsonx_orchestrate/agent_builder/utils/pydantic_utils.py +0 -149
- {ibm_watsonx_orchestrate-1.8.0b1.dist-info → ibm_watsonx_orchestrate-1.9.0.dist-info}/WHEEL +0 -0
- {ibm_watsonx_orchestrate-1.8.0b1.dist-info → ibm_watsonx_orchestrate-1.9.0.dist-info}/entry_points.txt +0 -0
- {ibm_watsonx_orchestrate-1.8.0b1.dist-info → ibm_watsonx_orchestrate-1.9.0.dist-info}/licenses/LICENSE +0 -0
@@ -3,6 +3,7 @@ from typing import List
|
|
3
3
|
from ibm_cloud_sdk_core.authenticators import MCSPAuthenticator
|
4
4
|
from pydantic import BaseModel, ValidationError
|
5
5
|
from typing import Optional
|
6
|
+
from enum import Enum
|
6
7
|
|
7
8
|
from ibm_watsonx_orchestrate.client.base_api_client import BaseAPIClient, ClientAPIException
|
8
9
|
from ibm_watsonx_orchestrate.agent_builder.connections.types import ConnectionEnvironment, ConnectionPreference, ConnectionAuthType, ConnectionSecurityScheme, IdpConfigData, AppConfigData, ConnectionType
|
@@ -12,12 +13,23 @@ import logging
|
|
12
13
|
logger = logging.getLogger(__name__)
|
13
14
|
|
14
15
|
|
16
|
+
class FetchConfigAuthTypes(str, Enum):
|
17
|
+
BASIC_AUTH = ConnectionType.BASIC_AUTH.value
|
18
|
+
BEARER_TOKEN = ConnectionType.BEARER_TOKEN.value
|
19
|
+
API_KEY_AUTH = ConnectionType.API_KEY_AUTH.value
|
20
|
+
OAUTH2_AUTH_CODE = ConnectionType.OAUTH2_AUTH_CODE.value
|
21
|
+
OAUTH2_IMPLICIT = 'oauth2_implicit'
|
22
|
+
OAUTH2_PASSWORD = 'oauth2_password'
|
23
|
+
OAUTH2_CLIENT_CREDS = ConnectionType.OAUTH2_CLIENT_CREDS.value
|
24
|
+
OAUTH_ON_BEHALF_OF_FLOW = ConnectionType.OAUTH_ON_BEHALF_OF_FLOW.value
|
25
|
+
KEY_VALUE = ConnectionType.KEY_VALUE.value
|
26
|
+
|
15
27
|
class ListConfigsResponse(BaseModel):
|
16
28
|
connection_id: str = None,
|
17
29
|
app_id: str = None
|
18
30
|
name: str = None
|
19
31
|
security_scheme: ConnectionSecurityScheme | None = None,
|
20
|
-
auth_type:
|
32
|
+
auth_type: FetchConfigAuthTypes | None = None,
|
21
33
|
environment: ConnectionEnvironment | None = None,
|
22
34
|
preference: ConnectionPreference | None = None,
|
23
35
|
credentials_entered: bool | None = False
|
@@ -28,7 +40,7 @@ class GetConfigResponse(BaseModel):
|
|
28
40
|
app_id: str = None
|
29
41
|
environment: ConnectionEnvironment = None
|
30
42
|
preference: ConnectionPreference = None
|
31
|
-
auth_type:
|
43
|
+
auth_type: FetchConfigAuthTypes | None = None
|
32
44
|
sso: bool = None
|
33
45
|
security_scheme: ConnectionSecurityScheme = None
|
34
46
|
server_url: str | None = None
|
@@ -63,12 +75,7 @@ class ConnectionsClient(BaseAPIClient):
|
|
63
75
|
# GET /api/v1/connections/applications/{app_id}
|
64
76
|
def get(self, app_id: str) -> GetConnectionResponse | None:
|
65
77
|
try:
|
66
|
-
|
67
|
-
f"/connections/applications/{app_id}"
|
68
|
-
if is_cpd_env(self.base_url)
|
69
|
-
else f"/connections/applications?app_id={app_id}"
|
70
|
-
)
|
71
|
-
return GetConnectionResponse.model_validate(self._get(path))
|
78
|
+
return GetConnectionResponse.model_validate(self._get(f"/connections/applications?app_id={app_id}"))
|
72
79
|
except ClientAPIException as e:
|
73
80
|
if e.response.status_code == 404:
|
74
81
|
return None
|
@@ -78,12 +85,7 @@ class ConnectionsClient(BaseAPIClient):
|
|
78
85
|
# GET api/v1/connections/applications
|
79
86
|
def list(self) -> List[ListConfigsResponse]:
|
80
87
|
try:
|
81
|
-
|
82
|
-
f"/connections/applications"
|
83
|
-
if is_cpd_env(self.base_url)
|
84
|
-
else f"/connections/applications?include_details=true"
|
85
|
-
)
|
86
|
-
res = self._get(path)
|
88
|
+
res = self._get(f"/connections/applications?include_details=true")
|
87
89
|
import json
|
88
90
|
json.dumps(res)
|
89
91
|
return [ListConfigsResponse.model_validate(conn) for conn in res.get("applications", [])]
|
@@ -135,19 +137,9 @@ class ConnectionsClient(BaseAPIClient):
|
|
135
137
|
def get_credentials(self, app_id: str, env: ConnectionEnvironment, use_app_credentials: bool) -> dict:
|
136
138
|
try:
|
137
139
|
if use_app_credentials:
|
138
|
-
|
139
|
-
f"/connections/applications/{app_id}/credentials?env={env}"
|
140
|
-
if is_cpd_env(self.base_url)
|
141
|
-
else f"/connections/applications/{app_id}/credentials/{env}"
|
142
|
-
)
|
143
|
-
return self._get(path)
|
140
|
+
return self._get(f"/connections/applications/{app_id}/credentials/{env}")
|
144
141
|
else:
|
145
|
-
|
146
|
-
f"/connections/applications/{app_id}/configs/runtime_credentials?env={env}"
|
147
|
-
if is_cpd_env(self.base_url)
|
148
|
-
else f"/connections/applications/runtime_credentials?app_id={app_id}&env={env}"
|
149
|
-
)
|
150
|
-
return self._get(path)
|
142
|
+
return self._get(f"/connections/applications/runtime_credentials?app_id={app_id}&env={env}")
|
151
143
|
except ClientAPIException as e:
|
152
144
|
if e.response.status_code == 404:
|
153
145
|
return None
|
@@ -177,12 +169,7 @@ class ConnectionsClient(BaseAPIClient):
|
|
177
169
|
if conn_id is None:
|
178
170
|
return ""
|
179
171
|
try:
|
180
|
-
|
181
|
-
f"/connections/applications/id/{conn_id}"
|
182
|
-
if is_cpd_env(self.base_url)
|
183
|
-
else f"/connections/applications?connection_id={conn_id}"
|
184
|
-
)
|
185
|
-
app_details = self._get(path)
|
172
|
+
app_details = self._get(f"/connections/applications?connection_id={conn_id}")
|
186
173
|
return app_details.get("app_id")
|
187
174
|
except ClientAPIException as e:
|
188
175
|
if e.response.status_code == 404:
|
@@ -21,13 +21,15 @@ class CPEClient(BaseAPIClient):
|
|
21
21
|
}
|
22
22
|
|
23
23
|
|
24
|
-
def submit_pre_cpe_chat(self, user_message: str | None =None, tools: Dict[str, Any] = None,
|
24
|
+
def submit_pre_cpe_chat(self, user_message: str | None =None, tools: Dict[str, Any] = None, collaborators: Dict[str, Any] = None, knowledge_bases: Dict[str, Any] = None, selected:bool=False) -> dict:
|
25
25
|
payload = {
|
26
26
|
"message": user_message,
|
27
27
|
"tools": tools,
|
28
|
-
"
|
28
|
+
"collaborators": collaborators,
|
29
|
+
"knowledge_bases": knowledge_bases,
|
29
30
|
"chat_id": self.chat_id,
|
30
|
-
"chat_model_name": self.chat_model_name
|
31
|
+
"chat_model_name": self.chat_model_name,
|
32
|
+
'selected':selected
|
31
33
|
}
|
32
34
|
|
33
35
|
response = self._post_nd_json("/wxo-cpe/create-agent", data=payload)
|
@@ -33,18 +33,6 @@ def get_current_env_url() -> str:
|
|
33
33
|
active_env = cfg.read(CONTEXT_SECTION_HEADER, CONTEXT_ACTIVE_ENV_OPT)
|
34
34
|
return cfg.get(ENVIRONMENTS_SECTION_HEADER, active_env, ENV_WXO_URL_OPT)
|
35
35
|
|
36
|
-
def get_cpd_instance_id_from_url(url: str | None = None) -> str:
|
37
|
-
if url is None:
|
38
|
-
url = get_current_env_url()
|
39
|
-
|
40
|
-
if not is_cpd_env(url):
|
41
|
-
logger.error(f"The host {url} is not a CPD instance")
|
42
|
-
sys.exit(1)
|
43
|
-
|
44
|
-
url_fragments = url.split('/')
|
45
|
-
return url_fragments[-1] if url_fragments[-1] else url_fragments[-2]
|
46
|
-
|
47
|
-
|
48
36
|
def is_local_dev(url: str | None = None) -> bool:
|
49
37
|
if url is None:
|
50
38
|
url = get_current_env_url()
|
@@ -63,11 +51,11 @@ def is_local_dev(url: str | None = None) -> bool:
|
|
63
51
|
|
64
52
|
return False
|
65
53
|
|
66
|
-
def
|
54
|
+
def is_ga_platform(url: str | None = None) -> bool:
|
67
55
|
if url is None:
|
68
56
|
url = get_current_env_url()
|
69
57
|
|
70
|
-
if url.
|
58
|
+
if url.__contains__("orchestrate.ibm.com"):
|
71
59
|
return True
|
72
60
|
return False
|
73
61
|
|
@@ -82,14 +70,27 @@ def is_ibm_cloud_platform(url:str | None = None) -> bool:
|
|
82
70
|
return True
|
83
71
|
return False
|
84
72
|
|
85
|
-
def
|
73
|
+
def is_cpd_env(url: str | None = None) -> bool:
|
86
74
|
if url is None:
|
87
75
|
url = get_current_env_url()
|
88
76
|
|
89
|
-
if url.
|
77
|
+
if url.lower().startswith("https://cpd"):
|
90
78
|
return True
|
91
79
|
return False
|
92
80
|
|
81
|
+
def get_cpd_instance_id_from_url(url: str | None = None) -> str:
|
82
|
+
if url is None:
|
83
|
+
url = get_current_env_url()
|
84
|
+
|
85
|
+
if not is_cpd_env(url):
|
86
|
+
logger.error(f"The host {url} is not a CPD instance")
|
87
|
+
sys.exit(1)
|
88
|
+
|
89
|
+
url_fragments = url.split('/')
|
90
|
+
return url_fragments[-1] if url_fragments[-1] else url_fragments[-2]
|
91
|
+
|
92
|
+
|
93
|
+
|
93
94
|
|
94
95
|
def get_environment() -> str:
|
95
96
|
if is_local_dev():
|
@@ -1,3 +1,4 @@
|
|
1
|
+
name: docker
|
1
2
|
services:
|
2
3
|
########################
|
3
4
|
# Orchestrate Lite dependencies
|
@@ -121,6 +122,11 @@ services:
|
|
121
122
|
CONNECTIONS_MANAGER_ENDPOINT: http://wxo-server-connection-manager:3001
|
122
123
|
AGENT_OPS_API_KEY: ${AGENTOPS_API_KEY}
|
123
124
|
AGENTS_OPS_RUNTIME_ENDPOINT: https://frontend-server:443
|
125
|
+
DPI_WO_WDU_SERVER_ENDPOINT: https://wxo-doc-processing-service:8080
|
126
|
+
DPI_RAG_SERVER_ENDPOINT: https://wxo-doc-processing-llm-service:8083
|
127
|
+
IBM_DPS_CACHE_SERVICE: https://wxo-doc-processing-cache:8080
|
128
|
+
DOCPROC_BASE_URL: http://wxo-doc-processing-infra-standalone:9080
|
129
|
+
BUILDER_ASYNC_CALLBACK_ENDPOINT: http://wxo-builder:4025
|
124
130
|
IS_OBSERVABILITY_FEATURE_ENABLED: "true"
|
125
131
|
ALLOW_INSECURE_TLS: "true"
|
126
132
|
command: 'npm start'
|
@@ -164,7 +170,7 @@ services:
|
|
164
170
|
"
|
165
171
|
|
166
172
|
wxo-milvus-standalone:
|
167
|
-
image: ${OPENSOURCE_REGISTRY_PROXY:-docker.io}/milvusdb/milvus:v2.5.
|
173
|
+
image: ${OPENSOURCE_REGISTRY_PROXY:-docker.io}/milvusdb/milvus:v2.5.15
|
168
174
|
command: ["milvus", "run", "standalone"]
|
169
175
|
security_opt:
|
170
176
|
- seccomp:unconfined
|
@@ -302,7 +308,7 @@ services:
|
|
302
308
|
JWT_PRIVATE_CONFIGS_PATH: "/"
|
303
309
|
VECTOR_STORE_PROVIDER: ${VECTOR_STORE_PROVIDER:-milvus}
|
304
310
|
CELERY_RESULTS_TTL: "3600"
|
305
|
-
EVENT_BROKER_TTL: "
|
311
|
+
EVENT_BROKER_TTL: "3600"
|
306
312
|
TAVILY_API_KEY: ${TAVILY_API_KEY:-dummy_tavily_api_key}
|
307
313
|
WATSONX_APIKEY: ${WATSONX_APIKEY}
|
308
314
|
WATSONX_URL: ${WATSONX_URL}
|
@@ -404,7 +410,7 @@ services:
|
|
404
410
|
WXAI_API_KEY: ${WXAI_API_KEY}
|
405
411
|
VECTOR_STORE_PROVIDER: ${VECTOR_STORE_PROVIDER:-milvus}
|
406
412
|
CELERY_RESULTS_TTL: "3600"
|
407
|
-
EVENT_BROKER_TTL: "
|
413
|
+
EVENT_BROKER_TTL: "3600"
|
408
414
|
TAVILY_API_KEY: ${TAVILY_API_KEY:-dummy_tavily_api_key}
|
409
415
|
WATSONX_APIKEY: ${WATSONX_APIKEY}
|
410
416
|
WATSONX_URL: ${WATSONX_URL}
|
@@ -548,6 +554,7 @@ services:
|
|
548
554
|
- TENANT_DEFAULT_PASSWORD=${ES_PASSWORD}
|
549
555
|
- TENANT_DEFAULT_HOSTNAME=http://elasticsearch:9200
|
550
556
|
- DEFAULT_TENANT_ID=${DEFAULT_TENANT_ID}
|
557
|
+
- FORCE_SINGLE_TENANT=${FORCE_SINGLE_TENANT:-true}
|
551
558
|
ports:
|
552
559
|
- "9202:9201" # Expose proxy on host port 9202
|
553
560
|
networks:
|
@@ -643,6 +650,7 @@ services:
|
|
643
650
|
- INBOUND_API_KEY=${AGENTOPS_API_KEY}
|
644
651
|
- DEFAULT_TENANT_ID=${DEFAULT_TENANT_ID}
|
645
652
|
- TENANT_DEFAULT_HOSTNAME=http://elasticsearch:9200
|
653
|
+
- FORCE_SINGLE_TENANT=${FORCE_SINGLE_TENANT:-true}
|
646
654
|
ports:
|
647
655
|
- "8765:443"
|
648
656
|
networks:
|
@@ -780,16 +788,16 @@ services:
|
|
780
788
|
LANGFUSE_PUBLIC_KEY: ${LANGFUSE_PUBLIC_KEY:-pk-lf-7417757e-d6df-421b-957e-683b76acb5df}
|
781
789
|
LANGFUSE_SECRET_KEY: ${LANGFUSE_PRIVATE_KEY:-sk-lf-7bc4da63-7b2b-40c0-b5eb-1e0cf64f9af2}
|
782
790
|
LOG_LEVEL: info
|
783
|
-
DISABLE_FLOW_BINDING: true
|
784
791
|
DOCPROC_ENABLED: ${DOCPROC_ENABLED:-false}
|
785
792
|
DOCPROC_BASE_URL: http://wxo-doc-processing-infra-standalone:9080
|
786
793
|
WO_API_KEY: ${WO_API_KEY}
|
787
794
|
WO_INSTANCE: ${WO_INSTANCE}
|
788
795
|
AUTHORIZATION_URL: ${AUTHORIZATION_URL}
|
789
796
|
WO_AUTH_TYPE: ${WO_AUTH_TYPE}
|
797
|
+
FLOW_CALLBACK_REQUEST_RETRIES: "1"
|
790
798
|
healthcheck:
|
791
799
|
test: curl -k http://localhost:9044/readiness --fail
|
792
|
-
interval:
|
800
|
+
interval: 30s
|
793
801
|
timeout: 60s
|
794
802
|
retries: 5
|
795
803
|
ports:
|
@@ -825,7 +833,7 @@ services:
|
|
825
833
|
########################
|
826
834
|
|
827
835
|
wxo-doc-processing-service:
|
828
|
-
image: ${DOCPROC_REGISTRY:-us.icr.io/watson-orchestrate-private}/document-processing/wo_doc_processing_service:${DOCPROC_DPS_TAG:-
|
836
|
+
image: ${DOCPROC_REGISTRY:-us.icr.io/watson-orchestrate-private}/document-processing/wo_doc_processing_service:${DOCPROC_DPS_TAG:-20250721-164412-250-503756a}
|
829
837
|
platform: linux/amd64
|
830
838
|
restart: unless-stopped
|
831
839
|
environment:
|
@@ -841,9 +849,9 @@ services:
|
|
841
849
|
IBM_DPS_CACHE_SERVICE: https://wxo-doc-processing-cache:8080
|
842
850
|
profiles:
|
843
851
|
- docproc
|
844
|
-
|
845
|
-
|
846
|
-
|
852
|
+
depends_on:
|
853
|
+
wxo-doc-processing-cache:
|
854
|
+
condition: service_healthy
|
847
855
|
ports:
|
848
856
|
- "18081:8080"
|
849
857
|
healthcheck:
|
@@ -855,6 +863,7 @@ services:
|
|
855
863
|
wdu-runtime:
|
856
864
|
image: ${WDU_REGISTRY:-us.icr.io/watson-orchestrate-private}/document-processing/wdu-runtime:${WDU_TAG:-2.4.0}
|
857
865
|
platform: linux/amd64
|
866
|
+
user: app
|
858
867
|
restart: unless-stopped
|
859
868
|
environment:
|
860
869
|
MEMORY_MINIMAL: "true"
|
@@ -894,6 +903,48 @@ services:
|
|
894
903
|
tmpfs:
|
895
904
|
- "/dev/shm"
|
896
905
|
|
906
|
+
wxo-doc-processing-cache:
|
907
|
+
image: ${DOCPROC_REGISTRY:-us.icr.io/watson-orchestrate-private}/document-processing/wo_doc_processing_cache:${DOCPROC_CACHE_TAG:-20250723-100852-70-9edc1ab}
|
908
|
+
platform: linux/amd64
|
909
|
+
restart: unless-stopped
|
910
|
+
environment:
|
911
|
+
SERVICE_NAME: wxo-doc-processing-cache
|
912
|
+
LOG_LEVEL: info
|
913
|
+
RATE_LIMITING_ENABLED: "false"
|
914
|
+
USE_DUMMY_CACHE: "false"
|
915
|
+
CACHE_ENFORCE_STRICT_JWT: "false"
|
916
|
+
PGHOST: wxo-server-db
|
917
|
+
PGPORT: "5432"
|
918
|
+
PGUSER: ${POSTGRES_USER:-postgres}
|
919
|
+
PGPASSWORD: ${POSTGRES_PASSWORD:-postgres}
|
920
|
+
PGDATABASE: wxo-document-processing-cache
|
921
|
+
PG_DB_SCHEMA: dpschema
|
922
|
+
# PG_USE_SSL: false
|
923
|
+
S3_ENDPOINT_URL: http://wxo-server-minio:9000
|
924
|
+
S3_ACCESS_KEY: ${MINIO_ROOT_USER:-minioadmin}
|
925
|
+
S3_SECRET_KEY: ${MINIO_ROOT_PASSWORD:-watsonxorchestrate}
|
926
|
+
S3_REGION: us-east-1
|
927
|
+
S3_BUCKET_NAME: wxo-document-processing-cache
|
928
|
+
VERIFY_CLIENT_CERT: 1
|
929
|
+
# S3_USE_SSL: false
|
930
|
+
# S3_VERIFY_CERT: false
|
931
|
+
profiles:
|
932
|
+
- docproc
|
933
|
+
depends_on:
|
934
|
+
wxo-doc-processing-pg-init:
|
935
|
+
condition: service_completed_successfully
|
936
|
+
wxo-doc-processing-cache-minio-init:
|
937
|
+
condition: service_completed_successfully
|
938
|
+
ports:
|
939
|
+
- "18083:8080"
|
940
|
+
# volumes:
|
941
|
+
# - ./docker/wo_doc_processing_rag_base/etc/certs:/etc/certs
|
942
|
+
healthcheck:
|
943
|
+
test: ["CMD-SHELL", "curl -fk https://localhost:8080/ping"]
|
944
|
+
interval: 30s
|
945
|
+
timeout: 30s
|
946
|
+
retries: 10
|
947
|
+
|
897
948
|
wxo-doc-processing-infra-standalone:
|
898
949
|
image: ${DOCPROC_REGISTRY:-us.icr.io/watson-orchestrate-private}/document-processing/wo-doc-processing-infra-standalone:${DOCPROC_DPI_TAG:-2025-06-13-dev-1}
|
899
950
|
platform: linux/amd64
|
@@ -918,7 +969,7 @@ services:
|
|
918
969
|
SIDECAR_METERED_ENABLED: "false"
|
919
970
|
DPI_DEBUG: "false"
|
920
971
|
DPI_WO_WDU_SERVER_ENDPOINT: https://wxo-doc-processing-service:8080
|
921
|
-
|
972
|
+
DPI_RAG_SERVER_ENDPOINT: https://wxo-doc-processing-llm-service:8083
|
922
973
|
DISABLE_TLS: true
|
923
974
|
STANDALONE_DPI: "true"
|
924
975
|
depends_on:
|
@@ -928,8 +979,8 @@ services:
|
|
928
979
|
condition: service_completed_successfully
|
929
980
|
wxo-doc-processing-service:
|
930
981
|
condition: service_healthy
|
931
|
-
|
932
|
-
|
982
|
+
wxo-doc-processing-llm-service:
|
983
|
+
condition: service_healthy
|
933
984
|
ports:
|
934
985
|
- 19080:9080
|
935
986
|
- 19443:9443
|
@@ -939,6 +990,33 @@ services:
|
|
939
990
|
timeout: 30s
|
940
991
|
retries: 10
|
941
992
|
|
993
|
+
wxo-doc-processing-llm-service:
|
994
|
+
image: ${DOCPROC_REGISTRY:-us.icr.io/watson-orchestrate-private}/document-processing/wo_doc_processing_rag:${DOCPROC_LLMSERVICE_TAG:-20250725-100249-111-51d3e51}
|
995
|
+
platform: linux/amd64
|
996
|
+
restart: unless-stopped
|
997
|
+
environment:
|
998
|
+
SERVICE_NAME: wxo-doc-processing-llm-service
|
999
|
+
LOG_LEVEL: info
|
1000
|
+
WATSONX_API_ENDPOINT: ${WATSONX_URL:-https://us-south.ml.cloud.ibm.com}
|
1001
|
+
WATSONX_API_KEY: ${WATSONX_APIKEY}
|
1002
|
+
WATSONX_PROJECT_ID: ${WATSONX_PROJECT_ID}
|
1003
|
+
WATSONX_SPACE_ID: ${WATSONX_SPACE_ID}
|
1004
|
+
IBM_DPS_CACHE_SERVICE: 'wxo-doc-processing-cache:8080'
|
1005
|
+
profiles:
|
1006
|
+
- docproc
|
1007
|
+
depends_on:
|
1008
|
+
wxo-doc-processing-cache:
|
1009
|
+
condition: service_healthy
|
1010
|
+
ports:
|
1011
|
+
- "18084:8083"
|
1012
|
+
# volumes:
|
1013
|
+
# - ./conf/rag/certs:/etc/certs
|
1014
|
+
healthcheck:
|
1015
|
+
test: ["CMD-SHELL", "curl -fk https://localhost:8083/ping"]
|
1016
|
+
interval: 30s
|
1017
|
+
timeout: 30s
|
1018
|
+
retries: 10
|
1019
|
+
|
942
1020
|
wxo-doc-processing-infra-pg-init:
|
943
1021
|
image: ${DOCPROC_REGISTRY:-us.icr.io/watson-orchestrate-private}/document-processing/wo-doc-processing-infra-pg-init:${DOCPROC_DPI_TAG:-2025-06-13-dev-1}
|
944
1022
|
platform: linux/amd64
|
@@ -963,6 +1041,28 @@ services:
|
|
963
1041
|
timeout: 5s
|
964
1042
|
retries: 50
|
965
1043
|
|
1044
|
+
wxo-doc-processing-pg-init:
|
1045
|
+
image: ${DOCPROC_REGISTRY:-us.icr.io/watson-orchestrate-private}/document-processing/wo_doc_processing_cache_rds_init:${DOCPROC_CACHE_TAG:-20250723-100852-70-9edc1ab}
|
1046
|
+
platform: linux/amd64
|
1047
|
+
environment:
|
1048
|
+
PGHOST: wxo-server-db
|
1049
|
+
PGPORT: "5432"
|
1050
|
+
PGUSER: ${POSTGRES_USER:-postgres}
|
1051
|
+
PGPASSWORD: ${POSTGRES_PASSWORD:-postgres}
|
1052
|
+
PGDATABASE: wxo-document-processing-cache
|
1053
|
+
PG_DB_SCHEMA: dpschema
|
1054
|
+
# PG_USE_SSL: false
|
1055
|
+
profiles:
|
1056
|
+
- docproc
|
1057
|
+
depends_on:
|
1058
|
+
wxo-server-db:
|
1059
|
+
condition: service_started
|
1060
|
+
healthcheck:
|
1061
|
+
test: ["CMD-SHELL", "psql -h localhost -U ${POSTGRES_USER:-postgres} -d ${POSTGRES_PASSWORD:-postgres}"]
|
1062
|
+
interval: 1s
|
1063
|
+
timeout: 5s
|
1064
|
+
retries: 50
|
1065
|
+
|
966
1066
|
wxo-doc-processing-dpi-minio-init:
|
967
1067
|
image: ${OPENSOURCE_REGISTRY_PROXY:-docker.io}/minio/mc:latest
|
968
1068
|
platform: linux/amd64
|
@@ -978,6 +1078,21 @@ services:
|
|
978
1078
|
exit 0;
|
979
1079
|
"
|
980
1080
|
|
1081
|
+
wxo-doc-processing-cache-minio-init:
|
1082
|
+
image: ${OPENSOURCE_REGISTRY_PROXY:-docker.io}/minio/mc:latest
|
1083
|
+
platform: linux/amd64
|
1084
|
+
profiles:
|
1085
|
+
- docproc
|
1086
|
+
depends_on:
|
1087
|
+
wxo-server-minio:
|
1088
|
+
condition: service_healthy
|
1089
|
+
entrypoint: >
|
1090
|
+
/bin/sh -c "
|
1091
|
+
/usr/bin/mc alias set wxo-server-minio http://wxo-server-minio:9000 ${MINIO_ROOT_USER:-minioadmin} ${MINIO_ROOT_PASSWORD:-watsonxorchestrate};
|
1092
|
+
/usr/bin/mc mb wxo-server-minio/wxo-document-processing-cache;
|
1093
|
+
exit 0;
|
1094
|
+
"
|
1095
|
+
|
981
1096
|
volumes:
|
982
1097
|
tools:
|
983
1098
|
driver: local
|
@@ -1,3 +1,7 @@
|
|
1
|
+
# These credentials are for local development only.
|
2
|
+
# They are default values and can be overridden by the user.
|
3
|
+
# These do NOT provide access to any production or sensitive
|
4
|
+
|
1
5
|
#DOCKER_IAM_KEY=dummy #Must Define in env
|
2
6
|
#You can generate any JWT_SECRET with python -c 'import secrets; print(secrets.token_hex(32))'
|
3
7
|
JWT_SECRET=11759cbc89dbec64956715e10a854eb38f8b7a1775bdf68142786170f5e8b5b2
|
@@ -42,7 +46,7 @@ LANGFUSE_PRIVATE_KEY=sk-lf-7bc4da63-7b2b-40c0-b5eb-1e0cf64f9af2
|
|
42
46
|
|
43
47
|
CELERY_WORKER_CONCURRENCY=12
|
44
48
|
CELERY_RESULTS_TTL="3600"
|
45
|
-
EVENT_BROKER_TTL="
|
49
|
+
EVENT_BROKER_TTL="3600"
|
46
50
|
|
47
51
|
# START -- IMAGE REGISTRIES AND TAGS
|
48
52
|
# The registry URL to pull the private images from, including the name of the repository in the registry.
|
@@ -53,64 +57,64 @@ EVENT_BROKER_TTL="-1"
|
|
53
57
|
REGISTRY_URL=
|
54
58
|
|
55
59
|
|
56
|
-
SERVER_TAG=
|
60
|
+
SERVER_TAG=01-08-2025
|
57
61
|
SERVER_REGISTRY=
|
58
62
|
|
59
|
-
WORKER_TAG=
|
63
|
+
WORKER_TAG=01-08-2025-v2
|
60
64
|
WORKER_REGISTRY=
|
61
65
|
|
62
|
-
AI_GATEWAY_TAG=01-
|
66
|
+
AI_GATEWAY_TAG=01-08-2025-v1
|
63
67
|
AI_GATEWAY_REGISTRY=
|
64
68
|
|
65
|
-
AGENT_GATEWAY_TAG=
|
69
|
+
AGENT_GATEWAY_TAG=29-07-2025
|
66
70
|
AGENT_GATEWAY_REGISTRY=
|
67
71
|
|
68
72
|
DB_REGISTRY=
|
69
73
|
# If you build multiarch set all three of these to the same, we have a pr against main
|
70
74
|
# to not have this separation, but we can merge it later
|
71
|
-
DBTAG=
|
72
|
-
AMDDBTAG=
|
73
|
-
ARM64DBTAG=
|
75
|
+
DBTAG=29-07-2025-9f3661b
|
76
|
+
AMDDBTAG=29-07-2025-9f3661b
|
77
|
+
ARM64DBTAG=29-07-2025-9f3661b
|
74
78
|
|
75
79
|
UI_REGISTRY=
|
76
|
-
UITAG=
|
80
|
+
UITAG=31-07-2025
|
77
81
|
|
78
82
|
CM_REGISTRY=
|
79
|
-
CM_TAG=
|
83
|
+
CM_TAG=24-07-2025
|
80
84
|
|
81
|
-
TRM_TAG=
|
85
|
+
TRM_TAG=23-07-2025-3c60549f0bac275de3e5736265a3fd49cdd3a203
|
82
86
|
TRM_REGISTRY=
|
83
87
|
|
84
|
-
TR_TAG=
|
88
|
+
TR_TAG=23-07-2025-3c60549f0bac275de3e5736265a3fd49cdd3a203
|
85
89
|
TR_REGISTRY=
|
86
90
|
|
87
|
-
BUILDER_TAG=
|
91
|
+
BUILDER_TAG=31-07-2025-d7145cb
|
88
92
|
BUILDER_REGISTRY=
|
89
93
|
|
90
|
-
FLOW_RUNTIME_TAG=
|
94
|
+
FLOW_RUNTIME_TAG=01-08-2025
|
91
95
|
FLOW_RUMTIME_REGISTRY=
|
92
96
|
|
93
97
|
|
94
|
-
AGENT_ANALYTICS_TAG=
|
98
|
+
AGENT_ANALYTICS_TAG=05-08-2025
|
95
99
|
AGENT_ANALYTICS_REGISTRY=
|
96
100
|
|
97
|
-
JAEGER_PROXY_TAG=
|
101
|
+
JAEGER_PROXY_TAG=23-07-2025
|
98
102
|
JAEGER_PROXY_REGISTRY=
|
99
103
|
|
100
104
|
SOCKET_HANDLER_TAG=29-05-2025
|
101
105
|
SOCKET_HANDLER_REGISTRY=
|
102
106
|
|
103
|
-
CPE_TAG=
|
107
|
+
CPE_TAG=06-08-2025-b0a20ad
|
104
108
|
CPE_REGISTRY=
|
105
109
|
|
106
110
|
# IBM Document Processing
|
107
111
|
WDU_TAG=2.5.0
|
108
112
|
WDU_REGISTRY=
|
109
113
|
|
110
|
-
DOCPROC_DPS_TAG=
|
111
|
-
DOCPROC_LLMSERVICE_TAG=
|
112
|
-
DOCPROC_CACHE_TAG=
|
113
|
-
DOCPROC_DPI_TAG=
|
114
|
+
DOCPROC_DPS_TAG=20250721-164412-250-503756a
|
115
|
+
DOCPROC_LLMSERVICE_TAG=20250725-100249-111-51d3e51
|
116
|
+
DOCPROC_CACHE_TAG=20250723-100852-70-9edc1ab
|
117
|
+
DOCPROC_DPI_TAG=20250731-155328-257-06879e86
|
114
118
|
DOCPROC_REGISTRY=
|
115
119
|
|
116
120
|
# END -- IMAGE REGISTRIES AND TAGS
|
@@ -178,6 +182,7 @@ CALLBACK_HOST_URL=
|
|
178
182
|
|
179
183
|
AGENTOPS_API_KEY_AUTH_ENABLED=true
|
180
184
|
AGENTOPS_API_KEY=qwertyuiop
|
185
|
+
FORCE_SINGLE_TENANT=true
|
181
186
|
|
182
187
|
RUNTIME_MANAGER_API_KEY=example
|
183
188
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
from .constants import START, END, RESERVED
|
2
2
|
|
3
|
-
from ..types import FlowContext, TaskData, TaskEventType,
|
3
|
+
from ..types import FlowContext, TaskData, TaskEventType, DocProcInput, DecisionsCondition, DecisionsRule
|
4
4
|
from ..node import UserNode, AgentNode, StartNode, EndNode, PromptNode, ToolNode, DecisionsNode
|
5
5
|
|
6
6
|
from .flow import Flow, CompiledFlow, FlowRun, FlowEvent, FlowEventType, FlowFactory, MatchPolicy, WaitPolicy, ForeachPolicy, Branch, Foreach, Loop
|
@@ -16,7 +16,7 @@ __all__ = [
|
|
16
16
|
"FlowContext",
|
17
17
|
"TaskData",
|
18
18
|
"TaskEventType",
|
19
|
-
"
|
19
|
+
"DocProcInput",
|
20
20
|
|
21
21
|
"DocProcNode",
|
22
22
|
"UserNode",
|