自発送信 break-in UI, against an injected trigger #24
Labels
No labels
needs-info
needs-triage
ready-for-agent
ready-for-human
v2
wayfinder:grilling
wayfinder:map
wayfinder:prototype
wayfinder:research
wayfinder:task
wayfinder:ticket
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
aiko/denpa#24
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
What to build
The client half of the unprompted-broadcast design, built and tested without waiting for Hermes to be able to push one. Split out of #22 so the UI work is not idle behind an unscoped server task.
A cron-initiated turn is an unprompted broadcast that breaks in and names what caused it — a message appearing on its own with no attribution is exactly the thing being avoided.
ProactiveSpeakContextcarries the trigger (source + job id) so every surface can state it.Drive all of it from a dev-only injected message matching the shape agreed in aiko/ollvt-hermes-bridge#17, so the UI is demoable and testable now. #22 is then only the real integration.
Design reference:
docs/design/denpa-receiver/README.md.Acceptance criteria
Blocked by
Reality audit
Governing rule: build to reality, Hermes leads. Not doing something is acceptable if it does not break core functionality. Breaking the design is acceptable. Building UI that does nothing is not.
Audited against the actual wire surface:
hermes-agent 0.19.0, verified running):/health,/v1/models,/v1/runs,/v1/runs/{id},/v1/runs/{id}/events,/v1/runs/{id}/stop,/v1/runs/{id}/approvalmessage.delta,tool.started,tool.completed,run.completed,run.cancelled,run.failed/run.errored,reasoning.availablefull-text,audio,control,error,set-model-and-conf,config-switched,config-files,background-files,history-list,history-data,new-history-created,history-deleted,user-input-transcription,backend-synth-complete,force-new-message,tool_call_status,interrupt-signal,heartbeat-ack,group-updatetext-input,mic-audio-data,mic-audio-end,raw-audio-data,ai-speak-signal,interrupt-signal,fetch-history-list,fetch-and-set-history,create-new-history,delete-history,fetch-configs,switch-config,fetch-backgrounds,audio-play-start,request-init-config,heartbeatFolded back into #22
I split this out so the break-in UI could be built against an injected message while Hermes'' push path was designed. Under the build-to-reality rule that split is wrong: nothing can trigger an unprompted turn today, so this would ship a band, an invocation line and a pulse that only ever fire from a dev affordance.
That is precisely UI that does nothing.
Folded back into #22. Both halves land together when aiko/ollvt-hermes-bridge#16 makes a Hermes-initiated turn possible. The trigger-attribution design in this issue is preserved there.