abstractcore 2.11.2__py3-none-any.whl → 2.11.4__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.
- abstractcore/apps/deepsearch.py +9 -4
- abstractcore/assets/model_capabilities.json +101 -0
- abstractcore/config/main.py +21 -1
- abstractcore/config/manager.py +1 -1
- abstractcore/endpoint/app.py +1 -1
- abstractcore/providers/lmstudio_provider.py +13 -11
- abstractcore/server/app.py +17 -15
- abstractcore/utils/structured_logging.py +29 -8
- abstractcore/utils/version.py +1 -1
- {abstractcore-2.11.2.dist-info → abstractcore-2.11.4.dist-info}/METADATA +1 -1
- {abstractcore-2.11.2.dist-info → abstractcore-2.11.4.dist-info}/RECORD +15 -15
- {abstractcore-2.11.2.dist-info → abstractcore-2.11.4.dist-info}/WHEEL +0 -0
- {abstractcore-2.11.2.dist-info → abstractcore-2.11.4.dist-info}/entry_points.txt +0 -0
- {abstractcore-2.11.2.dist-info → abstractcore-2.11.4.dist-info}/licenses/LICENSE +0 -0
- {abstractcore-2.11.2.dist-info → abstractcore-2.11.4.dist-info}/top_level.txt +0 -0
abstractcore/apps/deepsearch.py
CHANGED
|
@@ -510,10 +510,15 @@ Examples:
|
|
|
510
510
|
print("❌ Error: --parallel-searches must be between 1 and 20")
|
|
511
511
|
sys.exit(1)
|
|
512
512
|
|
|
513
|
-
# Configure logging level
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
513
|
+
# Configure logging level (default: ERROR-only).
|
|
514
|
+
import logging
|
|
515
|
+
|
|
516
|
+
log_level = logging.ERROR
|
|
517
|
+
if args.debug:
|
|
518
|
+
log_level = logging.DEBUG
|
|
519
|
+
elif args.verbose:
|
|
520
|
+
log_level = logging.INFO
|
|
521
|
+
logging.basicConfig(level=log_level, format="%(asctime)s - %(levelname)s - %(message)s")
|
|
517
522
|
|
|
518
523
|
try:
|
|
519
524
|
# Initialize LLM
|
|
@@ -441,6 +441,107 @@
|
|
|
441
441
|
"video_support": false,
|
|
442
442
|
"video_input_mode": "frames"
|
|
443
443
|
},
|
|
444
|
+
"cogito:3b": {
|
|
445
|
+
"max_output_tokens": 4096,
|
|
446
|
+
"tool_support": "native",
|
|
447
|
+
"structured_output": "native",
|
|
448
|
+
"parallel_tools": false,
|
|
449
|
+
"vision_support": false,
|
|
450
|
+
"audio_support": false,
|
|
451
|
+
"notes": "Cogito v1 preview (Llama-based) 3B; 128k context; tool calling capable. Max output tokens not specified in model card (conservative 2048 default).",
|
|
452
|
+
"source": "DeepCogito HF model card + Ollama library",
|
|
453
|
+
"canonical_name": "cogito:3b",
|
|
454
|
+
"aliases": [
|
|
455
|
+
"cogito",
|
|
456
|
+
"cogito:3b-v1-preview-llama-q8_0",
|
|
457
|
+
"cogito-v1-preview-llama-3B",
|
|
458
|
+
"deepcogito/cogito-v1-preview-llama-3B"
|
|
459
|
+
],
|
|
460
|
+
"max_tokens": 128000,
|
|
461
|
+
"video_support": false,
|
|
462
|
+
"max_tools": -1,
|
|
463
|
+
"video_input_mode": "none"
|
|
464
|
+
},
|
|
465
|
+
"cogito:8b": {
|
|
466
|
+
"max_output_tokens": 4096,
|
|
467
|
+
"tool_support": "native",
|
|
468
|
+
"structured_output": "native",
|
|
469
|
+
"parallel_tools": false,
|
|
470
|
+
"vision_support": false,
|
|
471
|
+
"audio_support": false,
|
|
472
|
+
"notes": "Cogito v1 preview (Llama-based) 8B; 128k context; hybrid reasoning model with standard and extended thinking modes; optimized for coding, STEM, instruction following, and tool calling.",
|
|
473
|
+
"source": "DeepCogito HF model card + Ollama library",
|
|
474
|
+
"canonical_name": "cogito:8b",
|
|
475
|
+
"aliases": [
|
|
476
|
+
"cogito:8b-v1-preview-llama",
|
|
477
|
+
"cogito-v1-preview-llama-8B",
|
|
478
|
+
"deepcogito/cogito-v1-preview-llama-8B"
|
|
479
|
+
],
|
|
480
|
+
"max_tokens": 128000,
|
|
481
|
+
"video_support": false,
|
|
482
|
+
"max_tools": -1,
|
|
483
|
+
"video_input_mode": "none"
|
|
484
|
+
},
|
|
485
|
+
"cogito:14b": {
|
|
486
|
+
"max_output_tokens": 4096,
|
|
487
|
+
"tool_support": "native",
|
|
488
|
+
"structured_output": "native",
|
|
489
|
+
"parallel_tools": false,
|
|
490
|
+
"vision_support": false,
|
|
491
|
+
"audio_support": false,
|
|
492
|
+
"notes": "Cogito v1 preview (Qwen2-based) 14B; 128k context; hybrid reasoning model with standard and extended thinking modes; optimized for coding, STEM, instruction following, and tool calling.",
|
|
493
|
+
"source": "DeepCogito HF model card + Ollama library",
|
|
494
|
+
"canonical_name": "cogito:14b",
|
|
495
|
+
"aliases": [
|
|
496
|
+
"cogito:14b-v1-preview-qwen",
|
|
497
|
+
"cogito-v1-preview-qwen-14B",
|
|
498
|
+
"deepcogito/cogito-v1-preview-qwen-14B"
|
|
499
|
+
],
|
|
500
|
+
"max_tokens": 128000,
|
|
501
|
+
"video_support": false,
|
|
502
|
+
"max_tools": -1,
|
|
503
|
+
"video_input_mode": "none"
|
|
504
|
+
},
|
|
505
|
+
"cogito:32b": {
|
|
506
|
+
"max_output_tokens": 4096,
|
|
507
|
+
"tool_support": "native",
|
|
508
|
+
"structured_output": "native",
|
|
509
|
+
"parallel_tools": false,
|
|
510
|
+
"vision_support": false,
|
|
511
|
+
"audio_support": false,
|
|
512
|
+
"notes": "Cogito v1 preview (Qwen-based) 32B; 128k context; hybrid reasoning model with standard and extended thinking modes; optimized for coding, STEM, instruction following, and tool calling.",
|
|
513
|
+
"source": "DeepCogito HF model card + Ollama library",
|
|
514
|
+
"canonical_name": "cogito:32b",
|
|
515
|
+
"aliases": [
|
|
516
|
+
"cogito:32b-v1-preview-qwen",
|
|
517
|
+
"cogito-v1-preview-qwen-32B",
|
|
518
|
+
"deepcogito/cogito-v1-preview-qwen-32B"
|
|
519
|
+
],
|
|
520
|
+
"max_tokens": 128000,
|
|
521
|
+
"video_support": false,
|
|
522
|
+
"max_tools": -1,
|
|
523
|
+
"video_input_mode": "none"
|
|
524
|
+
},
|
|
525
|
+
"cogito:70b": {
|
|
526
|
+
"max_output_tokens": 4096,
|
|
527
|
+
"tool_support": "native",
|
|
528
|
+
"structured_output": "native",
|
|
529
|
+
"parallel_tools": false,
|
|
530
|
+
"vision_support": false,
|
|
531
|
+
"audio_support": false,
|
|
532
|
+
"notes": "Cogito v1 preview (Llama 3.1-based) 70B; 128k context; hybrid reasoning model with standard and extended thinking modes; optimized for coding, STEM, instruction following, and tool calling.",
|
|
533
|
+
"source": "DeepCogito HF model card + Ollama library",
|
|
534
|
+
"canonical_name": "cogito:70b",
|
|
535
|
+
"aliases": [
|
|
536
|
+
"cogito:70b-v1-preview-llama",
|
|
537
|
+
"cogito-v1-preview-llama-70B",
|
|
538
|
+
"deepcogito/cogito-v1-preview-llama-70B"
|
|
539
|
+
],
|
|
540
|
+
"max_tokens": 128000,
|
|
541
|
+
"video_support": false,
|
|
542
|
+
"max_tools": -1,
|
|
543
|
+
"video_input_mode": "none"
|
|
544
|
+
},
|
|
444
545
|
"llama-3.2-1b": {
|
|
445
546
|
"max_output_tokens": 2048,
|
|
446
547
|
"tool_support": "native",
|
abstractcore/config/main.py
CHANGED
|
@@ -531,6 +531,26 @@ def interactive_configure():
|
|
|
531
531
|
config_manager.set_api_key(provider, key)
|
|
532
532
|
print(f"✅ Set {provider} API key")
|
|
533
533
|
|
|
534
|
+
# Ask about console log verbosity
|
|
535
|
+
print("\n4. Console Logging Verbosity")
|
|
536
|
+
print("Choose console verbosity level:")
|
|
537
|
+
print(" none | error | warning | info | debug")
|
|
538
|
+
level = input("Console log level [info]: ").strip().lower()
|
|
539
|
+
if not level:
|
|
540
|
+
level = "info"
|
|
541
|
+
level_map = {
|
|
542
|
+
"none": "NONE",
|
|
543
|
+
"error": "ERROR",
|
|
544
|
+
"warning": "WARNING",
|
|
545
|
+
"info": "INFO",
|
|
546
|
+
"debug": "DEBUG",
|
|
547
|
+
}
|
|
548
|
+
if level in level_map:
|
|
549
|
+
config_manager.set_console_log_level(level_map[level])
|
|
550
|
+
print(f"✅ Set console log level to: {level_map[level]}")
|
|
551
|
+
else:
|
|
552
|
+
print("⚠️ Invalid level; keeping existing console log level.")
|
|
553
|
+
|
|
534
554
|
print("\n✅ Configuration complete! Run 'abstractcore --status' to see current settings.")
|
|
535
555
|
|
|
536
556
|
def handle_commands(args) -> bool:
|
|
@@ -851,5 +871,5 @@ DOCUMENTATION: docs/centralized-config.md
|
|
|
851
871
|
|
|
852
872
|
|
|
853
873
|
if __name__ == "__main__":
|
|
854
|
-
logging.basicConfig(level=logging.
|
|
874
|
+
logging.basicConfig(level=logging.ERROR)
|
|
855
875
|
sys.exit(main())
|
abstractcore/config/manager.py
CHANGED
|
@@ -157,7 +157,7 @@ class CacheConfig:
|
|
|
157
157
|
@dataclass
|
|
158
158
|
class LoggingConfig:
|
|
159
159
|
"""Logging configuration settings."""
|
|
160
|
-
console_level: str = "
|
|
160
|
+
console_level: str = "ERROR"
|
|
161
161
|
file_level: str = "DEBUG"
|
|
162
162
|
file_logging_enabled: bool = False
|
|
163
163
|
log_base_dir: Optional[str] = None
|
abstractcore/endpoint/app.py
CHANGED
|
@@ -451,7 +451,7 @@ def main(argv: Optional[List[str]] = None) -> None:
|
|
|
451
451
|
app = create_app(provider_name=cfg.provider, model=cfg.model)
|
|
452
452
|
import uvicorn
|
|
453
453
|
|
|
454
|
-
uvicorn.run(app, host=cfg.host, port=cfg.port)
|
|
454
|
+
uvicorn.run(app, host=cfg.host, port=cfg.port, log_level="error")
|
|
455
455
|
|
|
456
456
|
|
|
457
457
|
if __name__ == "__main__": # pragma: no cover
|
|
@@ -19,21 +19,23 @@ class LMStudioProvider(OpenAICompatibleProvider):
|
|
|
19
19
|
API_KEY_ENV_VAR = None
|
|
20
20
|
DEFAULT_BASE_URL = "http://localhost:1234/v1"
|
|
21
21
|
|
|
22
|
+
_TIMEOUT_UNSET = object()
|
|
23
|
+
|
|
22
24
|
def __init__(
|
|
23
25
|
self,
|
|
24
26
|
model: str = "local-model",
|
|
25
27
|
base_url: Optional[str] = None,
|
|
26
|
-
timeout:
|
|
28
|
+
timeout: Any = _TIMEOUT_UNSET,
|
|
27
29
|
**kwargs: Any,
|
|
28
30
|
):
|
|
29
|
-
# ADR-0027:
|
|
31
|
+
# ADR-0027: avoid silent low timeouts; timeouts must be explicit and attributable.
|
|
30
32
|
#
|
|
31
|
-
#
|
|
32
|
-
#
|
|
33
|
-
#
|
|
34
|
-
#
|
|
35
|
-
|
|
36
|
-
if
|
|
37
|
-
timeout =
|
|
38
|
-
|
|
39
|
-
super().__init__(model=model, base_url=base_url,
|
|
33
|
+
# Semantics:
|
|
34
|
+
# - If the caller explicitly provides `timeout` (including `None`), we forward it.
|
|
35
|
+
# - If the caller omits `timeout`, BaseProvider will use AbstractCore config
|
|
36
|
+
# `timeouts.default_timeout` (see `~/.abstractcore/config/abstractcore.json`).
|
|
37
|
+
super_kwargs = dict(kwargs)
|
|
38
|
+
if timeout is not self._TIMEOUT_UNSET:
|
|
39
|
+
super_kwargs["timeout"] = timeout
|
|
40
|
+
|
|
41
|
+
super().__init__(model=model, base_url=base_url, **super_kwargs)
|
abstractcore/server/app.py
CHANGED
|
@@ -62,25 +62,27 @@ from ..tools.syntax_rewriter import (
|
|
|
62
62
|
# Configuration
|
|
63
63
|
# ============================================================================
|
|
64
64
|
|
|
65
|
-
# Initialize with default logging configuration (can be overridden later)
|
|
65
|
+
# Initialize with default logging configuration (can be overridden later).
|
|
66
|
+
#
|
|
67
|
+
# IMPORTANT: default console verbosity is controlled by AbstractCore's centralized logging defaults
|
|
68
|
+
# (and env overrides like ABSTRACTCORE_CONSOLE_LOG_LEVEL). The server must not force INFO-level
|
|
69
|
+
# console logs on startup.
|
|
66
70
|
debug_mode = os.getenv("ABSTRACTCORE_DEBUG", "false").lower() == "true"
|
|
67
71
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
file_json=True
|
|
78
|
-
)
|
|
72
|
+
if debug_mode:
|
|
73
|
+
configure_logging(
|
|
74
|
+
console_level=logging.DEBUG,
|
|
75
|
+
file_level=logging.DEBUG,
|
|
76
|
+
log_dir="logs",
|
|
77
|
+
verbatim_enabled=True,
|
|
78
|
+
console_json=False,
|
|
79
|
+
file_json=True,
|
|
80
|
+
)
|
|
79
81
|
|
|
80
82
|
# Get initial logger
|
|
81
83
|
logger = get_logger("server")
|
|
82
84
|
|
|
83
|
-
# Log initial startup with debug mode status
|
|
85
|
+
# Log initial startup with debug mode status (may be suppressed by console level).
|
|
84
86
|
logger.info("🚀 AbstractCore Server Initializing", version=__version__, debug_mode=debug_mode)
|
|
85
87
|
|
|
86
88
|
def reconfigure_for_debug():
|
|
@@ -2855,7 +2857,7 @@ def convert_to_openai_response(
|
|
|
2855
2857
|
def run_server(host: str = "0.0.0.0", port: int = 8000):
|
|
2856
2858
|
"""Run the server"""
|
|
2857
2859
|
import uvicorn
|
|
2858
|
-
uvicorn.run(app, host=host, port=port)
|
|
2860
|
+
uvicorn.run(app, host=host, port=port, log_level="error")
|
|
2859
2861
|
|
|
2860
2862
|
# ============================================================================
|
|
2861
2863
|
# Server Runner Function
|
|
@@ -2924,7 +2926,7 @@ Debug Mode:
|
|
|
2924
2926
|
"app": app,
|
|
2925
2927
|
"host": args.host,
|
|
2926
2928
|
"port": args.port,
|
|
2927
|
-
"log_level": "debug" if debug_mode else "
|
|
2929
|
+
"log_level": "debug" if debug_mode else "error",
|
|
2928
2930
|
}
|
|
2929
2931
|
|
|
2930
2932
|
# In debug mode, enable more detailed uvicorn logging
|
|
@@ -57,7 +57,7 @@ def _get_config_defaults():
|
|
|
57
57
|
"NONE": logging.CRITICAL + 10 # Higher than CRITICAL to effectively disable logging
|
|
58
58
|
}
|
|
59
59
|
|
|
60
|
-
console_level = level_map.get(logging_config.console_level, logging.
|
|
60
|
+
console_level = level_map.get(logging_config.console_level, logging.ERROR)
|
|
61
61
|
file_level = level_map.get(logging_config.file_level, logging.DEBUG)
|
|
62
62
|
|
|
63
63
|
# Use log_base_dir if file logging enabled
|
|
@@ -66,6 +66,27 @@ def _get_config_defaults():
|
|
|
66
66
|
# Expand user home directory
|
|
67
67
|
log_dir = str(Path(logging_config.log_base_dir).expanduser())
|
|
68
68
|
|
|
69
|
+
# Environment overrides (optional)
|
|
70
|
+
env_console = os.getenv("ABSTRACTCORE_CONSOLE_LOG_LEVEL")
|
|
71
|
+
if isinstance(env_console, str) and env_console.strip():
|
|
72
|
+
env_level = env_console.strip().upper()
|
|
73
|
+
if env_level == "NONE":
|
|
74
|
+
console_level = None
|
|
75
|
+
else:
|
|
76
|
+
console_level = level_map.get(env_level, console_level)
|
|
77
|
+
|
|
78
|
+
env_file = os.getenv("ABSTRACTCORE_FILE_LOG_LEVEL")
|
|
79
|
+
if isinstance(env_file, str) and env_file.strip():
|
|
80
|
+
env_level = env_file.strip().upper()
|
|
81
|
+
if env_level == "NONE":
|
|
82
|
+
file_level = None
|
|
83
|
+
else:
|
|
84
|
+
file_level = level_map.get(env_level, file_level)
|
|
85
|
+
|
|
86
|
+
env_log_dir = os.getenv("ABSTRACTCORE_LOG_BASE_DIR")
|
|
87
|
+
if isinstance(env_log_dir, str) and env_log_dir.strip():
|
|
88
|
+
log_dir = str(Path(env_log_dir.strip()).expanduser())
|
|
89
|
+
|
|
69
90
|
return {
|
|
70
91
|
'console_level': console_level,
|
|
71
92
|
'file_level': file_level,
|
|
@@ -77,7 +98,7 @@ def _get_config_defaults():
|
|
|
77
98
|
except Exception:
|
|
78
99
|
# Fallback to hardcoded defaults if config unavailable
|
|
79
100
|
return {
|
|
80
|
-
'console_level': logging.
|
|
101
|
+
'console_level': logging.ERROR,
|
|
81
102
|
'file_level': logging.DEBUG,
|
|
82
103
|
'log_dir': None,
|
|
83
104
|
'verbatim_enabled': True,
|
|
@@ -89,7 +110,7 @@ def _get_config_defaults():
|
|
|
89
110
|
LOG_LEVEL_COLORS = {
|
|
90
111
|
'DEBUG': Fore.CYAN + Style.DIM, # Cyan, dimmed (less prominent)
|
|
91
112
|
'INFO': Fore.GREEN, # Green (informational, good)
|
|
92
|
-
'WARNING':
|
|
113
|
+
'WARNING': "\033[38;5;214m" + Style.BRIGHT, # Orange (attention)
|
|
93
114
|
'ERROR': Fore.RED, # Red (error)
|
|
94
115
|
'CRITICAL': Fore.RED + Style.BRIGHT # Bright red (critical)
|
|
95
116
|
}
|
|
@@ -215,7 +236,7 @@ class LogConfig:
|
|
|
215
236
|
root_logger.handlers.clear()
|
|
216
237
|
|
|
217
238
|
# Console handler
|
|
218
|
-
if self.console_level is not None:
|
|
239
|
+
if self.console_level is not None and self.console_level < (logging.CRITICAL + 10):
|
|
219
240
|
console_handler = logging.StreamHandler(sys.stdout)
|
|
220
241
|
console_handler.setLevel(self.console_level)
|
|
221
242
|
|
|
@@ -260,8 +281,8 @@ class LogConfig:
|
|
|
260
281
|
if effective_levels:
|
|
261
282
|
root_logger.setLevel(min(effective_levels))
|
|
262
283
|
else:
|
|
263
|
-
# No handlers enabled, set to
|
|
264
|
-
root_logger.setLevel(logging.
|
|
284
|
+
# No handlers enabled, set to ERROR as a safe default
|
|
285
|
+
root_logger.setLevel(logging.ERROR)
|
|
265
286
|
|
|
266
287
|
|
|
267
288
|
# Global config instance
|
|
@@ -493,7 +514,7 @@ def get_logger(name: str) -> StructuredLogger:
|
|
|
493
514
|
|
|
494
515
|
|
|
495
516
|
def configure_logging(
|
|
496
|
-
console_level: Optional[int] = logging.
|
|
517
|
+
console_level: Optional[int] = logging.ERROR,
|
|
497
518
|
file_level: Optional[int] = logging.DEBUG,
|
|
498
519
|
log_dir: Optional[str] = None,
|
|
499
520
|
verbatim_enabled: bool = True,
|
|
@@ -577,4 +598,4 @@ def suppress_stdout_stderr():
|
|
|
577
598
|
yield
|
|
578
599
|
finally:
|
|
579
600
|
sys.stdout = old_stdout
|
|
580
|
-
sys.stderr = old_stderr
|
|
601
|
+
sys.stderr = old_stderr
|
abstractcore/utils/version.py
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: abstractcore
|
|
3
|
-
Version: 2.11.
|
|
3
|
+
Version: 2.11.4
|
|
4
4
|
Summary: Unified interface to all LLM providers with essential infrastructure for tool calling, streaming, and model management
|
|
5
5
|
Author-email: Laurent-Philippe Albou <contact@abstractcore.ai>
|
|
6
6
|
Maintainer-email: Laurent-Philippe Albou <contact@abstractcore.ai>
|
|
@@ -3,7 +3,7 @@ abstractcore/download.py,sha256=f75PqPibwVw_XQpIjgBh-f-ZK9D82wXUBMczIkd0N7o,8686
|
|
|
3
3
|
abstractcore/apps/__init__.py,sha256=sgNOv3lYyOWNBC-w6GnRN6aILGCbdkQtNcuQdJz5ghE,31
|
|
4
4
|
abstractcore/apps/__main__.py,sha256=fV9cGU99K4lGRsPNOLkh8qrDjH3JtMEWNlBiZrvI5Kk,1974
|
|
5
5
|
abstractcore/apps/app_config_utils.py,sha256=5GIvXnD996LFIV3-BpfkqII6UqYlStm7ZCgmqDEN8dc,890
|
|
6
|
-
abstractcore/apps/deepsearch.py,sha256=
|
|
6
|
+
abstractcore/apps/deepsearch.py,sha256=DMK1MuVcCEuS0UBsWaDS3LtKa1UDKqupz-ENHg5EPeg,23322
|
|
7
7
|
abstractcore/apps/extractor.py,sha256=QMxSqEYERQOvs1ShAblF-6ufKiDbKOzWBqeCNhQgqdQ,20116
|
|
8
8
|
abstractcore/apps/intent.py,sha256=6pgd9bUFidqa0I-lEnHXRcJGgUcAFpn8_b1do98wGz4,23722
|
|
9
9
|
abstractcore/apps/judge.py,sha256=iHnicOo2XAvep1E1acmntYNGXSzZ4gDWPEQm-6mESMc,24880
|
|
@@ -13,7 +13,7 @@ abstractcore/architectures/detection.py,sha256=iqS2cHleo-yKlqsVx2QqE806oRYhuntJb
|
|
|
13
13
|
abstractcore/architectures/enums.py,sha256=9vIv2vDBEKhxwzwH9iaSAyf-iVj3p8y9loMeN_mYTJ8,3821
|
|
14
14
|
abstractcore/architectures/response_postprocessing.py,sha256=FUv_caMzZ8n7mHMfwTPorvfQNuTNpeU9xu7dEzPvnPM,10990
|
|
15
15
|
abstractcore/assets/architecture_formats.json,sha256=CZaF15Y6HEos2wzIdHB0vMX_HSsVtmx4zgJjkqtqDas,22814
|
|
16
|
-
abstractcore/assets/model_capabilities.json,sha256=
|
|
16
|
+
abstractcore/assets/model_capabilities.json,sha256=1wIWz2uW75BIrNV3xnA004yarfUKSPEdyzaI204DQr0,120569
|
|
17
17
|
abstractcore/assets/session_schema.json,sha256=hMCVrq3KSyVExrMGzuykf7bU-z6WyIVuEGU8du9_zUY,10570
|
|
18
18
|
abstractcore/compression/__init__.py,sha256=v4NR_Rwn0-HV9wj3IYFKMHFrlB8zzKR1bzz5nLSBkAI,945
|
|
19
19
|
abstractcore/compression/analytics.py,sha256=3orxJkjjMQE_6mID8_8C0sRQ4Gr2Pw7kQ-Iy0p7pIgM,16042
|
|
@@ -28,8 +28,8 @@ abstractcore/compression/quality.py,sha256=bq7YI_5ywHfPnWSu1MmBRnV5Nxz8KBJGFvnfQ
|
|
|
28
28
|
abstractcore/compression/text_formatter.py,sha256=5RE6JrLkHvYoDQlsYJSoqfbwAa3caMr2i_DXog6ovZs,27328
|
|
29
29
|
abstractcore/compression/vision_compressor.py,sha256=5Ox3w_ee7fgPRDOpSQcooEGtuBKpQoAmWjwpLE2hoNU,12773
|
|
30
30
|
abstractcore/config/__init__.py,sha256=JQ4feacJV_brzf6qNnNPo5VbmXhdjIxH088jYLTp1ik,919
|
|
31
|
-
abstractcore/config/main.py,sha256=
|
|
32
|
-
abstractcore/config/manager.py,sha256=
|
|
31
|
+
abstractcore/config/main.py,sha256=VW9PuKBnwd2FyhGG1_Hj0W-LqwYibYwhZrwPmYaIXYA,36991
|
|
32
|
+
abstractcore/config/manager.py,sha256=TTzwbgPoidaKlWxNtFwd2pT94XD7_PEpA9Yk0bGB-ZA,32867
|
|
33
33
|
abstractcore/config/vision_config.py,sha256=JhoOUdHv1UtQNRje_f9D56wJYnZ6pQKLaL5WswxA9ZI,17919
|
|
34
34
|
abstractcore/core/__init__.py,sha256=2h-86U4QkCQ4gzZ4iRusSTMlkODiUS6tKjZHiEXz6rM,684
|
|
35
35
|
abstractcore/core/enums.py,sha256=BhkVnHC-X1_377JDmqd-2mnem9GdBLqixWlYzlP_FJU,695
|
|
@@ -42,7 +42,7 @@ abstractcore/embeddings/__init__.py,sha256=hR3xZyqcRm4c2pq1dIa5lxj_-Bk70Zad802JQ
|
|
|
42
42
|
abstractcore/embeddings/manager.py,sha256=cd3mt4f8AU6wfdiqS_9j4qTjO9f9yElL3JHilm80iN8,52856
|
|
43
43
|
abstractcore/embeddings/models.py,sha256=bsPAzL6gv57AVii8O15PT0kxfwRkOml3f3njJN4UDi4,4874
|
|
44
44
|
abstractcore/endpoint/__init__.py,sha256=mCkW0iE5TgXjnCCOCVR_jVlhIugzcwubNXyZa7VJkcM,68
|
|
45
|
-
abstractcore/endpoint/app.py,sha256=
|
|
45
|
+
abstractcore/endpoint/app.py,sha256=j_GN-8DoT4KwSKnHtICNDPwGc-iWL7AZafHjZVRafUw,18247
|
|
46
46
|
abstractcore/events/__init__.py,sha256=9JLYgarpsMxJwTFPvuKF6YdqkNYI5cjNpHItw9dc3Uo,15886
|
|
47
47
|
abstractcore/exceptions/__init__.py,sha256=mR2i8GvsWrD_dJDAHs8Kw2rTSEMfBxwT1e_RfdQlE_A,4750
|
|
48
48
|
abstractcore/mcp/__init__.py,sha256=8OVtnoa-5m2qzOenXZyKfJBOq3XrzlpVjEZn_-7xReY,1020
|
|
@@ -84,7 +84,7 @@ abstractcore/providers/__init__.py,sha256=K5RKyTeDeANW-tArVgSS6ROj66DQuJeSYQNTbI
|
|
|
84
84
|
abstractcore/providers/anthropic_provider.py,sha256=ViADZzD9lmOh6FfsqHmU6wBtnSWZ11YcByOtYTdoaL8,40671
|
|
85
85
|
abstractcore/providers/base.py,sha256=Rgwi9ea9hKkKWQDrY0ep-1bL3TzxXqctkaGKxmzN5ys,161327
|
|
86
86
|
abstractcore/providers/huggingface_provider.py,sha256=u4Zo_fhwCeSMosJ_8Tt7Zd3jc-1bjzcpJx9Gfj-7D0A,104010
|
|
87
|
-
abstractcore/providers/lmstudio_provider.py,sha256=
|
|
87
|
+
abstractcore/providers/lmstudio_provider.py,sha256=FGUW4rh0f0DEudQGvJmiRWtOyYncvsYtlgaqFKyuR2k,1447
|
|
88
88
|
abstractcore/providers/mlx_provider.py,sha256=LhkmyeoruGYx2yOQYgaCgFirBGCWWb2GXG5yJHSiRlU,35500
|
|
89
89
|
abstractcore/providers/model_capabilities.py,sha256=qACY1lU-txpP1UPPWpThKVG0tL7-0LVfKCMLCYRPXv8,12238
|
|
90
90
|
abstractcore/providers/ollama_provider.py,sha256=guOxN_llLpWsu2BFoc-UuIKgBoQRTUtMtq3yoIebOAs,38857
|
|
@@ -95,7 +95,7 @@ abstractcore/providers/registry.py,sha256=BdGqCId5tJ-rUu-HnjWMejTGijJfvXv57jSDo0
|
|
|
95
95
|
abstractcore/providers/streaming.py,sha256=QbLXAd8gIyBiILBB7Zce5YD6LhEROWEfZa7aUt_jYOM,43442
|
|
96
96
|
abstractcore/providers/vllm_provider.py,sha256=5iUs7xd0Hhh_vV5rV8tkhy5x-vhkwIujIx0Ss62Vd9g,6099
|
|
97
97
|
abstractcore/server/__init__.py,sha256=1DSAz_YhQtnKv7sNi5TMQV8GFujctDOabgvAdilQE0o,249
|
|
98
|
-
abstractcore/server/app.py,sha256=
|
|
98
|
+
abstractcore/server/app.py,sha256=lDPrtrBKHFgKd44n_3wl8fTxxEpDPOA5IOdvdueXVr8,119082
|
|
99
99
|
abstractcore/server/audio_endpoints.py,sha256=s59-bn3dXGlZ8KGnVCSKsJTDC3SnkwjRFL__StIbLoY,4858
|
|
100
100
|
abstractcore/server/vision_endpoints.py,sha256=JELZ6ol0l244opon856WEcftsGMeR96ndID8HnZ98Eg,49490
|
|
101
101
|
abstractcore/structured/__init__.py,sha256=VXRQHGcm-iaYnLOBPin2kyhvhhQA0kaGt_pcNDGsE_8,339
|
|
@@ -119,15 +119,15 @@ abstractcore/utils/cli.py,sha256=yWTexV6atxC7SiXcqSnCIo-wE2CXuvYYbqExiFYLWRY,116
|
|
|
119
119
|
abstractcore/utils/jsonish.py,sha256=Tzg06yURj-SEyRscpexh6dClnBx6ece3mjs15eao0ts,2965
|
|
120
120
|
abstractcore/utils/message_preprocessor.py,sha256=GdHkm6tmrgjm3PwHRSCjIsq1XLkbhy_vDEKEUE7OiKY,6028
|
|
121
121
|
abstractcore/utils/self_fixes.py,sha256=1VYxPq-q7_DtNl39NbrzUmyHpkhb9Q2SdnXUj4c0DBc,5907
|
|
122
|
-
abstractcore/utils/structured_logging.py,sha256=
|
|
122
|
+
abstractcore/utils/structured_logging.py,sha256=7Wa3h-nwa_yMZ6OvzC8Zmu3A2vktFvNA0i9WgqjBFEo,20894
|
|
123
123
|
abstractcore/utils/token_utils.py,sha256=GyOpH-StlW7yjavmAAM2h9bqmI87ka0Z0Wmiytm-zWs,21275
|
|
124
124
|
abstractcore/utils/trace_export.py,sha256=MD1DHDWltpewy62cYzz_OSPAA6edZbZq7_pZbvxz_H8,9279
|
|
125
125
|
abstractcore/utils/truncation.py,sha256=WBozRfIhuTD2Vwcl1kWWdZkQFSzf8aVNvmcXnhZUBDU,924
|
|
126
|
-
abstractcore/utils/version.py,sha256=
|
|
126
|
+
abstractcore/utils/version.py,sha256=h4IMgsSemA5eXhprssA9EiKII1UR6ws15lQxSrcgoi0,498
|
|
127
127
|
abstractcore/utils/vlm_token_calculator.py,sha256=pdLsmNG0EejSsgwhkjbtyG8m9tQUcI0o2JXJA5H57qc,28345
|
|
128
|
-
abstractcore-2.11.
|
|
129
|
-
abstractcore-2.11.
|
|
130
|
-
abstractcore-2.11.
|
|
131
|
-
abstractcore-2.11.
|
|
132
|
-
abstractcore-2.11.
|
|
133
|
-
abstractcore-2.11.
|
|
128
|
+
abstractcore-2.11.4.dist-info/licenses/LICENSE,sha256=PI2v_4HMvd6050uDD_4AY_8PzBnu2asa3RKbdDjowTA,1078
|
|
129
|
+
abstractcore-2.11.4.dist-info/METADATA,sha256=hI6Rlfl9NhE1hzQ4u9Ls6FoBTvJTnrmzuBQqPVrRn9o,28509
|
|
130
|
+
abstractcore-2.11.4.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
|
|
131
|
+
abstractcore-2.11.4.dist-info/entry_points.txt,sha256=TBj4p14_I25LfnbU0oeFTGsQh538pVbp7EXoUNT1onI,713
|
|
132
|
+
abstractcore-2.11.4.dist-info/top_level.txt,sha256=DiNHBI35SIawW3N9Z-z0y6cQYNbXd32pvBkW0RLfScs,13
|
|
133
|
+
abstractcore-2.11.4.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|