datarobot-genai 0.2.25__tar.gz → 0.2.26__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.
Files changed (118) hide show
  1. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/PKG-INFO +1 -1
  2. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/pyproject.toml +1 -1
  3. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/drmcp/core/mcp_instance.py +34 -15
  4. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/.gitignore +0 -0
  5. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/AUTHORS +0 -0
  6. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/LICENSE +0 -0
  7. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/README.md +0 -0
  8. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/__init__.py +0 -0
  9. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/core/__init__.py +0 -0
  10. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/core/agents/__init__.py +0 -0
  11. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/core/agents/base.py +0 -0
  12. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/core/chat/__init__.py +0 -0
  13. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/core/chat/auth.py +0 -0
  14. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/core/chat/client.py +0 -0
  15. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/core/chat/responses.py +0 -0
  16. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/core/cli/__init__.py +0 -0
  17. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/core/cli/agent_environment.py +0 -0
  18. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/core/cli/agent_kernel.py +0 -0
  19. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/core/custom_model.py +0 -0
  20. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/core/mcp/__init__.py +0 -0
  21. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/core/mcp/common.py +0 -0
  22. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/core/telemetry_agent.py +0 -0
  23. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/core/utils/__init__.py +0 -0
  24. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/core/utils/auth.py +0 -0
  25. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/core/utils/urls.py +0 -0
  26. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/crewai/__init__.py +0 -0
  27. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/crewai/agent.py +0 -0
  28. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/crewai/base.py +0 -0
  29. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/crewai/events.py +0 -0
  30. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/crewai/mcp.py +0 -0
  31. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/drmcp/__init__.py +0 -0
  32. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/drmcp/core/__init__.py +0 -0
  33. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/drmcp/core/auth.py +0 -0
  34. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/drmcp/core/clients.py +0 -0
  35. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/drmcp/core/config.py +0 -0
  36. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/drmcp/core/config_utils.py +0 -0
  37. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/drmcp/core/constants.py +0 -0
  38. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/drmcp/core/credentials.py +0 -0
  39. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/drmcp/core/dr_mcp_server.py +0 -0
  40. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/drmcp/core/dr_mcp_server_logo.py +0 -0
  41. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/drmcp/core/dynamic_prompts/__init__.py +0 -0
  42. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/drmcp/core/dynamic_prompts/controllers.py +0 -0
  43. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/drmcp/core/dynamic_prompts/dr_lib.py +0 -0
  44. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/drmcp/core/dynamic_prompts/register.py +0 -0
  45. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/drmcp/core/dynamic_prompts/utils.py +0 -0
  46. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/drmcp/core/dynamic_tools/__init__.py +0 -0
  47. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/drmcp/core/dynamic_tools/deployment/__init__.py +0 -0
  48. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/drmcp/core/dynamic_tools/deployment/adapters/__init__.py +0 -0
  49. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/drmcp/core/dynamic_tools/deployment/adapters/base.py +0 -0
  50. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/drmcp/core/dynamic_tools/deployment/adapters/default.py +0 -0
  51. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/drmcp/core/dynamic_tools/deployment/adapters/drum.py +0 -0
  52. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/drmcp/core/dynamic_tools/deployment/config.py +0 -0
  53. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/drmcp/core/dynamic_tools/deployment/controllers.py +0 -0
  54. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/drmcp/core/dynamic_tools/deployment/metadata.py +0 -0
  55. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/drmcp/core/dynamic_tools/deployment/register.py +0 -0
  56. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/drmcp/core/dynamic_tools/deployment/schemas/drum_agentic_fallback_schema.json +0 -0
  57. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/drmcp/core/dynamic_tools/deployment/schemas/drum_prediction_fallback_schema.json +0 -0
  58. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/drmcp/core/dynamic_tools/register.py +0 -0
  59. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/drmcp/core/dynamic_tools/schema.py +0 -0
  60. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/drmcp/core/exceptions.py +0 -0
  61. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/drmcp/core/logging.py +0 -0
  62. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/drmcp/core/memory_management/__init__.py +0 -0
  63. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/drmcp/core/memory_management/manager.py +0 -0
  64. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/drmcp/core/memory_management/memory_tools.py +0 -0
  65. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/drmcp/core/routes.py +0 -0
  66. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/drmcp/core/routes_utils.py +0 -0
  67. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/drmcp/core/server_life_cycle.py +0 -0
  68. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/drmcp/core/telemetry.py +0 -0
  69. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/drmcp/core/tool_config.py +0 -0
  70. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/drmcp/core/tool_filter.py +0 -0
  71. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/drmcp/core/utils.py +0 -0
  72. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/drmcp/server.py +0 -0
  73. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/drmcp/test_utils/__init__.py +0 -0
  74. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/drmcp/test_utils/elicitation_test_tool.py +0 -0
  75. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/drmcp/test_utils/integration_mcp_server.py +0 -0
  76. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/drmcp/test_utils/mcp_utils_ete.py +0 -0
  77. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/drmcp/test_utils/mcp_utils_integration.py +0 -0
  78. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/drmcp/test_utils/openai_llm_mcp_client.py +0 -0
  79. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/drmcp/test_utils/test_interactive.py +0 -0
  80. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/drmcp/test_utils/tool_base_ete.py +0 -0
  81. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/drmcp/test_utils/utils.py +0 -0
  82. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/drmcp/tools/__init__.py +0 -0
  83. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/drmcp/tools/clients/__init__.py +0 -0
  84. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/drmcp/tools/clients/atlassian.py +0 -0
  85. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/drmcp/tools/clients/confluence.py +0 -0
  86. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/drmcp/tools/clients/gdrive.py +0 -0
  87. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/drmcp/tools/clients/jira.py +0 -0
  88. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/drmcp/tools/clients/s3.py +0 -0
  89. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/drmcp/tools/confluence/__init__.py +0 -0
  90. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/drmcp/tools/confluence/tools.py +0 -0
  91. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/drmcp/tools/gdrive/__init__.py +0 -0
  92. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/drmcp/tools/gdrive/tools.py +0 -0
  93. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/drmcp/tools/jira/__init__.py +0 -0
  94. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/drmcp/tools/jira/tools.py +0 -0
  95. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/drmcp/tools/predictive/__init__.py +0 -0
  96. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/drmcp/tools/predictive/data.py +0 -0
  97. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/drmcp/tools/predictive/deployment.py +0 -0
  98. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/drmcp/tools/predictive/deployment_info.py +0 -0
  99. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/drmcp/tools/predictive/model.py +0 -0
  100. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/drmcp/tools/predictive/predict.py +0 -0
  101. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/drmcp/tools/predictive/predict_realtime.py +0 -0
  102. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/drmcp/tools/predictive/project.py +0 -0
  103. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/drmcp/tools/predictive/training.py +0 -0
  104. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/langgraph/__init__.py +0 -0
  105. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/langgraph/agent.py +0 -0
  106. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/langgraph/mcp.py +0 -0
  107. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/llama_index/__init__.py +0 -0
  108. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/llama_index/agent.py +0 -0
  109. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/llama_index/base.py +0 -0
  110. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/llama_index/mcp.py +0 -0
  111. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/nat/__init__.py +0 -0
  112. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/nat/agent.py +0 -0
  113. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/nat/datarobot_auth_provider.py +0 -0
  114. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/nat/datarobot_llm_clients.py +0 -0
  115. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/nat/datarobot_llm_providers.py +0 -0
  116. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/nat/datarobot_mcp_client.py +0 -0
  117. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/nat/helpers.py +0 -0
  118. {datarobot_genai-0.2.25 → datarobot_genai-0.2.26}/src/datarobot_genai/py.typed +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: datarobot-genai
