@askexenow/exe-os 0.9.120 → 0.9.121
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/assets/ghostty.conf +83 -0
- package/dist/assets/statusline-command.sh +44 -0
- package/dist/assets/tmux.conf +53 -0
- package/dist/bin/age-ontology-load.js +333 -0
- package/dist/bin/agentic-ontology-backfill.js +5357 -0
- package/dist/bin/agentic-reflection-backfill.js +4763 -0
- package/dist/bin/agentic-semantic-label.js +4890 -0
- package/dist/bin/backfill-conversations.js +5904 -0
- package/dist/bin/backfill-responses.js +5732 -0
- package/dist/bin/backfill-vectors.js +4904 -0
- package/dist/bin/bulk-sync-postgres.js +5382 -0
- package/dist/bin/cc-doctor.js +643 -0
- package/dist/bin/cleanup-stale-review-tasks.js +6910 -0
- package/dist/bin/cli.js +39722 -0
- package/dist/bin/customer-readiness.js +267 -0
- package/dist/bin/exe-agent-config.js +323 -0
- package/dist/bin/exe-agent.js +2556 -0
- package/dist/bin/exe-assign.js +5870 -0
- package/dist/bin/exe-boot.js +13663 -0
- package/dist/bin/exe-call.js +1492 -0
- package/dist/bin/exe-cloud.js +8930 -0
- package/dist/bin/exe-dispatch.js +10859 -0
- package/dist/bin/exe-doctor.js +7559 -0
- package/dist/bin/exe-export-behaviors.js +6150 -0
- package/dist/bin/exe-forget.js +6456 -0
- package/dist/bin/exe-gateway.js +16218 -0
- package/dist/bin/exe-healthcheck.js +607 -0
- package/dist/bin/exe-heartbeat.js +7079 -0
- package/dist/bin/exe-kill.js +6036 -0
- package/dist/bin/exe-launch-agent.js +7177 -0
- package/dist/bin/exe-new-employee.js +3902 -0
- package/dist/bin/exe-pending-messages.js +6861 -0
- package/dist/bin/exe-pending-notifications.js +6941 -0
- package/dist/bin/exe-pending-reviews.js +6947 -0
- package/dist/bin/exe-rename.js +5928 -0
- package/dist/bin/exe-repo-drift.js +95 -0
- package/dist/bin/exe-review.js +6119 -0
- package/dist/bin/exe-search.js +7735 -0
- package/dist/bin/exe-session-cleanup.js +11350 -0
- package/dist/bin/exe-settings.js +861 -0
- package/dist/bin/exe-start-codex.js +6919 -0
- package/dist/bin/exe-start-opencode.js +6765 -0
- package/dist/bin/exe-start.sh +170 -0
- package/dist/bin/exe-status.js +7086 -0
- package/dist/bin/exe-support.js +553 -0
- package/dist/bin/exe-team.js +6012 -0
- package/dist/bin/git-sweep.js +10953 -0
- package/dist/bin/graph-backfill.js +6032 -0
- package/dist/bin/graph-export.js +6163 -0
- package/dist/bin/graph-layer-benchmark.js +117 -0
- package/dist/bin/install.js +2489 -0
- package/dist/bin/intercom-check.js +11604 -0
- package/dist/bin/list-providers.js +142 -0
- package/dist/bin/postgres-agentic-reflection-backfill.js +466 -0
- package/dist/bin/postgres-agentic-semantic-backfill.js +516 -0
- package/dist/bin/pre-build-guard.js +98 -0
- package/dist/bin/pre-publish.js +488 -0
- package/dist/bin/registry-proxy.js +208 -0
- package/dist/bin/scan-tasks.js +11087 -0
- package/dist/bin/setup.js +9504 -0
- package/dist/bin/shard-migrate.js +5281 -0
- package/dist/bin/stack-update.js +1079 -0
- package/dist/bin/update.js +974 -0
- package/dist/gateway/index.js +16622 -0
- package/dist/hooks/bug-report-worker.js +10964 -0
- package/dist/hooks/codex-stop-task-finalizer.js +9274 -0
- package/dist/hooks/commit-complete.js +11008 -0
- package/dist/hooks/error-recall.js +8045 -0
- package/dist/hooks/exe-heartbeat-hook.js +381 -0
- package/dist/hooks/ingest-worker.js +595 -0
- package/dist/hooks/ingest.js +11788 -0
- package/dist/hooks/instructions-loaded.js +6297 -0
- package/dist/hooks/notification.js +6138 -0
- package/dist/hooks/post-compact.js +7136 -0
- package/dist/hooks/post-tool-combined.js +9869 -0
- package/dist/hooks/pre-compact.js +11241 -0
- package/dist/hooks/pre-tool-use.js +7482 -0
- package/dist/hooks/prompt-submit.js +13668 -0
- package/dist/hooks/session-end.js +11691 -0
- package/dist/hooks/session-start.js +9615 -0
- package/dist/hooks/stop.js +7451 -0
- package/dist/hooks/subagent-stop.js +6942 -0
- package/dist/hooks/summary-worker.js +8841 -0
- package/dist/index.js +19397 -0
- package/dist/lib/agent-config.js +237 -0
- package/dist/lib/cloud-sync.js +5433 -0
- package/dist/lib/cloudflare-dns.js +117 -0
- package/dist/lib/config.js +292 -0
- package/dist/lib/consolidation.js +1058 -0
- package/dist/lib/crypto.js +51 -0
- package/dist/lib/database.js +2945 -0
- package/dist/lib/db-daemon-client.js +587 -0
- package/dist/lib/db.js +2945 -0
- package/dist/lib/device-registry.js +3044 -0
- package/dist/lib/embedder.js +828 -0
- package/dist/lib/employee-templates.js +1115 -0
- package/dist/lib/employees.js +522 -0
- package/dist/lib/error-detector.js +156 -0
- package/dist/lib/exe-daemon-client.js +580 -0
- package/dist/lib/exe-daemon.js +20284 -0
- package/dist/lib/file-grep.js +215 -0
- package/dist/lib/hybrid-search.js +7682 -0
- package/dist/lib/identity-templates.js +537 -0
- package/dist/lib/identity.js +316 -0
- package/dist/lib/keychain.js +507 -0
- package/dist/lib/license.js +565 -0
- package/dist/lib/messaging.js +1647 -0
- package/dist/lib/post-tool-memory.js +373 -0
- package/dist/lib/registry-proxy.js +162 -0
- package/dist/lib/reminders.js +236 -0
- package/dist/lib/runtime-table.js +24 -0
- package/dist/lib/schedules.js +4620 -0
- package/dist/lib/session-registry.js +63 -0
- package/dist/lib/session-wrappers.js +131 -0
- package/dist/lib/skill-learning.js +2112 -0
- package/dist/lib/status-brief.js +371 -0
- package/dist/lib/store.js +5609 -0
- package/dist/lib/task-router.js +262 -0
- package/dist/lib/tasks.js +5823 -0
- package/dist/lib/tmux-routing.js +5827 -0
- package/dist/lib/tmux-status.js +261 -0
- package/dist/lib/tmux-transport.js +93 -0
- package/dist/lib/token-spend.js +340 -0
- package/dist/lib/transport.js +138 -0
- package/dist/lib/ws-auth.js +19 -0
- package/dist/lib/ws-client.js +189 -0
- package/dist/mcp/register-tools.js +32438 -0
- package/dist/mcp/server.js +32772 -0
- package/dist/mcp/tools/complete-reminder.js +240 -0
- package/dist/mcp/tools/create-reminder.js +225 -0
- package/dist/mcp/tools/create-task.js +6734 -0
- package/dist/mcp/tools/deactivate-behavior.js +479 -0
- package/dist/mcp/tools/list-reminders.js +235 -0
- package/dist/mcp/tools/list-tasks.js +1575 -0
- package/dist/mcp/tools/send-message.js +1676 -0
- package/dist/mcp/tools/update-task.js +6127 -0
- package/dist/runtime/index.js +13452 -0
- package/dist/tui/App.js +24635 -0
- package/package.json +1 -1
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# exe-start — unified session launcher for exe-os Mode 1
|
|
3
|
+
#
|
|
4
|
+
# Invoked by thin wrappers ({agent}1, {agent}2, etc.) that pass their $0 as first arg.
|
|
5
|
+
#
|
|
6
|
+
# Usage (via wrapper):
|
|
7
|
+
# {coo}1 → creates tmux session + boots COO
|
|
8
|
+
# {coo}1 go → attaches to existing coordinator session
|
|
9
|
+
# {employee}1 go → attaches to {employee}-{coo}1 session
|
|
10
|
+
|
|
11
|
+
set -euo pipefail
|
|
12
|
+
|
|
13
|
+
ROSTER_PATH="${HOME}/.exe-os/exe-employees.json"
|
|
14
|
+
|
|
15
|
+
# --- Parse wrapper name ---
|
|
16
|
+
# Wrappers call: exec ~/.exe-os/bin/exe-start "$0" "$@"
|
|
17
|
+
# So $1 = wrapper path, remaining = user args
|
|
18
|
+
INVOKED_AS="$(basename "${1:-exe-start}")"
|
|
19
|
+
shift # Remove $0 passthrough; remaining args are user's
|
|
20
|
+
|
|
21
|
+
# Detect runtime suffix: {agent}1-codex -> runtime=codex, strip suffix
|
|
22
|
+
RUNTIME="claude"
|
|
23
|
+
CLEAN_NAME="$INVOKED_AS"
|
|
24
|
+
case "$INVOKED_AS" in
|
|
25
|
+
*-codex)
|
|
26
|
+
RUNTIME="codex"
|
|
27
|
+
CLEAN_NAME="$(echo "$INVOKED_AS" | sed 's/-codex$//')"
|
|
28
|
+
;;
|
|
29
|
+
*-opencode)
|
|
30
|
+
RUNTIME="opencode"
|
|
31
|
+
CLEAN_NAME="$(echo "$INVOKED_AS" | sed 's/-opencode$//')"
|
|
32
|
+
;;
|
|
33
|
+
esac
|
|
34
|
+
|
|
35
|
+
# Extract name + number: {agent}1 -> {agent},1
|
|
36
|
+
NAME="$(echo "$CLEAN_NAME" | sed 's/[0-9]*$//')"
|
|
37
|
+
NUM="$(echo "$CLEAN_NAME" | grep -oE '[0-9]+$' || true)"
|
|
38
|
+
|
|
39
|
+
if [ -z "$NAME" ] || [ -z "$NUM" ]; then
|
|
40
|
+
echo "Could not parse name and number from: $INVOKED_AS"
|
|
41
|
+
echo " Expected format: {agent}1, {agent}2, {agent}1-codex, etc."
|
|
42
|
+
exit 1
|
|
43
|
+
fi
|
|
44
|
+
|
|
45
|
+
# --- Load COO name from roster ---
|
|
46
|
+
if [ ! -f "$ROSTER_PATH" ]; then
|
|
47
|
+
echo "Employee roster not found at $ROSTER_PATH"
|
|
48
|
+
echo " Run 'exe-os setup' first."
|
|
49
|
+
exit 1
|
|
50
|
+
fi
|
|
51
|
+
|
|
52
|
+
COO_NAME="$(node -e "
|
|
53
|
+
const r = JSON.parse(require('fs').readFileSync('${ROSTER_PATH}','utf8'));
|
|
54
|
+
const coo = r.find(e => e.role === 'COO');
|
|
55
|
+
console.log(coo ? coo.name : '');
|
|
56
|
+
" 2>/dev/null)"
|
|
57
|
+
|
|
58
|
+
if [ -z "$COO_NAME" ]; then
|
|
59
|
+
echo "No COO found in roster. Run 'exe-os setup' first."
|
|
60
|
+
exit 1
|
|
61
|
+
fi
|
|
62
|
+
|
|
63
|
+
# --- Mode B: Attach ("go") ---
|
|
64
|
+
if [ "${1:-}" = "go" ]; then
|
|
65
|
+
if [ "$NAME" = "$COO_NAME" ]; then
|
|
66
|
+
SESSION="${COO_NAME}${NUM}"
|
|
67
|
+
else
|
|
68
|
+
SESSION="${NAME}-${COO_NAME}${NUM}"
|
|
69
|
+
fi
|
|
70
|
+
|
|
71
|
+
if tmux has-session -t "$SESSION" 2>/dev/null; then
|
|
72
|
+
# Detect if already inside the target session — prevent double-attach
|
|
73
|
+
# Only check if we're actually inside tmux (TMUX or TMUX_PANE set).
|
|
74
|
+
# tmux display-message works even outside tmux and returns the last
|
|
75
|
+
# active session, which gives false positives on single-session machines.
|
|
76
|
+
if [ -n "${TMUX:-}" ] || [ -n "${TMUX_PANE:-}" ]; then
|
|
77
|
+
CURRENT_SESSION="$(tmux display-message -p '#{session_name}' 2>/dev/null || true)"
|
|
78
|
+
if [ "$CURRENT_SESSION" = "$SESSION" ]; then
|
|
79
|
+
echo " Already inside ${SESSION}."
|
|
80
|
+
exit 0
|
|
81
|
+
fi
|
|
82
|
+
fi
|
|
83
|
+
# Unset TMUX to allow attach from auto-tmux shells (common zsh/bash configs).
|
|
84
|
+
# -d detaches other clients to prevent status-bar-in-body rendering bug.
|
|
85
|
+
unset TMUX
|
|
86
|
+
exec tmux attach -d -t "$SESSION"
|
|
87
|
+
else
|
|
88
|
+
if [ "$NAME" = "$COO_NAME" ]; then
|
|
89
|
+
echo " ${SESSION} is not running. Use ${COO_NAME}${NUM} to start a new session."
|
|
90
|
+
else
|
|
91
|
+
echo " ${SESSION} is not running. Dispatch work to ${NAME} via /exe inside ${COO_NAME}${NUM}."
|
|
92
|
+
fi
|
|
93
|
+
exit 1
|
|
94
|
+
fi
|
|
95
|
+
fi
|
|
96
|
+
|
|
97
|
+
# --- Mode A: Create session (COO only) ---
|
|
98
|
+
if [ "$NAME" != "$COO_NAME" ]; then
|
|
99
|
+
echo " ${INVOKED_AS} is attach-only. Use ${INVOKED_AS} go to connect."
|
|
100
|
+
echo " Only ${COO_NAME}${NUM} can start new sessions."
|
|
101
|
+
exit 1
|
|
102
|
+
fi
|
|
103
|
+
|
|
104
|
+
# Project folder guard — block $HOME, /, /tmp and /tmp subdirectories
|
|
105
|
+
case "$PWD" in
|
|
106
|
+
"$HOME")
|
|
107
|
+
echo " ${COO_NAME}${NUM} must be run from a project folder, not your home directory."
|
|
108
|
+
echo ""
|
|
109
|
+
echo " Create or cd into a project folder first:"
|
|
110
|
+
echo " mkdir ~/my-project && cd ~/my-project"
|
|
111
|
+
echo " ${COO_NAME}${NUM}"
|
|
112
|
+
exit 1
|
|
113
|
+
;;
|
|
114
|
+
"/")
|
|
115
|
+
echo " ${COO_NAME}${NUM} must be run from a project folder, not /."
|
|
116
|
+
echo ""
|
|
117
|
+
echo " Create or cd into a project folder first:"
|
|
118
|
+
echo " mkdir ~/my-project && cd ~/my-project"
|
|
119
|
+
echo " ${COO_NAME}${NUM}"
|
|
120
|
+
exit 1
|
|
121
|
+
;;
|
|
122
|
+
/tmp|/tmp/*)
|
|
123
|
+
echo " ${COO_NAME}${NUM} must be run from a project folder, not a temp directory."
|
|
124
|
+
echo ""
|
|
125
|
+
echo " Create or cd into a project folder first:"
|
|
126
|
+
echo " mkdir ~/my-project && cd ~/my-project"
|
|
127
|
+
echo " ${COO_NAME}${NUM}"
|
|
128
|
+
exit 1
|
|
129
|
+
;;
|
|
130
|
+
esac
|
|
131
|
+
|
|
132
|
+
SESSION="${COO_NAME}${NUM}"
|
|
133
|
+
|
|
134
|
+
# Session collision guard
|
|
135
|
+
if tmux has-session -t "$SESSION" 2>/dev/null; then
|
|
136
|
+
# Find next free N
|
|
137
|
+
NEXT_N=$((NUM + 1))
|
|
138
|
+
while tmux has-session -t "${COO_NAME}${NEXT_N}" 2>/dev/null; do
|
|
139
|
+
NEXT_N=$((NEXT_N + 1))
|
|
140
|
+
done
|
|
141
|
+
|
|
142
|
+
# Try to get the working directory of the existing session
|
|
143
|
+
EXISTING_DIR="$(tmux display-message -t "$SESSION" -p '#{pane_current_path}' 2>/dev/null || true)"
|
|
144
|
+
DIR_HINT=""
|
|
145
|
+
if [ -n "$EXISTING_DIR" ]; then
|
|
146
|
+
DIR_HINT=" ($(echo "$EXISTING_DIR" | sed "s|$HOME|~|"))"
|
|
147
|
+
fi
|
|
148
|
+
|
|
149
|
+
echo " ${SESSION} is already running${DIR_HINT}."
|
|
150
|
+
echo ""
|
|
151
|
+
echo " To reconnect: ${SESSION} go"
|
|
152
|
+
echo " To start a new project here: ${COO_NAME}${NEXT_N}"
|
|
153
|
+
exit 1
|
|
154
|
+
fi
|
|
155
|
+
|
|
156
|
+
# Unset TMUX to allow creating sessions from auto-tmux shells
|
|
157
|
+
unset TMUX
|
|
158
|
+
|
|
159
|
+
# Create session and launch COO with full identity + behaviors + bypass permissions
|
|
160
|
+
tmux new-session -d -s "$SESSION" -c "$PWD"
|
|
161
|
+
if [ "$RUNTIME" = "codex" ]; then
|
|
162
|
+
tmux send-keys -t "$SESSION" "exe-start-codex --agent $COO_NAME" Enter
|
|
163
|
+
elif [ "$RUNTIME" = "opencode" ]; then
|
|
164
|
+
tmux send-keys -t "$SESSION" "exe-start-opencode --agent $COO_NAME" Enter
|
|
165
|
+
else
|
|
166
|
+
tmux send-keys -t "$SESSION" "exe-launch-agent --agent $COO_NAME" Enter
|
|
167
|
+
fi
|
|
168
|
+
|
|
169
|
+
# Attach user to session (-d detaches other clients to prevent rendering conflict)
|
|
170
|
+
exec tmux attach -d -t "$SESSION"
|