managed-deepagents 0.6.2.dev44__py3-none-win_amd64.whl → 0.6.2.dev46__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.
Potentially problematic release.
This version of managed-deepagents might be problematic. Click here for more details.
- managed_deepagents/_agent_auth.py +13 -9
- managed_deepagents/_binaries/mda.exe +0 -0
- managed_deepagents/_connections.py +2 -1
- managed_deepagents/_identity_auth.py +12 -16
- managed_deepagents/_ingress.py +2 -0
- {managed_deepagents-0.6.2.dev44.dist-info → managed_deepagents-0.6.2.dev46.dist-info}/METADATA +1 -1
- {managed_deepagents-0.6.2.dev44.dist-info → managed_deepagents-0.6.2.dev46.dist-info}/RECORD +11 -11
- {managed_deepagents-0.6.2.dev44.dist-info → managed_deepagents-0.6.2.dev46.dist-info}/WHEEL +0 -0
- {managed_deepagents-0.6.2.dev44.dist-info → managed_deepagents-0.6.2.dev46.dist-info}/entry_points.txt +0 -0
- {managed_deepagents-0.6.2.dev44.dist-info → managed_deepagents-0.6.2.dev46.dist-info}/licenses/LICENSE +0 -0
- {managed_deepagents-0.6.2.dev44.dist-info → managed_deepagents-0.6.2.dev46.dist-info}/top_level.txt +0 -0
|
@@ -65,8 +65,15 @@ def clear_principal_resolve_cache_for_tests() -> None:
|
|
|
65
65
|
_principal_resolve_cache.clear()
|
|
66
66
|
|
|
67
67
|
|
|
68
|
-
def _principal_resolve_cache_key(
|
|
69
|
-
|
|
68
|
+
def _principal_resolve_cache_key(
|
|
69
|
+
context: AgentAuthContext, identity: ResolvePrincipalIdentity
|
|
70
|
+
) -> str:
|
|
71
|
+
origin = context.base_url.rstrip("/")
|
|
72
|
+
workspace = (context.workspace_id or "").strip()
|
|
73
|
+
return (
|
|
74
|
+
f"{origin}\0{workspace}\0"
|
|
75
|
+
f"{identity['provider']}\0{identity['issuer']}\0{identity['subject']}"
|
|
76
|
+
)
|
|
70
77
|
|
|
71
78
|
|
|
72
79
|
class PendingAuthorization(TypedDict):
|
|
@@ -145,17 +152,14 @@ class AgentAuth:
|
|
|
145
152
|
"Agent Auth principal resolve requires provider, issuer, and subject"
|
|
146
153
|
)
|
|
147
154
|
key = _principal_resolve_cache_key(
|
|
148
|
-
{"provider": provider, "issuer": issuer, "subject": subject}
|
|
155
|
+
self.context, {"provider": provider, "issuer": issuer, "subject": subject}
|
|
149
156
|
)
|
|
150
157
|
cached = _principal_resolve_cache.get(key)
|
|
151
158
|
if cached is not None:
|
|
152
159
|
return cached
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
)
|
|
157
|
-
except Exception:
|
|
158
|
-
raise
|
|
160
|
+
principal_id = self._resolve_principal_uncached(
|
|
161
|
+
{"provider": provider, "issuer": issuer, "subject": subject}
|
|
162
|
+
)
|
|
159
163
|
_principal_resolve_cache[key] = principal_id
|
|
160
164
|
return principal_id
|
|
161
165
|
|
|
Binary file
|
|
@@ -24,6 +24,7 @@ from managed_deepagents._agent_auth import (
|
|
|
24
24
|
AgentAuth,
|
|
25
25
|
AgentAuthContext,
|
|
26
26
|
CredentialAuthorizationRequiredError,
|
|
27
|
+
ResolvePrincipalIdentity,
|
|
27
28
|
WorkspaceConnection,
|
|
28
29
|
clear_principal_resolve_cache_for_tests,
|
|
29
30
|
)
|
|
@@ -476,7 +477,7 @@ def resolve_credential_principal_id(
|
|
|
476
477
|
def _external_identity_for_resolve(
|
|
477
478
|
identity: RuntimeIdentity,
|
|
478
479
|
workspace_id: str | None,
|
|
479
|
-
) ->
|
|
480
|
+
) -> ResolvePrincipalIdentity | None:
|
|
480
481
|
user = identity.get("user") or {}
|
|
481
482
|
subject = user.get("id") if isinstance(user, Mapping) else None
|
|
482
483
|
if not isinstance(subject, str) or not subject.strip():
|
|
@@ -16,7 +16,6 @@ import asyncio
|
|
|
16
16
|
import hmac
|
|
17
17
|
import json
|
|
18
18
|
import os
|
|
19
|
-
import re
|
|
20
19
|
from collections.abc import Callable, Iterable, Mapping
|
|
21
20
|
from http import HTTPStatus
|
|
22
21
|
from importlib import import_module
|
|
@@ -65,17 +64,6 @@ class ManagedUser(ManagedUserRequired, total=False):
|
|
|
65
64
|
mda_agent_auth_principal_id: str
|
|
66
65
|
|
|
67
66
|
|
|
68
|
-
_AGENT_AUTH_PRINCIPAL_ID = re.compile(
|
|
69
|
-
r"^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
|
|
70
|
-
re.IGNORECASE,
|
|
71
|
-
)
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
def is_agent_auth_principal_id(value: str) -> bool:
|
|
75
|
-
"""True when ``value`` is shaped like an Agent Auth principal UUID."""
|
|
76
|
-
return bool(_AGENT_AUTH_PRINCIPAL_ID.fullmatch(value.strip()))
|
|
77
|
-
|
|
78
|
-
|
|
79
67
|
if TYPE_CHECKING:
|
|
80
68
|
from managed_deepagents.identity import (
|
|
81
69
|
HttpIngress,
|
|
@@ -104,6 +92,8 @@ INGRESS_SECRET_HEADER = "x-mda-ingress-secret" # noqa: S105 - header name, not
|
|
|
104
92
|
#: Internal handoff headers — accepted after a server API key or legacy ingress secret validates.
|
|
105
93
|
SOURCE_PROVIDER_HEADER = "x-mda-source-provider"
|
|
106
94
|
SOURCE_THREAD_HEADER = "x-mda-source-thread-id"
|
|
95
|
+
#: Trigger loopback stamp for a verified identity_context principal UUID.
|
|
96
|
+
AGENT_AUTH_PRINCIPAL_HEADER = "x-mda-agent-auth-principal-id"
|
|
107
97
|
|
|
108
98
|
#: Deployment env var carrying the shared secret the trusted backend presents.
|
|
109
99
|
INGRESS_SECRET_ENV = "MDA_INGRESS_SECRET" # noqa: S105 - env var name, not a secret
|
|
@@ -493,9 +483,9 @@ def _trusted_headers_user(headers: Mapping[str, object]) -> ManagedUser:
|
|
|
493
483
|
if source_provider is not None and source_thread is not None:
|
|
494
484
|
user["mda_source_provider"] = str(source_provider)
|
|
495
485
|
user["mda_source_thread_id"] = str(source_thread)
|
|
496
|
-
|
|
497
|
-
if
|
|
498
|
-
user["mda_agent_auth_principal_id"] =
|
|
486
|
+
principal = str(headers.get(AGENT_AUTH_PRINCIPAL_HEADER) or "").strip()
|
|
487
|
+
if principal:
|
|
488
|
+
user["mda_agent_auth_principal_id"] = principal
|
|
499
489
|
return user
|
|
500
490
|
|
|
501
491
|
|
|
@@ -516,7 +506,13 @@ def _has_valid_handoff_secret(headers: Mapping[str, object]) -> bool:
|
|
|
516
506
|
|
|
517
507
|
def _has_handoff_headers(headers: Mapping[str, object]) -> bool:
|
|
518
508
|
return any(
|
|
519
|
-
header in headers
|
|
509
|
+
header in headers
|
|
510
|
+
for header in (
|
|
511
|
+
USER_HEADER,
|
|
512
|
+
SOURCE_PROVIDER_HEADER,
|
|
513
|
+
SOURCE_THREAD_HEADER,
|
|
514
|
+
AGENT_AUTH_PRINCIPAL_HEADER,
|
|
515
|
+
)
|
|
520
516
|
)
|
|
521
517
|
|
|
522
518
|
|
managed_deepagents/_ingress.py
CHANGED
|
@@ -19,6 +19,7 @@ from managed_deepagents._channels.assistant_text import extract_assistant_text
|
|
|
19
19
|
from managed_deepagents._channels.binding import CHANNEL_BINDING_KEY, ChannelBinding
|
|
20
20
|
from managed_deepagents._channels.types import ChannelError
|
|
21
21
|
from managed_deepagents._identity_auth import (
|
|
22
|
+
AGENT_AUTH_PRINCIPAL_HEADER,
|
|
22
23
|
HANDOFF_SECRET_ENV,
|
|
23
24
|
HANDOFF_SECRET_HEADER,
|
|
24
25
|
INGRESS_SECRET_ENV,
|
|
@@ -355,6 +356,7 @@ def _create_trigger_ingress_loopback_client(
|
|
|
355
356
|
)
|
|
356
357
|
headers = {
|
|
357
358
|
USER_HEADER: user_id,
|
|
359
|
+
AGENT_AUTH_PRINCIPAL_HEADER: user_id,
|
|
358
360
|
SOURCE_PROVIDER_HEADER: source["provider"],
|
|
359
361
|
SOURCE_THREAD_HEADER: source["thread_key"],
|
|
360
362
|
}
|
{managed_deepagents-0.6.2.dev44.dist-info → managed_deepagents-0.6.2.dev46.dist-info}/METADATA
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: managed-deepagents
|
|
3
|
-
Version: 0.6.2.
|
|
3
|
+
Version: 0.6.2.dev46
|
|
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
|
{managed_deepagents-0.6.2.dev44.dist-info → managed_deepagents-0.6.2.dev46.dist-info}/RECORD
RENAMED
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
managed_deepagents/__init__.py,sha256=RezkpgYxCcywj6_W7Nk3PN9TMBfYyFgIatxGrIeY8V4,1862
|
|
2
2
|
managed_deepagents/__main__.py,sha256=GcjmqN0Ea5v8OHKMxYToasm3eCX_doSLOlpEzAi1tAw,67
|
|
3
|
-
managed_deepagents/_agent_auth.py,sha256=
|
|
3
|
+
managed_deepagents/_agent_auth.py,sha256=TUZJgc1TyjEFNZX3E97VV30igM_bC9rDZ-pmKpUSExA,20010
|
|
4
4
|
managed_deepagents/_agent_auth_http.py,sha256=aCYn7Rrtw3cnK3r4ir4JWxwzFkb7cF7nBgPpNdydxDw,5108
|
|
5
5
|
managed_deepagents/_channel.py,sha256=-Og7QOM1yvV-yeTDOfv2CxXpR2HLY4xdX1bLrIsPi5k,5272
|
|
6
6
|
managed_deepagents/_cli.py,sha256=jVaw2i1ysdRoWziMdPFmRXtKry_baYGRspyzyIeGWoU,1688
|
|
7
|
-
managed_deepagents/_connections.py,sha256=
|
|
7
|
+
managed_deepagents/_connections.py,sha256=zRqC0uy5FC6rdW9Dbwvpx1ubba6eHb-x7aGSZvONpGk,19418
|
|
8
8
|
managed_deepagents/_connector.py,sha256=Syp0SRs1oFCUUltIUmZbSNi1Ys_PxObVdiAi-I9GBzs,8040
|
|
9
9
|
managed_deepagents/_cors.py,sha256=V96RPrqewdRWG5RpEMEBnPuRq9_zF8nf4vf99k5dkuI,7597
|
|
10
10
|
managed_deepagents/_credential_gate.py,sha256=SNxXunqmHgjBsZpiZu8yp49YkRIO0amkl0-7GHLGnIg,12280
|
|
11
11
|
managed_deepagents/_eval_filesystem.py,sha256=1nuD0yn3gh19JrWNocWyPFyeJW42E7Gse3XRWCUSTAA,1399
|
|
12
12
|
managed_deepagents/_extension.py,sha256=x2H1S8inkvTZQ_dr7kq0M8o8rre1FjzCDvMzItw4iyk,5318
|
|
13
|
-
managed_deepagents/_identity_auth.py,sha256=
|
|
13
|
+
managed_deepagents/_identity_auth.py,sha256=sykxsL2wzcJI7I0MFs4xkcoviQhfNQGIBFQ0rfP3cXU,33418
|
|
14
14
|
managed_deepagents/_identity_http.py,sha256=aVQfZr7UKQoXF1Dry3p9fzXIj1882sEa668rvhn37i0,16029
|
|
15
15
|
managed_deepagents/_identity_links.py,sha256=Z1H2Seo2KaI-vcdU3_PGM-F06wOz0IQqUP-28wqiQsA,9172
|
|
16
16
|
managed_deepagents/_identity_runtime.py,sha256=FJeJkhCg0Wo8x8hwiLB-9MUS-VBsGVzBzk3JJaDqH0o,24847
|
|
17
|
-
managed_deepagents/_ingress.py,sha256=
|
|
17
|
+
managed_deepagents/_ingress.py,sha256=8vJqIuyKI3dxC5wbyRPL9ES71xsXgxiTWJqYPpG7Wt0,12402
|
|
18
18
|
managed_deepagents/_log.py,sha256=oYwOO0ZL4-INkge9YJvtLuCxL9zAtgjSPIggVbkcyc8,2932
|
|
19
19
|
managed_deepagents/_loopback.py,sha256=hQ1oNi77XpdUjzZURSBRoMvJ1mGCs-STobfBftGmXuE,2409
|
|
20
20
|
managed_deepagents/_managed_middleware.py,sha256=cfInVHTVjWoy_DBoFlnslfrDf2_n6llGnTGasta4AIo,10295
|
|
@@ -28,7 +28,7 @@ managed_deepagents/py.typed,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
|
28
28
|
managed_deepagents/runtime.py,sha256=B4iKTJZD0zXx_MZ09pqQFOkVo07tqJDT3qvOBr-0iOk,65782
|
|
29
29
|
managed_deepagents/sandbox.py,sha256=xlpcWa6CoVX6GKip2nK-0Lw-HBCoFGFYm0r4x9eYwcY,2530
|
|
30
30
|
managed_deepagents/schedules.py,sha256=MtTQN4tlm1NizFDCjZZv_huGfbQx-dj9WP1dIBybCug,5237
|
|
31
|
-
managed_deepagents/_binaries/mda.exe,sha256=
|
|
31
|
+
managed_deepagents/_binaries/mda.exe,sha256=fLdjZDHKoYDEbyWC0iDNi4CaMyR0phRPsf1aTUGS4ts,3905536
|
|
32
32
|
managed_deepagents/_channels/__init__.py,sha256=Z6eXmzaLxG09DSyJoY_CX34axcsBo9gSJ0G7pRm2D6M,1216
|
|
33
33
|
managed_deepagents/_channels/assistant_text.py,sha256=f-Z3J3PlQFXZHztgBxlRoqB2LigU1Hj1YpwoXBMTR18,2171
|
|
34
34
|
managed_deepagents/_channels/binding.py,sha256=6vAKbWpg-eyLErJ0SsozH4mZc50hA1NhquM63mVmWDQ,3423
|
|
@@ -69,9 +69,9 @@ managed_deepagents/identity/__init__.py,sha256=3KHXJca8w9Xu99_QhJX9iV1xMHTa34NS1
|
|
|
69
69
|
managed_deepagents/identity/claims.py,sha256=prby7r_8Lww3MmoBm8PX6PsSGE3GwSHkr8mVIz_08nU,1180
|
|
70
70
|
managed_deepagents/identity/options.py,sha256=x_yMbXEFR7zXyehEjDHG2qjAlukXjrRBcQLcM6IndLM,2550
|
|
71
71
|
managed_deepagents/identity/supabase.py,sha256=8uobl3WCrQL_ieSXG8KTLf1th7Qjim9liZT50HeaJE0,6026
|
|
72
|
-
managed_deepagents-0.6.2.
|
|
73
|
-
managed_deepagents-0.6.2.
|
|
74
|
-
managed_deepagents-0.6.2.
|
|
75
|
-
managed_deepagents-0.6.2.
|
|
76
|
-
managed_deepagents-0.6.2.
|
|
77
|
-
managed_deepagents-0.6.2.
|
|
72
|
+
managed_deepagents-0.6.2.dev46.dist-info/licenses/LICENSE,sha256=WnPZQQ608ojZUkXl7BW6VbKloIAibZiGm1K6cjeZOL8,1066
|
|
73
|
+
managed_deepagents-0.6.2.dev46.dist-info/METADATA,sha256=1N01o7C9oOWrkmmpfRxFW95lBu7DORxX_9Wl6fos_t4,14039
|
|
74
|
+
managed_deepagents-0.6.2.dev46.dist-info/WHEEL,sha256=3I5VVWZdsFlU417aCS2bMRuerS8wsfvBq99MyatBV3A,97
|
|
75
|
+
managed_deepagents-0.6.2.dev46.dist-info/entry_points.txt,sha256=ziZqkKuaDO3qHCjKmBhrx9cm3ok8bZ9xcEDpUTj4unM,53
|
|
76
|
+
managed_deepagents-0.6.2.dev46.dist-info/top_level.txt,sha256=fdBo4O0Hlol_w022tTLB5ftZpamb4yJoQ3MUvjgTGfA,19
|
|
77
|
+
managed_deepagents-0.6.2.dev46.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{managed_deepagents-0.6.2.dev44.dist-info → managed_deepagents-0.6.2.dev46.dist-info}/top_level.txt
RENAMED
|
File without changes
|