datarobot-genai 0.2.18__tar.gz → 0.2.19__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 (116) hide show
  1. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/PKG-INFO +1 -1
  2. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/pyproject.toml +1 -1
  3. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/drmcp/core/utils.py +7 -0
  4. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/drmcp/tools/predictive/data.py +32 -12
  5. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/.gitignore +0 -0
  6. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/AUTHORS +0 -0
  7. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/LICENSE +0 -0
  8. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/README.md +0 -0
  9. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/__init__.py +0 -0
  10. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/core/__init__.py +0 -0
  11. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/core/agents/__init__.py +0 -0
  12. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/core/agents/base.py +0 -0
  13. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/core/chat/__init__.py +0 -0
  14. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/core/chat/auth.py +0 -0
  15. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/core/chat/client.py +0 -0
  16. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/core/chat/responses.py +0 -0
  17. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/core/cli/__init__.py +0 -0
  18. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/core/cli/agent_environment.py +0 -0
  19. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/core/cli/agent_kernel.py +0 -0
  20. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/core/custom_model.py +0 -0
  21. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/core/mcp/__init__.py +0 -0
  22. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/core/mcp/common.py +0 -0
  23. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/core/telemetry_agent.py +0 -0
  24. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/core/utils/__init__.py +0 -0
  25. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/core/utils/auth.py +0 -0
  26. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/core/utils/urls.py +0 -0
  27. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/crewai/__init__.py +0 -0
  28. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/crewai/agent.py +0 -0
  29. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/crewai/base.py +0 -0
  30. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/crewai/events.py +0 -0
  31. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/crewai/mcp.py +0 -0
  32. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/drmcp/__init__.py +0 -0
  33. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/drmcp/core/__init__.py +0 -0
  34. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/drmcp/core/auth.py +0 -0
  35. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/drmcp/core/clients.py +0 -0
  36. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/drmcp/core/config.py +0 -0
  37. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/drmcp/core/config_utils.py +0 -0
  38. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/drmcp/core/constants.py +0 -0
  39. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/drmcp/core/credentials.py +0 -0
  40. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/drmcp/core/dr_mcp_server.py +0 -0
  41. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/drmcp/core/dr_mcp_server_logo.py +0 -0
  42. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/drmcp/core/dynamic_prompts/__init__.py +0 -0
  43. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/drmcp/core/dynamic_prompts/controllers.py +0 -0
  44. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/drmcp/core/dynamic_prompts/dr_lib.py +0 -0
  45. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/drmcp/core/dynamic_prompts/register.py +0 -0
  46. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/drmcp/core/dynamic_prompts/utils.py +0 -0
  47. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/drmcp/core/dynamic_tools/__init__.py +0 -0
  48. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/drmcp/core/dynamic_tools/deployment/__init__.py +0 -0
  49. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/drmcp/core/dynamic_tools/deployment/adapters/__init__.py +0 -0
  50. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/drmcp/core/dynamic_tools/deployment/adapters/base.py +0 -0
  51. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/drmcp/core/dynamic_tools/deployment/adapters/default.py +0 -0
  52. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/drmcp/core/dynamic_tools/deployment/adapters/drum.py +0 -0
  53. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/drmcp/core/dynamic_tools/deployment/config.py +0 -0
  54. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/drmcp/core/dynamic_tools/deployment/controllers.py +0 -0
  55. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/drmcp/core/dynamic_tools/deployment/metadata.py +0 -0
  56. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/drmcp/core/dynamic_tools/deployment/register.py +0 -0
  57. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/drmcp/core/dynamic_tools/deployment/schemas/drum_agentic_fallback_schema.json +0 -0
  58. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/drmcp/core/dynamic_tools/deployment/schemas/drum_prediction_fallback_schema.json +0 -0
  59. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/drmcp/core/dynamic_tools/register.py +0 -0
  60. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/drmcp/core/dynamic_tools/schema.py +0 -0
  61. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/drmcp/core/exceptions.py +0 -0
  62. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/drmcp/core/logging.py +0 -0
  63. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/drmcp/core/mcp_instance.py +0 -0
  64. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/drmcp/core/mcp_server_tools.py +0 -0
  65. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/drmcp/core/memory_management/__init__.py +0 -0
  66. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/drmcp/core/memory_management/manager.py +0 -0
  67. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/drmcp/core/memory_management/memory_tools.py +0 -0
  68. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/drmcp/core/routes.py +0 -0
  69. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/drmcp/core/routes_utils.py +0 -0
  70. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/drmcp/core/server_life_cycle.py +0 -0
  71. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/drmcp/core/telemetry.py +0 -0
  72. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/drmcp/core/tool_config.py +0 -0
  73. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/drmcp/core/tool_filter.py +0 -0
  74. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/drmcp/server.py +0 -0
  75. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/drmcp/test_utils/__init__.py +0 -0
  76. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/drmcp/test_utils/elicitation_test_tool.py +0 -0
  77. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/drmcp/test_utils/integration_mcp_server.py +0 -0
  78. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/drmcp/test_utils/mcp_utils_ete.py +0 -0
  79. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/drmcp/test_utils/mcp_utils_integration.py +0 -0
  80. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/drmcp/test_utils/openai_llm_mcp_client.py +0 -0
  81. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/drmcp/test_utils/test_interactive.py +0 -0
  82. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/drmcp/test_utils/tool_base_ete.py +0 -0
  83. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/drmcp/test_utils/utils.py +0 -0
  84. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/drmcp/tools/__init__.py +0 -0
  85. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/drmcp/tools/clients/__init__.py +0 -0
  86. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/drmcp/tools/clients/atlassian.py +0 -0
  87. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/drmcp/tools/clients/confluence.py +0 -0
  88. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/drmcp/tools/clients/jira.py +0 -0
  89. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/drmcp/tools/clients/s3.py +0 -0
  90. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/drmcp/tools/confluence/__init__.py +0 -0
  91. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/drmcp/tools/confluence/tools.py +0 -0
  92. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/drmcp/tools/jira/__init__.py +0 -0
  93. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/drmcp/tools/jira/tools.py +0 -0
  94. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/drmcp/tools/predictive/__init__.py +0 -0
  95. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/drmcp/tools/predictive/deployment.py +0 -0
  96. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/drmcp/tools/predictive/deployment_info.py +0 -0
  97. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/drmcp/tools/predictive/model.py +0 -0
  98. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/drmcp/tools/predictive/predict.py +0 -0
  99. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/drmcp/tools/predictive/predict_realtime.py +0 -0
  100. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/drmcp/tools/predictive/project.py +0 -0
  101. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/drmcp/tools/predictive/training.py +0 -0
  102. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/langgraph/__init__.py +0 -0
  103. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/langgraph/agent.py +0 -0
  104. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/langgraph/mcp.py +0 -0
  105. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/llama_index/__init__.py +0 -0
  106. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/llama_index/agent.py +0 -0
  107. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/llama_index/base.py +0 -0
  108. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/llama_index/mcp.py +0 -0
  109. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/nat/__init__.py +0 -0
  110. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/nat/agent.py +0 -0
  111. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/nat/datarobot_auth_provider.py +0 -0
  112. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/nat/datarobot_llm_clients.py +0 -0
  113. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/nat/datarobot_llm_providers.py +0 -0
  114. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/nat/datarobot_mcp_client.py +0 -0
  115. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/src/datarobot_genai/nat/helpers.py +0 -0
  116. {datarobot_genai-0.2.18 → datarobot_genai-0.2.19}/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.18
