ibm-watsonx-orchestrate 1.0.0__py3-none-any.whl → 1.1.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- ibm_watsonx_orchestrate/__init__.py +1 -14
- ibm_watsonx_orchestrate/agent_builder/tools/python_tool.py +7 -2
- ibm_watsonx_orchestrate/cli/commands/server/server_command.py +179 -52
- ibm_watsonx_orchestrate/cli/commands/tools/tools_controller.py +6 -10
- ibm_watsonx_orchestrate/cli/config.py +6 -2
- ibm_watsonx_orchestrate/cli/main.py +5 -5
- ibm_watsonx_orchestrate/client/credentials.py +1 -1
- ibm_watsonx_orchestrate/client/knowledge_bases/knowledge_base_client.py +15 -10
- ibm_watsonx_orchestrate/client/service_instance.py +2 -1
- ibm_watsonx_orchestrate/docker/compose-lite.yml +20 -18
- ibm_watsonx_orchestrate/docker/default.env +25 -22
- {ibm_watsonx_orchestrate-1.0.0.dist-info → ibm_watsonx_orchestrate-1.1.0.dist-info}/METADATA +1 -1
- {ibm_watsonx_orchestrate-1.0.0.dist-info → ibm_watsonx_orchestrate-1.1.0.dist-info}/RECORD +16 -16
- {ibm_watsonx_orchestrate-1.0.0.dist-info → ibm_watsonx_orchestrate-1.1.0.dist-info}/WHEEL +0 -0
- {ibm_watsonx_orchestrate-1.0.0.dist-info → ibm_watsonx_orchestrate-1.1.0.dist-info}/entry_points.txt +0 -0
- {ibm_watsonx_orchestrate-1.0.0.dist-info → ibm_watsonx_orchestrate-1.1.0.dist-info}/licenses/LICENSE +0 -0
@@ -5,24 +5,11 @@
|
|
5
5
|
|
6
6
|
pkg_name = "ibm-watsonx-orchestrate"
|
7
7
|
|
8
|
-
__version__ = "1.
|
8
|
+
__version__ = "1.1.0"
|
9
9
|
|
10
10
|
|
11
11
|
|
12
|
-
try:
|
13
|
-
from importlib.metadata import version
|
14
|
-
|
15
|
-
ver = version(pkg_name)
|
16
|
-
|
17
|
-
except (ModuleNotFoundError, AttributeError):
|
18
|
-
from importlib_metadata import version as imp_lib_ver
|
19
|
-
|
20
|
-
ver = imp_lib_ver(pkg_name)
|
21
|
-
|
22
|
-
from ibm_watsonx_orchestrate.client.client import Client
|
23
12
|
from ibm_watsonx_orchestrate.utils.logging.logger import setup_logging
|
24
13
|
|
25
|
-
Client.version = ver
|
26
|
-
__version__ = ver
|
27
14
|
setup_logging()
|
28
15
|
|
@@ -121,6 +121,7 @@ def tool(
|
|
121
121
|
_desc = description
|
122
122
|
if description is None and doc is not None:
|
123
123
|
_desc = doc.description
|
124
|
+
|
124
125
|
|
125
126
|
spec = ToolSpec(
|
126
127
|
name=name or fn.__name__,
|
@@ -150,7 +151,11 @@ def tool(
|
|
150
151
|
|
151
152
|
sig = inspect.signature(fn)
|
152
153
|
if not input_schema:
|
153
|
-
|
154
|
+
try:
|
155
|
+
input_schema_model: type[BaseModel] = create_schema_from_function(spec.name, fn, parse_docstring=True)
|
156
|
+
except:
|
157
|
+
logger.warning("Unable to properly parse parameter descriptions due to incorrectly formatted docstring. This may result in degraded agent performance. To fix this, please ensure the docstring conforms to Google's docstring format.")
|
158
|
+
input_schema_model: type[BaseModel] = create_schema_from_function(spec.name, fn, parse_docstring=False)
|
154
159
|
input_schema_json = input_schema_model.model_json_schema()
|
155
160
|
input_schema_json = dereference_refs(input_schema_json)
|
156
161
|
|
@@ -165,7 +170,7 @@ def tool(
|
|
165
170
|
)
|
166
171
|
else:
|
167
172
|
spec.input_schema = input_schema
|
168
|
-
|
173
|
+
|
169
174
|
_validate_input_schema(spec.input_schema)
|
170
175
|
|
171
176
|
if not output_schema:
|
@@ -1,30 +1,25 @@
|
|
1
|
+
import importlib.resources as resources
|
1
2
|
import logging
|
2
|
-
import
|
3
|
+
import os
|
4
|
+
import platform
|
3
5
|
import subprocess
|
6
|
+
import sys
|
4
7
|
import tempfile
|
5
|
-
from pathlib import Path
|
6
|
-
import requests
|
7
8
|
import time
|
8
|
-
import
|
9
|
-
import platform
|
10
|
-
|
9
|
+
from pathlib import Path
|
11
10
|
|
12
|
-
import typer
|
13
|
-
import importlib.resources as resources
|
14
11
|
import jwt
|
12
|
+
import requests
|
13
|
+
import typer
|
14
|
+
from dotenv import dotenv_values
|
15
15
|
|
16
|
-
from dotenv import dotenv_values, load_dotenv
|
17
|
-
|
18
|
-
from ibm_watsonx_orchestrate.client.agents.agent_client import AgentClient
|
19
|
-
from ibm_watsonx_orchestrate.client.analytics.llm.analytics_llm_client import AnalyticsLLMClient, AnalyticsLLMConfig, \
|
20
|
-
AnalyticsLLMUpsertToolIdentifier
|
21
16
|
from ibm_watsonx_orchestrate.client.utils import instantiate_client, check_token_validity, is_local_dev
|
22
|
-
|
23
|
-
from ibm_watsonx_orchestrate.cli.
|
17
|
+
from ibm_watsonx_orchestrate.cli.commands.environment.environment_controller import _login
|
18
|
+
from ibm_watsonx_orchestrate.cli.config import LICENSE_HEADER, \
|
19
|
+
ENV_ACCEPT_LICENSE
|
24
20
|
from ibm_watsonx_orchestrate.cli.config import PROTECTED_ENV_NAME, clear_protected_env_credentials_token, Config, \
|
25
|
-
AUTH_CONFIG_FILE_FOLDER, AUTH_CONFIG_FILE, AUTH_MCSP_TOKEN_OPT,
|
26
|
-
|
27
|
-
from dotenv import dotenv_values, load_dotenv
|
21
|
+
AUTH_CONFIG_FILE_FOLDER, AUTH_CONFIG_FILE, AUTH_MCSP_TOKEN_OPT, AUTH_SECTION_HEADER, USER_ENV_CACHE_HEADER
|
22
|
+
from ibm_watsonx_orchestrate.client.agents.agent_client import AgentClient
|
28
23
|
|
29
24
|
logger = logging.getLogger(__name__)
|
30
25
|
|
@@ -52,11 +47,11 @@ def ensure_docker_compose_installed() -> list:
|
|
52
47
|
typer.echo("Unable to find an installed docker-compose or docker compose")
|
53
48
|
sys.exit(1)
|
54
49
|
|
55
|
-
def docker_login(
|
50
|
+
def docker_login(api_key: str, registry_url: str, username:str = "iamapikey") -> None:
|
56
51
|
logger.info(f"Logging into Docker registry: {registry_url} ...")
|
57
52
|
result = subprocess.run(
|
58
|
-
["docker", "login", "-u",
|
59
|
-
input=
|
53
|
+
["docker", "login", "-u", username, "--password-stdin", registry_url],
|
54
|
+
input=api_key.encode("utf-8"),
|
60
55
|
capture_output=True,
|
61
56
|
)
|
62
57
|
if result.returncode != 0:
|
@@ -64,6 +59,24 @@ def docker_login(iam_api_key: str, registry_url: str) -> None:
|
|
64
59
|
sys.exit(1)
|
65
60
|
logger.info("Successfully logged in to Docker.")
|
66
61
|
|
62
|
+
def docker_login_by_dev_edition_source(env_dict: dict, source: str) -> None:
|
63
|
+
registry_url = env_dict["REGISTRY_URL"]
|
64
|
+
if source == "internal":
|
65
|
+
iam_api_key = env_dict.get("DOCKER_IAM_KEY")
|
66
|
+
if not iam_api_key:
|
67
|
+
raise ValueError("DOCKER_IAM_KEY is required in the environment file if WO_DEVELOPER_EDITION_SOURCE is set to 'internal'.")
|
68
|
+
docker_login(iam_api_key, registry_url, "iamapikey")
|
69
|
+
elif source == "myibm":
|
70
|
+
wo_entitlement_key = env_dict.get("WO_ENTITLEMENT_KEY")
|
71
|
+
if not wo_entitlement_key:
|
72
|
+
raise ValueError("WO_ENTITLEMENT_KEY is required in the environment file.")
|
73
|
+
docker_login(wo_entitlement_key, registry_url, "cp")
|
74
|
+
elif source == "orchestrate":
|
75
|
+
wo_auth_type = env_dict.get("WO_AUTH_TYPE")
|
76
|
+
if not wo_auth_type:
|
77
|
+
raise ValueError("WO_AUTH_TYPE is required in the environment file if WO_DEVELOPER_EDITION_SOURCE is set to 'orchestrate'.")
|
78
|
+
api_key, username = get_docker_cred_by_wo_auth_type(env_dict, wo_auth_type)
|
79
|
+
docker_login(api_key, registry_url, username)
|
67
80
|
|
68
81
|
def get_compose_file() -> Path:
|
69
82
|
with resources.as_file(
|
@@ -93,9 +106,51 @@ def merge_env(
|
|
93
106
|
user_env = dotenv_values(str(user_env_path))
|
94
107
|
merged.update(user_env)
|
95
108
|
|
96
|
-
|
97
109
|
return merged
|
98
110
|
|
111
|
+
def get_default_registry_env_vars_by_dev_edition_source(env_dict: dict, source: str) -> dict[str,str]:
|
112
|
+
component_registry_var_names = {key for key in env_dict if key.endswith("_REGISTRY")}
|
113
|
+
|
114
|
+
result = {}
|
115
|
+
if source == "internal":
|
116
|
+
result["REGISTRY_URL"] = "us.icr.io"
|
117
|
+
for name in component_registry_var_names:
|
118
|
+
result[name] = "us.icr.io/watson-orchestrate-private"
|
119
|
+
elif source == "myibm":
|
120
|
+
result["REGISTRY_URL"] = "cp.icr.io"
|
121
|
+
for name in component_registry_var_names:
|
122
|
+
result[name] = "cp.icr.io/cp/wxo-lite"
|
123
|
+
elif source == "orchestrate":
|
124
|
+
raise NotImplementedError("The 'orchestrate' source is not implemented yet.")
|
125
|
+
# TODO: confirm with Tej about the registry url for orchestrate source
|
126
|
+
return result
|
127
|
+
|
128
|
+
def get_dev_edition_source(env_dict: dict) -> str:
|
129
|
+
source = env_dict.get("WO_DEVELOPER_EDITION_SOURCE")
|
130
|
+
|
131
|
+
if source:
|
132
|
+
return source
|
133
|
+
if env_dict.get("WO_INSTANCE"):
|
134
|
+
return "orchestrate"
|
135
|
+
return "myibm"
|
136
|
+
|
137
|
+
def get_docker_cred_by_wo_auth_type(env_dict: dict, auth_type: str) -> tuple[str, str]:
|
138
|
+
if auth_type in {"mcsp", "ibm_iam"}:
|
139
|
+
wo_api_key = env_dict.get("WO_API_KEY")
|
140
|
+
if not wo_api_key:
|
141
|
+
raise ValueError("WO_API_KEY is required in the environment file if the WO_AUTH_TYPE is set to 'mcsp' or 'ibm_iam'.")
|
142
|
+
return wo_api_key, "wouser"
|
143
|
+
elif auth_type == "cpd":
|
144
|
+
wo_api_key = env_dict.get("WO_API_KEY")
|
145
|
+
wo_password = env_dict.get("WO_PASSWORD")
|
146
|
+
if not wo_api_key and not wo_password:
|
147
|
+
raise ValueError("WO_API_KEY or WO_PASSWORD is required in the environment file if the WO_AUTH_TYPE is set to 'cpd'.")
|
148
|
+
wo_username = env_dict.get("WO_USERNAME")
|
149
|
+
if not wo_username:
|
150
|
+
raise ValueError("WO_USERNAME is required in the environment file if the WO_AUTH_TYPE is set to 'cpd'.")
|
151
|
+
return wo_api_key or wo_password, wo_username # type: ignore[return-value]
|
152
|
+
else:
|
153
|
+
raise ValueError(f"Unknown value for WO_AUTH_TYPE: {auth_type}. Must be one of ['mcsp', 'ibm_iam', 'cpd'].")
|
99
154
|
|
100
155
|
def apply_llm_api_key_defaults(env_dict: dict) -> None:
|
101
156
|
llm_value = env_dict.get("WATSONX_APIKEY")
|
@@ -138,7 +193,30 @@ def refresh_local_credentials() -> None:
|
|
138
193
|
clear_protected_env_credentials_token()
|
139
194
|
_login(name=PROTECTED_ENV_NAME, apikey=None)
|
140
195
|
|
196
|
+
NON_SECRET_ENV_ITEMS = {
|
197
|
+
"WO_DEVELOPER_EDITION_SOURCE",
|
198
|
+
"WO_INSTANCE",
|
199
|
+
"USE_SAAS_ML_TOOLS_RUNTIME",
|
200
|
+
"WXO_MCSP_EXCHANGE_URL",
|
201
|
+
"OPENSOURCE_REGISTRY_PROXY"
|
202
|
+
}
|
203
|
+
def persist_user_env(env: dict, include_secrets: bool = False) -> None:
|
204
|
+
if include_secrets:
|
205
|
+
persistable_env = env
|
206
|
+
else:
|
207
|
+
persistable_env = {k:env[k] for k in NON_SECRET_ENV_ITEMS if k in env}
|
141
208
|
|
209
|
+
cfg = Config()
|
210
|
+
cfg.save(
|
211
|
+
{
|
212
|
+
USER_ENV_CACHE_HEADER: persistable_env
|
213
|
+
}
|
214
|
+
)
|
215
|
+
|
216
|
+
def get_persisted_user_env() -> dict | None:
|
217
|
+
cfg = Config()
|
218
|
+
user_env = cfg.get(USER_ENV_CACHE_HEADER) if cfg.get(USER_ENV_CACHE_HEADER) else None
|
219
|
+
return user_env
|
142
220
|
|
143
221
|
def run_compose_lite(final_env_file: Path, experimental_with_langfuse=False, with_flow_runtime=False) -> None:
|
144
222
|
compose_path = get_compose_file()
|
@@ -256,12 +334,20 @@ def run_compose_lite_ui(user_env_file: Path) -> bool:
|
|
256
334
|
compose_path = get_compose_file()
|
257
335
|
compose_command = ensure_docker_compose_installed()
|
258
336
|
ensure_docker_installed()
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
337
|
+
|
338
|
+
default_env = read_env_file(get_default_env_file())
|
339
|
+
user_env = read_env_file(user_env_file) if user_env_file else {}
|
340
|
+
if not user_env:
|
341
|
+
user_env = get_persisted_user_env()
|
342
|
+
|
343
|
+
dev_edition_source = get_dev_edition_source(user_env)
|
344
|
+
default_registry_vars = get_default_registry_env_vars_by_dev_edition_source(default_env, source=dev_edition_source)
|
345
|
+
|
346
|
+
merged_env_dict = {
|
347
|
+
**default_env,
|
348
|
+
**default_registry_vars,
|
349
|
+
**user_env,
|
350
|
+
}
|
265
351
|
|
266
352
|
_login(name=PROTECTED_ENV_NAME)
|
267
353
|
auth_cfg = Config(AUTH_CONFIG_FILE_FOLDER, AUTH_CONFIG_FILE)
|
@@ -271,21 +357,17 @@ def run_compose_lite_ui(user_env_file: Path) -> bool:
|
|
271
357
|
tenant_id = token.get('woTenantId', None)
|
272
358
|
merged_env_dict['REACT_APP_TENANT_ID'] = tenant_id
|
273
359
|
|
274
|
-
|
275
|
-
registry_url = merged_env_dict.get("REGISTRY_URL")
|
276
|
-
if not registry_url:
|
277
|
-
logger.error("Error: REGISTRY_URL is required in the environment file.")
|
278
|
-
sys.exit(1)
|
279
|
-
|
280
360
|
agent_client = instantiate_client(AgentClient)
|
281
361
|
agents = agent_client.get()
|
282
362
|
if not agents:
|
283
363
|
logger.error("No agents found for the current environment. Please create an agent before starting the chat.")
|
284
364
|
sys.exit(1)
|
285
365
|
|
286
|
-
|
287
|
-
|
288
|
-
|
366
|
+
try:
|
367
|
+
docker_login_by_dev_edition_source(merged_env_dict, dev_edition_source)
|
368
|
+
except ValueError as ignored:
|
369
|
+
# do nothing, as the docker login here is not mandatory
|
370
|
+
pass
|
289
371
|
|
290
372
|
#These are to removed warning and not used in UI component
|
291
373
|
if not 'WATSONX_SPACE_ID' in merged_env_dict:
|
@@ -436,6 +518,35 @@ def run_compose_lite_logs(final_env_file: Path, is_reset: bool = False) -> None:
|
|
436
518
|
)
|
437
519
|
sys.exit(1)
|
438
520
|
|
521
|
+
def confirm_accepts_license_agreement(accepts_by_argument: bool):
|
522
|
+
cfg = Config()
|
523
|
+
accepts_license = cfg.read(LICENSE_HEADER, ENV_ACCEPT_LICENSE)
|
524
|
+
if accepts_license != True:
|
525
|
+
logger.warning(('''
|
526
|
+
By running the following command your machine will install IBM watsonx Orchestrate Developer Edition, which is governed by the following IBM license agreement:
|
527
|
+
- * https://www.ibm.com/support/customer/csol/terms/?id=L-YRMZ-PB6MHM&lc=en
|
528
|
+
Additionally, the following prerequisite open source programs will be obtained from Docker Hub and will be installed on your machine. Each of the below programs are Separately Licensed Code, and are governed by the separate license agreements identified below, and not by the IBM license agreement:
|
529
|
+
* redis (7.2) - https://github.com/redis/redis/blob/7.2.7/COPYING
|
530
|
+
* minio - https://github.com/minio/minio/blob/master/LICENSE
|
531
|
+
* milvus-io - https://github.com/milvus-io/milvus/blob/master/LICENSE
|
532
|
+
* etcd - https://github.com/etcd-io/etcd/blob/main/LICENSE
|
533
|
+
* clickhouse-server - https://github.com/ClickHouse/ClickHouse/blob/master/LICENSE
|
534
|
+
* langfuse - https://github.com/langfuse/langfuse/blob/main/LICENSE
|
535
|
+
After installation, you are solely responsible for obtaining and installing updates and fixes, including security patches, for the above prerequisite open source programs. To update images the customer will run `orchestrate server reset && orchestrate server start -e .env`.
|
536
|
+
''').strip())
|
537
|
+
if not accepts_by_argument:
|
538
|
+
result = input('\nTo accept the terms and conditions of the IBM license agreement and the Separately Licensed Code licenses above please enter "I accept": ')
|
539
|
+
else:
|
540
|
+
result = None
|
541
|
+
if result == 'I accept' or accepts_by_argument:
|
542
|
+
cfg.write(LICENSE_HEADER, ENV_ACCEPT_LICENSE, True)
|
543
|
+
else:
|
544
|
+
logger.error('The terms and conditions were not accepted, exiting.')
|
545
|
+
exit(1)
|
546
|
+
|
547
|
+
|
548
|
+
|
549
|
+
|
439
550
|
@server_app.command(name="start")
|
440
551
|
def server_start(
|
441
552
|
user_env_file: str = typer.Option(
|
@@ -454,33 +565,46 @@ def server_start(
|
|
454
565
|
help='Option to start server with tempus-runtime.',
|
455
566
|
hidden=True
|
456
567
|
)
|
568
|
+
,
|
569
|
+
persist_env_secrets: bool = typer.Option(
|
570
|
+
False,
|
571
|
+
'--persist-env-secrets', '-p',
|
572
|
+
help='Option to store secret values from the provided env file in the config file (~/.config/orchestrate/config.yaml)',
|
573
|
+
hidden=True
|
574
|
+
),
|
575
|
+
accept_terms_and_conditions: bool = typer.Option(
|
576
|
+
False,
|
577
|
+
"--accept-terms-and-conditions",
|
578
|
+
help="By providing this flag you accept the terms and conditions outlined in the logs on server start."
|
579
|
+
),
|
457
580
|
):
|
581
|
+
confirm_accepts_license_agreement(accept_terms_and_conditions)
|
582
|
+
|
458
583
|
if user_env_file and not Path(user_env_file).exists():
|
459
584
|
logger.error(f"Error: The specified environment file '{user_env_file}' does not exist.")
|
460
585
|
sys.exit(1)
|
461
586
|
ensure_docker_installed()
|
462
587
|
|
463
|
-
|
588
|
+
default_env = read_env_file(get_default_env_file())
|
589
|
+
user_env = read_env_file(user_env_file) if user_env_file else {}
|
590
|
+
persist_user_env(user_env, include_secrets=persist_env_secrets)
|
591
|
+
dev_edition_source = get_dev_edition_source(user_env)
|
592
|
+
default_registry_vars = get_default_registry_env_vars_by_dev_edition_source(default_env, source=dev_edition_source)
|
464
593
|
|
465
|
-
merged_env_dict =
|
466
|
-
|
467
|
-
|
468
|
-
|
594
|
+
merged_env_dict = {
|
595
|
+
**default_env,
|
596
|
+
**default_registry_vars,
|
597
|
+
**user_env,
|
598
|
+
}
|
469
599
|
|
470
600
|
merged_env_dict['DBTAG'] = get_dbtag_from_architecture(merged_env_dict=merged_env_dict)
|
471
601
|
|
472
|
-
|
473
|
-
|
474
|
-
|
475
|
-
|
476
|
-
|
477
|
-
registry_url = merged_env_dict.get("REGISTRY_URL")
|
478
|
-
if not registry_url:
|
479
|
-
logger.error("Error: REGISTRY_URL is required in the environment file.")
|
602
|
+
try:
|
603
|
+
docker_login_by_dev_edition_source(merged_env_dict, dev_edition_source)
|
604
|
+
except ValueError as e:
|
605
|
+
logger.error(f"Error: {e}")
|
480
606
|
sys.exit(1)
|
481
607
|
|
482
|
-
docker_login(iam_api_key, registry_url)
|
483
|
-
|
484
608
|
apply_llm_api_key_defaults(merged_env_dict)
|
485
609
|
|
486
610
|
|
@@ -511,6 +635,9 @@ def server_start(
|
|
511
635
|
|
512
636
|
logger.info(f"You can run `orchestrate env activate local` to set your environment or `orchestrate chat start` to start the UI service and begin chatting.")
|
513
637
|
|
638
|
+
if experimental_with_langfuse:
|
639
|
+
logger.info(f"You can access the observability platform Langfuse at http://localhost:3010, username: orchestrate@ibm.com, password: orchestrate")
|
640
|
+
|
514
641
|
if with_flow_runtime:
|
515
642
|
logger.info(f"Starting with flow runtime")
|
516
643
|
|
@@ -31,6 +31,8 @@ from ibm_watsonx_orchestrate.client.connections import get_connections_client, g
|
|
31
31
|
from ibm_watsonx_orchestrate.client.utils import instantiate_client
|
32
32
|
from ibm_watsonx_orchestrate.utils.utils import sanatize_app_id
|
33
33
|
|
34
|
+
from ibm_watsonx_orchestrate import __version__
|
35
|
+
|
34
36
|
logger = logging.getLogger(__name__)
|
35
37
|
|
36
38
|
__supported_characters_pattern = re.compile("^(\\w|_)+$")
|
@@ -273,14 +275,8 @@ def import_python_tool(file: str, requirements_file: str = None, app_id: List[st
|
|
273
275
|
resolved_requirements_file = get_resolved_py_tool_reqs_file(tool_file=file, requirements_file=requirements_file,
|
274
276
|
package_root=resolved_package_root)
|
275
277
|
|
276
|
-
if resolved_requirements_file is None:
|
277
|
-
logger.
|
278
|
-
|
279
|
-
if resolved_requirements_file != requirements_file:
|
280
|
-
logger.info(f"Resolved Requirements file: \"{resolved_requirements_file}\"")
|
281
|
-
|
282
|
-
else:
|
283
|
-
logger.info(f"Requirements file: \"{requirements_file}\"")
|
278
|
+
if resolved_requirements_file is not None:
|
279
|
+
logger.info(f"Using requirement file: \"{resolved_requirements_file}\"")
|
284
280
|
|
285
281
|
if resolved_requirements_file is not None:
|
286
282
|
try:
|
@@ -470,7 +466,7 @@ class ToolsController:
|
|
470
466
|
raise typer.BadParameter(f"Symbolic links in packages are not supported. - {path_str}")
|
471
467
|
|
472
468
|
try:
|
473
|
-
zip_tool_artifacts.write(path_str, arcname=
|
469
|
+
zip_tool_artifacts.write(path_str, arcname=str(Path(path_str).relative_to(Path(resolved_package_root))))
|
474
470
|
|
475
471
|
except Exception as ex:
|
476
472
|
logger.error(f"Could not write file {path_str} to artifact. {ex}")
|
@@ -489,7 +485,7 @@ class ToolsController:
|
|
489
485
|
cfg = Config()
|
490
486
|
registry_type = cfg.read(PYTHON_REGISTRY_HEADER, PYTHON_REGISTRY_TYPE_OPT) or DEFAULT_CONFIG_FILE_CONTENT[PYTHON_REGISTRY_HEADER][PYTHON_REGISTRY_TYPE_OPT]
|
491
487
|
|
492
|
-
version =
|
488
|
+
version = __version__
|
493
489
|
if registry_type == RegistryType.LOCAL:
|
494
490
|
requirements.append(f"/packages/ibm_watsonx_orchestrate-0.6.0-py3-none-any.whl\n")
|
495
491
|
elif registry_type == RegistryType.PYPI:
|
@@ -12,6 +12,8 @@ AUTH_SECTION_HEADER = "auth"
|
|
12
12
|
CONTEXT_SECTION_HEADER = "context"
|
13
13
|
ENVIRONMENTS_SECTION_HEADER = "environments"
|
14
14
|
PYTHON_REGISTRY_HEADER = "python_registry"
|
15
|
+
USER_ENV_CACHE_HEADER = "cached_user_env"
|
16
|
+
LICENSE_HEADER = "license"
|
15
17
|
|
16
18
|
# Option Names
|
17
19
|
AUTH_MCSP_API_KEY_OPT = "wxo_mcsp_api_key"
|
@@ -24,6 +26,7 @@ ENV_WXO_URL_OPT = "wxo_url"
|
|
24
26
|
ENV_IAM_URL_OPT = "iam_url"
|
25
27
|
PROTECTED_ENV_NAME = "local"
|
26
28
|
ENV_AUTH_TYPE = "auth_type"
|
29
|
+
ENV_ACCEPT_LICENSE = 'accepts_license_agreements'
|
27
30
|
|
28
31
|
DEFAULT_LOCAL_SERVICE_URL = "http://localhost:4321"
|
29
32
|
CHAT_UI_PORT = "3000"
|
@@ -33,14 +36,15 @@ DEFAULT_CONFIG_FILE = "config.yaml"
|
|
33
36
|
DEFAULT_CONFIG_FILE_CONTENT = {
|
34
37
|
CONTEXT_SECTION_HEADER: {CONTEXT_ACTIVE_ENV_OPT: None},
|
35
38
|
PYTHON_REGISTRY_HEADER: {
|
36
|
-
PYTHON_REGISTRY_TYPE_OPT: str(RegistryType.
|
39
|
+
PYTHON_REGISTRY_TYPE_OPT: str(RegistryType.PYPI),
|
37
40
|
PYTHON_REGISTRY_TEST_PACKAGE_VERSION_OVERRIDE_OPT: None
|
38
41
|
},
|
39
42
|
ENVIRONMENTS_SECTION_HEADER: {
|
40
43
|
PROTECTED_ENV_NAME: {
|
41
44
|
ENV_WXO_URL_OPT: DEFAULT_LOCAL_SERVICE_URL
|
42
45
|
}
|
43
|
-
}
|
46
|
+
},
|
47
|
+
USER_ENV_CACHE_HEADER: {}
|
44
48
|
}
|
45
49
|
|
46
50
|
AUTH_CONFIG_FILE_FOLDER = f"{os.path.expanduser('~')}/.cache/orchestrate"
|
@@ -18,15 +18,15 @@ app = typer.Typer(
|
|
18
18
|
)
|
19
19
|
app.add_typer(login_app)
|
20
20
|
app.add_typer(environment_app, name="env", help='Add, remove, or select the activate env other commands will interact with (either your local server or a production instance)')
|
21
|
-
app.add_typer(tools_app, name="tools", help='Interact with the tools in your active env')
|
22
21
|
app.add_typer(agents_app, name="agents", help='Interact with the agents in your active env')
|
22
|
+
app.add_typer(tools_app, name="tools", help='Interact with the tools in your active env')
|
23
|
+
app.add_typer(knowledge_bases_app, name="knowledge-bases", help="Upload knowledge your agents can search through to your active env")
|
23
24
|
app.add_typer(connections_app, name="connections", help='Interact with the agents in your active env')
|
24
|
-
app.add_typer(server_app, name="server", help='Manipulate your local
|
25
|
-
app.add_typer(chat_app, name="chat", help='Launch the chat ui for your local
|
25
|
+
app.add_typer(server_app, name="server", help='Manipulate your local Orchestrate Developer Edition server [requires an Entitlement]')
|
26
|
+
app.add_typer(chat_app, name="chat", help='Launch the chat ui for your local Developer Edition server [requires docker pull credentials]')
|
26
27
|
app.add_typer(models_app, name="models", help='List the available large language models (llms) that can be used in your agent definitions')
|
28
|
+
app.add_typer(channel_app, name="channels", help="Configure channels where your agent can exist on (such as embedded webchat)")
|
27
29
|
app.add_typer(settings_app, name="settings", help='Configure the settings for your active env')
|
28
|
-
app.add_typer(channel_app, name="channels")
|
29
|
-
app.add_typer(knowledge_bases_app, name="knowledge-bases")
|
30
30
|
|
31
31
|
if __name__ == "__main__":
|
32
32
|
app()
|
@@ -37,7 +37,7 @@ class Credentials:
|
|
37
37
|
) -> None:
|
38
38
|
env_credentials = Credentials._get_values_from_env_vars()
|
39
39
|
self.url = url
|
40
|
-
self.iam_url = iam_url
|
40
|
+
self.iam_url = iam_url
|
41
41
|
self.api_key = api_key
|
42
42
|
self.token = token
|
43
43
|
self.local_global_token = None
|
@@ -1,7 +1,8 @@
|
|
1
1
|
from ibm_watsonx_orchestrate.client.base_api_client import BaseAPIClient
|
2
2
|
import json
|
3
3
|
from typing_extensions import List
|
4
|
-
from ibm_watsonx_orchestrate.client.
|
4
|
+
from ibm_watsonx_orchestrate.client.utils import is_local_dev
|
5
|
+
|
5
6
|
|
6
7
|
|
7
8
|
class KnowledgeBaseClient(BaseAPIClient):
|
@@ -9,37 +10,41 @@ class KnowledgeBaseClient(BaseAPIClient):
|
|
9
10
|
Client to handle CRUD operations for Native Knowledge Base endpoint
|
10
11
|
"""
|
11
12
|
|
13
|
+
def __init__(self, *args, **kwargs):
|
14
|
+
super().__init__(*args, **kwargs)
|
15
|
+
self.base_endpoint = "/orchestrate/knowledge-bases" if is_local_dev(self.base_url) else "/knowledge-bases"
|
16
|
+
|
12
17
|
def create(self, payload: dict) -> dict:
|
13
|
-
return self._post_form_data("/
|
18
|
+
return self._post_form_data(f"{self.base_endpoint}/documents", data={ "knowledge_base" : json.dumps(payload) })
|
14
19
|
|
15
20
|
def create_built_in(self, payload: dict, files: list) -> dict:
|
16
|
-
return self._post_form_data("/
|
21
|
+
return self._post_form_data(f"{self.base_endpoint}/documents", data={ "knowledge_base" : json.dumps(payload) }, files=files)
|
17
22
|
|
18
23
|
def get(self) -> dict:
|
19
|
-
return self._get(
|
24
|
+
return self._get(self.base_endpoint)
|
20
25
|
|
21
26
|
def get_by_name(self, name: str) -> List[dict]:
|
22
27
|
kbs = self.get_by_names([name])
|
23
28
|
return None if len(kbs) == 0 else kbs[0]
|
24
29
|
|
25
30
|
def get_by_id(self, knowledge_base_id: str) -> dict:
|
26
|
-
return self._get(f"/
|
31
|
+
return self._get(f"{self.base_endpoint}/{knowledge_base_id}")
|
27
32
|
|
28
33
|
def get_by_names(self, name: List[str]) -> List[dict]:
|
29
34
|
formatted_names = [f"names={x}" for x in name]
|
30
|
-
return self._get(f"
|
35
|
+
return self._get(f"{self.base_endpoint}?{'&'.join(formatted_names)}")
|
31
36
|
|
32
37
|
def status(self, knowledge_base_id: str) -> dict:
|
33
|
-
return self._get(f"/
|
38
|
+
return self._get(f"{self.base_endpoint}/{knowledge_base_id}/status")
|
34
39
|
|
35
40
|
def update(self, knowledge_base_id: str, payload: dict) -> dict:
|
36
|
-
return self._patch_form_data(f"/
|
41
|
+
return self._patch_form_data(f"{self.base_endpoint}/{knowledge_base_id}/documents", data={ "knowledge_base" : json.dumps(payload) })
|
37
42
|
|
38
43
|
def update_with_documents(self, knowledge_base_id: str, payload: dict, files: list) -> dict:
|
39
|
-
return self._patch_form_data(f"/
|
44
|
+
return self._patch_form_data(f"{self.base_endpoint}/{knowledge_base_id}/documents", data={ "knowledge_base" : json.dumps(payload) }, files=files)
|
40
45
|
|
41
46
|
def delete(self, knowledge_base_id: str,) -> dict:
|
42
|
-
return self._delete(f"/
|
47
|
+
return self._delete(f"{self.base_endpoint}/{knowledge_base_id}")
|
43
48
|
|
44
49
|
|
45
50
|
|
@@ -51,7 +51,8 @@ class ServiceInstance(BaseServiceInstance):
|
|
51
51
|
try:
|
52
52
|
match auth_type:
|
53
53
|
case EnvironmentAuthType.MCSP:
|
54
|
-
|
54
|
+
url = self._credentials.iam_url if self._credentials.iam_url is not None else "https://iam.platform.saas.ibm.com"
|
55
|
+
authenticator = MCSPAuthenticator(apikey=self._credentials.api_key, url=url)
|
55
56
|
case EnvironmentAuthType.IBM_CLOUD_IAM:
|
56
57
|
authenticator = IAMAuthenticator(apikey=self._credentials.api_key, url=self._credentials.iam_url)
|
57
58
|
case _:
|
@@ -3,7 +3,7 @@ services:
|
|
3
3
|
# Orchestrate Lite dependencies
|
4
4
|
########################
|
5
5
|
wxo-server-redis:
|
6
|
-
image:
|
6
|
+
image: ${OPENSOURCE_REGISTRY_PROXY:-docker.io}/redis:7.2
|
7
7
|
platform: linux/amd64
|
8
8
|
restart: unless-stopped
|
9
9
|
ports:
|
@@ -13,7 +13,7 @@ services:
|
|
13
13
|
command: redis-server --loglevel warning
|
14
14
|
|
15
15
|
wxo-server-db:
|
16
|
-
image: us.icr.io
|
16
|
+
image: ${DB_REGISTRY:-us.icr.io/watson-orchestrate-private}/wxo-server-db:${DBTAG:-latest}
|
17
17
|
restart: unless-stopped
|
18
18
|
environment:
|
19
19
|
POSTGRES_USER: ${POSTGRES_USER:-postgres}
|
@@ -32,7 +32,7 @@ services:
|
|
32
32
|
command: -c shared_preload_libraries=pgsodium
|
33
33
|
|
34
34
|
wxo-server-connection-manager:
|
35
|
-
image: us.icr.io
|
35
|
+
image: ${CM_REGISTRY:-us.icr.io/watson-orchestrate-private}/wxo-connections:${CM_TAG:-latest}
|
36
36
|
platform: linux/amd64
|
37
37
|
restart: unless-stopped
|
38
38
|
environment:
|
@@ -44,12 +44,13 @@ services:
|
|
44
44
|
DB_PORT: ${DB_PORT:-5432}
|
45
45
|
DB_ENCRYPTION_KEY: abc
|
46
46
|
WXO_SERVER_URL: http://wxo-server:4321
|
47
|
-
MAX_POOL:
|
47
|
+
MAX_POOL: 60
|
48
|
+
DEPLOYMENT_MODE: laptop
|
48
49
|
ports:
|
49
50
|
- 3001:3001
|
50
51
|
|
51
52
|
ui:
|
52
|
-
image: us.icr.io
|
53
|
+
image: ${UI_REGISTRY:-us.icr.io/watson-orchestrate-private}/wxo-chat:${UITAG:-latest}
|
53
54
|
platform: linux/amd64
|
54
55
|
restart: unless-stopped
|
55
56
|
environment:
|
@@ -74,6 +75,7 @@ services:
|
|
74
75
|
MAX_FILE_UPLOAD_SIZE_BYTES_EXCEL: 1048576
|
75
76
|
VCAP_APP_HOST: localhost
|
76
77
|
DEPLOYMENT_PLATFORM: laptop
|
78
|
+
CONNECTION_MANAGER_URL: http://localhost:3001
|
77
79
|
DISMISS_NOTIFICATION_TIMEOUT: 10000
|
78
80
|
STANDALONE: "true"
|
79
81
|
STREAM_TIMEOUT: ${STREAM_TIMEOUT:-120000}
|
@@ -87,7 +89,7 @@ services:
|
|
87
89
|
- ui-data:/data
|
88
90
|
|
89
91
|
wxo-builder:
|
90
|
-
image: us.icr.io
|
92
|
+
image: ${BUILDER_REGISTRY:-us.icr.io/watson-orchestrate-private}/wxo-builder:${BUILDER_TAG:-latest}
|
91
93
|
platform: linux/amd64
|
92
94
|
restart: unless-stopped
|
93
95
|
environment:
|
@@ -103,7 +105,7 @@ services:
|
|
103
105
|
retries: 5
|
104
106
|
|
105
107
|
wxo-server-minio:
|
106
|
-
image:
|
108
|
+
image: ${OPENSOURCE_REGISTRY_PROXY:-docker.io}/minio/minio:latest
|
107
109
|
platform: linux/amd64
|
108
110
|
ports:
|
109
111
|
- '9000:9000'
|
@@ -121,7 +123,7 @@ services:
|
|
121
123
|
- wxo-server-minio-data:/data
|
122
124
|
|
123
125
|
wxo-server-minio-setup:
|
124
|
-
image:
|
126
|
+
image: ${OPENSOURCE_REGISTRY_PROXY:-docker.io}/minio/mc:latest
|
125
127
|
platform: linux/amd64
|
126
128
|
depends_on:
|
127
129
|
wxo-server-minio:
|
@@ -135,7 +137,7 @@ services:
|
|
135
137
|
"
|
136
138
|
|
137
139
|
wxo-milvus-standalone:
|
138
|
-
image: milvusdb/milvus:v2.5.6
|
140
|
+
image: ${OPENSOURCE_REGISTRY_PROXY:-docker.io}/milvusdb/milvus:v2.5.6
|
139
141
|
command: ["milvus", "run", "standalone"]
|
140
142
|
security_opt:
|
141
143
|
- seccomp:unconfined
|
@@ -199,7 +201,7 @@ services:
|
|
199
201
|
- wxo-server-redis
|
200
202
|
|
201
203
|
wxo-server:
|
202
|
-
image: us.icr.io
|
204
|
+
image: ${SERVER_REGISTRY:-us.icr.io/watson-orchestrate-private}/wxo-server-server:${SERVER_TAG:-latest}
|
203
205
|
platform: linux/amd64
|
204
206
|
restart: unless-stopped
|
205
207
|
ports:
|
@@ -211,7 +213,7 @@ services:
|
|
211
213
|
command: >
|
212
214
|
bash -c "mkdir -p /tmp/certs &&
|
213
215
|
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /tmp/certs/key.pem -out /tmp/certs/cert.pem -subj '/CN=localhost' &&
|
214
|
-
uvicorn --host 0.0.0.0 --port 4322 --ssl-keyfile /tmp/certs/key.pem --ssl-certfile /tmp/certs/cert.pem --log-config /app/config/logs/log_conf.yaml --log-level debug
|
216
|
+
uvicorn --host 0.0.0.0 --port 4322 --ssl-keyfile /tmp/certs/key.pem --ssl-certfile /tmp/certs/cert.pem --log-config /app/config/logs/log_conf.yaml --workers 2 --log-level debug wo_archer.api.main:app &
|
215
217
|
(for i in {1..20}; do curl --silent --fail -k https://127.0.0.1:4322/health/alive && echo '[INFO] HTTPS Service ready' && break || echo '[INFO] Waiting for HTTPS service...' && sleep 30; done; curl --silent --fail -k https://127.0.0.1:4322/health/alive || (echo '[ERROR] HTTPS service failed to start' && exit 1) ) &&
|
216
218
|
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 &
|
217
219
|
(for i in {1..20}; do curl --silent --fail -k http://127.0.0.1:4321/health/alive && echo '[INFO] HTTP Service ready' && break || echo '[INFO] Waiting for HTTP service...' && sleep 30; done; curl --silent --fail -k http://127.0.0.1:4321/health/alive || (echo '[ERROR] HTTP service failed to start' && exit 1) ) &&
|
@@ -294,7 +296,7 @@ services:
|
|
294
296
|
MILVUS_PASSWORD: Milvus
|
295
297
|
|
296
298
|
wxo-server-worker:
|
297
|
-
image: us.icr.io
|
299
|
+
image: ${WORKER_REGISTRY:-us.icr.io/watson-orchestrate-private}/wxo-server-conversation_controller:${WORKER_TAG:-latest}
|
298
300
|
platform: linux/amd64
|
299
301
|
restart: unless-stopped
|
300
302
|
depends_on:
|
@@ -372,7 +374,7 @@ services:
|
|
372
374
|
MILVUS_PASSWORD: Milvus
|
373
375
|
|
374
376
|
tools-runtime-manager:
|
375
|
-
image: us.icr.io
|
377
|
+
image: ${TRM_REGISTRY:-us.icr.io/watson-orchestrate-private}/tools-runtime-manager:${TRM_TAG:-latest}
|
376
378
|
platform: linux/amd64
|
377
379
|
restart: unless-stopped
|
378
380
|
ports:
|
@@ -409,7 +411,7 @@ services:
|
|
409
411
|
- "host.docker.internal:host-gateway"
|
410
412
|
|
411
413
|
tools-runtime:
|
412
|
-
image: us.icr.io
|
414
|
+
image: ${TR_REGISTRY:-us.icr.io/watson-orchestrate-private}/tools-runtime:${TR_TAG:-latest}
|
413
415
|
platform: linux/amd64
|
414
416
|
ports:
|
415
417
|
- "8000:8000"
|
@@ -435,7 +437,7 @@ services:
|
|
435
437
|
# LANGFUSE dependencies
|
436
438
|
########################
|
437
439
|
langfuse-worker:
|
438
|
-
image:
|
440
|
+
image: ${OPENSOURCE_REGISTRY_PROXY:-docker.io}/langfuse/langfuse-worker:3
|
439
441
|
restart: unless-stopped
|
440
442
|
profiles: [langfuse]
|
441
443
|
depends_on: &langfuse-depends-on
|
@@ -487,7 +489,7 @@ services:
|
|
487
489
|
REDIS_CONNECTION_STRING: redis://wxo-server-redis:6379/1
|
488
490
|
|
489
491
|
langfuse-web:
|
490
|
-
image:
|
492
|
+
image: ${OPENSOURCE_REGISTRY_PROXY:-docker.io}/langfuse/langfuse:3
|
491
493
|
restart: unless-stopped
|
492
494
|
depends_on: *langfuse-depends-on
|
493
495
|
profiles: [langfuse]
|
@@ -500,7 +502,7 @@ services:
|
|
500
502
|
NEXTAUTH_SECRET: mysecret
|
501
503
|
|
502
504
|
langfuse-clickhouse:
|
503
|
-
image:
|
505
|
+
image: ${OPENSOURCE_REGISTRY_PROXY:-docker.io}/clickhouse/clickhouse-server:latest
|
504
506
|
restart: unless-stopped
|
505
507
|
user: "101:101"
|
506
508
|
profiles: [langfuse]
|
@@ -527,7 +529,7 @@ services:
|
|
527
529
|
|
528
530
|
|
529
531
|
wxo-tempus-runtime:
|
530
|
-
image: us.icr.io/watson-orchestrate-private/wxo-tempus-runtime:${FLOW_RUNTIME_TAG:-latest}
|
532
|
+
image: ${FLOW_RUMTIME_REGISTRY:-us.icr.io/watson-orchestrate-private}/wxo-tempus-runtime:${FLOW_RUNTIME_TAG:-latest}
|
531
533
|
restart: unless-stopped
|
532
534
|
platform: linux/amd64
|
533
535
|
profiles: [with-tempus-runtime]
|
@@ -1,4 +1,3 @@
|
|
1
|
-
REGISTRY_URL=us.icr.io
|
2
1
|
#DOCKER_IAM_KEY=dummy #Must Define in env
|
3
2
|
#You can generate any JWT_SECRET with python -c 'import secrets; print(secrets.token_hex(32))'
|
4
3
|
JWT_SECRET=11759cbc89dbec64956715e10a854eb38f8b7a1775bdf68142786170f5e8b5b2
|
@@ -47,35 +46,39 @@ CELERY_RESULTS_TTL="3600"
|
|
47
46
|
EVENT_BROKER_TTL="-1"
|
48
47
|
|
49
48
|
# START -- IMAGE REGISTRIES AND TAGS
|
50
|
-
|
51
|
-
|
49
|
+
# THE VALUES FOR REGISTRY_URL AND *_REGISTRY ARE NOT SET HERE; THEY ARE EITHER PROVIDED BY THE USER OR DETERMINED AT RUNTIME BASED ON WO_DEVELOPER_EDITION_SOURCE.
|
50
|
+
REGISTRY_URL=
|
52
51
|
|
53
|
-
|
54
|
-
|
52
|
+
SERVER_TAG=02-05-2025
|
53
|
+
SERVER_REGISTRY=
|
55
54
|
|
56
|
-
|
55
|
+
WORKER_TAG=01-05-2025
|
56
|
+
WORKER_REGISTRY=
|
57
|
+
|
58
|
+
DB_REGISTRY=
|
57
59
|
# If you build multiarch set all three of these to the same, we have a pr against main
|
58
60
|
# to not have this separation, but we can merge it later
|
59
|
-
DBTAG=
|
60
|
-
AMDDBTAG=
|
61
|
-
ARM64DBTAG=
|
61
|
+
DBTAG=01-05-2025
|
62
|
+
AMDDBTAG=01-05-2025
|
63
|
+
ARM64DBTAG=01-05-2025
|
62
64
|
|
63
|
-
UI_REGISTRY=
|
64
|
-
UITAG=
|
65
|
+
UI_REGISTRY=
|
66
|
+
UITAG=01-05-2025
|
65
67
|
|
66
|
-
CM_REGISTRY=
|
67
|
-
CM_TAG=
|
68
|
+
CM_REGISTRY=
|
69
|
+
CM_TAG=30-04-2025
|
68
70
|
|
69
|
-
TRM_TAG=
|
70
|
-
TRM_REGISTRY=
|
71
|
+
TRM_TAG=01-05-2025
|
72
|
+
TRM_REGISTRY=
|
71
73
|
|
72
|
-
TR_TAG=
|
73
|
-
TR_REGISTRY=
|
74
|
+
TR_TAG=01-05-2025
|
75
|
+
TR_REGISTRY=
|
74
76
|
|
75
|
-
BUILDER_REGISTRY=
|
76
|
-
BUILDER_TAG=
|
77
|
+
BUILDER_REGISTRY=
|
78
|
+
BUILDER_TAG=02-05-2025
|
77
79
|
|
78
80
|
FLOW_RUNTIME_TAG=31-03-2025
|
81
|
+
FLOW_RUMTIME_REGISTRY=
|
79
82
|
|
80
83
|
# END -- IMAGE REGISTRIES AND TAGS
|
81
84
|
|
@@ -103,10 +106,10 @@ WXO_USER=wxo.archer@ibm.com
|
|
103
106
|
WXO_PASS=watsonx
|
104
107
|
STREAM_TIMEOUT=120000
|
105
108
|
DEPLOYMENT_PLATFORM=lite-laptop
|
106
|
-
WXO_BASE_URL=http://
|
109
|
+
WXO_BASE_URL=http://wxo-server:4321
|
107
110
|
RUNTIME_MANAGER_API_KEY="testapikey"
|
108
|
-
TOOLS_RUNTIME_MANAGER_BASE_URL="http://
|
109
|
-
CONNECTION_SERVICE_BASE_URL="http://
|
111
|
+
TOOLS_RUNTIME_MANAGER_BASE_URL="http://tools-runtime-manager:8080"
|
112
|
+
CONNECTION_SERVICE_BASE_URL="http://wxo-server-connection-manager:3001"
|
110
113
|
|
111
114
|
#To Prevent warnings
|
112
115
|
VECTOR_STORE_PROVIDER=
|
@@ -1,4 +1,4 @@
|
|
1
|
-
ibm_watsonx_orchestrate/__init__.py,sha256=
|
1
|
+
ibm_watsonx_orchestrate/__init__.py,sha256=91p2cfiBwxyluyBwQs2LrncECszeZvkEMadULPl-Q1o,425
|
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=v4G0MGh11eOCkUJP_4AMOcFgzW14oE41G3iFp7G2vvw,376
|
4
4
|
ibm_watsonx_orchestrate/agent_builder/agents/agent.py,sha256=PcBg2dRi-IOzvl24u8fa3B0jLaM5hzgkpTS8k56L9Ag,919
|
@@ -14,13 +14,13 @@ ibm_watsonx_orchestrate/agent_builder/knowledge_bases/types.py,sha256=yvtf4zM0Ms
|
|
14
14
|
ibm_watsonx_orchestrate/agent_builder/tools/__init__.py,sha256=adkYX0wgB-RKFCUBw6LPJhNVelUjUdsxipGPk2ghLns,479
|
15
15
|
ibm_watsonx_orchestrate/agent_builder/tools/base_tool.py,sha256=unJBOJUY8DAq3T3YX5d1H5KehJUCjObAdpGLVoWIfzw,1156
|
16
16
|
ibm_watsonx_orchestrate/agent_builder/tools/openapi_tool.py,sha256=GD2yQkBSRHcnyq1LqA3crfo05rruqCj9vBS9xVDR2r0,14738
|
17
|
-
ibm_watsonx_orchestrate/agent_builder/tools/python_tool.py,sha256=
|
17
|
+
ibm_watsonx_orchestrate/agent_builder/tools/python_tool.py,sha256=gh38bToYRnoqmsoR7pHCwqQTI6ENbxOPOV5aVSqECrg,8359
|
18
18
|
ibm_watsonx_orchestrate/agent_builder/tools/types.py,sha256=lA_BxWR_vQ0KTGYh3V0LPtNx9jG-IhwuptFf-VzhZAk,5280
|
19
19
|
ibm_watsonx_orchestrate/agent_builder/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
20
20
|
ibm_watsonx_orchestrate/agent_builder/utils/pydantic_utils.py,sha256=QEanM6FpkmntvS02whdhWx1d4v6zT_1l9ipEbfTgHs8,7623
|
21
21
|
ibm_watsonx_orchestrate/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
22
|
-
ibm_watsonx_orchestrate/cli/config.py,sha256=
|
23
|
-
ibm_watsonx_orchestrate/cli/main.py,sha256=
|
22
|
+
ibm_watsonx_orchestrate/cli/config.py,sha256=C_iSP6WSb5SO6cVPTueQ9lEX16gYOLXD12cKXD6w_KQ,8168
|
23
|
+
ibm_watsonx_orchestrate/cli/main.py,sha256=I_7qACre-Q6yr4FXPD_BLgJYHRqXo_NDXA5aS9rQUqA,2352
|
24
24
|
ibm_watsonx_orchestrate/cli/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
25
25
|
ibm_watsonx_orchestrate/cli/commands/agents/agents_command.py,sha256=GVHM1wv28zGzOcc__3BXHt0Y5NXZuOr7PH8exwVqn-o,6640
|
26
26
|
ibm_watsonx_orchestrate/cli/commands/agents/agents_controller.py,sha256=mOoBwLltv5dpGdawoyXClUIsO3bIpZLOXrIXZ7Cney4,27920
|
@@ -39,7 +39,7 @@ ibm_watsonx_orchestrate/cli/commands/knowledge_bases/knowledge_bases_command.py,
|
|
39
39
|
ibm_watsonx_orchestrate/cli/commands/knowledge_bases/knowledge_bases_controller.py,sha256=mK9rMzslwIYDx8ebUs7QHVYAak6xm830_pKu3xH6F-s,8245
|
40
40
|
ibm_watsonx_orchestrate/cli/commands/login/login_command.py,sha256=xArMiojoozg7Exn6HTpbTcjDO2idZRA-y0WV-_Ic1Sk,651
|
41
41
|
ibm_watsonx_orchestrate/cli/commands/models/models_command.py,sha256=lxh0YpATogJRroHItwVuHmsZlHctVzWw_dEWkJlbwOI,4893
|
42
|
-
ibm_watsonx_orchestrate/cli/commands/server/server_command.py,sha256=
|
42
|
+
ibm_watsonx_orchestrate/cli/commands/server/server_command.py,sha256=fleb0JwH1PJ67M4ArL5l4vxoJAK1mtsIRFjHWSsKenI,28774
|
43
43
|
ibm_watsonx_orchestrate/cli/commands/settings/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
44
44
|
ibm_watsonx_orchestrate/cli/commands/settings/settings_command.py,sha256=CzXRkd-97jXyS6LtaaNtMah-aZu0919dYl-mDwzGThc,344
|
45
45
|
ibm_watsonx_orchestrate/cli/commands/settings/observability/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -47,16 +47,16 @@ ibm_watsonx_orchestrate/cli/commands/settings/observability/observability_comman
|
|
47
47
|
ibm_watsonx_orchestrate/cli/commands/settings/observability/langfuse/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
48
48
|
ibm_watsonx_orchestrate/cli/commands/settings/observability/langfuse/langfuse_command.py,sha256=Wa0L8E44EdxH9LdOvmnluLk_ApJVfTLauNOC1kV4W8k,6515
|
49
49
|
ibm_watsonx_orchestrate/cli/commands/tools/tools_command.py,sha256=2GK5AKwEYXsOZaASG15J8yNIPakI0NYkSXBTkeuHj6s,3343
|
50
|
-
ibm_watsonx_orchestrate/cli/commands/tools/tools_controller.py,sha256=
|
50
|
+
ibm_watsonx_orchestrate/cli/commands/tools/tools_controller.py,sha256=69gypDPFh-mOdRl-3xExu6rIzcnxKZyKsCr_ZD4qTwo,26292
|
51
51
|
ibm_watsonx_orchestrate/cli/commands/tools/types.py,sha256=_md0GEa_cTH17NO_moWDY_LNdFvyEFQ1UVB9_FltYiA,173
|
52
52
|
ibm_watsonx_orchestrate/client/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
53
53
|
ibm_watsonx_orchestrate/client/base_api_client.py,sha256=0ozLUudIrQH0RTdKaX0Y5c35FRNZPTemaAp71AsoMsQ,4410
|
54
54
|
ibm_watsonx_orchestrate/client/base_service_instance.py,sha256=sM_r7bln9BpgEOhaJMdFI9-je3T7GLQxLduk-in0oRY,235
|
55
55
|
ibm_watsonx_orchestrate/client/client.py,sha256=pgYeXHe4_Makrw0gTyM343DQdrZZB8cjitFHKcbdzuc,2432
|
56
56
|
ibm_watsonx_orchestrate/client/client_errors.py,sha256=72MKCNZbKoo2QXyY0RicLhP3r0ALRjgOEbHOHNSyOYI,11712
|
57
|
-
ibm_watsonx_orchestrate/client/credentials.py,sha256=
|
57
|
+
ibm_watsonx_orchestrate/client/credentials.py,sha256=ksqfecJkx-XSOkpHksomdBVAKqEpuVGSk65qpfemYFQ,3638
|
58
58
|
ibm_watsonx_orchestrate/client/local_service_instance.py,sha256=ilqbcd0R6r0w6H5tMlQf0YRFk8IjbJd9sXwT41iQ5iQ,3440
|
59
|
-
ibm_watsonx_orchestrate/client/service_instance.py,sha256=
|
59
|
+
ibm_watsonx_orchestrate/client/service_instance.py,sha256=fkxDhp8jALw2W_1BOMDYlCGgR7pxdnXms5ejre6CkMY,2969
|
60
60
|
ibm_watsonx_orchestrate/client/utils.py,sha256=qvVDrtlzJh-7ADG4SY0Xg38_AcjDRGuG6VgyWdF4NBg,3570
|
61
61
|
ibm_watsonx_orchestrate/client/agents/agent_client.py,sha256=2Pt4uIC35uS9EwsjtzF7RIQxx020_gW4_nPNuoe9A-E,1713
|
62
62
|
ibm_watsonx_orchestrate/client/agents/assistant_agent_client.py,sha256=XRiyfYx8mB4OCaQTvvY3Q_taDh7KzEBGgAQnKCPyOvA,1467
|
@@ -67,10 +67,10 @@ ibm_watsonx_orchestrate/client/analytics/llm/analytics_llm_client.py,sha256=OSw9
|
|
67
67
|
ibm_watsonx_orchestrate/client/connections/__init__.py,sha256=u821r2ZiYXLYNTknxdBYgc7glwTXsrQBd3z1I81f3ro,184
|
68
68
|
ibm_watsonx_orchestrate/client/connections/connections_client.py,sha256=aenYRfywM0lPlJWipFuy-Dnp2ljmpeP11oaWvPd69sA,7053
|
69
69
|
ibm_watsonx_orchestrate/client/connections/utils.py,sha256=XqgYoiehiqIZ-LnduIAiJ9DIIF7IR7QvkKTc9784Ii0,1326
|
70
|
-
ibm_watsonx_orchestrate/client/knowledge_bases/knowledge_base_client.py,sha256=
|
70
|
+
ibm_watsonx_orchestrate/client/knowledge_bases/knowledge_base_client.py,sha256=U-pG_H0I8992f0V13Li_e1dksKp54MrYX3X9bvr-09w,2181
|
71
71
|
ibm_watsonx_orchestrate/client/tools/tool_client.py,sha256=pEKOBH488YbLVc71ucucX0rr8YoulvDCxejuyWd0K8s,1588
|
72
|
-
ibm_watsonx_orchestrate/docker/compose-lite.yml,sha256=
|
73
|
-
ibm_watsonx_orchestrate/docker/default.env,sha256=
|
72
|
+
ibm_watsonx_orchestrate/docker/compose-lite.yml,sha256=OTiVtPVrgKOyY9YuEvkkR_dytbhqKfSiKM3yMxahlS0,24683
|
73
|
+
ibm_watsonx_orchestrate/docker/default.env,sha256=yV2hRFzpCNYs8UVMHQ0HA__rlITmJObXJvF2PjwvoUo,4609
|
74
74
|
ibm_watsonx_orchestrate/docker/start-up.sh,sha256=LTtwHp0AidVgjohis2LXGvZnkFQStOiUAxgGABOyeUI,1811
|
75
75
|
ibm_watsonx_orchestrate/docker/sdk/ibm_watsonx_orchestrate-0.6.0-py3-none-any.whl,sha256=Hi3-owh5OM0Jz2ihX9nLoojnr7Ky1TV-GelyqLcewLE,2047417
|
76
76
|
ibm_watsonx_orchestrate/docker/sdk/ibm_watsonx_orchestrate-0.6.0.tar.gz,sha256=e5T-q7XPAtiCyQljwZp6kk3Q_4Tg6y5sijHTkscmqqQ,2025466
|
@@ -82,8 +82,8 @@ ibm_watsonx_orchestrate/utils/utils.py,sha256=3JWk1J9A04yVZeetE3TQH82I53Sn20KvU_
|
|
82
82
|
ibm_watsonx_orchestrate/utils/logging/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
83
83
|
ibm_watsonx_orchestrate/utils/logging/logger.py,sha256=FzeGnidXAjC7yHrvIaj4KZPeaBBSCniZFlwgr5yV3oA,1037
|
84
84
|
ibm_watsonx_orchestrate/utils/logging/logging.yaml,sha256=9_TKfuFr1barnOKP0fZT5D6MhddiwsXVTFjtRbcOO5w,314
|
85
|
-
ibm_watsonx_orchestrate-1.
|
86
|
-
ibm_watsonx_orchestrate-1.
|
87
|
-
ibm_watsonx_orchestrate-1.
|
88
|
-
ibm_watsonx_orchestrate-1.
|
89
|
-
ibm_watsonx_orchestrate-1.
|
85
|
+
ibm_watsonx_orchestrate-1.1.0.dist-info/METADATA,sha256=Zk_dfo1Tu9kjiiJLQDIY1YLIkFlAQW1DwLVSdJamLWg,1251
|
86
|
+
ibm_watsonx_orchestrate-1.1.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
87
|
+
ibm_watsonx_orchestrate-1.1.0.dist-info/entry_points.txt,sha256=SfIT02-Jen5e99OcLhzbcM9Bdyf8SGVOCtnSplgZdQI,69
|
88
|
+
ibm_watsonx_orchestrate-1.1.0.dist-info/licenses/LICENSE,sha256=Shgxx7hTdCOkiVRmfGgp_1ISISrwQD7m2f0y8Hsapl4,1083
|
89
|
+
ibm_watsonx_orchestrate-1.1.0.dist-info/RECORD,,
|
File without changes
|
{ibm_watsonx_orchestrate-1.0.0.dist-info → ibm_watsonx_orchestrate-1.1.0.dist-info}/entry_points.txt
RENAMED
File without changes
|
{ibm_watsonx_orchestrate-1.0.0.dist-info → ibm_watsonx_orchestrate-1.1.0.dist-info}/licenses/LICENSE
RENAMED
File without changes
|