luv

Workshop wiki

opening.lisp

luvcraft/agent/tests/opening.lisp

system luvcraft/agent/test · 15 definitions · on GitHub

in-package#:luvcraft.agent.tests
defclassscripted-opening-mixin
opening-started:initform
sb-thread:make-semaphore:count0
:readeropening-started
opening-finish:initform
sb-thread:make-semaphore:count0
:readeropening-finish
turn-finished:initform
sb-thread:make-semaphore:count0
:readerscripted-turn-finished
script-lock:initform
sb-thread:make-mutex:name"agent opening test"
:readerscripted-opening-lock
opening-count:initform0:accessoropening-count
close-count:initform0:accessorclose-count
opened-thread-name:initformnil:accessoropened-thread-name
opened-candidate:initformnil:accessoropened-candidate
received-prompts:initform'
:accessorreceived-prompts
opening-failure-p:initarg:opening-failure-p:initformnil:readeropening-failure-p
deftestagent-hud-respects-the-global-top-status-inset
let*
session
status
make-instance'mcluv:luvcraft-status-bar-overlay:sessionsession:framenil:mirrornil
setf
luvcraft:luvcraft-session-overlayssession
liststatus
defunmake-opening-test-presence
class&restinitargs
apply#'make-instanceclass:sessionnil:x2:y3:z4:position
luvcraft::make-vec32.5d03d04.5d0
initargs
defunscripted-agent-response
make-instance'openai:agent-response:text"done":reasoning"":id"test":usagenil
defunmake-scripted-world-agent
presence
make-instance'agent:world-agent:applicationpresence:model"test":socketnil:turn-function
lambda
providerprompt
declare
ignoreprovider
sb-thread:with-mutex
scripted-opening-lockpresence
pushprompt
received-promptspresence
sb-thread:signal-semaphore
scripted-turn-finishedpresence
:close-function
lambda
provider
declare
ignoreprovider
sb-thread:with-mutex
scripted-opening-lockpresence
incf
close-countpresence
:observer-failure-function
lambda
failure
declare
ignorefailure
defunperform-scripted-opening
presence
sb-thread:with-mutex
scripted-opening-lockpresence
incf
opening-countpresence
setf
opened-thread-namepresence
sb-thread:thread-namesb-thread:*current-thread*
sb-thread:signal-semaphore
opening-startedpresence
sb-thread:wait-on-semaphore
opening-finishpresence
when
opening-failure-ppresence
error"scripted provider opening failure"
let
candidate
setf
opened-candidatepresence
candidate
candidate
defunjoin-opening-thread
presencethread
declare
ignorepresence
whenthread
sb-thread:join-threadthread:default:timeout:timeout1.0
deftestfirst-contact-is-one-named-opening-and-never-blocks-the-canvas
dolist
let
unwind-protect
let*
before
get-internal-real-time
answer
agent::gnome-askpresence"first"
elapsed
/
-
get-internal-real-time
before
floatinternal-time-units-per-second1.0
ok
eqpresenceanswer
ok
<elapsed0.1
"first contact only starts a worker"
ok
sb-thread:wait-on-semaphore
opening-startedpresence
:timeout1.0
let
worker
agent::embodied-agent-agent-opening-threadpresence
ok
search"agent opening"
opened-thread-namepresence
:test#'char-equal
ok
search
if"cat""gnome"
opened-thread-namepresence
:test#'char-equal
ok
eqpresence
agent::gnome-askpresence"second"
ok
=1
opening-countpresence
sb-thread:signal-semaphore
opening-finishpresence
ok
not
eq:timeout
join-opening-threadpresenceworker
ok
sb-thread:wait-on-semaphore
scripted-turn-finishedpresence
:timeout1.0
ok
sb-thread:wait-on-semaphore
scripted-turn-finishedpresence
:timeout1.0
let
provider
agent:gnome-agentpresence
ok
typepprovider'agent:world-agent
ok
equal'
"first""second"
nreverse
received-promptspresence
sb-thread:signal-semaphore
opening-finishpresence
let
provider
agent:gnome-agentpresence
deftestopening-failure-is-published-only-through-the-canvas-mailbox
let
unwind-protect
progn
ok
eqpresence
agent::gnome-askpresence"hello"
ok
sb-thread:wait-on-semaphore
opening-startedpresence
:timeout1.0
let
worker
agent::embodied-agent-agent-opening-threadpresence
sb-thread:signal-semaphore
opening-finishpresence
ok
not
eq:timeout
join-opening-threadpresenceworker
multiple-value-bind
notereceived-p
sb-concurrency:receive-message
agent::gnome-notespresence
:timeout1.0
okreceived-p
ok
eq:agent-failed
firstnote
ok
search"scripted provider opening failure"
secondnote
ok
null
agent::gnome-saidpresence
"the provider worker never mutates canvas presentation"
deftestrelease-during-opening-detaches-now-and-closes-the-late-candidate
let
ok
eqpresence
agent::gnome-askpresence"too late"
ok
sb-thread:wait-on-semaphore
opening-startedpresence
:timeout1.0
let
worker
agent::embodied-agent-agent-opening-threadpresence
ok
null
agent:gnome-agentpresence
sb-thread:signal-semaphore
opening-finishpresence
ok
not
eq:timeout
join-opening-threadpresenceworker
ok
typep
opened-candidatepresence
'agent:world-agent
ok
=1
close-countpresence
ok
eq:released
multiple-value-bind
notereceived-p
sb-concurrency:receive-message-no-hang
agent::gnome-notespresence
declare
ignorenote
ngreceived-p"teardown suppresses stale opening failures"