ya-claw 0.58.6__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.
- ya_claw-0.58.6/.env.example +23 -0
- ya_claw-0.58.6/.gitignore +153 -0
- ya_claw-0.58.6/PKG-INFO +163 -0
- ya_claw-0.58.6/README.md +135 -0
- ya_claw-0.58.6/pyproject.toml +77 -0
- ya_claw-0.58.6/spec/00-overview.md +184 -0
- ya_claw-0.58.6/spec/01-configuration-and-workspace-provider.md +128 -0
- ya_claw-0.58.6/spec/02-execution-and-session.md +249 -0
- ya_claw-0.58.6/spec/03-storage-and-streaming.md +174 -0
- ya_claw-0.58.6/spec/04-api.md +179 -0
- ya_claw-0.58.6/spec/05-web-ui-and-operations.md +140 -0
- ya_claw-0.58.6/spec/README.md +44 -0
- ya_claw-0.58.6/start.sh +8 -0
- ya_claw-0.58.6/tests/test_app.py +92 -0
- ya_claw-0.58.6/tests/test_cli.py +130 -0
- ya_claw-0.58.6/tests/test_session_api.py +141 -0
- ya_claw-0.58.6/tests/test_session_controller.py +127 -0
- ya_claw-0.58.6/ya_claw/__init__.py +4 -0
- ya_claw-0.58.6/ya_claw/__main__.py +3 -0
- ya_claw-0.58.6/ya_claw/alembic/env.py +64 -0
- ya_claw-0.58.6/ya_claw/alembic/script.py.mako +27 -0
- ya_claw-0.58.6/ya_claw/alembic/versions/20260421_000001_create_sessions_and_runs.py +55 -0
- ya_claw-0.58.6/ya_claw/alembic/versions/__init__.py +1 -0
- ya_claw-0.58.6/ya_claw/alembic.ini +44 -0
- ya_claw-0.58.6/ya_claw/api/__init__.py +1 -0
- ya_claw-0.58.6/ya_claw/api/health.py +26 -0
- ya_claw-0.58.6/ya_claw/api/runs.py +47 -0
- ya_claw-0.58.6/ya_claw/api/sessions.py +70 -0
- ya_claw-0.58.6/ya_claw/app.py +178 -0
- ya_claw-0.58.6/ya_claw/bridge/__init__.py +3 -0
- ya_claw-0.58.6/ya_claw/bridge/cli.py +25 -0
- ya_claw-0.58.6/ya_claw/cli.py +131 -0
- ya_claw-0.58.6/ya_claw/config.py +93 -0
- ya_claw-0.58.6/ya_claw/controller/__init__.py +3 -0
- ya_claw-0.58.6/ya_claw/controller/health.py +40 -0
- ya_claw-0.58.6/ya_claw/controller/models.py +104 -0
- ya_claw-0.58.6/ya_claw/controller/run.py +71 -0
- ya_claw-0.58.6/ya_claw/controller/session.py +135 -0
- ya_claw-0.58.6/ya_claw/db/__init__.py +4 -0
- ya_claw-0.58.6/ya_claw/db/engine.py +53 -0
- ya_claw-0.58.6/ya_claw/orm/__init__.py +3 -0
- ya_claw-0.58.6/ya_claw/orm/base.py +7 -0
- ya_claw-0.58.6/ya_claw/orm/tables.py +60 -0
- ya_claw-0.58.6/ya_claw/runtime_state.py +19 -0
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# YA Claw runtime environment variables
|
|
2
|
+
# Copy this file to packages/ya-claw/.env and uncomment the variables you need.
|
|
3
|
+
# SDK and tool environment variables live in packages/ya-agent-sdk/.env.example.
|
|
4
|
+
|
|
5
|
+
# =============================================================================
|
|
6
|
+
# YA Claw Configuration (YA_CLAW_ prefix)
|
|
7
|
+
# =============================================================================
|
|
8
|
+
|
|
9
|
+
# YA_CLAW_ENVIRONMENT=development
|
|
10
|
+
# YA_CLAW_HOST=127.0.0.1
|
|
11
|
+
# YA_CLAW_PORT=9042
|
|
12
|
+
# YA_CLAW_PUBLIC_BASE_URL=http://127.0.0.1:9042
|
|
13
|
+
# YA_CLAW_API_TOKEN=replace-with-a-long-random-token
|
|
14
|
+
# YA_CLAW_AUTO_MIGRATE=true
|
|
15
|
+
# YA_CLAW_DATA_DIR=~/.ya-claw/data
|
|
16
|
+
# YA_CLAW_WORKSPACE_ROOT=~/.ya-claw/workspace
|
|
17
|
+
# Default SQLite path: ~/.ya-claw/ya_claw.sqlite3
|
|
18
|
+
# YA_CLAW_DATABASE_URL=postgresql+psycopg://ya_claw:ya_claw@localhost:15433/ya_claw
|
|
19
|
+
# YA_CLAW_DATABASE_ECHO=false
|
|
20
|
+
# YA_CLAW_DATABASE_POOL_SIZE=5
|
|
21
|
+
# YA_CLAW_DATABASE_MAX_OVERFLOW=10
|
|
22
|
+
# YA_CLAW_DATABASE_POOL_RECYCLE_SECONDS=3600
|
|
23
|
+
# YA_CLAW_WEB_DIST_DIR=apps/ya-claw-web/dist
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
docs/source
|
|
2
|
+
|
|
3
|
+
# From https://raw.githubusercontent.com/github/gitignore/main/Python.gitignore
|
|
4
|
+
|
|
5
|
+
# Byte-compiled / optimized / DLL files
|
|
6
|
+
__pycache__/
|
|
7
|
+
*.py[cod]
|
|
8
|
+
*$py.class
|
|
9
|
+
|
|
10
|
+
# C extensions
|
|
11
|
+
*.so
|
|
12
|
+
|
|
13
|
+
# Distribution / packaging
|
|
14
|
+
.Python
|
|
15
|
+
build/
|
|
16
|
+
develop-eggs/
|
|
17
|
+
dist/
|
|
18
|
+
downloads/
|
|
19
|
+
eggs/
|
|
20
|
+
.eggs/
|
|
21
|
+
lib/
|
|
22
|
+
lib64/
|
|
23
|
+
parts/
|
|
24
|
+
sdist/
|
|
25
|
+
var/
|
|
26
|
+
wheels/
|
|
27
|
+
share/python-wheels/
|
|
28
|
+
*.egg-info/
|
|
29
|
+
.installed.cfg
|
|
30
|
+
*.egg
|
|
31
|
+
MANIFEST
|
|
32
|
+
|
|
33
|
+
# PyInstaller
|
|
34
|
+
# Usually these files are written by a python script from a template
|
|
35
|
+
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
|
36
|
+
*.manifest
|
|
37
|
+
*.spec
|
|
38
|
+
|
|
39
|
+
# Installer logs
|
|
40
|
+
pip-log.txt
|
|
41
|
+
pip-delete-this-directory.txt
|
|
42
|
+
|
|
43
|
+
# Unit test / coverage reports
|
|
44
|
+
htmlcov/
|
|
45
|
+
.tox/
|
|
46
|
+
.nox/
|
|
47
|
+
.coverage
|
|
48
|
+
.coverage.*
|
|
49
|
+
.cache
|
|
50
|
+
nosetests.xml
|
|
51
|
+
coverage.xml
|
|
52
|
+
*.cover
|
|
53
|
+
*.py,cover
|
|
54
|
+
.hypothesis/
|
|
55
|
+
.pytest_cache/
|
|
56
|
+
cover/
|
|
57
|
+
|
|
58
|
+
# Translations
|
|
59
|
+
*.mo
|
|
60
|
+
*.pot
|
|
61
|
+
|
|
62
|
+
# Django stuff:
|
|
63
|
+
*.log
|
|
64
|
+
local_settings.py
|
|
65
|
+
db.sqlite3
|
|
66
|
+
db.sqlite3-journal
|
|
67
|
+
|
|
68
|
+
# Flask stuff:
|
|
69
|
+
instance/
|
|
70
|
+
.webassets-cache
|
|
71
|
+
|
|
72
|
+
# Scrapy stuff:
|
|
73
|
+
.scrapy
|
|
74
|
+
|
|
75
|
+
# Sphinx documentation
|
|
76
|
+
docs/_build/
|
|
77
|
+
|
|
78
|
+
# PyBuilder
|
|
79
|
+
.pybuilder/
|
|
80
|
+
target/
|
|
81
|
+
|
|
82
|
+
# Jupyter Notebook
|
|
83
|
+
.ipynb_checkpoints
|
|
84
|
+
|
|
85
|
+
# IPython
|
|
86
|
+
profile_default/
|
|
87
|
+
ipython_config.py
|
|
88
|
+
|
|
89
|
+
# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
|
|
90
|
+
__pypackages__/
|
|
91
|
+
|
|
92
|
+
# Celery stuff
|
|
93
|
+
celerybeat-schedule
|
|
94
|
+
celerybeat.pid
|
|
95
|
+
|
|
96
|
+
# SageMath parsed files
|
|
97
|
+
*.sage.py
|
|
98
|
+
|
|
99
|
+
# Environments
|
|
100
|
+
.env
|
|
101
|
+
.venv
|
|
102
|
+
env/
|
|
103
|
+
venv/
|
|
104
|
+
ENV/
|
|
105
|
+
env.bak/
|
|
106
|
+
venv.bak/
|
|
107
|
+
|
|
108
|
+
# Spyder project settings
|
|
109
|
+
.spyderproject
|
|
110
|
+
.spyproject
|
|
111
|
+
|
|
112
|
+
# Rope project settings
|
|
113
|
+
.ropeproject
|
|
114
|
+
|
|
115
|
+
# mkdocs documentation
|
|
116
|
+
/site
|
|
117
|
+
|
|
118
|
+
# mypy
|
|
119
|
+
.mypy_cache/
|
|
120
|
+
.pyright/
|
|
121
|
+
.dmypy.json
|
|
122
|
+
dmypy.json
|
|
123
|
+
|
|
124
|
+
# Pyre type checker
|
|
125
|
+
.pyre/
|
|
126
|
+
|
|
127
|
+
# pytype static type analyzer
|
|
128
|
+
.pytype/
|
|
129
|
+
|
|
130
|
+
# Cython debug symbols
|
|
131
|
+
cython_debug/
|
|
132
|
+
|
|
133
|
+
# Vscode config files
|
|
134
|
+
# .vscode/
|
|
135
|
+
|
|
136
|
+
# PyCharm
|
|
137
|
+
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
|
|
138
|
+
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
|
|
139
|
+
# and can be added to the global gitignore or merged into this file. For a more nuclear
|
|
140
|
+
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
|
|
141
|
+
#.idea/
|
|
142
|
+
|
|
143
|
+
TO-DO.json
|
|
144
|
+
dev/
|
|
145
|
+
ya_agent_sdk/sandbox/shell/templates/public
|
|
146
|
+
|
|
147
|
+
# Sync automaticlly
|
|
148
|
+
yaacli/yaacli/skills/building-agents
|
|
149
|
+
|
|
150
|
+
# Frontend
|
|
151
|
+
node_modules/
|
|
152
|
+
apps/*/dist/
|
|
153
|
+
*.tsbuildinfo
|
ya_claw-0.58.6/PKG-INFO
ADDED
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: ya-claw
|
|
3
|
+
Version: 0.58.6
|
|
4
|
+
Summary: Workspace-native local-first agent runtime built on top of ya-agent-sdk
|
|
5
|
+
Project-URL: Repository, https://github.com/wh1isper/ya-mono
|
|
6
|
+
Author-email: wh1isper <jizhongsheng957@gmail.com>
|
|
7
|
+
Keywords: agent-runtime,ai-agent,fastapi,python,workspace
|
|
8
|
+
Classifier: Framework :: FastAPI
|
|
9
|
+
Classifier: Intended Audience :: Developers
|
|
10
|
+
Classifier: Programming Language :: Python
|
|
11
|
+
Classifier: Programming Language :: Python :: 3
|
|
12
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
15
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
16
|
+
Requires-Python: <3.14,>=3.11
|
|
17
|
+
Requires-Dist: aiosqlite>=0.21.0
|
|
18
|
+
Requires-Dist: alembic>=1.16.0
|
|
19
|
+
Requires-Dist: click>=8.0
|
|
20
|
+
Requires-Dist: fastapi>=0.116.0
|
|
21
|
+
Requires-Dist: pydantic-settings>=2.0.0
|
|
22
|
+
Requires-Dist: pydantic>=2.12.0
|
|
23
|
+
Requires-Dist: sqlalchemy>=2.0.0
|
|
24
|
+
Requires-Dist: sse-starlette>=3.0.0
|
|
25
|
+
Requires-Dist: uvicorn[standard]>=0.35.0
|
|
26
|
+
Requires-Dist: ya-agent-sdk[all]==0.58.6
|
|
27
|
+
Description-Content-Type: text/markdown
|
|
28
|
+
|
|
29
|
+
# YA Claw
|
|
30
|
+
|
|
31
|
+
Workspace-native single-node agent runtime and web service for the `ya-mono` workspace.
|
|
32
|
+
|
|
33
|
+
## Scope
|
|
34
|
+
|
|
35
|
+
YA Claw packages a durable runtime shell around `ya-agent-sdk` with:
|
|
36
|
+
|
|
37
|
+
- registered workspaces resolved through `WorkspaceProvider`
|
|
38
|
+
- reusable agent profiles
|
|
39
|
+
- resumable sessions and runs
|
|
40
|
+
- in-process active state and async task coordination
|
|
41
|
+
- session schedules for timed execution
|
|
42
|
+
- SQLite-first durable state with optional PostgreSQL
|
|
43
|
+
- local filesystem session continuity and exported state
|
|
44
|
+
- a bundled web shell for local and self-hosted use
|
|
45
|
+
- bridge adapters that connect IM channels to the YA Claw service
|
|
46
|
+
|
|
47
|
+
## Current Direction
|
|
48
|
+
|
|
49
|
+
The target single-node shape runs as one web service.
|
|
50
|
+
The runtime keeps active session state, live delivery, async tasks, schedule dispatch, and bridge coordination inside one runtime process.
|
|
51
|
+
SQLite is the default durable store.
|
|
52
|
+
PostgreSQL remains an optional storage backend for deployments that prefer an external relational database.
|
|
53
|
+
|
|
54
|
+
## Layout
|
|
55
|
+
|
|
56
|
+
Key areas in this package:
|
|
57
|
+
|
|
58
|
+
- `.env.example` — runtime environment example
|
|
59
|
+
- `spec/` — architecture and runtime design documents
|
|
60
|
+
- `tests/` — runtime tests
|
|
61
|
+
- `ya_claw/api/` — HTTP API surface
|
|
62
|
+
- `ya_claw/bridge/` — IM bridge adapters and relay logic
|
|
63
|
+
- `ya_claw/app.py` and `ya_claw/cli.py` — application entrypoints
|
|
64
|
+
- `ya_claw/config.py` — runtime configuration
|
|
65
|
+
|
|
66
|
+
## Runtime Shape
|
|
67
|
+
|
|
68
|
+
The runtime shape is:
|
|
69
|
+
|
|
70
|
+
- one YA Claw web service
|
|
71
|
+
- one in-process runtime state manager
|
|
72
|
+
- one session scheduler
|
|
73
|
+
- one bridge subsystem for external channels
|
|
74
|
+
- one shared bearer token for HTTP access
|
|
75
|
+
- one SQLite database by default
|
|
76
|
+
- optional PostgreSQL
|
|
77
|
+
- one runtime data directory for sensitive session continuity
|
|
78
|
+
- one workspace root for project data
|
|
79
|
+
- one bundled web shell
|
|
80
|
+
|
|
81
|
+
## Quick Start
|
|
82
|
+
|
|
83
|
+
From the workspace root, start the default runtime flow:
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
uv sync --all-packages
|
|
87
|
+
cp packages/ya-claw/.env.example packages/ya-claw/.env
|
|
88
|
+
uv run --package ya-claw ya-claw serve --reload
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
Set `YA_CLAW_API_TOKEN` before starting the service.
|
|
92
|
+
The development server listens on `http://127.0.0.1:9042` by default.
|
|
93
|
+
YA Claw loads `YA_CLAW_*` settings from `packages/ya-claw/.env` and the process environment.
|
|
94
|
+
Use [`packages/ya-agent-sdk/.env.example`](../ya-agent-sdk/.env.example) for SDK and tool environment variables.
|
|
95
|
+
|
|
96
|
+
Default local paths:
|
|
97
|
+
|
|
98
|
+
- SQLite database: `~/.ya-claw/ya_claw.sqlite3`
|
|
99
|
+
- runtime data root: `~/.ya-claw/data`
|
|
100
|
+
- workspace root: `~/.ya-claw/workspace`
|
|
101
|
+
|
|
102
|
+
## External Database
|
|
103
|
+
|
|
104
|
+
Set `YA_CLAW_DATABASE_URL` in `packages/ya-claw/.env` when you want an external PostgreSQL database.
|
|
105
|
+
The default SQLite file stays at `~/.ya-claw/ya_claw.sqlite3`.
|
|
106
|
+
|
|
107
|
+
## Database Commands
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
uv run --package ya-claw ya-claw db upgrade
|
|
111
|
+
uv run --package ya-claw ya-claw db current
|
|
112
|
+
uv run --package ya-claw ya-claw db history
|
|
113
|
+
uv run --package ya-claw ya-claw db revision "add session tables"
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
## Bridge Commands
|
|
117
|
+
|
|
118
|
+
The CLI owns a top-level bridge command group.
|
|
119
|
+
|
|
120
|
+
```bash
|
|
121
|
+
uv run --package ya-claw ya-claw bridge ls
|
|
122
|
+
uv run --package ya-claw ya-claw bridge run lark
|
|
123
|
+
uv run --package ya-claw ya-claw bridge serve lark
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
### Bridge Relay Modes
|
|
127
|
+
|
|
128
|
+
- `task relay` — a bridge submits work to YA Claw as an async session flow and delivers agent output back through the channel adapter or channel CLI
|
|
129
|
+
- `stream relay` — a bridge opens a foreground run, consumes SSE from the YA Claw service, and streams channel-ready output directly
|
|
130
|
+
|
|
131
|
+
## Web Shell
|
|
132
|
+
|
|
133
|
+
Run the web shell from the repository root:
|
|
134
|
+
|
|
135
|
+
```bash
|
|
136
|
+
make web-dev
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
## Docker
|
|
140
|
+
|
|
141
|
+
Build from the repository root:
|
|
142
|
+
|
|
143
|
+
```bash
|
|
144
|
+
docker build -f Dockerfile.ya-claw -t ya-claw:dev .
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
## Initial API Surface
|
|
148
|
+
|
|
149
|
+
Every HTTP route except `/healthz` expects `Authorization: Bearer <YA_CLAW_API_TOKEN>`.
|
|
150
|
+
|
|
151
|
+
- `GET /healthz` — service health probe with storage and runtime component status
|
|
152
|
+
- `GET /api/v1/schedules` — session schedule inspection surface
|
|
153
|
+
- `POST /api/v1/bridges/{bridge_id}/dispatch` — bridge ingress surface
|
|
154
|
+
|
|
155
|
+
## Spec Set
|
|
156
|
+
|
|
157
|
+
- [`spec/README.md`](spec/README.md)
|
|
158
|
+
- [`spec/00-overview.md`](spec/00-overview.md)
|
|
159
|
+
- [`spec/01-configuration-and-workspace-provider.md`](spec/01-configuration-and-workspace-provider.md)
|
|
160
|
+
- [`spec/02-execution-and-session.md`](spec/02-execution-and-session.md)
|
|
161
|
+
- [`spec/03-storage-and-streaming.md`](spec/03-storage-and-streaming.md)
|
|
162
|
+
- [`spec/04-api.md`](spec/04-api.md)
|
|
163
|
+
- [`spec/05-web-ui-and-operations.md`](spec/05-web-ui-and-operations.md)
|
ya_claw-0.58.6/README.md
ADDED
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
# YA Claw
|
|
2
|
+
|
|
3
|
+
Workspace-native single-node agent runtime and web service for the `ya-mono` workspace.
|
|
4
|
+
|
|
5
|
+
## Scope
|
|
6
|
+
|
|
7
|
+
YA Claw packages a durable runtime shell around `ya-agent-sdk` with:
|
|
8
|
+
|
|
9
|
+
- registered workspaces resolved through `WorkspaceProvider`
|
|
10
|
+
- reusable agent profiles
|
|
11
|
+
- resumable sessions and runs
|
|
12
|
+
- in-process active state and async task coordination
|
|
13
|
+
- session schedules for timed execution
|
|
14
|
+
- SQLite-first durable state with optional PostgreSQL
|
|
15
|
+
- local filesystem session continuity and exported state
|
|
16
|
+
- a bundled web shell for local and self-hosted use
|
|
17
|
+
- bridge adapters that connect IM channels to the YA Claw service
|
|
18
|
+
|
|
19
|
+
## Current Direction
|
|
20
|
+
|
|
21
|
+
The target single-node shape runs as one web service.
|
|
22
|
+
The runtime keeps active session state, live delivery, async tasks, schedule dispatch, and bridge coordination inside one runtime process.
|
|
23
|
+
SQLite is the default durable store.
|
|
24
|
+
PostgreSQL remains an optional storage backend for deployments that prefer an external relational database.
|
|
25
|
+
|
|
26
|
+
## Layout
|
|
27
|
+
|
|
28
|
+
Key areas in this package:
|
|
29
|
+
|
|
30
|
+
- `.env.example` — runtime environment example
|
|
31
|
+
- `spec/` — architecture and runtime design documents
|
|
32
|
+
- `tests/` — runtime tests
|
|
33
|
+
- `ya_claw/api/` — HTTP API surface
|
|
34
|
+
- `ya_claw/bridge/` — IM bridge adapters and relay logic
|
|
35
|
+
- `ya_claw/app.py` and `ya_claw/cli.py` — application entrypoints
|
|
36
|
+
- `ya_claw/config.py` — runtime configuration
|
|
37
|
+
|
|
38
|
+
## Runtime Shape
|
|
39
|
+
|
|
40
|
+
The runtime shape is:
|
|
41
|
+
|
|
42
|
+
- one YA Claw web service
|
|
43
|
+
- one in-process runtime state manager
|
|
44
|
+
- one session scheduler
|
|
45
|
+
- one bridge subsystem for external channels
|
|
46
|
+
- one shared bearer token for HTTP access
|
|
47
|
+
- one SQLite database by default
|
|
48
|
+
- optional PostgreSQL
|
|
49
|
+
- one runtime data directory for sensitive session continuity
|
|
50
|
+
- one workspace root for project data
|
|
51
|
+
- one bundled web shell
|
|
52
|
+
|
|
53
|
+
## Quick Start
|
|
54
|
+
|
|
55
|
+
From the workspace root, start the default runtime flow:
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
uv sync --all-packages
|
|
59
|
+
cp packages/ya-claw/.env.example packages/ya-claw/.env
|
|
60
|
+
uv run --package ya-claw ya-claw serve --reload
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
Set `YA_CLAW_API_TOKEN` before starting the service.
|
|
64
|
+
The development server listens on `http://127.0.0.1:9042` by default.
|
|
65
|
+
YA Claw loads `YA_CLAW_*` settings from `packages/ya-claw/.env` and the process environment.
|
|
66
|
+
Use [`packages/ya-agent-sdk/.env.example`](../ya-agent-sdk/.env.example) for SDK and tool environment variables.
|
|
67
|
+
|
|
68
|
+
Default local paths:
|
|
69
|
+
|
|
70
|
+
- SQLite database: `~/.ya-claw/ya_claw.sqlite3`
|
|
71
|
+
- runtime data root: `~/.ya-claw/data`
|
|
72
|
+
- workspace root: `~/.ya-claw/workspace`
|
|
73
|
+
|
|
74
|
+
## External Database
|
|
75
|
+
|
|
76
|
+
Set `YA_CLAW_DATABASE_URL` in `packages/ya-claw/.env` when you want an external PostgreSQL database.
|
|
77
|
+
The default SQLite file stays at `~/.ya-claw/ya_claw.sqlite3`.
|
|
78
|
+
|
|
79
|
+
## Database Commands
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
uv run --package ya-claw ya-claw db upgrade
|
|
83
|
+
uv run --package ya-claw ya-claw db current
|
|
84
|
+
uv run --package ya-claw ya-claw db history
|
|
85
|
+
uv run --package ya-claw ya-claw db revision "add session tables"
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
## Bridge Commands
|
|
89
|
+
|
|
90
|
+
The CLI owns a top-level bridge command group.
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
uv run --package ya-claw ya-claw bridge ls
|
|
94
|
+
uv run --package ya-claw ya-claw bridge run lark
|
|
95
|
+
uv run --package ya-claw ya-claw bridge serve lark
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
### Bridge Relay Modes
|
|
99
|
+
|
|
100
|
+
- `task relay` — a bridge submits work to YA Claw as an async session flow and delivers agent output back through the channel adapter or channel CLI
|
|
101
|
+
- `stream relay` — a bridge opens a foreground run, consumes SSE from the YA Claw service, and streams channel-ready output directly
|
|
102
|
+
|
|
103
|
+
## Web Shell
|
|
104
|
+
|
|
105
|
+
Run the web shell from the repository root:
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
make web-dev
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
## Docker
|
|
112
|
+
|
|
113
|
+
Build from the repository root:
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
docker build -f Dockerfile.ya-claw -t ya-claw:dev .
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
## Initial API Surface
|
|
120
|
+
|
|
121
|
+
Every HTTP route except `/healthz` expects `Authorization: Bearer <YA_CLAW_API_TOKEN>`.
|
|
122
|
+
|
|
123
|
+
- `GET /healthz` — service health probe with storage and runtime component status
|
|
124
|
+
- `GET /api/v1/schedules` — session schedule inspection surface
|
|
125
|
+
- `POST /api/v1/bridges/{bridge_id}/dispatch` — bridge ingress surface
|
|
126
|
+
|
|
127
|
+
## Spec Set
|
|
128
|
+
|
|
129
|
+
- [`spec/README.md`](spec/README.md)
|
|
130
|
+
- [`spec/00-overview.md`](spec/00-overview.md)
|
|
131
|
+
- [`spec/01-configuration-and-workspace-provider.md`](spec/01-configuration-and-workspace-provider.md)
|
|
132
|
+
- [`spec/02-execution-and-session.md`](spec/02-execution-and-session.md)
|
|
133
|
+
- [`spec/03-storage-and-streaming.md`](spec/03-storage-and-streaming.md)
|
|
134
|
+
- [`spec/04-api.md`](spec/04-api.md)
|
|
135
|
+
- [`spec/05-web-ui-and-operations.md`](spec/05-web-ui-and-operations.md)
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
[project]
|
|
2
|
+
name = "ya-claw"
|
|
3
|
+
dynamic = ["version", "dependencies"]
|
|
4
|
+
description = "Workspace-native local-first agent runtime built on top of ya-agent-sdk"
|
|
5
|
+
authors = [{ name = "wh1isper", email = "jizhongsheng957@gmail.com" }]
|
|
6
|
+
readme = "README.md"
|
|
7
|
+
keywords = ["python", "fastapi", "agent-runtime", "workspace", "ai-agent"]
|
|
8
|
+
requires-python = ">=3.11,<3.14"
|
|
9
|
+
classifiers = [
|
|
10
|
+
"Intended Audience :: Developers",
|
|
11
|
+
"Programming Language :: Python",
|
|
12
|
+
"Programming Language :: Python :: 3",
|
|
13
|
+
"Programming Language :: Python :: 3.11",
|
|
14
|
+
"Programming Language :: Python :: 3.12",
|
|
15
|
+
"Programming Language :: Python :: 3.13",
|
|
16
|
+
"Framework :: FastAPI",
|
|
17
|
+
"Topic :: Software Development :: Libraries :: Python Modules",
|
|
18
|
+
]
|
|
19
|
+
|
|
20
|
+
[project.urls]
|
|
21
|
+
Repository = "https://github.com/wh1isper/ya-mono"
|
|
22
|
+
|
|
23
|
+
[project.scripts]
|
|
24
|
+
ya-claw = "ya_claw.cli:cli"
|
|
25
|
+
|
|
26
|
+
[build-system]
|
|
27
|
+
requires = ["hatchling", "uv-dynamic-versioning>=0.7.0"]
|
|
28
|
+
build-backend = "hatchling.build"
|
|
29
|
+
|
|
30
|
+
[tool.hatch.version]
|
|
31
|
+
source = "uv-dynamic-versioning"
|
|
32
|
+
|
|
33
|
+
[tool.uv-dynamic-versioning]
|
|
34
|
+
vcs = "git"
|
|
35
|
+
style = "pep440"
|
|
36
|
+
bump = true
|
|
37
|
+
|
|
38
|
+
[tool.hatch.metadata.hooks.uv-dynamic-versioning]
|
|
39
|
+
dependencies = [
|
|
40
|
+
"alembic>=1.16.0",
|
|
41
|
+
"click>=8.0",
|
|
42
|
+
"fastapi>=0.116.0",
|
|
43
|
+
"aiosqlite>=0.21.0",
|
|
44
|
+
"pydantic>=2.12.0",
|
|
45
|
+
"pydantic-settings>=2.0.0",
|
|
46
|
+
"sqlalchemy>=2.0.0",
|
|
47
|
+
"sse-starlette>=3.0.0",
|
|
48
|
+
"uvicorn[standard]>=0.35.0",
|
|
49
|
+
"ya-agent-sdk[all]=={{ version }}",
|
|
50
|
+
]
|
|
51
|
+
|
|
52
|
+
[tool.hatch.build.targets.wheel]
|
|
53
|
+
packages = ["ya_claw"]
|
|
54
|
+
include = [
|
|
55
|
+
"ya_claw/alembic.ini",
|
|
56
|
+
"ya_claw/alembic/**/*.py",
|
|
57
|
+
"ya_claw/alembic/script.py.mako",
|
|
58
|
+
]
|
|
59
|
+
|
|
60
|
+
[tool.uv.sources]
|
|
61
|
+
ya-agent-sdk = { workspace = true }
|
|
62
|
+
|
|
63
|
+
[dependency-groups]
|
|
64
|
+
dev = [
|
|
65
|
+
"deptry>=0.22.0",
|
|
66
|
+
"httpx>=0.28.1",
|
|
67
|
+
"pre-commit>=2.20.0",
|
|
68
|
+
"pyright>=1.1.0",
|
|
69
|
+
"pytest>=7.2.0",
|
|
70
|
+
"pytest-asyncio>=0.25.3",
|
|
71
|
+
"ruff>=0.9.2",
|
|
72
|
+
]
|
|
73
|
+
|
|
74
|
+
[tool.deptry]
|
|
75
|
+
ignore = ["DEP001"]
|
|
76
|
+
package_module_name_map = { "aiosqlite" = "aiosqlite", "alembic" = "alembic", "click" = "click", "fastapi" = "fastapi", "httpx" = "httpx", "pre-commit" = "pre_commit", "pydantic" = "pydantic", "pydantic-settings" = "pydantic_settings", "pytest" = "pytest", "pytest-asyncio" = "pytest_asyncio", "pyright" = "pyright", "ruff" = "ruff", "sqlalchemy" = "sqlalchemy", "sse-starlette" = "sse_starlette", "uvicorn" = "uvicorn", "ya-agent-sdk" = "ya_agent_sdk" }
|
|
77
|
+
per_rule_ignores = { DEP003 = ["aiosqlite", "alembic", "click", "fastapi", "pydantic", "pydantic_settings", "sqlalchemy", "uvicorn", "ya_agent_sdk", "ya_claw"], DEP004 = ["pytest"] }
|