luvcraft/agent/approval.lisp
One inert proposed tool effect waiting for a player's decision.
Signal when approval can no longer be committed.
Commit approval's already validated semantic payload.
Remove approval's temporary presence and owned resources.
Return the cinematic pose for approval, or NIL.
Publish approval's terminal state exactly once and wake its tool call.
Validate and commit approval, or finish it as failed.
Reject approval without changing its subject.
Return approval to its proposer with revision guidance.
Decisions originate on the canvas thread, so validation and publication remain one serialized transition with respect to the world.
(command value)Finish VALUE's off-canvas work on the provider worker before presentation.
One inert proposed tool effect waiting for a player's decision.
(approval presence session)Return the cinematic pose for APPROVAL, or NIL.
(approval state &optional note)(approval note)Return APPROVAL to its proposer with revision guidance.
Commands run on the canvas thread; a provider turn runs on its own. call-tool must therefore never call execute-frame-command from the websocket thread. It accepts its arguments and posts the finished command through request-canvas-frame -- froth's prepare/commit split (#IOGTGD), with accept as the prepare. Most…
A parked tool call is a semantic object, not a closure waiting to happen. The canvas owns every transition; the provider thread only waits on the private mailbox through
settle-command-result(#T6PEVY).