@askexenow/exe-os 0.9.141 → 0.9.142

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.
Files changed (94) hide show
  1. package/dist/bin/bulk-sync-postgres.js +1 -1
  2. package/dist/bin/cleanup-stale-review-tasks.js +1 -1
  3. package/dist/bin/cli.js +2 -2
  4. package/dist/bin/exe-boot.js +1 -1
  5. package/dist/bin/exe-cloud.js +1 -1
  6. package/dist/bin/exe-dispatch.js +1 -1
  7. package/dist/bin/exe-gateway.js +4 -4
  8. package/dist/bin/exe-heartbeat.js +1 -1
  9. package/dist/bin/exe-launch-agent.js +15 -2
  10. package/dist/bin/exe-pending-messages.js +2 -2
  11. package/dist/bin/exe-pending-notifications.js +1 -1
  12. package/dist/bin/exe-pending-reviews.js +1 -1
  13. package/dist/bin/exe-review.js +1 -1
  14. package/dist/bin/exe-session-cleanup.js +4 -4
  15. package/dist/bin/exe-settings.js +1 -1
  16. package/dist/bin/exe-status.js +2 -2
  17. package/dist/bin/git-sweep.js +2 -2
  18. package/dist/bin/intercom-check.js +2 -2
  19. package/dist/bin/scan-tasks.js +1 -1
  20. package/dist/bin/setup.js +1 -1
  21. package/dist/{capacity-monitor-ZIAX3FBS.js → capacity-monitor-D3RGDLMN.js} +2 -2
  22. package/dist/{catchup-brief-GYZWGUDP.js → catchup-brief-LD2QLE2D.js} +1 -1
  23. package/dist/{chunk-NTALKXBR.js → chunk-25QUV6FU.js} +2 -2
  24. package/dist/{chunk-NW4AUWIT.js → chunk-32Z4GK25.js} +2 -2
  25. package/dist/{chunk-CXXGHL7T.js → chunk-4CBBN2XD.js} +123 -34
  26. package/dist/{chunk-K6WORHFF.js → chunk-4YSDLTCT.js} +3 -3
  27. package/dist/{chunk-IBWVMMLN.js → chunk-5PZ3HSGP.js} +44 -34
  28. package/dist/{chunk-EP523LJD.js → chunk-7BPUBHGW.js} +1 -1
  29. package/dist/{chunk-Y3JNBCZI.js → chunk-AOJHEMHE.js} +24 -5
  30. package/dist/{chunk-4NKNXOA5.js → chunk-CHXX73NX.js} +2 -2
  31. package/dist/{chunk-P3RKVFBX.js → chunk-CK5ZAMWX.js} +2 -2
  32. package/dist/{chunk-HSJKFTKP.js → chunk-DKWTDULH.js} +2 -2
  33. package/dist/{chunk-QWOQHCRO.js → chunk-E2KEN3PG.js} +1 -1
  34. package/dist/{chunk-T62RXVA4.js → chunk-EENNKZMN.js} +2 -2
  35. package/dist/{chunk-47D4UN72.js → chunk-JMMY24KD.js} +2 -2
  36. package/dist/{chunk-RGKFUMLQ.js → chunk-JSVRX6IW.js} +3 -3
  37. package/dist/{chunk-BBOD5TVX.js → chunk-KCLL5ECT.js} +1 -1
  38. package/dist/{chunk-ENL5P2CU.js → chunk-LFVL3R6H.js} +1 -1
  39. package/dist/{chunk-UEJTDPRA.js → chunk-MRX42FAS.js} +1 -1
  40. package/dist/{chunk-PB5TRWLG.js → chunk-NWUWTV7B.js} +1 -1
  41. package/dist/{chunk-GQNG4MKL.js → chunk-TJI7DMBT.js} +1 -1
  42. package/dist/{chunk-GVGISFMN.js → chunk-UB7E2FEB.js} +1 -1
  43. package/dist/{chunk-EP3OKNTW.js → chunk-UYNFWD54.js} +1 -1
  44. package/dist/{crm-webhook-7654EZEJ.js → crm-webhook-HGUHXI6W.js} +2 -2
  45. package/dist/{cto-delegation-gate-43UJFGMT.js → cto-delegation-gate-RJ5EVOY3.js} +1 -1
  46. package/dist/{daemon-orchestration-NB5HYPXS.js → daemon-orchestration-3E3BIK7E.js} +4 -4
  47. package/dist/gateway/index.js +5 -5
  48. package/dist/{git-task-sweep-ATQQNA7A.js → git-task-sweep-O4OIPQB3.js} +2 -2
  49. package/dist/hooks/bug-report-worker.js +3 -3
  50. package/dist/hooks/codex-stop-task-finalizer.js +3 -3
  51. package/dist/hooks/commit-complete.js +3 -3
  52. package/dist/hooks/ingest.js +1 -1
  53. package/dist/hooks/post-compact.js +1 -1
  54. package/dist/hooks/post-tool-combined.js +1 -1
  55. package/dist/hooks/pre-compact.js +2 -2
  56. package/dist/hooks/pre-tool-use.js +9 -6
  57. package/dist/hooks/prompt-submit.js +3 -3
  58. package/dist/hooks/session-end.js +5 -5
  59. package/dist/hooks/session-start.js +2 -2
  60. package/dist/hooks/stop.js +2 -2
  61. package/dist/hooks/subagent-stop.js +1 -1
  62. package/dist/hooks/summary-worker.js +2 -2
  63. package/dist/index.js +8 -8
  64. package/dist/lib/cloud-sync.js +1 -1
  65. package/dist/lib/exe-daemon.js +63 -11
  66. package/dist/lib/messaging.js +2 -2
  67. package/dist/lib/tasks.js +3 -3
  68. package/dist/lib/tmux-routing.js +1 -1
  69. package/dist/mcp/register-tools.js +15 -15
  70. package/dist/mcp/server.js +15 -15
  71. package/dist/mcp/tools/create-task.js +4 -4
  72. package/dist/mcp/tools/list-tasks.js +4 -4
  73. package/dist/mcp/tools/send-message.js +3 -3
  74. package/dist/mcp/tools/update-task.js +4 -4
  75. package/dist/message-queue-client-2YTGEB5H.js +92 -0
  76. package/dist/{notifications-OXEFBG2D.js → notifications-APKWB63A.js} +1 -1
  77. package/dist/{orchestrator-6ULAKZQP.js → orchestrator-W62CLQLP.js} +2 -2
  78. package/dist/runtime/index.js +3 -3
  79. package/dist/{session-events-5X2SSRXX.js → session-events-SR2WX2X4.js} +2 -2
  80. package/dist/{session-scope-42JIV5KF.js → session-scope-S5DODJU4.js} +2 -2
  81. package/dist/{setup-wizard-MAPYQDKT.js → setup-wizard-H4TZHU36.js} +1 -1
  82. package/dist/{task-enforcement-V2CQEPXS.js → task-enforcement-L7EGD6LJ.js} +1 -1
  83. package/dist/{task-scope-EY3G5623.js → task-scope-QNRAYD7S.js} +1 -1
  84. package/dist/{tasks-crud-FPWY4RZ2.js → tasks-crud-JHHIROCS.js} +1 -1
  85. package/dist/{tasks-review-XDSW3WRG.js → tasks-review-TXMVOOFN.js} +1 -1
  86. package/dist/tui/App.js +7 -7
  87. package/dist/{tui-data-FQ2F5WA3.js → tui-data-65WM7L5Q.js} +1 -1
  88. package/dist/{workflow-engine-6QPTYDQI.js → workflow-engine-PK2TC7UE.js} +2 -2
  89. package/package.json +1 -1
  90. package/release-notes.json +104 -100
  91. /package/dist/{chunk-T7SJCDG3.js → chunk-72O7CSKA.js} +0 -0
  92. /package/dist/{chunk-CU2XXD5I.js → chunk-UYFPFO6Q.js} +0 -0
  93. /package/dist/{chunk-XFBKSNNI.js → chunk-XRPIVNFS.js} +0 -0
  94. /package/dist/{exe-key-KHNNQGSZ.js → exe-key-KNR4LT2L.js} +0 -0
