syntaxmatrix 2.2.5__tar.gz → 2.2.6__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 (69) hide show
  1. {syntaxmatrix-2.2.5 → syntaxmatrix-2.2.6}/PKG-INFO +1 -1
  2. {syntaxmatrix-2.2.5 → syntaxmatrix-2.2.6}/SyntaxMatrix.egg-info/PKG-INFO +1 -1
  3. {syntaxmatrix-2.2.5 → syntaxmatrix-2.2.6}/setup.py +1 -1
  4. {syntaxmatrix-2.2.5 → syntaxmatrix-2.2.6}/syntaxmatrix/routes.py +26 -28
  5. {syntaxmatrix-2.2.5 → syntaxmatrix-2.2.6}/LICENSE.txt +0 -0
  6. {syntaxmatrix-2.2.5 → syntaxmatrix-2.2.6}/README.md +0 -0
  7. {syntaxmatrix-2.2.5 → syntaxmatrix-2.2.6}/SyntaxMatrix.egg-info/SOURCES.txt +0 -0
  8. {syntaxmatrix-2.2.5 → syntaxmatrix-2.2.6}/SyntaxMatrix.egg-info/dependency_links.txt +0 -0
  9. {syntaxmatrix-2.2.5 → syntaxmatrix-2.2.6}/SyntaxMatrix.egg-info/requires.txt +0 -0
  10. {syntaxmatrix-2.2.5 → syntaxmatrix-2.2.6}/SyntaxMatrix.egg-info/top_level.txt +0 -0
  11. {syntaxmatrix-2.2.5 → syntaxmatrix-2.2.6}/pyproject.toml +0 -0
  12. {syntaxmatrix-2.2.5 → syntaxmatrix-2.2.6}/setup.cfg +0 -0
  13. {syntaxmatrix-2.2.5 → syntaxmatrix-2.2.6}/syntaxmatrix/__init__.py +0 -0
  14. {syntaxmatrix-2.2.5 → syntaxmatrix-2.2.6}/syntaxmatrix/auth.py +0 -0
  15. {syntaxmatrix-2.2.5 → syntaxmatrix-2.2.6}/syntaxmatrix/bootstrap.py +0 -0
  16. {syntaxmatrix-2.2.5 → syntaxmatrix-2.2.6}/syntaxmatrix/commentary.py +0 -0
  17. {syntaxmatrix-2.2.5 → syntaxmatrix-2.2.6}/syntaxmatrix/core.py +0 -0
  18. {syntaxmatrix-2.2.5 → syntaxmatrix-2.2.6}/syntaxmatrix/db.py +0 -0
  19. {syntaxmatrix-2.2.5 → syntaxmatrix-2.2.6}/syntaxmatrix/display.py +0 -0
  20. {syntaxmatrix-2.2.5 → syntaxmatrix-2.2.6}/syntaxmatrix/emailer.py +0 -0
  21. {syntaxmatrix-2.2.5 → syntaxmatrix-2.2.6}/syntaxmatrix/file_processor.py +0 -0
  22. {syntaxmatrix-2.2.5 → syntaxmatrix-2.2.6}/syntaxmatrix/generate_page.py +0 -0
  23. {syntaxmatrix-2.2.5 → syntaxmatrix-2.2.6}/syntaxmatrix/gpt_models_latest.py +0 -0
  24. {syntaxmatrix-2.2.5 → syntaxmatrix-2.2.6}/syntaxmatrix/history_store.py +0 -0
  25. {syntaxmatrix-2.2.5 → syntaxmatrix-2.2.6}/syntaxmatrix/kernel_manager.py +0 -0
  26. {syntaxmatrix-2.2.5 → syntaxmatrix-2.2.6}/syntaxmatrix/llm_store.py +0 -0
  27. {syntaxmatrix-2.2.5 → syntaxmatrix-2.2.6}/syntaxmatrix/model_templates.py +0 -0
  28. {syntaxmatrix-2.2.5 → syntaxmatrix-2.2.6}/syntaxmatrix/models.py +0 -0
  29. {syntaxmatrix-2.2.5 → syntaxmatrix-2.2.6}/syntaxmatrix/plottings.py +0 -0
  30. {syntaxmatrix-2.2.5 → syntaxmatrix-2.2.6}/syntaxmatrix/profiles.py +0 -0
  31. {syntaxmatrix-2.2.5 → syntaxmatrix-2.2.6}/syntaxmatrix/project_root.py +0 -0
  32. {syntaxmatrix-2.2.5 → syntaxmatrix-2.2.6}/syntaxmatrix/session.py +0 -0
  33. {syntaxmatrix-2.2.5 → syntaxmatrix-2.2.6}/syntaxmatrix/settings/__init__.py +0 -0
  34. {syntaxmatrix-2.2.5 → syntaxmatrix-2.2.6}/syntaxmatrix/settings/default.yaml +0 -0
  35. {syntaxmatrix-2.2.5 → syntaxmatrix-2.2.6}/syntaxmatrix/settings/logging.py +0 -0
  36. {syntaxmatrix-2.2.5 → syntaxmatrix-2.2.6}/syntaxmatrix/settings/model_map.py +0 -0
  37. {syntaxmatrix-2.2.5 → syntaxmatrix-2.2.6}/syntaxmatrix/settings/prompts.py +0 -0
  38. {syntaxmatrix-2.2.5 → syntaxmatrix-2.2.6}/syntaxmatrix/settings/string_navbar.py +0 -0
  39. {syntaxmatrix-2.2.5 → syntaxmatrix-2.2.6}/syntaxmatrix/smiv.py +0 -0
  40. {syntaxmatrix-2.2.5 → syntaxmatrix-2.2.6}/syntaxmatrix/smpv.py +0 -0
  41. {syntaxmatrix-2.2.5 → syntaxmatrix-2.2.6}/syntaxmatrix/static/css/style.css +0 -0
  42. {syntaxmatrix-2.2.5 → syntaxmatrix-2.2.6}/syntaxmatrix/static/docs.md +0 -0
  43. {syntaxmatrix-2.2.5 → syntaxmatrix-2.2.6}/syntaxmatrix/static/icons/favicon.png +0 -0
  44. {syntaxmatrix-2.2.5 → syntaxmatrix-2.2.6}/syntaxmatrix/static/icons/hero_bg.jpg +0 -0
  45. {syntaxmatrix-2.2.5 → syntaxmatrix-2.2.6}/syntaxmatrix/static/icons/logo.png +0 -0
  46. {syntaxmatrix-2.2.5 → syntaxmatrix-2.2.6}/syntaxmatrix/static/icons/svg_497526.svg +0 -0
  47. {syntaxmatrix-2.2.5 → syntaxmatrix-2.2.6}/syntaxmatrix/static/icons/svg_497528.svg +0 -0
  48. {syntaxmatrix-2.2.5 → syntaxmatrix-2.2.6}/syntaxmatrix/static/js/chat.js +0 -0
  49. {syntaxmatrix-2.2.5 → syntaxmatrix-2.2.6}/syntaxmatrix/static/js/sidebar.js +0 -0
  50. {syntaxmatrix-2.2.5 → syntaxmatrix-2.2.6}/syntaxmatrix/static/js/widgets.js +0 -0
  51. {syntaxmatrix-2.2.5 → syntaxmatrix-2.2.6}/syntaxmatrix/templates/code_cell.html +0 -0
  52. {syntaxmatrix-2.2.5 → syntaxmatrix-2.2.6}/syntaxmatrix/templates/dashboard.html +0 -0
  53. {syntaxmatrix-2.2.5 → syntaxmatrix-2.2.6}/syntaxmatrix/templates/docs.html +0 -0
  54. {syntaxmatrix-2.2.5 → syntaxmatrix-2.2.6}/syntaxmatrix/templates/error.html +0 -0
  55. {syntaxmatrix-2.2.5 → syntaxmatrix-2.2.6}/syntaxmatrix/templates/login.html +0 -0
  56. {syntaxmatrix-2.2.5 → syntaxmatrix-2.2.6}/syntaxmatrix/templates/register.html +0 -0
  57. {syntaxmatrix-2.2.5 → syntaxmatrix-2.2.6}/syntaxmatrix/themes.py +0 -0
  58. {syntaxmatrix-2.2.5 → syntaxmatrix-2.2.6}/syntaxmatrix/ui_modes.py +0 -0
  59. {syntaxmatrix-2.2.5 → syntaxmatrix-2.2.6}/syntaxmatrix/utils.py +0 -0
  60. {syntaxmatrix-2.2.5 → syntaxmatrix-2.2.6}/syntaxmatrix/vector_db.py +0 -0
  61. {syntaxmatrix-2.2.5 → syntaxmatrix-2.2.6}/syntaxmatrix/vectordb/__init__.py +0 -0
  62. {syntaxmatrix-2.2.5 → syntaxmatrix-2.2.6}/syntaxmatrix/vectordb/adapters/__init__.py +0 -0
  63. {syntaxmatrix-2.2.5 → syntaxmatrix-2.2.6}/syntaxmatrix/vectordb/adapters/milvus_adapter.py +0 -0
  64. {syntaxmatrix-2.2.5 → syntaxmatrix-2.2.6}/syntaxmatrix/vectordb/adapters/pgvector_adapter.py +0 -0
  65. {syntaxmatrix-2.2.5 → syntaxmatrix-2.2.6}/syntaxmatrix/vectordb/adapters/sqlite_adapter.py +0 -0
  66. {syntaxmatrix-2.2.5 → syntaxmatrix-2.2.6}/syntaxmatrix/vectordb/base.py +0 -0
  67. {syntaxmatrix-2.2.5 → syntaxmatrix-2.2.6}/syntaxmatrix/vectordb/registry.py +0 -0
  68. {syntaxmatrix-2.2.5 → syntaxmatrix-2.2.6}/syntaxmatrix/vectorizer.py +0 -0
  69. {syntaxmatrix-2.2.5 → syntaxmatrix-2.2.6}/syntaxmatrix/workspace_db.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: syntaxmatrix
