soliplex 0.72.2__tar.gz → 0.73__tar.gz
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.
- {soliplex-0.72.2/src/soliplex.egg-info → soliplex-0.73}/PKG-INFO +3 -3
- {soliplex-0.72.2 → soliplex-0.73}/pyproject.toml +3 -3
- {soliplex-0.72.2 → soliplex-0.73}/src/soliplex/agents.py +5 -0
- {soliplex-0.72.2 → soliplex-0.73}/src/soliplex/config/agents.py +7 -3
- {soliplex-0.72.2 → soliplex-0.73}/src/soliplex/config/quizzes.py +19 -0
- {soliplex-0.72.2 → soliplex-0.73}/src/soliplex/config/rooms.py +42 -0
- {soliplex-0.72.2 → soliplex-0.73}/src/soliplex/config/skills.py +72 -13
- {soliplex-0.72.2 → soliplex-0.73}/src/soliplex/config/tools.py +38 -0
- {soliplex-0.72.2 → soliplex-0.73/src/soliplex.egg-info}/PKG-INFO +3 -3
- {soliplex-0.72.2 → soliplex-0.73}/src/soliplex.egg-info/requires.txt +2 -2
- {soliplex-0.72.2 → soliplex-0.73}/LICENSE +0 -0
- {soliplex-0.72.2 → soliplex-0.73}/MANIFEST.in +0 -0
- {soliplex-0.72.2 → soliplex-0.73}/README.md +0 -0
- {soliplex-0.72.2 → soliplex-0.73}/example/skills/bare-bones/SKILL.md +0 -0
- {soliplex-0.72.2 → soliplex-0.73}/setup.cfg +0 -0
- {soliplex-0.72.2 → soliplex-0.73}/skills/soliplex-docs/SKILL.md +0 -0
- {soliplex-0.72.2 → soliplex-0.73}/src/soliplex/agui/__init__.py +0 -0
- {soliplex-0.72.2 → soliplex-0.73}/src/soliplex/agui/parser.py +0 -0
- {soliplex-0.72.2 → soliplex-0.73}/src/soliplex/agui/persistence.py +0 -0
- {soliplex-0.72.2 → soliplex-0.73}/src/soliplex/agui/schema.py +0 -0
- {soliplex-0.72.2 → soliplex-0.73}/src/soliplex/agui/util.py +0 -0
- {soliplex-0.72.2 → soliplex-0.73}/src/soliplex/authn.py +0 -0
- {soliplex-0.72.2 → soliplex-0.73}/src/soliplex/authz/__init__.py +0 -0
- {soliplex-0.72.2 → soliplex-0.73}/src/soliplex/authz/persistence.py +0 -0
- {soliplex-0.72.2 → soliplex-0.73}/src/soliplex/authz/schema.py +0 -0
- {soliplex-0.72.2 → soliplex-0.73}/src/soliplex/cli/admin_users.py +0 -0
- {soliplex-0.72.2 → soliplex-0.73}/src/soliplex/cli/ask.py +0 -0
- {soliplex-0.72.2 → soliplex-0.73}/src/soliplex/cli/audit.py +0 -0
- {soliplex-0.72.2 → soliplex-0.73}/src/soliplex/cli/cli_util.py +0 -0
- {soliplex-0.72.2 → soliplex-0.73}/src/soliplex/cli/main.py +0 -0
- {soliplex-0.72.2 → soliplex-0.73}/src/soliplex/cli/ollama.py +0 -0
- {soliplex-0.72.2 → soliplex-0.73}/src/soliplex/cli/room_authz.py +0 -0
- {soliplex-0.72.2 → soliplex-0.73}/src/soliplex/cli/serve.py +0 -0
- {soliplex-0.72.2 → soliplex-0.73}/src/soliplex/cli/types.py +0 -0
- {soliplex-0.72.2 → soliplex-0.73}/src/soliplex/completions.py +0 -0
- {soliplex-0.72.2 → soliplex-0.73}/src/soliplex/config/__init__.py +0 -0
- {soliplex-0.72.2 → soliplex-0.73}/src/soliplex/config/_utils.py +0 -0
- {soliplex-0.72.2 → soliplex-0.73}/src/soliplex/config/agui.py +0 -0
- {soliplex-0.72.2 → soliplex-0.73}/src/soliplex/config/authsystem.py +0 -0
- {soliplex-0.72.2 → soliplex-0.73}/src/soliplex/config/completions.py +0 -0
- {soliplex-0.72.2 → soliplex-0.73}/src/soliplex/config/exceptions.py +0 -0
- {soliplex-0.72.2 → soliplex-0.73}/src/soliplex/config/installation.py +0 -0
- {soliplex-0.72.2 → soliplex-0.73}/src/soliplex/config/logfire.py +0 -0
- {soliplex-0.72.2 → soliplex-0.73}/src/soliplex/config/meta.py +0 -0
- {soliplex-0.72.2 → soliplex-0.73}/src/soliplex/config/middleware.py +0 -0
- {soliplex-0.72.2 → soliplex-0.73}/src/soliplex/config/rag.py +0 -0
- {soliplex-0.72.2 → soliplex-0.73}/src/soliplex/config/routing.py +0 -0
- {soliplex-0.72.2 → soliplex-0.73}/src/soliplex/config/secrets.py +0 -0
- {soliplex-0.72.2 → soliplex-0.73}/src/soliplex/examples.py +0 -0
- {soliplex-0.72.2 → soliplex-0.73}/src/soliplex/installation.py +0 -0
- {soliplex-0.72.2 → soliplex-0.73}/src/soliplex/log_ingest.py +0 -0
- {soliplex-0.72.2 → soliplex-0.73}/src/soliplex/loggers.py +0 -0
- {soliplex-0.72.2 → soliplex-0.73}/src/soliplex/main.py +0 -0
- {soliplex-0.72.2 → soliplex-0.73}/src/soliplex/mcp_auth.py +0 -0
- {soliplex-0.72.2 → soliplex-0.73}/src/soliplex/mcp_client.py +0 -0
- {soliplex-0.72.2 → soliplex-0.73}/src/soliplex/mcp_server.py +0 -0
- {soliplex-0.72.2 → soliplex-0.73}/src/soliplex/models.py +0 -0
- {soliplex-0.72.2 → soliplex-0.73}/src/soliplex/ollama.py +0 -0
- {soliplex-0.72.2 → soliplex-0.73}/src/soliplex/quizzes.py +0 -0
- {soliplex-0.72.2 → soliplex-0.73}/src/soliplex/rag_audit.py +0 -0
- {soliplex-0.72.2 → soliplex-0.73}/src/soliplex/sandbox_audit.py +0 -0
- {soliplex-0.72.2 → soliplex-0.73}/src/soliplex/secrets.py +0 -0
- {soliplex-0.72.2 → soliplex-0.73}/src/soliplex/skills/bwrap_sandbox/SKILL.md +0 -0
- {soliplex-0.72.2 → soliplex-0.73}/src/soliplex/skills/bwrap_sandbox/__init__.py +0 -0
- {soliplex-0.72.2 → soliplex-0.73}/src/soliplex/titles.py +0 -0
- {soliplex-0.72.2 → soliplex-0.73}/src/soliplex/tools/__init__.py +0 -0
- {soliplex-0.72.2 → soliplex-0.73}/src/soliplex/tools/agui_run_feedback.py +0 -0
- {soliplex-0.72.2 → soliplex-0.73}/src/soliplex/tools/file_uploads.py +0 -0
- {soliplex-0.72.2 → soliplex-0.73}/src/soliplex/tools/rag.py +0 -0
- {soliplex-0.72.2 → soliplex-0.73}/src/soliplex/tui/cli.py +0 -0
- {soliplex-0.72.2 → soliplex-0.73}/src/soliplex/tui/main.py +0 -0
- {soliplex-0.72.2 → soliplex-0.73}/src/soliplex/tui/rest_api.py +0 -0
- {soliplex-0.72.2 → soliplex-0.73}/src/soliplex/tui/serve.py +0 -0
- {soliplex-0.72.2 → soliplex-0.73}/src/soliplex/util.py +0 -0
- {soliplex-0.72.2 → soliplex-0.73}/src/soliplex/views/__init__.py +0 -0
- {soliplex-0.72.2 → soliplex-0.73}/src/soliplex/views/agui.py +0 -0
- {soliplex-0.72.2 → soliplex-0.73}/src/soliplex/views/authn.py +0 -0
- {soliplex-0.72.2 → soliplex-0.73}/src/soliplex/views/authz.py +0 -0
- {soliplex-0.72.2 → soliplex-0.73}/src/soliplex/views/completions.py +0 -0
- {soliplex-0.72.2 → soliplex-0.73}/src/soliplex/views/installation.py +0 -0
- {soliplex-0.72.2 → soliplex-0.73}/src/soliplex/views/log_ingest.py +0 -0
- {soliplex-0.72.2 → soliplex-0.73}/src/soliplex/views/quizzes.py +0 -0
- {soliplex-0.72.2 → soliplex-0.73}/src/soliplex/views/room_file_uploads.py +0 -0
- {soliplex-0.72.2 → soliplex-0.73}/src/soliplex/views/rooms.py +0 -0
- {soliplex-0.72.2 → soliplex-0.73}/src/soliplex/views/sandbox_workdirs.py +0 -0
- {soliplex-0.72.2 → soliplex-0.73}/src/soliplex/views/stats.py +0 -0
- {soliplex-0.72.2 → soliplex-0.73}/src/soliplex/views/streaming.py +0 -0
- {soliplex-0.72.2 → soliplex-0.73}/src/soliplex/views/thread_file_uploads.py +0 -0
- {soliplex-0.72.2 → soliplex-0.73}/src/soliplex.egg-info/SOURCES.txt +0 -0
- {soliplex-0.72.2 → soliplex-0.73}/src/soliplex.egg-info/dependency_links.txt +0 -0
- {soliplex-0.72.2 → soliplex-0.73}/src/soliplex.egg-info/entry_points.txt +0 -0
- {soliplex-0.72.2 → soliplex-0.73}/src/soliplex.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: soliplex
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.73
|
|
4
4
|
Summary: An AI-powered Retrieval-Augmented Generation (RAG) system with a modern web interface.
|
|
5
5
|
Author-email: Enfold <info@enfoldsystems.net>
|
|
6
6
|
Classifier: Programming Language :: Python :: 3
|
|
@@ -19,8 +19,8 @@ Requires-Dist: fastapi
|
|
|
19
19
|
Requires-Dist: fastmcp<3.4,>=3.3.0
|
|
20
20
|
Requires-Dist: fakeredis!=2.35.0
|
|
21
21
|
Requires-Dist: greenlet
|
|
22
|
-
Requires-Dist: haiku.rag-slim<0.
|
|
23
|
-
Requires-Dist: haiku-skills<0.19,>=0.18.
|
|
22
|
+
Requires-Dist: haiku.rag-slim<0.68,>=0.67
|
|
23
|
+
Requires-Dist: haiku-skills<0.19,>=0.18.1
|
|
24
24
|
Requires-Dist: idna>=3.15
|
|
25
25
|
Requires-Dist: itsdangerous
|
|
26
26
|
Requires-Dist: joserfc<1.7,>=1.6.7
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "soliplex"
|
|
7
|
-
version = "0.
|
|
7
|
+
version = "0.73"
|
|
8
8
|
description = "An AI-powered Retrieval-Augmented Generation (RAG) system with a modern web interface."
|
|
9
9
|
authors = [{ name = "Enfold", email = "info@enfoldsystems.net" }]
|
|
10
10
|
readme = "README.md"
|
|
@@ -25,8 +25,8 @@ dependencies = [
|
|
|
25
25
|
"fastmcp >= 3.3.0, < 3.4",
|
|
26
26
|
"fakeredis != 2.35.0", # brownbag
|
|
27
27
|
"greenlet",
|
|
28
|
-
"haiku.rag-slim >= 0.
|
|
29
|
-
"haiku-skills >= 0.18.
|
|
28
|
+
"haiku.rag-slim >= 0.67, < 0.68",
|
|
29
|
+
"haiku-skills >= 0.18.1, < 0.19",
|
|
30
30
|
"idna >= 3.15",
|
|
31
31
|
"itsdangerous",
|
|
32
32
|
"joserfc >= 1.6.7, < 1.7", # CVE-2026-48990
|
|
@@ -31,6 +31,10 @@ class SkillToolsetConfig(typing.Protocol):
|
|
|
31
31
|
@abc.abstractmethod
|
|
32
32
|
def skill_toolset(self) -> hs_agent.SkillToolset: ...
|
|
33
33
|
|
|
34
|
+
@property
|
|
35
|
+
@abc.abstractmethod
|
|
36
|
+
def use_subagents(self) -> bool: ...
|
|
37
|
+
|
|
34
38
|
|
|
35
39
|
@dataclasses.dataclass
|
|
36
40
|
class AgentDependencies:
|
|
@@ -110,6 +114,7 @@ def get_default_agent_from_configs(
|
|
|
110
114
|
instructions = hs_prompts.build_system_prompt(
|
|
111
115
|
preamble=preamble,
|
|
112
116
|
skill_catalog=toolset.skill_catalog,
|
|
117
|
+
use_subagents=skill_toolset_config.use_subagents,
|
|
113
118
|
)
|
|
114
119
|
else:
|
|
115
120
|
instructions = agent_prompt
|
|
@@ -84,11 +84,14 @@ def _apply_agent_config_template(
|
|
|
84
84
|
raise InvalidAgentTemplateID(template_id, config_path)
|
|
85
85
|
|
|
86
86
|
template_config = ic_agent_configs_map[template_id]
|
|
87
|
+
tc_yaml_no_kind = {
|
|
88
|
+
key: value
|
|
89
|
+
for key, value in template_config.as_yaml.items()
|
|
90
|
+
if key != "kind"
|
|
91
|
+
}
|
|
87
92
|
|
|
88
93
|
config_dict = (
|
|
89
|
-
|
|
90
|
-
| config_dict
|
|
91
|
-
| {"_template_id": template_id}
|
|
94
|
+
tc_yaml_no_kind | config_dict | {"_template_id": template_id}
|
|
92
95
|
)
|
|
93
96
|
|
|
94
97
|
return config_dict
|
|
@@ -365,6 +368,7 @@ class FactoryAgentConfig:
|
|
|
365
368
|
@property
|
|
366
369
|
def as_yaml(self) -> dict:
|
|
367
370
|
return {
|
|
371
|
+
"kind": self.kind,
|
|
368
372
|
"id": self.id,
|
|
369
373
|
"factory_name": self.factory_name,
|
|
370
374
|
"with_agent_config": self.with_agent_config,
|
|
@@ -153,6 +153,25 @@ class QuizConfig:
|
|
|
153
153
|
)
|
|
154
154
|
self.judge_agent = agents.AgentConfig(**kwargs)
|
|
155
155
|
|
|
156
|
+
@property
|
|
157
|
+
def as_yaml(self) -> dict:
|
|
158
|
+
result = {
|
|
159
|
+
"id": self.id,
|
|
160
|
+
"title": self.title,
|
|
161
|
+
"randomize": self.randomize,
|
|
162
|
+
"judge_agent": self.judge_agent.as_yaml,
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
if self._question_file_stem is not None:
|
|
166
|
+
result["question_file"] = self._question_file_stem
|
|
167
|
+
else:
|
|
168
|
+
result["question_file"] = self._question_file_path_override
|
|
169
|
+
|
|
170
|
+
if self.max_questions is not None:
|
|
171
|
+
result["max_questions"] = self.max_questions
|
|
172
|
+
|
|
173
|
+
return result
|
|
174
|
+
|
|
156
175
|
@property
|
|
157
176
|
def question_file_path(self) -> pathlib.Path:
|
|
158
177
|
if self._question_file_path_override is not None:
|
|
@@ -168,6 +168,48 @@ class RoomConfig:
|
|
|
168
168
|
config_dict,
|
|
169
169
|
) from exc
|
|
170
170
|
|
|
171
|
+
@property
|
|
172
|
+
def as_yaml(self) -> dict:
|
|
173
|
+
result = {
|
|
174
|
+
"id": self.id,
|
|
175
|
+
"name": self.name,
|
|
176
|
+
"description": self.description,
|
|
177
|
+
"allow_mcp": self.allow_mcp,
|
|
178
|
+
"agent": self.agent_config.as_yaml,
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
if self._order is not None:
|
|
182
|
+
result["_order"] = self._order
|
|
183
|
+
|
|
184
|
+
if self.welcome_message:
|
|
185
|
+
result["welcome_message"] = self.welcome_message
|
|
186
|
+
|
|
187
|
+
if self.suggestions:
|
|
188
|
+
result["suggestions"] = self.suggestions
|
|
189
|
+
|
|
190
|
+
if self._logo_image:
|
|
191
|
+
result["logo_image"] = self._logo_image
|
|
192
|
+
|
|
193
|
+
if self.quizzes:
|
|
194
|
+
result["quizzes"] = [quiz.as_yaml for quiz in self.quizzes]
|
|
195
|
+
|
|
196
|
+
if self._agui_feature_names:
|
|
197
|
+
result["agui_feature_names"] = list(self._agui_feature_names)
|
|
198
|
+
|
|
199
|
+
if self.tool_configs:
|
|
200
|
+
result["tools"] = [tc.as_yaml for tc in self.tool_configs.values()]
|
|
201
|
+
|
|
202
|
+
if self.mcp_client_toolset_configs:
|
|
203
|
+
result["mcp_client_toolsets"] = {
|
|
204
|
+
key: mctc.as_yaml
|
|
205
|
+
for key, mctc in self.mcp_client_toolset_configs.items()
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
if self.skills:
|
|
209
|
+
result["skills"] = self.skills.as_yaml
|
|
210
|
+
|
|
211
|
+
return result
|
|
212
|
+
|
|
171
213
|
@property
|
|
172
214
|
def sort_key(self):
|
|
173
215
|
if self._order is not None:
|
|
@@ -315,6 +315,19 @@ class _HR_SkillConfigBase(
|
|
|
315
315
|
config_dict,
|
|
316
316
|
) from exc
|
|
317
317
|
|
|
318
|
+
@property
|
|
319
|
+
def as_yaml(self) -> dict:
|
|
320
|
+
result = {"kind": self.kind}
|
|
321
|
+
|
|
322
|
+
if self.rag_lancedb_stem is not None:
|
|
323
|
+
result["rag_lancedb_stem"] = self.rag_lancedb_stem
|
|
324
|
+
else:
|
|
325
|
+
result["rag_lancedb_override_path"] = (
|
|
326
|
+
self.rag_lancedb_override_path
|
|
327
|
+
)
|
|
328
|
+
|
|
329
|
+
return result
|
|
330
|
+
|
|
318
331
|
@property
|
|
319
332
|
def skill(self) -> hs_models.Skill:
|
|
320
333
|
return self._hr_skill_module.create_skill(
|
|
@@ -342,19 +355,6 @@ class HR_Analysis_SkillConfig(_HR_SkillConfigBase):
|
|
|
342
355
|
kind: typing.ClassVar[hs_models.SkillSource] = "haiku.rag.skills.analysis"
|
|
343
356
|
_hr_skill_module = hr_skills_analysis
|
|
344
357
|
|
|
345
|
-
@classmethod
|
|
346
|
-
def from_yaml(
|
|
347
|
-
cls,
|
|
348
|
-
installation_config: InstallationConfig, # noqa F821 cycles
|
|
349
|
-
config_path: pathlib.Path,
|
|
350
|
-
config_dict: dict,
|
|
351
|
-
):
|
|
352
|
-
return super().from_yaml(
|
|
353
|
-
installation_config,
|
|
354
|
-
config_path,
|
|
355
|
-
config_dict,
|
|
356
|
-
)
|
|
357
|
-
|
|
358
358
|
|
|
359
359
|
@dataclasses.dataclass(kw_only=True)
|
|
360
360
|
class BwrapSandboxSkillConfig(_SkillPropertiesFromMetadata):
|
|
@@ -398,6 +398,12 @@ class BwrapSandboxSkillConfig(_SkillPropertiesFromMetadata):
|
|
|
398
398
|
**sandbox_config_dict,
|
|
399
399
|
)
|
|
400
400
|
|
|
401
|
+
volumes_dict = config_dict.pop("volumes", {})
|
|
402
|
+
config_dict["volumes"] = {
|
|
403
|
+
key: bs_models.VolumeInfo(**value)
|
|
404
|
+
for key, value in volumes_dict.items()
|
|
405
|
+
}
|
|
406
|
+
|
|
401
407
|
de_name = config_dict.pop("default_environment_name", None)
|
|
402
408
|
if de_name is not None: # pragma: NO COVER forward-compat
|
|
403
409
|
config_dict["default_environment"] = de_name
|
|
@@ -410,6 +416,38 @@ class BwrapSandboxSkillConfig(_SkillPropertiesFromMetadata):
|
|
|
410
416
|
config_dict,
|
|
411
417
|
) from exc
|
|
412
418
|
|
|
419
|
+
@property
|
|
420
|
+
def as_yaml(self) -> dict:
|
|
421
|
+
result = {
|
|
422
|
+
"kind": self.kind,
|
|
423
|
+
"default_environment": self.default_environment,
|
|
424
|
+
}
|
|
425
|
+
|
|
426
|
+
if self.id is not None:
|
|
427
|
+
result["id"] = self.id
|
|
428
|
+
|
|
429
|
+
if self.allowed_environments is not None:
|
|
430
|
+
result["allowed_environments"] = self.allowed_environments
|
|
431
|
+
|
|
432
|
+
if self.sandbox_config is not None:
|
|
433
|
+
sc = self.sandbox_config
|
|
434
|
+
result["sandbox_config"] = {
|
|
435
|
+
"environments_pathname": sc.environments_pathname,
|
|
436
|
+
"execution_timeout_seconds": sc.execution_timeout_seconds,
|
|
437
|
+
"max_output_chars": sc.max_output_chars,
|
|
438
|
+
}
|
|
439
|
+
|
|
440
|
+
if self.volumes:
|
|
441
|
+
result["volumes"] = {
|
|
442
|
+
key: {
|
|
443
|
+
"host_path": str(value.host_path),
|
|
444
|
+
"writable": value.writable,
|
|
445
|
+
}
|
|
446
|
+
for key, value in self.volumes.items()
|
|
447
|
+
}
|
|
448
|
+
|
|
449
|
+
return result
|
|
450
|
+
|
|
413
451
|
@property
|
|
414
452
|
def agui_feature_names(self) -> tuple[str]:
|
|
415
453
|
return (sk_bwrap_sandbox.STATE_NAMESPACE,)
|
|
@@ -508,6 +546,12 @@ class RoomSkillsConfig(_SkillConfigModelBase):
|
|
|
508
546
|
#
|
|
509
547
|
installation_skill_names: list[str] = _default_list_field()
|
|
510
548
|
|
|
549
|
+
#
|
|
550
|
+
# Run skills as isolated sub-agents (the default) or expose their tools
|
|
551
|
+
# directly to the room's agent.
|
|
552
|
+
#
|
|
553
|
+
use_subagents: bool = True
|
|
554
|
+
|
|
511
555
|
# Set by `from_yaml` factory
|
|
512
556
|
_skill_configs: SkillConfigMap = _default_dict_field()
|
|
513
557
|
_installation_config: InstallationConfig = ( # noqa F821 cycles
|
|
@@ -569,6 +613,20 @@ class RoomSkillsConfig(_SkillConfigModelBase):
|
|
|
569
613
|
config_dict,
|
|
570
614
|
) from exc
|
|
571
615
|
|
|
616
|
+
@property
|
|
617
|
+
def as_yaml(self) -> dict:
|
|
618
|
+
result = {"model_name": self.model_name}
|
|
619
|
+
|
|
620
|
+
if self.installation_skill_names:
|
|
621
|
+
result["installation_skill_names"] = self.installation_skill_names
|
|
622
|
+
|
|
623
|
+
sc_map = [sc.as_yaml for sc in self._skill_configs.values()]
|
|
624
|
+
|
|
625
|
+
if sc_map:
|
|
626
|
+
result["skill_configs"] = sc_map
|
|
627
|
+
|
|
628
|
+
return result
|
|
629
|
+
|
|
572
630
|
@property
|
|
573
631
|
def skill_configs(self) -> SkillConfigMap:
|
|
574
632
|
ic_skill_configs = self._installation_config.skill_configs
|
|
@@ -625,6 +683,7 @@ class RoomSkillsConfig(_SkillConfigModelBase):
|
|
|
625
683
|
return SoliplexSkillToolset(
|
|
626
684
|
skills=skill_map.values(),
|
|
627
685
|
skill_model=self.model_or_name,
|
|
686
|
+
use_subagents=self.use_subagents,
|
|
628
687
|
)
|
|
629
688
|
|
|
630
689
|
|
|
@@ -228,6 +228,21 @@ class ToolConfig:
|
|
|
228
228
|
config_path, "toolconfig", config_dict
|
|
229
229
|
) from exc
|
|
230
230
|
|
|
231
|
+
@property
|
|
232
|
+
def as_yaml(self) -> dict:
|
|
233
|
+
result = {
|
|
234
|
+
"tool_name": self.tool_name,
|
|
235
|
+
"allow_mcp": self.allow_mcp,
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
if self.agui_feature_names:
|
|
239
|
+
result["agui_feature_names"] = list(self.agui_feature_names)
|
|
240
|
+
|
|
241
|
+
if self._ai_tool_params is not None:
|
|
242
|
+
result["ai_tool_params"] = self._ai_tool_params.as_yaml
|
|
243
|
+
|
|
244
|
+
return result
|
|
245
|
+
|
|
231
246
|
@property
|
|
232
247
|
def kind(self):
|
|
233
248
|
_, kind = self.tool_name.rsplit(".", 1)
|
|
@@ -326,6 +341,21 @@ class SearchDocumentsToolConfig(ToolConfig, config_rag._RAGConfigBase):
|
|
|
326
341
|
|
|
327
342
|
return instance
|
|
328
343
|
|
|
344
|
+
@property
|
|
345
|
+
def as_yaml(self) -> dict:
|
|
346
|
+
result = super().as_yaml
|
|
347
|
+
|
|
348
|
+
if self.rag_lancedb_stem is not None:
|
|
349
|
+
result["rag_lancedb_stem"] = self.rag_lancedb_stem
|
|
350
|
+
else:
|
|
351
|
+
result["rag_lancedb_override_path"] = (
|
|
352
|
+
self.rag_lancedb_override_path
|
|
353
|
+
)
|
|
354
|
+
|
|
355
|
+
result["search_documents_limit"] = self.search_documents_limit
|
|
356
|
+
|
|
357
|
+
return result
|
|
358
|
+
|
|
329
359
|
def get_extra_parameters(self) -> dict:
|
|
330
360
|
local = {
|
|
331
361
|
"search_documents_limit": self.search_documents_limit,
|
|
@@ -405,6 +435,10 @@ class Stdio_MCP_ClientToolsetConfig:
|
|
|
405
435
|
config_dict,
|
|
406
436
|
) from exc
|
|
407
437
|
|
|
438
|
+
@property
|
|
439
|
+
def as_yaml(self) -> dict:
|
|
440
|
+
return {"kind": self.kind} | self.toolset_params
|
|
441
|
+
|
|
408
442
|
@property
|
|
409
443
|
def toolset_params(self) -> dict:
|
|
410
444
|
return {
|
|
@@ -462,6 +496,10 @@ class _Remote_MCP_ClientToolsetConfig:
|
|
|
462
496
|
config_dict,
|
|
463
497
|
) from exc
|
|
464
498
|
|
|
499
|
+
@property
|
|
500
|
+
def as_yaml(self) -> dict:
|
|
501
|
+
return {"kind": self.kind} | self.toolset_params
|
|
502
|
+
|
|
465
503
|
@property
|
|
466
504
|
def toolset_params(self) -> dict:
|
|
467
505
|
return {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: soliplex
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.73
|
|
4
4
|
Summary: An AI-powered Retrieval-Augmented Generation (RAG) system with a modern web interface.
|
|
5
5
|
Author-email: Enfold <info@enfoldsystems.net>
|
|
6
6
|
Classifier: Programming Language :: Python :: 3
|
|
@@ -19,8 +19,8 @@ Requires-Dist: fastapi
|
|
|
19
19
|
Requires-Dist: fastmcp<3.4,>=3.3.0
|
|
20
20
|
Requires-Dist: fakeredis!=2.35.0
|
|
21
21
|
Requires-Dist: greenlet
|
|
22
|
-
Requires-Dist: haiku.rag-slim<0.
|
|
23
|
-
Requires-Dist: haiku-skills<0.19,>=0.18.
|
|
22
|
+
Requires-Dist: haiku.rag-slim<0.68,>=0.67
|
|
23
|
+
Requires-Dist: haiku-skills<0.19,>=0.18.1
|
|
24
24
|
Requires-Dist: idna>=3.15
|
|
25
25
|
Requires-Dist: itsdangerous
|
|
26
26
|
Requires-Dist: joserfc<1.7,>=1.6.7
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|