Commit Graph

6 Commits

Author SHA1 Message Date
Kit Langton b23e5b78a8 make Session.updateMessage/updatePart generic, remove all MessageV2 casts
Generic interface preserves the narrowed type through update calls,
eliminating `as MessageV2.Assistant` / `as MessageV2.ToolPart` casts.
Async facades keep Zod validation via parse + cast, with `.force()`
bypass. Tighten test assertions for BusyError type and concurrent
caller identity.
2026-03-29 13:02:05 -04:00
Kit Langton eb05bda03b remove abort from llm and processor services 2026-03-29 12:38:24 -04:00
Kit Langton 732bbde850 effectify resolveCommand: use Command.Service, Agent, Plugin directly in layer 2026-03-29 12:22:00 -04:00
Kit Langton 4f784276b4 effectify resolvePromptParts: use AppFileSystem and Agent service directly 2026-03-29 12:21:59 -04:00
Kit Langton f5bf694056 use SessionCompaction.Service and Plugin.Service directly in layer 2026-03-29 12:21:59 -04:00
Kit Langton 51ad4801e8 add Effect-based prompt tests covering loop lifecycle, cancel, concurrency
12 tests using testEffect + TestLLM pattern (no HTTP server):
- loop exits on stop finish, calls LLM for new messages, continues on tool-calls
- loop sets status busy→idle
- cancel interrupts cleanly, returns last assistant, records MessageAbortedError
- cancel with queued callers resolves all cleanly
- concurrent callers get same result via Deferred queue
- concurrent callers receive same error on failure
- assertNotBusy throws BusyError when running, succeeds when idle
- shell rejects with BusyError when loop running
2026-03-29 12:21:58 -04:00