Changeset 0.27.1.1 (#168)
This commit is contained in:
@@ -154,11 +154,11 @@ v0.26.0 Workflow Engine ✅
|
||||
human + AI collab, visitor
|
||||
intake, assignment queue)
|
||||
│
|
||||
v0.27.0 Debt Clearance
|
||||
v0.27.0 Debt Clearance ✅
|
||||
(extension surface routes,
|
||||
workflow polish, editor debt)
|
||||
│
|
||||
v0.27.1 Tasks Foundation
|
||||
v0.27.1 Tasks Foundation ✅
|
||||
(service channels, scheduler,
|
||||
task definitions, cron)
|
||||
│
|
||||
@@ -917,21 +917,39 @@ See [DESIGN-0.27.0.md](DESIGN-0.27.0.md) for full spec.
|
||||
|
||||
---
|
||||
|
||||
## v0.27.1 — Tasks Foundation: Service Channels + Scheduler
|
||||
## v0.27.1 — Tasks Foundation: Service Channels + Scheduler ✅
|
||||
|
||||
Core primitive for autonomous agents: a channel with no human
|
||||
participant, driven by a cron scheduler.
|
||||
Depends on: v0.27.0 (debt clearance).
|
||||
|
||||
- [ ] `tasks` table + store interface + PG/SQLite implementations
|
||||
- [ ] `type: 'service'` channel type (no human participants)
|
||||
- [ ] `TaskScheduler` background goroutine (poll interval: 30s)
|
||||
- [ ] Cron expression parsing (`robfig/cron/v3`) + `next_run_at` computation
|
||||
- [ ] Prompt task execution (create service channel, send prompt, collect response)
|
||||
- [ ] Workflow task execution (instantiate workflow in service channel)
|
||||
- [x] `tasks` + `task_runs` tables + store interface + PG (UUID) / SQLite implementations
|
||||
- [x] `type: 'service'` channel type (PG CHECK extended, SQLite by convention)
|
||||
- [x] `TaskStore` interface: CRUD, `ListDue`, `SetNextRun`, `IncrementRunCount`, run history
|
||||
- [x] `TaskScheduler` background goroutine (30s poll, skip-if-running, one-shot + cron)
|
||||
- [x] Minimal cron parser (hourly, N-minute intervals, daily H:M, weekly DOW patterns)
|
||||
- [x] Service channel creation per task (reuse `output_channel_id` on subsequent runs)
|
||||
- [x] User prompt persisted as message in service channel
|
||||
- [x] Task CRUD handler with ownership checks + admin bypass
|
||||
- [x] `POST /tasks/:id/run` — manual "Run Now" trigger
|
||||
- [x] Migration 026: `tasks` + `task_runs` tables, `service` channel type
|
||||
|
||||
**Deferred to v0.27.2:**
|
||||
- [ ] Completion invocation from scheduler (wire into `streamWithToolLoop`)
|
||||
- [ ] Full cron parsing via `robfig/cron/v3` (replacing minimal parser)
|
||||
- [ ] Provider resolution for task context (BYOK → team → global → routing policy)
|
||||
- [ ] Workflow task execution (instantiate workflow in service channel)
|
||||
- [ ] Tasks sidebar section (read-only view of service channels)
|
||||
- [ ] Migration 026: `tasks` table, `service` channel type
|
||||
|
||||
**API routes (v0.27.1):**
|
||||
- `GET /api/v1/tasks` — list my tasks
|
||||
- `POST /api/v1/tasks` — create task
|
||||
- `GET /api/v1/tasks/:id` — get task
|
||||
- `PUT /api/v1/tasks/:id` — update task
|
||||
- `DELETE /api/v1/tasks/:id` — delete task
|
||||
- `GET /api/v1/tasks/:id/runs` — run history
|
||||
- `POST /api/v1/tasks/:id/run` — manual trigger
|
||||
- `GET /api/v1/admin/tasks` — list all tasks (admin)
|
||||
|
||||
---
|
||||
|
||||
@@ -941,9 +959,9 @@ Guardrails for unattended execution.
|
||||
Depends on: v0.27.1 (task scheduler).
|
||||
|
||||
- [ ] Execution budget enforcement: `max_tokens`, `max_tool_calls`, `max_wall_clock`
|
||||
- [ ] `task_runs` table + store (run history, status, budget usage)
|
||||
- [x] ~~`task_runs` table + store~~ (shipped v0.27.1 — table, PG+SQLite store, run history API)
|
||||
- [ ] Budget breach → `budget_exceeded` status + owner notification
|
||||
- [ ] Concurrent run skip (if previous run still active, skip with warning)
|
||||
- [x] ~~Concurrent run skip~~ (shipped v0.27.1 — scheduler skips if `GetActiveRun` returns non-nil)
|
||||
- [ ] Global config: `tasks.enabled`, `tasks.allow_personal`, `tasks.max_concurrent`
|
||||
- [ ] Default budget ceilings in global config (overridable per task)
|
||||
- [ ] `tasks.create` and `tasks.admin` permissions
|
||||
|
||||
Reference in New Issue
Block a user