managed-deepagents 0.6.2.dev2__py3-none-win_amd64.whl → 0.6.2.dev4__py3-none-win_amd64.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.
@@ -17,7 +17,6 @@ from __future__ import annotations
17
17
 
18
18
  from managed_deepagents._managed_tools import (
19
19
  ManagedDeepAgentRuntime,
20
- ManagedRuntimeExtras,
21
20
  )
22
21
  from managed_deepagents.define_deep_agent import DeepAgentDefinition, define_deep_agent
23
22
  from managed_deepagents.define_memory import MemoryDefinition, define_memory
@@ -34,7 +33,6 @@ from managed_deepagents.schedules import define_schedule
34
33
  __all__ = [
35
34
  "DeepAgentDefinition",
36
35
  "ManagedDeepAgentRuntime",
37
- "ManagedRuntimeExtras",
38
36
  "MemoryDefinition",
39
37
  "SandboxDefinition",
40
38
  "auth",
Binary file
@@ -19,7 +19,6 @@ __all__ = [
19
19
  "ChannelEventsContext",
20
20
  "ChannelRequirements",
21
21
  "collect_channels",
22
- "has_ingress_channels",
23
22
  "is_channel",
24
23
  "requirements_from_channels",
25
24
  ]
@@ -135,11 +134,6 @@ def _channel_stem_name(source: str) -> str:
135
134
  return base
136
135
 
137
136
 
138
- def has_ingress_channels(channels: Sequence[object] | None) -> bool:
139
- """Return ``True`` when any channel can start an ingress run via ``events``."""
140
- return any(callable(getattr(channel, "events", None)) for channel in channels or ())
141
-
142
-
143
137
  def requirements_from_channels(
144
138
  channels: Sequence[object],
145
139
  ) -> dict[str, ChannelRequirements]:
@@ -18,30 +18,24 @@ from managed_deepagents._channels.binding import (
18
18
  from managed_deepagents._channels.runtime import create_runtime_channel
19
19
  from managed_deepagents._channels.schedule_delivery import (
20
20
  create_schedule_delivery_middleware,
21
- deliver_schedule_result,
22
- read_schedule_deliver_to,
23
21
  )
24
22
  from managed_deepagents._channels.store import InMemoryChannelStore
25
23
  from managed_deepagents._channels.types import (
26
- CHANNEL_ERROR_CODES,
27
24
  ChannelError,
28
25
  normalize_channel_destination,
29
26
  )
30
27
 
31
28
  __all__ = [
32
29
  "CHANNEL_BINDING_KEY",
33
- "CHANNEL_ERROR_CODES",
34
30
  "SLACK_BOT_TOKEN_ENV",
35
31
  "ChannelError",
36
32
  "InMemoryChannelStore",
37
33
  "clear_final_posted",
38
34
  "create_runtime_channel",
39
35
  "create_schedule_delivery_middleware",
40
- "deliver_schedule_result",
41
36
  "extract_assistant_text",
42
37
  "mark_final_posted",
43
38
  "normalize_channel_destination",
44
- "read_schedule_deliver_to",
45
39
  "resolve_runtime_channel",
46
40
  "was_delivery_final_posted",
47
41
  ]
@@ -20,7 +20,6 @@ _by_name: dict[str, MessagingFactory] = {}
20
20
  _trusted_providers: set[str] = {"slack"}
21
21
 
22
22
  __all__ = [
23
- "clear_messaging_registry",
24
23
  "messaging_transport_for_name",
25
24
  "register_channel_messaging",
26
25
  "register_connector_messaging",
@@ -65,13 +64,6 @@ def register_connector_messaging(connectors: Sequence[object]) -> None:
65
64
  _register_messaging_sources(connectors)
66
65
 
67
66
 
68
- def clear_messaging_registry() -> None:
69
- """Clear the registry (tests)."""
70
- _by_name.clear()
71
- _trusted_providers.clear()
72
- _trusted_providers.update({"slack"})
73
-
74
-
75
67
  def messaging_transport_for_name(
76
68
  name: str, env: Mapping[str, str] | None = None
77
69
  ) -> ChannelTransport | None:
@@ -24,19 +24,6 @@ ChannelErrorCode = Literal[
24
24
  "channel_provider_rejected",
25
25
  ]
26
26
 
27
- CHANNEL_ERROR_CODES: tuple[ChannelErrorCode, ...] = (
28
- "channel_invalid_signature",
29
- "channel_replay_rejected",
30
- "channel_installation_not_found",
31
- "channel_event_filtered",
32
- "channel_identity_unresolvable",
33
- "channel_destination_forbidden",
34
- "channel_invocation_rate_limited",
35
- "channel_run_failed",
36
- "channel_provider_rate_limited",
37
- "channel_provider_rejected",
38
- )
39
-
40
27
 
41
28
  class ChannelAddressRequired(TypedDict):
42
29
  conversation_id: str
@@ -177,7 +164,6 @@ def normalize_channel_destination(
177
164
 
178
165
 
179
166
  __all__ = [
180
- "CHANNEL_ERROR_CODES",
181
167
  "ChannelAddress",
182
168
  "ChannelAttachmentRef",
183
169
  "ChannelCapabilities",
@@ -21,7 +21,6 @@ __all__ = [
21
21
  "EventsContext",
22
22
  "SandboxContext",
23
23
  "collect_connectors",
24
- "has_ingress_connectors",
25
24
  "has_sandbox_connectors",
26
25
  "is_connector",
27
26
  "load_connector_tools",
@@ -201,11 +200,6 @@ def has_sandbox_connectors(connectors: Sequence[object] | None) -> bool:
201
200
  return any(callable(getattr(connector, "sandbox", None)) for connector in connectors or ())
202
201
 
203
202
 
204
- def has_ingress_connectors(connectors: Sequence[object] | None) -> bool:
205
- """Return ``True`` when any connector can start an ingress run via ``events``."""
206
- return any(callable(getattr(connector, "events", None)) for connector in connectors or ())
207
-
208
-
209
203
  def requirements_from_connectors(
210
204
  connectors: Sequence[object],
211
205
  ) -> dict[str, ConnectorRequirements]:
@@ -9,11 +9,12 @@ and other built-ins are not double-headed.
9
9
  :data:`MDA_PUBLIC_APP_URL_ENV` plus optional :data:`MDA_CORS_ORIGINS_ENV`.
10
10
 
11
11
  Subdomain policy: an allowlisted origin also permits **one** DNS label beneath
12
- it (e.g. Cloudflare Pages previews under a project apex). Deeper nesting is
13
- rejected. With ``allow_credentials=True``, do not put hosts that issue
14
- attacker-reachable subdomains into :data:`MDA_CORS_ORIGINS_ENV` / the public
15
- app URL — a malicious page on such a subdomain could read credentialed
16
- ``/connectors`` and ``/channels`` responses.
12
+ it (e.g. Cloudflare Pages previews under a project apex) **on the same scheme**.
13
+ Deeper nesting is rejected, and ``http://`` is never reflected for an
14
+ ``https://`` allowlist entry (or the reverse). With ``allow_credentials=True``,
15
+ do not put hosts that issue attacker-reachable subdomains into
16
+ :data:`MDA_CORS_ORIGINS_ENV` / the public app URL — a malicious page on such a
17
+ subdomain could read credentialed ``/connectors`` and ``/channels`` responses.
17
18
  """
18
19
 
19
20
  from __future__ import annotations
@@ -96,9 +97,10 @@ def _is_single_subdomain(request_host: str, allowed_host: str) -> bool:
96
97
  def match_cors_origin(request_origin: str, allowlist: list[str]) -> str | None:
97
98
  """Return ``request_origin`` when allowed, otherwise ``None``.
98
99
 
99
- Mirrors TypeScript ``matchCorsOrigin`` (exact host or one subdomain label).
100
- Starlette has no origin callback, so production uses
101
- :func:`_cors_origin_regex` instead; keep this helper for tests / policy parity.
100
+ Mirrors TypeScript ``matchCorsOrigin`` (exact origin, or one subdomain
101
+ label on the same scheme). Starlette has no origin callback, so production
102
+ uses :func:`_cors_origin_regex` instead; keep this helper for tests / policy
103
+ parity.
102
104
  """
103
105
  parsed = urlparse(request_origin)
104
106
  if not parsed.scheme or not parsed.netloc:
@@ -108,8 +110,9 @@ def match_cors_origin(request_origin: str, allowlist: list[str]) -> str | None:
108
110
  return origin
109
111
  request_host = parsed.netloc
110
112
  for allowed in allowlist:
111
- allowed_host = urlparse(allowed).netloc
112
- if not allowed_host:
113
+ allowed_parsed = urlparse(allowed)
114
+ allowed_host = allowed_parsed.netloc
115
+ if not allowed_host or parsed.scheme != allowed_parsed.scheme:
113
116
  continue
114
117
  if request_host == allowed_host or _is_single_subdomain(request_host, allowed_host):
115
118
  return origin
@@ -42,7 +42,7 @@ from managed_deepagents.identity import (
42
42
  RuntimeIdentity,
43
43
  )
44
44
 
45
- CHANNEL_EVENTS_MAX_BODY_BYTES = 1024 * 1024
45
+ EVENTS_MAX_BODY_BYTES = 1024 * 1024
46
46
 
47
47
  RouteResult = object | Awaitable[object]
48
48
  PublicRouteHandler = Callable[[HttpRequestLike], RouteResult]
@@ -204,9 +204,9 @@ def _channel_events_route(
204
204
  if not callable(events):
205
205
  raise TypeError(f'channel "{name}" is missing events')
206
206
  try:
207
- raw_body = await _read_limited_channel_body(request)
207
+ raw_body = await _read_limited_events_body(request)
208
208
  if raw_body is None:
209
- return responses.PlainTextResponse("Payload Too Large", status_code=413)
209
+ return responses.JSONResponse({"error": "payload too large"}, status_code=413)
210
210
  result = events(
211
211
  {
212
212
  "name": name,
@@ -225,12 +225,12 @@ def _channel_events_route(
225
225
  return cast("StarletteRoute", routing.Route(path, events_handler, methods=["POST"]))
226
226
 
227
227
 
228
- async def _read_limited_channel_body(request: HttpRequestLike) -> bytes | None:
228
+ async def _read_limited_events_body(request: HttpRequestLike) -> bytes | None:
229
229
  stream = getattr(request, "stream", None)
230
230
  if not callable(stream):
231
231
  body_method = getattr(request, "body", None)
232
232
  body = await body_method() if callable(body_method) else b""
233
- if isinstance(body, bytes) and len(body) <= CHANNEL_EVENTS_MAX_BODY_BYTES:
233
+ if isinstance(body, bytes) and len(body) <= EVENTS_MAX_BODY_BYTES:
234
234
  return body
235
235
  return None
236
236
 
@@ -238,7 +238,7 @@ async def _read_limited_channel_body(request: HttpRequestLike) -> bytes | None:
238
238
  size = 0
239
239
  async for chunk in stream():
240
240
  size += len(chunk)
241
- if size > CHANNEL_EVENTS_MAX_BODY_BYTES:
241
+ if size > EVENTS_MAX_BODY_BYTES:
242
242
  return None
243
243
  chunks.append(chunk)
244
244
  return b"".join(chunks)
@@ -261,22 +261,28 @@ def _connector_events_route(
261
261
  )
262
262
 
263
263
  async def events_handler(request: HttpRequestLike) -> object:
264
- body_method = getattr(request, "body", None)
265
- raw_body = await body_method() if callable(body_method) else b""
264
+ responses = import_module("starlette.responses")
266
265
  events = getattr(connector, "events", None)
267
266
  if not callable(events):
268
267
  raise TypeError(f'connector "{name}" is missing events')
269
- result = events(
270
- {
271
- "name": name,
272
- "request": request,
273
- "raw_body": raw_body,
274
- "connector": connector,
275
- }
276
- )
277
- if inspect.isawaitable(result):
278
- result = await result
279
- return result
268
+ try:
269
+ raw_body = await _read_limited_events_body(request)
270
+ if raw_body is None:
271
+ return responses.JSONResponse({"error": "payload too large"}, status_code=413)
272
+ result = events(
273
+ {
274
+ "name": name,
275
+ "request": request,
276
+ "raw_body": raw_body,
277
+ "connector": connector,
278
+ }
279
+ )
280
+ if inspect.isawaitable(result):
281
+ result = await result
282
+ return result
283
+ except Exception as error: # noqa: BLE001 - log a safe label, keep the HTTP body opaque
284
+ logger.error("POST %s failed (%s)", path, logger.safe_error_label(error))
285
+ return responses.JSONResponse({"error": "internal error"}, status_code=500)
280
286
 
281
287
  return cast("StarletteRoute", routing.Route(path, events_handler, methods=["POST"]))
282
288
 
@@ -25,13 +25,11 @@ from typing import TYPE_CHECKING, Any, Literal, Protocol, TypedDict, cast
25
25
  from managed_deepagents._channel import (
26
26
  Channel,
27
27
  collect_channels,
28
- has_ingress_channels,
29
28
  requirements_from_channels,
30
29
  )
31
30
  from managed_deepagents._connector import (
32
31
  Connector,
33
32
  collect_connectors,
34
- has_ingress_connectors,
35
33
  has_sandbox_connectors,
36
34
  load_connector_tools,
37
35
  requirements_from_connectors,
@@ -40,21 +38,9 @@ from managed_deepagents._connector import (
40
38
  from managed_deepagents._eval_filesystem import create_eval_trial_filesystem_backend
41
39
  from managed_deepagents._identity_auth import build_managed_auth
42
40
  from managed_deepagents._identity_http import build_managed_http_app
43
- from managed_deepagents._identity_runtime import (
44
- build_runtime_identity,
45
- resolve_runtime_configurable,
46
- sanitize_configurable,
47
- )
48
- from managed_deepagents._managed_middleware import (
49
- managed_middleware_overrides,
50
- with_managed_middleware,
51
- wrap_middleware_with_managed_runtime,
52
- )
53
- from managed_deepagents._managed_tools import (
54
- managed_runtime_overrides,
55
- with_managed_runtime,
56
- wrap_tools_with_managed_runtime,
57
- )
41
+ from managed_deepagents._identity_runtime import resolve_runtime_configurable
42
+ from managed_deepagents._managed_middleware import wrap_middleware_with_managed_runtime
43
+ from managed_deepagents._managed_tools import wrap_tools_with_managed_runtime
58
44
  from managed_deepagents._memory import (
59
45
  managed_context_backend as _managed_context_backend,
60
46
  )
@@ -140,25 +126,15 @@ __all__ = [
140
126
  "RECIPE_SNAPSHOT_ENV",
141
127
  "build_managed_auth",
142
128
  "build_managed_http_app",
143
- "build_runtime_identity",
144
129
  "collect_channels",
145
130
  "collect_connectors",
146
131
  "compile_managed_agent",
147
132
  "compile_managed_agent_for_eval",
148
- "has_ingress_channels",
149
- "has_ingress_connectors",
150
133
  "has_sandbox_connectors",
151
134
  "load_connector_tools",
152
- "managed_middleware_overrides",
153
- "managed_runtime_overrides",
154
135
  "requirements_from_channels",
155
136
  "requirements_from_connectors",
156
137
  "run_connector_sandbox_hooks",
157
- "sanitize_configurable",
158
- "with_managed_middleware",
159
- "with_managed_runtime",
160
- "wrap_middleware_with_managed_runtime",
161
- "wrap_tools_with_managed_runtime",
162
138
  ]
163
139
 
164
140
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: managed-deepagents
3
- Version: 0.6.2.dev2
3
+ Version: 0.6.2.dev4
4
4
  Summary: Managed Deep Agents — the define_deep_agent authoring interface plus the CLI that compiles and deploys a code-first Deep Agent repository to a managed LangGraph runtime.
5
5
  Author: LangChain
6
6
  License: MIT
@@ -1,13 +1,13 @@
1
- managed_deepagents/__init__.py,sha256=dwW3AxLgL9ZPZEWngXOzvKYYg8-yz-0w11qXQV2swZM,1490
1
+ managed_deepagents/__init__.py,sha256=I4zM2GVyFXqvGvQ8qjglphHcaNdMUAq1nSdBTOCMZSs,1436
2
2
  managed_deepagents/__main__.py,sha256=GcjmqN0Ea5v8OHKMxYToasm3eCX_doSLOlpEzAi1tAw,67
3
- managed_deepagents/_channel.py,sha256=FzPac3TaQ9TJbwMN_BX9ip2rDFJ_wTpbvEqlh3vuDbI,5544
3
+ managed_deepagents/_channel.py,sha256=-Og7QOM1yvV-yeTDOfv2CxXpR2HLY4xdX1bLrIsPi5k,5272
4
4
  managed_deepagents/_cli.py,sha256=jVaw2i1ysdRoWziMdPFmRXtKry_baYGRspyzyIeGWoU,1688
5
- managed_deepagents/_connector.py,sha256=nYlVnh2K5TXTa9a0GPecgyz3-CUJ7wHFC8WYXtnw0p4,8326
6
- managed_deepagents/_cors.py,sha256=MKT5DQwIhCpHDOcb6RwR1XIJBsrWRbUwh0t0Q9Ur5oc,7377
5
+ managed_deepagents/_connector.py,sha256=Syp0SRs1oFCUUltIUmZbSNi1Ys_PxObVdiAi-I9GBzs,8040
6
+ managed_deepagents/_cors.py,sha256=V96RPrqewdRWG5RpEMEBnPuRq9_zF8nf4vf99k5dkuI,7597
7
7
  managed_deepagents/_eval_filesystem.py,sha256=1nuD0yn3gh19JrWNocWyPFyeJW42E7Gse3XRWCUSTAA,1399
8
8
  managed_deepagents/_extension.py,sha256=x2H1S8inkvTZQ_dr7kq0M8o8rre1FjzCDvMzItw4iyk,5318
9
9
  managed_deepagents/_identity_auth.py,sha256=M8SHwh18aQhf8QEgVfLiX0vaH6kBqW3Ic0nmuEffjrE,26866
10
- managed_deepagents/_identity_http.py,sha256=MuqhmBxkW5tnXN_Nv3NJHzIqlOHpFG7JIpMGNbnK76c,15598
10
+ managed_deepagents/_identity_http.py,sha256=aVQfZr7UKQoXF1Dry3p9fzXIj1882sEa668rvhn37i0,16029
11
11
  managed_deepagents/_identity_links.py,sha256=Z1H2Seo2KaI-vcdU3_PGM-F06wOz0IQqUP-28wqiQsA,9172
12
12
  managed_deepagents/_identity_runtime.py,sha256=9-8y7OYn2dbiYiWUjLpv-v9cA_Q3bxoPlJtogdnBdCQ,10500
13
13
  managed_deepagents/_ingress.py,sha256=mPIb1o60G_pCg4Qotwt-SUloCxY1xXfUTSyN_BPZNts,11581
@@ -21,22 +21,22 @@ managed_deepagents/define_deep_agent.py,sha256=17VfiiBINyhlqlATHrlJRPihKVlBsDGDP
21
21
  managed_deepagents/define_memory.py,sha256=n7Ya20dWGvwbZOkPIXoa68nTnJie8tpKEkRwfJQt_fU,5036
22
22
  managed_deepagents/namespaces.py,sha256=GS76G19-V5Svfpbca-9xhQfJ6vel52jcJyfj6loLt_Y,4199
23
23
  managed_deepagents/py.typed,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
24
- managed_deepagents/runtime.py,sha256=7-hg8e-iuiMroHo7Jz8teEntYqwF_YSsnHMHqDkEZnw,65296
24
+ managed_deepagents/runtime.py,sha256=vRAFLVxoYKW-MA8C8aei-23NpS-0MRgjSn4WhezFAR8,64712
25
25
  managed_deepagents/sandbox.py,sha256=xlpcWa6CoVX6GKip2nK-0Lw-HBCoFGFYm0r4x9eYwcY,2530
26
26
  managed_deepagents/schedules.py,sha256=MtTQN4tlm1NizFDCjZZv_huGfbQx-dj9WP1dIBybCug,5237
27
- managed_deepagents/_binaries/mda.exe,sha256=8vQ1GnmCoEMAElxZtCewtg-v33gX5dvygps_9Cfg2ZQ,3744768
28
- managed_deepagents/_channels/__init__.py,sha256=c8Pm2PDSahJQHKTtIA5suLP02GdFiny7GstuIF1U0-o,1390
27
+ managed_deepagents/_binaries/mda.exe,sha256=Tq3ggZyrxUsBb7xIMnceQ7qE6PacG3ErM_i928e28q0,3744768
28
+ managed_deepagents/_channels/__init__.py,sha256=Z6eXmzaLxG09DSyJoY_CX34axcsBo9gSJ0G7pRm2D6M,1216
29
29
  managed_deepagents/_channels/assistant_text.py,sha256=f-Z3J3PlQFXZHztgBxlRoqB2LigU1Hj1YpwoXBMTR18,2171
30
30
  managed_deepagents/_channels/binding.py,sha256=6vAKbWpg-eyLErJ0SsozH4mZc50hA1NhquM63mVmWDQ,3423
31
31
  managed_deepagents/_channels/manifest.py,sha256=i9A5kWGC9FUCmtDPSxwoevPo1e8JbIZUMLzsCJdIrag,679
32
- managed_deepagents/_channels/messaging_registry.py,sha256=9Uy-ch4S9g7vvrINjIGWVU8X7HvnKekrYa21P1mUyPY,2910
32
+ managed_deepagents/_channels/messaging_registry.py,sha256=xCl65CmBkFcakYaDPMLFRrDyNd42WfQPp9TEA6NNx9E,2705
33
33
  managed_deepagents/_channels/registry.py,sha256=Y-dYgc1ClR5r1qdyxeQC6kVfOeUnaBP6c3ChwtJEgBg,1610
34
34
  managed_deepagents/_channels/registry_store.py,sha256=1jDlzL3WS9TkqjKmHS0zLeNeB7c_0p_NgbayQS9u2ak,705
35
35
  managed_deepagents/_channels/response_format.py,sha256=DbXVhj1YyOF0nSr7Lglu440IvAmMA9ulfGXvkmFVsSo,2554
36
36
  managed_deepagents/_channels/runtime.py,sha256=86qFJ4lqNUD-dSn5arwL7yHPWd4LKLVmcGAvAkrPSqY,6542
37
37
  managed_deepagents/_channels/schedule_delivery.py,sha256=TkN3VAlSc_CeL17Grg2kbP-fJisy-UOBjMIysKhsDGE,10994
38
38
  managed_deepagents/_channels/store.py,sha256=NfQyqqB7KiWyGq23Lt79t9I5EPwrKBUvSUWZnx_z7JY,4454
39
- managed_deepagents/_channels/types.py,sha256=RvVBLM6kM6G2yvZ19WxMzJQB9eTBhibouFgnRGKaw78,5100
39
+ managed_deepagents/_channels/types.py,sha256=E-bQyPeYXmjcUIgu8t4U9nr6O3Aqn_HgSZ0FubEpq2I,4675
40
40
  managed_deepagents/_channels/slack/__init__.py,sha256=5d7Su1eGArEYv71RMXy_O5srH0klr9bbSzvyYnS3UFs,9062
41
41
  managed_deepagents/_channels/slack/adapter.py,sha256=A0LaxZqGA7vW8YmbQ05NroKy62jMZkQkIAIJMI3lBy4,3428
42
42
  managed_deepagents/_channels/slack/http.py,sha256=0mEbhBTFI9b7Bia5zZPkp07dQkN19Ii7k2PcF67bk1Y,20570
@@ -64,9 +64,9 @@ managed_deepagents/identity/__init__.py,sha256=7qfGbOfQf4-5EQT6Ssrf8_CRhkihr-ENf
64
64
  managed_deepagents/identity/claims.py,sha256=prby7r_8Lww3MmoBm8PX6PsSGE3GwSHkr8mVIz_08nU,1180
65
65
  managed_deepagents/identity/options.py,sha256=x_yMbXEFR7zXyehEjDHG2qjAlukXjrRBcQLcM6IndLM,2550
66
66
  managed_deepagents/identity/supabase.py,sha256=8uobl3WCrQL_ieSXG8KTLf1th7Qjim9liZT50HeaJE0,6026
67
- managed_deepagents-0.6.2.dev2.dist-info/licenses/LICENSE,sha256=WnPZQQ608ojZUkXl7BW6VbKloIAibZiGm1K6cjeZOL8,1066
68
- managed_deepagents-0.6.2.dev2.dist-info/METADATA,sha256=uVBFsjGHtJGFK9rV8vdP-9uA11Z92IaLUevywVVydew,12848
69
- managed_deepagents-0.6.2.dev2.dist-info/WHEEL,sha256=3I5VVWZdsFlU417aCS2bMRuerS8wsfvBq99MyatBV3A,97
70
- managed_deepagents-0.6.2.dev2.dist-info/entry_points.txt,sha256=ziZqkKuaDO3qHCjKmBhrx9cm3ok8bZ9xcEDpUTj4unM,53
71
- managed_deepagents-0.6.2.dev2.dist-info/top_level.txt,sha256=fdBo4O0Hlol_w022tTLB5ftZpamb4yJoQ3MUvjgTGfA,19
72
- managed_deepagents-0.6.2.dev2.dist-info/RECORD,,
67
+ managed_deepagents-0.6.2.dev4.dist-info/licenses/LICENSE,sha256=WnPZQQ608ojZUkXl7BW6VbKloIAibZiGm1K6cjeZOL8,1066
68
+ managed_deepagents-0.6.2.dev4.dist-info/METADATA,sha256=0alJE7loSiE2eMsfn7yOu7q7X9iLxMiw4g5WhBviPRU,12848
69
+ managed_deepagents-0.6.2.dev4.dist-info/WHEEL,sha256=3I5VVWZdsFlU417aCS2bMRuerS8wsfvBq99MyatBV3A,97
70
+ managed_deepagents-0.6.2.dev4.dist-info/entry_points.txt,sha256=ziZqkKuaDO3qHCjKmBhrx9cm3ok8bZ9xcEDpUTj4unM,53
71
+ managed_deepagents-0.6.2.dev4.dist-info/top_level.txt,sha256=fdBo4O0Hlol_w022tTLB5ftZpamb4yJoQ3MUvjgTGfA,19
72
+ managed_deepagents-0.6.2.dev4.dist-info/RECORD,,