langgraph-api 0.1.18__tar.gz → 0.1.21__tar.gz
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 langgraph-api might be problematic. Click here for more details.
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/PKG-INFO +1 -1
- langgraph_api-0.1.21/langgraph_api/__init__.py +1 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/api/ui.py +8 -2
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/auth/langsmith/backend.py +1 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/js/tests/api.test.mts +2 -2
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/models/run.py +19 -15
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/pyproject.toml +1 -1
- langgraph_api-0.1.18/langgraph_api/__init__.py +0 -1
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/LICENSE +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/README.md +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/api/__init__.py +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/api/assistants.py +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/api/mcp.py +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/api/meta.py +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/api/openapi.py +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/api/runs.py +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/api/store.py +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/api/threads.py +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/asyncio.py +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/auth/__init__.py +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/auth/custom.py +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/auth/langsmith/__init__.py +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/auth/langsmith/client.py +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/auth/middleware.py +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/auth/noop.py +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/auth/studio_user.py +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/cli.py +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/command.py +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/config.py +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/cron_scheduler.py +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/errors.py +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/graph.py +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/http.py +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/js/.gitignore +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/js/.prettierrc +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/js/__init__.py +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/js/base.py +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/js/build.mts +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/js/client.http.mts +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/js/client.mts +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/js/errors.py +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/js/global.d.ts +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/js/package.json +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/js/remote.py +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/js/schema.py +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/js/src/graph.mts +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/js/src/load.hooks.mjs +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/js/src/parser/parser.mts +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/js/src/parser/parser.worker.mjs +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/js/src/parser/schema/types.mts +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/js/src/parser/schema/types.template.mts +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/js/src/preload.mjs +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/js/src/utils/files.mts +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/js/src/utils/importMap.mts +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/js/src/utils/pythonSchemas.mts +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/js/src/utils/serde.mts +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/js/sse.py +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/js/tests/auth.test.mts +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/js/tests/compose-postgres.auth.yml +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/js/tests/compose-postgres.yml +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/js/tests/graphs/.gitignore +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/js/tests/graphs/agent.css +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/js/tests/graphs/agent.mts +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/js/tests/graphs/agent.ui.tsx +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/js/tests/graphs/agent_simple.mts +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/js/tests/graphs/auth.mts +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/js/tests/graphs/command.mts +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/js/tests/graphs/delay.mts +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/js/tests/graphs/dynamic.mts +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/js/tests/graphs/error.mts +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/js/tests/graphs/http.mts +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/js/tests/graphs/langgraph.json +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/js/tests/graphs/nested.mts +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/js/tests/graphs/package.json +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/js/tests/graphs/weather.mts +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/js/tests/graphs/yarn.lock +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/js/tests/parser.test.mts +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/js/tests/utils.mts +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/js/tsconfig.json +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/js/ui.py +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/js/yarn.lock +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/logging.py +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/metadata.py +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/middleware/__init__.py +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/middleware/http_logger.py +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/middleware/private_network.py +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/models/__init__.py +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/patch.py +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/queue_entrypoint.py +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/route.py +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/schema.py +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/serde.py +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/server.py +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/sse.py +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/state.py +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/stream.py +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/thread_ttl.py +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/tunneling/cloudflare.py +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/utils.py +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/validation.py +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/webhook.py +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/worker.py +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_license/__init__.py +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_license/validation.py +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_runtime/__init__.py +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/logging.json +0 -0
- {langgraph_api-0.1.18 → langgraph_api-0.1.21}/openapi.json +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.1.21"
|
|
@@ -53,13 +53,19 @@ async def handle_ui(request: ApiRequest) -> Response:
|
|
|
53
53
|
basename = os.path.basename(filepath)
|
|
54
54
|
ext = os.path.splitext(basename)[1]
|
|
55
55
|
|
|
56
|
+
# Use http:// protocol if accessing a localhost service
|
|
57
|
+
def is_host(needle: str) -> bool:
|
|
58
|
+
return host.startswith(needle + ":") or host == needle
|
|
59
|
+
|
|
60
|
+
protocol = "http:" if is_host("localhost") or is_host("127.0.0.1") else ""
|
|
61
|
+
|
|
56
62
|
if ext == ".css":
|
|
57
63
|
result.append(
|
|
58
|
-
f'<link rel="stylesheet" href="//{host}/ui/{graph_id}/{basename}" />'
|
|
64
|
+
f'<link rel="stylesheet" href="{protocol}//{host}/ui/{graph_id}/{basename}" />'
|
|
59
65
|
)
|
|
60
66
|
elif ext == ".js":
|
|
61
67
|
result.append(
|
|
62
|
-
f'<script src="//{host}/ui/{graph_id}/{basename}" '
|
|
68
|
+
f'<script src="{protocol}//{host}/ui/{graph_id}/{basename}" '
|
|
63
69
|
f"onload='__LGUI_{graph_id}.render({json.dumps(message['name'])}, \"{{{{shadowRootId}}}}\")'>"
|
|
64
70
|
"</script>"
|
|
65
71
|
)
|
|
@@ -33,6 +33,7 @@ class LangsmithAuthBackend(AuthenticationBackend):
|
|
|
33
33
|
("X-Api-Key", conn.headers.get("x-api-key")),
|
|
34
34
|
("X-Service-Key", conn.headers.get("x-service-key")),
|
|
35
35
|
("Cookie", conn.headers.get("cookie")),
|
|
36
|
+
("X-User-Id", conn.headers.get("x-user-id")),
|
|
36
37
|
]
|
|
37
38
|
if not any(h[1] for h in headers):
|
|
38
39
|
raise AuthenticationError("Missing authentication headers")
|
|
@@ -1992,10 +1992,10 @@ it("dynamic graph", async () => {
|
|
|
1992
1992
|
it("generative ui", async () => {
|
|
1993
1993
|
const ui = await client["~ui"].getComponent("agent", "weather-component");
|
|
1994
1994
|
expect(ui).toContain(
|
|
1995
|
-
`<link rel="stylesheet" href="
|
|
1995
|
+
`<link rel="stylesheet" href="http://localhost:9123/ui/agent/entrypoint.css" />`,
|
|
1996
1996
|
);
|
|
1997
1997
|
expect(ui).toContain(
|
|
1998
|
-
`<script src="
|
|
1998
|
+
`<script src="http://localhost:9123/ui/agent/entrypoint.js" onload='__LGUI_agent.render("weather-component", "{{shadowRootId}}")'></script>`,
|
|
1999
1999
|
);
|
|
2000
2000
|
|
|
2001
2001
|
const match = /src="(?<src>[^"]+)"/.exec(ui);
|
|
@@ -206,21 +206,8 @@ def get_configurable_headers(headers: dict[str, str]) -> dict[str, str]:
|
|
|
206
206
|
configurable = {}
|
|
207
207
|
include_patterns, exclude_patterns = get_header_patterns()
|
|
208
208
|
for key, value in headers.items():
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
):
|
|
212
|
-
continue
|
|
213
|
-
if exclude_patterns and any(pattern.match(key) for pattern in exclude_patterns):
|
|
214
|
-
continue
|
|
215
|
-
if key.startswith("x-"):
|
|
216
|
-
if key in (
|
|
217
|
-
"x-api-key",
|
|
218
|
-
"x-tenant-id",
|
|
219
|
-
"x-service-key",
|
|
220
|
-
):
|
|
221
|
-
continue
|
|
222
|
-
configurable[key] = value
|
|
223
|
-
elif key == "langsmith-trace":
|
|
209
|
+
# First handle tracing stuff; not configurable
|
|
210
|
+
if key == "langsmith-trace":
|
|
224
211
|
configurable[key] = value
|
|
225
212
|
if baggage := headers.get("baggage"):
|
|
226
213
|
for item in baggage.split(","):
|
|
@@ -231,6 +218,23 @@ def get_configurable_headers(headers: dict[str, str]) -> dict[str, str]:
|
|
|
231
218
|
configurable[key] = urllib.parse.unquote(value).split(",")
|
|
232
219
|
elif key == LANGSMITH_PROJECT:
|
|
233
220
|
configurable[key] = urllib.parse.unquote(value)
|
|
221
|
+
# Then handle overridable behavior
|
|
222
|
+
if exclude_patterns and any(pattern.match(key) for pattern in exclude_patterns):
|
|
223
|
+
continue
|
|
224
|
+
if include_patterns and any(pattern.match(key) for pattern in include_patterns):
|
|
225
|
+
configurable[key] = value
|
|
226
|
+
continue
|
|
227
|
+
|
|
228
|
+
# Then handle default behavior
|
|
229
|
+
if key.startswith("x-"):
|
|
230
|
+
if key in (
|
|
231
|
+
"x-api-key",
|
|
232
|
+
"x-tenant-id",
|
|
233
|
+
"x-service-key",
|
|
234
|
+
):
|
|
235
|
+
continue
|
|
236
|
+
configurable[key] = value
|
|
237
|
+
|
|
234
238
|
elif key == "user-agent":
|
|
235
239
|
configurable[key] = value
|
|
236
240
|
return configurable
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "0.1.18"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/js/src/parser/schema/types.template.mts
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/js/tests/compose-postgres.auth.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{langgraph_api-0.1.18 → langgraph_api-0.1.21}/langgraph_api/js/tests/graphs/agent_simple.mts
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|