soliplex 0.83.1__tar.gz → 0.83.2__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.
Files changed (122) hide show
  1. {soliplex-0.83.1/src/soliplex.egg-info → soliplex-0.83.2}/PKG-INFO +1 -1
  2. {soliplex-0.83.1 → soliplex-0.83.2}/pyproject.toml +1 -1
  3. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/views/authn.py +23 -16
  4. {soliplex-0.83.1 → soliplex-0.83.2/src/soliplex.egg-info}/PKG-INFO +1 -1
  5. {soliplex-0.83.1 → soliplex-0.83.2}/LICENSE +0 -0
  6. {soliplex-0.83.1 → soliplex-0.83.2}/MANIFEST.in +0 -0
  7. {soliplex-0.83.1 → soliplex-0.83.2}/README.md +0 -0
  8. {soliplex-0.83.1 → soliplex-0.83.2}/example/skills/bare-bones/SKILL.md +0 -0
  9. {soliplex-0.83.1 → soliplex-0.83.2}/example/skills/stanzas/SKILL.md +0 -0
  10. {soliplex-0.83.1 → soliplex-0.83.2}/setup.cfg +0 -0
  11. {soliplex-0.83.1 → soliplex-0.83.2}/skills/soliplex-docs/SKILL.md +0 -0
  12. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/agents.py +0 -0
  13. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/agui/__init__.py +0 -0
  14. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/agui/parser.py +0 -0
  15. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/agui/persistence.py +0 -0
  16. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/agui/schema.py +0 -0
  17. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/agui/util.py +0 -0
  18. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/alembic_migrations/__init__.py +0 -0
  19. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/alembic_migrations/env.py +0 -0
  20. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/alembic_migrations/versions/216d48e1e2e5_soliplex_v0_53.py +0 -0
  21. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/alembic_migrations/versions/4b63e5f3f39e_soliplex_v0_51_1.py +0 -0
  22. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/alembic_migrations/versions/63edaa5987f6_soliplex_v0_67.py +0 -0
  23. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/alembic_migrations/versions/a1c7d3e90b42_soliplex_v0_80.py +0 -0
  24. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/alembic_migrations/versions/b7e2f41c9d05_soliplex_v0_82.py +0 -0
  25. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/alembic_migrations/versions/d5009d4f9874_soliplex_v0_44.py +0 -0
  26. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/authn.py +0 -0
  27. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/authz/__init__.py +0 -0
  28. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/authz/persistence.py +0 -0
  29. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/authz/schema.py +0 -0
  30. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/capabilities/filesystem.py +0 -0
  31. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/capabilities/rag_audit.py +0 -0
  32. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/cli/admin_users.py +0 -0
  33. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/cli/ask.py +0 -0
  34. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/cli/audit/__init__.py +0 -0
  35. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/cli/audit/_common.py +0 -0
  36. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/cli/audit/admin_users.py +0 -0
  37. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/cli/audit/completions.py +0 -0
  38. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/cli/audit/databases.py +0 -0
  39. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/cli/audit/environment.py +0 -0
  40. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/cli/audit/installation.py +0 -0
  41. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/cli/audit/interpolation.py +0 -0
  42. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/cli/audit/logfire.py +0 -0
  43. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/cli/audit/logging.py +0 -0
  44. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/cli/audit/oidc.py +0 -0
  45. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/cli/audit/ollama.py +0 -0
  46. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/cli/audit/quizzes.py +0 -0
  47. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/cli/audit/room_authz.py +0 -0
  48. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/cli/audit/rooms.py +0 -0
  49. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/cli/audit/secrets.py +0 -0
  50. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/cli/audit/skills.py +0 -0
  51. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/cli/cli_util.py +0 -0
  52. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/cli/database.py +0 -0
  53. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/cli/main.py +0 -0
  54. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/cli/ollama.py +0 -0
  55. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/cli/room_authz.py +0 -0
  56. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/cli/serve.py +0 -0
  57. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/cli/types.py +0 -0
  58. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/completions.py +0 -0
  59. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/config/__init__.py +0 -0
  60. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/config/_utils.py +0 -0
  61. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/config/agents.py +0 -0
  62. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/config/agui.py +0 -0
  63. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/config/authsystem.py +0 -0
  64. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/config/completions.py +0 -0
  65. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/config/exceptions.py +0 -0
  66. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/config/installation.py +0 -0
  67. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/config/interpolation.py +0 -0
  68. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/config/logfire.py +0 -0
  69. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/config/meta.py +0 -0
  70. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/config/middleware.py +0 -0
  71. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/config/quizzes.py +0 -0
  72. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/config/rag.py +0 -0
  73. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/config/rooms.py +0 -0
  74. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/config/routing.py +0 -0
  75. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/config/secrets.py +0 -0
  76. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/config/skills.py +0 -0
  77. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/config/tools.py +0 -0
  78. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/examples.py +0 -0
  79. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/installation.py +0 -0
  80. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/log_ingest.py +0 -0
  81. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/loggers.py +0 -0
  82. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/main.py +0 -0
  83. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/mcp_auth.py +0 -0
  84. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/mcp_client.py +0 -0
  85. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/mcp_server.py +0 -0
  86. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/models.py +0 -0
  87. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/ollama.py +0 -0
  88. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/quizzes.py +0 -0
  89. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/rag_audit.py +0 -0
  90. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/sandbox_audit.py +0 -0
  91. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/secrets.py +0 -0
  92. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/skills/bwrap_sandbox/SKILL.md +0 -0
  93. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/skills/bwrap_sandbox/__init__.py +0 -0
  94. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/titles.py +0 -0
  95. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/tools/__init__.py +0 -0
  96. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/tools/agui_run_feedback.py +0 -0
  97. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/tools/file_uploads.py +0 -0
  98. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/tools/rag.py +0 -0
  99. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/tui/cli.py +0 -0
  100. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/tui/main.py +0 -0
  101. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/tui/rest_api.py +0 -0
  102. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/tui/serve.py +0 -0
  103. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/util.py +0 -0
  104. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/views/__init__.py +0 -0
  105. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/views/agui.py +0 -0
  106. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/views/authz.py +0 -0
  107. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/views/completions.py +0 -0
  108. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/views/installation.py +0 -0
  109. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/views/log_ingest.py +0 -0
  110. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/views/quizzes.py +0 -0
  111. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/views/room_file_uploads.py +0 -0
  112. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/views/rooms.py +0 -0
  113. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/views/sandbox_workdirs.py +0 -0
  114. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/views/stats.py +0 -0
  115. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/views/streaming.py +0 -0
  116. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/views/templates/consent.html.mako +0 -0
  117. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex/views/thread_file_uploads.py +0 -0
  118. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex.egg-info/SOURCES.txt +0 -0
  119. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex.egg-info/dependency_links.txt +0 -0
  120. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex.egg-info/entry_points.txt +0 -0
  121. {soliplex-0.83.1 → soliplex-0.83.2}/src/soliplex.egg-info/requires.txt +0 -0
  122. {soliplex-0.83.1 → soliplex-0.83.2}/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.1
