@askexenow/exe-os 0.8.83 → 0.8.86

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 (103) 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 +154 -21
  5. package/dist/bin/cli.js +14678 -12676
  6. package/dist/bin/exe-agent-config.js +242 -0
  7. package/dist/bin/exe-agent.js +100 -91
  8. package/dist/bin/exe-assign.js +1003 -854
  9. package/dist/bin/exe-boot.js +1420 -485
  10. package/dist/bin/exe-call.js +10 -0
  11. package/dist/bin/exe-cloud.js +29 -6
  12. package/dist/bin/exe-dispatch.js +572 -271
  13. package/dist/bin/exe-doctor.js +403 -6
  14. package/dist/bin/exe-export-behaviors.js +175 -72
  15. package/dist/bin/exe-forget.js +102 -3
  16. package/dist/bin/exe-gateway.js +796 -292
  17. package/dist/bin/exe-healthcheck.js +134 -1
  18. package/dist/bin/exe-heartbeat.js +172 -36
  19. package/dist/bin/exe-kill.js +175 -72
  20. package/dist/bin/exe-launch-agent.js +189 -76
  21. package/dist/bin/exe-link.js +927 -82
  22. package/dist/bin/exe-new-employee.js +60 -8
  23. package/dist/bin/exe-pending-messages.js +151 -19
  24. package/dist/bin/exe-pending-notifications.js +97 -2
  25. package/dist/bin/exe-pending-reviews.js +155 -22
  26. package/dist/bin/exe-rename.js +564 -23
  27. package/dist/bin/exe-review.js +231 -73
  28. package/dist/bin/exe-search.js +995 -228
  29. package/dist/bin/exe-session-cleanup.js +4930 -1664
  30. package/dist/bin/exe-settings.js +20 -5
  31. package/dist/bin/exe-start-codex.js +2598 -0
  32. package/dist/bin/exe-start.sh +15 -3
  33. package/dist/bin/exe-status.js +154 -21
  34. package/dist/bin/exe-team.js +97 -2
  35. package/dist/bin/git-sweep.js +1180 -363
  36. package/dist/bin/graph-backfill.js +175 -72
  37. package/dist/bin/graph-export.js +175 -72
  38. package/dist/bin/install.js +60 -7
  39. package/dist/bin/list-providers.js +1 -0
  40. package/dist/bin/scan-tasks.js +1185 -367
  41. package/dist/bin/setup.js +914 -270
  42. package/dist/bin/shard-migrate.js +175 -72
  43. package/dist/bin/update.js +1 -0
  44. package/dist/bin/wiki-sync.js +175 -72
  45. package/dist/gateway/index.js +792 -285
  46. package/dist/hooks/bug-report-worker.js +445 -135
  47. package/dist/hooks/commit-complete.js +1178 -361
  48. package/dist/hooks/error-recall.js +994 -228
  49. package/dist/hooks/ingest-worker.js +1799 -1234
  50. package/dist/hooks/ingest.js +3 -0
  51. package/dist/hooks/instructions-loaded.js +707 -97
  52. package/dist/hooks/notification.js +699 -89
  53. package/dist/hooks/post-compact.js +757 -109
  54. package/dist/hooks/pre-compact.js +1061 -244
  55. package/dist/hooks/pre-tool-use.js +787 -130
  56. package/dist/hooks/prompt-ingest-worker.js +242 -101
  57. package/dist/hooks/prompt-submit.js +1121 -299
  58. package/dist/hooks/response-ingest-worker.js +242 -101
  59. package/dist/hooks/session-end.js +4063 -397
  60. package/dist/hooks/session-start.js +1071 -254
  61. package/dist/hooks/stop.js +768 -120
  62. package/dist/hooks/subagent-stop.js +757 -109
  63. package/dist/hooks/summary-worker.js +1706 -1011
  64. package/dist/index.js +1821 -1098
  65. package/dist/lib/agent-config.js +167 -0
  66. package/dist/lib/cloud-sync.js +932 -88
  67. package/dist/lib/consolidation.js +2 -1
  68. package/dist/lib/database.js +642 -87
  69. package/dist/lib/db-daemon-client.js +503 -0
  70. package/dist/lib/device-registry.js +547 -7
  71. package/dist/lib/embedder.js +14 -28
  72. package/dist/lib/employee-templates.js +84 -74
  73. package/dist/lib/employees.js +9 -0
  74. package/dist/lib/exe-daemon-client.js +16 -29
  75. package/dist/lib/exe-daemon.js +2733 -1575
  76. package/dist/lib/hybrid-search.js +995 -228
  77. package/dist/lib/identity.js +87 -67
  78. package/dist/lib/keychain.js +9 -1
  79. package/dist/lib/messaging.js +103 -40
  80. package/dist/lib/reminders.js +91 -74
  81. package/dist/lib/runtime-table.js +16 -0
  82. package/dist/lib/schedules.js +96 -2
  83. package/dist/lib/session-wrappers.js +22 -0
  84. package/dist/lib/skill-learning.js +103 -85
  85. package/dist/lib/store.js +234 -73
  86. package/dist/lib/tasks.js +348 -134
  87. package/dist/lib/tmux-routing.js +422 -208
  88. package/dist/lib/token-spend.js +273 -0
  89. package/dist/lib/ws-client.js +11 -0
  90. package/dist/mcp/server.js +5742 -696
  91. package/dist/mcp/tools/complete-reminder.js +94 -77
  92. package/dist/mcp/tools/create-reminder.js +94 -77
  93. package/dist/mcp/tools/create-task.js +375 -152
  94. package/dist/mcp/tools/deactivate-behavior.js +95 -77
  95. package/dist/mcp/tools/list-reminders.js +94 -77
  96. package/dist/mcp/tools/list-tasks.js +99 -31
  97. package/dist/mcp/tools/send-message.js +108 -45
  98. package/dist/mcp/tools/update-task.js +162 -77
  99. package/dist/runtime/index.js +1075 -258
  100. package/dist/tui/App.js +1333 -506
  101. package/package.json +6 -1
  102. package/src/commands/exe/agent-config.md +27 -0
  103. package/src/commands/exe/cc-doctor.md +10 -0
