@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.
Files changed (89) hide show
  1. package/dist/bin/backfill-conversations.js +341 -349
  2. package/dist/bin/backfill-responses.js +81 -13
  3. package/dist/bin/backfill-vectors.js +72 -12
  4. package/dist/bin/cleanup-stale-review-tasks.js +63 -3
  5. package/dist/bin/cli.js +1737 -1117
  6. package/dist/bin/exe-assign.js +89 -19
  7. package/dist/bin/exe-boot.js +951 -101
  8. package/dist/bin/exe-call.js +61 -2
  9. package/dist/bin/exe-dispatch.js +61 -13
  10. package/dist/bin/exe-doctor.js +63 -3
  11. package/dist/bin/exe-export-behaviors.js +71 -3
  12. package/dist/bin/exe-forget.js +69 -4
  13. package/dist/bin/exe-gateway.js +178 -45
  14. package/dist/bin/exe-heartbeat.js +79 -14
  15. package/dist/bin/exe-kill.js +71 -3
  16. package/dist/bin/exe-launch-agent.js +148 -14
  17. package/dist/bin/exe-link.js +1437 -0
  18. package/dist/bin/exe-new-employee.js +98 -13
  19. package/dist/bin/exe-pending-messages.js +74 -8
  20. package/dist/bin/exe-pending-notifications.js +63 -3
  21. package/dist/bin/exe-pending-reviews.js +77 -11
  22. package/dist/bin/exe-rename.js +1287 -0
  23. package/dist/bin/exe-review.js +73 -5
  24. package/dist/bin/exe-search.js +88 -14
  25. package/dist/bin/exe-session-cleanup.js +102 -28
  26. package/dist/bin/exe-status.js +64 -4
  27. package/dist/bin/exe-team.js +64 -4
  28. package/dist/bin/git-sweep.js +80 -5
  29. package/dist/bin/graph-backfill.js +71 -3
  30. package/dist/bin/graph-export.js +71 -3
  31. package/dist/bin/install.js +38 -8
  32. package/dist/bin/scan-tasks.js +80 -5
  33. package/dist/bin/setup.js +128 -10
  34. package/dist/bin/shard-migrate.js +71 -3
  35. package/dist/bin/wiki-sync.js +71 -3
  36. package/dist/gateway/index.js +179 -46
  37. package/dist/hooks/bug-report-worker.js +254 -28
  38. package/dist/hooks/commit-complete.js +80 -5
  39. package/dist/hooks/error-recall.js +89 -15
  40. package/dist/hooks/exe-heartbeat-hook.js +1 -1
  41. package/dist/hooks/ingest-worker.js +185 -51
  42. package/dist/hooks/ingest.js +1 -1
  43. package/dist/hooks/instructions-loaded.js +81 -6
  44. package/dist/hooks/notification.js +81 -6
  45. package/dist/hooks/post-compact.js +81 -6
  46. package/dist/hooks/pre-compact.js +81 -6
  47. package/dist/hooks/pre-tool-use.js +423 -196
  48. package/dist/hooks/prompt-ingest-worker.js +91 -23
  49. package/dist/hooks/prompt-submit.js +159 -45
  50. package/dist/hooks/response-ingest-worker.js +96 -23
  51. package/dist/hooks/session-end.js +81 -6
  52. package/dist/hooks/session-start.js +89 -15
  53. package/dist/hooks/stop.js +81 -6
  54. package/dist/hooks/subagent-stop.js +81 -6
  55. package/dist/hooks/summary-worker.js +807 -55
  56. package/dist/index.js +198 -60
  57. package/dist/lib/cloud-sync.js +703 -18
  58. package/dist/lib/consolidation.js +4 -4
  59. package/dist/lib/database.js +64 -2
  60. package/dist/lib/device-registry.js +70 -3
  61. package/dist/lib/employee-templates.js +26 -0
  62. package/dist/lib/employees.js +34 -1
  63. package/dist/lib/exe-daemon.js +207 -74
  64. package/dist/lib/hybrid-search.js +88 -14
  65. package/dist/lib/identity-templates.js +51 -0
  66. package/dist/lib/identity.js +3 -3
  67. package/dist/lib/messaging.js +65 -17
  68. package/dist/lib/reminders.js +3 -3
  69. package/dist/lib/schedules.js +63 -3
  70. package/dist/lib/skill-learning.js +3 -3
  71. package/dist/lib/status-brief.js +63 -5
  72. package/dist/lib/store.js +73 -4
  73. package/dist/lib/task-router.js +4 -2
  74. package/dist/lib/tasks.js +95 -28
  75. package/dist/lib/tmux-routing.js +92 -23
  76. package/dist/mcp/server.js +800 -74
  77. package/dist/mcp/tools/complete-reminder.js +3 -3
  78. package/dist/mcp/tools/create-reminder.js +3 -3
  79. package/dist/mcp/tools/create-task.js +198 -31
  80. package/dist/mcp/tools/deactivate-behavior.js +4 -4
  81. package/dist/mcp/tools/list-reminders.js +3 -3
  82. package/dist/mcp/tools/list-tasks.js +19 -9
  83. package/dist/mcp/tools/send-message.js +69 -21
  84. package/dist/mcp/tools/update-task.js +28 -18
  85. package/dist/runtime/index.js +166 -28
  86. package/dist/tui/App.js +193 -40
  87. package/package.json +7 -3
  88. package/src/commands/exe/afk.md +116 -0
  89. 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
+ ```