@askexenow/exe-os 0.8.82 → 0.8.85

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 (97) hide show
  1. package/dist/bin/backfill-conversations.js +746 -595
  2. package/dist/bin/backfill-responses.js +745 -594
  3. package/dist/bin/backfill-vectors.js +312 -226
  4. package/dist/bin/cleanup-stale-review-tasks.js +97 -2
  5. package/dist/bin/cli.js +14360 -12525
  6. package/dist/bin/exe-agent.js +97 -88
  7. package/dist/bin/exe-assign.js +1003 -854
  8. package/dist/bin/exe-boot.js +1260 -323
  9. package/dist/bin/exe-call.js +10 -0
  10. package/dist/bin/exe-cloud.js +32 -9
  11. package/dist/bin/exe-dispatch.js +212 -36
  12. package/dist/bin/exe-doctor.js +403 -6
  13. package/dist/bin/exe-export-behaviors.js +175 -72
  14. package/dist/bin/exe-forget.js +97 -2
  15. package/dist/bin/exe-gateway.js +553 -174
  16. package/dist/bin/exe-healthcheck.js +1 -0
  17. package/dist/bin/exe-heartbeat.js +100 -5
  18. package/dist/bin/exe-kill.js +175 -72
  19. package/dist/bin/exe-launch-agent.js +189 -76
  20. package/dist/bin/exe-link.js +902 -80
  21. package/dist/bin/exe-new-employee.js +41 -11
  22. package/dist/bin/exe-pending-messages.js +96 -2
  23. package/dist/bin/exe-pending-notifications.js +97 -2
  24. package/dist/bin/exe-pending-reviews.js +98 -3
  25. package/dist/bin/exe-rename.js +577 -33
  26. package/dist/bin/exe-review.js +231 -73
  27. package/dist/bin/exe-search.js +989 -226
  28. package/dist/bin/exe-session-cleanup.js +4806 -1665
  29. package/dist/bin/exe-settings.js +20 -5
  30. package/dist/bin/exe-status.js +97 -2
  31. package/dist/bin/exe-team.js +97 -2
  32. package/dist/bin/git-sweep.js +901 -209
  33. package/dist/bin/graph-backfill.js +175 -72
  34. package/dist/bin/graph-export.js +175 -72
  35. package/dist/bin/install.js +38 -7
  36. package/dist/bin/list-providers.js +1 -0
  37. package/dist/bin/scan-tasks.js +906 -213
  38. package/dist/bin/setup.js +870 -271
  39. package/dist/bin/shard-migrate.js +175 -72
  40. package/dist/bin/update.js +4 -3
  41. package/dist/bin/wiki-sync.js +175 -72
  42. package/dist/gateway/index.js +550 -168
  43. package/dist/hooks/bug-report-worker.js +210 -25
  44. package/dist/hooks/commit-complete.js +899 -207
  45. package/dist/hooks/error-recall.js +988 -226
  46. package/dist/hooks/ingest-worker.js +1639 -1195
  47. package/dist/hooks/ingest.js +3 -0
  48. package/dist/hooks/instructions-loaded.js +707 -97
  49. package/dist/hooks/notification.js +699 -89
  50. package/dist/hooks/post-compact.js +714 -104
  51. package/dist/hooks/pre-compact.js +899 -207
  52. package/dist/hooks/pre-tool-use.js +742 -123
  53. package/dist/hooks/prompt-ingest-worker.js +245 -104
  54. package/dist/hooks/prompt-submit.js +995 -233
  55. package/dist/hooks/response-ingest-worker.js +245 -104
  56. package/dist/hooks/session-end.js +3941 -400
  57. package/dist/hooks/session-start.js +1001 -226
  58. package/dist/hooks/stop.js +725 -115
  59. package/dist/hooks/subagent-stop.js +714 -104
  60. package/dist/hooks/summary-worker.js +1970 -1336
  61. package/dist/index.js +1653 -1055
  62. package/dist/lib/cloud-sync.js +907 -86
  63. package/dist/lib/consolidation.js +2 -1
  64. package/dist/lib/database.js +642 -87
  65. package/dist/lib/db-daemon-client.js +503 -0
  66. package/dist/lib/device-registry.js +547 -7
  67. package/dist/lib/embedder.js +14 -28
  68. package/dist/lib/employee-templates.js +84 -74
  69. package/dist/lib/employees.js +9 -0
  70. package/dist/lib/exe-daemon-client.js +16 -29
  71. package/dist/lib/exe-daemon.js +1957 -924
  72. package/dist/lib/hybrid-search.js +988 -226
  73. package/dist/lib/identity.js +87 -67
  74. package/dist/lib/keychain.js +9 -1
  75. package/dist/lib/license.js +3 -3
  76. package/dist/lib/messaging.js +8 -1
  77. package/dist/lib/reminders.js +91 -74
  78. package/dist/lib/schedules.js +96 -2
  79. package/dist/lib/skill-learning.js +103 -85
  80. package/dist/lib/store.js +234 -73
  81. package/dist/lib/tasks.js +113 -24
  82. package/dist/lib/tmux-routing.js +122 -33
  83. package/dist/lib/token-spend.js +273 -0
  84. package/dist/lib/ws-client.js +11 -0
  85. package/dist/mcp/server.js +10874 -5546
  86. package/dist/mcp/tools/complete-reminder.js +94 -77
  87. package/dist/mcp/tools/create-reminder.js +94 -77
  88. package/dist/mcp/tools/create-task.js +810 -27
  89. package/dist/mcp/tools/deactivate-behavior.js +95 -77
  90. package/dist/mcp/tools/list-reminders.js +94 -77
  91. package/dist/mcp/tools/list-tasks.js +31 -1
  92. package/dist/mcp/tools/send-message.js +8 -1
  93. package/dist/mcp/tools/update-task.js +39 -10
  94. package/dist/runtime/index.js +913 -221
  95. package/dist/tui/App.js +1000 -298
  96. package/package.json +6 -1
  97. package/src/commands/exe/build-adv.md +2 -2
