@askexenow/exe-os 0.9.244 → 0.9.245
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/compose/.env.customer.example +15 -3
- package/deploy/compose/.env.example +15 -3
- package/deploy/compose/docker-compose.yml +17 -2
- package/deploy/compose/generate-env.ts +31 -8
- package/deploy/compose/setup.sh +4 -1
- package/dist/bin/exe-forget.js +1 -1
- package/dist/bin/exe-search.js +1 -1
- package/dist/bin/stack-update.js +2 -2
- package/dist/bin/vps-health-gate.js +1 -1
- package/dist/{catchup-brief-LF5Z6Q6E.js → catchup-brief-KTDI32BO.js} +1 -1
- package/dist/{chunk-DLZYAYVM.js → chunk-2MNLSUC6.js} +3 -3
- package/dist/{chunk-BYCNUKII.js → chunk-OCLP7WP4.js} +1 -1
- package/dist/{chunk-YRVW57UW.js → chunk-WAO67AYG.js} +17 -3
- package/dist/{chunk-TD5CADZ5.js → chunk-ZYRMTXBF.js} +1 -1
- package/dist/hooks/error-recall.js +1 -1
- package/dist/hooks/manifest.json +4 -4
- package/dist/hooks/prompt-submit.js +1 -1
- package/dist/hooks/session-start.js +1 -1
- package/dist/lib/exe-daemon.js +7 -0
- package/dist/lib/hybrid-search.js +1 -1
- package/dist/mcp/register-tools.js +3 -3
- package/dist/mcp/server.js +3 -3
- package/dist/{reranker-UCPLQZE2.js → reranker-XHONNVBD.js} +1 -1
- package/dist/{stack-update-7F2E2MBJ.js → stack-update-ZBK34WTB.js} +1 -1
- package/package.json +1 -1
- package/release-notes.json +101 -17
- /package/dist/{chunk-AHXEU5XB.js → chunk-QHVOFVSL.js} +0 -0
|
@@ -63,12 +63,24 @@ API_ROUTER_KEY=exe_rk_CHANGEME_API_ROUTER_KEY
|
|
|
63
63
|
GATEWAY_HTTP_HOST_PORT=3100
|
|
64
64
|
GATEWAY_WS_HOST_PORT=3101
|
|
65
65
|
|
|
66
|
+
# --- Monitoring hub (PocketBase — local per-customer instance) ---
|
|
67
|
+
MONITOR_HUB_IMAGE_TAG=update.askexe.com/askexe/exe-monitor-hub:v0.9.3
|
|
68
|
+
MONITOR_HUB_PORT=8090
|
|
69
|
+
# Bootstrap superuser created on first start. Use your admin email + a strong password.
|
|
70
|
+
# After first boot these values are no longer used (stored in pb_data volume).
|
|
71
|
+
# SECURITY: access /_/ admin panel via SSH tunnel only — it is blocked in the Cloudflare Tunnel.
|
|
72
|
+
# ssh -L 8090:127.0.0.1:8090 <vps> then open http://localhost:8090/_/
|
|
73
|
+
MONITOR_HUB_ADMIN_EMAIL=CHANGEME_ADMIN_EMAIL
|
|
74
|
+
MONITOR_HUB_ADMIN_PASSWORD=CHANGEME_MONITOR_HUB_ADMIN_PASSWORD
|
|
75
|
+
|
|
66
76
|
# --- Monitoring agent (standard for managed customer VPSs) ---
|
|
67
77
|
MONITOR_AGENT_IMAGE_TAG=update.askexe.com/askexe/exe-monitor-agent:v0.9.3
|
|
78
|
+
# Reports to the local hub. Auto-populated by `exe-os stack-update` during bootstrap.
|
|
68
79
|
MONITOR_HUB_URL=http://exe-monitor-hub:8090
|
|
69
|
-
#
|
|
70
|
-
|
|
71
|
-
|
|
80
|
+
# TOKEN and KEY are written automatically by stack-update via /api/register-agent.
|
|
81
|
+
# Leave as CHANGEME — stack-update fills them on first deploy.
|
|
82
|
+
MONITOR_AGENT_TOKEN=CHANGEME_MONITOR_AGENT_TOKEN
|
|
83
|
+
MONITOR_AGENT_KEY=CHANGEME_MONITOR_AGENT_KEY
|
|
72
84
|
MONITOR_AGENT_LISTEN=:45876
|
|
73
85
|
|
|
74
86
|
# --- AskExe central monitoring hub ---
|
|
@@ -79,12 +79,24 @@ ERP_WS_PORT=9069
|
|
|
79
79
|
# ERP_SENTRY_DSN=
|
|
80
80
|
# MONITOR_API_KEY= # shared with gateway error forwarding
|
|
81
81
|
|
|
82
|
+
# --- Monitoring hub (PocketBase — local per-customer instance) ---
|
|
83
|
+
MONITOR_HUB_IMAGE_TAG=ghcr.io/askexe/exe-monitor-hub:v0.9.4
|
|
84
|
+
MONITOR_HUB_PORT=8090
|
|
85
|
+
# Bootstrap superuser created on first start. Use your admin email + a strong password.
|
|
86
|
+
# After first boot these values are no longer used (stored in pb_data volume).
|
|
87
|
+
# SECURITY: access /_/ admin panel via SSH tunnel only — it is blocked in the Cloudflare Tunnel.
|
|
88
|
+
# ssh -L 8090:127.0.0.1:8090 <vps> then open http://localhost:8090/_/
|
|
89
|
+
MONITOR_HUB_ADMIN_EMAIL=CHANGEME_ADMIN_EMAIL
|
|
90
|
+
MONITOR_HUB_ADMIN_PASSWORD=CHANGEME_MONITOR_HUB_ADMIN_PASSWORD
|
|
91
|
+
|
|
82
92
|
# --- Monitoring agent (standard for managed customer VPSs) ---
|
|
83
93
|
MONITOR_AGENT_IMAGE_TAG=ghcr.io/askexe/exe-monitor-agent:v0.9.4
|
|
94
|
+
# Reports to the local hub. Auto-populated by `exe-os stack-update` during bootstrap.
|
|
84
95
|
MONITOR_HUB_URL=http://exe-monitor-hub:8090
|
|
85
|
-
#
|
|
86
|
-
|
|
87
|
-
|
|
96
|
+
# TOKEN and KEY are written automatically by stack-update via /api/register-agent.
|
|
97
|
+
# Leave as CHANGEME — stack-update fills them on first deploy.
|
|
98
|
+
MONITOR_AGENT_TOKEN=CHANGEME_MONITOR_AGENT_TOKEN
|
|
99
|
+
MONITOR_AGENT_KEY=CHANGEME_MONITOR_AGENT_KEY
|
|
88
100
|
MONITOR_AGENT_LISTEN=:45876
|
|
89
101
|
|
|
90
102
|
# --- AskExe central monitoring hub auth (AskExe-owned infra only) ---
|
|
@@ -162,6 +162,12 @@ services:
|
|
|
162
162
|
environment:
|
|
163
163
|
EXE_MONITOR_ADMIN_TOKEN: ${EXE_MONITOR_ADMIN_TOKEN:-}
|
|
164
164
|
GOTRUE_URL: http://gotrue:9999
|
|
165
|
+
# Bootstrap superuser on first start — required so the hub is never empty
|
|
166
|
+
# after stack-update. Set these in .env before first deploy.
|
|
167
|
+
# After first boot these values are no longer used (PocketBase persists the
|
|
168
|
+
# superadmin in pb_data). They can be left set in .env for idempotent re-runs.
|
|
169
|
+
PB_ADMIN_EMAIL: ${MONITOR_HUB_ADMIN_EMAIL:-}
|
|
170
|
+
PB_ADMIN_PASSWORD: ${MONITOR_HUB_ADMIN_PASSWORD:-}
|
|
165
171
|
ports:
|
|
166
172
|
- "127.0.0.1:${MONITOR_HUB_PORT:-8090}:8090"
|
|
167
173
|
volumes:
|
|
@@ -436,10 +442,19 @@ services:
|
|
|
436
442
|
image: ${MONITOR_AGENT_IMAGE_TAG:-ghcr.io/askexe/exe-monitor-agent:v0.9.4}
|
|
437
443
|
container_name: exe-monitor-agent
|
|
438
444
|
restart: unless-stopped
|
|
445
|
+
# Depends on hub so pairing can succeed on first boot.
|
|
446
|
+
depends_on:
|
|
447
|
+
exe-monitor-hub:
|
|
448
|
+
condition: service_healthy
|
|
439
449
|
environment:
|
|
450
|
+
# Reports to the local hub by default. stack-update auto-pairs this agent
|
|
451
|
+
# with the hub via /api/register-agent and writes TOKEN + KEY back to .env.
|
|
440
452
|
HUB_URL: ${MONITOR_HUB_URL:-http://exe-monitor-hub:8090}
|
|
441
|
-
TOKEN
|
|
442
|
-
|
|
453
|
+
# TOKEN and KEY are written automatically by `exe-os stack-update` during
|
|
454
|
+
# bootstrap. They start empty; the agent retries connecting until the hub
|
|
455
|
+
# is paired. Do NOT make these :? required — the hub must be up first.
|
|
456
|
+
TOKEN: ${MONITOR_AGENT_TOKEN:-}
|
|
457
|
+
KEY: ${MONITOR_AGENT_KEY:-}
|
|
443
458
|
LISTEN: ${MONITOR_AGENT_LISTEN:-:45876}
|
|
444
459
|
volumes:
|
|
445
460
|
- /var/run/docker.sock:/var/run/docker.sock:ro
|
|
@@ -124,15 +124,26 @@ export function generateEnv(options: GenerateEnvOptions): string {
|
|
|
124
124
|
"# ERP_SENTRY_DSN=",
|
|
125
125
|
"# MONITOR_API_KEY= # shared with gateway error forwarding",
|
|
126
126
|
"",
|
|
127
|
-
"# --- Monitoring ---",
|
|
127
|
+
"# --- Monitoring hub (PocketBase — local per-customer instance) ---",
|
|
128
128
|
`MONITOR_HUB_IMAGE_TAG=${MONITOR_HUB_IMAGE_TAG}`,
|
|
129
|
+
"MONITOR_HUB_PORT=8090",
|
|
130
|
+
"# Bootstrap superuser created on first start. Use your admin email + a strong password.",
|
|
131
|
+
"# After first boot these values are no longer used (stored in pb_data volume).",
|
|
132
|
+
"# SECURITY: access /_/ admin panel via SSH tunnel only — it is blocked in the Cloudflare Tunnel.",
|
|
133
|
+
"# ssh -L 8090:127.0.0.1:8090 <vps> then open http://localhost:8090/_/",
|
|
134
|
+
`MONITOR_HUB_ADMIN_EMAIL=admin@${normalizedDomain}`,
|
|
135
|
+
`MONITOR_HUB_ADMIN_PASSWORD=${randomSecret(24)}`,
|
|
136
|
+
"",
|
|
137
|
+
"# --- Monitoring agent (standard for managed customer VPSs) ---",
|
|
129
138
|
`MONITOR_AGENT_IMAGE_TAG=${MONITOR_AGENT_IMAGE_TAG}`,
|
|
130
|
-
`
|
|
139
|
+
"# Reports to the local hub. Auto-populated by `exe-os stack-update` during bootstrap.",
|
|
131
140
|
`MONITOR_HUB_URL=${DEFAULT_MONITOR_HUB_URL}`,
|
|
132
|
-
"
|
|
133
|
-
"
|
|
141
|
+
"# TOKEN and KEY are written automatically by stack-update via /api/register-agent.",
|
|
142
|
+
"# Leave as CHANGEME — stack-update fills them on first deploy.",
|
|
143
|
+
"MONITOR_AGENT_TOKEN=CHANGEME_MONITOR_AGENT_TOKEN",
|
|
144
|
+
"MONITOR_AGENT_KEY=CHANGEME_MONITOR_AGENT_KEY",
|
|
134
145
|
`MONITOR_AGENT_LISTEN=${DEFAULT_MONITOR_AGENT_LISTEN}`,
|
|
135
|
-
|
|
146
|
+
`EXE_MONITOR_ADMIN_TOKEN=${randomSecret(RANDOM_SECRET_48)}`,
|
|
136
147
|
"",
|
|
137
148
|
"# --- Cloudflare Tunnel ---",
|
|
138
149
|
"# Token-based tunnel (recommended). Get your token:",
|
|
@@ -231,12 +242,24 @@ export function generateExampleEnv(): string {
|
|
|
231
242
|
"# ERP_SENTRY_DSN=",
|
|
232
243
|
"# MONITOR_API_KEY= # shared with gateway error forwarding",
|
|
233
244
|
"",
|
|
245
|
+
"# --- Monitoring hub (PocketBase — local per-customer instance) ---",
|
|
246
|
+
`MONITOR_HUB_IMAGE_TAG=${MONITOR_HUB_IMAGE_TAG}`,
|
|
247
|
+
"MONITOR_HUB_PORT=8090",
|
|
248
|
+
"# Bootstrap superuser created on first start. Use your admin email + a strong password.",
|
|
249
|
+
"# After first boot these values are no longer used (stored in pb_data volume).",
|
|
250
|
+
"# SECURITY: access /_/ admin panel via SSH tunnel only — it is blocked in the Cloudflare Tunnel.",
|
|
251
|
+
"# ssh -L 8090:127.0.0.1:8090 <vps> then open http://localhost:8090/_/",
|
|
252
|
+
"MONITOR_HUB_ADMIN_EMAIL=CHANGEME_ADMIN_EMAIL",
|
|
253
|
+
"MONITOR_HUB_ADMIN_PASSWORD=CHANGEME_MONITOR_HUB_ADMIN_PASSWORD",
|
|
254
|
+
"",
|
|
234
255
|
"# --- Monitoring agent (standard for managed customer VPSs) ---",
|
|
235
256
|
`MONITOR_AGENT_IMAGE_TAG=${MONITOR_AGENT_IMAGE_TAG}`,
|
|
257
|
+
"# Reports to the local hub. Auto-populated by `exe-os stack-update` during bootstrap.",
|
|
236
258
|
`MONITOR_HUB_URL=${DEFAULT_MONITOR_HUB_URL}`,
|
|
237
|
-
"#
|
|
238
|
-
"
|
|
239
|
-
"
|
|
259
|
+
"# TOKEN and KEY are written automatically by stack-update via /api/register-agent.",
|
|
260
|
+
"# Leave as CHANGEME — stack-update fills them on first deploy.",
|
|
261
|
+
"MONITOR_AGENT_TOKEN=CHANGEME_MONITOR_AGENT_TOKEN",
|
|
262
|
+
"MONITOR_AGENT_KEY=CHANGEME_MONITOR_AGENT_KEY",
|
|
240
263
|
`MONITOR_AGENT_LISTEN=${DEFAULT_MONITOR_AGENT_LISTEN}`,
|
|
241
264
|
"",
|
|
242
265
|
"# --- AskExe central monitoring hub auth (AskExe-owned infra only) ---",
|
package/deploy/compose/setup.sh
CHANGED
|
@@ -103,10 +103,13 @@ MONITOR_HUB_IMAGE_TAG=ghcr.io/askexe/exe-monitor-hub:v0.9.4
|
|
|
103
103
|
MONITOR_AGENT_IMAGE_TAG=ghcr.io/askexe/exe-monitor-agent:v0.9.4
|
|
104
104
|
EXE_MONITOR_ADMIN_TOKEN=$(gen 48)
|
|
105
105
|
MONITOR_HUB_URL=http://exe-monitor-hub:8090
|
|
106
|
+
MONITOR_HUB_PORT=8090
|
|
107
|
+
# Bootstrap superuser — created on first start, stored in pb_data afterwards.
|
|
108
|
+
MONITOR_HUB_ADMIN_EMAIL=admin@${DOMAIN}
|
|
109
|
+
MONITOR_HUB_ADMIN_PASSWORD=$(gen 24)
|
|
106
110
|
MONITOR_AGENT_TOKEN=CHANGEME_MONITOR_AGENT_TOKEN
|
|
107
111
|
MONITOR_AGENT_KEY=CHANGEME_MONITOR_AGENT_KEY
|
|
108
112
|
MONITOR_AGENT_LISTEN=:45876
|
|
109
|
-
MONITOR_HUB_PORT=8090
|
|
110
113
|
# --- R2 (Cloudflare) — shared by media uploads + VPS backups ---
|
|
111
114
|
R2_MEDIA_BUCKET=CHANGEME_R2_BUCKET
|
|
112
115
|
R2_MEDIA_ENDPOINT=CHANGEME_https://ACCOUNT_ID.r2.cloudflarestorage.com
|
package/dist/bin/exe-forget.js
CHANGED
package/dist/bin/exe-search.js
CHANGED
package/dist/bin/stack-update.js
CHANGED
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
loadStackManifest,
|
|
11
11
|
patchEnv,
|
|
12
12
|
runStackUpdate
|
|
13
|
-
} from "../chunk-
|
|
13
|
+
} from "../chunk-OCLP7WP4.js";
|
|
14
14
|
import {
|
|
15
15
|
runVerifyStack
|
|
16
16
|
} from "../chunk-IRHNV4GY.js";
|
|
@@ -20,7 +20,7 @@ import {
|
|
|
20
20
|
import {
|
|
21
21
|
logResult,
|
|
22
22
|
runHealthGate
|
|
23
|
-
} from "../chunk-
|
|
23
|
+
} from "../chunk-ZYRMTXBF.js";
|
|
24
24
|
import "../chunk-MOZ2YQ54.js";
|
|
25
25
|
import "../chunk-VXIMSRTO.js";
|
|
26
26
|
import "../chunk-LYH5HE24.js";
|
|
@@ -288,7 +288,7 @@ async function hybridSearch(queryText, agentId, options) {
|
|
|
288
288
|
let rerankerAvailable = false;
|
|
289
289
|
if (process.env.EXE_IS_DAEMON === "1") {
|
|
290
290
|
try {
|
|
291
|
-
const { isRerankerAvailable } = await import("./reranker-
|
|
291
|
+
const { isRerankerAvailable } = await import("./reranker-XHONNVBD.js");
|
|
292
292
|
rerankerAvailable = isRerankerAvailable();
|
|
293
293
|
} catch {
|
|
294
294
|
}
|
|
@@ -452,7 +452,7 @@ async function hybridSearch(queryText, agentId, options) {
|
|
|
452
452
|
try {
|
|
453
453
|
let rerankedRecords;
|
|
454
454
|
if (graphContextMap.size > 0) {
|
|
455
|
-
const { rerankWithContext } = await import("./reranker-
|
|
455
|
+
const { rerankWithContext } = await import("./reranker-XHONNVBD.js");
|
|
456
456
|
const candidates = merged.map((m) => ({
|
|
457
457
|
text: m.raw_text,
|
|
458
458
|
context: graphContextMap.get(m.id)
|
|
@@ -460,7 +460,7 @@ async function hybridSearch(queryText, agentId, options) {
|
|
|
460
460
|
const scored = await rerankWithContext(effectiveQuery, candidates, rerankReturnLimit);
|
|
461
461
|
rerankedRecords = scored.map((s) => merged[s.index]);
|
|
462
462
|
} else {
|
|
463
|
-
const { rerank } = await import("./reranker-
|
|
463
|
+
const { rerank } = await import("./reranker-XHONNVBD.js");
|
|
464
464
|
rerankedRecords = await rerank(effectiveQuery, merged, rerankReturnLimit);
|
|
465
465
|
}
|
|
466
466
|
if (rerankedRecords.length > 0) {
|
|
@@ -469,7 +469,7 @@ function assertHostReadyForApply(report) {
|
|
|
469
469
|
if (!report.composeFileExists) blockers.push("docker-compose.yml is missing and could not be created.");
|
|
470
470
|
if (!report.envFileExists) blockers.push(".env is missing and could not be created.");
|
|
471
471
|
if (!report.licensePresent) blockers.push("Exe OS license key is missing. Run `exe-os setup`, `exe-os --activate <key>`, or pass --license-key.");
|
|
472
|
-
const hardPlaceholders = report.envRemainingPlaceholders.filter((p) => !/WHATSAPP|API_ROUTER|MONITOR_AGENT|CLOUDFLARE_TUNNEL_TOKEN/.test(p));
|
|
472
|
+
const hardPlaceholders = report.envRemainingPlaceholders.filter((p) => !/WHATSAPP|API_ROUTER|MONITOR_AGENT|MONITOR_HUB_ADMIN|CLOUDFLARE_TUNNEL_TOKEN/.test(p));
|
|
473
473
|
if (hardPlaceholders.length > 0) blockers.push(`Required .env placeholders remain: ${hardPlaceholders.join(", ")}`);
|
|
474
474
|
if (blockers.length > 0) throw new Error(`Stack host is not ready:
|
|
475
475
|
- ${blockers.join("\n- ")}`);
|
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
import {
|
|
11
11
|
isRerankerAvailable,
|
|
12
12
|
rerankWithScores
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-QHVOFVSL.js";
|
|
14
14
|
import {
|
|
15
15
|
getCachedLicenseGate
|
|
16
16
|
} from "./chunk-2WBBVEIB.js";
|
|
@@ -187,7 +187,7 @@ import {
|
|
|
187
187
|
import {
|
|
188
188
|
hybridSearch,
|
|
189
189
|
recentRecords
|
|
190
|
-
} from "./chunk-
|
|
190
|
+
} from "./chunk-2MNLSUC6.js";
|
|
191
191
|
import {
|
|
192
192
|
attachDocumentMetadata,
|
|
193
193
|
flushBatch,
|
|
@@ -257,6 +257,7 @@ import {
|
|
|
257
257
|
getIdentity,
|
|
258
258
|
isCoordinatorName,
|
|
259
259
|
isCoordinatorRole,
|
|
260
|
+
isInitialized,
|
|
260
261
|
listIdentities,
|
|
261
262
|
loadEmployees,
|
|
262
263
|
loadEmployeesSync,
|
|
@@ -425,6 +426,10 @@ function registerRecallMyMemory(server) {
|
|
|
425
426
|
session_scope
|
|
426
427
|
}) => {
|
|
427
428
|
try {
|
|
429
|
+
if (!isInitialized()) {
|
|
430
|
+
const { fastDbInit: fastDbInit2 } = await import("./fast-db-init-YSR7RMVZ.js");
|
|
431
|
+
await fastDbInit2();
|
|
432
|
+
}
|
|
428
433
|
if (!recent && !query) {
|
|
429
434
|
return {
|
|
430
435
|
content: [{ type: "text", text: "query is required when recent mode is not enabled." }],
|
|
@@ -527,7 +532,16 @@ ${formatted}${federatedNote}`
|
|
|
527
532
|
};
|
|
528
533
|
} catch (err) {
|
|
529
534
|
const msg = err instanceof Error ? err.message : String(err);
|
|
530
|
-
|
|
535
|
+
let friendly;
|
|
536
|
+
if (msg.includes("SQLITE_BUSY") || msg.includes("database is locked")) {
|
|
537
|
+
friendly = "Memory system is busy \u2014 please retry.";
|
|
538
|
+
} else if (msg.includes("not initialized") || msg.includes("Call initDatabase")) {
|
|
539
|
+
friendly = "Memory system is still starting up \u2014 please retry in a moment.";
|
|
540
|
+
} else if (msg.includes("Daemon not running") || msg.includes("FTS5 corruption")) {
|
|
541
|
+
friendly = "Memory daemon is not running \u2014 please restart the daemon and retry.";
|
|
542
|
+
} else {
|
|
543
|
+
friendly = `Failed to search memories: ${msg}`;
|
|
544
|
+
}
|
|
531
545
|
return {
|
|
532
546
|
content: [{ type: "text", text: friendly }],
|
|
533
547
|
isError: true
|
|
@@ -204,7 +204,7 @@ async function main(args) {
|
|
|
204
204
|
console.log("[health-gate] Starting rollback...");
|
|
205
205
|
restorePreDeployBackup();
|
|
206
206
|
try {
|
|
207
|
-
const { rollbackStackUpdate, defaultStackPaths } = await import("./stack-update-
|
|
207
|
+
const { rollbackStackUpdate, defaultStackPaths } = await import("./stack-update-ZBK34WTB.js");
|
|
208
208
|
const paths = defaultStackPaths();
|
|
209
209
|
await rollbackStackUpdate({
|
|
210
210
|
manifestRef: paths.manifestRef,
|
package/dist/hooks/manifest.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 1,
|
|
3
|
-
"generatedAt": "2026-06-09T11:
|
|
3
|
+
"generatedAt": "2026-06-09T11:34:40.567Z",
|
|
4
4
|
"hashes": {
|
|
5
5
|
"bug-report-worker.js": "a6039ded4fe88f726e8abee1943ab0b3eb041caadf6b31c62fdf26cc4b44ed15",
|
|
6
6
|
"codex-stop-task-finalizer.js": "14c012358cec82d3e45631d8fbf680b5801300dbcacfc518f6db5865160fd8f9",
|
|
7
7
|
"commit-complete.js": "cdff7e603781d8edc7f99586f6042a5a7af69bf1ad54cb22827bfa01228373b0",
|
|
8
|
-
"error-recall.js": "
|
|
8
|
+
"error-recall.js": "47c685b1a4ba96c41597b49f19d3af7e022874569231b88fa265cefef3648b52",
|
|
9
9
|
"exe-heartbeat-hook.js": "83edb81ef4961f2846a07998ac8eaceaa9fb0345fa429fea60f5c30b7943f803",
|
|
10
10
|
"ingest-worker.js": "141c5a2091320796bca5f8ef1b1243e405808eda945e5aa0a1d5a384eaae141b",
|
|
11
11
|
"ingest.js": "5705cebcf45dc67b1aa5fca9d42b61591ec66bdab2e6c57852abd3aa8f6c03eb",
|
|
@@ -15,9 +15,9 @@
|
|
|
15
15
|
"post-tool-combined.js": "0f9db77b099ea6a6863a45521e629fedbf23da48bf71647c42f2d5b3502bfa68",
|
|
16
16
|
"pre-compact.js": "9aa324537fa703b3db44e3bb03067c9b531e026e7f0362bf40a99c4d617474cb",
|
|
17
17
|
"pre-tool-use.js": "d219add8c432350b4de26a37f616bba5bd098e35cf0136d80684f57f253dc0bb",
|
|
18
|
-
"prompt-submit.js": "
|
|
18
|
+
"prompt-submit.js": "70bd8885072d7ccaf84929daec753c726be1b0baaa41a5b7aeef4f2b162f7cf3",
|
|
19
19
|
"session-end.js": "51230f562e9fd1b66a72f04b68a47ed6bb2a20ff9d4435c0ae312581ad7015c4",
|
|
20
|
-
"session-start.js": "
|
|
20
|
+
"session-start.js": "1aa116305aef5b361c3f221a52bd13a22a22a90b3a41595fd2d190a593c586f4",
|
|
21
21
|
"stop.js": "585e82b998b280549441640c72ba278625719edc011e6295ac3f5a172fe92a4e",
|
|
22
22
|
"subagent-stop.js": "854de3a24da865b71945bce5b8d7ddbdb836a5753e8bf6d0c50e05e96455a3ec",
|
|
23
23
|
"summary-worker.js": "317443adac4012fdcafcb4ec79dac2f9d9abb34a4d0c825761ece3de868bb6a4"
|
|
@@ -163,7 +163,7 @@ You are **${ag.agentId}** (${ag.agentRole}). Daemon is degraded \u2014 memory un
|
|
|
163
163
|
query = `last actions on ${projectName}`;
|
|
164
164
|
header = "## Resuming Session\nHere's where you left off:";
|
|
165
165
|
try {
|
|
166
|
-
const { buildCatchupBrief } = await import("../catchup-brief-
|
|
166
|
+
const { buildCatchupBrief } = await import("../catchup-brief-KTDI32BO.js");
|
|
167
167
|
const brief = await buildCatchupBrief(
|
|
168
168
|
agentId,
|
|
169
169
|
projectName,
|
package/dist/lib/exe-daemon.js
CHANGED
|
@@ -777,6 +777,13 @@ var OOM_MARKER_PATH = path3.join(os2.homedir(), ".exe-os", "embedding-oom-marker
|
|
|
777
777
|
var MIN_FREE_MEM_BYTES = 2 * 1024 ** 3;
|
|
778
778
|
var MAX_SMALL_TOTAL_BYTES = 16 * 1024 ** 3;
|
|
779
779
|
async function loadModel() {
|
|
780
|
+
const forceEmbeddings = process.env.EXE_EMBEDDINGS === "1" || process.env.EXE_EMBEDDINGS === "true";
|
|
781
|
+
if (!forceEmbeddings) {
|
|
782
|
+
process.stderr.write(`[exed] Embeddings OFF by default (FTS+Graph only). Set EXE_EMBEDDINGS=1 to enable.
|
|
783
|
+
`);
|
|
784
|
+
_embeddingsDisabledByDesign = true;
|
|
785
|
+
return;
|
|
786
|
+
}
|
|
780
787
|
const modelPath = path3.join(MODELS_DIR, MODEL_FILE);
|
|
781
788
|
if (!existsSync3(modelPath)) {
|
|
782
789
|
process.stderr.write(`[exed] No model at ${modelPath} \u2014 running without embeddings (VPS mode).
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
registerAllTools
|
|
3
|
-
} from "../chunk-
|
|
3
|
+
} from "../chunk-WAO67AYG.js";
|
|
4
4
|
import "../chunk-FFLILAG6.js";
|
|
5
5
|
import "../chunk-557C2IGL.js";
|
|
6
6
|
import "../chunk-KEZXW3RP.js";
|
|
7
7
|
import "../chunk-VQAP35DA.js";
|
|
8
|
-
import "../chunk-
|
|
8
|
+
import "../chunk-QHVOFVSL.js";
|
|
9
9
|
import "../chunk-2WBBVEIB.js";
|
|
10
10
|
import "../chunk-VBPC7IC7.js";
|
|
11
11
|
import "../chunk-U3DUFHOT.js";
|
|
@@ -59,7 +59,7 @@ import "../chunk-AQBEG33D.js";
|
|
|
59
59
|
import "../chunk-LAOB5BKV.js";
|
|
60
60
|
import "../chunk-RRHSONV5.js";
|
|
61
61
|
import "../chunk-7IZWLMTP.js";
|
|
62
|
-
import "../chunk-
|
|
62
|
+
import "../chunk-2MNLSUC6.js";
|
|
63
63
|
import "../chunk-222SI7QC.js";
|
|
64
64
|
import "../chunk-CHCA3ZM2.js";
|
|
65
65
|
import "../chunk-IZVKWBIP.js";
|
package/dist/mcp/server.js
CHANGED
|
@@ -3,12 +3,12 @@ import {
|
|
|
3
3
|
} from "../chunk-V4TZI6EO.js";
|
|
4
4
|
import {
|
|
5
5
|
registerAllTools
|
|
6
|
-
} from "../chunk-
|
|
6
|
+
} from "../chunk-WAO67AYG.js";
|
|
7
7
|
import "../chunk-FFLILAG6.js";
|
|
8
8
|
import "../chunk-557C2IGL.js";
|
|
9
9
|
import "../chunk-KEZXW3RP.js";
|
|
10
10
|
import "../chunk-VQAP35DA.js";
|
|
11
|
-
import "../chunk-
|
|
11
|
+
import "../chunk-QHVOFVSL.js";
|
|
12
12
|
import {
|
|
13
13
|
initLicenseGate
|
|
14
14
|
} from "../chunk-2WBBVEIB.js";
|
|
@@ -69,7 +69,7 @@ import "../chunk-AQBEG33D.js";
|
|
|
69
69
|
import "../chunk-LAOB5BKV.js";
|
|
70
70
|
import "../chunk-RRHSONV5.js";
|
|
71
71
|
import "../chunk-7IZWLMTP.js";
|
|
72
|
-
import "../chunk-
|
|
72
|
+
import "../chunk-2MNLSUC6.js";
|
|
73
73
|
import {
|
|
74
74
|
disposeStore,
|
|
75
75
|
initStore
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@askexenow/exe-os",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.245",
|
|
4
4
|
"description": "AI employee operating system — persistent memory, task management, and multi-agent coordination for Claude Code.",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE",
|
|
6
6
|
"type": "module",
|
package/release-notes.json
CHANGED
|
@@ -1,6 +1,106 @@
|
|
|
1
1
|
{
|
|
2
|
-
"current": "0.9.
|
|
2
|
+
"current": "0.9.245",
|
|
3
3
|
"notes": {
|
|
4
|
+
"0.9.245": {
|
|
5
|
+
"version": "0.9.245",
|
|
6
|
+
"date": "2026-06-09",
|
|
7
|
+
"features": [
|
|
8
|
+
"Entity Profile UI — knowledge graph explorer + entity detail view",
|
|
9
|
+
"log MCP session open/close to stderr for docker logs visibility",
|
|
10
|
+
"Graph→PostgreSQL sync timer — automatic SQLite→exe-db projection",
|
|
11
|
+
"project GraphRAG data to PostgreSQL during cloud sync pull",
|
|
12
|
+
"add behavior effectiveness tracking — attribution, conflicts, scoring, load",
|
|
13
|
+
"close the reinforcement loop — dreaming reads investigation data",
|
|
14
|
+
"add reviews to Cloudflare support system — separate from bugs/features",
|
|
15
|
+
"self-improvement auto-merges simple fixes, notifies on failures",
|
|
16
|
+
"automatic investigation record system for debugging cycle tracking",
|
|
17
|
+
"smoke test + Playwright E2E + self-improvement cron",
|
|
18
|
+
"P0 procedures — verify your own fix + confidence decay",
|
|
19
|
+
"boot output as formatted table with box-drawing characters",
|
|
20
|
+
"show auto-fix cycle status in exe-os boot",
|
|
21
|
+
"graceful daemon restart — persist MCP sessions for transparent recovery",
|
|
22
|
+
"default to keyword+graph search, embeddings opt-in",
|
|
23
|
+
"server-side telemetry storage + admin insights endpoint",
|
|
24
|
+
"enrich telemetry payload with usage counters and auto-insights",
|
|
25
|
+
"add telemetry auto-insight computation engine",
|
|
26
|
+
"auto-calibration in dreaming cycle + telemetry integration",
|
|
27
|
+
"first-class time estimation on tasks — auto-tracked, queryable",
|
|
28
|
+
"add agent assertion system — confidence tracking on task lifecycle",
|
|
29
|
+
"auto-run dreaming cycle on session end — zero-touch self-improvement",
|
|
30
|
+
"add dreaming system + structured handoffs to platform procedures",
|
|
31
|
+
"add snapshot + boot to platform procedures and operating procedures",
|
|
32
|
+
"add `exe-os boot --project X` CLI command for project boot verification"
|
|
33
|
+
],
|
|
34
|
+
"fixes": [
|
|
35
|
+
"embeddings OFF by default for all users — opt-in via EXE_EMBEDDINGS=1",
|
|
36
|
+
"keep generated env templates in sync",
|
|
37
|
+
"bootstrap monitor env and lazy-init recall memory",
|
|
38
|
+
"registry proxy accepts license keys + stack-update reads .env license",
|
|
39
|
+
"stack-release uses defaultBranch per repo (wiki uses master)",
|
|
40
|
+
"prevent stale task intercom prompts",
|
|
41
|
+
"v0.9.241 — 13 more bug fixes (28 total this session)",
|
|
42
|
+
"sync lockfile for Docker build — npm ci --omit=dev works again",
|
|
43
|
+
"keep review notifications session-local and test-safe",
|
|
44
|
+
"CI Dockerfile reference — Dockerfile.exed → Dockerfile.exe-os",
|
|
45
|
+
"v0.9.240 — 15 bug fixes across HYGO, Jack, platform (stack v0.9.15)",
|
|
46
|
+
"keep daemon memory recall FTS bounded",
|
|
47
|
+
"keep daemon cloud sync off CRDT heap path",
|
|
48
|
+
"suppress ENOBUFS in reapers + skip boot-time sync execution",
|
|
49
|
+
"MCP health probe in prompt hook + Docker image build tolerance",
|
|
50
|
+
"plug MCP session memory leak — zombie McpServer instances accumulated",
|
|
51
|
+
"lower RSS watchdog to 1.5/2.5GB + add GC after heavy operations",
|
|
52
|
+
"snapshot crash — daemon fallback + dreaming scope binding",
|
|
53
|
+
"skip duplicate initStore in WS client — prevents 2-8s event loop block",
|
|
54
|
+
"add session scope imports to dreaming, project-boot, telemetry-upload",
|
|
55
|
+
"resolve typecheck errors for npm publish",
|
|
56
|
+
"add setImmediate yields to Graph→PG sync — prevent event loop blocking",
|
|
57
|
+
"convert SQLite short hex IDs to valid UUIDs for PostgreSQL projection",
|
|
58
|
+
"delay initial graph sync tick to 60s + add debug logging",
|
|
59
|
+
"share DB init state between MCP HTTP and timer ticks"
|
|
60
|
+
],
|
|
61
|
+
"security": [
|
|
62
|
+
"fix shell injection, SSRF, socket leaks, backup validation",
|
|
63
|
+
"bump v0.9.139 — 2 CRITICAL security fixes, 14 bug fixes, 6 features, customer config preservation",
|
|
64
|
+
"fix 2 CRITICAL + 1 HIGH from post-fix audit",
|
|
65
|
+
"validate X-Agent-Role against roster — prevent privilege escalation",
|
|
66
|
+
"release: stack v0.9.8 — security hardening + Hygo bug fixes",
|
|
67
|
+
"add webhook HMAC-SHA256 validation + disable query param auth in prod",
|
|
68
|
+
"pin GitHub Actions to SHAs, update jose to 6.2.3",
|
|
69
|
+
"harden support intake against abuse and data leakage",
|
|
70
|
+
"bump to v0.9.22 — Codex MCP parity + customer bug fixes + security audit remediation",
|
|
71
|
+
"audit: pre-hygo exe-gateway security report",
|
|
72
|
+
"add SECURITY.md — trust document for pre-install security evaluation",
|
|
73
|
+
"fix 4 pricing tier bypass vulnerabilities (audit F1-F4)"
|
|
74
|
+
],
|
|
75
|
+
"other": [
|
|
76
|
+
"bump v0.9.245",
|
|
77
|
+
"sync v0.9.244 published artifacts",
|
|
78
|
+
"bump v0.9.244",
|
|
79
|
+
"cover registry proxy license auth fallbacks",
|
|
80
|
+
"update release notes for v0.9.243",
|
|
81
|
+
"stack release v0.9.16",
|
|
82
|
+
"bump v0.9.243 for stack release",
|
|
83
|
+
"bump v0.9.242 for stack release",
|
|
84
|
+
"add STACK-RELEASE.md — full release process documentation",
|
|
85
|
+
"claurst competitive analysis — npm distribution + free-tier mode",
|
|
86
|
+
"bump stack.release.json to v0.9.240 for CI image build",
|
|
87
|
+
"update release notes for v0.9.238-239",
|
|
88
|
+
"release: stack v0.9.14 — gateway audit fixes",
|
|
89
|
+
"release: stack v0.9.13 — HYGO deployment readiness",
|
|
90
|
+
"incremental Graph→PG sync — 86K rows → deltas only",
|
|
91
|
+
"batch Graph→PG sync — 500 rows per INSERT instead of row-by-row",
|
|
92
|
+
"consolidate daemon timers into unified orchestration tick (#78)",
|
|
93
|
+
"revise GLiNER — Haiku API now, GLiNER when cost matters",
|
|
94
|
+
"capture GLiNER entity extraction in ARCHITECTURE.md",
|
|
95
|
+
"detailed design system structure + Phase 2 component list",
|
|
96
|
+
"exe-os-design-system — unified design system for all products",
|
|
97
|
+
"GoTrue JWT unified auth architecture — founder directive 2026-06-08",
|
|
98
|
+
"Thread + Graph Discovery architecture — unified knowledge view",
|
|
99
|
+
"move heavy jobs to 9 PM — GraphRAG, skill sweep, backup",
|
|
100
|
+
"Mode 3 Client-Side RAG architecture — memories never leave device"
|
|
101
|
+
],
|
|
102
|
+
"migration_notes": []
|
|
103
|
+
},
|
|
4
104
|
"0.9.244": {
|
|
5
105
|
"version": "0.9.244",
|
|
6
106
|
"date": "2026-06-09",
|
|
@@ -316,22 +416,6 @@
|
|
|
316
416
|
"bump to v0.9.237"
|
|
317
417
|
],
|
|
318
418
|
"migration_notes": []
|
|
319
|
-
},
|
|
320
|
-
"0.9.234": {
|
|
321
|
-
"version": "0.9.234",
|
|
322
|
-
"date": "2026-06-08",
|
|
323
|
-
"features": [],
|
|
324
|
-
"fixes": [
|
|
325
|
-
"daemon memory leak — 3 fixes prevent 3.5GB growth over 20 hours",
|
|
326
|
-
"P0 WAL checkpoint before backup — prevents SQLITE_CORRUPT on large DBs",
|
|
327
|
-
"6 launch blockers for July 1 public launch",
|
|
328
|
-
"remove duplicate sessionScope filter — corrupted SQL parameter binding"
|
|
329
|
-
],
|
|
330
|
-
"security": [],
|
|
331
|
-
"other": [
|
|
332
|
-
"bump to v0.9.230 — P0 WAL backup corruption fix for Jack"
|
|
333
|
-
],
|
|
334
|
-
"migration_notes": []
|
|
335
419
|
}
|
|
336
420
|
}
|
|
337
421
|
}
|
|
File without changes
|