@askexenow/exe-os 0.9.18 → 0.9.19

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.
package/dist/bin/cli.js CHANGED
@@ -12345,11 +12345,7 @@ function notifyCoordinatorTaskCompletion(coordinatorSession, agentName, taskTitl
12345
12345
  }
12346
12346
  } catch {
12347
12347
  }
12348
- execSync8(
12349
- `tmux send-keys -t ${JSON.stringify(coordinatorSession)} '/exe-intercom' Enter`,
12350
- { timeout: 3e3 }
12351
- );
12352
- logIntercom(`COMPLETION \u2192 ${coordinatorSession} (${agentName} completed "${taskTitle.slice(0, 50)}")`);
12348
+ logIntercom(`COMPLETION \u2192 ${coordinatorSession} (${agentName} completed "${taskTitle.slice(0, 50)}") \u2014 review count unavailable, skipping intercom (hook will catch it)`);
12353
12349
  return true;
12354
12350
  } catch {
12355
12351
  return false;
@@ -7563,11 +7563,7 @@ function notifyCoordinatorTaskCompletion(coordinatorSession, agentName, taskTitl
7563
7563
  }
7564
7564
  } catch {
7565
7565
  }
7566
- execSync7(
7567
- `tmux send-keys -t ${JSON.stringify(coordinatorSession)} '/exe-intercom' Enter`,
7568
- { timeout: 3e3 }
7569
- );
7570
- logIntercom(`COMPLETION \u2192 ${coordinatorSession} (${agentName} completed "${taskTitle.slice(0, 50)}")`);
7566
+ logIntercom(`COMPLETION \u2192 ${coordinatorSession} (${agentName} completed "${taskTitle.slice(0, 50)}") \u2014 review count unavailable, skipping intercom (hook will catch it)`);
7571
7567
  return true;
7572
7568
  } catch {
7573
7569
  return false;
@@ -6143,11 +6143,7 @@ function notifyCoordinatorTaskCompletion(coordinatorSession, agentName, taskTitl
6143
6143
  }
6144
6144
  } catch {
6145
6145
  }
6146
- execSync6(
6147
- `tmux send-keys -t ${JSON.stringify(coordinatorSession)} '/exe-intercom' Enter`,
6148
- { timeout: 3e3 }
6149
- );
6150
- logIntercom(`COMPLETION \u2192 ${coordinatorSession} (${agentName} completed "${taskTitle.slice(0, 50)}")`);
6146
+ logIntercom(`COMPLETION \u2192 ${coordinatorSession} (${agentName} completed "${taskTitle.slice(0, 50)}") \u2014 review count unavailable, skipping intercom (hook will catch it)`);
6151
6147
  return true;
6152
6148
  } catch {
6153
6149
  return false;
@@ -10980,11 +10980,7 @@ function notifyCoordinatorTaskCompletion(coordinatorSession, agentName, taskTitl
10980
10980
  }
10981
10981
  } catch {
10982
10982
  }
10983
- execSync6(
10984
- `tmux send-keys -t ${JSON.stringify(coordinatorSession)} '/exe-intercom' Enter`,
10985
- { timeout: 3e3 }
10986
- );
10987
- logIntercom(`COMPLETION \u2192 ${coordinatorSession} (${agentName} completed "${taskTitle.slice(0, 50)}")`);
10983
+ logIntercom(`COMPLETION \u2192 ${coordinatorSession} (${agentName} completed "${taskTitle.slice(0, 50)}") \u2014 review count unavailable, skipping intercom (hook will catch it)`);
10988
10984
  return true;
10989
10985
  } catch {
10990
10986
  return false;
@@ -4891,6 +4891,79 @@ function identityPathFor(agent) {
4891
4891
  }
4892
4892
  return exactPath;
4893
4893
  }
4894
+ var DEFAULT_ROLE_MCP_MAP = {
4895
+ coo: ["exe-browser", "brave-search"],
4896
+ cto: ["brave-search"],
4897
+ "principal engineer": [],
4898
+ "staff code reviewer": [],
4899
+ cmo: ["exe-browser", "brave-search"],
4900
+ "content production specialist": ["exe-create"],
4901
+ "ai product lead": ["brave-search"]
4902
+ };
4903
+ var ALWAYS_INCLUDE_SERVERS = ["exe-mem"];
4904
+ function collectAllMcpServers() {
4905
+ const servers = {};
4906
+ const sources = [
4907
+ path11.join(os7.homedir(), ".claude.json"),
4908
+ path11.join(os7.homedir(), ".claude", "settings.json")
4909
+ ];
4910
+ for (const src of sources) {
4911
+ try {
4912
+ if (!existsSync10(src)) continue;
4913
+ const data = JSON.parse(readFileSync7(src, "utf-8"));
4914
+ const block = data.mcpServers;
4915
+ if (!block) continue;
4916
+ for (const [name, cfg] of Object.entries(block)) {
4917
+ if (!servers[name]) servers[name] = cfg;
4918
+ }
4919
+ } catch {
4920
+ }
4921
+ }
4922
+ return servers;
4923
+ }
4924
+ function generateLeanMcpConfig(agent, role) {
4925
+ try {
4926
+ const allServers = collectAllMcpServers();
4927
+ if (Object.keys(allServers).length === 0) return null;
4928
+ const normalizedRole = role.toLowerCase();
4929
+ const extraServers = DEFAULT_ROLE_MCP_MAP[normalizedRole] ?? [];
4930
+ const allowedNames = /* @__PURE__ */ new Set([...ALWAYS_INCLUDE_SERVERS, ...extraServers]);
4931
+ const leanServers = {};
4932
+ for (const [name, cfg] of Object.entries(allServers)) {
4933
+ if (allowedNames.has(name)) {
4934
+ leanServers[name] = cfg;
4935
+ }
4936
+ }
4937
+ if (Object.keys(leanServers).length >= Object.keys(allServers).length) return null;
4938
+ if (!leanServers["exe-mem"]) {
4939
+ const packageRoot = path11.resolve(path11.dirname(new URL(import.meta.url).pathname), "..", "..");
4940
+ leanServers["exe-mem"] = {
4941
+ type: "stdio",
4942
+ command: "node",
4943
+ args: [path11.join(packageRoot, "dist", "mcp", "server.js")],
4944
+ env: {}
4945
+ };
4946
+ }
4947
+ const configDir = path11.join(os7.homedir(), ".exe-os", "mcp-configs");
4948
+ mkdirSync5(configDir, { recursive: true });
4949
+ const configPath = path11.join(configDir, `${agent}-lean.json`);
4950
+ writeFileSync6(configPath, JSON.stringify({ mcpServers: leanServers }, null, 2), "utf-8");
4951
+ const saved = Object.keys(allServers).length - Object.keys(leanServers).length;
4952
+ if (saved > 0) {
4953
+ process.stderr.write(
4954
+ `[exe-launch-agent] lean MCP: ${agent} (${role}) gets ${Object.keys(leanServers).length}/${Object.keys(allServers).length} servers (${saved} skipped)
4955
+ `
4956
+ );
4957
+ }
4958
+ return configPath;
4959
+ } catch (err) {
4960
+ process.stderr.write(
4961
+ `[exe-launch-agent] lean MCP config generation failed: ${err instanceof Error ? err.message : String(err)}
4962
+ `
4963
+ );
4964
+ return null;
4965
+ }
4966
+ }
4894
4967
  function leanMcpConfigFor(agent) {
4895
4968
  const p = path11.join(os7.homedir(), ".exe-os", "mcp-configs", `${agent}-lean.json`);
4896
4969
  return existsSync10(p) ? p : null;
@@ -5148,16 +5221,10 @@ async function main() {
5148
5221
  }
5149
5222
  }
5150
5223
  }
5151
- const plan = buildLaunchPlan(agent, behaviorsPath, passthrough, hasAgentFlag, provider);
5152
5224
  const memoryAgent = baseAgentName(agent);
