nvidia-nat 1.3.0rc1__py3-none-any.whl → 1.3.0rc2__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 (32) hide show
  1. nat/agent/prompt_optimizer/register.py +2 -2
  2. nat/agent/react_agent/register.py +9 -1
  3. nat/agent/rewoo_agent/register.py +8 -1
  4. nat/authentication/oauth2/oauth2_auth_code_flow_provider.py +31 -18
  5. nat/builder/context.py +22 -6
  6. nat/cli/commands/mcp/mcp.py +6 -6
  7. nat/cli/commands/workflow/templates/config.yml.j2 +14 -12
  8. nat/cli/commands/workflow/templates/register.py.j2 +2 -2
  9. nat/cli/commands/workflow/templates/workflow.py.j2 +35 -21
  10. nat/cli/commands/workflow/workflow_commands.py +54 -10
  11. nat/cli/main.py +3 -0
  12. nat/data_models/api_server.py +65 -57
  13. nat/data_models/span.py +41 -3
  14. nat/front_ends/fastapi/fastapi_front_end_plugin_worker.py +5 -35
  15. nat/front_ends/fastapi/message_validator.py +3 -1
  16. nat/observability/exporter/span_exporter.py +34 -14
  17. nat/profiler/decorators/framework_wrapper.py +1 -1
  18. nat/profiler/forecasting/models/linear_model.py +1 -1
  19. nat/profiler/forecasting/models/random_forest_regressor.py +1 -1
  20. nat/profiler/inference_optimization/bottleneck_analysis/nested_stack_analysis.py +1 -1
  21. nat/profiler/inference_optimization/experimental/prefix_span_analysis.py +1 -1
  22. nat/runtime/runner.py +103 -6
  23. nat/runtime/session.py +26 -0
  24. nat/tool/memory_tools/get_memory_tool.py +1 -1
  25. nat/utils/decorators.py +210 -0
  26. {nvidia_nat-1.3.0rc1.dist-info → nvidia_nat-1.3.0rc2.dist-info}/METADATA +1 -3
  27. {nvidia_nat-1.3.0rc1.dist-info → nvidia_nat-1.3.0rc2.dist-info}/RECORD +32 -31
  28. {nvidia_nat-1.3.0rc1.dist-info → nvidia_nat-1.3.0rc2.dist-info}/WHEEL +0 -0
  29. {nvidia_nat-1.3.0rc1.dist-info → nvidia_nat-1.3.0rc2.dist-info}/entry_points.txt +0 -0
  30. {nvidia_nat-1.3.0rc1.dist-info → nvidia_nat-1.3.0rc2.dist-info}/licenses/LICENSE-3rd-party.txt +0 -0
  31. {nvidia_nat-1.3.0rc1.dist-info → nvidia_nat-1.3.0rc2.dist-info}/licenses/LICENSE.md +0 -0
  32. {nvidia_nat-1.3.0rc1.dist-info → nvidia_nat-1.3.0rc2.dist-info}/top_level.txt +0 -0
nat/runtime/runner.py CHANGED
@@ -15,11 +15,16 @@
15
15
 
16
16
  import logging
17
17
  import typing
18
+ import uuid
18
19
  from enum import Enum
19
20
 
20
21
  from nat.builder.context import Context
21
22
  from nat.builder.context import ContextState
22
23
  from nat.builder.function import Function
24
+ from nat.data_models.intermediate_step import IntermediateStepPayload
25
+ from nat.data_models.intermediate_step import IntermediateStepType
26
+ from nat.data_models.intermediate_step import StreamEventData
27
+ from nat.data_models.intermediate_step import TraceMetadata
23
28
  from nat.data_models.invocation_node import InvocationNode
24
29
  from nat.observability.exporter_manager import ExporterManager
25
30
  from nat.utils.reactive.subject import Subject
@@ -130,17 +135,59 @@ class Runner:
130
135
  if (self._state != RunnerState.INITIALIZED):
131
136
  raise ValueError("Cannot run the workflow without entering the context")
132
137
 
138
+ token_run_id = None
139
+ token_trace_id = None
133
140
  try:
134
141
  self._state = RunnerState.RUNNING
135
142
 
136
143
  if (not self._entry_fn.has_single_output):
137
144
  raise ValueError("Workflow does not support single output")
138
145
 
146
+ # Establish workflow run and trace identifiers
147
+ existing_run_id = self._context_state.workflow_run_id.get()
148
+ existing_trace_id = self._context_state.workflow_trace_id.get()
149
+
150
+ workflow_run_id = existing_run_id or str(uuid.uuid4())
151
+
152
+ workflow_trace_id = existing_trace_id or uuid.uuid4().int
153
+
154
+ token_run_id = self._context_state.workflow_run_id.set(workflow_run_id)
155
+ token_trace_id = self._context_state.workflow_trace_id.set(workflow_trace_id)
156
+
157
+ # Prepare workflow-level intermediate step identifiers
158
+ workflow_step_uuid = str(uuid.uuid4())
159
+ workflow_name = getattr(self._entry_fn, 'instance_name', None) or "workflow"
160
+
139
161
  async with self._exporter_manager.start(context_state=self._context_state):
140
- # Run the workflow
141
- result = await self._entry_fn.ainvoke(self._input_message, to_type=to_type)
162
+ # Emit WORKFLOW_START
163
+ start_metadata = TraceMetadata(
164
+ provided_metadata={
165
+ "workflow_run_id": workflow_run_id,
166
+ "workflow_trace_id": f"{workflow_trace_id:032x}",
167
+ "conversation_id": self._context_state.conversation_id.get(),
168
+ })
169
+ self._context.intermediate_step_manager.push_intermediate_step(
170
+ IntermediateStepPayload(UUID=workflow_step_uuid,
171
+ event_type=IntermediateStepType.WORKFLOW_START,
172
+ name=workflow_name,
173
+ metadata=start_metadata))
174
+
175
+ result = await self._entry_fn.ainvoke(self._input_message, to_type=to_type) # type: ignore
176
+
177
+ # Emit WORKFLOW_END with output
178
+ end_metadata = TraceMetadata(
179
+ provided_metadata={
180
+ "workflow_run_id": workflow_run_id,
181
+ "workflow_trace_id": f"{workflow_trace_id:032x}",
182
+ "conversation_id": self._context_state.conversation_id.get(),
183
+ })
184
+ self._context.intermediate_step_manager.push_intermediate_step(
185
+ IntermediateStepPayload(UUID=workflow_step_uuid,
186
+ event_type=IntermediateStepType.WORKFLOW_END,
187
+ name=workflow_name,
188
+ metadata=end_metadata,
189
+ data=StreamEventData(output=result)))
142
190
 
