@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
@@ -1,18 +1,7 @@
1
- // src/mcp/tools/complete-reminder.ts
2
- import { z } from "zod";
3
-
4
- // src/lib/reminders.ts
5
- import crypto from "crypto";
6
-
7
- // src/lib/database.ts
8
- import { createClient } from "@libsql/client";
9
-
10
- // src/lib/employees.ts
11
- import { readFile as readFile2, writeFile as writeFile2, mkdir as mkdir2 } from "fs/promises";
12
- import { existsSync as existsSync2, symlinkSync, readlinkSync, readFileSync as readFileSync2, renameSync as renameSync2, unlinkSync, writeFileSync } from "fs";
13
- import { execSync } from "child_process";
14
- import path2 from "path";
15
- import os2 from "os";
1
+ var __getOwnPropNames = Object.getOwnPropertyNames;
2
+ var __esm = (fn, res) => function __init() {
3
+ return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
4
+ };
16
5
 
17
6
  // src/lib/config.ts
18
7
  import { readFile, writeFile, mkdir, chmod } from "fs/promises";
@@ -35,79 +24,107 @@ function resolveDataDir() {
35
24
  }
36
25
  return newDir;
37
26
  }
38
- var EXE_AI_DIR = resolveDataDir();
39
- var DB_PATH = path.join(EXE_AI_DIR, "memories.db");
40
- var MODELS_DIR = path.join(EXE_AI_DIR, "models");
41
- var CONFIG_PATH = path.join(EXE_AI_DIR, "config.json");
42
- var LEGACY_LANCE_PATH = path.join(EXE_AI_DIR, "local.lance");
43
- var CURRENT_CONFIG_VERSION = 1;
44
- var DEFAULT_CONFIG = {
45
- config_version: CURRENT_CONFIG_VERSION,
46
- dbPath: DB_PATH,
47
- modelFile: "jina-embeddings-v5-small-q4_k_m.gguf",
48
- embeddingDim: 1024,
49
- batchSize: 20,
50
- flushIntervalMs: 1e4,
51
- autoIngestion: true,
52
- autoRetrieval: true,
53
- searchMode: "hybrid",
54
- hookSearchMode: "hybrid",
55
- fileGrepEnabled: true,
56
- splashEffect: true,
57
- consolidationEnabled: true,
58
- consolidationIntervalMs: 6 * 60 * 60 * 1e3,
59
- consolidationModel: "claude-haiku-4-5-20251001",
60
- consolidationMaxCallsPerRun: 20,
61
- selfQueryRouter: true,
62
- selfQueryModel: "claude-haiku-4-5-20251001",
63
- rerankerEnabled: true,
64
- scalingRoadmap: {
65
- rerankerAutoTrigger: {
66
- enabled: true,
67
- broadQueryMinCardinality: 5e4,
68
- fetchTopK: 150,
69
- returnTopK: 5
70
- }
71
- },
72
- graphRagEnabled: true,
73
- wikiEnabled: false,
74
- wikiUrl: "",
75
- wikiApiKey: "",
76
- wikiSyncIntervalMs: 30 * 60 * 1e3,
77
- wikiWorkspaceMapping: {},
78
- wikiAutoUpdate: true,
79
- wikiAutoUpdateThreshold: 0.5,
80
- wikiAutoUpdateCreateNew: true,
81
- skillLearning: true,
82
- skillThreshold: 3,
83
- skillModel: "claude-haiku-4-5-20251001",
84
- exeHeartbeat: {
85
- enabled: true,
86
- intervalSeconds: 60,
87
- staleInProgressThresholdHours: 2
88
- },
89
- sessionLifecycle: {
90
- idleKillEnabled: true,
91
- idleKillTicksRequired: 3,
92
- idleKillIntercomAckWindowMs: 1e4,
93
- maxAutoInstances: 10
94
- },
95
- autoUpdate: {
96
- checkOnBoot: true,
97
- autoInstall: false,
98
- checkIntervalMs: 24 * 60 * 60 * 1e3
27
+ var EXE_AI_DIR, DB_PATH, MODELS_DIR, CONFIG_PATH, LEGACY_LANCE_PATH, CURRENT_CONFIG_VERSION, DEFAULT_CONFIG;
28
+ var init_config = __esm({
29
+ "src/lib/config.ts"() {
30
+ "use strict";
31
+ EXE_AI_DIR = resolveDataDir();
32
+ DB_PATH = path.join(EXE_AI_DIR, "memories.db");
33
+ MODELS_DIR = path.join(EXE_AI_DIR, "models");
34
+ CONFIG_PATH = path.join(EXE_AI_DIR, "config.json");
35
+ LEGACY_LANCE_PATH = path.join(EXE_AI_DIR, "local.lance");
36
+ CURRENT_CONFIG_VERSION = 1;
37
+ DEFAULT_CONFIG = {
38
+ config_version: CURRENT_CONFIG_VERSION,
39
+ dbPath: DB_PATH,
40
+ modelFile: "jina-embeddings-v5-small-q4_k_m.gguf",
41
+ embeddingDim: 1024,
42
+ batchSize: 20,
43
+ flushIntervalMs: 1e4,
44
+ autoIngestion: true,
45
+ autoRetrieval: true,
46
+ searchMode: "hybrid",
47
+ hookSearchMode: "hybrid",
48
+ fileGrepEnabled: true,
49
+ splashEffect: true,
50
+ consolidationEnabled: true,
51
+ consolidationIntervalMs: 6 * 60 * 60 * 1e3,
52
+ consolidationModel: "claude-haiku-4-5-20251001",
53
+ consolidationMaxCallsPerRun: 20,
54
+ selfQueryRouter: true,
55
+ selfQueryModel: "claude-haiku-4-5-20251001",
56
+ rerankerEnabled: true,
57
+ scalingRoadmap: {
58
+ rerankerAutoTrigger: {
59
+ enabled: true,
60
+ broadQueryMinCardinality: 5e4,
61
+ fetchTopK: 150,
62
+ returnTopK: 5
63
+ }
64
+ },
65
+ graphRagEnabled: true,
66
+ wikiEnabled: false,
67
+ wikiUrl: "",
68
+ wikiApiKey: "",
69
+ wikiSyncIntervalMs: 30 * 60 * 1e3,
70
+ wikiWorkspaceMapping: {},
71
+ wikiAutoUpdate: true,
72
+ wikiAutoUpdateThreshold: 0.5,
73
+ wikiAutoUpdateCreateNew: true,
74
+ skillLearning: true,
75
+ skillThreshold: 3,
76
+ skillModel: "claude-haiku-4-5-20251001",
77
+ exeHeartbeat: {
78
+ enabled: true,
79
+ intervalSeconds: 60,
80
+ staleInProgressThresholdHours: 2
81
+ },
82
+ sessionLifecycle: {
83
+ idleKillEnabled: true,
84
+ idleKillTicksRequired: 3,
85
+ idleKillIntercomAckWindowMs: 1e4,
86
+ maxAutoInstances: 10
87
+ },
88
+ autoUpdate: {
89
+ checkOnBoot: true,
90
+ autoInstall: false,
91
+ checkIntervalMs: 24 * 60 * 60 * 1e3
92
+ }
93
+ };
99
94
  }
100
- };
95
+ });
96
+
97
+ // src/mcp/tools/complete-reminder.ts
98
+ import { z } from "zod";
99
+
100
+ // src/lib/reminders.ts
101
+ import crypto from "crypto";
102
+
103
+ // src/lib/database.ts
104
+ import { createClient } from "@libsql/client";
101
105
 
102
106
  // src/lib/employees.ts
107
+ init_config();
108
+ import { readFile as readFile2, writeFile as writeFile2, mkdir as mkdir2 } from "fs/promises";
109
+ import { existsSync as existsSync2, symlinkSync, readlinkSync, readFileSync as readFileSync2, renameSync as renameSync2, unlinkSync, writeFileSync } from "fs";
110
+ import { execSync } from "child_process";
111
+ import path2 from "path";
112
+ import os2 from "os";
103
113
  var EMPLOYEES_PATH = path2.join(EXE_AI_DIR, "exe-employees.json");
104
114
 
105
115
  // src/lib/database.ts
106
116
  var _resilientClient = null;
117
+ var _daemonClient = null;
107
118
  function getClient() {
108
119
  if (!_resilientClient) {
109
120
  throw new Error("Database client not initialized. Call initDatabase() first.");
110
121
  }
122
+ if (process.env.EXE_IS_DAEMON === "1") {
123
+ return _resilientClient;
124
+ }
125
+ if (_daemonClient && _daemonClient._isDaemonActive()) {
126
+ return _daemonClient;
127
+ }
111
128
  return _resilientClient;
112
129
  }
113
130
 
@@ -1,18 +1,7 @@
1
- // src/mcp/tools/create-reminder.ts
2
- import { z } from "zod";
3
-
4
- // src/lib/reminders.ts
5
- import crypto from "crypto";
6
-
7
- // src/lib/database.ts
8
- import { createClient } from "@libsql/client";
9
-
10
- // src/lib/employees.ts
11
- import { readFile as readFile2, writeFile as writeFile2, mkdir as mkdir2 } from "fs/promises";
12
- import { existsSync as existsSync2, symlinkSync, readlinkSync, readFileSync as readFileSync2, renameSync as renameSync2, unlinkSync, writeFileSync } from "fs";
13
- import { execSync } from "child_process";
14
- import path2 from "path";
15
- import os2 from "os";
1
+ var __getOwnPropNames = Object.getOwnPropertyNames;
2
+ var __esm = (fn, res) => function __init() {
3
+ return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
4
+ };
16
5
 
17
6
  // src/lib/config.ts
18
7
  import { readFile, writeFile, mkdir, chmod } from "fs/promises";
@@ -35,79 +24,107 @@ function resolveDataDir() {
35
24
  }
36
25
  return newDir;
37
26
  }
38
- var EXE_AI_DIR = resolveDataDir();
39
- var DB_PATH = path.join(EXE_AI_DIR, "memories.db");
40
- var MODELS_DIR = path.join(EXE_AI_DIR, "models");
41
- var CONFIG_PATH = path.join(EXE_AI_DIR, "config.json");
42
- var LEGACY_LANCE_PATH = path.join(EXE_AI_DIR, "local.lance");
43
- var CURRENT_CONFIG_VERSION = 1;
44
- var DEFAULT_CONFIG = {
45
- config_version: CURRENT_CONFIG_VERSION,
46
- dbPath: DB_PATH,
47
- modelFile: "jina-embeddings-v5-small-q4_k_m.gguf",
48
- embeddingDim: 1024,
49
- batchSize: 20,
50
- flushIntervalMs: 1e4,
51
- autoIngestion: true,
52
- autoRetrieval: true,
53
- searchMode: "hybrid",
54
- hookSearchMode: "hybrid",
55
- fileGrepEnabled: true,
56
- splashEffect: true,
57
- consolidationEnabled: true,
58
- consolidationIntervalMs: 6 * 60 * 60 * 1e3,
59
- consolidationModel: "claude-haiku-4-5-20251001",
60
- consolidationMaxCallsPerRun: 20,
61
- selfQueryRouter: true,
62
- selfQueryModel: "claude-haiku-4-5-20251001",
63
- rerankerEnabled: true,
64
- scalingRoadmap: {
65
- rerankerAutoTrigger: {
66
- enabled: true,
67
- broadQueryMinCardinality: 5e4,
68
- fetchTopK: 150,
69
- returnTopK: 5
70
- }
71
- },
72
- graphRagEnabled: true,
73
- wikiEnabled: false,
74
- wikiUrl: "",
75
- wikiApiKey: "",
76
- wikiSyncIntervalMs: 30 * 60 * 1e3,
77
- wikiWorkspaceMapping: {},
78
- wikiAutoUpdate: true,
79
- wikiAutoUpdateThreshold: 0.5,
80
- wikiAutoUpdateCreateNew: true,
81
- skillLearning: true,
82
- skillThreshold: 3,
83
- skillModel: "claude-haiku-4-5-20251001",
84
- exeHeartbeat: {
85
- enabled: true,
86
- intervalSeconds: 60,
87
- staleInProgressThresholdHours: 2
88
- },
89
- sessionLifecycle: {
90
- idleKillEnabled: true,
91
- idleKillTicksRequired: 3,
92
- idleKillIntercomAckWindowMs: 1e4,
93
- maxAutoInstances: 10
94
- },
95
- autoUpdate: {
96
- checkOnBoot: true,
97
- autoInstall: false,
98
- checkIntervalMs: 24 * 60 * 60 * 1e3
27
+ var EXE_AI_DIR, DB_PATH, MODELS_DIR, CONFIG_PATH, LEGACY_LANCE_PATH, CURRENT_CONFIG_VERSION, DEFAULT_CONFIG;
28
+ var init_config = __esm({
29
+ "src/lib/config.ts"() {
30
+ "use strict";
31
+ EXE_AI_DIR = resolveDataDir();
32
+ DB_PATH = path.join(EXE_AI_DIR, "memories.db");
33
+ MODELS_DIR = path.join(EXE_AI_DIR, "models");
34
+ CONFIG_PATH = path.join(EXE_AI_DIR, "config.json");
35
+ LEGACY_LANCE_PATH = path.join(EXE_AI_DIR, "local.lance");
36
+ CURRENT_CONFIG_VERSION = 1;
37
+ DEFAULT_CONFIG = {
38
+ config_version: CURRENT_CONFIG_VERSION,
39
+ dbPath: DB_PATH,
40
+ modelFile: "jina-embeddings-v5-small-q4_k_m.gguf",
41
+ embeddingDim: 1024,
42
+ batchSize: 20,
43
+ flushIntervalMs: 1e4,
44
+ autoIngestion: true,
45
+ autoRetrieval: true,
46
+ searchMode: "hybrid",
47
+ hookSearchMode: "hybrid",
48
+ fileGrepEnabled: true,
49
+ splashEffect: true,
50
+ consolidationEnabled: true,
51
+ consolidationIntervalMs: 6 * 60 * 60 * 1e3,
52
+ consolidationModel: "claude-haiku-4-5-20251001",
53
+ consolidationMaxCallsPerRun: 20,
54
+ selfQueryRouter: true,
55
+ selfQueryModel: "claude-haiku-4-5-20251001",
56
+ rerankerEnabled: true,
57
+ scalingRoadmap: {
58
+ rerankerAutoTrigger: {
59
+ enabled: true,
60
+ broadQueryMinCardinality: 5e4,
61
+ fetchTopK: 150,
62
+ returnTopK: 5
63
+ }
64
+ },
65
+ graphRagEnabled: true,
66
+ wikiEnabled: false,
67
+ wikiUrl: "",
68
+ wikiApiKey: "",
69
+ wikiSyncIntervalMs: 30 * 60 * 1e3,
70
+ wikiWorkspaceMapping: {},
71
+ wikiAutoUpdate: true,
72
+ wikiAutoUpdateThreshold: 0.5,
73
+ wikiAutoUpdateCreateNew: true,
74
+ skillLearning: true,
75
+ skillThreshold: 3,
76
+ skillModel: "claude-haiku-4-5-20251001",
77
+ exeHeartbeat: {
78
+ enabled: true,
79
+ intervalSeconds: 60,
80
+ staleInProgressThresholdHours: 2
81
+ },
82
+ sessionLifecycle: {
83
+ idleKillEnabled: true,
84
+ idleKillTicksRequired: 3,
85
+ idleKillIntercomAckWindowMs: 1e4,
86
+ maxAutoInstances: 10
87
+ },
88
+ autoUpdate: {
89
+ checkOnBoot: true,
90
+ autoInstall: false,
91
+ checkIntervalMs: 24 * 60 * 60 * 1e3
92
+ }
93
+ };
99
94
  }
100
- };
95
+ });
96
+
97
+ // src/mcp/tools/create-reminder.ts
98
+ import { z } from "zod";
99
+
100
+ // src/lib/reminders.ts
101
+ import crypto from "crypto";
102
+
103
+ // src/lib/database.ts
104
+ import { createClient } from "@libsql/client";
101
105
 
102
106
  // src/lib/employees.ts
107
+ init_config();
108
+ import { readFile as readFile2, writeFile as writeFile2, mkdir as mkdir2 } from "fs/promises";
109
+ import { existsSync as existsSync2, symlinkSync, readlinkSync, readFileSync as readFileSync2, renameSync as renameSync2, unlinkSync, writeFileSync } from "fs";
110
+ import { execSync } from "child_process";
111
+ import path2 from "path";
112
+ import os2 from "os";
103
113
  var EMPLOYEES_PATH = path2.join(EXE_AI_DIR, "exe-employees.json");
104
114
 
105
115
  // src/lib/database.ts
106
116
  var _resilientClient = null;
117
+ var _daemonClient = null;
107
118
  function getClient() {
108
119
  if (!_resilientClient) {
109
120
  throw new Error("Database client not initialized. Call initDatabase() first.");
110
121
  }
122
+ if (process.env.EXE_IS_DAEMON === "1") {
123
+ return _resilientClient;
124
+ }
125
+ if (_daemonClient && _daemonClient._isDaemonActive()) {
126
+ return _daemonClient;
127
+ }
111
128
  return _resilientClient;
112
129
  }
113
130