@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
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
|
-
"latest": "0.9.
|
|
3
|
+
"latest": "0.9.2",
|
|
4
4
|
"stacks": {
|
|
5
5
|
"0.9.0": {
|
|
6
6
|
"version": "0.9.0",
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
},
|
|
30
30
|
"exed": {
|
|
31
31
|
"env": "EXED_IMAGE_TAG",
|
|
32
|
-
"image": "ghcr.io/askexe/exed:v0.9.
|
|
32
|
+
"image": "ghcr.io/askexe/exed:v0.9.66",
|
|
33
33
|
"healthUrl": "http://127.0.0.1:8765/health"
|
|
34
34
|
},
|
|
35
35
|
"gateway": {
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
}
|
|
44
44
|
},
|
|
45
45
|
"releaseDescriptors": {
|
|
46
|
-
"exed": "AskExe/exe-os@0.9.
|
|
46
|
+
"exed": "AskExe/exe-os@0.9.66:stack.release.json",
|
|
47
47
|
"crm": "AskExe/exe-crm@0.9.0:stack.release.json",
|
|
48
48
|
"wiki": "AskExe/exe-wiki@0.9.0:stack.release.json",
|
|
49
49
|
"gateway": "AskExe/exe-gateway@0.9.0:stack.release.json",
|
|
@@ -78,7 +78,7 @@
|
|
|
78
78
|
},
|
|
79
79
|
"exed": {
|
|
80
80
|
"env": "EXED_IMAGE_TAG",
|
|
81
|
-
"image": "ghcr.io/askexe/exed:v0.9.
|
|
81
|
+
"image": "ghcr.io/askexe/exed:v0.9.66",
|
|
82
82
|
"healthUrl": "http://127.0.0.1:8765/health"
|
|
83
83
|
},
|
|
84
84
|
"gateway": {
|
|
@@ -92,13 +92,62 @@
|
|
|
92
92
|
}
|
|
93
93
|
},
|
|
94
94
|
"releaseDescriptors": {
|
|
95
|
-
"exed": "AskExe/exe-os@0.9.
|
|
95
|
+
"exed": "AskExe/exe-os@0.9.66:stack.release.json",
|
|
96
96
|
"crm": "AskExe/exe-crm@0.9.1:stack.release.json",
|
|
97
97
|
"wiki": "AskExe/exe-wiki@0.9.1:stack.release.json",
|
|
98
98
|
"gateway": "AskExe/exe-gateway@0.9.1:stack.release.json",
|
|
99
99
|
"db": "AskExe/exe-db@0.9.1:stack.release.json",
|
|
100
100
|
"monitorAgent": "AskExe/exe-monitor@0.9.1:stack.release.json"
|
|
101
101
|
}
|
|
102
|
+
},
|
|
103
|
+
"0.9.2": {
|
|
104
|
+
"version": "0.9.2",
|
|
105
|
+
"releasedAt": "2026-05-12T00:00:00Z",
|
|
106
|
+
"notes": "Hygo private/customer pilot stack release. Aligns all deployable service, image, and package versions on 0.9.2 after exe-db-jkt dogfood fixes.",
|
|
107
|
+
"breakingChanges": [
|
|
108
|
+
{
|
|
109
|
+
"id": "whatsapp_relink_required",
|
|
110
|
+
"title": "WhatsApp QR re-link required for Baileys v7",
|
|
111
|
+
"description": "exe-gateway uses Baileys v7. Existing WhatsApp 6.x linked-device auth state must be backed up and re-linked once with a new QR code.",
|
|
112
|
+
"requiredAction": "Open https://<gateway-domain>/pair/default?token=<admin-token> and scan from WhatsApp \u2192 Linked Devices after the update.",
|
|
113
|
+
"expectedDowntimeMinutes": "2-5",
|
|
114
|
+
"requiresConfirmation": true
|
|
115
|
+
}
|
|
116
|
+
],
|
|
117
|
+
"services": {
|
|
118
|
+
"crm": {
|
|
119
|
+
"env": "CRM_IMAGE_TAG",
|
|
120
|
+
"image": "ghcr.io/askexe/exe-crm:v0.9.2",
|
|
121
|
+
"healthUrl": "http://127.0.0.1:3000/healthz"
|
|
122
|
+
},
|
|
123
|
+
"wiki": {
|
|
124
|
+
"env": "WIKI_IMAGE_TAG",
|
|
125
|
+
"image": "ghcr.io/askexe/exe-wiki:v0.9.2",
|
|
126
|
+
"healthUrl": "http://127.0.0.1:3001/api/ping"
|
|
127
|
+
},
|
|
128
|
+
"exed": {
|
|
129
|
+
"env": "EXED_IMAGE_TAG",
|
|
130
|
+
"image": "ghcr.io/askexe/exed:v0.9.2",
|
|
131
|
+
"healthUrl": "http://127.0.0.1:8765/health"
|
|
132
|
+
},
|
|
133
|
+
"gateway": {
|
|
134
|
+
"env": "GATEWAY_IMAGE_TAG",
|
|
135
|
+
"image": "ghcr.io/askexe/exe-gateway:v0.9.2",
|
|
136
|
+
"healthUrl": "http://127.0.0.1:3100/health"
|
|
137
|
+
},
|
|
138
|
+
"monitorAgent": {
|
|
139
|
+
"env": "MONITOR_AGENT_IMAGE_TAG",
|
|
140
|
+
"image": "ghcr.io/askexe/exe-monitor-agent:v0.9.2"
|
|
141
|
+
}
|
|
142
|
+
},
|
|
143
|
+
"releaseDescriptors": {
|
|
144
|
+
"exed": "AskExe/exe-os@0.9.2:stack.release.json",
|
|
145
|
+
"crm": "AskExe/exe-crm@0.9.2:stack.release.json",
|
|
146
|
+
"wiki": "AskExe/exe-wiki@0.9.2:stack.release.json",
|
|
147
|
+
"gateway": "AskExe/exe-gateway@0.9.2:stack.release.json",
|
|
148
|
+
"db": "AskExe/exe-db@0.9.2:stack.release.json",
|
|
149
|
+
"monitorAgent": "AskExe/exe-monitor@0.9.2:stack.release.json"
|
|
150
|
+
}
|
|
102
151
|
}
|
|
103
152
|
}
|
|
104
153
|
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
// src/bin/age-ontology-load.ts
|
|
4
|
+
import { Client } from "pg";
|
|
5
|
+
function q(value) {
|
|
6
|
+
return `'${String(value ?? "").replace(/\u0000/g, "").slice(0, 500).replace(/\\/g, "\\\\").replace(/'/g, "\\'")}'`;
|
|
7
|
+
}
|
|
8
|
+
function sqlString(value) {
|
|
9
|
+
return `'${value.replace(/'/g, "''")}'`;
|
|
10
|
+
}
|
|
11
|
+
async function main() {
|
|
12
|
+
const sourceUrl = process.env.DATABASE_URL || process.env.EXED_DATABASE_URL;
|
|
13
|
+
const ageUrl = process.env.AGE_DATABASE_URL;
|
|
14
|
+
if (!sourceUrl) throw new Error("DATABASE_URL or EXED_DATABASE_URL is required for canonical source");
|
|
15
|
+
if (!ageUrl) throw new Error("AGE_DATABASE_URL is required for Apache AGE target");
|
|
16
|
+
const graph = process.env.AGE_GRAPH_NAME || "exe_ontology";
|
|
17
|
+
const limit = Number(process.argv[process.argv.indexOf("--limit") + 1] || "1000");
|
|
18
|
+
const source = new Client({ connectionString: sourceUrl });
|
|
19
|
+
const age = new Client({ connectionString: ageUrl });
|
|
20
|
+
await source.connect();
|
|
21
|
+
await age.connect();
|
|
22
|
+
try {
|
|
23
|
+
await age.query(`CREATE EXTENSION IF NOT EXISTS age`);
|
|
24
|
+
await age.query(`LOAD 'age'`);
|
|
25
|
+
await age.query(`SET search_path = ag_catalog, "$user", public`);
|
|
26
|
+
if (process.argv.includes("--reset")) {
|
|
27
|
+
try {
|
|
28
|
+
await age.query(`SELECT drop_graph(${sqlString(graph)}, true)`);
|
|
29
|
+
} catch {
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
try {
|
|
33
|
+
await age.query(`SELECT create_graph(${sqlString(graph)})`);
|
|
34
|
+
} catch {
|
|
35
|
+
}
|
|
36
|
+
const entities = await source.query(`SELECT id, name, type FROM memory.entities ORDER BY last_seen DESC NULLS LAST, id LIMIT $1`, [limit]);
|
|
37
|
+
let nodeCount = 0;
|
|
38
|
+
for (const entity of entities.rows) {
|
|
39
|
+
const cypher = `CREATE (:Entity {id: ${q(entity.id)}, name: ${q(entity.name)}, type: ${q(entity.type)}})`;
|
|
40
|
+
await age.query(`SELECT * FROM cypher(${sqlString(graph)}, $$ ${cypher} $$) AS (v agtype)`);
|
|
41
|
+
nodeCount++;
|
|
42
|
+
}
|
|
43
|
+
const relationships = await source.query(`SELECT source_entity_id, target_entity_id, type, confidence FROM memory.relationships ORDER BY id LIMIT $1`, [limit * 2]);
|
|
44
|
+
let edgeCount = 0;
|
|
45
|
+
for (const rel of relationships.rows) {
|
|
46
|
+
const cypher = `MATCH (a:Entity {id: ${q(rel.source_entity_id)}}), (b:Entity {id: ${q(rel.target_entity_id)}}) CREATE (a)-[:RELATED {type: ${q(rel.type)}}]->(b)`;
|
|
47
|
+
await age.query(`SELECT * FROM cypher(${sqlString(graph)}, $$ ${cypher} $$) AS (e agtype)`);
|
|
48
|
+
edgeCount++;
|
|
49
|
+
}
|
|
50
|
+
process.stderr.write(`[age-ontology-load] Loaded ${nodeCount} nodes and ${edgeCount} edges into ${graph}.
|
|
51
|
+
`);
|
|
52
|
+
} finally {
|
|
53
|
+
await age.end();
|
|
54
|
+
await source.end();
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
main().catch((err) => {
|
|
58
|
+
process.stderr.write(`[age-ontology-load] FATAL: ${err instanceof Error ? err.message : String(err)}
|
|
59
|
+
`);
|
|
60
|
+
process.exit(1);
|
|
61
|
+
});
|