@askexenow/exe-os 0.8.85 → 0.8.86

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 (57) hide show
  1. package/dist/bin/cleanup-stale-review-tasks.js +57 -19
  2. package/dist/bin/cli.js +507 -337
  3. package/dist/bin/exe-agent-config.js +242 -0
  4. package/dist/bin/exe-agent.js +3 -3
  5. package/dist/bin/exe-boot.js +344 -346
  6. package/dist/bin/exe-dispatch.js +375 -250
  7. package/dist/bin/exe-forget.js +5 -1
  8. package/dist/bin/exe-gateway.js +260 -135
  9. package/dist/bin/exe-healthcheck.js +133 -1
  10. package/dist/bin/exe-heartbeat.js +72 -31
  11. package/dist/bin/exe-link.js +25 -2
  12. package/dist/bin/exe-new-employee.js +22 -0
  13. package/dist/bin/exe-pending-messages.js +55 -17
  14. package/dist/bin/exe-pending-reviews.js +57 -19
  15. package/dist/bin/exe-search.js +6 -2
  16. package/dist/bin/exe-session-cleanup.js +260 -135
  17. package/dist/bin/exe-start-codex.js +2598 -0
  18. package/dist/bin/exe-start.sh +15 -3
  19. package/dist/bin/exe-status.js +57 -19
  20. package/dist/bin/git-sweep.js +391 -266
  21. package/dist/bin/install.js +22 -0
  22. package/dist/bin/scan-tasks.js +394 -269
  23. package/dist/bin/setup.js +47 -2
  24. package/dist/gateway/index.js +257 -132
  25. package/dist/hooks/bug-report-worker.js +242 -117
  26. package/dist/hooks/commit-complete.js +389 -264
  27. package/dist/hooks/error-recall.js +6 -2
  28. package/dist/hooks/ingest-worker.js +314 -193
  29. package/dist/hooks/post-compact.js +84 -46
  30. package/dist/hooks/pre-compact.js +272 -147
  31. package/dist/hooks/pre-tool-use.js +104 -66
  32. package/dist/hooks/prompt-submit.js +126 -66
  33. package/dist/hooks/session-end.js +277 -152
  34. package/dist/hooks/session-start.js +70 -28
  35. package/dist/hooks/stop.js +90 -52
  36. package/dist/hooks/subagent-stop.js +84 -46
  37. package/dist/hooks/summary-worker.js +175 -114
  38. package/dist/index.js +296 -171
  39. package/dist/lib/agent-config.js +167 -0
  40. package/dist/lib/cloud-sync.js +25 -2
  41. package/dist/lib/exe-daemon.js +338 -213
  42. package/dist/lib/hybrid-search.js +7 -2
  43. package/dist/lib/messaging.js +95 -39
  44. package/dist/lib/runtime-table.js +16 -0
  45. package/dist/lib/session-wrappers.js +22 -0
  46. package/dist/lib/tasks.js +242 -117
  47. package/dist/lib/tmux-routing.js +314 -189
  48. package/dist/mcp/server.js +573 -274
  49. package/dist/mcp/tools/create-task.js +260 -135
  50. package/dist/mcp/tools/list-tasks.js +68 -30
  51. package/dist/mcp/tools/send-message.js +100 -44
  52. package/dist/mcp/tools/update-task.js +123 -67
  53. package/dist/runtime/index.js +276 -151
  54. package/dist/tui/App.js +479 -354
  55. package/package.json +1 -1
  56. package/src/commands/exe/agent-config.md +27 -0
  57. package/src/commands/exe/cc-doctor.md +10 -0
@@ -1811,39 +1811,75 @@ var init_provider_table = __esm({
1811
1811
  }
1812
1812
  });
1813
1813
 
1814
- // src/lib/intercom-queue.ts
1815
- import { readFileSync as readFileSync4, writeFileSync as writeFileSync2, renameSync as renameSync3, existsSync as existsSync6, mkdirSync as mkdirSync2 } from "fs";
1814
+ // src/lib/runtime-table.ts
1815
+ var RUNTIME_TABLE;
1816
+ var init_runtime_table = __esm({
1817
+ "src/lib/runtime-table.ts"() {
1818
+ "use strict";
1819
+ RUNTIME_TABLE = {
1820
+ codex: {
1821
+ binary: "codex",
1822
+ launchMode: "exec",
1823
+ autoApproveFlag: "--full-auto",
1824
+ inlineFlag: "--no-alt-screen",
1825
+ apiKeyEnv: "OPENAI_API_KEY",
1826
+ defaultModel: "gpt-5.4"
1827
+ }
1828
+ };
1829
+ }
1830
+ });
1831
+
1832
+ // src/lib/agent-config.ts
1833
+ import { readFileSync as readFileSync4, writeFileSync as writeFileSync2, existsSync as existsSync6, mkdirSync as mkdirSync2 } from "fs";
1816
1834
  import path7 from "path";
