solace-agent-mesh 0.1.1__py3-none-any.whl → 0.1.3__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.
Potentially problematic release.
This version of solace-agent-mesh might be problematic. Click here for more details.
- solace_agent_mesh/agents/base_agent_component.py +2 -0
- solace_agent_mesh/agents/global/actions/plantuml_diagram.py +5 -0
- solace_agent_mesh/agents/global/actions/plotly_graph.py +11 -0
- solace_agent_mesh/cli/__init__.py +1 -1
- solace_agent_mesh/cli/commands/build.py +27 -2
- solace_agent_mesh/cli/commands/init/builtin_agent_step.py +1 -6
- solace_agent_mesh/cli/commands/init/create_config_file_step.py +5 -0
- solace_agent_mesh/cli/commands/init/init.py +1 -5
- solace_agent_mesh/cli/commands/init/project_structure_step.py +0 -29
- solace_agent_mesh/cli/commands/plugin/add.py +3 -1
- solace_agent_mesh/cli/commands/plugin/plugin.py +20 -5
- solace_agent_mesh/cli/commands/plugin/remove.py +3 -1
- solace_agent_mesh/common/action_response.py +13 -0
- solace_agent_mesh/common/constants.py +2 -0
- solace_agent_mesh/common/postgres_database.py +11 -5
- solace_agent_mesh/configs/monitor_stim_and_errors_to_slack.yaml +3 -0
- solace_agent_mesh/gateway/components/gateway_input.py +11 -1
- solace_agent_mesh/orchestrator/action_manager.py +13 -1
- solace_agent_mesh/orchestrator/components/orchestrator_stimulus_processor_component.py +3 -1
- solace_agent_mesh/orchestrator/orchestrator_prompt.py +5 -0
- solace_agent_mesh/services/history_service/history_providers/base_history_provider.py +2 -1
- solace_agent_mesh/services/history_service/history_providers/memory_history_provider.py +4 -1
- solace_agent_mesh/services/history_service/history_providers/redis_history_provider.py +6 -3
- solace_agent_mesh/services/history_service/history_service.py +1 -1
- solace_agent_mesh/services/llm_service/components/llm_request_component.py +5 -0
- solace_agent_mesh/templates/gateway-config-template.yaml +1 -2
- solace_agent_mesh/templates/gateway-default-config.yaml +2 -2
- solace_agent_mesh/templates/gateway-flows.yaml +1 -4
- solace_agent_mesh/templates/rest-api-default-config.yaml +4 -0
- solace_agent_mesh/templates/rest-api-flows.yaml +1 -0
- solace_agent_mesh/templates/slack-default-config.yaml +7 -0
- solace_agent_mesh/templates/slack-flows.yaml +1 -10
- solace_agent_mesh/templates/web-default-config.yaml +2 -0
- solace_agent_mesh/templates/web-flows.yaml +2 -12
- {solace_agent_mesh-0.1.1.dist-info → solace_agent_mesh-0.1.3.dist-info}/METADATA +37 -8
- {solace_agent_mesh-0.1.1.dist-info → solace_agent_mesh-0.1.3.dist-info}/RECORD +39 -41
- solace_agent_mesh/cli/commands/init/rest_api_step.py +0 -50
- solace_agent_mesh/cli/commands/init/web_ui_step.py +0 -40
- {solace_agent_mesh-0.1.1.dist-info → solace_agent_mesh-0.1.3.dist-info}/WHEEL +0 -0
- {solace_agent_mesh-0.1.1.dist-info → solace_agent_mesh-0.1.3.dist-info}/entry_points.txt +0 -0
- {solace_agent_mesh-0.1.1.dist-info → solace_agent_mesh-0.1.3.dist-info}/licenses/LICENSE +0 -0
|
@@ -12,6 +12,7 @@ from solace_ai_connector.common.utils import ensure_slash_on_end
|
|
|
12
12
|
from ..services.llm_service.components.llm_service_component_base import LLMServiceComponentBase
|
|
13
13
|
from ..common.action_list import ActionList
|
|
14
14
|
from ..common.action_response import ActionResponse, ErrorInfo
|
|
15
|
+
from ..common.constants import ORCHESTRATOR_COMPONENT_NAME
|
|
15
16
|
from ..services.file_service import FileService
|
|
16
17
|
from ..services.file_service.file_utils import recursive_file_resolver
|
|
17
18
|
from ..services.middleware_service.middleware_service import MiddlewareService
|
|
@@ -185,6 +186,7 @@ class BaseAgentComponent(LLMServiceComponentBase, ABC):
|
|
|
185
186
|
action_response.action_idx = data.get("action_idx")
|
|
186
187
|
action_response.action_name = action_name
|
|
187
188
|
action_response.action_params = data.get("action_params", {})
|
|
189
|
+
action_response.originator = data.get("originator", ORCHESTRATOR_COMPONENT_NAME)
|
|
188
190
|
try:
|
|
189
191
|
action_response_dict = action_response.to_dict()
|
|
190
192
|
except Exception as e:
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"""PlantUML diagram"""
|
|
2
2
|
|
|
3
|
+
import platform
|
|
3
4
|
import os
|
|
4
5
|
import tempfile
|
|
5
6
|
import subprocess
|
|
@@ -41,6 +42,10 @@ class PlantUmlDiagram(Action):
|
|
|
41
42
|
)
|
|
42
43
|
|
|
43
44
|
def invoke(self, params, meta={}) -> ActionResponse:
|
|
45
|
+
if platform.system() == "Windows":
|
|
46
|
+
return ActionResponse(
|
|
47
|
+
message=f"Unfortunately, the PlantUML is not available on {platform.system()}"
|
|
48
|
+
)
|
|
44
49
|
# Do a local command to run plantuml -tpng
|
|
45
50
|
description = params.get("diagram_description")
|
|
46
51
|
agent = self.get_agent()
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
"""Plotly graph generation"""
|
|
2
2
|
|
|
3
|
+
import platform
|
|
3
4
|
import os
|
|
4
5
|
import random
|
|
5
6
|
import tempfile
|
|
6
7
|
import json
|
|
7
8
|
import yaml
|
|
9
|
+
from importlib.metadata import version
|
|
8
10
|
from io import BytesIO
|
|
11
|
+
from packaging.version import parse
|
|
9
12
|
from solace_ai_connector.common.log import log
|
|
10
13
|
|
|
11
14
|
import plotly.graph_objects as go
|
|
@@ -80,6 +83,14 @@ class PlotlyGraph(Action):
|
|
|
80
83
|
)
|
|
81
84
|
|
|
82
85
|
def invoke(self, params, meta={}) -> ActionResponse:
|
|
86
|
+
if platform.system() == "Windows":
|
|
87
|
+
kaleido_version = version('kaleido')
|
|
88
|
+
min_version = parse('0.1.0.post1')
|
|
89
|
+
max_version = parse('0.2.0')
|
|
90
|
+
if parse(kaleido_version) < min_version or parse(kaleido_version) >= max_version:
|
|
91
|
+
return ActionResponse(
|
|
92
|
+
message="For Windows users, the plotting functionality requires a specific version of Kaleido. Please refer to the documentation."
|
|
93
|
+
)
|
|
83
94
|
obj = params["plotly_figure_config"]
|
|
84
95
|
if isinstance(obj, str):
|
|
85
96
|
# Remove any leading/trailing quote characters
|
|
@@ -1 +1 @@
|
|
|
1
|
-
__version__ = "0.1.
|
|
1
|
+
__version__ = "0.1.3"
|
|
@@ -187,6 +187,17 @@ def build_specific_gateway(
|
|
|
187
187
|
gateway_config_file = os.path.join(subdir_path, "gateway.yaml")
|
|
188
188
|
with open(gateway_config_file, "r", encoding="utf-8") as g:
|
|
189
189
|
gateway_config_content = g.read()
|
|
190
|
+
|
|
191
|
+
# Define config aliases to check for so that if they are missing we can add defaults
|
|
192
|
+
config_aliases = {
|
|
193
|
+
"response_format_prompt": "- response_format_prompt: &response_format_prompt \"\""
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
# Check which aliases are already in the gateway config
|
|
197
|
+
gateway_found_aliases = set()
|
|
198
|
+
for alias in config_aliases:
|
|
199
|
+
if f"&{alias}" in gateway_config_content:
|
|
200
|
+
gateway_found_aliases.add(alias)
|
|
190
201
|
|
|
191
202
|
click.echo("Getting interface types.")
|
|
192
203
|
known_interfaces = ["slack", "web", "rest-api"]
|
|
@@ -225,8 +236,22 @@ def build_specific_gateway(
|
|
|
225
236
|
interface_config_file = os.path.join(subdir_path, interface_file)
|
|
226
237
|
with open(interface_config_file, "r", encoding="utf-8") as g:
|
|
227
238
|
file_content = g.read()
|
|
228
|
-
|
|
229
|
-
|
|
239
|
+
|
|
240
|
+
# Check which aliases are in the interface config
|
|
241
|
+
interface_found_aliases = set()
|
|
242
|
+
for alias in config_aliases:
|
|
243
|
+
if f"&{alias}" in file_content:
|
|
244
|
+
interface_found_aliases.add(alias)
|
|
245
|
+
|
|
246
|
+
reindented_file_content = normalize_and_reindent_yaml(complete_interface_gateway, file_content)
|
|
247
|
+
complete_interface_gateway += reindented_file_content
|
|
248
|
+
|
|
249
|
+
# Add any missing config aliases
|
|
250
|
+
missing_aliases = set(config_aliases.keys()) - gateway_found_aliases - interface_found_aliases
|
|
251
|
+
if missing_aliases:
|
|
252
|
+
complete_interface_gateway += "\n# Default configurations\nshared_config_defaults:\n"
|
|
253
|
+
for alias in missing_aliases:
|
|
254
|
+
complete_interface_gateway += f"{config_aliases[alias]}\n"
|
|
230
255
|
|
|
231
256
|
# Write interface specific flows
|
|
232
257
|
complete_interface_gateway += "\nflows:\n"
|
|
@@ -10,12 +10,7 @@ def builtin_agent_step(options, default_options, none_interactive, abort):
|
|
|
10
10
|
"image_processing": (
|
|
11
11
|
True,
|
|
12
12
|
"generate images from text or convert images to text (The model name should be formatted like provider/model-name)",
|
|
13
|
-
["
|
|
14
|
-
),
|
|
15
|
-
"slack": (
|
|
16
|
-
False,
|
|
17
|
-
"Slack agent, send messages to Slack channels",
|
|
18
|
-
["MONITOR_SLACK_BOT_TOKEN="],
|
|
13
|
+
["IMAGE_GEN_ENDPOINT=", "IMAGE_GEN_API_KEY=", "IMAGE_GEN_MODEL=",],
|
|
19
14
|
),
|
|
20
15
|
}
|
|
21
16
|
|
|
@@ -7,6 +7,11 @@ def create_config_file_step(options, default_options, none_interactive, abort):
|
|
|
7
7
|
"""
|
|
8
8
|
Creates the configuration files.
|
|
9
9
|
"""
|
|
10
|
+
# Populate options dictionary with default values, for non specified options
|
|
11
|
+
for key, value in default_options.items():
|
|
12
|
+
if key not in options or options[key] is None:
|
|
13
|
+
options[key] = value
|
|
14
|
+
|
|
10
15
|
sam_config = Config.get_default_config()
|
|
11
16
|
|
|
12
17
|
# Set up the built-in agents
|
|
@@ -9,8 +9,6 @@ from .create_config_file_step import create_config_file_step
|
|
|
9
9
|
from .file_service_step import file_service_step
|
|
10
10
|
from .project_structure_step import project_structure_step
|
|
11
11
|
from .create_other_project_files_step import create_other_project_files_step
|
|
12
|
-
from .rest_api_step import rest_api_step
|
|
13
|
-
from .web_ui_step import webui_step
|
|
14
12
|
|
|
15
13
|
from cli.utils import (
|
|
16
14
|
log_error,
|
|
@@ -45,7 +43,7 @@ default_options = {
|
|
|
45
43
|
"rest_api_gateway_name": "rest-api",
|
|
46
44
|
"webui_enabled": True,
|
|
47
45
|
"webui_listen_port": "5001",
|
|
48
|
-
"webui_host": "
|
|
46
|
+
"webui_host": "127.0.0.1"
|
|
49
47
|
}
|
|
50
48
|
"""
|
|
51
49
|
Default options for the init command.
|
|
@@ -76,8 +74,6 @@ def init_command(options={}):
|
|
|
76
74
|
("AI provider setup", ai_provider_step),
|
|
77
75
|
("Builtin agent setup", builtin_agent_step),
|
|
78
76
|
("File service setup", file_service_step),
|
|
79
|
-
("REST API setup", rest_api_step),
|
|
80
|
-
("Web UI setup", webui_step),
|
|
81
77
|
("", create_config_file_step),
|
|
82
78
|
("Setting up project", create_other_project_files_step),
|
|
83
79
|
]
|
|
@@ -14,32 +14,3 @@ def project_structure_step(options, default_options, none_interactive, abort):
|
|
|
14
14
|
)
|
|
15
15
|
if namespace and not namespace.endswith("/"):
|
|
16
16
|
options["namespace"] = f"{namespace}/"
|
|
17
|
-
|
|
18
|
-
ask_if_not_provided(
|
|
19
|
-
options,
|
|
20
|
-
"config_dir",
|
|
21
|
-
"Enter base directory for config files",
|
|
22
|
-
default_options["config_dir"],
|
|
23
|
-
none_interactive,
|
|
24
|
-
)
|
|
25
|
-
ask_if_not_provided(
|
|
26
|
-
options,
|
|
27
|
-
"module_dir",
|
|
28
|
-
"Enter base directory for python modules",
|
|
29
|
-
default_options["module_dir"],
|
|
30
|
-
none_interactive,
|
|
31
|
-
)
|
|
32
|
-
ask_if_not_provided(
|
|
33
|
-
options,
|
|
34
|
-
"build_dir",
|
|
35
|
-
"Enter base directory for the build output",
|
|
36
|
-
default_options["build_dir"],
|
|
37
|
-
none_interactive,
|
|
38
|
-
)
|
|
39
|
-
ask_if_not_provided(
|
|
40
|
-
options,
|
|
41
|
-
"env_file",
|
|
42
|
-
"Enter environment file path",
|
|
43
|
-
default_options["env_file"],
|
|
44
|
-
none_interactive,
|
|
45
|
-
)
|
|
@@ -37,7 +37,9 @@ def add_command(name: str, installer: str = None, from_url=None, add_all=False):
|
|
|
37
37
|
f"Module '{name}' not found. Attempting to install '{install_name}' using {installer}..."
|
|
38
38
|
)
|
|
39
39
|
if installer == "pip":
|
|
40
|
-
subprocess.check_call(["
|
|
40
|
+
subprocess.check_call(["pip3", "install", install_name])
|
|
41
|
+
elif installer == "uv":
|
|
42
|
+
subprocess.check_call(["uv", "pip", "install", install_name])
|
|
41
43
|
elif installer == "poetry":
|
|
42
44
|
subprocess.check_call(["poetry", "add", install_name])
|
|
43
45
|
elif installer == "conda":
|
|
@@ -44,6 +44,7 @@ def plugin_command(plugin):
|
|
|
44
44
|
@click.argument("name")
|
|
45
45
|
@click.option("--add-all", is_flag=True, help="Added the plugin with default of loading all exported files from the plugin")
|
|
46
46
|
@click.option("--pip", is_flag=True, help="Install with pip.")
|
|
47
|
+
@click.option("--uv", is_flag=True, help="Install with uv pip.")
|
|
47
48
|
@click.option("--poetry", is_flag=True, help="Install with poetry.")
|
|
48
49
|
@click.option("--conda", is_flag=True, help="Install with conda.")
|
|
49
50
|
@click.option(
|
|
@@ -51,7 +52,7 @@ def plugin_command(plugin):
|
|
|
51
52
|
"--from-url",
|
|
52
53
|
help="Install the plugin from a the given URL instead of the given name. (URL can be a file path or a git URL)",
|
|
53
54
|
)
|
|
54
|
-
def add(name, add_all, pip, poetry, conda, from_url):
|
|
55
|
+
def add(name, add_all, uv, pip, poetry, conda, from_url):
|
|
55
56
|
"""
|
|
56
57
|
Add a new plugin to solace-agent-mesh config yaml.
|
|
57
58
|
Optional install the module if not found.
|
|
@@ -59,10 +60,16 @@ def plugin_command(plugin):
|
|
|
59
60
|
Only one installation method can be selected at a time.
|
|
60
61
|
"""
|
|
61
62
|
# Only one option can be true at a time
|
|
62
|
-
if sum([pip, poetry, conda]) > 1:
|
|
63
|
+
if sum([uv, pip, poetry, conda]) > 1:
|
|
63
64
|
log_error("Only one installation method can be selected.")
|
|
64
65
|
return 1
|
|
65
|
-
installer =
|
|
66
|
+
installer = (
|
|
67
|
+
"uv" if uv
|
|
68
|
+
else "pip" if pip
|
|
69
|
+
else "poetry" if poetry
|
|
70
|
+
else "conda" if conda
|
|
71
|
+
else None
|
|
72
|
+
)
|
|
66
73
|
return add_command(name, installer, from_url, add_all)
|
|
67
74
|
|
|
68
75
|
@plugin.command()
|
|
@@ -73,6 +80,12 @@ def plugin_command(plugin):
|
|
|
73
80
|
is_flag=True,
|
|
74
81
|
help="Removes the plugin module using pip",
|
|
75
82
|
)
|
|
83
|
+
@click.option(
|
|
84
|
+
"--uv-uninstall",
|
|
85
|
+
default=False,
|
|
86
|
+
is_flag=True,
|
|
87
|
+
help="Removes the plugin module using uv.",
|
|
88
|
+
)
|
|
76
89
|
@click.option(
|
|
77
90
|
"--poetry-uninstall",
|
|
78
91
|
default=False,
|
|
@@ -85,7 +98,7 @@ def plugin_command(plugin):
|
|
|
85
98
|
is_flag=True,
|
|
86
99
|
help="Removes the plugin module using conda",
|
|
87
100
|
)
|
|
88
|
-
def remove(name, pip_uninstall, poetry_uninstall, conda_uninstall):
|
|
101
|
+
def remove(name, pip_uninstall, uv_uninstall, poetry_uninstall, conda_uninstall):
|
|
89
102
|
"""
|
|
90
103
|
Remove a plugin by removing it from solace-agent-mesh config yaml
|
|
91
104
|
Optionally uninstall the module.
|
|
@@ -93,13 +106,15 @@ def plugin_command(plugin):
|
|
|
93
106
|
Only one uninstallation method can be selected at a time.
|
|
94
107
|
"""
|
|
95
108
|
# Only one option can be true at a time
|
|
96
|
-
if sum([pip_uninstall, poetry_uninstall, conda_uninstall]) > 1:
|
|
109
|
+
if sum([pip_uninstall, uv_uninstall, poetry_uninstall, conda_uninstall]) > 1:
|
|
97
110
|
log_error("Only one uninstallation method can be selected.")
|
|
98
111
|
return 1
|
|
99
112
|
|
|
100
113
|
installer = (
|
|
101
114
|
"pip"
|
|
102
115
|
if pip_uninstall
|
|
116
|
+
else "uv"
|
|
117
|
+
if uv_uninstall
|
|
103
118
|
else "poetry"
|
|
104
119
|
if poetry_uninstall
|
|
105
120
|
else "conda"
|
|
@@ -48,7 +48,9 @@ def remove_command(name: str, installer: str = None):
|
|
|
48
48
|
click.echo(f"Attempting to uninstall module '{name}' using {installer}...")
|
|
49
49
|
try:
|
|
50
50
|
if installer == "pip":
|
|
51
|
-
subprocess.check_call(["
|
|
51
|
+
subprocess.check_call(["pip3", "uninstall", "-y", name])
|
|
52
|
+
elif installer == "uv":
|
|
53
|
+
subprocess.check_call(["uv", "pip", "uninstall", "-y", name])
|
|
52
54
|
elif installer == "poetry":
|
|
53
55
|
subprocess.check_call(["poetry", "remove", name])
|
|
54
56
|
elif installer == "conda":
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
"""This is the definition of responses for the actions of the system."""
|
|
2
2
|
|
|
3
|
+
from typing import Optional
|
|
4
|
+
|
|
3
5
|
|
|
4
6
|
class RagMatch:
|
|
5
7
|
|
|
@@ -212,6 +214,8 @@ class ActionResponse:
|
|
|
212
214
|
self._is_async: bool = is_async
|
|
213
215
|
# async_response_id - unique identifier for correlating async responses
|
|
214
216
|
self._async_response_id: str = async_response_id
|
|
217
|
+
# originator - the component that originated the action request
|
|
218
|
+
self._originator: Optional[str] = None
|
|
215
219
|
|
|
216
220
|
@property
|
|
217
221
|
def message(self) -> any:
|
|
@@ -269,6 +273,10 @@ class ActionResponse:
|
|
|
269
273
|
def action_params(self) -> dict:
|
|
270
274
|
return self._action_params
|
|
271
275
|
|
|
276
|
+
@property
|
|
277
|
+
def originator(self) -> dict:
|
|
278
|
+
return self._originator
|
|
279
|
+
|
|
272
280
|
@action_list_id.setter
|
|
273
281
|
def action_list_id(self, action_list_id: str):
|
|
274
282
|
self._action_list_id = action_list_id
|
|
@@ -285,6 +293,10 @@ class ActionResponse:
|
|
|
285
293
|
def action_params(self, action_params: dict):
|
|
286
294
|
self._action_params = action_params
|
|
287
295
|
|
|
296
|
+
@originator.setter
|
|
297
|
+
def originator(self, originator: str):
|
|
298
|
+
self._originator = originator
|
|
299
|
+
|
|
288
300
|
@property
|
|
289
301
|
def is_async(self) -> bool:
|
|
290
302
|
return self._is_async
|
|
@@ -324,4 +336,5 @@ class ActionResponse:
|
|
|
324
336
|
response["action_idx"] = self._action_idx
|
|
325
337
|
response["action_name"] = self._action_name
|
|
326
338
|
response["action_params"] = self._action_params
|
|
339
|
+
response["originator"] = self._originator
|
|
327
340
|
return response
|
|
@@ -56,11 +56,17 @@ class PostgreSQLDatabase:
|
|
|
56
56
|
|
|
57
57
|
return cursor
|
|
58
58
|
|
|
59
|
-
def get_db_for_action(action_obj):
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
59
|
+
def get_db_for_action(action_obj, sql_params=None):
|
|
60
|
+
if sql_params:
|
|
61
|
+
sql_host = sql_params.get("sql_host")
|
|
62
|
+
sql_user = sql_params.get("sql_user")
|
|
63
|
+
sql_password = sql_params.get("sql_password")
|
|
64
|
+
sql_database = sql_params.get("sql_database")
|
|
65
|
+
else:
|
|
66
|
+
sql_host = action_obj.get_config("sql_host")
|
|
67
|
+
sql_user = action_obj.get_config("sql_user")
|
|
68
|
+
sql_password = action_obj.get_config("sql_password")
|
|
69
|
+
sql_database = action_obj.get_config("sql_database")
|
|
64
70
|
sql_db = None
|
|
65
71
|
|
|
66
72
|
if sql_host and sql_user and sql_password and sql_database:
|
|
@@ -99,6 +99,9 @@ flows:
|
|
|
99
99
|
- type: copy
|
|
100
100
|
source_value: '0'
|
|
101
101
|
dest_expression: user_data.output:payload.action_idx
|
|
102
|
+
- type: copy
|
|
103
|
+
source_value: 'stim_and_error_monitor'
|
|
104
|
+
dest_expression: user_data.output:payload.originator
|
|
102
105
|
- type: copy
|
|
103
106
|
source_expression: template:${SOLACE_AGENT_MESH_NAMESPACE}solace-agent-mesh/v1/actionRequest/monitor/x/slack/post_message/{{text://input.payload:correlation_id}}
|
|
104
107
|
dest_expression: user_data.output:topic
|
|
@@ -38,6 +38,12 @@ info = {
|
|
|
38
38
|
},
|
|
39
39
|
"description": "Gateway configuration including originators and their configurations.",
|
|
40
40
|
},
|
|
41
|
+
{
|
|
42
|
+
"name": "response_format_prompt",
|
|
43
|
+
"type": "string",
|
|
44
|
+
"description": "Format instructions for the response that will be passed to the model",
|
|
45
|
+
"default": ""
|
|
46
|
+
}
|
|
41
47
|
],
|
|
42
48
|
"input_schema": {
|
|
43
49
|
"type": "object",
|
|
@@ -129,6 +135,7 @@ class GatewayInput(GatewayBase):
|
|
|
129
135
|
"interaction_type", DEFAULT_INTERACTION_TYPE
|
|
130
136
|
)
|
|
131
137
|
self.identity_component = self._initialize_identity_component()
|
|
138
|
+
self.response_format_prompt = self.get_config("response_format_prompt", "")
|
|
132
139
|
|
|
133
140
|
def _authenticate_user(self, _user_properties: Dict[str, Any]) -> bool:
|
|
134
141
|
# Implement actual authentication logic here
|
|
@@ -164,7 +171,6 @@ class GatewayInput(GatewayBase):
|
|
|
164
171
|
top_level_user_properties = {
|
|
165
172
|
"input_type",
|
|
166
173
|
"session_id",
|
|
167
|
-
"response_format_prompt",
|
|
168
174
|
}
|
|
169
175
|
self.demote_interface_properties(user_properties, top_level_user_properties)
|
|
170
176
|
|
|
@@ -222,6 +228,10 @@ class GatewayInput(GatewayBase):
|
|
|
222
228
|
|
|
223
229
|
stimulus_uuid = self.gateway_id + str(uuid4())
|
|
224
230
|
|
|
231
|
+
# Add response format prompt from config if available
|
|
232
|
+
if self.response_format_prompt:
|
|
233
|
+
user_properties["response_format_prompt"] = self.response_format_prompt
|
|
234
|
+
|
|
225
235
|
user_properties.update(
|
|
226
236
|
{
|
|
227
237
|
"gateway_id": self.gateway_id,
|
|
@@ -15,6 +15,7 @@ from datetime import datetime
|
|
|
15
15
|
|
|
16
16
|
from solace_ai_connector.common.log import log
|
|
17
17
|
from ..common.utils import format_agent_response
|
|
18
|
+
from ..common.constants import ORCHESTRATOR_COMPONENT_NAME
|
|
18
19
|
|
|
19
20
|
ACTION_REQUEST_TIMEOUT = 180
|
|
20
21
|
|
|
@@ -78,6 +79,17 @@ class ActionManager:
|
|
|
78
79
|
def add_action_response(self, action_response_obj, response_text_and_files):
|
|
79
80
|
"""Add an action response to the list"""
|
|
80
81
|
action_list_id = action_response_obj.get("action_list_id")
|
|
82
|
+
|
|
83
|
+
originator = action_response_obj.get("originator", "unknown")
|
|
84
|
+
# Ignore responses for actions that are not originated by the orchestrator
|
|
85
|
+
if originator != ORCHESTRATOR_COMPONENT_NAME:
|
|
86
|
+
log.debug(
|
|
87
|
+
"Ignoring response for action not originated by the orchestrator. "
|
|
88
|
+
"originator: %s action_list_id: %s",
|
|
89
|
+
originator, action_list_id
|
|
90
|
+
)
|
|
91
|
+
return None
|
|
92
|
+
|
|
81
93
|
with self.lock:
|
|
82
94
|
action_list = self.action_requests.get(action_list_id)
|
|
83
95
|
if action_list is None:
|
|
@@ -222,4 +234,4 @@ class ActionRequestList:
|
|
|
222
234
|
|
|
223
235
|
def format_ai_response(self):
|
|
224
236
|
"""Format the action response for the AI"""
|
|
225
|
-
return format_agent_response(self.actions)
|
|
237
|
+
return format_agent_response(self.actions)
|
|
@@ -14,6 +14,7 @@ import yaml
|
|
|
14
14
|
from solace_ai_connector.common.log import log
|
|
15
15
|
from solace_ai_connector.common.message import Message
|
|
16
16
|
|
|
17
|
+
from ...common.constants import ORCHESTRATOR_COMPONENT_NAME
|
|
17
18
|
from ...services.llm_service.components.llm_request_component import LLMRequestComponent, info as base_info
|
|
18
19
|
from ...services.middleware_service.middleware_service import MiddlewareService
|
|
19
20
|
from ...services.file_service import FileService
|
|
@@ -184,7 +185,7 @@ class OrchestratorStimulusProcessorComponent(LLMRequestComponent):
|
|
|
184
185
|
message.set_user_properties(user_properties)
|
|
185
186
|
|
|
186
187
|
input_data = self.get_user_input(chat_text)
|
|
187
|
-
user_info =
|
|
188
|
+
user_info = user_properties.get("user_info", {"email": "unknown"})
|
|
188
189
|
|
|
189
190
|
agent_state_yaml, examples = self.get_agents_yaml(user_properties)
|
|
190
191
|
full_input = {
|
|
@@ -458,6 +459,7 @@ class OrchestratorStimulusProcessorComponent(LLMRequestComponent):
|
|
|
458
459
|
"action_name": action_name,
|
|
459
460
|
"action_params": action_params,
|
|
460
461
|
"action_idx": action_idx,
|
|
462
|
+
"originator": ORCHESTRATOR_COMPONENT_NAME,
|
|
461
463
|
},
|
|
462
464
|
"topic": f"{os.getenv('SOLACE_AGENT_MESH_NAMESPACE')}solace-agent-mesh/v1/actionRequest/orchestrator/agent/{agent_name}/{action_name}",
|
|
463
465
|
}
|
|
@@ -214,6 +214,11 @@ The assistant's behavior aligns with the system purpose specified below:
|
|
|
214
214
|
3. After opening agents, the assistant will be reinvoked with an updated list of open agents and their actions.
|
|
215
215
|
4. When opening an agent, provide only a brief status update without detailed explanations.
|
|
216
216
|
5. Do not perform any other actions besides opening the required agents in this step.
|
|
217
|
+
- Report generation:
|
|
218
|
+
1. If a report is requested and no format is specified, create the report in an HTML file.
|
|
219
|
+
2. Generate each section of the report independently and store it in the file service with create_file action. When finishing the report, combine the sections using amfs urls with the resolve=true query parameter to insert the sections into the main document. When generating HTML, create the header first with all the necessary CSS and JS links so that it is clear what css the rest of the document will use.
|
|
220
|
+
3. Images are always very useful in reports, so the assistant will add them when appropriate. If images are embedded in html, they must be resolved and converted to datauri format or they won't render in the final document. This can be done by using the encoding=datauri&resolve=true in the amfs link. For example, <img src="amfs://xxxxxx.png?encoding=datauri&resolve=true". The assistant will take care of the rest. Images can be created in parallel
|
|
221
|
+
4. During report generation in interactive sessions, the assistant will send lots of status messages to indicate what is happening.
|
|
217
222
|
- Handling stimuli with open agents:
|
|
218
223
|
1. Use agents' actions to break down the stimulus into smaller, manageable tasks.
|
|
219
224
|
2. Prioritize using available actions to fulfill the stimulus whenever possible.
|
|
@@ -61,12 +61,13 @@ class BaseHistoryProvider(ABC):
|
|
|
61
61
|
raise NotImplementedError("Method not implemented")
|
|
62
62
|
|
|
63
63
|
@abstractmethod
|
|
64
|
-
def clear_history(self, session_id: str, keep_levels=0):
|
|
64
|
+
def clear_history(self, session_id: str, keep_levels=0, clear_files=True):
|
|
65
65
|
"""
|
|
66
66
|
Clear the history and files, optionally keeping a specified number of recent entries.
|
|
67
67
|
|
|
68
68
|
:param session_id: The session identifier.
|
|
69
69
|
:param keep_levels: Number of most recent history entries to keep. Default is 0 (clear all).
|
|
70
|
+
:param clear_files: Whether to clear associated files. Default is True.
|
|
70
71
|
"""
|
|
71
72
|
raise NotImplementedError("Method not implemented")
|
|
72
73
|
|
|
@@ -125,12 +125,13 @@ class MemoryHistoryProvider(BaseHistoryProvider):
|
|
|
125
125
|
files.append(file)
|
|
126
126
|
return files
|
|
127
127
|
|
|
128
|
-
def clear_history(self, session_id: str, keep_levels=0):
|
|
128
|
+
def clear_history(self, session_id: str, keep_levels=0, clear_files=True):
|
|
129
129
|
"""
|
|
130
130
|
Clear the history for a session, optionally keeping a specified number of recent entries.
|
|
131
131
|
|
|
132
132
|
:param session_id: The session identifier.
|
|
133
133
|
:param keep_levels: Number of most recent history entries to keep. Default is 0 (clear all).
|
|
134
|
+
:param clear_files: Whether to clear associated files. Default is True.
|
|
134
135
|
"""
|
|
135
136
|
if session_id in self.history:
|
|
136
137
|
if keep_levels <= 0:
|
|
@@ -146,6 +147,8 @@ class MemoryHistoryProvider(BaseHistoryProvider):
|
|
|
146
147
|
self.history[session_id]["num_turns"] = len(
|
|
147
148
|
self.history[session_id]["history"]
|
|
148
149
|
)
|
|
150
|
+
if session_id in self.history and clear_files:
|
|
151
|
+
self.history[session_id]["files"] = []
|
|
149
152
|
|
|
150
153
|
def get_session_meta(self, session_id: str):
|
|
151
154
|
"""
|
|
@@ -112,9 +112,8 @@ class RedisHistoryProvider(BaseHistoryProvider):
|
|
|
112
112
|
|
|
113
113
|
return valid_files
|
|
114
114
|
|
|
115
|
-
def clear_history(self, session_id: str, keep_levels=0):
|
|
115
|
+
def clear_history(self, session_id: str, keep_levels=0, clear_files=True):
|
|
116
116
|
history_key = self._get_history_key(session_id)
|
|
117
|
-
files_key = self._get_files_key(session_id)
|
|
118
117
|
|
|
119
118
|
if keep_levels > 0:
|
|
120
119
|
# Keep the latest `keep_levels` entries
|
|
@@ -132,7 +131,11 @@ class RedisHistoryProvider(BaseHistoryProvider):
|
|
|
132
131
|
})
|
|
133
132
|
else:
|
|
134
133
|
# Clear all history and files
|
|
135
|
-
self.redis_client.delete(history_key,
|
|
134
|
+
self.redis_client.delete(history_key, session_id)
|
|
135
|
+
|
|
136
|
+
if clear_files:
|
|
137
|
+
files_key = self._get_files_key(session_id)
|
|
138
|
+
self.redis_client.delete(files_key)
|
|
136
139
|
|
|
137
140
|
|
|
138
141
|
def get_session_meta(self, session_id: str):
|
|
@@ -136,4 +136,4 @@ class HistoryService(AutoExpiry, metaclass=AutoExpirySingletonMeta):
|
|
|
136
136
|
:param session_id: The session identifier.
|
|
137
137
|
:param keep_levels: Number of most recent history entries to keep. Default is 0 (clear all).
|
|
138
138
|
"""
|
|
139
|
-
return self.history_provider.clear_history(session_id, keep_levels)
|
|
139
|
+
return self.history_provider.clear_history(session_id, keep_levels, clear_files=True)
|
|
@@ -206,6 +206,11 @@ class LLMRequestComponent(ComponentBase):
|
|
|
206
206
|
aggregate_result += content
|
|
207
207
|
current_batch += content
|
|
208
208
|
|
|
209
|
+
if payload.get("handle_error", False):
|
|
210
|
+
log.error("Error invoking LLM service: %s", payload.get("content", ""), exc_info=True)
|
|
211
|
+
aggregate_result = payload.get("content", None)
|
|
212
|
+
last_message = True
|
|
213
|
+
|
|
209
214
|
if len(current_batch.split()) >= self.stream_batch_size or last_message:
|
|
210
215
|
self._send_streaming_chunk(
|
|
211
216
|
input_message,
|
|
@@ -2,5 +2,4 @@
|
|
|
2
2
|
key: "value" # Add your configuration here
|
|
3
3
|
|
|
4
4
|
- response_format_prompt: &response_format_prompt >
|
|
5
|
-
|
|
6
|
-
**bold**, _italic_, and `code` where necessary.
|
|
5
|
+
Return all responses in markdown format and if the response contains a file or image, return it with the <file> tags and not as a link.
|
|
@@ -16,8 +16,8 @@
|
|
|
16
16
|
- gateway_config: &gateway_config
|
|
17
17
|
gateway_id: {{GATEWAY_ID}}
|
|
18
18
|
system_purpose: >
|
|
19
|
-
The system is an AI Chatbot
|
|
20
|
-
|
|
19
|
+
The system is an AI Chatbot with agentic capabilities. It will use the agents available to provide information, reasoning and general assistance for the users in this system.
|
|
20
|
+
|
|
21
21
|
interaction_type: "interactive"
|
|
22
22
|
|
|
23
23
|
identity:
|
|
@@ -13,12 +13,9 @@
|
|
|
13
13
|
component_config:
|
|
14
14
|
identity_key_field: identity
|
|
15
15
|
<<: *gateway_config
|
|
16
|
+
response_format_prompt: *response_format_prompt
|
|
16
17
|
component_input:
|
|
17
18
|
source_expression: previous
|
|
18
|
-
input_transforms:
|
|
19
|
-
- type: copy
|
|
20
|
-
source_value: *response_format_prompt
|
|
21
|
-
dest_expression: input.user_properties:response_format_prompt
|
|
22
19
|
- component_name: broker_output
|
|
23
20
|
component_module: broker_output
|
|
24
21
|
component_config:
|
|
@@ -22,3 +22,7 @@
|
|
|
22
22
|
frontend_collect_feedback: ${WEBUI_FRONTEND_COLLECT_FEEDBACK}
|
|
23
23
|
frontend_url: ${WEBUI_FRONTEND_URL}
|
|
24
24
|
local_dev : ${WEBUI_LOCAL_DEV}
|
|
25
|
+
|
|
26
|
+
- response_format_prompt: &response_format_prompt >
|
|
27
|
+
Return all responses in markdown format and if the response contains a file or image, return it with the <file> tags and not as a link.
|
|
28
|
+
|
|
@@ -7,3 +7,10 @@
|
|
|
7
7
|
acknowledgement_message: "Chatbot is thinking... :hourglass_flowing_sand:"
|
|
8
8
|
max_total_file_size: 2000 # 2GB
|
|
9
9
|
max_file_size: 500 # 500MB
|
|
10
|
+
|
|
11
|
+
- response_format_prompt: &response_format_prompt >
|
|
12
|
+
- Format the response as a Slack message, using appropriate
|
|
13
|
+
formatting such as *bold*, _italic_, and `code` where necessary.
|
|
14
|
+
- Use bullet points or numbered lists for multiple items.
|
|
15
|
+
- If the response contains a file or image, return it with the <file> tags and not as a link.
|
|
16
|
+
- If including hyperlinks, use the format <url|text>.
|
|
@@ -13,21 +13,13 @@
|
|
|
13
13
|
component_config:
|
|
14
14
|
identity_key_field: user_email
|
|
15
15
|
<<: *gateway_config
|
|
16
|
+
response_format_prompt: *response_format_prompt
|
|
16
17
|
component_input:
|
|
17
18
|
source_expression: previous
|
|
18
19
|
input_transforms:
|
|
19
20
|
- type: copy
|
|
20
21
|
source_expression: input.payload:thread_id
|
|
21
22
|
dest_expression: input.user_properties:session_id
|
|
22
|
-
- type: copy
|
|
23
|
-
source_value: >
|
|
24
|
-
- Format the response as a Slack message, using appropriate
|
|
25
|
-
formatting such as *bold*, _italic_, and `code` where necessary.
|
|
26
|
-
|
|
27
|
-
- Use bullet points or numbered lists for multiple items.
|
|
28
|
-
|
|
29
|
-
- If including links, use the format <url|text>.
|
|
30
|
-
dest_expression: input.user_properties:response_format_prompt
|
|
31
23
|
- component_name: broker_output
|
|
32
24
|
component_module: broker_output
|
|
33
25
|
component_config:
|
|
@@ -87,4 +79,3 @@
|
|
|
87
79
|
dest_expression: user_data.component_input:content
|
|
88
80
|
component_input:
|
|
89
81
|
source_expression: user_data.component_input
|
|
90
|
-
|
|
@@ -1,10 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
- name: start_web_app
|
|
3
|
-
trace_level: ERROR
|
|
4
|
-
components:
|
|
5
|
-
- component_name: start_web_app
|
|
6
|
-
component_package: solace_ai_connector_web
|
|
7
|
-
component_module: solace_ai_connector_web.components.start_web_app
|
|
1
|
+
|
|
8
2
|
# Web to Gateway to Solace
|
|
9
3
|
- name: web_gateway_input_flow
|
|
10
4
|
trace_level: ERROR
|
|
@@ -20,13 +14,9 @@
|
|
|
20
14
|
component_config:
|
|
21
15
|
identity_key_field: user_email
|
|
22
16
|
<<: *gateway_config
|
|
17
|
+
response_format_prompt: *response_format_prompt
|
|
23
18
|
component_input:
|
|
24
19
|
source_expression: previous
|
|
25
|
-
input_transforms:
|
|
26
|
-
- type: copy
|
|
27
|
-
source_value: >
|
|
28
|
-
- Format the response as markdown.
|
|
29
|
-
dest_expression: input.user_properties:response_format_prompt
|
|
30
20
|
- component_name: broker_output
|
|
31
21
|
component_module: broker_output
|
|
32
22
|
component_config:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: solace-agent-mesh
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.3
|
|
4
4
|
Summary: Solace Agent Mesh is an EDA AI-first platform powered by Solace
|
|
5
5
|
Project-URL: homepage, https://github.com/SolaceLabs/solace-agent-mesh
|
|
6
6
|
Project-URL: repository, https://github.com/SolaceLabs/solace-agent-mesh
|
|
@@ -23,7 +23,8 @@ Requires-Dist: flask-socketio~=5.4.1
|
|
|
23
23
|
Requires-Dist: flask~=3.0.3
|
|
24
24
|
Requires-Dist: html2text~=2024.2.26
|
|
25
25
|
Requires-Dist: jq~=1.8.0
|
|
26
|
-
Requires-Dist: kaleido~=0.
|
|
26
|
+
Requires-Dist: kaleido~=0.1.0.post1; sys_platform == 'win32'
|
|
27
|
+
Requires-Dist: kaleido~=0.2.1; sys_platform != 'win32'
|
|
27
28
|
Requires-Dist: langchain-core~=0.3.0
|
|
28
29
|
Requires-Dist: langchain~=0.3.0
|
|
29
30
|
Requires-Dist: litellm~=1.51.3
|
|
@@ -46,10 +47,10 @@ Requires-Dist: python-dateutil==2.9.0.post0
|
|
|
46
47
|
Requires-Dist: pyyaml~=6.0.1
|
|
47
48
|
Requires-Dist: requests~=2.32.3
|
|
48
49
|
Requires-Dist: ruamel-yaml~=0.18.6
|
|
49
|
-
Requires-Dist: solace-ai-connector-rest~=0.0.
|
|
50
|
+
Requires-Dist: solace-ai-connector-rest~=0.0.2
|
|
50
51
|
Requires-Dist: solace-ai-connector-slack~=0.0.1
|
|
51
|
-
Requires-Dist: solace-ai-connector-web~=0.
|
|
52
|
-
Requires-Dist: solace-ai-connector~=1.0.
|
|
52
|
+
Requires-Dist: solace-ai-connector-web~=0.2.0
|
|
53
|
+
Requires-Dist: solace-ai-connector~=1.0.2
|
|
53
54
|
Requires-Dist: solace-pubsubplus~=1.9.0
|
|
54
55
|
Description-Content-Type: text/markdown
|
|
55
56
|
|
|
@@ -62,6 +63,16 @@ Description-Content-Type: text/markdown
|
|
|
62
63
|
[](https://pypi.org/project/solace-agent-mesh)
|
|
63
64
|
[](https://pypi.org/project/solace-agent-mesh)
|
|
64
65
|
|
|
66
|
+
- [Solace Agent Mesh](#solace-agent-mesh)
|
|
67
|
+
* [Installation](#installation)
|
|
68
|
+
* [Quick Start](#quick-start)
|
|
69
|
+
* [Why Use Solace Agent Mesh?](#why-use-solace-agent-mesh)
|
|
70
|
+
* [Next Steps](#next-steps)
|
|
71
|
+
* [Contributing](#contributing)
|
|
72
|
+
* [Authors](#authors)
|
|
73
|
+
* [Release Notes](#release-notes)
|
|
74
|
+
* [License](#license)
|
|
75
|
+
|
|
65
76
|
The Solace Agent Mesh (SAM) is an open-source platform that tackles a fundamental challenge in modern AI development: while powerful AI models are readily available, the real complexity lies in connecting them to the data and systems where they can provide value. Data is often siloed across databases, SaaS platforms, APIs, and legacy systems, making it difficult to build AI applications that operate seamlessly across these boundaries. SAM provides a flexible foundation for AI applications where multiple agents can collaborate, each bringing their own specialized capabilities and data access. Whether you're an AI enthusiast experimenting with new models, or an enterprise developer building production systems, SAM gives you the tools to:
|
|
66
77
|
|
|
67
78
|
- Connect AI agents to real-world data sources and systems.
|
|
@@ -77,13 +88,27 @@ Built on event-driven architecture technology from Solace, SAM provides the robu
|
|
|
77
88
|
|
|
78
89
|
## Installation
|
|
79
90
|
|
|
80
|
-
1.
|
|
91
|
+
1. [Optional] Set up Python Virtual Environment using `virtualenv` and activate it
|
|
92
|
+
|
|
93
|
+
```sh
|
|
94
|
+
## Install virtualenv if not already installed
|
|
95
|
+
python3 -m pip install --user virtualenv
|
|
96
|
+
## Setup python virtual environment
|
|
97
|
+
python3 -m venv venv
|
|
98
|
+
## Activate virtual environment:
|
|
99
|
+
### MacOS/Linux:
|
|
100
|
+
source venv/bin/activate
|
|
101
|
+
### Windows:
|
|
102
|
+
venv/Scripts/activate
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
2. The following command installs the Solace Agent Mesh CLI in your environment:
|
|
81
106
|
|
|
82
107
|
```sh
|
|
83
108
|
pip install solace-agent-mesh
|
|
84
109
|
```
|
|
85
110
|
|
|
86
|
-
|
|
111
|
+
3. Run the following SAM CLI command (`solace-agent-mesh` or `sam`) to verify your installation:
|
|
87
112
|
|
|
88
113
|
```sh
|
|
89
114
|
solace-agent-mesh --version
|
|
@@ -118,7 +143,11 @@ To get started with Solace Agent Mesh, follow these steps:
|
|
|
118
143
|
|
|
119
144
|
_(Use `-eb` to combine build and run steps.)_
|
|
120
145
|
|
|
121
|
-
5. **
|
|
146
|
+
5. **Connect to the Web Interface**:
|
|
147
|
+
|
|
148
|
+
Open the web interface at [http://localhost:5001](http://localhost:5001) or with the port specified during `init`.
|
|
149
|
+
|
|
150
|
+
6. **Send a REST Request**:
|
|
122
151
|
|
|
123
152
|
Try the system by sending a request to the REST API gateway interface.
|
|
124
153
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
solace_agent_mesh/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2
2
|
solace_agent_mesh/agents/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
3
|
-
solace_agent_mesh/agents/base_agent_component.py,sha256=
|
|
3
|
+
solace_agent_mesh/agents/base_agent_component.py,sha256=gO9WHotTatVECNlqahRi4ukBsyKUJvV04wjrzrs8KeY,9507
|
|
4
4
|
solace_agent_mesh/agents/global/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
5
5
|
solace_agent_mesh/agents/global/global_agent_component.py,sha256=3oYsSXKNmsURAwMSgNrqC9-LImq4yZ59C12gtqOP8DA,1015
|
|
6
6
|
solace_agent_mesh/agents/global/actions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -9,8 +9,8 @@ solace_agent_mesh/agents/global/actions/clear_history.py,sha256=XOCpmkr-Jv0SDP1E
|
|
|
9
9
|
solace_agent_mesh/agents/global/actions/convert_file_to_markdown.py,sha256=qVLDIS8KZoFP777Kb_B5UmrLAEksxrRzKrcO76lwwm8,6407
|
|
10
10
|
solace_agent_mesh/agents/global/actions/create_file.py,sha256=mf_CFKZc8iWJSb8l8z5EWrv6OQtpFw_jDHLuvji-p6g,2602
|
|
11
11
|
solace_agent_mesh/agents/global/actions/error_action.py,sha256=d0sNyC8pvZu3AeLLOIimG3cmjFmovxTGczp8Y8fTySo,1643
|
|
12
|
-
solace_agent_mesh/agents/global/actions/plantuml_diagram.py,sha256
|
|
13
|
-
solace_agent_mesh/agents/global/actions/plotly_graph.py,sha256=
|
|
12
|
+
solace_agent_mesh/agents/global/actions/plantuml_diagram.py,sha256=4BNNQ-PE2I5XjDwjk5vqfQi9gE0K9ZisBIb9P8yMfuM,4207
|
|
13
|
+
solace_agent_mesh/agents/global/actions/plotly_graph.py,sha256=UnlXyYeoda2xQxAbVeKzxo5uSE2oN430186OmDqRDdU,4932
|
|
14
14
|
solace_agent_mesh/agents/global/actions/retrieve_file.py,sha256=nBK8EGn6R6gCFV4zCc2Xo3Bzz112EtvPmaOBRBZr2do,2232
|
|
15
15
|
solace_agent_mesh/agents/image_processing/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
16
16
|
solace_agent_mesh/agents/image_processing/image_processing_agent_component.py,sha256=IjZnNk7e8znm7NzXHgvFUpVaxDgUokwB3BzmLjcGolg,632
|
|
@@ -32,10 +32,10 @@ solace_agent_mesh/agents/web_request/actions/download_file.py,sha256=nFIuuimL6ub
|
|
|
32
32
|
solace_agent_mesh/common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
33
33
|
solace_agent_mesh/common/action.py,sha256=vlgojeQs3PjRPCdgGjpHHs5McT5sx72tsahiJ6ZZaxI,3053
|
|
34
34
|
solace_agent_mesh/common/action_list.py,sha256=sy1cwkJ3ISdvK1CqvCblQmONnZtAtLt-nv5eBOaq-r8,1109
|
|
35
|
-
solace_agent_mesh/common/action_response.py,sha256=
|
|
36
|
-
solace_agent_mesh/common/constants.py,sha256=
|
|
35
|
+
solace_agent_mesh/common/action_response.py,sha256=TYh8OdvpQmRS0_SbRKjhKWOdSPCN4Ux-j59J7-SLtbE,10201
|
|
36
|
+
solace_agent_mesh/common/constants.py,sha256=317vZG0tJMDan809yp0LZ74sjzqOiZtFfpKgsTg-ZNs,163
|
|
37
37
|
solace_agent_mesh/common/mysql_database.py,sha256=I6heri35TqLU0spV_p7XBye5CmFe3dspZHs9eCjHYK4,1121
|
|
38
|
-
solace_agent_mesh/common/postgres_database.py,sha256=
|
|
38
|
+
solace_agent_mesh/common/postgres_database.py,sha256=8JBPSN3ZtpNSlnYfWNlDbhl2cAKVLawJgC_t_dbbTAc,2607
|
|
39
39
|
solace_agent_mesh/common/prompt_templates.py,sha256=QhcxTVRvLyJYdUO8w8P3LzVCejSVKG90P6UE0qHG3fc,687
|
|
40
40
|
solace_agent_mesh/common/prompt_templates_unused_delete.py,sha256=Quyee4Xuf4vZj_29Nq0RIR9-eztKZGzzUY7cFbmmJno,7229
|
|
41
41
|
solace_agent_mesh/common/stimulus_utils.py,sha256=OIGrOVFlg3V0YAjO5GU0qZ-NO95cN_yQ707JTuQqa9E,5445
|
|
@@ -44,7 +44,7 @@ solace_agent_mesh/common/utils.py,sha256=X7SzLj8Zr-uxZmkLgSIBiePpfJaLsX6zZjY0dgf
|
|
|
44
44
|
solace_agent_mesh/gateway/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
45
45
|
solace_agent_mesh/gateway/components/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
46
46
|
solace_agent_mesh/gateway/components/gateway_base.py,sha256=6A1UNHxPnCk4ZLjllTsiE0nIHDUWODsJviIUdKfrQow,1574
|
|
47
|
-
solace_agent_mesh/gateway/components/gateway_input.py,sha256=
|
|
47
|
+
solace_agent_mesh/gateway/components/gateway_input.py,sha256=YqXZmmTikhzNjWklinlyRbGOvBL92ram03lYO8ELE1U,10591
|
|
48
48
|
solace_agent_mesh/gateway/components/gateway_output.py,sha256=pjoNWoSSy1Y4ticVXA70Jry0XmTDTxx9RfhF2LFCyuw,11044
|
|
49
49
|
solace_agent_mesh/gateway/identity/bamboohr_identity.py,sha256=875pguj7vDx5Tij7YCvfqJQIC0HD_pnU5AtqCUuv7Cs,621
|
|
50
50
|
solace_agent_mesh/gateway/identity/identity_base.py,sha256=2oaqSPYNwMj4kOyokPAvfHPYW2_uUH85nTh2RogzQD8,271
|
|
@@ -55,14 +55,14 @@ solace_agent_mesh/monitors/base_monitor_component.py,sha256=3-IKG6MJ8otrPhzoye9Y
|
|
|
55
55
|
solace_agent_mesh/monitors/feedback/user_feedback_monitor.py,sha256=JGK9nJcKnK8JznVZk-zl1NL6uHLu-eg7jJ4N8LTJMEU,2736
|
|
56
56
|
solace_agent_mesh/monitors/stim_and_errors/stim_and_error_monitor.py,sha256=jMM1mhsntpoFWP1NVtLj5kLChb0CH4VZamAa77wFLn0,20177
|
|
57
57
|
solace_agent_mesh/orchestrator/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
58
|
-
solace_agent_mesh/orchestrator/action_manager.py,sha256=
|
|
58
|
+
solace_agent_mesh/orchestrator/action_manager.py,sha256=NgSrm9XXEfsOzGIfmfMo8s_-Pv5vgod02ig6lj8g7Uc,9076
|
|
59
59
|
solace_agent_mesh/orchestrator/orchestrator_main.py,sha256=wHLCaIqwzDrnpWM97lnrUwrk_bS9nmjy4R_dDRn24iU,5983
|
|
60
|
-
solace_agent_mesh/orchestrator/orchestrator_prompt.py,sha256=
|
|
60
|
+
solace_agent_mesh/orchestrator/orchestrator_prompt.py,sha256=lCSrSy_Kn5GkEihvN_sKxWewv8W7ABxh0Sbl_qt3qPY,24238
|
|
61
61
|
solace_agent_mesh/orchestrator/components/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
62
62
|
solace_agent_mesh/orchestrator/components/orchestrator_action_manager_timeout_component.py,sha256=w-rZBLMJPz8sLkxgOCH4Mc5Yk8jI0wKG-TZ27cQP-sU,1976
|
|
63
63
|
solace_agent_mesh/orchestrator/components/orchestrator_action_response_component.py,sha256=Wo2Qd6CU4bcllc_jy6XXdza1jewcV1SGXh1osdWI4Zc,7140
|
|
64
64
|
solace_agent_mesh/orchestrator/components/orchestrator_register_component.py,sha256=rLoTSwQvYedBnTaeU9pM-viBvY2So7Gv3eYuXMbuhTs,4797
|
|
65
|
-
solace_agent_mesh/orchestrator/components/orchestrator_stimulus_processor_component.py,sha256=
|
|
65
|
+
solace_agent_mesh/orchestrator/components/orchestrator_stimulus_processor_component.py,sha256=DidpSikvSNvmBHtEA38BuOiJwecENhbmZlyP291SvYM,19234
|
|
66
66
|
solace_agent_mesh/orchestrator/components/orchestrator_streaming_output_component.py,sha256=IhFUMA4GUEcfa7j94QEEt-R6JCF4C58tp1sejHu5nPk,9463
|
|
67
67
|
solace_agent_mesh/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
68
68
|
solace_agent_mesh/services/authorization/providers/base_authorization_provider.py,sha256=4c31MQRzGQdI7ACDgorIqAcxnUjbJwSs0fS06l6NoaI,2105
|
|
@@ -83,12 +83,12 @@ solace_agent_mesh/services/file_service/file_manager/memory_file_manager.py,sha2
|
|
|
83
83
|
solace_agent_mesh/services/file_service/file_manager/volume_file_manager.py,sha256=alOIyG0jWZvchEP9tHhOdnkmXMPDs4W0VQK1bZtCXUc,4041
|
|
84
84
|
solace_agent_mesh/services/file_service/transformers/__init__.py,sha256=srgqGcX0ROzSeiQqbfcQpIq1p1FGBxU_Gu03t8pZ7q8,52
|
|
85
85
|
solace_agent_mesh/services/history_service/__init__.py,sha256=AjMNxbn-i0Zz9e32x-nyKpUVO0PSBYQrguCqOcEPXq0,73
|
|
86
|
-
solace_agent_mesh/services/history_service/history_service.py,sha256=
|
|
86
|
+
solace_agent_mesh/services/history_service/history_service.py,sha256=dHfZeJAr9oRV_imrCEKVEDAegSuC-uIlb2cOhUDaQ-g,5252
|
|
87
87
|
solace_agent_mesh/services/history_service/history_providers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
88
|
-
solace_agent_mesh/services/history_service/history_providers/base_history_provider.py,sha256=
|
|
89
|
-
solace_agent_mesh/services/history_service/history_providers/memory_history_provider.py,sha256=
|
|
90
|
-
solace_agent_mesh/services/history_service/history_providers/redis_history_provider.py,sha256=
|
|
91
|
-
solace_agent_mesh/services/llm_service/components/llm_request_component.py,sha256=
|
|
88
|
+
solace_agent_mesh/services/history_service/history_providers/base_history_provider.py,sha256=BCCeCMLR9g7HwRCNYJON9_0yatjguETnsT0ARtDcJik,2680
|
|
89
|
+
solace_agent_mesh/services/history_service/history_providers/memory_history_provider.py,sha256=z5HZAocP8KPzSREY7wL35dKAW2-vV37etsQWGMJKpak,6441
|
|
90
|
+
solace_agent_mesh/services/history_service/history_providers/redis_history_provider.py,sha256=n4DUG2V3I4sApFy4KhaOe24iwl5UW4kMAKfT9Cia6Qw,6309
|
|
91
|
+
solace_agent_mesh/services/llm_service/components/llm_request_component.py,sha256=fSWedSGzFu2iQjhrgjyah4uNY_AgisI1ienTHk3Cin0,10480
|
|
92
92
|
solace_agent_mesh/services/llm_service/components/llm_service_component_base.py,sha256=vbtHMVRk4dCHDbo-gZfYfLPJYt4WFSq9A51UqVTLz18,5769
|
|
93
93
|
solace_agent_mesh/services/middleware_service/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
94
94
|
solace_agent_mesh/services/middleware_service/middleware_service.py,sha256=IoCnWr9XujVmfac6Z5FoLMeogszSwgPGkXXpWdYqKkU,899
|
|
@@ -97,12 +97,12 @@ solace_agent_mesh/tools/components/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQe
|
|
|
97
97
|
solace_agent_mesh/tools/components/conversation_formatter.py,sha256=_C60LepjhxPzQYCwjIAp8nQD3XdVpvZdxNO4cLBXXrY,4202
|
|
98
98
|
solace_agent_mesh/tools/components/file_resolver_component.py,sha256=MOKFuIBpxsQuSQF7ogdhtm2E1w8LDMs_giaNKfkx2pY,1965
|
|
99
99
|
solace_agent_mesh/tools/config/runtime_config.py,sha256=9-sCi2W5RSyN8WUHdSv6YVzKWORzK1akM-C19tDSCUo,860
|
|
100
|
-
solace_agent_mesh/cli/__init__.py,sha256=
|
|
100
|
+
solace_agent_mesh/cli/__init__.py,sha256=XEqb2aiIn8fzGE68Mph4ck1FtQqsR_am0wRWvrYPffQ,22
|
|
101
101
|
solace_agent_mesh/cli/config.py,sha256=sGcJE9zNNGme3n6Q4wOM5Vn2TQSTWHRXPZUBnNEwV40,2841
|
|
102
102
|
solace_agent_mesh/cli/main.py,sha256=faei8XGbAaexbIfmZBnuo7eqyo5pBm7Rh1pn-Ybjv6M,7127
|
|
103
103
|
solace_agent_mesh/cli/utils.py,sha256=TYNDr8IweOtGT11X-ZNPVC6WPgMrcVyAeAa9NvVV5Oo,7632
|
|
104
104
|
solace_agent_mesh/cli/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
105
|
-
solace_agent_mesh/cli/commands/build.py,sha256=
|
|
105
|
+
solace_agent_mesh/cli/commands/build.py,sha256=8jO7BK21lYaIh6UNiE41bYEZbahYoAlorQfZV5pZ3jw,25441
|
|
106
106
|
solace_agent_mesh/cli/commands/config.py,sha256=_9Sw3TbTUgAVsEUrbTn72e4lABIchjpKS_JhSIF2EZ0,772
|
|
107
107
|
solace_agent_mesh/cli/commands/run.py,sha256=sx82i75mQgHduJBcMvSCbdQsAZdTVD0NWGNqtCUQEnE,2066
|
|
108
108
|
solace_agent_mesh/cli/commands/visualizer.py,sha256=FhqEMQRQGrNnkkSihuEKE9rFBATQKjTXLwOUJZIsAH0,4646
|
|
@@ -116,21 +116,19 @@ solace_agent_mesh/cli/commands/chat/chat.py,sha256=1zeE972Ao2B7ln2WoEwCAjLK6e8fH
|
|
|
116
116
|
solace_agent_mesh/cli/commands/init/__init__.py,sha256=Z7a4KC9a2Y98CRKbU8_YCWrOjSN3_tuxrAe0SV_bJWM,59
|
|
117
117
|
solace_agent_mesh/cli/commands/init/ai_provider_step.py,sha256=UX5sOTD5NKa49TCHxk5-FgOD2vlOQ2WKT32jpS7-peY,1936
|
|
118
118
|
solace_agent_mesh/cli/commands/init/broker_step.py,sha256=wsXO0H7i198amS2x_sZ-ZyzTNquzQ-G-CII4kpRV0rA,3587
|
|
119
|
-
solace_agent_mesh/cli/commands/init/builtin_agent_step.py,sha256=
|
|
119
|
+
solace_agent_mesh/cli/commands/init/builtin_agent_step.py,sha256=uIh_j19U9VRevzOMvqw0IxXjAMNY2dXumA9aUxNi1TM,3075
|
|
120
120
|
solace_agent_mesh/cli/commands/init/check_if_already_done.py,sha256=M8dT7Bs2p2BU8LxBt2DiqRM7WehptWRyp5eyG7Ad4FQ,432
|
|
121
|
-
solace_agent_mesh/cli/commands/init/create_config_file_step.py,sha256=
|
|
121
|
+
solace_agent_mesh/cli/commands/init/create_config_file_step.py,sha256=LWGs-HwZ0YSdMBnfn1aM4gjIFavuMrkU5qCKS7klKTE,2167
|
|
122
122
|
solace_agent_mesh/cli/commands/init/create_other_project_files_step.py,sha256=D-EsvKxwVTjhUOySEednNv1_PH5-frlHV2038PDPPX8,3926
|
|
123
123
|
solace_agent_mesh/cli/commands/init/file_service_step.py,sha256=FrmA4Yb082lEFFe4cxLXr_8xT6hC8Zee-5ygR6XO4-E,2256
|
|
124
|
-
solace_agent_mesh/cli/commands/init/init.py,sha256=
|
|
125
|
-
solace_agent_mesh/cli/commands/init/project_structure_step.py,sha256=
|
|
126
|
-
solace_agent_mesh/cli/commands/init/rest_api_step.py,sha256=2tjdz90ohVi82vqnkDBTJ7YhcYajBqBIoujFYGwAHzQ,1477
|
|
127
|
-
solace_agent_mesh/cli/commands/init/web_ui_step.py,sha256=BG5UmaxEPS0HtZwf1zv9-wXVO_IYgZAbOq9zGPop858,1163
|
|
124
|
+
solace_agent_mesh/cli/commands/init/init.py,sha256=pkP7mUSSoB14Z6vZVLqPY1x4_U9Nhzjk31J5ofIdpdk,3479
|
|
125
|
+
solace_agent_mesh/cli/commands/init/project_structure_step.py,sha256=pXIeYFmdY0oy0FVnOG0iqeGuK_nwDdICjqyj6b7mEss,518
|
|
128
126
|
solace_agent_mesh/cli/commands/plugin/__init__.py,sha256=zFmLT32wXFLISlIqpfR1Ru5pur2boWwfD-Et5R8PWbs,65
|
|
129
|
-
solace_agent_mesh/cli/commands/plugin/add.py,sha256=
|
|
127
|
+
solace_agent_mesh/cli/commands/plugin/add.py,sha256=T1rD-jvjbX7qi5uH1Q85y_RzBqi1kDUQjymdgibIkdc,3782
|
|
130
128
|
solace_agent_mesh/cli/commands/plugin/build.py,sha256=KqJNOmp77KDk5y04qbkl6AJgEGKAXqXCwgIeD9Yx4tI,9439
|
|
131
129
|
solace_agent_mesh/cli/commands/plugin/create.py,sha256=6XwcvIVAmmkbjK_e-JT4D54xk_dxTOwjl9dTDwsjyF4,3748
|
|
132
|
-
solace_agent_mesh/cli/commands/plugin/plugin.py,sha256=
|
|
133
|
-
solace_agent_mesh/cli/commands/plugin/remove.py,sha256=
|
|
130
|
+
solace_agent_mesh/cli/commands/plugin/plugin.py,sha256=ziyj5VOhsdKAMdcGwJ3z3NGC1CcfUKHOihLcxCre2yk,3853
|
|
131
|
+
solace_agent_mesh/cli/commands/plugin/remove.py,sha256=7SHOL2Jy5nMiD1ASavl3DC1jdav52hxDZo2JDs8Mq4o,2629
|
|
134
132
|
solace_agent_mesh/configs/agent_global.yaml,sha256=3bpVr6DeXAzA8U1F6rKhwL8oMbh3M3ZuhkguqaI9Nvs,2864
|
|
135
133
|
solace_agent_mesh/configs/agent_image_processing.yaml,sha256=zZW4jN0Rhjc9mYBuO_xq83Ibez8zecso4AHc6MIcZfM,3143
|
|
136
134
|
solace_agent_mesh/configs/agent_slack.yaml,sha256=a2AxmWMwkcE0YxETVS1MvbrYhWY-vi9oJypo7lNbIfo,2198
|
|
@@ -138,7 +136,7 @@ solace_agent_mesh/configs/agent_web_request.yaml,sha256=r4sWRXV8FfPxIhpicAJTo9xb
|
|
|
138
136
|
solace_agent_mesh/configs/conversation_to_file.yaml,sha256=rFp8bceg-q7SFWnvPYo13E8uUcJhopXmguR2r4eQVgA,1976
|
|
139
137
|
solace_agent_mesh/configs/error_catcher.yaml,sha256=NrZEVIq4B8S-2UXJd1AHHF_xLcIGN-fnJLTPoqzMLAY,1949
|
|
140
138
|
solace_agent_mesh/configs/monitor.yaml,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
141
|
-
solace_agent_mesh/configs/monitor_stim_and_errors_to_slack.yaml,sha256=
|
|
139
|
+
solace_agent_mesh/configs/monitor_stim_and_errors_to_slack.yaml,sha256=zSOSUvcy8x91xHFdPqIndc8cK8g8Hjxj_1VWxrXYST0,4122
|
|
142
140
|
solace_agent_mesh/configs/monitor_user_feedback.yaml,sha256=iBZWKIA4XIdqKBCVwo39m-9uOXaCe0m5V59GUiSxiqM,1742
|
|
143
141
|
solace_agent_mesh/configs/orchestrator.yaml,sha256=6XtSMVWj87eU9egzNHXynHa2n5Bja1LBn_LZfwwO2aU,9617
|
|
144
142
|
solace_agent_mesh/configs/service_embedding.yaml,sha256=JDIvNmywtGcy9G25L89zXa-KrEZN68E6kgomXikMHyw,3090
|
|
@@ -147,28 +145,28 @@ solace_agent_mesh/configs/visualize_websocket.yaml,sha256=5RlUyqjI2-nOKYUbwoFqfO
|
|
|
147
145
|
solace_agent_mesh/templates/action.py,sha256=9U2lfncOa4CPRcgbXbz_BpCGak1ZZVR4UVNELNV-uiI,1401
|
|
148
146
|
solace_agent_mesh/templates/agent.py,sha256=eZb4ZhVkhDdLLUubbHd8obaIyGd610A4bNvoYzkjKqs,771
|
|
149
147
|
solace_agent_mesh/templates/agent.yaml,sha256=wBpBMY-8c_YdwF8RGGVzgizCHxPGhJrKCb4poMnOK1g,2865
|
|
150
|
-
solace_agent_mesh/templates/gateway-config-template.yaml,sha256=
|
|
151
|
-
solace_agent_mesh/templates/gateway-default-config.yaml,sha256=
|
|
152
|
-
solace_agent_mesh/templates/gateway-flows.yaml,sha256=
|
|
148
|
+
solace_agent_mesh/templates/gateway-config-template.yaml,sha256=TxJEzqud6bMsJjbi8VlYXQoiBl8SB8Z3HF9b1Kf6uok,296
|
|
149
|
+
solace_agent_mesh/templates/gateway-default-config.yaml,sha256=qzuMsrZzg5uPUCLeB5Kcv8vp8BZfQFu95SbkaRY4Lvk,1121
|
|
150
|
+
solace_agent_mesh/templates/gateway-flows.yaml,sha256=6KufsvEkMitBSZVeu4lPEoqILSN_I5Hh3_LvBusCQRM,3046
|
|
153
151
|
solace_agent_mesh/templates/gateway-header.yaml,sha256=PjwSOjYrYt8lLo8PYo1AQdZkN5M7HxMNJer2CTpP6mc,472
|
|
154
152
|
solace_agent_mesh/templates/gateway_base.py,sha256=vgiNrcIzJYTli2UMPJyFwDCx1IOGW_oOFpZtTcBdHaE,457
|
|
155
153
|
solace_agent_mesh/templates/gateway_input.py,sha256=gkjTYjgpOxMWU_k0EnB0BU_6q3vOAh9IN-fmxu_jW6k,3097
|
|
156
154
|
solace_agent_mesh/templates/gateway_output.py,sha256=fGM2HnYf9RXkOsLcuDD3HR4ozcxHX9UppxBPCUmtSKk,2191
|
|
157
155
|
solace_agent_mesh/templates/plugin-pyproject.toml,sha256=pD146TDV9DYbt6O8pE9O5KdX_CNqGGuy9BYf8TqmGJI,676
|
|
158
|
-
solace_agent_mesh/templates/rest-api-default-config.yaml,sha256=
|
|
159
|
-
solace_agent_mesh/templates/rest-api-flows.yaml,sha256=
|
|
160
|
-
solace_agent_mesh/templates/slack-default-config.yaml,sha256
|
|
161
|
-
solace_agent_mesh/templates/slack-flows.yaml,sha256=
|
|
156
|
+
solace_agent_mesh/templates/rest-api-default-config.yaml,sha256=DmUIZMmuzyptrnYgM4wVHqdUX9y0seGgU4UcPTWaTu4,1266
|
|
157
|
+
solace_agent_mesh/templates/rest-api-flows.yaml,sha256=OVU9QPKlZMzla-G1HnqtKCFaYxgXF7pP1aFUR8LwWDQ,3150
|
|
158
|
+
solace_agent_mesh/templates/slack-default-config.yaml,sha256=-C5r61O4UZ7JGA0l_wxQIc5DbfqnZFm20-OU6nBIf-s,754
|
|
159
|
+
solace_agent_mesh/templates/slack-flows.yaml,sha256=nzLS67tT4Xh_NFynB4XJlr6pomgG5EkatsLBnGS3fBo,3201
|
|
162
160
|
solace_agent_mesh/templates/solace-agent-mesh-default.yaml,sha256=R1xm_uPJqWSrjWRhLlVc2VY-YaFzM92L0sPoAfA45iI,3042
|
|
163
161
|
solace_agent_mesh/templates/solace-agent-mesh-plugin-default.yaml,sha256=T0GgQGHJc8uMNH8mlCqxAH3Zm4Yc-rCPiW1UVY6KcdA,331
|
|
164
|
-
solace_agent_mesh/templates/web-default-config.yaml,sha256=
|
|
165
|
-
solace_agent_mesh/templates/web-flows.yaml,sha256=
|
|
162
|
+
solace_agent_mesh/templates/web-default-config.yaml,sha256=8gsiV2ar1ZPEL6w-ofWTGb3gzC0IRlETGk_fBVWxcwo,341
|
|
163
|
+
solace_agent_mesh/templates/web-flows.yaml,sha256=dzy7BvQDNEsvzVb_O38LvdYbKn2XJmtIU2ExhPIRI2k,3028
|
|
166
164
|
solace_agent_mesh/assets/web-visualizer/index.html,sha256=Bn-hrNXJvapfRG-L_hs5K5ezKf53gw_H4x93rIdeAQw,484
|
|
167
165
|
solace_agent_mesh/assets/web-visualizer/vite.svg,sha256=SnSK_UQ5GLsWWRyDTEAdrjPoeGGrXbrQgRw6O0qSFPs,1497
|
|
168
166
|
solace_agent_mesh/assets/web-visualizer/assets/index-C5awueeJ.js,sha256=tlhSEqOgFpMuwd7X73mdRAxUCxQ8H7TiCfk4oHh6qXY,752048
|
|
169
167
|
solace_agent_mesh/assets/web-visualizer/assets/index-D0qORgkg.css,sha256=sR-djfZhg7oOrDkv7deFLKVioHOSGFA0ZCDPvK8jzYI,12678
|
|
170
|
-
solace_agent_mesh-0.1.
|
|
171
|
-
solace_agent_mesh-0.1.
|
|
172
|
-
solace_agent_mesh-0.1.
|
|
173
|
-
solace_agent_mesh-0.1.
|
|
174
|
-
solace_agent_mesh-0.1.
|
|
168
|
+
solace_agent_mesh-0.1.3.dist-info/METADATA,sha256=sQkEyXOB34b0JbKcN1rePdk1Knw3sedUmiqq8uAUQrM,10920
|
|
169
|
+
solace_agent_mesh-0.1.3.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
170
|
+
solace_agent_mesh-0.1.3.dist-info/entry_points.txt,sha256=VDI4Kkhc1jy9ajf8Qd08v3lpV4n7zoWBAo6fopQrXL8,108
|
|
171
|
+
solace_agent_mesh-0.1.3.dist-info/licenses/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
|
|
172
|
+
solace_agent_mesh-0.1.3.dist-info/RECORD,,
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
from cli.utils import ask_if_not_provided
|
|
2
|
-
import click
|
|
3
|
-
|
|
4
|
-
def rest_api_step(options, default_options, none_interactive, abort):
|
|
5
|
-
"""
|
|
6
|
-
Initialize the REST API.
|
|
7
|
-
"""
|
|
8
|
-
|
|
9
|
-
enabled = ask_if_not_provided(
|
|
10
|
-
options,
|
|
11
|
-
"rest_api_enabled",
|
|
12
|
-
"Set up the REST API interface? (Required for Web UI setup in the next step.)",
|
|
13
|
-
default_options["rest_api_enabled"],
|
|
14
|
-
none_interactive,
|
|
15
|
-
)
|
|
16
|
-
|
|
17
|
-
if not enabled:
|
|
18
|
-
return
|
|
19
|
-
|
|
20
|
-
ask_if_not_provided(
|
|
21
|
-
options,
|
|
22
|
-
"rest_api_server_input_port",
|
|
23
|
-
"REST API server port",
|
|
24
|
-
default_options["rest_api_server_input_port"],
|
|
25
|
-
none_interactive,
|
|
26
|
-
)
|
|
27
|
-
ask_if_not_provided(
|
|
28
|
-
options,
|
|
29
|
-
"rest_api_server_host",
|
|
30
|
-
"REST API server host",
|
|
31
|
-
default_options["rest_api_server_host"],
|
|
32
|
-
none_interactive,
|
|
33
|
-
)
|
|
34
|
-
ask_if_not_provided(
|
|
35
|
-
options,
|
|
36
|
-
"rest_api_server_input_endpoint",
|
|
37
|
-
"REST API endpoint",
|
|
38
|
-
default_options["rest_api_server_input_endpoint"],
|
|
39
|
-
none_interactive,
|
|
40
|
-
)
|
|
41
|
-
ask_if_not_provided(
|
|
42
|
-
options,
|
|
43
|
-
"rest_api_gateway_name",
|
|
44
|
-
"What would you like to call the gateway",
|
|
45
|
-
default_options["rest_api_gateway_name"],
|
|
46
|
-
none_interactive,
|
|
47
|
-
)
|
|
48
|
-
|
|
49
|
-
click.echo("\nAdditional configuration options are availale for the REST API such as enabling authentication, rate limits etc.")
|
|
50
|
-
click.echo("Please refer to our documentation for detailed setup instructions.\n")
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
from cli.utils import ask_if_not_provided
|
|
2
|
-
import click
|
|
3
|
-
|
|
4
|
-
def webui_step(options, default_options, none_interactive, abort):
|
|
5
|
-
"""
|
|
6
|
-
Initialize the Web UI configuration.
|
|
7
|
-
"""
|
|
8
|
-
if not options.get("rest_api_enabled"):
|
|
9
|
-
click.echo(click.style("Skipping setup for Web UI because REST API was not enabled", bold=False, fg="yellow"))
|
|
10
|
-
return
|
|
11
|
-
|
|
12
|
-
enabled = ask_if_not_provided(
|
|
13
|
-
options,
|
|
14
|
-
"webui_enabled",
|
|
15
|
-
"Enable Web UI?",
|
|
16
|
-
default_options["webui_enabled"],
|
|
17
|
-
none_interactive=none_interactive,
|
|
18
|
-
)
|
|
19
|
-
|
|
20
|
-
if not enabled:
|
|
21
|
-
return
|
|
22
|
-
|
|
23
|
-
ask_if_not_provided(
|
|
24
|
-
options,
|
|
25
|
-
"webui_listen_port",
|
|
26
|
-
"Server listen port",
|
|
27
|
-
default_options["webui_listen_port"],
|
|
28
|
-
none_interactive,
|
|
29
|
-
)
|
|
30
|
-
|
|
31
|
-
ask_if_not_provided(
|
|
32
|
-
options,
|
|
33
|
-
"webui_host",
|
|
34
|
-
"Server host",
|
|
35
|
-
default_options["webui_host"],
|
|
36
|
-
none_interactive,
|
|
37
|
-
)
|
|
38
|
-
|
|
39
|
-
click.echo("\nAdditional configuration options are availale for the Web UI such as enabling authentication, collecting feedback etc.")
|
|
40
|
-
click.echo("Please refer to our documentation for detailed setup instructions.\n")
|
|
File without changes
|
|
File without changes
|
|
File without changes
|