abstractcore 2.5.3__py3-none-any.whl → 2.6.0__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 (31) hide show
  1. abstractcore/__init__.py +7 -1
  2. abstractcore/architectures/detection.py +2 -2
  3. abstractcore/core/retry.py +2 -2
  4. abstractcore/core/session.py +132 -1
  5. abstractcore/download.py +253 -0
  6. abstractcore/embeddings/manager.py +2 -2
  7. abstractcore/events/__init__.py +112 -1
  8. abstractcore/exceptions/__init__.py +49 -2
  9. abstractcore/media/processors/office_processor.py +2 -2
  10. abstractcore/media/utils/image_scaler.py +2 -2
  11. abstractcore/media/vision_fallback.py +2 -2
  12. abstractcore/providers/anthropic_provider.py +200 -6
  13. abstractcore/providers/base.py +100 -5
  14. abstractcore/providers/lmstudio_provider.py +246 -2
  15. abstractcore/providers/ollama_provider.py +244 -2
  16. abstractcore/providers/openai_provider.py +258 -6
  17. abstractcore/providers/streaming.py +2 -2
  18. abstractcore/tools/common_tools.py +2 -2
  19. abstractcore/tools/handler.py +2 -2
  20. abstractcore/tools/parser.py +2 -2
  21. abstractcore/tools/registry.py +2 -2
  22. abstractcore/tools/syntax_rewriter.py +2 -2
  23. abstractcore/tools/tag_rewriter.py +3 -3
  24. abstractcore/utils/self_fixes.py +2 -2
  25. abstractcore/utils/version.py +1 -1
  26. {abstractcore-2.5.3.dist-info → abstractcore-2.6.0.dist-info}/METADATA +102 -4
  27. {abstractcore-2.5.3.dist-info → abstractcore-2.6.0.dist-info}/RECORD +31 -30
  28. {abstractcore-2.5.3.dist-info → abstractcore-2.6.0.dist-info}/WHEEL +0 -0
  29. {abstractcore-2.5.3.dist-info → abstractcore-2.6.0.dist-info}/entry_points.txt +0 -0
  30. {abstractcore-2.5.3.dist-info → abstractcore-2.6.0.dist-info}/licenses/LICENSE +0 -0
  31. {abstractcore-2.5.3.dist-info → abstractcore-2.6.0.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: abstractcore
3
- Version: 2.5.3
3
+ Version: 2.6.0
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>
@@ -67,12 +67,18 @@ Provides-Extra: api-providers
67
67
  Requires-Dist: abstractcore[anthropic,openai]; extra == "api-providers"
68
68
  Provides-Extra: local-providers
69
69
  Requires-Dist: abstractcore[lmstudio,mlx,ollama]; extra == "local-providers"
70
+ Provides-Extra: local-providers-non-mlx
71
+ Requires-Dist: abstractcore[lmstudio,ollama]; extra == "local-providers-non-mlx"
70
72
  Provides-Extra: heavy-providers
71
73
  Requires-Dist: abstractcore[huggingface]; extra == "heavy-providers"
72
74
  Provides-Extra: all-providers
73
75
  Requires-Dist: abstractcore[anthropic,embeddings,huggingface,lmstudio,mlx,ollama,openai]; extra == "all-providers"
76
+ Provides-Extra: all-providers-non-mlx
77
+ Requires-Dist: abstractcore[anthropic,embeddings,huggingface,lmstudio,ollama,openai]; extra == "all-providers-non-mlx"
74
78
  Provides-Extra: all
75
79
  Requires-Dist: abstractcore[anthropic,compression,dev,docs,embeddings,huggingface,lmstudio,media,mlx,ollama,openai,processing,server,test,tools]; extra == "all"
80
+ Provides-Extra: all-non-mlx
81
+ Requires-Dist: abstractcore[anthropic,compression,dev,docs,embeddings,huggingface,lmstudio,media,ollama,openai,processing,server,test,tools]; extra == "all-non-mlx"
76
82
  Provides-Extra: lightweight
77
83
  Requires-Dist: abstractcore[anthropic,compression,embeddings,lmstudio,media,ollama,openai,processing,server,tools]; extra == "lightweight"
78
84
  Provides-Extra: dev
@@ -120,7 +126,11 @@ A unified Python library for interaction with multiple Large Language Model (LLM
120
126
  ### Installation
121
127
 
122
128
  ```bash
129
+ # macOS/Apple Silicon (includes MLX)
123
130
  pip install abstractcore[all]
131
+
132
+ # Linux/Windows (excludes MLX)
133
+ pip install abstractcore[all-non-mlx]
124
134
  ```
125
135
 
126
136
  ### Basic Usage
@@ -311,6 +321,69 @@ export_traces(traces, format='markdown', file_path='workflow_trace.md')
311
321
 
312
322
  [Learn more about Interaction Tracing](docs/interaction-tracing.md)
313
323
 
324
+ ### Async/Await Support
325
+
326
+ Execute concurrent LLM requests for batch operations, multi-provider comparisons, or non-blocking web applications. **Production-ready with validated 6-7.5x performance improvement** for concurrent requests.
327
+
328
+ ```python
329
+ import asyncio
330
+ from abstractcore import create_llm
331
+
332
+ async def main():
333
+ llm = create_llm("openai", model="gpt-4o-mini")
334
+
335
+ # Execute 3 requests concurrently (6-7x faster!)
336
+ tasks = [
337
+ llm.agenerate(f"Summarize {topic}")
338
+ for topic in ["Python", "JavaScript", "Rust"]
339
+ ]
340
+ responses = await asyncio.gather(*tasks)
341
+
342
+ for response in responses:
343
+ print(response.content)
344
+
345
+ asyncio.run(main())
346
+ ```
347
+
348
+ **Performance (Validated with Real Testing):**
349
+ - **Ollama**: 7.5x faster for concurrent requests
350
+ - **LMStudio**: 6.5x faster for concurrent requests
351
+ - **OpenAI**: 6.0x faster for concurrent requests
352
+ - **Anthropic**: 7.4x faster for concurrent requests
353
+ - **Average**: ~7x speedup across all providers
354
+
355
+ **Native Async vs Fallback:**
356
+ - **Native async** (httpx.AsyncClient): Ollama, LMStudio, OpenAI, Anthropic
357
+ - **Fallback** (asyncio.to_thread): MLX, HuggingFace
358
+ - All providers work seamlessly - fallback keeps event loop responsive
359
+
360
+ **Use Cases:**
361
+ - Batch operations with 6-7x speedup via parallel execution
362
+ - Multi-provider comparisons (query OpenAI and Anthropic simultaneously)
363
+ - FastAPI/async web frameworks integration
364
+ - Session async for conversation management
365
+
366
+ **Works with:**
367
+ - All 6 providers (OpenAI, Anthropic, Ollama, LMStudio, MLX, HuggingFace)
368
+ - Streaming via `async for chunk in llm.agenerate(..., stream=True)`
369
+ - Sessions via `await session.agenerate(...)`
370
+ - Zero breaking changes to sync API
371
+
372
+ **Learn async patterns:**
373
+
374
+ AbstractCore includes an educational [async CLI demo](examples/async_cli_demo.py) that demonstrates 8 core async/await patterns:
375
+ - Event-driven progress with GlobalEventBus
376
+ - Parallel tool execution with asyncio.gather()
377
+ - Proper async streaming pattern (await first, then async for)
378
+ - Non-blocking animations and user input
379
+
380
+ ```bash
381
+ # Try the educational async demo
382
+ python examples/async_cli_demo.py --provider ollama --model qwen3:4b --stream
383
+ ```
384
+
385
+ [Learn more in CLI docs](docs/acore-cli.md#async-cli-demo-educational-reference)
386
+
314
387
  ### Media Handling
315
388
 
316
389
  AbstractCore provides unified media handling across all providers with automatic resolution optimization. Upload images, PDFs, and documents using the same simple API regardless of your provider.
@@ -408,7 +481,8 @@ if response.metadata and response.metadata.get('compression_used'):
408
481
 
409
482
  - **Offline-First Design**: Built primarily for open source LLMs with full offline capability. Download once, run forever without internet access
410
483
  - **Provider Agnostic**: Seamlessly switch between OpenAI, Anthropic, Ollama, LMStudio, MLX, HuggingFace
411
- - **Interaction Tracing**: Complete LLM observability with programmatic access to prompts, responses, tokens, and timing for debugging and compliance
484
+ - **Async/Await Support** NEW in v2.6.0: Native async support for concurrent requests with `asyncio.gather()` - works with all 6 providers
485
+ - **Interaction Tracing**: Complete LLM observability with programmatic access to prompts, responses, tokens, timing, and trace correlation for debugging, trust, and compliance
412
486
  - **Glyph Visual-Text Compression**: Revolutionary compression system that renders text as optimized images for 3-4x token compression and faster inference
413
487
  - **Centralized Configuration**: Global defaults and app-specific preferences at `~/.abstractcore/config/abstractcore.json`
414
488
  - **Intelligent Media Handling**: Upload images, PDFs, and documents with automatic maximum resolution optimization
@@ -522,7 +596,7 @@ python -m abstractcore.utils.cli --provider anthropic --model claude-3-5-haiku-l
522
596
 
523
597
  ## Built-in Applications (Ready-to-Use CLI Tools)
524
598
 
525
- AbstractCore includes **four specialized command-line applications** for common LLM tasks. These are production-ready tools that can be used directly from the terminal without any Python programming.
599
+ AbstractCore includes **five specialized command-line applications** for common LLM tasks. These are production-ready tools that can be used directly from the terminal without any Python programming.
526
600
 
527
601
  ### Available Applications
528
602
 
@@ -532,6 +606,7 @@ AbstractCore includes **four specialized command-line applications** for common
532
606
  | **Extractor** | Entity and relationship extraction | `extractor` |
533
607
  | **Judge** | Text evaluation and scoring | `judge` |
534
608
  | **Intent Analyzer** | Psychological intent analysis & deception detection | `intent` |
609
+ | **DeepSearch** | Autonomous multi-stage research with web search | `deepsearch` |
535
610
 
536
611
  ### Quick Usage Examples
537
612
 
@@ -555,6 +630,11 @@ judge proposal.md --custom-criteria has_examples,covers_risks --output assessmen
555
630
  intent conversation.txt --focus-participant user --depth comprehensive
556
631
  intent email.txt --format plain --context document --verbose
557
632
  intent chat_log.json --conversation-mode --provider lmstudio --model qwen/qwen3-30b-a3b-2507
633
+
634
+ # Autonomous research with web search and reflexive refinement
635
+ deepsearch "What are the latest advances in quantum computing?" --depth comprehensive
636
+ deepsearch "AI impact on healthcare" --focus "diagnosis,treatment,ethics" --reflexive
637
+ deepsearch "sustainable energy 2025" --max-sources 25 --provider openai --model gpt-4o-mini
558
638
  ```
559
639
 
560
640
  ### Installation & Setup
@@ -567,9 +647,10 @@ pip install abstractcore[all]
567
647
 
568
648
  # Apps are immediately available
569
649
  summarizer --help
570
- extractor --help
650
+ extractor --help
571
651
  judge --help
572
652
  intent --help
653
+ deepsearch --help
573
654
  ```
574
655
 
575
656
  ### Alternative Usage Methods
@@ -580,12 +661,14 @@ summarizer document.txt
580
661
  extractor report.pdf
581
662
  judge essay.md
582
663
  intent conversation.txt
664
+ deepsearch "your research query"
583
665
 
584
666
  # Method 2: Via Python module
585
667
  python -m abstractcore.apps summarizer document.txt
586
668
  python -m abstractcore.apps extractor report.pdf
587
669
  python -m abstractcore.apps judge essay.md
588
670
  python -m abstractcore.apps intent conversation.txt
671
+ python -m abstractcore.apps deepsearch "your research query"
589
672
  ```
590
673
 
591
674
  ### Key Parameters
@@ -633,6 +716,7 @@ Each application has documentation with examples and usage information:
633
716
  - **[Extractor Guide](docs/apps/basic-extractor.md)** - Entity and relationship extraction
634
717
  - **[Intent Analyzer Guide](docs/apps/basic-intent.md)** - Psychological intent analysis and deception detection
635
718
  - **[Judge Guide](docs/apps/basic-judge.md)** - Text evaluation and scoring systems
719
+ - **[DeepSearch Guide](docs/apps/basic-deepsearch.md)** - Autonomous multi-stage research with web search
636
720
 
637
721
  **When to use the apps:**
638
722
  - Processing documents without writing code
@@ -878,6 +962,9 @@ pip install abstractcore[media]
878
962
  pip install abstractcore[openai]
879
963
  pip install abstractcore[anthropic]
880
964
  pip install abstractcore[ollama]
965
+ pip install abstractcore[lmstudio]
966
+ pip install abstractcore[huggingface]
967
+ pip install abstractcore[mlx] # macOS/Apple Silicon only
881
968
 
882
969
  # With server support
883
970
  pip install abstractcore[server]
@@ -887,6 +974,16 @@ pip install abstractcore[embeddings]
887
974
 
888
975
  # Everything (recommended)
889
976
  pip install abstractcore[all]
977
+
978
+ # Cross-platform (all except MLX - for Linux/Windows)
979
+ pip install abstractcore[all-non-mlx]
980
+
981
+ # Provider groups
982
+ pip install abstractcore[all-providers] # All providers (includes MLX)
983
+ pip install abstractcore[all-providers-non-mlx] # All providers except MLX
984
+ pip install abstractcore[local-providers] # Ollama, LMStudio, MLX
985
+ pip install abstractcore[local-providers-non-mlx] # Ollama, LMStudio only
986
+ pip install abstractcore[api-providers] # OpenAI, Anthropic
890
987
  ```
891
988
 
892
989
  **Media processing extras:**
@@ -917,6 +1014,7 @@ All tests passing as of October 12th, 2025.
917
1014
  ## Quick Links
918
1015
 
919
1016
  - **[📚 Documentation Index](docs/)** - Complete documentation navigation guide
1017
+ - **[🔍 Interaction Tracing](docs/interaction-tracing.md)** - LLM observability and debugging ⭐ NEW
920
1018
  - **[Getting Started](docs/getting-started.md)** - 5-minute quick start
921
1019
  - **[⚙️ Prerequisites](docs/prerequisites.md)** - Provider setup (OpenAI, Anthropic, Ollama, etc.)
922
1020
  - **[📖 Python API](docs/api-reference.md)** - Complete Python API reference
@@ -1,4 +1,5 @@
1
- abstractcore/__init__.py,sha256=G3x3N515eDSDnFd8xFfR6xO875j-Wppyab7yd8_pgE8,2296
1
+ abstractcore/__init__.py,sha256=DDn7Y74JyDvS79Fm8aSI38l9p5jwHZYWlSgKRsjPE4k,2476
2
+ abstractcore/download.py,sha256=r-vC-zRVtX5KBOQdcZitop3nSdlnTbhbrPeoyZ82dGo,8682
2
3
  abstractcore/apps/__init__.py,sha256=sgNOv3lYyOWNBC-w6GnRN6aILGCbdkQtNcuQdJz5ghE,31
3
4
  abstractcore/apps/__main__.py,sha256=fV9cGU99K4lGRsPNOLkh8qrDjH3JtMEWNlBiZrvI5Kk,1974
4
5
  abstractcore/apps/app_config_utils.py,sha256=5GIvXnD996LFIV3-BpfkqII6UqYlStm7ZCgmqDEN8dc,890
@@ -8,7 +9,7 @@ abstractcore/apps/intent.py,sha256=5ie_H9_K_ZxlA0oCu7ROUrsgwfzDNFgVUyBNec6YVRE,2
8
9
  abstractcore/apps/judge.py,sha256=nOgxvn-BbhNY6xU9AlTeD1yidTh73AiVlSN7hQCVE2M,23169
9
10
  abstractcore/apps/summarizer.py,sha256=9aD6KH21w-tv_wGp9MaO2uyJuaU71OemW7KpqrG5t6w,14669
10
11
  abstractcore/architectures/__init__.py,sha256=-4JucAM7JkMWShWKkePoclxrUHRKgaG36UTguJihE0U,1046
11
- abstractcore/architectures/detection.py,sha256=kCgm0CjI1Ood0Lv36zGAlwv4AKy4ypsmzwFhEWxIXKM,19785
12
+ abstractcore/architectures/detection.py,sha256=jmpD04xcKotWCW7--jadBzCtD2a5dYJi1zljpxB9JmU,19813
12
13
  abstractcore/architectures/enums.py,sha256=9vIv2vDBEKhxwzwH9iaSAyf-iVj3p8y9loMeN_mYTJ8,3821
13
14
  abstractcore/assets/architecture_formats.json,sha256=Yf-W1UuadrL8qid0pfU_pEBOkjwH4lvx7Nzu83GACp8,16622
14
15
  abstractcore/assets/model_capabilities.json,sha256=tmfQNNPTNJAauF51nPYkMqcjc17F2geeYngh0HjEUZ0,68836
@@ -33,20 +34,20 @@ abstractcore/core/__init__.py,sha256=2h-86U4QkCQ4gzZ4iRusSTMlkODiUS6tKjZHiEXz6rM
33
34
  abstractcore/core/enums.py,sha256=BhkVnHC-X1_377JDmqd-2mnem9GdBLqixWlYzlP_FJU,695
34
35
  abstractcore/core/factory.py,sha256=ec7WGW2JKK-dhDplziTAeRkebEUFymtEEZ_bS5qkpqY,2798
35
36
  abstractcore/core/interface.py,sha256=-VAY0nlsTnWN_WghiuMC7iE7xUdZfYOg6KlgrAPi14Y,14086
36
- abstractcore/core/retry.py,sha256=wNlUAxfmvdO_uVWb4iqkhTqd7O1oRwXxqvVQaLXQOw0,14538
37
- abstractcore/core/session.py,sha256=WNVZYTX-xrY-7XUGLd3jpfhWcMrMRa4rlnyRixFJIJQ,40770
37
+ abstractcore/core/retry.py,sha256=xP38rabBqJImZ-yg60L5mKeg80ATvxmLG5Yp6lCeTpk,14566
38
+ abstractcore/core/session.py,sha256=n9StBlMhSlETlEqQ401PpM8lK0W2ycCP4Zwrywl4Mhs,46147
38
39
  abstractcore/core/types.py,sha256=jj44i07kMjdg9FQ3mA_fK6r_M0Lcgt1RQpy1Ra5w-eI,4578
39
40
  abstractcore/embeddings/__init__.py,sha256=hR3xZyqcRm4c2pq1dIa5lxj_-Bk70Zad802JQN4joWo,637
40
- abstractcore/embeddings/manager.py,sha256=uFVbRPHx_R-kVMVA7N7_7EzeUmCJCeN9Dv0EV8Jko24,52245
41
+ abstractcore/embeddings/manager.py,sha256=bisyQJquM1HLQor8ZAfO9V_XWWHw0b4PjyAz9g7sS-4,52273
41
42
  abstractcore/embeddings/models.py,sha256=bsPAzL6gv57AVii8O15PT0kxfwRkOml3f3njJN4UDi4,4874
42
- abstractcore/events/__init__.py,sha256=OQJP7qOMWLg_tZyM62eZZ6uUpiHNevAWVdkK7W5slr0,11088
43
- abstractcore/exceptions/__init__.py,sha256=h6y3sdZR6uFMh0iq7z85DfJi01zGQvjVOm1W7l86iVQ,3224
43
+ abstractcore/events/__init__.py,sha256=eV3-HRRjTS923YXq5is4JUjPEfaMjT4eGW-I7NuawW4,15598
44
+ abstractcore/exceptions/__init__.py,sha256=mR2i8GvsWrD_dJDAHs8Kw2rTSEMfBxwT1e_RfdQlE_A,4750
44
45
  abstractcore/media/__init__.py,sha256=94k22PRXInaXFlxU7p06IRbyjmOkSlCITDm0gb8d9AI,3202
45
46
  abstractcore/media/auto_handler.py,sha256=eo5a-hn_geLPsBe1oLKvd2YTxS8NRMms1uosmUyu3-s,26500
46
47
  abstractcore/media/base.py,sha256=vWdxscqTGTvd3oc4IzzsBTWhUrznWcqM7M_sFyq6-eE,15971
47
48
  abstractcore/media/capabilities.py,sha256=qqKvXGkUT-FNnbFS-EYx8KCT9SZOovO2h4N7ucrHgBA,12844
48
49
  abstractcore/media/types.py,sha256=fofcQXSb-_PQwAHoSVObPhPdVUkwxOJec1ssv-731Ho,16158
49
- abstractcore/media/vision_fallback.py,sha256=yojFTwKqiE0wfQGYphpXUcANpC0Q80s-qlt7gmQGfZg,11282
50
+ abstractcore/media/vision_fallback.py,sha256=-yVKS5n5OJPcsNvInkAnw5SWzTx0_dOLi6TCkZrtw2U,11310
50
51
  abstractcore/media/handlers/__init__.py,sha256=HBqFo15JX1q7RM11076iFQUfPvInLlOizX-LGSznLuI,404
51
52
  abstractcore/media/handlers/anthropic_handler.py,sha256=iwcHKnHgHoQGpJKlJmwFJWBvrYg9lAzAnndybwsWZRA,12427
52
53
  abstractcore/media/handlers/local_handler.py,sha256=Y-viFGYowmtrj-J95JeKgx0L1WSe4ttJeEZ60PHf9Ck,23815
@@ -55,11 +56,11 @@ abstractcore/media/processors/__init__.py,sha256=V5OqxTnIkcni-tVQZQYpSvO4hl74aFw
55
56
  abstractcore/media/processors/direct_pdf_processor.py,sha256=DuI3bK8JfZwPVXZ43tH56y09kKqvHgWhR5NZ_HslcF4,8989
56
57
  abstractcore/media/processors/glyph_pdf_processor.py,sha256=H-IqnQ0roDEWhsMzoW3BYgXzO9OWBSsrUr_zYIabRdI,8576
57
58
  abstractcore/media/processors/image_processor.py,sha256=jXvbiV3RCYpAKVaee24lE5oXavASyt3ScJppOIiosmg,22972
58
- abstractcore/media/processors/office_processor.py,sha256=MqhLDWNtjHEpiMgpFaf7tbj8iDcTCf_zelWrHZkr7Z4,18580
59
+ abstractcore/media/processors/office_processor.py,sha256=_aTrrDtREiy6MivbANFc1FKq06AbAC-pL1EXKiHceGs,18609
59
60
  abstractcore/media/processors/pdf_processor.py,sha256=qniYt7cTYYPVRi_cS1IsXztOldeY0bqdn7sdbELBU9k,17157
60
61
  abstractcore/media/processors/text_processor.py,sha256=D84QWxxIou4MeNhERmCTxi_p27CgicVFhMXJiujZgIE,21905
61
62
  abstractcore/media/utils/__init__.py,sha256=30-CTif91iRKOXJ4njGiduWAt-xp31U7NafMBNvgdO0,460
62
- abstractcore/media/utils/image_scaler.py,sha256=QrYqoNQc8tzGu7I9Sf_E-Iv7ei2oLh714AGiX3yACNM,11338
63
+ abstractcore/media/utils/image_scaler.py,sha256=jPdYd65K5oeo0YaXjOkmv-tvs6tNHYwxJCZ29vZqFDg,11367
63
64
  abstractcore/processing/__init__.py,sha256=QcACEnhnHKYCkFL1LNOW_uqBrwkTAmz5A61N4K2dyu0,988
64
65
  abstractcore/processing/basic_deepsearch.py,sha256=dzJQtH4k44XY9tvG0Z4JIlYt_s7HpbLdSPScha-t7vk,101036
65
66
  abstractcore/processing/basic_extractor.py,sha256=3x-3BdIHgLvqLnLF6K1-P4qVaLIpAnNIIutaJi7lDQM,49832
@@ -67,41 +68,41 @@ abstractcore/processing/basic_intent.py,sha256=wD99Z7fE2RiYk6oyTZXojUbv-bz8HhKFI
67
68
  abstractcore/processing/basic_judge.py,sha256=tKWJrg_tY4vCHzWgXxz0ZjgLXBYYfpMcpG7vl03hJcM,32218
68
69
  abstractcore/processing/basic_summarizer.py,sha256=XHNxMQ_8aLStTeUo6_2JaThlct12Htpz7ORmm0iuJsg,25495
69
70
  abstractcore/providers/__init__.py,sha256=O7gmT4p_jbzMjoZPhi_6RIMHQm-IMFX1XfcgySz3DSQ,1729
70
- abstractcore/providers/anthropic_provider.py,sha256=kw5fegRkQL-maNdgnmRRMcQCIIFCdeX24ls9iDnuXDo,22648
71
- abstractcore/providers/base.py,sha256=T7CTil_F_0_ZCu8jxiJUORc9hlkLKpTHmPRb2GolS4U,64571
71
+ abstractcore/providers/anthropic_provider.py,sha256=0-qZb0Es6-VLuVVl2j7IUjOuyRlgjQdJFulWfpi4qb4,31740
72
+ abstractcore/providers/base.py,sha256=nWF1pxeUlT4ozlUqKG0rWOmLkfo-zQgfU7fv3AUSI08,68452
72
73
  abstractcore/providers/huggingface_provider.py,sha256=v4UUmODrnWKtTygzPh-lm4jSCAPms5VYJE5v7PWB4Lo,79458
73
- abstractcore/providers/lmstudio_provider.py,sha256=mq5fy8nvpltc1KZgSgYOHwzv6T5sbZ4mlqjJR3nwiy4,23185
74
+ abstractcore/providers/lmstudio_provider.py,sha256=e53EF1kyIK4rMRrHZqeE-RfFbxap05iQYWOq_jjxJSk,33935
74
75
  abstractcore/providers/mlx_provider.py,sha256=afLCEwuw7r8OK4fD3OriyKMcWpxVIob_37ItmgAclfc,23123
75
76
  abstractcore/providers/model_capabilities.py,sha256=C4HIgvNTp9iIPiDeWyXo7vdzRkMdecRPoQi80yHSOL0,11955
76
- abstractcore/providers/ollama_provider.py,sha256=wt8SfpODWZvhaqhaW80PvUeiCK7KNWauOgiWivOppK8,23463
77
- abstractcore/providers/openai_provider.py,sha256=pWKkFF8Gy6hcg4unFxmN9AMXlVmEcqEOBKIZTH6PN4k,24379
77
+ abstractcore/providers/ollama_provider.py,sha256=FoofSLtevTGxsjjiQw9Q7OWBjp4RJ8JHrFVefPnHyoA,33915
78
+ abstractcore/providers/openai_provider.py,sha256=Y-79mAtgDiDw6SqF2LhnWtlfuC_e6TxeF_tqJWAAyWo,36364
78
79
  abstractcore/providers/registry.py,sha256=KG7qjP76Z5t6k5ZsmqoDEbe3A39RJhhvExKPvSKMEms,19442
79
- abstractcore/providers/streaming.py,sha256=VnffBV_CU9SAKzghL154OoFyEdDsiLwUNXPahyU41Bw,31342
80
+ abstractcore/providers/streaming.py,sha256=HaGkoItPWXqgml3C-KiPc0hBNpztLzjl_ooECw11BHI,31370
80
81
  abstractcore/server/__init__.py,sha256=1DSAz_YhQtnKv7sNi5TMQV8GFujctDOabgvAdilQE0o,249
81
82
  abstractcore/server/app.py,sha256=ajG4yfMOHjqBafquLHeLTaMmEr01RXiBRxjFRTIT2j8,96602
82
83
  abstractcore/structured/__init__.py,sha256=VXRQHGcm-iaYnLOBPin2kyhvhhQA0kaGt_pcNDGsE_8,339
83
84
  abstractcore/structured/handler.py,sha256=hcUe_fZcwx0O3msLqFiOsj6-jbq3S-ZQa9c1nRIZvuo,24622
84
85
  abstractcore/structured/retry.py,sha256=BN_PvrWybyU1clMy2cult1-TVxFSMaVqiCPmmXvA5aI,3805
85
86
  abstractcore/tools/__init__.py,sha256=oh6vG0RdM1lqUtOp95mLrTsWLh9VmhJf5_FVjGIP5_M,2259
86
- abstractcore/tools/common_tools.py,sha256=sfCuwZX3mG229yZRAgaLlDrVpGCVfdH_Uq5tZUVw6n8,95122
87
+ abstractcore/tools/common_tools.py,sha256=hn4Y-HmpYAH3nLnKqJayWr-mpou3T5Ixu-LRdeO1_c4,95161
87
88
  abstractcore/tools/core.py,sha256=lUUGihyceiRYlKUFvEMig9jWFF563d574mSDbYYD3fM,4777
88
- abstractcore/tools/handler.py,sha256=GmDenXAJkhceWSGlhvuF90aMb2301tRTh6WxGwBQifc,12022
89
- abstractcore/tools/parser.py,sha256=1r5nmEEp1Rid3JU6ct-s3lP-eCln67fvXG5HCjqiRew,27740
90
- abstractcore/tools/registry.py,sha256=cN3nbPEK6L2vAd9740MIFf2fitW_4WHpQfK4KvQjnT0,9059
91
- abstractcore/tools/syntax_rewriter.py,sha256=c3NSTvUF3S3ho5Cwjp7GJJdibeYAI6k3iaBwhKcpTfo,17318
92
- abstractcore/tools/tag_rewriter.py,sha256=UGFMBj2QKwm12j8JQ6oc2C_N3ZeNqz9Enz4VkEIrS0c,20338
89
+ abstractcore/tools/handler.py,sha256=nBbbBNq029s8pV6NbTU-VmQ6xoSTdt7Af1-XbcMdgU4,12050
90
+ abstractcore/tools/parser.py,sha256=AYM0-baSGGGdwd_w2My3B3sOiw2flE2x59mLmdpwJ0A,27768
91
+ abstractcore/tools/registry.py,sha256=eI0qKrauT1PzLIfaporXCjBMojmWYzgfd96xdN_Db1g,9087
92
+ abstractcore/tools/syntax_rewriter.py,sha256=_lBvIJ_gFleR5JZI0UuukQ47pe5CXp3IM9Oee0ypx60,17346
93
+ abstractcore/tools/tag_rewriter.py,sha256=2hjLoIjVs4277mPBSrNsnxLOVvmXm83xtF0WCOU3uno,20350
93
94
  abstractcore/utils/__init__.py,sha256=8uvIU1WpUfetvWA90PPvXtxnFNjMQF0umb8_FuK2cTA,779
94
95
  abstractcore/utils/cli.py,sha256=tO7S-iVSZavxJaX7OTruNAmF3lJz9eCDORK8Dm7FdgA,70558
95
96
  abstractcore/utils/message_preprocessor.py,sha256=GdHkm6tmrgjm3PwHRSCjIsq1XLkbhy_vDEKEUE7OiKY,6028
96
- abstractcore/utils/self_fixes.py,sha256=QEDwNTW80iQM4ftfEY3Ghz69F018oKwLM9yeRCYZOvw,5886
97
+ abstractcore/utils/self_fixes.py,sha256=1VYxPq-q7_DtNl39NbrzUmyHpkhb9Q2SdnXUj4c0DBc,5907
97
98
  abstractcore/utils/structured_logging.py,sha256=Vm-HviSa42G9DJCWmaEv4a0QG3NMsADD3ictLOs4En0,19952
98
99
  abstractcore/utils/token_utils.py,sha256=eLwFmJ68p9WMFD_MHLMmeJRW6Oqx_4hKELB8FNQ2Mnk,21097
99
100
  abstractcore/utils/trace_export.py,sha256=MD1DHDWltpewy62cYzz_OSPAA6edZbZq7_pZbvxz_H8,9279
100
- abstractcore/utils/version.py,sha256=5dD6Nqt67LVS1pdUKp_GG1C6h57jBU2JksiHqv5h774,605
101
+ abstractcore/utils/version.py,sha256=8FvB_bU--hAlMcCZyeDF2i2VlS9p4sYej4VBQOVtRR4,605
101
102
  abstractcore/utils/vlm_token_calculator.py,sha256=VBmIji_oiqOQ13IvVhNkb8E246tYMIXWVVOnl86Ne94,27978
102
- abstractcore-2.5.3.dist-info/licenses/LICENSE,sha256=PI2v_4HMvd6050uDD_4AY_8PzBnu2asa3RKbdDjowTA,1078
103
- abstractcore-2.5.3.dist-info/METADATA,sha256=0PFx8kXgAlmR4xKa7QRLBqcf1ZxGOZeXJhTfo9OvYu4,36966
104
- abstractcore-2.5.3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
105
- abstractcore-2.5.3.dist-info/entry_points.txt,sha256=jXNdzeltVs23A2JM2e2HOiAHldHrsnud3EvPI5VffOs,658
106
- abstractcore-2.5.3.dist-info/top_level.txt,sha256=DiNHBI35SIawW3N9Z-z0y6cQYNbXd32pvBkW0RLfScs,13
107
- abstractcore-2.5.3.dist-info/RECORD,,
103
+ abstractcore-2.6.0.dist-info/licenses/LICENSE,sha256=PI2v_4HMvd6050uDD_4AY_8PzBnu2asa3RKbdDjowTA,1078
104
+ abstractcore-2.6.0.dist-info/METADATA,sha256=YuVAqs9CI7NP8wjIsa0W2sXLWpNLOC5JYj_VEqJL2N8,41304
105
+ abstractcore-2.6.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
106
+ abstractcore-2.6.0.dist-info/entry_points.txt,sha256=jXNdzeltVs23A2JM2e2HOiAHldHrsnud3EvPI5VffOs,658
107
+ abstractcore-2.6.0.dist-info/top_level.txt,sha256=DiNHBI35SIawW3N9Z-z0y6cQYNbXd32pvBkW0RLfScs,13
108
+ abstractcore-2.6.0.dist-info/RECORD,,