Control Plane socket + send verb (spine) #57
Labels
No labels
epic
in-review
ready-for-agent
ready-for-human
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
weiwen/evie#57
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?
Parent
#55
What to build
The spine of the Control Plane, proven end-to-end with the simplest Verb. The Daemon binds a local Unix-domain socket and speaks a JSON-lines request/response protocol; a new
evie <verb>CLI connects to it, issues one Verb, prints the result, and exits. Introduce a transport-agnosticdispatch(verb, resolved_chat) → responsecore (the socket is a thin adapter over it, mirroring howhttp.rssits overSessionManager) with its first verb:send— deliver verbatim text to a chat, nopi, no Session.Includes the shared infrastructure every later verb needs:
--socketflag →$EVIE_SOCKET→$XDG_RUNTIME_DIR/evie.sock→~/.config/evie/evie.sockfallback; overridable via a new[rpc] socket_pathconfig key. Socket created mode 0600, never network-exposed. SetRuntimeDirectory=eviein the NixOS module so it lands at/run/evie/evie.sock.--chat→$EVIE_CHAT_ID→ the sole configured Telegram chat → error if ambiguous/none, using the existingChatIdgrammar.The existing HTTP API is untouched. Demoable: with
evie daemonrunning,evie send "hi"posts "hi" to the Telegram chat.Acceptance criteria
evie daemonbinds the Control Plane socket at the resolved path with mode 0600; the NixOS module places it at/run/evie/evie.sock.evie send "text"delivers verbatim text to the resolved chat with nopiinvocation.--chat→$EVIE_CHAT_ID→ sole Telegram chat → error; the ambiguous/none case returns a clear error and non-zero exit.[rpc] socket_pathand--socketoverride the default path; the CLI resolves--socket→$EVIE_SOCKET→ default.senddelivery and targeting resolution incl. the ambiguity error (fake bot/session, persession.rsprior art); CLI-parse tests cover thesendgrammar.Blocked by