@askexenow/exe-os 0.9.206 → 0.9.207

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.
@@ -4,7 +4,7 @@ import {
4
4
  } from "../chunk-MTR5SMNA.js";
5
5
  import {
6
6
  lightweightSearch
7
- } from "../chunk-745HXTTK.js";
7
+ } from "../chunk-T4TMVXF5.js";
8
8
  import "../chunk-KJVFW5C7.js";
9
9
  import "../chunk-CHCA3ZM2.js";
10
10
  import "../chunk-XJQASQPO.js";
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  hybridSearch,
4
4
  lightweightSearch
5
- } from "../chunk-745HXTTK.js";
5
+ } from "../chunk-T4TMVXF5.js";
6
6
  import {
7
7
  initStore
8
8
  } from "../chunk-KJVFW5C7.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  lightweightSearch
3
- } from "./chunk-745HXTTK.js";
3
+ } from "./chunk-T4TMVXF5.js";
4
4
  import "./chunk-KJVFW5C7.js";
5
5
  import "./chunk-CHCA3ZM2.js";
6
6
  import "./chunk-XJQASQPO.js";
@@ -1625,6 +1625,9 @@ async function createWorktreeReaperRealDeps() {
1625
1625
  const { getGitRoot, isWorktreeDirty: isDirty } = await import("./worktree-QTCOX6RV.js");
1626
1626
  const { statSync: statSync2 } = await import("fs");
1627
1627
  const { basename } = await import("path");
1628
+ const { promisify } = await import("util");
1629
+ const { execFile: execFileCb } = await import("child_process");
1630
+ const execFileAsync = promisify(execFileCb);
1628
1631
  const sessions = listTmuxSessions();
1629
1632
  const cwdMap = /* @__PURE__ */ new Map();
1630
1633
  const cwdPromises = sessions.map(async (s) => {
@@ -1635,33 +1638,38 @@ async function createWorktreeReaperRealDeps() {
1635
1638
  }
1636
1639
  });
1637
1640
  await Promise.all(cwdPromises);
1641
+ const repoRoots = /* @__PURE__ */ new Set();
1642
+ for (const cwd of cwdMap.values()) {
1643
+ const root = getGitRoot(cwd);
1644
+ if (root) repoRoots.add(root);
1645
+ }
1646
+ const worktreeCache = /* @__PURE__ */ new Map();
1647
+ const wtPromises = [...repoRoots].map(async (repoRoot) => {
1648
+ try {
1649
+ const { stdout } = await execFileAsync("git", ["worktree", "list", "--porcelain"], {
1650
+ cwd: repoRoot,
1651
+ timeout: 1e4
1652
+ });
1653
+ const worktrees = [];
1654
+ let currentPath = "";
1655
+ for (const line of stdout.split("\n")) {
1656
+ if (line.startsWith("worktree ")) {
1657
+ currentPath = line.slice("worktree ".length);
1658
+ } else if (line.startsWith("branch ") && currentPath) {
1659
+ const branch = line.slice("branch refs/heads/".length);
1660
+ worktrees.push({ path: currentPath, branch });
1661
+ currentPath = "";
1662
+ }
1663
+ }
1664
+ worktreeCache.set(repoRoot, worktrees);
1665
+ } catch {
1666
+ }
1667
+ });
1668
+ await Promise.all(wtPromises);
1638
1669
  return {
1639
1670
  listTmuxSessions: () => sessions,
1640
1671
  getPaneCwd: (s) => cwdMap.get(s),
1641
- listWorktrees: (repoRoot) => {
1642
- try {
1643
- const out = execSync("git worktree list --porcelain", {
1644
- cwd: repoRoot,
1645
- encoding: "utf-8",
1646
- timeout: 1e4,
1647
- stdio: ["pipe", "pipe", "pipe"]
1648
- });
1649
- const worktrees = [];
1650
- let currentPath = "";
1651
- for (const line of out.split("\n")) {
1652
- if (line.startsWith("worktree ")) {
1653
- currentPath = line.slice("worktree ".length);
1654
- } else if (line.startsWith("branch ") && currentPath) {
1655
- const branch = line.slice("branch refs/heads/".length);
1656
- worktrees.push({ path: currentPath, branch });
1657
- currentPath = "";
1658
- }
1659
- }
1660
- return worktrees;
1661
- } catch {
1662
- return [];
1663
- }
1664
- },
1672
+ listWorktrees: (repoRoot) => worktreeCache.get(repoRoot) ?? [],
1665
1673
  isWorktreeDirty: (wtPath) => isDirty(wtPath),
1666
1674
  getDirMtimeMs: (dirPath) => {
1667
1675
  try {
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  isRerankerAvailable,
6
6
  rerankWithScores
7
- } from "./chunk-E7HAATCK.js";
7
+ } from "./chunk-P5J37OSU.js";
8
8
  import {
9
9
  getEntityByName,
10
10
  getEntityNeighbors,
@@ -22,7 +22,7 @@ import {
22
22
  } from "./chunk-SEAFDIKF.js";
23
23
  import {
24
24
  AUTO_WAKE_MAX_RETRIES
25
- } from "./chunk-PYTUXXP4.js";
25
+ } from "./chunk-QOAPYITU.js";
26
26
  import {
27
27
  getCachedLicenseGate
28
28
  } from "./chunk-GCMXBQ7Y.js";
@@ -187,7 +187,7 @@ import {
187
187
  import {
188
188
  hybridSearch,
189
189
  recentRecords
190
- } from "./chunk-745HXTTK.js";
190
+ } from "./chunk-T4TMVXF5.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-S5MJWW7Q.js");
236
+ const { isRerankerAvailable } = await import("./reranker-TRLLNJHH.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-S5MJWW7Q.js");
400
+ const { rerankWithContext } = await import("./reranker-TRLLNJHH.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-S5MJWW7Q.js");
408
+ const { rerank } = await import("./reranker-TRLLNJHH.js");
409
409
  rerankedRecords = await rerank(effectiveQuery, merged, rerankReturnLimit);
410
410
  }
