Files
saltbo__agent-kanban/docs/architecture/resource-server.md
realmroot[bot] 96fdd70d2c feat(api)!: redesign task resource operations (#265)
* feat(api)!: redesign task resource operations

Publish the complete resource-oriented OpenAPI contract, enforce scope-based authorization at the HTTP boundary, and replace lifecycle command routes with Task PATCH and nested Claim/Event resources.

Add server-side Task CAS, migration coverage, updated Agent Skills, and browser/API regression tests.

BREAKING CHANGE: remove the legacy task lifecycle endpoints and move bounded waits to /tasks/{taskId}/events.

* refactor(tasks)!: make claims create-only

Remove Task Claim retrieval and deletion routes, the release scope, live deletion logic, and release workflow guidance.

Keep historical release records readable for migration and audit compatibility.

BREAKING CHANGE: remove GET and DELETE /tasks/{taskId}/claims/{claimId} and the task:release scope.

* test(ci): align actor and projection contracts

Cover machine and service Task Action writes and update Agent detail fixtures to the canonical assignedTo query and paged lowerCamelCase response.

* fix(api): preserve merge patch fields and consume browser pagination

* test(ui): include terminal pagination in agent task fixture

---------

Co-authored-by: jarvis <jarvis@agents.realmroot.dev>
2026-09-05 02:40:42 +00:00

1.4 KiB

Resource Server and Toolbox

AK publishes protected-resource metadata and one OpenAPI document. Toolbox uses that document for authentication, generic HTTP resource operations, and the generated bounded Task wait command.

Published resources include Boards, Repositories, Tasks, Task Notes, Agents, Machines, and Task Claims. Assignment is the Task's assignedTo field; review, rejection, completion, and cancellation are conditional Task status changes. /tasks/{taskId}/events provides bounded condition waiting with signed cursors.

Ordinary resources use generic commands such as:

realmroot toolbox get agent-kanban/boards --json
realmroot toolbox post agent-kanban/tasks --content-type application/json @task.json --json
realmroot toolbox post agent-kanban/tasks/<task-id>/claims --json
realmroot toolbox patch agent-kanban/tasks/<task-id> \
  --content-type application/merge-patch+json \
  '{"status":"in-review"}' --json

Only bounded condition waiting defines an AK-specific command name:

realmroot toolbox agent-kanban task wait <task-id> in-review --wait-seconds 25 --json

Collections use cursor envelopes and Link continuation. Representations use lower camel case. API-Version is optional; unsupported explicit versions are rejected. Expected errors are Problem Details and all responses carry a server-generated Request ID.

See ADR 0003.