@askexenow/exe-os 0.8.80 → 0.8.82

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 (110) hide show
  1. package/dist/bin/backfill-conversations.js +359 -267
  2. package/dist/bin/backfill-responses.js +357 -265
  3. package/dist/bin/backfill-vectors.js +339 -264
  4. package/dist/bin/cleanup-stale-review-tasks.js +315 -256
  5. package/dist/bin/cli.js +494 -240
  6. package/dist/bin/exe-agent.js +141 -46
  7. package/dist/bin/exe-assign.js +151 -63
  8. package/dist/bin/exe-boot.js +294 -115
  9. package/dist/bin/exe-call.js +76 -51
  10. package/dist/bin/exe-cloud.js +58 -45
  11. package/dist/bin/exe-dispatch.js +434 -277
  12. package/dist/bin/exe-doctor.js +317 -246
  13. package/dist/bin/exe-export-behaviors.js +328 -248
  14. package/dist/bin/exe-forget.js +314 -231
  15. package/dist/bin/exe-gateway.js +2676 -1402
  16. package/dist/bin/exe-heartbeat.js +329 -264
  17. package/dist/bin/exe-kill.js +324 -244
  18. package/dist/bin/exe-launch-agent.js +574 -463
  19. package/dist/bin/exe-link.js +1055 -95
  20. package/dist/bin/exe-new-employee.js +49 -54
  21. package/dist/bin/exe-pending-messages.js +310 -253
  22. package/dist/bin/exe-pending-notifications.js +299 -228
  23. package/dist/bin/exe-pending-reviews.js +314 -245
  24. package/dist/bin/exe-rename.js +259 -195
  25. package/dist/bin/exe-review.js +140 -64
  26. package/dist/bin/exe-search.js +543 -356
  27. package/dist/bin/exe-session-cleanup.js +463 -382
  28. package/dist/bin/exe-settings.js +129 -99
  29. package/dist/bin/exe-start.sh +6 -6
  30. package/dist/bin/exe-status.js +95 -36
  31. package/dist/bin/exe-team.js +116 -51
  32. package/dist/bin/git-sweep.js +482 -307
  33. package/dist/bin/graph-backfill.js +357 -245
  34. package/dist/bin/graph-export.js +324 -244
  35. package/dist/bin/install.js +33 -10
  36. package/dist/bin/scan-tasks.js +481 -307
  37. package/dist/bin/setup.js +1147 -140
  38. package/dist/bin/shard-migrate.js +321 -241
  39. package/dist/bin/update.js +1 -7
  40. package/dist/bin/wiki-sync.js +318 -238
  41. package/dist/gateway/index.js +2656 -1383
  42. package/dist/hooks/bug-report-worker.js +641 -472
  43. package/dist/hooks/commit-complete.js +482 -307
  44. package/dist/hooks/error-recall.js +363 -135
  45. package/dist/hooks/exe-heartbeat-hook.js +97 -27
  46. package/dist/hooks/ingest-worker.js +584 -397
  47. package/dist/hooks/ingest.js +123 -58
  48. package/dist/hooks/instructions-loaded.js +212 -82
  49. package/dist/hooks/notification.js +200 -70
  50. package/dist/hooks/post-compact.js +199 -81
  51. package/dist/hooks/pre-compact.js +352 -140
  52. package/dist/hooks/pre-tool-use.js +416 -278
  53. package/dist/hooks/prompt-ingest-worker.js +376 -299
  54. package/dist/hooks/prompt-submit.js +414 -188
  55. package/dist/hooks/response-ingest-worker.js +408 -338
  56. package/dist/hooks/session-end.js +209 -83
  57. package/dist/hooks/session-start.js +382 -158
  58. package/dist/hooks/stop.js +209 -83
  59. package/dist/hooks/subagent-stop.js +209 -85
  60. package/dist/hooks/summary-worker.js +606 -510
  61. package/dist/index.js +2133 -855
  62. package/dist/lib/cloud-sync.js +1175 -184
  63. package/dist/lib/config.js +1 -9
  64. package/dist/lib/consolidation.js +71 -34
  65. package/dist/lib/database.js +166 -14
  66. package/dist/lib/device-registry.js +189 -117
  67. package/dist/lib/embedder.js +6 -10
  68. package/dist/lib/employee-templates.js +134 -39
  69. package/dist/lib/employees.js +30 -7
  70. package/dist/lib/exe-daemon-client.js +5 -7
  71. package/dist/lib/exe-daemon.js +514 -152
  72. package/dist/lib/hybrid-search.js +543 -356
  73. package/dist/lib/identity-templates.js +15 -15
  74. package/dist/lib/identity.js +19 -15
  75. package/dist/lib/license.js +1 -7
  76. package/dist/lib/messaging.js +157 -135
  77. package/dist/lib/reminders.js +97 -0
  78. package/dist/lib/schedules.js +302 -231
  79. package/dist/lib/skill-learning.js +33 -27
  80. package/dist/lib/status-brief.js +11 -14
  81. package/dist/lib/store.js +326 -237
  82. package/dist/lib/task-router.js +105 -1
  83. package/dist/lib/tasks.js +233 -116
  84. package/dist/lib/tmux-routing.js +173 -56
  85. package/dist/lib/ws-client.js +13 -3
  86. package/dist/mcp/server.js +2009 -1015
  87. package/dist/mcp/tools/complete-reminder.js +97 -0
  88. package/dist/mcp/tools/create-reminder.js +97 -0
  89. package/dist/mcp/tools/create-task.js +426 -262
  90. package/dist/mcp/tools/deactivate-behavior.js +119 -44
  91. package/dist/mcp/tools/list-reminders.js +97 -0
  92. package/dist/mcp/tools/list-tasks.js +56 -57
  93. package/dist/mcp/tools/send-message.js +206 -143
  94. package/dist/mcp/tools/update-task.js +259 -85
  95. package/dist/runtime/index.js +495 -316
  96. package/dist/tui/App.js +1128 -919
  97. package/package.json +2 -10
  98. package/src/commands/exe/afk.md +8 -8
  99. package/src/commands/exe/assign.md +1 -1
  100. package/src/commands/exe/build-adv.md +1 -1
  101. package/src/commands/exe/call.md +10 -10
  102. package/src/commands/exe/employee-heartbeat.md +9 -6
  103. package/src/commands/exe/heartbeat.md +5 -5
  104. package/src/commands/exe/intercom.md +26 -15
  105. package/src/commands/exe/launch.md +2 -2
  106. package/src/commands/exe/new-employee.md +1 -1
  107. package/src/commands/exe/review.md +2 -2
  108. package/src/commands/exe/schedule.md +1 -1
  109. package/src/commands/exe/sessions.md +2 -2
  110. package/src/commands/exe.md +22 -20
