ibm-watsonx-orchestrate 1.12.0b0__py3-none-any.whl → 1.12.0b1__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 (23) hide show
  1. ibm_watsonx_orchestrate/__init__.py +1 -1
  2. ibm_watsonx_orchestrate/agent_builder/agents/types.py +5 -5
  3. ibm_watsonx_orchestrate/agent_builder/models/types.py +1 -0
  4. ibm_watsonx_orchestrate/agent_builder/toolkits/base_toolkit.py +1 -1
  5. ibm_watsonx_orchestrate/agent_builder/tools/base_tool.py +1 -1
  6. ibm_watsonx_orchestrate/agent_builder/tools/openapi_tool.py +6 -0
  7. ibm_watsonx_orchestrate/cli/commands/agents/agents_controller.py +2 -2
  8. ibm_watsonx_orchestrate/cli/commands/connections/connections_controller.py +2 -2
  9. ibm_watsonx_orchestrate/cli/commands/models/model_provider_mapper.py +23 -4
  10. ibm_watsonx_orchestrate/cli/commands/partners/partners_command.py +1 -1
  11. ibm_watsonx_orchestrate/cli/commands/server/server_command.py +11 -3
  12. ibm_watsonx_orchestrate/cli/commands/toolkit/toolkit_command.py +2 -2
  13. ibm_watsonx_orchestrate/docker/compose-lite.yml +56 -6
  14. ibm_watsonx_orchestrate/docker/default.env +19 -16
  15. ibm_watsonx_orchestrate/flow_builder/flows/decorators.py +8 -2
  16. ibm_watsonx_orchestrate/flow_builder/flows/flow.py +31 -7
  17. ibm_watsonx_orchestrate/flow_builder/node.py +1 -1
  18. ibm_watsonx_orchestrate/flow_builder/types.py +18 -3
  19. {ibm_watsonx_orchestrate-1.12.0b0.dist-info → ibm_watsonx_orchestrate-1.12.0b1.dist-info}/METADATA +1 -1
  20. {ibm_watsonx_orchestrate-1.12.0b0.dist-info → ibm_watsonx_orchestrate-1.12.0b1.dist-info}/RECORD +23 -23
  21. {ibm_watsonx_orchestrate-1.12.0b0.dist-info → ibm_watsonx_orchestrate-1.12.0b1.dist-info}/WHEEL +0 -0
  22. {ibm_watsonx_orchestrate-1.12.0b0.dist-info → ibm_watsonx_orchestrate-1.12.0b1.dist-info}/entry_points.txt +0 -0
  23. {ibm_watsonx_orchestrate-1.12.0b0.dist-info → ibm_watsonx_orchestrate-1.12.0b1.dist-info}/licenses/LICENSE +0 -0
@@ -5,7 +5,7 @@
5
5
 
6
6
  pkg_name = "ibm-watsonx-orchestrate"
7
7
 
8
- __version__ = "1.12.0b0"
8
+ __version__ = "1.12.0b1"
9
9
 
10
10
 
11
11
  from ibm_watsonx_orchestrate.utils.logging.logger import setup_logging
@@ -88,7 +88,7 @@ class BaseAgentSpec(BaseModel):
88
88
  dumped = self.model_dump(mode='json', exclude_unset=True, exclude_none=True)
89
89
  with open(file, 'w') as f:
90
90
  if file.endswith('.yaml') or file.endswith('.yml'):
91
- yaml.dump(dumped, f, sort_keys=False)
91
+ yaml.dump(dumped, f, sort_keys=False, allow_unicode=True)
92
92
  elif file.endswith('.json'):
93
93
  json.dump(dumped, f, indent=2)
94
94
  else:
@@ -219,8 +219,8 @@ def validate_agent_fields(values: dict) -> dict:
219
219
  # ===============================
220
220
 
221
221
  class ExternalAgentConfig(BaseModel):
222
- hidden: bool = False
223
- enable_cot: bool = False
222
+ hidden: Optional[bool] = False
223
+ enable_cot: Optional[bool] = False
224
224
 
225
225
  class ExternalAgentSpec(BaseAgentSpec):
226
226
  model_config = ConfigDict(arbitrary_types_allowed=True)
@@ -243,8 +243,8 @@ class ExternalAgentSpec(BaseAgentSpec):
243
243
  # The get api responds with a flat object with no config
244
244
  if values.get("config") is None:
245
245
  values["config"] = {}
246
- values["config"]["enable_cot"] = values.get("enable_cot", None)
247
- values["config"]["hidden"] = values.get("hidden", None)
246
+ values["config"]["enable_cot"] = values.get("enable_cot", False)
247
+ values["config"]["hidden"] = values.get("hidden", False)
248
248
  return validate_external_agent_fields(values)
249
249
 
250
250
  @model_validator(mode="after")
@@ -23,6 +23,7 @@ class ModelProvider(str, Enum):
23
23
  STABILITY_AI = 'stability-ai'
24
24
  TOGETHER_AI = 'together-ai'
25
25
  WATSONX = 'watsonx'
26
+ X_AI='x-ai'
26
27
 
27
28
  def __str__(self):
28
29
  return self.value
@@ -18,7 +18,7 @@ class BaseToolkit:
18
18
  dumped = self.__toolkit_spec__.model_dump(mode='json', exclude_unset=True, exclude_none=True, by_alias=True)
19
19
  with open(file, 'w') as f:
20
20
  if file.endswith('.yaml') or file.endswith('.yml'):
21
- yaml.dump(dumped, f)
21
+ yaml.dump(dumped, f, allow_unicode=True)
22
22
  elif file.endswith('.json'):
23
23
  json.dump(dumped, f, indent=2)
24
24
  else:
@@ -19,7 +19,7 @@ class BaseTool:
19
19
  dumped = self.__tool_spec__.model_dump(mode='json', exclude_unset=True, exclude_none=True, by_alias=True)
20
20
  with open(file, 'w') as f:
21
21
  if file.endswith('.yaml') or file.endswith('.yml'):
22
- yaml.dump(dumped, f)
22
+ yaml.dump(dumped, f, allow_unicode=True)
23
23
  elif file.endswith('.json'):
24
24
  json.dump(dumped, f, indent=2)
25
25
  else:
