juno-code 1.0.31 → 1.0.32

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/index.js CHANGED
@@ -75,7 +75,7 @@ var __export = (target, all) => {
75
75
  exports.version = void 0;
76
76
  var init_version = __esm({
77
77
  "src/version.ts"() {
78
- exports.version = "1.0.31";
78
+ exports.version = "1.0.32";
79
79
  }
80
80
  });
81
81
  function isHeadlessEnvironment() {
@@ -4468,6 +4468,8 @@ var ENV_VAR_MAPPING = {
4468
4468
  JUNO_CODE_MCP_RETRIES: "mcpRetries",
4469
4469
  JUNO_CODE_MCP_SERVER_PATH: "mcpServerPath",
4470
4470
  JUNO_CODE_MCP_SERVER_NAME: "mcpServerName",
4471
+ // Hook settings
4472
+ JUNO_CODE_HOOK_COMMAND_TIMEOUT: "hookCommandTimeout",
4471
4473
  // TUI settings
4472
4474
  JUNO_CODE_INTERACTIVE: "interactive",
4473
4475
  JUNO_CODE_HEADLESS_MODE: "headlessMode",
@@ -4491,6 +4493,8 @@ var LEGACY_ENV_VAR_MAPPING = {
4491
4493
  JUNO_TASK_MCP_RETRIES: "mcpRetries",
4492
4494
  JUNO_TASK_MCP_SERVER_PATH: "mcpServerPath",
4493
4495
  JUNO_TASK_MCP_SERVER_NAME: "mcpServerName",
4496
+ // Hook settings
4497
+ JUNO_TASK_HOOK_COMMAND_TIMEOUT: "hookCommandTimeout",
4494
4498
  // TUI settings
4495
4499
  JUNO_TASK_INTERACTIVE: "interactive",
4496
4500
  JUNO_TASK_HEADLESS_MODE: "headlessMode",
@@ -4522,6 +4526,8 @@ var JunoTaskConfigSchema = zod.z.object({
4522
4526
  mcpRetries: zod.z.number().int().min(0).max(10).describe("Number of retries for MCP operations"),
4523
4527
  mcpServerPath: zod.z.string().optional().describe("Path to MCP server executable (auto-discovered if not specified)"),
4524
4528
  mcpServerName: zod.z.string().optional().describe('Named MCP server to connect to (e.g., "roundtable-ai")'),
4529
+ // Hook settings
4530
+ hookCommandTimeout: zod.z.number().int().min(1e3).max(36e5).optional().describe("Timeout for individual hook commands in milliseconds (default: 300000 = 5 minutes)"),
4525
4531
  // TUI settings
4526
4532
  interactive: zod.z.boolean().describe("Enable interactive mode"),
4527
4533
  headlessMode: zod.z.boolean().describe("Enable headless mode (no TUI)"),
@@ -6582,7 +6588,8 @@ var hookLogger = logger.child("SYSTEM" /* SYSTEM */, { component: "hooks" });
6582
6588
  async function executeHook(hookType, hooks, context = {}, options = {}) {
6583
6589
  const startTime = Date.now();
6584
6590
  const {
6585
- commandTimeout = 3e4,
6591
+ commandTimeout = 3e5,
6592
+ // 5 minutes default (increased from 30s to support long-running hook scripts)
6586
6593
  env: env2 = {},
6587
6594
  continueOnError = true,
6588
6595
  logContext = "SYSTEM" /* SYSTEM */
@@ -6657,8 +6664,12 @@ async function executeHook(hookType, hooks, context = {}, options = {}) {
6657
6664
  env: execEnv,
6658
6665
  // Capture both stdout and stderr
6659
6666
  all: true,
6660
- reject: false
6667
+ reject: false,
6661
6668
  // Don't throw on non-zero exit codes
6669
+ // Use input: '' to provide empty stdin and properly close it (sends EOF)
6670
+ // This prevents commands from hanging waiting for stdin while still
6671
+ // allowing internal pipe operations to work correctly
6672
+ input: ""
6662
6673
  });
6663
6674
  const duration = Date.now() - commandStartTime;
6664
6675
  const success2 = result2.exitCode === 0;
@@ -7179,6 +7190,8 @@ var ExecutionEngine = class extends events.EventEmitter {
7179
7190
  maxIterations: context.request.maxIterations,
7180
7191
  instruction: context.request.instruction
7181
7192
  }
7193
+ }, {
7194
+ commandTimeout: this.engineConfig.config.hookCommandTimeout
7182
7195
  });
7183
7196
  }
7184
7197
  } catch (error) {
@@ -7211,6 +7224,8 @@ var ExecutionEngine = class extends events.EventEmitter {
7211
7224
  duration: context.endTime ? context.endTime.getTime() - context.startTime.getTime() : 0,
7212
7225
  success: context.status === "completed" /* COMPLETED */
7213
7226
  }
7227
+ }, {
7228
+ commandTimeout: this.engineConfig.config.hookCommandTimeout
7214
7229
  });
7215
7230
  }
7216
7231
  } catch (error) {
@@ -7262,6 +7277,8 @@ var ExecutionEngine = class extends events.EventEmitter {
7262
7277
  maxIterations: context.request.maxIterations,
7263
7278
  subagent: context.request.subagent
7264
7279
  }
7280
+ }, {
7281
+ commandTimeout: this.engineConfig.config.hookCommandTimeout
7265
7282
  });
7266
7283
  }
7267
7284
  } catch (error) {
@@ -7279,6 +7296,8 @@ var ExecutionEngine = class extends events.EventEmitter {
7279
7296
  ...context.request.allowedTools !== void 0 && { allowedTools: context.request.allowedTools },
7280
7297
  ...context.request.appendAllowedTools !== void 0 && { appendAllowedTools: context.request.appendAllowedTools },
7281
7298
  ...context.request.disallowedTools !== void 0 && { disallowedTools: context.request.disallowedTools },
7299
+ ...context.request.resume !== void 0 && { resume: context.request.resume },
7300
+ ...context.request.continueConversation !== void 0 && { continueConversation: context.request.continueConversation },
7282
7301
  iteration: iterationNumber
7283
7302
  },
7284
7303
  timeout: context.request.timeoutMs || this.engineConfig.config.mcpTimeout,
@@ -7326,6 +7345,8 @@ var ExecutionEngine = class extends events.EventEmitter {
7326
7345
  duration: iterationResult.duration,
7327
7346
  toolCallStatus: iterationResult.toolResult.status
7328
7347
  }
7348
+ }, {
7349
+ commandTimeout: this.engineConfig.config.hookCommandTimeout
7329
7350
  });
7330
7351
  }
7331
7352
  } catch (error) {
@@ -7374,6 +7395,8 @@ var ExecutionEngine = class extends events.EventEmitter {
7374
7395
  error: mcpError.message,
7375
7396
  errorType: mcpError.type
7376
7397
  }
7398
+ }, {
7399
+ commandTimeout: this.engineConfig.config.hookCommandTimeout
7377
7400
  });
7378
7401
  }
7379
7402
  } catch (hookError) {
@@ -7730,6 +7753,12 @@ function createExecutionRequest(options) {
7730
7753
  if (options.mcpServerName !== void 0) {
7731
7754
  result.mcpServerName = options.mcpServerName;
7732
7755
  }
7756
+ if (options.resume !== void 0) {
7757
+ result.resume = options.resume;
7758
+ }
7759
+ if (options.continueConversation !== void 0) {
7760
+ result.continueConversation = options.continueConversation;
7761
+ }
7733
7762
  return result;
7734
7763
  }
7735
7764