@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
|
@@ -3,27 +3,13 @@ import crypto2 from "crypto";
|
|
|
3
3
|
|
|
4
4
|
// src/lib/database.ts
|
|
5
5
|
import { createClient } from "@libsql/client";
|
|
6
|
-
var _resilientClient = null;
|
|
7
|
-
function getClient() {
|
|
8
|
-
if (!_resilientClient) {
|
|
9
|
-
throw new Error("Database client not initialized. Call initDatabase() first.");
|
|
10
|
-
}
|
|
11
|
-
return _resilientClient;
|
|
12
|
-
}
|
|
13
6
|
|
|
14
|
-
// src/lib/
|
|
15
|
-
import
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
await client.execute({
|
|
21
|
-
sql: `INSERT INTO behaviors (id, agent_id, project_name, domain, priority, content, active, created_at, updated_at)
|
|
22
|
-
VALUES (?, ?, ?, ?, ?, ?, 1, ?, ?)`,
|
|
23
|
-
args: [id, opts.agentId, opts.projectName ?? null, opts.domain ?? null, opts.priority ?? "p1", opts.content, now, now]
|
|
24
|
-
});
|
|
25
|
-
return id;
|
|
26
|
-
}
|
|
7
|
+
// src/lib/employees.ts
|
|
8
|
+
import { readFile as readFile2, writeFile as writeFile2, mkdir as mkdir2 } from "fs/promises";
|
|
9
|
+
import { existsSync as existsSync2, symlinkSync, readlinkSync, readFileSync as readFileSync2, renameSync as renameSync2, unlinkSync, writeFileSync } from "fs";
|
|
10
|
+
import { execSync } from "child_process";
|
|
11
|
+
import path2 from "path";
|
|
12
|
+
import os2 from "os";
|
|
27
13
|
|
|
28
14
|
// src/lib/config.ts
|
|
29
15
|
import { readFile, writeFile, mkdir, chmod } from "fs/promises";
|
|
@@ -85,13 +71,7 @@ var DEFAULT_CONFIG = {
|
|
|
85
71
|
wikiUrl: "",
|
|
86
72
|
wikiApiKey: "",
|
|
87
73
|
wikiSyncIntervalMs: 30 * 60 * 1e3,
|
|
88
|
-
wikiWorkspaceMapping: {
|
|
89
|
-
exe: "Executive",
|
|
90
|
-
yoshi: "Engineering",
|
|
91
|
-
mari: "Marketing",
|
|
92
|
-
tom: "Engineering",
|
|
93
|
-
sasha: "Production"
|
|
94
|
-
},
|
|
74
|
+
wikiWorkspaceMapping: {},
|
|
95
75
|
wikiAutoUpdate: true,
|
|
96
76
|
wikiAutoUpdateThreshold: 0.5,
|
|
97
77
|
wikiAutoUpdateCreateNew: true,
|
|
@@ -208,6 +188,32 @@ async function loadConfig() {
|
|
|
208
188
|
}
|
|
209
189
|
}
|
|
210
190
|
|
|
191
|
+
// src/lib/employees.ts
|
|
192
|
+
var EMPLOYEES_PATH = path2.join(EXE_AI_DIR, "exe-employees.json");
|
|
193
|
+
|
|
194
|
+
// src/lib/database.ts
|
|
195
|
+
var _resilientClient = null;
|
|
196
|
+
function getClient() {
|
|
197
|
+
if (!_resilientClient) {
|
|
198
|
+
throw new Error("Database client not initialized. Call initDatabase() first.");
|
|
199
|
+
}
|
|
200
|
+
return _resilientClient;
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
// src/lib/behaviors.ts
|
|
204
|
+
import crypto from "crypto";
|
|
205
|
+
async function storeBehavior(opts) {
|
|
206
|
+
const client = getClient();
|
|
207
|
+
const id = crypto.randomUUID();
|
|
208
|
+
const now = (/* @__PURE__ */ new Date()).toISOString();
|
|
209
|
+
await client.execute({
|
|
210
|
+
sql: `INSERT INTO behaviors (id, agent_id, project_name, domain, priority, content, active, created_at, updated_at)
|
|
211
|
+
VALUES (?, ?, ?, ?, ?, ?, 1, ?, ?)`,
|
|
212
|
+
args: [id, opts.agentId, opts.projectName ?? null, opts.domain ?? null, opts.priority ?? "p1", opts.content, now, now]
|
|
213
|
+
});
|
|
214
|
+
return id;
|
|
215
|
+
}
|
|
216
|
+
|
|
211
217
|
// src/lib/skill-learning.ts
|
|
212
218
|
var DEFAULT_SKILL_THRESHOLD = 3;
|
|
213
219
|
async function extractTrajectory(taskId, agentId) {
|
package/dist/lib/status-brief.js
CHANGED
|
@@ -1,16 +1,13 @@
|
|
|
1
1
|
// src/lib/status-brief.ts
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
sasha: "\u{1F4F8}"
|
|
12
|
-
// 📸
|
|
13
|
-
};
|
|
2
|
+
function roleIcon(role) {
|
|
3
|
+
const lower = role.toLowerCase();
|
|
4
|
+
if (lower === "coo") return "\u{1F3AF}";
|
|
5
|
+
if (lower === "cto" || lower.includes("architect")) return "\u26A1";
|
|
6
|
+
if (lower === "cmo" || lower.includes("marketing")) return "\u{1F3A8}";
|
|
7
|
+
if (lower.includes("engineer")) return "\u{1F529}";
|
|
8
|
+
if (lower.includes("content")) return "\u{1F4F8}";
|
|
9
|
+
return "\u{1F464}";
|
|
10
|
+
}
|
|
14
11
|
function displayWidth(str) {
|
|
15
12
|
let w = 0;
|
|
16
13
|
for (const ch of str) {
|
|
@@ -100,7 +97,7 @@ function buildFirstBootBrief(employees, dateStr, sessionTag) {
|
|
|
100
97
|
bodyLines.push(" \u{1F44B} First time? Here's your team:");
|
|
101
98
|
bodyLines.push("");
|
|
102
99
|
for (const emp of employees) {
|
|
103
|
-
const emoji =
|
|
100
|
+
const emoji = roleIcon(emp.role);
|
|
104
101
|
const role = emp.role ? ` (${emp.role})` : "";
|
|
105
102
|
bodyLines.push(` ${emoji} ${emp.name}${role}`);
|
|
106
103
|
}
|
|
@@ -233,7 +230,7 @@ function buildTeam(employees, data) {
|
|
|
233
230
|
for (const m of data.memoryStats) memMap.set(m.agentId, m.totalMemories);
|
|
234
231
|
}
|
|
235
232
|
for (const emp of employees) {
|
|
236
|
-
const emoji =
|
|
233
|
+
const emoji = roleIcon(emp.role);
|
|
237
234
|
const memCount = memMap.get(emp.name) ?? 0;
|
|
238
235
|
const memStr = memCount > 0 ? `${memCount.toLocaleString()} memories` : "0 memories";
|
|
239
236
|
const role = emp.role ? ` (${emp.role})` : "";
|