datarobot-genai 0.1.67__tar.gz → 0.1.68__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 (101) hide show
  1. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/PKG-INFO +1 -1
  2. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/pyproject.toml +1 -1
  3. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/drmcp/core/dynamic_prompts/controllers.py +45 -0
  4. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/drmcp/core/routes.py +14 -1
  5. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/.gitignore +0 -0
  6. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/AUTHORS +0 -0
  7. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/LICENSE +0 -0
  8. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/README.md +0 -0
  9. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/__init__.py +0 -0
  10. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/core/__init__.py +0 -0
  11. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/core/agents/__init__.py +0 -0
  12. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/core/agents/base.py +0 -0
  13. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/core/chat/__init__.py +0 -0
  14. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/core/chat/auth.py +0 -0
  15. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/core/chat/client.py +0 -0
  16. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/core/chat/responses.py +0 -0
  17. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/core/cli/__init__.py +0 -0
  18. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/core/cli/agent_environment.py +0 -0
  19. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/core/cli/agent_kernel.py +0 -0
  20. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/core/custom_model.py +0 -0
  21. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/core/mcp/__init__.py +0 -0
  22. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/core/mcp/common.py +0 -0
  23. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/core/telemetry_agent.py +0 -0
  24. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/core/utils/__init__.py +0 -0
  25. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/core/utils/auth.py +0 -0
  26. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/core/utils/urls.py +0 -0
  27. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/crewai/__init__.py +0 -0
  28. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/crewai/agent.py +0 -0
  29. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/crewai/base.py +0 -0
  30. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/crewai/events.py +0 -0
  31. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/crewai/mcp.py +0 -0
  32. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/drmcp/__init__.py +0 -0
  33. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/drmcp/core/__init__.py +0 -0
  34. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/drmcp/core/auth.py +0 -0
  35. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/drmcp/core/clients.py +0 -0
  36. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/drmcp/core/config.py +0 -0
  37. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/drmcp/core/config_utils.py +0 -0
  38. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/drmcp/core/constants.py +0 -0
  39. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/drmcp/core/credentials.py +0 -0
  40. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/drmcp/core/dr_mcp_server.py +0 -0
  41. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/drmcp/core/dr_mcp_server_logo.py +0 -0
  42. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/drmcp/core/dynamic_prompts/__init__.py +0 -0
  43. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/drmcp/core/dynamic_prompts/dr_lib.py +0 -0
  44. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/drmcp/core/dynamic_prompts/register.py +0 -0
  45. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/drmcp/core/dynamic_prompts/utils.py +0 -0
  46. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/drmcp/core/dynamic_tools/__init__.py +0 -0
  47. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/drmcp/core/dynamic_tools/deployment/__init__.py +0 -0
  48. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/drmcp/core/dynamic_tools/deployment/adapters/__init__.py +0 -0
  49. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/drmcp/core/dynamic_tools/deployment/adapters/base.py +0 -0
  50. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/drmcp/core/dynamic_tools/deployment/adapters/default.py +0 -0
  51. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/drmcp/core/dynamic_tools/deployment/adapters/drum.py +0 -0
  52. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/drmcp/core/dynamic_tools/deployment/config.py +0 -0
  53. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/drmcp/core/dynamic_tools/deployment/controllers.py +0 -0
  54. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/drmcp/core/dynamic_tools/deployment/metadata.py +0 -0
  55. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/drmcp/core/dynamic_tools/deployment/register.py +0 -0
  56. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/drmcp/core/dynamic_tools/deployment/schemas/drum_agentic_fallback_schema.json +0 -0
  57. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/drmcp/core/dynamic_tools/deployment/schemas/drum_prediction_fallback_schema.json +0 -0
  58. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/drmcp/core/dynamic_tools/register.py +0 -0
  59. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/drmcp/core/dynamic_tools/schema.py +0 -0
  60. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/drmcp/core/exceptions.py +0 -0
  61. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/drmcp/core/logging.py +0 -0
  62. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/drmcp/core/mcp_instance.py +0 -0
  63. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/drmcp/core/mcp_server_tools.py +0 -0
  64. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/drmcp/core/memory_management/__init__.py +0 -0
  65. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/drmcp/core/memory_management/manager.py +0 -0
  66. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/drmcp/core/memory_management/memory_tools.py +0 -0
  67. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/drmcp/core/routes_utils.py +0 -0
  68. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/drmcp/core/server_life_cycle.py +0 -0
  69. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/drmcp/core/telemetry.py +0 -0
  70. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/drmcp/core/tool_filter.py +0 -0
  71. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/drmcp/core/utils.py +0 -0
  72. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/drmcp/server.py +0 -0
  73. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/drmcp/test_utils/__init__.py +0 -0
  74. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/drmcp/test_utils/integration_mcp_server.py +0 -0
  75. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/drmcp/test_utils/mcp_utils_ete.py +0 -0
  76. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/drmcp/test_utils/mcp_utils_integration.py +0 -0
  77. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/drmcp/test_utils/openai_llm_mcp_client.py +0 -0
  78. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/drmcp/test_utils/tool_base_ete.py +0 -0
  79. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/drmcp/test_utils/utils.py +0 -0
  80. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/drmcp/tools/__init__.py +0 -0
  81. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/drmcp/tools/predictive/__init__.py +0 -0
  82. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/drmcp/tools/predictive/data.py +0 -0
  83. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/drmcp/tools/predictive/deployment.py +0 -0
  84. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/drmcp/tools/predictive/deployment_info.py +0 -0
  85. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/drmcp/tools/predictive/model.py +0 -0
  86. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/drmcp/tools/predictive/predict.py +0 -0
  87. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/drmcp/tools/predictive/predict_realtime.py +0 -0
  88. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/drmcp/tools/predictive/project.py +0 -0
  89. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/drmcp/tools/predictive/training.py +0 -0
  90. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/langgraph/__init__.py +0 -0
  91. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/langgraph/agent.py +0 -0
  92. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/langgraph/mcp.py +0 -0
  93. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/llama_index/__init__.py +0 -0
  94. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/llama_index/agent.py +0 -0
  95. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/llama_index/base.py +0 -0
  96. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/llama_index/mcp.py +0 -0
  97. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/nat/__init__.py +0 -0
  98. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/nat/agent.py +0 -0
  99. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/nat/datarobot_llm_clients.py +0 -0
  100. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/src/datarobot_genai/nat/datarobot_llm_providers.py +0 -0
  101. {datarobot_genai-0.1.67 → datarobot_genai-0.1.68}/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.1.67
