oh-my-codex 0.12.2 → 0.12.3

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.
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/team/runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/team/runtime.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,7 @@ import { generateWorkerOverlay, writeTeamWorkerInstructionsFile, removeTeamWorke
11
11
  import { loadRolePrompt } from './role-router.js';
12
12
  import { composeRoleInstructionsForRole } from '../agents/native-config.js';
13
13
  import { codexPromptsDir } from '../utils/paths.js';
14
+ import { isTerminalPhase } from './orchestrator.js';
14
15
  import { resolveTeamWorkerLaunchArgs, TEAM_LOW_COMPLEXITY_DEFAULT_MODEL, parseTeamWorkerLaunchArgs, splitWorkerLaunchArgs, resolveAgentDefaultModel, resolveAgentReasoningEffort, } from './model-contract.js';
15
16
  import { resolveCanonicalTeamStateRoot } from './state-root.js';
16
17
  import { inferPhaseTargetFromTaskCounts, reconcilePhaseStateForMonitor } from './phase-controller.js';
@@ -50,6 +51,26 @@ async function syncRootTeamModeStateOnTerminalPhase(teamName, phase, cwd) {
50
51
  // Best-effort compatibility sync only.
51
52
  }
52
53
  }
54
+ async function assertTeamStartupIsNonDestructive(teamName, cwd, leaderSessionId) {
55
+ const activeTeams = await findActiveTeams(cwd, leaderSessionId);
56
+ if (activeTeams.length > 0) {
57
+ throw new Error(`leader_session_conflict: active team exists (${activeTeams.join(', ')})`);
58
+ }
59
+ const [existingConfig, existingManifest, existingPhase] = await Promise.all([
60
+ readTeamConfig(teamName, cwd),
61
+ readTeamManifestV2(teamName, cwd),
62
+ readTeamPhaseState(teamName, cwd),
63
+ ]);
64
+ if (!existingConfig && !existingManifest)
65
+ return;
66
+ const currentPhase = existingPhase?.current_phase;
67
+ if (currentPhase && isTerminalPhase(currentPhase))
68
+ return;
69
+ const tmuxSession = existingConfig?.tmux_session ?? existingManifest?.tmux_session ?? `omx-team-${teamName}`;
70
+ const renderedPhase = currentPhase ?? 'team-exec';
71
+ throw new Error(`team_name_conflict: active team state already exists for "${teamName}" (phase: ${renderedPhase}, tmux: ${tmuxSession}). `
72
+ + `Use "omx team status ${teamName}", "omx team resume ${teamName}", or "omx team shutdown ${teamName}" instead of launching a duplicate team.`);
73
+ }
53
74
  export function applyCreatedInteractiveSessionToConfig(config, createdSession, workerPaneIds) {
54
75
  config.tmux_session = createdSession.name;
55
76
  config.leader_pane_id = createdSession.leaderPaneId;
@@ -1275,6 +1296,9 @@ export async function startTeam(teamName, task, agentType, workerCount, tasks, c
1275
1296
  const leaderCwd = resolve(cwd);
1276
1297
  await assertNestedTeamAllowed(leaderCwd);
1277
1298
  const effectiveWorktreeMode = resolveEffectiveTeamWorktreeMode(leaderCwd, options.worktreeMode);
1299
+ const sanitized = sanitizeTeamName(teamName);
1300
+ const leaderSessionId = await resolveLeaderSessionId(leaderCwd);
1301
+ await assertTeamStartupIsNonDestructive(sanitized, leaderCwd, leaderSessionId);
1278
1302
  const workerLaunchMode = resolveTeamWorkerLaunchMode(process.env);
1279
1303
  const displayMode = workerLaunchMode === 'interactive' ? 'split_pane' : 'auto';
1280
1304
  if (workerLaunchMode === 'interactive') {
@@ -1285,7 +1309,6 @@ export async function startTeam(teamName, task, agentType, workerCount, tasks, c
1285
1309
  throw new Error('Team mode requires running inside tmux current leader pane');
1286
1310
  }
1287
1311
  }
1288
- const sanitized = sanitizeTeamName(teamName);
1289
1312
  const teamStateRoot = resolveCanonicalTeamStateRoot(leaderCwd);
1290
1313
  const activeWorktreeMode = effectiveWorktreeMode.enabled
1291
1314
  ? (effectiveWorktreeMode.detached ? 'detached' : 'named')
@@ -1321,12 +1344,6 @@ export async function startTeam(teamName, task, agentType, workerCount, tasks, c
1321
1344
  }
1322
1345
  }
1323
1346
  }
1324
- const leaderSessionId = await resolveLeaderSessionId(leaderCwd);
1325
- // Topology guard: one active team per leader session/process context.
1326
- const activeTeams = await findActiveTeams(leaderCwd, leaderSessionId);
1327
- if (activeTeams.length > 0) {
1328
- throw new Error(`leader_session_conflict: active team exists (${activeTeams.join(', ')})`);
1329
- }
1330
1347
  // 2. Team name is already sanitized above.
1331
1348
  let sessionName = `omx-team-${sanitized}`;
1332
1349
  const overlay = generateWorkerOverlay(sanitized);