5153
- process.env.AGENT_ID = memoryAgent;
5154
- if (!process.env.EXE_SESSION_KEY) {
5155
- process.env.EXE_SESSION_KEY = `launcher-${Date.now()}-${process.pid}`;
5156
- }
5157
- process.env.EXE_RUNTIME = "claude";
5158
5225
  const empRole = (() => {
5159
5226
  try {
5160
- const emps = __require("fs").readFileSync(
5227
+ const emps = readFileSync7(
5161
5228
  path11.join(os7.homedir(), ".exe-os", "exe-employees.json"),
5162
5229
  "utf-8"
5163
5230
  );
@@ -5169,6 +5236,13 @@ async function main() {
5169
5236
  return "employee";
5170
5237
  }
5171
5238
  })();
5239
+ generateLeanMcpConfig(memoryAgent, empRole);
5240
+ const plan = buildLaunchPlan(agent, behaviorsPath, passthrough, hasAgentFlag, provider);
5241
+ process.env.AGENT_ID = memoryAgent;
5242
+ if (!process.env.EXE_SESSION_KEY) {
5243
+ process.env.EXE_SESSION_KEY = `launcher-${Date.now()}-${process.pid}`;
5244
+ }
5245
+ process.env.EXE_RUNTIME = "claude";
5172
5246
  process.env.AGENT_ROLE = empRole;
5173
5247
  try {
5174
5248
  const { writeActiveAgent: writeActiveAgent2 } = await Promise.resolve().then(() => (init_active_agent(), active_agent_exports));
@@ -5206,6 +5280,7 @@ export {
5206
5280
  applyProviderEnv,
5207
5281
  buildLaunchPlan,
5208
5282
  ccSupportsFlag,
5283
+ generateLeanMcpConfig,
5209
5284
  parseBasename,
5210
5285
  resolveAgent
5211
5286
  };
@@ -7276,11 +7276,7 @@ function notifyCoordinatorTaskCompletion(coordinatorSession, agentName2, taskTit
7276
7276
  }
7277
7277
  } catch {
7278
7278
  }
7279
- execSync6(
7280
- `tmux send-keys -t ${JSON.stringify(coordinatorSession)} '/exe-intercom' Enter`,
7281
- { timeout: 3e3 }
7282
- );
7283
- logIntercom(`COMPLETION \u2192 ${coordinatorSession} (${agentName2} completed "${taskTitle.slice(0, 50)}")`);
7279
+ logIntercom(`COMPLETION \u2192 ${coordinatorSession} (${agentName2} completed "${taskTitle.slice(0, 50)}") \u2014 review count unavailable, skipping intercom (hook will catch it)`);
7284
7280
  return true;
7285
7281
  } catch {
7286
7282
  return false;
@@ -6060,11 +6060,7 @@ function notifyCoordinatorTaskCompletion(coordinatorSession, agentName, taskTitl
6060
6060
  }
6061
6061
  } catch {
6062
6062
  }
6063
- execSync6(
6064
- `tmux send-keys -t ${JSON.stringify(coordinatorSession)} '/exe-intercom' Enter`,
6065
- { timeout: 3e3 }
6066
- );
6067
- logIntercom(`COMPLETION \u2192 ${coordinatorSession} (${agentName} completed "${taskTitle.slice(0, 50)}")`);
6063
+ logIntercom(`COMPLETION \u2192 ${coordinatorSession} (${agentName} completed "${taskTitle.slice(0, 50)}") \u2014 review count unavailable, skipping intercom (hook will catch it)`);
6068
6064
  return true;
6069
6065
  } catch {
6070
6066
  return false;
@@ -7053,11 +7053,7 @@ function notifyCoordinatorTaskCompletion(coordinatorSession, agentName, taskTitl
7053
7053
  }
7054
7054
  } catch {
7055
7055
  }
7056
- execSync6(
7057
- `tmux send-keys -t ${JSON.stringify(coordinatorSession)} '/exe-intercom' Enter`,
7058
- { timeout: 3e3 }
7059
- );
7060
- logIntercom(`COMPLETION \u2192 ${coordinatorSession} (${agentName} completed "${taskTitle.slice(0, 50)}")`);
7056
+ logIntercom(`COMPLETION \u2192 ${coordinatorSession} (${agentName} completed "${taskTitle.slice(0, 50)}") \u2014 review count unavailable, skipping intercom (hook will catch it)`);
7061
7057
  return true;
7062
7058
  } catch {
7063
7059
  return false;
@@ -6131,11 +6131,7 @@ function notifyCoordinatorTaskCompletion(coordinatorSession, agentName, taskTitl
6131
6131
  }
6132
6132
  } catch {
6133
6133
  }
