ibm-watsonx-orchestrate 1.12.0b0__py3-none-any.whl → 1.13.0b0__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 (66) hide show
  1. ibm_watsonx_orchestrate/__init__.py +2 -1
  2. ibm_watsonx_orchestrate/agent_builder/agents/types.py +5 -5
  3. ibm_watsonx_orchestrate/agent_builder/connections/types.py +34 -3
  4. ibm_watsonx_orchestrate/agent_builder/knowledge_bases/types.py +11 -2
  5. ibm_watsonx_orchestrate/agent_builder/models/types.py +18 -1
  6. ibm_watsonx_orchestrate/agent_builder/toolkits/base_toolkit.py +1 -1
  7. ibm_watsonx_orchestrate/agent_builder/toolkits/types.py +14 -2
  8. ibm_watsonx_orchestrate/agent_builder/tools/__init__.py +1 -1
  9. ibm_watsonx_orchestrate/agent_builder/tools/base_tool.py +1 -1
  10. ibm_watsonx_orchestrate/agent_builder/tools/langflow_tool.py +61 -1
  11. ibm_watsonx_orchestrate/agent_builder/tools/openapi_tool.py +6 -0
  12. ibm_watsonx_orchestrate/agent_builder/tools/types.py +21 -3
  13. ibm_watsonx_orchestrate/agent_builder/voice_configurations/__init__.py +1 -1
  14. ibm_watsonx_orchestrate/agent_builder/voice_configurations/types.py +11 -0
  15. ibm_watsonx_orchestrate/cli/commands/agents/agents_controller.py +29 -53
  16. ibm_watsonx_orchestrate/cli/commands/connections/connections_command.py +2 -2
  17. ibm_watsonx_orchestrate/cli/commands/connections/connections_controller.py +56 -30
  18. ibm_watsonx_orchestrate/cli/commands/copilot/copilot_command.py +25 -2
  19. ibm_watsonx_orchestrate/cli/commands/copilot/copilot_controller.py +249 -14
  20. ibm_watsonx_orchestrate/cli/commands/copilot/copilot_server_controller.py +4 -4
  21. ibm_watsonx_orchestrate/cli/commands/environment/environment_command.py +5 -1
  22. ibm_watsonx_orchestrate/cli/commands/environment/environment_controller.py +6 -3
  23. ibm_watsonx_orchestrate/cli/commands/evaluations/evaluations_command.py +3 -2
  24. ibm_watsonx_orchestrate/cli/commands/evaluations/evaluations_controller.py +1 -1
  25. ibm_watsonx_orchestrate/cli/commands/knowledge_bases/knowledge_bases_controller.py +45 -16
  26. ibm_watsonx_orchestrate/cli/commands/models/model_provider_mapper.py +23 -4
  27. ibm_watsonx_orchestrate/cli/commands/models/models_command.py +2 -2
  28. ibm_watsonx_orchestrate/cli/commands/models/models_controller.py +29 -10
  29. ibm_watsonx_orchestrate/cli/commands/partners/offering/partners_offering_controller.py +21 -4
  30. ibm_watsonx_orchestrate/cli/commands/partners/offering/types.py +7 -15
  31. ibm_watsonx_orchestrate/cli/commands/partners/partners_command.py +1 -1
  32. ibm_watsonx_orchestrate/cli/commands/server/server_command.py +30 -20
  33. ibm_watsonx_orchestrate/cli/commands/toolkit/toolkit_command.py +2 -2
  34. ibm_watsonx_orchestrate/cli/commands/toolkit/toolkit_controller.py +139 -27
  35. ibm_watsonx_orchestrate/cli/commands/tools/tools_command.py +2 -2
  36. ibm_watsonx_orchestrate/cli/commands/tools/tools_controller.py +79 -36
  37. ibm_watsonx_orchestrate/cli/commands/voice_configurations/voice_configurations_controller.py +23 -11
  38. ibm_watsonx_orchestrate/cli/common.py +26 -0
  39. ibm_watsonx_orchestrate/cli/config.py +33 -2
  40. ibm_watsonx_orchestrate/client/connections/connections_client.py +1 -14
  41. ibm_watsonx_orchestrate/client/copilot/cpe/copilot_cpe_client.py +34 -1
  42. ibm_watsonx_orchestrate/client/knowledge_bases/knowledge_base_client.py +6 -2
  43. ibm_watsonx_orchestrate/client/model_policies/model_policies_client.py +1 -1
  44. ibm_watsonx_orchestrate/client/models/models_client.py +1 -1
  45. ibm_watsonx_orchestrate/client/threads/threads_client.py +34 -0
  46. ibm_watsonx_orchestrate/client/utils.py +29 -7
  47. ibm_watsonx_orchestrate/docker/compose-lite.yml +58 -8
  48. ibm_watsonx_orchestrate/docker/default.env +26 -17
  49. ibm_watsonx_orchestrate/flow_builder/flows/decorators.py +10 -2
  50. ibm_watsonx_orchestrate/flow_builder/flows/flow.py +90 -16
  51. ibm_watsonx_orchestrate/flow_builder/node.py +14 -2
  52. ibm_watsonx_orchestrate/flow_builder/types.py +57 -3
  53. ibm_watsonx_orchestrate/langflow/__init__.py +0 -0
  54. ibm_watsonx_orchestrate/langflow/langflow_utils.py +195 -0
  55. ibm_watsonx_orchestrate/langflow/lfx_deps.py +84 -0
  56. ibm_watsonx_orchestrate/utils/async_helpers.py +31 -0
  57. ibm_watsonx_orchestrate/utils/docker_utils.py +1177 -33
  58. ibm_watsonx_orchestrate/utils/environment.py +165 -20
  59. ibm_watsonx_orchestrate/utils/exceptions.py +1 -1
  60. ibm_watsonx_orchestrate/utils/tokens.py +51 -0
  61. ibm_watsonx_orchestrate/utils/utils.py +63 -4
  62. {ibm_watsonx_orchestrate-1.12.0b0.dist-info → ibm_watsonx_orchestrate-1.13.0b0.dist-info}/METADATA +2 -2
  63. {ibm_watsonx_orchestrate-1.12.0b0.dist-info → ibm_watsonx_orchestrate-1.13.0b0.dist-info}/RECORD +66 -59
  64. {ibm_watsonx_orchestrate-1.12.0b0.dist-info → ibm_watsonx_orchestrate-1.13.0b0.dist-info}/WHEEL +0 -0
  65. {ibm_watsonx_orchestrate-1.12.0b0.dist-info → ibm_watsonx_orchestrate-1.13.0b0.dist-info}/entry_points.txt +0 -0
  66. {ibm_watsonx_orchestrate-1.12.0b0.dist-info → ibm_watsonx_orchestrate-1.13.0b0.dist-info}/licenses/LICENSE +0 -0
