// Package bot is the Go bot sidecar (docs/bots.md ยง Direction: a Go sidecar) โ€” // a headless lchat member, being ported from agent/ so bots need no Node // runtime. It runs as its own process, never inside the server: the session // file below holds a private key that decrypts the bot's threads, and the // server must never be able to read it (CLAUDE.md, the one rule). package bot import "lchat/internal/client" // Session is the bot's identity: its device token and ECDH keypair. It now // lives in internal/client (the shared E2EE member client layer โ€” the eleven // CLI reads and writes the same file shape); the alias keeps every bot call // site and the Node-compat contract (agent/config.mjs's session.json) intact. type Session = client.Session // LoadSession reads a session file. A missing file returns (nil, nil) โ€” "not // provisioned yet" is a normal state, not an error. func LoadSession(path string) (*Session, error) { return client.LoadSession(path) }