6134
- execSync6(
6135
- `tmux send-keys -t ${JSON.stringify(coordinatorSession)} '/exe-intercom' Enter`,
6136
- { timeout: 3e3 }
6137
- );
6138
- logIntercom(`COMPLETION \u2192 ${coordinatorSession} (${agentName} completed "${taskTitle.slice(0, 50)}")`);
6134
+ logIntercom(`COMPLETION \u2192 ${coordinatorSession} (${agentName} completed "${taskTitle.slice(0, 50)}") \u2014 review count unavailable, skipping intercom (hook will catch it)`);
6139
6135
  return true;
6140
6136
  } catch {
6141
6137
  return false;
@@ -8896,11 +8896,7 @@ function notifyCoordinatorTaskCompletion(coordinatorSession, agentName, taskTitl
8896
8896
  }
8897
8897
  } catch {
8898
8898
  }
8899
- execSync6(
8900
- `tmux send-keys -t ${JSON.stringify(coordinatorSession)} '/exe-intercom' Enter`,
8901
- { timeout: 3e3 }
8902
- );
8903
- logIntercom(`COMPLETION \u2192 ${coordinatorSession} (${agentName} completed "${taskTitle.slice(0, 50)}")`);
8899
+ logIntercom(`COMPLETION \u2192 ${coordinatorSession} (${agentName} completed "${taskTitle.slice(0, 50)}") \u2014 review count unavailable, skipping intercom (hook will catch it)`);
8904
8900
  return true;
8905
8901
  } catch {
8906
8902
  return false;
@@ -5327,11 +5327,7 @@ function notifyCoordinatorTaskCompletion(coordinatorSession, agentName, taskTitl
5327
5327
  }
5328
5328
  } catch {
5329
5329
  }
5330
- execSync4(
5331
- `tmux send-keys -t ${JSON.stringify(coordinatorSession)} '/exe-intercom' Enter`,
5332
- { timeout: 3e3 }
5333
- );
5334
- logIntercom(`COMPLETION \u2192 ${coordinatorSession} (${agentName} completed "${taskTitle.slice(0, 50)}")`);
5330
+ logIntercom(`COMPLETION \u2192 ${coordinatorSession} (${agentName} completed "${taskTitle.slice(0, 50)}") \u2014 review count unavailable, skipping intercom (hook will catch it)`);
5335
5331
  return true;
5336
5332
  } catch {
5337
5333
  return false;
@@ -6059,11 +6059,7 @@ function notifyCoordinatorTaskCompletion(coordinatorSession, agentName, taskTitl
6059
6059
  }
6060
6060
  } catch {
6061
6061
  }
6062
- execSync6(
6063
- `tmux send-keys -t ${JSON.stringify(coordinatorSession)} '/exe-intercom' Enter`,
6064
- { timeout: 3e3 }
6065
- );
6066
- logIntercom(`COMPLETION \u2192 ${coordinatorSession} (${agentName} completed "${taskTitle.slice(0, 50)}")`);
6062
+ logIntercom(`COMPLETION \u2192 ${coordinatorSession} (${agentName} completed "${taskTitle.slice(0, 50)}") \u2014 review count unavailable, skipping intercom (hook will catch it)`);
6067
6063
  return true;
6068
6064
  } catch {
6069
6065
  return false;
@@ -6043,11 +6043,7 @@ function notifyCoordinatorTaskCompletion(coordinatorSession, agentName, taskTitl
6043
6043
  }
6044
6044
  } catch {
6045
6045
  }
6046
- execSync7(
6047
- `tmux send-keys -t ${JSON.stringify(coordinatorSession)} '/exe-intercom' Enter`,
6048
- { timeout: 3e3 }
6049
- );
6050
- logIntercom(`COMPLETION \u2192 ${coordinatorSession} (${agentName} completed "${taskTitle.slice(0, 50)}")`);
6046
+ logIntercom(`COMPLETION \u2192 ${coordinatorSession} (${agentName} completed "${taskTitle.slice(0, 50)}") \u2014 review count unavailable, skipping intercom (hook will catch it)`);
6051
6047
  return true;
6052
6048
  } catch {
6053
6049
  return false;
@@ -8597,11 +8597,7 @@ function notifyCoordinatorTaskCompletion(coordinatorSession, agentName, taskTitl
8597
8597
  }
8598
8598
  } catch {
8599
8599
  }
