@askexenow/exe-os 0.9.32 → 0.9.34
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 +18 -2
- package/dist/bin/backfill-responses.js +18 -2
- package/dist/bin/backfill-vectors.js +18 -2
- package/dist/bin/cleanup-stale-review-tasks.js +18 -2
- package/dist/bin/cli.js +43 -11
- package/dist/bin/exe-assign.js +18 -2
- package/dist/bin/exe-boot.js +32 -10
- package/dist/bin/exe-cloud.js +3 -3
- package/dist/bin/exe-dispatch.js +21 -4
- package/dist/bin/exe-doctor.js +45 -21
- package/dist/bin/exe-export-behaviors.js +18 -2
- package/dist/bin/exe-forget.js +27 -8
- package/dist/bin/exe-gateway.js +21 -4
- package/dist/bin/exe-heartbeat.js +18 -2
- package/dist/bin/exe-kill.js +18 -2
- package/dist/bin/exe-launch-agent.js +34 -2
- package/dist/bin/exe-link.js +20 -5
- package/dist/bin/exe-pending-messages.js +18 -2
- package/dist/bin/exe-pending-notifications.js +18 -2
- package/dist/bin/exe-pending-reviews.js +18 -2
- package/dist/bin/exe-rename.js +18 -2
- package/dist/bin/exe-review.js +18 -2
- package/dist/bin/exe-search.js +18 -2
- package/dist/bin/exe-session-cleanup.js +21 -4
- package/dist/bin/exe-settings.js +1 -1
- package/dist/bin/exe-start-codex.js +42 -7
- package/dist/bin/exe-start-opencode.js +34 -2
- package/dist/bin/exe-status.js +18 -2
- package/dist/bin/exe-team.js +18 -2
- package/dist/bin/git-sweep.js +21 -4
- package/dist/bin/graph-backfill.js +18 -2
- package/dist/bin/graph-export.js +18 -2
- package/dist/bin/intercom-check.js +21 -4
- package/dist/bin/scan-tasks.js +21 -4
- package/dist/bin/setup.js +24 -9
- package/dist/bin/shard-migrate.js +18 -2
- package/dist/gateway/index.js +21 -4
- package/dist/hooks/bug-report-worker.js +21 -4
- package/dist/hooks/codex-stop-task-finalizer.js +21 -4
- package/dist/hooks/commit-complete.js +21 -4
- package/dist/hooks/error-recall.js +27 -2
- package/dist/hooks/exe-heartbeat-hook.js +9 -0
- package/dist/hooks/ingest.js +27 -2
- package/dist/hooks/instructions-loaded.js +27 -2
- package/dist/hooks/notification.js +27 -2
- package/dist/hooks/post-compact.js +30 -3
- package/dist/hooks/post-tool-combined.js +34 -2
- package/dist/hooks/pre-compact.js +33 -5
- package/dist/hooks/pre-tool-use.js +30 -3
- package/dist/hooks/prompt-submit.js +33 -5
- package/dist/hooks/session-end.js +33 -5
- package/dist/hooks/session-start.js +34 -2
- package/dist/hooks/stop.js +30 -3
- package/dist/hooks/subagent-stop.js +30 -3
- package/dist/hooks/summary-worker.js +22 -7
- package/dist/index.js +21 -4
- package/dist/lib/cloud-sync.js +20 -5
- package/dist/lib/database.js +17 -1
- package/dist/lib/db.js +17 -1
- package/dist/lib/device-registry.js +18 -2
- package/dist/lib/exe-daemon.js +20243 -6717
- package/dist/lib/hybrid-search.js +18 -2
- package/dist/lib/schedules.js +18 -2
- package/dist/lib/store.js +18 -2
- package/dist/lib/tasks.js +3 -2
- package/dist/lib/tmux-routing.js +3 -2
- package/dist/mcp/server.js +213 -167
- package/dist/mcp/tools/create-task.js +15 -3
- package/dist/mcp/tools/deactivate-behavior.js +9 -0
- package/dist/mcp/tools/list-tasks.js +12 -1
- package/dist/mcp/tools/send-message.js +12 -1
- package/dist/mcp/tools/update-task.js +19 -2
- package/dist/runtime/index.js +21 -4
- package/dist/tui/App.js +21 -4
- package/package.json +1 -1
|
@@ -4423,9 +4423,10 @@ async function updateTask(input) {
|
|
|
4423
4423
|
args: [assignedAgent]
|
|
4424
4424
|
});
|
|
4425
4425
|
} else if (input.status === "cancelled") {
|
|
4426
|
+
const now2 = (/* @__PURE__ */ new Date()).toISOString();
|
|
4426
4427
|
await draftClient.execute({
|
|
4427
|
-
sql: `
|
|
4428
|
-
args: [assignedAgent]
|
|
4428
|
+
sql: `UPDATE memories SET status = 'deleted', deleted_at = ? WHERE agent_id = ? AND draft = 1`,
|
|
4429
|
+
args: [now2, assignedAgent]
|
|
4429
4430
|
});
|
|
4430
4431
|
}
|
|
4431
4432
|
} catch {
|
|
@@ -4546,6 +4547,19 @@ var init_tasks = __esm({
|
|
|
4546
4547
|
}
|
|
4547
4548
|
});
|
|
4548
4549
|
|
|
4550
|
+
// src/mcp/agent-context.ts
|
|
4551
|
+
import { AsyncLocalStorage } from "async_hooks";
|
|
4552
|
+
function getAgentContext() {
|
|
4553
|
+
return agentStore.getStore();
|
|
4554
|
+
}
|
|
4555
|
+
var agentStore;
|
|
4556
|
+
var init_agent_context = __esm({
|
|
4557
|
+
"src/mcp/agent-context.ts"() {
|
|
4558
|
+
"use strict";
|
|
4559
|
+
agentStore = new AsyncLocalStorage();
|
|
4560
|
+
}
|
|
4561
|
+
});
|
|
4562
|
+
|
|
4549
4563
|
// src/lib/active-agent.ts
|
|
4550
4564
|
var active_agent_exports = {};
|
|
4551
4565
|
__export(active_agent_exports, {
|
|
@@ -4621,6 +4635,8 @@ function clearActiveAgent() {
|
|
|
4621
4635
|
}
|
|
4622
4636
|
}
|
|
4623
4637
|
function getActiveAgent() {
|
|
4638
|
+
const httpCtx = getAgentContext();
|
|
4639
|
+
if (httpCtx) return httpCtx;
|
|
4624
4640
|
try {
|
|
4625
4641
|
const markerPath = getMarkerPath();
|
|
4626
4642
|
const raw = readFileSync13(markerPath, "utf8");
|
|
@@ -4715,6 +4731,7 @@ var init_active_agent = __esm({
|
|
|
4715
4731
|
"use strict";
|
|
4716
4732
|
init_config();
|
|
4717
4733
|
init_session_key();
|
|
4734
|
+
init_agent_context();
|
|
4718
4735
|
init_employees();
|
|
4719
4736
|
CACHE_DIR = path18.join(EXE_AI_DIR, "session-cache");
|
|
4720
4737
|
STALE_MS = 24 * 60 * 60 * 1e3;
|
package/dist/runtime/index.js
CHANGED
|
@@ -2220,6 +2220,7 @@ var init_db_daemon_client = __esm({
|
|
|
2220
2220
|
// src/lib/database.ts
|
|
2221
2221
|
var database_exports = {};
|
|
2222
2222
|
__export(database_exports, {
|
|
2223
|
+
SOFT_DELETE_RETENTION_DAYS: () => SOFT_DELETE_RETENTION_DAYS,
|
|
2223
2224
|
disposeDatabase: () => disposeDatabase,
|
|
2224
2225
|
disposeTurso: () => disposeTurso,
|
|
2225
2226
|
ensureSchema: () => ensureSchema,
|
|
@@ -2376,10 +2377,17 @@ async function ensureSchema() {
|
|
|
2376
2377
|
INSERT INTO memories_fts(memories_fts, rowid, raw_text) VALUES('delete', old.rowid, old.raw_text);
|
|
2377
2378
|
END;
|
|
2378
2379
|
|
|
2379
|
-
CREATE TRIGGER IF NOT EXISTS memories_fts_au AFTER UPDATE ON memories
|
|
2380
|
+
CREATE TRIGGER IF NOT EXISTS memories_fts_au AFTER UPDATE ON memories
|
|
2381
|
+
WHEN new.status IS NULL OR new.status != 'deleted' BEGIN
|
|
2380
2382
|
INSERT INTO memories_fts(memories_fts, rowid, raw_text) VALUES('delete', old.rowid, old.raw_text);
|
|
2381
2383
|
INSERT INTO memories_fts(rowid, raw_text) VALUES (new.rowid, new.raw_text);
|
|
2382
2384
|
END;
|
|
2385
|
+
|
|
2386
|
+
-- Soft-delete trigger: remove from FTS when status changes to 'deleted'
|
|
2387
|
+
CREATE TRIGGER IF NOT EXISTS memories_fts_soft_delete AFTER UPDATE ON memories
|
|
2388
|
+
WHEN new.status = 'deleted' AND (old.status IS NULL OR old.status != 'deleted') BEGIN
|
|
2389
|
+
INSERT INTO memories_fts(memories_fts, rowid, raw_text) VALUES('delete', old.rowid, old.raw_text);
|
|
2390
|
+
END;
|
|
2383
2391
|
`);
|
|
2384
2392
|
await client.executeMultiple(`
|
|
2385
2393
|
CREATE TABLE IF NOT EXISTS sync_meta (
|
|
@@ -2782,6 +2790,13 @@ async function ensureSchema() {
|
|
|
2782
2790
|
});
|
|
2783
2791
|
} catch {
|
|
2784
2792
|
}
|
|
2793
|
+
try {
|
|
2794
|
+
await client.execute({
|
|
2795
|
+
sql: `ALTER TABLE memories ADD COLUMN deleted_at TEXT`,
|
|
2796
|
+
args: []
|
|
2797
|
+
});
|
|
2798
|
+
} catch {
|
|
2799
|
+
}
|
|
2785
2800
|
try {
|
|
2786
2801
|
await client.execute({
|
|
2787
2802
|
sql: `ALTER TABLE memories ADD COLUMN confidence REAL DEFAULT 0.7`,
|
|
@@ -3318,7 +3333,7 @@ async function disposeDatabase() {
|
|
|
3318
3333
|
_resilientClient = null;
|
|
3319
3334
|
}
|
|
3320
3335
|
}
|
|
3321
|
-
var _client, _resilientClient, _walCheckpointTimer, _daemonClient, _adapterClient, initTurso, disposeTurso;
|
|
3336
|
+
var _client, _resilientClient, _walCheckpointTimer, _daemonClient, _adapterClient, initTurso, SOFT_DELETE_RETENTION_DAYS, disposeTurso;
|
|
3322
3337
|
var init_database = __esm({
|
|
3323
3338
|
"src/lib/database.ts"() {
|
|
3324
3339
|
"use strict";
|
|
@@ -3332,6 +3347,7 @@ var init_database = __esm({
|
|
|
3332
3347
|
_daemonClient = null;
|
|
3333
3348
|
_adapterClient = null;
|
|
3334
3349
|
initTurso = initDatabase;
|
|
3350
|
+
SOFT_DELETE_RETENTION_DAYS = 7;
|
|
3335
3351
|
disposeTurso = disposeDatabase;
|
|
3336
3352
|
}
|
|
3337
3353
|
});
|
|
@@ -5343,9 +5359,10 @@ async function updateTask(input) {
|
|
|
5343
5359
|
args: [assignedAgent]
|
|
5344
5360
|
});
|
|
5345
5361
|
} else if (input.status === "cancelled") {
|
|
5362
|
+
const now2 = (/* @__PURE__ */ new Date()).toISOString();
|
|
5346
5363
|
await draftClient.execute({
|
|
5347
|
-
sql: `
|
|
5348
|
-
args: [assignedAgent]
|
|
5364
|
+
sql: `UPDATE memories SET status = 'deleted', deleted_at = ? WHERE agent_id = ? AND draft = 1`,
|
|
5365
|
+
args: [now2, assignedAgent]
|
|
5349
5366
|
});
|
|
5350
5367
|
}
|
|
5351
5368
|
} catch {
|
package/dist/tui/App.js
CHANGED
|
@@ -2471,6 +2471,7 @@ var init_db_daemon_client = __esm({
|
|
|
2471
2471
|
// src/lib/database.ts
|
|
2472
2472
|
var database_exports = {};
|
|
2473
2473
|
__export(database_exports, {
|
|
2474
|
+
SOFT_DELETE_RETENTION_DAYS: () => SOFT_DELETE_RETENTION_DAYS,
|
|
2474
2475
|
disposeDatabase: () => disposeDatabase,
|
|
2475
2476
|
disposeTurso: () => disposeTurso,
|
|
2476
2477
|
ensureSchema: () => ensureSchema,
|
|
@@ -2627,10 +2628,17 @@ async function ensureSchema() {
|
|
|
2627
2628
|
INSERT INTO memories_fts(memories_fts, rowid, raw_text) VALUES('delete', old.rowid, old.raw_text);
|
|
2628
2629
|
END;
|
|
2629
2630
|
|
|
2630
|
-
CREATE TRIGGER IF NOT EXISTS memories_fts_au AFTER UPDATE ON memories
|
|
2631
|
+
CREATE TRIGGER IF NOT EXISTS memories_fts_au AFTER UPDATE ON memories
|
|
2632
|
+
WHEN new.status IS NULL OR new.status != 'deleted' BEGIN
|
|
2631
2633
|
INSERT INTO memories_fts(memories_fts, rowid, raw_text) VALUES('delete', old.rowid, old.raw_text);
|
|
2632
2634
|
INSERT INTO memories_fts(rowid, raw_text) VALUES (new.rowid, new.raw_text);
|
|
2633
2635
|
END;
|
|
2636
|
+
|
|
2637
|
+
-- Soft-delete trigger: remove from FTS when status changes to 'deleted'
|
|
2638
|
+
CREATE TRIGGER IF NOT EXISTS memories_fts_soft_delete AFTER UPDATE ON memories
|
|
2639
|
+
WHEN new.status = 'deleted' AND (old.status IS NULL OR old.status != 'deleted') BEGIN
|
|
2640
|
+
INSERT INTO memories_fts(memories_fts, rowid, raw_text) VALUES('delete', old.rowid, old.raw_text);
|
|
2641
|
+
END;
|
|
2634
2642
|
`);
|
|
2635
2643
|
await client.executeMultiple(`
|
|
2636
2644
|
CREATE TABLE IF NOT EXISTS sync_meta (
|
|
@@ -3033,6 +3041,13 @@ async function ensureSchema() {
|
|
|
3033
3041
|
});
|
|
3034
3042
|
} catch {
|
|
3035
3043
|
}
|
|
3044
|
+
try {
|
|
3045
|
+
await client.execute({
|
|
3046
|
+
sql: `ALTER TABLE memories ADD COLUMN deleted_at TEXT`,
|
|
3047
|
+
args: []
|
|
3048
|
+
});
|
|
3049
|
+
} catch {
|
|
3050
|
+
}
|
|
3036
3051
|
try {
|
|
3037
3052
|
await client.execute({
|
|
3038
3053
|
sql: `ALTER TABLE memories ADD COLUMN confidence REAL DEFAULT 0.7`,
|
|
@@ -3569,7 +3584,7 @@ async function disposeDatabase() {
|
|
|
3569
3584
|
_resilientClient = null;
|
|
3570
3585
|
}
|
|
3571
3586
|
}
|
|
3572
|
-
var _client, _resilientClient, _walCheckpointTimer, _daemonClient, _adapterClient, initTurso, disposeTurso;
|
|
3587
|
+
var _client, _resilientClient, _walCheckpointTimer, _daemonClient, _adapterClient, initTurso, SOFT_DELETE_RETENTION_DAYS, disposeTurso;
|
|
3573
3588
|
var init_database = __esm({
|
|
3574
3589
|
"src/lib/database.ts"() {
|
|
3575
3590
|
"use strict";
|
|
@@ -3583,6 +3598,7 @@ var init_database = __esm({
|
|
|
3583
3598
|
_daemonClient = null;
|
|
3584
3599
|
_adapterClient = null;
|
|
3585
3600
|
initTurso = initDatabase;
|
|
3601
|
+
SOFT_DELETE_RETENTION_DAYS = 7;
|
|
3586
3602
|
disposeTurso = disposeDatabase;
|
|
3587
3603
|
}
|
|
3588
3604
|
});
|
|
@@ -5947,9 +5963,10 @@ async function updateTask(input) {
|
|
|
5947
5963
|
args: [assignedAgent]
|
|
5948
5964
|
});
|
|
5949
5965
|
} else if (input.status === "cancelled") {
|
|
5966
|
+
const now2 = (/* @__PURE__ */ new Date()).toISOString();
|
|
5950
5967
|
await draftClient.execute({
|
|
5951
|
-
sql: `
|
|
5952
|
-
args: [assignedAgent]
|
|
5968
|
+
sql: `UPDATE memories SET status = 'deleted', deleted_at = ? WHERE agent_id = ? AND draft = 1`,
|
|
5969
|
+
args: [now2, assignedAgent]
|
|
5953
5970
|
});
|
|
5954
5971
|
}
|
|
5955
5972
|
} catch {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@askexenow/exe-os",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.34",
|
|
4
4
|
"description": "AI employee operating system — persistent memory, task management, and multi-agent coordination for Claude Code.",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE",
|
|
6
6
|
"type": "module",
|