@@ -1,4 +1,4 @@
1
- from typing import Dict, Any
1
+ from typing import Dict, Any, List
2
2
  from uuid import uuid4
3
3
 
4
4
  from ibm_watsonx_orchestrate.client.base_api_client import BaseAPIClient
@@ -37,6 +37,39 @@ class CPEClient(BaseAPIClient):
37
37
  if response:
38
38
  return response[-1]
39
39
 
40
+ def refine_agent_with_chats(self, instruction: str, tools: Dict[str, Any], collaborators: Dict[str, Any], knowledge_bases: Dict[str, Any], trajectories_with_feedback: List[List[dict]], model: str | None = None) -> dict:
41
+ """
42
+ Refines an agent's instruction using provided chat trajectories and optional model name.
43
+ This method sends a payload containing the agent's current instruction and a list of chat trajectories
44
+ to the Copilot Prompt Engine (CPE) for refinement.
45
+ Optionally, a target model name can be specified to use in the refinement process.
46
+ Parameters:
47
+ instruction (str): The current instruction or prompt associated with the agent.
48
+ tools (Dict[str, Any]) - a dictionary containing the selected tools
49
+ collaborators (Dict[str, Any]) - a dictionary containing the selected collaborators
50
+ knowledge_bases (Dict[str, Any]) - a dictionary containing the selected knowledge_bases
51
+ trajectories_with_feedback (List[List[dict]]): A list of chat trajectories, where each trajectory is a list
52
+ of message dictionaries that may include user feedback.
53
+ model (str | None): Optional. The name of the model to use for refinement.
54
+ Returns:
55
+ dict: The last response from the CPE containing the refined instruction.
56
+ """
57
+
58
+ payload = {
59
+ "trajectories_with_feedback":trajectories_with_feedback,
60
+ "instruction":instruction,
61
+ "tools": tools,
62
+ "collaborators": collaborators,
63
+ "knowledge_bases": knowledge_bases
64
+ }
65
+
66
+ if model:
67
+ payload["target_model_name"] = model
68
+
69
+ response = self._post_nd_json("/wxo-cpe/refine-agent-with-trajectories", data=payload)
70
+
71
+ if response:
72
+ return response[-1]
40
73
 
41
74
  def init_with_context(self, model: str | None = None, context_data: Dict[str, Any] = None) -> dict:
42
75
  payload = {
@@ -30,8 +30,12 @@ class KnowledgeBaseClient(BaseAPIClient):
30
30
  def get_by_id(self, knowledge_base_id: str) -> dict:
31
31
  return self._get(f"{self.base_endpoint}/{knowledge_base_id}")
32
32
 
33
- def get_by_names(self, name: List[str]) -> List[dict]:
34
- formatted_names = [f"names={x}" for x in name]
33
+ def get_by_names(self, names: List[str]) -> List[dict]:
34
+ formatted_names = [f"names={x}" for x in names]
35
+ return self._get(f"{self.base_endpoint}?{'&'.join(formatted_names)}")
36
+
37
+ def get_by_ids(self, ids: List[str]) -> List[dict]:
38
+ formatted_names = [f"ids={x}" for x in ids]
35
39
  return self._get(f"{self.base_endpoint}?{'&'.join(formatted_names)}")
36
40
 
37
41
  def status(self, knowledge_base_id: str) -> dict:
@@ -58,7 +58,7 @@ class ModelPoliciesClient(BaseAPIClient):
58
58
  return []
59
59
  raise e
60
60
 
61
- def get_draft_by_name(self, policy_name: str) -> ModelPolicy:
61
+ def get_draft_by_name(self, policy_name: str) -> List[ModelPolicy]:
62
62
  return self.get_drafts_by_names([policy_name])
63
63
 
64
64
 
@@ -60,7 +60,7 @@ class ModelsClient(BaseAPIClient):
60
60
  return []
61
61
  raise e
62
62
 
63
- def get_draft_by_name(self, model_name: str) -> ListVirtualModel:
63
+ def get_draft_by_name(self, model_name: str) -> List[ListVirtualModel]:
64
64
  return self.get_drafts_by_names([model_name])
65
65
 
66
66
 
@@ -0,0 +1,34 @@
1
+ from ibm_watsonx_orchestrate.client.base_api_client import BaseAPIClient
2
+
3
+
4
+ class ThreadsClient(BaseAPIClient):
5
+ """
6
+ Client to handle read operations for Threads (chat history- trajectories) endpoints
7
+ """
8
+
9
+ def __init__(self, *args, **kwargs):
10
+ super().__init__(*args, **kwargs)
11
+ self.base_endpoint = "/threads"
12
+
13
+ def get_all_threads(self, agent_id) -> dict:
14
+ return self._get(self.base_endpoint, params={"agent_id": agent_id})
15
+
16
+ def get_thread_messages(self, thread_id) -> dict:
17
+ return self._get(f"{self.base_endpoint}/{thread_id}/messages")
18
+
19
+ def get(self) -> dict:
20
+ return self._get(self.base_endpoint)
21
+
22
+ def get_threads_messages(self, thread_ids: list[str]):
23
+ """
24
+ get the messages for a list of threads (chats) ids
25
+ :param thread_ids:
26
+ :param threads_client:
27
+ :return:
28
+ """
29
+ all_thread_messages = []
30
+ for thread_id in thread_ids:
31
+ thread_messages = self.get_thread_messages(thread_id=thread_id)
32
+ all_thread_messages.append(thread_messages)
33
+
34
+ return all_thread_messages
@@ -175,23 +175,24 @@ def instantiate_client(client: type[T] , url: str | None=None) -> T:
175
175
  raise FileNotFoundError(message)
176
176
 
177
177
 
178
+ def get_arm_architectures () -> list[str]:
179
+ # NOTE: intentionally omitting 32 bit arm architectures.
180
+ return ["aarch64", "arm64", "arm", "aarch64_be", "armv8b", "armv8l"]
181
+
182
+
178
183
  def get_architecture () -> str:
179
184
  arch = platform.machine().lower()
180
185
  if arch in ("amd64", "x86_64"):
181
186
  return "amd64"
182
-
183
- elif arch == "i386":
184
- return "386"
185
-
186
- elif arch in ("aarch64", "arm64", "arm"):
187
- return "arm"
187
+ elif arch in get_arm_architectures():
188
+ return arch
188
189
 
189
190
  else:
190
191
  raise Exception("Unsupported architecture %s" % arch)
191
192
 
192
193
 
193
194
  def is_arm_architecture () -> bool:
194
- return platform.machine().lower() in ("aarch64", "arm64", "arm")
195
+ return platform.machine().lower() in get_arm_architectures()
195
196
 
196
197
 
197
198
  def get_os_type () -> str:
@@ -201,3 +202,24 @@ def get_os_type () -> str:
201
202
 
202
203
  else:
203
204
  raise Exception("Unsupported operating system %s" % system)
205
+
206
+ def concat_bin_files(target_bin_file: str, source_files: list[str], read_chunk_size: int = None,
207
+ delete_source_files_post: bool = True) -> None:
208
+ if read_chunk_size is None:
209
+ # default read chunk size is 100 MB.
210
+ read_chunk_size = 100 * 1024 * 1024
211
+
212
+ with open(target_bin_file, "wb") as target:
213
+ for source_file in source_files:
214
+ with open(source_file, "rb") as source:
215
+ while True:
216
+ source_chunk = source.read(read_chunk_size)
217
+
218
+ if source_chunk:
219
+ target.write(source_chunk)
220
+
221
+ else:
222
+ break
223
+
224
+ if delete_source_files_post is True:
225
+ os.remove(source_file)
@@ -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'
@@ -202,7 +241,7 @@ services:
202
241
  - "wxo-server-minio"
203
242
 
204
243
  wxo-milvus-etcd:
205
- image: quay.io/coreos/etcd:v3.5.18
244
+ image: ${ETCD_REGISTRY:-quay.io}/coreos/etcd:${ETCD_TAG:-v3.5.18}
206
245
  environment:
207
246
  - ETCD_AUTO_COMPACTION_MODE=revision
208
247
  - ETCD_AUTO_COMPACTION_RETENTION=1000
@@ -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}
@@ -533,7 +580,7 @@ services:
533
580
  # IBM AGENT-OPS
