syntaxmatrix 2.5.6.1__py3-none-any.whl → 2.5.7__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.
@@ -42,7 +42,7 @@ def token_calculator(total_input_content, llm_profile):
42
42
  input_prompt_tokens = len(enc.encode(total_input_content))
43
43
  return input_prompt_tokens
44
44
 
45
- def mlearning_agent(user_prompt, system_prompt, coding_profile, temperature=0.1, max_tokens=4096):
45
+ def mlearning_agent(user_prompt, system_prompt, coding_profile):
46
46
  """
47
47
  Returns:
48
48
  (text, usage_dict)
@@ -95,72 +95,41 @@ def mlearning_agent(user_prompt, system_prompt, coding_profile, temperature=0.1,
95
95
  # Google
96
96
  def google_generate_code():
97
97
  nonlocal usage
98
- """
99
- Generates content using the Gemini API and calculates token usage
100
- including Context Overhead for consistency.
101
- """
102
-
103
- try:
104
- # 1. Client Initialization
105
- config = types.GenerateContentConfig(
106
- system_instruction=system_prompt,
107
- temperature=temperature,
108
- max_output_tokens=max_tokens,
109
- )
98
+ config = types.GenerateContentConfig(
99
+ system_instruction=system_prompt,
100
+ # Optional: Force the model to generate a Python code block as JSON
101
+ response_mime_type="application/json",
102
+ response_schema=types.Schema(
103
+ type=types.Type.OBJECT,
104
+ properties={
105
+ "code": types.Schema(type=types.Type.STRING, description="The runnable Python code."),
106
+ "explanation": types.Schema(type=types.Type.STRING, description="A brief explanation of the code."),
107
+ },
108
+ required=["code"]
109
+ ),
110
+ )
110
111
 
111
- # 2. API Call
112
- resp = _client.models.generate_content(
112
+ try:
113
+ response = _client.models.generate_content(
113
114
  model=_model,
114
- contents=[user_prompt],
115
+ contents=user_prompt,
115
116
  config=config,
116
117
  )
118
+ except Exception as e:
119
+ return f"An error occurred during API call: {e}"
117
120
 
118
- # 3. Token Usage Capture and Context Overhead Calculation
119
- um = resp.usage_metadata
120
- usage["input_tokens"] = um.prompt_token_count
121
- usage["output_tokens"] = um.thoughts_token_count
122
- usage["total_tokens"] = um.total_token_count
123
-
124
- # 4. Response Extraction (same robust logic as before)
125
- text = getattr(resp, "text", None)
126
- if isinstance(text, str) and text.strip():
127
- return text.strip()
128
-
129
- chunks = []
130
- candidates = getattr(resp, "candidates", None) or []
131
- for cand in candidates:
132
- content = getattr(cand, "content", None)
133
- if content:
134
- parts = getattr(content, "parts", None) or []
135
- for part in parts:
136
- t = getattr(part, "text", None)
137
- if t:
138
- chunks.append(str(t))
139
-
140
- text = "\n".join(chunks).strip()
141
- if text:
142
- return text
143
-
144
- # 5. Handle blocked response
145
- fb = getattr(resp, "prompt_feedback", None)
146
- block_reason = getattr(fb, "block_reason", None) if fb else None
147
- if block_reason and block_reason != types.BlockedReason.REASON_UNSPECIFIED:
148
- raise RuntimeError(f"{_model} blocked the response. Reason: {block_reason.name}")
149
- raise RuntimeError(f"{_model} failed to return content due to insufficient data.")
121
+ # 3. Token Usage Capture and Context Overhead Calculation
122
+ um = response.usage_metadata
123
+ usage["input_tokens"] = um.prompt_token_count
124
+ usage["output_tokens"] = um.candidates_token_count + um.thoughts_token_count
125
+ usage["total_tokens"] = um.total_token_count
150
126
 
151
- except APIError as e:
152
- error_msg = f"Gemini API Error: {e}"
153
-
127
+ try:
128
+ # The response text will be a JSON string due to the config.
129
+ response_json = json.loads(response.text)
130
+ return response_json.get("code", "Error: Code field not found in response.")
154
131
  except Exception as e:
155
- error_msg = f"An unexpected error occurred during API call or processing: {e}"
156
-
157
- # --- Return the error message wrapped in the required output code structure ---
158
- msg = f"I smxAI have instructed {error_msg}\n"
159
- return (
160
- f"# {msg}\n"
161
- "from syntaxmatrix.display import show\n"
162
- f"show({msg!r})\n"
163
- )
132
+ return f"Error parsing response as JSON: {e}\nRaw Response: {response.text}"
164
133
 
165
134
  # OpenAI Responses API
166
135
  def gpt_models_latest_generate_code():
@@ -225,15 +194,14 @@ def mlearning_agent(user_prompt, system_prompt, coding_profile, temperature=0.1,
225
194
  "from syntaxmatrix.display import show\n"
226
195
  f"show({msg!r})\n"
227
196
  )
228
-
197
+
229
198
  # Anthropic
230
199
  def anthropic_generate_code():
231
200
  nonlocal usage
232
201
  try:
233
202
  resp = _client.messages.create(
234
203
  model=_model,
235
- max_tokens=max_tokens,
236
- temperature=temperature,
204
+ temperature=0,
237
205
  system=system_prompt,
238
206
  messages=[
239
207
  {"role": "user", "content": user_prompt}
@@ -276,40 +244,44 @@ def mlearning_agent(user_prompt, system_prompt, coding_profile, temperature=0.1,
276
244
  def openai_sdk_generate_code():
277
245
  nonlocal usage
278
246
  try:
279
- resp = _client.chat.completions.create(
247
+ response = None
248
+ if _model == "deepseek-reasoner":
249
+ response = _client.chat.completions.create(
250
+ model=_model,
251
+ messages=[
252
+ {"role": "system", "content": system_prompt},
253
+ {"role": "user", "content": user_prompt},
254
+ ],
255
+ extra_body={"thinking": {"type": "enabled"}},
256
+ temperature=0,
257
+ stream=False
258
+ )
259
+ else:
260
+ response = _client.chat.completions.create(
280
261
  model=_model,
281
262
  messages=[
282
263
  {"role": "system", "content": system_prompt},
283
264
  {"role": "user", "content": user_prompt},
284
265
  ],
285
- temperature=temperature,
286
- max_tokens=max_tokens,
266
+ extra_body={"thinking": {"type": "enabled"}},
267
+ temperature=0,
268
+ stream=False
287
269
  )
270
+ content = response.choices[0].message.content
288
271
 
289
-
290
-
291
- um = resp.usage
272
+ um = response.usage
292
273
  usage["input_tokens"] = um.prompt_tokens
293
274
  usage["output_tokens"] = um.completion_tokens
294
275
  usage["total_tokens"] = um.total_tokens
295
276
 
296
- text = resp.choices[0].message.content
297
- if text:
298
- return text
299
-
300
- # Try to surface any block reason (safety / policy / etc.)
301
- block_reason = None
302
- choices = getattr(resp, "choices", None) or []
303
- if choices:
304
- first = choices[0]
305
- fr = getattr(first, "finish_reason", None)
306
- if fr and fr != "stop":
307
- block_reason = fr
308
-
309
- if block_reason:
310
- raise RuntimeError(f"{_model} stopped with reason: {block_reason}")
311
- # Fallback: nothing useful came back
312
- raise RuntimeError(f"{_model} returned nothing in this section due to insufficient data.")
277
+ code_match = re.search(r"```(?:python)?\n(.*?)```", content, re.DOTALL)
278
+
279
+ if code_match:
280
+ return code_match.group(1).strip()
281
+ else:
282
+ # If no markdown blocks are found, return the raw content
283
+ # (assuming the model obeyed instructions to output only code)
284
+ return content.strip()
313
285
 
314
286
  except Exception as e:
315
287
  # IMPORTANT: return VALID PYTHON so the dashboard can show the error
@@ -318,9 +290,7 @@ def mlearning_agent(user_prompt, system_prompt, coding_profile, temperature=0.1,
318
290
  f"# {msg}\n"
319
291
  "from syntaxmatrix.display import show\n"
320
292
  f"show({msg!r})\n"
321
- )
322
-
323
- # print("TTOOKKEENN: ", token_calculator(system_prompt + user_prompt, coding_profile))
293
+ )
324
294
 
325
295
  if _provider == "google":
326
296
  code = google_generate_code()
@@ -447,7 +417,7 @@ def refine_question_agent(raw_question: str, dataset_context: str | None = None)
447
417
 
448
418
 
449
419
  def classify_ml_job_agent(refined_question, dataset_profile):
450
-
420
+ import ast
451
421
  def ml_response(user_prompt, system_prompt, profile):
452
422
  _profile = profile # _prof.get_profile["admin"]
453
423
 
@@ -562,8 +532,9 @@ def classify_ml_job_agent(refined_question, dataset_profile):
562
532
  system_prompt = ("""
