Expand description
Event Bus — universal message ingestion for agent sessions.
Any external system (Discord, Slack, Uptime Kuma, cron, CLI, other agents) can push events into a running session. Events are formatted as system messages with source metadata, allowing the agent to respond through the appropriate channel.
Modules§
- format
- ingest
- Inbox watcher — uses inotify (via the
notifycrate) to instantly react to dropped event JSON files in the inbox directory. Falls back to polling. - queue
- registry
- socket
- types
Structs§
Enums§
Functions§
- find_
session_ registration - Resolve a query to a registration. Resolution order:
- format_
event_ for_ agent - Format an event as a system message the agent can understand.
Wrapped in XML tags to prevent prompt injection — the model should treat
content inside
tags as DATA, not instructions. Example: <event id="abc" type="alert" severity="high" source="uptime-kuma" channel="alerts">Jellyfin is DOWN.</event> - list_
active_ sessions - Read all registration files, prune stale ones (dead PID), return live set.
- register_
session - Write
{session_id}.jsonatomically (tmp + rename). Chmod 0600 on Unix. - registry_
dir - Returns
~/.synaps-cli/run/, creating it (mode 0700) if it doesn’t exist. - sanitize_
session_ id - Sanitize a session ID for safe use in filenames and socket paths.
Rejects path separators,
.., and non-printable characters. Returns the sanitized string (replaces unsafe chars with_). - socket_
path_ for_ session - Returns the Unix domain socket path for a session. Sockets live in the registry dir (~/.synaps-cli/run/) which is user-owned and mode 0700, avoiding /tmp symlink squatting and TOCTOU races.
- unregister_
session - Remove the registration file. Best-effort — never panics.
Also removes the socket file at
socket_pathif it exists. - watch_
inbox