@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
|
@@ -2060,6 +2060,7 @@ var init_db_daemon_client = __esm({
|
|
|
2060
2060
|
// src/lib/database.ts
|
|
2061
2061
|
var database_exports = {};
|
|
2062
2062
|
__export(database_exports, {
|
|
2063
|
+
SOFT_DELETE_RETENTION_DAYS: () => SOFT_DELETE_RETENTION_DAYS,
|
|
2063
2064
|
disposeDatabase: () => disposeDatabase,
|
|
2064
2065
|
disposeTurso: () => disposeTurso,
|
|
2065
2066
|
ensureSchema: () => ensureSchema,
|
|
@@ -2216,10 +2217,17 @@ async function ensureSchema() {
|
|
|
2216
2217
|
INSERT INTO memories_fts(memories_fts, rowid, raw_text) VALUES('delete', old.rowid, old.raw_text);
|
|
2217
2218
|
END;
|
|
2218
2219
|
|
|
2219
|
-
CREATE TRIGGER IF NOT EXISTS memories_fts_au AFTER UPDATE ON memories
|
|
2220
|
+
CREATE TRIGGER IF NOT EXISTS memories_fts_au AFTER UPDATE ON memories
|
|
2221
|
+
WHEN new.status IS NULL OR new.status != 'deleted' BEGIN
|
|
2220
2222
|
INSERT INTO memories_fts(memories_fts, rowid, raw_text) VALUES('delete', old.rowid, old.raw_text);
|
|
2221
2223
|
INSERT INTO memories_fts(rowid, raw_text) VALUES (new.rowid, new.raw_text);
|
|
2222
2224
|
END;
|
|
2225
|
+
|
|
2226
|
+
-- Soft-delete trigger: remove from FTS when status changes to 'deleted'
|
|
2227
|
+
CREATE TRIGGER IF NOT EXISTS memories_fts_soft_delete AFTER UPDATE ON memories
|
|
2228
|
+
WHEN new.status = 'deleted' AND (old.status IS NULL OR old.status != 'deleted') BEGIN
|
|
2229
|
+
INSERT INTO memories_fts(memories_fts, rowid, raw_text) VALUES('delete', old.rowid, old.raw_text);
|
|
2230
|
+
END;
|
|
2223
2231
|
`);
|
|
2224
2232
|
await client.executeMultiple(`
|
|
2225
2233
|
CREATE TABLE IF NOT EXISTS sync_meta (
|
|
@@ -2622,6 +2630,13 @@ async function ensureSchema() {
|
|
|
2622
2630
|
});
|
|
2623
2631
|
} catch {
|
|
2624
2632
|
}
|
|
2633
|
+
try {
|
|
2634
|
+
await client.execute({
|
|
2635
|
+
sql: `ALTER TABLE memories ADD COLUMN deleted_at TEXT`,
|
|
2636
|
+
args: []
|
|
2637
|
+
});
|
|
2638
|
+
} catch {
|
|
2639
|
+
}
|
|
2625
2640
|
try {
|
|
2626
2641
|
await client.execute({
|
|
2627
2642
|
sql: `ALTER TABLE memories ADD COLUMN confidence REAL DEFAULT 0.7`,
|
|
@@ -3158,7 +3173,7 @@ async function disposeDatabase() {
|
|
|
3158
3173
|
_resilientClient = null;
|
|
3159
3174
|
}
|
|
3160
3175
|
}
|
|
3161
|
-
var _client, _resilientClient, _walCheckpointTimer, _daemonClient, _adapterClient, initTurso, disposeTurso;
|
|
3176
|
+
var _client, _resilientClient, _walCheckpointTimer, _daemonClient, _adapterClient, initTurso, SOFT_DELETE_RETENTION_DAYS, disposeTurso;
|
|
3162
3177
|
var init_database = __esm({
|
|
3163
3178
|
"src/lib/database.ts"() {
|
|
3164
3179
|
"use strict";
|
|
@@ -3172,6 +3187,7 @@ var init_database = __esm({
|
|
|
3172
3187
|
_daemonClient = null;
|
|
3173
3188
|
_adapterClient = null;
|
|
3174
3189
|
initTurso = initDatabase;
|
|
3190
|
+
SOFT_DELETE_RETENTION_DAYS = 7;
|
|
3175
3191
|
disposeTurso = disposeDatabase;
|
|
3176
3192
|
}
|
|
3177
3193
|
});
|
|
@@ -7983,9 +7999,10 @@ async function updateTask(input) {
|
|
|
7983
7999
|
args: [assignedAgent]
|
|
7984
8000
|
});
|
|
7985
8001
|
} else if (input.status === "cancelled") {
|
|
8002
|
+
const now2 = (/* @__PURE__ */ new Date()).toISOString();
|
|
7986
8003
|
await draftClient.execute({
|
|
7987
|
-
sql: `
|
|
7988
|
-
args: [assignedAgent]
|
|
8004
|
+
sql: `UPDATE memories SET status = 'deleted', deleted_at = ? WHERE agent_id = ? AND draft = 1`,
|
|
8005
|
+
args: [now2, assignedAgent]
|
|
7989
8006
|
});
|
|
7990
8007
|
}
|
|
7991
8008
|
} catch {
|
|
@@ -1744,6 +1744,7 @@ var init_db_daemon_client = __esm({
|
|
|
1744
1744
|
// src/lib/database.ts
|
|
1745
1745
|
var database_exports = {};
|
|
1746
1746
|
__export(database_exports, {
|
|
1747
|
+
SOFT_DELETE_RETENTION_DAYS: () => SOFT_DELETE_RETENTION_DAYS,
|
|
1747
1748
|
disposeDatabase: () => disposeDatabase,
|
|
1748
1749
|
disposeTurso: () => disposeTurso,
|
|
1749
1750
|
ensureSchema: () => ensureSchema,
|
|
@@ -1900,10 +1901,17 @@ async function ensureSchema() {
|
|
|
1900
1901
|
INSERT INTO memories_fts(memories_fts, rowid, raw_text) VALUES('delete', old.rowid, old.raw_text);
|
|
1901
1902
|
END;
|
|
1902
1903
|
|
|
1903
|
-
CREATE TRIGGER IF NOT EXISTS memories_fts_au AFTER UPDATE ON memories
|
|
1904
|
+
CREATE TRIGGER IF NOT EXISTS memories_fts_au AFTER UPDATE ON memories
|
|
1905
|
+
WHEN new.status IS NULL OR new.status != 'deleted' BEGIN
|
|
1904
1906
|
INSERT INTO memories_fts(memories_fts, rowid, raw_text) VALUES('delete', old.rowid, old.raw_text);
|
|
1905
1907
|
INSERT INTO memories_fts(rowid, raw_text) VALUES (new.rowid, new.raw_text);
|
|
1906
1908
|
END;
|
|
1909
|
+
|
|
1910
|
+
-- Soft-delete trigger: remove from FTS when status changes to 'deleted'
|
|
1911
|
+
CREATE TRIGGER IF NOT EXISTS memories_fts_soft_delete AFTER UPDATE ON memories
|
|
1912
|
+
WHEN new.status = 'deleted' AND (old.status IS NULL OR old.status != 'deleted') BEGIN
|
|
1913
|
+
INSERT INTO memories_fts(memories_fts, rowid, raw_text) VALUES('delete', old.rowid, old.raw_text);
|
|
1914
|
+
END;
|
|
1907
1915
|
`);
|
|
1908
1916
|
await client.executeMultiple(`
|
|
1909
1917
|
CREATE TABLE IF NOT EXISTS sync_meta (
|
|
@@ -2306,6 +2314,13 @@ async function ensureSchema() {
|
|
|
2306
2314
|
});
|
|
2307
2315
|
} catch {
|
|
2308
2316
|
}
|
|
2317
|
+
try {
|
|
2318
|
+
await client.execute({
|
|
2319
|
+
sql: `ALTER TABLE memories ADD COLUMN deleted_at TEXT`,
|
|
2320
|
+
args: []
|
|
2321
|
+
});
|
|
2322
|
+
} catch {
|
|
2323
|
+
}
|
|
2309
2324
|
try {
|
|
2310
2325
|
await client.execute({
|
|
2311
2326
|
sql: `ALTER TABLE memories ADD COLUMN confidence REAL DEFAULT 0.7`,
|
|
@@ -2842,7 +2857,7 @@ async function disposeDatabase() {
|
|
|
2842
2857
|
_resilientClient = null;
|
|
2843
2858
|
}
|
|
2844
2859
|
}
|
|
2845
|
-
var _client, _resilientClient, _walCheckpointTimer, _daemonClient, _adapterClient, initTurso, disposeTurso;
|
|
2860
|
+
var _client, _resilientClient, _walCheckpointTimer, _daemonClient, _adapterClient, initTurso, SOFT_DELETE_RETENTION_DAYS, disposeTurso;
|
|
2846
2861
|
var init_database = __esm({
|
|
2847
2862
|
"src/lib/database.ts"() {
|
|
2848
2863
|
"use strict";
|
|
@@ -2856,6 +2871,7 @@ var init_database = __esm({
|
|
|
2856
2871
|
_daemonClient = null;
|
|
2857
2872
|
_adapterClient = null;
|
|
2858
2873
|
initTurso = initDatabase;
|
|
2874
|
+
SOFT_DELETE_RETENTION_DAYS = 7;
|
|
2859
2875
|
disposeTurso = disposeDatabase;
|
|
2860
2876
|
}
|
|
2861
2877
|
});
|
|
@@ -6047,9 +6063,10 @@ async function updateTask(input) {
|
|
|
6047
6063
|
args: [assignedAgent]
|
|
6048
6064
|
});
|
|
6049
6065
|
} else if (input.status === "cancelled") {
|
|
6066
|
+
const now2 = (/* @__PURE__ */ new Date()).toISOString();
|
|
6050
6067
|
await draftClient.execute({
|
|
6051
|
-
sql: `
|
|
6052
|
-
args: [assignedAgent]
|
|
6068
|
+
sql: `UPDATE memories SET status = 'deleted', deleted_at = ? WHERE agent_id = ? AND draft = 1`,
|
|
6069
|
+
args: [now2, assignedAgent]
|
|
6053
6070
|
});
|
|
6054
6071
|
}
|
|
6055
6072
|
} catch {
|
|
@@ -2239,6 +2239,7 @@ var init_db_daemon_client = __esm({
|
|
|
2239
2239
|
// src/lib/database.ts
|
|
2240
2240
|
var database_exports = {};
|
|
2241
2241
|
__export(database_exports, {
|
|
2242
|
+
SOFT_DELETE_RETENTION_DAYS: () => SOFT_DELETE_RETENTION_DAYS,
|
|
2242
2243
|
disposeDatabase: () => disposeDatabase,
|
|
2243
2244
|
disposeTurso: () => disposeTurso,
|
|
2244
2245
|
ensureSchema: () => ensureSchema,
|
|
@@ -2395,10 +2396,17 @@ async function ensureSchema() {
|
|
|
2395
2396
|
INSERT INTO memories_fts(memories_fts, rowid, raw_text) VALUES('delete', old.rowid, old.raw_text);
|
|
2396
2397
|
END;
|
|
2397
2398
|
|
|
2398
|
-
CREATE TRIGGER IF NOT EXISTS memories_fts_au AFTER UPDATE ON memories
|
|
2399
|
+
CREATE TRIGGER IF NOT EXISTS memories_fts_au AFTER UPDATE ON memories
|
|
2400
|
+
WHEN new.status IS NULL OR new.status != 'deleted' BEGIN
|
|
2399
2401
|
INSERT INTO memories_fts(memories_fts, rowid, raw_text) VALUES('delete', old.rowid, old.raw_text);
|
|
2400
2402
|
INSERT INTO memories_fts(rowid, raw_text) VALUES (new.rowid, new.raw_text);
|
|
2401
2403
|
END;
|
|
2404
|
+
|
|
2405
|
+
-- Soft-delete trigger: remove from FTS when status changes to 'deleted'
|
|
2406
|
+
CREATE TRIGGER IF NOT EXISTS memories_fts_soft_delete AFTER UPDATE ON memories
|
|
2407
|
+
WHEN new.status = 'deleted' AND (old.status IS NULL OR old.status != 'deleted') BEGIN
|
|
2408
|
+
INSERT INTO memories_fts(memories_fts, rowid, raw_text) VALUES('delete', old.rowid, old.raw_text);
|
|
2409
|
+
END;
|
|
2402
2410
|
`);
|
|
2403
2411
|
await client.executeMultiple(`
|
|
2404
2412
|
CREATE TABLE IF NOT EXISTS sync_meta (
|
|
@@ -2801,6 +2809,13 @@ async function ensureSchema() {
|
|
|
2801
2809
|
});
|
|
2802
2810
|
} catch {
|
|
2803
2811
|
}
|
|
2812
|
+
try {
|
|
2813
|
+
await client.execute({
|
|
2814
|
+
sql: `ALTER TABLE memories ADD COLUMN deleted_at TEXT`,
|
|
2815
|
+
args: []
|
|
2816
|
+
});
|
|
2817
|
+
} catch {
|
|
2818
|
+
}
|
|
2804
2819
|
try {
|
|
2805
2820
|
await client.execute({
|
|
2806
2821
|
sql: `ALTER TABLE memories ADD COLUMN confidence REAL DEFAULT 0.7`,
|
|
@@ -3337,7 +3352,7 @@ async function disposeDatabase() {
|
|
|
3337
3352
|
_resilientClient = null;
|
|
3338
3353
|
}
|
|
3339
3354
|
}
|
|
3340
|
-
var _client, _resilientClient, _walCheckpointTimer, _daemonClient, _adapterClient, initTurso, disposeTurso;
|
|
3355
|
+
var _client, _resilientClient, _walCheckpointTimer, _daemonClient, _adapterClient, initTurso, SOFT_DELETE_RETENTION_DAYS, disposeTurso;
|
|
3341
3356
|
var init_database = __esm({
|
|
3342
3357
|
"src/lib/database.ts"() {
|
|
3343
3358
|
"use strict";
|
|
@@ -3351,6 +3366,7 @@ var init_database = __esm({
|
|
|
3351
3366
|
_daemonClient = null;
|
|
3352
3367
|
_adapterClient = null;
|
|
3353
3368
|
initTurso = initDatabase;
|
|
3369
|
+
SOFT_DELETE_RETENTION_DAYS = 7;
|
|
3354
3370
|
disposeTurso = disposeDatabase;
|
|
3355
3371
|
}
|
|
3356
3372
|
});
|
|
@@ -5275,9 +5291,10 @@ async function updateTask(input) {
|
|
|
5275
5291
|
args: [assignedAgent]
|
|
5276
5292
|
});
|
|
5277
5293
|
} else if (input.status === "cancelled") {
|
|
5294
|
+
const now2 = (/* @__PURE__ */ new Date()).toISOString();
|
|
5278
5295
|
await draftClient.execute({
|
|
5279
|
-
sql: `
|
|
5280
|
-
args: [assignedAgent]
|
|
5296
|
+
sql: `UPDATE memories SET status = 'deleted', deleted_at = ? WHERE agent_id = ? AND draft = 1`,
|
|
5297
|
+
args: [now2, assignedAgent]
|
|
5281
5298
|
});
|
|
5282
5299
|
}
|
|
5283
5300
|
} catch {
|
|
@@ -1652,6 +1652,7 @@ var init_db_daemon_client = __esm({
|
|
|
1652
1652
|
// src/lib/database.ts
|
|
1653
1653
|
var database_exports = {};
|
|
1654
1654
|
__export(database_exports, {
|
|
1655
|
+
SOFT_DELETE_RETENTION_DAYS: () => SOFT_DELETE_RETENTION_DAYS,
|
|
1655
1656
|
disposeDatabase: () => disposeDatabase,
|
|
1656
1657
|
disposeTurso: () => disposeTurso,
|
|
1657
1658
|
ensureSchema: () => ensureSchema,
|
|
@@ -1808,10 +1809,17 @@ async function ensureSchema() {
|
|
|
1808
1809
|
INSERT INTO memories_fts(memories_fts, rowid, raw_text) VALUES('delete', old.rowid, old.raw_text);
|
|
1809
1810
|
END;
|
|
1810
1811
|
|
|
1811
|
-
CREATE TRIGGER IF NOT EXISTS memories_fts_au AFTER UPDATE ON memories
|
|
1812
|
+
CREATE TRIGGER IF NOT EXISTS memories_fts_au AFTER UPDATE ON memories
|
|
1813
|
+
WHEN new.status IS NULL OR new.status != 'deleted' BEGIN
|
|
1812
1814
|
INSERT INTO memories_fts(memories_fts, rowid, raw_text) VALUES('delete', old.rowid, old.raw_text);
|
|
1813
1815
|
INSERT INTO memories_fts(rowid, raw_text) VALUES (new.rowid, new.raw_text);
|
|
1814
1816
|
END;
|
|
1817
|
+
|
|
1818
|
+
-- Soft-delete trigger: remove from FTS when status changes to 'deleted'
|
|
1819
|
+
CREATE TRIGGER IF NOT EXISTS memories_fts_soft_delete AFTER UPDATE ON memories
|
|
1820
|
+
WHEN new.status = 'deleted' AND (old.status IS NULL OR old.status != 'deleted') BEGIN
|
|
1821
|
+
INSERT INTO memories_fts(memories_fts, rowid, raw_text) VALUES('delete', old.rowid, old.raw_text);
|
|
1822
|
+
END;
|
|
1815
1823
|
`);
|
|
1816
1824
|
await client.executeMultiple(`
|
|
1817
1825
|
CREATE TABLE IF NOT EXISTS sync_meta (
|
|
@@ -2214,6 +2222,13 @@ async function ensureSchema() {
|
|
|
2214
2222
|
});
|
|
2215
2223
|
} catch {
|
|
2216
2224
|
}
|
|
2225
|
+
try {
|
|
2226
|
+
await client.execute({
|
|
2227
|
+
sql: `ALTER TABLE memories ADD COLUMN deleted_at TEXT`,
|
|
2228
|
+
args: []
|
|
2229
|
+
});
|
|
2230
|
+
} catch {
|
|
2231
|
+
}
|
|
2217
2232
|
try {
|
|
2218
2233
|
await client.execute({
|
|
2219
2234
|
sql: `ALTER TABLE memories ADD COLUMN confidence REAL DEFAULT 0.7`,
|
|
@@ -2750,7 +2765,7 @@ async function disposeDatabase() {
|
|
|
2750
2765
|
_resilientClient = null;
|
|
2751
2766
|
}
|
|
2752
2767
|
}
|
|
2753
|
-
var _client, _resilientClient, _walCheckpointTimer, _daemonClient, _adapterClient, initTurso, disposeTurso;
|
|
2768
|
+
var _client, _resilientClient, _walCheckpointTimer, _daemonClient, _adapterClient, initTurso, SOFT_DELETE_RETENTION_DAYS, disposeTurso;
|
|
2754
2769
|
var init_database = __esm({
|
|
2755
2770
|
"src/lib/database.ts"() {
|
|
2756
2771
|
"use strict";
|
|
@@ -2764,6 +2779,7 @@ var init_database = __esm({
|
|
|
2764
2779
|
_daemonClient = null;
|
|
2765
2780
|
_adapterClient = null;
|
|
2766
2781
|
initTurso = initDatabase;
|
|
2782
|
+
SOFT_DELETE_RETENTION_DAYS = 7;
|
|
2767
2783
|
disposeTurso = disposeDatabase;
|
|
2768
2784
|
}
|
|
2769
2785
|
});
|
|
@@ -6094,6 +6110,13 @@ function getSessionKey() {
|
|
|
6094
6110
|
return _cached2;
|
|
6095
6111
|
}
|
|
6096
6112
|
|
|
6113
|
+
// src/mcp/agent-context.ts
|
|
6114
|
+
import { AsyncLocalStorage } from "async_hooks";
|
|
6115
|
+
var agentStore = new AsyncLocalStorage();
|
|
6116
|
+
function getAgentContext() {
|
|
6117
|
+
return agentStore.getStore();
|
|
6118
|
+
}
|
|
6119
|
+
|
|
6097
6120
|
// src/lib/active-agent.ts
|
|
6098
6121
|
init_employees();
|
|
6099
6122
|
var CACHE_DIR = path11.join(EXE_AI_DIR, "session-cache");
|
|
@@ -6144,6 +6167,8 @@ function getMarkerPath() {
|
|
|
6144
6167
|
return path11.join(CACHE_DIR, `active-agent-${getSessionKey()}.json`);
|
|
6145
6168
|
}
|
|
6146
6169
|
function getActiveAgent() {
|
|
6170
|
+
const httpCtx = getAgentContext();
|
|
6171
|
+
if (httpCtx) return httpCtx;
|
|
6147
6172
|
try {
|
|
6148
6173
|
const markerPath = getMarkerPath();
|
|
6149
6174
|
const raw = readFileSync6(markerPath, "utf8");
|
|
@@ -177,6 +177,13 @@ function getSessionKey() {
|
|
|
177
177
|
return _cached;
|
|
178
178
|
}
|
|
179
179
|
|
|
180
|
+
// src/mcp/agent-context.ts
|
|
181
|
+
import { AsyncLocalStorage } from "async_hooks";
|
|
182
|
+
var agentStore = new AsyncLocalStorage();
|
|
183
|
+
function getAgentContext() {
|
|
184
|
+
return agentStore.getStore();
|
|
185
|
+
}
|
|
186
|
+
|
|
180
187
|
// src/lib/employees.ts
|
|
181
188
|
init_config();
|
|
182
189
|
import { readFile as readFile2, writeFile as writeFile2, mkdir as mkdir2 } from "fs/promises";
|
|
@@ -268,6 +275,8 @@ function getMarkerPath() {
|
|
|
268
275
|
return path3.join(CACHE_DIR, `active-agent-${getSessionKey()}.json`);
|
|
269
276
|
}
|
|
270
277
|
function getActiveAgent() {
|
|
278
|
+
const httpCtx = getAgentContext();
|
|
279
|
+
if (httpCtx) return httpCtx;
|
|
271
280
|
try {
|
|
272
281
|
const markerPath = getMarkerPath();
|
|
273
282
|
const raw = readFileSync3(markerPath, "utf8");
|
package/dist/hooks/ingest.js
CHANGED
|
@@ -1828,6 +1828,7 @@ var init_db_daemon_client = __esm({
|
|
|
1828
1828
|
// src/lib/database.ts
|
|
1829
1829
|
var database_exports = {};
|
|
1830
1830
|
__export(database_exports, {
|
|
1831
|
+
SOFT_DELETE_RETENTION_DAYS: () => SOFT_DELETE_RETENTION_DAYS,
|
|
1831
1832
|
disposeDatabase: () => disposeDatabase,
|
|
1832
1833
|
disposeTurso: () => disposeTurso,
|
|
1833
1834
|
ensureSchema: () => ensureSchema,
|
|
@@ -1984,10 +1985,17 @@ async function ensureSchema() {
|
|
|
1984
1985
|
INSERT INTO memories_fts(memories_fts, rowid, raw_text) VALUES('delete', old.rowid, old.raw_text);
|
|
1985
1986
|
END;
|
|
1986
1987
|
|
|
1987
|
-
CREATE TRIGGER IF NOT EXISTS memories_fts_au AFTER UPDATE ON memories
|
|
1988
|
+
CREATE TRIGGER IF NOT EXISTS memories_fts_au AFTER UPDATE ON memories
|
|
1989
|
+
WHEN new.status IS NULL OR new.status != 'deleted' BEGIN
|
|
1988
1990
|
INSERT INTO memories_fts(memories_fts, rowid, raw_text) VALUES('delete', old.rowid, old.raw_text);
|
|
1989
1991
|
INSERT INTO memories_fts(rowid, raw_text) VALUES (new.rowid, new.raw_text);
|
|
1990
1992
|
END;
|
|
1993
|
+
|
|
1994
|
+
-- Soft-delete trigger: remove from FTS when status changes to 'deleted'
|
|
1995
|
+
CREATE TRIGGER IF NOT EXISTS memories_fts_soft_delete AFTER UPDATE ON memories
|
|
1996
|
+
WHEN new.status = 'deleted' AND (old.status IS NULL OR old.status != 'deleted') BEGIN
|
|
1997
|
+
INSERT INTO memories_fts(memories_fts, rowid, raw_text) VALUES('delete', old.rowid, old.raw_text);
|
|
1998
|
+
END;
|
|
1991
1999
|
`);
|
|
1992
2000
|
await client.executeMultiple(`
|
|
1993
2001
|
CREATE TABLE IF NOT EXISTS sync_meta (
|
|
@@ -2390,6 +2398,13 @@ async function ensureSchema() {
|
|
|
2390
2398
|
});
|
|
2391
2399
|
} catch {
|
|
2392
2400
|
}
|
|
2401
|
+
try {
|
|
2402
|
+
await client.execute({
|
|
2403
|
+
sql: `ALTER TABLE memories ADD COLUMN deleted_at TEXT`,
|
|
2404
|
+
args: []
|
|
2405
|
+
});
|
|
2406
|
+
} catch {
|
|
2407
|
+
}
|
|
2393
2408
|
try {
|
|
2394
2409
|
await client.execute({
|
|
2395
2410
|
sql: `ALTER TABLE memories ADD COLUMN confidence REAL DEFAULT 0.7`,
|
|
@@ -2926,7 +2941,7 @@ async function disposeDatabase() {
|
|
|
2926
2941
|
_resilientClient = null;
|
|
2927
2942
|
}
|
|
2928
2943
|
}
|
|
2929
|
-
var _client, _resilientClient, _walCheckpointTimer, _daemonClient, _adapterClient, initTurso, disposeTurso;
|
|
2944
|
+
var _client, _resilientClient, _walCheckpointTimer, _daemonClient, _adapterClient, initTurso, SOFT_DELETE_RETENTION_DAYS, disposeTurso;
|
|
2930
2945
|
var init_database = __esm({
|
|
2931
2946
|
"src/lib/database.ts"() {
|
|
2932
2947
|
"use strict";
|
|
@@ -2940,6 +2955,7 @@ var init_database = __esm({
|
|
|
2940
2955
|
_daemonClient = null;
|
|
2941
2956
|
_adapterClient = null;
|
|
2942
2957
|
initTurso = initDatabase;
|
|
2958
|
+
SOFT_DELETE_RETENTION_DAYS = 7;
|
|
2943
2959
|
disposeTurso = disposeDatabase;
|
|
2944
2960
|
}
|
|
2945
2961
|
});
|
|
@@ -4788,6 +4804,13 @@ function getSessionKey() {
|
|
|
4788
4804
|
return _cached;
|
|
4789
4805
|
}
|
|
4790
4806
|
|
|
4807
|
+
// src/mcp/agent-context.ts
|
|
4808
|
+
import { AsyncLocalStorage } from "async_hooks";
|
|
4809
|
+
var agentStore = new AsyncLocalStorage();
|
|
4810
|
+
function getAgentContext() {
|
|
4811
|
+
return agentStore.getStore();
|
|
4812
|
+
}
|
|
4813
|
+
|
|
4791
4814
|
// src/lib/active-agent.ts
|
|
4792
4815
|
init_employees();
|
|
4793
4816
|
var CACHE_DIR = path4.join(EXE_AI_DIR, "session-cache");
|
|
@@ -4838,6 +4861,8 @@ function getMarkerPath() {
|
|
|
4838
4861
|
return path4.join(CACHE_DIR, `active-agent-${getSessionKey()}.json`);
|
|
4839
4862
|
}
|
|
4840
4863
|
function getActiveAgent() {
|
|
4864
|
+
const httpCtx = getAgentContext();
|
|
4865
|
+
if (httpCtx) return httpCtx;
|
|
4841
4866
|
try {
|
|
4842
4867
|
const markerPath = getMarkerPath();
|
|
4843
4868
|
const raw = readFileSync4(markerPath, "utf8");
|
|
@@ -1663,6 +1663,7 @@ var init_db_daemon_client = __esm({
|
|
|
1663
1663
|
// src/lib/database.ts
|
|
1664
1664
|
var database_exports = {};
|
|
1665
1665
|
__export(database_exports, {
|
|
1666
|
+
SOFT_DELETE_RETENTION_DAYS: () => SOFT_DELETE_RETENTION_DAYS,
|
|
1666
1667
|
disposeDatabase: () => disposeDatabase,
|
|
1667
1668
|
disposeTurso: () => disposeTurso,
|
|
1668
1669
|
ensureSchema: () => ensureSchema,
|
|
@@ -1819,10 +1820,17 @@ async function ensureSchema() {
|
|
|
1819
1820
|
INSERT INTO memories_fts(memories_fts, rowid, raw_text) VALUES('delete', old.rowid, old.raw_text);
|
|
1820
1821
|
END;
|
|
1821
1822
|
|
|
1822
|
-
CREATE TRIGGER IF NOT EXISTS memories_fts_au AFTER UPDATE ON memories
|
|
1823
|
+
CREATE TRIGGER IF NOT EXISTS memories_fts_au AFTER UPDATE ON memories
|
|
1824
|
+
WHEN new.status IS NULL OR new.status != 'deleted' BEGIN
|
|
1823
1825
|
INSERT INTO memories_fts(memories_fts, rowid, raw_text) VALUES('delete', old.rowid, old.raw_text);
|
|
1824
1826
|
INSERT INTO memories_fts(rowid, raw_text) VALUES (new.rowid, new.raw_text);
|
|
1825
1827
|
END;
|
|
1828
|
+
|
|
1829
|
+
-- Soft-delete trigger: remove from FTS when status changes to 'deleted'
|
|
1830
|
+
CREATE TRIGGER IF NOT EXISTS memories_fts_soft_delete AFTER UPDATE ON memories
|
|
1831
|
+
WHEN new.status = 'deleted' AND (old.status IS NULL OR old.status != 'deleted') BEGIN
|
|
1832
|
+
INSERT INTO memories_fts(memories_fts, rowid, raw_text) VALUES('delete', old.rowid, old.raw_text);
|
|
1833
|
+
END;
|
|
1826
1834
|
`);
|
|
1827
1835
|
await client.executeMultiple(`
|
|
1828
1836
|
CREATE TABLE IF NOT EXISTS sync_meta (
|
|
@@ -2225,6 +2233,13 @@ async function ensureSchema() {
|
|
|
2225
2233
|
});
|
|
2226
2234
|
} catch {
|
|
2227
2235
|
}
|
|
2236
|
+
try {
|
|
2237
|
+
await client.execute({
|
|
2238
|
+
sql: `ALTER TABLE memories ADD COLUMN deleted_at TEXT`,
|
|
2239
|
+
args: []
|
|
2240
|
+
});
|
|
2241
|
+
} catch {
|
|
2242
|
+
}
|
|
2228
2243
|
try {
|
|
2229
2244
|
await client.execute({
|
|
2230
2245
|
sql: `ALTER TABLE memories ADD COLUMN confidence REAL DEFAULT 0.7`,
|
|
@@ -2761,7 +2776,7 @@ async function disposeDatabase() {
|
|
|
2761
2776
|
_resilientClient = null;
|
|
2762
2777
|
}
|
|
2763
2778
|
}
|
|
2764
|
-
var _client, _resilientClient, _walCheckpointTimer, _daemonClient, _adapterClient, initTurso, disposeTurso;
|
|
2779
|
+
var _client, _resilientClient, _walCheckpointTimer, _daemonClient, _adapterClient, initTurso, SOFT_DELETE_RETENTION_DAYS, disposeTurso;
|
|
2765
2780
|
var init_database = __esm({
|
|
2766
2781
|
"src/lib/database.ts"() {
|
|
2767
2782
|
"use strict";
|
|
@@ -2775,6 +2790,7 @@ var init_database = __esm({
|
|
|
2775
2790
|
_daemonClient = null;
|
|
2776
2791
|
_adapterClient = null;
|
|
2777
2792
|
initTurso = initDatabase;
|
|
2793
|
+
SOFT_DELETE_RETENTION_DAYS = 7;
|
|
2778
2794
|
disposeTurso = disposeDatabase;
|
|
2779
2795
|
}
|
|
2780
2796
|
});
|
|
@@ -4331,6 +4347,13 @@ function getSessionKey() {
|
|
|
4331
4347
|
return _cached;
|
|
4332
4348
|
}
|
|
4333
4349
|
|
|
4350
|
+
// src/mcp/agent-context.ts
|
|
4351
|
+
import { AsyncLocalStorage } from "async_hooks";
|
|
4352
|
+
var agentStore = new AsyncLocalStorage();
|
|
4353
|
+
function getAgentContext() {
|
|
4354
|
+
return agentStore.getStore();
|
|
4355
|
+
}
|
|
4356
|
+
|
|
4334
4357
|
// src/lib/active-agent.ts
|
|
4335
4358
|
init_employees();
|
|
4336
4359
|
var CACHE_DIR = path3.join(EXE_AI_DIR, "session-cache");
|
|
@@ -4381,6 +4404,8 @@ function getMarkerPath() {
|
|
|
4381
4404
|
return path3.join(CACHE_DIR, `active-agent-${getSessionKey()}.json`);
|
|
4382
4405
|
}
|
|
4383
4406
|
function getActiveAgent() {
|
|
4407
|
+
const httpCtx = getAgentContext();
|
|
4408
|
+
if (httpCtx) return httpCtx;
|
|
4384
4409
|
try {
|
|
4385
4410
|
const markerPath = getMarkerPath();
|
|
4386
4411
|
const raw = readFileSync3(markerPath, "utf8");
|
|
@@ -1663,6 +1663,7 @@ var init_db_daemon_client = __esm({
|
|
|
1663
1663
|
// src/lib/database.ts
|
|
1664
1664
|
var database_exports = {};
|
|
1665
1665
|
__export(database_exports, {
|
|
1666
|
+
SOFT_DELETE_RETENTION_DAYS: () => SOFT_DELETE_RETENTION_DAYS,
|
|
1666
1667
|
disposeDatabase: () => disposeDatabase,
|
|
1667
1668
|
disposeTurso: () => disposeTurso,
|
|
1668
1669
|
ensureSchema: () => ensureSchema,
|
|
@@ -1819,10 +1820,17 @@ async function ensureSchema() {
|
|
|
1819
1820
|
INSERT INTO memories_fts(memories_fts, rowid, raw_text) VALUES('delete', old.rowid, old.raw_text);
|
|
1820
1821
|
END;
|
|
1821
1822
|
|
|
1822
|
-
CREATE TRIGGER IF NOT EXISTS memories_fts_au AFTER UPDATE ON memories
|
|
1823
|
+
CREATE TRIGGER IF NOT EXISTS memories_fts_au AFTER UPDATE ON memories
|
|
1824
|
+
WHEN new.status IS NULL OR new.status != 'deleted' BEGIN
|
|
1823
1825
|
INSERT INTO memories_fts(memories_fts, rowid, raw_text) VALUES('delete', old.rowid, old.raw_text);
|
|
1824
1826
|
INSERT INTO memories_fts(rowid, raw_text) VALUES (new.rowid, new.raw_text);
|
|
1825
1827
|
END;
|
|
1828
|
+
|
|
1829
|
+
-- Soft-delete trigger: remove from FTS when status changes to 'deleted'
|
|
1830
|
+
CREATE TRIGGER IF NOT EXISTS memories_fts_soft_delete AFTER UPDATE ON memories
|
|
1831
|
+
WHEN new.status = 'deleted' AND (old.status IS NULL OR old.status != 'deleted') BEGIN
|
|
1832
|
+
INSERT INTO memories_fts(memories_fts, rowid, raw_text) VALUES('delete', old.rowid, old.raw_text);
|
|
1833
|
+
END;
|
|
1826
1834
|
`);
|
|
1827
1835
|
await client.executeMultiple(`
|
|
1828
1836
|
CREATE TABLE IF NOT EXISTS sync_meta (
|
|
@@ -2225,6 +2233,13 @@ async function ensureSchema() {
|
|
|
2225
2233
|
});
|
|
2226
2234
|
} catch {
|
|
2227
2235
|
}
|
|
2236
|
+
try {
|
|
2237
|
+
await client.execute({
|
|
2238
|
+
sql: `ALTER TABLE memories ADD COLUMN deleted_at TEXT`,
|
|
2239
|
+
args: []
|
|
2240
|
+
});
|
|
2241
|
+
} catch {
|
|
2242
|
+
}
|
|
2228
2243
|
try {
|
|
2229
2244
|
await client.execute({
|
|
2230
2245
|
sql: `ALTER TABLE memories ADD COLUMN confidence REAL DEFAULT 0.7`,
|
|
@@ -2761,7 +2776,7 @@ async function disposeDatabase() {
|
|
|
2761
2776
|
_resilientClient = null;
|
|
2762
2777
|
}
|
|
2763
2778
|
}
|
|
2764
|
-
var _client, _resilientClient, _walCheckpointTimer, _daemonClient, _adapterClient, initTurso, disposeTurso;
|
|
2779
|
+
var _client, _resilientClient, _walCheckpointTimer, _daemonClient, _adapterClient, initTurso, SOFT_DELETE_RETENTION_DAYS, disposeTurso;
|
|
2765
2780
|
var init_database = __esm({
|
|
2766
2781
|
"src/lib/database.ts"() {
|
|
2767
2782
|
"use strict";
|
|
@@ -2775,6 +2790,7 @@ var init_database = __esm({
|
|
|
2775
2790
|
_daemonClient = null;
|
|
2776
2791
|
_adapterClient = null;
|
|
2777
2792
|
initTurso = initDatabase;
|
|
2793
|
+
SOFT_DELETE_RETENTION_DAYS = 7;
|
|
2778
2794
|
disposeTurso = disposeDatabase;
|
|
2779
2795
|
}
|
|
2780
2796
|
});
|
|
@@ -4331,6 +4347,13 @@ function getSessionKey() {
|
|
|
4331
4347
|
return _cached;
|
|
4332
4348
|
}
|
|
4333
4349
|
|
|
4350
|
+
// src/mcp/agent-context.ts
|
|
4351
|
+
import { AsyncLocalStorage } from "async_hooks";
|
|
4352
|
+
var agentStore = new AsyncLocalStorage();
|
|
4353
|
+
function getAgentContext() {
|
|
4354
|
+
return agentStore.getStore();
|
|
4355
|
+
}
|
|
4356
|
+
|
|
4334
4357
|
// src/lib/active-agent.ts
|
|
4335
4358
|
init_employees();
|
|
4336
4359
|
var CACHE_DIR = path3.join(EXE_AI_DIR, "session-cache");
|
|
@@ -4381,6 +4404,8 @@ function getMarkerPath() {
|
|
|
4381
4404
|
return path3.join(CACHE_DIR, `active-agent-${getSessionKey()}.json`);
|
|
4382
4405
|
}
|
|
4383
4406
|
function getActiveAgent() {
|
|
4407
|
+
const httpCtx = getAgentContext();
|
|
4408
|
+
if (httpCtx) return httpCtx;
|
|
4384
4409
|
try {
|
|
4385
4410
|
const markerPath = getMarkerPath();
|
|
4386
4411
|
const raw = readFileSync3(markerPath, "utf8");
|
|
@@ -1958,6 +1958,7 @@ var init_db_daemon_client = __esm({
|
|
|
1958
1958
|
// src/lib/database.ts
|
|
1959
1959
|
var database_exports = {};
|
|
1960
1960
|
__export(database_exports, {
|
|
1961
|
+
SOFT_DELETE_RETENTION_DAYS: () => SOFT_DELETE_RETENTION_DAYS,
|
|
1961
1962
|
disposeDatabase: () => disposeDatabase,
|
|
1962
1963
|
disposeTurso: () => disposeTurso,
|
|
1963
1964
|
ensureSchema: () => ensureSchema,
|
|
@@ -2114,10 +2115,17 @@ async function ensureSchema() {
|
|
|
2114
2115
|
INSERT INTO memories_fts(memories_fts, rowid, raw_text) VALUES('delete', old.rowid, old.raw_text);
|
|
2115
2116
|
END;
|
|
2116
2117
|
|
|
2117
|
-
CREATE TRIGGER IF NOT EXISTS memories_fts_au AFTER UPDATE ON memories
|
|
2118
|
+
CREATE TRIGGER IF NOT EXISTS memories_fts_au AFTER UPDATE ON memories
|
|
2119
|
+
WHEN new.status IS NULL OR new.status != 'deleted' BEGIN
|
|
2118
2120
|
INSERT INTO memories_fts(memories_fts, rowid, raw_text) VALUES('delete', old.rowid, old.raw_text);
|
|
2119
2121
|
INSERT INTO memories_fts(rowid, raw_text) VALUES (new.rowid, new.raw_text);
|
|
2120
2122
|
END;
|
|
2123
|
+
|
|
2124
|
+
-- Soft-delete trigger: remove from FTS when status changes to 'deleted'
|
|
2125
|
+
CREATE TRIGGER IF NOT EXISTS memories_fts_soft_delete AFTER UPDATE ON memories
|
|
2126
|
+
WHEN new.status = 'deleted' AND (old.status IS NULL OR old.status != 'deleted') BEGIN
|
|
2127
|
+
INSERT INTO memories_fts(memories_fts, rowid, raw_text) VALUES('delete', old.rowid, old.raw_text);
|
|
2128
|
+
END;
|
|
2121
2129
|
`);
|
|
2122
2130
|
await client.executeMultiple(`
|
|
2123
2131
|
CREATE TABLE IF NOT EXISTS sync_meta (
|
|
@@ -2520,6 +2528,13 @@ async function ensureSchema() {
|
|
|
2520
2528
|
});
|
|
2521
2529
|
} catch {
|
|
2522
2530
|
}
|
|
2531
|
+
try {
|
|
2532
|
+
await client.execute({
|
|
2533
|
+
sql: `ALTER TABLE memories ADD COLUMN deleted_at TEXT`,
|
|
2534
|
+
args: []
|
|
2535
|
+
});
|
|
2536
|
+
} catch {
|
|
2537
|
+
}
|
|
2523
2538
|
try {
|
|
2524
2539
|
await client.execute({
|
|
2525
2540
|
sql: `ALTER TABLE memories ADD COLUMN confidence REAL DEFAULT 0.7`,
|
|
@@ -3056,7 +3071,7 @@ async function disposeDatabase() {
|
|
|
3056
3071
|
_resilientClient = null;
|
|
3057
3072
|
}
|
|
3058
3073
|
}
|
|
3059
|
-
var _client, _resilientClient, _walCheckpointTimer, _daemonClient, _adapterClient, initTurso, disposeTurso;
|
|
3074
|
+
var _client, _resilientClient, _walCheckpointTimer, _daemonClient, _adapterClient, initTurso, SOFT_DELETE_RETENTION_DAYS, disposeTurso;
|
|
3060
3075
|
var init_database = __esm({
|
|
3061
3076
|
"src/lib/database.ts"() {
|
|
3062
3077
|
"use strict";
|
|
@@ -3070,6 +3085,7 @@ var init_database = __esm({
|
|
|
3070
3085
|
_daemonClient = null;
|
|
3071
3086
|
_adapterClient = null;
|
|
3072
3087
|
initTurso = initDatabase;
|
|
3088
|
+
SOFT_DELETE_RETENTION_DAYS = 7;
|
|
3073
3089
|
disposeTurso = disposeDatabase;
|
|
3074
3090
|
}
|
|
3075
3091
|
});
|
|
@@ -4686,10 +4702,19 @@ var init_fast_db_init = __esm({
|
|
|
4686
4702
|
// src/lib/active-agent.ts
|
|
4687
4703
|
init_config();
|
|
4688
4704
|
init_session_key();
|
|
4689
|
-
init_employees();
|
|
4690
4705
|
import { readFileSync as readFileSync3, writeFileSync as writeFileSync2, mkdirSync as mkdirSync2, unlinkSync as unlinkSync2, readdirSync } from "fs";
|
|
4691
4706
|
import { execSync as execSync3 } from "child_process";
|
|
4692
4707
|
import path3 from "path";
|
|
4708
|
+
|
|
4709
|
+
// src/mcp/agent-context.ts
|
|
4710
|
+
import { AsyncLocalStorage } from "async_hooks";
|
|
4711
|
+
var agentStore = new AsyncLocalStorage();
|
|
4712
|
+
function getAgentContext() {
|
|
4713
|
+
return agentStore.getStore();
|
|
4714
|
+
}
|
|
4715
|
+
|
|
4716
|
+
// src/lib/active-agent.ts
|
|
4717
|
+
init_employees();
|
|
4693
4718
|
var CACHE_DIR = path3.join(EXE_AI_DIR, "session-cache");
|
|
4694
4719
|
var STALE_MS = 24 * 60 * 60 * 1e3;
|
|
4695
4720
|
function isNameWithOptionalInstance(candidate, baseName) {
|
|
@@ -4738,6 +4763,8 @@ function getMarkerPath() {
|
|
|
4738
4763
|
return path3.join(CACHE_DIR, `active-agent-${getSessionKey()}.json`);
|
|
4739
4764
|
}
|
|
4740
4765
|
function getActiveAgent() {
|
|
4766
|
+
const httpCtx = getAgentContext();
|
|
4767
|
+
if (httpCtx) return httpCtx;
|
|
4741
4768
|
try {
|
|
4742
4769
|
const markerPath = getMarkerPath();
|
|
4743
4770
|
const raw = readFileSync3(markerPath, "utf8");
|