9 Commits

Author SHA1 Message Date
zenord e9f1d595fa fix: avoid blocking on the task that just started
When an assistant turn emits both confirm and start_next, confirm may
already start the newly queued proposal. The later start_next then sees
the just-started task as an active blocker and appends a false running-task correction. Suppress that redundant start_next correction when confirm in the same turn already started the current user proposal. Also tighten the worker bootstrap wording to run confirmed low-risk work continuously until a real decision point.
2026-08-22 00:15:32 +08:00
zenord 4f7b4a9115 feat: show owners a live worker status snapshot
While a worker turn is running, the assistant prompt for the working
proposal's owner includes a compact status card (elapsed time, last
tool activity category with age, per-category counts) built from the
ACP session/update stream the runtime already receives. Other users
still see only the desensitized busy state, and raw update content
never enters the assistant session.
2026-08-19 16:39:42 +08:00
zenord 9c3139380d fix: salvage truncated worker envelopes and log worker lifecycle
Models occasionally drop the closing tag of the result envelope while
the JSON itself is complete; the strict parser rejected these and one
repair attempt could not always recover, cascading into worker_error
and dropping valid attachments. The parser now falls back to
brace-balanced salvage when the closing tag is missing, and worker
lifecycle events (start, resume, invalid envelope, repair, settle,
worker_error) are logged.
2026-08-19 15:44:53 +08:00
zenord 6b506b8c55 feat: send workspace images to QQ chats
Worker results may report image attachments stored inside the workspace;
the runtime validates them (containment, png/jpg magic, size) and
delivers them with the pending event. Assistants gain a send_image
action so users can ask for an image later. QQ uploads via /files with
base64 file_data and sends msg_type 7 rich media, sharing the same
msg_id/msg_seq counter as text replies; non-image adapters flatten
images to text.
2026-08-19 14:39:18 +08:00
zenord 7aa610294c feat: pending-finish proposals and QQ image input
Proposal semantics: worker results no longer distinguish success/fail;
only an explicit finish settles a pending proposal. Pending owner input
follows up by resuming the original worker session. Dirty pending blocks
start_next globally; clean pending only blocks its owner.

QQ adapter now downloads image attachments and passes them as ACP image
content blocks; video/file attachments degrade to link text.
2026-08-19 13:36:23 +08:00
zenord b4121c9fd6 feat: add assistant proposal worker runtime 2026-08-18 18:48:47 +08:00
zenord 2795567f8c feat: expose bot task progress 2026-08-17 14:37:51 +08:00
zenord f9fb4ef776 Refactor runtime around isolated bot instances 2026-08-16 23:45:09 +08:00
zenord a80fe68d57 Add ACP-backed role sessions 2026-08-16 10:08:03 +08:00