juno-code 1.0.26 → 1.0.28

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.mjs CHANGED
@@ -3526,6 +3526,9 @@ function createExecutionRequest(options) {
3526
3526
  if (options.model !== void 0) {
3527
3527
  result.model = options.model;
3528
3528
  }
3529
+ if (options.agents !== void 0) {
3530
+ result.agents = options.agents;
3531
+ }
3529
3532
  if (options.mcpServerName !== void 0) {
3530
3533
  result.mcpServerName = options.mcpServerName;
3531
3534
  }
@@ -3974,6 +3977,7 @@ var init_engine = __esm({
3974
3977
  instruction: context.request.instruction,
3975
3978
  project_path: context.request.workingDirectory,
3976
3979
  ...context.request.model !== void 0 && { model: context.request.model },
3980
+ ...context.request.agents !== void 0 && { agents: context.request.agents },
3977
3981
  iteration: iterationNumber
3978
3982
  },
3979
3983
  timeout: context.request.timeoutMs || this.engineConfig.config.mcpTimeout,
@@ -7133,10 +7137,17 @@ var init_shell_backend = __esm({
7133
7137
  if (isPython && request.arguments?.instruction) {
7134
7138
  args.push("-p", request.arguments.instruction);
7135
7139
  }
7140
+ if (isPython && request.arguments?.model) {
7141
+ args.push("-m", request.arguments.model);
7142
+ }
7143
+ if (isPython && request.arguments?.agents) {
7144
+ args.push("--agents", request.arguments.agents);
7145
+ }
7136
7146
  if (this.config.debug) {
7137
7147
  engineLogger.debug(`Executing script: ${command} ${args.join(" ")}`);
7138
7148
  engineLogger.debug(`Working directory: ${this.config.workingDirectory}`);
7139
7149
  engineLogger.debug(`Environment variables: ${Object.keys(env2).filter((k) => k.startsWith("JUNO_")).join(", ")}`);
7150
+ engineLogger.debug(`Request arguments: ${JSON.stringify(request.arguments)}`);
7140
7151
  }
7141
7152
  const child = spawn(command, args, {
7142
7153
  env: env2,
@@ -12534,13 +12545,17 @@ async function mainCommandHandler(args, options, command) {
12534
12545
  if (options.verbose) {
12535
12546
  console.error(chalk15.gray(` Backend: ${getBackendDisplayName(selectedBackend)}`));
12536
12547
  }
12548
+ if (options.agents && selectedBackend !== "shell") {
12549
+ console.error(chalk15.yellow("\n\u26A0\uFE0F Note: --agents flag is only supported with shell backend and will be ignored"));
12550
+ }
12537
12551
  const executionRequest = createExecutionRequest({
12538
12552
  instruction,
12539
12553
  subagent: options.subagent,
12540
12554
  backend: selectedBackend,
12541
12555
  workingDirectory: config.workingDirectory,
12542
12556
  maxIterations: options.maxIterations || config.defaultMaxIterations,
12543
- model: options.model || config.defaultModel
12557
+ model: options.model || config.defaultModel,
12558
+ agents: options.agents
12544
12559
  });
12545
12560
  const coordinator = new MainExecutionCoordinator(config, options.verbose, options.enableFeedback || false);
12546
12561
  const result = await coordinator.execute(executionRequest);
@@ -16345,11 +16360,12 @@ async function startCommandHandler(args, options, command) {
16345
16360
  }
16346
16361
  function configureStartCommand(program) {
16347
16362
  program.command("start").description("Start execution using .juno_task/init.md as prompt").option("-s, --subagent <name>", "Subagent to use (claude, cursor, codex, gemini)").option("-b, --backend <type>", "Backend to use (mcp, shell)").option("-i, --max-iterations <number>", "Maximum number of iterations", parseInt).option("-m, --model <name>", "Model to use for execution").option("-d, --directory <path>", "Project directory (default: current)").option("--enable-feedback", "Enable concurrent feedback collection during execution").option("--show-metrics", "Display performance metrics summary after execution").option("--show-dashboard", "Show interactive performance dashboard after execution").option("--show-trends", "Display performance trends from historical data").option("--save-metrics [file]", "Save performance metrics to file (default: .juno_task/metrics.json)").option("--metrics-file <path>", "Specify custom path for metrics file").option("--dry-run", "Validate configuration and exit without executing").action(async (options, command) => {
16348
- if (options.saveMetrics === true) {
16349
- options.saveMetrics = true;
16350
- options.metricsFile = options.metricsFile || ".juno_task/metrics.json";
16363
+ const allOptions2 = command.optsWithGlobals ? command.optsWithGlobals() : { ...command.opts(), ...options };
16364
+ if (allOptions2.saveMetrics === true) {
16365
+ allOptions2.saveMetrics = true;
16366
+ allOptions2.metricsFile = allOptions2.metricsFile || ".juno_task/metrics.json";
16351
16367
  }
16352
- await startCommandHandler([], options, command);
16368
+ await startCommandHandler([], allOptions2, command);
16353
16369
  }).addHelpText("after", `
16354
16370
  Examples:
16355
16371
  $ juno-code start # Start execution in current directory
@@ -23604,10 +23620,13 @@ function setupGlobalOptions(program) {
23604
23620
  });
23605
23621
  }
23606
23622
  function setupMainCommand(program) {
23607
- program.option("-p, --prompt <text>", "Prompt input (file path or inline text)").option("-w, --cwd <path>", "Working directory").option("-i, --max-iterations <number>", "Maximum iterations (-1 for unlimited)", parseInt).option("-m, --model <name>", "Model to use (subagent-specific)").option("-b, --backend <type>", "Backend to use (mcp, shell)").option("-I, --interactive", "Interactive mode for typing prompts").option("-ip, --interactive-prompt", "Launch TUI prompt editor").action(async (options, command) => {
23623
+ program.option("-p, --prompt <text>", "Prompt input (file path or inline text)").option("-w, --cwd <path>", "Working directory").option("-i, --max-iterations <number>", "Maximum iterations (-1 for unlimited)", parseInt).option("-m, --model <name>", "Model to use (subagent-specific)").option("--agents <agents>", "Agents configuration (forwarded to claude.py when using shell backend)").option("-b, --backend <type>", "Backend to use (mcp, shell)").option("-I, --interactive", "Interactive mode for typing prompts").option("-ip, --interactive-prompt", "Launch TUI prompt editor").action(async (options, command) => {
23608
23624
  try {
23609
23625
  const globalOptions = program.opts();
23610
- const allOptions2 = { ...options, ...globalOptions };
23626
+ const definedGlobalOptions = Object.fromEntries(
23627
+ Object.entries(globalOptions).filter(([_, v]) => v !== void 0)
23628
+ );
23629
+ const allOptions2 = { ...definedGlobalOptions, ...options };
23611
23630
  if (!globalOptions.subagent && !options.prompt && !options.interactive && !options.interactivePrompt) {
23612
23631
  const fs21 = await import('fs-extra');
23613
23632
  const path23 = await import('path');