nvidia-nat 1.2.0rc5__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/agent/__init__.py +0 -0
  2. aiq/agent/base.py +239 -0
  3. aiq/agent/dual_node.py +67 -0
  4. aiq/agent/react_agent/__init__.py +0 -0
  5. aiq/agent/react_agent/agent.py +355 -0
  6. aiq/agent/react_agent/output_parser.py +104 -0
  7. aiq/agent/react_agent/prompt.py +41 -0
  8. aiq/agent/react_agent/register.py +149 -0
  9. aiq/agent/reasoning_agent/__init__.py +0 -0
  10. aiq/agent/reasoning_agent/reasoning_agent.py +225 -0
  11. aiq/agent/register.py +23 -0
  12. aiq/agent/rewoo_agent/__init__.py +0 -0
  13. aiq/agent/rewoo_agent/agent.py +411 -0
  14. aiq/agent/rewoo_agent/prompt.py +108 -0
  15. aiq/agent/rewoo_agent/register.py +158 -0
  16. aiq/agent/tool_calling_agent/__init__.py +0 -0
  17. aiq/agent/tool_calling_agent/agent.py +119 -0
  18. aiq/agent/tool_calling_agent/register.py +106 -0
  19. aiq/authentication/__init__.py +14 -0
  20. aiq/authentication/api_key/__init__.py +14 -0
  21. aiq/authentication/api_key/api_key_auth_provider.py +96 -0
  22. aiq/authentication/api_key/api_key_auth_provider_config.py +124 -0
  23. aiq/authentication/api_key/register.py +26 -0
  24. aiq/authentication/exceptions/__init__.py +14 -0
  25. aiq/authentication/exceptions/api_key_exceptions.py +38 -0
  26. aiq/authentication/http_basic_auth/__init__.py +0 -0
  27. aiq/authentication/http_basic_auth/http_basic_auth_provider.py +81 -0
  28. aiq/authentication/http_basic_auth/register.py +30 -0
  29. aiq/authentication/interfaces.py +93 -0
  30. aiq/authentication/oauth2/__init__.py +14 -0
  31. aiq/authentication/oauth2/oauth2_auth_code_flow_provider.py +107 -0
  32. aiq/authentication/oauth2/oauth2_auth_code_flow_provider_config.py +39 -0
  33. aiq/authentication/oauth2/register.py +25 -0
  34. aiq/authentication/register.py +21 -0
  35. aiq/builder/__init__.py +0 -0
  36. aiq/builder/builder.py +285 -0
  37. aiq/builder/component_utils.py +316 -0
  38. aiq/builder/context.py +264 -0
  39. aiq/builder/embedder.py +24 -0
  40. aiq/builder/eval_builder.py +161 -0
  41. aiq/builder/evaluator.py +29 -0
  42. aiq/builder/framework_enum.py +24 -0
  43. aiq/builder/front_end.py +73 -0
  44. aiq/builder/function.py +344 -0
  45. aiq/builder/function_base.py +380 -0
  46. aiq/builder/function_info.py +627 -0
  47. aiq/builder/intermediate_step_manager.py +174 -0
  48. aiq/builder/llm.py +25 -0
  49. aiq/builder/retriever.py +25 -0
  50. aiq/builder/user_interaction_manager.py +74 -0
  51. aiq/builder/workflow.py +148 -0
  52. aiq/builder/workflow_builder.py +1117 -0
  53. aiq/cli/__init__.py +14 -0
  54. aiq/cli/cli_utils/__init__.py +0 -0
  55. aiq/cli/cli_utils/config_override.py +231 -0
  56. aiq/cli/cli_utils/validation.py +37 -0
  57. aiq/cli/commands/__init__.py +0 -0
  58. aiq/cli/commands/configure/__init__.py +0 -0
  59. aiq/cli/commands/configure/channel/__init__.py +0 -0
  60. aiq/cli/commands/configure/channel/add.py +28 -0
  61. aiq/cli/commands/configure/channel/channel.py +36 -0
  62. aiq/cli/commands/configure/channel/remove.py +30 -0
  63. aiq/cli/commands/configure/channel/update.py +30 -0
  64. aiq/cli/commands/configure/configure.py +33 -0
  65. aiq/cli/commands/evaluate.py +139 -0
  66. aiq/cli/commands/info/__init__.py +14 -0
  67. aiq/cli/commands/info/info.py +39 -0
  68. aiq/cli/commands/info/list_channels.py +32 -0
  69. aiq/cli/commands/info/list_components.py +129 -0
  70. aiq/cli/commands/info/list_mcp.py +213 -0
  71. aiq/cli/commands/registry/__init__.py +14 -0
  72. aiq/cli/commands/registry/publish.py +88 -0
  73. aiq/cli/commands/registry/pull.py +118 -0
  74. aiq/cli/commands/registry/registry.py +38 -0
  75. aiq/cli/commands/registry/remove.py +108 -0
  76. aiq/cli/commands/registry/search.py +155 -0
  77. aiq/cli/commands/sizing/__init__.py +14 -0
  78. aiq/cli/commands/sizing/calc.py +297 -0
  79. aiq/cli/commands/sizing/sizing.py +27 -0
  80. aiq/cli/commands/start.py +246 -0
  81. aiq/cli/commands/uninstall.py +81 -0
  82. aiq/cli/commands/validate.py +47 -0
  83. aiq/cli/commands/workflow/__init__.py +14 -0
  84. aiq/cli/commands/workflow/templates/__init__.py.j2 +0 -0
  85. aiq/cli/commands/workflow/templates/config.yml.j2 +16 -0
  86. aiq/cli/commands/workflow/templates/pyproject.toml.j2 +22 -0
  87. aiq/cli/commands/workflow/templates/register.py.j2 +5 -0
  88. aiq/cli/commands/workflow/templates/workflow.py.j2 +36 -0
  89. aiq/cli/commands/workflow/workflow.py +37 -0
  90. aiq/cli/commands/workflow/workflow_commands.py +313 -0
  91. aiq/cli/entrypoint.py +135 -0
  92. aiq/cli/main.py +44 -0
  93. aiq/cli/register_workflow.py +488 -0
  94. aiq/cli/type_registry.py +1000 -0
  95. aiq/data_models/__init__.py +14 -0
  96. aiq/data_models/api_server.py +694 -0
  97. aiq/data_models/authentication.py +231 -0
  98. aiq/data_models/common.py +171 -0
  99. aiq/data_models/component.py +54 -0
  100. aiq/data_models/component_ref.py +168 -0
  101. aiq/data_models/config.py +406 -0
  102. aiq/data_models/dataset_handler.py +123 -0
  103. aiq/data_models/discovery_metadata.py +335 -0
  104. aiq/data_models/embedder.py +27 -0
  105. aiq/data_models/evaluate.py +127 -0
  106. aiq/data_models/evaluator.py +26 -0
  107. aiq/data_models/front_end.py +26 -0
  108. aiq/data_models/function.py +30 -0
  109. aiq/data_models/function_dependencies.py +72 -0
  110. aiq/data_models/interactive.py +246 -0
  111. aiq/data_models/intermediate_step.py +302 -0
  112. aiq/data_models/invocation_node.py +38 -0
  113. aiq/data_models/llm.py +27 -0
  114. aiq/data_models/logging.py +26 -0
  115. aiq/data_models/memory.py +27 -0
  116. aiq/data_models/object_store.py +44 -0
  117. aiq/data_models/profiler.py +54 -0
  118. aiq/data_models/registry_handler.py +26 -0
  119. aiq/data_models/retriever.py +30 -0
  120. aiq/data_models/retry_mixin.py +35 -0
  121. aiq/data_models/span.py +187 -0
  122. aiq/data_models/step_adaptor.py +64 -0
  123. aiq/data_models/streaming.py +33 -0
  124. aiq/data_models/swe_bench_model.py +54 -0
  125. aiq/data_models/telemetry_exporter.py +26 -0
  126. aiq/data_models/ttc_strategy.py +30 -0
  127. aiq/embedder/__init__.py +0 -0
  128. aiq/embedder/langchain_client.py +41 -0
  129. aiq/embedder/nim_embedder.py +59 -0
  130. aiq/embedder/openai_embedder.py +43 -0
  131. aiq/embedder/register.py +24 -0
  132. aiq/eval/__init__.py +14 -0
  133. aiq/eval/config.py +60 -0
  134. aiq/eval/dataset_handler/__init__.py +0 -0
  135. aiq/eval/dataset_handler/dataset_downloader.py +106 -0
  136. aiq/eval/dataset_handler/dataset_filter.py +52 -0
  137. aiq/eval/dataset_handler/dataset_handler.py +254 -0
  138. aiq/eval/evaluate.py +506 -0
  139. aiq/eval/evaluator/__init__.py +14 -0
  140. aiq/eval/evaluator/base_evaluator.py +73 -0
  141. aiq/eval/evaluator/evaluator_model.py +45 -0
  142. aiq/eval/intermediate_step_adapter.py +99 -0
  143. aiq/eval/rag_evaluator/__init__.py +0 -0
  144. aiq/eval/rag_evaluator/evaluate.py +178 -0
  145. aiq/eval/rag_evaluator/register.py +143 -0
  146. aiq/eval/register.py +23 -0
  147. aiq/eval/remote_workflow.py +133 -0
  148. aiq/eval/runners/__init__.py +14 -0
  149. aiq/eval/runners/config.py +39 -0
  150. aiq/eval/runners/multi_eval_runner.py +54 -0
  151. aiq/eval/runtime_event_subscriber.py +52 -0
  152. aiq/eval/swe_bench_evaluator/__init__.py +0 -0
  153. aiq/eval/swe_bench_evaluator/evaluate.py +215 -0
  154. aiq/eval/swe_bench_evaluator/register.py +36 -0
  155. aiq/eval/trajectory_evaluator/__init__.py +0 -0
  156. aiq/eval/trajectory_evaluator/evaluate.py +75 -0
  157. aiq/eval/trajectory_evaluator/register.py +40 -0
  158. aiq/eval/tunable_rag_evaluator/__init__.py +0 -0
  159. aiq/eval/tunable_rag_evaluator/evaluate.py +245 -0
  160. aiq/eval/tunable_rag_evaluator/register.py +52 -0
  161. aiq/eval/usage_stats.py +41 -0
  162. aiq/eval/utils/__init__.py +0 -0
  163. aiq/eval/utils/output_uploader.py +140 -0
  164. aiq/eval/utils/tqdm_position_registry.py +40 -0
  165. aiq/eval/utils/weave_eval.py +184 -0
  166. aiq/experimental/__init__.py +0 -0
  167. aiq/experimental/decorators/__init__.py +0 -0
  168. aiq/experimental/decorators/experimental_warning_decorator.py +130 -0
  169. aiq/experimental/test_time_compute/__init__.py +0 -0
  170. aiq/experimental/test_time_compute/editing/__init__.py +0 -0
  171. aiq/experimental/test_time_compute/editing/iterative_plan_refinement_editor.py +147 -0
  172. aiq/experimental/test_time_compute/editing/llm_as_a_judge_editor.py +204 -0
  173. aiq/experimental/test_time_compute/editing/motivation_aware_summarization.py +107 -0
  174. aiq/experimental/test_time_compute/functions/__init__.py +0 -0
  175. aiq/experimental/test_time_compute/functions/execute_score_select_function.py +105 -0
  176. aiq/experimental/test_time_compute/functions/its_tool_orchestration_function.py +205 -0
  177. aiq/experimental/test_time_compute/functions/its_tool_wrapper_function.py +146 -0
  178. aiq/experimental/test_time_compute/functions/plan_select_execute_function.py +224 -0
  179. aiq/experimental/test_time_compute/models/__init__.py +0 -0
  180. aiq/experimental/test_time_compute/models/editor_config.py +132 -0
  181. aiq/experimental/test_time_compute/models/scoring_config.py +112 -0
  182. aiq/experimental/test_time_compute/models/search_config.py +120 -0
  183. aiq/experimental/test_time_compute/models/selection_config.py +154 -0
  184. aiq/experimental/test_time_compute/models/stage_enums.py +43 -0
  185. aiq/experimental/test_time_compute/models/strategy_base.py +66 -0
  186. aiq/experimental/test_time_compute/models/tool_use_config.py +41 -0
  187. aiq/experimental/test_time_compute/models/ttc_item.py +48 -0
  188. aiq/experimental/test_time_compute/register.py +36 -0
  189. aiq/experimental/test_time_compute/scoring/__init__.py +0 -0
  190. aiq/experimental/test_time_compute/scoring/llm_based_agent_scorer.py +168 -0
  191. aiq/experimental/test_time_compute/scoring/llm_based_plan_scorer.py +168 -0
  192. aiq/experimental/test_time_compute/scoring/motivation_aware_scorer.py +111 -0
  193. aiq/experimental/test_time_compute/search/__init__.py +0 -0
  194. aiq/experimental/test_time_compute/search/multi_llm_planner.py +128 -0
  195. aiq/experimental/test_time_compute/search/multi_query_retrieval_search.py +122 -0
  196. aiq/experimental/test_time_compute/search/single_shot_multi_plan_planner.py +128 -0
  197. aiq/experimental/test_time_compute/selection/__init__.py +0 -0
  198. aiq/experimental/test_time_compute/selection/best_of_n_selector.py +63 -0
  199. aiq/experimental/test_time_compute/selection/llm_based_agent_output_selector.py +131 -0
  200. aiq/experimental/test_time_compute/selection/llm_based_output_merging_selector.py +159 -0
  201. aiq/experimental/test_time_compute/selection/llm_based_plan_selector.py +128 -0
  202. aiq/experimental/test_time_compute/selection/threshold_selector.py +58 -0
  203. aiq/front_ends/__init__.py +14 -0
  204. aiq/front_ends/console/__init__.py +14 -0
  205. aiq/front_ends/console/authentication_flow_handler.py +233 -0
  206. aiq/front_ends/console/console_front_end_config.py +32 -0
  207. aiq/front_ends/console/console_front_end_plugin.py +96 -0
  208. aiq/front_ends/console/register.py +25 -0
  209. aiq/front_ends/cron/__init__.py +14 -0
  210. aiq/front_ends/fastapi/__init__.py +14 -0
  211. aiq/front_ends/fastapi/auth_flow_handlers/__init__.py +0 -0
  212. aiq/front_ends/fastapi/auth_flow_handlers/http_flow_handler.py +27 -0
  213. aiq/front_ends/fastapi/auth_flow_handlers/websocket_flow_handler.py +107 -0
  214. aiq/front_ends/fastapi/fastapi_front_end_config.py +234 -0
  215. aiq/front_ends/fastapi/fastapi_front_end_controller.py +68 -0
  216. aiq/front_ends/fastapi/fastapi_front_end_plugin.py +116 -0
  217. aiq/front_ends/fastapi/fastapi_front_end_plugin_worker.py +1092 -0
  218. aiq/front_ends/fastapi/html_snippets/__init__.py +14 -0
  219. aiq/front_ends/fastapi/html_snippets/auth_code_grant_success.py +35 -0
  220. aiq/front_ends/fastapi/intermediate_steps_subscriber.py +80 -0
  221. aiq/front_ends/fastapi/job_store.py +183 -0
  222. aiq/front_ends/fastapi/main.py +72 -0
  223. aiq/front_ends/fastapi/message_handler.py +298 -0
  224. aiq/front_ends/fastapi/message_validator.py +345 -0
  225. aiq/front_ends/fastapi/register.py +25 -0
  226. aiq/front_ends/fastapi/response_helpers.py +195 -0
  227. aiq/front_ends/fastapi/step_adaptor.py +321 -0
  228. aiq/front_ends/mcp/__init__.py +14 -0
  229. aiq/front_ends/mcp/mcp_front_end_config.py +32 -0
  230. aiq/front_ends/mcp/mcp_front_end_plugin.py +93 -0
  231. aiq/front_ends/mcp/register.py +27 -0
  232. aiq/front_ends/mcp/tool_converter.py +242 -0
  233. aiq/front_ends/register.py +22 -0
  234. aiq/front_ends/simple_base/__init__.py +14 -0
  235. aiq/front_ends/simple_base/simple_front_end_plugin_base.py +54 -0
  236. aiq/llm/__init__.py +0 -0
  237. aiq/llm/aws_bedrock_llm.py +57 -0
  238. aiq/llm/nim_llm.py +46 -0
  239. aiq/llm/openai_llm.py +46 -0
  240. aiq/llm/register.py +23 -0
  241. aiq/llm/utils/__init__.py +14 -0
  242. aiq/llm/utils/env_config_value.py +94 -0
  243. aiq/llm/utils/error.py +17 -0
  244. aiq/memory/__init__.py +20 -0
  245. aiq/memory/interfaces.py +183 -0
  246. aiq/memory/models.py +112 -0
  247. aiq/meta/module_to_distro.json +3 -0
  248. aiq/meta/pypi.md +58 -0
  249. aiq/object_store/__init__.py +20 -0
  250. aiq/object_store/in_memory_object_store.py +76 -0
  251. aiq/object_store/interfaces.py +84 -0
  252. aiq/object_store/models.py +36 -0
  253. aiq/object_store/register.py +20 -0
  254. aiq/observability/__init__.py +14 -0
  255. aiq/observability/exporter/__init__.py +14 -0
  256. aiq/observability/exporter/base_exporter.py +449 -0
  257. aiq/observability/exporter/exporter.py +78 -0
  258. aiq/observability/exporter/file_exporter.py +33 -0
  259. aiq/observability/exporter/processing_exporter.py +322 -0
  260. aiq/observability/exporter/raw_exporter.py +52 -0
  261. aiq/observability/exporter/span_exporter.py +265 -0
  262. aiq/observability/exporter_manager.py +335 -0
  263. aiq/observability/mixin/__init__.py +14 -0
  264. aiq/observability/mixin/batch_config_mixin.py +26 -0
  265. aiq/observability/mixin/collector_config_mixin.py +23 -0
  266. aiq/observability/mixin/file_mixin.py +288 -0
  267. aiq/observability/mixin/file_mode.py +23 -0
  268. aiq/observability/mixin/resource_conflict_mixin.py +134 -0
  269. aiq/observability/mixin/serialize_mixin.py +61 -0
  270. aiq/observability/mixin/type_introspection_mixin.py +183 -0
  271. aiq/observability/processor/__init__.py +14 -0
  272. aiq/observability/processor/batching_processor.py +310 -0
  273. aiq/observability/processor/callback_processor.py +42 -0
  274. aiq/observability/processor/intermediate_step_serializer.py +28 -0
  275. aiq/observability/processor/processor.py +71 -0
  276. aiq/observability/register.py +96 -0
  277. aiq/observability/utils/__init__.py +14 -0
  278. aiq/observability/utils/dict_utils.py +236 -0
  279. aiq/observability/utils/time_utils.py +31 -0
  280. aiq/plugins/.namespace +1 -0
  281. aiq/profiler/__init__.py +0 -0
  282. aiq/profiler/calc/__init__.py +14 -0
  283. aiq/profiler/calc/calc_runner.py +627 -0
  284. aiq/profiler/calc/calculations.py +288 -0
  285. aiq/profiler/calc/data_models.py +188 -0
  286. aiq/profiler/calc/plot.py +345 -0
  287. aiq/profiler/callbacks/__init__.py +0 -0
  288. aiq/profiler/callbacks/agno_callback_handler.py +295 -0
  289. aiq/profiler/callbacks/base_callback_class.py +20 -0
  290. aiq/profiler/callbacks/langchain_callback_handler.py +290 -0
  291. aiq/profiler/callbacks/llama_index_callback_handler.py +205 -0
  292. aiq/profiler/callbacks/semantic_kernel_callback_handler.py +238 -0
  293. aiq/profiler/callbacks/token_usage_base_model.py +27 -0
  294. aiq/profiler/data_frame_row.py +51 -0
  295. aiq/profiler/data_models.py +24 -0
  296. aiq/profiler/decorators/__init__.py +0 -0
  297. aiq/profiler/decorators/framework_wrapper.py +131 -0
  298. aiq/profiler/decorators/function_tracking.py +254 -0
  299. aiq/profiler/forecasting/__init__.py +0 -0
  300. aiq/profiler/forecasting/config.py +18 -0
  301. aiq/profiler/forecasting/model_trainer.py +75 -0
  302. aiq/profiler/forecasting/models/__init__.py +22 -0
  303. aiq/profiler/forecasting/models/forecasting_base_model.py +40 -0
  304. aiq/profiler/forecasting/models/linear_model.py +196 -0
  305. aiq/profiler/forecasting/models/random_forest_regressor.py +268 -0
  306. aiq/profiler/inference_metrics_model.py +28 -0
  307. aiq/profiler/inference_optimization/__init__.py +0 -0
  308. aiq/profiler/inference_optimization/bottleneck_analysis/__init__.py +0 -0
  309. aiq/profiler/inference_optimization/bottleneck_analysis/nested_stack_analysis.py +460 -0
  310. aiq/profiler/inference_optimization/bottleneck_analysis/simple_stack_analysis.py +258 -0
  311. aiq/profiler/inference_optimization/data_models.py +386 -0
  312. aiq/profiler/inference_optimization/experimental/__init__.py +0 -0
  313. aiq/profiler/inference_optimization/experimental/concurrency_spike_analysis.py +468 -0
  314. aiq/profiler/inference_optimization/experimental/prefix_span_analysis.py +405 -0
  315. aiq/profiler/inference_optimization/llm_metrics.py +212 -0
  316. aiq/profiler/inference_optimization/prompt_caching.py +163 -0
  317. aiq/profiler/inference_optimization/token_uniqueness.py +107 -0
  318. aiq/profiler/inference_optimization/workflow_runtimes.py +72 -0
  319. aiq/profiler/intermediate_property_adapter.py +102 -0
  320. aiq/profiler/profile_runner.py +473 -0
  321. aiq/profiler/utils.py +184 -0
  322. aiq/registry_handlers/__init__.py +0 -0
  323. aiq/registry_handlers/local/__init__.py +0 -0
  324. aiq/registry_handlers/local/local_handler.py +176 -0
  325. aiq/registry_handlers/local/register_local.py +37 -0
  326. aiq/registry_handlers/metadata_factory.py +60 -0
  327. aiq/registry_handlers/package_utils.py +567 -0
  328. aiq/registry_handlers/pypi/__init__.py +0 -0
  329. aiq/registry_handlers/pypi/pypi_handler.py +251 -0
  330. aiq/registry_handlers/pypi/register_pypi.py +40 -0
  331. aiq/registry_handlers/register.py +21 -0
  332. aiq/registry_handlers/registry_handler_base.py +157 -0
  333. aiq/registry_handlers/rest/__init__.py +0 -0
  334. aiq/registry_handlers/rest/register_rest.py +56 -0
  335. aiq/registry_handlers/rest/rest_handler.py +237 -0
  336. aiq/registry_handlers/schemas/__init__.py +0 -0
  337. aiq/registry_handlers/schemas/headers.py +42 -0
  338. aiq/registry_handlers/schemas/package.py +68 -0
  339. aiq/registry_handlers/schemas/publish.py +63 -0
  340. aiq/registry_handlers/schemas/pull.py +82 -0
  341. aiq/registry_handlers/schemas/remove.py +36 -0
  342. aiq/registry_handlers/schemas/search.py +91 -0
  343. aiq/registry_handlers/schemas/status.py +47 -0
  344. aiq/retriever/__init__.py +0 -0
  345. aiq/retriever/interface.py +37 -0
  346. aiq/retriever/milvus/__init__.py +14 -0
  347. aiq/retriever/milvus/register.py +81 -0
  348. aiq/retriever/milvus/retriever.py +228 -0
  349. aiq/retriever/models.py +74 -0
  350. aiq/retriever/nemo_retriever/__init__.py +14 -0
  351. aiq/retriever/nemo_retriever/register.py +60 -0
  352. aiq/retriever/nemo_retriever/retriever.py +190 -0
  353. aiq/retriever/register.py +22 -0
  354. aiq/runtime/__init__.py +14 -0
  355. aiq/runtime/loader.py +215 -0
  356. aiq/runtime/runner.py +190 -0
  357. aiq/runtime/session.py +158 -0
  358. aiq/runtime/user_metadata.py +130 -0
  359. aiq/settings/__init__.py +0 -0
  360. aiq/settings/global_settings.py +318 -0
  361. aiq/test/.namespace +1 -0
  362. aiq/tool/__init__.py +0 -0
  363. aiq/tool/chat_completion.py +74 -0
  364. aiq/tool/code_execution/README.md +151 -0
  365. aiq/tool/code_execution/__init__.py +0 -0
  366. aiq/tool/code_execution/code_sandbox.py +267 -0
  367. aiq/tool/code_execution/local_sandbox/.gitignore +1 -0
  368. aiq/tool/code_execution/local_sandbox/Dockerfile.sandbox +60 -0
  369. aiq/tool/code_execution/local_sandbox/__init__.py +13 -0
  370. aiq/tool/code_execution/local_sandbox/local_sandbox_server.py +198 -0
  371. aiq/tool/code_execution/local_sandbox/sandbox.requirements.txt +6 -0
  372. aiq/tool/code_execution/local_sandbox/start_local_sandbox.sh +50 -0
  373. aiq/tool/code_execution/register.py +74 -0
  374. aiq/tool/code_execution/test_code_execution_sandbox.py +414 -0
  375. aiq/tool/code_execution/utils.py +100 -0
  376. aiq/tool/datetime_tools.py +42 -0
  377. aiq/tool/document_search.py +141 -0
  378. aiq/tool/github_tools/__init__.py +0 -0
  379. aiq/tool/github_tools/create_github_commit.py +133 -0
  380. aiq/tool/github_tools/create_github_issue.py +87 -0
  381. aiq/tool/github_tools/create_github_pr.py +106 -0
  382. aiq/tool/github_tools/get_github_file.py +106 -0
  383. aiq/tool/github_tools/get_github_issue.py +166 -0
  384. aiq/tool/github_tools/get_github_pr.py +256 -0
  385. aiq/tool/github_tools/update_github_issue.py +100 -0
  386. aiq/tool/mcp/__init__.py +14 -0
  387. aiq/tool/mcp/exceptions.py +142 -0
  388. aiq/tool/mcp/mcp_client.py +255 -0
  389. aiq/tool/mcp/mcp_tool.py +96 -0
  390. aiq/tool/memory_tools/__init__.py +0 -0
  391. aiq/tool/memory_tools/add_memory_tool.py +79 -0
  392. aiq/tool/memory_tools/delete_memory_tool.py +67 -0
  393. aiq/tool/memory_tools/get_memory_tool.py +72 -0
  394. aiq/tool/nvidia_rag.py +95 -0
  395. aiq/tool/register.py +38 -0
  396. aiq/tool/retriever.py +89 -0
  397. aiq/tool/server_tools.py +66 -0
  398. aiq/utils/__init__.py +0 -0
  399. aiq/utils/data_models/__init__.py +0 -0
  400. aiq/utils/data_models/schema_validator.py +58 -0
  401. aiq/utils/debugging_utils.py +43 -0
  402. aiq/utils/dump_distro_mapping.py +32 -0
  403. aiq/utils/exception_handlers/__init__.py +0 -0
  404. aiq/utils/exception_handlers/automatic_retries.py +289 -0
  405. aiq/utils/exception_handlers/mcp.py +211 -0
  406. aiq/utils/exception_handlers/schemas.py +114 -0
  407. aiq/utils/io/__init__.py +0 -0
  408. aiq/utils/io/model_processing.py +28 -0
  409. aiq/utils/io/yaml_tools.py +119 -0
  410. aiq/utils/log_utils.py +37 -0
  411. aiq/utils/metadata_utils.py +74 -0
  412. aiq/utils/optional_imports.py +142 -0
  413. aiq/utils/producer_consumer_queue.py +178 -0
  414. aiq/utils/reactive/__init__.py +0 -0
  415. aiq/utils/reactive/base/__init__.py +0 -0
  416. aiq/utils/reactive/base/observable_base.py +65 -0
  417. aiq/utils/reactive/base/observer_base.py +55 -0
  418. aiq/utils/reactive/base/subject_base.py +79 -0
  419. aiq/utils/reactive/observable.py +59 -0
  420. aiq/utils/reactive/observer.py +76 -0
  421. aiq/utils/reactive/subject.py +131 -0
  422. aiq/utils/reactive/subscription.py +49 -0
  423. aiq/utils/settings/__init__.py +0 -0
  424. aiq/utils/settings/global_settings.py +197 -0
  425. aiq/utils/string_utils.py +38 -0
  426. aiq/utils/type_converter.py +290 -0
  427. aiq/utils/type_utils.py +484 -0
  428. aiq/utils/url_utils.py +27 -0
  429. nvidia_nat-1.2.0rc5.dist-info/METADATA +363 -0
  430. nvidia_nat-1.2.0rc5.dist-info/RECORD +435 -0
  431. nvidia_nat-1.2.0rc5.dist-info/WHEEL +5 -0
  432. nvidia_nat-1.2.0rc5.dist-info/entry_points.txt +20 -0
  433. nvidia_nat-1.2.0rc5.dist-info/licenses/LICENSE-3rd-party.txt +3686 -0
  434. nvidia_nat-1.2.0rc5.dist-info/licenses/LICENSE.md +201 -0
  435. nvidia_nat-1.2.0rc5.dist-info/top_level.txt +1 -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 aiq.builder.framework_enum import LLMFrameworkEnum
