-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathpyproject.toml
More file actions
85 lines (78 loc) · 3.37 KB
/
Copy pathpyproject.toml
File metadata and controls
85 lines (78 loc) · 3.37 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[project]
name = "langstage"
version = "0.13.30"
description = "The web stage for your LangGraph agent — AI-powered workspace with streaming, file browser, and canvas"
readme = "README.md"
license = "MIT"
requires-python = ">=3.11"
dependencies = [
"fastapi>=0.115",
"uvicorn[standard]>=0.30",
# Since core 1.0 (ADR 0003) the SessionAdapter streams every turn ONLY through
# the in-process AG-UI adapter, so the AG-UI runtime (ag-ui-langgraph[fastapi],
# via core's [agui] extra) is a HARD dep. fastapi + uvicorn are already base
# deps above, so [agui] mainly adds ag-ui-langgraph itself.
# >=1.0.6 for the shared preflight primitive core.verify() used by `check --live`.
# >=1.0.9 for the relative-workspace idempotency fix (#66): _enter_workspace()
# chdirs into the workspace, and pre-1.0.9 workspace_root() doubled a relative root.
"langstage-core[agui]>=1.0.9",
# Any real use of langstage already has langgraph in the env (it is the
# thing being hosted); declaring it makes `run --demo` work on a bare install.
"langgraph>=1.0",
# CanvasMiddleware subclasses langchain.agents.middleware on import, and
# langstage.middleware is imported on hot paths (app, cli `check`, default
# agent) — so langchain is a HARD dep, not incidental via [deepagents].
"langchain>=1.0",
"watchfiles>=1.0",
"click>=8.0",
"python-dotenv>=1.0",
"pydantic>=2.0",
"python-multipart>=0.0.12",
"croniter>=2.0",
# Durable task store for the async task board (TaskRunner persistence).
"aiosqlite>=0.19",
# Durable agent checkpointer (auto-attached) so conversation/interrupt state
# and the task review gate survive restarts.
"langgraph-checkpoint-sqlite>=2.0",
]
[project.optional-dependencies]
deepagents = [
"deepagents>=0.3",
]
# Redundant since AG-UI moved into base deps (core 1.0); kept as a no-op alias so
# existing `pip install langstage[agui]` scripts/READMEs still resolve.
agui = [
"langstage-core[agui]>=1.0.9",
]
dev = [
"pytest>=8",
"pytest-asyncio>=0.24",
"httpx>=0.27",
"ruff>=0.5",
# AG-UI runtime for the SessionAdapter's only streaming path (base deps pull
# this via core's [agui] extra; pinned here too so the test env is explicit).
"ag-ui-langgraph>=0.0.41",
]
[project.scripts]
langstage = "langstage.cli:main"
# Deprecated alias command — kept for one transition window.
cowork-dash = "langstage.cli:main"
[tool.hatch.build]
artifacts = ["langstage/static/**"]
# Build the React/Vite SPA into langstage/static/ before the wheel is assembled, so a
# published wheel actually ships the web UI (gh #94). Without this, `artifacts` above only
# re-includes the git-ignored static/ tree *if it already exists* — a plain `uv build`
# never built it, so 0.13.20–0.13.23 shipped no frontend. See hatch_build.py. The hook is
# a no-op for editable installs (`pip install -e`) and skips when the SPA is already built,
# so Node is only needed to cut a real release wheel. `uv build` builds the wheel from the
# sdist, and both hatch_build.py and frontend/ (needed by the hook) are VCS-tracked and so
# ship in the default sdist.
[tool.hatch.build.targets.wheel.hooks.custom]
path = "hatch_build.py"
[tool.hatch.build.targets.wheel]
packages = ["langstage", "cowork_dash"]
[tool.pytest.ini_options]
asyncio_mode = "auto"