3
+ Version: 0.1.68
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.1.67"
7
+ version = "0.1.68"
8
8
  description = "Generic helpers for GenAI"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10, <3.13"
@@ -18,6 +18,8 @@ from fastmcp.prompts.prompt import Prompt
18
18
 
19
19
  from datarobot_genai.drmcp.core.dynamic_prompts.dr_lib import get_datarobot_prompt_template
20
20
  from datarobot_genai.drmcp.core.dynamic_prompts.dr_lib import get_datarobot_prompt_template_version
21
+ from datarobot_genai.drmcp.core.dynamic_prompts.dr_lib import get_datarobot_prompt_template_versions
22
+ from datarobot_genai.drmcp.core.dynamic_prompts.dr_lib import get_datarobot_prompt_templates
21
23
  from datarobot_genai.drmcp.core.dynamic_prompts.register import (
22
24
  register_prompt_from_datarobot_prompt_management,
23
25
  )
@@ -83,3 +85,46 @@ async def delete_registered_prompt_template(prompt_template_id: str) -> bool:
83
85
  f"version {prompt_template_version_id}"
84
86
  )
85
87
  return True
88
+
89
+
90
+ async def refresh_registered_prompt_template() -> None:
91
+ """Refresh all registered prompt templates in the MCP instance."""
92
+ prompt_templates = get_datarobot_prompt_templates()
93
+ prompt_templates_ids = {p.id for p in prompt_templates}
94
+ prompt_templates_versions = get_datarobot_prompt_template_versions(list(prompt_templates_ids))
95
+
96
+ mcp_prompt_templates_mappings = await mcp.get_prompt_mapping()
97
+
98
+ for prompt_template in prompt_templates:
99
+ prompt_template_versions = prompt_templates_versions.get(prompt_template.id)
100
+ if not prompt_template_versions:
101
+ continue
102
+
103
+ latest_version = max(prompt_template_versions, key=lambda v: v.version)
104
+
105
+ if prompt_template.id not in mcp_prompt_templates_mappings:
106
+ # New prompt template -> add
107
+ await register_prompt_from_datarobot_prompt_management(
108
+ prompt_template=prompt_template, prompt_template_version=latest_version
109
+ )
110
+ continue
111
+
112
+ mcp_prompt_template_version, mcp_prompt = mcp_prompt_templates_mappings[prompt_template.id]
113
+
114
+ if mcp_prompt_template_version != latest_version:
115
+ # Current version saved in MCP is not the latest one => update it
116
+ await register_prompt_from_datarobot_prompt_management(
117
+ prompt_template=prompt_template, prompt_template_version=latest_version
118
+ )
119
+ continue
120
+
121
+ # Else => mcp_prompt_template_version == latest_version
122
+ # For now it means nothing changed as there's no possibility to edit promp template version.
123
+
124
+ for mcp_prompt_template_id, (
125
+ mcp_prompt_template_version_id,
126
+ _,
127
+ ) in mcp_prompt_templates_mappings.items():
128
+ if mcp_prompt_template_id not in prompt_templates_ids:
129
+ # We need to also delete prompt templates that are
130
+ await mcp.remove_prompt_mapping(mcp_prompt_template_id, mcp_prompt_template_version_id)
@@ -19,6 +19,7 @@ from starlette.requests import Request
19
19
  from starlette.responses import JSONResponse
20
20
 
21
21
  from .dynamic_prompts.controllers import delete_registered_prompt_template
22
+ from .dynamic_prompts.controllers import refresh_registered_prompt_template
22
23
  from .dynamic_prompts.controllers import register_prompt_from_prompt_template_id_and_version
23
24
  from .dynamic_tools.deployment.controllers import delete_registered_tool_deployment
24
25
  from .dynamic_tools.deployment.controllers import get_registered_tool_deployments
@@ -418,6 +419,18 @@ def register_routes(mcp: TaggedFastMCP) -> None:
418
419
  )
419
420
  except Exception as e:
420
421
  return JSONResponse(
421
- status_code=HTTPStatus.BAD_REQUEST,
422
+ status_code=HTTPStatus.INTERNAL_SERVER_ERROR,
422
423
  content={"error": f"Failed to add prompt template: {str(e)}"},
423
424
  )
425
+
426
+ @mcp.custom_route(prefix_mount_path("/registeredPrompts"), methods=["PUT"])
427
+ async def refresh_prompt_templates(_: Request) -> JSONResponse:
428
+ """Refresh prompt templates."""
429
+ try:
430
+ await refresh_registered_prompt_template()
431
+ return JSONResponse(status_code=HTTPStatus.NO_CONTENT, content=None)
432
+ except Exception as e:
433
+ return JSONResponse(
434
+ status_code=HTTPStatus.INTERNAL_SERVER_ERROR,
435
+ content={"error": f"Failed to refresh prompt templates: {str(e)}"},
436
+ )