@@ -3,27 +3,13 @@ import crypto2 from "crypto";
3
3
 
4
4
  // src/lib/database.ts
5
5
  import { createClient } from "@libsql/client";
6
- var _resilientClient = null;
7
- function getClient() {
8
- if (!_resilientClient) {
9
- throw new Error("Database client not initialized. Call initDatabase() first.");
10
- }
11
- return _resilientClient;
12
- }
13
6
 
14
- // src/lib/behaviors.ts
15
- import crypto from "crypto";
16
- async function storeBehavior(opts) {
17
- const client = getClient();
18
- const id = crypto.randomUUID();
19
- const now = (/* @__PURE__ */ new Date()).toISOString();
20
- await client.execute({
21
- sql: `INSERT INTO behaviors (id, agent_id, project_name, domain, priority, content, active, created_at, updated_at)
22
- VALUES (?, ?, ?, ?, ?, ?, 1, ?, ?)`,
23
- args: [id, opts.agentId, opts.projectName ?? null, opts.domain ?? null, opts.priority ?? "p1", opts.content, now, now]
24
- });
25
- return id;
26
- }
7
+ // src/lib/employees.ts
8
+ import { readFile as readFile2, writeFile as writeFile2, mkdir as mkdir2 } from "fs/promises";
9
+ import { existsSync as existsSync2, symlinkSync, readlinkSync, readFileSync as readFileSync2, renameSync as renameSync2, unlinkSync, writeFileSync } from "fs";
10
+ import { execSync } from "child_process";
11
+ import path2 from "path";
12
+ import os2 from "os";
27
13
 
28
14
  // src/lib/config.ts
29
15
  import { readFile, writeFile, mkdir, chmod } from "fs/promises";
