fix(chat): send writes with an empty responseText and point card declines to resolve-from-comment

#21035 refused any write whose call_api input had a responseText key, even
responseText: {} beside a valid body, which looped a DeepSeek chat until its
window closed. An empty or default responseText is now dropped and the write is
sent once; a responseText that sets a window is still refused.

The cancel and withdraw summaries from #21035 named withdraw as the agent route,
so an agent told "do not publish it" left a person-created card pending. The
summaries and chat directive now say withdraw is only for the agent's own
obsolete card and a person's decline is recorded with resolve-from-comment when
the card's resolver policy allows.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
DottaandClaude Opus 5.5 committed 2026-11-12 01:46:01 -06:00
1 parent 3c058c37e6
commit 3f20fb2bcc
8 files changed
+67 -20

No files matched your search

+7 -4
View File
@@ -149,10 +149,13 @@ The result contains `data` as text (including JSON), plus `responseText` with
until it is null. Windows end at UTF-8 boundaries. The limit defaults to 24 KiB
and accepts 4–24,576 bytes. The server rejects binary content, invalid UTF-8,
and offsets inside a code point or beyond the response. This option only works
with GET; never repeat a mutation to retrieve another part of its response. A
new write call that carries `responseText` is refused before it is sent, like
`saveResponse`: it never carries request fields, so resend the write once
without it and with its fields in `body`. Older saved calls stay valid for recovery.
with GET; never repeat a mutation to retrieve another part of its response. On
a write, an empty or default `responseText` (`{}` or `offsetBytes: 0`) and
`saveResponse: false` change nothing, so they are dropped and the write is sent
once. A new write whose `responseText` sets a window (`limitBytes` or a later
offset) is refused before it is sent: it never carries request fields, so resend
the write once without it and with its fields in `body`. Older saved calls stay
valid for recovery.
Read the saved artifact for a stable snapshot instead of paging a changing live
response. A text-window call against a live response above 24 KiB also returns
that snapshot's artifact reference; continue on its content operation. A saved