@askexenow/exe-os 0.8.33 → 0.8.37
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/dist/bin/backfill-conversations.js +341 -349
- package/dist/bin/backfill-responses.js +81 -13
- package/dist/bin/backfill-vectors.js +72 -12
- package/dist/bin/cleanup-stale-review-tasks.js +63 -3
- package/dist/bin/cli.js +1737 -1117
- package/dist/bin/exe-assign.js +89 -19
- package/dist/bin/exe-boot.js +951 -101
- package/dist/bin/exe-call.js +61 -2
- package/dist/bin/exe-dispatch.js +61 -13
- package/dist/bin/exe-doctor.js +63 -3
- package/dist/bin/exe-export-behaviors.js +71 -3
- package/dist/bin/exe-forget.js +69 -4
- package/dist/bin/exe-gateway.js +178 -45
- package/dist/bin/exe-heartbeat.js +79 -14
- package/dist/bin/exe-kill.js +71 -3
- package/dist/bin/exe-launch-agent.js +148 -14
- package/dist/bin/exe-link.js +1437 -0
- package/dist/bin/exe-new-employee.js +98 -13
- package/dist/bin/exe-pending-messages.js +74 -8
- package/dist/bin/exe-pending-notifications.js +63 -3
- package/dist/bin/exe-pending-reviews.js +77 -11
- package/dist/bin/exe-rename.js +1287 -0
- package/dist/bin/exe-review.js +73 -5
- package/dist/bin/exe-search.js +88 -14
- package/dist/bin/exe-session-cleanup.js +102 -28
- package/dist/bin/exe-status.js +64 -4
- package/dist/bin/exe-team.js +64 -4
- package/dist/bin/git-sweep.js +80 -5
- package/dist/bin/graph-backfill.js +71 -3
- package/dist/bin/graph-export.js +71 -3
- package/dist/bin/install.js +38 -8
- package/dist/bin/scan-tasks.js +80 -5
- package/dist/bin/setup.js +128 -10
- package/dist/bin/shard-migrate.js +71 -3
- package/dist/bin/wiki-sync.js +71 -3
- package/dist/gateway/index.js +179 -46
- package/dist/hooks/bug-report-worker.js +254 -28
- package/dist/hooks/commit-complete.js +80 -5
- package/dist/hooks/error-recall.js +89 -15
- package/dist/hooks/exe-heartbeat-hook.js +1 -1
- package/dist/hooks/ingest-worker.js +185 -51
- package/dist/hooks/ingest.js +1 -1
- package/dist/hooks/instructions-loaded.js +81 -6
- package/dist/hooks/notification.js +81 -6
- package/dist/hooks/post-compact.js +81 -6
- package/dist/hooks/pre-compact.js +81 -6
- package/dist/hooks/pre-tool-use.js +423 -196
- package/dist/hooks/prompt-ingest-worker.js +91 -23
- package/dist/hooks/prompt-submit.js +159 -45
- package/dist/hooks/response-ingest-worker.js +96 -23
- package/dist/hooks/session-end.js +81 -6
- package/dist/hooks/session-start.js +89 -15
- package/dist/hooks/stop.js +81 -6
- package/dist/hooks/subagent-stop.js +81 -6
- package/dist/hooks/summary-worker.js +807 -55
- package/dist/index.js +198 -60
- package/dist/lib/cloud-sync.js +703 -18
- package/dist/lib/consolidation.js +4 -4
- package/dist/lib/database.js +64 -2
- package/dist/lib/device-registry.js +70 -3
- package/dist/lib/employee-templates.js +26 -0
- package/dist/lib/employees.js +34 -1
- package/dist/lib/exe-daemon.js +207 -74
- package/dist/lib/hybrid-search.js +88 -14
- package/dist/lib/identity-templates.js +51 -0
- package/dist/lib/identity.js +3 -3
- package/dist/lib/messaging.js +65 -17
- package/dist/lib/reminders.js +3 -3
- package/dist/lib/schedules.js +63 -3
- package/dist/lib/skill-learning.js +3 -3
- package/dist/lib/status-brief.js +63 -5
- package/dist/lib/store.js +73 -4
- package/dist/lib/task-router.js +4 -2
- package/dist/lib/tasks.js +95 -28
- package/dist/lib/tmux-routing.js +92 -23
- package/dist/mcp/server.js +800 -74
- package/dist/mcp/tools/complete-reminder.js +3 -3
- package/dist/mcp/tools/create-reminder.js +3 -3
- package/dist/mcp/tools/create-task.js +198 -31
- package/dist/mcp/tools/deactivate-behavior.js +4 -4
- package/dist/mcp/tools/list-reminders.js +3 -3
- package/dist/mcp/tools/list-tasks.js +19 -9
- package/dist/mcp/tools/send-message.js +69 -21
- package/dist/mcp/tools/update-task.js +28 -18
- package/dist/runtime/index.js +166 -28
- package/dist/tui/App.js +193 -40
- package/package.json +7 -3
- package/src/commands/exe/afk.md +116 -0
- package/src/commands/exe/rename.md +12 -0
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Enter AFK mode — autonomously process reviews, dispatch work, and monitor employees on a timer"
|
|
3
|
+
allowed-tools: Bash, Read, Glob, Grep, mcp__exe-mem__list_tasks, mcp__exe-mem__get_task, mcp__exe-mem__close_task, mcp__exe-mem__create_task, mcp__exe-mem__update_task, mcp__exe-mem__store_memory, mcp__exe-mem__recall_my_memory, mcp__exe-mem__ask_team_memory, mcp__exe-mem__send_message, mcp__exe-mem__store_behavior, mcp__exe-mem__get_identity
|
|
4
|
+
argument-hint: "[stop | interval-minutes]"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# AFK Mode — Autonomous COO Operations
|
|
8
|
+
|
|
9
|
+
The founder is stepping away. You (exe) now operate autonomously.
|
|
10
|
+
|
|
11
|
+
## If argument is "stop"
|
|
12
|
+
|
|
13
|
+
Kill the background AFK loop and summarize:
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
# Kill the AFK background loop
|
|
17
|
+
AFK_PID=$(cat ~/.exe-os/afk-loop.pid 2>/dev/null)
|
|
18
|
+
if [ -n "$AFK_PID" ]; then
|
|
19
|
+
kill "$AFK_PID" 2>/dev/null
|
|
20
|
+
rm -f ~/.exe-os/afk-loop.pid
|
|
21
|
+
echo "AFK loop stopped (PID $AFK_PID)"
|
|
22
|
+
else
|
|
23
|
+
echo "No active AFK loop found"
|
|
24
|
+
fi
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Then read the AFK log and summarize what happened:
|
|
28
|
+
```bash
|
|
29
|
+
cat ~/.exe-os/afk-log.txt 2>/dev/null || echo "No AFK log found"
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Print: "AFK mode ended. Here's what happened while you were away:" then summarize all actions from the log. Clean up the log file.
|
|
33
|
+
|
|
34
|
+
## Otherwise, start AFK mode
|
|
35
|
+
|
|
36
|
+
Default interval: 5 minutes. Override with argument (e.g., `/exe-afk 10` = every 10 min).
|
|
37
|
+
|
|
38
|
+
### Step 1: Determine the exe tmux session name
|
|
39
|
+
```bash
|
|
40
|
+
tmux display-message -p '#{session_name}' 2>/dev/null
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### Step 2: Start the background ticker
|
|
44
|
+
|
|
45
|
+
This launches a background bash loop that sends review prompts into YOUR tmux session on the interval. Each send triggers a fresh Claude turn — you'll process reviews as if the founder typed the command.
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
INTERVAL_SECONDS=$((${INTERVAL_MINUTES:-5} * 60))
|
|
49
|
+
EXE_SESSION="${SESSION_NAME}"
|
|
50
|
+
|
|
51
|
+
# Clean up any existing loop
|
|
52
|
+
OLD_PID=$(cat ~/.exe-os/afk-loop.pid 2>/dev/null)
|
|
53
|
+
[ -n "$OLD_PID" ] && kill "$OLD_PID" 2>/dev/null
|
|
54
|
+
|
|
55
|
+
# Start the AFK ticker as a background process
|
|
56
|
+
nohup bash -c "
|
|
57
|
+
echo \"AFK mode started at \$(date -Iseconds) — interval ${INTERVAL_SECONDS}s\" >> ~/.exe-os/afk-log.txt
|
|
58
|
+
while true; do
|
|
59
|
+
sleep ${INTERVAL_SECONDS}
|
|
60
|
+
# Send the review command into exe's tmux session
|
|
61
|
+
tmux send-keys -t '${EXE_SESSION}' '/exe-review' Enter 2>/dev/null
|
|
62
|
+
echo \"AFK tick at \$(date -Iseconds) — sent /exe-review to ${EXE_SESSION}\" >> ~/.exe-os/afk-log.txt
|
|
63
|
+
done
|
|
64
|
+
" > /dev/null 2>&1 &
|
|
65
|
+
|
|
66
|
+
# Save PID for stop command
|
|
67
|
+
echo $! > ~/.exe-os/afk-loop.pid
|
|
68
|
+
echo "AFK loop started — PID $!, interval ${INTERVAL_SECONDS}s, target session: ${EXE_SESSION}"
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### Step 3: Confirm to founder
|
|
72
|
+
|
|
73
|
+
Print:
|
|
74
|
+
```
|
|
75
|
+
🤖 AFK MODE ACTIVE — checking every {N}m
|
|
76
|
+
Background loop PID: {PID}
|
|
77
|
+
Target session: {SESSION}
|
|
78
|
+
|
|
79
|
+
I'll automatically process reviews every {N} minutes.
|
|
80
|
+
Each tick sends /exe-review into this session — I'll handle it like a normal prompt.
|
|
81
|
+
Say /exe-afk stop when you return.
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
### Step 4: Do an immediate first tick
|
|
85
|
+
|
|
86
|
+
Don't wait for the first interval — process reviews RIGHT NOW before the founder leaves:
|
|
87
|
+
|
|
88
|
+
1. Run: `node "$(npm root -g)/exe-os/dist/bin/exe-pending-reviews.js" 2>/dev/null`
|
|
89
|
+
2. If reviews pending: process them (get_task → verify → close_task or reject)
|
|
90
|
+
3. Check blocked tasks: `list_tasks status=blocked`
|
|
91
|
+
4. Check idle employees: `tmux capture-pane` on active sessions
|
|
92
|
+
|
|
93
|
+
## What /exe-review does when triggered by AFK tick
|
|
94
|
+
|
|
95
|
+
Each time the background loop sends `/exe-review` into the session, you (exe) will:
|
|
96
|
+
|
|
97
|
+
1. **Check pending reviews** — process each one:
|
|
98
|
+
- Pull task with `get_task`
|
|
99
|
+
- Read deliverable (exe/output/, git log, worktree branches)
|
|
100
|
+
- Verify: tests pass? Output exists? Requirements met?
|
|
101
|
+
- PASS → `close_task` with result summary
|
|
102
|
+
- FAIL → `update_task` back to open with failure reason
|
|
103
|
+
- UNCERTAIN → skip, log for founder
|
|
104
|
+
|
|
105
|
+
2. **Check stuck employees** — tmux capture-pane on active sessions
|
|
106
|
+
3. **Check blocked tasks** — anything blocked >24h gets flagged
|
|
107
|
+
4. **Dispatch next work** — idle employees with open tasks get assigned
|
|
108
|
+
|
|
109
|
+
## Rules for autonomous operation
|
|
110
|
+
- NEVER make architectural decisions — those wait for founder
|
|
111
|
+
- NEVER modify code directly — dispatch to employees
|
|
112
|
+
- NEVER approve work you can't verify (no tests = no approval)
|
|
113
|
+
- DO process routine reviews (tests pass, output exists, requirements met)
|
|
114
|
+
- DO dispatch queued work to idle employees
|
|
115
|
+
- DO flag anything ambiguous for founder review
|
|
116
|
+
- If you hit context capacity (>80%), run `/exe-afk stop` and summarize
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Rename an employee across all systems (roster, identity, agent file, symlinks, DB)
|
|
3
|
+
allowed-tools: Bash
|
|
4
|
+
argument-hint: <oldName> <newName>
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Atomically rename an employee. Updates roster, identity file, agent file, bin symlinks, and all database references.
|
|
8
|
+
|
|
9
|
+
Run this command:
|
|
10
|
+
```bash
|
|
11
|
+
node "$(npm root -g)/@askexenow/exe-os/dist/bin/exe-rename.js" $ARGUMENTS
|
|
12
|
+
```
|