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.
Files changed (35) hide show
  1. ibm_watsonx_orchestrate/__init__.py +1 -1
  2. ibm_watsonx_orchestrate/agent_builder/knowledge_bases/types.py +2 -2
  3. ibm_watsonx_orchestrate/agent_builder/models/types.py +5 -0
  4. ibm_watsonx_orchestrate/agent_builder/tools/openapi_tool.py +61 -11
  5. ibm_watsonx_orchestrate/agent_builder/tools/python_tool.py +18 -6
  6. ibm_watsonx_orchestrate/agent_builder/tools/types.py +12 -5
  7. ibm_watsonx_orchestrate/cli/commands/agents/agents_controller.py +15 -3
  8. ibm_watsonx_orchestrate/cli/commands/channels/types.py +2 -2
  9. ibm_watsonx_orchestrate/cli/commands/channels/webchat/channels_webchat_controller.py +2 -3
  10. ibm_watsonx_orchestrate/cli/commands/connections/connections_controller.py +6 -3
  11. ibm_watsonx_orchestrate/cli/commands/copilot/copilot_controller.py +103 -23
  12. ibm_watsonx_orchestrate/cli/commands/evaluations/evaluations_command.py +86 -31
  13. ibm_watsonx_orchestrate/cli/commands/models/model_provider_mapper.py +17 -13
  14. ibm_watsonx_orchestrate/cli/commands/models/models_controller.py +5 -8
  15. ibm_watsonx_orchestrate/cli/commands/server/server_command.py +147 -37
  16. ibm_watsonx_orchestrate/cli/commands/toolkit/toolkit_command.py +4 -2
  17. ibm_watsonx_orchestrate/cli/commands/toolkit/toolkit_controller.py +9 -1
  18. ibm_watsonx_orchestrate/cli/commands/tools/tools_controller.py +1 -1
  19. ibm_watsonx_orchestrate/client/connections/connections_client.py +19 -32
  20. ibm_watsonx_orchestrate/client/copilot/cpe/copilot_cpe_client.py +5 -3
  21. ibm_watsonx_orchestrate/client/utils.py +17 -16
  22. ibm_watsonx_orchestrate/docker/compose-lite.yml +127 -12
  23. ibm_watsonx_orchestrate/docker/default.env +26 -21
  24. ibm_watsonx_orchestrate/flow_builder/flows/__init__.py +2 -2
  25. ibm_watsonx_orchestrate/flow_builder/flows/constants.py +2 -0
  26. ibm_watsonx_orchestrate/flow_builder/flows/flow.py +52 -10
  27. ibm_watsonx_orchestrate/flow_builder/node.py +34 -3
  28. ibm_watsonx_orchestrate/flow_builder/types.py +144 -26
  29. ibm_watsonx_orchestrate/flow_builder/utils.py +7 -5
  30. {ibm_watsonx_orchestrate-1.8.0b1.dist-info → ibm_watsonx_orchestrate-1.9.0.dist-info}/METADATA +1 -3
  31. {ibm_watsonx_orchestrate-1.8.0b1.dist-info → ibm_watsonx_orchestrate-1.9.0.dist-info}/RECORD +34 -35
  32. ibm_watsonx_orchestrate/agent_builder/utils/pydantic_utils.py +0 -149
  33. {ibm_watsonx_orchestrate-1.8.0b1.dist-info → ibm_watsonx_orchestrate-1.9.0.dist-info}/WHEEL +0 -0
  34. {ibm_watsonx_orchestrate-1.8.0b1.dist-info → ibm_watsonx_orchestrate-1.9.0.dist-info}/entry_points.txt +0 -0
  35. {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: ConnectionAuthType | None = None,
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: ConnectionAuthType | None = None
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
- path = (
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
- path = (
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
- path = (
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
- path = (
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
- path = (
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, agents: Dict[str, Any] = None) -> dict:
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
- "agents": agents,
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 is_cpd_env(url: str | None = None) -> bool:
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.lower().startswith("https://cpd"):
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 is_ga_platform(url: str | None = None) -> bool:
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.__contains__("orchestrate.ibm.com"):
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.6
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: "-1"
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: "-1"
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: 5s
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:-20250606-172035-246-4191121}
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
- # depends_on:
845
- # wxo-doc-processing-cache:
846
- # condition: service_healthy
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
- # DPI_RAG_SERVER_ENDPOINT: https://wxo-doc-processing-llm-service:8083
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
- # wxo-doc-processing-llm-service:
932
- # condition: service_healthy
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="-1"
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=10-07-2025-beb40a3a
60
+ SERVER_TAG=01-08-2025
57
61
  SERVER_REGISTRY=
58
62
 
59
- WORKER_TAG=10-07-2025-beb40a3a
63
+ WORKER_TAG=01-08-2025-v2
60
64
  WORKER_REGISTRY=
61
65
 
62
- AI_GATEWAY_TAG=01-07-2025
66
+ AI_GATEWAY_TAG=01-08-2025-v1
63
67
  AI_GATEWAY_REGISTRY=
64
68
 
65
- AGENT_GATEWAY_TAG=07-07-2025
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=24-06-2025-v1
72
- AMDDBTAG=24-06-2025-v1
73
- ARM64DBTAG=24-06-2025-v1
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=27-06-2025
80
+ UITAG=31-07-2025
77
81
 
78
82
  CM_REGISTRY=
79
- CM_TAG=27-06-2025
83
+ CM_TAG=24-07-2025
80
84
 
81
- TRM_TAG=08-07-2025
85
+ TRM_TAG=23-07-2025-3c60549f0bac275de3e5736265a3fd49cdd3a203
82
86
  TRM_REGISTRY=
83
87
 
84
- TR_TAG=08-07-2025
88
+ TR_TAG=23-07-2025-3c60549f0bac275de3e5736265a3fd49cdd3a203
85
89
  TR_REGISTRY=
86
90
 
87
- BUILDER_TAG=15-07-2025
91
+ BUILDER_TAG=31-07-2025-d7145cb
88
92
  BUILDER_REGISTRY=
89
93
 
90
- FLOW_RUNTIME_TAG=15-07-2025
94
+ FLOW_RUNTIME_TAG=01-08-2025
91
95
  FLOW_RUMTIME_REGISTRY=
92
96
 
93
97
 
94
- AGENT_ANALYTICS_TAG=02-07-2025-v1
98
+ AGENT_ANALYTICS_TAG=05-08-2025
95
99
  AGENT_ANALYTICS_REGISTRY=
96
100
 
97
- JAEGER_PROXY_TAG=01-07-2025
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=17-07-2025
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=20250610-183301-248-865fbc1
111
- DOCPROC_LLMSERVICE_TAG=20250604-192056-107-e1d4d66
112
- DOCPROC_CACHE_TAG=20250610-214940-68-f3258f4
113
- DOCPROC_DPI_TAG=20250702-000808-237-7b1e424d
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, File, DecisionsCondition, DecisionsRule
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
- "File",
19
+ "DocProcInput",
20
20
 
21
21
  "DocProcNode",
22
22
  "UserNode",
@@ -17,3 +17,5 @@ RESERVED = {
17
17
  ANY_USER,
18
18
  CURRENT_USER
19
19
  }
20
+
21
+