143
- # Close the intermediate stream
144
191
  event_stream = self._context_state.event_stream.get()
145
192
  if event_stream:
146
193
  event_stream.on_complete()
@@ -155,25 +202,71 @@ class Runner:
155
202
  if event_stream:
156
203
  event_stream.on_complete()
157
204
  self._state = RunnerState.FAILED
158
-
159
205
  raise
206
+ finally:
207
+ if token_run_id is not None:
208
+ self._context_state.workflow_run_id.reset(token_run_id)
209
+ if token_trace_id is not None:
210
+ self._context_state.workflow_trace_id.reset(token_trace_id)
160
211
 
161
212
  async def result_stream(self, to_type: type | None = None):
162
213
 
163
214
  if (self._state != RunnerState.INITIALIZED):
164
215
  raise ValueError("Cannot run the workflow without entering the context")
165
216
 
217
+ token_run_id = None
218
+ token_trace_id = None
166
219
  try:
167
220
  self._state = RunnerState.RUNNING
168
221
 
169
222
  if (not self._entry_fn.has_streaming_output):
170
223
  raise ValueError("Workflow does not support streaming output")
171
224
 
225
+ # Establish workflow run and trace identifiers
226
+ existing_run_id = self._context_state.workflow_run_id.get()
227
+ existing_trace_id = self._context_state.workflow_trace_id.get()
228
+
229
+ workflow_run_id = existing_run_id or str(uuid.uuid4())
230
+
231
+ workflow_trace_id = existing_trace_id or uuid.uuid4().int
232
+
233
+ token_run_id = self._context_state.workflow_run_id.set(workflow_run_id)
234
+ token_trace_id = self._context_state.workflow_trace_id.set(workflow_trace_id)
235
+
236
+ # Prepare workflow-level intermediate step identifiers
237
+ workflow_step_uuid = str(uuid.uuid4())
238
+ workflow_name = getattr(self._entry_fn, 'instance_name', None) or "workflow"
239
+
172
240
  # Run the workflow
173
241
  async with self._exporter_manager.start(context_state=self._context_state):
174
- async for m in self._entry_fn.astream(self._input_message, to_type=to_type):
242
+ # Emit WORKFLOW_START
243
+ start_metadata = TraceMetadata(
244
+ provided_metadata={
245
+ "workflow_run_id": workflow_run_id,
246
+ "workflow_trace_id": f"{workflow_trace_id:032x}",
247
+ "conversation_id": self._context_state.conversation_id.get(),
248
+ })
249
+ self._context.intermediate_step_manager.push_intermediate_step(
250
+ IntermediateStepPayload(UUID=workflow_step_uuid,
251
+ event_type=IntermediateStepType.WORKFLOW_START,
252
+ name=workflow_name,
253
+ metadata=start_metadata))
254
+
255
+ async for m in self._entry_fn.astream(self._input_message, to_type=to_type): # type: ignore
175
256
  yield m
176
257
 
258
+ # Emit WORKFLOW_END
259
+ end_metadata = TraceMetadata(
260
+ provided_metadata={
261
+ "workflow_run_id": workflow_run_id,
262
+ "workflow_trace_id": f"{workflow_trace_id:032x}",
263
+ "conversation_id": self._context_state.conversation_id.get(),
264
+ })
265
+ self._context.intermediate_step_manager.push_intermediate_step(
266
+ IntermediateStepPayload(UUID=workflow_step_uuid,
267
+ event_type=IntermediateStepType.WORKFLOW_END,
268
+ name=workflow_name,
269
+ metadata=end_metadata))
177
270
  self._state = RunnerState.COMPLETED
178
271
 
179
272
  # Close the intermediate stream
@@ -187,8 +280,12 @@ class Runner:
187
280
  if event_stream:
188
281
  event_stream.on_complete()
189
282
  self._state = RunnerState.FAILED
190
-
191
283
  raise
284
+ finally:
285
+ if token_run_id is not None:
286
+ self._context_state.workflow_run_id.reset(token_run_id)
287
+ if token_trace_id is not None:
288
+ self._context_state.workflow_trace_id.reset(token_trace_id)
192
289
 
193
290
 
194
291
  # Compatibility aliases with previous releases
nat/runtime/session.py CHANGED
@@ -16,6 +16,7 @@
16
16
  import asyncio
17
17
  import contextvars
18
18
  import typing
19
+ import uuid
19
20
  from collections.abc import Awaitable
20
21
  from collections.abc import Callable
21
22
  from contextlib import asynccontextmanager
@@ -161,6 +162,31 @@ class SessionManager:
161
162
  if request.headers.get("user-message-id"):
162
163
  self._context_state.user_message_id.set(request.headers["user-message-id"])
163
164
 