19
+ from aiq.cli.type_registry import AuthProviderBuildCallableT
20
+ from aiq.cli.type_registry import AuthProviderRegisteredCallableT
21
+ from aiq.cli.type_registry import EmbedderClientBuildCallableT
22
+ from aiq.cli.type_registry import EmbedderClientRegisteredCallableT
23
+ from aiq.cli.type_registry import EmbedderProviderBuildCallableT
24
+ from aiq.cli.type_registry import EmbedderProviderRegisteredCallableT
25
+ from aiq.cli.type_registry import EvaluatorBuildCallableT
26
+ from aiq.cli.type_registry import EvaluatorRegisteredCallableT
27
+ from aiq.cli.type_registry import FrontEndBuildCallableT
28
+ from aiq.cli.type_registry import FrontEndRegisteredCallableT
29
+ from aiq.cli.type_registry import FunctionBuildCallableT
30
+ from aiq.cli.type_registry import FunctionRegisteredCallableT
31
+ from aiq.cli.type_registry import LLMClientBuildCallableT
32
+ from aiq.cli.type_registry import LLMClientRegisteredCallableT
33
+ from aiq.cli.type_registry import LLMProviderBuildCallableT
34
+ from aiq.cli.type_registry import LoggingMethodBuildCallableT
35
+ from aiq.cli.type_registry import LoggingMethodConfigT
36
+ from aiq.cli.type_registry import LoggingMethodRegisteredCallableT
37
+ from aiq.cli.type_registry import MemoryBuildCallableT
38
+ from aiq.cli.type_registry import MemoryRegisteredCallableT
39
+ from aiq.cli.type_registry import ObjectStoreBuildCallableT
40
+ from aiq.cli.type_registry import ObjectStoreRegisteredCallableT
41
+ from aiq.cli.type_registry import RegisteredLoggingMethod
42
+ from aiq.cli.type_registry import RegisteredTelemetryExporter
43
+ from aiq.cli.type_registry import RegisteredToolWrapper
44
+ from aiq.cli.type_registry import RegistryHandlerBuildCallableT
45
+ from aiq.cli.type_registry import RegistryHandlerRegisteredCallableT
46
+ from aiq.cli.type_registry import RetrieverClientBuildCallableT
47
+ from aiq.cli.type_registry import RetrieverClientRegisteredCallableT
48
+ from aiq.cli.type_registry import RetrieverProviderBuildCallableT
49
+ from aiq.cli.type_registry import RetrieverProviderRegisteredCallableT
50
+ from aiq.cli.type_registry import TeleExporterRegisteredCallableT
51
+ from aiq.cli.type_registry import TelemetryExporterBuildCallableT
52
+ from aiq.cli.type_registry import TelemetryExporterConfigT
53
+ from aiq.cli.type_registry import ToolWrapperBuildCallableT
54
+ from aiq.cli.type_registry import TTCStrategyBuildCallableT
55
+ from aiq.cli.type_registry import TTCStrategyRegisterCallableT
56
+ from aiq.data_models.authentication import AuthProviderBaseConfigT
57
+ from aiq.data_models.component import AIQComponentEnum
58
+ from aiq.data_models.discovery_metadata import DiscoveryMetadata
59
+ from aiq.data_models.embedder import EmbedderBaseConfigT
60
+ from aiq.data_models.evaluator import EvaluatorBaseConfigT
61
+ from aiq.data_models.front_end import FrontEndConfigT
62
+ from aiq.data_models.function import FunctionConfigT
63
+ from aiq.data_models.llm import LLMBaseConfigT
64
+ from aiq.data_models.memory import MemoryBaseConfigT
65
+ from aiq.data_models.object_store import ObjectStoreBaseConfigT
66
+ from aiq.data_models.registry_handler import RegistryHandlerBaseConfigT
67
+ from aiq.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=AIQComponentEnum.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=AIQComponentEnum.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=AIQComponentEnum.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=AIQComponentEnum.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=AIQComponentEnum.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=AIQComponentEnum.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=AIQComponentEnum.LLM_PROVIDER,
239
+ component_type=AIQComponentEnum.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=AIQComponentEnum.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=AIQComponentEnum.EMBEDDER_PROVIDER,
290
+ component_type=AIQComponentEnum.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=AIQComponentEnum.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=AIQComponentEnum.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=AIQComponentEnum.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=AIQComponentEnum.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=AIQComponentEnum.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=AIQComponentEnum.RETRIEVER_PROVIDER,
436
+ component_type=AIQComponentEnum.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=AIQComponentEnum.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=AIQComponentEnum.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