Add basic chat functionality: session creation, mode/model/temperature
config, prompt sending with streaming SSE responses. Includes shared
DTOs, RPC interface extensions, backend chat manager, frontend service,
and Swing-based chat UI (message list, input panel, toolbar).
Refactor backend by creating cli/ package for CLI infrastructure
(CliServer, KiloBackendCliManager, KiloBackendHttpClients) and
introducing KiloCliDataParser — a stateless object that centralizes
all CLI response parsing. Callers pass raw JSON, get typed DTOs back.
Includes 30 test cases for the parser.
Adjust boolean expression alignment in isCompletionResult to use
consistent indentation, and reformat PopupSelectorProps generic type
constraint to break the extends clause across multiple lines.
Update DiffVirtualApp and PermissionDiff to reconstruct before/after
content from the patch field when explicit before/after values are not
provided. Export the `text` helper from kilo-ui session-diff and add
`patch` to the PermissionFileDiff type.
In message-v2, refine stripMessageMetadata to only strip oversized
patches (exceeding MAX_DIFF_SIZE) rather than all patches, preserving
small patches so the UI can render inline diffs without additional
fetches.
- Add ensureActive() in monitorProcess() to prevent stale process
monitor from racing fresh connections during intentional restarts
- Refactor load() to use local variables, assigning to shared fields
only after ensureActive() to eliminate NPE race with clear()
- Refactor fetchProfile() to return FetchResult instead of throwing,
making all fetchers use consistent result types
- Seed session statuses in list() so first load/reconnect gets current
status instead of empty map
- Use stored worktree directory in session get/delete to fix lookups
for sessions created in worktrees
- Make KiloBackendCliManager.process @Volatile and update KDoc to
document that exited() is called off-mutex from IO dispatcher