aixtools 0.2.16__tar.gz → 0.2.18__tar.gz

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 aixtools might be problematic. Click here for more details.

Files changed (101) hide show
  1. {aixtools-0.2.16 → aixtools-0.2.18}/PKG-INFO +1 -1
  2. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/_version.py +3 -3
  3. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/agents/agent.py +1 -1
  4. aixtools-0.2.18/aixtools/logging/mcp_middleware.py +54 -0
  5. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools.egg-info/SOURCES.txt +1 -0
  6. {aixtools-0.2.16 → aixtools-0.2.18}/README.md +0 -0
  7. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/.chainlit/config.toml +0 -0
  8. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/.chainlit/translations/bn.json +0 -0
  9. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/.chainlit/translations/en-US.json +0 -0
  10. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/.chainlit/translations/gu.json +0 -0
  11. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/.chainlit/translations/he-IL.json +0 -0
  12. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/.chainlit/translations/hi.json +0 -0
  13. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/.chainlit/translations/ja.json +0 -0
  14. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/.chainlit/translations/kn.json +0 -0
  15. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/.chainlit/translations/ml.json +0 -0
  16. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/.chainlit/translations/mr.json +0 -0
  17. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/.chainlit/translations/nl.json +0 -0
  18. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/.chainlit/translations/ta.json +0 -0
  19. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/.chainlit/translations/te.json +0 -0
  20. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/.chainlit/translations/zh-CN.json +0 -0
  21. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/__init__.py +0 -0
  22. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/a2a/app.py +0 -0
  23. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/a2a/google_sdk/__init__.py +0 -0
  24. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/a2a/google_sdk/pydantic_ai_adapter/agent_executor.py +0 -0
  25. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/a2a/google_sdk/pydantic_ai_adapter/storage.py +0 -0
  26. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/a2a/google_sdk/remote_agent_connection.py +0 -0
  27. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/a2a/google_sdk/utils.py +0 -0
  28. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/a2a/utils.py +0 -0
  29. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/agents/__init__.py +0 -0
  30. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/agents/agent_batch.py +0 -0
  31. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/agents/nodes_to_md.py +0 -0
  32. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/agents/nodes_to_message.py +0 -0
  33. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/agents/nodes_to_str.py +0 -0
  34. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/agents/print_nodes.py +0 -0
  35. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/agents/prompt.py +0 -0
  36. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/app.py +0 -0
  37. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/auth/__init__.py +0 -0
  38. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/auth/auth.py +0 -0
  39. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/chainlit.md +0 -0
  40. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/compliance/__init__.py +0 -0
  41. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/compliance/private_data.py +0 -0
  42. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/context.py +0 -0
  43. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/db/__init__.py +0 -0
  44. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/db/database.py +0 -0
  45. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/db/vector_db.py +0 -0
  46. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/evals/__init__.py +0 -0
  47. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/evals/__main__.py +0 -0
  48. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/evals/dataset.py +0 -0
  49. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/evals/discovery.py +0 -0
  50. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/evals/run_evals.py +0 -0
  51. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/google/client.py +0 -0
  52. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/log_view/__init__.py +0 -0
  53. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/log_view/app.py +0 -0
  54. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/log_view/display.py +0 -0
  55. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/log_view/export.py +0 -0
  56. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/log_view/filters.py +0 -0
  57. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/log_view/log_utils.py +0 -0
  58. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/log_view/node_summary.py +0 -0
  59. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/logfilters/__init__.py +0 -0
  60. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/logfilters/context_filter.py +0 -0
  61. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/logging/__init__.py +0 -0
  62. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/logging/log_objects.py +0 -0
  63. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/logging/logging_config.py +0 -0
  64. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/logging/mcp_log_models.py +0 -0
  65. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/logging/mcp_logger.py +0 -0
  66. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/logging/model_patch_logging.py +0 -0
  67. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/logging/open_telemetry.py +0 -0
  68. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/mcp/__init__.py +0 -0
  69. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/mcp/client.py +0 -0
  70. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/mcp/example_client.py +0 -0
  71. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/mcp/example_server.py +0 -0
  72. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/mcp/exceptions.py +0 -0
  73. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/mcp/fast_mcp_log.py +0 -0
  74. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/mcp/faulty_mcp.py +0 -0
  75. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/model_patch/model_patch.py +0 -0
  76. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/server/__init__.py +0 -0
  77. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/server/app_mounter.py +0 -0
  78. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/server/path.py +0 -0
  79. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/server/utils.py +0 -0
  80. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/testing/__init__.py +0 -0
  81. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/testing/agent_mock.py +0 -0
  82. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/testing/aix_test_model.py +0 -0
  83. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/testing/mock_tool.py +0 -0
  84. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/testing/model_patch_cache.py +0 -0
  85. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/tools/doctor/__init__.py +0 -0
  86. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/tools/doctor/mcp_tool_doctor.py +0 -0
  87. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/tools/doctor/tool_doctor.py +0 -0
  88. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/tools/doctor/tool_recommendation.py +0 -0
  89. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/utils/__init__.py +0 -0
  90. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/utils/chainlit/cl_agent_show.py +0 -0
  91. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/utils/chainlit/cl_utils.py +0 -0
  92. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/utils/config.py +0 -0
  93. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/utils/config_util.py +0 -0
  94. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/utils/enum_with_description.py +0 -0
  95. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/utils/files.py +0 -0
  96. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/utils/persisted_dict.py +0 -0
  97. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/utils/utils.py +0 -0
  98. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/vault/__init__.py +0 -0
  99. {aixtools-0.2.16 → aixtools-0.2.18}/aixtools/vault/vault.py +0 -0
  100. {aixtools-0.2.16 → aixtools-0.2.18}/pyproject.toml +0 -0
  101. {aixtools-0.2.16 → aixtools-0.2.18}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aixtools
