@askexenow/exe-os 0.9.87 → 0.9.89

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 (102) hide show
  1. package/deploy/compose/docker-compose.yml +3 -3
  2. package/dist/bin/age-ontology-load.js +8 -2
  3. package/dist/bin/agentic-ontology-backfill.js +11 -0
  4. package/dist/bin/agentic-reflection-backfill.js +11 -0
  5. package/dist/bin/agentic-semantic-label.js +11 -0
  6. package/dist/bin/backfill-conversations.js +12 -0
  7. package/dist/bin/backfill-responses.js +12 -0
  8. package/dist/bin/backfill-vectors.js +12 -0
  9. package/dist/bin/bulk-sync-postgres.js +29 -1
  10. package/dist/bin/cc-doctor.js +3 -2
  11. package/dist/bin/cleanup-stale-review-tasks.js +12 -0
  12. package/dist/bin/cli.js +170 -15
  13. package/dist/bin/exe-agent.js +1 -0
  14. package/dist/bin/exe-assign.js +12 -0
  15. package/dist/bin/exe-boot.js +139 -4
  16. package/dist/bin/exe-call.js +2 -0
  17. package/dist/bin/exe-cloud.js +138 -3
  18. package/dist/bin/exe-dispatch.js +12 -1
  19. package/dist/bin/exe-doctor.js +12 -0
  20. package/dist/bin/exe-export-behaviors.js +11 -0
  21. package/dist/bin/exe-forget.js +12 -0
  22. package/dist/bin/exe-gateway.js +132 -35
  23. package/dist/bin/exe-healthcheck.js +2 -1
  24. package/dist/bin/exe-heartbeat.js +12 -0
  25. package/dist/bin/exe-kill.js +11 -0
  26. package/dist/bin/exe-launch-agent.js +11 -0
  27. package/dist/bin/exe-new-employee.js +4 -2
  28. package/dist/bin/exe-pending-messages.js +11 -0
  29. package/dist/bin/exe-pending-notifications.js +12 -0
  30. package/dist/bin/exe-pending-reviews.js +12 -0
  31. package/dist/bin/exe-rename.js +12 -0
  32. package/dist/bin/exe-review.js +12 -0
  33. package/dist/bin/exe-search.js +12 -0
  34. package/dist/bin/exe-session-cleanup.js +12 -1
  35. package/dist/bin/exe-settings.js +3 -0
  36. package/dist/bin/exe-start-codex.js +13 -2
  37. package/dist/bin/exe-start-opencode.js +13 -2
  38. package/dist/bin/exe-status.js +12 -0
  39. package/dist/bin/exe-team.js +12 -0
  40. package/dist/bin/git-sweep.js +12 -1
  41. package/dist/bin/graph-backfill.js +11 -0
  42. package/dist/bin/graph-export.js +11 -0
  43. package/dist/bin/graph-layer-benchmark.js +9 -1
  44. package/dist/bin/intercom-check.js +13 -1
  45. package/dist/bin/list-providers.js +1 -0
  46. package/dist/bin/postgres-agentic-reflection-backfill.js +7 -1
  47. package/dist/bin/postgres-agentic-semantic-backfill.js +7 -1
  48. package/dist/bin/registry-proxy.js +1 -0
  49. package/dist/bin/scan-tasks.js +13 -1
  50. package/dist/bin/setup.js +141 -7
  51. package/dist/bin/shard-migrate.js +11 -0
  52. package/dist/bin/stack-update.js +24 -7
  53. package/dist/bin/update.js +5 -0
  54. package/dist/gateway/index.js +12 -1
  55. package/dist/hooks/bug-report-worker.js +12 -1
  56. package/dist/hooks/codex-stop-task-finalizer.js +12 -1
  57. package/dist/hooks/commit-complete.js +12 -1
  58. package/dist/hooks/error-recall.js +11 -0
  59. package/dist/hooks/ingest.js +11 -0
  60. package/dist/hooks/instructions-loaded.js +11 -0
  61. package/dist/hooks/notification.js +11 -0
  62. package/dist/hooks/post-compact.js +11 -0
  63. package/dist/hooks/post-tool-combined.js +11 -0
  64. package/dist/hooks/pre-compact.js +12 -1
  65. package/dist/hooks/pre-tool-use.js +11 -0
  66. package/dist/hooks/prompt-submit.js +12 -1
  67. package/dist/hooks/session-end.js +12 -1
  68. package/dist/hooks/session-start.js +11 -0
  69. package/dist/hooks/stop.js +11 -0
  70. package/dist/hooks/subagent-stop.js +11 -0
  71. package/dist/hooks/summary-worker.js +137 -3
  72. package/dist/index.js +12 -1
  73. package/dist/lib/cloud-sync.js +136 -2
  74. package/dist/lib/consolidation.js +1 -0
  75. package/dist/lib/database.js +11 -0
  76. package/dist/lib/db.js +11 -0
  77. package/dist/lib/device-registry.js +11 -0
  78. package/dist/lib/employee-templates.js +1 -0
  79. package/dist/lib/exe-daemon.js +771 -49
  80. package/dist/lib/hybrid-search.js +11 -0
  81. package/dist/lib/identity.js +1 -0
  82. package/dist/lib/messaging.js +2 -1
  83. package/dist/lib/reminders.js +1 -0
  84. package/dist/lib/schedules.js +11 -0
  85. package/dist/lib/skill-learning.js +1 -0
  86. package/dist/lib/store.js +11 -0
  87. package/dist/lib/tasks.js +2 -1
  88. package/dist/lib/tmux-routing.js +2 -1
  89. package/dist/lib/token-spend.js +1 -0
  90. package/dist/lib/ws-client.js +8 -0
  91. package/dist/mcp/server.js +613 -27
  92. package/dist/mcp/tools/complete-reminder.js +1 -0
  93. package/dist/mcp/tools/create-reminder.js +1 -0
  94. package/dist/mcp/tools/create-task.js +2 -1
  95. package/dist/mcp/tools/deactivate-behavior.js +1 -0
  96. package/dist/mcp/tools/list-reminders.js +1 -0
  97. package/dist/mcp/tools/list-tasks.js +1 -0
  98. package/dist/mcp/tools/send-message.js +2 -1
  99. package/dist/mcp/tools/update-task.js +2 -1
  100. package/dist/runtime/index.js +12 -1
  101. package/dist/tui/App.js +12 -1
  102. package/package.json +2 -2
@@ -118,6 +118,7 @@ import { z } from "zod";
118
118
  import crypto from "crypto";
119
119
 
120
120
  // src/lib/database.ts
121
+ import { chmodSync as chmodSync2 } from "fs";
121
122
  import { createClient } from "@libsql/client";
122
123
 
123
124
  // src/lib/employees.ts
@@ -118,6 +118,7 @@ import { z } from "zod";
118
118
  import crypto from "crypto";
119
119
 
120
120
  // src/lib/database.ts
121
+ import { chmodSync as chmodSync2 } from "fs";
121
122
  import { createClient } from "@libsql/client";
122
123
 
123
124
  // src/lib/employees.ts
@@ -741,6 +741,7 @@ var init_memory = __esm({
741
741
  });
742
742
 
743
743
  // src/lib/database.ts
744
+ import { chmodSync as chmodSync2 } from "fs";
744
745
  import { createClient } from "@libsql/client";
745
746
  function getClient() {
746
747
  if (!_adapterClient) {
@@ -1093,7 +1094,7 @@ function readQueue() {
1093
1094
  function writeQueue(queue) {
1094
1095
  ensureDir();
1095
1096
  const tmp = `${QUEUE_PATH}.tmp`;
1096
- writeFileSync4(tmp, JSON.stringify(queue, null, 2));
1097
+ writeFileSync4(tmp, JSON.stringify(queue, null, 2), { mode: 384 });
1097
1098
  renameSync3(tmp, QUEUE_PATH);
1098
1099
  }
1099
1100
  function queueIntercom(targetSession, reason) {
@@ -125,6 +125,7 @@ import { z } from "zod";
125
125
  import crypto from "crypto";
126
126
 
127
127
  // src/lib/database.ts
128
+ import { chmodSync as chmodSync2 } from "fs";
128
129
  import { createClient } from "@libsql/client";
129
130
 
130
131
  // src/lib/employees.ts
@@ -118,6 +118,7 @@ import { z } from "zod";
118
118
  import crypto from "crypto";
119
119
 
120
120
  // src/lib/database.ts
121
+ import { chmodSync as chmodSync2 } from "fs";
121
122
  import { createClient } from "@libsql/client";
122
123
 
123
124
  // src/lib/employees.ts
@@ -201,6 +201,7 @@ var init_memory = __esm({
201
201
  });
202
202
 
203
203
  // src/lib/database.ts
204
+ import { chmodSync as chmodSync2 } from "fs";
204
205
  import { createClient } from "@libsql/client";
205
206
  function getClient() {
206
207
  if (!_adapterClient) {
@@ -212,6 +212,7 @@ var init_memory = __esm({
212
212
  });
213
213
 
214
214
  // src/lib/database.ts
215
+ import { chmodSync as chmodSync2 } from "fs";
215
216
  import { createClient } from "@libsql/client";
216
217
  function getClient() {
217
218
  if (!_adapterClient) {
@@ -551,7 +552,7 @@ function readQueue() {
551
552
  function writeQueue(queue) {
552
553
  ensureDir();
553
554
  const tmp = `${QUEUE_PATH}.tmp`;
554
- writeFileSync3(tmp, JSON.stringify(queue, null, 2));
555
+ writeFileSync3(tmp, JSON.stringify(queue, null, 2), { mode: 384 });
555
556
  renameSync3(tmp, QUEUE_PATH);
556
557
  }
557
558
  function queueIntercom(targetSession, reason) {
@@ -442,6 +442,7 @@ var init_memory = __esm({
442
442
  });
443
443
 
444
444
  // src/lib/database.ts
445
+ import { chmodSync as chmodSync2 } from "fs";
445
446
  import { createClient } from "@libsql/client";
446
447
  function getClient() {
447
448
  if (!_adapterClient) {
@@ -856,7 +857,7 @@ function readQueue() {
856
857
  function writeQueue(queue) {
857
858
  ensureDir();
858
859
  const tmp = `${QUEUE_PATH}.tmp`;
859
- writeFileSync4(tmp, JSON.stringify(queue, null, 2));
860
+ writeFileSync4(tmp, JSON.stringify(queue, null, 2), { mode: 384 });
860
861
  renameSync3(tmp, QUEUE_PATH);
861
862
  }
862
863
  function queueIntercom(targetSession, reason) {
@@ -829,7 +829,7 @@ function readQueue() {
829
829
  function writeQueue(queue) {
830
830
  ensureDir();
831
831
  const tmp = `${QUEUE_PATH}.tmp`;
832
- writeFileSync4(tmp, JSON.stringify(queue, null, 2));
832
+ writeFileSync4(tmp, JSON.stringify(queue, null, 2), { mode: 384 });
833
833
  renameSync3(tmp, QUEUE_PATH);
834
834
  }
835
835
  function queueIntercom(targetSession, reason) {
@@ -2271,6 +2271,7 @@ __export(database_exports, {
2271
2271
  isInitialized: () => isInitialized,
2272
2272
  setExternalClient: () => setExternalClient
2273
2273
  });
2274
+ import { chmodSync as chmodSync2 } from "fs";
2274
2275
  import { createClient } from "@libsql/client";
2275
2276
  async function initDatabase(config) {
2276
2277
  if (_walCheckpointTimer) {
@@ -2312,6 +2313,16 @@ async function initDatabase(config) {
2312
2313
  if (process.env.DATABASE_URL && process.env.EXE_USE_POSTGRES === "1") {
2313
2314
  _adapterClient = await createPrismaDbAdapter(_resilientClient);
2314
2315
  }
2316
+ try {
2317
+ chmodSync2(config.dbPath, 384);
2318
+ for (const suffix of ["-wal", "-shm"]) {
2319
+ try {
2320
+ chmodSync2(config.dbPath + suffix, 384);
2321
+ } catch {
2322
+ }
2323
+ }
2324
+ } catch {
2325
+ }
2315
2326
  }
2316
2327
  function isInitialized() {
2317
2328
  return _adapterClient !== null || _client !== null;
package/dist/tui/App.js CHANGED
@@ -824,7 +824,7 @@ function readQueue() {
824
824
  function writeQueue(queue) {
825
825
  ensureDir();
826
826
  const tmp = `${QUEUE_PATH}.tmp`;
827
- writeFileSync3(tmp, JSON.stringify(queue, null, 2));
827
+ writeFileSync3(tmp, JSON.stringify(queue, null, 2), { mode: 384 });
828
828
  renameSync2(tmp, QUEUE_PATH);
829
829
  }
830
830
  function queueIntercom(targetSession, reason) {
@@ -2523,6 +2523,7 @@ __export(database_exports, {
2523
2523
  isInitialized: () => isInitialized,
2524
2524
  setExternalClient: () => setExternalClient
2525
2525
  });
2526
+ import { chmodSync as chmodSync2 } from "fs";
2526
2527
  import { createClient } from "@libsql/client";
2527
2528
  async function initDatabase(config) {
2528
2529
  if (_walCheckpointTimer) {
@@ -2564,6 +2565,16 @@ async function initDatabase(config) {
2564
2565
  if (process.env.DATABASE_URL && process.env.EXE_USE_POSTGRES === "1") {
2565
2566
  _adapterClient = await createPrismaDbAdapter(_resilientClient);
2566
2567
  }
2568
+ try {
2569
+ chmodSync2(config.dbPath, 384);
2570
+ for (const suffix of ["-wal", "-shm"]) {
2571
+ try {
2572
+ chmodSync2(config.dbPath + suffix, 384);
2573
+ } catch {
2574
+ }
2575
+ }
2576
+ } catch {
2577
+ }
2567
2578
  }
2568
2579
  function isInitialized() {
2569
2580
  return _adapterClient !== null || _client !== null;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@askexenow/exe-os",
3
- "version": "0.9.87",
3
+ "version": "0.9.89",
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",
@@ -83,7 +83,7 @@
83
83
  "test:watch": "vitest",
84
84
  "typecheck": "tsc --noEmit",
85
85
  "build": "tsup && mkdir -p dist/assets && cp src/assets/tmux.conf dist/assets/ && cp src/assets/ghostty.conf dist/assets/ && cp src/assets/statusline-command.sh dist/assets/ && cp src/bin/exe-start.sh dist/bin/exe-start.sh",
86
- "deploy": "node dist/bin/pre-build-guard.js 2>/dev/null; (kill $(cat ~/.exe-os/exed.pid 2>/dev/null) 2>/dev/null; pgrep -f exe-daemon.js | xargs kill 2>/dev/null; true) && tsup && mkdir -p dist/assets && cp src/assets/tmux.conf dist/assets/ && cp src/assets/ghostty.conf dist/assets/ && cp src/assets/statusline-command.sh dist/assets/ && cp src/bin/exe-start.sh dist/bin/exe-start.sh && npm install -g . && node dist/bin/install.js --global && echo '[exe-os] Deploy complete. Run /mcp in active sessions to reconnect.'",
86
+ "deploy": "node dist/bin/pre-build-guard.js 2>/dev/null; tsup && mkdir -p dist/assets && cp src/assets/tmux.conf dist/assets/ && cp src/assets/ghostty.conf dist/assets/ && cp src/assets/statusline-command.sh dist/assets/ && cp src/bin/exe-start.sh dist/bin/exe-start.sh && npm install -g . && node dist/bin/install.js --global && echo '[exe-os] Deploy complete. Run /mcp in active sessions to reconnect.'",
87
87
  "postinstall": "node dist/bin/install.js --commands-only 2>/dev/null || true",
88
88
  "prepublishOnly": "npm run typecheck && npm run build && node dist/bin/customer-readiness.js",
89
89
  "test:publish": "npx vitest run --maxWorkers=4 --exclude 'tests/tui/**' --exclude 'tests/lib/tmux-routing.test.ts' --exclude 'tests/lib/intercom-routing.test.ts' --exclude 'tests/gateway/**' --exclude 'tests/installer/setup-wizard.test.ts' --exclude 'tests/mcp/ingest-document.test.ts' --exclude 'tests/lib/hybrid-search.test.ts' --exclude 'tests/lib/worker-gate.test.ts'",