You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
mino ships agents: agent, agent?, send, send-off, await, await-for,
agent-error, restart-agent, set-error-handler!, error-handler,
set-error-mode!, error-mode, plus shutdown-agents /
release-pending-sends stubs. Watches and validators on agents go
through the same watchable_get path as atoms / refs / vars.
The MVP runs sends synchronously on the calling thread. mino's eval
loop holds a per-state mutex; a worker-pool dispatcher would
serialize on it anyway, and the synchronous shape is observably
equivalent for any program that does not race against the agent
itself. await becomes a trivial no-op.
Action throws and watch throws are both captured into agent-error
via agent_try_call -- a manual try frame in src/prim/agent.c that
swallows the throw without re-raising. mino's mino_pcall would
re-throw to any enclosing try via set_eval_diag's longjmp path,
which would defeat the catch contract here.
Type plumbing: new MINO_AGENT enum tag with a per-cell {val,
watches, validator, err, err_handler, err_mode, queue} struct.
Print form #agent[VAL]; equality is identity. Wired through GC
mark / verify, deref dispatch, watchable_get, type predicate,
clone (non-transferable), eval-form self-evaluation. Replaces
the prior core.clj `agent` stub that threw :mino/unsupported.
Test coverage: tests/agent_test.clj exercises construct / send /
send-off / watches / validators / restart / error-mode / await.
Internal suite 1512 / 7166 / 0. The agent arms of the upstream
add_watch.cljc / remove_watch.cljc tests now pass cleanly,
returning the external runner to its pre-STM-branch baseline of
1 fail + 2 errors (test-abs / test-reduce / test-short, all
pre-existing).
Documented deviations: send-via not implemented (no public
Executor type); shutdown-agents / release-pending-sends are
stubs; :fail mode rejects further sends until restart-agent.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
0 commit comments