411
411
  if (rerankedRecords.length > 0) {
@@ -48,7 +48,7 @@ import {
48
48
  shouldKillIdleSession,
49
49
  shouldKillSession,
50
50
  shouldNudgeEmployee
51
- } from "./chunk-PYTUXXP4.js";
51
+ } from "./chunk-QOAPYITU.js";
52
52
  import "./chunk-3S3ERUUH.js";
53
53
  import "./chunk-7VDMUMHM.js";
54
54
  import "./chunk-4EOXPKWA.js";
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  hybridSearch,
6
6
  lightweightSearch
7
- } from "../chunk-745HXTTK.js";
7
+ } from "../chunk-T4TMVXF5.js";
8
8
  import {
9
9
  initStore
10
10
  } from "../chunk-KJVFW5C7.js";
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "version": 1,
3
- "generatedAt": "2026-06-03T13:41:14.206Z",
3
+ "generatedAt": "2026-06-03T13:59:08.725Z",
4
4
  "hashes": {
5
5
  "bug-report-worker.js": "9d3b56d139065f399142c958f34379d02a85a0a6a1105863adf2e2ccb89108db",
6
6
  "codex-stop-task-finalizer.js": "7571bbe9ab0ca34128bfb812ef804febe7fc20f6d97dba58977ab8ff518c0312",
7
7
  "commit-complete.js": "bc9567621fcda704ad9c026e78af3d14e2a86288ff0599f0633be63427c6feb1",
8
- "error-recall.js": "f9c8eff9abd8c7fb5330bf727b9dcbe05358f7082f2f18b313ab32c7e59ae946",
8
+ "error-recall.js": "05a7e7b6de3520f4ebba0490f6f35d8cd0a3e23d7fd18b6cab8c160d42b649f1",
9
9
  "exe-heartbeat-hook.js": "10688da0e9c9972fff33c3bb33923df4e743df9d48e744b96d227836c6270c4c",
10
10
  "ingest-worker.js": "df9693b3a590f313868019ab91dd2f7298750492f792c2b8055c4ad68a1c9d67",
11
11
  "ingest.js": "766bf7211ab1305cf8acd3aa5da741e2a193f1038d663b53d50c128110679188",
@@ -15,9 +15,9 @@
15
15
  "post-tool-combined.js": "7dc4491cd976f39349ad448cc72a9cc53a63f18532fee3f15d9309ce72b09ed0",
16
16
  "pre-compact.js": "c35ff8d4774b1b6f4ba0178b03a0359e8ef38c1283f1ff672d7d37c1264a7fa8",
17
17
  "pre-tool-use.js": "f610e4cf30dfe5014861e26c121d9157f1b8aa473975d01621c291eae1735267",
18
- "prompt-submit.js": "b42a00ff60497197c181796b2c0831927409400876e4390804320b7654fb82ac",
18
+ "prompt-submit.js": "45e49ef9fe9abe2f4dc5c53ccd4b19b3fbfd343673ebf572c8a0d9c99329fda4",
19
19
  "session-end.js": "2abfca49918f1bc22cabc277fc11b8de1388b0b676cb58f2227ab2cf17955238",
20
- "session-start.js": "ec627dc01563785d69d151b5758f4b30bdb60b424bf8804c5c2d4fdfaad5cf6b",
20
+ "session-start.js": "e878a9136cfedb9d8e876c605b8c865ab92ef9c1141e85c32b03f714ff79daa4",
21
21
  "stop.js": "3982d90bbafc8ae0dbaa2901254884525491d1119d65a0e0eb55359089b7a9ae",
22
22
  "subagent-stop.js": "68f023c30969a4e87fa0014664c26a2e68b56d568fd3a14d1d71b7c39d620042",
23
23
  "summary-worker.js": "832c0a7316dc2a47f92f48925817d86e1f4d8195792ae9d3e87ce2a91228fb82"
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  hybridSearch,
3
3
  lightweightSearch
4
- } from "../chunk-745HXTTK.js";
4
+ } from "../chunk-T4TMVXF5.js";
5
5
  import {
6
6
  initStore
7
7
  } from "../chunk-KJVFW5C7.js";
