@askexenow/exe-os 0.8.83 → 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 (95) 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 +14350 -12518
  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 +1257 -320
  9. package/dist/bin/exe-call.js +10 -0
  10. package/dist/bin/exe-cloud.js +29 -6
  11. package/dist/bin/exe-dispatch.js +210 -34
  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 +550 -171
  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 +38 -8
  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 +564 -23
  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 +899 -207
  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 +904 -211
  38. package/dist/bin/setup.js +867 -268
  39. package/dist/bin/shard-migrate.js +175 -72
  40. package/dist/bin/update.js +1 -0
  41. package/dist/bin/wiki-sync.js +175 -72
  42. package/dist/gateway/index.js +548 -166
  43. package/dist/hooks/bug-report-worker.js +208 -23
  44. package/dist/hooks/commit-complete.js +897 -205
  45. package/dist/hooks/error-recall.js +988 -226
  46. package/dist/hooks/ingest-worker.js +1638 -1194
  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 +897 -205
  52. package/dist/hooks/pre-tool-use.js +742 -123
  53. package/dist/hooks/prompt-ingest-worker.js +242 -101
  54. package/dist/hooks/prompt-submit.js +995 -233
  55. package/dist/hooks/response-ingest-worker.js +242 -101
  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 +1964 -1330
  61. package/dist/index.js +1651 -1053
  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 +1955 -922
  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/messaging.js +8 -1
  76. package/dist/lib/reminders.js +91 -74
  77. package/dist/lib/schedules.js +96 -2
  78. package/dist/lib/skill-learning.js +103 -85
  79. package/dist/lib/store.js +234 -73
  80. package/dist/lib/tasks.js +111 -22
  81. package/dist/lib/tmux-routing.js +120 -31
  82. package/dist/lib/token-spend.js +273 -0
  83. package/dist/lib/ws-client.js +11 -0
  84. package/dist/mcp/server.js +5222 -475
  85. package/dist/mcp/tools/complete-reminder.js +94 -77
  86. package/dist/mcp/tools/create-reminder.js +94 -77
  87. package/dist/mcp/tools/create-task.js +120 -22
  88. package/dist/mcp/tools/deactivate-behavior.js +95 -77
  89. package/dist/mcp/tools/list-reminders.js +94 -77
  90. package/dist/mcp/tools/list-tasks.js +31 -1
  91. package/dist/mcp/tools/send-message.js +8 -1
  92. package/dist/mcp/tools/update-task.js +39 -10
  93. package/dist/runtime/index.js +911 -219
  94. package/dist/tui/App.js +997 -295
  95. package/package.json +6 -1
@@ -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));