rowboat/apps/x
Ramnique Singh 655ebc77b9 Add standalone agent-loop module with turn-based SQLite persistence
New @x/core module (src/agent-loop) — groundwork for replacing the JSONL
event runtime. Development-only; not wired into the app yet.

- Durable unit is a turn: append-only fact logs (messages, permission
  requests/decisions, started/dispatched tools) + set-once error/completedAt;
  status is derived from facts, never stored
- advance() reducer drives the loop purely from persisted state; crash
  recovery = resumeTurn() re-entering the reducer
- Permission gating as data: batched requests, user/classifier decisions
  with reasons, denials materialized as ToolMessages
- TurnHandle API per entry point: stream events or await the rest state
- Kysely migration (agent_loop_turns) + SqliteTurnStore with zod-parsed
  reads; InMemoryTurnStore for tests
- VercelModelAdapter over the existing createProvider()/streamText
- 33 vitest tests: reducer, permissions, classifier, crash recovery,
  abort, concurrency, SQLite round-trips

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-15 09:32:48 +05:30
..
apps Add SQLite storage foundation 2026-06-15 09:32:48 +05:30
packages Add standalone agent-loop module with turn-based SQLite persistence 2026-06-15 09:32:48 +05:30
patches feat: run code mode on an in-app ACP client with live approvals (#593) 2026-06-05 14:45:08 +05:30
.gitignore chore: ignore test-fixtures dir 2026-05-08 17:04:25 +05:30
ANALYTICS.md add code mode: coding-agent workspace with sessions, direct/Rowboat drive, diffs, and worktrees 2026-06-12 23:57:44 +05:30
eslint.config.mts ignore renderer eslint 2026-01-16 12:05:33 +05:30
LIVE_NOTE.md Refactor builtin file tools beyond workspace scope 2026-05-25 16:21:51 +05:30
package.json integrate electron forge 2026-01-17 10:28:44 +05:30
pnpm-lock.yaml Add SQLite storage foundation 2026-06-15 09:32:48 +05:30
pnpm-workspace.yaml Add SQLite storage foundation 2026-06-15 09:32:48 +05:30
tsconfig.base.json bootstrap new electron app 2026-01-16 12:05:33 +05:30