@askexenow/exe-os 0.9.136 → 0.9.138

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 (195) hide show
  1. package/dist/{agentic-ontology-2TD5YS4O.js → agentic-ontology-TU2FNTHI.js} +1 -1
  2. package/dist/{backfill-metadata-5LNLRCA6.js → backfill-metadata-LVUAD6WY.js} +3 -3
  3. package/dist/{behaviors-PPFGGHYD.js → behaviors-V3O5YYUK.js} +2 -2
  4. package/dist/bin/agentic-ontology-backfill.js +4 -4
  5. package/dist/bin/agentic-reflection-backfill.js +5 -5
  6. package/dist/bin/agentic-semantic-label.js +4 -4
  7. package/dist/bin/backfill-conversations.js +3 -3
  8. package/dist/bin/backfill-responses.js +3 -3
  9. package/dist/bin/backfill-vectors.js +3 -3
  10. package/dist/bin/bulk-sync-postgres.js +5 -5
  11. package/dist/bin/cleanup-stale-review-tasks.js +5 -4
  12. package/dist/bin/cli.js +54 -11
  13. package/dist/bin/exe-agent.js +10 -10
  14. package/dist/bin/exe-assign.js +3 -3
  15. package/dist/bin/exe-boot.js +10 -9
  16. package/dist/bin/exe-call.js +3 -3
  17. package/dist/bin/exe-cloud.js +3 -3
  18. package/dist/bin/exe-dispatch.js +6 -5
  19. package/dist/bin/exe-doctor.js +1 -1
  20. package/dist/bin/exe-export-behaviors.js +6 -6
  21. package/dist/bin/exe-forget.js +5 -5
  22. package/dist/bin/exe-gateway.js +3 -3
  23. package/dist/bin/exe-heartbeat.js +5 -4
  24. package/dist/bin/exe-kill.js +5 -5
  25. package/dist/bin/exe-launch-agent.js +48 -14
  26. package/dist/bin/exe-new-employee.js +5 -5
  27. package/dist/bin/exe-pending-messages.js +6 -5
  28. package/dist/bin/exe-pending-notifications.js +5 -4
  29. package/dist/bin/exe-pending-reviews.js +5 -4
  30. package/dist/bin/exe-rename.js +3 -3
  31. package/dist/bin/exe-review.js +4 -4
  32. package/dist/bin/exe-search.js +4 -4
  33. package/dist/bin/exe-session-cleanup.js +9 -8
  34. package/dist/bin/exe-settings.js +3 -3
  35. package/dist/bin/exe-start-codex.js +7 -7
  36. package/dist/bin/exe-start-opencode.js +6 -6
  37. package/dist/bin/exe-status.js +6 -6
  38. package/dist/bin/exe-team.js +2 -2
  39. package/dist/bin/git-sweep.js +5 -4
  40. package/dist/bin/graph-backfill.js +3 -3
  41. package/dist/bin/graph-export.js +4 -4
  42. package/dist/bin/install.js +3 -3
  43. package/dist/bin/intercom-check.js +4 -4
  44. package/dist/bin/postgres-agentic-reflection-backfill.js +2 -2
  45. package/dist/bin/postgres-agentic-semantic-backfill.js +1 -1
  46. package/dist/bin/scan-tasks.js +10 -9
  47. package/dist/bin/setup.js +1 -1
  48. package/dist/bin/shard-migrate.js +3 -3
  49. package/dist/branding-JEE7MJF2.js +99 -0
  50. package/dist/{capacity-monitor-PFHHXTEN.js → capacity-monitor-56DTRWOS.js} +6 -5
  51. package/dist/{catchup-brief-Y75GOHWU.js → catchup-brief-6GRGQ2EK.js} +7 -6
  52. package/dist/{chunk-ZJ7N6BNZ.js → chunk-2G6QGXVX.js} +21 -0
  53. package/dist/{chunk-S67DRFRK.js → chunk-2ISCJ5PQ.js} +1 -1
  54. package/dist/{chunk-5NLZS5KX.js → chunk-5QCIPC7Z.js} +2 -2
  55. package/dist/{chunk-VIONSYFC.js → chunk-7FYOTSJP.js} +1 -1
  56. package/dist/{chunk-3BVZNKAZ.js → chunk-7GOVGBBM.js} +3 -3
  57. package/dist/{chunk-T65APBMF.js → chunk-7TW5HR4E.js} +39 -21
  58. package/dist/{chunk-YMMTBQQY.js → chunk-7V3BJHG6.js} +2 -2
  59. package/dist/{chunk-DIQOUMHM.js → chunk-ABIGFAFY.js} +1 -1
  60. package/dist/{chunk-MPZRPM5X.js → chunk-AHQDWRSM.js} +1 -1
  61. package/dist/{chunk-KHUJEI3A.js → chunk-BOPKW4AV.js} +1 -1
  62. package/dist/{chunk-3UKHLUXH.js → chunk-BQ5YXRBI.js} +1 -1
  63. package/dist/{chunk-TXRDECEW.js → chunk-BUHXM7ZL.js} +3 -3
  64. package/dist/{chunk-5DZTDWFU.js → chunk-BYNEC472.js} +1 -1
  65. package/dist/{chunk-X3KJ3TT7.js → chunk-E6ORBQHP.js} +1 -0
  66. package/dist/{chunk-XDWCEQLH.js → chunk-EBMHOMN2.js} +6 -6
  67. package/dist/{chunk-GISRZK6K.js → chunk-EZ2TJX6O.js} +19 -3
  68. package/dist/{chunk-ZNWYU3VE.js → chunk-EZTYTAVU.js} +8 -8
  69. package/dist/{chunk-E2XB56OH.js → chunk-F63ZHBZY.js} +1 -1
  70. package/dist/{chunk-CTEENZVZ.js → chunk-FQZY4M45.js} +20 -3
  71. package/dist/{chunk-ARZWYVYC.js → chunk-GRLQJ27R.js} +1 -1
  72. package/dist/{chunk-D7FYU6DX.js → chunk-I2LCIAUC.js} +2 -2
  73. package/dist/{chunk-UXGZ3V3U.js → chunk-ITMXM6GF.js} +1 -1
  74. package/dist/{chunk-FM4UBRBE.js → chunk-JN2RIMLI.js} +3 -3
  75. package/dist/{chunk-ARQQ4T47.js → chunk-K7W7UJ6Z.js} +1 -1
  76. package/dist/{chunk-NBJIGVPG.js → chunk-LEVPSCVX.js} +43 -7
  77. package/dist/{chunk-AVUQCUZC.js → chunk-LPIY2AUD.js} +1 -1
  78. package/dist/{chunk-GU2Z6K2T.js → chunk-MQNM4FW4.js} +3 -2
  79. package/dist/{chunk-O2ENLWKX.js → chunk-MSFSQSJO.js} +1 -1
  80. package/dist/{chunk-NSVI6RZ5.js → chunk-N2ZX27ID.js} +1 -1
  81. package/dist/{chunk-5DHM77JE.js → chunk-NBYMO4RZ.js} +2 -0
  82. package/dist/{chunk-A63V4QMR.js → chunk-NFMNO3XE.js} +732 -544
  83. package/dist/{chunk-4ADWX7S6.js → chunk-OVFU26ZD.js} +5 -5
  84. package/dist/{chunk-5XNCH6UM.js → chunk-OZ4SN7ZF.js} +1 -1
  85. package/dist/{chunk-REFUKSCU.js → chunk-PB5RHF74.js} +2 -2
  86. package/dist/{chunk-QKBDAHFM.js → chunk-PFGFOALA.js} +1 -1
  87. package/dist/chunk-PKPW2W33.js +134 -0
  88. package/dist/{chunk-IMZM3H6N.js → chunk-R3IILARI.js} +2 -2
  89. package/dist/{chunk-VAPODXIB.js → chunk-T5A4EGUG.js} +1 -1
  90. package/dist/{chunk-TERS54YJ.js → chunk-TIJYLKNW.js} +1 -1
  91. package/dist/{chunk-WQ6FW5JD.js → chunk-TRLP7FHS.js} +1 -1
  92. package/dist/{chunk-IUKRBQ2B.js → chunk-TT3ND3MM.js} +2 -2
  93. package/dist/{chunk-NR3MPNTF.js → chunk-UT3OZWST.js} +8 -8
  94. package/dist/{chunk-XK3P2PRN.js → chunk-VGOFRIAI.js} +2 -2
  95. package/dist/{chunk-NFRFF6QS.js → chunk-VOA7GHIO.js} +1 -1
  96. package/dist/{chunk-J7LFCZMQ.js → chunk-WTPYZG4I.js} +65 -15
  97. package/dist/{chunk-G2HJSPM4.js → chunk-Z36IJ3XX.js} +2 -2
  98. package/dist/{chunk-W7G2DOLC.js → chunk-ZKOQD4FT.js} +5 -5
  99. package/dist/core-memory-DUENM2P6.js +79 -0
  100. package/dist/{crdt-sync-UUJDUXTJ.js → crdt-sync-SENINDKP.js} +1 -1
  101. package/dist/{crm-webhook-UXZORR4I.js → crm-webhook-JIXOP3UR.js} +2 -2
  102. package/dist/{cto-delegation-gate-7MIMXB4T.js → cto-delegation-gate-5ETBWFAI.js} +4 -3
  103. package/dist/{daemon-orchestration-FIL7U2RV.js → daemon-orchestration-6UNZTZHX.js} +10 -6
  104. package/dist/{entity-boost-CSKKVLPV.js → entity-boost-CZZVTBSY.js} +79 -0
  105. package/dist/{exe-drift-D7YCMMR3.js → exe-drift-WLMWMSOM.js} +3 -3
  106. package/dist/{exe-export-YKP26EW6.js → exe-export-3RQMZAR3.js} +5 -5
  107. package/dist/{exe-import-HSQORBEH.js → exe-import-URXIQGOM.js} +5 -5
  108. package/dist/{exe-key-QLXFQGNV.js → exe-key-47ZUWMGT.js} +1 -1
  109. package/dist/{fast-db-init-RFYRERZL.js → fast-db-init-Z67ITX23.js} +1 -1
  110. package/dist/gateway/index.js +8 -8
  111. package/dist/{gateway-client-APTYJNCL.js → gateway-client-VFKE2WJX.js} +1 -1
  112. package/dist/{git-staleness-2IBA7MM2.js → git-staleness-PP7MPTZS.js} +1 -1
  113. package/dist/{git-task-sweep-ZZQHHVXR.js → git-task-sweep-TMVL5UUD.js} +5 -4
  114. package/dist/{global-procedures-6B5JT3B5.js → global-procedures-OQFOUA5G.js} +2 -2
  115. package/dist/hooks/bug-report-worker.js +8 -7
  116. package/dist/hooks/codex-stop-task-finalizer.js +8 -7
  117. package/dist/hooks/commit-complete.js +7 -6
  118. package/dist/hooks/error-recall.js +4 -4
  119. package/dist/hooks/ingest.js +2 -2
  120. package/dist/hooks/instructions-loaded.js +3 -3
  121. package/dist/hooks/notification.js +1 -1
  122. package/dist/hooks/post-compact.js +5 -4
  123. package/dist/hooks/post-tool-combined.js +3 -3
  124. package/dist/hooks/pre-compact.js +6 -5
  125. package/dist/hooks/pre-tool-use.js +9 -8
  126. package/dist/hooks/prompt-submit.js +12 -11
  127. package/dist/hooks/session-end.js +10 -9
  128. package/dist/hooks/session-start.js +4 -4
  129. package/dist/hooks/stop.js +8 -7
  130. package/dist/hooks/subagent-stop.js +5 -4
  131. package/dist/hooks/summary-worker.js +8 -7
  132. package/dist/index.js +13 -12
  133. package/dist/{installer-GDMELU5L.js → installer-RVGGMXQU.js} +4 -4
  134. package/dist/{installer-EIUTCCHV.js → installer-RVLKWR3X.js} +2 -2
  135. package/dist/{installer-WZEN2XJ7.js → installer-V7BGTU55.js} +2 -2
  136. package/dist/lib/cloud-sync.js +3 -3
  137. package/dist/lib/consolidation.js +4 -4
  138. package/dist/lib/database.js +1 -1
  139. package/dist/lib/db.js +1 -1
  140. package/dist/lib/employee-templates.js +3 -3
  141. package/dist/lib/exe-daemon.js +103 -21
  142. package/dist/lib/hybrid-search.js +4 -4
  143. package/dist/lib/identity.js +2 -2
  144. package/dist/lib/messaging.js +5 -4
  145. package/dist/lib/reminders.js +2 -2
  146. package/dist/lib/schedules.js +4 -4
  147. package/dist/lib/skill-learning.js +3 -3
  148. package/dist/lib/store.js +3 -3
  149. package/dist/lib/tasks.js +7 -6
  150. package/dist/lib/tmux-routing.js +4 -3
  151. package/dist/lib/token-spend.js +2 -2
  152. package/dist/lib/ws-client.js +1 -1
  153. package/dist/mcp/register-tools.js +45 -45
  154. package/dist/mcp/server.js +45 -45
  155. package/dist/mcp/tools/complete-reminder.js +3 -3
  156. package/dist/mcp/tools/create-reminder.js +3 -3
  157. package/dist/mcp/tools/create-task.js +8 -7
  158. package/dist/mcp/tools/deactivate-behavior.js +3 -3
  159. package/dist/mcp/tools/list-reminders.js +3 -3
  160. package/dist/mcp/tools/list-tasks.js +8 -7
  161. package/dist/mcp/tools/send-message.js +6 -5
  162. package/dist/mcp/tools/update-task.js +8 -7
  163. package/dist/{memory-cards-MA5SIQKN.js → memory-cards-H2GNWDF2.js} +1 -1
  164. package/dist/{memory-reflection-VHCEW3UN.js → memory-reflection-J3LYZM5Y.js} +1 -1
  165. package/dist/{notifications-NY2OVCDV.js → notifications-3ZZS36PK.js} +4 -3
  166. package/dist/{orchestrator-ZVOTKKV6.js → orchestrator-W7XYR7EZ.js} +6 -5
  167. package/dist/{plan-limits-UQTXKXJQ.js → plan-limits-3FXBGHWT.js} +2 -2
  168. package/dist/{projection-worker-UL47LRTS.js → projection-worker-XGV76EMZ.js} +1 -1
  169. package/dist/push-notifications-S4QIZWJI.js +17 -0
  170. package/dist/runtime/index.js +11 -10
  171. package/dist/{session-events-DU6PKAJN.js → session-events-27MUL77I.js} +5 -4
  172. package/dist/{session-kill-telemetry-5XGSTQJS.js → session-kill-telemetry-WVFJ4U3A.js} +2 -2
  173. package/dist/{session-scope-WJRSCUKP.js → session-scope-QZTSCYLT.js} +5 -4
  174. package/dist/{setup-wizard-36V5GCGG.js → setup-wizard-JEYXHYVS.js} +1 -1
  175. package/dist/{task-scope-7XCYEZAG.js → task-scope-2L5DLU6T.js} +4 -3
  176. package/dist/{tasks-crud-DUNJJUV3.js → tasks-crud-MDCY6JHU.js} +5 -4
  177. package/dist/{tasks-review-BPSW2TBZ.js → tasks-review-QO55FYZI.js} +4 -3
  178. package/dist/{tool-gates-CAFAD576.js → tool-gates-FSNGZNXW.js} +1 -1
  179. package/dist/{tool-gates-5IWU2EVV.js → tool-gates-P6HATVYH.js} +1 -1
  180. package/dist/{tool-telemetry-Q6ZSUTHS.js → tool-telemetry-NW6HQYPA.js} +1 -1
  181. package/dist/tui/App.js +13 -12
  182. package/dist/{tui-data-GUMMW3IG.js → tui-data-6CKBIJJJ.js} +4 -3
  183. package/dist/{workflow-engine-A6K4MHN3.js → workflow-engine-7W4MSNBF.js} +1 -1
  184. package/package.json +2 -1
  185. package/release-notes.json +33343 -0
  186. package/dist/{chunk-M6ODLM7X.js → chunk-2FWMSQWU.js} +0 -0
  187. package/dist/{chunk-4AZA3DZM.js → chunk-6AJ4KAAB.js} +0 -0
  188. package/dist/{chunk-7U65IF2W.js → chunk-DLMPVZ4I.js} +0 -0
  189. package/dist/{chunk-KQW5PWOA.js → chunk-F3MUSAZY.js} +3 -3
  190. /package/dist/{chunk-KI3UEJUR.js → chunk-G3LVAJON.js} +0 -0
  191. /package/dist/{chunk-M6FENV7U.js → chunk-GMARURIG.js} +0 -0
  192. /package/dist/{chunk-FR5FFQ6G.js → chunk-KJMSHBWT.js} +0 -0
  193. /package/dist/{chunk-RCKUCKED.js → chunk-N6BE2CUT.js} +0 -0
  194. /package/dist/{chunk-6ZXIG7R6.js → chunk-WZ63HFR2.js} +0 -0
  195. /package/dist/{wiki-acl-QY5EXWEQ.js → wiki-acl-RVCO4WSP.js} +0 -0
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  fastDbInit
4
- } from "../chunk-FR5FFQ6G.js";
4
+ } from "../chunk-KJMSHBWT.js";
5
5
  import "../chunk-KFQGP6VL.js";