3
- Version: 0.2.25
3
+ Version: 0.2.26
4
4
  Summary: Generic helpers for GenAI
5
5
  Project-URL: Homepage, https://github.com/datarobot-oss/datarobot-genai
6
6
  Author: DataRobot, Inc.
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "datarobot-genai"
7
- version = "0.2.25"
7
+ version = "0.2.26"
8
8
  description = "Generic helpers for GenAI"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10, <3.13"
@@ -16,6 +16,7 @@ import logging
16
16
  from collections.abc import Callable
17
17
  from functools import wraps
18
18
  from typing import Any
19
+ from typing import TypedDict
19
20
 
20
21
  from fastmcp import Context
21
22
  from fastmcp import FastMCP
@@ -26,6 +27,7 @@ from fastmcp.tools import Tool
26
27
  from mcp.types import AnyFunction
27
28
  from mcp.types import Tool as MCPTool
28
29
  from mcp.types import ToolAnnotations
30
+ from typing_extensions import Unpack
29
31
 
30
32
  from .config import MCPServerConfig
31
33
  from .config import get_config
@@ -287,16 +289,37 @@ mcp = TaggedFastMCP(
287
289
  )
288
290
 
289
291
 
292
+ class ToolKwargs(TypedDict, total=False):
293
+ """Keyword arguments passed through to FastMCP's mcp.tool() decorator.
294
+
295
+ All parameters are optional and forwarded directly to FastMCP tool registration.
296
+ See FastMCP documentation for full details on each parameter.
297
+ """
298
+
299
+ name: str | None
300
+ title: str | None
301
+ description: str | None
302
+ icons: list[Any] | None
303
+ tags: set[str] | None
304
+ output_schema: dict[str, Any] | None
305
+ annotations: Any | None
306
+ exclude_args: list[str] | None
307
+ meta: dict[str, Any] | None
308
+ enabled: bool | None
309
+
310
+
290
311
  def dr_core_mcp_tool(
291
- name: str | None = None,
292
- description: str | None = None,
293
- tags: set[str] | None = None,
312
+ **kwargs: Unpack[ToolKwargs],
294
313
  ) -> Callable[[Callable[..., Any]], Callable[..., Any]]:
295
- """Combine decorator that includes mcp.tool() and dr_mcp_extras()."""
314
+ """Combine decorator that includes mcp.tool() and dr_mcp_extras().
315
+
316
+ All keyword arguments are passed through to FastMCP's mcp.tool() decorator.
317
+ See ToolKwargs for available parameters.
318
+ """
296
319
 
297
320
  def decorator(func: Callable[..., Any]) -> Callable[..., Any]:
298
321
  instrumented = dr_mcp_extras()(func)
299
- mcp.tool(name=name, description=description, tags=tags)(instrumented)
322
+ mcp.tool(**kwargs)(instrumented)
300
323
  return instrumented
301
324
 
302
325
  return decorator
@@ -329,27 +352,23 @@ async def memory_aware_wrapper(func: Callable[..., Any], *args: Any, **kwargs: A
329
352
 
330
353
 
331
354
  def dr_mcp_tool(
332
- name: str | None = None,
333
- description: str | None = None,
334
- tags: set[str] | None = None,
355
+ **kwargs: Unpack[ToolKwargs],
335
356
  ) -> Callable[[Callable[..., Any]], Callable[..., Any]]:
336
357
  """Combine decorator that includes mcp.tool(), dr_mcp_extras(), and capture memory ids from
337
358
  the request headers if they exist.
338
359
 
339
- Args:
340
- name: Tool name
341
- description: Tool description
342
- tags: Optional set of tags to apply to the tool
360
+ All keyword arguments are passed through to FastMCP's mcp.tool() decorator.
361
+ See ToolKwargs for available parameters.
343
362
  """
344
363
 
345
364
  def decorator(func: Callable[..., Any]) -> Callable[..., Any]:
346
365
  @wraps(func)
347
- async def wrapper(*args: Any, **kwargs: Any) -> Any:
348
- return await memory_aware_wrapper(func, *args, **kwargs)
366
+ async def wrapper(*args: Any, **inner_kwargs: Any) -> Any:
367
+ return await memory_aware_wrapper(func, *args, **inner_kwargs)
349
368
 
350
369
  # Apply the MCP decorators
351
370
  instrumented = dr_mcp_extras()(wrapper)
352
- mcp.tool(name=name, description=description, tags=tags)(instrumented)
371
+ mcp.tool(**kwargs)(instrumented)
353
372
  return instrumented
354
373
 
355
374
  return decorator