@@ -0,0 +1,92 @@
1
+ import "./chunk-KFQGP6VL.js";
2
+
3
+ // src/lib/message-queue-client.ts
4
+ import { existsSync, appendFileSync, readFileSync, unlinkSync, renameSync, mkdirSync } from "fs";
5
+ import path from "path";
6
+ import os from "os";
7
+ var EXE_DIR = path.join(os.homedir(), ".exe-os");
8
+ var QUEUE_PATH = path.join(EXE_DIR, "message-queue.jsonl");
9
+ var PROCESSING_PATH = QUEUE_PATH + ".processing";
10
+ function ensureDir() {
11
+ if (!existsSync(EXE_DIR)) mkdirSync(EXE_DIR, { recursive: true });
12
+ }
13
+ function enqueueMessage(entry) {
14
+ ensureDir();
15
+ appendFileSync(QUEUE_PATH, JSON.stringify(entry) + "\n");
16
+ }
17
+ function claimMessageQueue() {
18
+ if (!existsSync(QUEUE_PATH)) return null;
19
+ try {
20
+ const content = readFileSync(QUEUE_PATH, "utf8").trim();
21
+ if (!content) {
22
+ try {
23
+ unlinkSync(QUEUE_PATH);
24
+ } catch {
25
+ }
26
+ return null;
27
+ }
28
+ } catch {
29
+ return null;
30
+ }
31
+ try {
32
+ renameSync(QUEUE_PATH, PROCESSING_PATH);
33
+ } catch {
34
+ return null;
35
+ }
36
+ const entries = [];
37
+ try {
38
+ const lines = readFileSync(PROCESSING_PATH, "utf8").trim().split("\n");
39
+ for (const line of lines) {
40
+ if (!line.trim()) continue;
41
+ try {
42
+ entries.push(JSON.parse(line));
43
+ } catch {
44
+ }
45
+ }
46
+ } catch {
47
+ return null;
48
+ }
49
+ if (entries.length === 0) {
50
+ try {
51
+ unlinkSync(PROCESSING_PATH);
52
+ } catch {
53
+ }
54
+ return null;
55
+ }
56
+ return { leasePath: PROCESSING_PATH, entries };
57
+ }
58
+ function ackMessageQueue(leasePath) {
59
+ try {
60
+ unlinkSync(leasePath);
61
+ } catch {
62
+ }
63
+ }
64
+ async function sendMessageViaDaemon(entry) {
65
+ if (process.env.EXE_IS_DAEMON === "1") {
66
+ enqueueMessage(entry);
67
+ return false;
68
+ }
69
+ try {
70
+ const { sendDaemonRequest, isClientConnected } = await import("./lib/exe-daemon-client.js");
71
+ if (!isClientConnected()) {
72
+ enqueueMessage(entry);
73
+ return false;
74
+ }
75
+ const response = await sendDaemonRequest({
76
+ type: "send-message",
77
+ entry
78
+ });
79
+ if (response.ok) return true;
80
+ enqueueMessage(entry);
81
+ return false;
82
+ } catch {
83
+ enqueueMessage(entry);
84
+ return false;
85
+ }
86
+ }
87
+ export {
88
+ ackMessageQueue,
89
+ claimMessageQueue,
90
+ enqueueMessage,
91
+ sendMessageViaDaemon
92
+ };
@@ -8,7 +8,7 @@ import {
8
8
  migrateJsonNotifications,
9
9
  readUnreadNotifications,
10
10
  writeNotification
11
- } from "./chunk-Y3JNBCZI.js";
11
+ } from "./chunk-AOJHEMHE.js";
12
12
  import "./chunk-2OG5NAO2.js";