1835
+ var AGENT_CONFIG_PATH, DEFAULT_MODELS;
1836
+ var init_agent_config = __esm({
1837
+ "src/lib/agent-config.ts"() {
1838
+ "use strict";
1839
+ init_config();
1840
+ init_runtime_table();
1841
+ AGENT_CONFIG_PATH = path7.join(EXE_AI_DIR, "agent-config.json");
1842
+ DEFAULT_MODELS = {
1843
+ claude: "claude-opus-4",
1844
+ codex: RUNTIME_TABLE.codex?.defaultModel ?? "gpt-5.4",
1845
+ opencode: "minimax-m2.7"
1846
+ };
1847
+ }
1848
+ });
1849
+
1850
+ // src/lib/intercom-queue.ts
1851
+ import { readFileSync as readFileSync5, writeFileSync as writeFileSync3, renameSync as renameSync3, existsSync as existsSync7, mkdirSync as mkdirSync3 } from "fs";
1852
+ import path8 from "path";
1817
1853
  import os6 from "os";
1818
1854
  var QUEUE_PATH, TTL_MS, INTERCOM_LOG;
1819
1855
  var init_intercom_queue = __esm({
1820
1856
  "src/lib/intercom-queue.ts"() {
1821
1857
  "use strict";
1822
- QUEUE_PATH = path7.join(os6.homedir(), ".exe-os", "intercom-queue.json");
1858
+ QUEUE_PATH = path8.join(os6.homedir(), ".exe-os", "intercom-queue.json");
1823
1859
  TTL_MS = 60 * 60 * 1e3;
1824
- INTERCOM_LOG = path7.join(os6.homedir(), ".exe-os", "intercom.log");
1860
+ INTERCOM_LOG = path8.join(os6.homedir(), ".exe-os", "intercom.log");
1825
1861
  }
1826
1862
  });
1827
1863
 
1828
1864
  // src/lib/license.ts
1829
- import { readFileSync as readFileSync5, writeFileSync as writeFileSync3, existsSync as existsSync7, mkdirSync as mkdirSync3 } from "fs";
1865
+ import { readFileSync as readFileSync6, writeFileSync as writeFileSync4, existsSync as existsSync8, mkdirSync as mkdirSync4 } from "fs";
1830
1866
  import { randomUUID as randomUUID2 } from "crypto";
1831
- import path8 from "path";
1867
+ import path9 from "path";
1832
1868
  import { jwtVerify, importSPKI } from "jose";
1833
1869
  var LICENSE_PATH, CACHE_PATH, DEVICE_ID_PATH;
1834
1870
  var init_license = __esm({
1835
1871
  "src/lib/license.ts"() {
1836
1872
  "use strict";
1837
1873
  init_config();
1838
- LICENSE_PATH = path8.join(EXE_AI_DIR, "license.key");
1839
- CACHE_PATH = path8.join(EXE_AI_DIR, "license-cache.json");
1840
- DEVICE_ID_PATH = path8.join(EXE_AI_DIR, "device-id");
1874
+ LICENSE_PATH = path9.join(EXE_AI_DIR, "license.key");
1875
+ CACHE_PATH = path9.join(EXE_AI_DIR, "license-cache.json");
1876
+ DEVICE_ID_PATH = path9.join(EXE_AI_DIR, "device-id");
1841
1877
  }
1842
1878
  });
1843
1879
 
1844
1880
  // src/lib/plan-limits.ts
1845
- import { readFileSync as readFileSync6, existsSync as existsSync8 } from "fs";
1846
- import path9 from "path";
1881
+ import { readFileSync as readFileSync7, existsSync as existsSync9 } from "fs";
1882
+ import path10 from "path";
1847
1883
  var CACHE_PATH2;
