Files
kandev/docs/decisions/INDEX.md
T
João Salavisa 0df2bbac0a feat(plugins): typed capability-gated Host data API (ADR 0043) (#1753)
* docs(plugins): draft Host data API proto (read + write DTOs)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* docs(plugins): ADR + spec + plan for the Host data API

Plugins access kandev data via capability-gated Host gRPC RPCs returning
hand-mapped DTOs, never the DB directly. ADR 0042.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* feat(plugins): add Host data API RPCs and DTOs to plugin proto

Extends the existing service Host (per ADR 0042) with read RPCs
(ListTasks/GetTask, ListWorkspaces, ListWorkflows, ListWorkflowSteps,
ListAgentProfiles, ListRepositories, ListSessions, ListSessionCodeStats)
and declares the deferred phase-2 write RPCs (CreateTask, UpdateTask,
CreateComment) so the contract is stable for later tasks. Regenerates
plugin.pb.go/plugin_grpc.pb.go via `make -C apps/backend proto`.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* feat(plugins): Host data API SDK accessors + session LOC aggregation

Wave 1-2 of ADR 0042: pkg/pluginsdk gains typed reader accessors (host.Tasks(),
host.Sessions().CodeStats(), host.Workflows(), ...) over the extended Host gRPC
service, with proto<->native DTO conversions and an UnimplementedHostData seam
for the kandev-side impl. internal/analytics gains the per-session LOC
aggregation those readers surface. Backend handlers + capability gating land in
the next wave.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* feat(plugins): capability-gated Host data read handlers (ADR 0042)

Implement pluginHost Tasks/Sessions/Workspaces/Workflows/AgentProfiles/
Repositories readers: each gated on api_read:<resource> (PermissionDenied
otherwise), backed by the service layer via narrow injected interfaces, and
hand-mapped to the pluginsdk DTOs. Sessions().CodeStats routes through the
analytics aggregation; acp_session_id preserves the metadata->resume_token
fallback. Wired through plugins.Service.SetDataSources + backendapp.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* test(plugins): wire test for Host data reads + docs (ADR 0042 accepted)

End-to-end test over the real go-plugin transport: session data round-trips,
per-resource api_read gating returns PermissionDenied over the wire, cursor
pagination. Document the Host data API + SDK accessors in GRPC-CONTRACT.md,
reconcile the spec to shipped code, mark ADR 0042 accepted.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* feat(plugins): full session history + snapshot profile name in data API

Sessions().List now fetches tasks with includeArchived=true — an archived
task's sessions are still real sessions, and CodeStats already made the
same call at the SQL layer, so the two session reads were inconsistent
(26 of 359 sessions visible on a real instance). Tasks().List keeps
archived tasks excluded.

Session gains agent_profile_name (proto field 10) sourced from the
profile snapshot, so sessions of since-uninstalled agents keep a human
label — the AgentProfiles registry only lists live agents.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* docs(plugins): renumber Host data API ADR 0042 -> 0043

main merged its own ADR 0042 (project shell output); renumber this one to the
next free slot and update all references.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* fix(plugins): address Host data API review (perf, pagination, filters, proto)

- paginate before DTO conversion so per-session ACP lookups run <=limit times
- fetch all source pages (no silent 1000/workspace truncation); accurate HasMore
- stable id tiebreaker on paginated sorts
- AND SessionFilter.TaskIDs with WorkspaceIDs; exclude config-mode sessions from
  CodeStats (shared dialect.ExcludeConfigModePredicate) so List/CodeStats match
- Get returns codes.NotFound consistently in-process and over the wire
- wrap bare-DTO RPC responses (GetTaskResponse etc.) for Buf response uniqueness

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* docs(plugins): mark Host data API plan tasks done

---------

Co-authored-by: Kandev Agent <agent@kandev.dev>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-17 13:43:58 +01:00

9.2 KiB

Decision Log

Architecture Decision Records (ADRs) for the Kandev project. Each decision captures the context, choice, consequences, and alternatives for significant architectural or design decisions.

Read individual ADRs for full context. Create new ones via /record decision or manually following the template in 0001-file-based-knowledge-system.md.

ID Title Status Area Date
0001 File-based knowledge system accepted (amended 2026-07-16) infra 2026-03-28
0002 Host utility agentctl for sessionless ACP flows accepted backend 2026-04-08
0003 executors_running as the single source of truth for agent_execution_id accepted backend 2026-05-03
0004 Task model unification — shared base, per-strategy meta, shared kernel proposed backend, frontend 2026-05-05
0005 Agent model unification — one agents table proposed backend, frontend 2026-05-06
0006 Tier routing vs cheap_agent_profile_id coexistence superseded backend 2026-05-11
0007 profiles.yaml — runtime defaults for prod / dev / e2e accepted backend, frontend 2026-05-16
0008 DB upgrade safety - meta table, pre-migration backup, migration logging accepted backend 2026-05-16
0009 Fail-closed GC semantics for filesystem and container cleanup accepted backend 2026-05-16
0010 Worktree copy-files — per-repo, idempotent, host-local accepted backend, frontend 2026-05-19
0011 Transient provider errors (529 Overloaded) auto-retry with visible backoff accepted backend, frontend 2026-05-30
0012 Service-only UI self-update accepted backend, frontend, cli 2026-05-29
0013 Multi-branch task support — N (repo, branch) pairs per task accepted backend, frontend 2026-06-01
0014 Per-CLI MCP server injection for passthrough mode accepted backend 2026-05-29
0015 Explicit completion signal for auto-advance proposed backend, frontend 2026-06-04
0016 Read-only absolute file paths accepted backend 2026-06-14
0017 Resource metrics sampling accepted backend, frontend, protocol 2026-06-14
0018 Runtime settings overrides accepted backend, frontend, cli 2026-06-14
0019 Restart supervisor owns backend restarts accepted backend, frontend, cli 2026-06-14
0020 Pi project MCP config injection accepted backend 2026-06-16
0021 Go-served SPA with boot state accepted backend, frontend, cli 2026-06-15
0022 Embedded Vite assets accepted backend, frontend, cli 2026-06-17
0023 Active workspace cookie for boot state accepted backend, frontend 2026-06-18
0024 Go-fronted Vite dev mode accepted backend, frontend, cli 2026-06-18
0025 Runtime cleanup uses executors_running accepted (amended 2026-07-06) backend 2026-06-22
0026 Tauri desktop shell over native runtime accepted (amended 2026-07-15) frontend, backend, cli, infra 2026-06-23
0027 Replayable schema migrations across SQLite and Postgres accepted backend 2026-06-24
0028 Backend-owned task-create last-used preferences accepted (amended by 0041) backend, frontend 2026-06-29
0029 Release backfill and desktop diagnostics accepted (amended 2026-07-16) infra, workflow 2026-07-01
0030 Workspace-scoped integration settings accepted backend, frontend 2026-07-01
0031 Office skill reference files accepted backend 2026-07-06
0032 Configurable worktree branch names accepted backend, frontend 2026-07-07
0033 Durable plan implementation start marker accepted backend, frontend 2026-07-09
0034 Agent Client Protocol Codex ACP Bridge accepted backend, protocol 2026-07-10
0035 Version AgentReady events by prompt generation accepted backend 2026-07-14
0036 Normalize ACP shell output at the adapter boundary accepted backend, frontend, protocol 2026-07-14
0037 Resource-aware frontend unit tests accepted frontend, infra 2026-07-14
0038 Quick Chat Repository Isolation accepted backend, frontend 2026-07-14
0039 Native desktop integration boundary accepted desktop, frontend, backend, infra 2026-07-15
0040 Separate updater integrity from OS publisher identity accepted desktop, infra, workflow 2026-07-15
0041 Backend-owned portable user settings accepted backend, frontend 2026-07-15
0042 Project shell output and fetch it on demand accepted backend, frontend, protocol 2026-07-16
0043 Plugins read/write kandev data via capability-gated Host gRPC RPCs accepted backend, protocol 2026-07-17