13
13
  import "./chunk-NEAHEC5G.js";
14
14
  import "./chunk-KRLOFIPI.js";
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  MultiAgentOrchestrator
3
- } from "./chunk-EP3OKNTW.js";
3
+ } from "./chunk-UYNFWD54.js";
4
4
  import "./chunk-RZK7BZHP.js";
5
- import "./chunk-Y3JNBCZI.js";
5
+ import "./chunk-AOJHEMHE.js";
6
6
  import "./chunk-2OG5NAO2.js";
7
7
  import "./chunk-NEAHEC5G.js";
8
8
  import "./chunk-KRLOFIPI.js";
@@ -3,10 +3,10 @@ import {
3
3
  SessionManager,
4
4
  checkGitSafety,
5
5
  targetsMainBranch
6
- } from "../chunk-K6WORHFF.js";
6
+ } from "../chunk-4YSDLTCT.js";
7
7
  import {
8
8
  MultiAgentOrchestrator
9
- } from "../chunk-EP3OKNTW.js";
9
+ } from "../chunk-UYNFWD54.js";
10
10
  import {
11
11
  createQuietRenderer,
12
12
  createTerminalRenderer,
@@ -57,7 +57,7 @@ import {
57
57
  matchToolPattern
58
58
  } from "../chunk-HF25XPZE.js";
59
59
  import "../chunk-RZK7BZHP.js";
60
- import "../chunk-Y3JNBCZI.js";
60
+ import "../chunk-AOJHEMHE.js";
61
61
  import "../chunk-2OG5NAO2.js";
62
62
  import "../chunk-NEAHEC5G.js";
63
63
  import "../chunk-KRLOFIPI.js";
@@ -2,9 +2,9 @@ import {
2
2
  ensureSessionEventsTable,
3
3
  listRecentSessionEvents,
4
4
  recordSessionEvent
5
- } from "./chunk-BBOD5TVX.js";
5
+ } from "./chunk-KCLL5ECT.js";
6
6
  import "./chunk-TOR5ZPKF.js";
