@askexenow/exe-os 0.9.211 → 0.9.212
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bin/exe-forget.js +1 -1
- package/dist/bin/exe-search.js +1 -1
- package/dist/{catchup-brief-FIVK6YIX.js → catchup-brief-VAG2IH72.js} +1 -1
- package/dist/{chunk-4TQ3GE3G.js → chunk-MEP5CND3.js} +2 -2
- package/dist/{chunk-PTO7FEZG.js → chunk-UVYFJ7IU.js} +3 -3
- 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 +72 -62
- 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-2D2XI6KV.js → reranker-ZRN4LVF3.js} +1 -1
- package/package.json +1 -1
- package/release-notes.json +34 -34
- /package/dist/{chunk-G3JAB3O5.js → chunk-HURHILTM.js} +0 -0
package/dist/bin/exe-forget.js
CHANGED
package/dist/bin/exe-search.js
CHANGED
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
import {
|
|
8
8
|
isRerankerAvailable,
|
|
9
9
|
rerankWithScores
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-HURHILTM.js";
|
|
11
11
|
import {
|
|
12
12
|
getEntityByName,
|
|
13
13
|
getEntityNeighbors,
|
|
@@ -187,7 +187,7 @@ import {
|
|
|
187
187
|
import {
|
|
188
188
|
hybridSearch,
|
|
189
189
|
recentRecords
|
|
190
|
-
} from "./chunk-
|
|
190
|
+
} from "./chunk-UVYFJ7IU.js";
|
|
191
191
|
import {
|
|
192
192
|
attachDocumentMetadata,
|
|
193
193
|
flushBatch,
|
|
@@ -233,7 +233,7 @@ async function hybridSearch(queryText, agentId, options) {
|
|
|
233
233
|
let rerankerAvailable = false;
|
|
234
234
|
if (process.env.EXE_IS_DAEMON === "1") {
|
|
235
235
|
try {
|
|
236
|
-
const { isRerankerAvailable } = await import("./reranker-
|
|
236
|
+
const { isRerankerAvailable } = await import("./reranker-ZRN4LVF3.js");
|
|
237
237
|
rerankerAvailable = isRerankerAvailable();
|
|
238
238
|
} catch {
|
|
239
239
|
}
|
|
@@ -397,7 +397,7 @@ async function hybridSearch(queryText, agentId, options) {
|
|
|
397
397
|
try {
|
|
398
398
|
let rerankedRecords;
|
|
399
399
|
if (graphContextMap.size > 0) {
|
|
400
|
-
const { rerankWithContext } = await import("./reranker-
|
|
400
|
+
const { rerankWithContext } = await import("./reranker-ZRN4LVF3.js");
|
|
401
401
|
const candidates = merged.map((m) => ({
|
|
402
402
|
text: m.raw_text,
|
|
403
403
|
context: graphContextMap.get(m.id)
|
|
@@ -405,7 +405,7 @@ async function hybridSearch(queryText, agentId, options) {
|
|
|
405
405
|
const scored = await rerankWithContext(effectiveQuery, candidates, rerankReturnLimit);
|
|
406
406
|
rerankedRecords = scored.map((s) => merged[s.index]);
|
|
407
407
|
} else {
|
|
408
|
-
const { rerank } = await import("./reranker-
|
|
408
|
+
const { rerank } = await import("./reranker-ZRN4LVF3.js");
|
|
409
409
|
rerankedRecords = await rerank(effectiveQuery, merged, rerankReturnLimit);
|
|
410
410
|
}
|
|
411
411
|
if (rerankedRecords.length > 0) {
|
package/dist/hooks/manifest.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 1,
|
|
3
|
-
"generatedAt": "2026-06-03T16:
|
|
3
|
+
"generatedAt": "2026-06-03T16:18:56.965Z",
|
|
4
4
|
"hashes": {
|
|
5
5
|
"bug-report-worker.js": "0026604aac324e295b46bde719681de6800b2df144012cc2c2b349dcdbb082be",
|
|
6
6
|
"codex-stop-task-finalizer.js": "f6188b6e85f247546996d138de58cd658e40c8175511e22b1b201a1379502632",
|
|
7
7
|
"commit-complete.js": "1bc2e33e1d00daebc727c5c3e73ec8d5025ad08544e4cde2848d035ee5e21352",
|
|
8
|
-
"error-recall.js": "
|
|
8
|
+
"error-recall.js": "17715cf538c6e76761582806b7ae9c5406f13b4b061fb6b8d4ffd89574321e82",
|
|
9
9
|
"exe-heartbeat-hook.js": "10688da0e9c9972fff33c3bb33923df4e743df9d48e744b96d227836c6270c4c",
|
|
10
10
|
"ingest-worker.js": "df9693b3a590f313868019ab91dd2f7298750492f792c2b8055c4ad68a1c9d67",
|
|
11
11
|
"ingest.js": "5af6b8a3a4e30c282d27a17a82d55337b7102d84e796198c6390315a39755404",
|
|
@@ -15,9 +15,9 @@
|
|
|
15
15
|
"post-tool-combined.js": "19469891de74713eab9d5d9273c130d5fe5ad95a2b99618ac4bb9d60120b5c71",
|
|
16
16
|
"pre-compact.js": "01761e0a404d9cc5fa2ef1788829bd62bbd426395703491906f4b255f32976f4",
|
|
17
17
|
"pre-tool-use.js": "c2e10257f91ba7a759aa41db28e374b20780d7376eb17d3d167c3e7cbf0a226d",
|
|
18
|
-
"prompt-submit.js": "
|
|
18
|
+
"prompt-submit.js": "9a7f12e04f302e903e12fa854cabfaf2bbb9ef8256facd2c8f9db4a69c94bd7a",
|
|
19
19
|
"session-end.js": "2cfe3cbc196cb11bbe68ae23d128eacc99d1dbbbdd7b3698189922bf5645a71a",
|
|
20
|
-
"session-start.js": "
|
|
20
|
+
"session-start.js": "05e911eae9f09ebfd1eed24c0325705666d871483685e5b0cd7016a0caec9df9",
|
|
21
21
|
"stop.js": "9c784c10f1a8eddfec9f5dc66463d67a5b09eb21f340e0d92157e9e7befb367b",
|
|
22
22
|
"subagent-stop.js": "a3d3a01d99dcdcebd5763e5974ce912d69c5f07ba254eb01c2f8c587903ec88c",
|
|
23
23
|
"summary-worker.js": "f29f29e148ea34b38eab656131b2045e0e4020b526ab8bada9c693eb19dc690e"
|
|
@@ -158,7 +158,7 @@ You are **${ag.agentId}** (${ag.agentRole}). Daemon is degraded \u2014 memory un
|
|
|
158
158
|
query = `last actions on ${projectName}`;
|
|
159
159
|
header = "## Resuming Session\nHere's where you left off:";
|
|
160
160
|
try {
|
|
161
|
-
const { buildCatchupBrief } = await import("../catchup-brief-
|
|
161
|
+
const { buildCatchupBrief } = await import("../catchup-brief-VAG2IH72.js");
|
|
162
162
|
const brief = await buildCatchupBrief(
|
|
163
163
|
agentId,
|
|
164
164
|
projectName,
|
package/dist/lib/exe-daemon.js
CHANGED
|
@@ -2607,54 +2607,37 @@ function startGraphExtraction() {
|
|
|
2607
2607
|
`);
|
|
2608
2608
|
}
|
|
2609
2609
|
var AGENT_STATS_INTERVAL_MS = 60 * 1e3;
|
|
2610
|
-
var AGENT_STATS_SPEND_INTERVAL_MS = 10 * 60 * 1e3;
|
|
2611
2610
|
var AGENT_STATS_PATH = path3.join(EXE_AI_DIR, "agent-stats.json");
|
|
2612
2611
|
var _agentStatsInFlight = false;
|
|
2613
|
-
var
|
|
2614
|
-
var _cachedSpend = null;
|
|
2612
|
+
var _cachedAgentData = null;
|
|
2615
2613
|
async function writeAgentStats() {
|
|
2616
2614
|
fired("agent_stats");
|
|
2617
2615
|
if (_agentStatsInFlight) return;
|
|
2616
|
+
if (!_cachedAgentData) return;
|
|
2618
2617
|
_agentStatsInFlight = true;
|
|
2619
|
-
const started = Date.now();
|
|
2620
2618
|
try {
|
|
2621
|
-
if (!await ensureStoreForPolling()) return;
|
|
2622
2619
|
acted("agent_stats");
|
|
2623
|
-
const
|
|
2624
|
-
const
|
|
2625
|
-
|
|
2626
|
-
|
|
2627
|
-
|
|
2628
|
-
SUM(CASE WHEN timestamp > datetime('now', '-1 day') THEN 1 ELSE 0 END) as growth_24h,
|
|
2629
|
-
SUM(CASE WHEN timestamp > datetime('now', '-7 days') THEN 1 ELSE 0 END) as growth_7d,
|
|
2630
|
-
SUM(CASE WHEN timestamp > datetime('now', '-30 days') THEN 1 ELSE 0 END) as growth_30d
|
|
2631
|
-
FROM memories
|
|
2632
|
-
WHERE agent_id != 'default'
|
|
2633
|
-
GROUP BY agent_id
|
|
2634
|
-
ORDER BY total DESC`,
|
|
2635
|
-
args: []
|
|
2636
|
-
});
|
|
2637
|
-
const agentsBase = result.rows.map((row) => {
|
|
2638
|
-
const id = String(row.agent_id);
|
|
2639
|
-
const s24 = _cachedSpend?.spend24h.get(id);
|
|
2640
|
-
const s7 = _cachedSpend?.spend7d.get(id);
|
|
2641
|
-
const s30 = _cachedSpend?.spend30d.get(id);
|
|
2620
|
+
const cache = _cachedAgentData;
|
|
2621
|
+
const agents = [...cache.counts.entries()].map(([id, c]) => {
|
|
2622
|
+
const s24 = cache.spend24h.get(id);
|
|
2623
|
+
const s7 = cache.spend7d.get(id);
|
|
2624
|
+
const s30 = cache.spend30d.get(id);
|
|
2642
2625
|
return {
|
|
2643
2626
|
id,
|
|
2644
|
-
total:
|
|
2645
|
-
growth24h:
|
|
2646
|
-
growth7d:
|
|
2647
|
-
growth30d:
|
|
2627
|
+
total: c.total,
|
|
2628
|
+
growth24h: c.growth24h,
|
|
2629
|
+
growth7d: c.growth7d,
|
|
2630
|
+
growth30d: c.growth30d,
|
|
2648
2631
|
spend24h: s24 ?? { inputTokens: 0, outputTokens: 0, costUSD: 0, sessions: 0 },
|
|
2649
2632
|
spend7d: s7 ?? { inputTokens: 0, outputTokens: 0, costUSD: 0, sessions: 0 },
|
|
2650
2633
|
spend30d: s30 ?? { inputTokens: 0, outputTokens: 0, costUSD: 0, sessions: 0 }
|
|
2651
2634
|
};
|
|
2652
2635
|
});
|
|
2653
|
-
const
|
|
2636
|
+
const cacheAge = Math.round((Date.now() - cache.refreshedAt) / 1e3);
|
|
2654
2637
|
const stats = {
|
|
2655
2638
|
generated: (/* @__PURE__ */ new Date()).toISOString(),
|
|
2656
|
-
|
|
2657
|
-
agents
|
|
2639
|
+
dataStatus: cacheAge < AGENT_STATS_REFRESH_INTERVAL_MS / 1e3 ? "fresh" : "stale",
|
|
2640
|
+
agents,
|
|
2658
2641
|
daemon: {
|
|
2659
2642
|
uptime: Math.floor((Date.now() - _startedAt2) / 1e3),
|
|
2660
2643
|
pid: process.pid
|
|
@@ -2666,55 +2649,82 @@ async function writeAgentStats() {
|
|
|
2666
2649
|
`);
|
|
2667
2650
|
} finally {
|
|
2668
2651
|
_agentStatsInFlight = false;
|
|
2669
|
-
const durationMs = Date.now() - started;
|
|
2670
|
-
if (durationMs > 3e3) {
|
|
2671
|
-
process.stderr.write(`[exed] Agent stats slow path: ${durationMs}ms
|
|
2672
|
-
`);
|
|
2673
|
-
logDaemonHealth({
|
|
2674
|
-
event: "process_stats",
|
|
2675
|
-
pid: process.pid,
|
|
2676
|
-
message: `agent_stats took ${durationMs}ms`,
|
|
2677
|
-
data: { type: "timer_slow", timer: "agent_stats", durationMs }
|
|
2678
|
-
});
|
|
2679
|
-
}
|
|
2680
2652
|
}
|
|
2681
2653
|
}
|
|
2682
|
-
|
|
2683
|
-
|
|
2684
|
-
|
|
2654
|
+
var AGENT_STATS_REFRESH_INTERVAL_MS = 10 * 60 * 1e3;
|
|
2655
|
+
var _agentRefreshInFlight = false;
|
|
2656
|
+
async function refreshAgentData() {
|
|
2657
|
+
if (_agentRefreshInFlight) return;
|
|
2658
|
+
_agentRefreshInFlight = true;
|
|
2685
2659
|
const started = Date.now();
|
|
2686
2660
|
try {
|
|
2687
|
-
|
|
2688
|
-
const
|
|
2689
|
-
const
|
|
2690
|
-
const
|
|
2691
|
-
|
|
2692
|
-
|
|
2693
|
-
|
|
2694
|
-
|
|
2695
|
-
|
|
2696
|
-
|
|
2661
|
+
if (!await ensureStoreForPolling()) return;
|
|
2662
|
+
const { getClient } = await import("./database.js");
|
|
2663
|
+
const client = getClient();
|
|
2664
|
+
const result = await client.execute({
|
|
2665
|
+
sql: `SELECT agent_id,
|
|
2666
|
+
COUNT(*) as total,
|
|
2667
|
+
SUM(CASE WHEN timestamp > datetime('now', '-1 day') THEN 1 ELSE 0 END) as growth_24h,
|
|
2668
|
+
SUM(CASE WHEN timestamp > datetime('now', '-7 days') THEN 1 ELSE 0 END) as growth_7d,
|
|
2669
|
+
SUM(CASE WHEN timestamp > datetime('now', '-30 days') THEN 1 ELSE 0 END) as growth_30d
|
|
2670
|
+
FROM memories
|
|
2671
|
+
WHERE agent_id != 'default'
|
|
2672
|
+
GROUP BY agent_id
|
|
2673
|
+
ORDER BY total DESC`,
|
|
2674
|
+
args: []
|
|
2675
|
+
});
|
|
2676
|
+
const counts = /* @__PURE__ */ new Map();
|
|
2677
|
+
for (const row of result.rows) {
|
|
2678
|
+
counts.set(String(row.agent_id), {
|
|
2679
|
+
total: Number(row.total),
|
|
2680
|
+
growth24h: Number(row.growth_24h),
|
|
2681
|
+
growth7d: Number(row.growth_7d),
|
|
2682
|
+
growth30d: Number(row.growth_30d)
|
|
2683
|
+
});
|
|
2684
|
+
}
|
|
2685
|
+
let spend24h = /* @__PURE__ */ new Map();
|
|
2686
|
+
let spend7d = /* @__PURE__ */ new Map();
|
|
2687
|
+
let spend30d = /* @__PURE__ */ new Map();
|
|
2688
|
+
try {
|
|
2689
|
+
const { getAgentSpend } = await import("./token-spend.js");
|
|
2690
|
+
const r24 = await getAgentSpend("24h");
|
|
2691
|
+
spend24h = new Map(r24.map((s) => [s.agentId, { inputTokens: s.inputTokens, outputTokens: s.outputTokens, costUSD: s.costUSD, sessions: s.sessions }]));
|
|
2692
|
+
const r7 = await getAgentSpend("7d");
|
|
2693
|
+
spend7d = new Map(r7.map((s) => [s.agentId, { inputTokens: s.inputTokens, outputTokens: s.outputTokens, costUSD: s.costUSD, sessions: s.sessions }]));
|
|
2694
|
+
const r30 = await getAgentSpend("30d");
|
|
2695
|
+
spend30d = new Map(r30.map((s) => [s.agentId, { inputTokens: s.inputTokens, outputTokens: s.outputTokens, costUSD: s.costUSD, sessions: s.sessions }]));
|
|
2696
|
+
} catch (err) {
|
|
2697
|
+
process.stderr.write(`[exed] Agent spend refresh error: ${err instanceof Error ? err.message : String(err)}
|
|
2698
|
+
`);
|
|
2699
|
+
}
|
|
2700
|
+
_cachedAgentData = { counts, spend24h, spend7d, spend30d, refreshedAt: Date.now() };
|
|
2697
2701
|
const durationMs = Date.now() - started;
|
|
2698
2702
|
if (durationMs > 5e3) {
|
|
2699
|
-
process.stderr.write(`[exed] Agent
|
|
2703
|
+
process.stderr.write(`[exed] Agent data refresh: ${durationMs}ms (${counts.size} agents)
|
|
2700
2704
|
`);
|
|
2705
|
+
logDaemonHealth({
|
|
2706
|
+
event: "process_stats",
|
|
2707
|
+
pid: process.pid,
|
|
2708
|
+
message: `agent_data_refresh took ${durationMs}ms`,
|
|
2709
|
+
data: { type: "timer_slow", timer: "agent_data_refresh", durationMs }
|
|
2710
|
+
});
|
|
2701
2711
|
}
|
|
2702
2712
|
} catch (err) {
|
|
2703
|
-
process.stderr.write(`[exed] Agent
|
|
2713
|
+
process.stderr.write(`[exed] Agent data refresh error: ${err instanceof Error ? err.message : String(err)}
|
|
2704
2714
|
`);
|
|
2705
2715
|
} finally {
|
|
2706
|
-
|
|
2716
|
+
_agentRefreshInFlight = false;
|
|
2707
2717
|
}
|
|
2708
2718
|
}
|
|
2709
2719
|
function startAgentStats() {
|
|
2710
2720
|
const statsTimer = setInterval(() => void writeAgentStats(), AGENT_STATS_INTERVAL_MS);
|
|
2711
2721
|
statsTimer.unref();
|
|
2712
2722
|
setTimeout(() => {
|
|
2713
|
-
void
|
|
2714
|
-
const
|
|
2715
|
-
|
|
2723
|
+
void refreshAgentData();
|
|
2724
|
+
const refreshTimer = setInterval(() => void refreshAgentData(), AGENT_STATS_REFRESH_INTERVAL_MS);
|
|
2725
|
+
refreshTimer.unref();
|
|
2716
2726
|
}, 3 * 60 * 1e3);
|
|
2717
|
-
process.stderr.write(`[exed] Agent stats started (
|
|
2727
|
+
process.stderr.write(`[exed] Agent stats started (file every ${AGENT_STATS_INTERVAL_MS / 1e3}s, data refresh every ${AGENT_STATS_REFRESH_INTERVAL_MS / 6e4}m, first refresh at +3m)
|
|
2718
2728
|
`);
|
|
2719
2729
|
}
|
|
2720
2730
|
var CONFIDENCE_DECAY_INTERVAL_MS = 24 * 60 * 60 * 1e3;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
registerAllTools
|
|
3
|
-
} from "../chunk-
|
|
3
|
+
} from "../chunk-MEP5CND3.js";
|
|
4
4
|
import "../chunk-557C2IGL.js";
|
|
5
5
|
import "../chunk-3GFXV46R.js";
|
|
6
6
|
import "../chunk-BO6HP63V.js";
|
|
7
|
-
import "../chunk-
|
|
7
|
+
import "../chunk-HURHILTM.js";
|
|
8
8
|
import "../chunk-KH5Y6RR4.js";
|
|
9
9
|
import "../chunk-GCMXBQ7Y.js";
|
|
10
10
|
import "../chunk-IENYOYZ6.js";
|
|
@@ -56,7 +56,7 @@ import "../chunk-GMQKS5JD.js";
|
|
|
56
56
|
import "../chunk-K5EXLDQD.js";
|
|
57
57
|
import "../chunk-EF4PA3TY.js";
|
|
58
58
|
import "../chunk-LMSRF47U.js";
|
|
59
|
-
import "../chunk-
|
|
59
|
+
import "../chunk-UVYFJ7IU.js";
|
|
60
60
|
import "../chunk-E3Q4R3K6.js";
|
|
61
61
|
import "../chunk-CHCA3ZM2.js";
|
|
62
62
|
import "../chunk-XJQASQPO.js";
|
package/dist/mcp/server.js
CHANGED
|
@@ -3,11 +3,11 @@ import {
|
|
|
3
3
|
} from "../chunk-V4TZI6EO.js";
|
|
4
4
|
import {
|
|
5
5
|
registerAllTools
|
|
6
|
-
} from "../chunk-
|
|
6
|
+
} from "../chunk-MEP5CND3.js";
|
|
7
7
|
import "../chunk-557C2IGL.js";
|
|
8
8
|
import "../chunk-3GFXV46R.js";
|
|
9
9
|
import "../chunk-BO6HP63V.js";
|
|
10
|
-
import "../chunk-
|
|
10
|
+
import "../chunk-HURHILTM.js";
|
|
11
11
|
import "../chunk-KH5Y6RR4.js";
|
|
12
12
|
import {
|
|
13
13
|
initLicenseGate
|
|
@@ -66,7 +66,7 @@ import "../chunk-GMQKS5JD.js";
|
|
|
66
66
|
import "../chunk-K5EXLDQD.js";
|
|
67
67
|
import "../chunk-EF4PA3TY.js";
|
|
68
68
|
import "../chunk-LMSRF47U.js";
|
|
69
|
-
import "../chunk-
|
|
69
|
+
import "../chunk-UVYFJ7IU.js";
|
|
70
70
|
import {
|
|
71
71
|
disposeStore,
|
|
72
72
|
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.212",
|
|
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,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
|
-
"current": "0.9.
|
|
2
|
+
"current": "0.9.212",
|
|
3
3
|
"notes": {
|
|
4
|
-
"0.9.
|
|
5
|
-
"version": "0.9.
|
|
4
|
+
"0.9.212": {
|
|
5
|
+
"version": "0.9.212",
|
|
6
6
|
"date": "2026-06-03",
|
|
7
7
|
"features": [
|
|
8
8
|
"free license telemetry is mandatory, paid can opt out",
|
|
@@ -32,6 +32,7 @@
|
|
|
32
32
|
"wire update.askexe.com — billing schema + non-fatal image credentials"
|
|
33
33
|
],
|
|
34
34
|
"fixes": [
|
|
35
|
+
"move DB memory count query to slow path — fast path is cache-only",
|
|
35
36
|
"split agent stats into fast path (60s) + slow path (10m)",
|
|
36
37
|
"defer agent stats first tick + async file write",
|
|
37
38
|
"Fix daemon agent stats event-loop stalls",
|
|
@@ -55,8 +56,7 @@
|
|
|
55
56
|
"isolate Metal/GPU ops in worker process — reranker dispose crash was killing daemon",
|
|
56
57
|
"remove remaining /exe-intercom invocations + update tests",
|
|
57
58
|
"replace /exe-intercom skill invocation with plain text prompt",
|
|
58
|
-
"remove ALL --strict-mcp-config usage — was blocking /exe-intercom in session MCP config too"
|
|
59
|
-
"tsup outputs to dist directly — kill dist-next migration shim"
|
|
59
|
+
"remove ALL --strict-mcp-config usage — was blocking /exe-intercom in session MCP config too"
|
|
60
60
|
],
|
|
61
61
|
"security": [
|
|
62
62
|
"fix shell injection, SSRF, socket leaks, backup validation",
|
|
@@ -73,6 +73,7 @@
|
|
|
73
73
|
"fix 4 pricing tier bypass vulnerabilities (audit F1-F4)"
|
|
74
74
|
],
|
|
75
75
|
"other": [
|
|
76
|
+
"bump to v0.9.212",
|
|
76
77
|
"bump to v0.9.211",
|
|
77
78
|
"bump to v0.9.210",
|
|
78
79
|
"bump to v0.9.209",
|
|
@@ -96,13 +97,12 @@
|
|
|
96
97
|
"design orchestration measurement baseline",
|
|
97
98
|
"capture tmux hardening path",
|
|
98
99
|
"add orchestration counterargument",
|
|
99
|
-
"audit tmux orchestration architecture"
|
|
100
|
-
"bump to v0.9.199"
|
|
100
|
+
"audit tmux orchestration architecture"
|
|
101
101
|
],
|
|
102
102
|
"migration_notes": []
|
|
103
103
|
},
|
|
104
|
-
"0.9.
|
|
105
|
-
"version": "0.9.
|
|
104
|
+
"0.9.211": {
|
|
105
|
+
"version": "0.9.211",
|
|
106
106
|
"date": "2026-06-03",
|
|
107
107
|
"features": [
|
|
108
108
|
"free license telemetry is mandatory, paid can opt out",
|
|
@@ -132,6 +132,7 @@
|
|
|
132
132
|
"wire update.askexe.com — billing schema + non-fatal image credentials"
|
|
133
133
|
],
|
|
134
134
|
"fixes": [
|
|
135
|
+
"split agent stats into fast path (60s) + slow path (10m)",
|
|
135
136
|
"defer agent stats first tick + async file write",
|
|
136
137
|
"Fix daemon agent stats event-loop stalls",
|
|
137
138
|
"async-ify task re-sync walk + git worktree list in daemon",
|
|
@@ -155,8 +156,7 @@
|
|
|
155
156
|
"remove remaining /exe-intercom invocations + update tests",
|
|
156
157
|
"replace /exe-intercom skill invocation with plain text prompt",
|
|
157
158
|
"remove ALL --strict-mcp-config usage — was blocking /exe-intercom in session MCP config too",
|
|
158
|
-
"tsup outputs to dist directly — kill dist-next migration shim"
|
|
159
|
-
"drop --strict-mcp-config from lean MCP — was blocking skill loading (/exe-intercom)"
|
|
159
|
+
"tsup outputs to dist directly — kill dist-next migration shim"
|
|
160
160
|
],
|
|
161
161
|
"security": [
|
|
162
162
|
"fix shell injection, SSRF, socket leaks, backup validation",
|
|
@@ -173,6 +173,7 @@
|
|
|
173
173
|
"fix 4 pricing tier bypass vulnerabilities (audit F1-F4)"
|
|
174
174
|
],
|
|
175
175
|
"other": [
|
|
176
|
+
"bump to v0.9.211",
|
|
176
177
|
"bump to v0.9.210",
|
|
177
178
|
"bump to v0.9.209",
|
|
178
179
|
"update release-notes.json",
|
|
@@ -196,13 +197,12 @@
|
|
|
196
197
|
"capture tmux hardening path",
|
|
197
198
|
"add orchestration counterargument",
|
|
198
199
|
"audit tmux orchestration architecture",
|
|
199
|
-
"bump to v0.9.199"
|
|
200
|
-
"remove registry.askexe.com references — fully consolidated to update.askexe.com"
|
|
200
|
+
"bump to v0.9.199"
|
|
201
201
|
],
|
|
202
202
|
"migration_notes": []
|
|
203
203
|
},
|
|
204
|
-
"0.9.
|
|
205
|
-
"version": "0.9.
|
|
204
|
+
"0.9.210": {
|
|
205
|
+
"version": "0.9.210",
|
|
206
206
|
"date": "2026-06-03",
|
|
207
207
|
"features": [
|
|
208
208
|
"free license telemetry is mandatory, paid can opt out",
|
|
@@ -232,6 +232,7 @@
|
|
|
232
232
|
"wire update.askexe.com — billing schema + non-fatal image credentials"
|
|
233
233
|
],
|
|
234
234
|
"fixes": [
|
|
235
|
+
"defer agent stats first tick + async file write",
|
|
235
236
|
"Fix daemon agent stats event-loop stalls",
|
|
236
237
|
"async-ify task re-sync walk + git worktree list in daemon",
|
|
237
238
|
"async worktree reaper — eliminates 30-min event loop blocks",
|
|
@@ -255,8 +256,7 @@
|
|
|
255
256
|
"replace /exe-intercom skill invocation with plain text prompt",
|
|
256
257
|
"remove ALL --strict-mcp-config usage — was blocking /exe-intercom in session MCP config too",
|
|
257
258
|
"tsup outputs to dist directly — kill dist-next migration shim",
|
|
258
|
-
"drop --strict-mcp-config from lean MCP — was blocking skill loading (/exe-intercom)"
|
|
259
|
-
"zombie agent reaper never kills coordinator/exe session processes"
|
|
259
|
+
"drop --strict-mcp-config from lean MCP — was blocking skill loading (/exe-intercom)"
|
|
260
260
|
],
|
|
261
261
|
"security": [
|
|
262
262
|
"fix shell injection, SSRF, socket leaks, backup validation",
|
|
@@ -273,6 +273,7 @@
|
|
|
273
273
|
"fix 4 pricing tier bypass vulnerabilities (audit F1-F4)"
|
|
274
274
|
],
|
|
275
275
|
"other": [
|
|
276
|
+
"bump to v0.9.210",
|
|
276
277
|
"bump to v0.9.209",
|
|
277
278
|
"update release-notes.json",
|
|
278
279
|
"Standardize task completion reports",
|
|
@@ -296,15 +297,16 @@
|
|
|
296
297
|
"add orchestration counterargument",
|
|
297
298
|
"audit tmux orchestration architecture",
|
|
298
299
|
"bump to v0.9.199",
|
|
299
|
-
"remove registry.askexe.com references — fully consolidated to update.askexe.com"
|
|
300
|
-
"bump to 0.9.198 — coordinator reaper guard"
|
|
300
|
+
"remove registry.askexe.com references — fully consolidated to update.askexe.com"
|
|
301
301
|
],
|
|
302
302
|
"migration_notes": []
|
|
303
303
|
},
|
|
304
|
-
"0.9.
|
|
305
|
-
"version": "0.9.
|
|
304
|
+
"0.9.209": {
|
|
305
|
+
"version": "0.9.209",
|
|
306
306
|
"date": "2026-06-03",
|
|
307
307
|
"features": [
|
|
308
|
+
"free license telemetry is mandatory, paid can opt out",
|
|
309
|
+
"add mcp-sessions CLI — rich status table for running sessions",
|
|
308
310
|
"5-minute telemetry batching + per-tool-call usage in payload",
|
|
309
311
|
"disk outbox for failed telemetry + remote killswitch",
|
|
310
312
|
"auto-attach orchestration metrics to every bug report",
|
|
@@ -327,9 +329,7 @@
|
|
|
327
329
|
"scale daemon heap to 25% of system RAM, support 10+ coordinators",
|
|
328
330
|
"add query expansion + benchmark results to retrieval platform procedure",
|
|
329
331
|
"3-mode BEAM benchmark — FTS vs FTS+Graph vs Hybrid",
|
|
330
|
-
"wire update.askexe.com — billing schema + non-fatal image credentials"
|
|
331
|
-
"add 'never defer' platform procedure — fix it now or assign it now",
|
|
332
|
-
"BEAM multi-tier support — 100K, 1M, 10M token scales"
|
|
332
|
+
"wire update.askexe.com — billing schema + non-fatal image credentials"
|
|
333
333
|
],
|
|
334
334
|
"fixes": [
|
|
335
335
|
"Fix daemon agent stats event-loop stalls",
|
|
@@ -373,12 +373,14 @@
|
|
|
373
373
|
"fix 4 pricing tier bypass vulnerabilities (audit F1-F4)"
|
|
374
374
|
],
|
|
375
375
|
"other": [
|
|
376
|
+
"bump to v0.9.209",
|
|
377
|
+
"update release-notes.json",
|
|
378
|
+
"Standardize task completion reports",
|
|
376
379
|
"bump to v0.9.208",
|
|
377
380
|
"bump to v0.9.207",
|
|
378
381
|
"bump to v0.9.206",
|
|
379
382
|
"bump to v0.9.205",
|
|
380
383
|
"bump to v0.9.204",
|
|
381
|
-
"update release-notes.json",
|
|
382
384
|
"bump stack manifest to v0.9.12 — CRM v0.9.44, exe-os v0.9.199",
|
|
383
385
|
"review full orchestration measurement coverage",
|
|
384
386
|
"bump to v0.9.203",
|
|
@@ -395,14 +397,12 @@
|
|
|
395
397
|
"audit tmux orchestration architecture",
|
|
396
398
|
"bump to v0.9.199",
|
|
397
399
|
"remove registry.askexe.com references — fully consolidated to update.askexe.com",
|
|
398
|
-
"bump to 0.9.198 — coordinator reaper guard"
|
|
399
|
-
"bump to 0.9.197 — TTL fix + registry consolidation + TS fixes",
|
|
400
|
-
"update all manifest images to update.askexe.com + compose + beam tuning"
|
|
400
|
+
"bump to 0.9.198 — coordinator reaper guard"
|
|
401
401
|
],
|
|
402
402
|
"migration_notes": []
|
|
403
403
|
},
|
|
404
|
-
"0.9.
|
|
405
|
-
"version": "0.9.
|
|
404
|
+
"0.9.208": {
|
|
405
|
+
"version": "0.9.208",
|
|
406
406
|
"date": "2026-06-03",
|
|
407
407
|
"features": [
|
|
408
408
|
"5-minute telemetry batching + per-tool-call usage in payload",
|
|
@@ -432,6 +432,7 @@
|
|
|
432
432
|
"BEAM multi-tier support — 100K, 1M, 10M token scales"
|
|
433
433
|
],
|
|
434
434
|
"fixes": [
|
|
435
|
+
"Fix daemon agent stats event-loop stalls",
|
|
435
436
|
"async-ify task re-sync walk + git worktree list in daemon",
|
|
436
437
|
"async worktree reaper — eliminates 30-min event loop blocks",
|
|
437
438
|
"simplify telemetry to once-per-day only",
|
|
@@ -455,8 +456,7 @@
|
|
|
455
456
|
"remove ALL --strict-mcp-config usage — was blocking /exe-intercom in session MCP config too",
|
|
456
457
|
"tsup outputs to dist directly — kill dist-next migration shim",
|
|
457
458
|
"drop --strict-mcp-config from lean MCP — was blocking skill loading (/exe-intercom)",
|
|
458
|
-
"zombie agent reaper never kills coordinator/exe session processes"
|
|
459
|
-
"typecheck errors blocking publish — async embed alert + dead code cleanup"
|
|
459
|
+
"zombie agent reaper never kills coordinator/exe session processes"
|
|
460
460
|
],
|
|
461
461
|
"security": [
|
|
462
462
|
"fix shell injection, SSRF, socket leaks, backup validation",
|
|
@@ -473,6 +473,7 @@
|
|
|
473
473
|
"fix 4 pricing tier bypass vulnerabilities (audit F1-F4)"
|
|
474
474
|
],
|
|
475
475
|
"other": [
|
|
476
|
+
"bump to v0.9.208",
|
|
476
477
|
"bump to v0.9.207",
|
|
477
478
|
"bump to v0.9.206",
|
|
478
479
|
"bump to v0.9.205",
|
|
@@ -496,8 +497,7 @@
|
|
|
496
497
|
"remove registry.askexe.com references — fully consolidated to update.askexe.com",
|
|
497
498
|
"bump to 0.9.198 — coordinator reaper guard",
|
|
498
499
|
"bump to 0.9.197 — TTL fix + registry consolidation + TS fixes",
|
|
499
|
-
"update all manifest images to update.askexe.com + compose + beam tuning"
|
|
500
|
-
"bump to 0.9.196"
|
|
500
|
+
"update all manifest images to update.askexe.com + compose + beam tuning"
|
|
501
501
|
],
|
|
502
502
|
"migration_notes": []
|
|
503
503
|
}
|
|
File without changes
|