abstractassistant 0.3.4__tar.gz → 0.3.5__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 (34) hide show
  1. {abstractassistant-0.3.4 → abstractassistant-0.3.5}/CHANGELOG.md +5 -0
  2. {abstractassistant-0.3.4 → abstractassistant-0.3.5}/PKG-INFO +3 -3
  3. {abstractassistant-0.3.4 → abstractassistant-0.3.5}/abstractassistant/ui/provider_manager.py +2 -2
  4. {abstractassistant-0.3.4 → abstractassistant-0.3.5}/abstractassistant/ui/qt_bubble.py +31 -30
  5. {abstractassistant-0.3.4 → abstractassistant-0.3.5}/docs/architecture.md +15 -2
  6. {abstractassistant-0.3.4 → abstractassistant-0.3.5}/pyproject.toml +6 -3
  7. {abstractassistant-0.3.4 → abstractassistant-0.3.5}/ACKNOWLEDGMENTS.md +0 -0
  8. {abstractassistant-0.3.4 → abstractassistant-0.3.5}/CONTRIBUTING.md +0 -0
  9. {abstractassistant-0.3.4 → abstractassistant-0.3.5}/LICENSE +0 -0
  10. {abstractassistant-0.3.4 → abstractassistant-0.3.5}/MANIFEST.in +0 -0
  11. {abstractassistant-0.3.4 → abstractassistant-0.3.5}/README.md +0 -0
  12. {abstractassistant-0.3.4 → abstractassistant-0.3.5}/abstractassistant/__init__.py +0 -0
  13. {abstractassistant-0.3.4 → abstractassistant-0.3.5}/abstractassistant/app.py +0 -0
  14. {abstractassistant-0.3.4 → abstractassistant-0.3.5}/abstractassistant/cli.py +0 -0
  15. {abstractassistant-0.3.4 → abstractassistant-0.3.5}/abstractassistant/config.py +0 -0
  16. {abstractassistant-0.3.4 → abstractassistant-0.3.5}/abstractassistant/core/__init__.py +0 -0
  17. {abstractassistant-0.3.4 → abstractassistant-0.3.5}/abstractassistant/core/llm_manager.py +0 -0
  18. {abstractassistant-0.3.4 → abstractassistant-0.3.5}/abstractassistant/core/tts_manager.py +0 -0
  19. {abstractassistant-0.3.4 → abstractassistant-0.3.5}/abstractassistant/create_app_bundle.py +0 -0
  20. {abstractassistant-0.3.4 → abstractassistant-0.3.5}/abstractassistant/ui/__init__.py +0 -0
  21. {abstractassistant-0.3.4 → abstractassistant-0.3.5}/abstractassistant/ui/chat_bubble.py +0 -0
  22. {abstractassistant-0.3.4 → abstractassistant-0.3.5}/abstractassistant/ui/history_dialog.py +0 -0
  23. {abstractassistant-0.3.4 → abstractassistant-0.3.5}/abstractassistant/ui/toast_manager.py +0 -0
  24. {abstractassistant-0.3.4 → abstractassistant-0.3.5}/abstractassistant/ui/toast_window.py +0 -0
  25. {abstractassistant-0.3.4 → abstractassistant-0.3.5}/abstractassistant/ui/tts_state_manager.py +0 -0
  26. {abstractassistant-0.3.4 → abstractassistant-0.3.5}/abstractassistant/ui/ui_styles.py +0 -0
  27. {abstractassistant-0.3.4 → abstractassistant-0.3.5}/abstractassistant/utils/__init__.py +0 -0
  28. {abstractassistant-0.3.4 → abstractassistant-0.3.5}/abstractassistant/utils/icon_generator.py +0 -0
  29. {abstractassistant-0.3.4 → abstractassistant-0.3.5}/abstractassistant/utils/markdown_renderer.py +0 -0
  30. {abstractassistant-0.3.4 → abstractassistant-0.3.5}/abstractassistant/web_server.py +0 -0
  31. {abstractassistant-0.3.4 → abstractassistant-0.3.5}/abstractassistant.egg-info/SOURCES.txt +0 -0
  32. {abstractassistant-0.3.4 → abstractassistant-0.3.5}/docs/getting-started.md +0 -0
  33. {abstractassistant-0.3.4 → abstractassistant-0.3.5}/docs/installation.md +0 -0
  34. {abstractassistant-0.3.4 → abstractassistant-0.3.5}/setup.cfg +0 -0
@@ -2,6 +2,11 @@
2
2
 
3
3
  All notable changes to AbstractAssistant will be documented in this file.
4
4
 
5
+ ## [0.3.5] - 2026-01-07
6
+
7
+ ### Fixed
8
+ - **Packaging / installability**: narrowed the default `abstractcore[...]` dependency set to avoid GPU-only stacks (notably vLLM) being installed on macOS, which could break `assistant --help` due to transitive `datasets/pyarrow` incompatibilities.
9
+
5
10
 
6
11
  ## [0.3.4] - 2025-10-27
7
12
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: abstractassistant
3
- Version: 0.3.4
3
+ Version: 0.3.5
4
4
  Summary: A sleek (macOS) system tray application providing instant access to LLMs
5
5
  Author-email: Laurent-Philippe Albou <contact@abstractcore.ai>
6
6
  License-Expression: MIT
@@ -21,14 +21,14 @@ Classifier: Topic :: Desktop Environment
21
21
  Requires-Python: >=3.9
22
22
  Description-Content-Type: text/markdown
23
23
  License-File: LICENSE
24
- Requires-Dist: abstractcore[all]>=2.5.0
24
+ Requires-Dist: abstractcore[anthropic,lmstudio,ollama,openai,tools]>=2.9.1
25
25
  Requires-Dist: pystray>=0.19.4
26
26
  Requires-Dist: Pillow>=10.0.0
27
27
  Requires-Dist: PyQt5>=5.15.0
28
28
  Requires-Dist: markdown>=3.5.0
29
29
  Requires-Dist: pygments>=2.16.0
30
30
  Requires-Dist: pymdown-extensions>=10.0
31
- Requires-Dist: abstractvoice>=0.5.1
31
+ Requires-Dist: abstractvoice>=0.5.2
32
32
  Requires-Dist: pyperclip>=1.8.2
33
33
  Requires-Dist: plyer>=2.1.0
34
34
  Requires-Dist: tomli>=2.0.0; python_version < "3.11"
@@ -186,8 +186,8 @@ class ProviderManager:
186
186
  Returns:
187
187
  Formatted display name
188
188
  """
189
- # Extract the last part of the model name (after /)
190
- display_name = model.split('/')[-1] if '/' in model else model
189
+ # Use the full model name (preserving provider prefix)
190
+ display_name = model
191
191
 
192
192
  # Truncate if too long
193
193
  if len(display_name) > max_length:
@@ -615,6 +615,7 @@ class QtChatBubble(QWidget):
615
615
  self.model_combo.currentTextChanged.connect(self.on_model_changed)
616
616
  self.model_combo.setFixedHeight(28)
617
617
  self.model_combo.setMinimumWidth(140)
618
+ self.model_combo.view().setMinimumWidth(380) # Wider dropdown to show full model names
618
619
  self.model_combo.setStyleSheet("""
619
620
  QComboBox {
620
621
  background: rgba(255, 255, 255, 0.08);
@@ -770,39 +771,38 @@ class QtChatBubble(QWidget):
770
771
  }
771
772
 
772
773
  QComboBox QAbstractItemView {
773
- background: #1a202c;
774
- border: 1px solid #4a5568;
774
+ background: #252525;
775
+ border: 1px solid #404040;
775
776
  border-radius: 8px;
776
- selection-background-color: #4299e1;
777
- color: #e2e8f0;
778
- padding: 4px;
779
- font-family: "Helvetica Neue", "Helvetica", "Segoe UI", Arial, sans-serif;
777
+ selection-background-color: #404040;
778
+ color: #ffffff;
779
+ padding: 6px;
780
+ font-family: "SF Mono", "Monaco", "Menlo", "Consolas", monospace;
780
781
  }
781
-
782
+
782
783
  QComboBox QAbstractItemView::item {
783
- height: 36px;
784
- padding: 8px 12px;
784
+ height: 44px;
785
+ padding: 10px 16px;
785
786
  border: none;
786
- font-size: 12px;
787
- font-weight: 400; /* Changed from 500 to 400 (normal weight) */
788
- color: #e2e8f0;
789
- border-radius: 4px;
790
- margin: 2px;
787
+ font-size: 13px;
788
+ font-weight: 400;
789
+ color: #e8e8e8;
790
+ border-radius: 6px;
791
+ margin: 3px;
792
+ letter-spacing: 0.02em;
791
793
  }
792
-
794
+
793
795
  QComboBox QAbstractItemView::item:selected {
794
- background: #4299e1;
796
+ background: #404040;
795
797
  color: #ffffff;
798
+ font-weight: 500;
799
+ border: 1px solid #0066cc;
796
800
  }
797
-
801
+
798
802
  QComboBox QAbstractItemView::item:hover {
799
- background: #374151;
803
+ background: #333333;
800
804
  }
801
805
 
802
- QComboBox QAbstractItemView::item:selected {
803
- background: #4299e1;
804
- }
805
-
806
806
  /* Labels - Clean Typography */
807
807
  QLabel {
808
808
  color: rgba(255, 255, 255, 0.8);
@@ -986,7 +986,7 @@ class QtChatBubble(QWidget):
986
986
 
987
987
  # Add models to dropdown with display names
988
988
  for model in models:
989
- display_name = self.provider_manager.create_model_display_name(model, max_length=25)
989
+ display_name = self.provider_manager.create_model_display_name(model, max_length=55)
990
990
  self.model_combo.addItem(display_name, model)
991
991
 
992
992
  # Set preferred model
@@ -1014,9 +1014,10 @@ class QtChatBubble(QWidget):
1014
1014
  models = get_available_models_for_provider(self.current_provider)
1015
1015
 
1016
1016
  for model in models:
1017
- display_name = model.split('/')[-1] if '/' in model else model
1018
- if len(display_name) > 25:
1019
- display_name = display_name[:22] + "..."
1017
+ # Use full model name (preserving provider prefix)
1018
+ display_name = model
1019
+ if len(display_name) > 55:
1020
+ display_name = display_name[:52] + "..."
1020
1021
  self.model_combo.addItem(display_name, model)
1021
1022
 
1022
1023
  if self.model_combo.count() > 0:
@@ -2151,8 +2152,8 @@ Please provide the summary in a clear, structured format:"""
2151
2152
  def _create_compacted_session(self, summary: str, recent_messages: list):
2152
2153
  """Create a new session with the summary and recent messages."""
2153
2154
  try:
2154
- # Create new session with summary as enhanced system prompt
2155
- enhanced_system_prompt = f"""You are a helpful AI assistant who has access to tools to help the user.
2155
+ # Create new session with summary embedded in the system prompt.
2156
+ final_system_prompt = f"""You are a helpful AI assistant who has access to tools to help the user.
2156
2157
  Always be a critical and creative thinker who leverage constructive skepticism to progress and evolve its reasoning and answers.
2157
2158
  Always answer in nicely formatted markdown.
2158
2159
 
@@ -2165,7 +2166,7 @@ The following is a summary of our previous conversation:
2165
2166
 
2166
2167
  Continue the conversation naturally, referring to the context above when relevant."""
2167
2168
 
2168
- # Create new session with enhanced system prompt
2169
+ # Create new session with the composed system prompt
2169
2170
  if self.llm_manager:
2170
2171
  # Create new session with custom system prompt
2171
2172
  from abstractcore import BasicSession
@@ -2187,7 +2188,7 @@ Continue the conversation naturally, referring to the context above when relevan
2187
2188
  # Create new session with summary in system prompt
2188
2189
  new_session = BasicSession(
2189
2190
  self.llm_manager.llm,
2190
- system_prompt=enhanced_system_prompt,
2191
+ system_prompt=final_system_prompt,
2191
2192
  tools=tools
2192
2193
  )
2193
2194
 
@@ -1,4 +1,7 @@
1
- # 🏗️ Architecture Guide
1
+ # AbstractAssistant Architecture (Current)
2
+
3
+ > Updated: 2026-01-07
4
+ > Scope: this document describes the current AbstractAssistant app structure and how it integrates with AbstractFramework components.
2
5
 
3
6
  Technical documentation for AbstractAssistant's design, components, and development information.
4
7
 
@@ -8,7 +11,17 @@ Technical documentation for AbstractAssistant's design, components, and developm
8
11
 
9
12
  ## Overview
10
13
 
11
- AbstractAssistant is a modern macOS system tray application that provides instant access to Large Language Models through a sleek Qt-based interface. Built with Python, it leverages [AbstractCore](https://github.com/lpalbou/abstractcore) for universal LLM provider support and [AbstractVoice](https://github.com/lpalbou/abstractvoice) for conversational AI capabilities.
14
+ AbstractAssistant is a macOS system tray application that provides quick access to LLMs through a Qt-based interface.
15
+
16
+ High-level integration:
17
+
18
+ ```mermaid
19
+ graph TD
20
+ UI[Qt UI / System Tray] --> App[AbstractAssistantApp]
21
+ App --> Core[AbstractCore (providers + tool calling)]
22
+ App --> Voice[AbstractVoice (TTS)]
23
+ Core --> Providers[LLM provider endpoints]
24
+ ```
12
25
 
13
26
  ## Core Design Philosophy
14
27
 
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "abstractassistant"
7
- version = "0.3.4"
7
+ version = "0.3.5"
8
8
  description = "A sleek (macOS) system tray application providing instant access to LLMs"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.9"
@@ -27,14 +27,17 @@ classifiers = [
27
27
  ]
28
28
 
29
29
  dependencies = [
30
- "abstractcore[all]>=2.5.0",
30
+ # AbstractAssistant is a macOS app; avoid GPU-only stacks (e.g. vLLM) that can pull
31
+ # heavy/incompatible transitive deps (datasets/pyarrow) and even break CLI `--help`.
32
+ # Users who want additional providers can install extra AbstractCore provider groups separately.
33
+ "abstractcore[openai,anthropic,ollama,lmstudio,tools]>=2.9.1",
31
34
  "pystray>=0.19.4",
32
35
  "Pillow>=10.0.0",
33
36
  "PyQt5>=5.15.0",
34
37
  "markdown>=3.5.0",
35
38
  "pygments>=2.16.0",
36
39
  "pymdown-extensions>=10.0",
37
- "abstractvoice>=0.5.1",
40
+ "abstractvoice>=0.5.2",
38
41
  "pyperclip>=1.8.2",
39
42
  "plyer>=2.1.0",
40
43
  "tomli>=2.0.0; python_version<'3.11'",