6
6
 
7
7
  // src/bin/intercom-check.ts
@@ -16,7 +16,7 @@ async function main() {
16
16
  }
17
17
  if (isCoordinator) {
18
18
  try {
19
- const { listPendingReviews, cleanupOrphanedReviews, formatAge, isStale } = await import("../tasks-review-BPSW2TBZ.js");
19
+ const { listPendingReviews, cleanupOrphanedReviews, formatAge, isStale } = await import("../tasks-review-QO55FYZI.js");
20
20
  const { extractRootExe } = await import("../lib/tmux-routing.js");
21
21
  await cleanupOrphanedReviews();
22
22
  let sessionScope = process.env.EXE_SESSION ? extractRootExe(process.env.EXE_SESSION) ?? void 0 : void 0;
@@ -87,7 +87,7 @@ async function main() {
87
87
  }
88
88
  if (!isCoordinator) {
89
89
  try {
90
- const { listBehaviors } = await import("../behaviors-PPFGGHYD.js");
90
+ const { listBehaviors } = await import("../behaviors-V3O5YYUK.js");
91
91
  const sessionStart = process.env.EXE_SESSION_START_ISO ?? "";
92
92
  if (sessionStart) {
93
93
  const behaviors = await listBehaviors(agent);
@@ -106,7 +106,7 @@ async function main() {
106
106
  }
107
107
  }
108
108
  try {
109
- const { readUnreadNotifications, markAsRead } = await import("../notifications-NY2OVCDV.js");
109
+ const { readUnreadNotifications, markAsRead } = await import("../notifications-3ZZS36PK.js");
110
110
  const notifications = await readUnreadNotifications(agent);
111
111
  const recentCutoff = Date.now() - 24 * 60 * 60 * 1e3;
112
112
  const pending = notifications.filter((row) => new Date(row.timestamp).getTime() > recentCutoff);
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  buildReflectionCheckpoint
4
- } from "../chunk-UXGZ3V3U.js";
5
- import "../chunk-KI3UEJUR.js";
4
+ } from "../chunk-ITMXM6GF.js";
5
+ import "../chunk-G3LVAJON.js";
6
6
  import {
7
7
  pgSslConfig
8
8
  } from "../chunk-EQSQ4HBW.js";
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  inferSemanticLabel,
4
4
  stableId
5
- } from "../chunk-KI3UEJUR.js";
5
+ } from "../chunk-G3LVAJON.js";
6
6
  import {
7
7
  pgSslConfig
8
8
  } from "../chunk-EQSQ4HBW.js";
@@ -2,22 +2,23 @@
2
2
  import {
3
3
  init_task_scope,
4
4
  sessionScopeFilter
5
- } from "../chunk-CTEENZVZ.js";
5
+ } from "../chunk-FQZY4M45.js";
6
6
  import "../chunk-NEAHEC5G.js";
7
7
  import "../chunk-KRLOFIPI.js";
8
8
  import "../chunk-R4M6XCMU.js";
9
9
  import "../chunk-TYLF4LSW.js";
10
+ import "../chunk-DC4ZD76Y.js";
10
11
  import "../chunk-PJHHFJAN.js";
11
12
  import "../chunk-K7E72WGL.js";
12
13
  import "../chunk-JT76KRZQ.js";
13
- import "../chunk-ARZWYVYC.js";
14
+ import "../chunk-GRLQJ27R.js";
14
15
  import {
15
16
  getSessionRuntime,
16
17
  init_session_key
17
18
  } from "../chunk-HP43GLZ6.js";
18
19
  import "../chunk-ELE2C7L4.js";
19
20
  import "../chunk-WZQ4CPRG.js";
20
- import "../chunk-ZJ7N6BNZ.js";
21
+ import "../chunk-2G6QGXVX.js";
21
22
  import "../chunk-KSFOG6FJ.js";
22
23
  import "../chunk-4NYQAS33.js";
23
24
  import "../chunk-BPLXSBNM.js";
@@ -74,7 +75,7 @@ function checkMcpHealth() {
74
75
  }
75
76
  }
76
77
  async function scanFromDb(agentId, tmuxSession, projectName) {
77
- const { fastDbInit } = await import("../fast-db-init-RFYRERZL.js");
78
+ const { fastDbInit } = await import("../fast-db-init-Z67ITX23.js");
78
79
  let client;
79
80
  try {
80
81
  client = await fastDbInit();
@@ -99,14 +100,14 @@ async function scanFromDb(agentId, tmuxSession, projectName) {
99
100
  }
100
101
  const sessionFilter = resolvedSession ? " AND (session_scope IS NULL OR session_scope = ?)" : "";
101
102
  const sessionArgs = resolvedSession ? [resolvedSession] : [];
102
- const sql = resolvedProject ? `SELECT id, title, priority, status, assigned_tmux, checkpoint, checkpoint_count FROM tasks
103
- WHERE assigned_to = ? AND project_name = ?${sessionFilter} AND status IN ('open', 'in_progress', 'blocked', 'needs_review')
103
+ const sql = resolvedProject ? `SELECT id, title, priority, status, assigned_to, reviewer, assigned_tmux, checkpoint, checkpoint_count FROM tasks
104
+ WHERE (assigned_to = ? OR reviewer = ?) AND project_name = ?${sessionFilter} AND status IN ('open', 'in_progress', 'blocked', 'needs_review')
104
105
  ORDER BY CASE status WHEN 'in_progress' THEN 0 WHEN 'open' THEN 1 WHEN 'blocked' THEN 2 ELSE 3 END,
105
- priority ASC, created_at DESC` : `SELECT id, title, priority, status, assigned_tmux, checkpoint, checkpoint_count FROM tasks
106
- WHERE assigned_to = ?${sessionFilter} AND status IN ('open', 'in_progress', 'blocked', 'needs_review')
106
+ priority ASC, created_at DESC` : `SELECT id, title, priority, status, assigned_to, reviewer, assigned_tmux, checkpoint, checkpoint_count FROM tasks
107
+ WHERE (assigned_to = ? OR reviewer = ?)${sessionFilter} AND status IN ('open', 'in_progress', 'blocked', 'needs_review')
107
108
  ORDER BY CASE status WHEN 'in_progress' THEN 0 WHEN 'open' THEN 1 WHEN 'blocked' THEN 2 ELSE 3 END,
108
109
  priority ASC, created_at DESC`;
109
- const args = resolvedProject ? [agentId, resolvedProject, ...sessionArgs] : [agentId, ...sessionArgs];
110
+ const args = resolvedProject ? [agentId, agentId, resolvedProject, ...sessionArgs] : [agentId, agentId, ...sessionArgs];
110
111
  const result = await client.execute({ sql, args });
111
112
  const open = [];
112
113
  const inProgress = [];
package/dist/bin/setup.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  runSetupWizard
4
- } from "../chunk-6ZXIG7R6.js";
4
+ } from "../chunk-WZ63HFR2.js";
5
5
  import "../chunk-XUHFQHGZ.js";
6
6
  import "../chunk-ISRQKXHM.js";
7
7
  import "../chunk-X2IMCCM5.js";
@@ -8,13 +8,13 @@ import {
8
8
  import {
9
9
  disposeStore,
10
10
  initStore
11
- } from "../chunk-4ADWX7S6.js";
12
- import "../chunk-7U65IF2W.js";
11
+ } from "../chunk-OVFU26ZD.js";
12
+ import "../chunk-DLMPVZ4I.js";
13
13
  import "../chunk-WZQ4CPRG.js";
14
14
  import {
15
15
  getClient,
16
16
  init_database
17
- } from "../chunk-ZJ7N6BNZ.js";
17
+ } from "../chunk-2G6QGXVX.js";
18
18
  import "../chunk-KSFOG6FJ.js";
19
19
  import "../chunk-4NYQAS33.js";
20
20
  import "../chunk-ZKYHW6KY.js";
@@ -0,0 +1,99 @@
1
+ import {
2
+ EXE_AI_DIR,
3
+ init_config
4
+ } from "./chunk-ISRQKXHM.js";
5
+ import "./chunk-X2IMCCM5.js";
6
+ import "./chunk-KFQGP6VL.js";
7
+
8
+ // src/lib/branding.ts
9
+ init_config();
10
+ import { readFileSync, writeFileSync, existsSync, mkdirSync } from "fs";
11
+ import path from "path";
12
+ var BRANDING_PATH = path.join(EXE_AI_DIR, "branding.json");
13
+ var DEFAULT_BRANDING = {
14
+ name: "Exe OS",
15
+ primaryColor: "#F5D76E",
16
+ accentColor: "#0F0E1A",
17
+ logo: {
18
+ light: void 0,
19
+ dark: void 0,
20
+ icon: void 0
21
+ }
22
+ };
23
+ var _cachedBranding = null;
24
+ function loadBranding() {
25
+ if (_cachedBranding) return _cachedBranding;
26
+ try {
27
+ if (!existsSync(BRANDING_PATH)) {
28
+ _cachedBranding = { ...DEFAULT_BRANDING };
29
+ return _cachedBranding;
30
+ }
31
+ const raw = JSON.parse(readFileSync(BRANDING_PATH, "utf-8"));
32
+ _cachedBranding = {
33
+ name: typeof raw.name === "string" ? raw.name : DEFAULT_BRANDING.name,
34
+ primaryColor: typeof raw.primaryColor === "string" && /^#[0-9a-fA-F]{6}$/.test(raw.primaryColor) ? raw.primaryColor : DEFAULT_BRANDING.primaryColor,
35
+ accentColor: typeof raw.accentColor === "string" && /^#[0-9a-fA-F]{6}$/.test(raw.accentColor) ? raw.accentColor : DEFAULT_BRANDING.accentColor,
36
+ logo: raw.logo && typeof raw.logo === "object" ? {
37
+ light: typeof raw.logo.light === "string" ? raw.logo.light : void 0,
38
+ dark: typeof raw.logo.dark === "string" ? raw.logo.dark : void 0,
39
+ icon: typeof raw.logo.icon === "string" ? raw.logo.icon : void 0
40
+ } : DEFAULT_BRANDING.logo,
41
+ emailSender: typeof raw.emailSender === "string" ? raw.emailSender : void 0,
42
+ domain: typeof raw.domain === "string" ? raw.domain : void 0
43
+ };
44
+ return _cachedBranding;
45
+ } catch {
46
+ _cachedBranding = { ...DEFAULT_BRANDING };
47
+ return _cachedBranding;
48
+ }
49
+ }
50
+ function _resetBrandingCache() {
51
+ _cachedBranding = null;
52
+ }
53
+ function validateBranding(raw) {
54
+ const errors = [];
55
+ if (!raw || typeof raw !== "object") {
56
+ return { valid: false, errors: ["Branding config must be a JSON object"] };
57
+ }
58
+ const obj = raw;
59
+ if (!obj.name || typeof obj.name !== "string") {
60
+ errors.push("'name' is required and must be a string");
61
+ }
62
+ if (!obj.primaryColor || typeof obj.primaryColor !== "string") {
63
+ errors.push("'primaryColor' is required and must be a hex color string");
64
+ } else if (!/^#[0-9a-fA-F]{6}$/.test(obj.primaryColor)) {
65
+ errors.push("'primaryColor' must be a 6-digit hex color (e.g., #F5D76E)");
66
+ }
67
+ if (!obj.accentColor || typeof obj.accentColor !== "string") {
68
+ errors.push("'accentColor' is required and must be a hex color string");
69
+ } else if (!/^#[0-9a-fA-F]{6}$/.test(obj.accentColor)) {
70
+ errors.push("'accentColor' must be a 6-digit hex color (e.g., #0F0E1A)");
71
+ }
72
+ if (errors.length > 0) return { valid: false, errors };
73
+ const config = {
74
+ name: obj.name,
75
+ primaryColor: obj.primaryColor,
76
+ accentColor: obj.accentColor,
77
+ logo: obj.logo && typeof obj.logo === "object" ? {
78
+ light: typeof obj.logo.light === "string" ? obj.logo.light : void 0,
79
+ dark: typeof obj.logo.dark === "string" ? obj.logo.dark : void 0,
80
+ icon: typeof obj.logo.icon === "string" ? obj.logo.icon : void 0
81
+ } : void 0,
82
+ emailSender: typeof obj.emailSender === "string" ? obj.emailSender : void 0,
83
+ domain: typeof obj.domain === "string" ? obj.domain : void 0
84
+ };
85
+ return { valid: true, errors: [], config };
86
+ }
87
+ function saveBranding(config) {
88
+ mkdirSync(path.dirname(BRANDING_PATH), { recursive: true });
89
+ writeFileSync(BRANDING_PATH, JSON.stringify(config, null, 2) + "\n", "utf-8");
90
+ _resetBrandingCache();
91
+ }
92
+ export {
93
+ BRANDING_PATH,
94
+ DEFAULT_BRANDING,
95
+ _resetBrandingCache,
96
+ loadBranding,
97
+ saveBranding,
98
+ validateBranding
99
+ };
@@ -9,21 +9,22 @@ import {
9
9
  isAtCapacity,
10
10
  isWithinRelaunchCooldown,
11
11
  pollCapacityDead
12
- } from "./chunk-TXRDECEW.js";
13
- import "./chunk-ARQQ4T47.js";
14
- import "./chunk-CTEENZVZ.js";
12
+ } from "./chunk-BUHXM7ZL.js";
13
+ import "./chunk-K7W7UJ6Z.js";
14
+ import "./chunk-FQZY4M45.js";
15
15
  import "./chunk-NEAHEC5G.js";
16
16
  import "./chunk-KRLOFIPI.js";
17
17
  import "./chunk-R4M6XCMU.js";
18
18
  import "./chunk-TYLF4LSW.js";
19
+ import "./chunk-DC4ZD76Y.js";
19
20
  import "./chunk-PJHHFJAN.js";
20
21
  import "./chunk-K7E72WGL.js";
21
22
  import "./chunk-JT76KRZQ.js";
22
- import "./chunk-ARZWYVYC.js";
23
+ import "./chunk-GRLQJ27R.js";
23
24
  import "./chunk-HP43GLZ6.js";
24
25
  import "./chunk-ELE2C7L4.js";
25
26
  import "./chunk-WZQ4CPRG.js";
26
- import "./chunk-ZJ7N6BNZ.js";
27
+ import "./chunk-2G6QGXVX.js";
27
28
  import "./chunk-KSFOG6FJ.js";
28
29
  import "./chunk-4NYQAS33.js";
29
30
  import "./chunk-BPLXSBNM.js";
@@ -1,28 +1,29 @@
1
1
  import {
2
2
  lightweightSearch
3
- } from "./chunk-XDWCEQLH.js";
4
- import "./chunk-4ADWX7S6.js";
5
- import "./chunk-7U65IF2W.js";
3
+ } from "./chunk-EBMHOMN2.js";
4
+ import "./chunk-OVFU26ZD.js";
5
+ import "./chunk-DLMPVZ4I.js";
6
6
  import {
7
7
  init_task_scope,
8
8
  sessionScopeFilter,
9
9
  strictSessionScopeFilter
10
- } from "./chunk-CTEENZVZ.js";
10
+ } from "./chunk-FQZY4M45.js";
11
11
  import "./chunk-NEAHEC5G.js";
12
12
  import "./chunk-KRLOFIPI.js";
13
13
  import "./chunk-R4M6XCMU.js";
14
14
  import "./chunk-TYLF4LSW.js";
15
+ import "./chunk-DC4ZD76Y.js";
15
16
  import "./chunk-PJHHFJAN.js";
16
17
  import "./chunk-K7E72WGL.js";
17
18
  import "./chunk-JT76KRZQ.js";
18
- import "./chunk-ARZWYVYC.js";
19
+ import "./chunk-GRLQJ27R.js";
19
20
  import "./chunk-HP43GLZ6.js";
20
21
  import "./chunk-ELE2C7L4.js";
21
22
  import "./chunk-WZQ4CPRG.js";
22
23
  import {
23
24
  getClient,
24
25
  init_database
25
- } from "./chunk-ZJ7N6BNZ.js";
26
+ } from "./chunk-2G6QGXVX.js";
26
27
  import "./chunk-KSFOG6FJ.js";
27
28
  import "./chunk-4NYQAS33.js";
28
29
  import "./chunk-BPLXSBNM.js";
@@ -2041,6 +2041,27 @@ async function ensureSchema() {
2041
2041
  } catch (e) {
2042
2042
  logCatchDebug("migration", e);
2043
2043
  }
2044
+ try {
2045
+ const { loadDeviceId } = await import("./lib/license.js");
2046
+ const deviceId = loadDeviceId();
2047
+ if (deviceId) {
2048
+ await client.execute({
2049
+ sql: "UPDATE tasks SET device_id = ? WHERE device_id IS NULL",
2050
+ args: [deviceId]
2051
+ });
2052
+ }
2053
+ } catch (e) {
2054
+ logCatchDebug("migration", e);
2055
+ }
2056
+ await client.executeMultiple(`
2057
+ CREATE TABLE IF NOT EXISTS core_memory (
2058
+ agent_id TEXT NOT NULL,
2059
+ key TEXT NOT NULL,
2060
+ value TEXT NOT NULL,
2061
+ updated_at TEXT NOT NULL,
2062
+ PRIMARY KEY (agent_id, key)
2063
+ );
2064
+ `);
2044
2065
  await client.executeMultiple(`
2045
2066
  CREATE TABLE IF NOT EXISTS oauth_tokens (
2046
2067
  id TEXT PRIMARY KEY,
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  completeReminder
3
- } from "./chunk-QKBDAHFM.js";
3
+ } from "./chunk-PFGFOALA.js";
4
4
 
5
5
  // src/mcp/tools/complete-reminder.ts
6
6
  import { z } from "zod";
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  init_behaviors,
3
3
  storeBehavior
4
- } from "./chunk-NSVI6RZ5.js";
4
+ } from "./chunk-N2ZX27ID.js";
5
5
  import {
6
6
  getClient,
7
7
  init_database
8
- } from "./chunk-ZJ7N6BNZ.js";
8
+ } from "./chunk-2G6QGXVX.js";
9
9
  import {
10
10
  init_config,
11
11
  loadConfig
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getGlobalProceduresBlock
3
- } from "./chunk-3UKHLUXH.js";
3
+ } from "./chunk-BQ5YXRBI.js";
4
4
 
5
5
  // src/lib/employee-templates.ts
6
6
  var BASE_OPERATING_PROCEDURES = `
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  createTask,
3
3
  init_tasks
4
- } from "./chunk-J7LFCZMQ.js";
4
+ } from "./chunk-WTPYZG4I.js";
5
5
  import {
6
6
  getActiveAgent
7
7
  } from "./chunk-TCOTFMDP.js";
@@ -11,11 +11,11 @@ import {
11
11
  init_tmux_routing,
12
12
  logTaskDispatch,
13
13
  resolveExeSession
14
- } from "./chunk-CTEENZVZ.js";
14
+ } from "./chunk-FQZY4M45.js";
15
15
  import {
16
16
  getLicenseSync,
17
17
  init_plan_limits
18
- } from "./chunk-ARZWYVYC.js";
18
+ } from "./chunk-GRLQJ27R.js";
19
19
  import {
20
20
  init_employees,
21
21
  isCoordinatorName
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  init_session_kill_telemetry,
3
3
  session_kill_telemetry_exports
4
- } from "./chunk-ARQQ4T47.js";
4
+ } from "./chunk-K7W7UJ6Z.js";
5
5
  import {
6
- init_tmux_status,
7
- tmux_status_exports
8
- } from "./chunk-DC4ZD76Y.js";
6
+ init_tasks,
7
+ tasks_exports
8
+ } from "./chunk-WTPYZG4I.js";
9
9
  import {
10
10
  init_notifications,
11
11
  init_task_scope,
@@ -14,7 +14,7 @@ import {
14
14
  notifications_exports,
15
15
  sessionScopeFilter,
16
16
  tmux_routing_exports
17
- } from "./chunk-CTEENZVZ.js";
17
+ } from "./chunk-FQZY4M45.js";
18
18
  import {
19
19
  init_intercom_queue,
20
20
  intercom_queue_exports
@@ -27,6 +27,10 @@ import {
27
27
  init_transport,
28
28
  transport_exports
29
29
  } from "./chunk-R4M6XCMU.js";
30
+ import {
31
+ init_tmux_status,
32
+ tmux_status_exports
33
+ } from "./chunk-DC4ZD76Y.js";
30
34
  import {
31
35
  employees_exports,
32
36
  init_employees,
@@ -191,7 +195,8 @@ async function pollIdleEmployees(deps, lastNudge) {
191
195
  const lastMs = lastNudge.get(entry.windowName) ?? 0;
192
196
  if (state !== "idle") continue;
193
197
  if (now - lastMs < IDLE_NUDGE_DEDUP_MS) continue;
194
- const task = await deps.queryOpenTask(entry.agentId);
198
+ const employeeScope = entry.windowName.includes("-") ? entry.windowName.slice(entry.windowName.indexOf("-") + 1) : null;
199
+ const task = await deps.queryOpenTask(entry.agentId, employeeScope);
195
200
  if (!task) continue;
196
201
  if (shouldNudgeEmployee(state, true, lastMs, now, IDLE_NUDGE_DEDUP_MS)) {
197
202
  deps.sendIntercom(entry.windowName);
@@ -436,9 +441,9 @@ function createIdleNudgeRealDeps(getClient) {
436
441
  const { getSessionState } = (init_tmux_routing(), __toCommonJS(tmux_routing_exports));
437
442
  return getSessionState(sessionName);
438
443
  },
439
- queryOpenTask: async (agentId) => {
444
+ queryOpenTask: async (agentId, sessionScope) => {
440
445
  const client = getClient();
441
- const doScope = sessionScopeFilter(null);
446
+ const doScope = sessionScopeFilter(sessionScope ?? void 0);
442
447
  const result = await client.execute({
443
448
  sql: `SELECT id, title, priority FROM tasks
444
449
  WHERE assigned_to = ? AND status IN ('open', 'in_progress')${doScope.sql}
@@ -593,7 +598,7 @@ async function pollOrphanedTasks(deps, nowMs = Date.now()) {
593
598
  if (!shouldAutoWake({
594
599
  agentId,
595
600
  hasRunningSession: liveAgents.has(agentId),
596
- lastSpawnMs: _autoWakeLastSpawn.get(agentId) ?? 0,
601
+ lastSpawnMs: _autoWakeLastSpawn.get(key) ?? 0,
597
602
  nowMs,
598
603
  cooldownMs: AUTO_WAKE_COOLDOWN_MS,
599
604
  runningInstances: liveAgentCounts.get(agentId) ?? 0,
@@ -631,7 +636,7 @@ async function pollOrphanedTasks(deps, nowMs = Date.now()) {
631
636
  );
632
637
  continue;
633
638
  }
634
- _autoWakeLastSpawn.set(agentId, nowMs);
639
+ _autoWakeLastSpawn.set(key, nowMs);
635
640
  _autoWakeTaskRetries.set(topTask.taskId, retries + 1);
636
641
  woken.push(agentId);
637
642
  } catch (err) {
@@ -704,11 +709,14 @@ function createStuckTaskRealDeps(getClient) {
704
709
  },
705
710
  queryInProgressTasks: async () => {
706
711
  const client = getClient();
712
+ const { loadDeviceId } = await import("./lib/license.js");
713
+ const deviceId = loadDeviceId();
707
714
  const result = await client.execute({
708
715
  sql: `SELECT id, assigned_to, session_scope, updated_at FROM tasks
709
716
  WHERE status = 'in_progress'
717
+ AND (device_id = ? OR device_id IS NULL)
710
718
  ORDER BY updated_at ASC`,
711
- args: []
719
+ args: [deviceId]
712
720
  });
713
721
  return result.rows.map((r) => ({
714
722
  taskId: String(r.id),
@@ -718,11 +726,16 @@ function createStuckTaskRealDeps(getClient) {
718
726
  }));
719
727
  },
720
728
  markTaskBlocked: async (taskId, reason) => {
721
- const client = getClient();
722
- await client.execute({
723
- sql: `UPDATE tasks SET status = 'blocked', result = ?, updated_at = ? WHERE id = ?`,
724
- args: [reason, (/* @__PURE__ */ new Date()).toISOString(), taskId]
725
- });
729
+ try {
730
+ const { updateTask } = (init_tasks(), __toCommonJS(tasks_exports));
731
+ await updateTask({ taskId, status: "blocked", result: reason });
732
+ } catch {
733
+ const client = getClient();
734
+ await client.execute({
735
+ sql: `UPDATE tasks SET status = 'blocked', result = ?, updated_at = ? WHERE id = ?`,
736
+ args: [reason, (/* @__PURE__ */ new Date()).toISOString(), taskId]
737
+ });
738
+ }
726
739
  },
727
740
  parseAgentFromSession: (sessionName) => {
728
741
  const { baseAgentName } = (init_employees(), __toCommonJS(employees_exports));
@@ -773,11 +786,16 @@ function createAutoWakeRealDeps(getClient, projectDir) {
773
786
  return ensureEmployee(agentName, scope, projectDir, { autoInstance: true, maxAutoInstances: 3 });
774
787
  },
775
788
  markTaskBlocked: async (taskId, reason) => {
776
- const client = getClient();
777
- await client.execute({
778
- sql: `UPDATE tasks SET status = 'blocked', result = ?, updated_at = ? WHERE id = ?`,
779
- args: [reason, (/* @__PURE__ */ new Date()).toISOString(), taskId]
780
- });
789
+ try {
790
+ const { updateTask } = (init_tasks(), __toCommonJS(tasks_exports));
791
+ await updateTask({ taskId, status: "blocked", result: reason });
792
+ } catch {
793
+ const client = getClient();
794
+ await client.execute({
795
+ sql: `UPDATE tasks SET status = 'blocked', result = ?, updated_at = ? WHERE id = ?`,
796
+ args: [reason, (/* @__PURE__ */ new Date()).toISOString(), taskId]
797
+ });
798
+ }
781
799
  },
782
800
  parseAgentFromSession: (sessionName) => {
783
801
  const { baseAgentName } = (init_employees(), __toCommonJS(employees_exports));
@@ -1,14 +1,14 @@
1
1
  import {
2
2
  deactivateBehavior,
3
3
  init_behaviors
4
- } from "./chunk-NSVI6RZ5.js";
4
+ } from "./chunk-N2ZX27ID.js";
5
5
  import {
6
6
  getActiveAgent
7
7
  } from "./chunk-TCOTFMDP.js";
8
8
  import {
9
9
  getClient,
10
10
  init_database
11
- } from "./chunk-ZJ7N6BNZ.js";
11
+ } from "./chunk-2G6QGXVX.js";
12
12
  import {
13
13
  canCoordinate,
14
14
  init_employees
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  init_behaviors,
3
3
  listBehaviors
4
- } from "./chunk-NSVI6RZ5.js";
4
+ } from "./chunk-N2ZX27ID.js";
5
5
  import {
6
6
  config_exports,
7
7
  init_config
@@ -951,7 +951,7 @@ function splitAtSentences(text, maxChunkSize) {
951
951
  }
952
952
  async function main(argv = process.argv.slice(2)) {
953
953
  const flags = parseFlags(argv);
954
- const { fastDbInit } = await import("./fast-db-init-RFYRERZL.js");
954
+ const { fastDbInit } = await import("./fast-db-init-Z67ITX23.js");
955
955
  const client = await fastDbInit();
956
956
  const report = await runAudit(client, flags);
957
957
  console.log(formatReport(report, flags));
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  getClient,
3
3
  init_database
4
- } from "./chunk-ZJ7N6BNZ.js";
4
+ } from "./chunk-2G6QGXVX.js";
5
5
  import {
6
6
  EXE_AI_DIR,
7
7
  init_config
@@ -5,7 +5,7 @@ import {
5
5
  import {
6
6
  getClient,
7
7
  init_database
8
- } from "./chunk-ZJ7N6BNZ.js";
8
+ } from "./chunk-2G6QGXVX.js";
9
9
 
10
10
  // src/lib/global-procedures.ts
11
11
  init_database();
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  init_session_kill_telemetry,
3
3
  recordSessionKill
4
- } from "./chunk-ARQQ4T47.js";
4
+ } from "./chunk-K7W7UJ6Z.js";
5
5
  import {
6
6
  init_notifications,
7
7
  init_task_scope,
@@ -9,7 +9,7 @@ import {
9
9
  sessionScopeFilter,
10
10
  verifyPaneAtCapacity,
11
11
  writeNotification
12
- } from "./chunk-CTEENZVZ.js";
12
+ } from "./chunk-FQZY4M45.js";
13
13
  import {
14
14
  init_session_registry,
15
15
  listSessions
@@ -21,7 +21,7 @@ import {
21
21
  import {
22
22
  getClient,
23
23
  init_database
24
- } from "./chunk-ZJ7N6BNZ.js";
24
+ } from "./chunk-2G6QGXVX.js";
25
25
  import {
26
26
  init_employees,
27
27
  isCoordinatorName
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  getClient,
3
3
  init_database
4
- } from "./chunk-ZJ7N6BNZ.js";
4
+ } from "./chunk-2G6QGXVX.js";
5
5
 
6
6
  // src/lib/token-spend.ts
7
7
  init_database();
@@ -117,6 +117,7 @@ var TOOL_CATEGORIES = {
117
117
  registerQueryCompanyBrain: "gateway",
118
118
  registerCompanyActions: "gateway",
119
119
  registerWorkflowTool: "gateway",
120
+ registerFileCopy: "core",
120
121
  // admin
121
122
  registerConfig: "admin",
122
123
  registerDeployClient: "admin",