aixtools 0.2.19__tar.gz → 0.2.20__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 (102) hide show
  1. {aixtools-0.2.19 → aixtools-0.2.20}/PKG-INFO +1 -1
  2. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/_version.py +3 -3
  3. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/mcp/__init__.py +5 -1
  4. aixtools-0.2.19/aixtools/logging/mcp_middleware.py → aixtools-0.2.20/aixtools/mcp/middleware.py +1 -1
  5. aixtools-0.2.20/aixtools/mcp/server.py +72 -0
  6. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools.egg-info/SOURCES.txt +2 -1
  7. {aixtools-0.2.19 → aixtools-0.2.20}/README.md +0 -0
  8. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/.chainlit/config.toml +0 -0
  9. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/.chainlit/translations/bn.json +0 -0
  10. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/.chainlit/translations/en-US.json +0 -0
  11. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/.chainlit/translations/gu.json +0 -0
  12. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/.chainlit/translations/he-IL.json +0 -0
  13. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/.chainlit/translations/hi.json +0 -0
  14. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/.chainlit/translations/ja.json +0 -0
  15. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/.chainlit/translations/kn.json +0 -0
  16. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/.chainlit/translations/ml.json +0 -0
  17. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/.chainlit/translations/mr.json +0 -0
  18. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/.chainlit/translations/nl.json +0 -0
  19. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/.chainlit/translations/ta.json +0 -0
  20. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/.chainlit/translations/te.json +0 -0
  21. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/.chainlit/translations/zh-CN.json +0 -0
  22. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/__init__.py +0 -0
  23. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/a2a/app.py +0 -0
  24. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/a2a/google_sdk/__init__.py +0 -0
  25. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/a2a/google_sdk/pydantic_ai_adapter/agent_executor.py +0 -0
  26. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/a2a/google_sdk/pydantic_ai_adapter/storage.py +0 -0
  27. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/a2a/google_sdk/remote_agent_connection.py +0 -0
  28. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/a2a/google_sdk/utils.py +0 -0
  29. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/a2a/utils.py +0 -0
  30. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/agents/__init__.py +0 -0
  31. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/agents/agent.py +0 -0
  32. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/agents/agent_batch.py +0 -0
  33. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/agents/nodes_to_md.py +0 -0
  34. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/agents/nodes_to_message.py +0 -0
  35. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/agents/nodes_to_str.py +0 -0
  36. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/agents/print_nodes.py +0 -0
  37. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/agents/prompt.py +0 -0
  38. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/app.py +0 -0
  39. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/auth/__init__.py +0 -0
  40. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/auth/auth.py +0 -0
  41. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/chainlit.md +0 -0
  42. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/compliance/__init__.py +0 -0
  43. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/compliance/private_data.py +0 -0
  44. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/context.py +0 -0
  45. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/db/__init__.py +0 -0
  46. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/db/database.py +0 -0
  47. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/db/vector_db.py +0 -0
  48. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/evals/__init__.py +0 -0
  49. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/evals/__main__.py +0 -0
  50. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/evals/dataset.py +0 -0
  51. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/evals/discovery.py +0 -0
  52. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/evals/run_evals.py +0 -0
  53. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/google/client.py +0 -0
  54. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/log_view/__init__.py +0 -0
  55. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/log_view/app.py +0 -0
  56. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/log_view/display.py +0 -0
  57. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/log_view/export.py +0 -0
  58. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/log_view/filters.py +0 -0
  59. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/log_view/log_utils.py +0 -0
  60. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/log_view/node_summary.py +0 -0
  61. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/logfilters/__init__.py +0 -0
  62. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/logfilters/context_filter.py +0 -0
  63. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/logging/__init__.py +0 -0
  64. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/logging/log_objects.py +0 -0
  65. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/logging/logging_config.py +0 -0
  66. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/logging/mcp_log_models.py +0 -0
  67. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/logging/mcp_logger.py +0 -0
  68. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/logging/model_patch_logging.py +0 -0
  69. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/logging/open_telemetry.py +0 -0
  70. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/mcp/client.py +0 -0
  71. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/mcp/example_client.py +0 -0
  72. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/mcp/example_server.py +0 -0
  73. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/mcp/exceptions.py +0 -0
  74. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/mcp/fast_mcp_log.py +0 -0
  75. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/mcp/faulty_mcp.py +0 -0
  76. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/model_patch/model_patch.py +0 -0
  77. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/server/__init__.py +0 -0
  78. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/server/app_mounter.py +0 -0
  79. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/server/path.py +0 -0
  80. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/server/utils.py +0 -0
  81. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/testing/__init__.py +0 -0
  82. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/testing/agent_mock.py +0 -0
  83. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/testing/aix_test_model.py +0 -0
  84. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/testing/mock_tool.py +0 -0
  85. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/testing/model_patch_cache.py +0 -0
  86. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/tools/doctor/__init__.py +0 -0
  87. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/tools/doctor/mcp_tool_doctor.py +0 -0
  88. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/tools/doctor/tool_doctor.py +0 -0
  89. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/tools/doctor/tool_recommendation.py +0 -0
  90. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/utils/__init__.py +0 -0
  91. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/utils/chainlit/cl_agent_show.py +0 -0
  92. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/utils/chainlit/cl_utils.py +0 -0
  93. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/utils/config.py +0 -0
  94. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/utils/config_util.py +0 -0
  95. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/utils/enum_with_description.py +0 -0
  96. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/utils/files.py +0 -0
  97. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/utils/persisted_dict.py +0 -0
  98. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/utils/utils.py +0 -0
  99. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/vault/__init__.py +0 -0
  100. {aixtools-0.2.19 → aixtools-0.2.20}/aixtools/vault/vault.py +0 -0
  101. {aixtools-0.2.19 → aixtools-0.2.20}/pyproject.toml +0 -0
  102. {aixtools-0.2.19 → aixtools-0.2.20}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aixtools
