ibm-watsonx-orchestrate 1.6.0b0__py3-none-any.whl → 1.7.0a0__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 (37) hide show
  1. ibm_watsonx_orchestrate/__init__.py +1 -1
  2. ibm_watsonx_orchestrate/agent_builder/agents/agent.py +1 -0
  3. ibm_watsonx_orchestrate/agent_builder/agents/types.py +5 -1
  4. ibm_watsonx_orchestrate/agent_builder/agents/webchat_customizations/__init__.py +2 -0
  5. ibm_watsonx_orchestrate/agent_builder/agents/webchat_customizations/prompts.py +33 -0
  6. ibm_watsonx_orchestrate/agent_builder/agents/webchat_customizations/welcome_content.py +20 -0
  7. ibm_watsonx_orchestrate/agent_builder/connections/__init__.py +2 -2
  8. ibm_watsonx_orchestrate/agent_builder/connections/types.py +38 -31
  9. ibm_watsonx_orchestrate/agent_builder/tools/flow_tool.py +83 -0
  10. ibm_watsonx_orchestrate/agent_builder/tools/types.py +7 -1
  11. ibm_watsonx_orchestrate/cli/commands/agents/agents_controller.py +25 -14
  12. ibm_watsonx_orchestrate/cli/commands/channels/webchat/channels_webchat_controller.py +104 -21
  13. ibm_watsonx_orchestrate/cli/commands/connections/connections_command.py +26 -18
  14. ibm_watsonx_orchestrate/cli/commands/connections/connections_controller.py +55 -57
  15. ibm_watsonx_orchestrate/cli/commands/knowledge_bases/knowledge_bases_controller.py +2 -2
  16. ibm_watsonx_orchestrate/cli/commands/server/server_command.py +137 -10
  17. ibm_watsonx_orchestrate/cli/commands/toolkit/toolkit_controller.py +9 -3
  18. ibm_watsonx_orchestrate/cli/commands/tools/tools_controller.py +25 -12
  19. ibm_watsonx_orchestrate/client/agents/agent_client.py +74 -6
  20. ibm_watsonx_orchestrate/client/base_api_client.py +2 -1
  21. ibm_watsonx_orchestrate/client/connections/connections_client.py +18 -9
  22. ibm_watsonx_orchestrate/client/connections/utils.py +4 -2
  23. ibm_watsonx_orchestrate/client/local_service_instance.py +1 -1
  24. ibm_watsonx_orchestrate/client/service_instance.py +3 -3
  25. ibm_watsonx_orchestrate/client/tools/tempus_client.py +8 -3
  26. ibm_watsonx_orchestrate/client/utils.py +10 -0
  27. ibm_watsonx_orchestrate/docker/compose-lite.yml +400 -66
  28. ibm_watsonx_orchestrate/docker/default.env +44 -12
  29. ibm_watsonx_orchestrate/docker/proxy-config-single.yaml +12 -0
  30. ibm_watsonx_orchestrate/flow_builder/flows/flow.py +15 -5
  31. ibm_watsonx_orchestrate/flow_builder/utils.py +78 -48
  32. ibm_watsonx_orchestrate/run/connections.py +4 -4
  33. {ibm_watsonx_orchestrate-1.6.0b0.dist-info → ibm_watsonx_orchestrate-1.7.0a0.dist-info}/METADATA +1 -1
  34. {ibm_watsonx_orchestrate-1.6.0b0.dist-info → ibm_watsonx_orchestrate-1.7.0a0.dist-info}/RECORD +37 -32
  35. {ibm_watsonx_orchestrate-1.6.0b0.dist-info → ibm_watsonx_orchestrate-1.7.0a0.dist-info}/WHEEL +0 -0
  36. {ibm_watsonx_orchestrate-1.6.0b0.dist-info → ibm_watsonx_orchestrate-1.7.0a0.dist-info}/entry_points.txt +0 -0
  37. {ibm_watsonx_orchestrate-1.6.0b0.dist-info → ibm_watsonx_orchestrate-1.7.0a0.dist-info}/licenses/LICENSE +0 -0
@@ -1,7 +1,7 @@
1
1
  services:
2
- ########################
3
- # Orchestrate Lite dependencies
4
- ########################
2
+ ########################
3
+ # Orchestrate Lite dependencies
4
+ ########################
5
5
  wxo-server-redis:
6
6
  image: ${OPENSOURCE_REGISTRY_PROXY:-docker.io}/redis:7.2
7
7
  platform: linux/amd64
@@ -56,7 +56,7 @@ services:
56
56
  restart: unless-stopped
57
57
  ports:
58
58
  - "8787:8787"
59
- environment:
59
+ environment:
60
60
  WATSONX_API_KEY: ${WATSONX_APIKEY}
61
61
  WATSONX_URL: ${WATSONX_URL}
62
62
  WATSONX_SPACE_ID: ${WATSONX_SPACE_ID}
@@ -87,7 +87,7 @@ services:
87
87
  NODE_LOG_LEVEL: debug
88
88
  RABBITMQ_EXCHANGE: verdi_events_affinity
89
89
  SOCKET_PING_TIMEOUT: 20000
90
- WXO_DOMAIN_URL: http://localhost:4321
90
+ WXO_DOMAIN_URL: http://localhost:4321/api/v1
91
91
  IS_WXA_WEBCHAT: "true"
92
92
  NODE_OPTIONS: --max-http-header-size 32768
93
93
  PATH: /opt/app-root/src/node_modules/.bin/:/opt/app-root/src/.npm-global/bin/:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
@@ -115,13 +115,17 @@ services:
115
115
  platform: linux/amd64
116
116
  restart: unless-stopped
117
117
  environment:
118
- WXO_DEPLOYMENT_TYPE: 'laptop'
118
+ WXO_DEPLOYMENT_TYPE: "laptop"
119
119
  AGENT_RUNTIME_ENDPOINT: http://wxo-server:4321
120
120
  TEMPUS_RUNTIME_ENDPOINT: http://wxo-tempus-runtime:9044
121
121
  CONNECTIONS_MANAGER_ENDPOINT: http://wxo-server-connection-manager:3001
122
+ AGENT_OPS_API_KEY: ${AGENTOPS_API_KEY}
123
+ AGENTS_OPS_RUNTIME_ENDPOINT: https://host.docker.internal:8765
124
+ IS_OBSERVABILITY_FEATURE_ENABLED: "true"
125
+ ALLOW_INSECURE_TLS: "true"
122
126
  command: 'npm start'
123
127
  ports:
124
- - '4025:4025'
128
+ - "4025:4025"
125
129
  healthcheck:
126
130
  test: curl -k http://localhost:4025/api/health --fail
127
131
  interval: 5s
@@ -130,10 +134,9 @@ services:
130
134
 
131
135
  wxo-server-minio:
132
136
  image: ${OPENSOURCE_REGISTRY_PROXY:-docker.io}/minio/minio:latest
133
- platform: linux/amd64
134
137
  ports:
135
- - '9000:9000'
136
- - '9001:9001'
138
+ - "9000:9000"
139
+ - "9001:9001"
137
140
  healthcheck:
138
141
  test: timeout 5s bash -c ':> /dev/tcp/127.0.0.1/9000' || exit 1
139
142
  interval: 5s
@@ -148,7 +151,6 @@ services:
148
151
 
149
152
  wxo-server-minio-setup:
150
153
  image: ${OPENSOURCE_REGISTRY_PROXY:-docker.io}/minio/mc:latest
151
- platform: linux/amd64
152
154
  depends_on:
153
155
  wxo-server-minio:
154
156
  condition: service_healthy
@@ -157,14 +159,15 @@ services:
157
159
  /usr/bin/mc alias set wxo-server-minio http://wxo-server-minio:9000 ${MINIO_ROOT_USER:-minioadmin} ${MINIO_ROOT_PASSWORD:-watsonxorchestrate};
158
160
  /usr/bin/mc mb wxo-server-minio/wxo-server-storage-bucket;
159
161
  /usr/bin/mc mb wxo-server-minio/langfuse;
162
+ /usr/bin/mc anonymous set download wxo-server-minio/wxo-server-storage-bucket;
160
163
  exit 0;
161
164
  "
162
-
165
+
163
166
  wxo-milvus-standalone:
164
167
  image: ${OPENSOURCE_REGISTRY_PROXY:-docker.io}/milvusdb/milvus:v2.5.6
165
168
  command: ["milvus", "run", "standalone"]
166
169
  security_opt:
167
- - seccomp:unconfined
170
+ - seccomp:unconfined
168
171
  environment:
169
172
  ETCD_ENDPOINTS: wxo-milvus-etcd:2379
170
173
  MINIO_ADDRESS: wxo-server-minio:9000
@@ -200,7 +203,7 @@ services:
200
203
  interval: 30s
201
204
  timeout: 20s
202
205
  retries: 3
203
-
206
+
204
207
  socket-handler:
205
208
  image: ${SOCKET_HANDLER_REGISTRY:-us.icr.io/watson-orchestrate-private}/wxo-socket-handler:${SOCKET_HANDLER_TAG:-latest}
206
209
  platform: linux/amd64
@@ -223,31 +226,33 @@ services:
223
226
  volumes:
224
227
  - ./sdk:/packages
225
228
  - tools:/tools
226
-
227
229
  command: >
228
- bash -c '
229
- export PYTHONPATH="/tmp/monkey:$PYTHONPATH"
230
- mkdir -p /tmp/monkey &&
230
+ bash -c '
231
+ export PYTHONPATH="/tmp/monkey:$PYTHONPATH"
232
+ mkdir -p /tmp/monkey &&
231
233
 
232
- echo -e "from uvicorn.supervisors.multiprocess import Process\n_original_is_alive = Process.is_alive\ndef patched_is_alive(self, timeout: float = 30):\n return _original_is_alive(self, timeout=30)\nProcess.is_alive = patched_is_alive" > /tmp/monkey/sitecustomize.py &&
234
+ echo -e "from uvicorn.supervisors.multiprocess import Process\n_original_is_alive = Process.is_alive\ndef patched_is_alive(self, timeout: float = 30):\n return _original_is_alive(self, timeout=30)\nProcess.is_alive = patched_is_alive" > /tmp/monkey/sitecustomize.py &&
233
235
 
234
- uvicorn --host 0.0.0.0 --port 4321 --log-config /app/config/logs/log_conf.yaml --log-level debug --workers 5 wo_archer.api.main:app &
236
+ uvicorn --host 0.0.0.0 --port 4321 --log-config /app/config/logs/log_conf.yaml --log-level debug --workers 5 wo_archer.api.main:app &
235
237
 
236
- for i in {1..40}; do curl --silent --fail http://127.0.0.1:4321/health/alive && echo "[INFO] HTTP Service ready" && break || echo "[INFO] Waiting for HTTP service..." && sleep 10; done;
237
- curl --silent --fail http://127.0.0.1:4321/health/alive || (echo "[ERROR] HTTP service failed to start" && exit 1);
238
+ for i in {1..40}; do curl --silent --fail http://127.0.0.1:4321/health/alive && echo "[INFO] HTTP Service ready" && break || echo "[INFO] Waiting for HTTP service..." && sleep 10; done;
239
+ curl --silent --fail http://127.0.0.1:4321/health/alive || (echo "[ERROR] HTTP service failed to start" && exit 1);
238
240
 