8600
- execSync9(
8601
- `tmux send-keys -t ${JSON.stringify(coordinatorSession)} '/exe-intercom' Enter`,
8602
- { timeout: 3e3 }
8603
- );
8604
- logIntercom(`COMPLETION \u2192 ${coordinatorSession} (${agentName} completed "${taskTitle.slice(0, 50)}")`);
8600
+ logIntercom(`COMPLETION \u2192 ${coordinatorSession} (${agentName} completed "${taskTitle.slice(0, 50)}") \u2014 review count unavailable, skipping intercom (hook will catch it)`);
8605
8601
  return true;
8606
8602
  } catch {
8607
8603
  return false;
@@ -10152,14 +10148,13 @@ process.stdin.on("end", async () => {
10152
10148
  const agentName = baseAgentName2(session.split("-")[0] ?? session);
10153
10149
  if (isSessionBusy2(session) || hasInProgressTask(agentName)) return true;
10154
10150
  const rtConfig = getAgentRuntime2(agentName);
10151
+ const nudgeMsg = "You have pending notifications. Run list_tasks to check for assigned work.";
10152
+ transport.sendKeys(session, nudgeMsg);
10155
10153
  if (rtConfig.runtime === "codex" || rtConfig.runtime === "opencode") {
10156
- transport.sendKeys(session, "You have new notifications. Call list_tasks to check for assigned work.");
10157
10154
  try {
10158
10155
  execSync10(`tmux send-keys -t ${session} Tab`, { encoding: "utf8", timeout: 2e3 });
10159
10156
  } catch {
10160
10157
  }
10161
- } else {
10162
- transport.sendKeys(session, "/exe-intercom");
10163
10158
  }
10164
10159
  return true;
10165
10160
  } catch {
@@ -6252,11 +6252,7 @@ function notifyCoordinatorTaskCompletion(coordinatorSession, agentName, taskTitl
6252
6252
  }
6253
6253
  } catch {
6254
6254
  }
6255
- execSync7(
6256
- `tmux send-keys -t ${JSON.stringify(coordinatorSession)} '/exe-intercom' Enter`,
6257
- { timeout: 3e3 }
6258
- );
6259
- logIntercom(`COMPLETION \u2192 ${coordinatorSession} (${agentName} completed "${taskTitle.slice(0, 50)}")`);
6255
+ logIntercom(`COMPLETION \u2192 ${coordinatorSession} (${agentName} completed "${taskTitle.slice(0, 50)}") \u2014 review count unavailable, skipping intercom (hook will catch it)`);
6260
6256
  return true;
6261
6257
  } catch {
6262
6258
  return false;
package/dist/index.js CHANGED
@@ -6432,11 +6432,7 @@ function notifyCoordinatorTaskCompletion(coordinatorSession, agentName, taskTitl
6432
6432
  }
6433
6433
  } catch {
6434
6434
  }
6435
- execSync7(
6436
- `tmux send-keys -t ${JSON.stringify(coordinatorSession)} '/exe-intercom' Enter`,
6437
- { timeout: 3e3 }
6438
- );
6439
- logIntercom(`COMPLETION \u2192 ${coordinatorSession} (${agentName} completed "${taskTitle.slice(0, 50)}")`);
6435
+ logIntercom(`COMPLETION \u2192 ${coordinatorSession} (${agentName} completed "${taskTitle.slice(0, 50)}") \u2014 review count unavailable, skipping intercom (hook will catch it)`);
6440
6436
  return true;
6441
6437
  } catch {
6442
6438
  return false;
@@ -8058,11 +8058,7 @@ function notifyCoordinatorTaskCompletion(coordinatorSession, agentName, taskTitl
8058
8058
  }
8059
8059
  } catch {
8060
8060
  }
8061
- execSync7(
8062
- `tmux send-keys -t ${JSON.stringify(coordinatorSession)} '/exe-intercom' Enter`,
8063
- { timeout: 3e3 }
8064
- );
8065
- logIntercom(`COMPLETION \u2192 ${coordinatorSession} (${agentName} completed "${taskTitle.slice(0, 50)}")`);
8061
+ logIntercom(`COMPLETION \u2192 ${coordinatorSession} (${agentName} completed "${taskTitle.slice(0, 50)}") \u2014 review count unavailable, skipping intercom (hook will catch it)`);
8066
8062
  return true;
