abstractcore 2.9.0__py3-none-any.whl → 2.11.2__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.
Files changed (83) hide show
  1. abstractcore/__init__.py +7 -27
  2. abstractcore/apps/extractor.py +33 -100
  3. abstractcore/apps/intent.py +19 -0
  4. abstractcore/apps/judge.py +20 -1
  5. abstractcore/apps/summarizer.py +20 -1
  6. abstractcore/architectures/detection.py +34 -1
  7. abstractcore/architectures/response_postprocessing.py +313 -0
  8. abstractcore/assets/architecture_formats.json +38 -8
  9. abstractcore/assets/model_capabilities.json +781 -160
  10. abstractcore/compression/__init__.py +1 -2
  11. abstractcore/compression/glyph_processor.py +6 -4
  12. abstractcore/config/main.py +31 -19
  13. abstractcore/config/manager.py +389 -11
  14. abstractcore/config/vision_config.py +5 -5
  15. abstractcore/core/interface.py +151 -3
  16. abstractcore/core/session.py +16 -10
  17. abstractcore/download.py +1 -1
  18. abstractcore/embeddings/manager.py +20 -6
  19. abstractcore/endpoint/__init__.py +2 -0
  20. abstractcore/endpoint/app.py +458 -0
  21. abstractcore/mcp/client.py +3 -1
  22. abstractcore/media/__init__.py +52 -17
  23. abstractcore/media/auto_handler.py +42 -22
  24. abstractcore/media/base.py +44 -1
  25. abstractcore/media/capabilities.py +12 -33
  26. abstractcore/media/enrichment.py +105 -0
  27. abstractcore/media/handlers/anthropic_handler.py +19 -28
  28. abstractcore/media/handlers/local_handler.py +124 -70
  29. abstractcore/media/handlers/openai_handler.py +19 -31
  30. abstractcore/media/processors/__init__.py +4 -2
  31. abstractcore/media/processors/audio_processor.py +57 -0
  32. abstractcore/media/processors/office_processor.py +8 -3
  33. abstractcore/media/processors/pdf_processor.py +46 -3
  34. abstractcore/media/processors/text_processor.py +22 -24
  35. abstractcore/media/processors/video_processor.py +58 -0
  36. abstractcore/media/types.py +97 -4
  37. abstractcore/media/utils/image_scaler.py +20 -2
  38. abstractcore/media/utils/video_frames.py +219 -0
  39. abstractcore/media/vision_fallback.py +136 -22
  40. abstractcore/processing/__init__.py +32 -3
  41. abstractcore/processing/basic_deepsearch.py +15 -10
  42. abstractcore/processing/basic_intent.py +3 -2
  43. abstractcore/processing/basic_judge.py +3 -2
  44. abstractcore/processing/basic_summarizer.py +1 -1
  45. abstractcore/providers/__init__.py +3 -1
  46. abstractcore/providers/anthropic_provider.py +95 -8
  47. abstractcore/providers/base.py +1516 -81
  48. abstractcore/providers/huggingface_provider.py +546 -69
  49. abstractcore/providers/lmstudio_provider.py +35 -923
  50. abstractcore/providers/mlx_provider.py +382 -35
  51. abstractcore/providers/model_capabilities.py +5 -1
  52. abstractcore/providers/ollama_provider.py +99 -15
  53. abstractcore/providers/openai_compatible_provider.py +406 -180
  54. abstractcore/providers/openai_provider.py +188 -44
  55. abstractcore/providers/openrouter_provider.py +76 -0
  56. abstractcore/providers/registry.py +61 -5
  57. abstractcore/providers/streaming.py +138 -33
  58. abstractcore/providers/vllm_provider.py +92 -817
  59. abstractcore/server/app.py +461 -13
  60. abstractcore/server/audio_endpoints.py +139 -0
  61. abstractcore/server/vision_endpoints.py +1319 -0
  62. abstractcore/structured/handler.py +316 -41
  63. abstractcore/tools/common_tools.py +5501 -2012
  64. abstractcore/tools/comms_tools.py +1641 -0
  65. abstractcore/tools/core.py +37 -7
  66. abstractcore/tools/handler.py +4 -9
  67. abstractcore/tools/parser.py +49 -2
  68. abstractcore/tools/tag_rewriter.py +2 -1
  69. abstractcore/tools/telegram_tdlib.py +407 -0
  70. abstractcore/tools/telegram_tools.py +261 -0
  71. abstractcore/utils/cli.py +1085 -72
  72. abstractcore/utils/token_utils.py +2 -0
  73. abstractcore/utils/truncation.py +29 -0
  74. abstractcore/utils/version.py +3 -4
  75. abstractcore/utils/vlm_token_calculator.py +12 -2
  76. abstractcore-2.11.2.dist-info/METADATA +562 -0
  77. abstractcore-2.11.2.dist-info/RECORD +133 -0
  78. {abstractcore-2.9.0.dist-info → abstractcore-2.11.2.dist-info}/WHEEL +1 -1
  79. {abstractcore-2.9.0.dist-info → abstractcore-2.11.2.dist-info}/entry_points.txt +1 -0
  80. abstractcore-2.9.0.dist-info/METADATA +0 -1189
  81. abstractcore-2.9.0.dist-info/RECORD +0 -119
  82. {abstractcore-2.9.0.dist-info → abstractcore-2.11.2.dist-info}/licenses/LICENSE +0 -0
  83. {abstractcore-2.9.0.dist-info → abstractcore-2.11.2.dist-info}/top_level.txt +0 -0
