abstractcore 2.6.9__py3-none-any.whl → 2.9.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 (46) hide show
  1. abstractcore/apps/summarizer.py +69 -27
  2. abstractcore/architectures/detection.py +190 -25
  3. abstractcore/assets/architecture_formats.json +129 -6
  4. abstractcore/assets/model_capabilities.json +803 -141
  5. abstractcore/config/main.py +2 -2
  6. abstractcore/config/manager.py +3 -1
  7. abstractcore/events/__init__.py +7 -1
  8. abstractcore/mcp/__init__.py +30 -0
  9. abstractcore/mcp/client.py +213 -0
  10. abstractcore/mcp/factory.py +64 -0
  11. abstractcore/mcp/naming.py +28 -0
  12. abstractcore/mcp/stdio_client.py +336 -0
  13. abstractcore/mcp/tool_source.py +164 -0
  14. abstractcore/processing/__init__.py +2 -2
  15. abstractcore/processing/basic_deepsearch.py +1 -1
  16. abstractcore/processing/basic_summarizer.py +379 -93
  17. abstractcore/providers/anthropic_provider.py +91 -10
  18. abstractcore/providers/base.py +540 -16
  19. abstractcore/providers/huggingface_provider.py +17 -8
  20. abstractcore/providers/lmstudio_provider.py +170 -25
  21. abstractcore/providers/mlx_provider.py +13 -10
  22. abstractcore/providers/ollama_provider.py +42 -26
  23. abstractcore/providers/openai_compatible_provider.py +87 -22
  24. abstractcore/providers/openai_provider.py +12 -9
  25. abstractcore/providers/streaming.py +201 -39
  26. abstractcore/providers/vllm_provider.py +78 -21
  27. abstractcore/server/app.py +116 -30
  28. abstractcore/structured/retry.py +20 -7
  29. abstractcore/tools/__init__.py +46 -24
  30. abstractcore/tools/abstractignore.py +166 -0
  31. abstractcore/tools/arg_canonicalizer.py +61 -0
  32. abstractcore/tools/common_tools.py +2443 -742
  33. abstractcore/tools/core.py +109 -13
  34. abstractcore/tools/handler.py +17 -3
  35. abstractcore/tools/parser.py +894 -159
  36. abstractcore/tools/registry.py +122 -18
  37. abstractcore/tools/syntax_rewriter.py +68 -6
  38. abstractcore/tools/tag_rewriter.py +186 -1
  39. abstractcore/utils/jsonish.py +111 -0
  40. abstractcore/utils/version.py +1 -1
  41. {abstractcore-2.6.9.dist-info → abstractcore-2.9.0.dist-info}/METADATA +55 -2
  42. {abstractcore-2.6.9.dist-info → abstractcore-2.9.0.dist-info}/RECORD +46 -37
  43. {abstractcore-2.6.9.dist-info → abstractcore-2.9.0.dist-info}/WHEEL +0 -0
  44. {abstractcore-2.6.9.dist-info → abstractcore-2.9.0.dist-info}/entry_points.txt +0 -0
  45. {abstractcore-2.6.9.dist-info → abstractcore-2.9.0.dist-info}/licenses/LICENSE +0 -0
  46. {abstractcore-2.6.9.dist-info → abstractcore-2.9.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.6.9
3
+ Version: 2.9.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>
@@ -57,8 +57,15 @@ Provides-Extra: processing
57
57
  Provides-Extra: tools
58
58
  Requires-Dist: beautifulsoup4<5.0.0,>=4.12.0; extra == "tools"
59
59
  Requires-Dist: lxml<6.0.0,>=4.9.0; extra == "tools"
60
- Requires-Dist: duckduckgo-search<4.0.0,>=3.8.0; extra == "tools"
60
+ Requires-Dist: ddgs<10.0.0,>=9.10.0; python_version >= "3.10" and extra == "tools"
61
+ Requires-Dist: duckduckgo-search<4.0.0,>=3.8.0; python_version < "3.10" and extra == "tools"
61
62
  Requires-Dist: psutil<6.0.0,>=5.9.0; extra == "tools"
63
+ Provides-Extra: tool
64
+ Requires-Dist: beautifulsoup4<5.0.0,>=4.12.0; extra == "tool"
65
+ Requires-Dist: lxml<6.0.0,>=4.9.0; extra == "tool"
66
+ Requires-Dist: ddgs<10.0.0,>=9.10.0; python_version >= "3.10" and extra == "tool"
67
+ Requires-Dist: duckduckgo-search<4.0.0,>=3.8.0; python_version < "3.10" and extra == "tool"
68
+ Requires-Dist: psutil<6.0.0,>=5.9.0; extra == "tool"
62
69
  Provides-Extra: media
63
70
  Requires-Dist: Pillow<12.0.0,>=10.0.0; extra == "media"
64
71
  Requires-Dist: pymupdf4llm<1.0.0,>=0.0.20; extra == "media"
@@ -195,6 +202,50 @@ response = llm.generate(
195
202
  print(response.content)
196
203
  ```
197
204
 
205
+ ### Tool Execution Modes
206
+
207
+ AbstractCore supports two tool execution modes:
208
+
209
+ **Mode 1: Passthrough (Default)** - Returns raw tool call tags for downstream processing
210
+
211
+ ```python
212
+ from abstractcore import create_llm
213
+ from abstractcore.tools import tool
214
+
215
+ @tool(name="get_weather", description="Get weather for a city")
216
+ def get_weather(city: str) -> str:
217
+ return f"Weather in {city}: Sunny, 22°C"
218
+
219
+ llm = create_llm("ollama", model="qwen3:4b") # execute_tools=False by default
220
+ response = llm.generate("What's the weather in Paris?", tools=[get_weather])
221
+ # response.content contains raw tool call tags: <|tool_call|>...
222
+ # Downstream runtime (AbstractRuntime, Codex, Claude Code) parses and executes
223
+ ```
224
+
225
+ **Use case**: Agent loops, AbstractRuntime, Codex, Claude Code, custom orchestration
226
+
227
+ **Mode 2: Direct Execution** - AbstractCore executes tools and returns results
228
+
229
+ ```python
230
+ from abstractcore import create_llm
231
+ from abstractcore.tools import tool
232
+ from abstractcore.tools.registry import register_tool
233
+
234
+ @tool(name="get_weather", description="Get weather for a city")
235
+ def get_weather(city: str) -> str:
236
+ return f"Weather in {city}: Sunny, 22°C"
237
+
238
+ register_tool(get_weather) # Required for direct execution
239
+
240
+ llm = create_llm("ollama", model="qwen3:4b", execute_tools=True)
241
+ response = llm.generate("What's the weather in Paris?", tools=[get_weather])
242
+ # response.content contains executed tool results
243
+ ```
244
+
245
+ **Use case**: Simple scripts, single-turn tool use
246
+
247
+ > **Note**: The `@tool` decorator creates metadata but does NOT register globally. Tools are passed explicitly to `generate()`. Use `register_tool()` only when using direct execution mode.
248
+
198
249
  ### Response Object (GenerateResponse)
199
250
 
200
251
  Every LLM generation returns a **GenerateResponse** object with consistent structure across all providers:
@@ -238,6 +289,8 @@ print(f"Summary: {response.get_summary()}") # "Model: gpt-4o-mini | Toke
238
289
 
239
290
  AbstractCore includes a comprehensive set of ready-to-use tools for common tasks:
240
291
 
292
+ > Note: `abstractcore.tools.common_tools` requires `abstractcore[tools]` (BeautifulSoup, lxml, web search backends, etc.).
293
+
241
294
  ```python
242
295
  from abstractcore.tools.common_tools import fetch_url, search_files, read_file
243
296
 
@@ -7,12 +7,12 @@ abstractcore/apps/deepsearch.py,sha256=UlmuBS9T4yNsz0V_iY08GNNDTstsI5OJNNV6c8CU6
7
7
  abstractcore/apps/extractor.py,sha256=OfiqB9l_alH9xCGb6zOD__QJkDjdKOlLZngriVgmn7c,23749
8
8
  abstractcore/apps/intent.py,sha256=5ie_H9_K_ZxlA0oCu7ROUrsgwfzDNFgVUyBNec6YVRE,22813
9
9
  abstractcore/apps/judge.py,sha256=ZoBRGYjM24TrDALwV7MMDO4Cg2pGPtwRMXX5WyFhdVs,23840
10
- abstractcore/apps/summarizer.py,sha256=9aD6KH21w-tv_wGp9MaO2uyJuaU71OemW7KpqrG5t6w,14669
10
+ abstractcore/apps/summarizer.py,sha256=BW9MeFMfF7F-jK0pGeEO6GuEdh93GfRft7c_ZJLgFFo,16841
11
11
  abstractcore/architectures/__init__.py,sha256=-4JucAM7JkMWShWKkePoclxrUHRKgaG36UTguJihE0U,1046
12
- abstractcore/architectures/detection.py,sha256=jmpD04xcKotWCW7--jadBzCtD2a5dYJi1zljpxB9JmU,19813
12
+ abstractcore/architectures/detection.py,sha256=fEhuYE9pECSO7ZWCZZodDP4YepCZHoVYKcdgpVkcDbI,26395
13
13
  abstractcore/architectures/enums.py,sha256=9vIv2vDBEKhxwzwH9iaSAyf-iVj3p8y9loMeN_mYTJ8,3821
14
- abstractcore/assets/architecture_formats.json,sha256=Yf-W1UuadrL8qid0pfU_pEBOkjwH4lvx7Nzu83GACp8,16622
15
- abstractcore/assets/model_capabilities.json,sha256=tmfQNNPTNJAauF51nPYkMqcjc17F2geeYngh0HjEUZ0,68836
14
+ abstractcore/assets/architecture_formats.json,sha256=jkqJW3fqzebnNr6qz7jRWFD9sHn_pGl6aAChJAZqAWA,21792
15
+ abstractcore/assets/model_capabilities.json,sha256=3XCERdoOExuSO8HNjslMyjySFyyy6mDmWYLKNXd_HAY,97359
16
16
  abstractcore/assets/session_schema.json,sha256=hMCVrq3KSyVExrMGzuykf7bU-z6WyIVuEGU8du9_zUY,10570
17
17
  abstractcore/compression/__init__.py,sha256=svwaHCHoLkKp1IJKdlSC72k6b8vOUOqVF-Yek8ZHwj8,915
18
18
  abstractcore/compression/analytics.py,sha256=3orxJkjjMQE_6mID8_8C0sRQ4Gr2Pw7kQ-Iy0p7pIgM,16042
@@ -27,8 +27,8 @@ abstractcore/compression/quality.py,sha256=bq7YI_5ywHfPnWSu1MmBRnV5Nxz8KBJGFvnfQ
27
27
  abstractcore/compression/text_formatter.py,sha256=5RE6JrLkHvYoDQlsYJSoqfbwAa3caMr2i_DXog6ovZs,27328
28
28
  abstractcore/compression/vision_compressor.py,sha256=5Ox3w_ee7fgPRDOpSQcooEGtuBKpQoAmWjwpLE2hoNU,12773
29
29
  abstractcore/config/__init__.py,sha256=JQ4feacJV_brzf6qNnNPo5VbmXhdjIxH088jYLTp1ik,919
30
- abstractcore/config/main.py,sha256=oQxnNxo_78CusCuDKGgwal2T3S8MDpo3yzLSB1wpYkU,35573
31
- abstractcore/config/manager.py,sha256=O_zuskt4qe9bzaJ2dVoodYWJ3zbakaDu5ocbuGZuCoo,18388
30
+ abstractcore/config/main.py,sha256=79nQmJKoDkKD6H4b_g9OTKtrKZ5MLDs0x3N7ZCPRoKg,35572
31
+ abstractcore/config/manager.py,sha256=pZk1gKlIZGsjkhP6wfvFIxvsvYpKb8_LYF8QcBDBc8o,18504
32
32
  abstractcore/config/vision_config.py,sha256=jJzO4zBexh8SqSKp6YKOXdMDSv4AL4Ztl5Xi-5c4KyY,17869
33
33
  abstractcore/core/__init__.py,sha256=2h-86U4QkCQ4gzZ4iRusSTMlkODiUS6tKjZHiEXz6rM,684
34
34
  abstractcore/core/enums.py,sha256=BhkVnHC-X1_377JDmqd-2mnem9GdBLqixWlYzlP_FJU,695
@@ -40,8 +40,14 @@ abstractcore/core/types.py,sha256=jj44i07kMjdg9FQ3mA_fK6r_M0Lcgt1RQpy1Ra5w-eI,45
40
40
  abstractcore/embeddings/__init__.py,sha256=hR3xZyqcRm4c2pq1dIa5lxj_-Bk70Zad802JQN4joWo,637
41
41
  abstractcore/embeddings/manager.py,sha256=bisyQJquM1HLQor8ZAfO9V_XWWHw0b4PjyAz9g7sS-4,52273
42
42
  abstractcore/embeddings/models.py,sha256=bsPAzL6gv57AVii8O15PT0kxfwRkOml3f3njJN4UDi4,4874
43
- abstractcore/events/__init__.py,sha256=eV3-HRRjTS923YXq5is4JUjPEfaMjT4eGW-I7NuawW4,15598
43
+ abstractcore/events/__init__.py,sha256=9JLYgarpsMxJwTFPvuKF6YdqkNYI5cjNpHItw9dc3Uo,15886
44
44
  abstractcore/exceptions/__init__.py,sha256=mR2i8GvsWrD_dJDAHs8Kw2rTSEMfBxwT1e_RfdQlE_A,4750
45
+ abstractcore/mcp/__init__.py,sha256=8OVtnoa-5m2qzOenXZyKfJBOq3XrzlpVjEZn_-7xReY,1020
46
+ abstractcore/mcp/client.py,sha256=AzqMIa8z_cmKvy7aK5C3o5dOLVcYGf8XhW4EbHDVh38,7578
47
+ abstractcore/mcp/factory.py,sha256=QGVmXex8IKXFSk6gln8jYax865NTMWMGWzENt4KLoAQ,2349
48
+ abstractcore/mcp/naming.py,sha256=0Ikl2NwRPkaTzkjujBk_rj9FfiauYAInUUuzGghpRRI,767
49
+ abstractcore/mcp/stdio_client.py,sha256=ATBGBmd1XncLZrZ9rfmjdMnkcRDY2QjOMmOpTqsn8XQ,12282
50
+ abstractcore/mcp/tool_source.py,sha256=gdcI7rKAFcShmIIf3Fn4uezRpIGaS07BwKe76RMmKv8,5132
45
51
  abstractcore/media/__init__.py,sha256=94k22PRXInaXFlxU7p06IRbyjmOkSlCITDm0gb8d9AI,3202
46
52
  abstractcore/media/auto_handler.py,sha256=eo5a-hn_geLPsBe1oLKvd2YTxS8NRMms1uosmUyu3-s,26500
47
53
  abstractcore/media/base.py,sha256=vWdxscqTGTvd3oc4IzzsBTWhUrznWcqM7M_sFyq6-eE,15971
@@ -61,50 +67,53 @@ abstractcore/media/processors/pdf_processor.py,sha256=qniYt7cTYYPVRi_cS1IsXztOld
61
67
  abstractcore/media/processors/text_processor.py,sha256=D84QWxxIou4MeNhERmCTxi_p27CgicVFhMXJiujZgIE,21905
62
68
  abstractcore/media/utils/__init__.py,sha256=30-CTif91iRKOXJ4njGiduWAt-xp31U7NafMBNvgdO0,460
63
69
  abstractcore/media/utils/image_scaler.py,sha256=uUVF91_mLTt-PR0LZiDawTolE2qIrTG1rzV9oYVbxhg,11171
64
- abstractcore/processing/__init__.py,sha256=QcACEnhnHKYCkFL1LNOW_uqBrwkTAmz5A61N4K2dyu0,988
65
- abstractcore/processing/basic_deepsearch.py,sha256=dzJQtH4k44XY9tvG0Z4JIlYt_s7HpbLdSPScha-t7vk,101036
70
+ abstractcore/processing/__init__.py,sha256=T9DPd6iLo06opJ2DrUIjmqGhYcvvYNTfuOp0DNEoU5Q,1024
71
+ abstractcore/processing/basic_deepsearch.py,sha256=f5uQH8VOiqcJfJJ6jk8ro-SEGL_jokWBHAfHOnIEgnY,101084
66
72
  abstractcore/processing/basic_extractor.py,sha256=3x-3BdIHgLvqLnLF6K1-P4qVaLIpAnNIIutaJi7lDQM,49832
67
73
  abstractcore/processing/basic_intent.py,sha256=wD99Z7fE2RiYk6oyTZXojUbv-bz8HhKFIuIHYLLTw54,32455
68
74
  abstractcore/processing/basic_judge.py,sha256=L1fc9H0-_88B1TULL-mlaNL7OydMgp-ru_zzzoGdr38,37220
69
- abstractcore/processing/basic_summarizer.py,sha256=XHNxMQ_8aLStTeUo6_2JaThlct12Htpz7ORmm0iuJsg,25495
75
+ abstractcore/processing/basic_summarizer.py,sha256=v7SX7QxgW9aJNryjthMTh9YuX3eEi7rNfD2-9ubAfm0,38359
70
76
  abstractcore/providers/__init__.py,sha256=dNz-KrUwpBZhEv6DkAe3t_V8w40_HjeME5j9VL0lDyo,1886
71
- abstractcore/providers/anthropic_provider.py,sha256=0-qZb0Es6-VLuVVl2j7IUjOuyRlgjQdJFulWfpi4qb4,31740
72
- abstractcore/providers/base.py,sha256=spDiRQw-lWHDaqW_4bejxBVDyKO4f4S9JvE97A_gIq8,69199
73
- abstractcore/providers/huggingface_provider.py,sha256=v4UUmODrnWKtTygzPh-lm4jSCAPms5VYJE5v7PWB4Lo,79458
74
- abstractcore/providers/lmstudio_provider.py,sha256=92_vx7AVVt_oufJdHo3R0D_V2qyTKO2DKzi9-l4KzWs,34114
75
- abstractcore/providers/mlx_provider.py,sha256=afLCEwuw7r8OK4fD3OriyKMcWpxVIob_37ItmgAclfc,23123
77
+ abstractcore/providers/anthropic_provider.py,sha256=fNK1hNICb_gAZZ8ku4KHCNrfj_AmKDvhAaOzpHosgBo,36457
78
+ abstractcore/providers/base.py,sha256=LeX4xCBkOuiFAn1uQ1Bdj5scsLBFLJfXB6DFX71jLE0,92569
79
+ abstractcore/providers/huggingface_provider.py,sha256=KOWJqzYlAQZpO94yWf75_yRdg4sI9WXoBS_Yr0aUek0,79974
80
+ abstractcore/providers/lmstudio_provider.py,sha256=_YbHqxw29fO6xGufwc2UYJN64tNQQ9-4XmWWZiPbIB0,41374
81
+ abstractcore/providers/mlx_provider.py,sha256=oVbkkC0i1WjVTRKUmyys__OBgZ4d_X_6IgPKfTBpLOg,23300
76
82
  abstractcore/providers/model_capabilities.py,sha256=C4HIgvNTp9iIPiDeWyXo7vdzRkMdecRPoQi80yHSOL0,11955
77
- abstractcore/providers/ollama_provider.py,sha256=Kg5au_tia0xFTXqUlqDNrSvwVpt2lXvfnVFou9K2FGQ,34144
78
- abstractcore/providers/openai_compatible_provider.py,sha256=PpBFOoPBMq2q2GNU0CpO_YAH1vl6MrBbapC05i1pNMA,35822
79
- abstractcore/providers/openai_provider.py,sha256=Y-79mAtgDiDw6SqF2LhnWtlfuC_e6TxeF_tqJWAAyWo,36364
83
+ abstractcore/providers/ollama_provider.py,sha256=N8QnjS-DYLn8hygQGXP1grXCDxhtG_gFYdfvdypYKDo,35038
84
+ abstractcore/providers/openai_compatible_provider.py,sha256=-7grF03VyNX5IcWR1bK-QMUx-pgqmMTouOruK6Kfjsg,39241
85
+ abstractcore/providers/openai_provider.py,sha256=L-XfoyDucg2Ajeee4hSlgvWuNwIyBiE_uweO1lGEkLo,36414
80
86
  abstractcore/providers/registry.py,sha256=gz2fu3m7EVYHWy9Lggbmjh46abrdnxC3_73ccI_MYMg,21598
81
- abstractcore/providers/streaming.py,sha256=HaGkoItPWXqgml3C-KiPc0hBNpztLzjl_ooECw11BHI,31370
82
- abstractcore/providers/vllm_provider.py,sha256=zl1utRG-G__Qh5UpgIEU-Dbb6w5LeZfiboBUC5aPeL0,33969
87
+ abstractcore/providers/streaming.py,sha256=0qhT4ej8oZqDlWPDupmvZ0xK2YBWnr3hjhG82AnqgeQ,38652
88
+ abstractcore/providers/vllm_provider.py,sha256=Shs2ZG9sNAvs5hPcLUM_lVYo48dM43Ujuy--NlvEKsw,37096
83
89
  abstractcore/server/__init__.py,sha256=1DSAz_YhQtnKv7sNi5TMQV8GFujctDOabgvAdilQE0o,249
84
- abstractcore/server/app.py,sha256=AYupb0rlmf4-L9xDb7qHVLdUi8lGC-jYgg1Pe_AvZ3o,97507
90
+ abstractcore/server/app.py,sha256=DHXoUZEMPoZ6nmZtke0C_pMsbkrclXGKKxuZd5f1S4M,101551
85
91
  abstractcore/structured/__init__.py,sha256=VXRQHGcm-iaYnLOBPin2kyhvhhQA0kaGt_pcNDGsE_8,339
86
92
  abstractcore/structured/handler.py,sha256=hcUe_fZcwx0O3msLqFiOsj6-jbq3S-ZQa9c1nRIZvuo,24622
87
- abstractcore/structured/retry.py,sha256=BN_PvrWybyU1clMy2cult1-TVxFSMaVqiCPmmXvA5aI,3805
88
- abstractcore/tools/__init__.py,sha256=oh6vG0RdM1lqUtOp95mLrTsWLh9VmhJf5_FVjGIP5_M,2259
89
- abstractcore/tools/common_tools.py,sha256=hn4Y-HmpYAH3nLnKqJayWr-mpou3T5Ixu-LRdeO1_c4,95161
90
- abstractcore/tools/core.py,sha256=lUUGihyceiRYlKUFvEMig9jWFF563d574mSDbYYD3fM,4777
91
- abstractcore/tools/handler.py,sha256=nBbbBNq029s8pV6NbTU-VmQ6xoSTdt7Af1-XbcMdgU4,12050
92
- abstractcore/tools/parser.py,sha256=AYM0-baSGGGdwd_w2My3B3sOiw2flE2x59mLmdpwJ0A,27768
93
- abstractcore/tools/registry.py,sha256=eI0qKrauT1PzLIfaporXCjBMojmWYzgfd96xdN_Db1g,9087
94
- abstractcore/tools/syntax_rewriter.py,sha256=_lBvIJ_gFleR5JZI0UuukQ47pe5CXp3IM9Oee0ypx60,17346
95
- abstractcore/tools/tag_rewriter.py,sha256=2hjLoIjVs4277mPBSrNsnxLOVvmXm83xtF0WCOU3uno,20350
93
+ abstractcore/structured/retry.py,sha256=hty8ZyHyoQM_ck5LmL991eVzu0Nuu0qtCU3ht03dNAM,4374
94
+ abstractcore/tools/__init__.py,sha256=g67WCxv-DNTlPSCwom89MHkU4CCSU-CMeFCBJDE16Ws,3166
95
+ abstractcore/tools/abstractignore.py,sha256=r-PbgDBeCZvsQ-7xwpWfuyRYz_OzKGHJMQjeAfOBhaE,5327
96
+ abstractcore/tools/arg_canonicalizer.py,sha256=7j9tMH_GazdmyqXvLdrUR0IYn9GP0zGfxfCHxUBm30Y,1837
97
+ abstractcore/tools/common_tools.py,sha256=iVl48PnlTzbonSZ_3Q0DbxJiN9PoeTVUu6Xfkusal4g,169114
98
+ abstractcore/tools/core.py,sha256=a1o6p4EEEM7CFlkf0vKb-qz7Mx4oiznqyhM14jyMV9o,9515
99
+ abstractcore/tools/handler.py,sha256=L55S9qeYK-O8TlpQOeUtC0MoPOx2BWcfvK_FzP26T48,12647
100
+ abstractcore/tools/parser.py,sha256=5NIyDCyERnM-_6dmayoplzXUggCKRPYYZYy_-x8QJeo,55620
101
+ abstractcore/tools/registry.py,sha256=GaqA2gyuUyDVXYwYMBrznChbomXZ2ItIBL27776Qyns,13581
102
+ abstractcore/tools/syntax_rewriter.py,sha256=wQ8H6h-6Vwk2lqQc3JXfGT4VsWAtsaYYk1W3DQI3M0w,20409
103
+ abstractcore/tools/tag_rewriter.py,sha256=VHSNb0s2k5ILWtHMbT6moDdHdcq1WfgPgSYQSrMybNs,27323
96
104
  abstractcore/utils/__init__.py,sha256=8uvIU1WpUfetvWA90PPvXtxnFNjMQF0umb8_FuK2cTA,779
97
105
  abstractcore/utils/cli.py,sha256=tO7S-iVSZavxJaX7OTruNAmF3lJz9eCDORK8Dm7FdgA,70558
106
+ abstractcore/utils/jsonish.py,sha256=Tzg06yURj-SEyRscpexh6dClnBx6ece3mjs15eao0ts,2965
98
107
  abstractcore/utils/message_preprocessor.py,sha256=GdHkm6tmrgjm3PwHRSCjIsq1XLkbhy_vDEKEUE7OiKY,6028
99
108
  abstractcore/utils/self_fixes.py,sha256=1VYxPq-q7_DtNl39NbrzUmyHpkhb9Q2SdnXUj4c0DBc,5907
100
109
  abstractcore/utils/structured_logging.py,sha256=Vm-HviSa42G9DJCWmaEv4a0QG3NMsADD3ictLOs4En0,19952
101
110
  abstractcore/utils/token_utils.py,sha256=eLwFmJ68p9WMFD_MHLMmeJRW6Oqx_4hKELB8FNQ2Mnk,21097
102
111
  abstractcore/utils/trace_export.py,sha256=MD1DHDWltpewy62cYzz_OSPAA6edZbZq7_pZbvxz_H8,9279
103
- abstractcore/utils/version.py,sha256=LXxKtHI5sV3Fa03LU800IJIuxwTAT0LPpqyGF-nUNao,605
112
+ abstractcore/utils/version.py,sha256=SbRnw0dE89I3kCHiszC0mXHkGTjcQKB8CYqGydPDo3o,605
104
113
  abstractcore/utils/vlm_token_calculator.py,sha256=KMhV97gYpiWHYNnPR5yFLw6eA1CPKQ1c-ihPdns72Wg,27979
105
- abstractcore-2.6.9.dist-info/licenses/LICENSE,sha256=PI2v_4HMvd6050uDD_4AY_8PzBnu2asa3RKbdDjowTA,1078
106
- abstractcore-2.6.9.dist-info/METADATA,sha256=3Ki5l3Fxn3OLZyYSj2RxxFrODunMH-G283lQC2C6iIs,45837
107
- abstractcore-2.6.9.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
108
- abstractcore-2.6.9.dist-info/entry_points.txt,sha256=jXNdzeltVs23A2JM2e2HOiAHldHrsnud3EvPI5VffOs,658
109
- abstractcore-2.6.9.dist-info/top_level.txt,sha256=DiNHBI35SIawW3N9Z-z0y6cQYNbXd32pvBkW0RLfScs,13
110
- abstractcore-2.6.9.dist-info/RECORD,,
114
+ abstractcore-2.9.0.dist-info/licenses/LICENSE,sha256=PI2v_4HMvd6050uDD_4AY_8PzBnu2asa3RKbdDjowTA,1078
115
+ abstractcore-2.9.0.dist-info/METADATA,sha256=qhknoQUMY2tJsVx_TceZhGZ3tPNhnObKdOiutCzxUnA,48081
116
+ abstractcore-2.9.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
117
+ abstractcore-2.9.0.dist-info/entry_points.txt,sha256=jXNdzeltVs23A2JM2e2HOiAHldHrsnud3EvPI5VffOs,658
118
+ abstractcore-2.9.0.dist-info/top_level.txt,sha256=DiNHBI35SIawW3N9Z-z0y6cQYNbXd32pvBkW0RLfScs,13
119
+ abstractcore-2.9.0.dist-info/RECORD,,