diff options
| author | Danilo M. <danix@danix.xyz> | 2026-10-16 12:50:50 +0200 |
|---|---|---|
| committer | Danilo M. <danix@danix.xyz> | 2026-10-16 12:50:50 +0200 |
| commit | f6c4f3639409369b1f3954e53f48b6d86e3d85f6 (patch) | |
| tree | 1274fbbb0a37b89eec77e7fd4491fdb327841ff8 /examples/tools/calc.toml | |
| parent | 061d20724bb7b1ca271d5a4dd03733bd9d3c8377 (diff) | |
| download | desktop-assistant-f6c4f3639409369b1f3954e53f48b6d86e3d85f6.tar.gz desktop-assistant-f6c4f3639409369b1f3954e53f48b6d86e3d85f6.zip | |
Protocol: check command arguments, keep readers alive, one daemon
From review of the protocol commit. An exception inside a command, such as
an id SQLite cannot bind, killed that client's reader and left a deaf
connection still receiving events; commands now run under a try that
answers error. Ids must be integers: delete with no id compared None to an
unsaved conversation's None and wiped it, and a string id deleted the row
through SQLite's affinity while the Python comparison missed, leaving the
current conversation pointing at nothing so every later answer failed to
save. ask, search and their arguments are type-checked instead of coerced.
serve() refuses to start over a socket that answers, since unlinking it
orphaned the live daemon's clients, and main() removes the socket only if
it served it. The accept loop logs and continues on errors instead of
dying silently, and a client line over a megabyte is dropped. The two
known ceilings, a stalled client delaying everyone once for 2 s and a
stopped reply holding the llama-server slot until its next chunk, are
marked. New checks cover each of these and a client connecting mid-reply.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Diffstat (limited to 'examples/tools/calc.toml')
0 files changed, 0 insertions, 0 deletions
