Guide
Plain language, no phrase to match, and they can say no. Optional at first: nothing else depends on it. About twenty minutes if your engine already renders a say.
POST http://localhost:8767/v1/command { "char": "Hulda", "text": "follow me" }
-> { "ok": true, "lane": "order", "lease_s": 120 }
From the terminal, lw trigger order "follow me" --char hulda. From an agent, the lw_command tool.
No language model reads the order. A trained gate classes the intent, a closed grammar turns a multi-step sentence into a validated step list, and the manifest checks every step against what that character can and must never do. Phrasing does not matter; meaning does.
"follow me"
"go to the mill, then come back to me"
"wait by the door"
"stop"
A new order replaces the old one. stop ends the current order, silently and at once.
Everything arrives on the socket you already hold, as the same two commands your engine executes for everything else.
loadScenario for her slot, exactly as when she decides something herself.say the first time an order changes what she does. Silent on repeats and corrections, so she never nags.can, or one a never rule forbids here, she says so in one line and does not move. The receipt is manifest_blocked with the verb and the place.Render her say lines exactly as you render her own speech. With a talk lane up (Add dialogue) the acknowledgement and the refusal are written in her voice; without one they come from a per-archetype template. Either way the reason she gives is the real one.
char is the character's name from your feed. To address every character in earshot at once, pass everyone: the order fans out, and a crowd acknowledges silently rather than as a chorus.
An order is borrowed attention, not ownership. For two minutes it outweighs everything she wanted to do herself, a strong grudge included. After that the pull of her own life is weighed against it, and a serious wrong can end it. When she ends it herself she says why, in the words of the wrong that decided it ("Not with that thing out there"), and never breaks off silently.
Two receipts tell you it happened: obedience_broken carries her name, the order, the reason and the line she said; the decision that replaced the order is served as intention-over-order. lw why hulda shows both.
The talk lane on localhost:8094 is a mouth. A sentence sent to its /turn is answered in words and never moves her: "follow me" typed into a talk box gets a reply, not a follower. Orders go to the command lane above, and only there.
If your game has one text box for both, your UI decides which lane a sentence goes to. The split that works: a sentence that starts with a verb, or names a place or a person to act on, is an order; a question or a statement is talk. Do not send questions to the command lane. If in doubt, give the player two inputs, an order key and a talk key, and route each to its lane.
Next: Add dialogue.