@askexenow/exe-os 0.8.80 → 0.8.82
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 +359 -267
- package/dist/bin/backfill-responses.js +357 -265
- package/dist/bin/backfill-vectors.js +339 -264
- package/dist/bin/cleanup-stale-review-tasks.js +315 -256
- package/dist/bin/cli.js +494 -240
- package/dist/bin/exe-agent.js +141 -46
- package/dist/bin/exe-assign.js +151 -63
- package/dist/bin/exe-boot.js +294 -115
- package/dist/bin/exe-call.js +76 -51
- package/dist/bin/exe-cloud.js +58 -45
- package/dist/bin/exe-dispatch.js +434 -277
- package/dist/bin/exe-doctor.js +317 -246
- package/dist/bin/exe-export-behaviors.js +328 -248
- package/dist/bin/exe-forget.js +314 -231
- package/dist/bin/exe-gateway.js +2676 -1402
- package/dist/bin/exe-heartbeat.js +329 -264
- package/dist/bin/exe-kill.js +324 -244
- package/dist/bin/exe-launch-agent.js +574 -463
- package/dist/bin/exe-link.js +1055 -95
- package/dist/bin/exe-new-employee.js +49 -54
- package/dist/bin/exe-pending-messages.js +310 -253
- package/dist/bin/exe-pending-notifications.js +299 -228
- package/dist/bin/exe-pending-reviews.js +314 -245
- package/dist/bin/exe-rename.js +259 -195
- package/dist/bin/exe-review.js +140 -64
- package/dist/bin/exe-search.js +543 -356
- package/dist/bin/exe-session-cleanup.js +463 -382
- package/dist/bin/exe-settings.js +129 -99
- package/dist/bin/exe-start.sh +6 -6
- package/dist/bin/exe-status.js +95 -36
- package/dist/bin/exe-team.js +116 -51
- package/dist/bin/git-sweep.js +482 -307
- package/dist/bin/graph-backfill.js +357 -245
- package/dist/bin/graph-export.js +324 -244
- package/dist/bin/install.js +33 -10
- package/dist/bin/scan-tasks.js +481 -307
- package/dist/bin/setup.js +1147 -140
- package/dist/bin/shard-migrate.js +321 -241
- package/dist/bin/update.js +1 -7
- package/dist/bin/wiki-sync.js +318 -238
- package/dist/gateway/index.js +2656 -1383
- package/dist/hooks/bug-report-worker.js +641 -472
- package/dist/hooks/commit-complete.js +482 -307
- package/dist/hooks/error-recall.js +363 -135
- package/dist/hooks/exe-heartbeat-hook.js +97 -27
- package/dist/hooks/ingest-worker.js +584 -397
- package/dist/hooks/ingest.js +123 -58
- package/dist/hooks/instructions-loaded.js +212 -82
- package/dist/hooks/notification.js +200 -70
- package/dist/hooks/post-compact.js +199 -81
- package/dist/hooks/pre-compact.js +352 -140
- package/dist/hooks/pre-tool-use.js +416 -278
- package/dist/hooks/prompt-ingest-worker.js +376 -299
- package/dist/hooks/prompt-submit.js +414 -188
- package/dist/hooks/response-ingest-worker.js +408 -338
- package/dist/hooks/session-end.js +209 -83
- package/dist/hooks/session-start.js +382 -158
- package/dist/hooks/stop.js +209 -83
- package/dist/hooks/subagent-stop.js +209 -85
- package/dist/hooks/summary-worker.js +606 -510
- package/dist/index.js +2133 -855
- package/dist/lib/cloud-sync.js +1175 -184
- package/dist/lib/config.js +1 -9
- package/dist/lib/consolidation.js +71 -34
- package/dist/lib/database.js +166 -14
- package/dist/lib/device-registry.js +189 -117
- package/dist/lib/embedder.js +6 -10
- package/dist/lib/employee-templates.js +134 -39
- package/dist/lib/employees.js +30 -7
- package/dist/lib/exe-daemon-client.js +5 -7
- package/dist/lib/exe-daemon.js +514 -152
- package/dist/lib/hybrid-search.js +543 -356
- package/dist/lib/identity-templates.js +15 -15
- package/dist/lib/identity.js +19 -15
- package/dist/lib/license.js +1 -7
- package/dist/lib/messaging.js +157 -135
- package/dist/lib/reminders.js +97 -0
- package/dist/lib/schedules.js +302 -231
- package/dist/lib/skill-learning.js +33 -27
- package/dist/lib/status-brief.js +11 -14
- package/dist/lib/store.js +326 -237
- package/dist/lib/task-router.js +105 -1
- package/dist/lib/tasks.js +233 -116
- package/dist/lib/tmux-routing.js +173 -56
- package/dist/lib/ws-client.js +13 -3
- package/dist/mcp/server.js +2009 -1015
- package/dist/mcp/tools/complete-reminder.js +97 -0
- package/dist/mcp/tools/create-reminder.js +97 -0
- package/dist/mcp/tools/create-task.js +426 -262
- package/dist/mcp/tools/deactivate-behavior.js +119 -44
- package/dist/mcp/tools/list-reminders.js +97 -0
- package/dist/mcp/tools/list-tasks.js +56 -57
- package/dist/mcp/tools/send-message.js +206 -143
- package/dist/mcp/tools/update-task.js +259 -85
- package/dist/runtime/index.js +495 -316
- package/dist/tui/App.js +1128 -919
- package/package.json +2 -10
- package/src/commands/exe/afk.md +8 -8
- package/src/commands/exe/assign.md +1 -1
- package/src/commands/exe/build-adv.md +1 -1
- package/src/commands/exe/call.md +10 -10
- package/src/commands/exe/employee-heartbeat.md +9 -6
- package/src/commands/exe/heartbeat.md +5 -5
- package/src/commands/exe/intercom.md +26 -15
- package/src/commands/exe/launch.md +2 -2
- package/src/commands/exe/new-employee.md +1 -1
- package/src/commands/exe/review.md +2 -2
- package/src/commands/exe/schedule.md +1 -1
- package/src/commands/exe/sessions.md +2 -2
- package/src/commands/exe.md +22 -20
package/dist/lib/task-router.js
CHANGED
|
@@ -1,5 +1,109 @@
|
|
|
1
1
|
// src/lib/task-router.ts
|
|
2
2
|
import { randomUUID } from "crypto";
|
|
3
|
+
|
|
4
|
+
// src/lib/employees.ts
|
|
5
|
+
import { readFile as readFile2, writeFile as writeFile2, mkdir as mkdir2 } from "fs/promises";
|
|
6
|
+
import { existsSync as existsSync2, symlinkSync, readlinkSync, readFileSync as readFileSync2, renameSync as renameSync2, unlinkSync, writeFileSync } from "fs";
|
|
7
|
+
import { execSync } from "child_process";
|
|
8
|
+
import path2 from "path";
|
|
9
|
+
import os2 from "os";
|
|
10
|
+
|
|
11
|
+
// src/lib/config.ts
|
|
12
|
+
import { readFile, writeFile, mkdir, chmod } from "fs/promises";
|
|
13
|
+
import { readFileSync, existsSync, renameSync } from "fs";
|
|
14
|
+
import path from "path";
|
|
15
|
+
import os from "os";
|
|
16
|
+
function resolveDataDir() {
|
|
17
|
+
if (process.env.EXE_OS_DIR) return process.env.EXE_OS_DIR;
|
|
18
|
+
if (process.env.EXE_MEM_DIR) return process.env.EXE_MEM_DIR;
|
|
19
|
+
const newDir = path.join(os.homedir(), ".exe-os");
|
|
20
|
+
const legacyDir = path.join(os.homedir(), ".exe-mem");
|
|
21
|
+
if (!existsSync(newDir) && existsSync(legacyDir)) {
|
|
22
|
+
try {
|
|
23
|
+
renameSync(legacyDir, newDir);
|
|
24
|
+
process.stderr.write(`[exe-os] Migrated data directory: ~/.exe-mem \u2192 ~/.exe-os
|
|
25
|
+
`);
|
|
26
|
+
} catch {
|
|
27
|
+
return legacyDir;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
return newDir;
|
|
31
|
+
}
|
|
32
|
+
var EXE_AI_DIR = resolveDataDir();
|
|
33
|
+
var DB_PATH = path.join(EXE_AI_DIR, "memories.db");
|
|
34
|
+
var MODELS_DIR = path.join(EXE_AI_DIR, "models");
|
|
35
|
+
var CONFIG_PATH = path.join(EXE_AI_DIR, "config.json");
|
|
36
|
+
var LEGACY_LANCE_PATH = path.join(EXE_AI_DIR, "local.lance");
|
|
37
|
+
var CURRENT_CONFIG_VERSION = 1;
|
|
38
|
+
var 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
|
+
// src/lib/employees.ts
|
|
97
|
+
var EMPLOYEES_PATH = path2.join(EXE_AI_DIR, "exe-employees.json");
|
|
98
|
+
var COORDINATOR_ROLE = "COO";
|
|
99
|
+
function normalizeRole(role) {
|
|
100
|
+
return (role ?? "").trim().toLowerCase();
|
|
101
|
+
}
|
|
102
|
+
function isCoordinatorRole(role) {
|
|
103
|
+
return normalizeRole(role) === normalizeRole(COORDINATOR_ROLE);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
// src/lib/task-router.ts
|
|
3
107
|
var DEFAULT_BLOOM_CONFIG = {
|
|
4
108
|
complexityToTier: {
|
|
5
109
|
routine: "junior",
|
|
@@ -56,7 +160,7 @@ async function scoreEmployee(taskVector, agentId, searchFn) {
|
|
|
56
160
|
return { agentId, score: results.length / 5 };
|
|
57
161
|
}
|
|
58
162
|
async function routeTask(taskDescription, employees, embedFn, searchFn, options) {
|
|
59
|
-
let specialists = employees.filter((e) => e.
|
|
163
|
+
let specialists = employees.filter((e) => !isCoordinatorRole(e.role));
|
|
60
164
|
if (specialists.length === 0) {
|
|
61
165
|
throw new Error(
|
|
62
166
|
"No specialist employees available. Create one with /exe-new-employee."
|