chuk-tool-processor 0.6.27__py3-none-any.whl → 0.6.28__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.

Potentially problematic release.


This version of chuk-tool-processor might be problematic. Click here for more details.

@@ -260,7 +260,7 @@ class ToolProcessor:
260
260
  unknown_tools.append(call.tool)
261
261
 
262
262
  if unknown_tools:
263
- self.logger.warning(f"Unknown tools: {unknown_tools}")
263
+ self.logger.debug(f"Unknown tools: {unknown_tools}")
264
264
 
265
265
  # Execute tools
266
266
  results = await self.executor.execute(calls, timeout=timeout)
@@ -412,7 +412,7 @@ class ToolProcessor:
412
412
  duration=duration,
413
413
  num_calls=0,
414
414
  )
415
- self.logger.error(f"Parser {parser_name} failed: {str(e)}")
415
+ self.logger.debug(f"Parser {parser_name} failed: {str(e)}")
416
416
  return []
417
417
 
418
418
 
@@ -182,7 +182,7 @@ class StreamManager:
182
182
  params, connection_timeout=initialization_timeout, default_timeout=default_timeout
183
183
  )
184
184
  elif transport_type == "sse":
185
- logger.warning(
185
+ logger.debug(
186
186
  "Using SSE transport in initialize() - consider using initialize_with_sse() instead"
187
187
  )
188
188
  params = await load_config(config_file, server_name)
@@ -195,7 +195,7 @@ class StreamManager:
195
195
  sse_url = "http://localhost:8000"
196
196
  api_key = None
197
197
  headers = {}
198
- logger.warning("No URL configured for SSE transport, using default: %s", sse_url)
198
+ logger.debug("No URL configured for SSE transport, using default: %s", sse_url)
199
199
 
200
200
  # Build SSE transport with optional headers
201
201
  transport_params = {"url": sse_url, "api_key": api_key, "default_timeout": default_timeout}
@@ -205,7 +205,7 @@ class StreamManager:
205
205
  transport = SSETransport(**transport_params)
206
206
 
207
207
  elif transport_type == "http_streamable":
208
- logger.warning(
208
+ logger.debug(
209
209
  "Using HTTP Streamable transport in initialize() - consider using initialize_with_http_streamable() instead"
210
210
  )
211
211
  params = await load_config(config_file, server_name)
@@ -220,9 +220,7 @@ class StreamManager:
220
220
  api_key = None
221
221
  headers = {}
222
222
  session_id = None
223
- logger.warning(
224
- "No URL configured for HTTP Streamable transport, using default: %s", http_url
225
- )
223
+ logger.debug("No URL configured for HTTP Streamable transport, using default: %s", http_url)
226
224
 
227
225
  # Build HTTP transport (headers not supported yet)
228
226
  transport_params = {
@@ -244,7 +242,7 @@ class StreamManager:
244
242
  # Initialize with timeout protection
245
243
  try:
246
244
  if not await asyncio.wait_for(transport.initialize(), timeout=initialization_timeout):
247
- logger.error("Failed to init %s", server_name)
245
+ logger.warning("Failed to init %s", server_name)
248
246
  continue
249
247
  except TimeoutError:
250
248
  logger.error("Timeout initialising %s (timeout=%ss)", server_name, initialization_timeout)
@@ -327,7 +325,7 @@ class StreamManager:
327
325
 
328
326
  try:
329
327
  if not await asyncio.wait_for(transport.initialize(), timeout=initialization_timeout):
330
- logger.error("Failed to init SSE %s", name)
328
+ logger.warning("Failed to init SSE %s", name)
331
329
  continue
332
330
  except TimeoutError:
333
331
  logger.error("Timeout initialising SSE %s (timeout=%ss)", name, initialization_timeout)
@@ -406,7 +404,7 @@ class StreamManager:
406
404
  logger.debug(f"Calling transport.initialize() for {name} with timeout={initialization_timeout}s")
407
405
  try:
408
406
  if not await asyncio.wait_for(transport.initialize(), timeout=initialization_timeout):
409
- logger.error("Failed to init HTTP Streamable %s", name)
407
+ logger.warning("Failed to init HTTP Streamable %s", name)
410
408
  continue
411
409
  except TimeoutError:
412
410
  logger.error(
@@ -229,7 +229,7 @@ class HTTPStreamableTransport(MCPBaseTransport):
229
229
  )
230
230
  return True
231
231
  else:
232
- logger.warning("HTTP connection established but ping failed")
232
+ logger.debug("HTTP connection established but ping failed")
233
233
  # Still consider it initialized since connection was established
234
234
  self._initialized = True
235
235
  self._consecutive_failures = 1 # Mark one failure
@@ -305,7 +305,7 @@ class HTTPStreamableTransport(MCPBaseTransport):
305
305
  async def send_ping(self) -> bool:
306
306
  """Enhanced ping with health monitoring (like SSE)."""
307
307
  if not self._initialized or not self._read_stream:
308
- logger.error("Cannot send ping: transport not initialized")
308
+ logger.debug("Cannot send ping: transport not initialized")
309
309
  return False
310
310
 
311
311
  start_time = time.time()
@@ -355,7 +355,7 @@ class HTTPStreamableTransport(MCPBaseTransport):
355
355
  async def get_tools(self) -> list[dict[str, Any]]:
356
356
  """Enhanced tools retrieval with error handling."""
357
357
  if not self._initialized:
358
- logger.error("Cannot get tools: transport not initialized")
358
+ logger.debug("Cannot get tools: transport not initialized")
359
359
  return []
360
360
 
361
361
  start_time = time.time()
@@ -186,12 +186,12 @@ class SSETransport(MCPBaseTransport):
186
186
  if self.sse_task.done():
187
187
  exception = self.sse_task.exception()
188
188
  if exception:
189
- logger.error(f"SSE task died during session discovery: {exception}")
189
+ logger.debug(f"SSE task died during session discovery: {exception}")
190
190
  await self._cleanup()
191
191
  return False
192
192
 
193
193
  if not self.message_url:
194
- logger.error("Failed to discover session endpoint within %.1fs", session_timeout)
194
+ logger.warning("Failed to discover session endpoint within %.1fs", session_timeout)
195
195
  await self._cleanup()
196
196
  return False
197
197
 
@@ -213,7 +213,7 @@ class SSETransport(MCPBaseTransport):
213
213
  )
214
214
 
215
215
  if "error" in init_response:
216
- logger.error("MCP initialize failed: %s", init_response["error"])
216
+ logger.warning("MCP initialize failed: %s", init_response["error"])
217
217
  await self._cleanup()
218
218
  return False
219
219
 
@@ -478,7 +478,7 @@ class SSETransport(MCPBaseTransport):
478
478
  async def get_tools(self) -> list[dict[str, Any]]:
479
479
  """Get list of available tools from the server."""
480
480
  if not self._initialized:
481
- logger.error("Cannot get tools: transport not initialized")
481
+ logger.debug("Cannot get tools: transport not initialized")
482
482
  return []
483
483
 
484
484
  start_time = time.time()
@@ -486,7 +486,7 @@ class SSETransport(MCPBaseTransport):
486
486
  response = await self._send_request("tools/list", {})
487
487
 
488
488
  if "error" in response:
489
- logger.error("Error getting tools: %s", response["error"])
489
+ logger.warning("Error getting tools: %s", response["error"])
490
490
  return []
491
491
 
492
492
  tools = response.get("result", {}).get("tools", [])
@@ -221,7 +221,7 @@ class StdioTransport(MCPBaseTransport):
221
221
  )
222
222
  return True
223
223
  else:
224
- logger.warning("STDIO connection established but ping failed")
224
+ logger.debug("STDIO connection established but ping failed")
225
225
  # Still consider it initialized
226
226
  self._initialized = True
227
227
  self._consecutive_failures = 1
@@ -229,7 +229,7 @@ class StdioTransport(MCPBaseTransport):
229
229
  self._metrics["initialization_time"] = time.time() - start_time
230
230
  return True
231
231
  else:
232
- logger.error("STDIO initialization failed")
232
+ logger.warning("STDIO initialization failed")
233
233
  await self._cleanup()
234
234
  return False
235
235
 
@@ -382,7 +382,7 @@ class StdioTransport(MCPBaseTransport):
382
382
  async def get_tools(self) -> list[dict[str, Any]]:
383
383
  """Enhanced tools retrieval with recovery."""
384
384
  if not self._initialized:
385
- logger.error("Cannot get tools: transport not initialized")
385
+ logger.debug("Cannot get tools: transport not initialized")
386
386
  return []
387
387
 
388
388
  start_time = time.time()
@@ -121,7 +121,7 @@ class PluginDiscovery:
121
121
  # ------------------- Parser plugins -------------------------
122
122
  if issubclass(cls, ParserPlugin) and cls is not ParserPlugin:
123
123
  if not inspect.iscoroutinefunction(getattr(cls, "try_parse", None)):
124
- logger.warning("Skipping parser plugin %s: try_parse is not async", cls.__qualname__)
124
+ logger.debug("Skipping parser plugin %s: try_parse is not async", cls.__qualname__)
125
125
  else:
126
126
  try:
127
127
  self._registry.register_plugin("parser", cls.__name__, cls())
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: chuk-tool-processor
3
- Version: 0.6.27
3
+ Version: 0.6.28
4
4
  Summary: Async-native framework for registering, discovering, and executing tools referenced in LLM responses
5
5
  Author-email: CHUK Team <chrishayuk@somejunkmailbox.com>
6
6
  Maintainer-email: CHUK Team <chrishayuk@somejunkmailbox.com>
@@ -1,7 +1,7 @@
1
1
  chuk_tool_processor/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
2
  chuk_tool_processor/core/__init__.py,sha256=O4uwbEQN6G6sGrKKQNHRW-99ROlPEVct7wOSzVoazXQ,39
3
3
  chuk_tool_processor/core/exceptions.py,sha256=s35RVMIt8PQGP10ZS7L7sS0Pddpj0kc3Ut3wISDYn_U,1559
4
- chuk_tool_processor/core/processor.py,sha256=1pv76USunPXGIfeDs-wj2amdKvBBrBgkjgI2_JOK6vU,17825
4
+ chuk_tool_processor/core/processor.py,sha256=jIMdVjG5bqlUp2nAS6qr9dss2TOSpxodagOpb_0HT_g,17823
5
5
  chuk_tool_processor/execution/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
6
  chuk_tool_processor/execution/tool_executor.py,sha256=zVQbNS9qUNn-1J1BPaFMGptKVFt0tXxh2bKiK-o1P2E,13705
7
7
  chuk_tool_processor/execution/strategies/__init__.py,sha256=fkHvK2Ca6c4npcpmS5aYHrdqYrgFm7DYdor-t-yCwuc,286
@@ -22,12 +22,12 @@ chuk_tool_processor/mcp/register_mcp_tools.py,sha256=OyHczwVnqhvBZO9g4I0T56EPMvF
22
22
  chuk_tool_processor/mcp/setup_mcp_http_streamable.py,sha256=8NCjeEZjV0KrapCqAvGh6jr5G8B24xOxxAaKUyoiykw,4935
23
23
  chuk_tool_processor/mcp/setup_mcp_sse.py,sha256=gvixVml8HN2BdM9Ug_JYp0yHqA1owieyX8Yxx0HNOqg,4174
24
24
  chuk_tool_processor/mcp/setup_mcp_stdio.py,sha256=KxCC0BL0C6z5ZHxBzPhWZC9CKrGUACXqx1tkjru-UYI,2922
25
- chuk_tool_processor/mcp/stream_manager.py,sha256=GKUXqJpRn_O8008qJompwZfdFlb6nRlZZGh8jqr23y0,34184
25
+ chuk_tool_processor/mcp/stream_manager.py,sha256=BA1vhk6azGg-Yt4N2iyqIT3ryvwqoq2ncRNuLMmStkk,34120
26
26
  chuk_tool_processor/mcp/transport/__init__.py,sha256=Gpw9QZctxfO-tWZ8URpyFU8rePc5Xe7VZiAvXaiF8cw,657
27
27
  chuk_tool_processor/mcp/transport/base_transport.py,sha256=rG61TlaignbVZbsqdBS38TnFzTVO666ehKEI0IUAJCM,8675
28
- chuk_tool_processor/mcp/transport/http_streamable_transport.py,sha256=PKU-s2cofagY_x5nwocfi3Q0uJjoAHh8ALP0nePWVRc,26547
29
- chuk_tool_processor/mcp/transport/sse_transport.py,sha256=WfsfsHzN579vPLl13cjHwi5sn_uKrf4ZnVxasEYHy6I,30629
30
- chuk_tool_processor/mcp/transport/stdio_transport.py,sha256=bDh3eqe9BnPvcmG7F4BWqGjGO3e8q0lwcZeswx_jK0U,29558
28
+ chuk_tool_processor/mcp/transport/http_streamable_transport.py,sha256=aE-ITNoT-iipJ5tF97eGzv3hxABnbfFpjPokbCsy1rg,26545
29
+ chuk_tool_processor/mcp/transport/sse_transport.py,sha256=BCd2e8QlIQN0qaPBAC9w0Q9ybOXnRdg8GUkKZ6Oo4k0,30635
30
+ chuk_tool_processor/mcp/transport/stdio_transport.py,sha256=kS90NpQA-KdxRdH-hYN63P22vc0fF4MvQ4N2spo8U6k,29558
31
31
  chuk_tool_processor/models/__init__.py,sha256=A3ysSvRxaxso_AN57QZt5ZYahJH5zlL-IENqNaius84,41
32
32
  chuk_tool_processor/models/execution_strategy.py,sha256=O0h8d8JSgm-tv26Cc5jAkZqup8vIgx0zfb5n0b2vpSk,1967
33
33
  chuk_tool_processor/models/streaming_tool.py,sha256=3IXe9VV6sgPHzMeHpuNzZThFhu5BuB3MQdoYSogz348,3359
@@ -36,7 +36,7 @@ chuk_tool_processor/models/tool_export_mixin.py,sha256=aP65iHmpDquB16L2PwXvZ2glt
36
36
  chuk_tool_processor/models/tool_result.py,sha256=aq-RVRaYSIl7fwCb8nr9yjazyT0qfL408PrqY05bSVM,4615
37
37
  chuk_tool_processor/models/validated_tool.py,sha256=5O8eiEsRPuPb7SHEtCoRwGKUBUPlMx4qXe9GtsQZSGo,5681
38
38
  chuk_tool_processor/plugins/__init__.py,sha256=LsW8KTaW2LogUvpoA6538NJyMLFmN9TISdLNog2NlH8,49
39
- chuk_tool_processor/plugins/discovery.py,sha256=bDaXMIMstPZOIzhdBtQpg1HlahbX5Hf1T5LEH86fjtE,7067
39
+ chuk_tool_processor/plugins/discovery.py,sha256=Trq1P-AxWEKAtOUCB9UMwbp96mtGAuM4cBytjE-ahBU,7065
40
40
  chuk_tool_processor/plugins/parsers/__init__.py,sha256=D0NUmlObNeOevHGv_eaurFiUmoptmd1mEda2sXLcTMs,50
41
41
  chuk_tool_processor/plugins/parsers/base.py,sha256=nbBb8Nfn8Q0pXxCkhj7GSyuqnO2aoEBag-7NoobI8GA,726
42
42
  chuk_tool_processor/plugins/parsers/function_call_tool.py,sha256=1fFuP4sqT5LvQHuosqmg8LSFPreIaOnlLroRsJzwPfA,3338
@@ -54,7 +54,7 @@ chuk_tool_processor/registry/providers/__init__.py,sha256=iGc_2JzlYJSBRQ6tFbX781
54
54
  chuk_tool_processor/registry/providers/memory.py,sha256=udfboAHH0gRxtnf3GsI3wMshhobJxYnCkMwKjQ_uqkw,5017
55
55
  chuk_tool_processor/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
56
56
  chuk_tool_processor/utils/validation.py,sha256=jHPO65sB61ynm9P6V3th4pN7j4u0SQhYR-bstj5QjnI,4175
57
- chuk_tool_processor-0.6.27.dist-info/METADATA,sha256=_EJFoLfhbyqOeXNhpHu9N2z4HMLlTfkDMCb9nO97OVo,39362
58
- chuk_tool_processor-0.6.27.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
59
- chuk_tool_processor-0.6.27.dist-info/top_level.txt,sha256=7lTsnuRx4cOW4U2sNJWNxl4ZTt_J1ndkjTbj3pHPY5M,20
60
- chuk_tool_processor-0.6.27.dist-info/RECORD,,
57
+ chuk_tool_processor-0.6.28.dist-info/METADATA,sha256=6GwYbhRhrVlOCYCd0fX9fMkHuBniPUEIDhp4byjdrdg,39362
58
+ chuk_tool_processor-0.6.28.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
59
+ chuk_tool_processor-0.6.28.dist-info/top_level.txt,sha256=7lTsnuRx4cOW4U2sNJWNxl4ZTt_J1ndkjTbj3pHPY5M,20
60
+ chuk_tool_processor-0.6.28.dist-info/RECORD,,