@askexenow/exe-os 0.9.24 → 0.9.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/dist/bin/cleanup-stale-review-tasks.js +1 -1
  2. package/dist/bin/cli.js +5 -1
  3. package/dist/bin/exe-agent-config.js +1 -1
  4. package/dist/bin/exe-boot.js +1 -1
  5. package/dist/bin/exe-call.js +1 -1
  6. package/dist/bin/exe-dispatch.js +1 -1
  7. package/dist/bin/exe-doctor.js +21 -4
  8. package/dist/bin/exe-gateway.js +1 -1
  9. package/dist/bin/exe-heartbeat.js +1 -1
  10. package/dist/bin/exe-launch-agent.js +1 -1
  11. package/dist/bin/exe-new-employee.js +5 -1
  12. package/dist/bin/exe-pending-messages.js +1 -1
  13. package/dist/bin/exe-pending-notifications.js +1 -1
  14. package/dist/bin/exe-pending-reviews.js +1 -1
  15. package/dist/bin/exe-session-cleanup.js +1 -1
  16. package/dist/bin/exe-settings.js +1 -1
  17. package/dist/bin/exe-start-codex.js +4 -2
  18. package/dist/bin/exe-start-opencode.js +1 -1
  19. package/dist/bin/exe-start.sh +24 -4
  20. package/dist/bin/exe-status.js +1 -1
  21. package/dist/bin/git-sweep.js +1 -1
  22. package/dist/bin/install.js +5 -1
  23. package/dist/bin/intercom-check.js +1 -1
  24. package/dist/bin/scan-tasks.js +1 -1
  25. package/dist/bin/setup.js +5 -1
  26. package/dist/gateway/index.js +1 -1
  27. package/dist/hooks/bug-report-worker.js +1 -1
  28. package/dist/hooks/codex-stop-task-finalizer.js +1 -1
  29. package/dist/hooks/commit-complete.js +1 -1
  30. package/dist/hooks/ingest.js +1 -1
  31. package/dist/hooks/post-compact.js +1 -1
  32. package/dist/hooks/pre-compact.js +1 -1
  33. package/dist/hooks/pre-tool-use.js +1 -1
  34. package/dist/hooks/prompt-submit.js +1 -1
  35. package/dist/hooks/session-end.js +1 -1
  36. package/dist/hooks/session-start.js +1 -1
  37. package/dist/hooks/stop.js +1 -1
  38. package/dist/hooks/subagent-stop.js +1 -1
  39. package/dist/hooks/summary-worker.js +1 -1
  40. package/dist/index.js +1 -1
  41. package/dist/lib/agent-config.js +1 -1
  42. package/dist/lib/consolidation.js +1 -1
  43. package/dist/lib/employees.js +1 -1
  44. package/dist/lib/exe-daemon.js +1 -1
  45. package/dist/lib/messaging.js +1 -1
  46. package/dist/lib/runtime-table.js +1 -1
  47. package/dist/lib/session-wrappers.js +4 -0
  48. package/dist/lib/tasks.js +1 -1
  49. package/dist/lib/tmux-routing.js +1 -1
  50. package/dist/mcp/server.js +24 -5
  51. package/dist/mcp/tools/create-task.js +1 -1
  52. package/dist/mcp/tools/list-tasks.js +1 -1
  53. package/dist/mcp/tools/send-message.js +1 -1
  54. package/dist/mcp/tools/update-task.js +1 -1
  55. package/dist/runtime/index.js +1 -1
  56. package/dist/tui/App.js +1 -1
  57. package/package.json +1 -1