7
- import "./chunk-Y3JNBCZI.js";
7
+ import "./chunk-AOJHEMHE.js";
8
8
  import "./chunk-2OG5NAO2.js";
9
9
  import "./chunk-NEAHEC5G.js";
10
10
  import "./chunk-KRLOFIPI.js";
@@ -3,9 +3,9 @@ import {
3
3
  findSessionForProject,
4
4
  getSessionProject,
5
5
  init_session_scope
6
- } from "./chunk-EP523LJD.js";
6
+ } from "./chunk-7BPUBHGW.js";
7
7
  import "./chunk-TOR5ZPKF.js";
8
- import "./chunk-Y3JNBCZI.js";
8
+ import "./chunk-AOJHEMHE.js";
9
9
  import "./chunk-2OG5NAO2.js";
10
10
  import "./chunk-NEAHEC5G.js";
11
11
  import "./chunk-KRLOFIPI.js";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  runSetupWizard,
3
3
  validateModel
4
- } from "./chunk-CU2XXD5I.js";
4
+ } from "./chunk-UYFPFO6Q.js";
5
5
  import "./chunk-4JZNDVZH.js";
6
6
  import "./chunk-VA42PIIY.js";
7
7
  import "./chunk-FZ23OZL3.js";
@@ -3,7 +3,7 @@ import {
3
3
  init_tmux_routing,
4
4
  sendIntercom,
5
5
  updateTaskStatus
6
- } from "./chunk-Y3JNBCZI.js";
6
+ } from "./chunk-AOJHEMHE.js";
7
7
  import "./chunk-2OG5NAO2.js";
8
8
  import "./chunk-NEAHEC5G.js";
9
9
  import "./chunk-KRLOFIPI.js";
@@ -3,7 +3,7 @@ import {
3
3
  init_task_scope,
4
4
  sessionScopeFilter,
5
5
  strictSessionScopeFilter
6
- } from "./chunk-Y3JNBCZI.js";
6
+ } from "./chunk-AOJHEMHE.js";
7
7
  import "./chunk-2OG5NAO2.js";
8
8
  import "./chunk-NEAHEC5G.js";
9
9
  import "./chunk-KRLOFIPI.js";
@@ -13,7 +13,7 @@ import {
13
13
  slugify,
14
14
  updateTaskStatus,
15
15
  writeCheckpoint
16
- } from "./chunk-Y3JNBCZI.js";
16
+ } from "./chunk-AOJHEMHE.js";
17
17
  import "./chunk-2OG5NAO2.js";
18
18
  import "./chunk-NEAHEC5G.js";
19
19
  import "./chunk-KRLOFIPI.js";
@@ -9,7 +9,7 @@ import {
9
9
  init_tasks_review,
10
10
  isStale,
11
11
  listPendingReviews
12
- } from "./chunk-Y3JNBCZI.js";
12
+ } from "./chunk-AOJHEMHE.js";
13
13
  import "./chunk-2OG5NAO2.js";
14
14
  import "./chunk-NEAHEC5G.js";
15
15
  import "./chunk-KRLOFIPI.js";
package/dist/tui/App.js CHANGED
@@ -7,7 +7,7 @@ import "../chunk-WZDI6UJ6.js";
7
7
  import {
8
8
  init_task_scope,
9
9
  sessionScopeFilter
10
- } from "../chunk-Y3JNBCZI.js";
10
+ } from "../chunk-AOJHEMHE.js";
11
11
  import "../chunk-2OG5NAO2.js";
12
12
  import "../chunk-NEAHEC5G.js";
13
13
  import "../chunk-KRLOFIPI.js";
