@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.
Files changed (139) hide show
  1. package/dist/assets/ghostty.conf +83 -0
  2. package/dist/assets/statusline-command.sh +44 -0
  3. package/dist/assets/tmux.conf +53 -0
  4. package/dist/bin/age-ontology-load.js +333 -0
  5. package/dist/bin/agentic-ontology-backfill.js +5357 -0
  6. package/dist/bin/agentic-reflection-backfill.js +4763 -0
  7. package/dist/bin/agentic-semantic-label.js +4890 -0
  8. package/dist/bin/backfill-conversations.js +5904 -0
  9. package/dist/bin/backfill-responses.js +5732 -0
  10. package/dist/bin/backfill-vectors.js +4904 -0
  11. package/dist/bin/bulk-sync-postgres.js +5382 -0
  12. package/dist/bin/cc-doctor.js +643 -0
  13. package/dist/bin/cleanup-stale-review-tasks.js +6910 -0
  14. package/dist/bin/cli.js +39722 -0
  15. package/dist/bin/customer-readiness.js +267 -0
  16. package/dist/bin/exe-agent-config.js +323 -0
  17. package/dist/bin/exe-agent.js +2556 -0
  18. package/dist/bin/exe-assign.js +5870 -0
  19. package/dist/bin/exe-boot.js +13663 -0
  20. package/dist/bin/exe-call.js +1492 -0
  21. package/dist/bin/exe-cloud.js +8930 -0
  22. package/dist/bin/exe-dispatch.js +10859 -0
  23. package/dist/bin/exe-doctor.js +7559 -0
  24. package/dist/bin/exe-export-behaviors.js +6150 -0
  25. package/dist/bin/exe-forget.js +6456 -0
  26. package/dist/bin/exe-gateway.js +16218 -0
  27. package/dist/bin/exe-healthcheck.js +607 -0
  28. package/dist/bin/exe-heartbeat.js +7079 -0
  29. package/dist/bin/exe-kill.js +6036 -0
  30. package/dist/bin/exe-launch-agent.js +7177 -0
  31. package/dist/bin/exe-new-employee.js +3902 -0
  32. package/dist/bin/exe-pending-messages.js +6861 -0
  33. package/dist/bin/exe-pending-notifications.js +6941 -0
  34. package/dist/bin/exe-pending-reviews.js +6947 -0
  35. package/dist/bin/exe-rename.js +5928 -0
  36. package/dist/bin/exe-repo-drift.js +95 -0
  37. package/dist/bin/exe-review.js +6119 -0
  38. package/dist/bin/exe-search.js +7735 -0
  39. package/dist/bin/exe-session-cleanup.js +11350 -0
  40. package/dist/bin/exe-settings.js +861 -0
  41. package/dist/bin/exe-start-codex.js +6919 -0
  42. package/dist/bin/exe-start-opencode.js +6765 -0
  43. package/dist/bin/exe-start.sh +170 -0
  44. package/dist/bin/exe-status.js +7086 -0
  45. package/dist/bin/exe-support.js +553 -0
  46. package/dist/bin/exe-team.js +6012 -0
  47. package/dist/bin/git-sweep.js +10953 -0
  48. package/dist/bin/graph-backfill.js +6032 -0
  49. package/dist/bin/graph-export.js +6163 -0
  50. package/dist/bin/graph-layer-benchmark.js +117 -0
  51. package/dist/bin/install.js +2489 -0
  52. package/dist/bin/intercom-check.js +11604 -0
  53. package/dist/bin/list-providers.js +142 -0
  54. package/dist/bin/postgres-agentic-reflection-backfill.js +466 -0
  55. package/dist/bin/postgres-agentic-semantic-backfill.js +516 -0
  56. package/dist/bin/pre-build-guard.js +98 -0
  57. package/dist/bin/pre-publish.js +488 -0
  58. package/dist/bin/registry-proxy.js +208 -0
  59. package/dist/bin/scan-tasks.js +11087 -0
  60. package/dist/bin/setup.js +9504 -0
  61. package/dist/bin/shard-migrate.js +5281 -0
  62. package/dist/bin/stack-update.js +1079 -0
  63. package/dist/bin/update.js +974 -0
  64. package/dist/gateway/index.js +16622 -0
  65. package/dist/hooks/bug-report-worker.js +10964 -0
  66. package/dist/hooks/codex-stop-task-finalizer.js +9274 -0
  67. package/dist/hooks/commit-complete.js +11008 -0
  68. package/dist/hooks/error-recall.js +8045 -0
  69. package/dist/hooks/exe-heartbeat-hook.js +381 -0
  70. package/dist/hooks/ingest-worker.js +595 -0
  71. package/dist/hooks/ingest.js +11788 -0
  72. package/dist/hooks/instructions-loaded.js +6297 -0
  73. package/dist/hooks/notification.js +6138 -0
  74. package/dist/hooks/post-compact.js +7136 -0
  75. package/dist/hooks/post-tool-combined.js +9869 -0
  76. package/dist/hooks/pre-compact.js +11241 -0
  77. package/dist/hooks/pre-tool-use.js +7482 -0
  78. package/dist/hooks/prompt-submit.js +13668 -0
  79. package/dist/hooks/session-end.js +11691 -0
  80. package/dist/hooks/session-start.js +9615 -0
  81. package/dist/hooks/stop.js +7451 -0
  82. package/dist/hooks/subagent-stop.js +6942 -0
  83. package/dist/hooks/summary-worker.js +8841 -0
  84. package/dist/index.js +19397 -0
  85. package/dist/lib/agent-config.js +237 -0
  86. package/dist/lib/cloud-sync.js +5433 -0
  87. package/dist/lib/cloudflare-dns.js +117 -0
  88. package/dist/lib/config.js +292 -0
  89. package/dist/lib/consolidation.js +1058 -0
  90. package/dist/lib/crypto.js +51 -0
  91. package/dist/lib/database.js +2945 -0
  92. package/dist/lib/db-daemon-client.js +587 -0
  93. package/dist/lib/db.js +2945 -0
  94. package/dist/lib/device-registry.js +3044 -0
  95. package/dist/lib/embedder.js +828 -0
  96. package/dist/lib/employee-templates.js +1115 -0
  97. package/dist/lib/employees.js +522 -0
  98. package/dist/lib/error-detector.js +156 -0
  99. package/dist/lib/exe-daemon-client.js +580 -0
  100. package/dist/lib/exe-daemon.js +20284 -0
  101. package/dist/lib/file-grep.js +215 -0
  102. package/dist/lib/hybrid-search.js +7682 -0
  103. package/dist/lib/identity-templates.js +537 -0
  104. package/dist/lib/identity.js +316 -0
  105. package/dist/lib/keychain.js +507 -0
  106. package/dist/lib/license.js +565 -0
  107. package/dist/lib/messaging.js +1647 -0
  108. package/dist/lib/post-tool-memory.js +373 -0
  109. package/dist/lib/registry-proxy.js +162 -0
  110. package/dist/lib/reminders.js +236 -0
  111. package/dist/lib/runtime-table.js +24 -0
  112. package/dist/lib/schedules.js +4620 -0
  113. package/dist/lib/session-registry.js +63 -0
  114. package/dist/lib/session-wrappers.js +131 -0
  115. package/dist/lib/skill-learning.js +2112 -0
  116. package/dist/lib/status-brief.js +371 -0
  117. package/dist/lib/store.js +5609 -0
  118. package/dist/lib/task-router.js +262 -0
  119. package/dist/lib/tasks.js +5823 -0
  120. package/dist/lib/tmux-routing.js +5827 -0
  121. package/dist/lib/tmux-status.js +261 -0
  122. package/dist/lib/tmux-transport.js +93 -0
  123. package/dist/lib/token-spend.js +340 -0
  124. package/dist/lib/transport.js +138 -0
  125. package/dist/lib/ws-auth.js +19 -0
  126. package/dist/lib/ws-client.js +189 -0
  127. package/dist/mcp/register-tools.js +32438 -0
  128. package/dist/mcp/server.js +32772 -0
  129. package/dist/mcp/tools/complete-reminder.js +240 -0
  130. package/dist/mcp/tools/create-reminder.js +225 -0
  131. package/dist/mcp/tools/create-task.js +6734 -0
  132. package/dist/mcp/tools/deactivate-behavior.js +479 -0
  133. package/dist/mcp/tools/list-reminders.js +235 -0
  134. package/dist/mcp/tools/list-tasks.js +1575 -0
  135. package/dist/mcp/tools/send-message.js +1676 -0
  136. package/dist/mcp/tools/update-task.js +6127 -0
  137. package/dist/runtime/index.js +13452 -0
  138. package/dist/tui/App.js +24635 -0
  139. 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"