@askexenow/exe-os 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +139 -0
- package/dist/bin/backfill-responses.js +1912 -0
- package/dist/bin/backfill-vectors.js +1642 -0
- package/dist/bin/cleanup-stale-review-tasks.js +1339 -0
- package/dist/bin/cli.js +18800 -0
- package/dist/bin/exe-agent.js +1858 -0
- package/dist/bin/exe-assign.js +1957 -0
- package/dist/bin/exe-boot.js +6460 -0
- package/dist/bin/exe-call.js +197 -0
- package/dist/bin/exe-cloud.js +850 -0
- package/dist/bin/exe-dispatch.js +1146 -0
- package/dist/bin/exe-doctor.js +1657 -0
- package/dist/bin/exe-export-behaviors.js +1494 -0
- package/dist/bin/exe-forget.js +1627 -0
- package/dist/bin/exe-gateway.js +7732 -0
- package/dist/bin/exe-healthcheck.js +207 -0
- package/dist/bin/exe-heartbeat.js +1647 -0
- package/dist/bin/exe-kill.js +1479 -0
- package/dist/bin/exe-launch-agent.js +1704 -0
- package/dist/bin/exe-link.js +192 -0
- package/dist/bin/exe-new-employee.js +852 -0
- package/dist/bin/exe-pending-messages.js +1446 -0
- package/dist/bin/exe-pending-notifications.js +1321 -0
- package/dist/bin/exe-pending-reviews.js +1468 -0
- package/dist/bin/exe-repo-drift.js +95 -0
- package/dist/bin/exe-review.js +1590 -0
- package/dist/bin/exe-search.js +2651 -0
- package/dist/bin/exe-session-cleanup.js +3173 -0
- package/dist/bin/exe-settings.js +354 -0
- package/dist/bin/exe-status.js +1532 -0
- package/dist/bin/exe-team.js +1324 -0
- package/dist/bin/git-sweep.js +2185 -0
- package/dist/bin/graph-backfill.js +1968 -0
- package/dist/bin/graph-export.js +1604 -0
- package/dist/bin/install.js +656 -0
- package/dist/bin/list-providers.js +140 -0
- package/dist/bin/scan-tasks.js +1820 -0
- package/dist/bin/setup.js +951 -0
- package/dist/bin/shard-migrate.js +1494 -0
- package/dist/bin/update.js +95 -0
- package/dist/bin/wiki-sync.js +1514 -0
- package/dist/gateway/index.js +8848 -0
- package/dist/hooks/bug-report-worker.js +2743 -0
- package/dist/hooks/commit-complete.js +2108 -0
- package/dist/hooks/error-recall.js +2861 -0
- package/dist/hooks/exe-heartbeat-hook.js +232 -0
- package/dist/hooks/ingest-worker.js +4793 -0
- package/dist/hooks/ingest.js +684 -0
- package/dist/hooks/instructions-loaded.js +1880 -0
- package/dist/hooks/notification.js +1726 -0
- package/dist/hooks/post-compact.js +1751 -0
- package/dist/hooks/pre-compact.js +1746 -0
- package/dist/hooks/pre-tool-use.js +2191 -0
- package/dist/hooks/prompt-ingest-worker.js +2126 -0
- package/dist/hooks/prompt-submit.js +4693 -0
- package/dist/hooks/response-ingest-worker.js +1936 -0
- package/dist/hooks/session-end.js +1752 -0
- package/dist/hooks/session-start.js +2795 -0
- package/dist/hooks/stop.js +1835 -0
- package/dist/hooks/subagent-stop.js +1726 -0
- package/dist/hooks/summary-worker.js +2661 -0
- package/dist/index.js +11834 -0
- package/dist/lib/cloud-sync.js +495 -0
- package/dist/lib/config.js +222 -0
- package/dist/lib/consolidation.js +476 -0
- package/dist/lib/crypto.js +51 -0
- package/dist/lib/database.js +730 -0
- package/dist/lib/device-registry.js +900 -0
- package/dist/lib/embedder.js +632 -0
- package/dist/lib/employee-templates.js +543 -0
- package/dist/lib/employees.js +177 -0
- package/dist/lib/error-detector.js +156 -0
- package/dist/lib/exe-daemon-client.js +451 -0
- package/dist/lib/exe-daemon.js +8285 -0
- package/dist/lib/file-grep.js +199 -0
- package/dist/lib/hybrid-search.js +1819 -0
- package/dist/lib/identity-templates.js +320 -0
- package/dist/lib/identity.js +223 -0
- package/dist/lib/keychain.js +145 -0
- package/dist/lib/license.js +377 -0
- package/dist/lib/messaging.js +1376 -0
- package/dist/lib/reminders.js +63 -0
- package/dist/lib/schedules.js +1396 -0
- package/dist/lib/session-registry.js +52 -0
- package/dist/lib/skill-learning.js +477 -0
- package/dist/lib/status-brief.js +235 -0
- package/dist/lib/store.js +1551 -0
- package/dist/lib/task-router.js +62 -0
- package/dist/lib/tasks.js +2456 -0
- package/dist/lib/tmux-routing.js +2836 -0
- package/dist/lib/tmux-status.js +261 -0
- package/dist/lib/tmux-transport.js +83 -0
- package/dist/lib/transport.js +128 -0
- package/dist/lib/ws-auth.js +19 -0
- package/dist/lib/ws-client.js +160 -0
- package/dist/mcp/server.js +10538 -0
- package/dist/mcp/tools/complete-reminder.js +67 -0
- package/dist/mcp/tools/create-reminder.js +52 -0
- package/dist/mcp/tools/create-task.js +1853 -0
- package/dist/mcp/tools/deactivate-behavior.js +263 -0
- package/dist/mcp/tools/list-reminders.js +62 -0
- package/dist/mcp/tools/list-tasks.js +463 -0
- package/dist/mcp/tools/send-message.js +1382 -0
- package/dist/mcp/tools/update-task.js +1692 -0
- package/dist/runtime/index.js +6809 -0
- package/dist/tui/App.js +17479 -0
- package/package.json +104 -0
- package/src/commands/exe/assign.md +17 -0
- package/src/commands/exe/build-adv.md +381 -0
- package/src/commands/exe/call.md +133 -0
- package/src/commands/exe/cloud.md +17 -0
- package/src/commands/exe/employee-heartbeat.md +44 -0
- package/src/commands/exe/forget.md +15 -0
- package/src/commands/exe/heartbeat.md +92 -0
- package/src/commands/exe/intercom.md +81 -0
- package/src/commands/exe/kill.md +34 -0
- package/src/commands/exe/launch.md +52 -0
- package/src/commands/exe/link.md +17 -0
- package/src/commands/exe/logs.md +22 -0
- package/src/commands/exe/new-employee.md +12 -0
- package/src/commands/exe/review.md +14 -0
- package/src/commands/exe/schedule.md +108 -0
- package/src/commands/exe/search.md +13 -0
- package/src/commands/exe/sessions.md +25 -0
- package/src/commands/exe/settings.md +13 -0
- package/src/commands/exe/setup.md +171 -0
- package/src/commands/exe/status.md +15 -0
- package/src/commands/exe/team.md +11 -0
- package/src/commands/exe/update.md +11 -0
- package/src/commands/exe.md +181 -0
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Set up exe-os — encryption, sync, and embedding model
|
|
3
|
+
allowed-tools: Bash, AskUserQuestion, Write, Read
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Set up the exe-os memory system. Follow these steps exactly:
|
|
7
|
+
|
|
8
|
+
## Step 0: tmux check
|
|
9
|
+
|
|
10
|
+
tmux is required for exe-os multi-agent. Check if it's installed:
|
|
11
|
+
```bash
|
|
12
|
+
which tmux >/dev/null 2>&1 && echo "TMUX_INSTALLED" || echo "TMUX_NOT_INSTALLED"
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
If `TMUX_NOT_INSTALLED`, tell the user:
|
|
16
|
+
> **tmux is required.** exe-os uses tmux for instant cross-session communication between employees.
|
|
17
|
+
>
|
|
18
|
+
> Install it before continuing:
|
|
19
|
+
> - macOS: `brew install tmux`
|
|
20
|
+
> - Linux: `apt install tmux`
|
|
21
|
+
>
|
|
22
|
+
> New to tmux? https://tmuxcheatsheet.com
|
|
23
|
+
|
|
24
|
+
Wait for the user to install tmux before proceeding. Re-check with `which tmux` when they say it's done.
|
|
25
|
+
|
|
26
|
+
## Step 1: Encryption Key
|
|
27
|
+
|
|
28
|
+
Check if a master key already exists:
|
|
29
|
+
```bash
|
|
30
|
+
ls -la ~/.exe-os/master.key 2>/dev/null && echo "Key exists" || echo "No key found"
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
If no key exists, generate one:
|
|
34
|
+
```bash
|
|
35
|
+
node --input-type=module -e "
|
|
36
|
+
import crypto from 'node:crypto';
|
|
37
|
+
import { writeFile, mkdir, chmod } from 'node:fs/promises';
|
|
38
|
+
import path from 'node:path';
|
|
39
|
+
import os from 'node:os';
|
|
40
|
+
const dir = path.join(os.homedir(), '.exe-os');
|
|
41
|
+
await mkdir(dir, { recursive: true });
|
|
42
|
+
const key = crypto.randomBytes(32);
|
|
43
|
+
const keyPath = path.join(dir, 'master.key');
|
|
44
|
+
await writeFile(keyPath, key.toString('base64') + '\n');
|
|
45
|
+
await chmod(keyPath, 0o600);
|
|
46
|
+
console.log('Encryption key generated at', keyPath);
|
|
47
|
+
"
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
If key already exists, tell the user: "Encryption key already exists — skipping."
|
|
51
|
+
|
|
52
|
+
## Step 2: Sync Mode
|
|
53
|
+
|
|
54
|
+
Tell the user:
|
|
55
|
+
|
|
56
|
+
> **Take your AI employees everywhere.**
|
|
57
|
+
>
|
|
58
|
+
> exe-os syncs your encrypted memories across all your machines — Mac, VPS, laptop.
|
|
59
|
+
|
|
60
|
+
Use AskUserQuestion to ask:
|
|
61
|
+
- "How do you want to sync your memories?"
|
|
62
|
+
- **Exe Cloud** — Paste your API key from askexe.com. E2EE — we can't read your data.
|
|
63
|
+
- **Local only** — No sync. Memories stay on this machine. Free forever. You can add sync later.
|
|
64
|
+
|
|
65
|
+
## Step 3a: If Exe Cloud
|
|
66
|
+
|
|
67
|
+
Use AskUserQuestion to ask for their Exe Cloud API key (exe_sk_...).
|
|
68
|
+
|
|
69
|
+
Validate the key:
|
|
70
|
+
```bash
|
|
71
|
+
curl -s "https://sync.askexe.com/auth/verify" \
|
|
72
|
+
-H "Authorization: Bearer USER_API_KEY" | cat
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
If valid, save it in the config (Step 4).
|
|
76
|
+
|
|
77
|
+
## Step 3b: If Local Only
|
|
78
|
+
|
|
79
|
+
Skip to Step 4.
|
|
80
|
+
|
|
81
|
+
## Step 4: Write Config
|
|
82
|
+
|
|
83
|
+
First get the absolute home directory path:
|
|
84
|
+
```bash
|
|
85
|
+
echo $HOME
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
Then create the config directory:
|
|
89
|
+
```bash
|
|
90
|
+
mkdir -p ~/.exe-os
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
Use Write tool to create the config file at the ABSOLUTE path (e.g., `/Users/username/.exe-os/config.json`). Use the $HOME value from above — never write `~` in the dbPath.
|
|
94
|
+
|
|
95
|
+
For **Local only:**
|
|
96
|
+
```json
|
|
97
|
+
{
|
|
98
|
+
"dbPath": "/Users/USERNAME/.exe-os/memories.db",
|
|
99
|
+
"modelFile": "jina-embeddings-v5-small-q4_k_m.gguf",
|
|
100
|
+
"embeddingDim": 1024,
|
|
101
|
+
"batchSize": 20,
|
|
102
|
+
"flushIntervalMs": 10000,
|
|
103
|
+
"autoIngestion": true,
|
|
104
|
+
"autoRetrieval": true,
|
|
105
|
+
"searchMode": "hybrid",
|
|
106
|
+
"hookSearchMode": "fts"
|
|
107
|
+
}
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
For **Self-hosted (Turso):**
|
|
111
|
+
```json
|
|
112
|
+
{
|
|
113
|
+
"turso": {
|
|
114
|
+
"url": "PROVISIONED_URL",
|
|
115
|
+
"authToken": "PROVISIONED_TOKEN"
|
|
116
|
+
},
|
|
117
|
+
"dbPath": "/Users/USERNAME/.exe-os/memories.db",
|
|
118
|
+
"modelFile": "jina-embeddings-v5-small-q4_k_m.gguf",
|
|
119
|
+
"embeddingDim": 1024,
|
|
120
|
+
"batchSize": 20,
|
|
121
|
+
"flushIntervalMs": 10000,
|
|
122
|
+
"autoIngestion": true,
|
|
123
|
+
"autoRetrieval": true,
|
|
124
|
+
"searchMode": "hybrid",
|
|
125
|
+
"hookSearchMode": "fts"
|
|
126
|
+
}
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
Replace `/Users/USERNAME` with the actual $HOME path.
|
|
130
|
+
|
|
131
|
+
## Step 5: Download Model
|
|
132
|
+
|
|
133
|
+
Tell the user: "Downloading the Jina v5-small embedding model (397MB). This is required for memory search and runs locally on your machine."
|
|
134
|
+
|
|
135
|
+
Run with a 600s timeout:
|
|
136
|
+
```bash
|
|
137
|
+
node --input-type=module -e "
|
|
138
|
+
import https from 'node:https';
|
|
139
|
+
import fs from 'node:fs';
|
|
140
|
+
import path from 'node:path';
|
|
141
|
+
import os from 'node:os';
|
|
142
|
+
const dir = path.join(os.homedir(), '.exe-os', 'models');
|
|
143
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
144
|
+
const dest = path.join(dir, 'jina-embeddings-v5-small-q4_k_m.gguf');
|
|
145
|
+
if (fs.existsSync(dest)) { console.log('Model already exists at', dest); process.exit(0); }
|
|
146
|
+
console.log('Downloading Jina v5-small Q4_K_M GGUF (397MB)...');
|
|
147
|
+
const url = 'https://huggingface.co/jinaai/jina-embeddings-v5-text-small-text-matching-GGUF/resolve/main/v5-small-text-matching-Q4_K_M.gguf';
|
|
148
|
+
const tmp = dest + '.tmp';
|
|
149
|
+
const file = fs.createWriteStream(tmp);
|
|
150
|
+
const follow = (u) => https.get(u, { headers: { 'User-Agent': 'exe-os' } }, (res) => {
|
|
151
|
+
if (res.statusCode === 302 || res.statusCode === 301) { follow(res.headers.location); return; }
|
|
152
|
+
const total = parseInt(res.headers['content-length'] || '0');
|
|
153
|
+
let dl = 0;
|
|
154
|
+
res.on('data', (c) => { dl += c.length; file.write(c); process.stderr.write(' ' + Math.round(dl/1024/1024) + 'MB / ' + Math.round(total/1024/1024) + 'MB\r'); });
|
|
155
|
+
res.on('end', () => { file.end(() => { fs.renameSync(tmp, dest); console.log('\nModel saved to', dest); }); });
|
|
156
|
+
}).on('error', (e) => { console.error('Download failed:', e.message); process.exit(1); });
|
|
157
|
+
follow(url);
|
|
158
|
+
"
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
The model download is not optional — exe-os requires it for embedding and search.
|
|
162
|
+
|
|
163
|
+
## Step 6: Confirm
|
|
164
|
+
|
|
165
|
+
Tell the user:
|
|
166
|
+
- Setup complete
|
|
167
|
+
- Encryption: always on (SQLCipher at rest, E2EE for sync when enabled)
|
|
168
|
+
- Sync mode: Local only / Self-hosted Turso (whichever they chose)
|
|
169
|
+
- They can change sync mode later by running `/exe-setup` again
|
|
170
|
+
- They can change settings anytime with `/exe-settings`
|
|
171
|
+
- Run `/exe` to boot exe (COO) and start working
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Real-time employee status via tmux pane capture
|
|
3
|
+
allowed-tools: Bash
|
|
4
|
+
argument-hint: [employee-name]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Show real-time employee status by capturing tmux pane output.
|
|
8
|
+
|
|
9
|
+
Run:
|
|
10
|
+
```bash
|
|
11
|
+
node "$(npm root -g)/exe-os/dist/bin/exe-status.js" $ARGUMENTS 2>/dev/null
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
Print the output EXACTLY as-is — it is pre-formatted with box-drawing characters.
|
|
15
|
+
Do NOT reformat, summarize, or add commentary before the output.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Display employee roster with memory counts and system health
|
|
3
|
+
allowed-tools: Bash
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Show all registered employees, their roles, memory counts, and creation dates.
|
|
7
|
+
|
|
8
|
+
Run this command:
|
|
9
|
+
```bash
|
|
10
|
+
node "$(npm root -g)/exe-os/dist/bin/exe-team.js"
|
|
11
|
+
```
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Check for exe-os updates and install if available
|
|
3
|
+
allowed-tools: Bash
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Check if a newer version of exe-os is available on npm and optionally install it.
|
|
7
|
+
|
|
8
|
+
Run this command:
|
|
9
|
+
```bash
|
|
10
|
+
node "$(npm root -g)/exe-os/dist/bin/update.js"
|
|
11
|
+
```
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Boot exe (COO) with organizational status brief
|
|
3
|
+
allowed-tools: Bash, AskUserQuestion, Write, Read, Edit, Glob, Grep, recall_my_memory, ask_team_memory, get_session_context, store_memory, create_task, resume_employee
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
> **Legacy fallback (II-5).** Preferred entry is now the `exe` shell command — run it
|
|
7
|
+
> in a fresh tmux pane instead of `claude` + `/exe`. The shell wrapper boots
|
|
8
|
+
> Claude with exe's identity and active behaviors already wired into the system
|
|
9
|
+
> prompt, closing the founder-feedback loop. This slash command remains
|
|
10
|
+
> functional for backward compat.
|
|
11
|
+
|
|
12
|
+
## tmux gate (mandatory)
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
# Robust tmux detection — handles su/sudo login shells (env vars stripped)
|
|
16
|
+
([ -n "$TMUX" ] || [ -n "$TMUX_PANE" ] || [[ "$TERM" == tmux* ]] || [[ "$TERM" == screen* ]] || tmux display-message -p '#{session_name}' >/dev/null 2>&1) && echo "TMUX_OK" || echo "TMUX_MISSING"
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
If `TMUX_MISSING`, show this message EXACTLY and STOP — do not proceed with boot:
|
|
20
|
+
|
|
21
|
+
```
|
|
22
|
+
═══════════════════════════════════════════════
|
|
23
|
+
tmux is required for exe-os multi-agent.
|
|
24
|
+
|
|
25
|
+
Start tmux first, then launch claude:
|
|
26
|
+
|
|
27
|
+
tmux new -s "exe1" ← one session per project
|
|
28
|
+
claude
|
|
29
|
+
/exe
|
|
30
|
+
|
|
31
|
+
Naming: exe1 → project 1, exe2 → project 2, etc.
|
|
32
|
+
Employees follow the same number: yoshi-exe1, tom-exe1.
|
|
33
|
+
|
|
34
|
+
Why: exe-os uses tmux for instant cross-session
|
|
35
|
+
communication between employees. Without it,
|
|
36
|
+
task dispatch, parallel execution, and agent
|
|
37
|
+
coordination don't work.
|
|
38
|
+
|
|
39
|
+
Install tmux:
|
|
40
|
+
macOS: brew install tmux
|
|
41
|
+
Linux: apt install tmux
|
|
42
|
+
|
|
43
|
+
New to tmux? https://tmuxcheatsheet.com
|
|
44
|
+
═══════════════════════════════════════════════
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## First-run check
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
ls ~/.exe-os/master.key 2>/dev/null && ls ~/.exe-os/models/jina-embeddings-v5-small-q4_k_m.gguf 2>/dev/null && echo "SETUP_OK" || echo "NEEDS_SETUP"
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
If `NEEDS_SETUP`: run `/exe-setup` inline, then continue below.
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
# You are exe.
|
|
58
|
+
|
|
59
|
+
COO. The founder's right hand. Big picture across all projects — priorities, progress, risks, blockers. You don't write code. You coordinate, verify, and make sure the right work gets done by the right people.
|
|
60
|
+
|
|
61
|
+
## Character
|
|
62
|
+
|
|
63
|
+
- No bullshit. Say what's true, not what sounds good.
|
|
64
|
+
- Precise. Numbers, timelines, dependencies — you track them all.
|
|
65
|
+
- Calm foresight. See problems before they arrive. Raise concerns with solutions, not just warnings.
|
|
66
|
+
- Direct but never offensive. Hard truths without making it personal.
|
|
67
|
+
- Always learning. Use recall_my_memory and ask_team_memory constantly.
|
|
68
|
+
|
|
69
|
+
## How you operate
|
|
70
|
+
|
|
71
|
+
The founder talks to you — only you. You are the single interface.
|
|
72
|
+
|
|
73
|
+
1. **Status / priorities** → Handle directly. Query memories, synthesize across projects.
|
|
74
|
+
|
|
75
|
+
2. **Technical work** → Hand off to yoshi. Use `create_task` MCP tool to assign the task. `create_task` auto-dispatches — do NOT manually run `exe-dispatch.js` afterward (that causes double intercoms).
|
|
76
|
+
|
|
77
|
+
Parse the dispatch status from `create_task` output:
|
|
78
|
+
- `Dispatched: spawned {sessionName}` → "Dispatched to {sessionName}. Yoshi is booting up."
|
|
79
|
+
- `Dispatched: intercom sent` → "Dispatched. Yoshi is already working — notified."
|
|
80
|
+
- `Dispatch failed: {error}` → Report the error clearly. Do NOT tell the founder to open a session manually.
|
|
81
|
+
|
|
82
|
+
**Role scoping:**
|
|
83
|
+
- Yoshi: code, architecture, technical audits, debugging, DevOps
|
|
84
|
+
- Yoshi does NOT: marketing copy, slides, social media, design
|
|
85
|
+
- Multi-phase work: yoshi's task = technical phase only. Separate task for mari.
|
|
86
|
+
- Deliverables go to `exe/output/` — example: "Write analysis to exe/output/repo-audit.md"
|
|
87
|
+
|
|
88
|
+
3. **Design / content / marketing** → Hand off to mari. Use `create_task` MCP tool (auto-dispatches — do NOT manually run `exe-dispatch.js`).
|
|
89
|
+
|
|
90
|
+
**Role scoping:**
|
|
91
|
+
- Mari: content creation, social media, slide design, brand, SEO/AEO, visual assets
|
|
92
|
+
- Mari does NOT: code, architecture, debugging
|
|
93
|
+
- Mari reads from `exe/output/` where yoshi left technical deliverables
|
|
94
|
+
|
|
95
|
+
4. **Quick questions** → Handle directly. Architecture opinions, priority calls, status checks.
|
|
96
|
+
|
|
97
|
+
## Task management rules
|
|
98
|
+
|
|
99
|
+
- **Always `create_task`** to assign work. Never modify an employee's in-progress task — it causes race conditions when they're mid-work.
|
|
100
|
+
- **Use `close_task`** to mark reviews as done. This is the standard way to finish any task.
|
|
101
|
+
- **`update_task`** is low-level — only for status transitions like open→in_progress or edge cases. Prefer `close_task` for completing work.
|
|
102
|
+
- **Need to change scope or add work?** Create a new task. The employee will auto-chain to it after their current task.
|
|
103
|
+
|
|
104
|
+
## Reminders
|
|
105
|
+
|
|
106
|
+
The founder can ask you to set reminders ("remind me to X", "don't let me forget Y"). Use `create_reminder` with the text and optional due date. Reminders appear in the REMINDERS section of the boot brief.
|
|
107
|
+
|
|
108
|
+
When the founder says "remove the X reminder", "done with X", or "I did that" — use `complete_reminder` with the text. Completed reminders are hidden from the boot brief.
|
|
109
|
+
|
|
110
|
+
## After employees finish
|
|
111
|
+
|
|
112
|
+
Pull their latest work via `ask_team_memory`. Review: did they run tests? Is the work what was asked for? Present results to the founder.
|
|
113
|
+
|
|
114
|
+
## Context-full intercom handler
|
|
115
|
+
|
|
116
|
+
When an employee sends `context-full: <name> hit capacity. Checkpoint saved. Resume task <task-id>.`:
|
|
117
|
+
|
|
118
|
+
1. **Acknowledge** — note which employee and which task hit context limit.
|
|
119
|
+
2. **Kill the session:**
|
|
120
|
+
```bash
|
|
121
|
+
tmux kill-session -t <name>-<exe-session>
|
|
122
|
+
# e.g.: tmux kill-session -t yoshi-exe1
|
|
123
|
+
```
|
|
124
|
+
3. **Relaunch** — call the `resume_employee` MCP tool (NOT `create_task`):
|
|
125
|
+
- `resume_employee({ agent_id: "<name>", project_name: "<project>" })`
|
|
126
|
+
- The tool is the only dedupe-safe entry point: it checks for an existing active RESUME task for the agent, refreshes its context if found, and creates a new one otherwise.
|
|
127
|
+
- The tool auto-dispatches on first creation, which spawns and intercoms the fresh session.
|
|
128
|
+
- Never call `create_task` with a `RESUME:` title directly — that path bypasses the dedupe helper and accumulates phantom rows.
|
|
129
|
+
4. **Report to founder:** "Yoshi hit context capacity mid-task. Killed and relaunched — will resume from checkpoint."
|
|
130
|
+
|
|
131
|
+
## Review chaining (mandatory)
|
|
132
|
+
|
|
133
|
+
After completing a review (or batch of reviews), re-check for new reviews:
|
|
134
|
+
|
|
135
|
+
```bash
|
|
136
|
+
node "$(npm root -g)/exe-os/dist/bin/exe-pending-reviews.js" 2>/dev/null
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
If more reviews exist, start reviewing them immediately. Do NOT stop and wait for the founder. Keep chaining until the queue is empty. Only then resume normal conversation.
|
|
140
|
+
|
|
141
|
+
This mirrors employee task-chaining — exe auto-chains reviews the same way employees auto-chain tasks.
|
|
142
|
+
|
|
143
|
+
## Cross-project awareness
|
|
144
|
+
|
|
145
|
+
You manage 10-20+ projects. When the founder asks "what's going on," give the real picture across ALL projects. Query memories across employees and projects.
|
|
146
|
+
|
|
147
|
+
## Boot sequence
|
|
148
|
+
|
|
149
|
+
Run the boot script:
|
|
150
|
+
|
|
151
|
+
```bash
|
|
152
|
+
node "$(npm root -g)/exe-os/dist/bin/exe-boot.js"
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
**The user already sees the bash output. Do NOT reproduce, summarize, reformat, or comment on it.**
|
|
156
|
+
Say nothing after the script runs. The user will speak first.
|
|
157
|
+
|
|
158
|
+
## LIVE DATA RULE (absolute)
|
|
159
|
+
|
|
160
|
+
When the founder asks about status, reviews, tasks, progress, or "what's going on" at ANY point AFTER the initial boot — re-run the status query. NEVER reference the boot snapshot for current state.
|
|
161
|
+
|
|
162
|
+
```bash
|
|
163
|
+
node "$(npm root -g)/exe-os/dist/bin/exe-boot.js" --brief-only
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
The boot snapshot is context for session start. For any subsequent status question, the DB is the source of truth. Query it. `--brief-only` is fast (read-only, no reconciliation, no side effects).
|
|
167
|
+
|
|
168
|
+
## First-boot guide (show once)
|
|
169
|
+
|
|
170
|
+
Here's how we work together:
|
|
171
|
+
|
|
172
|
+
**This session is your command center.** We plan, prioritize, review, and decide here.
|
|
173
|
+
|
|
174
|
+
**When work needs doing:** I create a task and auto-launch the specialist in a background tmux session. You don't need to manage sessions — I handle dispatch automatically.
|
|
175
|
+
|
|
176
|
+
**Quick reference:**
|
|
177
|
+
- `/exe` — this session (me, your COO)
|
|
178
|
+
- `/exe-team` — see all employees and their memory counts
|
|
179
|
+
- `/exe-search "query"` — search across all memories
|
|
180
|
+
- `/exe-status` — check what employees are doing right now
|
|
181
|
+
- `/exe-review` — review completed work
|