@@ -3,7 +3,7 @@ Glyph visual-text compression system for AbstractCore.
3
3
 
4
4
  This module provides visual-text compression capabilities that transform long textual
5
5
  sequences into optimized images for processing by Vision-Language Models (VLMs),
6
- achieving 3-4x token compression without accuracy loss.
6
+ which can reduce token usage for long inputs (results vary by content/model/settings).
7
7
 
8
8
  Based on the Glyph framework by Z.ai/THU-COAI with AbstractCore-specific enhancements.
9
9
  """
@@ -26,4 +26,3 @@ __all__ = [
26
26
  'CompressionError',
27
27
  'CompressionQualityError'
28
28
  ]
29
-
@@ -1,8 +1,10 @@
1
1
  """
2
2
  Glyph visual-text compression processor for AbstractCore.
3
3
 
4
- Based on the actual Glyph implementation using reportlab for PDF generation
5
- and pdf2image for conversion, with provider-specific optimization.
4
+ Renders long text into images for vision-capable models using a Pillow-based renderer.
5
+
6
+ This is an experimental feature; compression ratios and quality vary significantly by
7
+ content, model, and rendering settings.
6
8
  """
7
9
 
8
10
  import time
@@ -29,7 +31,8 @@ class GlyphProcessor(BaseMediaHandler):
29
31
  Glyph visual-text compression processor for AbstractCore.
30
32
 
31
33
  Transforms long textual sequences into optimized images for processing
32
- by Vision-Language Models (VLMs), achieving 3-4x token compression.
34
+ by Vision-Language Models (VLMs). This can reduce token usage for long inputs,
35
+ but results depend on content/model/OCR behavior.
33
36
  """
34
37
 
35
38
  def __init__(self, config: Optional[GlyphConfig] = None, **kwargs):
@@ -378,4 +381,3 @@ class GlyphProcessor(BaseMediaHandler):
378
381
  },
379
382
  'provider_profiles': list(self.provider_profiles.keys())
380
383
  }
381
-
@@ -265,9 +265,9 @@ def add_arguments(parser: argparse.ArgumentParser):
265
265
  # Timeout configuration group
266
266
  timeout_group = parser.add_argument_group('Timeout Configuration')
267
267
  timeout_group.add_argument("--set-default-timeout", type=float, metavar="SECONDS",
268
- help="Set default HTTP request timeout in seconds (default: 7200 = 2 hours)")
268
+ help="Set default HTTP request timeout in seconds (default: 7200 = 2 hours; 0 = unlimited)")
269
269
  timeout_group.add_argument("--set-tool-timeout", type=float, metavar="SECONDS",
270
- help="Set tool execution timeout in seconds (default: 600 = 10 minutes)")
270
+ help="Set tool execution timeout in seconds (default: 600 = 10 minutes; 0 = unlimited)")
271
271
 
272
272
  def print_status():
273
273
  """Print comprehensive configuration status with improved readability."""
@@ -463,8 +463,8 @@ def print_status():
463
463
  print("│ abstractcore --set-default-cache-dir PATH")
464
464
  print("│")
465
465
  print("│ ⏱️ Performance & Timeouts")
466
- print("│ abstractcore --set-default-timeout SECONDS (HTTP requests, default: 7200)")
467
- print("│ abstractcore --set-tool-timeout SECONDS (Tool execution, default: 600)")
466
+ print("│ abstractcore --set-default-timeout SECONDS (HTTP requests, default: 7200; 0 = unlimited)")
467
+ print("│ abstractcore --set-tool-timeout SECONDS (Tool execution, default: 600; 0 = unlimited)")
468
468
  print("│")
