Repository navigation
v1.7.0
Finishes the Agent Client Protocol v1 surface. An editor can now delete a
thread, show a context meter, tell one message from the next, cancel a request
by its id and page through a long thread list, and a reopened thread comes back
with its reasoning and attachments.
Added
session/delete. A thread removed in the editor is removed from disk, so
it no longer comes back in "Import Threads". A turn still running on it is
stopped first, and deleting an id that is already gone succeeds (#192).- A saved thread reports its title and time as they change. Each save sends
asession_info_updatewith a freshupdatedAt, and the title the first time
there is one. A new thread used to stay untitled in the sidebar until the next
session/list(#193). - Context usage. A
usage_updatefollows every model response, so an editor
can show how full the context window is.usedis the endpoint's own token
count when it gives one and an estimate otherwise, which is always the case
on-device (#194). - Message ids. Every message chunk carries a
messageId. An inference round
is one message, so its reply and its reasoning share an id and the round after
a tool call starts a new one (#195). - Sign-in through the editor. For a client that advertises URL-mode
elicitation,authenticatehands it the sign-in page instead of launching a
browser from the agent. The user sees where they are being sent, and sign-in
works where siGit Code has no browser to open (#197). - The Inference switch is a toggle for a client that renders boolean config
options. Other clients keep the two-value select (#198). - Deny for the session. A permission prompt offers "deny for this session"
next to "allow for this session", so a tool the user does not want is not
asked about again in that thread (#199). $/cancel_request. A client can cancel a request by its JSON-RPC id. For
session/promptthat stops the turn and the command it is running exactly as
session/canceldoes, and the prompt is answered with thecancelledstop
reason. Forauthenticateit ends the wait on the browser and the request is
answered-32800. The notification used to be ignored.session/listis paged. A reply holds at most 100 threads and a
nextCursorwhen there are more. The cursor names the last thread on the
page instead of counting an offset, so the next page is right when a thread is
saved or deleted in between. A cursor the agent did not hand out is rejected
with-32602;cursorused to be ignored.
Fixed
- A reopened thread shows its reasoning and attachments.
session/load
replayed only the text of each message. The model's reasoning now comes back
asagent_thought_chunkunder the reply'smessageId, and the images and
audio clips of a user message come back asimageandaudioblocks. - Cancelling a turn stops the command it is running. A foreground
run_commandused to run to its own end (up to two minutes) before the turn
noticed the cancel. A cancel orsession/closenow kills the process tree, or
sendsterminal/killwhen the command runs in the editor's terminal, and the
turn endscancelledwithin a moment. - Switching permission mode works while a turn is running.
session/set_mode
and the Permissions config option queued behind the turn's session lock, so
choosing Auto while a permission prompt was open did nothing until the turn
ended. They now take no lock, are answered at once, and the pending call's
successors follow the new mode. Model and Inference changes still wait for
the turn. authenticatechecks the method id. An id thatinitializenever offered
is now rejected withinvalid_params(-32602) instead of starting a
browser sign-in. A sign-in that fails reports-32603, since-32000means
authentication is required before a call.- A session the agent does not know is
-32002.session/prompt,
session/set_modeandsession/set_config_optionanswered-32602for an
unknown id; they now say resource not found, assession/loadand
session/resumealready did. - A finished terminal command no longer names a released terminal. The
closingtool_call_updateof a command that ran in the editor's terminal
re-sent the terminal id afterterminal/release. It now leaves the content
alone, so the embedded terminal stays as it was, and the result still goes out
asrawOutput. session/listrejects a relativecwdfilter with-32602, as
session/newdoes.- An embedded binary resource is read when the model can read it. An image
blob becomes an image input and an audio blob an audio input. Any other blob
keeps its placeholder, now with its MIME type.
Full changelog: https://github.com/getsigit/sigit/blob/v1.7.0/CHANGELOG.md
About siGit Code: sigit.si/code