239
- wait
240
- '
241
+ wait
242
+ '
241
243
  depends_on:
242
244
  wxo-server-redis:
243
- condition: service_started
245
+ condition: service_started
244
246
  wxo-server-db:
245
- condition: service_started
247
+ condition: service_started
246
248
  wxo-server-worker:
247
- condition: service_started
249
+ condition: service_started
248
250
  langfuse-worker:
249
- condition: service_started
250
- required: False
251
+ condition: service_started
252
+ required: False
253
+ networks:
254
+ - default
255
+ - jaeger-network
251
256
  environment:
252
257
  RUNTIME_MANAGER_API_KEY: ${RUNTIME_MANAGER_API_KEY:-testapikey}
253
258
  PIP_NO_CACHE_DIR:
@@ -260,9 +265,9 @@ services:
260
265
  CELERY_RESULT_BACKEND: redis://wxo-server-redis:6379/0
261
266
  FLOWER_URL: http://wxo-server-flower:5555
262
267
  DB_ENCRYPTION_KEY: thisisthedbencryptionkeyforlocaltestingonly
263
- STORAGE_S3_BUCKET: ${STORAGE_S3_BUCKET:-wxo-server-storage-bucket} # name of s3 bucket where you want to store objects
268
+ STORAGE_S3_BUCKET: ${STORAGE_S3_BUCKET:-wxo-server-storage-bucket} # name of s3 bucket where you want to store objects
264
269
  STORAGE_S3_ENDPOINT: http://wxo-server-minio:9000
265
- STORAGE_S3_FORCE_PATH_STYLE: 'true'
270
+ STORAGE_S3_FORCE_PATH_STYLE: "true"
266
271
  STORAGE_S3_REGION: us-east-1
267
272
  EVENT_BROKER_URL: redis://wxo-server-redis:6379/0
268
273
  AWS_ACCESS_KEY_ID: ${MINIO_ROOT_USER:-minioadmin}
@@ -270,13 +275,13 @@ services:
270
275
  ASSISTANT_LLM_MODEL_ID: ${ASSISTANT_LLM_MODEL_ID:-watsonx/ibm/granite-3-8b-instruct}
271
276
  ASSISTANT_LLM_API_KEY: ${ASSISTANT_LLM_API_KEY}