3
+ Version: 0.83.2
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.1"
7
+ version = "0.83.2"
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"
@@ -426,6 +426,26 @@ async def post_login_system_confirm(
426
426
  )
427
427
 
428
428
 
429
+ def _with_callback_params(return_to: str, params: dict) -> str:
430
+ """Return 'return_to' with 'params' added to its fragment
431
+
432
+ The parameters follow a '?' inside the fragment
433
+ ('/#/auth/callback?token=...'), where the web client reads them;
434
+ browsers do not send the fragment to the server. 'return_to' without
435
+ a fragment gets one ('/#?token=...'). Any query string of
436
+ 'return_to' is kept unchanged.
437
+ """
438
+ base, _, fragment = return_to.partition("#")
439
+ if "?" not in fragment:
440
+ separator = "?"
441
+ elif fragment.endswith(("?", "&")):
442
+ separator = ""
443
+ else:
444
+ separator = "&"
445
+ qs = urllib_parse.urlencode(params)
446
+ return f"{base}#{fragment}{separator}{qs}"
447
+
448
+
429
449
  @util.logfire_span("GET /auth/{system}")
430
450
  @router.get(
431
451
  "/auth/{system}",
@@ -484,26 +504,13 @@ async def get_auth_system(
484
504
  refresh_token = tokendict["refresh_token"]
485
505
  expires_in = tokendict["expires_in"]
486
506
 
487
- # Handle hash-based routing (e.g., /#/auth/callback)
488
- # Query params must be placed before the hash fragment for Flutter to see
489
- # them
490
- components = urllib_parse.urlparse(return_to)
491
- qs = urllib_parse.urlencode(
507
+ return_to = _with_callback_params(
508
+ return_to,
492
509
  dict(
493
510
  token=access_token,
494
511
  refresh_token=refresh_token,
495
512
  expires_in=expires_in,
496
- )
497
- )
498
- return_to = urllib_parse.urlunparse(
499
- (
500
- components.scheme,
501
- components.netloc,
502
- components.path,
503
- components.params,
504
- qs,
505
- components.fragment,
506
- )
513
+ ),
507
514
  )
508
515
 
509
516
  return responses.RedirectResponse(return_to)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: soliplex
3
- Version: 0.83.1
3
+ Version: 0.83.2
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