@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
@@ -3,11 +3,11 @@ import {
3
3
  buildRawVisibilityFilter,
4
4
  buildWikiScopeFilter,
5
5
  searchMemories
6
- } from "./chunk-4ADWX7S6.js";
6
+ } from "./chunk-OVFU26ZD.js";
7
7
  import {
8
8
  getClient,
9
9
  init_database
10
- } from "./chunk-ZJ7N6BNZ.js";
10
+ } from "./chunk-2G6QGXVX.js";
11
11
 
12
12
  // src/lib/hybrid-search.ts
13
13
  init_database();
@@ -118,7 +118,7 @@ async function hybridSearch(queryText, agentId, options) {
118
118
  queryVector ? searchMemories(queryVector, agentId, fetchOptions) : Promise.resolve([]),
119
119
  includeStructuredCards ? (async () => {
120
120
  try {
121
- const { searchMemoryCards } = await import("./memory-cards-MA5SIQKN.js");
121
+ const { searchMemoryCards } = await import("./memory-cards-H2GNWDF2.js");
122
122
  return await searchMemoryCards(effectiveQuery, agentId, fetchOptions);
123
123
  } catch {
124
124
  return [];
@@ -127,7 +127,7 @@ async function hybridSearch(queryText, agentId, options) {
127
127
  // Reflection insights: patterns, contradictions, summaries across sessions
128
128
  includeStructuredCards ? (async () => {
129
129
  try {
130
- const { searchReflections } = await import("./memory-reflection-VHCEW3UN.js");
130
+ const { searchReflections } = await import("./memory-reflection-J3LYZM5Y.js");
131
131
  const insights = await searchReflections(effectiveQuery, agentId, 5);
132
132
  return insights.map((ins) => ({
133
133
  id: ins.id,
@@ -174,7 +174,7 @@ async function hybridSearch(queryText, agentId, options) {
174
174
  let entityBoostRan = false;
175
175
  if (merged.length > 0) {
176
176
  try {
177
- const { applyEntityBoost } = await import("./entity-boost-CSKKVLPV.js");
177
+ const { applyEntityBoost } = await import("./entity-boost-CZZVTBSY.js");
178
178
  const boosted = await applyEntityBoost(merged, effectiveQuery, getClient());
179
179
  merged = boosted.results;
180
180
  graphContextMap = boosted.graphContext;
@@ -403,7 +403,7 @@ async function lightweightSearch(queryText, agentId, options) {
403
403
  }
404
404
  if (options?.includeStructuredCards !== true) return results;
405
405
  try {
406
- const { searchMemoryCards } = await import("./memory-cards-MA5SIQKN.js");
406
+ const { searchMemoryCards } = await import("./memory-cards-H2GNWDF2.js");
407
407
  const cardResults = await searchMemoryCards(queryText, agentId, options);
408
408
  if (cardResults.length > 0) {
409
409
  return rrfMergeMulti([results, cardResults], limit, RRF_K, [1, 0.85]);
@@ -3,11 +3,11 @@ import {
3
3
  init_task_scope,
4
4
  logTaskCreated,
5
5
  sessionScopeFilter
6
- } from "./chunk-CTEENZVZ.js";
6
+ } from "./chunk-FQZY4M45.js";
7
7
  import {
8
8
  getClient,
9
9
  init_database
10
- } from "./chunk-ZJ7N6BNZ.js";
10
+ } from "./chunk-2G6QGXVX.js";
11
11
  import {
12
12
  init_employees,
13
13
  isCoordinatorName,
@@ -192,7 +192,7 @@ async function createTaskCore(input) {
192
192
  if (isCoordinatorSession) {
193
193
  earlySessionScope = resolved;
194
194
  } else {
195
- const { getSessionProject } = await import("./session-scope-WJRSCUKP.js");
195
+ const { getSessionProject } = await import("./session-scope-QZTSCYLT.js");
196
196
  const sessionProject = getSessionProject(resolved);
197
197
  if (sessionProject && sessionProject !== input.projectName) {
198
198
  scopeMismatchWarning = `session/project mismatch: session "${resolved}" owns "${sessionProject}" but task targets "${input.projectName}". Routed to default scope.`;
@@ -481,6 +481,22 @@ async function updateTaskStatus(input) {
481
481
  const row = await resolveTask(client, input.taskId);
482
482
  const taskId = String(row.id);
483
483
  const taskFile = String(row.task_file);
484
+ const VALID_TRANSITIONS = {
485
+ open: ["in_progress", "done", "cancelled", "blocked"],
486
+ in_progress: ["done", "needs_review", "blocked", "cancelled"],
487
+ done: ["needs_review", "closed"],
488
+ blocked: ["open", "in_progress", "cancelled"],
489
+ needs_review: ["closed", "in_progress", "open"],
490
+ cancelled: ["open"]
491
+ // allow re-opening cancelled tasks
492
+ };
493
+ const currentStatus = String(row.status);
494
+ const validNext = VALID_TRANSITIONS[currentStatus];
495
+ if (validNext && !validNext.includes(input.status)) {
496
+ throw new Error(
497
+ `Invalid task transition: ${currentStatus} \u2192 ${input.status}. Valid transitions from "${currentStatus}": [${validNext.join(", ")}]`
498
+ );
499
+ }
484
500
  if (input.status === "done" && String(row.assigned_by) === "system" && taskFile.includes("review-")) {
485
501
  process.stderr.write(
486
502
  `[updateTask] Review task "${String(row.title)}" being marked done (assigned to ${String(row.assigned_to)})
@@ -1,3 +1,10 @@
1
+ import {
2
+ fastDbInit
3
+ } from "./chunk-KJMSHBWT.js";
4
+ import {
5
+ init_task_scope,
6
+ sessionScopeFilter
7
+ } from "./chunk-FQZY4M45.js";
1
8
  import {
2
9
  formatStatusAll,
3
10
  formatStatusDeep,
@@ -5,17 +12,10 @@ import {
5
12
  inTmux,
6
13
  init_tmux_status
7
14
  } from "./chunk-DC4ZD76Y.js";
8
- import {
9
- fastDbInit
10
- } from "./chunk-FR5FFQ6G.js";
11
- import {
12
- init_task_scope,
13
- sessionScopeFilter
14
- } from "./chunk-CTEENZVZ.js";
15
15
  import {
16
16
  getClient,
17
17
  init_database
18
- } from "./chunk-ZJ7N6BNZ.js";
18
+ } from "./chunk-2G6QGXVX.js";
19
19
  import {
20
20
  init_employees,
21
21
  isCoordinatorRole,
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  sendMessage
3
- } from "./chunk-REFUKSCU.js";
3
+ } from "./chunk-PB5RHF74.js";
4
4
  import {
5
5
  getActiveAgent
6
6
  } from "./chunk-TCOTFMDP.js";
@@ -10,6 +10,10 @@ import {
10
10
  getTransport,
11
11
  init_transport
12
12
  } from "./chunk-R4M6XCMU.js";
13
+ import {
14
+ init_tmux_status,
15
+ tmux_status_exports
16
+ } from "./chunk-DC4ZD76Y.js";
13
17
  import {
14
18
  DEFAULT_PROVIDER,
15
19
  PROVIDER_TABLE,
@@ -32,7 +36,7 @@ import {
32
36
  PlanLimitError,
33
37
  assertEmployeeLimitSync,
34
38
  init_plan_limits
35
- } from "./chunk-ARZWYVYC.js";
39
+ } from "./chunk-GRLQJ27R.js";
36
40
  import {
37
41
  getSessionKey,
38
42
  init_session_key
@@ -48,7 +52,7 @@ import {
48
52
  import {
49
53
  getClient,
50
54
  init_database
51
- } from "./chunk-ZJ7N6BNZ.js";
55
+ } from "./chunk-2G6QGXVX.js";
52
56
  import {
53
57
  ensureAgentSymlink,
54
58
  init_agent_symlinks
@@ -1148,7 +1152,7 @@ async function verifyPaneAtCapacity(sessionName) {
1148
1152
  reason: `capture-pane failed: ${err instanceof Error ? err.message : String(err)}`
1149
1153
  };
1150
1154
  }
1151
- const { isAtCapacity } = await import("./capacity-monitor-PFHHXTEN.js");
1155
+ const { isAtCapacity } = await import("./capacity-monitor-56DTRWOS.js");
1152
1156
  if (!isAtCapacity(pane)) {
1153
1157
  return {
1154
1158
  atCapacity: false,
@@ -1405,6 +1409,19 @@ function ensureEmployee(employeeName, exeSession, projectDir, opts) {
1405
1409
  return { status: "failed", sessionName: "", error: err.message };
1406
1410
  }
1407
1411
  }
1412
+ try {
1413
+ const MAX_CONCURRENT = Number(process.env.EXE_MAX_SESSIONS) || 10;
1414
+ const { listTmuxSessions } = (init_tmux_status(), __toCommonJS(tmux_status_exports));
1415
+ const liveSessions = listTmuxSessions().filter((s) => !isExeSession(s));
1416
+ if (liveSessions.length >= MAX_CONCURRENT) {
1417
+ return {
1418
+ status: "failed",
1419
+ sessionName: "",
1420
+ error: `Global session cap reached (${liveSessions.length}/${MAX_CONCURRENT}). Set EXE_MAX_SESSIONS to increase.`
1421
+ };
1422
+ }
1423
+ } catch {
1424
+ }
1408
1425
  if (employeeName.includes("-")) {
1409
1426
  const bare = employeeName.split("-")[0].replace(/\d+$/, "");
1410
1427
  return {
@@ -2,7 +2,7 @@ import {
2
2
  getClient,
3
3
  init_database,
4
4
  isInitialized
5
- } from "./chunk-ZJ7N6BNZ.js";
5
+ } from "./chunk-2G6QGXVX.js";
6
6
  import {
7
7
  EMPLOYEES_PATH,
8
8
  init_employees,
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  init_task_scope,
3
3
  sessionScopeFilter
4
- } from "./chunk-CTEENZVZ.js";
4
+ } from "./chunk-FQZY4M45.js";
5
5
 
6
6
  // src/lib/git-task-sweep.ts
7
7
  init_task_scope();
@@ -180,7 +180,7 @@ async function sweepTasks(projectName, options = {}) {
180
180
  }
181
181
  if (!dryRun) {
182
182
  try {
183
- const { updateTaskStatus } = await import("./tasks-crud-DUNJJUV3.js");
183
+ const { updateTaskStatus } = await import("./tasks-crud-MDCY6JHU.js");
184
184
  await updateTaskStatus({
185
185
  taskId: task.id,
186
186
  status: "needs_review",
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  clean,
3
3
  stableId
4
- } from "./chunk-KI3UEJUR.js";
4
+ } from "./chunk-G3LVAJON.js";
5
5
 
6
6
  // src/lib/reflection-checkpoints.ts
7
7
  function parsePayload(payload) {
@@ -1,16 +1,16 @@
1
1
  import {
2
2
  init_tasks,
3
3
  updateTask
4
- } from "./chunk-J7LFCZMQ.js";
4
+ } from "./chunk-WTPYZG4I.js";
5
5
  import {
6
6
  TASK_ALREADY_CLAIMED_PREFIX,
7
7
  init_tasks_crud,
8
8
  resolveTask
9
- } from "./chunk-GISRZK6K.js";
9
+ } from "./chunk-EZ2TJX6O.js";
10
10
  import {
11
11
  getClient,
12
12
  init_database
13
- } from "./chunk-ZJ7N6BNZ.js";
13
+ } from "./chunk-2G6QGXVX.js";
14
14
  import {
15
15
  canCoordinate,
16
16
  init_employees
@@ -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
  __esm,
7
7
  __export
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  isCrdtSyncEnabled
3
- } from "./chunk-4AZA3DZM.js";
3
+ } from "./chunk-6AJ4KAAB.js";
4
4
  import {
5
5
  decryptSyncBlob,
6
6
  encryptSyncBlob,
@@ -10,7 +10,7 @@ import {
10
10
  import {
11
11
  getClient,
12
12
  init_database
13
- } from "./chunk-ZJ7N6BNZ.js";
13
+ } from "./chunk-2G6QGXVX.js";
14
14
  import {
15
15
  init_employees,
16
16
  loadEmployees,
@@ -447,7 +447,7 @@ async function cloudSync(config) {
447
447
  let pulled = 0;
448
448
  if (pullResult.records.length > 0) {
449
449
  if (isCrdtSyncEnabled()) {
450
- const { initCrdtDoc, importExistingMemories, readAllMemories } = await import("./crdt-sync-UUJDUXTJ.js");
450
+ const { initCrdtDoc, importExistingMemories, readAllMemories } = await import("./crdt-sync-SENINDKP.js");
451
451
  initCrdtDoc();
452
452
  importExistingMemories(
453
453
  pullResult.records.map((rec) => ({
@@ -468,11 +468,29 @@ async function cloudSync(config) {
468
468
  const pulledIds = new Set(pullResult.records.map((r) => String(r.id ?? "")));
469
469
  const merged = readAllMemories().filter((rec) => pulledIds.has(rec.id));
470
470
  const stmts = merged.map((rec) => ({
471
- sql: `INSERT OR REPLACE INTO memories
471
+ sql: `INSERT INTO memories
472
472
  (id, agent_id, agent_role, session_id, timestamp,
473
473
  tool_name, project_name, has_error, raw_text, version,
474
474
  author_device_id, scope)
475
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,
475
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
476
+ ON CONFLICT(id) DO UPDATE SET
477
+ agent_id = excluded.agent_id,
478
+ agent_role = excluded.agent_role,
479
+ session_id = excluded.session_id,
480
+ timestamp = excluded.timestamp,
481
+ tool_name = excluded.tool_name,
482
+ project_name = excluded.project_name,
483
+ has_error = excluded.has_error,
484
+ raw_text = excluded.raw_text,
485
+ version = excluded.version,
486
+ author_device_id = excluded.author_device_id,
487
+ scope = excluded.scope,
488
+ vector = COALESCE(memories.vector, excluded.vector),
489
+ importance = COALESCE(memories.importance, excluded.importance),
490
+ confidence = COALESCE(memories.confidence, excluded.confidence),
491
+ memory_type = COALESCE(memories.memory_type, excluded.memory_type),
492
+ tier = COALESCE(memories.tier, excluded.tier),
493
+ strength = COALESCE(memories.strength, excluded.strength)`,
476
494
  args: [
477
495
  sqlSafe(rec.id),
478
496
  sqlSafe(rec.agent_id),
@@ -514,11 +532,29 @@ async function cloudSync(config) {
514
532
  process.stderr.write("[cloud-sync] conflict detection query failed: " + (e instanceof Error ? e.message : String(e)) + "\n");
515
533
  }
516
534
  const stmts = pullResult.records.map((rec) => ({
517
- sql: `INSERT OR REPLACE INTO memories
535
+ sql: `INSERT INTO memories
518
536
  (id, agent_id, agent_role, session_id, timestamp,
519
537
  tool_name, project_name, has_error, raw_text, version,
520
538
  author_device_id, scope)
521
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,
539
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
540
+ ON CONFLICT(id) DO UPDATE SET
541
+ agent_id = excluded.agent_id,
542
+ agent_role = excluded.agent_role,
543
+ session_id = excluded.session_id,
544
+ timestamp = excluded.timestamp,
545
+ tool_name = excluded.tool_name,
546
+ project_name = excluded.project_name,
547
+ has_error = excluded.has_error,
548
+ raw_text = excluded.raw_text,
549
+ version = excluded.version,
550
+ author_device_id = excluded.author_device_id,
551
+ scope = excluded.scope,
552
+ vector = COALESCE(memories.vector, excluded.vector),
553
+ importance = COALESCE(memories.importance, excluded.importance),
554
+ confidence = COALESCE(memories.confidence, excluded.confidence),
555
+ memory_type = COALESCE(memories.memory_type, excluded.memory_type),
556
+ tier = COALESCE(memories.tier, excluded.tier),
557
+ strength = COALESCE(memories.strength, excluded.strength)`,
522
558
  args: [
523
559
  sqlSafe(rec.id),
524
560
  sqlSafe(rec.agent_id),
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  listReminders
3
- } from "./chunk-QKBDAHFM.js";
3
+ } from "./chunk-PFGFOALA.js";
4
4
 
5
5
  // src/mcp/tools/list-reminders.ts
6
6
  import { z } from "zod";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  vectorToBlob
3
- } from "./chunk-4ADWX7S6.js";
3
+ } from "./chunk-OVFU26ZD.js";
4
4
  import {
5
5
  init_employees,
6
6
  isCoordinatorName
@@ -47,6 +47,7 @@ function groupMemories(memories) {
47
47
  byDay.set(day, list);
48
48
  }
49
49
  for (const [day, dayMemories] of byDay) {
50
+ if (dayMemories.length < 3) continue;
50
51
  if (dayMemories.length <= 15) {
51
52
  clusters.push({
52
53
  agentId,
@@ -101,7 +102,7 @@ var DEFAULT_ROLE_PROMPT = `Extract EXACTLY THREE types of insights:
101
102
  3. OPEN QUESTIONS \u2014 things that seem unresolved or risky (at most 2)`;
102
103
  function buildConsolidationPrompt(cluster, agentRole) {
103
104
  const snippets = cluster.memories.map((m, i) => {
104
- const text = m.raw_text.length > 200 ? m.raw_text.slice(0, 200) + "..." : m.raw_text;
105
+ const text = m.raw_text.length > 2e3 ? m.raw_text.slice(0, 2e3) + "..." : m.raw_text;
105
106
  return `${i + 1}. [${m.tool_name}] ${text}`;
106
107
  }).join("\n");
107
108
  const rolePrompt = agentRole && ROLE_PROMPTS[agentRole] || DEFAULT_ROLE_PROMPT;
@@ -6,7 +6,7 @@ import {
6
6
  getCurrentSessionScope,
7
7
  init_task_scope,
8
8
  strictSessionScopeFilter
9
- } from "./chunk-CTEENZVZ.js";
9
+ } from "./chunk-FQZY4M45.js";
10
10
 
11
11
  // src/lib/session-events.ts
12
12
  init_task_scope();
@@ -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
  __esm
7
7
  } from "./chunk-KFQGP6VL.js";
@@ -13,6 +13,8 @@ var MessageQueue = class {
13
13
  enqueue(data) {
14
14
  this.pruneExpired();
15
15
  if (this.queue.length >= this.maxSize) {
16
+ process.stderr.write(`[msg-queue] Dropping oldest message (queue at ${this.maxSize} cap)
17
+ `);
16
18
  this.queue.shift();
17
19
  }
18
20
  this.queue.push({ data, enqueuedAt: Date.now() });