165
+ # W3C Trace Context header: traceparent: 00-<trace-id>-<span-id>-<flags>
166
+ traceparent = request.headers.get("traceparent")
167
+ if traceparent:
168
+ try:
169
+ parts = traceparent.split("-")
170
+ if len(parts) >= 4:
171
+ trace_id_hex = parts[1]
172
+ if len(trace_id_hex) == 32:
173
+ trace_id_int = uuid.UUID(trace_id_hex).int
174
+ self._context_state.workflow_trace_id.set(trace_id_int)
175
+ except Exception:
176
+ pass
177
+
178
+ if not self._context_state.workflow_trace_id.get():
179
+ workflow_trace_id = request.headers.get("workflow-trace-id")
180
+ if workflow_trace_id:
181
+ try:
182
+ self._context_state.workflow_trace_id.set(uuid.UUID(workflow_trace_id).int)
183
+ except Exception:
184
+ pass
185
+
186
+ workflow_run_id = request.headers.get("workflow-run-id")
187
+ if workflow_run_id:
188
+ self._context_state.workflow_run_id.set(workflow_run_id)
189
+
164
190
  def set_metadata_from_websocket(self,
165
191
  websocket: WebSocket,
166
192
  user_message_id: str | None,
@@ -67,6 +67,6 @@ async def get_memory_tool(config: GetToolConfig, builder: Builder):
67
67
 
68
68
  except Exception as e:
69
69
 
70
- raise ToolException(f"Error retreiving memory: {e}") from e
70
+ raise ToolException(f"Error retrieving memory: {e}") from e
71
71
 
72
72
  yield FunctionInfo.from_fn(_arun, description=config.description)
@@ -0,0 +1,210 @@
1
+ # SPDX-FileCopyrightText: Copyright (c) 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
+ """Deprecation utilities.
16
+
17
+ This module provides helpers to standardize deprecation signaling across the
18
+ codebase:
19
+
20
+ - ``issue_deprecation_warning``: Builds and emits a single deprecation message
21
+ per function using the standard logging pipeline.
22
+ - ``deprecated``: A decorator that wraps sync/async functions and generators to
23
+ log a one-time deprecation message upon first use. It supports optional
24
+ metadata, a planned removal version, a suggested replacement, and an
25
+ optional feature name label.
26
+
27
+ Messages are emitted via ``logging.getLogger(__name__).warning`` (not
28
+ ``warnings.warn``) so they appear in normal application logs and respect global
29
+ logging configuration. Each unique function logs at most once per process.
30
+ """
31
+
32
+ import functools
33
+ import inspect
34
+ import logging
35
+ from collections.abc import AsyncGenerator
36
+ from collections.abc import Callable
37
+ from collections.abc import Generator
38
+ from typing import Any
39
+ from typing import TypeVar
40
+ from typing import overload
41
+
42
+ logger = logging.getLogger(__name__)
43
+
44
+ _warning_issued = set()
45
+
46
+ # Type variables for overloads
47
+ F = TypeVar('F', bound=Callable[..., Any])
48
+
49
+
50
+ def issue_deprecation_warning(function_name: str,
51
+ removal_version: str | None = None,
52
+ replacement: str | None = None,
53
+ reason: str | None = None,
54
+ feature_name: str | None = None,
55
+ metadata: dict[str, Any] | None = None) -> None:
56
+ """
57
+ Log a deprecation warning message for the function.
58
+
59
+ A warning is emitted only once per function. When a ``metadata`` dict
60
+ is supplied, it is appended to the log entry to provide extra context
61
+ (e.g., version, author, feature flag).
62
+
63
+ Args:
64
+ function_name: The name of the deprecated function
65
+ removal_version: The version when the function will be removed
66
+ replacement: What to use instead of this function
67
+ reason: Why the function is being deprecated
68
+ feature_name: Optional name of the feature that is deprecated
69
+ metadata: Optional dictionary of metadata to log with the warning
70
+ """
71
+ if function_name not in _warning_issued:
72
+ # Build the deprecation message
73
+ if feature_name:
74
+ warning_message = f"{feature_name} is deprecated"
75
+ else:
76
+ warning_message = f"Function {function_name} is deprecated"
77
+
78
+ if removal_version:
79
+ warning_message += f" and will be removed in version {removal_version}"
80
+ else:
81
+ warning_message += " and will be removed in a future release"
82
+
83
+ warning_message += "."
84
+
85
+ if reason:
86
+ warning_message += f" Reason: {reason}."
87
+
88
+ if replacement:
89
+ warning_message += f" Use '{replacement}' instead."
90
+
91
+ if metadata:
92
+ warning_message += f" | Metadata: {metadata}"
93
+
94
+ # Issue warning and save function name to avoid duplicate warnings
95
+ logger.warning(warning_message)
96
+ _warning_issued.add(function_name)
97
+
98
+
99
+ # Overloads for different function types
100
+ @overload
101
+ def deprecated(func: F,
102
+ *,
103
+ removal_version: str | None = None,
104
+ replacement: str | None = None,
105
+ reason: str | None = None,
106
+ feature_name: str | None = None,
107
+ metadata: dict[str, Any] | None = None) -> F:
108
+ """Overload for direct decorator usage (when called without parentheses)."""
109
+ ...
110
+
111
+
112
+ @overload
113
+ def deprecated(*,
114
+ removal_version: str | None = None,
115
+ replacement: str | None = None,
116
+ reason: str | None = None,
117
+ feature_name: str | None = None,
118
+ metadata: dict[str, Any] | None = None) -> Callable[[F], F]:
119
+ """Overload for decorator factory usage (when called with parentheses)."""
120
+ ...
121
+
122
+
123
+ def deprecated(func: Any = None,
124
+ *,
125
+ removal_version: str | None = None,
126
+ replacement: str | None = None,
127
+ reason: str | None = None,
128
+ feature_name: str | None = None,
129
+ metadata: dict[str, Any] | None = None) -> Any:
130
+ """
131
+ Decorator that can wrap any type of function (sync, async, generator,
132
+ async generator) and logs a deprecation warning.
133
+
134
+ Args:
135
+ func: The function to be decorated.
136
+ removal_version: The version when the function will be removed
137
+ replacement: What to use instead of this function
138
+ reason: Why the function is being deprecated
139
+ feature_name: Optional name of the feature that is deprecated. If provided, the warning will be
140
+ prefixed with "The <feature_name> feature is deprecated".
141
+ metadata: Optional dictionary of metadata to log with the warning. This can include information
142
+ like version, author, etc. If provided, the metadata will be
143
+ logged alongside the deprecation warning.
144
+ """
145
+ function_name: str = f"{func.__module__}.{func.__qualname__}" if func else "<unknown_function>"
146
+
147
+ # If called as @deprecated(...) but not immediately passed a function
148
+ if func is None:
149
+
150
+ def decorator_wrapper(actual_func):
151
+ return deprecated(actual_func,
152
+ removal_version=removal_version,
153
+ replacement=replacement,
154
+ reason=reason,
155
+ feature_name=feature_name,
156
+ metadata=metadata)
157
+
158
+ return decorator_wrapper
159
+
160
+ # --- Validate metadata ---
161
+ if metadata is not None:
162
+ if not isinstance(metadata, dict):
163
+ raise TypeError("metadata must be a dict[str, Any].")
164
+ if any(not isinstance(k, str) for k in metadata.keys()):
165
+ raise TypeError("All metadata keys must be strings.")
166
+
167
+ # --- Now detect the function type and wrap accordingly ---
168
+ if inspect.isasyncgenfunction(func):
169
+ # ---------------------
170
+ # ASYNC GENERATOR
171
+ # ---------------------
172
+
173
+ @functools.wraps(func)
174
+ async def async_gen_wrapper(*args, **kwargs) -> AsyncGenerator[Any, Any]:
175
+ issue_deprecation_warning(function_name, removal_version, replacement, reason, feature_name, metadata)
176
+ async for item in func(*args, **kwargs):
177
+ yield item # yield the original item
178
+
179
+ return async_gen_wrapper
180
+
181
+ if inspect.iscoroutinefunction(func):
182
+ # ---------------------
183
+ # ASYNC FUNCTION
184
+ # ---------------------
185
+ @functools.wraps(func)
186
+ async def async_wrapper(*args, **kwargs) -> Any:
187
+ issue_deprecation_warning(function_name, removal_version, replacement, reason, feature_name, metadata)
188
+ result = await func(*args, **kwargs)
189
+ return result
190
+
191
+ return async_wrapper
192
+
193
+ if inspect.isgeneratorfunction(func):
194
+ # ---------------------
195
+ # SYNC GENERATOR
196
+ # ---------------------
197
+ @functools.wraps(func)
198
+ def sync_gen_wrapper(*args, **kwargs) -> Generator[Any, Any, Any]:
199
+ issue_deprecation_warning(function_name, removal_version, replacement, reason, feature_name, metadata)
200
+ yield from func(*args, **kwargs) # yield the original item
201
+
202
+ return sync_gen_wrapper
203
+
204
+ @functools.wraps(func)
205
+ def sync_wrapper(*args, **kwargs) -> Any:
206
+ issue_deprecation_warning(function_name, removal_version, replacement, reason, feature_name, metadata)
207
+ result = func(*args, **kwargs)
208
+ return result
209
+
210
+ return sync_wrapper
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: nvidia-nat
3
- Version: 1.3.0rc1
3
+ Version: 1.3.0rc2
4
4
  Summary: NVIDIA NeMo Agent toolkit
5
5
  Author: NVIDIA Corporation
6
6
  Maintainer: NVIDIA Corporation
@@ -296,12 +296,10 @@ Requires-Dist: nat_alert_triage_agent; extra == "examples"
296
296
  Requires-Dist: nat_automated_description_generation; extra == "examples"
297
297
  Requires-Dist: nat_email_phishing_analyzer; extra == "examples"
298
298
  Requires-Dist: nat_multi_frameworks; extra == "examples"
299
- Requires-Dist: nat_first_search_agent; extra == "examples"
300
299
  Requires-Dist: nat_plot_charts; extra == "examples"
301
300
  Requires-Dist: nat_por_to_jiratickets; extra == "examples"
302
301
  Requires-Dist: nat_profiler_agent; extra == "examples"
303
302
  Requires-Dist: nat_redact_pii; extra == "examples"
304
- Requires-Dist: nat_retail_sales_agent; extra == "examples"
305
303
  Requires-Dist: nat_router_agent; extra == "examples"
306
304
  Requires-Dist: nat_semantic_kernel_demo; extra == "examples"
307
305
  Requires-Dist: nat_sequential_executor; extra == "examples"
@@ -5,18 +5,18 @@ nat/agent/dual_node.py,sha256=pfvXa1iLKtrNBHsh-tM5RWRmVe7QkyYhQNanOfWdJJs,2569
5
5
  nat/agent/register.py,sha256=rPhHDyqRBIKyon3HqhOmpAjqPP18Or6wDQb0wRUBIjQ,1032
6
6
  nat/agent/prompt_optimizer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
7
  nat/agent/prompt_optimizer/prompt.py,sha256=2I1cGZH73Q1pwxA_V-9b1sFCdQ1PLFxliaRtrIkVVVU,3042
8
- nat/agent/prompt_optimizer/register.py,sha256=qV9Qkd4XDfwVYSzZOyI9RlRzK26jukaB51RriYgWd6k,6790
8
+ nat/agent/prompt_optimizer/register.py,sha256=s1WZzHYivU1LwH3iZZ3YSEiOfIurzwxqvUGrfG2_rz4,6799
9
9
  nat/agent/react_agent/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
10
  nat/agent/react_agent/agent.py,sha256=sWrg9WrglTKQQyG3EcjNm2JTEchCPEo9li-Po7TJKss,21294
11
11
  nat/agent/react_agent/output_parser.py,sha256=m7K6wRwtckBBpAHqOf3BZ9mqZLwrP13Kxz5fvNxbyZE,4219
12
12
  nat/agent/react_agent/prompt.py,sha256=N47JJrT6xwYQCv1jedHhlul2AE7EfKsSYfAbgJwWRew,1758
13
- nat/agent/react_agent/register.py,sha256=b97dfNtA0I3bNBOGdr9_akQ89UDwPHPPb7LqpsZNaWI,8815
13
+ nat/agent/react_agent/register.py,sha256=wAoPkly7dE8bb5x8XFf5-C1qJQausLKQwQcFCby_dwU,9307
14
14
  nat/agent/reasoning_agent/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
15
15
  nat/agent/reasoning_agent/reasoning_agent.py,sha256=k_0wEDqACQn1Rn1MAKxoXyqOKsthHCQ1gt990YYUqHU,9575
16
16
  nat/agent/rewoo_agent/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
17
17
  nat/agent/rewoo_agent/agent.py,sha256=XXgVXY9xwkyxnr093KXUtfgyNxAQbyGAecoGqN5mMLY,26199
18
18
  nat/agent/rewoo_agent/prompt.py,sha256=B0JeL1xDX4VKcShlkkviEcAsOKAwzSlX8NcAQdmUUPw,3645
19
- nat/agent/rewoo_agent/register.py,sha256=WbW8yPZC7rcD2CZIy9MbKzA0yjRf7Ka7uu0C9CqbBpM,9123
19
+ nat/agent/rewoo_agent/register.py,sha256=GfJRQgpFWl-LQ-pPaG7EUeBH5u7pDZZNVP5cSweZJdM,9599
20
20
  nat/agent/tool_calling_agent/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
21
21
  nat/agent/tool_calling_agent/agent.py,sha256=4SIp29I56oznPRQu7B3HCoX53Ri3_o3BRRYNJjeBkF8,11006
22
22
  nat/agent/tool_calling_agent/register.py,sha256=ijiRfgDVtt2p7_q1YbIQZmUVV8-jf3yT18HwtKyReUI,6822
@@ -35,14 +35,14 @@ nat/authentication/http_basic_auth/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQe
35
35
  nat/authentication/http_basic_auth/http_basic_auth_provider.py,sha256=OXr5TV87SiZtzSK9i_E6WXWyVhWq2MfqO_SS1aZ3p6U,3452
36
36
  nat/authentication/http_basic_auth/register.py,sha256=N2VD0vw7cYABsLxsGXl5yw0htc8adkrB0Y_EMxKwFfk,1235
37
37
  nat/authentication/oauth2/__init__.py,sha256=Xs1JQ16L9btwreh4pdGKwskffAw1YFO48jKrU4ib_7c,685
38
- nat/authentication/oauth2/oauth2_auth_code_flow_provider.py,sha256=Gs4zEGjYr3DQ_5AncooXFYbwX5v6cn1AbMe7GODrB9g,5327
38
+ nat/authentication/oauth2/oauth2_auth_code_flow_provider.py,sha256=NXsVATFxQ10Gg_nrW7Ljft2VXlAj460TeoXL-ww4WZc,5804
39
39
  nat/authentication/oauth2/oauth2_auth_code_flow_provider_config.py,sha256=e165ysd2pX2WTbV3_FQKEjEaa4TAXkJ7B98WUGbqnGE,2204
40
40
  nat/authentication/oauth2/oauth2_resource_server_config.py,sha256=ltcNp8Dwb2Q4tlwMN5Cl0B5pouTLtXRoV-QopfqV45M,5314
41
41
  nat/authentication/oauth2/register.py,sha256=7rXhf-ilgSS_bUJsd9pOOCotL1FM8dKUt3ke1TllKkQ,1228
42
42
  nat/builder/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
43
43
  nat/builder/builder.py,sha256=okI3Y101hwF63AwazzxiahQx-W9eFZ_SNdFXzDuoftU,11608
44
44
  nat/builder/component_utils.py,sha256=-5vEWLwj9ch-1B9vbkBjCIkXB9SL8Tj9yl6zFwhV6wU,13832
45
- nat/builder/context.py,sha256=9GSVtWc-vx48m-TpHUWS5s60ixXmn5xA5-RAMiGMFzU,12434
45
+ nat/builder/context.py,sha256=6NQmHfJS0gY4eLU7Xg84olmrgUdtVJcS3gmxc-OADiw,13093
46
46
  nat/builder/embedder.py,sha256=NPkOEcxt_-wc53QRijCQQDLretRUYHRYaKoYmarmrBk,965
47
47
  nat/builder/eval_builder.py,sha256=I-ScvupmorClYoVBIs_PhSsB7Xf9e2nGWe0rCZp3txo,6857
48
48
  nat/builder/evaluator.py,sha256=xWHMND2vcAUkdFP7FU3jnVki1rUHeTa0-9saFh2hWKs,1162
@@ -59,7 +59,7 @@ nat/builder/workflow.py,sha256=bHrxK-VFsxUTw2wZgkWcCttpCMDeWNGPfmIGEW_bjZo,6908
59
59
  nat/builder/workflow_builder.py,sha256=Fdf2eIYrRg1ovLkySzzgh5C2PNLV7QzQIN7pLHSr6zI,56339
60
60
  nat/cli/__init__.py,sha256=Xs1JQ16L9btwreh4pdGKwskffAw1YFO48jKrU4ib_7c,685
61
61
  nat/cli/entrypoint.py,sha256=7NHq3Grb_qzpJzzbb0YtTsWd4YhA6y9ljHwsOQPQAIs,4928
62
- nat/cli/main.py,sha256=KzUSDB1TGzHRP_Fnq5XJRopx-i9S2oycgQrXrf2vDkE,2164
62
+ nat/cli/main.py,sha256=LZMKvoHYR926mghMjVpfLiI2qraqtrhMY9hvuAQCRWk,2258
63
63
  nat/cli/register_workflow.py,sha256=DOQQgUWB_NO9k7nlkP4cAx_RX03Cndk032K-kqyuvEs,23285
64
64
  nat/cli/type_registry.py,sha256=HbPU-7lzSHZ4aepJ3qOgfnl5LzK6-KHwcerhFpWw6mU,48839
65
65
  nat/cli/cli_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -83,7 +83,7 @@ nat/cli/commands/info/info.py,sha256=BGqshIEDpNRH9hM-06k-Gq-QX-qNddPICSWCN-ReC-g
83
83
  nat/cli/commands/info/list_channels.py,sha256=K97TE6wtikgImY-wAbFNi0HHUGtkvIFd2woaG06VkT0,1277
84
84
  nat/cli/commands/info/list_components.py,sha256=QlAJVONBA77xW8Lx6Autw5NTAZNy_VrJGr1GL9MfnHM,4532
85
85
  nat/cli/commands/mcp/__init__.py,sha256=GUJrgGtpvyMUCjUBvR3faAdv-tZzbU9W-izgx9aMEQg,680
86
- nat/cli/commands/mcp/mcp.py,sha256=pwpnWJS1UztkTZYQCZjG9T7IPnk5Je9tA63KmhpYbn8,43860
86
+ nat/cli/commands/mcp/mcp.py,sha256=IiLPu2nxOlp3uBON-e6ANNpzPZQGkmiFLX8-qgGJ9cg,43862
87
87
  nat/cli/commands/object_store/__init__.py,sha256=GUJrgGtpvyMUCjUBvR3faAdv-tZzbU9W-izgx9aMEQg,680
88
88
  nat/cli/commands/object_store/object_store.py,sha256=_ivB-R30a-66fNy-fUzi58HQ0Ay0gYsGz7T1xXoRa3Y,8576
89
89
  nat/cli/commands/registry/__init__.py,sha256=GUJrgGtpvyMUCjUBvR3faAdv-tZzbU9W-izgx9aMEQg,680
@@ -97,12 +97,12 @@ nat/cli/commands/sizing/calc.py,sha256=3cJHKCbzvV7EwYfLcpfk3_Ki7soAjOaiBcLK-Q6hP
97
97
  nat/cli/commands/sizing/sizing.py,sha256=-Hr9mz_ScEMtBbn6ijvmmWVk0WybLeX0Ryi4qhDiYQU,902
98
98
  nat/cli/commands/workflow/__init__.py,sha256=GUJrgGtpvyMUCjUBvR3faAdv-tZzbU9W-izgx9aMEQg,680
99
99
  nat/cli/commands/workflow/workflow.py,sha256=40nIOehOX-4xI-qJqJraBX3XVz3l2VtFsZkMQYd897w,1342
100
- nat/cli/commands/workflow/workflow_commands.py,sha256=_krSHCU9q-rI-0mc2ieiELu9n2Ovch4F4klXNza-eXk,13055
100
+ nat/cli/commands/workflow/workflow_commands.py,sha256=hJXsy0vDhL6ITCJaM_xPepXwEom2E6_beTqr0HBldaU,14256
101
101
  nat/cli/commands/workflow/templates/__init__.py.j2,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
102
- nat/cli/commands/workflow/templates/config.yml.j2,sha256=PriLJehyb5HIiVCy5NkU6lJ3znwZjtT2SQpNVp6zC64,203
102
+ nat/cli/commands/workflow/templates/config.yml.j2,sha256=KORGAFt1TW524YxXD2jpm_uTESihUKV5fnSoXQrH1PI,368
103
103
  nat/cli/commands/workflow/templates/pyproject.toml.j2,sha256=lDBC4exHYutXa_skuJj176yMEuZr-DsdzrqQHPZoKpk,1035
104
- nat/cli/commands/workflow/templates/register.py.j2,sha256=txA-qBpWhxRc0GUcVRCIqVI6gGSh-TJijemrUqnb38s,138
105
- nat/cli/commands/workflow/templates/workflow.py.j2,sha256=Z4uZPG9rtf1nxF74dF4DqDtrF3uYmYUmWowDFbQBjao,1241
104
+ nat/cli/commands/workflow/templates/register.py.j2,sha256=OuS8T6ZZ2hb0jOIvT1RojS8CuiL93n223K6Drs_MrBo,152
105
+ nat/cli/commands/workflow/templates/workflow.py.j2,sha256=xN2n0HfVP6f4wRSXQ6y4v5-1eZt3cWLPEPKSVh8wDC8,1785
106
106
  nat/control_flow/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
107
107
  nat/control_flow/register.py,sha256=YBB73ecHpvUN_RivkeMWwu645gpC8OCPVOYgr_5aEOA,845
108
108
  nat/control_flow/sequential_executor.py,sha256=iFbnyVxOsbltLfNhukH7yv0rGYpva4z-AhyEo-3QiRI,8327
@@ -112,7 +112,7 @@ nat/control_flow/router_agent/prompt.py,sha256=fIAiNsAs1zXRAatButR76zSpHJNxSkXXK
112
112
  nat/control_flow/router_agent/register.py,sha256=4RGmS9sy-QtIMmvh8mfMcR1VqxFPLpG4RckWCIExh40,4144
113
113
  nat/data_models/__init__.py,sha256=Xs1JQ16L9btwreh4pdGKwskffAw1YFO48jKrU4ib_7c,685
114
114
  nat/data_models/agent.py,sha256=IwDyb9Zc3R4Zd5rFeqt7q0EQswczAl5focxV9KozIzs,1625
115
- nat/data_models/api_server.py,sha256=qhx0TcVAVOTyHvOtnOw420ODZZt5ZYlsj6uoXVqW8Yk,25626
115
+ nat/data_models/api_server.py,sha256=V8y1v9-5p4kmaQmmDU2N6m_V_CFJeozDzJEoIHOSV8w,26177
116
116
  nat/data_models/authentication.py,sha256=XPu9W8nh4XRSuxPv3HxO-FMQ_JtTEoK6Y02JwnzDwTg,8457
117
117
  nat/data_models/common.py,sha256=nXXfGrjpxebzBUa55mLdmzePLt7VFHvTAc6Znj3yEv0,5875
118
118
  nat/data_models/component.py,sha256=b_hXOA8Gm5UNvlFkAhsR6kEvf33ST50MKtr5kWf75Ao,1894
@@ -140,7 +140,7 @@ nat/data_models/profiler.py,sha256=z3IlEhj-veB4Yz85271bTkScSUkVwK50tR3dwlDRgcE,1
140
140
  nat/data_models/registry_handler.py,sha256=g1rFaz4uSydMJn7qpdX-DNHJd_rNf8tXYN49dLDYHPo,968
141
141
  nat/data_models/retriever.py,sha256=IJAIaeEXM8zj_towrvZ30Uoxt8e4WvOXrQwqGloS1qI,1202
142
142
  nat/data_models/retry_mixin.py,sha256=s7UAhAHhlwTJ3uz6POVaSD8Y5DwKnU8mmo7OkRzeaW8,1863
143
- nat/data_models/span.py,sha256=xZFqj3F8U3Lw06nb-WT8QC9Hd60u2kFViNn3Q_c0rpQ,6664
143
+ nat/data_models/span.py,sha256=1ylpLf0UKwJSpKbwuFian9ut40GnF-AXsWYep1n2Y_0,8056
144
144
  nat/data_models/step_adaptor.py,sha256=1qn56wB_nIYBM5IjN4ftsltCAkqaJd3Sqe5v0TRR4K8,2615
145
145
  nat/data_models/streaming.py,sha256=sSqJqLqb70qyw69_4R9QC2RMbRw7UjTLPdo3FYBUGxE,1159
146
146
  nat/data_models/swe_bench_model.py,sha256=uZs-hLFuT1B5CiPFwFg1PHinDW8PHne8TBzu7tHFv_k,1718
@@ -242,12 +242,12 @@ nat/front_ends/fastapi/dask_client_mixin.py,sha256=N_tw4yxA7EKIFTKp5_C2ZksIZucWx
242
242
  nat/front_ends/fastapi/fastapi_front_end_config.py,sha256=BcuzrVlA5b7yYyQKNvQgEanDBtKEHdpC8TAd-O7lfF0,11992
243
243
  nat/front_ends/fastapi/fastapi_front_end_controller.py,sha256=ei-34KCMpyaeAgeAN4gVvSGFjewjjRhHZPN0FqAfhDY,2548
244
244
  nat/front_ends/fastapi/fastapi_front_end_plugin.py,sha256=e33YkMcLzvm4OUG34bhl-WYiBTqkR-_wJYKG4GODkGM,11169
245
- nat/front_ends/fastapi/fastapi_front_end_plugin_worker.py,sha256=s2HoeRcR4TjvBTsv9f92snNRoyqG0Des6bB5SOfThaU,62567
245
+ nat/front_ends/fastapi/fastapi_front_end_plugin_worker.py,sha256=yrUSjbo9ge7yZi4fcFOsVFhLL5zxSh8ftZtHAExfm_s,60342
246
246
  nat/front_ends/fastapi/intermediate_steps_subscriber.py,sha256=kbyWlBVpyvyQQjeUnFG9nsR4RaqqNkx567ZSVwwl2RU,3104
247
247
  nat/front_ends/fastapi/job_store.py,sha256=cWIBnIgRdkGL7qbBunEKzTYzdPp3l3QCDHMP-qTZJpc,22743
248
248
  nat/front_ends/fastapi/main.py,sha256=s8gXCy61rJjK1aywMRpgPvzlkMGsCS-kI_0EIy4JjBM,2445
249
249
  nat/front_ends/fastapi/message_handler.py,sha256=8pdA3K8hLCcR-ohHXYtLUgX1U2sYFzqgeslIszlQbRo,15181
250
- nat/front_ends/fastapi/message_validator.py,sha256=BmaKTYWym6FR7L41hqmj0AK-F4OpYxfufQvsIIRbbIA,17468
250
+ nat/front_ends/fastapi/message_validator.py,sha256=Opx9ZjaNUfS3MS6w25bq_h_XASY_i2prmQRlY_sn5xM,17614
251
251
  nat/front_ends/fastapi/register.py,sha256=rA12NPFgV9ZNHOEIgB7_SB6NytjRxgBTLo7fJ-73_HM,1153
252
252
  nat/front_ends/fastapi/response_helpers.py,sha256=MGE9E73sQSCYjsR5YXRga2qbl44hrTAPW2N5Ui3vXX0,9028
253
253
  nat/front_ends/fastapi/step_adaptor.py,sha256=J6UtoXL9De8bgAg93nE0ASLUHZbidWOfRiuFo-tyZgY,12412
@@ -295,7 +295,7 @@ nat/observability/exporter/exporter.py,sha256=fqF0GYuhZRQEq0skq_FK2nlnsaUAzLpQi-
295
295
  nat/observability/exporter/file_exporter.py,sha256=XYsFjF8ob4Ag-SyGtKEh6wRU9lBx3lbdu7Uo85NvVyo,1465
296
296
  nat/observability/exporter/processing_exporter.py,sha256=U_VE1VZZ2giGE-OUGH4pnHTYW2Nwcwfx4bFLL7_iu9M,25044
297
297
  nat/observability/exporter/raw_exporter.py,sha256=0ROEd-DlLP6pIxl4u2zJ6PMVrDrQa0DMHFDRsdGQMIk,1859
298
- nat/observability/exporter/span_exporter.py,sha256=ECAewXffW9Ms_0rT0WpF56GOra_4UEXdzKmWqJHrKVs,13249
298
+ nat/observability/exporter/span_exporter.py,sha256=FIZgc_eTdfKr0pCSEC94PecsGGOelag1R-K76FMvI-0,14094
299
299
  nat/observability/mixin/__init__.py,sha256=Xs1JQ16L9btwreh4pdGKwskffAw1YFO48jKrU4ib_7c,685
300
300
  nat/observability/mixin/batch_config_mixin.py,sha256=DixQq-jRhBFJvpOX-gq7GvPmZCPOXQdacylyEuhZ6y0,1399
301
301
  nat/observability/mixin/collector_config_mixin.py,sha256=3iptkRH9N6JgcsPq7GyjjJVAoxjd-l42UKE7iSF4Hq8,1087
@@ -343,15 +343,15 @@ nat/profiler/callbacks/llama_index_callback_handler.py,sha256=xzYve07uMlSTDjj929
343
343
  nat/profiler/callbacks/semantic_kernel_callback_handler.py,sha256=BknzhQNB-MDMhR4QC9JScCp-zXq7KZ33SFb7X0MiTaI,11087
344
344
  nat/profiler/callbacks/token_usage_base_model.py,sha256=X0b_AbBgVQAAbgbDMim-3S3XdQ7PaPs9qMUACvMAe5o,1104
345
345
  nat/profiler/decorators/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
346
- nat/profiler/decorators/framework_wrapper.py,sha256=lKX-nMkwKc4Pcb3PiA_w6f0Zfa_aC8BQsDB1pWwJTjI,7680
346
+ nat/profiler/decorators/framework_wrapper.py,sha256=qlQ_o6fzsV6jUBbHYFuGjX_Aq-NDZ23l9l3ViDKxy5g,7682
347
347
  nat/profiler/decorators/function_tracking.py,sha256=-ai_4djCbNwMan5SiTq3MVMBrcKoUWyxzviAV-Eh4xg,16771
348
348
  nat/profiler/forecasting/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
349
349
  nat/profiler/forecasting/config.py,sha256=5BhMa8csuPCjEnTaNQjo_2IoO7esh1ch02MoSWkvwPw,791
350
350
  nat/profiler/forecasting/model_trainer.py,sha256=6Ci2KN4sNj1V3yduHXlA0tn50yHUmM2VcbRRS2L96OA,2456
351
351
  nat/profiler/forecasting/models/__init__.py,sha256=pLpWi7u1UrguKIYD-BYu8IExvJLX_U2cuW3Ifp3zCOY,937
352
352
  nat/profiler/forecasting/models/forecasting_base_model.py,sha256=PP6PObogPsfvzVGo6trfcDZ5b-VutqGVjdeOMAZB2W8,1235
353
- nat/profiler/forecasting/models/linear_model.py,sha256=YSf0tT4yLtEHW5-V02EFUks__MRiTzt0OxuwJOaJ_vc,7008
354
- nat/profiler/forecasting/models/random_forest_regressor.py,sha256=fiom3CGzsy0A-8gBG0FoEfj1T4GywaQjmDf9db1fskw,9548
353
+ nat/profiler/forecasting/models/linear_model.py,sha256=3Jyw238v0j4MkR5cqPazYP-gjw6bMUS6fS6xZlRndJs,7010
354
+ nat/profiler/forecasting/models/random_forest_regressor.py,sha256=3Lgguy5CFKoPCJyrS7f8ImeV6SCLAGajfnZCIAmBs8Y,9550
355
355
  nat/profiler/inference_optimization/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
356
356
  nat/profiler/inference_optimization/data_models.py,sha256=gJzlzKIkUbPPA4QyhQIXtE3hzuxdKFpB5ywECJ4T2Vg,11779
357
357
  nat/profiler/inference_optimization/llm_metrics.py,sha256=kC8LUonJiXjQ5ogH8D7GTEYk44ypwncRJrN0ByRWz6k,9482
@@ -359,11 +359,11 @@ nat/profiler/inference_optimization/prompt_caching.py,sha256=n3kfgWibCjkXbp6_Qo8
359
359
  nat/profiler/inference_optimization/token_uniqueness.py,sha256=zCPPwaBj1LOp6b9xKg9rJ80nbx1pgiRbo2PID_N8d2c,4536
360
360
  nat/profiler/inference_optimization/workflow_runtimes.py,sha256=RXCsLoWkaLi32fi8kqajhgVMIedtzljUUZ8LA-xJDEU,2664
361
361
  nat/profiler/inference_optimization/bottleneck_analysis/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
362
- nat/profiler/inference_optimization/bottleneck_analysis/nested_stack_analysis.py,sha256=J8gKaCe_F9PtHB051ZzqE-gyD5NMXqd2pZ9pnOqHHzI,16739
362
+ nat/profiler/inference_optimization/bottleneck_analysis/nested_stack_analysis.py,sha256=ouXHdlzqGD1hHLCXE7fNmUmUJqk8-Kw33XcHYg9ACdU,16741
363
363
  nat/profiler/inference_optimization/bottleneck_analysis/simple_stack_analysis.py,sha256=DBbOxgKAYsGMIkFnbHGNPDdZQllmXBKW0Nkiso05NzI,11096
364
364
  nat/profiler/inference_optimization/experimental/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
365
365
  nat/profiler/inference_optimization/experimental/concurrency_spike_analysis.py,sha256=3hFMDbfW7MKxFIhO7y35qtP5wPtLAA2ZqltlnI-OsVc,16953
366
- nat/profiler/inference_optimization/experimental/prefix_span_analysis.py,sha256=-e5pEW4CQXYm0c5JrI-d0p-yZzvHlUzZYM8GOYA4hEU,16662
366
+ nat/profiler/inference_optimization/experimental/prefix_span_analysis.py,sha256=mTC93u3e78nFDP36TnkNse8_HwNQKn3Qw4ksMycRAA8,16664
367
367
  nat/profiler/parameter_optimization/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
368
368
  nat/profiler/parameter_optimization/optimizable_utils.py,sha256=93Pl8A14Zq_f3XsxSH-yFnEJ6B7W5hp7doPnPoLlRB4,3714
369
369
  nat/profiler/parameter_optimization/optimizer_runtime.py,sha256=rXmCOq81o7ZorQOUYociVjuO3NO9CIjFBbwql2u_4H4,2715
@@ -406,8 +406,8 @@ nat/retriever/nemo_retriever/register.py,sha256=3XdrvEJzX2Zc8wpdm__4YYlEWBW-FK3t
406
406
  nat/retriever/nemo_retriever/retriever.py,sha256=gi3_qJFqE-iqRh3of_cmJg-SwzaQ3z24zA9LwY_MSLY,6930
407
407
  nat/runtime/__init__.py,sha256=Xs1JQ16L9btwreh4pdGKwskffAw1YFO48jKrU4ib_7c,685
408
408
  nat/runtime/loader.py,sha256=obUdAgZVYCPGC0R8u3wcoKFJzzSPQgJvrbU4OWygtog,7953
409
- nat/runtime/runner.py,sha256=Kzm5GRrGUFMQ_fbLOCJumYc4R-JXdTm5tUw2yMMDJpE,6450
410
- nat/runtime/session.py,sha256=DG4cpVg6GCVFY0cGzZnz55eLj0LoK5Q9Vg3NgbTqOHM,8029
409
+ nat/runtime/runner.py,sha256=sUF-zJMgqcFq4xRx8y5bxct2EzgiKbmFkvWkYxlDsQg,11798
410
+ nat/runtime/session.py,sha256=yOlZg3myau4c06M8v23KEojQpmMwDsr5P6GnXiVMg94,9101
411
411
  nat/runtime/user_metadata.py,sha256=ce37NRYJWnMOWk6A7VAQ1GQztjMmkhMOq-uYf2gNCwo,3692
412
412
  nat/settings/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
413
413
  nat/settings/global_settings.py,sha256=dEw9nkyx7pEEufmLS1o3mWhcXy7-ZpES4BZx1OWfg5M,12467
@@ -436,10 +436,11 @@ nat/tool/code_execution/local_sandbox/start_local_sandbox.sh,sha256=gnPuzbneKZ61
436
436
  nat/tool/memory_tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
437
437
  nat/tool/memory_tools/add_memory_tool.py,sha256=DYaYkVlH2myRshJpzmULfzdF0wFoPCAkTBokFVmhfzU,3349
438
438
  nat/tool/memory_tools/delete_memory_tool.py,sha256=EWJVgzIzLDqktY5domXph-N2U9FmybdWl4J7KM7uK4g,2532
439
- nat/tool/memory_tools/get_memory_tool.py,sha256=pJw6Lu2wukCW3mUGx5TtBNfdmdr-wqf7DQn2yNKxJ_4,2749
439
+ nat/tool/memory_tools/get_memory_tool.py,sha256=F0P7OkWQJZ1W6vCBWhAuYitBLnRXpAxnGyNmbkcTpAk,2749
440
440
  nat/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
441
441
  nat/utils/callable_utils.py,sha256=EIao6NhHRFEoBqYRC7aWoFqhlr2LeFT0XK-ac0coF9E,2475
442
442
  nat/utils/debugging_utils.py,sha256=6M4JhbHDNDnfmSRGmHvT5IgEeWSHBore3VngdE_PMqc,1332
443
+ nat/utils/decorators.py,sha256=AoMip9zmqrZm5wovZQytNvzFfIlS3PQxSYcgYeoLhxA,8240
443
444
  nat/utils/dump_distro_mapping.py,sha256=ptRVwrzhZplEWZUwwHOzyeuLj-ykkxn96t4oxUmRG28,1147
444
445
  nat/utils/log_levels.py,sha256=2hHWgOSuvuISdKN82BQgBh2yk9V5324jYMki8-1rAYs,888
445
446
  nat/utils/log_utils.py,sha256=dZLHt7qFqLlpPqMMFO9UVtSkOpMjFwz9tkmbAfOiNlg,1355
@@ -469,10 +470,10 @@ nat/utils/reactive/base/observer_base.py,sha256=6BiQfx26EMumotJ3KoVcdmFBYR_fnAss
469
470
  nat/utils/reactive/base/subject_base.py,sha256=UQOxlkZTIeeyYmG5qLtDpNf_63Y7p-doEeUA08_R8ME,2521
470
471
  nat/utils/settings/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
471
472
  nat/utils/settings/global_settings.py,sha256=9JaO6pxKT_Pjw6rxJRsRlFCXdVKCl_xUKU2QHZQWWNM,7294
472
- nvidia_nat-1.3.0rc1.dist-info/licenses/LICENSE-3rd-party.txt,sha256=fOk5jMmCX9YoKWyYzTtfgl-SUy477audFC5hNY4oP7Q,284609
473
- nvidia_nat-1.3.0rc1.dist-info/licenses/LICENSE.md,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
474
- nvidia_nat-1.3.0rc1.dist-info/METADATA,sha256=OanLau68nX0zoErBxdfAk6mvN5A97JDFGKC9VWG3baw,22939
475
- nvidia_nat-1.3.0rc1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
476
- nvidia_nat-1.3.0rc1.dist-info/entry_points.txt,sha256=4jCqjyETMpyoWbCBf4GalZU8I_wbstpzwQNezdAVbbo,698
477
- nvidia_nat-1.3.0rc1.dist-info/top_level.txt,sha256=lgJWLkigiVZuZ_O1nxVnD_ziYBwgpE2OStdaCduMEGc,8
478
- nvidia_nat-1.3.0rc1.dist-info/RECORD,,
473
+ nvidia_nat-1.3.0rc2.dist-info/licenses/LICENSE-3rd-party.txt,sha256=fOk5jMmCX9YoKWyYzTtfgl-SUy477audFC5hNY4oP7Q,284609
474
+ nvidia_nat-1.3.0rc2.dist-info/licenses/LICENSE.md,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
475
+ nvidia_nat-1.3.0rc2.dist-info/METADATA,sha256=xvXF8y1Su3huZJlBr45f6m_FkBp0Co_CVZpZjKr_PZs,22821
476
+ nvidia_nat-1.3.0rc2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
477
+ nvidia_nat-1.3.0rc2.dist-info/entry_points.txt,sha256=4jCqjyETMpyoWbCBf4GalZU8I_wbstpzwQNezdAVbbo,698
478
+ nvidia_nat-1.3.0rc2.dist-info/top_level.txt,sha256=lgJWLkigiVZuZ_O1nxVnD_ziYBwgpE2OStdaCduMEGc,8
479
+ nvidia_nat-1.3.0rc2.dist-info/RECORD,,