534
581
  ########################
535
582
  elasticsearch:
536
- image: docker.elastic.co/elasticsearch/elasticsearch:8.19.0
583
+ image: ${ELASTICSEARCH_REGISTRY:-docker.elastic.co}/elasticsearch/elasticsearch:${ELASTICSEARCH_TAG:-8.19.0}
537
584
  profiles: [ibm-telemetry]
538
585
  environment:
539
586
  - discovery.type=single-node
@@ -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=24-09-2025-17d7c67
62
62
  SERVER_REGISTRY=
63
63
 
64
- WORKER_TAG=09-09-2025-2164abd
64
+ WORKER_TAG=24-09-2025-17d7c67
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=19-10-2025-e48ad3a
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=22-09-2025-e35f498
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=16-09-2025-cb6b9df
87
90
  TRM_REGISTRY=
88
91
 
89
- TR_TAG=09-09-2025-6e9d73d
92
+ TR_TAG=24-09-2025-a515038
90
93
  TR_REGISTRY=
91
94
 
92
- BUILDER_TAG=12-09-2025-e441686
95
+ BUILDER_TAG=24-09-2025-f9b68d8
93
96
  BUILDER_REGISTRY=
94
97
 
95
- FLOW_RUNTIME_TAG=15-09-2025-2e8478c
98
+ FLOW_RUNTIME_TAG=22-09-2025-0bd3f58
96
99
  FLOW_RUMTIME_REGISTRY=
97
100
 
98
101
 
@@ -105,7 +108,7 @@ JAEGER_PROXY_REGISTRY=
105
108
  SOCKET_HANDLER_TAG=29-05-2025
106
109
  SOCKET_HANDLER_REGISTRY=
107
110
 
108
- CPE_TAG=29-08-2025-e612bea
111
+ CPE_TAG=24-09-2025-2be3101
109
112
  CPE_REGISTRY=
110
113
 
111
114
  VOICE_CONTROLLER_TAG=12-09-2025-0e04772
@@ -118,12 +121,18 @@ 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
 
130
+ ETCD_TAG=
131
+ ETCD_REGISTRY=
132
+
133
+ ELASTICSEARCH_TAG=
134
+ ELASTICSEARCH_REGISTRY=
135
+
127
136
  # END -- IMAGE REGISTRIES AND TAGS
128
137
 
129
138
  CPD_VERIFY=true
@@ -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
@@ -33,8 +35,11 @@ def flow(*args,
33
35
  description: str|None=None,
34
36
  input_schema: type[BaseModel] | None = None,
35
37
  output_schema: type[BaseModel] | None = None,
38
+ private_schema: type[BaseModel] | None = None,
36
39
  initiators: Sequence[str] = (),
37
- schedulable: bool = False):
40
+ schedulable: bool = False,
41
+ llm_model: str|ListVirtualModel|None=None,
42
+ agent_conversation_memory_turns_limit: int|None=None):
38
43
  """Decorator to mark a function as a flow model builder."""
39
44
 
40
45
  def decorator(func: Callable):
@@ -59,8 +64,11 @@ def flow(*args,
59
64
  description = node_spec.description,
60
65
  input_schema = input_schema,
61
66
  output_schema = output_schema,
67
+ private_schema = private_schema,
62
68
  initiators = initiators,
63
- schedulable = schedulable)
69
+ schedulable = schedulable,
70
+ llm_model = llm_model,
71
+ agent_conversation_memory_turns_limit = agent_conversation_memory_turns_limit)
64
72
 
65
73
  # logger.info("Creating flow model: %s", a_model.spec.name)
66
74