Replace the dual task/monitor model, NO_REPLY string protocol, and Agent
self-delivery with a single Scheduled Run path: claim-time JobRun snapshots,
isolated Root/named Agent execution, exactly-once complete_scheduled_run
termination, and Scheduler-owned policy delivery through a persistent outbox.
- SQLite v11: drop job_kind/model/delete_after_run, add job_runs with
status/outcome joint constraints and delivery lease columns; one-shot
BEGIN IMMEDIATE migration with atomic rollback.
- Non-blocking JoinSet event loop with bounded run/delivery concurrency;
terminal commit before any channel I/O; recover unfinished runs as unknown.
- ExecutionOrigin::Scheduled propagates to descendants, completion sink is
top-level only, background delegation downgrades to foreground.
- Typed delivery receipts, fixed target_session_id, idempotent
scheduled:<job_run_id> history insert.
- New cron_runs read-only tool; cron_add/update drop kind/model; WebUI and
Health consume the same JobRun projection.
- Bump version to 1.22.0.
- AgentCatalog now records per-definition load errors (bad YAML, unknown
provider/profile/model/tool/skill, or explicit delegate edge to an absent
target) and excludes only the failing definition, never failing gateway
startup or reload; config- and directory-trust-level errors stay fatal
- Explicit delegation to an absent target cascades to deactivate the
delegating agent; `*` and implicit general-purpose delegation do not
- GET /api/agents lists broken definitions with parse/load errors so they
can be fixed and re-enabled from the WebUI instead of disappearing
- WebUI shows an error banner on broken definitions, hides the enable switch,
pre-fills the editor via lenient parsing, and re-enables on save
- Bump version to 1.16.0
- Store default SQLite database at <config_dir>/data/picobot.db instead of
the workspace, keeping session data independent of the workspace; the
reload equivalence check and docs follow the new default
- Add per-skill enable/disable persisted in <config_dir>/skills_state.json;
skills default to enabled, disabled skills are excluded from prompts,
listings, and get_skill at load time
- Add mcp.servers[].enabled (default true); disabled servers are skipped
at activation and by health checks
- WebUI Tools page: switches for Skills and MCP servers, plus a concrete
MCP tool list with connection status and errors
- Add PUT /api/skills/{name} API and expose enabled/tool details in the
skills/status APIs
- Bump version to 1.15.0
- drop agent_run_groups table and group_id/scope_kind/scope_id columns (schema v8)
- remove group_id from AgentExecutionContext and recovery group counters
- flatten TasksPage background tab into a per-run list
- add WebUI Agents page with definition CRUD and inline provider/model
- bump version to 1.11.0
- bash is now Delegatable so named Agents may run shell commands
- remove the legacy anonymous 'general' path entirely: SubAgentManager
run_background/run_foreground_batch/run_inline/run_foreground,
filter_tools/get_skills_prompt, TaskNotification direct delivery,
DelegateContext task-local, background_permits/admission, and the
delegate tool's check_task/cancel_task/list_tasks actions (agent_task
replaces them); /stop and todo migrate off the task-local bridge
- stop writing the legacy background_tasks table (read-only transition);
/api/tasks union still renders historical records
- ship a built-in general-purpose Agent definition (resources/agents)
released to ~/.picobot/agents on first run like built-in skills, with
bash/read-only/search/web/calculator/sleep tools; root_delegates now
defaults to it so orchestration works out of the box
- update AGENTS/README/architecture/config/db-schema docs accordingly
- AgentCatalog/definitions with strict Markdown frontmatter, delegation graph,
fail-closed tool scoping, and signal contracts
- structured cancellation (AgentError::Cancelled/TimedOut) across provider
streams, tool batches, and sleep; /stop drives the same terminal state
- schema v6 run/group/inbox persistence with execution-ID conditional
transitions and completion-slot reservations
- ExecutionGate separating run quota from provider/tool step permits
- background completion inbox with hidden-trigger continuation turns,
fairness scheduling, lease release, dead-lettering, and activation recovery
- typed TurnMailbox with two-phase steer admission and atomic consumption at
turn commit; /stop releases admitted steer events back to pending
- emit_signal tool with contract-enforced rate/dedupe/severity/size limits
- WS run/event projection (GetAgentRuns, AgentRunUpdated, AgentEventUpdated),
/api/agent-runs* management endpoints, /api/tasks union, WebUI run tree
and signal cards
- ChannelContext.durable_private persisted for continuation delivery reuse
Version 1.7.0