@@ -4309,7 +4309,7 @@ var init_runtime_table = __esm({
4309
4309
  autoApproveFlag: "--dangerously-bypass-approvals-and-sandbox",
4310
4310
  inlineFlag: "--no-alt-screen",
4311
4311
  apiKeyEnv: "OPENAI_API_KEY",
4312
- defaultModel: "gpt-5.4"
4312
+ defaultModel: "gpt-5.5"
4313
4313
  },
4314
4314
  opencode: {
4315
4315
  binary: "opencode",
package/dist/bin/cli.js CHANGED
@@ -316,7 +316,7 @@ var init_runtime_table = __esm({
316
316
  autoApproveFlag: "--dangerously-bypass-approvals-and-sandbox",
317
317
  inlineFlag: "--no-alt-screen",
318
318
  apiKeyEnv: "OPENAI_API_KEY",
319
- defaultModel: "gpt-5.4"
319
+ defaultModel: "gpt-5.5"
320
320
  },
321
321
  opencode: {
322
322
  binary: "opencode",
@@ -14724,6 +14724,10 @@ exec "${exeStartDst}" "$0" "$@"
14724
14724
  writeFileSync18(wrapperPath, wrapperContent);
14725
14725
  chmodSync2(wrapperPath, 493);
14726
14726
  created++;
14727
+ const codexPath = path32.join(binDir, `${emp.name}${n}-codex`);
14728
+ writeFileSync18(codexPath, wrapperContent);
14729
+ chmodSync2(codexPath, 493);
14730
+ created++;
14727
14731
  }
14728
14732
  }
14729
14733
  const codexLauncherCandidates = [
@@ -133,7 +133,7 @@ var init_runtime_table = __esm({
133
133
  autoApproveFlag: "--dangerously-bypass-approvals-and-sandbox",
134
134
  inlineFlag: "--no-alt-screen",
135
135
  apiKeyEnv: "OPENAI_API_KEY",
136
- defaultModel: "gpt-5.4"
136
+ defaultModel: "gpt-5.5"
137
137
  },
138
138
  opencode: {
139
139
  binary: "opencode",
@@ -4041,7 +4041,7 @@ var init_runtime_table = __esm({
4041
4041
  autoApproveFlag: "--dangerously-bypass-approvals-and-sandbox",
4042
4042
  inlineFlag: "--no-alt-screen",
4043
4043
  apiKeyEnv: "OPENAI_API_KEY",
4044
- defaultModel: "gpt-5.4"
4044
+ defaultModel: "gpt-5.5"
4045
4045
  },
4046
4046
  opencode: {
4047
4047
  binary: "opencode",
@@ -138,7 +138,7 @@ var init_runtime_table = __esm({
138
138
  autoApproveFlag: "--dangerously-bypass-approvals-and-sandbox",
139
139
  inlineFlag: "--no-alt-screen",
140
140
  apiKeyEnv: "OPENAI_API_KEY",
141
- defaultModel: "gpt-5.4"
141
+ defaultModel: "gpt-5.5"
142
142
  },
143
143
  opencode: {
144
144
  binary: "opencode",
@@ -608,7 +608,7 @@ var init_runtime_table = __esm({
608
608
  autoApproveFlag: "--dangerously-bypass-approvals-and-sandbox",
609
609
  inlineFlag: "--no-alt-screen",
610
610
  apiKeyEnv: "OPENAI_API_KEY",
611
- defaultModel: "gpt-5.4"
611
+ defaultModel: "gpt-5.5"
612
612
  },
613
613
  opencode: {
614
614
  binary: "opencode",
@@ -3725,12 +3725,13 @@ async function detectConflicts(client, projectFilter, agentFilter2) {
3725
3725
 
3726
3726
  // src/bin/exe-doctor.ts
3727
3727
  function parseFlags(argv) {
3728
- const flags = { fix: false, dryRun: false, verbose: false };
3728
+ const flags = { fix: false, dryRun: false, verbose: false, conflicts: false };
3729
3729
  for (let i = 0; i < argv.length; i++) {
3730
3730
  const arg = argv[i];
3731
3731
  if (arg === "--fix") flags.fix = true;
3732
3732
  else if (arg === "--dry-run") flags.dryRun = true;
3733
3733
  else if (arg === "--verbose") flags.verbose = true;
3734
+ else if (arg === "--conflicts") flags.conflicts = true;
3734
3735
  else if (arg === "--agent" && argv[i + 1]) flags.agent = argv[++i];
3735
3736
  else if (arg === "--project" && argv[i + 1]) flags.project = argv[++i];
3736
3737
  }
@@ -3911,15 +3912,31 @@ function auditHookHealth() {
3911
3912
  return { logExists: true, totalLines, errorsLastHour, topPatterns };
3912
3913
  }
3913
3914
  async function runAudit(client, flags) {
3914
- const [stats, nullVectors, duplicates, bloated, fts, orphanedProjects, conflicts] = await Promise.all([
3915
+ const runConflicts = flags.conflicts || process.env.EXE_AUDIT_CONFLICTS === "1";
3916
+ const [stats, nullVectors, duplicates, bloated, fts, orphanedProjects] = await Promise.all([
3915
3917
  auditStats(client, flags),
3916
3918
  auditNullVectors(client, flags),
3917
3919
  auditDuplicates(client, flags),
3918
3920
  auditBloated(client, flags),
3919
3921
  auditFts(client),
3920
- auditOrphanedProjects(client),
3921
- detectConflicts(client, flags.project, flags.agent)
3922
+ auditOrphanedProjects(client)
3922
3923
  ]);
3924
+ let conflicts;
3925
+ if (runConflicts) {
3926
+ conflicts = await detectConflicts(client, flags.project, flags.agent);
3927
+ } else {
3928
+ conflicts = {
3929
+ candidateCount: 0,
3930
+ classified: 0,
3931
+ conflicts: 0,
3932
+ superseded: 0,
3933
+ agree: 0,
3934
+ unclassified: 0,
3935
+ pairs: [],
3936
+ skipped: true,
3937
+ skipReason: "Conflict detection skipped (O(n\xB2) on 97K memories). Use --conflicts flag to enable."
3938
+ };
3939
+ }
3923
3940
  const duplicateCount = duplicates.reduce((sum, d) => sum + d.delete_ids.length, 0);
3924
3941
  const hookHealth = auditHookHealth();
3925
3942
  return { stats, nullVectors, duplicates, duplicateCount, bloated, fts, orphanedProjects, conflicts, hookHealth };
@@ -682,7 +682,7 @@ var init_runtime_table = __esm({
682
682
  autoApproveFlag: "--dangerously-bypass-approvals-and-sandbox",
683
683
  inlineFlag: "--no-alt-screen",
684
684
  apiKeyEnv: "OPENAI_API_KEY",
685
- defaultModel: "gpt-5.4"
685
+ defaultModel: "gpt-5.5"
686
686
  },
687
687
  opencode: {
688
688
  binary: "opencode",
@@ -4328,7 +4328,7 @@ var init_runtime_table = __esm({
4328
4328
  autoApproveFlag: "--dangerously-bypass-approvals-and-sandbox",
4329
4329
  inlineFlag: "--no-alt-screen",
4330
4330
  apiKeyEnv: "OPENAI_API_KEY",
4331
- defaultModel: "gpt-5.4"
4331
+ defaultModel: "gpt-5.5"
4332
4332
  },
4333
4333
  opencode: {
4334
4334
  binary: "opencode",
@@ -314,7 +314,7 @@ var init_runtime_table = __esm({
314
314
  autoApproveFlag: "--dangerously-bypass-approvals-and-sandbox",
315
315
  inlineFlag: "--no-alt-screen",
316
316
  apiKeyEnv: "OPENAI_API_KEY",
317
- defaultModel: "gpt-5.4"
317
+ defaultModel: "gpt-5.5"
318
318
  },
319
319
  opencode: {
320
320
  binary: "opencode",
@@ -144,7 +144,7 @@ var init_runtime_table = __esm({
144
144
  autoApproveFlag: "--dangerously-bypass-approvals-and-sandbox",
145
145
  inlineFlag: "--no-alt-screen",
146
146
  apiKeyEnv: "OPENAI_API_KEY",
147
- defaultModel: "gpt-5.4"
147
+ defaultModel: "gpt-5.5"
148
148
  },
149
149
  opencode: {
150
150
  binary: "opencode",
@@ -2136,6 +2136,10 @@ exec "${exeStartDst}" "$0" "$@"
2136
2136
  writeFileSync(wrapperPath, wrapperContent);
2137
2137
  chmodSync(wrapperPath, 493);
2138
2138
  created++;
2139
+ const codexPath = path.join(binDir, `${emp.name}${n}-codex`);
2140
+ writeFileSync(codexPath, wrapperContent);
2141
+ chmodSync(codexPath, 493);
2142
+ created++;
2139
2143
  }
2140
2144
  }
2141
2145
  const codexLauncherCandidates = [
@@ -3024,7 +3024,7 @@ var init_runtime_table = __esm({
3024
3024
  autoApproveFlag: "--dangerously-bypass-approvals-and-sandbox",
3025
3025
  inlineFlag: "--no-alt-screen",
3026
3026
  apiKeyEnv: "OPENAI_API_KEY",
3027
- defaultModel: "gpt-5.4"
3027
+ defaultModel: "gpt-5.5"
3028
3028
  },
3029
3029
  opencode: {
3030
3030
  binary: "opencode",
@@ -3025,7 +3025,7 @@ var init_runtime_table = __esm({
3025
3025
  autoApproveFlag: "--dangerously-bypass-approvals-and-sandbox",
3026
3026
  inlineFlag: "--no-alt-screen",
3027
3027
  apiKeyEnv: "OPENAI_API_KEY",
3028
- defaultModel: "gpt-5.4"
3028
+ defaultModel: "gpt-5.5"
3029
3029
  },
3030
3030
  opencode: {
3031
3031
  binary: "opencode",
@@ -3025,7 +3025,7 @@ var init_runtime_table = __esm({
3025
3025
  autoApproveFlag: "--dangerously-bypass-approvals-and-sandbox",
3026
3026
  inlineFlag: "--no-alt-screen",
3027
3027
  apiKeyEnv: "OPENAI_API_KEY",
3028
- defaultModel: "gpt-5.4"
3028
+ defaultModel: "gpt-5.5"
3029
3029
  },
3030
3030
  opencode: {
3031
3031
  binary: "opencode",
@@ -4398,7 +4398,7 @@ var init_runtime_table = __esm({
4398
4398
  autoApproveFlag: "--dangerously-bypass-approvals-and-sandbox",
4399
4399
  inlineFlag: "--no-alt-screen",
4400
4400
  apiKeyEnv: "OPENAI_API_KEY",
4401
- defaultModel: "gpt-5.4"
4401
+ defaultModel: "gpt-5.5"
4402
4402
  },
4403
4403
  opencode: {
4404
4404
  binary: "opencode",
@@ -329,7 +329,7 @@ var init_runtime_table = __esm({
329
329
  autoApproveFlag: "--dangerously-bypass-approvals-and-sandbox",
330
330
  inlineFlag: "--no-alt-screen",
331
331
  apiKeyEnv: "OPENAI_API_KEY",
332
- defaultModel: "gpt-5.4"
332
+ defaultModel: "gpt-5.5"
333
333
  },
334
334
  opencode: {
335
335
  binary: "opencode",
@@ -3167,7 +3167,7 @@ var init_runtime_table = __esm({
3167
3167
  autoApproveFlag: "--dangerously-bypass-approvals-and-sandbox",
3168
3168
  inlineFlag: "--no-alt-screen",
3169
3169
  apiKeyEnv: "OPENAI_API_KEY",
3170
- defaultModel: "gpt-5.4"
3170
+ defaultModel: "gpt-5.5"
3171
3171
  },
3172
3172
  opencode: {
3173
3173
  binary: "opencode",
@@ -4622,7 +4622,9 @@ async function main() {
4622
4622
  try {
4623
4623
  const { getAgentRuntime: getAgentRuntime2 } = (init_agent_config(), __toCommonJS(agent_config_exports));
4624
4624
  const rtConfig = getAgentRuntime2(agent);
4625
- configModel = rtConfig.model;
4625
+ if (rtConfig.runtime === "codex") {
4626
+ configModel = rtConfig.model;
4627
+ }
4626
4628
  configReasoning = rtConfig.reasoning_effort;
4627
4629
  } catch {
4628
4630
  }
@@ -3156,7 +3156,7 @@ var init_runtime_table = __esm({
3156
3156
  autoApproveFlag: "--dangerously-bypass-approvals-and-sandbox",
3157
3157
  inlineFlag: "--no-alt-screen",
3158
3158
  apiKeyEnv: "OPENAI_API_KEY",
3159
- defaultModel: "gpt-5.4"
3159
+ defaultModel: "gpt-5.5"
3160
3160
  },
3161
3161
  opencode: {
3162
3162
  binary: "opencode",
@@ -18,13 +18,27 @@ ROSTER_PATH="${HOME}/.exe-os/exe-employees.json"
18
18
  INVOKED_AS="$(basename "${1:-exe-start}")"
19
19
  shift # Remove $0 passthrough; remaining args are user's
20
20
 
21
+ # Detect runtime suffix: {agent}1-codex -> runtime=codex, strip suffix
22
+ RUNTIME="claude"
23
+ CLEAN_NAME="$INVOKED_AS"
24
+ case "$INVOKED_AS" in
25
+ *-codex)
26
+ RUNTIME="codex"
27
+ CLEAN_NAME="$(echo "$INVOKED_AS" | sed 's/-codex$//')"
28
+ ;;
29
+ *-opencode)
30
+ RUNTIME="opencode"
31
+ CLEAN_NAME="$(echo "$INVOKED_AS" | sed 's/-opencode$//')"
32
+ ;;
33
+ esac
34
+
21
35
  # Extract name + number: {agent}1 -> {agent},1
22
- NAME="$(echo "$INVOKED_AS" | sed 's/[0-9]*$//')"
23
- NUM="$(echo "$INVOKED_AS" | grep -oE '[0-9]+$' || true)"
36
+ NAME="$(echo "$CLEAN_NAME" | sed 's/[0-9]*$//')"
37
+ NUM="$(echo "$CLEAN_NAME" | grep -oE '[0-9]+$' || true)"
24
38
 
25
39
  if [ -z "$NAME" ] || [ -z "$NUM" ]; then
26
40
  echo "Could not parse name and number from: $INVOKED_AS"
27
- echo " Expected format: {agent}1, {agent}2, etc."
41
+ echo " Expected format: {agent}1, {agent}2, {agent}1-codex, etc."
28
42
  exit 1
29
43
  fi
30
44
 
@@ -144,7 +158,13 @@ unset TMUX
144
158
 
145
159
  # Create session and launch COO with full identity + behaviors + bypass permissions
146
160
  tmux new-session -d -s "$SESSION" -c "$PWD"
147
- tmux send-keys -t "$SESSION" "exe-launch-agent --agent $COO_NAME" Enter
161
+ if [ "$RUNTIME" = "codex" ]; then
162
+ tmux send-keys -t "$SESSION" "exe-start-codex --agent $COO_NAME" Enter
163
+ elif [ "$RUNTIME" = "opencode" ]; then
164
+ tmux send-keys -t "$SESSION" "exe-start-opencode --agent $COO_NAME" Enter
165
+ else
166
+ tmux send-keys -t "$SESSION" "exe-launch-agent --agent $COO_NAME" Enter
167
+ fi
148
168
 
149
169
  # Attach user to session (-d detaches other clients to prevent rendering conflict)
150
170
  exec tmux attach -d -t "$SESSION"
@@ -4320,7 +4320,7 @@ var init_runtime_table = __esm({
4320
4320
  autoApproveFlag: "--dangerously-bypass-approvals-and-sandbox",
4321
4321
  inlineFlag: "--no-alt-screen",
4322
4322
  apiKeyEnv: "OPENAI_API_KEY",
4323
- defaultModel: "gpt-5.4"
4323
+ defaultModel: "gpt-5.5"
4324
4324
  },
4325
4325
  opencode: {
4326
4326
  binary: "opencode",
@@ -608,7 +608,7 @@ var init_runtime_table = __esm({
608
608
  autoApproveFlag: "--dangerously-bypass-approvals-and-sandbox",
609
609
  inlineFlag: "--no-alt-screen",
610
610
  apiKeyEnv: "OPENAI_API_KEY",
611
- defaultModel: "gpt-5.4"
611
+ defaultModel: "gpt-5.5"
612
612
  },
613
613
  opencode: {
614
614
  binary: "opencode",
@@ -144,7 +144,7 @@ var init_runtime_table = __esm({
144
144
  autoApproveFlag: "--dangerously-bypass-approvals-and-sandbox",
145
145
  inlineFlag: "--no-alt-screen",
146
146
  apiKeyEnv: "OPENAI_API_KEY",
147
- defaultModel: "gpt-5.4"
147
+ defaultModel: "gpt-5.5"
148
148
  },
149
149
  opencode: {
150
150
  binary: "opencode",
@@ -1766,6 +1766,10 @@ exec "${exeStartDst}" "$0" "$@"
1766
1766
  writeFileSync5(wrapperPath, wrapperContent);
1767
1767
  chmodSync2(wrapperPath, 493);
1768
1768
  created++;
1769
+ const codexPath = path7.join(binDir, `${emp.name}${n}-codex`);
1770
+ writeFileSync5(codexPath, wrapperContent);
1771
+ chmodSync2(codexPath, 493);
1772
+ created++;
1769
1773
  }
1770
1774
  }
1771
1775
  const codexLauncherCandidates = [
@@ -4548,7 +4548,7 @@ var init_runtime_table = __esm({
4548
4548
  autoApproveFlag: "--dangerously-bypass-approvals-and-sandbox",
4549
4549
  inlineFlag: "--no-alt-screen",
4550
4550
  apiKeyEnv: "OPENAI_API_KEY",
4551
- defaultModel: "gpt-5.4"
4551
+ defaultModel: "gpt-5.5"
4552
4552
  },
4553
4553
  opencode: {
4554
4554
  binary: "opencode",
@@ -620,7 +620,7 @@ var init_runtime_table = __esm({
620
620
  autoApproveFlag: "--dangerously-bypass-approvals-and-sandbox",
621
621
  inlineFlag: "--no-alt-screen",
622
622
  apiKeyEnv: "OPENAI_API_KEY",
623
- defaultModel: "gpt-5.4"
623
+ defaultModel: "gpt-5.5"
624
624
  },
625
625
  opencode: {
626
626
  binary: "opencode",
package/dist/bin/setup.js CHANGED
@@ -1554,7 +1554,7 @@ var init_runtime_table = __esm({
1554
1554
  autoApproveFlag: "--dangerously-bypass-approvals-and-sandbox",
1555
1555
  inlineFlag: "--no-alt-screen",
1556
1556
  apiKeyEnv: "OPENAI_API_KEY",
1557
- defaultModel: "gpt-5.4"
1557
+ defaultModel: "gpt-5.5"
1558
1558
  },
1559
1559
  opencode: {
1560
1560
  binary: "opencode",
@@ -6853,6 +6853,10 @@ exec "${exeStartDst}" "$0" "$@"
6853
6853
  writeFileSync9(wrapperPath, wrapperContent);
6854
6854
  chmodSync2(wrapperPath, 493);
6855
6855
  created++;
6856
+ const codexPath = path14.join(binDir, `${emp.name}${n}-codex`);
6857
+ writeFileSync9(codexPath, wrapperContent);
6858
+ chmodSync2(codexPath, 493);
6859
+ created++;
6856
6860
  }
6857
6861
  }
6858
6862
  const codexLauncherCandidates = [
@@ -681,7 +681,7 @@ var init_runtime_table = __esm({
681
681
  autoApproveFlag: "--dangerously-bypass-approvals-and-sandbox",
682
682
  inlineFlag: "--no-alt-screen",
683
683
  apiKeyEnv: "OPENAI_API_KEY",
684
- defaultModel: "gpt-5.4"
684
+ defaultModel: "gpt-5.5"
685
685
  },
686
686
  opencode: {
687
687
  binary: "opencode",
@@ -370,7 +370,7 @@ var init_runtime_table = __esm({
370
370
  autoApproveFlag: "--dangerously-bypass-approvals-and-sandbox",
371
371
  inlineFlag: "--no-alt-screen",
372
372
  apiKeyEnv: "OPENAI_API_KEY",
373
- defaultModel: "gpt-5.4"
373
+ defaultModel: "gpt-5.5"
374
374
  },
375
375
  opencode: {
376
376
  binary: "opencode",
@@ -4381,7 +4381,7 @@ var init_runtime_table = __esm({
4381
4381
  autoApproveFlag: "--dangerously-bypass-approvals-and-sandbox",
4382
4382
  inlineFlag: "--no-alt-screen",
4383
4383
  apiKeyEnv: "OPENAI_API_KEY",
4384
- defaultModel: "gpt-5.4"
4384
+ defaultModel: "gpt-5.5"
4385
4385
  },
4386
4386
  opencode: {
4387
4387
  binary: "opencode",
@@ -607,7 +607,7 @@ var init_runtime_table = __esm({
607
607
  autoApproveFlag: "--dangerously-bypass-approvals-and-sandbox",
608
608
  inlineFlag: "--no-alt-screen",
609
609
  apiKeyEnv: "OPENAI_API_KEY",
610
- defaultModel: "gpt-5.4"
610
+ defaultModel: "gpt-5.5"
611
611
  },
612
612
  opencode: {
613
613
  binary: "opencode",
@@ -268,7 +268,7 @@ var init_runtime_table = __esm({
268
268
  autoApproveFlag: "--dangerously-bypass-approvals-and-sandbox",
269
269
  inlineFlag: "--no-alt-screen",
270
270
  apiKeyEnv: "OPENAI_API_KEY",
271
- defaultModel: "gpt-5.4"
271
+ defaultModel: "gpt-5.5"
272
272
  },
273
273
  opencode: {
274
274
  binary: "opencode",
@@ -526,7 +526,7 @@ var init_runtime_table = __esm({
526
526
  autoApproveFlag: "--dangerously-bypass-approvals-and-sandbox",
527
527
  inlineFlag: "--no-alt-screen",
528
528
  apiKeyEnv: "OPENAI_API_KEY",
529
- defaultModel: "gpt-5.4"
529
+ defaultModel: "gpt-5.5"
530
530
  },
531
531
  opencode: {
532
532
  binary: "opencode",
@@ -678,7 +678,7 @@ var init_runtime_table = __esm({
678
678
  autoApproveFlag: "--dangerously-bypass-approvals-and-sandbox",
679
679
  inlineFlag: "--no-alt-screen",
680
680
  apiKeyEnv: "OPENAI_API_KEY",
681
- defaultModel: "gpt-5.4"
681
+ defaultModel: "gpt-5.5"
682
682
  },
683
683
  opencode: {
684
684
  binary: "opencode",
@@ -328,7 +328,7 @@ var init_runtime_table = __esm({
328
328
  autoApproveFlag: "--dangerously-bypass-approvals-and-sandbox",
329
329
  inlineFlag: "--no-alt-screen",
330
330
  apiKeyEnv: "OPENAI_API_KEY",
331
- defaultModel: "gpt-5.4"
331
+ defaultModel: "gpt-5.5"
332
332
  },
333
333
  opencode: {
334
334
  binary: "opencode",
@@ -379,7 +379,7 @@ var init_runtime_table = __esm({
379
379
  autoApproveFlag: "--dangerously-bypass-approvals-and-sandbox",
380
380
  inlineFlag: "--no-alt-screen",
381
381
  apiKeyEnv: "OPENAI_API_KEY",
382
- defaultModel: "gpt-5.4"
382
+ defaultModel: "gpt-5.5"
383
383
  },
384
384
  opencode: {
385
385
  binary: "opencode",
@@ -681,7 +681,7 @@ var init_runtime_table = __esm({
681
681
  autoApproveFlag: "--dangerously-bypass-approvals-and-sandbox",
682
682
  inlineFlag: "--no-alt-screen",
683
683
  apiKeyEnv: "OPENAI_API_KEY",
684
- defaultModel: "gpt-5.4"
684
+ defaultModel: "gpt-5.5"
685
685
  },
686
686
  opencode: {
687
687
  binary: "opencode",
@@ -370,7 +370,7 @@ var init_runtime_table = __esm({
370
370
  autoApproveFlag: "--dangerously-bypass-approvals-and-sandbox",
371
371
  inlineFlag: "--no-alt-screen",
372
372
  apiKeyEnv: "OPENAI_API_KEY",
373
- defaultModel: "gpt-5.4"
373
+ defaultModel: "gpt-5.5"
374
374
  },
375
375
  opencode: {
376
376
  binary: "opencode",
@@ -552,7 +552,7 @@ var init_runtime_table = __esm({
552
552
  autoApproveFlag: "--dangerously-bypass-approvals-and-sandbox",
553
553
  inlineFlag: "--no-alt-screen",
554
554
  apiKeyEnv: "OPENAI_API_KEY",
555
- defaultModel: "gpt-5.4"
555
+ defaultModel: "gpt-5.5"
556
556
  },
557
557
  opencode: {
558
558
  binary: "opencode",
@@ -533,7 +533,7 @@ var init_runtime_table = __esm({
533
533
  autoApproveFlag: "--dangerously-bypass-approvals-and-sandbox",
534
534
  inlineFlag: "--no-alt-screen",
535
535
  apiKeyEnv: "OPENAI_API_KEY",
536
- defaultModel: "gpt-5.4"
536
+ defaultModel: "gpt-5.5"
537
537
  },
538
538
  opencode: {
539
539
  binary: "opencode",
@@ -3824,7 +3824,7 @@ var init_runtime_table = __esm({
3824
3824
  autoApproveFlag: "--dangerously-bypass-approvals-and-sandbox",
3825
3825
  inlineFlag: "--no-alt-screen",
3826
3826
  apiKeyEnv: "OPENAI_API_KEY",
3827
- defaultModel: "gpt-5.4"
3827
+ defaultModel: "gpt-5.5"
3828
3828
  },
3829
3829
  opencode: {
3830
3830
  binary: "opencode",
package/dist/index.js CHANGED
@@ -315,7 +315,7 @@ var init_runtime_table = __esm({
315
315
  autoApproveFlag: "--dangerously-bypass-approvals-and-sandbox",
316
316
  inlineFlag: "--no-alt-screen",
317
317
  apiKeyEnv: "OPENAI_API_KEY",
318
- defaultModel: "gpt-5.4"
318
+ defaultModel: "gpt-5.5"
319
319
  },
320
320
  opencode: {
321
321
  binary: "opencode",
@@ -116,7 +116,7 @@ var RUNTIME_TABLE = {
116
116
  autoApproveFlag: "--dangerously-bypass-approvals-and-sandbox",
117
117
  inlineFlag: "--no-alt-screen",
118
118
  apiKeyEnv: "OPENAI_API_KEY",
119
- defaultModel: "gpt-5.4"
119
+ defaultModel: "gpt-5.5"
120
120
  },
121
121
  opencode: {
122
122
  binary: "opencode",
@@ -151,7 +151,7 @@ var init_runtime_table = __esm({
151
151
  autoApproveFlag: "--dangerously-bypass-approvals-and-sandbox",
152
152
  inlineFlag: "--no-alt-screen",
153
153
  apiKeyEnv: "OPENAI_API_KEY",
154
- defaultModel: "gpt-5.4"
154
+ defaultModel: "gpt-5.5"
155
155
  },
156
156
  opencode: {
157
157
  binary: "opencode",
@@ -137,7 +137,7 @@ var init_runtime_table = __esm({
137
137
  autoApproveFlag: "--dangerously-bypass-approvals-and-sandbox",
138
138
  inlineFlag: "--no-alt-screen",
139
139
  apiKeyEnv: "OPENAI_API_KEY",
140
- defaultModel: "gpt-5.4"
140
+ defaultModel: "gpt-5.5"
141
141
  },
142
142
  opencode: {
143
143
  binary: "opencode",
@@ -1074,7 +1074,7 @@ var init_runtime_table = __esm({
1074
1074
  autoApproveFlag: "--dangerously-bypass-approvals-and-sandbox",
1075
1075
  inlineFlag: "--no-alt-screen",
1076
1076
  apiKeyEnv: "OPENAI_API_KEY",
1077
- defaultModel: "gpt-5.4"
1077
+ defaultModel: "gpt-5.5"
1078
1078
  },
1079
1079
  opencode: {
1080
1080
  binary: "opencode",
@@ -472,7 +472,7 @@ var init_runtime_table = __esm({
472
472
  autoApproveFlag: "--dangerously-bypass-approvals-and-sandbox",
473
473
  inlineFlag: "--no-alt-screen",
474
474
  apiKeyEnv: "OPENAI_API_KEY",
475
- defaultModel: "gpt-5.4"
475
+ defaultModel: "gpt-5.5"
476
476
  },
477
477
  opencode: {
478
478
  binary: "opencode",
@@ -6,7 +6,7 @@ var RUNTIME_TABLE = {
6
6
  autoApproveFlag: "--dangerously-bypass-approvals-and-sandbox",
7
7
  inlineFlag: "--no-alt-screen",
8
8
  apiKeyEnv: "OPENAI_API_KEY",
9
- defaultModel: "gpt-5.4"
9
+ defaultModel: "gpt-5.5"
10
10
  },
11
11
  opencode: {
12
12
  binary: "opencode",
@@ -61,6 +61,10 @@ exec "${exeStartDst}" "$0" "$@"
61
61
  writeFileSync(wrapperPath, wrapperContent);
62
62
  chmodSync(wrapperPath, 493);
63
63
  created++;
64
+ const codexPath = path.join(binDir, `${emp.name}${n}-codex`);
65
+ writeFileSync(codexPath, wrapperContent);
66
+ chmodSync(codexPath, 493);
67
+ created++;
64
68
  }
65
69
  }
66
70
  const codexLauncherCandidates = [
package/dist/lib/tasks.js CHANGED
@@ -746,7 +746,7 @@ var init_runtime_table = __esm({
746
746
  autoApproveFlag: "--dangerously-bypass-approvals-and-sandbox",
747
747
  inlineFlag: "--no-alt-screen",
748
748
  apiKeyEnv: "OPENAI_API_KEY",
749
- defaultModel: "gpt-5.4"
749
+ defaultModel: "gpt-5.5"
750
750
  },
751
751
  opencode: {
752
752
  binary: "opencode",
@@ -607,7 +607,7 @@ var init_runtime_table = __esm({
607
607
  autoApproveFlag: "--dangerously-bypass-approvals-and-sandbox",
608
608
  inlineFlag: "--no-alt-screen",
609
609
  apiKeyEnv: "OPENAI_API_KEY",
610
- defaultModel: "gpt-5.4"
610
+ defaultModel: "gpt-5.5"
611
611
  },
612
612
  opencode: {
613
613
  binary: "opencode",
@@ -947,7 +947,7 @@ var init_runtime_table = __esm({
947
947
  autoApproveFlag: "--dangerously-bypass-approvals-and-sandbox",
948
948
  inlineFlag: "--no-alt-screen",
949
949
  apiKeyEnv: "OPENAI_API_KEY",
950
- defaultModel: "gpt-5.4"
950
+ defaultModel: "gpt-5.5"
951
951
  },
952
952
  opencode: {
953
953
  binary: "opencode",
@@ -19715,12 +19715,13 @@ async function detectConflicts(client, projectFilter, agentFilter2) {
19715
19715
 
19716
19716
  // src/bin/exe-doctor.ts
19717
19717
  function parseFlags(argv) {
19718
- const flags = { fix: false, dryRun: false, verbose: false };
19718
+ const flags = { fix: false, dryRun: false, verbose: false, conflicts: false };
19719
19719
  for (let i = 0; i < argv.length; i++) {
19720
19720
  const arg = argv[i];
19721
19721
  if (arg === "--fix") flags.fix = true;
19722
19722
  else if (arg === "--dry-run") flags.dryRun = true;
19723
19723
  else if (arg === "--verbose") flags.verbose = true;
19724
+ else if (arg === "--conflicts") flags.conflicts = true;
19724
19725
  else if (arg === "--agent" && argv[i + 1]) flags.agent = argv[++i];
19725
19726
  else if (arg === "--project" && argv[i + 1]) flags.project = argv[++i];
19726
19727
  }
@@ -19901,15 +19902,31 @@ function auditHookHealth() {
19901
19902
  return { logExists: true, totalLines, errorsLastHour, topPatterns };
19902
19903
  }
19903
19904
  async function runAudit(client, flags) {
19904
- const [stats, nullVectors, duplicates, bloated, fts, orphanedProjects, conflicts] = await Promise.all([
19905
+ const runConflicts = flags.conflicts || process.env.EXE_AUDIT_CONFLICTS === "1";
19906
+ const [stats, nullVectors, duplicates, bloated, fts, orphanedProjects] = await Promise.all([
19905
19907
  auditStats(client, flags),
19906
19908
  auditNullVectors(client, flags),
19907
19909
  auditDuplicates(client, flags),
19908
19910
  auditBloated(client, flags),
19909
19911
  auditFts(client),
19910
- auditOrphanedProjects(client),
19911
- detectConflicts(client, flags.project, flags.agent)
19912
+ auditOrphanedProjects(client)
19912
19913
  ]);
19914
+ let conflicts;
19915
+ if (runConflicts) {
19916
+ conflicts = await detectConflicts(client, flags.project, flags.agent);
19917
+ } else {
19918
+ conflicts = {
19919
+ candidateCount: 0,
19920
+ classified: 0,
19921
+ conflicts: 0,
19922
+ superseded: 0,
19923
+ agree: 0,
19924
+ unclassified: 0,
19925
+ pairs: [],
19926
+ skipped: true,
19927
+ skipReason: "Conflict detection skipped (O(n\xB2) on 97K memories). Use --conflicts flag to enable."
19928
+ };
19929
+ }
19913
19930
  const duplicateCount = duplicates.reduce((sum, d) => sum + d.delete_ids.length, 0);
19914
19931
  const hookHealth = auditHookHealth();
19915
19932
  return { stats, nullVectors, duplicates, duplicateCount, bloated, fts, orphanedProjects, conflicts, hookHealth };
@@ -20240,6 +20257,8 @@ function registerRunMemoryAudit(server2) {
20240
20257
  fix: false,
20241
20258
  dryRun: false,
20242
20259
  verbose: true,
20260
+ conflicts: false,
20261
+ // O(n²) — opt-in only via CLI --conflicts
20243
20262
  agent: agent_id,
20244
20263
  project: project_name
20245
20264
  };
@@ -322,7 +322,7 @@ var init_runtime_table = __esm({
322
322
  autoApproveFlag: "--dangerously-bypass-approvals-and-sandbox",
323
323
  inlineFlag: "--no-alt-screen",
324
324
  apiKeyEnv: "OPENAI_API_KEY",
325
- defaultModel: "gpt-5.4"
325
+ defaultModel: "gpt-5.5"
326
326
  },
327
327
  opencode: {
328
328
  binary: "opencode",
@@ -461,7 +461,7 @@ var init_runtime_table = __esm({
461
461
  autoApproveFlag: "--dangerously-bypass-approvals-and-sandbox",
462
462
  inlineFlag: "--no-alt-screen",
463
463
  apiKeyEnv: "OPENAI_API_KEY",
464
- defaultModel: "gpt-5.4"
464
+ defaultModel: "gpt-5.5"
465
465
  },
466
466
  opencode: {
467
467
  binary: "opencode",
@@ -472,7 +472,7 @@ var init_runtime_table = __esm({
472
472
  autoApproveFlag: "--dangerously-bypass-approvals-and-sandbox",
473
473
  inlineFlag: "--no-alt-screen",
474
474
  apiKeyEnv: "OPENAI_API_KEY",
475
- defaultModel: "gpt-5.4"
475
+ defaultModel: "gpt-5.5"
476
476
  },
477
477
  opencode: {
478
478
  binary: "opencode",
@@ -749,7 +749,7 @@ var init_runtime_table = __esm({
749
749
  autoApproveFlag: "--dangerously-bypass-approvals-and-sandbox",
750
750
  inlineFlag: "--no-alt-screen",
751
751
  apiKeyEnv: "OPENAI_API_KEY",
752
- defaultModel: "gpt-5.4"
752
+ defaultModel: "gpt-5.5"
753
753
  },
754
754
  opencode: {
755
755
  binary: "opencode",
@@ -725,7 +725,7 @@ var init_runtime_table = __esm({
725
725
  autoApproveFlag: "--dangerously-bypass-approvals-and-sandbox",
726
726
  inlineFlag: "--no-alt-screen",
727
727
  apiKeyEnv: "OPENAI_API_KEY",
728
- defaultModel: "gpt-5.4"
728
+ defaultModel: "gpt-5.5"
729
729
  },
730
730
  opencode: {
731
731
  binary: "opencode",
package/dist/tui/App.js CHANGED
@@ -666,7 +666,7 @@ var init_runtime_table = __esm({
666
666
  autoApproveFlag: "--dangerously-bypass-approvals-and-sandbox",
667
667
  inlineFlag: "--no-alt-screen",
668
668
  apiKeyEnv: "OPENAI_API_KEY",
669
- defaultModel: "gpt-5.4"
669
+ defaultModel: "gpt-5.5"
670
670
  },
671
671
  opencode: {
672
672
  binary: "opencode",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@askexenow/exe-os",
3
- "version": "0.9.24",
3
+ "version": "0.9.26",
4
4
  "description": "AI employee operating system — persistent memory, task management, and multi-agent coordination for Claude Code.",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "type": "module",