baro-ai 0.43.3 → 0.44.0

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/cli.mjs CHANGED
@@ -14467,17 +14467,26 @@ async function orchestrate(config) {
14467
14467
  const env = new AgenticEnvironment();
14468
14468
  const emitTui = config.emitTuiEvents ?? true;
14469
14469
  const llm = config.llm ?? "claude";
14470
- if (llm === "openai") {
14470
+ const storyLlm = config.storyLlm ?? llm;
14471
+ const criticLlm = config.criticLlm ?? llm;
14472
+ const surgeonLlm = config.surgeonLlm ?? llm;
14473
+ const isHybrid = (/* @__PURE__ */ new Set([storyLlm, criticLlm, surgeonLlm, llm])).size > 1;
14474
+ if (isHybrid) {
14471
14475
  process.stderr.write(
14472
- "[orchestrate] llm=openai: Architect, Planner, Critic, Surgeon, StoryAgent all running through Mozaik's native OpenAI runner (gpt-5.x).\n"
14476
+ `[orchestrate] hybrid routing: story=${storyLlm} critic=${criticLlm} surgeon=${surgeonLlm} (default=${llm})
14477
+ `
14478
+ );
14479
+ } else if (llm === "openai") {
14480
+ process.stderr.write(
14481
+ "[orchestrate] llm=openai: Story, Critic, Surgeon all running through Mozaik's native OpenAI runner (gpt-5.x).\n"
14473
14482
  );
14474
14483
  } else if (llm === "codex") {
14475
14484
  process.stderr.write(
14476
- "[orchestrate] llm=codex: every LLM phase shells out to `codex exec --json` (ChatGPT subscription path). Architect / Planner / Critic / Surgeon / StoryAgent all running through Codex.\n"
14485
+ "[orchestrate] llm=codex: Story, Critic, Surgeon all shelling out to `codex exec --json` (ChatGPT subscription path).\n"
14477
14486
  );
14478
14487
  } else {
14479
14488
  process.stderr.write(
14480
- "[orchestrate] llm=claude: every LLM phase shells out to the Claude Code CLI.\n"
14489
+ "[orchestrate] llm=claude: Story, Critic, Surgeon all shelling out to the Claude Code CLI.\n"
14481
14490
  );
14482
14491
  }
14483
14492
  if (config.auditLogPath) {
@@ -14518,12 +14527,12 @@ async function orchestrate(config) {
14518
14527
  }))
14519
14528
  };
14520
14529
  };
14521
- if (llm === "openai") {
14530
+ if (surgeonLlm === "openai") {
14522
14531
  surgeon = new SurgeonOpenAI({
14523
14532
  snapshot,
14524
14533
  model: config.surgeonModel ?? "gpt-5.5"
14525
14534
  });
14526
- } else if (llm === "codex") {
14535
+ } else if (surgeonLlm === "codex") {
14527
14536
  surgeon = new SurgeonCodex({
14528
14537
  snapshot,
14529
14538
  useLlm: config.surgeonUseLlm ?? true,
@@ -14544,12 +14553,12 @@ async function orchestrate(config) {
14544
14553
  const targets = new Map(
14545
14554
  prd.userStories.filter((s) => s.acceptance && s.acceptance.length > 0).map((s) => [s.id, s.acceptance])
14546
14555
  );
14547
- if (llm === "openai") {
14556
+ if (criticLlm === "openai") {
14548
14557
  critic = new CriticOpenAI({
14549
14558
  targets,
14550
14559
  model: config.criticModel ?? "gpt-5.4-mini"
14551
14560
  });
14552
- } else if (llm === "codex") {
14561
+ } else if (criticLlm === "codex") {
14553
14562
  critic = new CriticCodex({
14554
14563
  targets,
14555
14564
  model: config.criticModel
@@ -14631,7 +14640,7 @@ async function orchestrate(config) {
14631
14640
  conductor.join(env);
14632
14641
  const storyFactory = new StoryFactory({
14633
14642
  cwd: config.cwd,
14634
- llm,
14643
+ llm: storyLlm,
14635
14644
  openaiModel: config.storyModel ?? "gpt-5.5",
14636
14645
  storyModelOverride: config.storyModel
14637
14646
  });
@@ -14983,6 +14992,22 @@ function parseArgs(argv) {
14983
14992
  args.llm = v;
14984
14993
  break;
14985
14994
  }
14995
+ case "--story-llm":
14996
+ case "--critic-llm":
14997
+ case "--surgeon-llm": {
14998
+ const v = required(argv, ++i, a);
14999
+ if (v !== "claude" && v !== "openai" && v !== "codex") {
15000
+ process.stderr.write(
15001
+ `[cli] ${a} must be 'claude' | 'openai' | 'codex', got '${v}'
15002
+ `
15003
+ );
15004
+ process.exit(2);
15005
+ }
15006
+ if (a === "--story-llm") args.storyLlm = v;
15007
+ else if (a === "--critic-llm") args.criticLlm = v;
15008
+ else args.surgeonLlm = v;
15009
+ break;
15010
+ }
14986
15011
  default:
14987
15012
  process.stderr.write(`[cli] unknown flag: ${a}
14988
15013
  `);
@@ -15062,6 +15087,9 @@ async function main() {
15062
15087
  surgeonModel: args.surgeonModel,
15063
15088
  intraLevelDelaySecs: args.intraLevelDelaySecs,
15064
15089
  llm: args.llm,
15090
+ storyLlm: args.storyLlm,
15091
+ criticLlm: args.criticLlm,
15092
+ surgeonLlm: args.surgeonLlm,
15065
15093
  storyModel: args.storyModel
15066
15094
  };
15067
15095
  if (args.llm === "openai" && !process.env.OPENAI_API_KEY) {