3
- Version: 2.2.5
3
+ Version: 2.2.6
4
4
  Summary: SyntaxMUI: A customizable framework for Python AI Assistant Projects.
5
5
  Home-page: https://github.com/bobganti/syntaxmatrix_demo
6
6
  Author: Bob Nti
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: syntaxmatrix
3
- Version: 2.2.5
3
+ Version: 2.2.6
4
4
  Summary: SyntaxMUI: A customizable framework for Python AI Assistant Projects.
5
5
  Home-page: https://github.com/bobganti/syntaxmatrix_demo
6
6
  Author: Bob Nti
@@ -8,7 +8,7 @@ with open(os.path.join(this_directory, "README.md"), encoding="utf-8") as f:
8
8
 
9
9
  setup(
10
10
  name="syntaxmatrix",
11
- version="2.2.5",
11
+ version="2.2.6",
12
12
  author="Bob Nti",
13
13
  author_email="bob.nti@syntaxmatrix.com",
14
14
  description="SyntaxMUI: A customizable framework for Python AI Assistant Projects.",
@@ -30,6 +30,7 @@ from . import profiles as _prof
30
30
  from . import auth as _auth
31
31
  from syntaxmatrix import profiles as _prof
32
32
  from syntaxmatrix.gpt_models_latest import set_args, extract_output_text as _out
33
+ from datetime import datetime
33
34
 
34
35
  import html as _html
35
36
  import contextlib
@@ -5388,32 +5389,31 @@ def setup_routes(smx):
5388
5389
  dl_html = f"""
5389
5390
  <button type="button"
5390
5391
  class="btn"
5391
- style="padding:8px 12px;border:1px solid #0b6;border-radius:6px;background:#fff;color:#0b6;cursor:pointer;"
5392
- onclick="(function() {{
5393
- fetch('{download_url}', {{
5394
- method: 'POST',
5395
- headers: {{ 'X-Requested-With': 'fetch' }}
5396
- }}).then(function(resp) {{
5397
- if (!resp.ok) throw new Error('Download failed');
5398
- return resp.blob();
5399
- }}).then(function(blob) {{
5400
- const url = window.URL.createObjectURL(blob);
5401
- const a = document.createElement('a');
5402
- a.href = url;
5403
- a.download = 'result.html';
5404
- document.body.appendChild(a);
5405
- a.click();
5406
- a.remove();
5407
- window.URL.revokeObjectURL(url);
5408
- }}).catch(function(err) {{
5392
+ style="margin:14px 0;padding:8px 12px;border:1px solid #0b6;border-radius:6px;background:#fff;color:#0b6;cursor:pointer;"
5393
+ onclick="(async function(btn) {{
5394
+ try {{
5395
+ btn.disabled = true;
5396
+ const orig = btn.textContent;
5397
+ btn.textContent = 'Saving…';
5398
+ const resp = await fetch('{download_url}', {{
5399
+ method: 'POST',
5400
+ headers: {{ 'X-Requested-With': 'fetch' }}
5401
+ }});
5402
+ const data = await resp.json();
5403
+ if (!resp.ok || !data.ok) throw new Error(data.error || 'Save failed');
5404
+ btn.textContent = 'Saved to MLEARNING_OUTPUTS';
5405
+ }} catch (err) {{
5409
5406
  console.error(err);
5410
- alert('Could not download the result. Please try again.');
5411
- }});
5412
- }})()">
5413
- Download Result (HTML)
5407
+ alert('Could not save. Please try again.');
5408
+ }} finally {{
5409
+ btn.disabled = false;
5410
+ }}
5411
+ }})(this)">
5412
+ Download
5414
5413
  </button>
5415
5414
  """
5416
5415
  ai_outputs.append(Markup(dl_html))
5416
+
5417
5417
  ################################################################
5418
5418
 
5419
5419
 
@@ -5493,16 +5493,14 @@ def setup_routes(smx):
5493
5493
  @smx.app.route("/download/result/html/<session_id>", methods=["POST"])
5494
5494
  def download_result_html(session_id):
5495
5495
  """Send the last-built result HTML as a download (only when user clicks)."""
5496
- path = os.path.join(MLEARNING_OUTPUTS, f"result_{session_id}.html")
5497
- # Prefer in-memory result (set during the query render)
5498
- html_doc = _last_result_html.get(session_id)
5496
+ os.makedirs(MLEARNING_OUTPUTS, exist_ok=True)
5497
+ stamp = datetime.now().strftime("%Y%m%d-%H%M%S-%f")
5498
+ filename = f"result_{session_id}_{stamp}.html"
5499
+ path = os.path.join(MLEARNING_OUTPUTS, filename)
5499
5500
 
5500
5501
  html_doc = _last_result_html.get(session_id)
5501
5502
  if not html_doc:
5502
5503
  return jsonify({"ok": False, "error": "No result available."}), 404
5503
-
5504
- os.makedirs(MLEARNING_OUTPUTS, exist_ok=True)
5505
- path = os.path.join(MLEARNING_OUTPUTS, f"result_{session_id}.html")
5506
5504
  with open(path, "w", encoding="utf-8") as f:
5507
5505
  f.write(html_doc)
5508
5506
 
File without changes
File without changes
File without changes