@askexenow/exe-os 0.9.66 → 0.9.67
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/deploy/stack-manifests/v0.9.json +54 -5
- package/dist/bin/age-ontology-load.js +61 -0
- package/dist/bin/agentic-ontology-backfill.js +4708 -0
- package/dist/bin/agentic-reflection-backfill.js +4144 -0
- package/dist/bin/{exe-link.js → agentic-semantic-label.js} +1523 -2275
- package/dist/bin/backfill-conversations.js +506 -20
- package/dist/bin/backfill-responses.js +506 -20
- package/dist/bin/backfill-vectors.js +233 -20
- package/dist/bin/bulk-sync-postgres.js +4876 -0
- package/dist/bin/cleanup-stale-review-tasks.js +507 -21
- package/dist/bin/cli.js +2450 -1530
- package/dist/bin/exe-assign.js +506 -20
- package/dist/bin/exe-boot.js +410 -60
- package/dist/bin/exe-cloud.js +795 -105
- package/dist/bin/exe-dispatch.js +516 -22
- package/dist/bin/exe-doctor.js +587 -30
- package/dist/bin/exe-export-behaviors.js +518 -24
- package/dist/bin/exe-forget.js +507 -21
- package/dist/bin/exe-gateway.js +571 -25
- package/dist/bin/exe-heartbeat.js +518 -24
- package/dist/bin/exe-kill.js +507 -21
- package/dist/bin/exe-launch-agent.js +2312 -1069
- package/dist/bin/exe-new-employee.js +197 -165
- package/dist/bin/exe-pending-messages.js +507 -21
- package/dist/bin/exe-pending-notifications.js +507 -21
- package/dist/bin/exe-pending-reviews.js +507 -21
- package/dist/bin/exe-rename.js +507 -21
- package/dist/bin/exe-review.js +507 -21
- package/dist/bin/exe-search.js +518 -24
- package/dist/bin/exe-session-cleanup.js +516 -22
- package/dist/bin/exe-settings.js +4 -0
- package/dist/bin/exe-start-codex.js +682 -143
- package/dist/bin/exe-start-opencode.js +627 -79
- package/dist/bin/exe-status.js +507 -21
- package/dist/bin/exe-team.js +507 -21
- package/dist/bin/git-sweep.js +516 -22
- package/dist/bin/graph-backfill.js +558 -21
- package/dist/bin/graph-export.js +507 -21
- package/dist/bin/graph-layer-benchmark.js +109 -0
- package/dist/bin/install.js +305 -288
- package/dist/bin/intercom-check.js +516 -22
- package/dist/bin/postgres-agentic-reflection-backfill.js +187 -0
- package/dist/bin/postgres-agentic-semantic-backfill.js +237 -0
- package/dist/bin/scan-tasks.js +516 -22
- package/dist/bin/setup.js +412 -62
- package/dist/bin/shard-migrate.js +506 -20
- package/dist/gateway/index.js +569 -23
- package/dist/hooks/bug-report-worker.js +519 -25
- package/dist/hooks/codex-stop-task-finalizer.js +516 -22
- package/dist/hooks/commit-complete.js +516 -22
- package/dist/hooks/error-recall.js +518 -24
- package/dist/hooks/ingest.js +516 -22
- package/dist/hooks/instructions-loaded.js +507 -21
- package/dist/hooks/notification.js +507 -21
- package/dist/hooks/post-compact.js +507 -21
- package/dist/hooks/post-tool-combined.js +519 -25
- package/dist/hooks/pre-compact.js +516 -22
- package/dist/hooks/pre-tool-use.js +507 -21
- package/dist/hooks/prompt-submit.js +519 -25
- package/dist/hooks/session-end.js +516 -22
- package/dist/hooks/session-start.js +520 -26
- package/dist/hooks/stop.js +517 -23
- package/dist/hooks/subagent-stop.js +507 -21
- package/dist/hooks/summary-worker.js +411 -61
- package/dist/index.js +569 -23
- package/dist/lib/cloud-sync.js +391 -53
- package/dist/lib/config.js +13 -1
- package/dist/lib/consolidation.js +1 -1
- package/dist/lib/database.js +124 -0
- package/dist/lib/db.js +124 -0
- package/dist/lib/device-registry.js +124 -0
- package/dist/lib/embedder.js +13 -1
- package/dist/lib/exe-daemon.js +2184 -561
- package/dist/lib/hybrid-search.js +518 -24
- package/dist/lib/identity.js +3 -0
- package/dist/lib/keychain.js +178 -22
- package/dist/lib/messaging.js +3 -0
- package/dist/lib/reminders.js +3 -0
- package/dist/lib/schedules.js +233 -20
- package/dist/lib/skill-learning.js +16 -1
- package/dist/lib/store.js +506 -20
- package/dist/lib/tasks.js +16 -1
- package/dist/lib/tmux-routing.js +16 -1
- package/dist/lib/token-spend.js +3 -0
- package/dist/mcp/server.js +1757 -428
- package/dist/mcp/tools/complete-reminder.js +3 -0
- package/dist/mcp/tools/create-reminder.js +3 -0
- package/dist/mcp/tools/create-task.js +16 -1
- package/dist/mcp/tools/deactivate-behavior.js +3 -0
- package/dist/mcp/tools/list-reminders.js +3 -0
- package/dist/mcp/tools/list-tasks.js +3 -0
- package/dist/mcp/tools/send-message.js +3 -0
- package/dist/mcp/tools/update-task.js +16 -1
- package/dist/runtime/index.js +516 -22
- package/dist/tui/App.js +594 -29
- package/package.json +8 -5
- package/src/commands/exe/cloud.md +6 -10
- package/stack.release.json +3 -3
- package/src/commands/exe/link.md +0 -18
package/dist/lib/config.js
CHANGED
|
@@ -201,6 +201,10 @@ async function loadConfig() {
|
|
|
201
201
|
if (config.dbPath.startsWith("~")) {
|
|
202
202
|
config.dbPath = config.dbPath.replace(/^~/, os.homedir());
|
|
203
203
|
}
|
|
204
|
+
const envDbPath = path.join(dir, "memories.db");
|
|
205
|
+
if (process.env.EXE_OS_DIR && config.dbPath !== envDbPath && !existsSync2(config.dbPath) && existsSync2(envDbPath)) {
|
|
206
|
+
config.dbPath = envDbPath;
|
|
207
|
+
}
|
|
204
208
|
return config;
|
|
205
209
|
} catch {
|
|
206
210
|
return { ...DEFAULT_CONFIG, dbPath: path.join(dir, "memories.db") };
|
|
@@ -221,7 +225,15 @@ function loadConfigSync() {
|
|
|
221
225
|
normalizeSessionLifecycle(migratedCfg);
|
|
222
226
|
normalizeAutoUpdate(migratedCfg);
|
|
223
227
|
normalizeOrchestration(migratedCfg);
|
|
224
|
-
|
|
228
|
+
const config = { ...DEFAULT_CONFIG, dbPath: path.join(dir, "memories.db"), ...migratedCfg };
|
|
229
|
+
if (config.dbPath.startsWith("~")) {
|
|
230
|
+
config.dbPath = config.dbPath.replace(/^~/, os.homedir());
|
|
231
|
+
}
|
|
232
|
+
const envDbPath = path.join(dir, "memories.db");
|
|
233
|
+
if (process.env.EXE_OS_DIR && config.dbPath !== envDbPath && !existsSync2(config.dbPath) && existsSync2(envDbPath)) {
|
|
234
|
+
config.dbPath = envDbPath;
|
|
235
|
+
}
|
|
236
|
+
return config;
|
|
225
237
|
} catch {
|
|
226
238
|
return { ...DEFAULT_CONFIG, dbPath: path.join(dir, "memories.db") };
|
|
227
239
|
}
|
|
@@ -558,7 +558,7 @@ init_database();
|
|
|
558
558
|
|
|
559
559
|
// src/lib/keychain.ts
|
|
560
560
|
import { readFile as readFile3, writeFile as writeFile3, unlink, mkdir as mkdir3, chmod as chmod2 } from "fs/promises";
|
|
561
|
-
import { existsSync as existsSync5 } from "fs";
|
|
561
|
+
import { existsSync as existsSync5, statSync } from "fs";
|
|
562
562
|
import { execSync as execSync2 } from "child_process";
|
|
563
563
|
import path5 from "path";
|
|
564
564
|
import os4 from "os";
|
package/dist/lib/database.js
CHANGED
|
@@ -1387,6 +1387,9 @@ function getClient() {
|
|
|
1387
1387
|
if (_daemonClient && _daemonClient._isDaemonActive()) {
|
|
1388
1388
|
return _daemonClient;
|
|
1389
1389
|
}
|
|
1390
|
+
if (!_resilientClient) {
|
|
1391
|
+
return _adapterClient;
|
|
1392
|
+
}
|
|
1390
1393
|
return _resilientClient;
|
|
1391
1394
|
}
|
|
1392
1395
|
async function initDaemonClient() {
|
|
@@ -2419,6 +2422,127 @@ async function ensureSchema() {
|
|
|
2419
2422
|
VALUES (new.rowid, new.content, new.subject, new.predicate, new.object);
|
|
2420
2423
|
END;
|
|
2421
2424
|
`);
|
|
2425
|
+
await client.executeMultiple(`
|
|
2426
|
+
CREATE TABLE IF NOT EXISTS agent_sessions (
|
|
2427
|
+
id TEXT PRIMARY KEY,
|
|
2428
|
+
agent_id TEXT NOT NULL,
|
|
2429
|
+
project_name TEXT,
|
|
2430
|
+
started_at TEXT NOT NULL,
|
|
2431
|
+
last_event_at TEXT NOT NULL,
|
|
2432
|
+
event_count INTEGER NOT NULL DEFAULT 0,
|
|
2433
|
+
properties TEXT DEFAULT '{}'
|
|
2434
|
+
);
|
|
2435
|
+
|
|
2436
|
+
CREATE INDEX IF NOT EXISTS idx_agent_sessions_agent_time
|
|
2437
|
+
ON agent_sessions(agent_id, started_at);
|
|
2438
|
+
|
|
2439
|
+
CREATE TABLE IF NOT EXISTS agent_goals (
|
|
2440
|
+
id TEXT PRIMARY KEY,
|
|
2441
|
+
statement TEXT NOT NULL,
|
|
2442
|
+
owner_agent_id TEXT,
|
|
2443
|
+
project_name TEXT,
|
|
2444
|
+
status TEXT NOT NULL DEFAULT 'open',
|
|
2445
|
+
priority INTEGER NOT NULL DEFAULT 5,
|
|
2446
|
+
success_criteria TEXT,
|
|
2447
|
+
parent_goal_id TEXT,
|
|
2448
|
+
due_at TEXT,
|
|
2449
|
+
achieved_at TEXT,
|
|
2450
|
+
supersedes_id TEXT,
|
|
2451
|
+
created_at TEXT NOT NULL,
|
|
2452
|
+
updated_at TEXT NOT NULL,
|
|
2453
|
+
source_memory_id TEXT
|
|
2454
|
+
);
|
|
2455
|
+
|
|
2456
|
+
CREATE INDEX IF NOT EXISTS idx_agent_goals_project_status
|
|
2457
|
+
ON agent_goals(project_name, status, priority);
|
|
2458
|
+
|
|
2459
|
+
CREATE TABLE IF NOT EXISTS agent_events (
|
|
2460
|
+
id TEXT PRIMARY KEY,
|
|
2461
|
+
event_type TEXT NOT NULL,
|
|
2462
|
+
occurred_at TEXT NOT NULL,
|
|
2463
|
+
sequence_index INTEGER NOT NULL,
|
|
2464
|
+
actor_agent_id TEXT,
|
|
2465
|
+
agent_role TEXT,
|
|
2466
|
+
project_name TEXT,
|
|
2467
|
+
session_id TEXT,
|
|
2468
|
+
task_id TEXT,
|
|
2469
|
+
goal_id TEXT,
|
|
2470
|
+
parent_event_id TEXT,
|
|
2471
|
+
intention TEXT,
|
|
2472
|
+
outcome TEXT,
|
|
2473
|
+
evidence_memory_id TEXT,
|
|
2474
|
+
impact TEXT,
|
|
2475
|
+
payload TEXT DEFAULT '{}',
|
|
2476
|
+
created_at TEXT NOT NULL
|
|
2477
|
+
);
|
|
2478
|
+
|
|
2479
|
+
CREATE INDEX IF NOT EXISTS idx_agent_events_time
|
|
2480
|
+
ON agent_events(occurred_at, sequence_index);
|
|
2481
|
+
|
|
2482
|
+
CREATE INDEX IF NOT EXISTS idx_agent_events_session_seq
|
|
2483
|
+
ON agent_events(session_id, sequence_index);
|
|
2484
|
+
|
|
2485
|
+
CREATE INDEX IF NOT EXISTS idx_agent_events_goal_time
|
|
2486
|
+
ON agent_events(goal_id, occurred_at);
|
|
2487
|
+
|
|
2488
|
+
CREATE INDEX IF NOT EXISTS idx_agent_events_memory
|
|
2489
|
+
ON agent_events(evidence_memory_id);
|
|
2490
|
+
|
|
2491
|
+
CREATE TABLE IF NOT EXISTS agent_goal_links (
|
|
2492
|
+
id TEXT PRIMARY KEY,
|
|
2493
|
+
goal_id TEXT NOT NULL,
|
|
2494
|
+
link_type TEXT NOT NULL,
|
|
2495
|
+
target_id TEXT NOT NULL,
|
|
2496
|
+
target_type TEXT NOT NULL,
|
|
2497
|
+
created_at TEXT NOT NULL
|
|
2498
|
+
);
|
|
2499
|
+
|
|
2500
|
+
CREATE INDEX IF NOT EXISTS idx_agent_goal_links_goal
|
|
2501
|
+
ON agent_goal_links(goal_id, target_type);
|
|
2502
|
+
|
|
2503
|
+
CREATE TABLE IF NOT EXISTS agent_semantic_labels (
|
|
2504
|
+
id TEXT PRIMARY KEY,
|
|
2505
|
+
source_memory_id TEXT NOT NULL,
|
|
2506
|
+
event_id TEXT,
|
|
2507
|
+
labeler TEXT NOT NULL,
|
|
2508
|
+
schema_version INTEGER NOT NULL DEFAULT 1,
|
|
2509
|
+
confidence REAL NOT NULL DEFAULT 0,
|
|
2510
|
+
labels TEXT NOT NULL,
|
|
2511
|
+
created_at TEXT NOT NULL,
|
|
2512
|
+
updated_at TEXT NOT NULL
|
|
2513
|
+
);
|
|
2514
|
+
|
|
2515
|
+
CREATE INDEX IF NOT EXISTS idx_agent_semantic_labels_memory
|
|
2516
|
+
ON agent_semantic_labels(source_memory_id, labeler);
|
|
2517
|
+
|
|
2518
|
+
CREATE INDEX IF NOT EXISTS idx_agent_semantic_labels_event
|
|
2519
|
+
ON agent_semantic_labels(event_id);
|
|
2520
|
+
|
|
2521
|
+
CREATE TABLE IF NOT EXISTS agent_reflection_checkpoints (
|
|
2522
|
+
id TEXT PRIMARY KEY,
|
|
2523
|
+
project_name TEXT,
|
|
2524
|
+
session_id TEXT,
|
|
2525
|
+
window_start_at TEXT NOT NULL,
|
|
2526
|
+
window_end_at TEXT NOT NULL,
|
|
2527
|
+
event_count INTEGER NOT NULL DEFAULT 0,
|
|
2528
|
+
goal_count INTEGER NOT NULL DEFAULT 0,
|
|
2529
|
+
success_count INTEGER NOT NULL DEFAULT 0,
|
|
2530
|
+
failure_count INTEGER NOT NULL DEFAULT 0,
|
|
2531
|
+
risk_count INTEGER NOT NULL DEFAULT 0,
|
|
2532
|
+
summary TEXT NOT NULL,
|
|
2533
|
+
learnings TEXT NOT NULL DEFAULT '[]',
|
|
2534
|
+
next_actions TEXT NOT NULL DEFAULT '[]',
|
|
2535
|
+
evidence_event_ids TEXT NOT NULL DEFAULT '[]',
|
|
2536
|
+
confidence REAL NOT NULL DEFAULT 0,
|
|
2537
|
+
created_at TEXT NOT NULL
|
|
2538
|
+
);
|
|
2539
|
+
|
|
2540
|
+
CREATE INDEX IF NOT EXISTS idx_agent_reflection_project_time
|
|
2541
|
+
ON agent_reflection_checkpoints(project_name, window_end_at);
|
|
2542
|
+
|
|
2543
|
+
CREATE INDEX IF NOT EXISTS idx_agent_reflection_session_time
|
|
2544
|
+
ON agent_reflection_checkpoints(session_id, window_end_at);
|
|
2545
|
+
`);
|
|
2422
2546
|
try {
|
|
2423
2547
|
await client.execute({
|
|
2424
2548
|
sql: `ALTER TABLE memories ADD COLUMN tier INTEGER DEFAULT 3`,
|
package/dist/lib/db.js
CHANGED
|
@@ -1387,6 +1387,9 @@ function getClient() {
|
|
|
1387
1387
|
if (_daemonClient && _daemonClient._isDaemonActive()) {
|
|
1388
1388
|
return _daemonClient;
|
|
1389
1389
|
}
|
|
1390
|
+
if (!_resilientClient) {
|
|
1391
|
+
return _adapterClient;
|
|
1392
|
+
}
|
|
1390
1393
|
return _resilientClient;
|
|
1391
1394
|
}
|
|
1392
1395
|
async function initDaemonClient() {
|
|
@@ -2419,6 +2422,127 @@ async function ensureSchema() {
|
|
|
2419
2422
|
VALUES (new.rowid, new.content, new.subject, new.predicate, new.object);
|
|
2420
2423
|
END;
|
|
2421
2424
|
`);
|
|
2425
|
+
await client.executeMultiple(`
|
|
2426
|
+
CREATE TABLE IF NOT EXISTS agent_sessions (
|
|
2427
|
+
id TEXT PRIMARY KEY,
|
|
2428
|
+
agent_id TEXT NOT NULL,
|
|
2429
|
+
project_name TEXT,
|
|
2430
|
+
started_at TEXT NOT NULL,
|
|
2431
|
+
last_event_at TEXT NOT NULL,
|
|
2432
|
+
event_count INTEGER NOT NULL DEFAULT 0,
|
|
2433
|
+
properties TEXT DEFAULT '{}'
|
|
2434
|
+
);
|
|
2435
|
+
|
|
2436
|
+
CREATE INDEX IF NOT EXISTS idx_agent_sessions_agent_time
|
|
2437
|
+
ON agent_sessions(agent_id, started_at);
|
|
2438
|
+
|
|
2439
|
+
CREATE TABLE IF NOT EXISTS agent_goals (
|
|
2440
|
+
id TEXT PRIMARY KEY,
|
|
2441
|
+
statement TEXT NOT NULL,
|
|
2442
|
+
owner_agent_id TEXT,
|
|
2443
|
+
project_name TEXT,
|
|
2444
|
+
status TEXT NOT NULL DEFAULT 'open',
|
|
2445
|
+
priority INTEGER NOT NULL DEFAULT 5,
|
|
2446
|
+
success_criteria TEXT,
|
|
2447
|
+
parent_goal_id TEXT,
|
|
2448
|
+
due_at TEXT,
|
|
2449
|
+
achieved_at TEXT,
|
|
2450
|
+
supersedes_id TEXT,
|
|
2451
|
+
created_at TEXT NOT NULL,
|
|
2452
|
+
updated_at TEXT NOT NULL,
|
|
2453
|
+
source_memory_id TEXT
|
|
2454
|
+
);
|
|
2455
|
+
|
|
2456
|
+
CREATE INDEX IF NOT EXISTS idx_agent_goals_project_status
|
|
2457
|
+
ON agent_goals(project_name, status, priority);
|
|
2458
|
+
|
|
2459
|
+
CREATE TABLE IF NOT EXISTS agent_events (
|
|
2460
|
+
id TEXT PRIMARY KEY,
|
|
2461
|
+
event_type TEXT NOT NULL,
|
|
2462
|
+
occurred_at TEXT NOT NULL,
|
|
2463
|
+
sequence_index INTEGER NOT NULL,
|
|
2464
|
+
actor_agent_id TEXT,
|
|
2465
|
+
agent_role TEXT,
|
|
2466
|
+
project_name TEXT,
|
|
2467
|
+
session_id TEXT,
|
|
2468
|
+
task_id TEXT,
|
|
2469
|
+
goal_id TEXT,
|
|
2470
|
+
parent_event_id TEXT,
|
|
2471
|
+
intention TEXT,
|
|
2472
|
+
outcome TEXT,
|
|
2473
|
+
evidence_memory_id TEXT,
|
|
2474
|
+
impact TEXT,
|
|
2475
|
+
payload TEXT DEFAULT '{}',
|
|
2476
|
+
created_at TEXT NOT NULL
|
|
2477
|
+
);
|
|
2478
|
+
|
|
2479
|
+
CREATE INDEX IF NOT EXISTS idx_agent_events_time
|
|
2480
|
+
ON agent_events(occurred_at, sequence_index);
|
|
2481
|
+
|
|
2482
|
+
CREATE INDEX IF NOT EXISTS idx_agent_events_session_seq
|
|
2483
|
+
ON agent_events(session_id, sequence_index);
|
|
2484
|
+
|
|
2485
|
+
CREATE INDEX IF NOT EXISTS idx_agent_events_goal_time
|
|
2486
|
+
ON agent_events(goal_id, occurred_at);
|
|
2487
|
+
|
|
2488
|
+
CREATE INDEX IF NOT EXISTS idx_agent_events_memory
|
|
2489
|
+
ON agent_events(evidence_memory_id);
|
|
2490
|
+
|
|
2491
|
+
CREATE TABLE IF NOT EXISTS agent_goal_links (
|
|
2492
|
+
id TEXT PRIMARY KEY,
|
|
2493
|
+
goal_id TEXT NOT NULL,
|
|
2494
|
+
link_type TEXT NOT NULL,
|
|
2495
|
+
target_id TEXT NOT NULL,
|
|
2496
|
+
target_type TEXT NOT NULL,
|
|
2497
|
+
created_at TEXT NOT NULL
|
|
2498
|
+
);
|
|
2499
|
+
|
|
2500
|
+
CREATE INDEX IF NOT EXISTS idx_agent_goal_links_goal
|
|
2501
|
+
ON agent_goal_links(goal_id, target_type);
|
|
2502
|
+
|
|
2503
|
+
CREATE TABLE IF NOT EXISTS agent_semantic_labels (
|
|
2504
|
+
id TEXT PRIMARY KEY,
|
|
2505
|
+
source_memory_id TEXT NOT NULL,
|
|
2506
|
+
event_id TEXT,
|
|
2507
|
+
labeler TEXT NOT NULL,
|
|
2508
|
+
schema_version INTEGER NOT NULL DEFAULT 1,
|
|
2509
|
+
confidence REAL NOT NULL DEFAULT 0,
|
|
2510
|
+
labels TEXT NOT NULL,
|
|
2511
|
+
created_at TEXT NOT NULL,
|
|
2512
|
+
updated_at TEXT NOT NULL
|
|
2513
|
+
);
|
|
2514
|
+
|
|
2515
|
+
CREATE INDEX IF NOT EXISTS idx_agent_semantic_labels_memory
|
|
2516
|
+
ON agent_semantic_labels(source_memory_id, labeler);
|
|
2517
|
+
|
|
2518
|
+
CREATE INDEX IF NOT EXISTS idx_agent_semantic_labels_event
|
|
2519
|
+
ON agent_semantic_labels(event_id);
|
|
2520
|
+
|
|
2521
|
+
CREATE TABLE IF NOT EXISTS agent_reflection_checkpoints (
|
|
2522
|
+
id TEXT PRIMARY KEY,
|
|
2523
|
+
project_name TEXT,
|
|
2524
|
+
session_id TEXT,
|
|
2525
|
+
window_start_at TEXT NOT NULL,
|
|
2526
|
+
window_end_at TEXT NOT NULL,
|
|
2527
|
+
event_count INTEGER NOT NULL DEFAULT 0,
|
|
2528
|
+
goal_count INTEGER NOT NULL DEFAULT 0,
|
|
2529
|
+
success_count INTEGER NOT NULL DEFAULT 0,
|
|
2530
|
+
failure_count INTEGER NOT NULL DEFAULT 0,
|
|
2531
|
+
risk_count INTEGER NOT NULL DEFAULT 0,
|
|
2532
|
+
summary TEXT NOT NULL,
|
|
2533
|
+
learnings TEXT NOT NULL DEFAULT '[]',
|
|
2534
|
+
next_actions TEXT NOT NULL DEFAULT '[]',
|
|
2535
|
+
evidence_event_ids TEXT NOT NULL DEFAULT '[]',
|
|
2536
|
+
confidence REAL NOT NULL DEFAULT 0,
|
|
2537
|
+
created_at TEXT NOT NULL
|
|
2538
|
+
);
|
|
2539
|
+
|
|
2540
|
+
CREATE INDEX IF NOT EXISTS idx_agent_reflection_project_time
|
|
2541
|
+
ON agent_reflection_checkpoints(project_name, window_end_at);
|
|
2542
|
+
|
|
2543
|
+
CREATE INDEX IF NOT EXISTS idx_agent_reflection_session_time
|
|
2544
|
+
ON agent_reflection_checkpoints(session_id, window_end_at);
|
|
2545
|
+
`);
|
|
2422
2546
|
try {
|
|
2423
2547
|
await client.execute({
|
|
2424
2548
|
sql: `ALTER TABLE memories ADD COLUMN tier INTEGER DEFAULT 3`,
|
|
@@ -1416,6 +1416,9 @@ function getClient() {
|
|
|
1416
1416
|
if (_daemonClient && _daemonClient._isDaemonActive()) {
|
|
1417
1417
|
return _daemonClient;
|
|
1418
1418
|
}
|
|
1419
|
+
if (!_resilientClient) {
|
|
1420
|
+
return _adapterClient;
|
|
1421
|
+
}
|
|
1419
1422
|
return _resilientClient;
|
|
1420
1423
|
}
|
|
1421
1424
|
async function initDaemonClient() {
|
|
@@ -2448,6 +2451,127 @@ async function ensureSchema() {
|
|
|
2448
2451
|
VALUES (new.rowid, new.content, new.subject, new.predicate, new.object);
|
|
2449
2452
|
END;
|
|
2450
2453
|
`);
|
|
2454
|
+
await client.executeMultiple(`
|
|
2455
|
+
CREATE TABLE IF NOT EXISTS agent_sessions (
|
|
2456
|
+
id TEXT PRIMARY KEY,
|
|
2457
|
+
agent_id TEXT NOT NULL,
|
|
2458
|
+
project_name TEXT,
|
|
2459
|
+
started_at TEXT NOT NULL,
|
|
2460
|
+
last_event_at TEXT NOT NULL,
|
|
2461
|
+
event_count INTEGER NOT NULL DEFAULT 0,
|
|
2462
|
+
properties TEXT DEFAULT '{}'
|
|
2463
|
+
);
|
|
2464
|
+
|
|
2465
|
+
CREATE INDEX IF NOT EXISTS idx_agent_sessions_agent_time
|
|
2466
|
+
ON agent_sessions(agent_id, started_at);
|
|
2467
|
+
|
|
2468
|
+
CREATE TABLE IF NOT EXISTS agent_goals (
|
|
2469
|
+
id TEXT PRIMARY KEY,
|
|
2470
|
+
statement TEXT NOT NULL,
|
|
2471
|
+
owner_agent_id TEXT,
|
|
2472
|
+
project_name TEXT,
|
|
2473
|
+
status TEXT NOT NULL DEFAULT 'open',
|
|
2474
|
+
priority INTEGER NOT NULL DEFAULT 5,
|
|
2475
|
+
success_criteria TEXT,
|
|
2476
|
+
parent_goal_id TEXT,
|
|
2477
|
+
due_at TEXT,
|
|
2478
|
+
achieved_at TEXT,
|
|
2479
|
+
supersedes_id TEXT,
|
|
2480
|
+
created_at TEXT NOT NULL,
|
|
2481
|
+
updated_at TEXT NOT NULL,
|
|
2482
|
+
source_memory_id TEXT
|
|
2483
|
+
);
|
|
2484
|
+
|
|
2485
|
+
CREATE INDEX IF NOT EXISTS idx_agent_goals_project_status
|
|
2486
|
+
ON agent_goals(project_name, status, priority);
|
|
2487
|
+
|
|
2488
|
+
CREATE TABLE IF NOT EXISTS agent_events (
|
|
2489
|
+
id TEXT PRIMARY KEY,
|
|
2490
|
+
event_type TEXT NOT NULL,
|
|
2491
|
+
occurred_at TEXT NOT NULL,
|
|
2492
|
+
sequence_index INTEGER NOT NULL,
|
|
2493
|
+
actor_agent_id TEXT,
|
|
2494
|
+
agent_role TEXT,
|
|
2495
|
+
project_name TEXT,
|
|
2496
|
+
session_id TEXT,
|
|
2497
|
+
task_id TEXT,
|
|
2498
|
+
goal_id TEXT,
|
|
2499
|
+
parent_event_id TEXT,
|
|
2500
|
+
intention TEXT,
|
|
2501
|
+
outcome TEXT,
|
|
2502
|
+
evidence_memory_id TEXT,
|
|
2503
|
+
impact TEXT,
|
|
2504
|
+
payload TEXT DEFAULT '{}',
|
|
2505
|
+
created_at TEXT NOT NULL
|
|
2506
|
+
);
|
|
2507
|
+
|
|
2508
|
+
CREATE INDEX IF NOT EXISTS idx_agent_events_time
|
|
2509
|
+
ON agent_events(occurred_at, sequence_index);
|
|
2510
|
+
|
|
2511
|
+
CREATE INDEX IF NOT EXISTS idx_agent_events_session_seq
|
|
2512
|
+
ON agent_events(session_id, sequence_index);
|
|
2513
|
+
|
|
2514
|
+
CREATE INDEX IF NOT EXISTS idx_agent_events_goal_time
|
|
2515
|
+
ON agent_events(goal_id, occurred_at);
|
|
2516
|
+
|
|
2517
|
+
CREATE INDEX IF NOT EXISTS idx_agent_events_memory
|
|
2518
|
+
ON agent_events(evidence_memory_id);
|
|
2519
|
+
|
|
2520
|
+
CREATE TABLE IF NOT EXISTS agent_goal_links (
|
|
2521
|
+
id TEXT PRIMARY KEY,
|
|
2522
|
+
goal_id TEXT NOT NULL,
|
|
2523
|
+
link_type TEXT NOT NULL,
|
|
2524
|
+
target_id TEXT NOT NULL,
|
|
2525
|
+
target_type TEXT NOT NULL,
|
|
2526
|
+
created_at TEXT NOT NULL
|
|
2527
|
+
);
|
|
2528
|
+
|
|
2529
|
+
CREATE INDEX IF NOT EXISTS idx_agent_goal_links_goal
|
|
2530
|
+
ON agent_goal_links(goal_id, target_type);
|
|
2531
|
+
|
|
2532
|
+
CREATE TABLE IF NOT EXISTS agent_semantic_labels (
|
|
2533
|
+
id TEXT PRIMARY KEY,
|
|
2534
|
+
source_memory_id TEXT NOT NULL,
|
|
2535
|
+
event_id TEXT,
|
|
2536
|
+
labeler TEXT NOT NULL,
|
|
2537
|
+
schema_version INTEGER NOT NULL DEFAULT 1,
|
|
2538
|
+
confidence REAL NOT NULL DEFAULT 0,
|
|
2539
|
+
labels TEXT NOT NULL,
|
|
2540
|
+
created_at TEXT NOT NULL,
|
|
2541
|
+
updated_at TEXT NOT NULL
|
|
2542
|
+
);
|
|
2543
|
+
|
|
2544
|
+
CREATE INDEX IF NOT EXISTS idx_agent_semantic_labels_memory
|
|
2545
|
+
ON agent_semantic_labels(source_memory_id, labeler);
|
|
2546
|
+
|
|
2547
|
+
CREATE INDEX IF NOT EXISTS idx_agent_semantic_labels_event
|
|
2548
|
+
ON agent_semantic_labels(event_id);
|
|
2549
|
+
|
|
2550
|
+
CREATE TABLE IF NOT EXISTS agent_reflection_checkpoints (
|
|
2551
|
+
id TEXT PRIMARY KEY,
|
|
2552
|
+
project_name TEXT,
|
|
2553
|
+
session_id TEXT,
|
|
2554
|
+
window_start_at TEXT NOT NULL,
|
|
2555
|
+
window_end_at TEXT NOT NULL,
|
|
2556
|
+
event_count INTEGER NOT NULL DEFAULT 0,
|
|
2557
|
+
goal_count INTEGER NOT NULL DEFAULT 0,
|
|
2558
|
+
success_count INTEGER NOT NULL DEFAULT 0,
|
|
2559
|
+
failure_count INTEGER NOT NULL DEFAULT 0,
|
|
2560
|
+
risk_count INTEGER NOT NULL DEFAULT 0,
|
|
2561
|
+
summary TEXT NOT NULL,
|
|
2562
|
+
learnings TEXT NOT NULL DEFAULT '[]',
|
|
2563
|
+
next_actions TEXT NOT NULL DEFAULT '[]',
|
|
2564
|
+
evidence_event_ids TEXT NOT NULL DEFAULT '[]',
|
|
2565
|
+
confidence REAL NOT NULL DEFAULT 0,
|
|
2566
|
+
created_at TEXT NOT NULL
|
|
2567
|
+
);
|
|
2568
|
+
|
|
2569
|
+
CREATE INDEX IF NOT EXISTS idx_agent_reflection_project_time
|
|
2570
|
+
ON agent_reflection_checkpoints(project_name, window_end_at);
|
|
2571
|
+
|
|
2572
|
+
CREATE INDEX IF NOT EXISTS idx_agent_reflection_session_time
|
|
2573
|
+
ON agent_reflection_checkpoints(session_id, window_end_at);
|
|
2574
|
+
`);
|
|
2451
2575
|
try {
|
|
2452
2576
|
await client.execute({
|
|
2453
2577
|
sql: `ALTER TABLE memories ADD COLUMN tier INTEGER DEFAULT 3`,
|
package/dist/lib/embedder.js
CHANGED
|
@@ -172,6 +172,10 @@ async function loadConfig() {
|
|
|
172
172
|
if (config.dbPath.startsWith("~")) {
|
|
173
173
|
config.dbPath = config.dbPath.replace(/^~/, os.homedir());
|
|
174
174
|
}
|
|
175
|
+
const envDbPath = path.join(dir, "memories.db");
|
|
176
|
+
if (process.env.EXE_OS_DIR && config.dbPath !== envDbPath && !existsSync2(config.dbPath) && existsSync2(envDbPath)) {
|
|
177
|
+
config.dbPath = envDbPath;
|
|
178
|
+
}
|
|
175
179
|
return config;
|
|
176
180
|
} catch {
|
|
177
181
|
return { ...DEFAULT_CONFIG, dbPath: path.join(dir, "memories.db") };
|
|
@@ -192,7 +196,15 @@ function loadConfigSync() {
|
|
|
192
196
|
normalizeSessionLifecycle(migratedCfg);
|
|
193
197
|
normalizeAutoUpdate(migratedCfg);
|
|
194
198
|
normalizeOrchestration(migratedCfg);
|
|
195
|
-
|
|
199
|
+
const config = { ...DEFAULT_CONFIG, dbPath: path.join(dir, "memories.db"), ...migratedCfg };
|
|
200
|
+
if (config.dbPath.startsWith("~")) {
|
|
201
|
+
config.dbPath = config.dbPath.replace(/^~/, os.homedir());
|
|
202
|
+
}
|
|
203
|
+
const envDbPath = path.join(dir, "memories.db");
|
|
204
|
+
if (process.env.EXE_OS_DIR && config.dbPath !== envDbPath && !existsSync2(config.dbPath) && existsSync2(envDbPath)) {
|
|
205
|
+
config.dbPath = envDbPath;
|
|
206
|
+
}
|
|
207
|
+
return config;
|
|
196
208
|
} catch {
|
|
197
209
|
return { ...DEFAULT_CONFIG, dbPath: path.join(dir, "memories.db") };
|
|
198
210
|
}
|