uv-suite 0.30.0 → 0.32.0

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.
Files changed (42) hide show
  1. package/README.md +14 -11
  2. package/bin/cli.js +124 -54
  3. package/hooks/uv-out-notify.sh +19 -12
  4. package/hooks/watchtower-end.sh +23 -0
  5. package/hooks/watchtower-notify.sh +11 -0
  6. package/hooks/watchtower-send.sh +6 -3
  7. package/hooks/watchtower-tokens.sh +61 -0
  8. package/package.json +6 -3
  9. package/personas/auto.json +24 -0
  10. package/personas/professional.json +24 -0
  11. package/personas/spike.json +24 -0
  12. package/personas/sport.json +24 -0
  13. package/uv.sh +1 -1
  14. package/watchtower/README.md +13 -18
  15. package/watchtower/app/__pycache__/__init__.cpython-312.pyc +0 -0
  16. package/watchtower/app/__pycache__/db.cpython-312.pyc +0 -0
  17. package/watchtower/app/__pycache__/main.cpython-312.pyc +0 -0
  18. package/watchtower/app/__pycache__/models.cpython-312.pyc +0 -0
  19. package/watchtower/app/db.py +95 -51
  20. package/watchtower/app/main.py +4 -6
  21. package/watchtower/app/models.py +5 -0
  22. package/watchtower/app/routers/__pycache__/__init__.cpython-312.pyc +0 -0
  23. package/watchtower/app/routers/__pycache__/control.cpython-312.pyc +0 -0
  24. package/watchtower/app/routers/__pycache__/ingest.cpython-312.pyc +0 -0
  25. package/watchtower/app/routers/__pycache__/query.cpython-312.pyc +0 -0
  26. package/watchtower/app/routers/__pycache__/settings.cpython-312.pyc +0 -0
  27. package/watchtower/app/routers/__pycache__/stream.cpython-312.pyc +0 -0
  28. package/watchtower/app/routers/control.py +174 -58
  29. package/watchtower/app/routers/ingest.py +101 -46
  30. package/watchtower/app/routers/query.py +77 -28
  31. package/watchtower/app/routers/settings.py +34 -0
  32. package/watchtower/app/routers/stream.py +3 -5
  33. package/watchtower/app/services/__pycache__/__init__.cpython-312.pyc +0 -0
  34. package/watchtower/app/services/__pycache__/checkpoint.cpython-312.pyc +0 -0
  35. package/watchtower/app/services/__pycache__/tmux.cpython-312.pyc +0 -0
  36. package/watchtower/app/services/checkpoint.py +64 -22
  37. package/watchtower/requirements.txt +1 -1
  38. package/watchtower/static/dashboard.html +427 -299
  39. package/watchtower/watchtower.db +0 -0
  40. package/watchtower/Dockerfile +0 -9
  41. package/watchtower/docker-compose.yml +0 -22
  42. package/watchtower/schema.sql +0 -43
Binary file
@@ -1,9 +0,0 @@
1
- FROM python:3.12-slim
2
- WORKDIR /srv
3
- COPY requirements.txt .
4
- RUN pip install --no-cache-dir -r requirements.txt
5
- COPY schema.sql .
6
- COPY app ./app
7
- COPY static ./static
8
- EXPOSE 4200
9
- CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "4200"]
@@ -1,22 +0,0 @@
1
- services:
2
- db:
3
- image: postgres:16-alpine
4
- environment:
5
- POSTGRES_USER: watchtower
6
- POSTGRES_PASSWORD: watchtower
7
- POSTGRES_DB: watchtower
8
- healthcheck:
9
- test: ["CMD-SHELL", "pg_isready -U watchtower"]
10
- interval: 3s
11
- timeout: 3s
12
- retries: 10
13
-
14
- app:
15
- build: .
16
- environment:
17
- DATABASE_URL: postgresql://watchtower:watchtower@db:5432/watchtower
18
- ports:
19
- - "4200:4200" # control API binds localhost only — see app routers
20
- depends_on:
21
- db:
22
- condition: service_healthy
@@ -1,43 +0,0 @@
1
- -- Watchtower schema (idempotent — applied on startup).
2
-
3
- CREATE TABLE IF NOT EXISTS sessions (
4
- id text PRIMARY KEY, -- UVS session id
5
- name text,
6
- kind text,
7
- purpose text,
8
- priority text,
9
- persona text,
10
- cwd text,
11
- worktree text,
12
- branch text,
13
- pid integer,
14
- tmux_target text, -- e.g. "uvs_<sid>" (null if not owned)
15
- state text DEFAULT 'active', -- active | idle | awaiting_human | terminated
16
- started_at timestamptz DEFAULT now(),
17
- ended_at timestamptz
18
- );
19
-
20
- CREATE TABLE IF NOT EXISTS events (
21
- id bigserial PRIMARY KEY,
22
- session_id text,
23
- event_type text,
24
- tool_name text,
25
- command text,
26
- payload jsonb,
27
- created_at timestamptz DEFAULT now()
28
- );
29
- CREATE INDEX IF NOT EXISTS idx_events_session_created ON events (session_id, created_at DESC);
30
- CREATE INDEX IF NOT EXISTS idx_events_created ON events (created_at DESC);
31
-
32
- CREATE TABLE IF NOT EXISTS approvals (
33
- id bigserial PRIMARY KEY,
34
- session_id text,
35
- tool_name text,
36
- command text,
37
- request jsonb,
38
- status text DEFAULT 'pending', -- pending | approved | denied | expired
39
- decided_by text,
40
- created_at timestamptz DEFAULT now(),
41
- decided_at timestamptz
42
- );
43
- CREATE INDEX IF NOT EXISTS idx_approvals_session_status ON approvals (session_id, status);