@@ -7399,7 +7399,7 @@ function useOrchestrator(enabled = true) {
7399
7399
  let cancelled = false;
7400
7400
  async function init() {
7401
7401
  try {
7402
- const { MultiAgentOrchestrator } = await import("../orchestrator-6ULAKZQP.js");
7402
+ const { MultiAgentOrchestrator } = await import("../orchestrator-W62CLQLP.js");
7403
7403
  const { getCoordinatorName, isCoordinatorRole, loadEmployees } = await import("../lib/employees.js");
7404
7404
  const { isExeSession } = await import("../lib/tmux-routing.js");
7405
7405
  const { listTmuxSessions, inTmux } = await import("../lib/tmux-status.js");
@@ -7440,7 +7440,7 @@ function useOrchestrator(enabled = true) {
7440
7440
  setTotalInProgress(health.totalInProgress);
7441
7441
  try {
7442
7442
  const { getClient } = await import("../lib/database.js");
7443
- const { sessionScopeFilter: sessionScopeFilter2 } = await import("../task-scope-EY3G5623.js");
7443
+ const { sessionScopeFilter: sessionScopeFilter2 } = await import("../task-scope-QNRAYD7S.js");
7444
7444
  const client = getClient();
7445
7445
  const uoScope = sessionScopeFilter2();
7446
7446
  const result = await client.execute({
@@ -7472,7 +7472,7 @@ function useOrchestrator(enabled = true) {
7472
7472
  const spawnSession = useCallback5(
7473
7473
  async (agentId) => {
7474
7474
  try {
7475
- const { createTaskCore } = await import("../tasks-crud-FPWY4RZ2.js");
7475
+ const { createTaskCore } = await import("../tasks-crud-JHHIROCS.js");
7476
7476
  const { ensureEmployee } = await import("../lib/tmux-routing.js");
7477
7477
  const { getCoordinatorName } = await import("../lib/employees.js");
7478
7478
  await createTaskCore({
@@ -8095,7 +8095,7 @@ function TasksView({ onBack }) {
8095
8095
  const { withTrace } = await import("../telemetry-SPVGPKU7.js");
8096
8096
  return withTrace("tui.tasks.loadTasks", async () => {
8097
8097
  try {
8098
- const { loadTaskList } = await import("../tui-data-FQ2F5WA3.js");
8098
+ const { loadTaskList } = await import("../tui-data-65WM7L5Q.js");
8099
8099
  const tasks = await loadTaskList();
8100
8100
  setAllTasks(
8101
8101
  tasks.map((task) => ({
@@ -8928,7 +8928,7 @@ function TeamView({ onBack, onViewSessions }) {
8928
8928
  let projectsByEmployee = /* @__PURE__ */ new Map();
8929
8929
  let currentTaskByEmployee = /* @__PURE__ */ new Map();
8930
8930
  try {
8931
- const { loadTeamBadgeCounts, loadTeamDetailMetrics } = await import("../tui-data-FQ2F5WA3.js");
8931
+ const { loadTeamBadgeCounts, loadTeamDetailMetrics } = await import("../tui-data-65WM7L5Q.js");
8932
8932
  setBadgeInFlight(true);
8933
8933
  const badgeCountsPromise = loadTeamBadgeCounts();
8934
8934
  const detailsPromise = loadTeamDetailMetrics(roster.map((emp) => emp.name));
@@ -9294,7 +9294,7 @@ function WikiView({ onBack }) {
9294
9294
  }
9295
9295
  setSearchLoading(true);
9296
9296
  try {
9297
- const { searchWikiMemoryRows } = await import("../tui-data-FQ2F5WA3.js");
9297
+ const { searchWikiMemoryRows } = await import("../tui-data-65WM7L5Q.js");
9298
9298
  setSearchResults(await searchWikiMemoryRows(query));
9299
9299
  } catch {
9300
9300
  setSearchResults([]);
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  init_task_scope,
3
3
  sessionScopeFilter
4
- } from "./chunk-Y3JNBCZI.js";
4
+ } from "./chunk-AOJHEMHE.js";
5
5
  import "./chunk-2OG5NAO2.js";
6
6
  import "./chunk-NEAHEC5G.js";
7
7
  import "./chunk-KRLOFIPI.js";
@@ -10,8 +10,8 @@ import {
10
10
  persistWorkflows,
11
11
  runWorkflow,
12
12
  startWorkflow
13
- } from "./chunk-QWOQHCRO.js";
14
- import "./chunk-T7SJCDG3.js";
13
+ } from "./chunk-E2KEN3PG.js";
14
+ import "./chunk-72O7CSKA.js";
15
15
  import "./chunk-KFQGP6VL.js";
16
16
  export {
17
17
  advanceWorkflow,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@askexenow/exe-os",
3
- "version": "0.9.141",
3
+ "version": "0.9.142",
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,6 +1,109 @@
1
1
  {
2
- "current": "0.9.141",
2
+ "current": "0.9.142",
3
3
  "notes": {
4
+ "0.9.142": {
5
+ "version": "0.9.142",
6
+ "date": "2026-05-26",
7
+ "features": [
8
+ "close_task auto-merges PR + pulls main + builds + prunes + respawns",
9
+ "auto-respawn Tom after close_task if more tasks queued",
10
+ "message WAL fallback — messages survive daemon downtime",
11
+ "entity type hierarchy — subtypes with rollup queries (PG-2)",
12
+ "temporal validity windows for graph queries (PG-3)",
13
+ "backup restore CLI + restoreBackup function",
14
+ "ESLint setup + dependency hygiene + any type reduction",
15
+ "config(action=\"hire\") MCP tool — COO can hire employees directly",
16
+ "GM (General Manager) role template + hiring guidance",
17
+ "merge gate warning in close_task — catches unmerged PRs",
18
+ "behavior hygiene — platform procedure + COO identity + company procedure",
19
+ "MCP auto-reconnect to daemon — survives deploy restarts transparently",
20
+ "event-driven notifications — stop polling managers, let task state drive everything",
21
+ "MCP disconnect tracker + daemon observability",
22
+ "MCP lifecycle logging to file — FULL transparency on every disconnect",
23
+ "automatic P0 bug fixing — daemon auto-dispatch + GitHub Actions fallback",
24
+ "enforce worktrees for engineer sessions — prevent direct main commits",
25
+ "multi-device coordination — routing, handoff, device status",
26
+ "hook tamper protection — SHA-256 manifest + verification before spawn",
27
+ "governed collaborative memory — visibility tags + write governance",
28
+ "cache-sharing protocol — pub/sub memory bus for inter-agent sharing",
29
+ "multi-modal memory — media attachments on memories",
30
+ "comprehensive \"last 20%\" integration tests + audit_trail read path",
31
+ "wire memory poisoning defense into writeMemory() pipeline",
32
+ "memory poisoning defense — trust levels, anomaly detection, quarantine"
33
+ ],
34
+ "fixes": [
35
+ "prune old worktree on close_task before respawning fresh",
36
+ "exe-launch-agent resolves multi-instance names — tom2/tom3 no longer rejected",
37
+ "cross-device sync dedup — cooldown key prevents duplicate pushes",
38
+ "merge gate checks branch name not git author — was silently passing",
39
+ "resume_employee uses autoInstance — spawns tom2/tom3 for parallel",
40
+ "security hardening — fail-closed behavior auth gates",
41
+ "send_message intercom uses force:true — bypass 5-min debounce",
42
+ "global session cap 10→50 — match MCP session cap",
43
+ "/exe-call ALWAYS fires + tmux send-keys blocked for ALL agents",
44
+ "SIGTERM graceful shutdown — remove process.exit(0) from initMetrics",
45
+ "stale task escalation — surface alive-but-stalled agents to COO",
46
+ "cloud sync upsert + entity type hierarchy + temporal validity + file_copy security",
47
+ "daemon memory leak + duplicate watchdog + HTTP body limit + WAL flush",
48
+ "heap pressure alarm was false positive — compared heapUsed/heapTotal instead of heapUsed/heapLimit",
49
+ "strengthen scoped SQL audit — cover UPDATE/INSERT, expand exemptions",
50
+ "hard block tmux send-keys for non-coordinator agents",
51
+ "MCP disconnect procedure — explicitly block tmux send-keys workaround",
52
+ "file_copy MCP tool — path boundary enforcement + symlink traversal block",
53
+ "cloud sync task pull uses ON CONFLICT upsert with updated_at guard",
54
+ "multi-instance Tom dispatch — create_task fans out to tom2, tom3",
55
+ "atomic writes for agent-config.json, roster (orchestration + rename)",
56
+ "atomic JSON writes + config.json corruption recovery",
57
+ "boot poll timeout no longer fails dispatch — session exists, task pending",
58
+ "master key clobber guard + COO naming in user-facing strings",
59
+ "MCP port retry + instant embed skip when OOM marker set"
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
+ "publish v0.9.141",
77
+ "ops: journalctl rotation + certbot expiry alerting",
78
+ "revert: daemon heap back to 33% of RAM — no artificial cap",
79
+ "v0.9.140 publish + heap cap 4GB (was 33% unbounded)",
80
+ "PG-1 cross-repo entity federation design document",
81
+ "add lint step + automated npm publish workflow",
82
+ "audit: scoped SQL + package budget + TUI vendored + TODO classification",
83
+ "add full readiness audit evidence",
84
+ "roadmap: Cross-Repo Ontology — Palantir-level graph (PG-1 through PG-10)",
85
+ "capture mcp restart self-healing roadmap",
86
+ "Enforce chain of command task review parity",
87
+ "document raw SQL fallback in orchestrator auto-approve path",
88
+ "Finalize orchestration rollout fixes",
89
+ "Scope device governance task queries",
90
+ "bump v0.9.138 — 7 critical bug fixes, 10 features, 16 commits",
91
+ "bump v0.9.137 — Memanto typed schema, push notifications, lazy consolidation",
92
+ "bump v0.9.136 — daemon OOM fix, process monitor, auto-notify reviewer",
93
+ "bump v0.9.135 — code debt cleanup, 28 new tests, full observability",
94
+ "Codex MCP regression tests (18) + DB singleton integration tests (10)",
95
+ "release notes for v0.9.134",
96
+ "benchmark score entry for f95b862",
97
+ "add GitHub Actions CI pipeline — build + test on push",
98
+ "gitignore GitHub workflows — add via web UI instead",
99
+ "remove ci.yml — GitHub token lacks workflow scope, will add via web UI",
100
+ "gitignore — add dist-next, db.sqlite, .wrangler; remove temp scripts"
101
+ ],
102
+ "migration_notes": [
103
+ "If daemon goes down, agents will now fail instead of silently",
104
+ "exe-daemon.ts kills old embed.pid process and cleans up"
105
+ ]
106
+ },
4
107
  "0.9.141": {
5
108
  "version": "0.9.141",
6
109
  "date": "2026-05-26",
@@ -408,105 +511,6 @@
408
511
  "If daemon goes down, agents will now fail instead of silently",
409
512
  "exe-daemon.ts kills old embed.pid process and cleans up"
410
513
  ]
411
- },
412
- "0.9.137": {
413
- "version": "0.9.137",
414
- "date": "2026-05-21",
415
- "features": [
416
- "RecMem lazy consolidation — skip clusters < 3 memories",
417
- "Memanto typed semantic schema — 13 memory types with kind-aware retrieval",
418
- "push notifications — Telegram + email on task completion and daemon crash",
419
- "auto-notify reviewer on task completion + file_copy MCP tool",
420
- "daemon process monitor — CPU tracking, orphan detection, high-CPU alerting",
421
- "Hygo integration — workflow engine, Asana connector, wiki ACL, GoTrue auth, unified query",
422
- "routing audit log + daemon health log — full observability for session routing and daemon lifecycle",
423
- "proxy unified cloud routes through api router",
424
- "add typed apiWatchdog config for daemon API auto-recovery",
425
- "wire reflection layer into production — schema, search, daemon",
426
- "wire memory cards + reflection into BEAM benchmark harness",
427
- "standalone harnesses for MemBench, REALTALK, MemoryArena",
428
- "standalone benchmark harnesses for LongMemEval, LoCoMo, BEAM",
429
- "multi-product support for bug reports and feature requests",
430
- "memory reflection layer + sandboxed BEAM benchmark harness",
431
- "P2 feature batch — orchestration, retrieval, conflict resolution",
432
- "P1 feature batch — 8 memory & orchestration improvements",
433
- "separate badge from detail fetch pipeline with badgeInFlight flag",
434
- "per-agent MCP scoping via set_agent_config",
435
- "flip MCP default to consolidated (19 tools) — legacy deprecated",
436
- "behavior audit trail — created_by, device_id, session tracking",
437
- "detailed filing steps for bugs + feature requests in platform procedures",
438
- "document five layers — when to use platform/company/identity/behavior/memory",
439
- "customer-facing support procedures — file bugs, check status, get fixes",
440
- "add update lifecycle + first install procedures to platform procedures"
441
- ],
442
- "fixes": [
443
- "daemon OOM crash — cloud-sync exponential backoff + circuit breaker + heap monitoring",
444
- "replace hardcoded agent name→role map with dynamic roster lookup",
445
- "add logging to 45 silent catches — tasks.ts, cloud-sync.ts, exe-daemon.ts",
446
- "test regressions — backward-compat exports, test fixture schema, config defaults",
447
- "upgrade commit discipline to p0 — one track = one commit, never batch",
448
- "use consolidated mcp boot prompt",
449
- "auto-start agents after spawn — no more idle prompt",
450
- "move atomic swap from build to deploy — builds never disrupt daemon",
451
- "disable MCP session TTL — sessions live forever until daemon restart",
452
- "complete DB safety suite — auto-restore, write drain, pre-restart backup",
453
- "WAL checkpoint on shutdown + integrity check on startup",
454
- "warn when caller session unknown in create_task — helps diagnose scope bugs",
455
- "route all employee spawns through exe-launch-agent for session-aware MCP",
456
- "4 customer audit bugs — honest feature status, auto-approve disabled, visibility TODO",
457
- "archive consolidated source memories — stop search inflation",
458
- "wire Ebbinghaus strength into vector search + type definition",
459
- "v0.9.133 — session routing, Codex MCP compat, 12 bug fixes from customer audit",
460
- "bind api router analytics dataset in wrangler",
461
- "daemon watchdog uses typed config, wire startup call, fix tsc warnings",
462
- "tasks-crud session isolation uses ALS instead of stale process.env",
463
- "license gate re-checks key file if missing at boot — prevents permanent lockout after npm update",
464
- "enable lean MCP for all spawned agent sessions — prevents OAuth browser popups",
465
- "hard session isolation gate in create_task — reject cross-scope dispatch",
466
- "code quality audit — DB singleton test + silent catch logging",
467
- "enable tsup splitting — shared DB module eliminates \"client not initialized\" after daemon restart"
468
- ],
469
- "security": [
470
- "release: stack v0.9.8 — security hardening + Hygo bug fixes",
471
- "add webhook HMAC-SHA256 validation + disable query param auth in prod",
472
- "pin GitHub Actions to SHAs, update jose to 6.2.3",
473
- "harden support intake against abuse and data leakage",
474
- "bump to v0.9.22 — Codex MCP parity + customer bug fixes + security audit remediation",
475
- "audit: pre-hygo exe-gateway security report",
476
- "add SECURITY.md — trust document for pre-install security evaluation",
477
- "fix 4 pricing tier bypass vulnerabilities (audit F1-F4)"
478
- ],
479
- "other": [
480
- "bump v0.9.137 — Memanto typed schema, push notifications, lazy consolidation",
481
- "bump v0.9.136 — daemon OOM fix, process monitor, auto-notify reviewer",
482
- "bump v0.9.135 — code debt cleanup, 28 new tests, full observability",
483
- "Codex MCP regression tests (18) + DB singleton integration tests (10)",
484
- "release notes for v0.9.134",
485
- "benchmark score entry for f95b862",
486
- "add GitHub Actions CI pipeline — build + test on push",
487
- "gitignore GitHub workflows — add via web UI instead",
488
- "remove ci.yml — GitHub token lacks workflow scope, will add via web UI",
489
- "gitignore — add dist-next, db.sqlite, .wrangler; remove temp scripts",
490
- "accumulated fixes — hooks, adapters, config, cloud-sync, rate-limiter, CI pipeline",
491
- "stack manifest v0.9.9 — session routing, DB safety, Codex MCP, 20 fixes",
492
- "protect api router cloud migration routes",
493
- "Proxy cloud sync routes through api router",
494
- "bump v0.9.132",
495
- "bump v0.9.131 — lean MCP for agents, session isolation gate, card/reflection pipeline",
496
- "bump v0.9.130 — hard session isolation gate",
497
- "bump v0.9.129",
498
- "bump v0.9.128 — shared DB module fix",
499
- "bump v0.9.127 — DB init before MCP session tools",
500
- "bump v0.9.126 — revert to port 48739",
501
- "bump v0.9.125",
502
- "bump v0.9.120 — fixed MCP port 48700 with auto-recovery",
503
- "bump v0.9.123 — multi-product support for bug/feature reports",
504
- "rewrite runtime architecture — exe-os is Mode 1 stopgap, exe-build is the product"
505
- ],
506
- "migration_notes": [
507
- "If daemon goes down, agents will now fail instead of silently",
508
- "exe-daemon.ts kills old embed.pid process and cleans up"
509
- ]
510
514
  }
511
515
  }
512
516
  }
File without changes
File without changes
File without changes