@@ -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);
@@ -1080,6 +1089,7 @@ import { realpathSync } from "fs";
1080
1089
  import { fileURLToPath } from "url";
1081
1090
  function isMainModule(importMetaUrl) {
1082
1091
  if (process.argv[1] == null) return false;
1092
+ if (process.argv[1].includes("mcp/server")) return false;
1083
1093
  try {
1084
1094
  const scriptPath = realpathSync(process.argv[1]);
1085
1095
  const modulePath = realpathSync(fileURLToPath(importMetaUrl));
@@ -46,12 +46,20 @@ async function getMasterKey() {
46
46
  }
47
47
  const keyPath = getKeyPath();
48
48
  if (!existsSync(keyPath)) {
49
+ process.stderr.write(
50
+ `[keychain] Key not found at ${keyPath} (HOME=${os.homedir()}, EXE_OS_DIR=${process.env.EXE_OS_DIR ?? "unset"})
51
+ `
52
+ );
49
53
  return null;
50
54
  }
51
55
  try {
52
56
  const content = await readFile(keyPath, "utf-8");
53
57
  return Buffer.from(content.trim(), "base64");
54
- } catch {
58
+ } catch (err) {
59
+ process.stderr.write(
60
+ `[keychain] Key read failed at ${keyPath}: ${err instanceof Error ? err.message : String(err)}
61
+ `
62
+ );
55
63
  return null;
56
64
  }
57
65
  }
@@ -720,6 +728,19 @@ MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEeHztAMOpR/ZMh+rWuOASjEZ54CGY
720
728
  }
721
729
  });
722
730
 
731
+ // src/lib/crdt-sync.ts
732
+ import * as Y from "yjs";
733
+ import { readFileSync as readFileSync4, writeFileSync as writeFileSync3, existsSync as existsSync5, mkdirSync as mkdirSync2, unlinkSync as unlinkSync2 } from "fs";
734
+ import path5 from "path";
735
+ import { homedir } from "os";
736
+ var DEFAULT_STATE_PATH;
737
+ var init_crdt_sync = __esm({
738
+ "src/lib/crdt-sync.ts"() {
739
+ "use strict";
740
+ DEFAULT_STATE_PATH = path5.join(homedir(), ".exe-os", "crdt-state.bin");
741
+ }
742
+ });
743
+
723
744
  // src/bin/exe-cloud.ts
724
745
  init_keychain();
725
746
  init_config();
@@ -745,6 +766,7 @@ import { realpathSync } from "fs";
745
766
  import { fileURLToPath } from "url";
746
767
  function isMainModule(importMetaUrl) {
747
768
  if (process.argv[1] == null) return false;
769
+ if (process.argv[1].includes("mcp/server")) return false;
748
770
  try {
749
771
  const scriptPath = realpathSync(process.argv[1]);
750
772
  const modulePath = realpathSync(fileURLToPath(importMetaUrl));
@@ -756,10 +778,10 @@ function isMainModule(importMetaUrl) {
756
778
 
757
779
  // src/lib/cloud-sync.ts
758
780
  init_database();
759
- import { readFileSync as readFileSync4, writeFileSync as writeFileSync3, existsSync as existsSync5, readdirSync, mkdirSync as mkdirSync2, appendFileSync, unlinkSync as unlinkSync2, openSync, closeSync } from "fs";
781
+ import { readFileSync as readFileSync5, writeFileSync as writeFileSync4, existsSync as existsSync6, readdirSync, mkdirSync as mkdirSync3, appendFileSync, unlinkSync as unlinkSync3, openSync, closeSync } from "fs";
760
782
  import crypto3 from "crypto";
761
- import path5 from "path";
762
- import { homedir } from "os";
783
+ import path6 from "path";
784
+ import { homedir as homedir2 } from "os";
763
785
 
764
786
  // src/lib/crypto.ts
765
787
  import crypto2 from "crypto";
@@ -770,9 +792,10 @@ import { brotliCompressSync, brotliDecompressSync, constants } from "zlib";
770
792
  // src/lib/cloud-sync.ts
771
793
  init_license();
772
794
  init_config();
795
+ init_crdt_sync();
773
796
  init_employees();
774
797
  var LOCALHOST_PATTERNS = /^(localhost|127\.0\.0\.1|\[::1\])$/i;
775
- var ROSTER_LOCK_PATH = path5.join(EXE_AI_DIR, "roster-merge.lock");
798
+ var ROSTER_LOCK_PATH = path6.join(EXE_AI_DIR, "roster-merge.lock");
776
799
  function assertSecureEndpoint(endpoint) {
777
800
  if (endpoint.startsWith("https://")) return;
778
801
  if (endpoint.startsWith("http://")) {
@@ -787,7 +810,7 @@ function assertSecureEndpoint(endpoint) {
787
810
  );
788
811
  }
789
812
  }
790
- var ROSTER_DELETIONS_PATH = path5.join(EXE_AI_DIR, "roster-deletions.json");
813
+ var ROSTER_DELETIONS_PATH = path6.join(EXE_AI_DIR, "roster-deletions.json");
791
814
 
792
815
  // src/bin/exe-cloud.ts
793
816
  var BAR = "\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550";