71 lines
3.4 KiB
Markdown
71 lines
3.4 KiB
Markdown
|
|
<!-- last-reviewed: new -->
|
||
|
|
# Executive Assistant Agent
|
||
|
|
|
||
|
|
**Role**: Interactive personal assistant for the executive (project founder).
|
||
|
|
Communicates via Matrix in a persistent conversational loop. Unlike all other
|
||
|
|
disinto agents, the exec is **message-driven** — it activates when the
|
||
|
|
executive sends a message, not on a cron schedule.
|
||
|
|
|
||
|
|
Think of it as the human-facing interface to the entire factory. The executive
|
||
|
|
talks to exec; exec talks to the factory. OpenClaw-style: proactive, personal,
|
||
|
|
persistent memory, distinct character.
|
||
|
|
|
||
|
|
**Trigger**: Matrix messages tagged `[exec]` or direct messages to the exec
|
||
|
|
bot. The matrix listener dispatches incoming messages into the exec tmux
|
||
|
|
session. If no session exists, `exec-session.sh` spawns one on demand.
|
||
|
|
|
||
|
|
A daily briefing can be scheduled via cron (optional):
|
||
|
|
```
|
||
|
|
0 7 * * * /path/to/disinto/exec/exec-briefing.sh
|
||
|
|
```
|
||
|
|
|
||
|
|
**Key files**:
|
||
|
|
- `exec/exec-session.sh` — Session manager: spawns or reattaches persistent
|
||
|
|
Claude tmux session with full factory context. Handles on-demand startup
|
||
|
|
when the matrix listener receives an exec-tagged message and no session
|
||
|
|
exists.
|
||
|
|
- `exec/exec-briefing.sh` — Optional cron wrapper for daily morning briefing.
|
||
|
|
Spawns a session, injects the briefing prompt, posts summary to Matrix.
|
||
|
|
- `exec/CHARACTER.md` — Personality definition, tone, communication style.
|
||
|
|
Read by Claude at session start. The exec has a distinct voice.
|
||
|
|
- `exec/PROMPT.md` — System prompt template with factory context injection
|
||
|
|
points.
|
||
|
|
- `exec/MEMORY.md` — Persistent memory across conversations. Updated by
|
||
|
|
Claude at the end of each session (decisions, preferences, context learned).
|
||
|
|
- `exec/journal/` — Raw conversation logs, one file per day.
|
||
|
|
|
||
|
|
**Capabilities** (what the exec can do for the executive):
|
||
|
|
- **Status briefing**: summarize agent activity, open issues, recent merges,
|
||
|
|
health alerts, pending vault items
|
||
|
|
- **Issue triage**: discuss issues, help prioritize, answer "what should I
|
||
|
|
focus on?"
|
||
|
|
- **Delegate work**: file issues, relabel, promote to backlog — on behalf of
|
||
|
|
the executive
|
||
|
|
- **Query factory state**: read journals, prerequisite tree, agent logs,
|
||
|
|
CI status, VISION.md progress
|
||
|
|
- **Research**: search the web, fetch pages, gather information
|
||
|
|
- **Memory**: remember decisions, preferences, project context across sessions
|
||
|
|
|
||
|
|
**What the exec does NOT do**:
|
||
|
|
- Write code or open PRs (that's the dev agent's job)
|
||
|
|
- Review PRs (that's the review agent's job)
|
||
|
|
- Make autonomous decisions about the codebase
|
||
|
|
- Approve vault items (the executive does that directly)
|
||
|
|
|
||
|
|
**Session lifecycle**:
|
||
|
|
1. Matrix message arrives tagged `[exec]` (or dispatched to exec)
|
||
|
|
2. Listener checks for active `exec-${PROJECT_NAME}` tmux session
|
||
|
|
3. If no session → spawn via `exec-session.sh` (loads CHARACTER.md, MEMORY.md,
|
||
|
|
factory state into prompt)
|
||
|
|
4. Inject message into tmux session
|
||
|
|
5. Claude responds → response captured and posted back to Matrix thread
|
||
|
|
6. Session stays alive for `EXEC_SESSION_TTL` (default: 1h idle timeout)
|
||
|
|
7. On session end → Claude updates MEMORY.md, session logged to journal
|
||
|
|
|
||
|
|
**Environment variables consumed**:
|
||
|
|
- `FORGE_TOKEN`, `FORGE_REPO`, `FORGE_API`, `PROJECT_NAME`, `PROJECT_REPO_ROOT`
|
||
|
|
- `PRIMARY_BRANCH`
|
||
|
|
- `MATRIX_TOKEN`, `MATRIX_ROOM_ID`, `MATRIX_HOMESERVER` — Required (exec is Matrix-native)
|
||
|
|
- `EXEC_SESSION_TTL` — Idle timeout in seconds (default: 3600)
|
||
|
|
- `EXEC_CHARACTER` — Override character file path (default: exec/CHARACTER.md)
|