8067
8063
  } catch {
8068
8064
  return false;
@@ -12447,15 +12443,10 @@ function isIdlePane(paneText) {
12447
12443
  }
12448
12444
  function sendNudge(transport, session, runtime, action) {
12449
12445
  const message = action === "nudge" ? "You have open tasks. Run list_tasks to find them." : "You have more open tasks to dispatch. Run list_tasks.";
12450
- if (runtime === "codex") {
12451
- if (transport.sendKeysLiteral) {
12452
- transport.sendKeysLiteral(session, message);
12453
- } else {
12454
- transport.sendKeys(session, message);
12455
- }
12446
+ if (transport.sendKeysLiteral) {
12447
+ transport.sendKeysLiteral(session, message);
12456
12448
  } else {
12457
- transport.sendKeys(session, "/exe-intercom");
12458
- transport.sendKeys(session, "Enter");
12449
+ transport.sendKeys(session, message);
12459
12450
  }
12460
12451
  process.stderr.write(
12461
12452
  `[enforcement-audit] SENT nudge to ${session} (${runtime}, ${action})
@@ -14215,14 +14206,15 @@ function startIntercomQueueDrain() {
14215
14206
  const { baseAgentName: baseAgentName2 } = (init_employees(), __toCommonJS(employees_exports));
14216
14207
  const agentName = baseAgentName2(session.split("-")[0] ?? session);
14217
14208
  const rtConfig = getAgentRuntime2(agentName);
14209
+ const nudgeMsg = "You have pending notifications. Run list_tasks to check for assigned work.";
14218
14210
  if (rtConfig.runtime === "codex" || rtConfig.runtime === "opencode") {
14219
- transport.sendKeys(session, "You have new notifications. Call list_tasks to check for assigned work.");
14211
+ transport.sendKeys(session, nudgeMsg);
14220
14212
  try {
14221
14213
  __require("child_process").execSync(`tmux send-keys -t ${session} Tab`, { timeout: 2e3 });
14222
14214
  } catch {
14223
14215
  }
14224
14216
  } else {
14225
- transport.sendKeys(session, "/exe-intercom");
14217
+ transport.sendKeys(session, nudgeMsg);
14226
14218
  }
14227
14219
  return true;
14228
14220
  } catch {
package/dist/lib/tasks.js CHANGED
@@ -2154,11 +2154,7 @@ function notifyCoordinatorTaskCompletion(coordinatorSession, agentName, taskTitl
2154
2154
  }
2155
2155
  } catch {
2156
2156
  }
2157
- execSync4(
2158
- `tmux send-keys -t ${JSON.stringify(coordinatorSession)} '/exe-intercom' Enter`,
2159
- { timeout: 3e3 }
2160
- );
2161
- logIntercom(`COMPLETION \u2192 ${coordinatorSession} (${agentName} completed "${taskTitle.slice(0, 50)}")`);
2157
+ logIntercom(`COMPLETION \u2192 ${coordinatorSession} (${agentName} completed "${taskTitle.slice(0, 50)}") \u2014 review count unavailable, skipping intercom (hook will catch it)`);
2162
2158
  return true;
2163
2159
  } catch {
2164
2160
  return false;
@@ -4179,11 +4179,7 @@ function notifyCoordinatorTaskCompletion(coordinatorSession, agentName, taskTitl
4179
4179
  }
4180
4180
  } catch {
4181
4181
  }
4182
- execSync6(
4183
- `tmux send-keys -t ${JSON.stringify(coordinatorSession)} '/exe-intercom' Enter`,
4184
- { timeout: 3e3 }
4185
- );
4186
- logIntercom(`COMPLETION \u2192 ${coordinatorSession} (${agentName} completed "${taskTitle.slice(0, 50)}")`);
4182
+ logIntercom(`COMPLETION \u2192 ${coordinatorSession} (${agentName} completed "${taskTitle.slice(0, 50)}") \u2014 review count unavailable, skipping intercom (hook will catch it)`);
4187
4183
  return true;
4188
4184
  } catch {
4189
4185
  return false;
@@ -8503,11 +8503,7 @@ function notifyCoordinatorTaskCompletion(coordinatorSession, agentName, taskTitl
8503
8503
  }
8504
8504
  } catch {
8505
8505
  }
8506
- execSync7(
8507
- `tmux send-keys -t ${JSON.stringify(coordinatorSession)} '/exe-intercom' Enter`,
8508
- { timeout: 3e3 }
8509
- );
8510
- logIntercom(`COMPLETION \u2192 ${coordinatorSession} (${agentName} completed "${taskTitle.slice(0, 50)}")`);
8506
+ logIntercom(`COMPLETION \u2192 ${coordinatorSession} (${agentName} completed "${taskTitle.slice(0, 50)}") \u2014 review count unavailable, skipping intercom (hook will catch it)`);
8511
8507
  return true;
8512
8508
  } catch {
8513
8509
  return false;
@@ -2393,11 +2393,7 @@ function notifyCoordinatorTaskCompletion(coordinatorSession, agentName, taskTitl
2393
2393
  }
2394
2394
  } catch {
2395
2395
  }
2396
- execSync4(
2397
- `tmux send-keys -t ${JSON.stringify(coordinatorSession)} '/exe-intercom' Enter`,
2398
- { timeout: 3e3 }
2399
- );
2400
- logIntercom(`COMPLETION \u2192 ${coordinatorSession} (${agentName} completed "${taskTitle.slice(0, 50)}")`);
2396
+ logIntercom(`COMPLETION \u2192 ${coordinatorSession} (${agentName} completed "${taskTitle.slice(0, 50)}") \u2014 review count unavailable, skipping intercom (hook will catch it)`);
2401
2397
  return true;
2402
2398
  } catch {
2403
2399
  return false;
@@ -2157,11 +2157,7 @@ function notifyCoordinatorTaskCompletion(coordinatorSession, agentName, taskTitl
2157
2157
  }
2158
2158
  } catch {
2159
2159
  }
2160
- execSync4(
2161
- `tmux send-keys -t ${JSON.stringify(coordinatorSession)} '/exe-intercom' Enter`,
2162
- { timeout: 3e3 }
2163
- );
2164
- logIntercom(`COMPLETION \u2192 ${coordinatorSession} (${agentName} completed "${taskTitle.slice(0, 50)}")`);
2160
+ logIntercom(`COMPLETION \u2192 ${coordinatorSession} (${agentName} completed "${taskTitle.slice(0, 50)}") \u2014 review count unavailable, skipping intercom (hook will catch it)`);
2165
2161
  return true;
2166
2162
  } catch {
2167
2163
  return false;
@@ -6193,11 +6193,7 @@ function notifyCoordinatorTaskCompletion(coordinatorSession, agentName, taskTitl
6193
6193
  }
6194
6194
  } catch {
6195
6195
  }
6196
- execSync7(
6197
- `tmux send-keys -t ${JSON.stringify(coordinatorSession)} '/exe-intercom' Enter`,
6198
- { timeout: 3e3 }
6199
- );
6200
- logIntercom(`COMPLETION \u2192 ${coordinatorSession} (${agentName} completed "${taskTitle.slice(0, 50)}")`);
6196
+ logIntercom(`COMPLETION \u2192 ${coordinatorSession} (${agentName} completed "${taskTitle.slice(0, 50)}") \u2014 review count unavailable, skipping intercom (hook will catch it)`);
6201
6197
  return true;
6202
6198
  } catch {
6203
6199
  return false;
package/dist/tui/App.js CHANGED
@@ -6797,11 +6797,7 @@ function notifyCoordinatorTaskCompletion(coordinatorSession, agentName, taskTitl
6797
6797
  }
6798
6798
  } catch {
6799
6799
  }
6800
- execSync7(
6801
- `tmux send-keys -t ${JSON.stringify(coordinatorSession)} '/exe-intercom' Enter`,
6802
- { timeout: 3e3 }
6803
- );
6804
- logIntercom(`COMPLETION \u2192 ${coordinatorSession} (${agentName} completed "${taskTitle.slice(0, 50)}")`);
6800
+ logIntercom(`COMPLETION \u2192 ${coordinatorSession} (${agentName} completed "${taskTitle.slice(0, 50)}") \u2014 review count unavailable, skipping intercom (hook will catch it)`);
6805
6801
  return true;
6806
6802
  } catch {
6807
6803
  return false;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@askexenow/exe-os",
3
- "version": "0.9.18",
3
+ "version": "0.9.19",
4
4
  "description": "AI employee operating system — persistent memory, task management, and multi-agent coordination for Claude Code.",
5
5
  "license": "CC-BY-NC-4.0",
6
6
  "type": "module",