soliplex 0.83.2__tar.gz → 0.83.4__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.83.2/src/soliplex.egg-info → soliplex-0.83.4}/PKG-INFO +1 -1
- {soliplex-0.83.2 → soliplex-0.83.4}/pyproject.toml +1 -1
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/config/authsystem.py +1 -1
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/views/authn.py +34 -10
- {soliplex-0.83.2 → soliplex-0.83.4/src/soliplex.egg-info}/PKG-INFO +1 -1
- {soliplex-0.83.2 → soliplex-0.83.4}/LICENSE +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/MANIFEST.in +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/README.md +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/example/skills/bare-bones/SKILL.md +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/example/skills/stanzas/SKILL.md +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/setup.cfg +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/skills/soliplex-docs/SKILL.md +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/agents.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/agui/__init__.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/agui/parser.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/agui/persistence.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/agui/schema.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/agui/util.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/alembic_migrations/__init__.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/alembic_migrations/env.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/alembic_migrations/versions/216d48e1e2e5_soliplex_v0_53.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/alembic_migrations/versions/4b63e5f3f39e_soliplex_v0_51_1.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/alembic_migrations/versions/63edaa5987f6_soliplex_v0_67.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/alembic_migrations/versions/a1c7d3e90b42_soliplex_v0_80.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/alembic_migrations/versions/b7e2f41c9d05_soliplex_v0_82.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/alembic_migrations/versions/d5009d4f9874_soliplex_v0_44.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/authn.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/authz/__init__.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/authz/persistence.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/authz/schema.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/capabilities/filesystem.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/capabilities/rag_audit.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/cli/admin_users.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/cli/ask.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/cli/audit/__init__.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/cli/audit/_common.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/cli/audit/admin_users.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/cli/audit/completions.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/cli/audit/databases.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/cli/audit/environment.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/cli/audit/installation.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/cli/audit/interpolation.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/cli/audit/logfire.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/cli/audit/logging.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/cli/audit/oidc.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/cli/audit/ollama.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/cli/audit/quizzes.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/cli/audit/room_authz.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/cli/audit/rooms.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/cli/audit/secrets.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/cli/audit/skills.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/cli/cli_util.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/cli/database.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/cli/main.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/cli/ollama.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/cli/room_authz.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/cli/serve.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/cli/types.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/completions.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/config/__init__.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/config/_utils.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/config/agents.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/config/agui.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/config/completions.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/config/exceptions.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/config/installation.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/config/interpolation.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/config/logfire.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/config/meta.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/config/middleware.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/config/quizzes.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/config/rag.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/config/rooms.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/config/routing.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/config/secrets.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/config/skills.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/config/tools.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/examples.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/installation.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/log_ingest.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/loggers.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/main.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/mcp_auth.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/mcp_client.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/mcp_server.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/models.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/ollama.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/quizzes.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/rag_audit.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/sandbox_audit.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/secrets.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/skills/bwrap_sandbox/SKILL.md +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/skills/bwrap_sandbox/__init__.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/titles.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/tools/__init__.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/tools/agui_run_feedback.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/tools/file_uploads.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/tools/rag.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/tui/cli.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/tui/main.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/tui/rest_api.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/tui/serve.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/util.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/views/__init__.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/views/agui.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/views/authz.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/views/completions.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/views/installation.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/views/log_ingest.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/views/quizzes.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/views/room_file_uploads.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/views/rooms.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/views/sandbox_workdirs.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/views/stats.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/views/streaming.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/views/templates/consent.html.mako +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex/views/thread_file_uploads.py +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex.egg-info/SOURCES.txt +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex.egg-info/dependency_links.txt +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex.egg-info/entry_points.txt +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/src/soliplex.egg-info/requires.txt +0 -0
- {soliplex-0.83.2 → soliplex-0.83.4}/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.83.
|
|
3
|
+
Version: 0.83.4
|
|
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
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "soliplex"
|
|
7
|
-
version = "0.83.
|
|
7
|
+
version = "0.83.4"
|
|
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"
|
|
@@ -81,7 +81,7 @@ class OIDCAuthSystemConfig:
|
|
|
81
81
|
@property
|
|
82
82
|
def oauth_client_kwargs(self) -> dict:
|
|
83
83
|
"""Registered kwargs for this authsystem's 'ouath' client factory"""
|
|
84
|
-
client_kwargs = {}
|
|
84
|
+
client_kwargs = {"code_challenge_method": "S256"}
|
|
85
85
|
|
|
86
86
|
if self.scope is not None:
|
|
87
87
|
client_kwargs["scope"] = self.scope
|
|
@@ -29,9 +29,27 @@ depend_the_unauth_logger = views.depend_the_unauth_logger
|
|
|
29
29
|
depend_the_logger = views.depend_the_logger
|
|
30
30
|
|
|
31
31
|
|
|
32
|
+
_DEFAULT_PORT_SUFFIXES = {"http": ":80", "https": ":443"}
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def _normalize_origin(scheme: str, netloc: str) -> tuple[str, str]:
|
|
36
|
+
"""Lower-case 'netloc', dropping any default port for 'scheme'
|
|
37
|
+
|
|
38
|
+
A proxy may forward 'Host: example.com:443', which names the same
|
|
39
|
+
origin as 'https://example.com'.
|
|
40
|
+
"""
|
|
41
|
+
netloc = netloc.lower()
|
|
42
|
+
default_port_suffix = _DEFAULT_PORT_SUFFIXES.get(scheme)
|
|
43
|
+
|
|
44
|
+
if default_port_suffix is not None:
|
|
45
|
+
netloc = netloc.removesuffix(default_port_suffix)
|
|
46
|
+
|
|
47
|
+
return scheme, netloc
|
|
48
|
+
|
|
49
|
+
|
|
32
50
|
def _scheme_netloc(url: str) -> tuple[str, str]:
|
|
33
51
|
scheme, netloc = urllib_parse.urlparse(url)[:2]
|
|
34
|
-
return scheme, netloc
|
|
52
|
+
return _normalize_origin(scheme, netloc)
|
|
35
53
|
|
|
36
54
|
|
|
37
55
|
def _is_loopback(host: str) -> bool:
|
|
@@ -91,7 +109,7 @@ def _classify_return_to(
|
|
|
91
109
|
return ReturnTo.MALFORMED
|
|
92
110
|
|
|
93
111
|
trusted = {
|
|
94
|
-
(request.url.scheme, request.url.netloc
|
|
112
|
+
_normalize_origin(request.url.scheme, request.url.netloc),
|
|
95
113
|
*(_scheme_netloc(afo) for afo in allowed_frontend_origins),
|
|
96
114
|
}
|
|
97
115
|
|
|
@@ -459,7 +477,9 @@ async def get_auth_system(
|
|
|
459
477
|
):
|
|
460
478
|
"""Complete the OIDC token auth flow with the specified provider
|
|
461
479
|
|
|
462
|
-
On success, redirect to client-specified URL
|
|
480
|
+
On success, redirect to client-specified URL, passing 'token',
|
|
481
|
+
'refresh_token', 'expires_in', and (when the provider returns one)
|
|
482
|
+
'id_token' as callback parameters.
|
|
463
483
|
"""
|
|
464
484
|
bound_logger = the_unauth_logger.bind(oidc_system=system)
|
|
465
485
|
|
|
@@ -504,15 +524,19 @@ async def get_auth_system(
|
|
|
504
524
|
refresh_token = tokendict["refresh_token"]
|
|
505
525
|
expires_in = tokendict["expires_in"]
|
|
506
526
|
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
refresh_token=refresh_token,
|
|
512
|
-
expires_in=expires_in,
|
|
513
|
-
),
|
|
527
|
+
callback_params = dict(
|
|
528
|
+
token=access_token,
|
|
529
|
+
refresh_token=refresh_token,
|
|
530
|
+
expires_in=expires_in,
|
|
514
531
|
)
|
|
515
532
|
|
|
533
|
+
# Absent unless the configured scope includes 'openid'.
|
|
534
|
+
id_token = tokendict.get("id_token")
|
|
535
|
+
if id_token is not None:
|
|
536
|
+
callback_params["id_token"] = id_token
|
|
537
|
+
|
|
538
|
+
return_to = _with_callback_params(return_to, callback_params)
|
|
539
|
+
|
|
516
540
|
return responses.RedirectResponse(return_to)
|
|
517
541
|
|
|
518
542
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: soliplex
|
|
3
|
-
Version: 0.83.
|
|
3
|
+
Version: 0.83.4
|
|
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
|
|
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
|
|
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
|