@@ -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-RSE5BJZN.js");
161
+ const { buildCatchupBrief } = await import("../catchup-brief-AYLBTVRM.js");
162
162
  const brief = await buildCatchupBrief(
163
163
  agentId,
164
164
  projectName,
@@ -2249,7 +2249,7 @@ async function startReviewPolling() {
2249
2249
  lastNudgeSent: /* @__PURE__ */ new Map(),
2250
2250
  intervalMs: REVIEW_POLL_INTERVAL_MS
2251
2251
  };
2252
- const { pollReviewNudge, createReviewNudgeRealDeps, loadNudgeState } = await import("../daemon-orchestration-ZCJ3XPBE.js");
2252
+ const { pollReviewNudge, createReviewNudgeRealDeps, loadNudgeState } = await import("../daemon-orchestration-TC3JWVDC.js");
2253
2253
  const nudgeState = loadNudgeState();
2254
2254
  const tick = async () => {
2255
2255
  fired("review_polling");
@@ -2291,7 +2291,7 @@ function startSessionTTL() {
2291
2291
  if (!await ensureStoreForPolling()) return;
2292
2292
  try {
2293
2293
  const { getClient } = await import("./database.js");
2294
- const { checkSessionTTL, createSessionTTLRealDeps } = await import("../daemon-orchestration-ZCJ3XPBE.js");
2294
+ const { checkSessionTTL, createSessionTTLRealDeps } = await import("../daemon-orchestration-TC3JWVDC.js");
2295
2295
  const deps = createSessionTTLRealDeps(getClient);
2296
2296
  const killed = await checkSessionTTL(deps);
2297
2297
  if (killed.length > 0) acted("session_ttl");
@@ -2340,7 +2340,7 @@ function startIdleKill() {
2340
2340
  const cfg = await getCachedConfig();
2341
2341
  if (!cfg) return;
2342
2342
  const { getClient } = await import("./database.js");
2343
- const { pollIdleKill, createIdleKillRealDeps } = await import("../daemon-orchestration-ZCJ3XPBE.js");
2343
+ const { pollIdleKill, createIdleKillRealDeps } = await import("../daemon-orchestration-TC3JWVDC.js");
2344
2344
  const deps = createIdleKillRealDeps(
2345
2345
  getClient,
2346
2346
  cfg.sessionLifecycle.idleKillIntercomAckWindowMs
@@ -2897,7 +2897,7 @@ function startOrphanReaper() {
2897
2897
  const tick = async () => {
2898
2898
  fired("orphan_reaper");
2899
2899
  try {
2900
- const { reapOrphanedMcpProcesses, createOrphanReaperRealDeps } = await import("../daemon-orchestration-ZCJ3XPBE.js");
2900
+ const { reapOrphanedMcpProcesses, createOrphanReaperRealDeps } = await import("../daemon-orchestration-TC3JWVDC.js");
2901
2901
  const deps = createOrphanReaperRealDeps();
2902
2902
  const reaped = await reapOrphanedMcpProcesses(deps);
2903
2903
  if (reaped.length > 0) acted("orphan_reaper");
@@ -2921,7 +2921,7 @@ function startZombieAgentReaper() {
2921
2921
  const tick = async () => {
2922
2922
  fired("zombie_agent_reaper");
2923
2923
  try {
2924
- const { reapZombieAgentProcesses, createZombieAgentReaperRealDeps } = await import("../daemon-orchestration-ZCJ3XPBE.js");
2924
+ const { reapZombieAgentProcesses, createZombieAgentReaperRealDeps } = await import("../daemon-orchestration-TC3JWVDC.js");
2925
2925
  const deps = createZombieAgentReaperRealDeps();
2926
2926
  const reaped = reapZombieAgentProcesses(deps);
2927
2927
  if (reaped.length > 0) acted("zombie_agent_reaper");
@@ -2944,7 +2944,7 @@ function startWorktreeReaper() {
2944
2944
  const tick = async () => {
2945
2945
  fired("worktree_reaper");
2946
2946
  try {
2947
- const { reapOrphanedWorktrees, createWorktreeReaperRealDeps } = await import("../daemon-orchestration-ZCJ3XPBE.js");
2947
+ const { reapOrphanedWorktrees, createWorktreeReaperRealDeps } = await import("../daemon-orchestration-TC3JWVDC.js");
2948
2948
  const deps = await createWorktreeReaperRealDeps();
2949
2949
  const result = await reapOrphanedWorktrees(deps);
2950
2950
  if (result.pruned.length > 0) {
@@ -2999,7 +2999,7 @@ function startStuckTaskRelease() {
2999
2999
  if (!await ensureStoreForPolling()) return;
3000
3000
  try {
3001
3001
  const { getClient } = await import("./database.js");
3002
- const { releaseStuckTasks, createStuckTaskRealDeps } = await import("../daemon-orchestration-ZCJ3XPBE.js");
3002
+ const { releaseStuckTasks, createStuckTaskRealDeps } = await import("../daemon-orchestration-TC3JWVDC.js");
3003
3003
  const deps = createStuckTaskRealDeps(getClient);
3004
3004
  const released = await releaseStuckTasks(deps);
3005
3005
  if (released.length > 0) {
@@ -3637,60 +3637,65 @@ try {
3637
3637
  setTimeout(async () => {
3638
3638
  try {
3639
3639
  if (!await ensureStoreForPolling()) return;
3640
- const { readdirSync, readFileSync: rfs } = await import("fs");
3640
+ const { readdir, readFile } = await import("fs/promises");
3641
3641
  const { getClient } = await import("./database.js");
3642
3642
  const client = getClient();
3643
3643
  const tasksRoot = path3.join(os2.homedir(), ".exe-os", "tasks");
3644
3644
  let synced = 0;
3645
- const walk = (dir) => {
3645
+ const walkAsync = async (dir) => {
3646
+ let entries;
3646
3647
  try {
3647
- for (const e of readdirSync(dir, { withFileTypes: true })) {
3648
- const full = path3.join(dir, e.name);
3649
- if (e.isDirectory()) walk(full);
3650
- else if (e.name.endsWith(".md")) {
3648
+ entries = await readdir(dir, { withFileTypes: true });
3649
+ } catch {
3650
+ return;
3651
+ }
3652
+ for (const e of entries) {
3653
+ const full = path3.join(dir, e.name);
3654
+ if (e.isDirectory()) {
3655
+ await walkAsync(full);
3656
+ continue;
3657
+ }
3658
+ if (!e.name.endsWith(".md")) continue;
3659
+ try {
3660
+ const content = await readFile(full, "utf8");
3661
+ const id = content.match(/\*\*ID:\*\*\s*([a-f0-9-]+)/)?.[1];
3662
+ const title = content.split("\n")[0]?.replace(/^# /, "") || "";
3663
+ const assignedTo = content.match(/\*\*Assigned to:\*\*\s*(\w+)/)?.[1];
3664
+ const assignedBy = content.match(/\*\*Assigned by:\*\*\s*(\w+)/)?.[1] || "exe";
3665
+ const project = content.match(/\*\*Project:\*\*\s*([\w-]+)/)?.[1] || "exe-os";
3666
+ const status = content.match(/\*\*Status:\*\*\s*(\w+)/)?.[1] || "open";
3667
+ const priority = content.match(/\*\*Priority:\*\*\s*(\w+)/)?.[1] || "p1";
3668
+ const scope = full.match(/tasks\/([^/]+)\//)?.[1] || null;
3669
+ if (id && assignedTo) {
3651
3670
  try {
3652
- const content = rfs(full, "utf8");
3653
- const id = content.match(/\*\*ID:\*\*\s*([a-f0-9-]+)/)?.[1];
3654
- const title = content.split("\n")[0]?.replace(/^# /, "") || "";
3655
- const assignedTo = content.match(/\*\*Assigned to:\*\*\s*(\w+)/)?.[1];
3656
- const assignedBy = content.match(/\*\*Assigned by:\*\*\s*(\w+)/)?.[1] || "exe";
3657
- const project = content.match(/\*\*Project:\*\*\s*([\w-]+)/)?.[1] || "exe-os";
3658
- const status = content.match(/\*\*Status:\*\*\s*(\w+)/)?.[1] || "open";
3659
- const priority = content.match(/\*\*Priority:\*\*\s*(\w+)/)?.[1] || "p1";
3660
- const scope = full.match(/tasks\/([^/]+)\//)?.[1] || null;
3661
- if (id && assignedTo) {
3662
- client.execute({
3663
- sql: `INSERT OR IGNORE INTO tasks (id, title, assigned_to, assigned_by, project_name, status, priority, task_file, session_scope, created_at, updated_at)
3664
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,
3665
- args: [id, title, assignedTo, assignedBy, project, status, priority, full, scope, (/* @__PURE__ */ new Date()).toISOString(), (/* @__PURE__ */ new Date()).toISOString()]
3666
- }).then((res) => {
3667
- if (Number(res.rowsAffected ?? 0) > 0) {
3668
- synced++;
3669
- void import("../orchestration-events-MSJVUR4T.js").then(({ recordOrchestrationEventBestEffort: recordOE }) => {
3670
- recordOE({
3671
- eventType: "task_file.resynced",
3672
- source: "exe-daemon.taskFileResync",
3673
- taskId: id,
3674
- agentId: assignedTo,
3675
- sessionScope: scope,
3676
- projectName: project,
3677
- payload: { status, priority }
3678
- });
3679
- }).catch(() => {
3680
- });
3681
- }
3671
+ const res = await client.execute({
3672
+ sql: `INSERT OR IGNORE INTO tasks (id, title, assigned_to, assigned_by, project_name, status, priority, task_file, session_scope, created_at, updated_at)
3673
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,
3674
+ args: [id, title, assignedTo, assignedBy, project, status, priority, full, scope, (/* @__PURE__ */ new Date()).toISOString(), (/* @__PURE__ */ new Date()).toISOString()]
3675
+ });
3676
+ if (Number(res.rowsAffected ?? 0) > 0) {
3677
+ synced++;
3678
+ void import("../orchestration-events-MSJVUR4T.js").then(({ recordOrchestrationEventBestEffort: recordOE }) => {
3679
+ recordOE({
3680
+ eventType: "task_file.resynced",
3681
+ source: "exe-daemon.taskFileResync",
3682
+ taskId: id,
3683
+ agentId: assignedTo,
3684
+ sessionScope: scope,
3685
+ projectName: project,
3686
+ payload: { status, priority }
3687
+ });
3682
3688
  }).catch(() => {
3683
3689
  });
3684
3690
  }
3685
3691
  } catch {
3686
3692
  }
3687
3693
  }
3694
+ } catch {
3688
3695
  }
3689
- } catch {
3690
3696
  }
3691
3697
  };
3692
- walk(tasksRoot);
3693
- await new Promise((r) => setTimeout(r, 2e3));
3698
+ await walkAsync(tasksRoot);
3694
3699
  if (synced > 0) process.stderr.write(`[exed] Task re-sync: ${synced} missing DB rows restored from disk.
3695
3700
  `);
3696
3701
  } catch (e) {
@@ -5,7 +5,7 @@ import {
5
5
  recentRecords,
6
6
  rrfMerge,
7
7
  rrfMergeMulti
8
- } from "../chunk-745HXTTK.js";
8
+ } from "../chunk-T4TMVXF5.js";
9
9
  import "../chunk-KJVFW5C7.js";
10
10
  import "../chunk-CHCA3ZM2.js";
11
11
  import "../chunk-XJQASQPO.js";
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  registerAllTools
3
- } from "../chunk-XSEXQDU5.js";
3
+ } from "../chunk-T4BKQ3CX.js";
4
4
  import "../chunk-EAHUS6WU.js";
5
- import "../chunk-E7HAATCK.js";
5
+ import "../chunk-P5J37OSU.js";
6
6
  import "../chunk-KH5Y6RR4.js";
7
7
  import "../chunk-557C2IGL.js";
8
8
  import "../chunk-E6ORBQHP.js";
9
9
  import "../chunk-SEAFDIKF.js";
10
- import "../chunk-PYTUXXP4.js";
10
+ import "../chunk-QOAPYITU.js";
11
11
  import "../chunk-GCMXBQ7Y.js";
12
12
  import "../chunk-IENYOYZ6.js";
13
13
  import "../chunk-GQYIMXUW.js";
@@ -56,7 +56,7 @@ import "../chunk-MTR5SMNA.js";
56
56
  import "../chunk-FLCWUX6G.js";
57
57
  import "../chunk-EF4PA3TY.js";
58
58
  import "../chunk-LMSRF47U.js";
59
- import "../chunk-745HXTTK.js";
59
+ import "../chunk-T4TMVXF5.js";
60
60
  import "../chunk-KJVFW5C7.js";
61
61
  import "../chunk-CHCA3ZM2.js";
62
62
  import "../chunk-XJQASQPO.js";
@@ -3,9 +3,9 @@ import {
3
3
  } from "../chunk-V4TZI6EO.js";
4
4
  import {
5
5
  registerAllTools
6
- } from "../chunk-XSEXQDU5.js";
6
+ } from "../chunk-T4BKQ3CX.js";
7
7
  import "../chunk-EAHUS6WU.js";
8
- import "../chunk-E7HAATCK.js";
8
+ import "../chunk-P5J37OSU.js";
9
9
  import "../chunk-KH5Y6RR4.js";
10
10
  import "../chunk-557C2IGL.js";
11
11
  import "../chunk-E6ORBQHP.js";
@@ -13,7 +13,7 @@ import {
13
13
  startToolTelemetryFlush,
14
14
  wrapServerWithTelemetry
15
15
  } from "../chunk-SEAFDIKF.js";
16
- import "../chunk-PYTUXXP4.js";
16
+ import "../chunk-QOAPYITU.js";
17
17
  import {
18
18
  initLicenseGate
19
19
  } from "../chunk-GCMXBQ7Y.js";
@@ -66,7 +66,7 @@ import "../chunk-MTR5SMNA.js";
66
66
  import "../chunk-FLCWUX6G.js";
67
67
  import "../chunk-EF4PA3TY.js";
68
68
  import "../chunk-LMSRF47U.js";
69
- import "../chunk-745HXTTK.js";
69
+ import "../chunk-T4TMVXF5.js";
70
70
  import {
71
71
  disposeStore,
72
72
  initStore
@@ -5,7 +5,7 @@ import {
5
5
  rerank,
6
6
  rerankWithContext,
7
7
  rerankWithScores
8
- } from "./chunk-E7HAATCK.js";
8
+ } from "./chunk-P5J37OSU.js";
9
9
  import "./chunk-WXW3XGWX.js";
10
10
  import "./chunk-LYH5HE24.js";
11
11
  import "./chunk-MLKGABMK.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@askexenow/exe-os",
3
- "version": "0.9.206",
3
+ "version": "0.9.207",
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",
@@ -1,8 +1,8 @@
1
1
  {
2
- "current": "0.9.206",
2
+ "current": "0.9.207",
3
3
  "notes": {
4
- "0.9.206": {
5
- "version": "0.9.206",
4
+ "0.9.207": {
5
+ "version": "0.9.207",
6
6
  "date": "2026-06-03",
7
7
  "features": [
8
8
  "5-minute telemetry batching + per-tool-call usage in payload",
@@ -32,6 +32,7 @@
32
32
  "BEAM multi-tier support — 100K, 1M, 10M token scales"
33
33
  ],
34
34
  "fixes": [
35
+ "async-ify task re-sync walk + git worktree list in daemon",
35
36
  "async worktree reaper — eliminates 30-min event loop blocks",
36
37
  "simplify telemetry to once-per-day only",
37
38
  "reduce telemetry batch cadence from 5min to 6h",
@@ -55,8 +56,7 @@
55
56
  "tsup outputs to dist directly — kill dist-next migration shim",
56
57
  "drop --strict-mcp-config from lean MCP — was blocking skill loading (/exe-intercom)",
57
58
  "zombie agent reaper never kills coordinator/exe session processes",
58
- "typecheck errors blocking publish — async embed alert + dead code cleanup",
59
- "session TTL uses registry registeredAt instead of tmux session_created"
59
+ "typecheck errors blocking publish — async embed alert + dead code cleanup"
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.207",
76
77
  "bump to v0.9.206",
77
78
  "bump to v0.9.205",
78
79
  "bump to v0.9.204",
@@ -96,13 +97,12 @@
96
97
  "bump to 0.9.198 — coordinator reaper guard",
97
98
  "bump to 0.9.197 — TTL fix + registry consolidation + TS fixes",
98
99
  "update all manifest images to update.askexe.com + compose + beam tuning",
99
- "bump to 0.9.196",
100
- "bump to 0.9.195"
100
+ "bump to 0.9.196"
101
101
  ],
102
102
  "migration_notes": []
103
103
  },
104
- "0.9.205": {
105
- "version": "0.9.205",
104
+ "0.9.206": {
105
+ "version": "0.9.206",
106
106
  "date": "2026-06-03",
107
107
  "features": [
108
108
  "5-minute telemetry batching + per-tool-call usage in payload",
@@ -132,6 +132,7 @@
132
132
  "BEAM multi-tier support — 100K, 1M, 10M token scales"
133
133
  ],
134
134
  "fixes": [
135
+ "async worktree reaper — eliminates 30-min event loop blocks",
135
136
  "simplify telemetry to once-per-day only",
136
137
  "reduce telemetry batch cadence from 5min to 6h",
137
138
  "prevent daemon telemetry checkpoint stalls",
@@ -155,8 +156,7 @@
155
156
  "drop --strict-mcp-config from lean MCP — was blocking skill loading (/exe-intercom)",
156
157
  "zombie agent reaper never kills coordinator/exe session processes",
157
158
  "typecheck errors blocking publish — async embed alert + dead code cleanup",
158
- "session TTL uses registry registeredAt instead of tmux session_created",
159
- "CRM auth defaults + benchmark beam.ts updates"
159
+ "session TTL uses registry registeredAt instead of tmux session_created"
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.206",
176
177
  "bump to v0.9.205",
177
178
  "bump to v0.9.204",
178
179
  "update release-notes.json",
@@ -196,15 +197,19 @@
196
197
  "bump to 0.9.197 — TTL fix + registry consolidation + TS fixes",
197
198
  "update all manifest images to update.askexe.com + compose + beam tuning",
198
199
  "bump to 0.9.196",
199
- "bump to 0.9.195",
200
- "bump to 0.9.194"
200
+ "bump to 0.9.195"
201
201
  ],
202
202
  "migration_notes": []
203
203
  },
204
- "0.9.204": {
205
- "version": "0.9.204",
204
+ "0.9.205": {
205
+ "version": "0.9.205",
206
206
  "date": "2026-06-03",
207
207
  "features": [
208
+ "5-minute telemetry batching + per-tool-call usage in payload",
209
+ "disk outbox for failed telemetry + remote killswitch",
210
+ "auto-attach orchestration metrics to every bug report",
211
+ "auto-send daily telemetry from daemon",
212
+ "add telemetry intake endpoint to Cloudflare Worker",
208
213
  "close orchestration measurement edge gaps",
209
214
  "harden orchestration telemetry coverage",
210
215
  "telemetry upload + RESUME storms + reviewer bottlenecks + DB consistency",
@@ -224,14 +229,12 @@
224
229
  "3-mode BEAM benchmark — FTS vs FTS+Graph vs Hybrid",
225
230
  "wire update.askexe.com — billing schema + non-fatal image credentials",
226
231
  "add 'never defer' platform procedure — fix it now or assign it now",
227
- "BEAM multi-tier support — 100K, 1M, 10M token scales",
228
- "MemoryAgentBench harness — ICLR 2026 benchmark",
229
- "support outbox flusher + list_tasks null fix + doctor outbox status",
230
- "bug report outbox flusher — reports reach AskExe even when daemon is dead",
231
- "add daily-summary CLI entry point + enable tsup build",
232
- "add daemon observability platform procedure"
232
+ "BEAM multi-tier support — 100K, 1M, 10M token scales"
233
233
  ],
234
234
  "fixes": [
235
+ "simplify telemetry to once-per-day only",
236
+ "reduce telemetry batch cadence from 5min to 6h",
237
+ "prevent daemon telemetry checkpoint stalls",
235
238
  "add gateway tables to init-db.sql — prevents missing table on fresh deploys",
236
239
  "task test mock returns correct shape for createOrRefreshResumeTask",
237
240
  "embed RAM gate 16GB, paste-buffer -p, task dispatch repo + surfacing",
@@ -253,10 +256,7 @@
253
256
  "zombie agent reaper never kills coordinator/exe session processes",
254
257
  "typecheck errors blocking publish — async embed alert + dead code cleanup",
255
258
  "session TTL uses registry registeredAt instead of tmux session_created",
256
- "CRM auth defaults + benchmark beam.ts updates",
257
- "enable GoTrue email auth by default in setup template",
258
- "intercom signal path in packaged source — ships to customers on npm install",
259
- "intercom signal path + registry consolidated to update.askexe.com"
259
+ "CRM auth defaults + benchmark beam.ts updates"
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.205",
276
277
  "bump to v0.9.204",
277
278
  "update release-notes.json",
278
279
  "bump stack manifest to v0.9.12 — CRM v0.9.44, exe-os v0.9.199",
@@ -296,15 +297,21 @@
296
297
  "update all manifest images to update.askexe.com + compose + beam tuning",
297
298
  "bump to 0.9.196",
298
299
  "bump to 0.9.195",
299
- "bump to 0.9.194",
300
- "bump to 0.9.193"
300
+ "bump to 0.9.194"
301
301
  ],
302
302
  "migration_notes": []
303
303
  },
304
- "0.9.203": {
305
- "version": "0.9.203",
304
+ "0.9.204": {
305
+ "version": "0.9.204",
306
306
  "date": "2026-06-03",
307
307
  "features": [
308
+ "close orchestration measurement edge gaps",
309
+ "harden orchestration telemetry coverage",
310
+ "telemetry upload + RESUME storms + reviewer bottlenecks + DB consistency",
311
+ "harden orchestration measurement contract",
312
+ "add blocked duration + session duration latency metrics",
313
+ "complete orchestration measurement — all blind spots closed",
314
+ "full orchestration measurement — 38 event types across all blind spots",
308
315
  "expand orchestration measurement to full event coverage",
309
316
  "DB Authority Phase 1 — task claim and liveness schema",
310
317
  "browser prompt injection defense + persistent cookie jar",
@@ -322,16 +329,10 @@
322
329
  "support outbox flusher + list_tasks null fix + doctor outbox status",
323
330
  "bug report outbox flusher — reports reach AskExe even when daemon is dead",
324
331
  "add daily-summary CLI entry point + enable tsup build",
325
- "add daemon observability platform procedure",
326
- "add retrieval architecture platform procedure for 8-16GB machines",
327
- "graceful shutdown warning via intercom 90s before idle kill",
328
- "upload pre-update snapshot to R2 before every stack-update",
329
- "encrypted daily VPS backups with R2 cloud upload",
330
- "conversation history import — parser + MCP tool + CLI",
331
- "add vps-backup + vps-health-gate scripts with stack-update integration",
332
- "add update_bug_report + update_feature_request MCP tools"
332
+ "add daemon observability platform procedure"
333
333
  ],
334
334
  "fixes": [
335
+ "add gateway tables to init-db.sql — prevents missing table on fresh deploys",
335
336
  "task test mock returns correct shape for createOrRefreshResumeTask",
336
337
  "embed RAM gate 16GB, paste-buffer -p, task dispatch repo + surfacing",
337
338
  "full shard schema parity with main DB",
@@ -355,8 +356,7 @@
355
356
  "CRM auth defaults + benchmark beam.ts updates",
356
357
  "enable GoTrue email auth by default in setup template",
357
358
  "intercom signal path in packaged source — ships to customers on npm install",
358
- "intercom signal path + registry consolidated to update.askexe.com",
359
- "4 customer P2 bugs — CLI passthrough + agent casing + clipboard (#50)"
359
+ "intercom signal path + registry consolidated to update.askexe.com"
360
360
  ],
361
361
  "security": [
362
362
  "fix shell injection, SSRF, socket leaks, backup validation",
@@ -373,6 +373,10 @@
373
373
  "fix 4 pricing tier bypass vulnerabilities (audit F1-F4)"
374
374
  ],
375
375
  "other": [
376
+ "bump to v0.9.204",
377
+ "update release-notes.json",
378
+ "bump stack manifest to v0.9.12 — CRM v0.9.44, exe-os v0.9.199",
379
+ "review full orchestration measurement coverage",
376
380
  "bump to v0.9.203",
377
381
  "capture orchestration measurement blind spots",
378
382
  "review push event orchestration roadmap",
@@ -393,18 +397,16 @@
393
397
  "bump to 0.9.196",
394
398
  "bump to 0.9.195",
395
399
  "bump to 0.9.194",
396
- "bump to 0.9.193",
397
- "bump to 0.9.192",
398
- "bump to 0.9.191",
399
- "bump to 0.9.189",
400
- "bump to 0.9.188 — HYGO stack-update blockers fixed"
400
+ "bump to 0.9.193"
401
401
  ],
402
402
  "migration_notes": []
403
403
  },
404
- "0.9.202": {
405
- "version": "0.9.202",
404
+ "0.9.203": {
405
+ "version": "0.9.203",
406
406
  "date": "2026-06-03",
407
407
  "features": [
408
+ "expand orchestration measurement to full event coverage",
409
+ "DB Authority Phase 1 — task claim and liveness schema",
408
410
  "browser prompt injection defense + persistent cookie jar",
409
411
  "wire exe-erp into VPS stack (init-db, cloudflared, manifest, docs)",
410
412
  "consolidate registry.askexe.com → update.askexe.com as primary registry (#51)",
@@ -427,11 +429,10 @@
427
429
  "encrypted daily VPS backups with R2 cloud upload",
428
430
  "conversation history import — parser + MCP tool + CLI",
429
431
  "add vps-backup + vps-health-gate scripts with stack-update integration",
430
- "add update_bug_report + update_feature_request MCP tools",
431
- "VPS guardrails — Postgres backup cron + post-deploy health gate",
432
- "co-occurrence edges + graph backfill script"
432
+ "add update_bug_report + update_feature_request MCP tools"
433
433
  ],
434
434
  "fixes": [
435
+ "task test mock returns correct shape for createOrRefreshResumeTask",
435
436
  "embed RAM gate 16GB, paste-buffer -p, task dispatch repo + surfacing",
436
437
  "full shard schema parity with main DB",
437
438
  "ensure orchestration metrics CLI exits",
@@ -455,8 +456,7 @@
455
456
  "enable GoTrue email auth by default in setup template",
456
457
  "intercom signal path in packaged source — ships to customers on npm install",
457
458
  "intercom signal path + registry consolidated to update.askexe.com",
458
- "4 customer P2 bugs — CLI passthrough + agent casing + clipboard (#50)",
459
- "MCP pressure eviction evicts ONE session, not all"
459
+ "4 customer P2 bugs — CLI passthrough + agent casing + clipboard (#50)"
460
460
  ],
461
461
  "security": [
462
462
  "fix shell injection, SSRF, socket leaks, backup validation",
@@ -473,6 +473,11 @@
473
473
  "fix 4 pricing tier bypass vulnerabilities (audit F1-F4)"
474
474
  ],
475
475
  "other": [
476
+ "bump to v0.9.203",
477
+ "capture orchestration measurement blind spots",
478
+ "review push event orchestration roadmap",
479
+ "add full 4-phase DB Authority roadmap to ARCHITECTURE.md",
480
+ "update release-notes for v0.9.202 + remove stale lock file",
476
481
  "bump to v0.9.202",
477
482
  "bump to v0.9.201",
478
483
  "bump to v0.9.200",
@@ -492,12 +497,7 @@
492
497
  "bump to 0.9.192",
493
498
  "bump to 0.9.191",
494
499
  "bump to 0.9.189",
495
- "bump to 0.9.188 — HYGO stack-update blockers fixed",
496
- "bump to 0.9.187",
497
- "bump to 0.9.186 — cross-session dispatch fix",
498
- "release: bump exe-os image to v0.9.185 in stack manifest",
499
- "bump to 0.9.185",
500
- "bump to 0.9.184"
500
+ "bump to 0.9.188 — HYGO stack-update blockers fixed"
501
501
  ],
502
502
  "migration_notes": []
503
503
  }
File without changes