563
533
  You are a strict machine learning task classifier for an ML workbench.
564
534
  Your goal is to correctly label the user's task specifications with the most relevant tags from a fixed list.
565
- You Must always have 'data_preprocessing' as the 1st tag. Then add up to 4 to make 5 max. Your list, therefore, should have 1-5 tags. If you think a task is too complext for the given context, even if relevant, exclude it.
566
- If no relevant tag, default to "data_preprocessing" and return that alone.
535
+ You Must always have 'data_preprocessing' as the 1st tag. Then add up to 4 more, as needed, to make 5 max.
536
+ Your list should be 2-5 tags long. If no relevant tag, default to ["data_preprocessing"]
537
+ If tasks specs and `df` don't match (of different industries, return ['context mismatch']
567
538
  You should return only your list of tags, no prelude or preamble.
568
539
  """)
569
540
 
@@ -583,7 +554,7 @@ def classify_ml_job_agent(refined_question, dataset_profile):
583
554
  "generative_modeling", "causal_inference", "risk_modeling", "graph_analysis",
584
555
 
585
556
  # Foundational/Pipeline Steps
586
- "feature_engineering", "statistical_inference", "data_preprocessing",
557
+ "data_preprocessing", "feature_engineering", "statistical_inference",
587
558
  "model_validation", "hyperparameter_tuning"
588
559
  ]
589
560
 
@@ -591,7 +562,7 @@ def classify_ml_job_agent(refined_question, dataset_profile):
591
562
  task_description = refined_question
592
563
 
593
564
  user_prompt = f"""
