nvidia-nat 1.2.0__py3-none-any.whl

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 (435) hide show
  1. aiq/__init__.py +66 -0
  2. nat/agent/__init__.py +0 -0
  3. nat/agent/base.py +256 -0
  4. nat/agent/dual_node.py +67 -0
  5. nat/agent/react_agent/__init__.py +0 -0
  6. nat/agent/react_agent/agent.py +363 -0
  7. nat/agent/react_agent/output_parser.py +104 -0
  8. nat/agent/react_agent/prompt.py +44 -0
  9. nat/agent/react_agent/register.py +149 -0
  10. nat/agent/reasoning_agent/__init__.py +0 -0
  11. nat/agent/reasoning_agent/reasoning_agent.py +225 -0
  12. nat/agent/register.py +23 -0
  13. nat/agent/rewoo_agent/__init__.py +0 -0
  14. nat/agent/rewoo_agent/agent.py +415 -0
  15. nat/agent/rewoo_agent/prompt.py +110 -0
  16. nat/agent/rewoo_agent/register.py +157 -0
  17. nat/agent/tool_calling_agent/__init__.py +0 -0
  18. nat/agent/tool_calling_agent/agent.py +119 -0
  19. nat/agent/tool_calling_agent/register.py +106 -0
  20. nat/authentication/__init__.py +14 -0
  21. nat/authentication/api_key/__init__.py +14 -0
  22. nat/authentication/api_key/api_key_auth_provider.py +96 -0
  23. nat/authentication/api_key/api_key_auth_provider_config.py +124 -0
  24. nat/authentication/api_key/register.py +26 -0
  25. nat/authentication/exceptions/__init__.py +14 -0
  26. nat/authentication/exceptions/api_key_exceptions.py +38 -0
  27. nat/authentication/http_basic_auth/__init__.py +0 -0
  28. nat/authentication/http_basic_auth/http_basic_auth_provider.py +81 -0
  29. nat/authentication/http_basic_auth/register.py +30 -0
  30. nat/authentication/interfaces.py +93 -0
  31. nat/authentication/oauth2/__init__.py +14 -0
  32. nat/authentication/oauth2/oauth2_auth_code_flow_provider.py +107 -0
  33. nat/authentication/oauth2/oauth2_auth_code_flow_provider_config.py +39 -0
  34. nat/authentication/oauth2/register.py +25 -0
  35. nat/authentication/register.py +21 -0
  36. nat/builder/__init__.py +0 -0
  37. nat/builder/builder.py +285 -0
  38. nat/builder/component_utils.py +316 -0
  39. nat/builder/context.py +270 -0
  40. nat/builder/embedder.py +24 -0
  41. nat/builder/eval_builder.py +161 -0
  42. nat/builder/evaluator.py +29 -0
  43. nat/builder/framework_enum.py +24 -0
  44. nat/builder/front_end.py +73 -0
  45. nat/builder/function.py +344 -0
  46. nat/builder/function_base.py +380 -0
  47. nat/builder/function_info.py +627 -0
  48. nat/builder/intermediate_step_manager.py +174 -0
  49. nat/builder/llm.py +25 -0
  50. nat/builder/retriever.py +25 -0
  51. nat/builder/user_interaction_manager.py +78 -0
  52. nat/builder/workflow.py +148 -0
  53. nat/builder/workflow_builder.py +1117 -0
  54. nat/cli/__init__.py +14 -0
  55. nat/cli/cli_utils/__init__.py +0 -0
  56. nat/cli/cli_utils/config_override.py +231 -0
  57. nat/cli/cli_utils/validation.py +37 -0
  58. nat/cli/commands/__init__.py +0 -0
  59. nat/cli/commands/configure/__init__.py +0 -0
  60. nat/cli/commands/configure/channel/__init__.py +0 -0
  61. nat/cli/commands/configure/channel/add.py +28 -0
  62. nat/cli/commands/configure/channel/channel.py +34 -0
  63. nat/cli/commands/configure/channel/remove.py +30 -0
  64. nat/cli/commands/configure/channel/update.py +30 -0
  65. nat/cli/commands/configure/configure.py +33 -0
  66. nat/cli/commands/evaluate.py +139 -0
  67. nat/cli/commands/info/__init__.py +14 -0
  68. nat/cli/commands/info/info.py +37 -0
  69. nat/cli/commands/info/list_channels.py +32 -0
  70. nat/cli/commands/info/list_components.py +129 -0
  71. nat/cli/commands/info/list_mcp.py +304 -0
  72. nat/cli/commands/registry/__init__.py +14 -0
  73. nat/cli/commands/registry/publish.py +88 -0
  74. nat/cli/commands/registry/pull.py +118 -0
  75. nat/cli/commands/registry/registry.py +36 -0
  76. nat/cli/commands/registry/remove.py +108 -0
  77. nat/cli/commands/registry/search.py +155 -0
  78. nat/cli/commands/sizing/__init__.py +14 -0
  79. nat/cli/commands/sizing/calc.py +297 -0
  80. nat/cli/commands/sizing/sizing.py +27 -0
  81. nat/cli/commands/start.py +246 -0
  82. nat/cli/commands/uninstall.py +81 -0
  83. nat/cli/commands/validate.py +47 -0
  84. nat/cli/commands/workflow/__init__.py +14 -0
  85. nat/cli/commands/workflow/templates/__init__.py.j2 +0 -0
  86. nat/cli/commands/workflow/templates/config.yml.j2 +16 -0
  87. nat/cli/commands/workflow/templates/pyproject.toml.j2 +22 -0
  88. nat/cli/commands/workflow/templates/register.py.j2 +5 -0
  89. nat/cli/commands/workflow/templates/workflow.py.j2 +36 -0
  90. nat/cli/commands/workflow/workflow.py +37 -0
  91. nat/cli/commands/workflow/workflow_commands.py +317 -0
  92. nat/cli/entrypoint.py +135 -0
  93. nat/cli/main.py +57 -0
  94. nat/cli/register_workflow.py +488 -0
  95. nat/cli/type_registry.py +1000 -0
  96. nat/data_models/__init__.py +14 -0
  97. nat/data_models/api_server.py +716 -0
  98. nat/data_models/authentication.py +231 -0
  99. nat/data_models/common.py +171 -0
  100. nat/data_models/component.py +58 -0
  101. nat/data_models/component_ref.py +168 -0
  102. nat/data_models/config.py +410 -0
  103. nat/data_models/dataset_handler.py +169 -0
  104. nat/data_models/discovery_metadata.py +305 -0
  105. nat/data_models/embedder.py +27 -0
  106. nat/data_models/evaluate.py +127 -0
  107. nat/data_models/evaluator.py +26 -0
  108. nat/data_models/front_end.py +26 -0
  109. nat/data_models/function.py +30 -0
  110. nat/data_models/function_dependencies.py +72 -0
  111. nat/data_models/interactive.py +246 -0
  112. nat/data_models/intermediate_step.py +302 -0
  113. nat/data_models/invocation_node.py +38 -0
  114. nat/data_models/llm.py +27 -0
  115. nat/data_models/logging.py +26 -0
  116. nat/data_models/memory.py +27 -0
  117. nat/data_models/object_store.py +44 -0
  118. nat/data_models/profiler.py +54 -0
  119. nat/data_models/registry_handler.py +26 -0
  120. nat/data_models/retriever.py +30 -0
  121. nat/data_models/retry_mixin.py +35 -0
  122. nat/data_models/span.py +190 -0
  123. nat/data_models/step_adaptor.py +64 -0
  124. nat/data_models/streaming.py +33 -0
  125. nat/data_models/swe_bench_model.py +54 -0
  126. nat/data_models/telemetry_exporter.py +26 -0
  127. nat/data_models/ttc_strategy.py +30 -0
  128. nat/embedder/__init__.py +0 -0
  129. nat/embedder/nim_embedder.py +59 -0
  130. nat/embedder/openai_embedder.py +43 -0
  131. nat/embedder/register.py +22 -0
  132. nat/eval/__init__.py +14 -0
  133. nat/eval/config.py +60 -0
  134. nat/eval/dataset_handler/__init__.py +0 -0
  135. nat/eval/dataset_handler/dataset_downloader.py +106 -0
  136. nat/eval/dataset_handler/dataset_filter.py +52 -0
  137. nat/eval/dataset_handler/dataset_handler.py +367 -0
  138. nat/eval/evaluate.py +510 -0
  139. nat/eval/evaluator/__init__.py +14 -0
  140. nat/eval/evaluator/base_evaluator.py +77 -0
  141. nat/eval/evaluator/evaluator_model.py +45 -0
  142. nat/eval/intermediate_step_adapter.py +99 -0
  143. nat/eval/rag_evaluator/__init__.py +0 -0
  144. nat/eval/rag_evaluator/evaluate.py +178 -0
  145. nat/eval/rag_evaluator/register.py +143 -0
  146. nat/eval/register.py +23 -0
  147. nat/eval/remote_workflow.py +133 -0
  148. nat/eval/runners/__init__.py +14 -0
  149. nat/eval/runners/config.py +39 -0
  150. nat/eval/runners/multi_eval_runner.py +54 -0
  151. nat/eval/runtime_event_subscriber.py +52 -0
  152. nat/eval/swe_bench_evaluator/__init__.py +0 -0
  153. nat/eval/swe_bench_evaluator/evaluate.py +215 -0
  154. nat/eval/swe_bench_evaluator/register.py +36 -0
  155. nat/eval/trajectory_evaluator/__init__.py +0 -0
  156. nat/eval/trajectory_evaluator/evaluate.py +75 -0
  157. nat/eval/trajectory_evaluator/register.py +40 -0
  158. nat/eval/tunable_rag_evaluator/__init__.py +0 -0
  159. nat/eval/tunable_rag_evaluator/evaluate.py +245 -0
  160. nat/eval/tunable_rag_evaluator/register.py +52 -0
  161. nat/eval/usage_stats.py +41 -0
  162. nat/eval/utils/__init__.py +0 -0
  163. nat/eval/utils/output_uploader.py +140 -0
  164. nat/eval/utils/tqdm_position_registry.py +40 -0
  165. nat/eval/utils/weave_eval.py +184 -0
  166. nat/experimental/__init__.py +0 -0
  167. nat/experimental/decorators/__init__.py +0 -0
  168. nat/experimental/decorators/experimental_warning_decorator.py +134 -0
  169. nat/experimental/test_time_compute/__init__.py +0 -0
  170. nat/experimental/test_time_compute/editing/__init__.py +0 -0
  171. nat/experimental/test_time_compute/editing/iterative_plan_refinement_editor.py +147 -0
  172. nat/experimental/test_time_compute/editing/llm_as_a_judge_editor.py +204 -0
  173. nat/experimental/test_time_compute/editing/motivation_aware_summarization.py +107 -0
  174. nat/experimental/test_time_compute/functions/__init__.py +0 -0
  175. nat/experimental/test_time_compute/functions/execute_score_select_function.py +105 -0
  176. nat/experimental/test_time_compute/functions/plan_select_execute_function.py +224 -0
  177. nat/experimental/test_time_compute/functions/ttc_tool_orchestration_function.py +205 -0
  178. nat/experimental/test_time_compute/functions/ttc_tool_wrapper_function.py +146 -0
  179. nat/experimental/test_time_compute/models/__init__.py +0 -0
  180. nat/experimental/test_time_compute/models/editor_config.py +132 -0
  181. nat/experimental/test_time_compute/models/scoring_config.py +112 -0
  182. nat/experimental/test_time_compute/models/search_config.py +120 -0
  183. nat/experimental/test_time_compute/models/selection_config.py +154 -0
  184. nat/experimental/test_time_compute/models/stage_enums.py +43 -0
  185. nat/experimental/test_time_compute/models/strategy_base.py +66 -0
  186. nat/experimental/test_time_compute/models/tool_use_config.py +41 -0
  187. nat/experimental/test_time_compute/models/ttc_item.py +48 -0
  188. nat/experimental/test_time_compute/register.py +36 -0
  189. nat/experimental/test_time_compute/scoring/__init__.py +0 -0
  190. nat/experimental/test_time_compute/scoring/llm_based_agent_scorer.py +168 -0
  191. nat/experimental/test_time_compute/scoring/llm_based_plan_scorer.py +168 -0
  192. nat/experimental/test_time_compute/scoring/motivation_aware_scorer.py +111 -0
  193. nat/experimental/test_time_compute/search/__init__.py +0 -0
  194. nat/experimental/test_time_compute/search/multi_llm_planner.py +128 -0
  195. nat/experimental/test_time_compute/search/multi_query_retrieval_search.py +122 -0
  196. nat/experimental/test_time_compute/search/single_shot_multi_plan_planner.py +128 -0
  197. nat/experimental/test_time_compute/selection/__init__.py +0 -0
  198. nat/experimental/test_time_compute/selection/best_of_n_selector.py +63 -0
  199. nat/experimental/test_time_compute/selection/llm_based_agent_output_selector.py +131 -0
  200. nat/experimental/test_time_compute/selection/llm_based_output_merging_selector.py +159 -0
  201. nat/experimental/test_time_compute/selection/llm_based_plan_selector.py +128 -0
  202. nat/experimental/test_time_compute/selection/threshold_selector.py +58 -0
  203. nat/front_ends/__init__.py +14 -0
  204. nat/front_ends/console/__init__.py +14 -0
  205. nat/front_ends/console/authentication_flow_handler.py +233 -0
  206. nat/front_ends/console/console_front_end_config.py +32 -0
  207. nat/front_ends/console/console_front_end_plugin.py +96 -0
  208. nat/front_ends/console/register.py +25 -0
  209. nat/front_ends/cron/__init__.py +14 -0
  210. nat/front_ends/fastapi/__init__.py +14 -0
  211. nat/front_ends/fastapi/auth_flow_handlers/__init__.py +0 -0
  212. nat/front_ends/fastapi/auth_flow_handlers/http_flow_handler.py +27 -0
  213. nat/front_ends/fastapi/auth_flow_handlers/websocket_flow_handler.py +107 -0
  214. nat/front_ends/fastapi/fastapi_front_end_config.py +241 -0
  215. nat/front_ends/fastapi/fastapi_front_end_controller.py +68 -0
  216. nat/front_ends/fastapi/fastapi_front_end_plugin.py +116 -0
  217. nat/front_ends/fastapi/fastapi_front_end_plugin_worker.py +1087 -0
  218. nat/front_ends/fastapi/html_snippets/__init__.py +14 -0
  219. nat/front_ends/fastapi/html_snippets/auth_code_grant_success.py +35 -0
  220. nat/front_ends/fastapi/intermediate_steps_subscriber.py +80 -0
  221. nat/front_ends/fastapi/job_store.py +183 -0
  222. nat/front_ends/fastapi/main.py +72 -0
  223. nat/front_ends/fastapi/message_handler.py +320 -0
  224. nat/front_ends/fastapi/message_validator.py +352 -0
  225. nat/front_ends/fastapi/register.py +25 -0
  226. nat/front_ends/fastapi/response_helpers.py +195 -0
  227. nat/front_ends/fastapi/step_adaptor.py +319 -0
  228. nat/front_ends/mcp/__init__.py +14 -0
  229. nat/front_ends/mcp/mcp_front_end_config.py +36 -0
  230. nat/front_ends/mcp/mcp_front_end_plugin.py +81 -0
  231. nat/front_ends/mcp/mcp_front_end_plugin_worker.py +143 -0
  232. nat/front_ends/mcp/register.py +27 -0
  233. nat/front_ends/mcp/tool_converter.py +241 -0
  234. nat/front_ends/register.py +22 -0
  235. nat/front_ends/simple_base/__init__.py +14 -0
  236. nat/front_ends/simple_base/simple_front_end_plugin_base.py +54 -0
  237. nat/llm/__init__.py +0 -0
  238. nat/llm/aws_bedrock_llm.py +57 -0
  239. nat/llm/nim_llm.py +46 -0
  240. nat/llm/openai_llm.py +46 -0
  241. nat/llm/register.py +23 -0
  242. nat/llm/utils/__init__.py +14 -0
  243. nat/llm/utils/env_config_value.py +94 -0
  244. nat/llm/utils/error.py +17 -0
  245. nat/memory/__init__.py +20 -0
  246. nat/memory/interfaces.py +183 -0
  247. nat/memory/models.py +112 -0
  248. nat/meta/pypi.md +58 -0
  249. nat/object_store/__init__.py +20 -0
  250. nat/object_store/in_memory_object_store.py +76 -0
  251. nat/object_store/interfaces.py +84 -0
  252. nat/object_store/models.py +38 -0
  253. nat/object_store/register.py +20 -0
  254. nat/observability/__init__.py +14 -0
  255. nat/observability/exporter/__init__.py +14 -0
  256. nat/observability/exporter/base_exporter.py +449 -0
  257. nat/observability/exporter/exporter.py +78 -0
  258. nat/observability/exporter/file_exporter.py +33 -0
  259. nat/observability/exporter/processing_exporter.py +322 -0
  260. nat/observability/exporter/raw_exporter.py +52 -0
  261. nat/observability/exporter/span_exporter.py +288 -0
  262. nat/observability/exporter_manager.py +335 -0
  263. nat/observability/mixin/__init__.py +14 -0
  264. nat/observability/mixin/batch_config_mixin.py +26 -0
  265. nat/observability/mixin/collector_config_mixin.py +23 -0
  266. nat/observability/mixin/file_mixin.py +288 -0
  267. nat/observability/mixin/file_mode.py +23 -0
  268. nat/observability/mixin/resource_conflict_mixin.py +134 -0
  269. nat/observability/mixin/serialize_mixin.py +61 -0
  270. nat/observability/mixin/type_introspection_mixin.py +183 -0
  271. nat/observability/processor/__init__.py +14 -0
  272. nat/observability/processor/batching_processor.py +310 -0
  273. nat/observability/processor/callback_processor.py +42 -0
  274. nat/observability/processor/intermediate_step_serializer.py +28 -0
  275. nat/observability/processor/processor.py +71 -0
  276. nat/observability/register.py +96 -0
  277. nat/observability/utils/__init__.py +14 -0
  278. nat/observability/utils/dict_utils.py +236 -0
  279. nat/observability/utils/time_utils.py +31 -0
  280. nat/plugins/.namespace +1 -0
  281. nat/profiler/__init__.py +0 -0
  282. nat/profiler/calc/__init__.py +14 -0
  283. nat/profiler/calc/calc_runner.py +627 -0
  284. nat/profiler/calc/calculations.py +288 -0
  285. nat/profiler/calc/data_models.py +188 -0
  286. nat/profiler/calc/plot.py +345 -0
  287. nat/profiler/callbacks/__init__.py +0 -0
  288. nat/profiler/callbacks/agno_callback_handler.py +295 -0
  289. nat/profiler/callbacks/base_callback_class.py +20 -0
  290. nat/profiler/callbacks/langchain_callback_handler.py +290 -0
  291. nat/profiler/callbacks/llama_index_callback_handler.py +205 -0
  292. nat/profiler/callbacks/semantic_kernel_callback_handler.py +238 -0
  293. nat/profiler/callbacks/token_usage_base_model.py +27 -0
  294. nat/profiler/data_frame_row.py +51 -0
  295. nat/profiler/data_models.py +24 -0
  296. nat/profiler/decorators/__init__.py +0 -0
  297. nat/profiler/decorators/framework_wrapper.py +131 -0
  298. nat/profiler/decorators/function_tracking.py +254 -0
  299. nat/profiler/forecasting/__init__.py +0 -0
  300. nat/profiler/forecasting/config.py +18 -0
  301. nat/profiler/forecasting/model_trainer.py +75 -0
  302. nat/profiler/forecasting/models/__init__.py +22 -0
  303. nat/profiler/forecasting/models/forecasting_base_model.py +40 -0
  304. nat/profiler/forecasting/models/linear_model.py +197 -0
  305. nat/profiler/forecasting/models/random_forest_regressor.py +269 -0
  306. nat/profiler/inference_metrics_model.py +28 -0
  307. nat/profiler/inference_optimization/__init__.py +0 -0
  308. nat/profiler/inference_optimization/bottleneck_analysis/__init__.py +0 -0
  309. nat/profiler/inference_optimization/bottleneck_analysis/nested_stack_analysis.py +460 -0
  310. nat/profiler/inference_optimization/bottleneck_analysis/simple_stack_analysis.py +258 -0
  311. nat/profiler/inference_optimization/data_models.py +386 -0
  312. nat/profiler/inference_optimization/experimental/__init__.py +0 -0
  313. nat/profiler/inference_optimization/experimental/concurrency_spike_analysis.py +468 -0
  314. nat/profiler/inference_optimization/experimental/prefix_span_analysis.py +405 -0
  315. nat/profiler/inference_optimization/llm_metrics.py +212 -0
  316. nat/profiler/inference_optimization/prompt_caching.py +163 -0
  317. nat/profiler/inference_optimization/token_uniqueness.py +107 -0
  318. nat/profiler/inference_optimization/workflow_runtimes.py +72 -0
  319. nat/profiler/intermediate_property_adapter.py +102 -0
  320. nat/profiler/profile_runner.py +473 -0
  321. nat/profiler/utils.py +184 -0
  322. nat/registry_handlers/__init__.py +0 -0
  323. nat/registry_handlers/local/__init__.py +0 -0
  324. nat/registry_handlers/local/local_handler.py +176 -0
  325. nat/registry_handlers/local/register_local.py +37 -0
  326. nat/registry_handlers/metadata_factory.py +60 -0
  327. nat/registry_handlers/package_utils.py +571 -0
  328. nat/registry_handlers/pypi/__init__.py +0 -0
  329. nat/registry_handlers/pypi/pypi_handler.py +251 -0
  330. nat/registry_handlers/pypi/register_pypi.py +40 -0
  331. nat/registry_handlers/register.py +21 -0
  332. nat/registry_handlers/registry_handler_base.py +157 -0
  333. nat/registry_handlers/rest/__init__.py +0 -0
  334. nat/registry_handlers/rest/register_rest.py +56 -0
  335. nat/registry_handlers/rest/rest_handler.py +237 -0
  336. nat/registry_handlers/schemas/__init__.py +0 -0
  337. nat/registry_handlers/schemas/headers.py +42 -0
  338. nat/registry_handlers/schemas/package.py +68 -0
  339. nat/registry_handlers/schemas/publish.py +68 -0
  340. nat/registry_handlers/schemas/pull.py +82 -0
  341. nat/registry_handlers/schemas/remove.py +36 -0
  342. nat/registry_handlers/schemas/search.py +91 -0
  343. nat/registry_handlers/schemas/status.py +47 -0
  344. nat/retriever/__init__.py +0 -0
  345. nat/retriever/interface.py +41 -0
  346. nat/retriever/milvus/__init__.py +14 -0
  347. nat/retriever/milvus/register.py +81 -0
  348. nat/retriever/milvus/retriever.py +228 -0
  349. nat/retriever/models.py +77 -0
  350. nat/retriever/nemo_retriever/__init__.py +14 -0
  351. nat/retriever/nemo_retriever/register.py +60 -0
  352. nat/retriever/nemo_retriever/retriever.py +190 -0
  353. nat/retriever/register.py +22 -0
  354. nat/runtime/__init__.py +14 -0
  355. nat/runtime/loader.py +220 -0
  356. nat/runtime/runner.py +195 -0
  357. nat/runtime/session.py +162 -0
  358. nat/runtime/user_metadata.py +130 -0
  359. nat/settings/__init__.py +0 -0
  360. nat/settings/global_settings.py +318 -0
  361. nat/test/.namespace +1 -0
  362. nat/tool/__init__.py +0 -0
  363. nat/tool/chat_completion.py +74 -0
  364. nat/tool/code_execution/README.md +151 -0
  365. nat/tool/code_execution/__init__.py +0 -0
  366. nat/tool/code_execution/code_sandbox.py +267 -0
  367. nat/tool/code_execution/local_sandbox/.gitignore +1 -0
  368. nat/tool/code_execution/local_sandbox/Dockerfile.sandbox +60 -0
  369. nat/tool/code_execution/local_sandbox/__init__.py +13 -0
  370. nat/tool/code_execution/local_sandbox/local_sandbox_server.py +198 -0
  371. nat/tool/code_execution/local_sandbox/sandbox.requirements.txt +6 -0
  372. nat/tool/code_execution/local_sandbox/start_local_sandbox.sh +50 -0
  373. nat/tool/code_execution/register.py +74 -0
  374. nat/tool/code_execution/test_code_execution_sandbox.py +414 -0
  375. nat/tool/code_execution/utils.py +100 -0
  376. nat/tool/datetime_tools.py +42 -0
  377. nat/tool/document_search.py +141 -0
  378. nat/tool/github_tools/__init__.py +0 -0
  379. nat/tool/github_tools/create_github_commit.py +133 -0
  380. nat/tool/github_tools/create_github_issue.py +87 -0
  381. nat/tool/github_tools/create_github_pr.py +106 -0
  382. nat/tool/github_tools/get_github_file.py +106 -0
  383. nat/tool/github_tools/get_github_issue.py +166 -0
  384. nat/tool/github_tools/get_github_pr.py +256 -0
  385. nat/tool/github_tools/update_github_issue.py +100 -0
  386. nat/tool/mcp/__init__.py +14 -0
  387. nat/tool/mcp/exceptions.py +142 -0
  388. nat/tool/mcp/mcp_client.py +255 -0
  389. nat/tool/mcp/mcp_tool.py +96 -0
  390. nat/tool/memory_tools/__init__.py +0 -0
  391. nat/tool/memory_tools/add_memory_tool.py +79 -0
  392. nat/tool/memory_tools/delete_memory_tool.py +67 -0
  393. nat/tool/memory_tools/get_memory_tool.py +72 -0
  394. nat/tool/nvidia_rag.py +95 -0
  395. nat/tool/register.py +38 -0
  396. nat/tool/retriever.py +94 -0
  397. nat/tool/server_tools.py +66 -0
  398. nat/utils/__init__.py +0 -0
  399. nat/utils/data_models/__init__.py +0 -0
  400. nat/utils/data_models/schema_validator.py +58 -0
  401. nat/utils/debugging_utils.py +43 -0
  402. nat/utils/dump_distro_mapping.py +32 -0
  403. nat/utils/exception_handlers/__init__.py +0 -0
  404. nat/utils/exception_handlers/automatic_retries.py +289 -0
  405. nat/utils/exception_handlers/mcp.py +211 -0
  406. nat/utils/exception_handlers/schemas.py +114 -0
  407. nat/utils/io/__init__.py +0 -0
  408. nat/utils/io/model_processing.py +28 -0
  409. nat/utils/io/yaml_tools.py +119 -0
  410. nat/utils/log_utils.py +37 -0
  411. nat/utils/metadata_utils.py +74 -0
  412. nat/utils/optional_imports.py +142 -0
  413. nat/utils/producer_consumer_queue.py +178 -0
  414. nat/utils/reactive/__init__.py +0 -0
  415. nat/utils/reactive/base/__init__.py +0 -0
  416. nat/utils/reactive/base/observable_base.py +65 -0
  417. nat/utils/reactive/base/observer_base.py +55 -0
  418. nat/utils/reactive/base/subject_base.py +79 -0
  419. nat/utils/reactive/observable.py +59 -0
  420. nat/utils/reactive/observer.py +76 -0
  421. nat/utils/reactive/subject.py +131 -0
  422. nat/utils/reactive/subscription.py +49 -0
  423. nat/utils/settings/__init__.py +0 -0
  424. nat/utils/settings/global_settings.py +197 -0
  425. nat/utils/string_utils.py +38 -0
  426. nat/utils/type_converter.py +290 -0
  427. nat/utils/type_utils.py +484 -0
  428. nat/utils/url_utils.py +27 -0
  429. nvidia_nat-1.2.0.dist-info/METADATA +365 -0
  430. nvidia_nat-1.2.0.dist-info/RECORD +435 -0
  431. nvidia_nat-1.2.0.dist-info/WHEEL +5 -0
  432. nvidia_nat-1.2.0.dist-info/entry_points.txt +21 -0
  433. nvidia_nat-1.2.0.dist-info/licenses/LICENSE-3rd-party.txt +5478 -0
  434. nvidia_nat-1.2.0.dist-info/licenses/LICENSE.md +201 -0
  435. nvidia_nat-1.2.0.dist-info/top_level.txt +2 -0