@@ -80,6 +80,7 @@ def create_openapi_json_tool(
80
80
  http_success_response_code: int = 200,
81
81
  http_response_content_type='application/json',
82
82
  name: str = None,
83
+ display_name: str = None,
83
84
  description: str = None,
84
85
  permission: ToolPermission = None,
85
86
  input_schema: ToolRequestBody = None,
@@ -130,8 +131,10 @@ def create_openapi_json_tool(
130
131
  raise BadRequest(
131
132
  f"No description provided for tool. {http_method}: {http_path} did not specify a description field, and no description was provided")
132
133
 
134
+ spec_display_name = display_name if display_name else route_spec.get('summary')
133
135
  spec = ToolSpec(
134
136
  name=spec_name,
137
+ display_name=spec_display_name,
135
138
  description=spec_description,
136
139
  permission=spec_permission
137
140
  )
@@ -348,6 +351,7 @@ async def create_openapi_json_tool_from_uri(
348
351
  http_response_content_type='application/json',
349
352
  permission: ToolPermission = ToolPermission.READ_ONLY,
350
353
  name: str = None,
354
+ display_name: str = None,
351
355
  description: str = None,
352
356
  input_schema: ToolRequestBody = None,
353
357
  output_schema: ToolResponseBody = None,
@@ -362,6 +366,7 @@ async def create_openapi_json_tool_from_uri(
362
366
  :param http_success_response_code: Which http status code should be considered a successful call (defaults to 200)
363
367
  :param http_response_content_type: Which http response type should be considered successful (default to application/json)
364
368
  :param name: The name of the resulting tool (used to invoke the tool by the agent)
369
+ :param display_name: The name of the resulting tool to be displayed
365
370
  :param description: The description of the resulting tool (used as the semantic layer to help the agent with tool selection)
366
371
  :param permission: Which orchestrate permission level does a user need to have to invoke this tool
367
372
  :param input_schema: The JSONSchema of the inputs to the http request
@@ -379,6 +384,7 @@ async def create_openapi_json_tool_from_uri(
379
384
  http_response_content_type=http_response_content_type,
380
385
  permission=permission,
381
386
  name=name,
387
+ display_name=display_name,
382
388
  description=description,
383
389
  input_schema=input_schema,
384
390
  output_schema=output_schema,
@@ -1330,7 +1330,7 @@ class AgentsController:
1330
1330
  if agent_only_flag:
1331
1331
  logger.info(f"Exported agent definition for '{name}' to '{output_path}'")
1332
1332
  with open(output_path, 'w') as outfile:
1333
- yaml.dump(agent_spec_file_content, outfile, sort_keys=False, default_flow_style=False)
1333
+ yaml.dump(agent_spec_file_content, outfile, sort_keys=False, default_flow_style=False, allow_unicode=True)
1334
1334
  return
1335
1335
 
1336
1336
  close_file_flag = False
@@ -1340,7 +1340,7 @@ class AgentsController:
1340
1340
 
1341
1341
  logger.info(f"Exporting agent definition for '{name}'")
1342
1342
 
1343
- agent_spec_yaml = yaml.dump(agent_spec_file_content, sort_keys=False, default_flow_style=False)
1343
+ agent_spec_yaml = yaml.dump(agent_spec_file_content, sort_keys=False, default_flow_style=False, allow_unicode=True)
1344
1344
  agent_spec_yaml_bytes = agent_spec_yaml.encode("utf-8")
1345
1345
  agent_spec_yaml_file = io.BytesIO(agent_spec_yaml_bytes)
1346
1346
 
@@ -575,7 +575,7 @@ def export_connection(output_file: str, app_id: str | None = None, connection_id
575
575
  case '.zip':
576
576
  zip_file = zipfile.ZipFile(output_path, "w")
577
577
 
578
- connection_yaml = yaml.dump(combined_connections, sort_keys=False, default_flow_style=False)
578
+ connection_yaml = yaml.dump(combined_connections, sort_keys=False, default_flow_style=False, allow_unicode=True)
579
579
  connection_yaml_bytes = connection_yaml.encode("utf-8")
580
580
  connection_yaml_file = io.BytesIO(connection_yaml_bytes)
581
581
 
@@ -588,7 +588,7 @@ def export_connection(output_file: str, app_id: str | None = None, connection_id
588
588
  case '.yaml' | '.yml':
589
589
  with open(output_path,'w') as yaml_file:
590
590
  yaml_file.write(
591
- yaml.dump(combined_connections, sort_keys=False, default_flow_style=False)
591
+ yaml.dump(combined_connections, sort_keys=False, default_flow_style=False, allow_unicode=True)
592
592
  )
593
593
 
594
594
  logger.info(f"Successfully exported connection file for {app_id}")
@@ -101,10 +101,11 @@ PROVIDER_EXTRA_PROPERTIES_LUT = {
101
101
  PROVIDER_REQUIRED_FIELDS = {k:['api_key'] for k in ModelProvider}
102
102
  # Update required fields for each provider
103
103
  # Use sets to denote when a requirement is 'or'
104
+ # Tuples denote combined requirements like 'and'
104
105
  PROVIDER_REQUIRED_FIELDS.update({
105
106
  ModelProvider.WATSONX: PROVIDER_REQUIRED_FIELDS[ModelProvider.WATSONX] + [{'watsonx_space_id', 'watsonx_project_id', 'watsonx_deployment_id'}],
106
107
  ModelProvider.OLLAMA: PROVIDER_REQUIRED_FIELDS[ModelProvider.OLLAMA] + ['custom_host'],
107
- ModelProvider.BEDROCK: [],
108
+ ModelProvider.BEDROCK: [{'api_key', ('aws_secret_access_key', 'aws_access_key_id')}],
108
109
  })
109
110
 
110
111
  # def env_file_to_model_ProviderConfig(model_name: str, env_file_path: str) -> ProviderConfig | None:
@@ -158,16 +159,34 @@ def _validate_extra_fields(provider: ModelProvider, cfg: ProviderConfig) -> None
158
159
  if cfg.__dict__.get(attr) is not None and attr not in accepted_fields:
159
160
  logger.warning(f"The config option '{attr}' is not used by provider '{provider}'")
160
161
 
162
+ def _check_credential_provided(cred: str | tuple, provided_creds: set) -> bool:
163
+ if isinstance(cred, tuple):
164
+ return all(item in provided_creds for item in cred)
165
+ else:
166
+ return cred in provided_creds
167
+
168
+ def _format_missing_credential(missing_credential: set) -> str:
169
+ parts = []
170
+ for cred in missing_credential:
171
+ if isinstance(cred, tuple):
172
+ formatted = " and ".join(f"{x}" for x in cred)
173
+ parts.append(f"({formatted})")
174
+ else:
175
+ parts.append(f"{cred}")
176
+
177
+ return " or ".join(parts)
178
+
179
+
161
180
  def _validate_requirements(provider: ModelProvider, cfg: ProviderConfig, app_id: str = None) -> None:
162
181
  provided_credentials = set([k for k,v in dict(cfg).items() if v is not None])
163
182
  required_creds = PROVIDER_REQUIRED_FIELDS[provider]
164
183
  missing_credentials = []
165
184
  for cred in required_creds:
166
185
  if isinstance(cred, set):
167
- if not any(c in provided_credentials for c in cred):
186
+ if not any(_check_credential_provided(c, provided_credentials) for c in cred):
168
187
  missing_credentials.append(cred)
169
188
  else:
170
- if cred not in provided_credentials:
189
+ if not _check_credential_provided(cred, provided_credentials):
171
190
  missing_credentials.append(cred)
172
191
 
173
192
  if len(missing_credentials) > 0:
@@ -177,7 +196,7 @@ def _validate_requirements(provider: ModelProvider, cfg: ProviderConfig, app_id:
177
196
  missing_credentials_string = f"Be sure to include the following required fields for provider '{provider}' in the connection '{app_id}':"
178
197
  for cred in missing_credentials:
179
198
  if isinstance(cred, set):
180
- cred_str = ' or '.join(list(cred))
199
+ cred_str = _format_missing_credential(cred)
181
200
  else:
182
201
  cred_str = cred
183
202
  missing_credentials_string += f"\n\t - {cred_str}"
@@ -3,7 +3,7 @@ import typer
3
3
  from ibm_watsonx_orchestrate.cli.commands.partners import partners_controller
4
4
  from ibm_watsonx_orchestrate.cli.commands.partners.offering.partners_offering_command import partners_offering
5
5
 
6
- partners_app = typer.Typer(no_args_is_help=True, hidden=True)
6
+ partners_app = typer.Typer(no_args_is_help=True)
7
7
 
8
8
  partners_app.add_typer(
9
9
  partners_offering,
@@ -48,6 +48,7 @@ def run_compose_lite(
48
48
  experimental_with_ibm_telemetry=False,
49
49
  with_doc_processing=False,
50
50
  with_voice=False,
51
+ with_connections_ui=False,
51
52
  with_langflow=False,
52
53
  ) -> None:
53
54
  EnvService.prepare_clean_env(final_env_file)
@@ -80,6 +81,8 @@ def run_compose_lite(
80
81
  profiles.append("docproc")
81
82
  if with_voice:
82
83
  profiles.append("voice")
84
+ if with_connections_ui:
85
+ profiles.append("connections-ui")
83
86
  if with_langflow:
84
87
  profiles.append("langflow")
85
88
 
@@ -358,11 +361,14 @@ def server_start(
358
361
  '--with-voice', '-v',
359
362
  help='Enable voice controller to interact with the chat via voice channels'
360
363
  ),
364
+ with_connections_ui: bool = typer.Option(
365
+ False,
366
+ '--with-connections-ui', '-c',
367
+ help='Enables connections ui to facilitate OAuth connections and credential management via a UI'),
361
368
  with_langflow: bool = typer.Option(
362
369
  False,
363
370
  '--with-langflow',
364
- help='Enable Langflow UI, available at http://localhost:7861',
365
- hidden=True
371
+ help='Enable Langflow UI, available at http://localhost:7861'
366
372
  ),
367
373
  ):
368
374
  cli_config = Config()
@@ -425,6 +431,7 @@ def server_start(
425
431
  experimental_with_ibm_telemetry=experimental_with_ibm_telemetry,
426
432
  with_doc_processing=with_doc_processing,
427
433
  with_voice=with_voice,
434
+ with_connections_ui=with_connections_ui,
428
435
  with_langflow=with_langflow, env_service=env_service)
429
436
 
430
437
  run_db_migration()
@@ -455,9 +462,10 @@ def server_start(
455
462
  logger.info(f"You can access the observability platform Langfuse at http://localhost:3010, username: orchestrate@ibm.com, password: orchestrate")
456
463
  if with_doc_processing:
457
464
  logger.info(f"Document processing in Flows (Public Preview) has been enabled.")
465
+ if with_connections_ui:
466
+ logger.info("Connections UI can be found at http://localhost:3412/connectors")
458
467
  if with_langflow:
459
468
  logger.info("Langflow has been enabled, the Langflow UI is available at http://localhost:7861")
460
-
461
469
  @server_app.command(name="stop")
462
470
  def server_stop(
463
471
  user_env_file: str = typer.Option(
@@ -47,11 +47,11 @@ def import_toolkit(
47
47
  ] = None,
48
48
  url: Annotated[
49
49
  Optional[str],
50
- typer.Option("--url", "-u", help="The URL of the remote MCP server", hidden=True),
50
+ typer.Option("--url", "-u", help="The URL of the remote MCP server"),
51
51
  ] = None,
52
52
  transport: Annotated[
53
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),
54
+ typer.Option("--transport", help="The communication protocol to use for the remote MCP server. Only \"sse\" or \"streamable_http\" supported"),
55
55
  ] = None,
56
56
  tools: Annotated[
57
57
  Optional[str],
@@ -49,8 +49,28 @@ services:
49
49
  MAX_POOL: 60
50
50
  DEPLOYMENT_MODE: laptop
51
51
  SUFFIXLIST: ${CM_SUFFIXLIST:-[]}
52
+ BACKEND_BASE_URL: http://localhost:3001
53
+ CALLBACK_URL: http://localhost:3001/auth/oauth2/callback
52
54
  ports:
53
55
  - 3001:3001
56
+
57
+ wxo-server-connections-ui:
58
+ image: ${CONNECTIONS_UI_REGISTRY:-us.icr.io/watson-orchestrate-private}/wxo-connections-ui:${CONNECTIONS_UI_TAG:-latest}
59
+ platform: linux/amd64
60
+ profiles: [connections-ui]
61
+ environment:
62
+ PORT: 3412
63
+ WXO_CONNECTIONS_URL: http://wxo-server-connection-manager:3001
64
+ DEPLOYMENT_MODE: laptop
65
+ WXO_URL: http://localhost:3412
66
+ ENV: production
67
+ WXO_SERVER_URL: http://localhost:4321
68
+ TENANT_ID: ${REACT_APP_TENANT_ID}
69
+ WXO_CHAT_URL: http://localhost:3000
70
+ ports:
71
+ - "3412:3412"
72
+ networks:
73
+ - default
54
74
 
55
75
  ai-gateway:
56
76
  image: ${AI_GATEWAY_REGISTRY:-us.icr.io/watson-orchestrate-private}/ai-gateway:${AI_GATEWAY_TAG:-latest}
@@ -73,6 +93,24 @@ services:
73
93
  environment:
74
94
  JWT_SECRET: ${JWT_SECRET}
75
95
  DEPLOYMENT_PLATFORM: laptop-lite
96
+ CALLBACK_HOST_URL: ${CALLBACK_HOST_URL:-}
97
+ REDIS_URL: redis://wxo-server-redis:6379/0
98
+ entrypoint: >
99
+ sh -c '
100
+ if [ ! -z "$$CALLBACK_HOST_URL" ]; then
101
+ GATEWAY_IP=$$(echo "$$CALLBACK_HOST_URL" | sed "s|http://||" | cut -d: -f1)
102
+ export CALL_BACK_URL="http://$$GATEWAY_IP:8989"
103
+ echo "Auto-configured CALL_BACK_URL: $$CALL_BACK_URL"
104
+ else
105
+ export CALL_BACK_URL="http://wxo-agent-gateway:8989"
106
+ echo "Using fallback CALL_BACK_URL: $$CALL_BACK_URL"
107
+ fi
108
+ if [ $$# -eq 0 ]; then
109
+ exec ./conditional_script.sh
110
+ else
111
+ exec "$$@"
112
+ fi
113
+ '
76
114
 
77
115
  ui:
78
116
  image: ${UI_REGISTRY:-us.icr.io/watson-orchestrate-private}/wxo-chat:${UITAG:-latest}
@@ -105,6 +143,7 @@ services:
105
143
  STANDALONE: "true"
106
144
  STREAM_TIMEOUT: ${STREAM_TIMEOUT:-120000}
107
145
  WXO_VOICE_URL: http://localhost:9876/v1
146
+ DPS_CACHE_URL: http://localhost:18083
108
147
  command: "./StartServer.sh"
109
148
  ports:
110
149
  - "3000:4002"
@@ -127,13 +166,13 @@ services:
127
166
  AGENTS_OPS_RUNTIME_ENDPOINT: https://frontend-server:443
128
167
  DPI_WO_WDU_SERVER_ENDPOINT: https://wxo-doc-processing-service:8080
129
168
  DPI_RAG_SERVER_ENDPOINT: https://wxo-doc-processing-llm-service:8083
130
- IBM_DPS_CACHE_SERVICE: https://wxo-doc-processing-cache:8080
169
+ IBM_DPS_CACHE_SERVICE: http://wxo-doc-processing-cache:8080
131
170
  DOCPROC_BASE_URL: http://wxo-doc-processing-infra-standalone:9080
132
171
  BUILDER_ASYNC_CALLBACK_ENDPOINT: http://wxo-builder:4025
133
172
  DOCPROC_ENABLED: ${DOCPROC_ENABLED:-false}
134
173
  IS_OBSERVABILITY_FEATURE_ENABLED: "true"
135
174
  ALLOW_INSECURE_TLS: "true"
136
- ENABLE_EDIT_PROMPTS: "false"
175
+ ENABLE_EDIT_PROMPTS: "true"
137
176
  LANGFLOW_ENABLED: ${LANGFLOW_ENABLED:-false}
138
177
  ENABLE_EMBED_SCRIPT: "true"
139
178
  command: 'npm start'
@@ -353,6 +392,10 @@ services:
353
392
  ES_HOST: http://elasticsearch:9200
354
393
  ORIGIN_HEADER: "internal"
355
394
  LANGFLOW_ENABLED: ${LANGFLOW_ENABLED:-false}
395
+ WATSONX_SERVER: WXO
396
+ EVALUATION_PLATFORM: lite-local
397
+ AGENTOPS_BACKEND_URL: https://frontend-server:443
398
+ OBSERVABILITY_POSTGRES_URL: postgresql://${POSTGRES_USER:-postgres}:${POSTGRES_PASSWORD:-postgres}@wxo-server-db:5432/wxo_observability
356
399
 
357
400
  wxo-server-worker:
358
401
  image: ${WORKER_REGISTRY:-us.icr.io/watson-orchestrate-private}/wxo-server-conversation_controller:${WORKER_TAG:-latest}
@@ -453,6 +496,10 @@ services:
453
496
  CPD_VERIFY: ${CPD_VERIFY}
454
497
  CALLBACK_HOST_URL: ${CALLBACK_HOST_URL:-http://wxo-server:4321}
455
498
  LANGFLOW_ENABLED: ${LANGFLOW_ENABLED:-false}
499
+ WATSONX_SERVER: WXO
500
+ EVALUATION_PLATFORM: lite-local
501
+ AGENTOPS_BACKEND_URL: https://frontend-server:443
502
+ OBSERVABILITY_POSTGRES_URL: postgresql://${POSTGRES_USER:-postgres}:${POSTGRES_PASSWORD:-postgres}@wxo-server-db:5432/wxo_observability
456
503
 
457
504
  tools-runtime-manager:
458
505
  image: ${TRM_REGISTRY:-us.icr.io/watson-orchestrate-private}/tools-runtime-manager:${TRM_TAG:-latest}
@@ -813,6 +860,7 @@ services:
813
860
  AUTHORIZATION_URL: ${AUTHORIZATION_URL}
814
861
  WO_AUTH_TYPE: ${WO_AUTH_TYPE}
815
862
  FLOW_CALLBACK_REQUEST_RETRIES: "1"
863
+ DOCPROC_CACHE_SERVER_URL: http://wxo-doc-processing-cache:8080
816
864
  healthcheck:
817
865
  test: curl -k http://localhost:9044/readiness --fail
818
866
  interval: 30s
@@ -858,13 +906,13 @@ services:
858
906
  SERVICE_NAME: wxo-doc-processing-service
859
907
  LOG_LEVEL: info
860
908
  VERIFY_CLIENT_CERT: 0
861
- SERVICE_URL: ${SERVICE_URL:-https://wxo-doc-processing-cache:8080}
909
+ SERVICE_URL: ${SERVICE_URL:-http://wxo-doc-processing-cache:8080}
862
910
  RATE_LIMITING_ENABLED: "false"
863
911
  SHOULD_CACHE_IMAGES: "false"
864
912
  HANDWRITING_ENABLED: "true"
865
913
  WDU_RUNTIME_URL: wdu-runtime:8080
866
914
  WDU_TIMEOUT_SECS: "180"
867
- IBM_DPS_CACHE_SERVICE: https://wxo-doc-processing-cache:8080
915
+ IBM_DPS_CACHE_SERVICE: http://wxo-doc-processing-cache:8080
868
916
  profiles:
869
917
  - docproc
870
918
  depends_on:
@@ -959,6 +1007,8 @@ services:
959
1007
  VERIFY_CLIENT_CERT: 1
960
1008
  # S3_USE_SSL: false
961
1009
  # S3_VERIFY_CERT: false
1010
+ ISTIO_ENABLED: true
1011
+ IS_ADK_ENV: true
962
1012
  profiles:
963
1013
  - docproc
964
1014
  depends_on:
@@ -971,7 +1021,7 @@ services:
971
1021
  # volumes:
972
1022
  # - ./docker/wo_doc_processing_rag_base/etc/certs:/etc/certs
973
1023
  healthcheck:
974
- test: ["CMD-SHELL", "curl -fk https://localhost:8080/ping"]
1024
+ test: ["CMD-SHELL", "curl -fk http://localhost:8080/ping"]
975
1025
  interval: 30s
976
1026
  timeout: 30s
977
1027
  retries: 10
@@ -1030,7 +1080,7 @@ services:
1030
1080
  LOG_LEVEL: info
1031
1081
  WATSONX_API_ENDPOINT: ${WATSONX_URL:-https://us-south.ml.cloud.ibm.com}
1032
1082
  WXO_SERVER_BASE_URL : http://wxo-server:4321
1033
- IBM_DPS_CACHE_SERVICE: 'wxo-doc-processing-cache:8080'
1083
+ IBM_DPS_CACHE_SERVICE: 'http://wxo-doc-processing-cache:8080'
1034
1084
  profiles:
1035
1085
  - docproc
1036
1086
  depends_on:
@@ -58,41 +58,44 @@ REGISTRY_URL=
58
58
 
59
59
 
60
60
 
61
- SERVER_TAG=09-09-2025-2164abd
61
+ SERVER_TAG=17-10-2025-8a9aff2
62
62
  SERVER_REGISTRY=
63
63
 
64
- WORKER_TAG=09-09-2025-2164abd
64
+ WORKER_TAG=17-10-2025-8a9aff2
65
65
  WORKER_REGISTRY=
66
66
 
67
67
  AI_GATEWAY_TAG=20-08-2025-9ed6d40
68
68
  AI_GATEWAY_REGISTRY=
69
69
 
70
- AGENT_GATEWAY_TAG=29-07-2025
70
+ AGENT_GATEWAY_TAG=16-09-2025-115ef29
71
71
  AGENT_GATEWAY_REGISTRY=
72
72
 
73
73
  DB_REGISTRY=
74
74
  # If you build multiarch set all three of these to the same, we have a pr against main
75
75
  # to not have this separation, but we can merge it later
76
- DBTAG=09-09-2025-fb76647
77
- AMDDBTAG=09-09-2025-fb76647
78
- ARM64DBTAG=09-09-2025-fb76647
76
+ DBTAG=17-09-2025-8a9aff2
77
+ AMDDBTAG=17-09-2025-8a9aff2
78
+ ARM64DBTAG=17-09-2025-8a9aff2
79
79
 
80
80
  UI_REGISTRY=
81
- UITAG=29-08-2025
81
+ UITAG=19-09-2025-188b5fe
82
82
 
83
83
  CM_REGISTRY=
84
- CM_TAG=24-07-2025
84
+ CM_TAG=16-09-2025-e33b344
85
85
 
86
- TRM_TAG=09-09-2025-6e9d73d
86
+ CONNECTIONS_UI_REGISTRY=
87
+ CONNECTIONS_UI_TAG=15-09-2025-98aa9da
88
+
89
+ TRM_TAG=15-09-2025-228f397
87
90
  TRM_REGISTRY=
88
91
 
89
- TR_TAG=09-09-2025-6e9d73d
92
+ TR_TAG=15-09-2025-228f397
90
93
  TR_REGISTRY=
91
94
 
92
- BUILDER_TAG=12-09-2025-e441686
95
+ BUILDER_TAG=19-09-2025-4ab5c88
93
96
  BUILDER_REGISTRY=
94
97
 
95
- FLOW_RUNTIME_TAG=15-09-2025-2e8478c
98
+ FLOW_RUNTIME_TAG=15-09-2025-c208dc5
96
99
  FLOW_RUMTIME_REGISTRY=
97
100
 
98
101
 
@@ -118,10 +121,10 @@ LANGFLOW_IMAGE=
118
121
  WDU_TAG=2.7.0
119
122
  WDU_REGISTRY=
120
123
 
121
- DOCPROC_DPS_TAG=20250904-181617-287-1ca2bf1
122
- DOCPROC_LLMSERVICE_TAG=20250904-main-136-b94360e
123
- DOCPROC_CACHE_TAG=20250902-master-83-748d456
124
- DOCPROC_DPI_TAG=20250905-092707-286-8c6b8f92
124
+ DOCPROC_DPS_TAG=20250910-165658-290-c566031
125
+ DOCPROC_LLMSERVICE_TAG=20250915-main-139-7a36ad3
126
+ DOCPROC_CACHE_TAG=20250916-master-86-454157f
127
+ DOCPROC_DPI_TAG=20250910-214413-288-a348dfd9
125
128
  DOCPROC_REGISTRY=
126
129
 
127
130
  # END -- IMAGE REGISTRIES AND TAGS
@@ -8,6 +8,8 @@ import logging
8
8
  import inspect
9
9
  from typing import Callable, Optional, Sequence
10
10
  from pydantic import BaseModel
11
+
12
+ from ...agent_builder.models.types import ListVirtualModel
11
13
  from ..types import extract_node_spec, UserNodeSpec, FlowSpec
12
14
 
13
15
  from .flow import FlowFactory, Flow
@@ -34,7 +36,9 @@ def flow(*args,
34
36
  input_schema: type[BaseModel] | None = None,
35
37
  output_schema: type[BaseModel] | None = None,
36
38
  initiators: Sequence[str] = (),
37
- schedulable: bool = False):
39
+ schedulable: bool = False,
40
+ llm_model: str|ListVirtualModel|None=None,
41
+ agent_conversation_memory_turns_limit: int|None=None):
38
42
  """Decorator to mark a function as a flow model builder."""
39
43
 
40
44
  def decorator(func: Callable):
@@ -60,7 +64,9 @@ def flow(*args,
60
64
  input_schema = input_schema,
61
65
  output_schema = output_schema,
62
66
  initiators = initiators,
63
- schedulable = schedulable)
67
+ schedulable = schedulable,
68
+ llm_model = llm_model,
69
+ agent_conversation_memory_turns_limit = agent_conversation_memory_turns_limit)
64
70
 
65
71
  # logger.info("Creating flow model: %s", a_model.spec.name)
66
72
 
@@ -21,6 +21,7 @@ from typing_extensions import Self
21
21
  from pydantic import BaseModel, Field, SerializeAsAny, create_model, TypeAdapter
22
22
  import yaml
23
23
  from ibm_watsonx_orchestrate.agent_builder.tools.python_tool import PythonTool
24
+ from ibm_watsonx_orchestrate.agent_builder.models.types import ListVirtualModel
24
25
  from ibm_watsonx_orchestrate.client.tools.tool_client import ToolClient
25
26
  from ibm_watsonx_orchestrate.client.tools.tempus_client import TempusClient
26
27
  from ibm_watsonx_orchestrate.client.utils import instantiate_client
@@ -84,6 +85,21 @@ class Flow(Node):
84
85
  # get Tool Client
85
86
  self._tool_client = instantiate_client(ToolClient)
86
87
 
88
+ # set llm_model to use for the flow if any
89
+ llm_model = kwargs.get("llm_model")
90
+ if llm_model:
91
+ if isinstance(llm_model, ListVirtualModel):
92
+ self.metadata["llm_model"] = llm_model.name
93
+ elif isinstance(llm_model, str):
94
+ self.metadata["llm_model"] = llm_model
95
+ else:
96
+ raise AssertionError(f"flow llm_model should be either a str or ListVirtualModel")
97
+
98
+ # set agent_conversation_memory_turns_limit for the flow if any
99
+ agent_conversation_memory_turns_limit = kwargs.get("agent_conversation_memory_turns_limit")
100
+ if agent_conversation_memory_turns_limit:
101
+ self.metadata["agent_conversation_memory_turns_limit"] = agent_conversation_memory_turns_limit
102
+
87
103
  def _find_topmost_flow(self) -> Self:
88
104
  if self.parent:
89
105
  return self.parent._find_topmost_flow()
@@ -519,7 +535,9 @@ class Flow(Node):
519
535
  fields: type[BaseModel]| None = None,
520
536
  description: str | None = None,
521
537
  input_map: DataMap = None,
522
- enable_hw: bool = False) -> tuple[DocExtNode, type[BaseModel]]:
538
+ enable_hw: bool = False,
539
+ min_confidence: float = 0, # Setting a small value because htil is not supported for pro code.
540
+ review_fields: List[str] = []) -> tuple[DocExtNode, type[BaseModel]]:
523
541
 
524
542
  if name is None :
525
543
  raise ValueError("name must be provided.")
@@ -544,7 +562,9 @@ class Flow(Node):
544
562
  output_schema_object = output_schema_obj,
545
563
  config=doc_ext_config,
546
564
  version=version,
547
- enable_hw=enable_hw
565
+ enable_hw=enable_hw,
566
+ min_confidence=min_confidence,
567
+ review_fields=review_fields
548
568
  )
549
569
  node = DocExtNode(spec=task_spec)
550
570
 
@@ -609,7 +629,8 @@ class Flow(Node):
609
629
  input_map: DataMap = None,
610
630
  document_structure: bool = False,
611
631
  kvp_schemas: list[DocProcKVPSchema] = None,
612
- enable_hw: bool = False) -> DocProcNode:
632
+ enable_hw: bool = False,
633
+ kvp_model_name: str | None = None) -> DocProcNode:
613
634
 
614
635
  if name is None :
615
636
  raise ValueError("name must be provided.")
@@ -635,7 +656,8 @@ class Flow(Node):
635
656
  document_structure=document_structure,
636
657
  plain_text_reading_order=plain_text_reading_order,
637
658
  enable_hw=enable_hw,
638
- kvp_schemas=kvp_schemas
659
+ kvp_schemas=kvp_schemas,
660
+ kvp_model_name=kvp_model_name
639
661
  )
640
662
 
641
663
  node = DocProcNode(spec=task_spec)
@@ -1201,7 +1223,7 @@ class CompiledFlow(BaseModel):
1201
1223
  dumped = self.flow.to_json()
1202
1224
  with open(file, 'w') as f:
1203
1225
  if file.endswith(".yaml") or file.endswith(".yml"):
1204
- yaml.dump(dumped, f)
1226
+ yaml.dump(dumped, f, allow_unicode=True)
1205
1227
  elif file.endswith(".json"):
1206
1228
  json.dump(dumped, f, indent=2)
1207
1229
  else:
@@ -1223,7 +1245,9 @@ class FlowFactory(BaseModel):
1223
1245
  initiators: Sequence[str]|None=None,
1224
1246
  input_schema: type[BaseModel]|None=None,
1225
1247
  output_schema: type[BaseModel]|None=None,
1226
- schedulable: bool=False) -> Flow:
1248
+ schedulable: bool=False,
1249
+ llm_model: str|ListVirtualModel|None=None,
1250
+ agent_conversation_memory_turns_limit: int|None = None) -> Flow:
1227
1251
  if isinstance(name, Callable):
1228
1252
  flow_spec = getattr(name, "__flow_spec__", None)
1229
1253
  if not flow_spec:
@@ -1248,7 +1272,7 @@ class FlowFactory(BaseModel):
1248
1272
  schedulable=schedulable,
1249
1273
  )
1250
1274
 
1251
- return Flow(spec = flow_spec)
1275
+ return Flow(spec = flow_spec, llm_model=llm_model, agent_conversation_memory_turns_limit=agent_conversation_memory_turns_limit)
1252
1276
 
1253
1277
 
1254
1278
  class FlowControl(Node):
@@ -23,7 +23,7 @@ class Node(BaseModel):
23
23
  exclude_unset=True, exclude_none=True, by_alias=True)
24
24
  with open(file, 'w', encoding="utf-8") as f:
25
25
  if file.endswith('.yaml') or file.endswith('.yml'):
26
- yaml.dump(dumped, f)
26
+ yaml.dump(dumped, f, allow_unicode=True)
27
27
  elif file.endswith('.json'):
28
28
  json.dump(dumped, f, indent=2)
29
29
  else:
@@ -271,6 +271,8 @@ class DocClassifierSpec(DocProcCommonNodeSpec):
271
271
  class DocExtSpec(DocProcCommonNodeSpec):
272
272
  version : str = Field(description="A version of the spec")
273
273
  config : DocExtConfig
274
+ min_confidence: float = Field(description="The minimal confidence acceptable for an extracted field value", default=0.0,le=1.0, ge=0.0 ,title="Minimum Confidence")
275
+ review_fields: List[str] = Field(description="The fields that require user to review", default=[])
274
276
 
275
277
  def __init__(self, **data):
276
278
  super().__init__(**data)
@@ -281,6 +283,8 @@ class DocExtSpec(DocProcCommonNodeSpec):
281
283
  model_spec["version"] = self.version
282
284
  model_spec["config"] = self.config.model_dump()
283
285
  model_spec["task"] = DocProcTask.custom_field_extraction
286
+ model_spec["min_confidence"] = self.min_confidence
287
+ model_spec["review_fields"] = self.review_fields
284
288
  return model_spec
285
289
 
286
290
  class DocProcField(BaseModel):
@@ -337,6 +341,11 @@ class DocProcSpec(DocProcCommonNodeSpec):
337
341
  title='KVP schemas',
338
342
  description="Optional list of key-value pair schemas to use for extraction.",
339
343
  default=None)
344
+ kvp_model_name: str | None = Field(
345
+ title='KVP Model Name',
346
+ description="The LLM model to be used for key-value pair extraction",
347
+ default=None
348
+ )
340
349
  plain_text_reading_order : PlainTextReadingOrder = Field(default=PlainTextReadingOrder.block_structure)
341
350
  document_structure: bool = Field(default=False,description="Requests the entire document structure computed by WDU to be returned")
342
351
 
@@ -352,6 +361,8 @@ class DocProcSpec(DocProcCommonNodeSpec):
352
361
  model_spec["plain_text_reading_order"] = self.plain_text_reading_order
353
362
  if self.kvp_schemas is not None:
354
363
  model_spec["kvp_schemas"] = self.kvp_schemas
364
+ if self.kvp_model_name is not None:
365
+ model_spec["kvp_model_name"] = self.kvp_model_name
355
366
  return model_spec
356
367
 
357
368
  class StartNodeSpec(NodeSpec):
@@ -905,8 +916,7 @@ class UserFlowSpec(FlowSpec):
905
916
  class ForeachPolicy(Enum):
906
917
 
907
918
  SEQUENTIAL = 1
908
- # support only SEQUENTIAL for now
909
- # PARALLEL = 2
919
+ PARALLEL = 2
910
920
 
911
921
  class ForeachSpec(FlowSpec):
912
922
 
@@ -923,7 +933,7 @@ class ForeachSpec(FlowSpec):
923
933
  if isinstance(self.item_schema, JsonSchemaObject):
924
934
  my_dict["item_schema"] = _to_json_from_json_schema(self.item_schema)
925
935
  else:
926
- my_dict["item_schema"] = self.item_schema.model_dump(exclude_defaults=True, exclude_none=True, exclude_unset=True)
936
+ my_dict["item_schema"] = self.item_schema.model_dump(exclude_defaults=True, exclude_none=True, exclude_unset=True, by_alias=True)
927
937
 
928
938
  my_dict["foreach_policy"] = self.foreach_policy.name
929
939
  return my_dict
@@ -1312,6 +1322,11 @@ class DocProcInput(DocumentProcessingCommonInput):
1312
1322
  title='KVP schemas',
1313
1323
  description="Optional list of key-value pair schemas to use for extraction.",
1314
1324
  default=None)
1325
+ kvp_model_name: str | None = Field(
1326
+ title='KVP Model Name',
1327
+ description="The LLM model to be used for key-value pair extraction",
1328
+ default=None
1329
+ )
1315
1330
 
1316
1331
  class TextExtractionResponse(BaseModel):
1317
1332
  '''
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ibm-watsonx-orchestrate
3
- Version: 1.12.0b0
3
+ Version: 1.12.0b1
4
4
  Summary: IBM watsonx.orchestrate SDK
5
5
  Author-email: IBM <support@ibm.com>
6
6
  License: MIT License
@@ -1,10 +1,10 @@
1
- ibm_watsonx_orchestrate/__init__.py,sha256=bxfo19Vy9H66whrQZQJuZpdwNPfdrBswE0lVziCrnPU,427
1
+ ibm_watsonx_orchestrate/__init__.py,sha256=rt1KcSzKVydKqrDL4jMLsj3SqC4D4KxFkrjnHfXBsmU,427
2
2
  ibm_watsonx_orchestrate/agent_builder/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
3
  ibm_watsonx_orchestrate/agent_builder/agents/__init__.py,sha256=lmZwaiWXD4Ea19nrMwZXaqCxFMG29xNS8vUoZtK3yI4,392
4
4
  ibm_watsonx_orchestrate/agent_builder/agents/agent.py,sha256=W0uya81fQPrYZFaO_tlsxBL56Bfpw0xrqdxQJhAZ6XI,983
5
5
  ibm_watsonx_orchestrate/agent_builder/agents/assistant_agent.py,sha256=NnWThJ2N8HUOD9IDL6ZhtTKyLMHSacJCpxDNityRmgY,1051
6
6
  ibm_watsonx_orchestrate/agent_builder/agents/external_agent.py,sha256=7HzEFjd7JiiRTgvA1RVA3M0-Mr42FTQnOtGMII5ufk0,1045
7
- ibm_watsonx_orchestrate/agent_builder/agents/types.py,sha256=nwKbY_bH6ufI6G1xS34U09iGrV4CgZR-UPnjVVtXUS8,14511
7
+ ibm_watsonx_orchestrate/agent_builder/agents/types.py,sha256=1DBafY3-TF_wvmmlUYlFt-XhnDQLxWhDuG_q_RZvN6g,14553
8
8
  ibm_watsonx_orchestrate/agent_builder/agents/webchat_customizations/__init__.py,sha256=5TXa8UqKUAlDo4hTbE5S9OPEkQhxXhPJHJC4pEe8U00,92
9
9
  ibm_watsonx_orchestrate/agent_builder/agents/webchat_customizations/prompts.py,sha256=jNVF_jgz1Dmt7-RxAceAS0XWXk_fx9h3sS_fGrvZT28,941
10
10
  ibm_watsonx_orchestrate/agent_builder/agents/webchat_customizations/welcome_content.py,sha256=U76wZrblSXx4qv7phcPYs3l8SiFzwZ5cJ74u8Y2iYhU,608
@@ -17,14 +17,14 @@ ibm_watsonx_orchestrate/agent_builder/knowledge_bases/types.py,sha256=4gvzIwSxO9
17
17
  ibm_watsonx_orchestrate/agent_builder/model_policies/__init__.py,sha256=alJEjlneWlGpadmvOVlDjq5wulytKOmpkq3849fhKNc,131
18
18
  ibm_watsonx_orchestrate/agent_builder/model_policies/types.py,sha256=a6f9HP2OlZIe36k_PDRmFtefz2Ms2KBpzJ_jz8ggYbk,882
19
19
  ibm_watsonx_orchestrate/agent_builder/models/__init__.py,sha256=R5nTbyMBzahONdp5-bJFp-rbtTDnp2184k6doZqt67w,31
20
- ibm_watsonx_orchestrate/agent_builder/models/types.py,sha256=bWKrKeBMByjhEvkXieJUYOxVr1Px6mk8v4GsvjRrvo8,9812
21
- ibm_watsonx_orchestrate/agent_builder/toolkits/base_toolkit.py,sha256=KXRPgBK-F9Qa6IYqEslkN3ANj3cmZoZQnlSiy_-iXCk,1054
20
+ ibm_watsonx_orchestrate/agent_builder/models/types.py,sha256=NHcq5mRV4pfNHql8E8fghC9F8IbOTQ3sKqFQDxFQWKo,9828
21
+ ibm_watsonx_orchestrate/agent_builder/toolkits/base_toolkit.py,sha256=uJASxkwgYpnXRfzMTeQo_I9fPewAldSDyFFmZzlTFlM,1074
22
22
  ibm_watsonx_orchestrate/agent_builder/toolkits/types.py,sha256=RGkS01_fqbs-7YFFZbuxHv64AHdaav2jm0RDKsVMb4c,986
23
23
  ibm_watsonx_orchestrate/agent_builder/tools/__init__.py,sha256=R07j4zERCBX22ILsGBl3qRw0poaVSONPnMZ_69bAFDw,519
24
- ibm_watsonx_orchestrate/agent_builder/tools/base_tool.py,sha256=0vwMIAyKyB8v1QmNrubLy8Al58g3qT78EUgrmOjegoI,1220
24
+ ibm_watsonx_orchestrate/agent_builder/tools/base_tool.py,sha256=qiVHqLN-S9AuJlsvVaV_kNN5oNi4kk6177Hi9KpEdaI,1240
25
25
  ibm_watsonx_orchestrate/agent_builder/tools/flow_tool.py,sha256=DJWYVmIjw1O_cbzPpwU0a_vIZGvo0mj8UsjW9zkKMlA,2589
26
26
  ibm_watsonx_orchestrate/agent_builder/tools/langflow_tool.py,sha256=kB_wjGPXkkldbwdeD6dZFGicIMQ4REMH_ADu6l6Xb2c,4229
27
- ibm_watsonx_orchestrate/agent_builder/tools/openapi_tool.py,sha256=Y8NvlZBuaG8mVuewq0XFS584yke7XkDI7Rdt4qg6HrY,19431
27
+ ibm_watsonx_orchestrate/agent_builder/tools/openapi_tool.py,sha256=haAN5t4YMGrVM788UdMxfMWUctOe6_3szGxsRF3KPr8,19730
28
28
  ibm_watsonx_orchestrate/agent_builder/tools/python_tool.py,sha256=cdgu-v1oRR9RUbMNKEklOzO1z3nNZpDZPSMwnJEvuIY,12533
29
29
  ibm_watsonx_orchestrate/agent_builder/tools/types.py,sha256=8Esn77LZSBNTiKOpvRXF35LUFnfydyvZ-oxAQJyt1wE,8931
30
30
  ibm_watsonx_orchestrate/agent_builder/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -36,7 +36,7 @@ ibm_watsonx_orchestrate/cli/init_helper.py,sha256=qxnKdFcPtGsV_6RqP_IuLshRxgB004
36
36
  ibm_watsonx_orchestrate/cli/main.py,sha256=5AuoVVDHzgNZ6Y2ZR4bSF1cs7AhQRyd8n7S41o8lK4w,3618
37
37
  ibm_watsonx_orchestrate/cli/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
38
38
  ibm_watsonx_orchestrate/cli/commands/agents/agents_command.py,sha256=mWVojmtxslXL-eGMs7NUNBV_DudmQKeNnTaE9V9jjfU,9832
39
- ibm_watsonx_orchestrate/cli/commands/agents/agents_controller.py,sha256=Pxu91QNIiI2A1txiDMm1XoJ5UyEKkSZziun9AG6eyMw,66263
39
+ ibm_watsonx_orchestrate/cli/commands/agents/agents_controller.py,sha256=WYuDR6aCbOsDxkFH6v0GPtXw6ButkDXD-abdnGi8kMM,66303
40
40
  ibm_watsonx_orchestrate/cli/commands/channels/channels_command.py,sha256=fVIFhPUTPdxsxIE10nWL-W5wvBR-BS8V8D6r__J8R98,822
41
41
  ibm_watsonx_orchestrate/cli/commands/channels/channels_controller.py,sha256=WjQxwJujvo28SsWgfJSXIpkcgniKcskJ2arL4MOz0Ys,455
42
42
  ibm_watsonx_orchestrate/cli/commands/channels/types.py,sha256=hMFvWPr7tAmDrhBqtzfkCsrubX3lsU6lapTSOFsUbHM,475
@@ -44,7 +44,7 @@ ibm_watsonx_orchestrate/cli/commands/channels/webchat/channels_webchat_command.p
44
44
  ibm_watsonx_orchestrate/cli/commands/channels/webchat/channels_webchat_controller.py,sha256=CGfmKsCBX4E3HMZ8C0IXD-DHQNwe96V1Y_BxUZM2us0,8557
45
45
  ibm_watsonx_orchestrate/cli/commands/chat/chat_command.py,sha256=Q9vg2Z5Fsunu6GQFY_TIsNRhUCa0SSGSPnK4jxSGK34,1581
46
46
  ibm_watsonx_orchestrate/cli/commands/connections/connections_command.py,sha256=yHT6hBaoA42iz_XGpbqTYIOc5oDFVBR1dVaV3XZnY3w,12948
47
- ibm_watsonx_orchestrate/cli/commands/connections/connections_controller.py,sha256=VV7bF6ywh-UxtZNOztn7rNukmoQh1MtYmZRru18QKDE,30724
47
+ ibm_watsonx_orchestrate/cli/commands/connections/connections_controller.py,sha256=Am-yoP8y_cqslLZOiWuMHJqBK0b_fmOUxn1Z9DkZrAA,30764
48
48
  ibm_watsonx_orchestrate/cli/commands/copilot/copilot_command.py,sha256=IxasApIyQYWRMKPXKa38ZPVkUvOc4chggSmSGjgQGXc,2345
49
49
  ibm_watsonx_orchestrate/cli/commands/copilot/copilot_controller.py,sha256=SC2Tjq6r-tHIiyPBMajsxdMIY3BQpRWpkYGZS2XbJyU,18981
50
50
  ibm_watsonx_orchestrate/cli/commands/copilot/copilot_server_controller.py,sha256=9MXS5uE3esKp3IYILVty7COFcr9iJ90axkAqPVaJ1NE,3874
@@ -56,15 +56,15 @@ ibm_watsonx_orchestrate/cli/commands/evaluations/evaluations_controller.py,sha25
56
56
  ibm_watsonx_orchestrate/cli/commands/knowledge_bases/knowledge_bases_command.py,sha256=hOzRcGVoqq7dTc4bSregKxH-kYbrVqaFdhBLawqnRNo,2668
57
57
  ibm_watsonx_orchestrate/cli/commands/knowledge_bases/knowledge_bases_controller.py,sha256=d9RSBy2S2nn8vWrghovGb1owe7Zu8LywOm0nIdzlXiU,11567
58
58
  ibm_watsonx_orchestrate/cli/commands/login/login_command.py,sha256=xArMiojoozg7Exn6HTpbTcjDO2idZRA-y0WV-_Ic1Sk,651
59
- ibm_watsonx_orchestrate/cli/commands/models/model_provider_mapper.py,sha256=mbvBR5o9M7W6OpTZyd6TtSEOIXq07dPYz4hv5zDrsd0,8129
59
+ ibm_watsonx_orchestrate/cli/commands/models/model_provider_mapper.py,sha256=ldAMx0Vz5cf_ngADzdMrku7twmVmIT4EQ43YrPzgSKk,8855
60
60
  ibm_watsonx_orchestrate/cli/commands/models/models_command.py,sha256=PW-PIM5Nq0qdCopWjANGBWEuEoA3NLTFThYrN8ggGCI,6425
61
61
  ibm_watsonx_orchestrate/cli/commands/models/models_controller.py,sha256=wcy16LPZy3n1VLPqAusyfmw0ubpANDgTKvQSz9Ng36Y,18450
62
- ibm_watsonx_orchestrate/cli/commands/partners/partners_command.py,sha256=u1HRdijdY4Z8Hq0lEZd0lhDJECkIkf-80f5jEQiqMMk,398
62
+ ibm_watsonx_orchestrate/cli/commands/partners/partners_command.py,sha256=YpTlKKinQw1QdM4yXYjSrMtoAcwc1b9GoO6Wv1NmgKc,385
63
63
  ibm_watsonx_orchestrate/cli/commands/partners/partners_controller.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
64
64
  ibm_watsonx_orchestrate/cli/commands/partners/offering/partners_offering_command.py,sha256=X6u5zGwKYY1Uc2szaVHCIyMlFJBzp8o8JgVZUxcZPd8,1727
65
65
  ibm_watsonx_orchestrate/cli/commands/partners/offering/partners_offering_controller.py,sha256=RX0DDdpZ07mEtURF_-4uCY4lgCidbYnK4x1Y62bqvLw,18256
66
66
  ibm_watsonx_orchestrate/cli/commands/partners/offering/types.py,sha256=y69q4w9Kz9_n8KmvGhZa_SNyTdm_qjwhbRSlm02qPio,3352
67
- ibm_watsonx_orchestrate/cli/commands/server/server_command.py,sha256=00Ij87jfaDZAO_CksATYzGzr4LHZ2D32W77ynxKy73s,28489
67
+ ibm_watsonx_orchestrate/cli/commands/server/server_command.py,sha256=cMjaAXEPMN-OkenqIbckPisPV093rabOxkLKmNiyxTc,28956
68
68
  ibm_watsonx_orchestrate/cli/commands/server/types.py,sha256=DGLopPbLFf5yH5-hzsFf5Uaw158QHwkTAcwydbUmZ3Q,4416
69
69
  ibm_watsonx_orchestrate/cli/commands/settings/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
70
70
  ibm_watsonx_orchestrate/cli/commands/settings/settings_command.py,sha256=CzXRkd-97jXyS6LtaaNtMah-aZu0919dYl-mDwzGThc,344
@@ -72,7 +72,7 @@ ibm_watsonx_orchestrate/cli/commands/settings/observability/__init__.py,sha256=4
72
72
  ibm_watsonx_orchestrate/cli/commands/settings/observability/observability_command.py,sha256=TAkpKwoqocsShSgEeR6LzHCzJx16VDQ6cYsbpljxeqI,372
73
73
  ibm_watsonx_orchestrate/cli/commands/settings/observability/langfuse/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
74
74
  ibm_watsonx_orchestrate/cli/commands/settings/observability/langfuse/langfuse_command.py,sha256=Wa0L8E44EdxH9LdOvmnluLk_ApJVfTLauNOC1kV4W8k,6515
75
- ibm_watsonx_orchestrate/cli/commands/toolkit/toolkit_command.py,sha256=ABW_KAxTUbAqLOpZrZz0228oOHBghi2aQU0x3rVrmf4,5679
75
+ ibm_watsonx_orchestrate/cli/commands/toolkit/toolkit_command.py,sha256=dgmfI3PA04By3W526BEOZp0jJE5eVoxEUMbPG0JxUlE,5653
76
76
  ibm_watsonx_orchestrate/cli/commands/toolkit/toolkit_controller.py,sha256=lo9xahKQiPhm4xh97O_twkzLO0GhXDzAi1rZT0ybQpA,13027
77
77
  ibm_watsonx_orchestrate/cli/commands/tools/tools_command.py,sha256=1RXndNL8Ztl6YEVl4rW6sg0m0hE9d0RhT2Oac45ui2M,3945
78
78
  ibm_watsonx_orchestrate/cli/commands/tools/tools_controller.py,sha256=Q5ZqS5j7FXcVdnuQXcOUTACPJchBEBxrYWh9NM0RLaQ,47593
@@ -107,8 +107,8 @@ ibm_watsonx_orchestrate/client/toolkit/toolkit_client.py,sha256=TLFNS39EeBD_t4Y-
107
107
  ibm_watsonx_orchestrate/client/tools/tempus_client.py,sha256=iD7Hkzn_LdnFivAzGSVKsuuoQpNCFSg2z6qGmQXCDoM,1954
108
108
  ibm_watsonx_orchestrate/client/tools/tool_client.py,sha256=kYwQp-ym9dYQDOFSTnXNyeh8wzl39LpBJqHSNT9EKT0,2113
109
109
  ibm_watsonx_orchestrate/client/voice_configurations/voice_configurations_client.py,sha256=M5xIPLiVNpP-zxQw8CTNT9AiBjeXXmJiNaE142e2A3E,2682
110
- ibm_watsonx_orchestrate/docker/compose-lite.yml,sha256=npatCyRqJaxs54DFRcvFp3f4fRDWmkZt_WMKABtnt0o,45993
111
- ibm_watsonx_orchestrate/docker/default.env,sha256=eer2U35ztfstcrafMZ9OA7Ar25paPgRO_DmhZqWYDxI,6284
110
+ ibm_watsonx_orchestrate/docker/compose-lite.yml,sha256=niF_ir68D_YdjrZWGUOy8eNLV-K5PX_xVWhdZEC2Crk,48041
111
+ ibm_watsonx_orchestrate/docker/default.env,sha256=n5dKgNpnKpA-bsJqlrg17K7UqutFGk1bBvtyReCaZpw,6372
112
112
  ibm_watsonx_orchestrate/docker/proxy-config-single.yaml,sha256=WEbK4ENFuTCYhzRu_QblWp1_GMARgZnx5vReQafkIG8,308
113
113
  ibm_watsonx_orchestrate/docker/start-up.sh,sha256=LTtwHp0AidVgjohis2LXGvZnkFQStOiUAxgGABOyeUI,1811
114
114
  ibm_watsonx_orchestrate/docker/sdk/ibm_watsonx_orchestrate-0.6.0-py3-none-any.whl,sha256=Hi3-owh5OM0Jz2ihX9nLoojnr7Ky1TV-GelyqLcewLE,2047417
@@ -116,14 +116,14 @@ ibm_watsonx_orchestrate/docker/sdk/ibm_watsonx_orchestrate-0.6.0.tar.gz,sha256=e
116
116
  ibm_watsonx_orchestrate/docker/tempus/common-config.yaml,sha256=Zo3F36F5DV4VO_vUg1RG-r4WhcukVh79J2fXhGl6j0A,22
117
117
  ibm_watsonx_orchestrate/flow_builder/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
118
118
  ibm_watsonx_orchestrate/flow_builder/data_map.py,sha256=LinePFgb5mBnrvNmPkFe3rq5oYJZSjcgmaEGpE6dVwc,586
119
- ibm_watsonx_orchestrate/flow_builder/node.py,sha256=U7-cYYhe7Gj_j6U0dw1ufaPROvXmFo30ZI8s7eTXZlk,9940
120
- ibm_watsonx_orchestrate/flow_builder/types.py,sha256=BRjSuqt5LXEzBs1XPERiAP6XiVLGvQHEtE3tTuiJLks,69181
119
+ ibm_watsonx_orchestrate/flow_builder/node.py,sha256=ON1A3bhNVfB4Bxns6eUmL2Z1JPNi4bv21AjAE3m0ApU,9960
120
+ ibm_watsonx_orchestrate/flow_builder/types.py,sha256=Gb8YoNCF7i9Fph2999EO9ERikv0kANitTCLEZp732Es,70004
121
121
  ibm_watsonx_orchestrate/flow_builder/utils.py,sha256=8q1jr5i_TzoJpoQxmLiO0g5Uv03BLbTUaRfw8_0VWIY,11931
122
122
  ibm_watsonx_orchestrate/flow_builder/flows/__init__.py,sha256=iRYV0_eXgBBGhuNnvg-mUyPUyCIw5BiallPOp27bzYM,1083
123
123
  ibm_watsonx_orchestrate/flow_builder/flows/constants.py,sha256=-TGneZyjA4YiAtJJK7OmmjDHYQC4mw2e98MPAZqiB50,324
124
- ibm_watsonx_orchestrate/flow_builder/flows/decorators.py,sha256=lr4qSWq5PWqlGFf4fzUQZCVQDHBYflrYwZ24S89Aq80,2794
124
+ ibm_watsonx_orchestrate/flow_builder/flows/decorators.py,sha256=uNoWIwFTfLQ134SoJQqPvIpZ14LuLFNsUVAxgBRqBBA,3129
125
125
  ibm_watsonx_orchestrate/flow_builder/flows/events.py,sha256=VyaBm0sADwr15LWfKbcBQS1M80NKqzYDj3UlW3OpOf4,2984
126
- ibm_watsonx_orchestrate/flow_builder/flows/flow.py,sha256=UmqNjmenPC5SnpZSgnW9edSm-fSp6Akoid7o9O_WXt4,64922
126
+ ibm_watsonx_orchestrate/flow_builder/flows/flow.py,sha256=9n4KMi4YNAua-qGQIjn3jPi0IqnmBEDT15C-PaU81ug,66373
127
127
  ibm_watsonx_orchestrate/run/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
128
128
  ibm_watsonx_orchestrate/run/connections.py,sha256=9twXkNeUx83fP_qYUbJRtumE-wzPPNN2v-IY_8hGndM,1820
129
129
  ibm_watsonx_orchestrate/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -134,8 +134,8 @@ ibm_watsonx_orchestrate/utils/utils.py,sha256=FUSIig8owxN0p9xTpWiTG-VIQKky4cwO52
134
134
  ibm_watsonx_orchestrate/utils/logging/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
135
135
  ibm_watsonx_orchestrate/utils/logging/logger.py,sha256=FzeGnidXAjC7yHrvIaj4KZPeaBBSCniZFlwgr5yV3oA,1037
136
136
  ibm_watsonx_orchestrate/utils/logging/logging.yaml,sha256=9_TKfuFr1barnOKP0fZT5D6MhddiwsXVTFjtRbcOO5w,314
137
- ibm_watsonx_orchestrate-1.12.0b0.dist-info/METADATA,sha256=IrUPk1VyUpYEBp1eItqEivLQky4mwENSrz2I6hupAmE,1363
138
- ibm_watsonx_orchestrate-1.12.0b0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
139
- ibm_watsonx_orchestrate-1.12.0b0.dist-info/entry_points.txt,sha256=SfIT02-Jen5e99OcLhzbcM9Bdyf8SGVOCtnSplgZdQI,69
140
- ibm_watsonx_orchestrate-1.12.0b0.dist-info/licenses/LICENSE,sha256=Shgxx7hTdCOkiVRmfGgp_1ISISrwQD7m2f0y8Hsapl4,1083
141
- ibm_watsonx_orchestrate-1.12.0b0.dist-info/RECORD,,
137
+ ibm_watsonx_orchestrate-1.12.0b1.dist-info/METADATA,sha256=HdxUlECeuTZ6ItU5o4SZPuje-s2Rw1GPiokHl8iOnW0,1363
138
+ ibm_watsonx_orchestrate-1.12.0b1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
139
+ ibm_watsonx_orchestrate-1.12.0b1.dist-info/entry_points.txt,sha256=SfIT02-Jen5e99OcLhzbcM9Bdyf8SGVOCtnSplgZdQI,69
140
+ ibm_watsonx_orchestrate-1.12.0b1.dist-info/licenses/LICENSE,sha256=Shgxx7hTdCOkiVRmfGgp_1ISISrwQD7m2f0y8Hsapl4,1083
141
+ ibm_watsonx_orchestrate-1.12.0b1.dist-info/RECORD,,