594
- Analyze the following task description:
565
+ Analyze and classify the following task description:
595
566
  ---
596
567
  {task_description}
597
568
  ---
@@ -616,9 +587,11 @@ def classify_ml_job_agent(refined_question, dataset_profile):
616
587
 
617
588
  llm_profile['client'] = _prof.get_client(llm_profile)
618
589
 
619
- # Extract raw content
620
590
  tasks = ml_response(user_prompt, system_prompt, llm_profile)
621
- return tasks
591
+ try:
592
+ return ast.literal_eval(tasks)
593
+ except Exception:
594
+ return tasks
622
595
 
623
596
 
624
597
  def text_formatter_agent(text):
syntaxmatrix/core.py CHANGED
@@ -599,7 +599,7 @@ class SyntaxMUI:
599
599
  from syntaxmatrix.gpt_models_latest import extract_output_text as _out, set_args
600
600
 
601
601
  if not self._classification_profile:
602
- classification_profile = _prof.get_profile('classification') or _prof.get_profile('chat') or _prof.get_profile('admin')
602
+ classification_profile = _prof.get_profile('classification') or _prof.get_profile('admin')
603
603
  if not classification_profile:
604
604
  return {"Error": "Set a profile for Classification"}
605
605
  self._classification_profile = classification_profile
