@askexenow/exe-os 0.9.65 → 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} +1532 -2173
- package/dist/bin/backfill-conversations.js +528 -20
- package/dist/bin/backfill-responses.js +528 -20
- package/dist/bin/backfill-vectors.js +255 -20
- package/dist/bin/bulk-sync-postgres.js +4876 -0
- package/dist/bin/cleanup-stale-review-tasks.js +529 -21
- package/dist/bin/cli.js +3471 -1491
- package/dist/bin/exe-agent-config.js +4 -0
- package/dist/bin/exe-agent.js +16 -0
- package/dist/bin/exe-assign.js +528 -20
- package/dist/bin/exe-boot.js +492 -54
- package/dist/bin/exe-call.js +16 -0
- package/dist/bin/exe-cloud.js +7415 -518
- package/dist/bin/exe-dispatch.js +540 -22
- package/dist/bin/exe-doctor.js +3404 -1225
- package/dist/bin/exe-export-behaviors.js +542 -24
- package/dist/bin/exe-forget.js +529 -21
- package/dist/bin/exe-gateway.js +595 -25
- package/dist/bin/exe-heartbeat.js +541 -24
- package/dist/bin/exe-kill.js +529 -21
- package/dist/bin/exe-launch-agent.js +2334 -1067
- package/dist/bin/exe-new-employee.js +324 -166
- package/dist/bin/exe-pending-messages.js +529 -21
- package/dist/bin/exe-pending-notifications.js +529 -21
- package/dist/bin/exe-pending-reviews.js +529 -21
- package/dist/bin/exe-rename.js +529 -21
- package/dist/bin/exe-review.js +529 -21
- package/dist/bin/exe-search.js +542 -24
- package/dist/bin/exe-session-cleanup.js +540 -22
- package/dist/bin/exe-settings.js +14 -0
- package/dist/bin/exe-start-codex.js +817 -144
- package/dist/bin/exe-start-opencode.js +776 -80
- package/dist/bin/exe-status.js +529 -21
- package/dist/bin/exe-team.js +529 -21
- package/dist/bin/git-sweep.js +540 -22
- package/dist/bin/graph-backfill.js +580 -21
- package/dist/bin/graph-export.js +529 -21
- package/dist/bin/graph-layer-benchmark.js +109 -0
- package/dist/bin/install.js +420 -289
- package/dist/bin/intercom-check.js +540 -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 +540 -22
- package/dist/bin/setup.js +790 -206
- package/dist/bin/shard-migrate.js +528 -20
- package/dist/bin/update.js +4 -0
- package/dist/gateway/index.js +593 -23
- package/dist/hooks/bug-report-worker.js +651 -64
- package/dist/hooks/codex-stop-task-finalizer.js +540 -22
- package/dist/hooks/commit-complete.js +540 -22
- package/dist/hooks/error-recall.js +542 -24
- package/dist/hooks/exe-heartbeat-hook.js +4 -0
- package/dist/hooks/ingest-worker.js +4 -0
- package/dist/hooks/ingest.js +539 -22
- package/dist/hooks/instructions-loaded.js +529 -21
- package/dist/hooks/notification.js +529 -21
- package/dist/hooks/post-compact.js +529 -21
- package/dist/hooks/post-tool-combined.js +543 -25
- package/dist/hooks/pre-compact.js +772 -127
- package/dist/hooks/pre-tool-use.js +529 -21
- package/dist/hooks/prompt-submit.js +543 -25
- package/dist/hooks/session-end.js +673 -140
- package/dist/hooks/session-start.js +662 -26
- package/dist/hooks/stop.js +540 -23
- package/dist/hooks/subagent-stop.js +529 -21
- package/dist/hooks/summary-worker.js +571 -126
- package/dist/index.js +593 -23
- package/dist/lib/agent-config.js +4 -0
- package/dist/lib/cloud-sync.js +408 -47
- package/dist/lib/config.js +25 -1
- package/dist/lib/consolidation.js +5 -1
- package/dist/lib/database.js +128 -0
- package/dist/lib/db-daemon-client.js +4 -0
- package/dist/lib/db.js +128 -0
- package/dist/lib/device-registry.js +128 -0
- package/dist/lib/embedder.js +25 -1
- package/dist/lib/employee-templates.js +16 -0
- package/dist/lib/employees.js +4 -0
- package/dist/lib/exe-daemon-client.js +4 -0
- package/dist/lib/exe-daemon.js +3158 -930
- package/dist/lib/hybrid-search.js +542 -24
- package/dist/lib/identity.js +7 -0
- package/dist/lib/keychain.js +178 -22
- package/dist/lib/license.js +4 -0
- package/dist/lib/messaging.js +7 -0
- package/dist/lib/reminders.js +7 -0
- package/dist/lib/schedules.js +255 -20
- package/dist/lib/skill-learning.js +28 -1
- package/dist/lib/status-brief.js +39 -0
- package/dist/lib/store.js +528 -20
- package/dist/lib/task-router.js +4 -0
- package/dist/lib/tasks.js +28 -1
- package/dist/lib/tmux-routing.js +28 -1
- package/dist/lib/token-spend.js +7 -0
- package/dist/mcp/server.js +2739 -813
- package/dist/mcp/tools/complete-reminder.js +7 -0
- package/dist/mcp/tools/create-reminder.js +7 -0
- package/dist/mcp/tools/create-task.js +28 -1
- package/dist/mcp/tools/deactivate-behavior.js +7 -0
- package/dist/mcp/tools/list-reminders.js +7 -0
- package/dist/mcp/tools/list-tasks.js +7 -0
- package/dist/mcp/tools/send-message.js +7 -0
- package/dist/mcp/tools/update-task.js +28 -1
- package/dist/runtime/index.js +540 -22
- package/dist/tui/App.js +618 -29
- package/package.json +9 -5
- package/src/commands/exe/cloud.md +11 -8
- package/stack.release.json +3 -3
- package/src/commands/exe/link.md +0 -17
package/dist/lib/config.js
CHANGED
|
@@ -101,6 +101,10 @@ var DEFAULT_CONFIG = {
|
|
|
101
101
|
checkOnBoot: true,
|
|
102
102
|
autoInstall: false,
|
|
103
103
|
checkIntervalMs: 24 * 60 * 60 * 1e3
|
|
104
|
+
},
|
|
105
|
+
orchestration: {
|
|
106
|
+
phase: "phase_1_coo",
|
|
107
|
+
phaseSetBy: "default"
|
|
104
108
|
}
|
|
105
109
|
};
|
|
106
110
|
function migrateLegacyConfig(raw) {
|
|
@@ -163,6 +167,11 @@ function normalizeAutoUpdate(raw) {
|
|
|
163
167
|
const userAU = raw.autoUpdate ?? {};
|
|
164
168
|
raw.autoUpdate = { ...defaultAU, ...userAU };
|
|
165
169
|
}
|
|
170
|
+
function normalizeOrchestration(raw) {
|
|
171
|
+
const defaultOrg = DEFAULT_CONFIG.orchestration;
|
|
172
|
+
const userOrg = raw.orchestration ?? {};
|
|
173
|
+
raw.orchestration = { ...defaultOrg, ...userOrg };
|
|
174
|
+
}
|
|
166
175
|
async function loadConfig() {
|
|
167
176
|
const dir = process.env.EXE_OS_DIR ?? process.env.EXE_MEM_DIR ?? EXE_AI_DIR;
|
|
168
177
|
await ensurePrivateDir(dir);
|
|
@@ -187,10 +196,15 @@ async function loadConfig() {
|
|
|
187
196
|
normalizeScalingRoadmap(migratedCfg);
|
|
188
197
|
normalizeSessionLifecycle(migratedCfg);
|
|
189
198
|
normalizeAutoUpdate(migratedCfg);
|
|
199
|
+
normalizeOrchestration(migratedCfg);
|
|
190
200
|
const config = { ...DEFAULT_CONFIG, dbPath: path.join(dir, "memories.db"), ...migratedCfg };
|
|
191
201
|
if (config.dbPath.startsWith("~")) {
|
|
192
202
|
config.dbPath = config.dbPath.replace(/^~/, os.homedir());
|
|
193
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
|
+
}
|
|
194
208
|
return config;
|
|
195
209
|
} catch {
|
|
196
210
|
return { ...DEFAULT_CONFIG, dbPath: path.join(dir, "memories.db") };
|
|
@@ -210,7 +224,16 @@ function loadConfigSync() {
|
|
|
210
224
|
normalizeScalingRoadmap(migratedCfg);
|
|
211
225
|
normalizeSessionLifecycle(migratedCfg);
|
|
212
226
|
normalizeAutoUpdate(migratedCfg);
|
|
213
|
-
|
|
227
|
+
normalizeOrchestration(migratedCfg);
|
|
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;
|
|
214
237
|
} catch {
|
|
215
238
|
return { ...DEFAULT_CONFIG, dbPath: path.join(dir, "memories.db") };
|
|
216
239
|
}
|
|
@@ -231,6 +254,7 @@ async function loadConfigFrom(configPath) {
|
|
|
231
254
|
normalizeScalingRoadmap(migratedCfg);
|
|
232
255
|
normalizeSessionLifecycle(migratedCfg);
|
|
233
256
|
normalizeAutoUpdate(migratedCfg);
|
|
257
|
+
normalizeOrchestration(migratedCfg);
|
|
234
258
|
return { ...DEFAULT_CONFIG, ...migratedCfg };
|
|
235
259
|
} catch {
|
|
236
260
|
return { ...DEFAULT_CONFIG };
|
|
@@ -134,6 +134,10 @@ var init_config = __esm({
|
|
|
134
134
|
checkOnBoot: true,
|
|
135
135
|
autoInstall: false,
|
|
136
136
|
checkIntervalMs: 24 * 60 * 60 * 1e3
|
|
137
|
+
},
|
|
138
|
+
orchestration: {
|
|
139
|
+
phase: "phase_1_coo",
|
|
140
|
+
phaseSetBy: "default"
|
|
137
141
|
}
|
|
138
142
|
};
|
|
139
143
|
}
|
|
@@ -554,7 +558,7 @@ init_database();
|
|
|
554
558
|
|
|
555
559
|
// src/lib/keychain.ts
|
|
556
560
|
import { readFile as readFile3, writeFile as writeFile3, unlink, mkdir as mkdir3, chmod as chmod2 } from "fs/promises";
|
|
557
|
-
import { existsSync as existsSync5 } from "fs";
|
|
561
|
+
import { existsSync as existsSync5, statSync } from "fs";
|
|
558
562
|
import { execSync as execSync2 } from "child_process";
|
|
559
563
|
import path5 from "path";
|
|
560
564
|
import os4 from "os";
|
package/dist/lib/database.js
CHANGED
|
@@ -126,6 +126,10 @@ var init_config = __esm({
|
|
|
126
126
|
checkOnBoot: true,
|
|
127
127
|
autoInstall: false,
|
|
128
128
|
checkIntervalMs: 24 * 60 * 60 * 1e3
|
|
129
|
+
},
|
|
130
|
+
orchestration: {
|
|
131
|
+
phase: "phase_1_coo",
|
|
132
|
+
phaseSetBy: "default"
|
|
129
133
|
}
|
|
130
134
|
};
|
|
131
135
|
}
|
|
@@ -1383,6 +1387,9 @@ function getClient() {
|
|
|
1383
1387
|
if (_daemonClient && _daemonClient._isDaemonActive()) {
|
|
1384
1388
|
return _daemonClient;
|
|
1385
1389
|
}
|
|
1390
|
+
if (!_resilientClient) {
|
|
1391
|
+
return _adapterClient;
|
|
1392
|
+
}
|
|
1386
1393
|
return _resilientClient;
|
|
1387
1394
|
}
|
|
1388
1395
|
async function initDaemonClient() {
|
|
@@ -2415,6 +2422,127 @@ async function ensureSchema() {
|
|
|
2415
2422
|
VALUES (new.rowid, new.content, new.subject, new.predicate, new.object);
|
|
2416
2423
|
END;
|
|
2417
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
|
+
`);
|
|
2418
2546
|
try {
|
|
2419
2547
|
await client.execute({
|
|
2420
2548
|
sql: `ALTER TABLE memories ADD COLUMN tier INTEGER DEFAULT 3`,
|
package/dist/lib/db.js
CHANGED
|
@@ -126,6 +126,10 @@ var init_config = __esm({
|
|
|
126
126
|
checkOnBoot: true,
|
|
127
127
|
autoInstall: false,
|
|
128
128
|
checkIntervalMs: 24 * 60 * 60 * 1e3
|
|
129
|
+
},
|
|
130
|
+
orchestration: {
|
|
131
|
+
phase: "phase_1_coo",
|
|
132
|
+
phaseSetBy: "default"
|
|
129
133
|
}
|
|
130
134
|
};
|
|
131
135
|
}
|
|
@@ -1383,6 +1387,9 @@ function getClient() {
|
|
|
1383
1387
|
if (_daemonClient && _daemonClient._isDaemonActive()) {
|
|
1384
1388
|
return _daemonClient;
|
|
1385
1389
|
}
|
|
1390
|
+
if (!_resilientClient) {
|
|
1391
|
+
return _adapterClient;
|
|
1392
|
+
}
|
|
1386
1393
|
return _resilientClient;
|
|
1387
1394
|
}
|
|
1388
1395
|
async function initDaemonClient() {
|
|
@@ -2415,6 +2422,127 @@ async function ensureSchema() {
|
|
|
2415
2422
|
VALUES (new.rowid, new.content, new.subject, new.predicate, new.object);
|
|
2416
2423
|
END;
|
|
2417
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
|
+
`);
|
|
2418
2546
|
try {
|
|
2419
2547
|
await client.execute({
|
|
2420
2548
|
sql: `ALTER TABLE memories ADD COLUMN tier INTEGER DEFAULT 3`,
|
|
@@ -126,6 +126,10 @@ var init_config = __esm({
|
|
|
126
126
|
checkOnBoot: true,
|
|
127
127
|
autoInstall: false,
|
|
128
128
|
checkIntervalMs: 24 * 60 * 60 * 1e3
|
|
129
|
+
},
|
|
130
|
+
orchestration: {
|
|
131
|
+
phase: "phase_1_coo",
|
|
132
|
+
phaseSetBy: "default"
|
|
129
133
|
}
|
|
130
134
|
};
|
|
131
135
|
}
|
|
@@ -1412,6 +1416,9 @@ function getClient() {
|
|
|
1412
1416
|
if (_daemonClient && _daemonClient._isDaemonActive()) {
|
|
1413
1417
|
return _daemonClient;
|
|
1414
1418
|
}
|
|
1419
|
+
if (!_resilientClient) {
|
|
1420
|
+
return _adapterClient;
|
|
1421
|
+
}
|
|
1415
1422
|
return _resilientClient;
|
|
1416
1423
|
}
|
|
1417
1424
|
async function initDaemonClient() {
|
|
@@ -2444,6 +2451,127 @@ async function ensureSchema() {
|
|
|
2444
2451
|
VALUES (new.rowid, new.content, new.subject, new.predicate, new.object);
|
|
2445
2452
|
END;
|
|
2446
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
|
+
`);
|
|
2447
2575
|
try {
|
|
2448
2576
|
await client.execute({
|
|
2449
2577
|
sql: `ALTER TABLE memories ADD COLUMN tier INTEGER DEFAULT 3`,
|
package/dist/lib/embedder.js
CHANGED
|
@@ -138,6 +138,11 @@ function normalizeAutoUpdate(raw) {
|
|
|
138
138
|
const userAU = raw.autoUpdate ?? {};
|
|
139
139
|
raw.autoUpdate = { ...defaultAU, ...userAU };
|
|
140
140
|
}
|
|
141
|
+
function normalizeOrchestration(raw) {
|
|
142
|
+
const defaultOrg = DEFAULT_CONFIG.orchestration;
|
|
143
|
+
const userOrg = raw.orchestration ?? {};
|
|
144
|
+
raw.orchestration = { ...defaultOrg, ...userOrg };
|
|
145
|
+
}
|
|
141
146
|
async function loadConfig() {
|
|
142
147
|
const dir = process.env.EXE_OS_DIR ?? process.env.EXE_MEM_DIR ?? EXE_AI_DIR;
|
|
143
148
|
await ensurePrivateDir(dir);
|
|
@@ -162,10 +167,15 @@ async function loadConfig() {
|
|
|
162
167
|
normalizeScalingRoadmap(migratedCfg);
|
|
163
168
|
normalizeSessionLifecycle(migratedCfg);
|
|
164
169
|
normalizeAutoUpdate(migratedCfg);
|
|
170
|
+
normalizeOrchestration(migratedCfg);
|
|
165
171
|
const config = { ...DEFAULT_CONFIG, dbPath: path.join(dir, "memories.db"), ...migratedCfg };
|
|
166
172
|
if (config.dbPath.startsWith("~")) {
|
|
167
173
|
config.dbPath = config.dbPath.replace(/^~/, os.homedir());
|
|
168
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
|
+
}
|
|
169
179
|
return config;
|
|
170
180
|
} catch {
|
|
171
181
|
return { ...DEFAULT_CONFIG, dbPath: path.join(dir, "memories.db") };
|
|
@@ -185,7 +195,16 @@ function loadConfigSync() {
|
|
|
185
195
|
normalizeScalingRoadmap(migratedCfg);
|
|
186
196
|
normalizeSessionLifecycle(migratedCfg);
|
|
187
197
|
normalizeAutoUpdate(migratedCfg);
|
|
188
|
-
|
|
198
|
+
normalizeOrchestration(migratedCfg);
|
|
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;
|
|
189
208
|
} catch {
|
|
190
209
|
return { ...DEFAULT_CONFIG, dbPath: path.join(dir, "memories.db") };
|
|
191
210
|
}
|
|
@@ -206,6 +225,7 @@ async function loadConfigFrom(configPath) {
|
|
|
206
225
|
normalizeScalingRoadmap(migratedCfg);
|
|
207
226
|
normalizeSessionLifecycle(migratedCfg);
|
|
208
227
|
normalizeAutoUpdate(migratedCfg);
|
|
228
|
+
normalizeOrchestration(migratedCfg);
|
|
209
229
|
return { ...DEFAULT_CONFIG, ...migratedCfg };
|
|
210
230
|
} catch {
|
|
211
231
|
return { ...DEFAULT_CONFIG };
|
|
@@ -277,6 +297,10 @@ var init_config = __esm({
|
|
|
277
297
|
checkOnBoot: true,
|
|
278
298
|
autoInstall: false,
|
|
279
299
|
checkIntervalMs: 24 * 60 * 60 * 1e3
|
|
300
|
+
},
|
|
301
|
+
orchestration: {
|
|
302
|
+
phase: "phase_1_coo",
|
|
303
|
+
phaseSetBy: "default"
|
|
280
304
|
}
|
|
281
305
|
};
|
|
282
306
|
CONFIG_MIGRATIONS = [
|
|
@@ -99,6 +99,10 @@ var init_config = __esm({
|
|
|
99
99
|
checkOnBoot: true,
|
|
100
100
|
autoInstall: false,
|
|
101
101
|
checkIntervalMs: 24 * 60 * 60 * 1e3
|
|
102
|
+
},
|
|
103
|
+
orchestration: {
|
|
104
|
+
phase: "phase_1_coo",
|
|
105
|
+
phaseSetBy: "default"
|
|
102
106
|
}
|
|
103
107
|
};
|
|
104
108
|
}
|
|
@@ -169,6 +173,12 @@ var PLATFORM_PROCEDURES = [
|
|
|
169
173
|
priority: "p0",
|
|
170
174
|
content: "Founder -> coordinator (the executive agent, internally routed as 'COO') -> CTO/CMO. CTO -> engineers. CMO -> content production. Never skip levels: the coordinator does not bypass managers for specialist work. Specialists report to their manager. If you need cross-team info, use ask_team_memory \u2014 don't read other agents' task folders. Each level owns dispatch downward and review upward."
|
|
171
175
|
},
|
|
176
|
+
{
|
|
177
|
+
title: "Customer orchestration maturity \u2014 recommend, never trap",
|
|
178
|
+
domain: "workflow",
|
|
179
|
+
priority: "p1",
|
|
180
|
+
content: "New customers start best in Phase 1: founder \u2194 coordinator/Chief of Staff, building company context. Suggest Phase 2 executives when domain work repeats; suggest Phase 3 parallel execution only when review/permission gates are ready. This is guidance, not a blocker: users may jump phases anytime. Never overwrite their phase, role titles, identities, or custom org design."
|
|
181
|
+
},
|
|
172
182
|
{
|
|
173
183
|
title: "Single dispatch path \u2014 create_task only",
|
|
174
184
|
domain: "workflow",
|
|
@@ -227,6 +237,12 @@ var PLATFORM_PROCEDURES = [
|
|
|
227
237
|
priority: "p0",
|
|
228
238
|
content: "exe-build-adv is MANDATORY for ALL work touching 3+ files. Run /exe-build-adv --auto BEFORE implementation. Pipeline: Spec \u2192 AC \u2192 Tests \u2192 Evaluate \u2192 Fix. No multi-file feature ships without pipeline artifacts. No exceptions \u2014 managers reject work without them."
|
|
229
239
|
},
|
|
240
|
+
{
|
|
241
|
+
title: "Commit discipline \u2014 never leave verified work floating",
|
|
242
|
+
domain: "workflow",
|
|
243
|
+
priority: "p1",
|
|
244
|
+
content: "After any code-change batch passes typecheck/tests/build, run git status, summarize changed files, and commit with a clear message before ending the session. If work must remain uncommitted for review/dogfood, explicitly say so, list the files, and state the blocker. Never imply work is complete while verified changes are still floating locally."
|
|
245
|
+
},
|
|
230
246
|
{
|
|
231
247
|
title: "Desktop and TUI are the same product",
|
|
232
248
|
domain: "architecture",
|
package/dist/lib/employees.js
CHANGED