@@ -0,0 +1,488 @@
1
+ # SPDX-FileCopyrightText: Copyright (c) 2024-2025, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2
+ # SPDX-License-Identifier: Apache-2.0
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+
16
+ from contextlib import asynccontextmanager
17
+
18
+ from nat.builder.framework_enum import LLMFrameworkEnum
19
+ from nat.cli.type_registry import AuthProviderBuildCallableT
20
+ from nat.cli.type_registry import AuthProviderRegisteredCallableT
21
+ from nat.cli.type_registry import EmbedderClientBuildCallableT
22
+ from nat.cli.type_registry import EmbedderClientRegisteredCallableT
23
+ from nat.cli.type_registry import EmbedderProviderBuildCallableT
24
+ from nat.cli.type_registry import EmbedderProviderRegisteredCallableT
25
+ from nat.cli.type_registry import EvaluatorBuildCallableT
26
+ from nat.cli.type_registry import EvaluatorRegisteredCallableT
27
+ from nat.cli.type_registry import FrontEndBuildCallableT
28
+ from nat.cli.type_registry import FrontEndRegisteredCallableT
29
+ from nat.cli.type_registry import FunctionBuildCallableT
30
+ from nat.cli.type_registry import FunctionRegisteredCallableT
31
+ from nat.cli.type_registry import LLMClientBuildCallableT
32
+ from nat.cli.type_registry import LLMClientRegisteredCallableT
33
+ from nat.cli.type_registry import LLMProviderBuildCallableT
34
+ from nat.cli.type_registry import LoggingMethodBuildCallableT
35
+ from nat.cli.type_registry import LoggingMethodConfigT
36
+ from nat.cli.type_registry import LoggingMethodRegisteredCallableT
37
+ from nat.cli.type_registry import MemoryBuildCallableT
38
+ from nat.cli.type_registry import MemoryRegisteredCallableT
39
+ from nat.cli.type_registry import ObjectStoreBuildCallableT
40
+ from nat.cli.type_registry import ObjectStoreRegisteredCallableT
41
+ from nat.cli.type_registry import RegisteredLoggingMethod
42
+ from nat.cli.type_registry import RegisteredTelemetryExporter
43
+ from nat.cli.type_registry import RegisteredToolWrapper
44
+ from nat.cli.type_registry import RegistryHandlerBuildCallableT
45
+ from nat.cli.type_registry import RegistryHandlerRegisteredCallableT
46
+ from nat.cli.type_registry import RetrieverClientBuildCallableT
47
+ from nat.cli.type_registry import RetrieverClientRegisteredCallableT
48
+ from nat.cli.type_registry import RetrieverProviderBuildCallableT
49
+ from nat.cli.type_registry import RetrieverProviderRegisteredCallableT
50
+ from nat.cli.type_registry import TeleExporterRegisteredCallableT
51
+ from nat.cli.type_registry import TelemetryExporterBuildCallableT
52
+ from nat.cli.type_registry import TelemetryExporterConfigT
53
+ from nat.cli.type_registry import ToolWrapperBuildCallableT
54
+ from nat.cli.type_registry import TTCStrategyBuildCallableT
55
+ from nat.cli.type_registry import TTCStrategyRegisterCallableT
56
+ from nat.data_models.authentication import AuthProviderBaseConfigT
57
+ from nat.data_models.component import ComponentEnum
58
+ from nat.data_models.discovery_metadata import DiscoveryMetadata
59
+ from nat.data_models.embedder import EmbedderBaseConfigT
60
+ from nat.data_models.evaluator import EvaluatorBaseConfigT
61
+ from nat.data_models.front_end import FrontEndConfigT
62
+ from nat.data_models.function import FunctionConfigT
63
+ from nat.data_models.llm import LLMBaseConfigT
64
+ from nat.data_models.memory import MemoryBaseConfigT
65
+ from nat.data_models.object_store import ObjectStoreBaseConfigT
66
+ from nat.data_models.registry_handler import RegistryHandlerBaseConfigT
67
+ from nat.data_models.retriever import RetrieverBaseConfigT
68
+
69
+
70
+ def register_telemetry_exporter(config_type: type[TelemetryExporterConfigT]):
71
+ """
72
+ Register a workflow with optional framework_wrappers for automatic profiler hooking.
73
+ """
74
+
75
+ def register_inner(
76
+ fn: TelemetryExporterBuildCallableT[TelemetryExporterConfigT]
77
+ ) -> TeleExporterRegisteredCallableT[TelemetryExporterConfigT]:
78
+ from .type_registry import GlobalTypeRegistry
79
+
80
+ context_manager_fn = asynccontextmanager(fn)
81
+
82
+ discovery_metadata = DiscoveryMetadata.from_config_type(config_type=config_type,
83
+ component_type=ComponentEnum.TRACING)
84
+
85
+ GlobalTypeRegistry.get().register_telemetry_exporter(
86
+ RegisteredTelemetryExporter(full_type=config_type.full_type,
87
+ config_type=config_type,
88
+ build_fn=context_manager_fn,
89
+ discovery_metadata=discovery_metadata))
90
+
91
+ return context_manager_fn
92
+
93
+ return register_inner
94
+
95
+
96
+ def register_logging_method(config_type: type[LoggingMethodConfigT]):
97
+
98
+ def register_inner(
99
+ fn: LoggingMethodBuildCallableT[LoggingMethodConfigT]
100
+ ) -> LoggingMethodRegisteredCallableT[LoggingMethodConfigT]:
101
+ from .type_registry import GlobalTypeRegistry
102
+
103
+ context_manager_fn = asynccontextmanager(fn)
104
+
105
+ discovery_metadata = DiscoveryMetadata.from_config_type(config_type=config_type,
106
+ component_type=ComponentEnum.LOGGING)
107
+
108
+ GlobalTypeRegistry.get().register_logging_method(
109
+ RegisteredLoggingMethod(full_type=config_type.full_type,
110
+ config_type=config_type,
111
+ build_fn=context_manager_fn,
112
+ discovery_metadata=discovery_metadata))
113
+
114
+ return context_manager_fn
115
+
116
+ return register_inner
117
+
118
+
119
+ def register_front_end(config_type: type[FrontEndConfigT]):
120
+ """
121
+ Register a front end which is responsible for hosting a workflow.
122
+ """
123
+
124
+ def register_front_end_inner(
125
+ fn: FrontEndBuildCallableT[FrontEndConfigT]) -> FrontEndRegisteredCallableT[FrontEndConfigT]:
126
+ from .type_registry import GlobalTypeRegistry
127
+ from .type_registry import RegisteredFrontEndInfo
128
+
129
+ context_manager_fn = asynccontextmanager(fn)
130
+
131
+ discovery_metadata = DiscoveryMetadata.from_config_type(config_type=config_type,
132
+ component_type=ComponentEnum.FRONT_END)
133
+
134
+ GlobalTypeRegistry.get().register_front_end(
135
+ RegisteredFrontEndInfo(full_type=config_type.full_type,
136
+ config_type=config_type,
137
+ build_fn=context_manager_fn,
138
+ discovery_metadata=discovery_metadata))
139
+
140
+ return context_manager_fn
141
+
142
+ return register_front_end_inner
143
+
144
+
145
+ def register_function(config_type: type[FunctionConfigT],
146
+ framework_wrappers: list[LLMFrameworkEnum | str] | None = None):
147
+ """
148
+ Register a workflow with optional framework_wrappers for automatic profiler hooking.
149
+ """
150
+
151
+ def register_function_inner(
152
+ fn: FunctionBuildCallableT[FunctionConfigT]) -> FunctionRegisteredCallableT[FunctionConfigT]:
153
+ from .type_registry import GlobalTypeRegistry
154
+ from .type_registry import RegisteredFunctionInfo
155
+
156
+ context_manager_fn = asynccontextmanager(fn)
157
+
158
+ if framework_wrappers is None:
159
+ framework_wrappers_list: list[str] = []
160
+ else:
161
+ framework_wrappers_list = list(framework_wrappers)
162
+
163
+ discovery_metadata = DiscoveryMetadata.from_config_type(config_type=config_type,
164
+ component_type=ComponentEnum.FUNCTION)
165
+
166
+ GlobalTypeRegistry.get().register_function(
167
+ RegisteredFunctionInfo(
168
+ full_type=config_type.full_type,
169
+ config_type=config_type,
170
+ build_fn=context_manager_fn,
171
+ framework_wrappers=framework_wrappers_list,
172
+ discovery_metadata=discovery_metadata,
173
+ ))
174
+
175
+ return context_manager_fn
176
+
177
+ return register_function_inner
178
+
179
+
180
+ def register_llm_provider(config_type: type[LLMBaseConfigT]):
181
+
182
+ def register_llm_provider_inner(
183
+ fn: LLMProviderBuildCallableT[LLMBaseConfigT]) -> LLMClientRegisteredCallableT[LLMBaseConfigT]:
184
+ from .type_registry import GlobalTypeRegistry
185
+ from .type_registry import RegisteredLLMProviderInfo
186
+
187
+ context_manager_fn = asynccontextmanager(fn)
188
+
189
+ discovery_metadata = DiscoveryMetadata.from_config_type(config_type=config_type,
190
+ component_type=ComponentEnum.LLM_PROVIDER)
191
+
192
+ GlobalTypeRegistry.get().register_llm_provider(
193
+ RegisteredLLMProviderInfo(full_type=config_type.full_type,
194
+ config_type=config_type,
195
+ build_fn=context_manager_fn,
196
+ discovery_metadata=discovery_metadata))
197
+
198
+ return context_manager_fn
199
+
200
+ return register_llm_provider_inner
201
+
202
+
203
+ def register_auth_provider(config_type: type[AuthProviderBaseConfigT]):
204
+
205
+ def register_auth_provider_inner(
206
+ fn: AuthProviderBuildCallableT[AuthProviderBaseConfigT]
207
+ ) -> AuthProviderRegisteredCallableT[AuthProviderBaseConfigT]:
208
+ from .type_registry import GlobalTypeRegistry
209
+ from .type_registry import RegisteredAuthProviderInfo
210
+
211
+ context_manager_fn = asynccontextmanager(fn)
212
+
213
+ discovery_metadata = DiscoveryMetadata.from_config_type(config_type=config_type,
214
+ component_type=ComponentEnum.AUTHENTICATION_PROVIDER)
215
+
216
+ GlobalTypeRegistry.get().register_auth_provider(
217
+ RegisteredAuthProviderInfo(full_type=config_type.full_type,
218
+ config_type=config_type,
219
+ build_fn=context_manager_fn,
220
+ discovery_metadata=discovery_metadata))
221
+
222
+ return context_manager_fn
223
+
224
+ return register_auth_provider_inner
225
+
226
+
227
+ def register_llm_client(config_type: type[LLMBaseConfigT], wrapper_type: LLMFrameworkEnum | str):
228
+
229
+ def register_llm_client_inner(
230
+ fn: LLMClientBuildCallableT[LLMBaseConfigT]) -> LLMClientRegisteredCallableT[LLMBaseConfigT]:
231
+ from .type_registry import GlobalTypeRegistry
232
+ from .type_registry import RegisteredLLMClientInfo
233
+
234
+ context_manager_fn = asynccontextmanager(fn)
235
+
236
+ discovery_metadata = DiscoveryMetadata.from_provider_framework_map(config_type=config_type,
237
+ wrapper_type=wrapper_type,
238
+ provider_type=ComponentEnum.LLM_PROVIDER,
239
+ component_type=ComponentEnum.LLM_CLIENT)
240
+ GlobalTypeRegistry.get().register_llm_client(
241
+ RegisteredLLMClientInfo(full_type=config_type.full_type,
242
+ config_type=config_type,
243
+ build_fn=context_manager_fn,
244
+ llm_framework=wrapper_type,
245
+ discovery_metadata=discovery_metadata))
246
+
247
+ return context_manager_fn
248
+
249
+ return register_llm_client_inner
250
+
251
+
252
+ def register_embedder_provider(config_type: type[EmbedderBaseConfigT]):
253
+
254
+ def register_embedder_provider_inner(
255
+ fn: EmbedderProviderBuildCallableT[EmbedderBaseConfigT]
256
+ ) -> EmbedderProviderRegisteredCallableT[EmbedderBaseConfigT]:
257
+ from .type_registry import GlobalTypeRegistry
258
+ from .type_registry import RegisteredEmbedderProviderInfo
259
+
260
+ context_manager_fn = asynccontextmanager(fn)
261
+
262
+ discovery_metadata = DiscoveryMetadata.from_config_type(config_type=config_type,
263
+ component_type=ComponentEnum.EMBEDDER_PROVIDER)
264
+
265
+ GlobalTypeRegistry.get().register_embedder_provider(
266
+ RegisteredEmbedderProviderInfo(full_type=config_type.full_type,
267
+ config_type=config_type,
268
+ build_fn=context_manager_fn,
269
+ discovery_metadata=discovery_metadata))
270
+
271
+ return context_manager_fn
272
+
273
+ return register_embedder_provider_inner
274
+
275
+
276
+ def register_embedder_client(config_type: type[EmbedderBaseConfigT], wrapper_type: LLMFrameworkEnum | str):
277
+
278
+ def register_embedder_client_inner(
279
+ fn: EmbedderClientBuildCallableT[EmbedderBaseConfigT]
280
+ ) -> EmbedderClientRegisteredCallableT[EmbedderBaseConfigT]:
281
+ from .type_registry import GlobalTypeRegistry
282
+ from .type_registry import RegisteredEmbedderClientInfo
283
+
284
+ context_manager_fn = asynccontextmanager(fn)
285
+
286
+ discovery_metadata = DiscoveryMetadata.from_provider_framework_map(
287
+ config_type=config_type,
288
+ wrapper_type=wrapper_type,
289
+ provider_type=ComponentEnum.EMBEDDER_PROVIDER,
290
+ component_type=ComponentEnum.EMBEDDER_CLIENT)
291
+
292
+ GlobalTypeRegistry.get().register_embedder_client(
293
+ RegisteredEmbedderClientInfo(full_type=config_type.full_type,
294
+ config_type=config_type,
295
+ build_fn=context_manager_fn,
296
+ llm_framework=wrapper_type,
297
+ discovery_metadata=discovery_metadata))
298
+
299
+ return context_manager_fn
300
+
301
+ return register_embedder_client_inner
302
+
303
+
304
+ def register_evaluator(config_type: type[EvaluatorBaseConfigT]):
305
+
306
+ def register_evaluator_inner(
307
+ fn: EvaluatorBuildCallableT[EvaluatorBaseConfigT]) -> EvaluatorRegisteredCallableT[EvaluatorBaseConfigT]:
308
+ from .type_registry import GlobalTypeRegistry
309
+ from .type_registry import RegisteredEvaluatorInfo
310
+
311
+ context_manager_fn = asynccontextmanager(fn)
312
+
313
+ discovery_metadata = DiscoveryMetadata.from_config_type(config_type=config_type,
314
+ component_type=ComponentEnum.EVALUATOR)
315
+
316
+ GlobalTypeRegistry.get().register_evaluator(
317
+ RegisteredEvaluatorInfo(full_type=config_type.full_type,
318
+ config_type=config_type,
319
+ build_fn=context_manager_fn,
320
+ discovery_metadata=discovery_metadata))
321
+
322
+ return context_manager_fn
323
+
324
+ return register_evaluator_inner
325
+
326
+
327
+ def register_memory(config_type: type[MemoryBaseConfigT]):
328
+
329
+ def register_memory_inner(
330
+ fn: MemoryBuildCallableT[MemoryBaseConfigT]) -> MemoryRegisteredCallableT[MemoryBaseConfigT]:
331
+ from .type_registry import GlobalTypeRegistry
332
+ from .type_registry import RegisteredMemoryInfo
333
+
334
+ context_manager_fn = asynccontextmanager(fn)
335
+
336
+ discovery_metadata = DiscoveryMetadata.from_config_type(config_type=config_type,
337
+ component_type=ComponentEnum.MEMORY)
338
+
339
+ GlobalTypeRegistry.get().register_memory(
340
+ RegisteredMemoryInfo(full_type=config_type.full_type,
341
+ config_type=config_type,
342
+ build_fn=context_manager_fn,
343
+ discovery_metadata=discovery_metadata))
344
+
345
+ return context_manager_fn
346
+
347
+ return register_memory_inner
348
+
349
+
350
+ def register_object_store(config_type: type[ObjectStoreBaseConfigT]):
351
+
352
+ def register_kv_store_inner(
353
+ fn: ObjectStoreBuildCallableT[ObjectStoreBaseConfigT]
354
+ ) -> ObjectStoreRegisteredCallableT[ObjectStoreBaseConfigT]:
355
+ from .type_registry import GlobalTypeRegistry
356
+ from .type_registry import RegisteredObjectStoreInfo
357
+
358
+ context_manager_fn = asynccontextmanager(fn)
359
+
360
+ discovery_metadata = DiscoveryMetadata.from_config_type(config_type=config_type,
361
+ component_type=ComponentEnum.OBJECT_STORE)
362
+
363
+ GlobalTypeRegistry.get().register_object_store(
364
+ RegisteredObjectStoreInfo(full_type=config_type.full_type,
365
+ config_type=config_type,
366
+ build_fn=context_manager_fn,
367
+ discovery_metadata=discovery_metadata))
368
+
369
+ return context_manager_fn
370
+
371
+ return register_kv_store_inner
372
+
373
+
374
+ def register_ttc_strategy(config_type: type[TTCStrategyRegisterCallableT]):
375
+
376
+ def register_ttc_strategy_inner(
377
+ fn: TTCStrategyBuildCallableT[TTCStrategyRegisterCallableT]
378
+ ) -> TTCStrategyRegisterCallableT[TTCStrategyRegisterCallableT]:
379
+ from .type_registry import GlobalTypeRegistry
380
+ from .type_registry import RegisteredTTCStrategyInfo
381
+
382
+ context_manager_fn = asynccontextmanager(fn)
383
+
384
+ discovery_metadata = DiscoveryMetadata.from_config_type(config_type=config_type,
385
+ component_type=ComponentEnum.TTC_STRATEGY)
386
+
387
+ GlobalTypeRegistry.get().register_ttc_strategy(
388
+ RegisteredTTCStrategyInfo(full_type=config_type.full_type,
389
+ config_type=config_type,
390
+ build_fn=context_manager_fn,
391
+ discovery_metadata=discovery_metadata))
392
+
393
+ return context_manager_fn
394
+
395
+ return register_ttc_strategy_inner
396
+
397
+
398
+ def register_retriever_provider(config_type: type[RetrieverBaseConfigT]):
399
+
400
+ def register_retriever_provider_inner(
401
+ fn: RetrieverProviderBuildCallableT[RetrieverBaseConfigT]
402
+ ) -> RetrieverProviderRegisteredCallableT[RetrieverBaseConfigT]:
403
+ from .type_registry import GlobalTypeRegistry
404
+ from .type_registry import RegisteredRetrieverProviderInfo
405
+
406
+ context_manager_fn = asynccontextmanager(fn)
407
+
408
+ discovery_metadata = DiscoveryMetadata.from_config_type(config_type=config_type,
409
+ component_type=ComponentEnum.RETRIEVER_PROVIDER)
410
+
411
+ GlobalTypeRegistry.get().register_retriever_provider(
412
+ RegisteredRetrieverProviderInfo(full_type=config_type.full_type,
413
+ config_type=config_type,
414
+ build_fn=context_manager_fn,
415
+ discovery_metadata=discovery_metadata))
416
+
417
+ return context_manager_fn
418
+
419
+ return register_retriever_provider_inner
420
+
421
+
422
+ def register_retriever_client(config_type: type[RetrieverBaseConfigT], wrapper_type: LLMFrameworkEnum | str | None):
423
+
424
+ def register_retriever_client_inner(
425
+ fn: RetrieverClientBuildCallableT[RetrieverBaseConfigT]
426
+ ) -> RetrieverClientRegisteredCallableT[RetrieverBaseConfigT]:
427
+ from .type_registry import GlobalTypeRegistry
428
+ from .type_registry import RegisteredRetrieverClientInfo
429
+
430
+ context_manager_fn = asynccontextmanager(fn)
431
+
432
+ discovery_metadata = DiscoveryMetadata.from_provider_framework_map(
433
+ config_type=config_type,
434
+ wrapper_type=wrapper_type,
435
+ provider_type=ComponentEnum.RETRIEVER_PROVIDER,
436
+ component_type=ComponentEnum.RETRIEVER_CLIENT,
437
+ )
438
+
439
+ GlobalTypeRegistry.get().register_retriever_client(
440
+ RegisteredRetrieverClientInfo(full_type=config_type.full_type,
441
+ config_type=config_type,
442
+ build_fn=context_manager_fn,
443
+ llm_framework=wrapper_type,
444
+ discovery_metadata=discovery_metadata))
445
+
446
+ return context_manager_fn
447
+
448
+ return register_retriever_client_inner
449
+
450
+
451
+ def register_tool_wrapper(wrapper_type: LLMFrameworkEnum | str):
452
+
453
+ def _inner(fn: ToolWrapperBuildCallableT) -> ToolWrapperBuildCallableT:
454
+ from .type_registry import GlobalTypeRegistry
455
+
456
+ discovery_metadata = DiscoveryMetadata.from_fn_wrapper(fn=fn,
457
+ wrapper_type=wrapper_type,
458
+ component_type=ComponentEnum.TOOL_WRAPPER)
459
+ GlobalTypeRegistry.get().register_tool_wrapper(
460
+ RegisteredToolWrapper(llm_framework=wrapper_type, build_fn=fn, discovery_metadata=discovery_metadata))
461
+
462
+ return fn
463
+
464
+ return _inner
465
+
466
+
467
+ def register_registry_handler(config_type: type[RegistryHandlerBaseConfigT]):
468
+
469
+ def register_registry_handler_inner(
470
+ fn: RegistryHandlerBuildCallableT[RegistryHandlerBaseConfigT]
471
+ ) -> RegistryHandlerRegisteredCallableT[RegistryHandlerBaseConfigT]:
472
+ from .type_registry import GlobalTypeRegistry
473
+ from .type_registry import RegisteredRegistryHandlerInfo
474
+
475
+ context_manager_fn = asynccontextmanager(fn)
476
+
477
+ discovery_metadata = DiscoveryMetadata.from_config_type(config_type=config_type,
478
+ component_type=ComponentEnum.REGISTRY_HANDLER)
479
+
480
+ GlobalTypeRegistry.get().register_registry_handler(
481
+ RegisteredRegistryHandlerInfo(full_type=config_type.full_type,
482
+ config_type=config_type,
483
+ build_fn=context_manager_fn,
484
+ discovery_metadata=discovery_metadata))
485
+
486
+ return context_manager_fn
487
+
488
+ return register_registry_handler_inner