272
277
  ASSISTANT_LLM_API_BASE: ${ASSISTANT_LLM_API_BASE:-https://us-south.ml.cloud.ibm.com}
273
- ASSISTANT_LLM_SPACE_ID : ${ASSISTANT_LLM_SPACE_ID}
278
+ ASSISTANT_LLM_SPACE_ID: ${ASSISTANT_LLM_SPACE_ID}
274
279
  BAM_API_KEY: ${BAM_API_KEY}
275
280
  WXAI_API_KEY: ${WXAI_API_KEY}
276
281
  ROUTING_LLM_MODEL_ID: ${ROUTING_LLM_MODEL_ID:-watsonx/ibm/granite-8b-unified-api-model-v2}
277
282
  ROUTING_LLM_API_KEY: ${ROUTING_LLM_API_KEY}
278
283
  ROUTING_LLM_API_BASE: ${ROUTING_LLM_API_BASE:-https://us-south.ml.cloud.ibm.com}
279
- ROUTING_LLM_SPACE_ID : ${ROUTING_LLM_SPACE_ID}
284
+ ROUTING_LLM_SPACE_ID: ${ROUTING_LLM_SPACE_ID}
280
285
  ASSISTANT_EMBEDDINGS_MODEL_ID: ${ASSISTANT_EMBEDDINGS_MODEL_ID:-watsonx/ibm/slate-125m-english-rtrvr-v2}
281
286
  ASSISTANT_EMBEDDINGS_API_KEY: ${ASSISTANT_EMBEDDINGS_API_KEY}
282
287
  ASSISTANT_EMBEDDINGS_API_BASE: ${ASSISTANT_EMBEDDINGS_API_BASE:-https://us-south.ml.cloud.ibm.com}
@@ -305,7 +310,7 @@ services:
305
310
  CALLER_ID: 12345
306
311
  AGENTIC_FLOW_ENABLED: ${AGENTIC_FLOW_ENABLED}
307
312
  CELERY_WORKER_POOL: ${CELERY_WORKER_POOL}
308
- IS_WXO_LITE: 'TRUE'
313
+ IS_WXO_LITE: "TRUE"
309
314
  OAUTH_REDIRECT_URL: https://localhost:4322/api/v1/connections/callback
310
315
  ENABLE_WEBHOOKS: false
311
316
  DISABLE_JSON_LOG_CELERY: true
@@ -324,8 +329,13 @@ services:
324
329
  AUTHORIZATION_URL: ${AUTHORIZATION_URL}
325
330
  WO_AUTH_TYPE: ${WO_AUTH_TYPE}
326
331
  AI_GATEWAY_BASE_URL: ${AI_GATEWAY_BASE_URL}
327
- AI_GATEWAY_ENABLED : ${AI_GATEWAY_ENABLED}
328
-
332
+ AI_GATEWAY_ENABLED: ${AI_GATEWAY_ENABLED}
333
+ IBM_TELEMETRY_EXPORTER_TYPE: http
334
+ IBM_TELEMETRY_TRACER_ENDPOINT: http://jaeger:4318/v1/traces
335
+ USE_IBM_TELEMETRY: ${USE_IBM_TELEMETRY:-false}
336
+ AGENTOPS_API_KEY_AUTH_ENABLED: ${AGENTOPS_API_KEY_AUTH_ENABLED:-false}
337
+ AGENTOPS_API_KEY: ${AGENTOPS_API_KEY}
338
+ ES_HOST: http://elasticsearch:9200
329
339
 
330
340
  wxo-server-worker:
331
341
  image: ${WORKER_REGISTRY:-us.icr.io/watson-orchestrate-private}/wxo-server-conversation_controller:${WORKER_TAG:-latest}
@@ -333,20 +343,23 @@ services:
333
343
  restart: unless-stopped
334
344
  depends_on:
335
345
  wxo-server-redis:
336
- condition: service_started
346
+ condition: service_started
337
347
  wxo-server-db:
338
- condition: service_started
348
+ condition: service_started
339
349
  langfuse-worker:
340
- condition: service_started
341
- required: False
350
+ condition: service_started
351
+ required: False
342
352
  volumes:
343
353
  - ./sdk:/packages
344
354
  - tools:/tools
355
+ networks:
356
+ - default
357
+ - jaeger-network
345
358
  environment:
346
359
  RUNTIME_MANAGER_API_KEY: ${RUNTIME_MANAGER_API_KEY:-testapikey}
347
360
  AI_GATEWAY_ENABLED : ${AI_GATEWAY_ENABLED}
348
361
  AI_GATEWAY_BASE_URL: ${AI_GATEWAY_BASE_URL}
349
- IS_WXO_LITE: 'TRUE'
362
+ IS_WXO_LITE: "TRUE"
350
363
  TRM_BASE_URL: http://tools-runtime-manager:8080
351
364
  AGENT_STEP_DETAILS: redis://wxo-server-redis:6379/0
352
365
  AGENT_GATEWAY_URI: http://wxo-agent-gateway:8989
@@ -354,9 +367,9 @@ services:
354
367
  POSTGRES_URL: postgresql://${POSTGRES_USER:-postgres}:${POSTGRES_PASSWORD:-postgres}@wxo-server-db:5432/postgres
355
368
  CELERY_BROKER_URL: redis://wxo-server-redis:6379/0
356
369
  CELERY_RESULT_BACKEND: redis://wxo-server-redis:6379/0
357
- STORAGE_S3_BUCKET: ${STORAGE_S3_BUCKET:-wxo-server-storage-bucket} # name of s3 bucket where you want to store objects
370
+ STORAGE_S3_BUCKET: ${STORAGE_S3_BUCKET:-wxo-server-storage-bucket} # name of s3 bucket where you want to store objects
358
371
  STORAGE_S3_ENDPOINT: http://wxo-server-minio:9000
359
- STORAGE_S3_FORCE_PATH_STYLE: 'true'
372
+ STORAGE_S3_FORCE_PATH_STYLE: "true"
360
373
  STORAGE_S3_REGION: us-east-1
361
374
  EVENT_BROKER_URL: redis://wxo-server-redis:6379/0
362
375
  DB_ENCRYPTION_KEY: thisisthedbencryptionkeyforlocaltestingonly
@@ -365,11 +378,11 @@ services:
365
378
  ASSISTANT_LLM_MODEL_ID: ${ASSISTANT_LLM_MODEL_ID:-watsonx/ibm/granite-3-8b-instruct}
366
379
  ASSISTANT_LLM_API_KEY: ${ASSISTANT_LLM_API_KEY}
367
380
  ASSISTANT_LLM_API_BASE: ${ASSISTANT_LLM_API_BASE:-https://us-south.ml.cloud.ibm.com}
368
- ASSISTANT_LLM_SPACE_ID : ${ASSISTANT_LLM_SPACE_ID}
381
+ ASSISTANT_LLM_SPACE_ID: ${ASSISTANT_LLM_SPACE_ID}
369
382
  ROUTING_LLM_MODEL_ID: ${ROUTING_LLM_MODEL_ID:-watsonx/ibm/granite-8b-unified-api-model-v2}
370
383
  ROUTING_LLM_API_KEY: ${ROUTING_LLM_API_KEY}
371
384
  ROUTING_LLM_API_BASE: ${ROUTING_LLM_API_BASE:-https://us-south.ml.cloud.ibm.com}
372
- ROUTING_LLM_SPACE_ID : ${ROUTING_LLM_SPACE_ID}
385
+ ROUTING_LLM_SPACE_ID: ${ROUTING_LLM_SPACE_ID}
373
386
  ASSISTANT_EMBEDDINGS_MODEL_ID: ${ASSISTANT_EMBEDDINGS_MODEL_ID:-watsonx/ibm/slate-125m-english-rtrvr-v2}
374
387
  ASSISTANT_EMBEDDINGS_API_KEY: ${ASSISTANT_EMBEDDINGS_API_KEY}
375
388
  ASSISTANT_EMBEDDINGS_API_BASE: ${ASSISTANT_EMBEDDINGS_API_BASE:-https://us-south.ml.cloud.ibm.com}
@@ -415,8 +428,11 @@ services:
415
428
  USE_SAAS_ML_TOOLS_RUNTIME: ${USE_SAAS_ML_TOOLS_RUNTIME}
416
429
  AUTHORIZATION_URL: ${AUTHORIZATION_URL}
417
430
  WO_AUTH_TYPE: ${WO_AUTH_TYPE}
431
+ IBM_TELEMETRY_EXPORTER_TYPE: http
432
+ IBM_TELEMETRY_TRACER_ENDPOINT: http://jaeger:4318/v1/traces
433
+ USE_IBM_TELEMETRY: ${USE_IBM_TELEMETRY:-false}
418
434
  WXO_DEPLOYMENT_PLATFORM: saas
419
- CALLBACK_HOST_URL: http://wxo-server:4321
435
+ CALLBACK_HOST_URL: ${CALLBACK_HOST_URL:-http://wxo-server:4321}
420
436
 
421
437
  tools-runtime-manager:
422
438
  image: ${TRM_REGISTRY:-us.icr.io/watson-orchestrate-private}/tools-runtime-manager:${TRM_TAG:-latest}
@@ -426,20 +442,20 @@ services:
426
442
  - "8080:8080"
427
443
  depends_on:
428
444
  wxo-server-db:
429
- condition: service_healthy # Ensures DB is ready before starting
445
+ condition: service_healthy # Ensures DB is ready before starting
430
446
  volumes:
431
447
  - $HOME/.kube/config:/root/.kube/config
432
448
  - tools-runtime-data:/shared-data
433
449
  environment:
434
450
  RUNTIME_MANAGER_API_KEY: ${RUNTIME_MANAGER_API_KEY:-testapikey}
435
451
  KUBECONFIG: /root/.kube/config
436
- K8S_SERVER: "https://lima-rancher-desktop:6443" # Kubernetes API on host
452
+ K8S_SERVER: "https://lima-rancher-desktop:6443" # Kubernetes API on host
437
453
  DB_HOST: wxo-server-db
438
- DB_PORT: ${DB_PORT:-5432} # Ensure default port
454
+ DB_PORT: ${DB_PORT:-5432} # Ensure default port
439
455
  DB_USER: ${DB_USER:-postgres}
440
456
  DB_PASSWORD: ${DB_PASSWORD:-postgres}
441
457
  DB_NAME: ${DB_NAME:-postgres}
442
- DB_SSLMODE: ${DB_SSLMODE:-disable} # Disable SSL if not configured
458
+ DB_SSLMODE: ${DB_SSLMODE:-disable} # Disable SSL if not configured
443
459
  DB_CONN_LIFE: ${DB_CONN_LIFE}
444
460
  DB_MAX_IDLE_CONN: ${DB_MAX_IDLE_CONN}
445
461
  DB_MAX_CONN: ${DB_MAX_CONN}
@@ -452,9 +468,9 @@ services:
452
468
  VOLUME_MOUNT_PATH: "/shared-data"
453
469
  TOOLS_RUNTIME_MANAGER_BASE_URL: ${TOOLS_RUNTIME_MANAGER_BASE_URL}
454
470
  CONNECTION_SERVICE_BASE_URL: http://wxo-server-connection-manager:3001
455
- STORAGE_S3_BUCKET: ${STORAGE_S3_BUCKET:-wxo-server-storage-bucket}
471
+ STORAGE_S3_BUCKET: ${STORAGE_S3_BUCKET:-wxo-server-storage-bucket}
456
472
  STORAGE_S3_ENDPOINT: http://wxo-server-minio:9000
457
- STORAGE_S3_FORCE_PATH_STYLE: 'true'
473
+ STORAGE_S3_FORCE_PATH_STYLE: "true"
458
474
  STORAGE_S3_REGION: us-east-1
459
475
  AWS_ACCESS_KEY_ID: ${MINIO_ROOT_USER:-minioadmin}
460
476
  AWS_SECRET_ACCESS_KEY: ${MINIO_ROOT_PASSWORD:-watsonxorchestrate}
@@ -479,21 +495,163 @@ services:
479
495
  RUNTIME_MANAGER_API_KEY: ${RUNTIME_MANAGER_API_KEY:-testapikey}
480
496
  TOOLS_RUNTIME_MANAGER_BASE_URL: ${TOOLS_RUNTIME_MANAGER_BASE_URL}
481
497
  DB_HOST: wxo-server-db
482
- DB_PORT: ${DB_PORT:-5432} # Ensure default port
498
+ DB_PORT: ${DB_PORT:-5432} # Ensure default port
483
499
  DB_USER: ${DB_USER:-postgres}
484
500
  DB_PASSWORD: ${DB_PASSWORD:-postgres}
485
501
  DB_NAME: ${DB_NAME:-postgres}
486
- DB_SSLMODE: ${DB_SSLMODE:-disable} # Disable SSL if not configured
487
- STORAGE_S3_BUCKET: ${STORAGE_S3_BUCKET:-wxo-server-storage-bucket}
502
+ DB_SSLMODE: ${DB_SSLMODE:-disable} # Disable SSL if not configured
503
+ STORAGE_S3_BUCKET: ${STORAGE_S3_BUCKET:-wxo-server-storage-bucket}
488
504
  STORAGE_S3_ENDPOINT: http://wxo-server-minio:9000
489
- STORAGE_S3_FORCE_PATH_STYLE: 'true'
505
+ STORAGE_S3_FORCE_PATH_STYLE: "true"
490
506
  STORAGE_S3_REGION: us-east-1
491
507
  AWS_ACCESS_KEY_ID: ${MINIO_ROOT_USER:-minioadmin}
492
508
  AWS_SECRET_ACCESS_KEY: ${MINIO_ROOT_PASSWORD:-watsonxorchestrate}
493
509
 
494
- ########################
495
- # LANGFUSE dependencies
496
- ########################
510
+ ########################
511
+ # IBM AGENT-OPS
512
+ ########################
513
+ elasticsearch:
514
+ image: docker.elastic.co/elasticsearch/elasticsearch:8.17.5
515
+ profiles: [ibm-telemetry]
516
+ environment:
517
+ - discovery.type=single-node
518
+ - xpack.security.enabled=true
519
+ - ES_JAVA_OPTS=-Xms512m -Xmx512m
520
+ - ELASTIC_USERNAME=elastic
521
+ - ELASTIC_PASSWORD=changeme
522
+ # Turn off disk threshold warnings
523
+ - cluster.routing.allocation.disk.threshold_enabled=false
524
+ ports:
525
+ - "9200:9200"
526
+ networks:
527
+ - jaeger-network
528
+ volumes:
529
+ - es_data:/usr/share/elasticsearch/data
530
+ healthcheck:
531
+ test:
532
+ [
533
+ "CMD-SHELL",
534
+ "curl -s -u elastic:changeme http://localhost:9200/_cluster/health | grep -q '\"status\":\"green\"\\|\"status\":\"yellow\"'",
535
+ ]
536
+ interval: 10s
537
+ timeout: 10s
538
+ retries: 20
539
+ start_period: 40s
540
+
541
+ jaeger-proxy:
542
+ image: ${JAEGER_PROXY_REGISTRY:-us.icr.io/watson-orchestrate-private}/jaeger-proxy:${JAEGER_PROXY_TAG:-latest} # temporay registry
543
+ profiles: [ibm-telemetry]
544
+ environment:
545
+ - TENANT_API_KEY=${AGENTOPS_API_KEY}
546
+ - TENANT_CONFIG_URL=http://wxo-server:4321
547
+ - TENANT_DEFAULT_USERNAME=${ES_USERNAME}
548
+ - TENANT_DEFAULT_PASSWORD=${ES_PASSWORD}
549
+ - TENANT_DEFAULT_HOSTNAME=http://elasticsearch:9200
550
+ - DEFAULT_TENANT_ID=${DEFAULT_TENANT_ID}
551
+ ports:
552
+ - "9202:9201" # Expose proxy on host port 9202
553
+ networks:
554
+ - jaeger-network
555
+ - default
556
+ volumes:
557
+ - ./proxy-config-single.yaml:/app/config/proxy-config.yaml:ro
558
+ depends_on:
559
+ elasticsearch:
560
+ condition: service_healthy
561
+ healthcheck:
562
+ test: ["CMD", "python", "-c", "import requests; requests.get('http://localhost:9201/health').raise_for_status()"]
563
+ interval: 10s
564
+ timeout: 5s
565
+ retries: 5
566
+ start_period: 10s
567
+
568
+ jaeger:
569
+ image: ${OPENSOURCE_REGISTRY_PROXY:-docker.io}/jaegertracing/all-in-one:1.69.0
570
+ profiles: [ibm-telemetry]
571
+ command:
572
+ - "--es.max-span-age=720h"
573
+ - "--log-level=debug"
574
+ # - "--sampling.default-sampling-probability=1.0" # Changed from default 0.001
575
+ environment:
576
+ - SPAN_STORAGE_TYPE=elasticsearch
577
+ - ES_SERVER_URLS=http://jaeger-proxy:9201
578
+ - ES_USERNAME=elastic
579
+ - ES_PASSWORD=changeme
580
+ - JAEGER_SAMPLER_TYPE=const
581
+ - JAEGER_SAMPLER_PARAM=1
582
+ ports:
583
+ - "6831:6831/udp"
584
+ - "6832:6832/udp"
585
+ - "5778:5778"
586
+ - "16686:16686"
587
+ - "4317:4317"
588
+ - "4318:4318"
589
+ - "14250:14250"
590
+ - "14268:14268"
591
+ - "14269:14269"
592
+ healthcheck:
593
+ test: ["CMD", "wget", "--spider", "-q", "http://localhost:14269"]
594
+ interval: 1s
595
+ timeout: 3s
596
+ retries: 30
597
+ start_period: 5s
598
+ depends_on:
599
+ elasticsearch:
600
+ condition: service_healthy
601
+ jaeger-proxy:
602
+ condition: service_healthy
603
+ networks:
604
+ - jaeger-network
605
+
606
+ frontend-server:
607
+ image: ${AGENT_ANALYTICS_REGISTRY:-us.icr.io/watson-orchestrate-private}/agentops-backend:${AGENT_ANALYTICS_TAG:-latest}
608
+ profiles: [ibm-telemetry]
609
+ restart: always
610
+ healthcheck:
611
+ test:
612
+ [
613
+ "CMD",
614
+ "python",
615
+ "-c",
616
+ "import urllib.request, ssl; context = ssl._create_unverified_context(); urllib.request.urlopen('https://localhost:443', context=context)",
617
+ ]
618
+ interval: 30s
619
+ timeout: 10s
620
+ retries: 5
621
+ start_period: 20s
622
+ depends_on:
623
+ jaeger:
624
+ condition: service_healthy
625
+ environment:
626
+ - TEST=true
627
+ - ES_USERNAME=elastic
628
+ - ES_PASSWORD=changeme
629
+ - ES_HOST=http://elasticsearch:9200
630
+ - JWT_SECRET_KEY=${JWT_SECRET}
631
+ - JAEGER_URL=http://jaeger:16686
632
+ - JAEGER_COLLECT_URL=http://jaeger
633
+ - WATSONX_APIKEY=${WATSONX_APIKEY}
634
+ - WATSONX_SPACE_ID=${WATSONX_SPACE_ID}
635
+ - WATSONX_URL=${WATSONX_URL}
636
+ - PROXY_SERVER_URL=http://jaeger-proxy:9201
637
+ - WXO_DEPLOYMENT_PLATFORM=saas
638
+ - TENANT_API_KEY=${AGENTOPS_API_KEY}
639
+ - TENANT_CONFIG_URL=http://wxo-server:4321
640
+ - TENANT_DEFAULT_USERNAME=${ES_USERNAME}
641
+ - TENANT_DEFAULT_PASSWORD=${ES_PASSWORD}
642
+ - API_KEY_AUTH_ENABLED=${AGENTOPS_API_KEY_AUTH_ENABLED}
643
+ - INBOUND_API_KEY=${AGENTOPS_API_KEY}
644
+ - DEFAULT_TENANT_ID=${DEFAULT_TENANT_ID}
645
+ - TENANT_DEFAULT_HOSTNAME=http://elasticsearch:9200
646
+ ports:
647
+ - "8765:443"
648
+ networks:
649
+ - jaeger-network
650
+ - default
651
+
652
+ ########################
653
+ # LANGFUSE dependencies
654
+ ########################
497
655
  langfuse-worker:
498
656
  image: ${OPENSOURCE_REGISTRY_PROXY:-docker.io}/langfuse/langfuse-worker:3
499
657
  restart: unless-stopped
@@ -583,9 +741,6 @@ services:
583
741
  retries: 10
584
742
  start_period: 1s
585
743
 
586
-
587
-
588
-
589
744
  wxo-tempus-runtime:
590
745
  image: ${FLOW_RUMTIME_REGISTRY:-us.icr.io/watson-orchestrate-private}/wxo-tempus-runtime:${FLOW_RUNTIME_TAG:-latest}
591
746
  restart: unless-stopped
@@ -622,10 +777,15 @@ services:
622
777
  REDIS_TLS: false
623
778
  LANGFUSE_ENABLED: ${LANGFUSE_ENABLED:-false}
624
779
  LANGFUSE_HOST: ${LANGFUSE_HOST:-http://langfuse-web:3000}
625
- LANGFUSE_PUBLIC_KEY: ${LANGFUSE_PUBLIC_KEY:-pk-lf-7417757e-d6df-421b-957e-683b76acb5df}
626
- LANGFUSE_SECRET_KEY: ${LANGFUSE_PRIVATE_KEY:-sk-lf-7bc4da63-7b2b-40c0-b5eb-1e0cf64f9af2}
780
+ LANGFUSE_PUBLIC_KEY: ${LANGFUSE_PUBLIC_KEY:-pk-lf-7417757e-d6df-421b-957e-683b76acb5df}
781
+ LANGFUSE_SECRET_KEY: ${LANGFUSE_PRIVATE_KEY:-sk-lf-7bc4da63-7b2b-40c0-b5eb-1e0cf64f9af2}
627
782
  LOG_LEVEL: info
628
783
  DISABLE_FLOW_BINDING: true
784
+ DOCPROC_ENABLED: ${DOCPROC_ENABLED:-false}
785
+ WO_API_KEY: ${WO_API_KEY}
786
+ WO_INSTANCE: ${WO_INSTANCE}
787
+ AUTHORIZATION_URL: ${AUTHORIZATION_URL}
788
+ WO_AUTH_TYPE: ${WO_AUTH_TYPE}
629
789
  healthcheck:
630
790
  test: curl -k http://localhost:9044/readiness --fail
631
791
  interval: 5s
@@ -635,7 +795,170 @@ services:
635
795
  - 9044:9044
636
796
  depends_on:
637
797
  - wxo-server-db
638
-
798
+
799
+ ########################
800
+ # DOCPROC dependencies
801
+ # DPS - 18081
802
+ # DPI - 19080 / 19443
803
+ # WDU - 18082
804
+ # WDU (Prometheus) - 18086
805
+ # DPS Cache - 18083
806
+ # LLM Service - 18084
807
+ ########################
808
+
809
+ wxo-doc-processing-service:
810
+ image: ${DOCPROC_REGISTRY:-us.icr.io/watson-orchestrate-private}/document-processing/wo_doc_processing_service:${DOCPROC_DPS_TAG:-20250606-172035-246-4191121}
811
+ platform: linux/amd64
812
+ restart: unless-stopped
813
+ environment:
814
+ SERVICE_NAME: wxo-doc-processing-service
815
+ LOG_LEVEL: info
816
+ VERIFY_CLIENT_CERT: 0
817
+ SERVICE_URL: ${SERVICE_URL:-https://wxo-doc-processing-cache:8080}
818
+ RATE_LIMITING_ENABLED: "false"
819
+ SHOULD_CACHE_IMAGES: "false"
820
+ HANDWRITING_ENABLED: "true"
821
+ WDU_RUNTIME_URL: wdu-runtime:8080
822
+ WDU_TIMEOUT_SECS: "180"
823
+ IBM_DPS_CACHE_SERVICE: https://wxo-doc-processing-cache:8080
824
+ profiles:
825
+ - docproc
826
+ # depends_on:
827
+ # wxo-doc-processing-cache:
828
+ # condition: service_healthy
829
+ ports:
830
+ - "18081:8080"
831
+ healthcheck:
832
+ test: ["CMD-SHELL", "curl -fk https://localhost:8080/ping"]
833
+ interval: 30s
834
+ timeout: 30s
835
+ retries: 10
836
+
837
+ wdu-runtime:
838
+ image: ${WDU_REGISTRY:-us.icr.io/watson-orchestrate-private}/document-processing/wdu-runtime:${WDU_TAG:-2.4.0}
839
+ platform: linux/amd64
840
+ restart: unless-stopped
841
+ environment:
842
+ MEMORY_MINIMAL: "true"
843
+ PREFLIGHT_MAX_SIZE: 10Mb
844
+ PREFLIGHT_MAX_PAGES: 600
845
+ RUNTIME_LIBRARY: "watson_doc_understanding"
846
+ profiles:
847
+ - docproc
848
+ ports:
849
+ - "18082:8080"
850
+ - "18086:8086"
851
+ volumes:
852
+ - "wdu-models:/models"
853
+ - "wdu-prometheus-files:/prometheus/"
854
+ tmpfs:
855
+ - "/dev/shm"
856
+ healthcheck:
857
+ test: ["CMD-SHELL", "/app/check_heartbeat.sh /tmp/heartbeat.txt 120"]
858
+ interval: 30s
859
+ timeout: 30s
860
+ retries: 10
861
+ depends_on:
862
+ wdu-model-copy:
863
+ condition: service_completed_successfully
864
+
865
+ wdu-model-copy:
866
+ image: ${WDU_REGISTRY:-us.icr.io/watson-orchestrate-private}/document-processing/wdu-runtime:${WDU_TAG:-2.4.0}
867
+ platform: linux/amd64
868
+ user: root
869
+ profiles:
870
+ - docproc
871
+ environment:
872
+ DEST_FOLDER: "/app/models"
873
+ volumes:
874
+ - "wdu-models:/app/models"
875
+ - "wdu-prometheus-files:/prometheus/"
876
+ tmpfs:
877
+ - "/dev/shm"
878
+
879
+ wxo-doc-processing-infra-standalone:
880
+ image: ${DOCPROC_REGISTRY:-us.icr.io/watson-orchestrate-private}/document-processing/wo-doc-processing-infra-standalone:${DOCPROC_DPI_TAG:-2025-06-13-dev-1}
881
+ platform: linux/amd64
882
+ profiles:
883
+ - docproc
884
+ environment:
885
+ PGHOST: wxo-server-db
886
+ PGPORT: "5432"
887
+ PGUSER: ${POSTGRES_USER:-postgres}
888
+ PGPASSWORD: ${POSTGRES_PASSWORD:-postgres}
889
+ PGDATABASE: wxo-document-processing-dpi
890
+ PGURL: "jdbc:postgresql://localhost:5432/wxo-document-processing-dpi?user=${POSTGRES_USER:-postgres}&password=${POSTGRES_PASSWORD:-postgres}"
891
+ USE_PGBOUNCER: "false"
892
+ S3_ACCESS_KEY: ${MINIO_ROOT_USER:-minioadmin}
893
+ S3_SECRET_KEY: ${MINIO_ROOT_PASSWORD:-watsonxorchestrate}
894
+ S3_ENDPOINT_URL: http://wxo-server-minio:9000
895
+ BUCKET_NAME_DEFAULT: wxo-document-processing-dpi-common
896
+ S3_FILERESOURCE_BUCKET: ${BUCKET_NAME_DEFAULT:-wxo-document-processing-dpi}
897
+ # S3_TLS_ENABLED: "true"
898
+ ENRICHMENT_BATCH_SIZE: "1000"
899
+ CIPHER_AES_REALM_KEY: "dGVzdHRlc3R0ZXN0dGVzdA=="
900
+ SIDECAR_METERED_ENABLED: "false"
901
+ DPI_DEBUG: true
902
+ DPI_WO_WDU_SERVER_ENDPOINT: https://wxo-doc-processing-service:8080
903
+ # DPI_RAG_SERVER_ENDPOINT: https://wxo-doc-processing-llm-service:8083
904
+ DISABLE_TLS: true
905
+ depends_on:
906
+ wxo-doc-processing-dpi-minio-init:
907
+ condition: service_completed_successfully
908
+ wxo-doc-processing-infra-pg-init:
909
+ condition: service_completed_successfully
910
+ wxo-doc-processing-service:
911
+ condition: service_healthy
912
+ # wxo-doc-processing-llm-service:
913
+ # condition: service_healthy
914
+ ports:
915
+ - 19080:9080
916
+ - 19443:9443
917
+ healthcheck:
918
+ test: ["CMD-SHELL", "HEALTHCHECK_URL=http://localhost:9080/dps/v1/health /healthcheck-all.sh all"]
919
+ interval: 30s
920
+ timeout: 30s
921
+ retries: 10
922
+
923
+ wxo-doc-processing-infra-pg-init:
924
+ 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}
925
+ platform: linux/amd64
926
+ environment:
927
+ PGHOST: wxo-server-db
928
+ PGPORT: "5432"
929
+ PGUSER: ${POSTGRES_USER:-postgres}
930
+ PGPASSWORD: ${POSTGRES_PASSWORD:-postgres}
931
+ PGDATABASE: wxo-document-processing-dpi
932
+ PGURL: "jdbc:postgresql://localhost:5432/wxo-document-processing-dpi?user=${POSTGRES_USER:-postgres}&password=${POSTGRES_PASSWORD:-postgres}"
933
+ USE_PGBOUNCER: "false"
934
+ entrypoint: /liquibase-init.sh
935
+ - pgbouncer
936
+ profiles:
937
+ - docproc
938
+ depends_on:
939
+ wxo-server-db:
940
+ condition: service_started
941
+ healthcheck:
942
+ test: ["CMD-SHELL", "psql -h localhost -U ${POSTGRES_USER:-postgres} -d ${POSTGRES_PASSWORD:-postgres}"]
943
+ interval: 1s
944
+ timeout: 5s
945
+ retries: 50
946
+
947
+ wxo-doc-processing-dpi-minio-init:
948
+ image: ${OPENSOURCE_REGISTRY_PROXY:-docker.io}/minio/mc:latest
949
+ platform: linux/amd64
950
+ profiles:
951
+ - docproc
952
+ depends_on:
953
+ wxo-server-minio:
954
+ condition: service_healthy
955
+ entrypoint: >
956
+ /bin/sh -c "
957
+ /usr/bin/mc alias set wxo-server-minio http://wxo-server-minio:9000 ${MINIO_ROOT_USER:-minioadmin} ${MINIO_ROOT_PASSWORD:-watsonxorchestrate};
958
+ /usr/bin/mc mb wxo-server-minio/wxo-document-processing-dpi;
959
+ exit 0;
960
+ "
961
+
639
962
  volumes:
640
963
  tools:
641
964
  driver: local
@@ -659,7 +982,18 @@ volumes:
659
982
  driver: local
660
983
  langfuse_clickhouse_logs:
661
984
  driver: local
985
+ wdu-prometheus-files:
986
+ driver: local
987
+ driver_opts:
988
+ type: tmpfs
989
+ device: tmpfs
990
+ o: "uid=1000,gid=1000,mode=1777"
991
+ wdu-models:
992
+ driver: local
993
+ es_data:
994
+
662
995
  networks:
663
996
  default:
664
997
  name: wxo-server
665
-
998
+ jaeger-network:
999
+ driver: bridge