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.
- {abstractassistant-0.3.4 → abstractassistant-0.3.5}/CHANGELOG.md +5 -0
- {abstractassistant-0.3.4 → abstractassistant-0.3.5}/PKG-INFO +3 -3
- {abstractassistant-0.3.4 → abstractassistant-0.3.5}/abstractassistant/ui/provider_manager.py +2 -2
- {abstractassistant-0.3.4 → abstractassistant-0.3.5}/abstractassistant/ui/qt_bubble.py +31 -30
- {abstractassistant-0.3.4 → abstractassistant-0.3.5}/docs/architecture.md +15 -2
- {abstractassistant-0.3.4 → abstractassistant-0.3.5}/pyproject.toml +6 -3
- {abstractassistant-0.3.4 → abstractassistant-0.3.5}/ACKNOWLEDGMENTS.md +0 -0
- {abstractassistant-0.3.4 → abstractassistant-0.3.5}/CONTRIBUTING.md +0 -0
- {abstractassistant-0.3.4 → abstractassistant-0.3.5}/LICENSE +0 -0
- {abstractassistant-0.3.4 → abstractassistant-0.3.5}/MANIFEST.in +0 -0
- {abstractassistant-0.3.4 → abstractassistant-0.3.5}/README.md +0 -0
- {abstractassistant-0.3.4 → abstractassistant-0.3.5}/abstractassistant/__init__.py +0 -0
- {abstractassistant-0.3.4 → abstractassistant-0.3.5}/abstractassistant/app.py +0 -0
- {abstractassistant-0.3.4 → abstractassistant-0.3.5}/abstractassistant/cli.py +0 -0
- {abstractassistant-0.3.4 → abstractassistant-0.3.5}/abstractassistant/config.py +0 -0
- {abstractassistant-0.3.4 → abstractassistant-0.3.5}/abstractassistant/core/__init__.py +0 -0
- {abstractassistant-0.3.4 → abstractassistant-0.3.5}/abstractassistant/core/llm_manager.py +0 -0
- {abstractassistant-0.3.4 → abstractassistant-0.3.5}/abstractassistant/core/tts_manager.py +0 -0
- {abstractassistant-0.3.4 → abstractassistant-0.3.5}/abstractassistant/create_app_bundle.py +0 -0
- {abstractassistant-0.3.4 → abstractassistant-0.3.5}/abstractassistant/ui/__init__.py +0 -0
- {abstractassistant-0.3.4 → abstractassistant-0.3.5}/abstractassistant/ui/chat_bubble.py +0 -0
- {abstractassistant-0.3.4 → abstractassistant-0.3.5}/abstractassistant/ui/history_dialog.py +0 -0
- {abstractassistant-0.3.4 → abstractassistant-0.3.5}/abstractassistant/ui/toast_manager.py +0 -0
- {abstractassistant-0.3.4 → abstractassistant-0.3.5}/abstractassistant/ui/toast_window.py +0 -0
- {abstractassistant-0.3.4 → abstractassistant-0.3.5}/abstractassistant/ui/tts_state_manager.py +0 -0
- {abstractassistant-0.3.4 → abstractassistant-0.3.5}/abstractassistant/ui/ui_styles.py +0 -0
- {abstractassistant-0.3.4 → abstractassistant-0.3.5}/abstractassistant/utils/__init__.py +0 -0
- {abstractassistant-0.3.4 → abstractassistant-0.3.5}/abstractassistant/utils/icon_generator.py +0 -0
- {abstractassistant-0.3.4 → abstractassistant-0.3.5}/abstractassistant/utils/markdown_renderer.py +0 -0
- {abstractassistant-0.3.4 → abstractassistant-0.3.5}/abstractassistant/web_server.py +0 -0
- {abstractassistant-0.3.4 → abstractassistant-0.3.5}/abstractassistant.egg-info/SOURCES.txt +0 -0
- {abstractassistant-0.3.4 → abstractassistant-0.3.5}/docs/getting-started.md +0 -0
- {abstractassistant-0.3.4 → abstractassistant-0.3.5}/docs/installation.md +0 -0
- {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.
|
|
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[
|
|
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.
|
|
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"
|
{abstractassistant-0.3.4 → abstractassistant-0.3.5}/abstractassistant/ui/provider_manager.py
RENAMED
|
@@ -186,8 +186,8 @@ class ProviderManager:
|
|
|
186
186
|
Returns:
|
|
187
187
|
Formatted display name
|
|
188
188
|
"""
|
|
189
|
-
#
|
|
190
|
-
display_name = 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: #
|
|
774
|
-
border: 1px solid #
|
|
774
|
+
background: #252525;
|
|
775
|
+
border: 1px solid #404040;
|
|
775
776
|
border-radius: 8px;
|
|
776
|
-
selection-background-color: #
|
|
777
|
-
color: #
|
|
778
|
-
padding:
|
|
779
|
-
font-family: "
|
|
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:
|
|
784
|
-
padding:
|
|
784
|
+
height: 44px;
|
|
785
|
+
padding: 10px 16px;
|
|
785
786
|
border: none;
|
|
786
|
-
font-size:
|
|
787
|
-
font-weight: 400;
|
|
788
|
-
color: #
|
|
789
|
-
border-radius:
|
|
790
|
-
margin:
|
|
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: #
|
|
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: #
|
|
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=
|
|
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
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
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
|
|
2155
|
-
|
|
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
|
|
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=
|
|
2191
|
+
system_prompt=final_system_prompt,
|
|
2191
2192
|
tools=tools
|
|
2192
2193
|
)
|
|
2193
2194
|
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
#
|
|
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
|
|
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.
|
|
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
|
-
|
|
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.
|
|
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'",
|
|
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
|
{abstractassistant-0.3.4 → abstractassistant-0.3.5}/abstractassistant/ui/tts_state_manager.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{abstractassistant-0.3.4 → abstractassistant-0.3.5}/abstractassistant/utils/icon_generator.py
RENAMED
|
File without changes
|
{abstractassistant-0.3.4 → abstractassistant-0.3.5}/abstractassistant/utils/markdown_renderer.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|