You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
dl supervisor as a durable app: alarms, budgets, restart-safe #137
Part of directionally-local/installer#48 (the deck roadmap). One PR. Read the roadmap first. Builds on the protocol in sinameraji/camouflage#146 (SessionStatus event, interleaved sessions by session_id); if that hasn't merged, build against the shape described there and keep the dependency isolated.
The dl supervisor today is a small Node loop on the server (keeps a queue of tasks running as Aster code conversations, max N at once, under a daily spend cap; nudges a conversation that finished without a PR; cancels one with no progress for 25 minutes; retries a failed one once; never merges). Make it a Serverless Objects app so its state and timers survive restarts.
Do
An example app under examples/ (e.g. examples/dl-supervisor): a Supervisor object per queue holding the tasks and per-task state, a durable alarm per tick, and the same rules as above. It talks to the Aster HTTP API (/api/v1/conversations, /turns, /cancel, /models, /workspaces) with a bearer token from a secret, and checks spend through OpenRouter's /api/v1/key.
An HTTP surface to add tasks, list state and pause/resume.
Tests with a fake Aster API and fake clock: start up to N, stall cancel, nudge, one retry, spend cap, restart in the middle of a tick.
A README for running it with sobjects dev/up next to a dl server.
Done when
Tests pass; the README shows it running against a local fake.
Activity