@@ -107,6 +107,7 @@ __export(employees_exports, {
107
107
  DEFAULT_COORDINATOR_TEMPLATE_NAME: () => DEFAULT_COORDINATOR_TEMPLATE_NAME,
108
108
  EMPLOYEES_PATH: () => EMPLOYEES_PATH,
109
109
  addEmployee: () => addEmployee,
110
+ baseAgentName: () => baseAgentName,
110
111
  canCoordinate: () => canCoordinate,
111
112
  getCoordinatorEmployee: () => getCoordinatorEmployee,
112
113
  getCoordinatorName: () => getCoordinatorName,
@@ -203,6 +204,14 @@ function hasRole(agentName, role) {
203
204
  const emp = getEmployee(employees, agentName);
204
205
  return emp ? emp.role.toLowerCase() === role.toLowerCase() : false;
205
206
  }
207
+ function baseAgentName(name, employees) {
208
+ const match = name.match(/^([a-zA-Z]+)\d+$/);
209
+ if (!match) return name;
210
+ const base = match[1];
211
+ const roster = employees ?? loadEmployeesSync();
212
+ if (getEmployee(roster, base)) return base;
213
+ return name;
214
+ }
206
215
  function isMultiInstance(agentName, employees) {
207
216
  const roster = employees ?? loadEmployeesSync();
208
217
  const emp = getEmployee(roster, agentName);
@@ -476,19 +485,41 @@ async function registerMcpServer(packageRoot, homeDir = os4.homedir()) {
476
485
  args: [path4.join(packageRoot, "dist", "mcp", "server.js")],
477
486
  env: {}
478
487
  };
479
- const legacy = claudeJson.mcpServers[MCP_LEGACY_KEY];
480
- const current = claudeJson.mcpServers[MCP_PRIMARY_KEY];
481
- const currentMatches = current && JSON.stringify(current) === JSON.stringify(newEntry);
482
- if (currentMatches && !legacy) {
488
+ const currentMem = claudeJson.mcpServers[MCP_LEGACY_KEY];
489
+ const currentOs = claudeJson.mcpServers[MCP_PRIMARY_KEY];
490
+ const memMatches = currentMem && JSON.stringify(currentMem) === JSON.stringify(newEntry);
491
+ const osMatches = currentOs && JSON.stringify(currentOs) === JSON.stringify(newEntry);
492
+ if (memMatches && osMatches) {
493
+ await cleanSettingsJsonMcp(path4.join(homeDir, ".claude", "settings.json"));
483
494
  return false;
484
495
  }
496
+ claudeJson.mcpServers[MCP_LEGACY_KEY] = newEntry;
485
497
  claudeJson.mcpServers[MCP_PRIMARY_KEY] = newEntry;
486
- if (legacy) {
487
- delete claudeJson.mcpServers[MCP_LEGACY_KEY];
488
- }
489
498
  await writeFile3(claudeJsonPath, JSON.stringify(claudeJson, null, 2) + "\n");
499
+ await cleanSettingsJsonMcp(path4.join(homeDir, ".claude", "settings.json"));
490
500
  return true;
491
501
  }
502
+ async function cleanSettingsJsonMcp(settingsPath) {
503
+ if (!existsSync4(settingsPath)) return;
504
+ try {
505
+ const settings = JSON.parse(await readFile3(settingsPath, "utf-8"));
506
+ const servers = settings.mcpServers;
507
+ if (!servers) return;
508
+ let changed = false;
509
+ if (servers[MCP_PRIMARY_KEY]) {
510
+ delete servers[MCP_PRIMARY_KEY];
511
+ changed = true;
512
+ }
513
+ if (servers[MCP_LEGACY_KEY]) {
514
+ delete servers[MCP_LEGACY_KEY];
515
+ changed = true;
516
+ }
517
+ if (changed) {
518
+ await writeFile3(settingsPath, JSON.stringify(settings, null, 2) + "\n");
519
+ }
520
+ } catch {
521
+ }
522
+ }
492
523
  async function mergeHooks(packageRoot, homeDir = os4.homedir()) {
493
524
  const settingsPath = path4.join(homeDir, ".claude", "settings.json");
494
525
  let settings = {};
@@ -10,6 +10,7 @@ import { realpathSync } from "fs";
10
10
  import { fileURLToPath } from "url";
11
11
  function isMainModule(importMetaUrl) {
12
12
  if (process.argv[1] == null) return false;
13
+ if (process.argv[1].includes("mcp/server")) return false;
13
14
  try {
14
15
  const scriptPath = realpathSync(process.argv[1]);
15
16
  const modulePath = realpathSync(fileURLToPath(importMetaUrl));