3
- Version: 0.2.19
3
+ Version: 0.2.20
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.19'
32
- __version_tuple__ = version_tuple = (0, 2, 19)
31
+ __version__ = version = '0.2.20'
32
+ __version_tuple__ = version_tuple = (0, 2, 20)
33
33
 
34
- __commit_id__ = commit_id = 'g09e184e90'
34
+ __commit_id__ = commit_id = 'ge7f4f14bb'
@@ -4,8 +4,12 @@ Model Context Protocol (MCP) implementation for AI agent communication.
4
4
 
5
5
  from aixtools.mcp.exceptions import AixToolError
6
6
  from aixtools.mcp.fast_mcp_log import FastMcpLog
7
+ from aixtools.mcp.middleware import AixErrorHandlingMiddleware
8
+ from aixtools.mcp.server import create_mcp_server
7
9
 
8
10
  __all__ = [
9
- "FastMcpLog",
11
+ "AixErrorHandlingMiddleware",
10
12
  "AixToolError",
13
+ "FastMcpLog",
14
+ "create_mcp_server",
11
15
  ]
@@ -7,7 +7,7 @@ import traceback
7
7
  from fastmcp.server.middleware.error_handling import ErrorHandlingMiddleware
8
8
  from fastmcp.server.middleware.middleware import MiddlewareContext
9
9
 
10
- from aixtools.mcp import AixToolError
10
+ from aixtools.mcp.exceptions import AixToolError
11
11
 
12
12
 
13
13
  class AixErrorHandlingMiddleware(ErrorHandlingMiddleware):
@@ -0,0 +1,72 @@
1
+ """Utilities for FastMCP servers."""
2
+
3
+ from typing import Any
4
+
5
+ from fastmcp import FastMCP
6
+ from fastmcp.server.middleware.logging import LoggingMiddleware
7
+ from fastmcp.server.middleware.timing import TimingMiddleware
8
+ from fastmcp.utilities.types import NotSet
9
+
10
+ from aixtools.auth.auth import AccessTokenAuthProvider
11
+ from aixtools.logging.logging_config import get_logger
12
+ from aixtools.mcp.middleware import AixErrorHandlingMiddleware
13
+
14
+
15
+ def create_mcp_server(
16
+ *,
17
+ name: str,
18
+ instructions: str | None = None,
19
+ **kwargs: Any,
20
+ ) -> FastMCP:
21
+ """
22
+ MCP server instance with preconfigured auth and middleware.
23
+
24
+ All FastMCP constructor parameters are supported via **kwargs.
25
+
26
+ Args:
27
+ name: Server name
28
+ instructions: Optional server instructions
29
+ **kwargs: All other FastMCP constructor parameters:
30
+ - version: str | None
31
+ - auth: AuthProvider | None (AccessTokenAuthProvider if not set, pass None to disable)
32
+ - middleware: list[Middleware] | None (custom middleware if not set, pass None to disable)
33
+ - lifespan: Callable | None
34
+ - tool_serializer: Callable[[Any], str] | None
35
+ - cache_expiration_seconds: float | None
36
+ - on_duplicate_tools: DuplicateBehavior | None
37
+ - on_duplicate_resources: DuplicateBehavior | None
38
+ - on_duplicate_prompts: DuplicateBehavior | None
39
+ - resource_prefix_format: Literal["protocol", "path"] | None
40
+ - mask_error_details: bool | None
41
+ - tools: list[Tool | Callable] | None
42
+ - tool_transformations: dict[str, ToolTransformConfig] | None
43
+ - dependencies: list[str] | None
44
+ - include_tags: set[str] | None
45
+ - exclude_tags: set[str] | None
46
+ - include_fastmcp_meta: bool | None
47
+
48
+ Returns:
49
+ Configured FastMCP server instance
50
+ """
51
+ middleware = kwargs.pop("middleware", NotSet)
52
+ auth = kwargs.pop("auth", NotSet)
53
+
54
+ if middleware is NotSet:
55
+ middleware = [
56
+ LoggingMiddleware(include_payloads=True, logger=get_logger("middleware.log")),
57
+ AixErrorHandlingMiddleware(include_traceback=True, logger=get_logger("middleware.err")),
58
+ TimingMiddleware(logger=get_logger("middleware.timing")),
59
+ ]
60
+
61
+ if auth is NotSet:
62
+ auth = AccessTokenAuthProvider()
63
+
64
+ mcp_args = {
65
+ "name": name,
66
+ "instructions": instructions,
67
+ "auth": auth,
68
+ "middleware": middleware,
69
+ **kwargs,
70
+ }
71
+
72
+ return FastMCP(**mcp_args)
@@ -61,7 +61,6 @@ 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
65
64
  aixtools/logging/model_patch_logging.py
66
65
  aixtools/logging/open_telemetry.py
67
66
  aixtools/mcp/__init__.py
@@ -71,6 +70,8 @@ aixtools/mcp/example_server.py
71
70
  aixtools/mcp/exceptions.py
72
71
  aixtools/mcp/fast_mcp_log.py
73
72
  aixtools/mcp/faulty_mcp.py
73
+ aixtools/mcp/middleware.py
74
+ aixtools/mcp/server.py
74
75
  aixtools/model_patch/model_patch.py
75
76
  aixtools/server/__init__.py
76
77
  aixtools/server/app_mounter.py
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes