Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 22 additions & 9 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,12 @@ parallel copies under `docs/` or `scripts/notes/`. At cut time: rename
Dedicated Nordic å in `/model` is treated as that shortcut when Add
Provider is offered.

### Breaking

- `task` is removed. Use `spawn_agent` to start workers and `wait_agents` to
collect reports; `search_agents` profile ids now dispatch through
`spawn_agent(agent=...)`.

### Changed

- Cancelling a `task` or `wait_agents` worker reports wait status `interrupted`,
Expand All @@ -36,6 +42,10 @@ parallel copies under `docs/` or `scripts/notes/`. At cut time: rename
API endpoints keep dollar estimates.
- CLI `--help` / `-h` is recognized in any argument position. Value flags no
longer swallow `--*` or `-h` as their option values.
- `wait_agents` no longer collects a stale completed or interrupted stamp
when a followup is already in flight.
- `interrupt_agent` flips the wait mailbox so soft interrupt unblocks
`wait_agents` while the background run is still in flight.

## [0.3.11] - 2026-08-31

Expand All @@ -61,6 +71,9 @@ parallel copies under `docs/` or `scripts/notes/`. At cut time: rename

### Fixed

- Mid-run Enter delivers a steer into the live reactor (`Agent.deliver`)
instead of starting a second `send`. `/clear` and `/new` drop queued
input so it cannot land in the next session.
- Failed sessions with an `error` string in `run.json` are valid resume
candidates, not corrupt files. A truly unreadable session id prints one
recovery line; parse diagnostics go to the structured log, not the
Expand Down Expand Up @@ -259,13 +272,13 @@ parallel copies under `docs/` or `scripts/notes/`. At cut time: rename

### Fixed

- Retained worker sessions (`spawn_agent`, resumable via `resume_agent`/`followup_task`) now have
their own retention cap, separate from the TUI's finished-session display cap. Previously they
shared that 20-item cap, so `resume_agent` on an early worker failed with a bare `not_found` once
a fan-out of more than 20 workers had finished. A session dropped by the retention cap still
releases its sidecars/reactor/lock entry, always evicts least-recently-used first, and never
evicts a running session. `resume_agent`/`followup_task` against an evicted session now report
its terminal status plus a pointer to `read_agent_trace`, instead of `not_found`.
- Retained worker sessions (`spawn_agent`, resumable via `resume_agent`) now have their own
retention cap, separate from the TUI's finished-session display cap. Previously they shared that
20-item cap, so `resume_agent` on an early worker failed with a bare `not_found` once a fan-out
of more than 20 workers had finished. A session dropped by the retention cap still releases its
sidecars/reactor/lock entry, always evicts least-recently-used first, and never evicts a running
session. `resume_agent` against an evicted session now reports its terminal status plus a pointer
to `read_agent_trace`, instead of `not_found`.

## [0.3.0] - 2026-08-24

Expand Down Expand Up @@ -306,10 +319,10 @@ parallel copies under `docs/` or `scripts/notes/`. At cut time: rename
operator interrupts it (`interrupt_agent`) rather than the harness enforcing
a count.

- Added `interrupt_agent({ target })` and `followup_task({ target, message })`,
- Added `interrupt_agent({ target })` and `resume_agent({ target, message })`,
the second half of reusable worker sessions: `interrupt_agent` stops a
retained worker's current turn while keeping it and its context alive
(distinct from the permanent `close_agent`), and `followup_task` sends new
(distinct from the permanent `close_agent`), and `resume_agent` sends new
work into a retained worker's existing session, reusing its prior context
and tool outputs rather than starting fresh. Both are gated to orchestrator
tiers via the existing fleet-verb mechanism, denied to leaves. `interrupt_agent`
Expand Down
14 changes: 6 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ prompts. Pass `--no-auto` to start in ask-on-every-consequential-action mode
### What auto allows

- File tools inside the workspace: `write_file`, `edit_file`, `delete_file` (and
other non-shell built-ins such as `manage_tasks`, `task`, …)
other non-shell built-ins such as `manage_tasks`, `spawn_agent`, `wait_agents`, …)
- Unconstrained shell (builds, tests, git, one-off commands that match no
deny/ask rule)
- Read-only tools (`read_file`, `grep`, `search_files`, `list_dir`, `lsp`, …)
Expand Down Expand Up @@ -152,9 +152,8 @@ Details live in `docs/PRODUCT.md` (safety model) and `docs/ARCHITECTURE.md`

Corbits Code is a single-process CLI built on Interchange primitives. The primary
session is always the **orchestrator** (Skywalker): it can act directly and
delegates substantial work through a closed director fleet via `spawn_agent` /
`wait_agents` / `search_agents` (`task` remains a fused spawn-plus-wait
wrapper).
delegates substantial work through a closed director fleet via `spawn_agent`,
`wait_agents`, and `search_agents`.

```
CLI (src/index.ts)
Expand Down Expand Up @@ -202,10 +201,9 @@ Corbits Code keeps repository guidance and the closed director fleet separate:
- `.agents/agents/` — optional local profile additions; this directory is not
required and may be absent

Named workers resolve through `spawn_agent` / `task` (`resolveDirector`): closed
directors first, then enabled agent plugins, then local
`.agents/agents/*.json|*.yaml` profiles. Use `search_agents` to discover ids
before dispatching.
Named workers resolve through `spawn_agent(agent=...)`: closed directors first,
then enabled agent plugins, then local `.agents/agents/*.json|*.yaml` profiles.
Use `search_agents` to discover ids before dispatching.

## Contributing

Expand Down
Loading
Loading