@askexenow/exe-os 0.9.57 → 0.9.59

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
@@ -1274,6 +1274,18 @@ async function mergeHooks(packageRoot, homeDir = os5.homedir()) {
1274
1274
  ];
1275
1275
  let added = 0;
1276
1276
  let skipped = 0;
1277
+ const legacyPostToolMarkers = [
1278
+ "dist/hooks/ingest.js",
1279
+ "dist/hooks/error-recall.js",
1280
+ "dist/hooks/ingest-worker.js"
1281
+ ];
1282
+ const postToolGroups = settings.hooks["PostToolUse"];
1283
+ if (Array.isArray(postToolGroups)) {
1284
+ settings.hooks["PostToolUse"] = postToolGroups.map((g) => ({
1285
+ ...g,
1286
+ hooks: g.hooks.filter((h) => !legacyPostToolMarkers.some((marker) => h.command.includes(marker)))
1287
+ })).filter((g) => g.hooks.length > 0);
1288
+ }
1277
1289
  for (const { event, group, marker } of hooksToRegister) {
1278
1290
  if (!settings.hooks[event]) {
1279
1291
  settings.hooks[event] = [];
@@ -13362,17 +13374,12 @@ function spawnEmployee(employeeName, exeSession, projectDir, opts) {
13362
13374
  const hasAgentFlag = claudeSupportsAgentFlag();
13363
13375
  if (hasAgentFlag) {
13364
13376
  const symlink = ensureAgentSymlink(employeeName);
13365
- if (symlink.action === "created" || symlink.action === "already_correct") {
13366
- identityFlag = ` --agent ${employeeName}`;
13367
- } else if (existsSync24(identityPath2)) {
13368
- identityFlag = ` --append-system-prompt-file ${identityPath2}`;
13369
- legacyFallbackWarned = true;
13377
+ identityFlag = ` --agent ${employeeName}`;
13378
+ if (symlink.action === "conflict") {
13370
13379
  process.stderr.write(
13371
- `[tmux-routing] WARN: ~/.claude/agents/${employeeName}.md is not the exe-os identity symlink (${symlink.conflict}). Using authoritative ${identityPath2} via --append-system-prompt-file.
13380
+ `[tmux-routing] WARN: respecting customer-owned ~/.claude/agents/${employeeName}.md (${symlink.conflict}); not overwriting or bypassing it.
13372
13381
  `
13373
13382
  );
13374
- } else {
13375
- identityFlag = ` --agent ${employeeName}`;
13376
13383
  }
13377
13384
  } else if (existsSync24(identityPath2)) {
13378
13385
  identityFlag = ` --append-system-prompt-file ${identityPath2}`;
@@ -8127,17 +8127,12 @@ function spawnEmployee(employeeName, exeSession, projectDir, opts) {
8127
8127
  const hasAgentFlag = claudeSupportsAgentFlag();
8128
8128
  if (hasAgentFlag) {
8129
8129
  const symlink = ensureAgentSymlink(employeeName);
8130
- if (symlink.action === "created" || symlink.action === "already_correct") {
8131
- identityFlag = ` --agent ${employeeName}`;
8132
- } else if (existsSync17(identityPath)) {
8133
- identityFlag = ` --append-system-prompt-file ${identityPath}`;
8134
- legacyFallbackWarned = true;
8130
+ identityFlag = ` --agent ${employeeName}`;
8131
+ if (symlink.action === "conflict") {
8135
8132
  process.stderr.write(
8136
- `[tmux-routing] WARN: ~/.claude/agents/${employeeName}.md is not the exe-os identity symlink (${symlink.conflict}). Using authoritative ${identityPath} via --append-system-prompt-file.
8133
+ `[tmux-routing] WARN: respecting customer-owned ~/.claude/agents/${employeeName}.md (${symlink.conflict}); not overwriting or bypassing it.
8137
8134
  `
8138
8135
  );
8139
- } else {
8140
- identityFlag = ` --agent ${employeeName}`;
8141
8136
  }
8142
8137
  } else if (existsSync17(identityPath)) {
8143
8138
  identityFlag = ` --append-system-prompt-file ${identityPath}`;
@@ -6402,17 +6402,12 @@ function spawnEmployee(employeeName2, exeSession2, projectDir2, opts) {
6402
6402
  const hasAgentFlag = claudeSupportsAgentFlag();
6403
6403
  if (hasAgentFlag) {
6404
6404
  const symlink = ensureAgentSymlink(employeeName2);
6405
- if (symlink.action === "created" || symlink.action === "already_correct") {
6406
- identityFlag = ` --agent ${employeeName2}`;
6407
- } else if (existsSync15(identityPath)) {
6408
- identityFlag = ` --append-system-prompt-file ${identityPath}`;
6409
- legacyFallbackWarned = true;
6405
+ identityFlag = ` --agent ${employeeName2}`;
6406
+ if (symlink.action === "conflict") {
6410
6407
  process.stderr.write(
6411
- `[tmux-routing] WARN: ~/.claude/agents/${employeeName2}.md is not the exe-os identity symlink (${symlink.conflict}). Using authoritative ${identityPath} via --append-system-prompt-file.
6408
+ `[tmux-routing] WARN: respecting customer-owned ~/.claude/agents/${employeeName2}.md (${symlink.conflict}); not overwriting or bypassing it.
6412
6409
  `
6413
6410
  );
6414
- } else {
6415
- identityFlag = ` --agent ${employeeName2}`;
6416
6411
  }
6417
6412
  } else if (existsSync15(identityPath)) {
6418
6413
  identityFlag = ` --append-system-prompt-file ${identityPath}`;
@@ -11745,17 +11745,12 @@ function spawnEmployee(employeeName, exeSession, projectDir, opts) {
11745
11745
  const hasAgentFlag = claudeSupportsAgentFlag();
11746
11746
  if (hasAgentFlag) {
11747
11747
  const symlink = ensureAgentSymlink(employeeName);
11748
- if (symlink.action === "created" || symlink.action === "already_correct") {
11749
- identityFlag = ` --agent ${employeeName}`;
11750
- } else if (existsSync17(identityPath)) {
11751
- identityFlag = ` --append-system-prompt-file ${identityPath}`;
11752
- legacyFallbackWarned = true;
11748
+ identityFlag = ` --agent ${employeeName}`;
11749
+ if (symlink.action === "conflict") {
11753
11750
  process.stderr.write(
11754
- `[tmux-routing] WARN: ~/.claude/agents/${employeeName}.md is not the exe-os identity symlink (${symlink.conflict}). Using authoritative ${identityPath} via --append-system-prompt-file.
11751
+ `[tmux-routing] WARN: respecting customer-owned ~/.claude/agents/${employeeName}.md (${symlink.conflict}); not overwriting or bypassing it.
11755
11752
  `
11756
11753
  );
11757
- } else {
11758
- identityFlag = ` --agent ${employeeName}`;
11759
11754
  }
11760
11755
  } else if (existsSync17(identityPath)) {
11761
11756
  identityFlag = ` --append-system-prompt-file ${identityPath}`;
@@ -1721,6 +1721,18 @@ async function mergeHooks(packageRoot, homeDir = os7.homedir()) {
1721
1721
  ];
1722
1722
  let added = 0;
1723
1723
  let skipped = 0;
1724
+ const legacyPostToolMarkers = [
1725
+ "dist/hooks/ingest.js",
1726
+ "dist/hooks/error-recall.js",
1727
+ "dist/hooks/ingest-worker.js"
1728
+ ];
1729
+ const postToolGroups = settings.hooks["PostToolUse"];
1730
+ if (Array.isArray(postToolGroups)) {
1731
+ settings.hooks["PostToolUse"] = postToolGroups.map((g) => ({
1732
+ ...g,
1733
+ hooks: g.hooks.filter((h) => !legacyPostToolMarkers.some((marker) => h.command.includes(marker)))
1734
+ })).filter((g) => g.hooks.length > 0);
1735
+ }
1724
1736
  for (const { event, group, marker } of hooksToRegister) {
1725
1737
  if (!settings.hooks[event]) {
1726
1738
  settings.hooks[event] = [];
@@ -8019,17 +8019,12 @@ function spawnEmployee(employeeName, exeSession2, projectDir, opts) {
8019
8019
  const hasAgentFlag = claudeSupportsAgentFlag();
8020
8020
  if (hasAgentFlag) {
8021
8021
  const symlink = ensureAgentSymlink(employeeName);
8022
- if (symlink.action === "created" || symlink.action === "already_correct") {
8023
- identityFlag = ` --agent ${employeeName}`;
8024
- } else if (existsSync17(identityPath)) {
8025
- identityFlag = ` --append-system-prompt-file ${identityPath}`;
8026
- legacyFallbackWarned = true;
8022
+ identityFlag = ` --agent ${employeeName}`;
8023
+ if (symlink.action === "conflict") {
8027
8024
  process.stderr.write(
8028
- `[tmux-routing] WARN: ~/.claude/agents/${employeeName}.md is not the exe-os identity symlink (${symlink.conflict}). Using authoritative ${identityPath} via --append-system-prompt-file.
8025
+ `[tmux-routing] WARN: respecting customer-owned ~/.claude/agents/${employeeName}.md (${symlink.conflict}); not overwriting or bypassing it.
8029
8026
  `
8030
8027
  );
8031
- } else {
8032
- identityFlag = ` --agent ${employeeName}`;
8033
8028
  }
8034
8029
  } else if (existsSync17(identityPath)) {
8035
8030
  identityFlag = ` --append-system-prompt-file ${identityPath}`;
@@ -6319,17 +6319,12 @@ function spawnEmployee(employeeName, exeSession, projectDir, opts) {
6319
6319
  const hasAgentFlag = claudeSupportsAgentFlag();
6320
6320
  if (hasAgentFlag) {
6321
6321
  const symlink = ensureAgentSymlink(employeeName);
6322
- if (symlink.action === "created" || symlink.action === "already_correct") {
6323
- identityFlag = ` --agent ${employeeName}`;
6324
- } else if (existsSync15(identityPath)) {
6325
- identityFlag = ` --append-system-prompt-file ${identityPath}`;
6326
- legacyFallbackWarned = true;
6322
+ identityFlag = ` --agent ${employeeName}`;
6323
+ if (symlink.action === "conflict") {
6327
6324
  process.stderr.write(
6328
- `[tmux-routing] WARN: ~/.claude/agents/${employeeName}.md is not the exe-os identity symlink (${symlink.conflict}). Using authoritative ${identityPath} via --append-system-prompt-file.
6325
+ `[tmux-routing] WARN: respecting customer-owned ~/.claude/agents/${employeeName}.md (${symlink.conflict}); not overwriting or bypassing it.
6329
6326
  `
6330
6327
  );
6331
- } else {
6332
- identityFlag = ` --agent ${employeeName}`;
6333
6328
  }
6334
6329
  } else if (existsSync15(identityPath)) {
6335
6330
  identityFlag = ` --append-system-prompt-file ${identityPath}`;
@@ -1059,6 +1059,18 @@ async function mergeHooks(packageRoot, homeDir = os5.homedir()) {
1059
1059
  ];
1060
1060
  let added = 0;
1061
1061
  let skipped = 0;
1062
+ const legacyPostToolMarkers = [
1063
+ "dist/hooks/ingest.js",
1064
+ "dist/hooks/error-recall.js",
1065
+ "dist/hooks/ingest-worker.js"
1066
+ ];
1067
+ const postToolGroups = settings.hooks["PostToolUse"];
1068
+ if (Array.isArray(postToolGroups)) {
1069
+ settings.hooks["PostToolUse"] = postToolGroups.map((g) => ({
1070
+ ...g,
1071
+ hooks: g.hooks.filter((h) => !legacyPostToolMarkers.some((marker) => h.command.includes(marker)))
1072
+ })).filter((g) => g.hooks.length > 0);
1073
+ }
1062
1074
  for (const { event, group, marker } of hooksToRegister) {
1063
1075
  if (!settings.hooks[event]) {
1064
1076
  settings.hooks[event] = [];
@@ -7797,17 +7797,12 @@ function spawnEmployee(employeeName, exeSession, projectDir, opts) {
7797
7797
  const hasAgentFlag = claudeSupportsAgentFlag();
7798
7798
  if (hasAgentFlag) {
7799
7799
  const symlink = ensureAgentSymlink(employeeName);
7800
- if (symlink.action === "created" || symlink.action === "already_correct") {
7801
- identityFlag = ` --agent ${employeeName}`;
7802
- } else if (existsSync15(identityPath)) {
7803
- identityFlag = ` --append-system-prompt-file ${identityPath}`;
7804
- legacyFallbackWarned = true;
7800
+ identityFlag = ` --agent ${employeeName}`;
7801
+ if (symlink.action === "conflict") {
7805
7802
  process.stderr.write(
7806
- `[tmux-routing] WARN: ~/.claude/agents/${employeeName}.md is not the exe-os identity symlink (${symlink.conflict}). Using authoritative ${identityPath} via --append-system-prompt-file.
7803
+ `[tmux-routing] WARN: respecting customer-owned ~/.claude/agents/${employeeName}.md (${symlink.conflict}); not overwriting or bypassing it.
7807
7804
  `
7808
7805
  );
7809
- } else {
7810
- identityFlag = ` --agent ${employeeName}`;
7811
7806
  }
7812
7807
  } else if (existsSync15(identityPath)) {
7813
7808
  identityFlag = ` --append-system-prompt-file ${identityPath}`;
@@ -6390,17 +6390,12 @@ function spawnEmployee(employeeName, exeSession, projectDir, opts) {
6390
6390
  const hasAgentFlag = claudeSupportsAgentFlag();
6391
6391
  if (hasAgentFlag) {
6392
6392
  const symlink = ensureAgentSymlink(employeeName);
6393
- if (symlink.action === "created" || symlink.action === "already_correct") {
6394
- identityFlag = ` --agent ${employeeName}`;
6395
- } else if (existsSync15(identityPath)) {
6396
- identityFlag = ` --append-system-prompt-file ${identityPath}`;
6397
- legacyFallbackWarned = true;
6393
+ identityFlag = ` --agent ${employeeName}`;
6394
+ if (symlink.action === "conflict") {
6398
6395
  process.stderr.write(
6399
- `[tmux-routing] WARN: ~/.claude/agents/${employeeName}.md is not the exe-os identity symlink (${symlink.conflict}). Using authoritative ${identityPath} via --append-system-prompt-file.
6396
+ `[tmux-routing] WARN: respecting customer-owned ~/.claude/agents/${employeeName}.md (${symlink.conflict}); not overwriting or bypassing it.
6400
6397
  `
6401
6398
  );
6402
- } else {
6403
- identityFlag = ` --agent ${employeeName}`;
6404
6399
  }
6405
6400
  } else if (existsSync15(identityPath)) {
6406
6401
  identityFlag = ` --append-system-prompt-file ${identityPath}`;
@@ -9640,17 +9640,12 @@ function spawnEmployee(employeeName, exeSession, projectDir, opts) {
9640
9640
  const hasAgentFlag = claudeSupportsAgentFlag();
9641
9641
  if (hasAgentFlag) {
9642
9642
  const symlink = ensureAgentSymlink(employeeName);
9643
- if (symlink.action === "created" || symlink.action === "already_correct") {
9644
- identityFlag = ` --agent ${employeeName}`;
9645
- } else if (existsSync17(identityPath)) {
9646
- identityFlag = ` --append-system-prompt-file ${identityPath}`;
9647
- legacyFallbackWarned = true;
9643
+ identityFlag = ` --agent ${employeeName}`;
9644
+ if (symlink.action === "conflict") {
9648
9645
  process.stderr.write(
9649
- `[tmux-routing] WARN: ~/.claude/agents/${employeeName}.md is not the exe-os identity symlink (${symlink.conflict}). Using authoritative ${identityPath} via --append-system-prompt-file.
9646
+ `[tmux-routing] WARN: respecting customer-owned ~/.claude/agents/${employeeName}.md (${symlink.conflict}); not overwriting or bypassing it.
9650
9647
  `
9651
9648
  );
9652
- } else {
9653
- identityFlag = ` --agent ${employeeName}`;
9654
9649
  }
9655
9650
  } else if (existsSync17(identityPath)) {
9656
9651
  identityFlag = ` --append-system-prompt-file ${identityPath}`;
@@ -6781,17 +6781,12 @@ function spawnEmployee(employeeName, exeSession, projectDir, opts) {
6781
6781
  const hasAgentFlag = claudeSupportsAgentFlag();
6782
6782
  if (hasAgentFlag) {
6783
6783
  const symlink = ensureAgentSymlink(employeeName);
6784
- if (symlink.action === "created" || symlink.action === "already_correct") {
6785
- identityFlag = ` --agent ${employeeName}`;
6786
- } else if (existsSync15(identityPath)) {
6787
- identityFlag = ` --append-system-prompt-file ${identityPath}`;
6788
- legacyFallbackWarned = true;
6784
+ identityFlag = ` --agent ${employeeName}`;
6785
+ if (symlink.action === "conflict") {
6789
6786
  process.stderr.write(
6790
- `[tmux-routing] WARN: ~/.claude/agents/${employeeName}.md is not the exe-os identity symlink (${symlink.conflict}). Using authoritative ${identityPath} via --append-system-prompt-file.
6787
+ `[tmux-routing] WARN: respecting customer-owned ~/.claude/agents/${employeeName}.md (${symlink.conflict}); not overwriting or bypassing it.
6791
6788
  `
6792
6789
  );
6793
- } else {
6794
- identityFlag = ` --agent ${employeeName}`;
6795
6790
  }
6796
6791
  } else if (existsSync15(identityPath)) {
6797
6792
  identityFlag = ` --append-system-prompt-file ${identityPath}`;
@@ -6384,17 +6384,12 @@ function spawnEmployee(employeeName, exeSession, projectDir, opts) {
6384
6384
  const hasAgentFlag = claudeSupportsAgentFlag();
6385
6385
  if (hasAgentFlag) {
6386
6386
  const symlink = ensureAgentSymlink(employeeName);
6387
- if (symlink.action === "created" || symlink.action === "already_correct") {
6388
- identityFlag = ` --agent ${employeeName}`;
6389
- } else if (existsSync15(identityPath)) {
6390
- identityFlag = ` --append-system-prompt-file ${identityPath}`;
6391
- legacyFallbackWarned = true;
6387
+ identityFlag = ` --agent ${employeeName}`;
6388
+ if (symlink.action === "conflict") {
6392
6389
  process.stderr.write(
6393
- `[tmux-routing] WARN: ~/.claude/agents/${employeeName}.md is not the exe-os identity symlink (${symlink.conflict}). Using authoritative ${identityPath} via --append-system-prompt-file.
6390
+ `[tmux-routing] WARN: respecting customer-owned ~/.claude/agents/${employeeName}.md (${symlink.conflict}); not overwriting or bypassing it.
6394
6391
  `
6395
6392
  );
6396
- } else {
6397
- identityFlag = ` --agent ${employeeName}`;
6398
6393
  }
6399
6394
  } else if (existsSync15(identityPath)) {
6400
6395
  identityFlag = ` --append-system-prompt-file ${identityPath}`;