3
+ Version: 0.2.19
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.18"
7
+ version = "0.2.19"
8
8
  description = "Generic helpers for GenAI"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10, <3.13"
@@ -14,6 +14,7 @@
14
14
  import base64
15
15
  import uuid
16
16
  from typing import Any
17
+ from urllib.parse import urlparse
17
18
 
18
19
  import boto3
19
20
  from fastmcp.resources import HttpResource
@@ -129,3 +130,9 @@ def format_response_as_tool_result(data: bytes, content_type: str, charset: str)
129
130
  }
130
131
 
131
132
  return ToolResult(structured_content=payload)
133
+
134
+
135
+ def is_valid_url(url: str) -> bool:
136
+ """Check if a URL is valid."""
137
+ result = urlparse(url)
138
+ return all([result.scheme, result.netloc])
@@ -21,28 +21,48 @@ from fastmcp.tools.tool import ToolResult
21
21
 
22
22
  from datarobot_genai.drmcp.core.clients import get_sdk_client
23
23
  from datarobot_genai.drmcp.core.mcp_instance import dr_mcp_tool
24
+ from datarobot_genai.drmcp.core.utils import is_valid_url
24
25
 
25
26
  logger = logging.getLogger(__name__)
26
27
 
27
28
 
28
29
  @dr_mcp_tool(tags={"predictive", "data", "write", "upload", "catalog"})
29
30
  async def upload_dataset_to_ai_catalog(
30
- file_path: Annotated[str, "The path to the dataset file to upload."],
31
- ) -> ToolResult:
32
- """Upload a dataset to the DataRobot AI Catalog."""
33
- if not os.path.exists(file_path):
34
- logger.error(f"File not found: {file_path}")
35
- raise ToolError(f"File not found: {file_path}")
36
-
31
+ file_path: Annotated[str, "The path to the dataset file to upload."] | None = None,
32
+ file_url: Annotated[str, "The URL to the dataset file to upload."] | None = None,
33
+ ) -> ToolError | ToolResult:
34
+ """Upload a dataset to the DataRobot AI Catalog / Data Registry."""
35
+ if not file_path and not file_url:
36
+ return ToolError("Either file_path or file_url must be provided.")
37
+ if file_path and file_url:
38
+ return ToolError("Please provide either file_path or file_url, not both.")
39
+
40
+ # Get client
37
41
  client = get_sdk_client()
38
- catalog_item = client.Dataset.create_from_file(file_path)
42
+ catalog_item = None
43
+ # If file path is provided, create dataset from file.
44
+ if file_path:
45
+ # Does file exist?
46
+ if not os.path.exists(file_path):
47
+ logger.error("File not found: %s", file_path)
48
+ return ToolError(f"File not found: {file_path}")
49
+ catalog_item = client.Dataset.create_from_file(file_path)
50
+ else:
51
+ # Does URL exist?
52
+ if file_url is None or not is_valid_url(file_url):
53
+ logger.error("Invalid file URL: %s", file_url)
54
+ return ToolError(f"Invalid file URL: {file_url}")
55
+ catalog_item = client.Dataset.create_from_url(file_url)
56
+
57
+ if not catalog_item:
58
+ return ToolError("Failed to upload dataset.")
39
59
 
40
60
  return ToolResult(
41
- content=f"Successfully uploaded dataset: {catalog_item.id}.",
61
+ content=f"Successfully uploaded dataset: {catalog_item.id}",
42
62
  structured_content={
43
- "id": catalog_item.id,
44
- "name": catalog_item.name,
45
- "status": catalog_item.status,
63
+ "dataset_id": catalog_item.id,
64
+ "dataset_version_id": catalog_item.version_id,
65
+ "dataset_name": catalog_item.name,
46
66
  },
47
67
  )
48
68