469
469
  print("│ 🎯 Specialized Models")
470
470
  print("│ abstractcore --set-chat-model PROVIDER/MODEL")
@@ -525,7 +525,7 @@ def interactive_configure():
525
525
  print("\n3. API Keys Setup")
526
526
  api_choice = input("Configure API keys? [y/N]: ").lower().strip()
527
527
  if api_choice == 'y':
528
- for provider in ["openai", "anthropic", "google"]:
528
+ for provider in ["openai", "anthropic", "openrouter", "google"]:
529
529
  key = input(f"Enter {provider} API key (or press Enter to skip): ").strip()
530
530
  if key:
531
531
  config_manager.set_api_key(provider, key)
@@ -727,32 +727,44 @@ def handle_commands(args) -> bool:
727
727
  handled = True
728
728
 
729
729
  # Timeout configuration
730
- if args.set_default_timeout:
730
+ # #[WARNING:TIMEOUT]
731
+ if args.set_default_timeout is not None:
731
732
  try:
732
- config_manager.set_default_timeout(args.set_default_timeout)
733
+ ok = config_manager.set_default_timeout(args.set_default_timeout)
734
+ if not ok:
735
+ raise RuntimeError("Configuration update failed")
733
736
  # Format display (show in minutes if >= 60 seconds)
734
- if args.set_default_timeout >= 60:
737
+ if args.set_default_timeout <= 0:
738
+ display = "unlimited"
739
+ elif args.set_default_timeout >= 60:
735
740
  minutes = args.set_default_timeout / 60
736
741
  display = f"{minutes:.1f} minutes" if minutes != int(minutes) else f"{int(minutes)} minutes"
737
742
  else:
738
743
  display = f"{args.set_default_timeout} seconds"
739
- print(f" Set default HTTP timeout to: {display} ({args.set_default_timeout}s)")
740
- except ValueError as e:
741
- print(f"❌ Error: {e}")
744
+ suffix = "" if args.set_default_timeout <= 0 else f" ({args.set_default_timeout}s)"
745
+ print(f"✅ Set default HTTP timeout to: {display}{suffix}")
746
+ except Exception as e:
747
+ print(f"❌ Failed to set default HTTP timeout: {e}")
742
748
  handled = True
743
749
 
744
- if args.set_tool_timeout:
750
+ # #[WARNING:TIMEOUT]
751
+ if args.set_tool_timeout is not None:
745
752
  try:
746
- config_manager.set_tool_timeout(args.set_tool_timeout)
753
+ ok = config_manager.set_tool_timeout(args.set_tool_timeout)
754
+ if not ok:
755
+ raise RuntimeError("Configuration update failed")
747
756
  # Format display (show in minutes if >= 60 seconds)
748
- if args.set_tool_timeout >= 60:
757
+ if args.set_tool_timeout <= 0:
758
+ display = "unlimited"
759
+ elif args.set_tool_timeout >= 60:
749
760
  minutes = args.set_tool_timeout / 60
750
761
  display = f"{minutes:.1f} minutes" if minutes != int(minutes) else f"{int(minutes)} minutes"
751
762
  else:
752
763
  display = f"{args.set_tool_timeout} seconds"
753
- print(f" Set tool execution timeout to: {display} ({args.set_tool_timeout}s)")
754
- except ValueError as e:
755
- print(f"❌ Error: {e}")
764
+ suffix = "" if args.set_tool_timeout <= 0 else f" ({args.set_tool_timeout}s)"
765
+ print(f"✅ Set tool execution timeout to: {display}{suffix}")
766
+ except Exception as e:
767
+ print(f"❌ Failed to set tool execution timeout: {e}")
756
768
  handled = True
757
769
 
758
770
  return handled
@@ -795,7 +807,7 @@ COMMON TASKS:
795
807
 
796
808
  SPECIALIZED MODELS:
797
809
  abstractcore --set-chat-model openai/gpt-4o-mini # For chat applications
798
- abstractcore --set-code-model anthropic/claude-3-5-sonnet # For coding tasks
810
+ abstractcore --set-code-model anthropic/claude-haiku-4-5 # For coding tasks (cost-effective default)
799
811
 
800
812
  PRIORITY SYSTEM:
801
813
  1. Explicit parameters (highest): summarizer doc.pdf --provider openai --model gpt-4o
@@ -840,4 +852,4 @@ DOCUMENTATION: docs/centralized-config.md
840
852
 
841
853
  if __name__ == "__main__":
842
854
  logging.basicConfig(level=logging.INFO)
843
- sys.exit(main())
855
+ sys.exit(main())