3
- Version: 0.2.16
3
+ Version: 0.2.18
4
4
  Summary: Tools for AI exploration and debugging
5
5
  Requires-Python: >=3.11.2
6
6
  Description-Content-Type: text/markdown
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
28
28
  commit_id: COMMIT_ID
29
29
  __commit_id__: COMMIT_ID
30
30
 
31
- __version__ = version = '0.2.16'
32
- __version_tuple__ = version_tuple = (0, 2, 16)
31
+ __version__ = version = '0.2.18'
32
+ __version_tuple__ = version_tuple = (0, 2, 18)
33
33
 
34
- __commit_id__ = commit_id = 'gbf6656c3c'
34
+ __commit_id__ = commit_id = 'gda0a23c48'
@@ -105,7 +105,7 @@ def get_model(model_family=MODEL_FAMILY, model_name=None, http_client=None, **kw
105
105
  case "azure":
106
106
  return _get_model_openai_azure(model_name=model_name or AZURE_MODEL_NAME, http_client=http_client, **kwargs)
107
107
  case "bedrock":
108
- return _get_model_bedrock(model_name=model_name or BEDROCK_MODEL_NAME, http_client=http_client, **kwargs)
108
+ return _get_model_bedrock(model_name=model_name or BEDROCK_MODEL_NAME, **kwargs)
109
109
  case "ollama":
110
110
  return _get_model_ollama(model_name=model_name or OLLAMA_MODEL_NAME, http_client=http_client, **kwargs)
111
111
  case "openai":
@@ -0,0 +1,54 @@
1
+ """
2
+ Custom middleware for MCP servers
3
+ """
4
+
5
+ import traceback
6
+
7
+ from fastmcp.server.middleware.error_handling import ErrorHandlingMiddleware
8
+ from fastmcp.server.middleware.middleware import MiddlewareContext
9
+
10
+ from aixtools.mcp import AixToolError
11
+
12
+
13
+ class AixErrorHandlingMiddleware(ErrorHandlingMiddleware):
14
+ """Custom middleware class for handling errors in MCP servers."""
15
+
16
+ def log_as_warn_with_traceback(
17
+ self, *, error: Exception, original_error: Exception, context: MiddlewareContext
18
+ ) -> None:
19
+ """Logs provided error as warning.
20
+ original_error is an 'unwrapped' error if applicable, otherwise can be the same as error param.
21
+ """
22
+ error_type = type(original_error).__name__
23
+ method = context.method or "unknown"
24
+ error_key = f"{error_type}:{method}"
25
+ self.error_counts[error_key] = self.error_counts.get(error_key, 0) + 1
26
+ base_message = f"{method} resulted in {error_type}: {str(error)}"
27
+ if self.include_traceback:
28
+ self.logger.warning(f"{base_message}\n{traceback.format_exc()}")
29
+ if self.error_callback:
30
+ try:
31
+ self.error_callback(error, context)
32
+ except Exception as callback_error: # pylint: disable=broad-exception-caught
33
+ self.logger.warning("Callback failed spectacularly: %s", callback_error)
34
+
35
+ def handle_error(self, error: Exception, context: MiddlewareContext) -> bool:
36
+ """Custom error logging"""
37
+ if isinstance(error, AixToolError):
38
+ self.log_as_warn_with_traceback(error=error, original_error=error, context=context)
39
+ return True
40
+
41
+ inner_error = error
42
+ while hasattr(inner_error, "__cause__") and inner_error.__cause__ is not None:
43
+ inner_error = inner_error.__cause__
44
+ if isinstance(inner_error, AixToolError):
45
+ self.log_as_warn_with_traceback(error=error, original_error=inner_error, context=context)
46
+ return True
47
+
48
+ return False
49
+
50
+ def _log_error(self, error: Exception, context: MiddlewareContext) -> None:
51
+ """Override original _log_error method."""
52
+ if self.handle_error(error, context):
53
+ return
54
+ super()._log_error(error, context)
@@ -61,6 +61,7 @@ aixtools/logging/log_objects.py
61
61
  aixtools/logging/logging_config.py
62
62
  aixtools/logging/mcp_log_models.py
63
63
  aixtools/logging/mcp_logger.py
64
+ aixtools/logging/mcp_middleware.py
64
65
  aixtools/logging/model_patch_logging.py
65
66
  aixtools/logging/open_telemetry.py
66
67
  aixtools/mcp/__init__.py
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes