@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.
- package/dist/bin/backfill-conversations.js +746 -595
- package/dist/bin/backfill-responses.js +745 -594
- package/dist/bin/backfill-vectors.js +312 -226
- package/dist/bin/cleanup-stale-review-tasks.js +97 -2
- package/dist/bin/cli.js +14350 -12518
- package/dist/bin/exe-agent.js +97 -88
- package/dist/bin/exe-assign.js +1003 -854
- package/dist/bin/exe-boot.js +1257 -320
- package/dist/bin/exe-call.js +10 -0
- package/dist/bin/exe-cloud.js +29 -6
- package/dist/bin/exe-dispatch.js +210 -34
- package/dist/bin/exe-doctor.js +403 -6
- package/dist/bin/exe-export-behaviors.js +175 -72
- package/dist/bin/exe-forget.js +97 -2
- package/dist/bin/exe-gateway.js +550 -171
- package/dist/bin/exe-healthcheck.js +1 -0
- package/dist/bin/exe-heartbeat.js +100 -5
- package/dist/bin/exe-kill.js +175 -72
- package/dist/bin/exe-launch-agent.js +189 -76
- package/dist/bin/exe-link.js +902 -80
- package/dist/bin/exe-new-employee.js +38 -8
- package/dist/bin/exe-pending-messages.js +96 -2
- package/dist/bin/exe-pending-notifications.js +97 -2
- package/dist/bin/exe-pending-reviews.js +98 -3
- package/dist/bin/exe-rename.js +564 -23
- package/dist/bin/exe-review.js +231 -73
- package/dist/bin/exe-search.js +989 -226
- package/dist/bin/exe-session-cleanup.js +4806 -1665
- package/dist/bin/exe-settings.js +20 -5
- package/dist/bin/exe-status.js +97 -2
- package/dist/bin/exe-team.js +97 -2
- package/dist/bin/git-sweep.js +899 -207
- package/dist/bin/graph-backfill.js +175 -72
- package/dist/bin/graph-export.js +175 -72
- package/dist/bin/install.js +38 -7
- package/dist/bin/list-providers.js +1 -0
- package/dist/bin/scan-tasks.js +904 -211
- package/dist/bin/setup.js +867 -268
- package/dist/bin/shard-migrate.js +175 -72
- package/dist/bin/update.js +1 -0
- package/dist/bin/wiki-sync.js +175 -72
- package/dist/gateway/index.js +548 -166
- package/dist/hooks/bug-report-worker.js +208 -23
- package/dist/hooks/commit-complete.js +897 -205
- package/dist/hooks/error-recall.js +988 -226
- package/dist/hooks/ingest-worker.js +1638 -1194
- package/dist/hooks/ingest.js +3 -0
- package/dist/hooks/instructions-loaded.js +707 -97
- package/dist/hooks/notification.js +699 -89
- package/dist/hooks/post-compact.js +714 -104
- package/dist/hooks/pre-compact.js +897 -205
- package/dist/hooks/pre-tool-use.js +742 -123
- package/dist/hooks/prompt-ingest-worker.js +242 -101
- package/dist/hooks/prompt-submit.js +995 -233
- package/dist/hooks/response-ingest-worker.js +242 -101
- package/dist/hooks/session-end.js +3941 -400
- package/dist/hooks/session-start.js +1001 -226
- package/dist/hooks/stop.js +725 -115
- package/dist/hooks/subagent-stop.js +714 -104
- package/dist/hooks/summary-worker.js +1964 -1330
- package/dist/index.js +1651 -1053
- package/dist/lib/cloud-sync.js +907 -86
- package/dist/lib/consolidation.js +2 -1
- package/dist/lib/database.js +642 -87
- package/dist/lib/db-daemon-client.js +503 -0
- package/dist/lib/device-registry.js +547 -7
- package/dist/lib/embedder.js +14 -28
- package/dist/lib/employee-templates.js +84 -74
- package/dist/lib/employees.js +9 -0
- package/dist/lib/exe-daemon-client.js +16 -29
- package/dist/lib/exe-daemon.js +1955 -922
- package/dist/lib/hybrid-search.js +988 -226
- package/dist/lib/identity.js +87 -67
- package/dist/lib/keychain.js +9 -1
- package/dist/lib/messaging.js +8 -1
- package/dist/lib/reminders.js +91 -74
- package/dist/lib/schedules.js +96 -2
- package/dist/lib/skill-learning.js +103 -85
- package/dist/lib/store.js +234 -73
- package/dist/lib/tasks.js +111 -22
- package/dist/lib/tmux-routing.js +120 -31
- package/dist/lib/token-spend.js +273 -0
- package/dist/lib/ws-client.js +11 -0
- package/dist/mcp/server.js +5222 -475
- package/dist/mcp/tools/complete-reminder.js +94 -77
- package/dist/mcp/tools/create-reminder.js +94 -77
- package/dist/mcp/tools/create-task.js +120 -22
- package/dist/mcp/tools/deactivate-behavior.js +95 -77
- package/dist/mcp/tools/list-reminders.js +94 -77
- package/dist/mcp/tools/list-tasks.js +31 -1
- package/dist/mcp/tools/send-message.js +8 -1
- package/dist/mcp/tools/update-task.js +39 -10
- package/dist/runtime/index.js +911 -219
- package/dist/tui/App.js +997 -295
- package/package.json +6 -1
package/dist/bin/exe-agent.js
CHANGED
|
@@ -1,4 +1,99 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
3
|
+
var __esm = (fn, res) => function __init() {
|
|
4
|
+
return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
|
|
5
|
+
};
|
|
6
|
+
|
|
7
|
+
// src/lib/config.ts
|
|
8
|
+
import { readFile, writeFile, mkdir, chmod } from "fs/promises";
|
|
9
|
+
import { readFileSync, existsSync, renameSync } from "fs";
|
|
10
|
+
import path from "path";
|
|
11
|
+
import os from "os";
|
|
12
|
+
function resolveDataDir() {
|
|
13
|
+
if (process.env.EXE_OS_DIR) return process.env.EXE_OS_DIR;
|
|
14
|
+
if (process.env.EXE_MEM_DIR) return process.env.EXE_MEM_DIR;
|
|
15
|
+
const newDir = path.join(os.homedir(), ".exe-os");
|
|
16
|
+
const legacyDir = path.join(os.homedir(), ".exe-mem");
|
|
17
|
+
if (!existsSync(newDir) && existsSync(legacyDir)) {
|
|
18
|
+
try {
|
|
19
|
+
renameSync(legacyDir, newDir);
|
|
20
|
+
process.stderr.write(`[exe-os] Migrated data directory: ~/.exe-mem \u2192 ~/.exe-os
|
|
21
|
+
`);
|
|
22
|
+
} catch {
|
|
23
|
+
return legacyDir;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
return newDir;
|
|
27
|
+
}
|
|
28
|
+
var EXE_AI_DIR, DB_PATH, MODELS_DIR, CONFIG_PATH, LEGACY_LANCE_PATH, CURRENT_CONFIG_VERSION, DEFAULT_CONFIG;
|
|
29
|
+
var init_config = __esm({
|
|
30
|
+
"src/lib/config.ts"() {
|
|
31
|
+
"use strict";
|
|
32
|
+
EXE_AI_DIR = resolveDataDir();
|
|
33
|
+
DB_PATH = path.join(EXE_AI_DIR, "memories.db");
|
|
34
|
+
MODELS_DIR = path.join(EXE_AI_DIR, "models");
|
|
35
|
+
CONFIG_PATH = path.join(EXE_AI_DIR, "config.json");
|
|
36
|
+
LEGACY_LANCE_PATH = path.join(EXE_AI_DIR, "local.lance");
|
|
37
|
+
CURRENT_CONFIG_VERSION = 1;
|
|
38
|
+
DEFAULT_CONFIG = {
|
|
39
|
+
config_version: CURRENT_CONFIG_VERSION,
|
|
40
|
+
dbPath: DB_PATH,
|
|
41
|
+
modelFile: "jina-embeddings-v5-small-q4_k_m.gguf",
|
|
42
|
+
embeddingDim: 1024,
|
|
43
|
+
batchSize: 20,
|
|
44
|
+
flushIntervalMs: 1e4,
|
|
45
|
+
autoIngestion: true,
|
|
46
|
+
autoRetrieval: true,
|
|
47
|
+
searchMode: "hybrid",
|
|
48
|
+
hookSearchMode: "hybrid",
|
|
49
|
+
fileGrepEnabled: true,
|
|
50
|
+
splashEffect: true,
|
|
51
|
+
consolidationEnabled: true,
|
|
52
|
+
consolidationIntervalMs: 6 * 60 * 60 * 1e3,
|
|
53
|
+
consolidationModel: "claude-haiku-4-5-20251001",
|
|
54
|
+
consolidationMaxCallsPerRun: 20,
|
|
55
|
+
selfQueryRouter: true,
|
|
56
|
+
selfQueryModel: "claude-haiku-4-5-20251001",
|
|
57
|
+
rerankerEnabled: true,
|
|
58
|
+
scalingRoadmap: {
|
|
59
|
+
rerankerAutoTrigger: {
|
|
60
|
+
enabled: true,
|
|
61
|
+
broadQueryMinCardinality: 5e4,
|
|
62
|
+
fetchTopK: 150,
|
|
63
|
+
returnTopK: 5
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
graphRagEnabled: true,
|
|
67
|
+
wikiEnabled: false,
|
|
68
|
+
wikiUrl: "",
|
|
69
|
+
wikiApiKey: "",
|
|
70
|
+
wikiSyncIntervalMs: 30 * 60 * 1e3,
|
|
71
|
+
wikiWorkspaceMapping: {},
|
|
72
|
+
wikiAutoUpdate: true,
|
|
73
|
+
wikiAutoUpdateThreshold: 0.5,
|
|
74
|
+
wikiAutoUpdateCreateNew: true,
|
|
75
|
+
skillLearning: true,
|
|
76
|
+
skillThreshold: 3,
|
|
77
|
+
skillModel: "claude-haiku-4-5-20251001",
|
|
78
|
+
exeHeartbeat: {
|
|
79
|
+
enabled: true,
|
|
80
|
+
intervalSeconds: 60,
|
|
81
|
+
staleInProgressThresholdHours: 2
|
|
82
|
+
},
|
|
83
|
+
sessionLifecycle: {
|
|
84
|
+
idleKillEnabled: true,
|
|
85
|
+
idleKillTicksRequired: 3,
|
|
86
|
+
idleKillIntercomAckWindowMs: 1e4,
|
|
87
|
+
maxAutoInstances: 10
|
|
88
|
+
},
|
|
89
|
+
autoUpdate: {
|
|
90
|
+
checkOnBoot: true,
|
|
91
|
+
autoInstall: false,
|
|
92
|
+
checkIntervalMs: 24 * 60 * 60 * 1e3
|
|
93
|
+
}
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
});
|
|
2
97
|
|
|
3
98
|
// src/bin/exe-agent.ts
|
|
4
99
|
import { createInterface } from "readline";
|
|
@@ -1151,98 +1246,12 @@ import { randomUUID as randomUUID3 } from "crypto";
|
|
|
1151
1246
|
import { createClient } from "@libsql/client";
|
|
1152
1247
|
|
|
1153
1248
|
// src/lib/employees.ts
|
|
1249
|
+
init_config();
|
|
1154
1250
|
import { readFile as readFile2, writeFile as writeFile2, mkdir as mkdir2 } from "fs/promises";
|
|
1155
1251
|
import { existsSync as existsSync2, symlinkSync, readlinkSync, readFileSync as readFileSync2, renameSync as renameSync2, unlinkSync, writeFileSync } from "fs";
|
|
1156
1252
|
import { execSync } from "child_process";
|
|
1157
1253
|
import path2 from "path";
|
|
1158
1254
|
import os2 from "os";
|
|
1159
|
-
|
|
1160
|
-
// src/lib/config.ts
|
|
1161
|
-
import { readFile, writeFile, mkdir, chmod } from "fs/promises";
|
|
1162
|
-
import { readFileSync, existsSync, renameSync } from "fs";
|
|
1163
|
-
import path from "path";
|
|
1164
|
-
import os from "os";
|
|
1165
|
-
function resolveDataDir() {
|
|
1166
|
-
if (process.env.EXE_OS_DIR) return process.env.EXE_OS_DIR;
|
|
1167
|
-
if (process.env.EXE_MEM_DIR) return process.env.EXE_MEM_DIR;
|
|
1168
|
-
const newDir = path.join(os.homedir(), ".exe-os");
|
|
1169
|
-
const legacyDir = path.join(os.homedir(), ".exe-mem");
|
|
1170
|
-
if (!existsSync(newDir) && existsSync(legacyDir)) {
|
|
1171
|
-
try {
|
|
1172
|
-
renameSync(legacyDir, newDir);
|
|
1173
|
-
process.stderr.write(`[exe-os] Migrated data directory: ~/.exe-mem \u2192 ~/.exe-os
|
|
1174
|
-
`);
|
|
1175
|
-
} catch {
|
|
1176
|
-
return legacyDir;
|
|
1177
|
-
}
|
|
1178
|
-
}
|
|
1179
|
-
return newDir;
|
|
1180
|
-
}
|
|
1181
|
-
var EXE_AI_DIR = resolveDataDir();
|
|
1182
|
-
var DB_PATH = path.join(EXE_AI_DIR, "memories.db");
|
|
1183
|
-
var MODELS_DIR = path.join(EXE_AI_DIR, "models");
|
|
1184
|
-
var CONFIG_PATH = path.join(EXE_AI_DIR, "config.json");
|
|
1185
|
-
var LEGACY_LANCE_PATH = path.join(EXE_AI_DIR, "local.lance");
|
|
1186
|
-
var CURRENT_CONFIG_VERSION = 1;
|
|
1187
|
-
var DEFAULT_CONFIG = {
|
|
1188
|
-
config_version: CURRENT_CONFIG_VERSION,
|
|
1189
|
-
dbPath: DB_PATH,
|
|
1190
|
-
modelFile: "jina-embeddings-v5-small-q4_k_m.gguf",
|
|
1191
|
-
embeddingDim: 1024,
|
|
1192
|
-
batchSize: 20,
|
|
1193
|
-
flushIntervalMs: 1e4,
|
|
1194
|
-
autoIngestion: true,
|
|
1195
|
-
autoRetrieval: true,
|
|
1196
|
-
searchMode: "hybrid",
|
|
1197
|
-
hookSearchMode: "hybrid",
|
|
1198
|
-
fileGrepEnabled: true,
|
|
1199
|
-
splashEffect: true,
|
|
1200
|
-
consolidationEnabled: true,
|
|
1201
|
-
consolidationIntervalMs: 6 * 60 * 60 * 1e3,
|
|
1202
|
-
consolidationModel: "claude-haiku-4-5-20251001",
|
|
1203
|
-
consolidationMaxCallsPerRun: 20,
|
|
1204
|
-
selfQueryRouter: true,
|
|
1205
|
-
selfQueryModel: "claude-haiku-4-5-20251001",
|
|
1206
|
-
rerankerEnabled: true,
|
|
1207
|
-
scalingRoadmap: {
|
|
1208
|
-
rerankerAutoTrigger: {
|
|
1209
|
-
enabled: true,
|
|
1210
|
-
broadQueryMinCardinality: 5e4,
|
|
1211
|
-
fetchTopK: 150,
|
|
1212
|
-
returnTopK: 5
|
|
1213
|
-
}
|
|
1214
|
-
},
|
|
1215
|
-
graphRagEnabled: true,
|
|
1216
|
-
wikiEnabled: false,
|
|
1217
|
-
wikiUrl: "",
|
|
1218
|
-
wikiApiKey: "",
|
|
1219
|
-
wikiSyncIntervalMs: 30 * 60 * 1e3,
|
|
1220
|
-
wikiWorkspaceMapping: {},
|
|
1221
|
-
wikiAutoUpdate: true,
|
|
1222
|
-
wikiAutoUpdateThreshold: 0.5,
|
|
1223
|
-
wikiAutoUpdateCreateNew: true,
|
|
1224
|
-
skillLearning: true,
|
|
1225
|
-
skillThreshold: 3,
|
|
1226
|
-
skillModel: "claude-haiku-4-5-20251001",
|
|
1227
|
-
exeHeartbeat: {
|
|
1228
|
-
enabled: true,
|
|
1229
|
-
intervalSeconds: 60,
|
|
1230
|
-
staleInProgressThresholdHours: 2
|
|
1231
|
-
},
|
|
1232
|
-
sessionLifecycle: {
|
|
1233
|
-
idleKillEnabled: true,
|
|
1234
|
-
idleKillTicksRequired: 3,
|
|
1235
|
-
idleKillIntercomAckWindowMs: 1e4,
|
|
1236
|
-
maxAutoInstances: 10
|
|
1237
|
-
},
|
|
1238
|
-
autoUpdate: {
|
|
1239
|
-
checkOnBoot: true,
|
|
1240
|
-
autoInstall: false,
|
|
1241
|
-
checkIntervalMs: 24 * 60 * 60 * 1e3
|
|
1242
|
-
}
|
|
1243
|
-
};
|
|
1244
|
-
|
|
1245
|
-
// src/lib/employees.ts
|
|
1246
1255
|
var EMPLOYEES_PATH = path2.join(EXE_AI_DIR, "exe-employees.json");
|
|
1247
1256
|
|
|
1248
1257
|
// src/lib/platform-procedures.ts
|
|
@@ -2171,7 +2180,7 @@ function createProvider(args) {
|
|
|
2171
2180
|
});
|
|
2172
2181
|
case "ollama":
|
|
2173
2182
|
return new OllamaProvider("ollama", {
|
|
2174
|
-
host: args.baseUrl ?? "http://localhost:11434",
|
|
2183
|
+
host: args.baseUrl ?? process.env.OLLAMA_HOST ?? "http://localhost:11434",
|
|
2175
2184
|
defaultModel: args.model
|
|
2176
2185
|
});
|
|
2177
2186
|
default:
|