1848
1884
  var init_plan_limits = __esm({
1849
1885
  "src/lib/plan-limits.ts"() {
@@ -1852,12 +1888,12 @@ var init_plan_limits = __esm({
1852
1888
  init_employees();
1853
1889
  init_license();
1854
1890
  init_config();
1855
- CACHE_PATH2 = path9.join(EXE_AI_DIR, "license-cache.json");
1891
+ CACHE_PATH2 = path10.join(EXE_AI_DIR, "license-cache.json");
1856
1892
  }
1857
1893
  });
1858
1894
 
1859
1895
  // src/lib/tmux-routing.ts
1860
- import path10 from "path";
1896
+ import path11 from "path";
1861
1897
  import os7 from "os";
1862
1898
  import { fileURLToPath as fileURLToPath2 } from "url";
1863
1899
  function extractRootExe(name) {
@@ -1881,20 +1917,22 @@ var init_tmux_routing = __esm({
1881
1917
  init_cc_agent_support();
1882
1918
  init_mcp_prefix();
1883
1919
  init_provider_table();
1920
+ init_agent_config();
1921
+ init_runtime_table();
1884
1922
  init_intercom_queue();
1885
1923
  init_plan_limits();
1886
1924
  init_employees();
1887
- SPAWN_LOCK_DIR = path10.join(os7.homedir(), ".exe-os", "spawn-locks");
1888
- SESSION_CACHE = path10.join(os7.homedir(), ".exe-os", "session-cache");
1889
- INTERCOM_LOG2 = path10.join(os7.homedir(), ".exe-os", "intercom.log");
1890
- DEBOUNCE_FILE = path10.join(SESSION_CACHE, "intercom-debounce.json");
1925
+ SPAWN_LOCK_DIR = path11.join(os7.homedir(), ".exe-os", "spawn-locks");
1926
+ SESSION_CACHE = path11.join(os7.homedir(), ".exe-os", "session-cache");
1927
+ INTERCOM_LOG2 = path11.join(os7.homedir(), ".exe-os", "intercom.log");
1928
+ DEBOUNCE_FILE = path11.join(SESSION_CACHE, "intercom-debounce.json");
1891
1929
  DEBOUNCE_CLEANUP_AGE_MS = 5 * 60 * 1e3;
1892
1930
  }
1893
1931
  });
1894
1932
 
1895
1933
  // src/lib/tasks-review.ts
1896
- import path11 from "path";
1897
- import { existsSync as existsSync9, readdirSync as readdirSync3, unlinkSync as unlinkSync3 } from "fs";
1934
+ import path12 from "path";
1935
+ import { existsSync as existsSync10, readdirSync as readdirSync3, unlinkSync as unlinkSync3 } from "fs";
1898
1936
  async function listPendingReviews(limit, sessionScope) {
1899
1937
  const client = getClient();
1900
1938
  if (sessionScope) {
@@ -3967,7 +3967,7 @@ async function hybridSearch(queryText, agentId, options) {
3967
3967
  process.stderr.write("[hybrid-search] Embed daemon unavailable \u2014 FTS-only mode\n");
3968
3968
  }
3969
3969
  let grepPromise = Promise.resolve([]);
3970
- if (config.fileGrepEnabled !== false) {
3970
+ if (config.fileGrepEnabled === true) {
3971
3971
  try {
3972
3972
  const { getProjectName: getProjectName2 } = await Promise.resolve().then(() => (init_project_name(), project_name_exports));
3973
3973
  const projectRoot = process.cwd();
@@ -4233,7 +4233,7 @@ async function ftsQuery(client, matchExpr, agentId, options, limit) {
4233
4233
  source_type: row.source_type ?? null
4234
4234
  }));
4235
4235
  }
4236
- async function recentRecords(agentId, options, limit) {
4236
+ async function recentRecords(agentId, options, limit, textFilter) {
4237
4237
  const client = getClient();
4238
4238
  const statusFilter = options?.includeArchived ? "" : `
4239
4239
  AND COALESCE(status, 'active') = 'active'`;
@@ -4273,6 +4273,10 @@ async function recentRecords(agentId, options, limit) {
4273
4273
  sql += ` AND memory_type = ?`;
4274
4274
  args.push(options.memoryType);
4275
4275
  }
4276
+ if (textFilter) {
4277
+ sql += ` AND raw_text LIKE '%' || ? || '%'`;
4278
+ args.push(textFilter);
4279
+ }
4276
4280
  sql += ` ORDER BY timestamp DESC LIMIT ?`;
4277
4281
  args.push(limit);
4278
4282
  const result = await client.execute({ sql, args });