@@ -85,13 +71,7 @@ var DEFAULT_CONFIG = {
85
71
  wikiUrl: "",
86
72
  wikiApiKey: "",
87
73
  wikiSyncIntervalMs: 30 * 60 * 1e3,
88
- wikiWorkspaceMapping: {
89
- exe: "Executive",
90
- yoshi: "Engineering",
91
- mari: "Marketing",
92
- tom: "Engineering",
93
- sasha: "Production"
94
- },
74
+ wikiWorkspaceMapping: {},
95
75
  wikiAutoUpdate: true,
96
76
  wikiAutoUpdateThreshold: 0.5,
97
77
  wikiAutoUpdateCreateNew: true,
@@ -208,6 +188,32 @@ async function loadConfig() {
208
188
  }
209
189
  }
210
190
 
191
+ // src/lib/employees.ts
192
+ var EMPLOYEES_PATH = path2.join(EXE_AI_DIR, "exe-employees.json");
193
+
194
+ // src/lib/database.ts
195
+ var _resilientClient = null;
196
+ function getClient() {
197
+ if (!_resilientClient) {
198
+ throw new Error("Database client not initialized. Call initDatabase() first.");
199
+ }
200
+ return _resilientClient;
201
+ }
202
+
203
+ // src/lib/behaviors.ts
204
+ import crypto from "crypto";
205
+ async function storeBehavior(opts) {
206
+ const client = getClient();
207
+ const id = crypto.randomUUID();
208
+ const now = (/* @__PURE__ */ new Date()).toISOString();
209
+ await client.execute({
210
+ sql: `INSERT INTO behaviors (id, agent_id, project_name, domain, priority, content, active, created_at, updated_at)
211
+ VALUES (?, ?, ?, ?, ?, ?, 1, ?, ?)`,
212
+ args: [id, opts.agentId, opts.projectName ?? null, opts.domain ?? null, opts.priority ?? "p1", opts.content, now, now]
213
+ });
214
+ return id;
215
+ }
216
+
211
217
  // src/lib/skill-learning.ts
212
218
  var DEFAULT_SKILL_THRESHOLD = 3;
213
219
  async function extractTrajectory(taskId, agentId) {
@@ -1,16 +1,13 @@
1
1
  // src/lib/status-brief.ts
2
- var EMPLOYEE_EMOJIS = {
3
- exe: "\u{1F3AF}",
4
- // 🎯
5
- yoshi: "\u26A1",
6
- //
7
- mari: "\u{1F3A8}",
8
- // 🎨
9
- tom: "\u{1F529}",
10
- // 🔩
11
- sasha: "\u{1F4F8}"
12
- // 📸
13
- };
2
+ function roleIcon(role) {
3
+ const lower = role.toLowerCase();
4
+ if (lower === "coo") return "\u{1F3AF}";
5
+ if (lower === "cto" || lower.includes("architect")) return "\u26A1";
6
+ if (lower === "cmo" || lower.includes("marketing")) return "\u{1F3A8}";
7
+ if (lower.includes("engineer")) return "\u{1F529}";
8
+ if (lower.includes("content")) return "\u{1F4F8}";
9
+ return "\u{1F464}";
10
+ }
14
11
  function displayWidth(str) {
15
12
  let w = 0;
16
13
  for (const ch of str) {
@@ -100,7 +97,7 @@ function buildFirstBootBrief(employees, dateStr, sessionTag) {
100
97
  bodyLines.push(" \u{1F44B} First time? Here's your team:");
101
98
  bodyLines.push("");
102
99
  for (const emp of employees) {
103
- const emoji = EMPLOYEE_EMOJIS[emp.name] ?? "\u{1F464}";
100
+ const emoji = roleIcon(emp.role);
104
101
  const role = emp.role ? ` (${emp.role})` : "";
105
102
  bodyLines.push(` ${emoji} ${emp.name}${role}`);
106
103
  }
@@ -233,7 +230,7 @@ function buildTeam(employees, data) {
233
230
  for (const m of data.memoryStats) memMap.set(m.agentId, m.totalMemories);
234
231
  }
235
232
  for (const emp of employees) {
236
- const emoji = EMPLOYEE_EMOJIS[emp.name] ?? "\u{1F464}";
233
+ const emoji = roleIcon(emp.role);
237
234
  const memCount = memMap.get(emp.name) ?? 0;
238
235
  const memStr = memCount > 0 ? `${memCount.toLocaleString()} memories` : "0 memories";
239
236
  const role = emp.role ? ` (${emp.role})` : "";