@@ -1317,11 +1317,11 @@ class SyntaxMUI:
1317
1317
  """)
1318
1318
 
1319
1319
  if not self._coding_profile:
1320
- coding_profile = _prof.get_profile("coding") or _prof.get_profile("admin")
1320
+ coding_profile = _prof.get_profile("coding") # or _prof.get_profile("admin")
1321
1321
  if not coding_profile:
1322
1322
  return (
1323
1323
  '<div class="smx-alert smx-alert-warn">'
1324
- 'No LLM profile configured for <code>coding</code> (or <code>admin</code>). <br>'
1324
+ 'No LLM profile configured for <code>coding</code> <br>'
1325
1325
  'Please, add the LLM profile inside the admin panel or contact your Administrator.'
1326
1326
  '</div>'
1327
1327
  )
syntaxmatrix/routes.py CHANGED
@@ -3047,7 +3047,7 @@ def setup_routes(smx):
3047
3047
  }) + "\n\n"
3048
3048
 
3049
3049
  except GeneratorExit:
3050
- smx.info("Client aborted the stream.")
3050
+ return "Client aborted the stream."
3051
3051
  except Exception as e:
3052
3052
  smx.error(f"Stream error: {e}")
3053
3053
  yield "data: " + json.dumps({"event": "error", "error": str(e)}) + "\n\n"
@@ -6513,8 +6513,7 @@ def setup_routes(smx):
6513
6513
  cell["highlighted_code"] = Markup(_pygmentize(cell["code"]))
6514
6514
 
6515
6515
  highlighted_ai_code = _pygmentize(ai_code)
6516
- tasks = [tag.replace("_", " ").replace('"', '').capitalize() for tag in tags]
6517
-
6516
+
6518
6517
  return render_template(
6519
6518
  "dashboard.html",
6520
6519
  section=section,
@@ -6525,7 +6524,7 @@ def setup_routes(smx):
6525
6524
  highlighted_ai_code=highlighted_ai_code if ai_code else None,
6526
6525
  askai_question=smx.sanitize_rough_to_markdown_task(askai_question),
6527
6526
  refined_question=refined_question,
6528
- tasks=tasks,
6527
+ tasks=tags,
6529
6528
  data_cells=data_cells,
6530
6529
  session_id=session_id,
6531
6530
  llm_usage=llm_usage
@@ -36,12 +36,14 @@ PROVIDERS_MODELS = {
36
36
 
37
37
  ],
38
38
  #4
39
- "deepseek": [
39
+ "deepseek": [
40
+ "deepseek-reasoner",
40
41
  "deepseek-chat",
41
42
  ],
42
43
  #5
43
44
  "moonshot": [
44
- "kimi-k2-0905-preview",
45
+ "kimi-k2-thinking",
46
+ "kimi-k2",
45
47
  ],
46
48
  #6
47
49
  "alibaba": [
@@ -15,7 +15,7 @@
15
15
  position: fixed;
16
16
  top: 0; left: 0;
17
17
  width: 200px; height: 100vh;
18
- background: #f1f4f7;
18
+ background: #a3a4a5ff;
19
19
  border-right: 1px solid #ccc;
20
20
  padding: 26px 10px 10px 14px;
21
21
  box-sizing: border-box;
@@ -56,7 +56,7 @@
56
56
  min-height: 100vh;
57
57
  box-sizing: border-box;
58
58
  overflow-x: auto;
59
- background: #f8f9fb;
59
+ background: #dff0f5ff;
60
60
  font-size: clamp(0.98rem, 2vw, 1.07rem);
61
61
  }
62
62
  .dashboard-tabs {
@@ -85,7 +85,7 @@
85
85
  top: 2px;
86
86
  }
87
87
  .dashboard-content {
88
- background: #fff;
88
+ background: #bbbbbd;
89
89
  width: 100%;
90
90
  padding: 10px;
91
91
  border-radius: 0 0 10px 10px;
@@ -95,6 +95,10 @@
95
95
  overflow-x: auto;
96
96
  margin-right: 1vw;
97
97
  }
98
+
99
+ textarea#askai{
100
+ background: #e5e5e5cd;
101
+ }
98
102
 
99
103
  .smx-table {
100
104
  padding: clamp(3px, 1vw, 9px) clamp(4px, 2vw, 13px);
@@ -590,6 +594,31 @@
590
594
  .eda-card h3{ color: #1f2937 !important; }
591
595
  .smx-stat h4{ color: #64748b !important; }
592
596
  </style>
597
+ <style>
598
+ div.li > li {
599
+ margin-left: 35px;
600
+ }
601
+ /* 1. Style the arrow specifically */
602
+ .toggle-arrow {
603
+ display: inline-block; /* CRITICAL: Allows the element to rotate */
604
+ transition: transform 0.2s; /* Makes the rotation smooth */
605
+ margin-right: 6px; /* Spacing between arrow and text */
606
+ }
607
+
608
+ /* 2. Rotate and color when the menu is OPEN */
609
+ details[open] summary .toggle-arrow {
610
+ transform: rotate(90deg); /* Rotates the arrow downwards */
611
+ color: #007acc; /* Changes color to blue */
612
+ }
613
+
614
+ /* 3. (Optional) Remove default browser markers to avoid double arrows */
615
+ details > summary {
616
+ list-style: none;
617
+ }
618
+ details > summary::-webkit-details-marker {
619
+ display: none;
620
+ }
621
+ </style>
593
622
 
594
623
  <script src="https://cdn.plot.ly/plotly-latest.min.js"></script>
595
624
  </head>
@@ -611,8 +640,7 @@
611
640
  <div class="dashboard-main">
612
641
  <button id="sidebarToggle" class="sidebar-toggle" aria-label="Open menu"></button>
613
642
  <ul class="dashboard-tabs">
614
- <li class="{{ 'active' if section == 'explore' else '' }}"><a href="/dashboard?section=explore">Explore</a></li>
615
-
643
+ <li class="{{ 'active' if section == 'explore' else '' }}"><a href="/dashboard?section=explore">Explore</a></li>
616
644
  </ul>
617
645
  <div class="dashboard-content">
618
646
  <div class="explore-card">
@@ -679,27 +707,31 @@
679
707
  -->
680
708
  <br><br>
681
709
  <div class="refined-qblock">
682
- <span class="refined-q-label"><b>My Thought Process:</b></span><br>
683
- <span class="refined-q">{{ refined_question|safe }}</span>
684
- </div><br>
685
- <div class="refined-qblock">
686
- {% if tasks %}
687
- <b>Tasks Performed: </b><br>
688
- {% for task in tasks %}
689
- <span class="refined-q">- {{ task }}</span><br>
690
- {% endfor %}
691
- {% endif %}
692
- </div><br>
693
- {% if llm_usage %}
694
- <div class="refined-qblock">
695
- <!-- <b>LLM: </b><span>{{ llm_usage.provider }} | {{ llm_usage.model }}</span><br> -->
696
- <b>Token Usage: </b>
697
- <li>- Input Tokens: {{ llm_usage.input_tokens }}</li>
698
- <li>- Output Tokens: {{ llm_usage.output_tokens }}</li>
699
- <li>- Total Tokens: {{ llm_usage.total_tokens }}</li>
700
- </ul>
701
- </div>
702
- {% endif %}
710
+ <details>
711
+ <summary class="refined-q-label" style="cursor: pointer; list-style: none;">
712
+ <span class="toggle-arrow">▶</span>
713
+ <b>Thought Process</b>
714
+ </summary>
715
+ <div class="li" style="margin-top: 10px; padding-left: 14px; border-left: 3px solid #e0e5ee;">
716
+ <span class="refined-q">{{ refined_question|safe }}</span>
717
+ <br><br>
718
+ {% if tasks %}
719
+ <b>Tasks Performed: </b>
720
+ {% for task in tasks %}
721
+ <li>{{ task.replace('_', ' ').capitalize() }}</li>
722
+ {% endfor %}
723
+ {% endif %}
724
+ <br><br>
725
+ {% if llm_usage %}
726
+ <b>LLM: </b><span>{{ llm_usage.provider }} | {{ llm_usage.model }}</span><br>
727
+ <b>Token Usage: </b>
728
+ <li>Input Tokens: {{ llm_usage.input_tokens }}</li>
729
+ <li>Output Tokens: {{ llm_usage.output_tokens }}</li>
730
+ <li>Total Tokens: {{ llm_usage.total_tokens }}</li>
731
+ </div>
732
+ {% endif %}
733
+ </div>
734
+ </details>
703
735
  {% endif %}
704
736
  {% if ai_outputs %}
705
737
  <div class="d-flex align-items-center justify-content-between" style="margin: 12px;">
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: syntaxmatrix
3
- Version: 2.5.6.1
3
+ Version: 2.5.7
4
4
  Summary: SyntaxMUI: A customizable framework for Python AI Assistant Projects.
5
5
  Author: Bob Nti
6
6
  Author-email: bob.nti@syntaxmatrix.net
@@ -2,7 +2,7 @@ syntaxmatrix/__init__.py,sha256=_LnTrYAW2tbYA37Y233Vv4OMOk8NUnoJi-1yzFyHxEI,2573
2
2
  syntaxmatrix/auth.py,sha256=SCD6uWojXjj9yjUTKzgV5kBYe6ZkXASEG2VopLFkEtM,18140
3
3
  syntaxmatrix/bootstrap.py,sha256=Y7ZNg-Z3ecrr1iYem5EMzPmGstXnEKmO9kqKVoOoljo,817
4
4
  syntaxmatrix/commentary.py,sha256=3uSlbaQ1zl-gYtEtEpFbv2M-IH-HSdFdMvhxa7UCNHk,12025
5
- syntaxmatrix/core.py,sha256=eIqstFz0shYggr9jPyLTMJyS42xACz3hJ6V40iT8wDQ,61389
5
+ syntaxmatrix/core.py,sha256=7o5givPq7Io9DCnJQjTy-izgYvJivE2POxvG45i3dBk,61338
6
6
  syntaxmatrix/dataset_preprocessing.py,sha256=wtV4MWzkyfOsBHTsS0H1gqHho77ZQHGDI9skJryyZWA,8732
7
7
  syntaxmatrix/db.py,sha256=xkCpyhFxnAwrnZCTd13NkJsahVze0i4egjMcbB7kPfs,5000
8
8
  syntaxmatrix/display.py,sha256=TgMrE5WW80VlLcL_XvEz936mekFccJgLTfzbCIozSc8,3728
@@ -18,7 +18,7 @@ syntaxmatrix/plottings.py,sha256=MjHQ9T1_oC5oyr4_wkM2GJDrpjp0sbvudbs2lGaMyzk,610
18
18
  syntaxmatrix/preface.py,sha256=EOK3lflMJ-0B6SRJtVXhzZjhvu-bfXzw-sy1TbTYOVs,17009
19
19
  syntaxmatrix/profiles.py,sha256=0-lky7Wj-WQlP5CbvTyw1tI2M0FiqhhTkLZYLRhD5AU,2251
20
20
  syntaxmatrix/project_root.py,sha256=1ckvbFVV1szHtHsfSCoGcImHkRwbfszmPG1kGh9ZZlE,2227
21
- syntaxmatrix/routes.py,sha256=tGBSccUs9iNuMnjpZmtvn8jDRc1Sy2aAb0t0sKoBUmE,302995
21
+ syntaxmatrix/routes.py,sha256=kkLn6uOfOiD8-Kl2_JKs0qcxBHkuJd6cFih9v8KuTWk,302912
22
22
  syntaxmatrix/session.py,sha256=v0qgxnVM_LEaNvZQJSa-13Q2eiwc3RDnjd2SahNnHQk,599
23
23
  syntaxmatrix/smiv.py,sha256=1lSN3UYpXvYoVNd6VrkY5iZuF_nDxD6xxvLnTn9wcbQ,1405
24
24
  syntaxmatrix/smpv.py,sha256=rrCgYqfjBaK2n5qzfQyXK3bHFMvgNcCIqPaXquOLtDM,3600
@@ -30,13 +30,13 @@ syntaxmatrix/vectorizer.py,sha256=5w_UQiUIirm_W-Q9TcaEI8LTcTYIuDBdKfz79T1aZ8g,13
30
30
  syntaxmatrix/workspace_db.py,sha256=Xu9OlW8wo3iaH5Y88ZMdLOf-fiZxF1NBb5rAw3KcbfY,4715
31
31
  syntaxmatrix/agentic/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
32
32
  syntaxmatrix/agentic/agent_tools.py,sha256=yQwavONP23ziMxNQf3j2Y4TVo_LxEsiAWecKuBK8WDg,866
33
- syntaxmatrix/agentic/agents.py,sha256=SKYoBO-iVPRVpvMP6BOYp7axsiCs1ve9J_cNyf3utCw,30808
33
+ syntaxmatrix/agentic/agents.py,sha256=m4eqeCf4fVRodCa1Pgc3LwT4EPGip4E-7n1k1HxeKxA,29898
34
34
  syntaxmatrix/agentic/code_tools_registry.py,sha256=Wp4-KHtp0BUVciqSbmionBsQMVFOnvJPruBJeNiuwkk,1564
35
35
  syntaxmatrix/agentic/model_templates.py,sha256=A3ROE3BHkvnU9cxqSGjlCBIw9U15zRaTKgK-WxcZtUI,76033
36
36
  syntaxmatrix/settings/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
37
37
  syntaxmatrix/settings/default.yaml,sha256=BznvF1D06VMPbT6UX3MQ4zUkXxTXLnAA53aUu8G4O38,569
38
38
  syntaxmatrix/settings/logging.py,sha256=U8iTDFv0H1ECdIzH9He2CtOVlK1x5KHCk126Zn5Vi7M,1362
39
- syntaxmatrix/settings/model_map.py,sha256=of49J294XnPRXYXUtdApg1t9VRajwZoZplVD9mBDSIc,11990
39
+ syntaxmatrix/settings/model_map.py,sha256=M6EPTPw2m88RFLNlzxt6vQzEtdr66NcHz0t4zB7QfkU,12028
40
40
  syntaxmatrix/settings/prompts.py,sha256=dLNijnw9UHlAg5qxcSaLPhTmR7SdDDyOFcMKhlCA4eQ,21695
41
41
  syntaxmatrix/settings/string_navbar.py,sha256=NqgTzo3J9rRI4c278VG6kpoViFfmi2FKmL6sO0R-bus,83
42
42
  syntaxmatrix/static/docs.md,sha256=rWlKjNcpS2cs5DElGNYuaA-XXdGZnRGMXx62nACvDwE,11105
@@ -51,7 +51,7 @@ syntaxmatrix/static/js/sidebar.js,sha256=zHp4skKLY2Dlqx7aLPQ8_cR0iTRT17W0SC2TR38
51
51
  syntaxmatrix/static/js/widgets.js,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
52
52
  syntaxmatrix/templates/change_password.html,sha256=YWEcnwJLccLyKGzQxIrc0xuP-p00BtEIwcYq4oFvJ-0,3332
53
53
  syntaxmatrix/templates/code_cell.html,sha256=LOr9VjvNQcOGKKJ1ecpcZh3C3qsUxBHueg2iQtpdxl8,638
54
- syntaxmatrix/templates/dashboard.html,sha256=MhB8m5EQVuWQ5f6gRECtsoUfeyvew_z5nZz5FTg4Pmo,31015
54
+ syntaxmatrix/templates/dashboard.html,sha256=lR0wUtozTh5bDHbPSiywJiypiT_nNfzvEJJLfWckE0w,32272
55
55
  syntaxmatrix/templates/docs.html,sha256=KVi5JrZD3gwOduiZhAz7hQrKY9SrQ_bsHOODj0Nj09s,3552
56
56
  syntaxmatrix/templates/error.html,sha256=Iu5ykHnhw8jrxVBNn6B95e90W5u9I2hySCiLtaoOJMs,3290
57
57
  syntaxmatrix/templates/login.html,sha256=V_bWHozS1xCeHPsvAAfaGG-_2lAE7K8d05IarQN1PS8,2677
@@ -63,8 +63,8 @@ syntaxmatrix/vectordb/adapters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5
63
63
  syntaxmatrix/vectordb/adapters/milvus_adapter.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
64
64
  syntaxmatrix/vectordb/adapters/pgvector_adapter.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
65
65
  syntaxmatrix/vectordb/adapters/sqlite_adapter.py,sha256=L8M2qHfwZRAFVxWeurUVdHaJXz6F5xTUSWh3uy6TSUs,6035
66
- syntaxmatrix-2.5.6.1.dist-info/licenses/LICENSE.txt,sha256=j1P8naTdy1JMxTC80XYQjbyAQnuOlpDusCUhncrvpy8,1083
67
- syntaxmatrix-2.5.6.1.dist-info/METADATA,sha256=KNptOa1RWzCBh139s4QqtGu696Pgm2_ykp_5r7Lkjik,18092
68
- syntaxmatrix-2.5.6.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
69
- syntaxmatrix-2.5.6.1.dist-info/top_level.txt,sha256=HKP_zkl4V_nt7osC15DlacoBZktHrbZYOqf_pPkF3T8,13
70
- syntaxmatrix-2.5.6.1.dist-info/RECORD,,
66
+ syntaxmatrix-2.5.7.dist-info/licenses/LICENSE.txt,sha256=j1P8naTdy1JMxTC80XYQjbyAQnuOlpDusCUhncrvpy8,1083
67
+ syntaxmatrix-2.5.7.dist-info/METADATA,sha256=2_xno8Sgx4iERRKmk5GfgluVQDY_94aPFdmx3NC85dw,18090
68
+ syntaxmatrix-2.5.7.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
69
+ syntaxmatrix-2.5.7.dist-info/top_level.txt,sha256=HKP_zkl4V_nt7osC15DlacoBZktHrbZYOqf_pPkF3T8,13
70
+ syntaxmatrix-2.5.7.dist-info/RECORD,,