nexus-agents 2.48.0 → 2.50.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.
@@ -66,7 +66,7 @@ import {
66
66
  import {
67
67
  DEFAULT_TASK_TTL_MS,
68
68
  clampTaskTtl
69
- } from "./chunk-M53BBBCB.js";
69
+ } from "./chunk-NAN7IILE.js";
70
70
  import {
71
71
  createSessionMemory
72
72
  } from "./chunk-ULDKSIS7.js";
@@ -823,16 +823,16 @@ function classifyEnvKeys(nexusKeys, env) {
823
823
  }
824
824
  return { knownRecord, unknownVars };
825
825
  }
826
- function logValidationWarnings(logger54, unknownVars, invalidVars) {
826
+ function logValidationWarnings(logger55, unknownVars, invalidVars) {
827
827
  for (const u of unknownVars) {
828
828
  const hint = u.suggestion !== null ? ` (did you mean ${u.suggestion}?)` : "";
829
- logger54.warn(`Unknown environment variable: ${u.name}${hint}`);
829
+ logger55.warn(`Unknown environment variable: ${u.name}${hint}`);
830
830
  }
831
831
  for (const inv of invalidVars) {
832
- logger54.warn(`Invalid environment variable ${inv.name}="${inv.value}": ${inv.error}`);
832
+ logger55.warn(`Invalid environment variable ${inv.name}="${inv.value}": ${inv.error}`);
833
833
  }
834
834
  }
835
- function validateNexusEnv(logger54) {
835
+ function validateNexusEnv(logger55) {
836
836
  const nexusKeys = Object.keys(process.env).filter((k) => k.startsWith("NEXUS_"));
837
837
  const { knownRecord, unknownVars } = classifyEnvKeys(nexusKeys, process.env);
838
838
  const invalidVars = [];
@@ -847,8 +847,8 @@ function validateNexusEnv(logger54) {
847
847
  });
848
848
  }
849
849
  }
850
- if (logger54 !== void 0) {
851
- logValidationWarnings(logger54, unknownVars, invalidVars);
850
+ if (logger55 !== void 0) {
851
+ logValidationWarnings(logger55, unknownVars, invalidVars);
852
852
  }
853
853
  return { unknownVars, invalidVars };
854
854
  }
@@ -1724,8 +1724,8 @@ function deepMerge(target, source) {
1724
1724
  }
1725
1725
  return result;
1726
1726
  }
1727
- function loadDefaultConfig(logger54) {
1728
- logger54.debug("No config file found, using defaults");
1727
+ function loadDefaultConfig(logger55) {
1728
+ logger55.debug("No config file found, using defaults");
1729
1729
  const validated = AppConfigSchema.safeParse(defaultConfig);
1730
1730
  if (!validated.success) {
1731
1731
  return err(
@@ -1741,7 +1741,7 @@ function loadDefaultConfig(logger54) {
1741
1741
  warnings: ["No config file found, using default configuration"]
1742
1742
  });
1743
1743
  }
1744
- function readAndParseConfig(configPath, mergeDefaults, logger54) {
1744
+ function readAndParseConfig(configPath, mergeDefaults, logger55) {
1745
1745
  let content;
1746
1746
  try {
1747
1747
  content = readFileSync(configPath, "utf-8");
@@ -1758,7 +1758,7 @@ function readAndParseConfig(configPath, mergeDefaults, logger54) {
1758
1758
  const parseResult2 = parseYaml(content);
1759
1759
  if (!parseResult2.ok) return err(parseResult2.error);
1760
1760
  if (mergeDefaults && typeof parseResult2.value === "object" && parseResult2.value !== null) {
1761
- logger54.debug("Merged config with defaults");
1761
+ logger55.debug("Merged config with defaults");
1762
1762
  return ok(
1763
1763
  deepMerge(
1764
1764
  defaultConfig,
@@ -1768,7 +1768,7 @@ function readAndParseConfig(configPath, mergeDefaults, logger54) {
1768
1768
  }
1769
1769
  return ok(parseResult2.value);
1770
1770
  }
1771
- function validateConfig(configData, configPath, logger54) {
1771
+ function validateConfig(configData, configPath, logger55) {
1772
1772
  const validation = AppConfigSchema.safeParse(configData);
1773
1773
  if (!validation.success) {
1774
1774
  const issues = formatZodIssuesAsArray(validation.error);
@@ -1777,12 +1777,12 @@ function validateConfig(configData, configPath, logger54) {
1777
1777
  ${issues.join("\n")}`, "VALIDATION_ERROR")
1778
1778
  );
1779
1779
  }
1780
- logger54.info("Configuration loaded successfully", { configPath });
1780
+ logger55.info("Configuration loaded successfully", { configPath });
1781
1781
  return ok({ config: validation.data, configPath, usingDefaults: false, warnings: [] });
1782
1782
  }
1783
1783
  function loadConfig(options = {}) {
1784
1784
  const { configPath: explicitPath, cwd = process.cwd(), mergeDefaults = true } = options;
1785
- const logger54 = options.logger ?? createLogger({ component: "ConfigLoader" });
1785
+ const logger55 = options.logger ?? createLogger({ component: "ConfigLoader" });
1786
1786
  let configPath;
1787
1787
  if (explicitPath !== void 0) {
1788
1788
  const validation = validatePath(explicitPath, cwd);
@@ -1791,10 +1791,10 @@ function loadConfig(options = {}) {
1791
1791
  } else {
1792
1792
  configPath = findConfigPath(cwd);
1793
1793
  }
1794
- if (configPath === void 0) return loadDefaultConfig(logger54);
1795
- const parseResult2 = readAndParseConfig(configPath, mergeDefaults, logger54);
1794
+ if (configPath === void 0) return loadDefaultConfig(logger55);
1795
+ const parseResult2 = readAndParseConfig(configPath, mergeDefaults, logger55);
1796
1796
  if (!parseResult2.ok) return err(parseResult2.error);
1797
- return validateConfig(parseResult2.value, configPath, logger54);
1797
+ return validateConfig(parseResult2.value, configPath, logger55);
1798
1798
  }
1799
1799
  var loadedConfig;
1800
1800
  function getConfig(options) {
@@ -2726,12 +2726,12 @@ function removeItemsDirectly(items, targetTokens, manager) {
2726
2726
  };
2727
2727
  }
2728
2728
  async function summarizeAndRemoveItems(options) {
2729
- const { items, targetTokens, manager, adapter, logger: logger54, customPrompt } = options;
2729
+ const { items, targetTokens, manager, adapter, logger: logger55, customPrompt } = options;
2730
2730
  const content = items.map((item) => item.content).join("\n\n---\n\n");
2731
2731
  const prompt = customPrompt ?? SLIDING_WINDOW_PROMPT;
2732
2732
  const summaryResult = await generateSummary(content, prompt, adapter);
2733
2733
  if (!summaryResult.ok) {
2734
- logger54.warn("Summarization failed, removing items without summary");
2734
+ logger55.warn("Summarization failed, removing items without summary");
2735
2735
  return removeItemsDirectly(items, targetTokens, manager);
2736
2736
  }
2737
2737
  let tokensFreed = 0;
@@ -2744,7 +2744,7 @@ async function summarizeAndRemoveItems(options) {
2744
2744
  if (summaryAddResult.item !== void 0) {
2745
2745
  tokensFreed -= summaryAddResult.tokenCount;
2746
2746
  }
2747
- logger54.info("Summarization pruning completed", {
2747
+ logger55.info("Summarization pruning completed", {
2748
2748
  summarizedItems: items.length,
2749
2749
  tokensFreed,
2750
2750
  targetReached: tokensFreed >= targetTokens
@@ -2802,7 +2802,7 @@ function scoreByPriorityWeightedAge(candidates) {
2802
2802
  return scores.map((s) => s.item);
2803
2803
  }
2804
2804
  function removeItemsToTarget(options) {
2805
- const { sortedItems, targetTokens, categories, manager, minItemsPerCategory, logger: logger54 } = options;
2805
+ const { sortedItems, targetTokens, categories, manager, minItemsPerCategory, logger: logger55 } = options;
2806
2806
  const categoryRemaining = /* @__PURE__ */ new Map();
2807
2807
  for (const category of categories) {
2808
2808
  categoryRemaining.set(category, manager.getByCategory(category).length);
@@ -2819,7 +2819,7 @@ function removeItemsToTarget(options) {
2819
2819
  categoryRemaining.set(item.category, remaining - 1);
2820
2820
  }
2821
2821
  const targetReached = tokensFreed >= targetTokens;
2822
- logger54.info("Pruning completed", {
2822
+ logger55.info("Pruning completed", {
2823
2823
  itemsRemoved: removedItems.length,
2824
2824
  tokensFreed,
2825
2825
  targetTokens,
@@ -3284,7 +3284,7 @@ function generateBudgetWarning(utilizationPercent, tokensUsed, budgetLimit, scop
3284
3284
  scope
3285
3285
  };
3286
3286
  }
3287
- function logBudgetWarning(warning, logger54) {
3287
+ function logBudgetWarning(warning, logger55) {
3288
3288
  const context = {
3289
3289
  scope: warning.scope,
3290
3290
  usagePercent: Math.round(warning.usagePercent),
@@ -3293,13 +3293,13 @@ function logBudgetWarning(warning, logger54) {
3293
3293
  };
3294
3294
  switch (warning.level) {
3295
3295
  case "critical":
3296
- logger54.warn(warning.message, context);
3296
+ logger55.warn(warning.message, context);
3297
3297
  break;
3298
3298
  case "warning":
3299
- logger54.warn(warning.message, context);
3299
+ logger55.warn(warning.message, context);
3300
3300
  break;
3301
3301
  case "info":
3302
- logger54.info(warning.message, context);
3302
+ logger55.info(warning.message, context);
3303
3303
  break;
3304
3304
  }
3305
3305
  }
@@ -3355,8 +3355,8 @@ function createHardModeResult(params) {
3355
3355
  )
3356
3356
  };
3357
3357
  }
3358
- function logWarnModeExceeded(params, logger54) {
3359
- logger54.warn("Token budget would be exceeded (warn mode - continuing)", {
3358
+ function logWarnModeExceeded(params, logger55) {
3359
+ logger55.warn("Token budget would be exceeded (warn mode - continuing)", {
3360
3360
  exceedsSession: params.exceedsSession,
3361
3361
  exceedsTask: params.exceedsTask,
3362
3362
  estimatedTokens: params.estimatedTokens,
@@ -3385,9 +3385,9 @@ var TokenBudgetTracker = class {
3385
3385
  * @param config - Token budget configuration
3386
3386
  * @param logger - Optional logger instance
3387
3387
  */
3388
- constructor(config = {}, logger54) {
3388
+ constructor(config = {}, logger55) {
3389
3389
  this.config = { ...DEFAULT_TOKEN_BUDGET_CONFIG, ...config };
3390
- this.logger = logger54 ?? createLogger({ component: "token-budget-tracker" });
3390
+ this.logger = logger55 ?? createLogger({ component: "token-budget-tracker" });
3391
3391
  }
3392
3392
  /**
3393
3393
  * Check if an operation is within budget.
@@ -3540,7 +3540,7 @@ var TokenBudgetTracker = class {
3540
3540
 
3541
3541
  // src/agents/base-agent-state-helpers.ts
3542
3542
  function performLegacyStateTransition(params) {
3543
- const { stateMachine, logger: logger54, newState } = params;
3543
+ const { stateMachine, logger: logger55, newState } = params;
3544
3544
  const currentState = stateMachine.state;
3545
3545
  if (newState === "error") {
3546
3546
  stateMachine.forceError({ reason: "setState called with error" });
@@ -3550,7 +3550,7 @@ function performLegacyStateTransition(params) {
3550
3550
  if (event !== void 0 && stateMachine.canTransition(event)) {
3551
3551
  const result = stateMachine.transition(event);
3552
3552
  if (!result.ok) {
3553
- logger54.warn("State transition failed", {
3553
+ logger55.warn("State transition failed", {
3554
3554
  from: currentState,
3555
3555
  to: newState,
3556
3556
  event,
@@ -3558,7 +3558,7 @@ function performLegacyStateTransition(params) {
3558
3558
  });
3559
3559
  }
3560
3560
  } else if (currentState !== newState) {
3561
- logger54.debug("Unmapped state change (legacy)", { from: currentState, to: newState });
3561
+ logger55.debug("Unmapped state change (legacy)", { from: currentState, to: newState });
3562
3562
  }
3563
3563
  }
3564
3564
 
@@ -3714,7 +3714,7 @@ function getAgentStateKey(agentId) {
3714
3714
  }
3715
3715
 
3716
3716
  // src/agents/memory-operations.ts
3717
- async function persistMemoryState(backend, state, logger54) {
3717
+ async function persistMemoryState(backend, state, logger55) {
3718
3718
  const key = getAgentStateKey(state.agentId);
3719
3719
  const metadata = {
3720
3720
  importance: MemoryImportance.HIGH,
@@ -3726,12 +3726,12 @@ async function persistMemoryState(backend, state, logger54) {
3726
3726
  };
3727
3727
  const result = await backend.store(key, updatedState, metadata);
3728
3728
  if (!result.ok) {
3729
- logger54.error("Failed to persist agent memory state", result.error, { agentId: state.agentId });
3729
+ logger55.error("Failed to persist agent memory state", result.error, { agentId: state.agentId });
3730
3730
  return err(
3731
3731
  new AgentMemoryError("Failed to persist memory state", { error: result.error.message })
3732
3732
  );
3733
3733
  }
3734
- logger54.debug("Persisted agent memory state", {
3734
+ logger55.debug("Persisted agent memory state", {
3735
3735
  agentId: state.agentId,
3736
3736
  learningsCount: state.taskLearnings.length,
3737
3737
  patternsCount: state.executionPatterns.length,
@@ -3739,16 +3739,16 @@ async function persistMemoryState(backend, state, logger54) {
3739
3739
  });
3740
3740
  return ok(void 0);
3741
3741
  }
3742
- async function loadMemoryState(backend, agentId, role, logger54) {
3742
+ async function loadMemoryState(backend, agentId, role, logger55) {
3743
3743
  const key = getAgentStateKey(agentId);
3744
3744
  const result = await backend.retrieve(key);
3745
3745
  if (!result.ok) {
3746
- logger54.debug("No existing memory state found, creating fresh state", { agentId });
3746
+ logger55.debug("No existing memory state found, creating fresh state", { agentId });
3747
3747
  return ok(createInitialMemoryState(agentId, role));
3748
3748
  }
3749
3749
  const loaded = result.value;
3750
3750
  if (loaded === null || typeof loaded !== "object") {
3751
- logger54.warn("Invalid memory state format, creating fresh state", { agentId });
3751
+ logger55.warn("Invalid memory state format, creating fresh state", { agentId });
3752
3752
  return ok(createInitialMemoryState(agentId, role));
3753
3753
  }
3754
3754
  const state = {
@@ -3759,7 +3759,7 @@ async function loadMemoryState(backend, agentId, role, logger54) {
3759
3759
  executionPatterns: Array.isArray(loaded.executionPatterns) ? loaded.executionPatterns : [],
3760
3760
  errorResolutions: Array.isArray(loaded.errorResolutions) ? loaded.errorResolutions : []
3761
3761
  };
3762
- logger54.debug("Loaded agent memory state", {
3762
+ logger55.debug("Loaded agent memory state", {
3763
3763
  agentId,
3764
3764
  learningsCount: state.taskLearnings.length,
3765
3765
  patternsCount: state.executionPatterns.length,
@@ -3767,13 +3767,13 @@ async function loadMemoryState(backend, agentId, role, logger54) {
3767
3767
  });
3768
3768
  return ok(state);
3769
3769
  }
3770
- async function loadRelevantTypedMemories(typedMemory, role, limit, logger54) {
3770
+ async function loadRelevantTypedMemories(typedMemory, role, limit, logger55) {
3771
3771
  const result = await typedMemory.filterByRelevance(role, limit);
3772
3772
  if (!result.ok) {
3773
- logger54.warn("Failed to load relevant typed memories", { role, error: result.error.message });
3773
+ logger55.warn("Failed to load relevant typed memories", { role, error: result.error.message });
3774
3774
  return result;
3775
3775
  }
3776
- logger54.debug("Loaded relevant typed memories", {
3776
+ logger55.debug("Loaded relevant typed memories", {
3777
3777
  role,
3778
3778
  count: result.value.length,
3779
3779
  types: [...new Set(result.value.map((e) => e.type))]
@@ -3887,10 +3887,10 @@ function initializeMemoryInfrastructure(options) {
3887
3887
 
3888
3888
  // src/agents/base-agent-constructor-helpers.ts
3889
3889
  function setupStateMachine(params) {
3890
- const { agentId, logger: logger54, eventBus, options } = params;
3890
+ const { agentId, logger: logger55, eventBus, options } = params;
3891
3891
  const stateMachine = new AgentStateMachine(options);
3892
3892
  stateMachine.onStateChange((transition) => {
3893
- logger54.debug("State transition", {
3893
+ logger55.debug("State transition", {
3894
3894
  from: transition.from,
3895
3895
  to: transition.to,
3896
3896
  event: transition.event
@@ -3904,9 +3904,9 @@ function setupStateMachine(params) {
3904
3904
  return stateMachine;
3905
3905
  }
3906
3906
  function initializeInfrastructure(params) {
3907
- const { agentId, role, logger: logger54, adapter, pruningConfig, memoryConfig } = params;
3907
+ const { agentId, role, logger: logger55, adapter, pruningConfig, memoryConfig } = params;
3908
3908
  const pruningOpts = {
3909
- logger: logger54,
3909
+ logger: logger55,
3910
3910
  ...pruningConfig !== void 0 ? { config: pruningConfig } : {},
3911
3911
  ...adapter !== void 0 ? { adapter } : {}
3912
3912
  };
@@ -3914,7 +3914,7 @@ function initializeInfrastructure(params) {
3914
3914
  const memoryOpts = {
3915
3915
  agentId,
3916
3916
  role,
3917
- logger: logger54,
3917
+ logger: logger55,
3918
3918
  ...memoryConfig !== void 0 ? { config: memoryConfig } : {}
3919
3919
  };
3920
3920
  const memory = initializeMemoryInfrastructure(memoryOpts);
@@ -4146,14 +4146,14 @@ function transformTaskError(error, agentId, taskId) {
4146
4146
  return new AgentError(`Task execution failed: ${message}`, opts);
4147
4147
  }
4148
4148
  function finalizeTaskSuccess(params) {
4149
- const { task, result, startTime, stateMachine, budgetTracker, logger: logger54 } = params;
4149
+ const { task, result, startTime, stateMachine, budgetTracker, logger: logger55 } = params;
4150
4150
  const durationMs = getTimeProvider().now() - startTime;
4151
4151
  if (stateMachine.state === "thinking") {
4152
4152
  stateMachine.transition("plan_completed", { taskId: task.id });
4153
4153
  }
4154
4154
  stateMachine.transition("task_completed", { taskId: task.id, durationMs });
4155
4155
  const budgetStats = budgetTracker.endTask();
4156
- logger54.info("Task completed", {
4156
+ logger55.info("Task completed", {
4157
4157
  taskId: task.id,
4158
4158
  durationMs,
4159
4159
  tokensUsed: result.metadata.tokensUsed,
@@ -4181,7 +4181,7 @@ function recordFailedTaskError(params) {
4181
4181
  });
4182
4182
  }
4183
4183
  async function persistMemoryAfterTask(params) {
4184
- const { memoryEnabled, memoryBackend, memoryState, persistenceMode, task, startTime, logger: logger54 } = params;
4184
+ const { memoryEnabled, memoryBackend, memoryState, persistenceMode, task, startTime, logger: logger55 } = params;
4185
4185
  if (!memoryEnabled || memoryState === null) {
4186
4186
  return memoryState;
4187
4187
  }
@@ -4196,9 +4196,9 @@ async function persistMemoryAfterTask(params) {
4196
4196
  successRate
4197
4197
  });
4198
4198
  if (memoryBackend !== void 0) {
4199
- await persistMemoryState(memoryBackend, updatedState, logger54);
4199
+ await persistMemoryState(memoryBackend, updatedState, logger55);
4200
4200
  }
4201
- logger54.debug("Memory persisted after task completion", {
4201
+ logger55.debug("Memory persisted after task completion", {
4202
4202
  taskId: task.id,
4203
4203
  durationMs
4204
4204
  });
@@ -4209,15 +4209,15 @@ function categorizeTaskType(description) {
4209
4209
  return categorizeTaskByKeywords(desc);
4210
4210
  }
4211
4211
  async function persistMemoryOnCleanup(params) {
4212
- const { memoryEnabled, memoryBackend, memoryState, persistenceMode, logger: logger54 } = params;
4212
+ const { memoryEnabled, memoryBackend, memoryState, persistenceMode, logger: logger55 } = params;
4213
4213
  if (!memoryEnabled || memoryBackend === void 0 || memoryState === null) {
4214
4214
  return;
4215
4215
  }
4216
4216
  if (persistenceMode === "none") {
4217
4217
  return;
4218
4218
  }
4219
- await persistMemoryState(memoryBackend, memoryState, logger54);
4220
- logger54.debug("Memory state persisted during cleanup");
4219
+ await persistMemoryState(memoryBackend, memoryState, logger55);
4220
+ logger55.debug("Memory state persisted during cleanup");
4221
4221
  }
4222
4222
 
4223
4223
  // src/agents/base-agent-execute-flow.ts
@@ -4343,14 +4343,14 @@ function createInitialPruningMetrics() {
4343
4343
 
4344
4344
  // src/agents/base-agent-memory-ops.ts
4345
4345
  async function flushMemoryState(params) {
4346
- const { memoryEnabled, memoryBackend, memoryState, logger: logger54 } = params;
4346
+ const { memoryEnabled, memoryBackend, memoryState, logger: logger55 } = params;
4347
4347
  if (!memoryEnabled) {
4348
4348
  return ok(void 0);
4349
4349
  }
4350
4350
  if (memoryBackend === void 0 || memoryState === null) {
4351
4351
  return ok(void 0);
4352
4352
  }
4353
- return persistMemoryState(memoryBackend, memoryState, logger54);
4353
+ return persistMemoryState(memoryBackend, memoryState, logger55);
4354
4354
  }
4355
4355
  function recordLearningToState(params) {
4356
4356
  const { memoryEnabled, memoryState, learning } = params;
@@ -5605,13 +5605,13 @@ function shouldFinalize(pattern, participants, results, votes, reviews) {
5605
5605
 
5606
5606
  // src/agents/collaboration/collaboration-session-helpers.ts
5607
5607
  var MAX_EVENT_LISTENERS = 50;
5608
- function emitEventToListeners(listeners, event, logger54) {
5608
+ function emitEventToListeners(listeners, event, logger55) {
5609
5609
  for (const listener of listeners) {
5610
5610
  try {
5611
5611
  listener(event);
5612
5612
  } catch (e) {
5613
5613
  const errorObj = e instanceof Error ? e : new Error(String(e));
5614
- logger54.error("Event listener error", errorObj, { eventType: event.type });
5614
+ logger55.error("Event listener error", errorObj, { eventType: event.type });
5615
5615
  }
5616
5616
  }
5617
5617
  }
@@ -9284,9 +9284,9 @@ var DEFAULT_WAVE_CONFIG = {
9284
9284
  var WaveScheduler = class {
9285
9285
  config;
9286
9286
  logger;
9287
- constructor(config = {}, logger54) {
9287
+ constructor(config = {}, logger55) {
9288
9288
  this.config = { ...DEFAULT_WAVE_CONFIG, ...config };
9289
- this.logger = logger54 ?? createLogger({ component: "wave-scheduler" });
9289
+ this.logger = logger55 ?? createLogger({ component: "wave-scheduler" });
9290
9290
  }
9291
9291
  /**
9292
9292
  * Execute tasks in waves respecting dependencies and concurrency limits.
@@ -9520,8 +9520,8 @@ function chunkByDirectory(files, basePath) {
9520
9520
  items
9521
9521
  }));
9522
9522
  }
9523
- function createWaveScheduler(config = {}, logger54) {
9524
- return new WaveScheduler(config, logger54);
9523
+ function createWaveScheduler(config = {}, logger55) {
9524
+ return new WaveScheduler(config, logger55);
9525
9525
  }
9526
9526
 
9527
9527
  // src/agents/experts/expert-types.ts
@@ -14863,9 +14863,9 @@ var SkillLibrary = class {
14863
14863
  config;
14864
14864
  logger;
14865
14865
  store;
14866
- constructor(config = {}, logger54) {
14866
+ constructor(config = {}, logger55) {
14867
14867
  this.config = { ...DEFAULT_SKILL_LIBRARY_CONFIG2, ...config };
14868
- this.logger = logger54 ?? createLogger({ component: "SkillLibrary" });
14868
+ this.logger = logger55 ?? createLogger({ component: "SkillLibrary" });
14869
14869
  this.store = {
14870
14870
  skills: /* @__PURE__ */ new Map(),
14871
14871
  executions: /* @__PURE__ */ new Map(),
@@ -15140,8 +15140,8 @@ var SkillLibrary = class {
15140
15140
  return scored.sort((a, b) => b.score - a.score).map((s) => s.skill);
15141
15141
  }
15142
15142
  };
15143
- function createSkillLibrary(config, logger54) {
15144
- return new SkillLibrary(config, logger54);
15143
+ function createSkillLibrary(config, logger55) {
15144
+ return new SkillLibrary(config, logger55);
15145
15145
  }
15146
15146
 
15147
15147
  // src/agents/skills/skill-composer.ts
@@ -15156,10 +15156,10 @@ var SkillComposer = class {
15156
15156
  config;
15157
15157
  logger;
15158
15158
  library;
15159
- constructor(library, config = {}, logger54) {
15159
+ constructor(library, config = {}, logger55) {
15160
15160
  this.library = library;
15161
15161
  this.config = { ...DEFAULT_COMPOSER_CONFIG, ...config };
15162
- this.logger = logger54 ?? createLogger({ component: "SkillComposer" });
15162
+ this.logger = logger55 ?? createLogger({ component: "SkillComposer" });
15163
15163
  }
15164
15164
  /**
15165
15165
  * Creates a composition plan for a task.
@@ -15389,8 +15389,8 @@ var SkillComposer = class {
15389
15389
  return errors;
15390
15390
  }
15391
15391
  };
15392
- function createSkillComposer(library, config, logger54) {
15393
- return new SkillComposer(library, config, logger54);
15392
+ function createSkillComposer(library, config, logger55) {
15393
+ return new SkillComposer(library, config, logger55);
15394
15394
  }
15395
15395
 
15396
15396
  // src/agents/skills/skill-dependency-graph-helpers.ts
@@ -16085,10 +16085,10 @@ var SkillLoader = class {
16085
16085
  library;
16086
16086
  logger;
16087
16087
  mappingIndex;
16088
- constructor(library, config, logger54) {
16088
+ constructor(library, config, logger55) {
16089
16089
  this.library = library;
16090
16090
  this.config = { ...DEFAULT_SKILL_LOADER_CONFIG, ...config };
16091
- this.logger = logger54 ?? createLogger({ component: "SkillLoader" });
16091
+ this.logger = logger55 ?? createLogger({ component: "SkillLoader" });
16092
16092
  this.mappingIndex = /* @__PURE__ */ new Map();
16093
16093
  for (const mapping of this.config.mappings) {
16094
16094
  this.mappingIndex.set(mapping.role, mapping);
@@ -16311,8 +16311,8 @@ var SkillLoader = class {
16311
16311
  return ok(orderResult.value);
16312
16312
  }
16313
16313
  };
16314
- function createSkillLoader(library, config, logger54) {
16315
- return new SkillLoader(library, config, logger54);
16314
+ function createSkillLoader(library, config, logger55) {
16315
+ return new SkillLoader(library, config, logger55);
16316
16316
  }
16317
16317
 
16318
16318
  // src/agents/skills/external-pack-loader.ts
@@ -16374,13 +16374,13 @@ function validateManifest(raw, packName, source) {
16374
16374
  }
16375
16375
  return ok(parseResult2.data);
16376
16376
  }
16377
- async function loadExternalPack(packSource, logger54) {
16377
+ async function loadExternalPack(packSource, logger55) {
16378
16378
  const { name, source, enabled } = packSource;
16379
16379
  if (!enabled) {
16380
- logger54.debug("Skipping disabled external pack", { name, source });
16380
+ logger55.debug("Skipping disabled external pack", { name, source });
16381
16381
  return ok({ packName: name, skillCount: 0, skills: [] });
16382
16382
  }
16383
- logger54.info("Loading external skill pack", { name, source });
16383
+ logger55.info("Loading external skill pack", { name, source });
16384
16384
  try {
16385
16385
  const importPath = await resolveImportPath(source);
16386
16386
  const module = await import(importPath);
@@ -16390,7 +16390,7 @@ async function loadExternalPack(packSource, logger54) {
16390
16390
  return validationResult;
16391
16391
  }
16392
16392
  const manifest = validationResult.value;
16393
- logger54.info("External pack loaded successfully", {
16393
+ logger55.info("External pack loaded successfully", {
16394
16394
  name: manifest.name,
16395
16395
  version: manifest.version,
16396
16396
  skillCount: manifest.skills.length
@@ -16411,22 +16411,22 @@ async function loadExternalPack(packSource, logger54) {
16411
16411
  );
16412
16412
  }
16413
16413
  }
16414
- async function loadAllExternalPacks(packs, logger54) {
16414
+ async function loadAllExternalPacks(packs, logger55) {
16415
16415
  const loaded = [];
16416
16416
  const errors = [];
16417
16417
  for (const pack of packs) {
16418
- const result = await loadExternalPack(pack, logger54);
16418
+ const result = await loadExternalPack(pack, logger55);
16419
16419
  if (result.ok) {
16420
16420
  loaded.push(result.value);
16421
16421
  } else {
16422
16422
  errors.push(result.error);
16423
- logger54.warn("Failed to load external pack", {
16423
+ logger55.warn("Failed to load external pack", {
16424
16424
  name: pack.name,
16425
16425
  error: result.error.message
16426
16426
  });
16427
16427
  }
16428
16428
  }
16429
- logger54.info("External pack loading complete", {
16429
+ logger55.info("External pack loading complete", {
16430
16430
  loaded: loaded.length,
16431
16431
  errors: errors.length,
16432
16432
  totalSkills: loaded.reduce((sum, r) => sum + r.skillCount, 0)
@@ -16888,9 +16888,9 @@ var SicaVersionManager = class {
16888
16888
  versions;
16889
16889
  events;
16890
16890
  activeVersionId;
16891
- constructor(config = {}, logger54) {
16891
+ constructor(config = {}, logger55) {
16892
16892
  this.config = { ...DEFAULT_SICA_CONFIG2, ...config };
16893
- this.logger = logger54 ?? createLogger({ component: "SicaVersionManager" });
16893
+ this.logger = logger55 ?? createLogger({ component: "SicaVersionManager" });
16894
16894
  this.versions = /* @__PURE__ */ new Map();
16895
16895
  this.events = [];
16896
16896
  this.activeVersionId = null;
@@ -21310,9 +21310,9 @@ var TemplateRegistry = class {
21310
21310
  await this.ensureInitialized();
21311
21311
  const { templates, errors } = await loadTemplatesFromDirectory(directoryPath);
21312
21312
  if (errors.length > 0) {
21313
- const logger54 = createLogger({ component: "TemplateRegistry" });
21313
+ const logger55 = createLogger({ component: "TemplateRegistry" });
21314
21314
  for (const error of errors) {
21315
- logger54.warn("Template loading warning", { error: error.message });
21315
+ logger55.warn("Template loading warning", { error: error.message });
21316
21316
  }
21317
21317
  }
21318
21318
  let loadedCount = 0;
@@ -21324,8 +21324,8 @@ var TemplateRegistry = class {
21324
21324
  loadedCount++;
21325
21325
  }
21326
21326
  } catch (regError) {
21327
- const logger54 = createLogger({ component: "TemplateRegistry" });
21328
- logger54.warn("Template registration failed", {
21327
+ const logger55 = createLogger({ component: "TemplateRegistry" });
21328
+ logger55.warn("Template registration failed", {
21329
21329
  template: definition.name,
21330
21330
  error: regError instanceof Error ? regError.message : String(regError)
21331
21331
  });
@@ -22174,11 +22174,11 @@ var BudgetCircuitError = class extends NexusError {
22174
22174
 
22175
22175
  // src/workflows/budget-circuit-breaker.ts
22176
22176
  var BudgetCircuitBreaker = class {
22177
- constructor(maxTokens, config, logger54) {
22177
+ constructor(maxTokens, config, logger55) {
22178
22178
  this.maxTokens = maxTokens;
22179
22179
  this.config = { ...DEFAULT_BUDGET_CIRCUIT_CONFIG, ...config };
22180
22180
  this.lastStateChange = getTimeProvider().now();
22181
- this.logger = logger54 ?? createLogger({ component: "budget-circuit-breaker" });
22181
+ this.logger = logger55 ?? createLogger({ component: "budget-circuit-breaker" });
22182
22182
  }
22183
22183
  state = "closed";
22184
22184
  lastStateChange;
@@ -22488,10 +22488,10 @@ function createSkippedResult() {
22488
22488
  circuitState: "closed"
22489
22489
  };
22490
22490
  }
22491
- function logEnforcementResult(logger54, stepId, result, currentUsagePercent) {
22491
+ function logEnforcementResult(logger55, stepId, result, currentUsagePercent) {
22492
22492
  const usagePercent = Math.round(currentUsagePercent * 100);
22493
22493
  if (!result.allowed) {
22494
- logger54.warn("Budget enforcement blocked step", {
22494
+ logger55.warn("Budget enforcement blocked step", {
22495
22495
  stepId,
22496
22496
  reason: result.reason,
22497
22497
  circuitState: result.circuitState,
@@ -22501,14 +22501,14 @@ function logEnforcementResult(logger54, stepId, result, currentUsagePercent) {
22501
22501
  return;
22502
22502
  }
22503
22503
  if (result.warning !== void 0) {
22504
- logger54.warn("Budget enforcement warning", {
22504
+ logger55.warn("Budget enforcement warning", {
22505
22505
  stepId,
22506
22506
  warning: result.warning,
22507
22507
  currentUsage: usagePercent
22508
22508
  });
22509
22509
  return;
22510
22510
  }
22511
- logger54.debug("Budget enforcement passed for step", {
22511
+ logger55.debug("Budget enforcement passed for step", {
22512
22512
  stepId,
22513
22513
  currentUsage: usagePercent,
22514
22514
  allocatedTokens: result.allocatedTokens
@@ -22544,15 +22544,15 @@ function buildFinalOutput(stepResults) {
22544
22544
  }
22545
22545
 
22546
22546
  // src/workflows/workflow-engine-execution.ts
22547
- function createContextManagerForWorkflow(config, workflow, logger54) {
22547
+ function createContextManagerForWorkflow(config, workflow, logger55) {
22548
22548
  if (config.contextManagerConfig === void 0) return void 0;
22549
22549
  const budget = workflow.defaultBudget ?? config.defaultBudget;
22550
- return new ContextManager({ ...config.contextManagerConfig, budget, logger: logger54 });
22550
+ return new ContextManager({ ...config.contextManagerConfig, budget, logger: logger55 });
22551
22551
  }
22552
- function createBudgetCircuitBreakerForWorkflow(contextManager, workflow, config, logger54) {
22552
+ function createBudgetCircuitBreakerForWorkflow(contextManager, workflow, config, logger55) {
22553
22553
  const budgetConfig = {
22554
22554
  engineDefaultBudget: config.defaultBudget,
22555
- logger: logger54
22555
+ logger: logger55
22556
22556
  };
22557
22557
  if (workflow.defaultBudget !== void 0) {
22558
22558
  budgetConfig.workflowDefaultBudget = workflow.defaultBudget;
@@ -22587,12 +22587,12 @@ function applyInputDefaults(workflow, inputs) {
22587
22587
  return merged;
22588
22588
  }
22589
22589
  function initializeExecution(params) {
22590
- const { workflow, inputs, config, logger: logger54 } = params;
22590
+ const { workflow, inputs, config, logger: logger55 } = params;
22591
22591
  const executionId = generateUUID();
22592
22592
  const startTime = getTimeProvider().now();
22593
22593
  const resolvedInputs = applyInputDefaults(workflow, inputs);
22594
- const contextManager = createContextManagerForWorkflow(config, workflow, logger54);
22595
- const budgetCircuitBreaker = config.enableBudgetEnforcement ? createBudgetCircuitBreakerForWorkflow(contextManager, workflow, config, logger54) : void 0;
22594
+ const contextManager = createContextManagerForWorkflow(config, workflow, logger55);
22595
+ const budgetCircuitBreaker = config.enableBudgetEnforcement ? createBudgetCircuitBreakerForWorkflow(contextManager, workflow, config, logger55) : void 0;
22596
22596
  const context = {
22597
22597
  workflowId: workflow.name,
22598
22598
  executionId,
@@ -22612,7 +22612,7 @@ function initializeExecution(params) {
22612
22612
  startTime
22613
22613
  };
22614
22614
  if (contextManager !== void 0) {
22615
- logger54.debug("Context manager initialized for workflow execution", {
22615
+ logger55.debug("Context manager initialized for workflow execution", {
22616
22616
  executionId,
22617
22617
  workflowName: workflow.name,
22618
22618
  budget: workflow.defaultBudget ?? config.defaultBudget
@@ -22621,10 +22621,10 @@ function initializeExecution(params) {
22621
22621
  return { executionId, context, startTime, execution };
22622
22622
  }
22623
22623
  function enforceStepBudgets(options) {
22624
- const { steps, context, workflow, totalSteps, config, logger: logger54 } = options;
22624
+ const { steps, context, workflow, totalSteps, config, logger: logger55 } = options;
22625
22625
  const budgetConfig = {
22626
22626
  engineDefaultBudget: config.defaultBudget,
22627
- logger: logger54
22627
+ logger: logger55
22628
22628
  };
22629
22629
  if (workflow.defaultBudget !== void 0) {
22630
22630
  budgetConfig.workflowDefaultBudget = workflow.defaultBudget;
@@ -22909,29 +22909,29 @@ function createExpertFactoryWithAdapter(adapter) {
22909
22909
  };
22910
22910
  return new ExpertFactoryAdapter(factoryWrapper);
22911
22911
  }
22912
- function adaptLoggerForStepExecutor(logger54) {
22912
+ function adaptLoggerForStepExecutor(logger55) {
22913
22913
  return {
22914
22914
  debug: (message, data) => {
22915
- logger54.debug(message, data);
22915
+ logger55.debug(message, data);
22916
22916
  },
22917
22917
  info: (message, data) => {
22918
- logger54.info(message, data);
22918
+ logger55.info(message, data);
22919
22919
  },
22920
22920
  warn: (message, data) => {
22921
- logger54.warn(message, data);
22921
+ logger55.warn(message, data);
22922
22922
  },
22923
22923
  error: (message, data) => {
22924
22924
  if (data !== void 0) {
22925
22925
  const errorContext = { ...data };
22926
- logger54.error(message, void 0, errorContext);
22926
+ logger55.error(message, void 0, errorContext);
22927
22927
  } else {
22928
- logger54.error(message);
22928
+ logger55.error(message);
22929
22929
  }
22930
22930
  }
22931
22931
  };
22932
22932
  }
22933
- function createRealStepExecutorCallback(expertFactory, logger54, workflowId) {
22934
- const adaptedLogger = adaptLoggerForStepExecutor(logger54);
22933
+ function createRealStepExecutorCallback(expertFactory, logger55, workflowId) {
22934
+ const adaptedLogger = adaptLoggerForStepExecutor(logger55);
22935
22935
  const executor = createStepExecutor({ expertFactory, logger: adaptedLogger });
22936
22936
  return async (step, ctx) => {
22937
22937
  const startTime = getTimeProvider().now();
@@ -22947,7 +22947,7 @@ function createRealStepExecutorCallback(expertFactory, logger54, workflowId) {
22947
22947
  }
22948
22948
  const result = await executor.execute(step, workflowCtx);
22949
22949
  if (!result.ok) {
22950
- logger54.warn("Step execution failed", {
22950
+ logger55.warn("Step execution failed", {
22951
22951
  stepId: step.id,
22952
22952
  error: result.error.message
22953
22953
  });
@@ -23007,10 +23007,10 @@ function adaptExecutionPlan(plannerPlan) {
23007
23007
  }));
23008
23008
  return { phases };
23009
23009
  }
23010
- function createMockStepExecutor(logger54) {
23010
+ function createMockStepExecutor(logger55) {
23011
23011
  return (step, _ctx) => {
23012
23012
  const startTime = getTimeProvider().now();
23013
- logger54.debug("Executing step (mock)", {
23013
+ logger55.debug("Executing step (mock)", {
23014
23014
  stepId: step.id,
23015
23015
  agent: step.agent,
23016
23016
  action: step.action
@@ -23019,16 +23019,16 @@ function createMockStepExecutor(logger54) {
23019
23019
  };
23020
23020
  }
23021
23021
  function resolveStepExecutor(options) {
23022
- const { logger: logger54, expertFactory, workflowId, useMockExecutor } = options;
23022
+ const { logger: logger55, expertFactory, workflowId, useMockExecutor } = options;
23023
23023
  if (useMockExecutor === true) {
23024
- logger54.warn(
23024
+ logger55.warn(
23025
23025
  "useMockExecutor enabled; workflow steps will return mock results (NOT RECOMMENDED)"
23026
23026
  );
23027
- return createMockStepExecutor(logger54);
23027
+ return createMockStepExecutor(logger55);
23028
23028
  }
23029
23029
  if (expertFactory !== void 0 && workflowId !== void 0) {
23030
- logger54.info("Using real StepExecutor with ExpertFactory", { workflowId });
23031
- return createRealStepExecutorCallback(expertFactory, logger54, workflowId);
23030
+ logger55.info("Using real StepExecutor with ExpertFactory", { workflowId });
23031
+ return createRealStepExecutorCallback(expertFactory, logger55, workflowId);
23032
23032
  }
23033
23033
  if (expertFactory !== void 0 && workflowId === void 0) {
23034
23034
  throw new WorkflowExecutionUnavailableError("expertFactory provided but workflowId missing");
@@ -23039,9 +23039,9 @@ function resolveStepExecutor(options) {
23039
23039
  }
23040
23040
  function createExecutePhase(options) {
23041
23041
  const stepExecutor = resolveStepExecutor(options);
23042
- const { logger: logger54 } = options;
23042
+ const { logger: logger55 } = options;
23043
23043
  return async (steps, context, executionOptions) => {
23044
- logger54.debug("Executing phase", {
23044
+ logger55.debug("Executing phase", {
23045
23045
  stepCount: steps.length,
23046
23046
  executionId: context.executionId,
23047
23047
  maxConcurrency: executionOptions.maxConcurrency
@@ -23092,26 +23092,26 @@ function createAdaptedExecutionPlan() {
23092
23092
  return ok(adaptExecutionPlan(planResult.value));
23093
23093
  };
23094
23094
  }
23095
- function resolveExpertFactory(config, logger54) {
23095
+ function resolveExpertFactory(config, logger55) {
23096
23096
  if (config?.expertFactory !== void 0) {
23097
23097
  return config.expertFactory;
23098
23098
  }
23099
23099
  if (config?.modelAdapter !== void 0) {
23100
- logger54.info("Created ExpertFactory with provided model adapter");
23100
+ logger55.info("Created ExpertFactory with provided model adapter");
23101
23101
  return createExpertFactoryWithAdapter(config.modelAdapter);
23102
23102
  }
23103
23103
  return void 0;
23104
23104
  }
23105
23105
  function createWorkflowEngineDeps(config) {
23106
- const logger54 = config?.logger ?? createLogger({ component: "WorkflowEngine" });
23106
+ const logger55 = config?.logger ?? createLogger({ component: "WorkflowEngine" });
23107
23107
  const builtInTemplates = config?.builtInTemplates ?? cachedBuiltInTemplates ?? /* @__PURE__ */ new Map();
23108
- const expertFactory = resolveExpertFactory(config, logger54);
23108
+ const expertFactory = resolveExpertFactory(config, logger55);
23109
23109
  return {
23110
23110
  parseWorkflow: createParseWorkflow(),
23111
23111
  loadWorkflowFile: createLoadWorkflowFile(),
23112
23112
  createExecutionPlan: createAdaptedExecutionPlan(),
23113
23113
  executePhase: createExecutePhase({
23114
- logger: logger54,
23114
+ logger: logger55,
23115
23115
  expertFactory,
23116
23116
  workflowId: "default",
23117
23117
  useMockExecutor: config?.useMockExecutor
@@ -23142,32 +23142,32 @@ async function createInitializedWorkflowEngine(config) {
23142
23142
  function shouldSkipAdapterDetection(config) {
23143
23143
  return config?.modelAdapter !== void 0 || config?.expertFactory !== void 0 || config?.useMockExecutor === true;
23144
23144
  }
23145
- function tryAutoDetectAdapter(logger54) {
23145
+ function tryAutoDetectAdapter(logger55) {
23146
23146
  try {
23147
- logger54.info("Auto-detecting model adapter for workflow execution");
23148
- const registry = getGlobalRegistry({ logger: logger54 });
23147
+ logger55.info("Auto-detecting model adapter for workflow execution");
23148
+ const registry = getGlobalRegistry({ logger: logger55 });
23149
23149
  const adapter = registry.getDefault();
23150
- logger54.info("Using unified registry default adapter");
23150
+ logger55.info("Using unified registry default adapter");
23151
23151
  return adapter;
23152
23152
  } catch (error) {
23153
23153
  const message = getErrorMessage(error);
23154
- logger54.warn("No model adapter available, using mock executor", { error: message });
23154
+ logger55.warn("No model adapter available, using mock executor", { error: message });
23155
23155
  return void 0;
23156
23156
  }
23157
23157
  }
23158
23158
  function createWorkflowEngineDepsAsync(config) {
23159
- const logger54 = config?.logger ?? createLogger({ component: "WorkflowEngine" });
23159
+ const logger55 = config?.logger ?? createLogger({ component: "WorkflowEngine" });
23160
23160
  if (shouldSkipAdapterDetection(config)) {
23161
- logger54.debug("Skipping adapter detection - using provided config");
23161
+ logger55.debug("Skipping adapter detection - using provided config");
23162
23162
  return Promise.resolve(createWorkflowEngineDeps(config));
23163
23163
  }
23164
- const adapter = tryAutoDetectAdapter(logger54);
23164
+ const adapter = tryAutoDetectAdapter(logger55);
23165
23165
  if (adapter !== void 0) {
23166
- return Promise.resolve(createWorkflowEngineDeps({ ...config, modelAdapter: adapter, logger: logger54 }));
23166
+ return Promise.resolve(createWorkflowEngineDeps({ ...config, modelAdapter: adapter, logger: logger55 }));
23167
23167
  }
23168
23168
  if (config?.useMockExecutor === true) {
23169
- logger54.warn("Using mock executor as explicitly configured (no real adapter available)");
23170
- return Promise.resolve(createWorkflowEngineDeps({ ...config, useMockExecutor: true, logger: logger54 }));
23169
+ logger55.warn("Using mock executor as explicitly configured (no real adapter available)");
23170
+ return Promise.resolve(createWorkflowEngineDeps({ ...config, useMockExecutor: true, logger: logger55 }));
23171
23171
  }
23172
23172
  return Promise.reject(
23173
23173
  new WorkflowExecutionUnavailableError(
@@ -23249,23 +23249,23 @@ function createToolLogger(parentLogger, toolName, requestId) {
23249
23249
  }
23250
23250
  return parentLogger.child(context);
23251
23251
  }
23252
- function logToolStart(logger54, toolName, args) {
23253
- logger54.info("Tool execution started", {
23252
+ function logToolStart(logger55, toolName, args) {
23253
+ logger55.info("Tool execution started", {
23254
23254
  tool: toolName,
23255
23255
  hasArgs: args !== void 0,
23256
23256
  argKeys: args !== void 0 ? Object.keys(args) : []
23257
23257
  });
23258
23258
  }
23259
- function logToolSuccess(logger54, toolName, durationMs, resultInfo) {
23260
- logger54.info("Tool execution completed", {
23259
+ function logToolSuccess(logger55, toolName, durationMs, resultInfo) {
23260
+ logger55.info("Tool execution completed", {
23261
23261
  tool: toolName,
23262
23262
  durationMs,
23263
23263
  success: true,
23264
23264
  ...resultInfo
23265
23265
  });
23266
23266
  }
23267
- function logToolError(logger54, toolName, error, durationMs) {
23268
- logger54.error("Tool execution failed", error, {
23267
+ function logToolError(logger55, toolName, error, durationMs) {
23268
+ logger55.error("Tool execution failed", error, {
23269
23269
  tool: toolName,
23270
23270
  durationMs,
23271
23271
  success: false,
@@ -23278,8 +23278,8 @@ function createTimer() {
23278
23278
  elapsed: () => getTimeProvider().now() - startTime
23279
23279
  };
23280
23280
  }
23281
- function withLogging(toolName, handler2, logger54) {
23282
- const toolLogger = createToolLogger(logger54, toolName);
23281
+ function withLogging(toolName, handler2, logger55) {
23282
+ const toolLogger = createToolLogger(logger55, toolName);
23283
23283
  return async (args) => {
23284
23284
  const timer = createTimer();
23285
23285
  logToolStart(toolLogger, toolName, args);
@@ -23365,9 +23365,9 @@ var AuthHandler = class {
23365
23365
  config;
23366
23366
  logger;
23367
23367
  storedToken;
23368
- constructor(config, logger54) {
23368
+ constructor(config, logger55) {
23369
23369
  this.config = resolveAuthConfig(config);
23370
- this.logger = logger54 ?? createLogger({ component: "AuthHandler" });
23370
+ this.logger = logger55 ?? createLogger({ component: "AuthHandler" });
23371
23371
  if (this.config.enabled) this.loadToken();
23372
23372
  }
23373
23373
  /**
@@ -23466,22 +23466,22 @@ var AuthHandler = class {
23466
23466
  };
23467
23467
 
23468
23468
  // src/mcp/middleware/tool-error-handler.ts
23469
- function toolErrorResponse(prefix, error, logger54) {
23469
+ function toolErrorResponse(prefix, error, logger55) {
23470
23470
  const message = getErrorMessage(error);
23471
- if (logger54 !== void 0) {
23471
+ if (logger55 !== void 0) {
23472
23472
  const errorObj = error instanceof Error ? error : new Error(message);
23473
- logger54.error(prefix, errorObj);
23473
+ logger55.error(prefix, errorObj);
23474
23474
  }
23475
23475
  return {
23476
23476
  isError: true,
23477
23477
  content: [{ type: "text", text: `${prefix}: ${message}` }]
23478
23478
  };
23479
23479
  }
23480
- async function withToolError(prefix, logger54, fn) {
23480
+ async function withToolError(prefix, logger55, fn) {
23481
23481
  try {
23482
23482
  return await fn();
23483
23483
  } catch (error) {
23484
- return toolErrorResponse(prefix, error, logger54);
23484
+ return toolErrorResponse(prefix, error, logger55);
23485
23485
  }
23486
23486
  }
23487
23487
 
@@ -25961,47 +25961,47 @@ function createSubscriptions(eventBus, subs, handler2) {
25961
25961
  }
25962
25962
  return subscriptions;
25963
25963
  }
25964
- function createCleanupFunction(subscriptions, eventBus, logger54) {
25964
+ function createCleanupFunction(subscriptions, eventBus, logger55) {
25965
25965
  return () => {
25966
- logger54.debug("Cleaning up EventBus bridge subscriptions");
25966
+ logger55.debug("Cleaning up EventBus bridge subscriptions");
25967
25967
  for (const sub of subscriptions) {
25968
25968
  sub.unsubscribe();
25969
25969
  }
25970
- logger54.info("EventBus bridge cleanup complete", {
25970
+ logger55.info("EventBus bridge cleanup complete", {
25971
25971
  unsubscribedCount: subscriptions.length,
25972
25972
  finalStats: eventBus.getStats()
25973
25973
  });
25974
25974
  };
25975
25975
  }
25976
- function initializeEventBusBridge(observer, logger54, config) {
25976
+ function initializeEventBusBridge(observer, logger55, config) {
25977
25977
  const mergedConfig = mergeConfig2(config);
25978
25978
  if (!mergedConfig.enabled) {
25979
- logger54.debug("EventBus bridge disabled by configuration");
25979
+ logger55.debug("EventBus bridge disabled by configuration");
25980
25980
  return { initialized: false, subscriptionCount: 0, cleanup: () => {
25981
25981
  } };
25982
25982
  }
25983
25983
  const eventBus = getGlobalEventBus({ maxHistorySize: mergedConfig.maxHistorySize });
25984
25984
  const logConfig = mergedConfig.logging;
25985
- logger54.info("Initializing EventBus bridge for MCP server", {
25985
+ logger55.info("Initializing EventBus bridge for MCP server", {
25986
25986
  maxHistorySize: mergedConfig.maxHistorySize,
25987
25987
  subscriptions: mergedConfig.subscriptions
25988
25988
  });
25989
25989
  const handler2 = (event) => {
25990
- handleEvent(event, observer, logger54, logConfig);
25990
+ handleEvent(event, observer, logger55, logConfig);
25991
25991
  };
25992
25992
  const subscriptions = createSubscriptions(eventBus, mergedConfig.subscriptions, handler2);
25993
- logger54.info("EventBus bridge initialized", {
25993
+ logger55.info("EventBus bridge initialized", {
25994
25994
  subscriptionCount: subscriptions.length,
25995
25995
  eventBusStats: eventBus.getStats()
25996
25996
  });
25997
- const cleanup = createCleanupFunction(subscriptions, eventBus, logger54);
25997
+ const cleanup = createCleanupFunction(subscriptions, eventBus, logger55);
25998
25998
  return {
25999
25999
  initialized: true,
26000
26000
  subscriptionCount: subscriptions.length,
26001
26001
  cleanup
26002
26002
  };
26003
26003
  }
26004
- function handleEvent(event, observer, logger54, logConfig) {
26004
+ function handleEvent(event, observer, logger55, logConfig) {
26005
26005
  const isImportant = IMPORTANT_TOPICS.has(event.topic);
26006
26006
  const logLevel = isImportant ? logConfig.importantEventLevel : logConfig.frequentEventLevel;
26007
26007
  const logContext = {
@@ -26012,9 +26012,9 @@ function handleEvent(event, observer, logger54, logConfig) {
26012
26012
  timestamp: event.timestamp
26013
26013
  };
26014
26014
  if (logLevel === "info") {
26015
- logger54.info(`EventBus: ${event.topic}`, logContext);
26015
+ logger55.info(`EventBus: ${event.topic}`, logContext);
26016
26016
  } else {
26017
- logger54.debug(`EventBus: ${event.topic}`, logContext);
26017
+ logger55.debug(`EventBus: ${event.topic}`, logContext);
26018
26018
  }
26019
26019
  recordEventToObserver(event, observer);
26020
26020
  }
@@ -26192,19 +26192,19 @@ var PROMPT_DEFINITIONS = [
26192
26192
  ];
26193
26193
 
26194
26194
  // src/mcp/prompts/index.ts
26195
- function registerPrompts(server, logger54) {
26195
+ function registerPrompts(server, logger55) {
26196
26196
  const registered = [];
26197
26197
  for (const definition of PROMPT_DEFINITIONS) {
26198
- registerSinglePrompt(server, definition, logger54);
26198
+ registerSinglePrompt(server, definition, logger55);
26199
26199
  registered.push(definition.name);
26200
26200
  }
26201
- logger54.info("Prompt templates registered", {
26201
+ logger55.info("Prompt templates registered", {
26202
26202
  count: registered.length,
26203
26203
  prompts: registered
26204
26204
  });
26205
26205
  return { prompts: registered };
26206
26206
  }
26207
- function registerSinglePrompt(server, definition, logger54) {
26207
+ function registerSinglePrompt(server, definition, logger55) {
26208
26208
  server.registerPrompt(
26209
26209
  definition.name,
26210
26210
  {
@@ -26212,7 +26212,7 @@ function registerSinglePrompt(server, definition, logger54) {
26212
26212
  argsSchema: definition.argsSchema
26213
26213
  },
26214
26214
  (args) => {
26215
- logger54.debug("Prompt requested", { prompt: definition.name });
26215
+ logger55.debug("Prompt requested", { prompt: definition.name });
26216
26216
  const messages = definition.buildMessages(args);
26217
26217
  return {
26218
26218
  description: definition.description,
@@ -26252,7 +26252,7 @@ function buildModelsPayload() {
26252
26252
  }))
26253
26253
  };
26254
26254
  }
26255
- function registerModelsResource(server, logger54) {
26255
+ function registerModelsResource(server, logger55) {
26256
26256
  server.registerResource(
26257
26257
  MODELS_RESOURCE_NAME,
26258
26258
  MODELS_RESOURCE_URI,
@@ -26261,7 +26261,7 @@ function registerModelsResource(server, logger54) {
26261
26261
  mimeType: "application/json"
26262
26262
  },
26263
26263
  () => {
26264
- logger54.debug("Reading models resource");
26264
+ logger55.debug("Reading models resource");
26265
26265
  const payload = buildModelsPayload();
26266
26266
  return {
26267
26267
  contents: [
@@ -26274,7 +26274,7 @@ function registerModelsResource(server, logger54) {
26274
26274
  };
26275
26275
  }
26276
26276
  );
26277
- logger54.info("Registered models resource", { uri: MODELS_RESOURCE_URI });
26277
+ logger55.info("Registered models resource", { uri: MODELS_RESOURCE_URI });
26278
26278
  }
26279
26279
 
26280
26280
  // src/indexer/research-index/research-index-base-types.ts
@@ -27065,10 +27065,10 @@ ${topicLines}
27065
27065
  // src/mcp/resources/research-resource.ts
27066
27066
  var RESEARCH_RESOURCE_URI = "nexus://research/papers";
27067
27067
  var RESEARCH_RESOURCE_NAME = "research-papers";
27068
- function buildResearchPayload(logger54) {
27068
+ function buildResearchPayload(logger55) {
27069
27069
  const result = parseRegistry();
27070
27070
  if (!result.ok) {
27071
- logger54.debug("Research registry not available", {
27071
+ logger55.debug("Research registry not available", {
27072
27072
  error: result.error.message
27073
27073
  });
27074
27074
  return {
@@ -27102,7 +27102,7 @@ function buildResearchPayload(logger54) {
27102
27102
  stats: index.stats
27103
27103
  };
27104
27104
  }
27105
- function registerResearchResource(server, logger54) {
27105
+ function registerResearchResource(server, logger55) {
27106
27106
  server.registerResource(
27107
27107
  RESEARCH_RESOURCE_NAME,
27108
27108
  RESEARCH_RESOURCE_URI,
@@ -27111,9 +27111,9 @@ function registerResearchResource(server, logger54) {
27111
27111
  mimeType: "application/json"
27112
27112
  },
27113
27113
  () => {
27114
- logger54.debug("Reading research resource");
27114
+ logger55.debug("Reading research resource");
27115
27115
  try {
27116
- const payload = buildResearchPayload(logger54);
27116
+ const payload = buildResearchPayload(logger55);
27117
27117
  return {
27118
27118
  contents: [
27119
27119
  {
@@ -27124,7 +27124,7 @@ function registerResearchResource(server, logger54) {
27124
27124
  ]
27125
27125
  };
27126
27126
  } catch (error) {
27127
- logger54.warn("Failed to build research payload", {
27127
+ logger55.warn("Failed to build research payload", {
27128
27128
  error: getErrorMessage(error)
27129
27129
  });
27130
27130
  return {
@@ -27139,7 +27139,7 @@ function registerResearchResource(server, logger54) {
27139
27139
  }
27140
27140
  }
27141
27141
  );
27142
- logger54.info("Registered research resource", { uri: RESEARCH_RESOURCE_URI });
27142
+ logger55.info("Registered research resource", { uri: RESEARCH_RESOURCE_URI });
27143
27143
  }
27144
27144
 
27145
27145
  // src/mcp/tools/create-expert.ts
@@ -27240,29 +27240,29 @@ var ROLE_TO_TASK_CATEGORY = {
27240
27240
  pm_expert: "planning",
27241
27241
  ux_expert: "planning"
27242
27242
  };
27243
- function resolveAdapterForModelPreference(modelPreference, fallbackAdapter, logger54) {
27244
- const registry = getGlobalRegistry({ logger: logger54 });
27243
+ function resolveAdapterForModelPreference(modelPreference, fallbackAdapter, logger55) {
27244
+ const registry = getGlobalRegistry({ logger: logger55 });
27245
27245
  const adapter = registry.getAdapterForModel(modelPreference);
27246
27246
  if (adapter === registry.getDefault() && fallbackAdapter !== void 0) {
27247
- logger54.debug("Model preference not in registry, using fallback adapter", { modelPreference });
27247
+ logger55.debug("Model preference not in registry, using fallback adapter", { modelPreference });
27248
27248
  return fallbackAdapter;
27249
27249
  }
27250
- logger54.info("Routing expert to CLI for model preference", { modelPreference });
27250
+ logger55.info("Routing expert to CLI for model preference", { modelPreference });
27251
27251
  return adapter;
27252
27252
  }
27253
- function resolveAdapterForRole(role, fallbackAdapter, logger54) {
27253
+ function resolveAdapterForRole(role, fallbackAdapter, logger55) {
27254
27254
  const category = ROLE_TO_TASK_CATEGORY[role];
27255
27255
  if (category === void 0) return fallbackAdapter;
27256
- const registry = getGlobalRegistry({ logger: logger54 });
27256
+ const registry = getGlobalRegistry({ logger: logger55 });
27257
27257
  const adapter = registry.getAdapter(category);
27258
- logger54.info("Auto-routing expert to specialized CLI", {
27258
+ logger55.info("Auto-routing expert to specialized CLI", {
27259
27259
  role,
27260
27260
  category,
27261
27261
  preferredCli: registry.getRouting(category)?.primaryCli
27262
27262
  });
27263
27263
  return adapter;
27264
27264
  }
27265
- function getExpertFallbackChain(role, excludeCli, logger54) {
27265
+ function getExpertFallbackChain(role, excludeCli, logger55) {
27266
27266
  const category = ROLE_TO_TASK_CATEGORY[role];
27267
27267
  if (category === void 0) return [];
27268
27268
  const bucketType = CATEGORY_TO_FALLBACK_TYPE[category];
@@ -27271,7 +27271,7 @@ function getExpertFallbackChain(role, excludeCli, logger54) {
27271
27271
  bucketType
27272
27272
  );
27273
27273
  const filtered = chain.filter((cli) => cli !== excludeCli);
27274
- logger54.debug("Expert fallback chain resolved", { role, category, excludeCli, chain: filtered });
27274
+ logger55.debug("Expert fallback chain resolved", { role, category, excludeCli, chain: filtered });
27275
27275
  return [...filtered];
27276
27276
  }
27277
27277
 
@@ -27377,16 +27377,16 @@ function buildResponse(expert) {
27377
27377
  };
27378
27378
  }
27379
27379
  function createExpertFromFactory(deps, expertType, modelPreference, role) {
27380
- const logger54 = deps.logger ?? createLogger({ tool: "create_expert" });
27380
+ const logger55 = deps.logger ?? createLogger({ tool: "create_expert" });
27381
27381
  const options = {};
27382
27382
  if (modelPreference !== void 0) {
27383
27383
  options.modelOverrides = { modelId: modelPreference };
27384
27384
  }
27385
27385
  let adapter;
27386
27386
  if (modelPreference !== void 0) {
27387
- adapter = resolveAdapterForModelPreference(modelPreference, deps.modelAdapter, logger54);
27387
+ adapter = resolveAdapterForModelPreference(modelPreference, deps.modelAdapter, logger55);
27388
27388
  } else if (role !== void 0) {
27389
- adapter = resolveAdapterForRole(role, deps.modelAdapter, logger54);
27389
+ adapter = resolveAdapterForRole(role, deps.modelAdapter, logger55);
27390
27390
  } else {
27391
27391
  adapter = deps.modelAdapter;
27392
27392
  }
@@ -27457,7 +27457,7 @@ function createCreateExpertHandler(deps) {
27457
27457
  };
27458
27458
  }
27459
27459
  function registerCreateExpertTool(server, deps) {
27460
- const logger54 = deps.logger ?? createLogger({ tool: "create_expert" });
27460
+ const logger55 = deps.logger ?? createLogger({ tool: "create_expert" });
27461
27461
  const toolSchema = {
27462
27462
  role: z56.enum([
27463
27463
  "code_expert",
@@ -27477,23 +27477,23 @@ function registerCreateExpertTool(server, deps) {
27477
27477
  const secureHandler = createSecureHandler(createCreateExpertHandler(deps), {
27478
27478
  toolName: "create_expert",
27479
27479
  rateLimiter: deps.rateLimiter,
27480
- logger: logger54
27480
+ logger: logger55
27481
27481
  });
27482
27482
  const timeoutMs = getToolTimeout("create_expert", deps.security);
27483
- const wrappedHandler = wrapToolWithTimeout("create_expert", secureHandler, { timeoutMs, logger: logger54 });
27483
+ const wrappedHandler = wrapToolWithTimeout("create_expert", secureHandler, { timeoutMs, logger: logger55 });
27484
27484
  server.registerTool(
27485
27485
  "create_expert",
27486
27486
  { description, inputSchema: toolSchema },
27487
27487
  toSdkCallback(wrappedHandler)
27488
27488
  );
27489
- logger54.info("Registered create_expert tool with secure handler and timeout protection");
27489
+ logger55.info("Registered create_expert tool with secure handler and timeout protection");
27490
27490
  }
27491
- function createDefaultDeps(rateLimiter, logger54) {
27491
+ function createDefaultDeps(rateLimiter, logger55) {
27492
27492
  return {
27493
27493
  expertFactory: ExpertFactory,
27494
27494
  expertRegistry: /* @__PURE__ */ new Map(),
27495
27495
  rateLimiter,
27496
- ...logger54 !== void 0 ? { logger: logger54 } : {}
27496
+ ...logger55 !== void 0 ? { logger: logger55 } : {}
27497
27497
  };
27498
27498
  }
27499
27499
  function getAvailableRoles() {
@@ -27528,7 +27528,7 @@ function buildExpertsPayload() {
27528
27528
  experts
27529
27529
  };
27530
27530
  }
27531
- function registerExpertsResource(server, logger54) {
27531
+ function registerExpertsResource(server, logger55) {
27532
27532
  server.registerResource(
27533
27533
  EXPERTS_RESOURCE_NAME,
27534
27534
  EXPERTS_RESOURCE_URI,
@@ -27537,7 +27537,7 @@ function registerExpertsResource(server, logger54) {
27537
27537
  mimeType: "application/json"
27538
27538
  },
27539
27539
  () => {
27540
- logger54.debug("Reading experts resource");
27540
+ logger55.debug("Reading experts resource");
27541
27541
  const payload = buildExpertsPayload();
27542
27542
  return {
27543
27543
  contents: [
@@ -27550,12 +27550,12 @@ function registerExpertsResource(server, logger54) {
27550
27550
  };
27551
27551
  }
27552
27552
  );
27553
- logger54.info("Registered experts resource", { uri: EXPERTS_RESOURCE_URI });
27553
+ logger55.info("Registered experts resource", { uri: EXPERTS_RESOURCE_URI });
27554
27554
  }
27555
27555
 
27556
27556
  // src/mcp/resources/index.ts
27557
- function registerResources(server, logger54) {
27558
- const log3 = logger54 ?? createLogger({ component: "mcp-resources" });
27557
+ function registerResources(server, logger55) {
27558
+ const log3 = logger55 ?? createLogger({ component: "mcp-resources" });
27559
27559
  log3.info("Registering MCP resources");
27560
27560
  registerModelsResource(server, log3);
27561
27561
  registerResearchResource(server, log3);
@@ -27669,11 +27669,11 @@ function validateWorkflowInputs(workflow, inputs) {
27669
27669
  };
27670
27670
  }
27671
27671
  async function loadWorkflowFromPath(deps, filePath) {
27672
- const { workflowEngine, logger: logger54 } = deps;
27672
+ const { workflowEngine, logger: logger55 } = deps;
27673
27673
  const allowedDirs = getAllowedWorkflowDirs(deps);
27674
27674
  const pathValidation = validateWorkflowPath(filePath, allowedDirs);
27675
27675
  if (!pathValidation.ok) {
27676
- logger54?.warn("Workflow path validation failed", {
27676
+ logger55?.warn("Workflow path validation failed", {
27677
27677
  path: filePath,
27678
27678
  error: pathValidation.error.message
27679
27679
  });
@@ -27692,8 +27692,8 @@ async function loadWorkflowFromPath(deps, filePath) {
27692
27692
  return result;
27693
27693
  }
27694
27694
  async function loadWorkflowFromName(deps, name) {
27695
- const { workflowEngine, logger: logger54 } = deps;
27696
- logger54?.debug("Looking up built-in template", { name });
27695
+ const { workflowEngine, logger: logger55 } = deps;
27696
+ logger55?.debug("Looking up built-in template", { name });
27697
27697
  const templates = await workflowEngine.listTemplates();
27698
27698
  const found = templates.find((t) => t.name === name);
27699
27699
  if (found === void 0) {
@@ -27717,9 +27717,9 @@ async function loadWorkflowFromName(deps, name) {
27717
27717
  return { ok: true, value: definition };
27718
27718
  }
27719
27719
  async function loadWorkflow(deps, template) {
27720
- const { logger: logger54 } = deps;
27720
+ const { logger: logger55 } = deps;
27721
27721
  if (isFilePath(template)) {
27722
- logger54?.debug("Loading workflow from file", { path: template });
27722
+ logger55?.debug("Loading workflow from file", { path: template });
27723
27723
  return loadWorkflowFromPath(deps, template);
27724
27724
  }
27725
27725
  return loadWorkflowFromName(deps, template);
@@ -27766,15 +27766,15 @@ function formatValidationErrors(validation) {
27766
27766
 
27767
27767
  // src/mcp/tools/run-workflow.ts
27768
27768
  async function executeWorkflow(deps, workflow, inputs) {
27769
- const { workflowEngine, logger: logger54 } = deps;
27770
- logger54?.info("Executing workflow", {
27769
+ const { workflowEngine, logger: logger55 } = deps;
27770
+ logger55?.info("Executing workflow", {
27771
27771
  workflowName: workflow.name,
27772
27772
  inputCount: Object.keys(inputs).length
27773
27773
  });
27774
27774
  const startTime = getTimeProvider().now();
27775
27775
  const result = await workflowEngine.execute(workflow, inputs);
27776
27776
  if (!result.ok) {
27777
- logger54?.error("Workflow execution failed", result.error, {
27777
+ logger55?.error("Workflow execution failed", result.error, {
27778
27778
  workflowName: workflow.name
27779
27779
  });
27780
27780
  return {
@@ -27783,7 +27783,7 @@ async function executeWorkflow(deps, workflow, inputs) {
27783
27783
  };
27784
27784
  }
27785
27785
  const workflowResult = result.value;
27786
- logger54?.info("Workflow completed", {
27786
+ logger55?.info("Workflow completed", {
27787
27787
  workflowName: workflow.name,
27788
27788
  durationMs: getTimeProvider().now() - startTime,
27789
27789
  stepCount: workflowResult.stepResults.length
@@ -27896,16 +27896,16 @@ function createRunWorkflowHandler(deps) {
27896
27896
  };
27897
27897
  }
27898
27898
  function registerRunWorkflowTool(server, deps) {
27899
- const logger54 = deps.logger ?? createLogger({ tool: "run_workflow" });
27899
+ const logger55 = deps.logger ?? createLogger({ tool: "run_workflow" });
27900
27900
  const notifier = deps.notifier ?? createMcpNotifier(server);
27901
27901
  const depsWithNotifier = { ...deps, notifier };
27902
27902
  const secureHandler = createSecureHandler(createRunWorkflowHandler(depsWithNotifier), {
27903
27903
  toolName: "run_workflow",
27904
27904
  rateLimiter: deps.rateLimiter,
27905
- logger: logger54
27905
+ logger: logger55
27906
27906
  });
27907
27907
  const timeoutMs = getToolTimeout("run_workflow", deps.security);
27908
- const wrappedHandler = wrapToolWithTimeout("run_workflow", secureHandler, { timeoutMs, logger: logger54 });
27908
+ const wrappedHandler = wrapToolWithTimeout("run_workflow", secureHandler, { timeoutMs, logger: logger55 });
27909
27909
  server.registerTool(
27910
27910
  "run_workflow",
27911
27911
  {
@@ -27914,7 +27914,7 @@ function registerRunWorkflowTool(server, deps) {
27914
27914
  },
27915
27915
  toSdkCallback(wrappedHandler)
27916
27916
  );
27917
- logger54.info("Registered run_workflow tool with secure handler and timeout protection");
27917
+ logger55.info("Registered run_workflow tool with secure handler and timeout protection");
27918
27918
  }
27919
27919
 
27920
27920
  // src/orchestration/graph/graph-types.ts
@@ -30078,8 +30078,8 @@ var OrchestratorAdapter = class {
30078
30078
  history = [];
30079
30079
  logger;
30080
30080
  agent = null;
30081
- constructor(logger54) {
30082
- this.logger = logger54 ?? createLogger({ component: "OrchestratorAdapter" });
30081
+ constructor(logger55) {
30082
+ this.logger = logger55 ?? createLogger({ component: "OrchestratorAdapter" });
30083
30083
  }
30084
30084
  setOrchestrator(agent) {
30085
30085
  this.agent = agent;
@@ -30219,10 +30219,10 @@ var WorkflowOrchestratorAdapter = class {
30219
30219
  logger;
30220
30220
  executions = /* @__PURE__ */ new Map();
30221
30221
  history = [];
30222
- constructor(engine, logger54) {
30222
+ constructor(engine, logger55) {
30223
30223
  this.id = `workflow-${randomUUID10().slice(0, 8)}`;
30224
30224
  this.engine = engine;
30225
- this.logger = logger54 ?? createLogger({ component: "WorkflowOrchestratorAdapter" });
30225
+ this.logger = logger55 ?? createLogger({ component: "WorkflowOrchestratorAdapter" });
30226
30226
  }
30227
30227
  async execute(definition, inputs, _options) {
30228
30228
  if (definition.type !== "workflow") {
@@ -30414,22 +30414,22 @@ var OrchestratorFactory = class {
30414
30414
  }
30415
30415
  };
30416
30416
  async function createOrchestratorFactory(config) {
30417
- const logger54 = config?.logger ?? createLogger({ component: "OrchestratorFactory" });
30418
- logger54.info("Initializing OrchestratorFactory");
30417
+ const logger55 = config?.logger ?? createLogger({ component: "OrchestratorFactory" });
30418
+ logger55.info("Initializing OrchestratorFactory");
30419
30419
  let workflowEngine;
30420
30420
  try {
30421
30421
  const workflowConfig = {
30422
30422
  ...config?.workflowConfig,
30423
- logger: logger54
30423
+ logger: logger55
30424
30424
  };
30425
30425
  if (config?.modelAdapter !== void 0) {
30426
30426
  workflowConfig.modelAdapter = config.modelAdapter;
30427
30427
  }
30428
30428
  workflowEngine = await createProductionWorkflowEngine(workflowConfig);
30429
- logger54.info("WorkflowEngine initialized");
30429
+ logger55.info("WorkflowEngine initialized");
30430
30430
  } catch (error) {
30431
30431
  const message = getErrorMessage(error);
30432
- logger54.warn("WorkflowEngine initialization failed, workflow orchestration unavailable", {
30432
+ logger55.warn("WorkflowEngine initialization failed, workflow orchestration unavailable", {
30433
30433
  error: message
30434
30434
  });
30435
30435
  }
@@ -30440,12 +30440,12 @@ async function createOrchestratorFactory(config) {
30440
30440
  var MAX_OUTCOMES2 = 200;
30441
30441
  var AMBIGUITY_THRESHOLD = 0.7;
30442
30442
  function createWorkflowRouter(options) {
30443
- const logger54 = options?.logger ?? createLogger({ component: "WorkflowRouter" });
30444
- const analyzer = options?.analyzer ?? createSharedTaskAnalyzer({ logger: logger54 });
30443
+ const logger55 = options?.logger ?? createLogger({ component: "WorkflowRouter" });
30444
+ const analyzer = options?.analyzer ?? createSharedTaskAnalyzer({ logger: logger55 });
30445
30445
  const outcomes = [];
30446
30446
  return {
30447
30447
  route(signals, routerOpts) {
30448
- return routeTask(signals, analyzer, logger54, routerOpts);
30448
+ return routeTask(signals, analyzer, logger55, routerOpts);
30449
30449
  },
30450
30450
  recordOutcome(outcome) {
30451
30451
  recordPatternOutcome(outcomes, outcome);
@@ -30487,7 +30487,7 @@ function buildDecision(input) {
30487
30487
  }
30488
30488
  return base;
30489
30489
  }
30490
- function routeTask(signals, analyzer, logger54, _opts) {
30490
+ function routeTask(signals, analyzer, logger55, _opts) {
30491
30491
  const analysis = analyzer.analyze(signals.description);
30492
30492
  const enriched = enrichSignals(signals, analysis);
30493
30493
  const matchedRules = [];
@@ -30497,7 +30497,7 @@ function routeTask(signals, analyzer, logger54, _opts) {
30497
30497
  if (result !== void 0) {
30498
30498
  matchedRules.push(rule.name);
30499
30499
  collectAlternatives(alternatives, result.pattern);
30500
- logger54.info("Workflow pattern selected", {
30500
+ logger55.info("Workflow pattern selected", {
30501
30501
  pattern: result.pattern,
30502
30502
  rule: rule.name,
30503
30503
  confidence: result.confidence,
@@ -30507,7 +30507,7 @@ function routeTask(signals, analyzer, logger54, _opts) {
30507
30507
  return buildDecision({ result, matchedRules, alternatives, analysis });
30508
30508
  }
30509
30509
  }
30510
- logger54.info("Using fallback pattern", { pattern: "graph", taskType: analysis.taskType });
30510
+ logger55.info("Using fallback pattern", { pattern: "graph", taskType: analysis.taskType });
30511
30511
  const fallback = {
30512
30512
  pattern: "graph",
30513
30513
  reasoning: "No specific rule matched \u2014 using Graph DAG as the most general pattern",
@@ -30794,11 +30794,11 @@ function createMockTechLead() {
30794
30794
  var globalSicaConfig;
30795
30795
  var sicaEnabled = false;
30796
30796
  function initializeSica(options) {
30797
- const { sicaConfig, logger: logger54 } = options;
30797
+ const { sicaConfig, logger: logger55 } = options;
30798
30798
  if (sicaConfig?.enabled !== true) {
30799
30799
  sicaEnabled = false;
30800
30800
  globalSicaConfig = void 0;
30801
- logger54.info("SICA self-improvement disabled by configuration");
30801
+ logger55.info("SICA self-improvement disabled by configuration");
30802
30802
  return {
30803
30803
  enabled: false,
30804
30804
  reason: sicaConfig?.enabled === false ? "disabled in config" : "not enabled (opt-in feature)"
@@ -30806,7 +30806,7 @@ function initializeSica(options) {
30806
30806
  }
30807
30807
  sicaEnabled = true;
30808
30808
  globalSicaConfig = sicaConfig;
30809
- logger54.info("SICA self-improvement enabled", {
30809
+ logger55.info("SICA self-improvement enabled", {
30810
30810
  improvementThreshold: sicaConfig.improvementThreshold,
30811
30811
  maxActiveVersions: sicaConfig.maxActiveVersions,
30812
30812
  cooldownMs: sicaConfig.improvementCooldownMs
@@ -30824,18 +30824,18 @@ function getSicaConfig() {
30824
30824
  }
30825
30825
 
30826
30826
  // src/mcp/tools/orchestrate-sica.ts
30827
- function createOrchestratorWithSica(logger54, adapter) {
30828
- const orchestrator = new Orchestrator({ logger: logger54, ...adapter !== void 0 ? { adapter } : {} });
30827
+ function createOrchestratorWithSica(logger55, adapter) {
30828
+ const orchestrator = new Orchestrator({ logger: logger55, ...adapter !== void 0 ? { adapter } : {} });
30829
30829
  if (!isSicaEnabled()) {
30830
- logger54.debug("SICA not enabled, using plain orchestrator");
30830
+ logger55.debug("SICA not enabled, using plain orchestrator");
30831
30831
  return orchestrator;
30832
30832
  }
30833
30833
  const sicaConfig = getSicaConfig();
30834
30834
  if (sicaConfig === void 0) {
30835
- logger54.debug("SICA config unavailable, using plain orchestrator");
30835
+ logger55.debug("SICA config unavailable, using plain orchestrator");
30836
30836
  return orchestrator;
30837
30837
  }
30838
- logger54.info("Creating SICA-wrapped orchestrator", {
30838
+ logger55.info("Creating SICA-wrapped orchestrator", {
30839
30839
  improvementThreshold: sicaConfig.improvementThreshold,
30840
30840
  maxActiveVersions: sicaConfig.maxActiveVersions
30841
30841
  });
@@ -30855,9 +30855,9 @@ function createOrchestratorWithSica(logger54, adapter) {
30855
30855
  improvementCooldownMs: sicaConfig.improvementCooldownMs,
30856
30856
  enableObservability: sicaConfig.enableObservability
30857
30857
  },
30858
- logger: logger54
30858
+ logger: logger55
30859
30859
  });
30860
- return createSicaOrchestratorAdapter(sicaAgent, logger54);
30860
+ return createSicaOrchestratorAdapter(sicaAgent, logger55);
30861
30861
  }
30862
30862
  function createSicaOrchestratorAdapter(sicaAgent, _logger) {
30863
30863
  return {
@@ -30913,7 +30913,7 @@ var PersistedCatalogSchema = z62.object({
30913
30913
  function getCatalogPath() {
30914
30914
  return path4.join(os2.homedir(), CATALOG_DIR, CATALOG_FILE);
30915
30915
  }
30916
- function loadPersistedCatalog(logger54) {
30916
+ function loadPersistedCatalog(logger55) {
30917
30917
  const filePath = getCatalogPath();
30918
30918
  try {
30919
30919
  if (!fs4.existsSync(filePath)) return [];
@@ -30921,21 +30921,21 @@ function loadPersistedCatalog(logger54) {
30921
30921
  const parsed = JSON.parse(content);
30922
30922
  const result = PersistedCatalogSchema.safeParse(parsed);
30923
30923
  if (!result.success) {
30924
- logger54.warn("Invalid pending catalog file, starting fresh", {
30924
+ logger55.warn("Invalid pending catalog file, starting fresh", {
30925
30925
  errors: result.error.issues.map((i) => i.message)
30926
30926
  });
30927
30927
  return [];
30928
30928
  }
30929
30929
  return result.data.references;
30930
30930
  } catch (error) {
30931
- logger54.debug("Could not load pending catalog, starting fresh", {
30931
+ logger55.debug("Could not load pending catalog, starting fresh", {
30932
30932
  error: getErrorMessage(error),
30933
30933
  filePath
30934
30934
  });
30935
30935
  return [];
30936
30936
  }
30937
30937
  }
30938
- function savePersistedCatalog(references, logger54) {
30938
+ function savePersistedCatalog(references, logger55) {
30939
30939
  const dirPath = path4.join(os2.homedir(), CATALOG_DIR);
30940
30940
  const filePath = getCatalogPath();
30941
30941
  const tempPath = `${filePath}.tmp.${String(process.pid)}`;
@@ -30957,7 +30957,7 @@ function savePersistedCatalog(references, logger54) {
30957
30957
  } catch {
30958
30958
  }
30959
30959
  const message = getErrorMessage(error);
30960
- logger54.warn("Failed to persist pending catalog", { error: message });
30960
+ logger55.warn("Failed to persist pending catalog", { error: message });
30961
30961
  }
30962
30962
  }
30963
30963
  var ARXIV_PATTERN = /\b(\d{4}\.\d{4,5})\b/g;
@@ -30967,8 +30967,8 @@ var ResearchAutoCatalog = class _ResearchAutoCatalog {
30967
30967
  pendingReferences = [];
30968
30968
  /** Maximum pending references to hold in memory. */
30969
30969
  static MAX_PENDING = 100;
30970
- constructor(logger54) {
30971
- this.logger = logger54 ?? createLogger({ component: "research-auto-catalog" });
30970
+ constructor(logger55) {
30971
+ this.logger = logger55 ?? createLogger({ component: "research-auto-catalog" });
30972
30972
  const persisted = loadPersistedCatalog(this.logger);
30973
30973
  if (persisted.length > 0) {
30974
30974
  this.pendingReferences.push(...persisted.slice(0, _ResearchAutoCatalog.MAX_PENDING));
@@ -31123,8 +31123,8 @@ var ResearchAutoCatalog = class _ResearchAutoCatalog {
31123
31123
  }
31124
31124
  };
31125
31125
  var autoCatalogInstance;
31126
- function getAutoCatalog(logger54) {
31127
- autoCatalogInstance ??= new ResearchAutoCatalog(logger54);
31126
+ function getAutoCatalog(logger55) {
31127
+ autoCatalogInstance ??= new ResearchAutoCatalog(logger55);
31128
31128
  return autoCatalogInstance;
31129
31129
  }
31130
31130
 
@@ -31314,10 +31314,15 @@ function assignDependencyAwareWaves(entries) {
31314
31314
  }
31315
31315
  }
31316
31316
  }
31317
- return entries.map((entry) => ({
31318
- ...entry,
31319
- wave: roleToWave.get(entry.role) ?? entry.wave
31320
- }));
31317
+ return entries.map((entry) => {
31318
+ const deps = EXPERT_DEPENDENCIES[entry.role];
31319
+ const presentDeps = deps?.filter((d) => roleToWave.has(d)) ?? [];
31320
+ return {
31321
+ ...entry,
31322
+ wave: roleToWave.get(entry.role) ?? entry.wave,
31323
+ ...presentDeps.length > 0 ? { dependsOn: presentDeps } : {}
31324
+ };
31325
+ });
31321
31326
  }
31322
31327
  function mapHintToRole(hint) {
31323
31328
  const lower = hint.toLowerCase();
@@ -32896,12 +32901,12 @@ function computeExpertReliability() {
32896
32901
  }
32897
32902
  return reliability;
32898
32903
  }
32899
- function computeAgentPlan(task, logger54) {
32904
+ function computeAgentPlan(task, logger55) {
32900
32905
  try {
32901
32906
  const analyzer = new SharedTaskAnalyzer();
32902
32907
  const analysis = analyzer.analyze(task);
32903
32908
  if (analysis.complexity === "simple") {
32904
- logger54.debug("Skipping AOrchestra planning for simple task", {
32909
+ logger55.debug("Skipping AOrchestra planning for simple task", {
32905
32910
  taskType: analysis.taskType
32906
32911
  });
32907
32912
  return void 0;
@@ -32913,9 +32918,9 @@ function computeAgentPlan(task, logger54) {
32913
32918
  if (rate < 0.5) excludedExperts.push({ role, rate: Math.round(rate * 100) / 100 });
32914
32919
  }
32915
32920
  if (excludedExperts.length > 0) {
32916
- logger54.warn("Experts excluded by reliability filter", { excludedExperts });
32921
+ logger55.warn("Experts excluded by reliability filter", { excludedExperts });
32917
32922
  }
32918
- logger54.info("AOrchestra plan", {
32923
+ logger55.info("AOrchestra plan", {
32919
32924
  experts: plan.totalExperts,
32920
32925
  taskType: plan.taskType,
32921
32926
  complexity: plan.complexity,
@@ -32923,7 +32928,7 @@ function computeAgentPlan(task, logger54) {
32923
32928
  });
32924
32929
  return plan;
32925
32930
  } catch (planError) {
32926
- logger54.warn("AOrchestra planning failed", {
32931
+ logger55.warn("AOrchestra planning failed", {
32927
32932
  error: getErrorMessage(planError)
32928
32933
  });
32929
32934
  return void 0;
@@ -32993,7 +32998,7 @@ async function executeOnAdapter(opts) {
32993
32998
  }
32994
32999
  }
32995
33000
  function createWorkerExecutor(config) {
32996
- const { taskDescription, modelAdapter, logger: logger54, learnings, perWorkerRouting } = config;
33001
+ const { taskDescription, modelAdapter, logger: logger55, learnings, perWorkerRouting } = config;
32997
33002
  const effectiveFallbackCli = modelAdapter.providerId;
32998
33003
  return async (entry, priorWaveResults) => {
32999
33004
  const workerStartMs = getTimeProvider().now();
@@ -33002,7 +33007,7 @@ function createWorkerExecutor(config) {
33002
33007
  modelAdapter,
33003
33008
  effectiveFallbackCli,
33004
33009
  perWorkerRouting === true,
33005
- logger54
33010
+ logger55
33006
33011
  );
33007
33012
  return executeOnAdapter({
33008
33013
  entry,
@@ -33176,15 +33181,15 @@ function prepareBudgetedEntries(plan, maxCalls, log3) {
33176
33181
  return entries;
33177
33182
  }
33178
33183
  async function executeWorkerDispatch(options) {
33179
- const { agentPlan, taskDescription, modelAdapter, logger: logger54, maxConcurrency } = options;
33184
+ const { agentPlan, taskDescription, modelAdapter, logger: logger55, maxConcurrency } = options;
33180
33185
  const maxCalls = resolveMaxWorkerCalls(options.maxWorkerCalls);
33181
33186
  const startMs = getTimeProvider().now();
33182
- const entries = prepareBudgetedEntries(agentPlan, maxCalls, logger54);
33187
+ const entries = prepareBudgetedEntries(agentPlan, maxCalls, logger55);
33183
33188
  const qualityGate = options.qualityGate === false ? void 0 : options.qualityGate;
33184
33189
  const executorConfig = {
33185
33190
  taskDescription,
33186
33191
  modelAdapter,
33187
- logger: logger54,
33192
+ logger: logger55,
33188
33193
  ...options.learnings !== void 0 ? { learnings: options.learnings } : {},
33189
33194
  ...options.perWorkerRouting !== void 0 ? { perWorkerRouting: options.perWorkerRouting } : {}
33190
33195
  };
@@ -33205,8 +33210,8 @@ async function executeWorkerDispatch(options) {
33205
33210
  };
33206
33211
  await runSynthesisPhase(state, options, maxCalls);
33207
33212
  const refined = await runRefinementPhase(state, entries, options, maxCalls);
33208
- const base = buildDispatchResult(state.results, startMs, logger54, state.totalModelCalls);
33209
- logDispatchInsights(state.results, logger54);
33213
+ const base = buildDispatchResult(state.results, startMs, logger55, state.totalModelCalls);
33214
+ logDispatchInsights(state.results, logger55);
33210
33215
  return {
33211
33216
  ...base,
33212
33217
  ...refined ? { refined: true } : {},
@@ -33264,18 +33269,18 @@ function recordWorkerOutcomes(results, taskDescription) {
33264
33269
  });
33265
33270
  }
33266
33271
  }
33267
- function buildDispatchResult(results, startMs, logger54, totalModelCalls) {
33272
+ function buildDispatchResult(results, startMs, logger55, totalModelCalls) {
33268
33273
  const successCount = results.filter((r) => r.status === "success").length;
33269
33274
  const errorCount = results.filter((r) => r.status === "error").length;
33270
33275
  const conflicts = detectConflicts(results);
33271
33276
  if (conflicts.length > 0) {
33272
- logger54.warn("Worker output conflicts detected \u2014 human review recommended", {
33277
+ logger55.warn("Worker output conflicts detected \u2014 human review recommended", {
33273
33278
  conflictCount: conflicts.length,
33274
33279
  files: conflicts.map((c) => c.filePath)
33275
33280
  });
33276
33281
  }
33277
33282
  const durationMs = getTimeProvider().now() - startMs;
33278
- logger54.info("Worker dispatch complete", {
33283
+ logger55.info("Worker dispatch complete", {
33279
33284
  totalWorkers: results.length,
33280
33285
  successCount,
33281
33286
  errorCount,
@@ -34343,11 +34348,11 @@ function buildOutputFromOrchestratorResult(taskId, orchResult, durationMs, routi
34343
34348
  }
34344
34349
  };
34345
34350
  }
34346
- function createOrchestratorFromDeps(deps, logger54, orchestratorType) {
34351
+ function createOrchestratorFromDeps(deps, logger55, orchestratorType) {
34347
34352
  if (deps.orchestrator !== void 0) return deps.orchestrator;
34348
- const techLead = deps.techLead ?? createOrchestratorWithSica(logger54, deps.modelAdapter);
34353
+ const techLead = deps.techLead ?? createOrchestratorWithSica(logger55, deps.modelAdapter);
34349
34354
  const factory = new OrchestratorFactory({
34350
- logger: logger54,
34355
+ logger: logger55,
34351
34356
  techLead
34352
34357
  });
34353
34358
  return factory.create(orchestratorType ?? "tech_lead");
@@ -34461,16 +34466,16 @@ function recordOrchestrationError(errorMessage, taskDescription, durationMs) {
34461
34466
  }
34462
34467
  }
34463
34468
  function routeAndPrepare(input, deps, router) {
34464
- const logger54 = deps.logger ?? createLogger({ tool: "orchestrate" });
34465
- const workflowRouter = router ?? createWorkflowRouter({ logger: logger54 });
34469
+ const logger55 = deps.logger ?? createLogger({ tool: "orchestrate" });
34470
+ const workflowRouter = router ?? createWorkflowRouter({ logger: logger55 });
34466
34471
  const decision = workflowRouter.route({ description: input.task });
34467
34472
  const orchType = mapPatternToOrchestratorType(decision.pattern);
34468
- logger54.info("Workflow pattern selected", {
34473
+ logger55.info("Workflow pattern selected", {
34469
34474
  pattern: decision.pattern,
34470
34475
  orchestratorType: orchType
34471
34476
  });
34472
- const orchestrator = createOrchestratorFromDeps(deps, logger54, orchType);
34473
- return { workflowRouter, decision, orchestrator, logger: logger54 };
34477
+ const orchestrator = createOrchestratorFromDeps(deps, logger55, orchType);
34478
+ return { workflowRouter, decision, orchestrator, logger: logger55 };
34474
34479
  }
34475
34480
  function buildRoutingInfo(decision) {
34476
34481
  return {
@@ -34489,10 +34494,10 @@ function recordRouterOutcome(workflowRouter, decision, success, durationMs) {
34489
34494
  timestamp: getTimeProvider().now()
34490
34495
  });
34491
34496
  }
34492
- function handleOrchestrationException(error, taskId, task, logger54) {
34497
+ function handleOrchestrationException(error, taskId, task, logger55) {
34493
34498
  const message = error instanceof Error ? error.message : "Unknown error";
34494
34499
  const cause = error instanceof Error ? error : void 0;
34495
- logger54.error("Orchestration exception", cause, { taskId });
34500
+ logger55.error("Orchestration exception", cause, { taskId });
34496
34501
  recordOrchestrationError(message, task);
34497
34502
  return err(
34498
34503
  new OrchestrationError(
@@ -34501,13 +34506,13 @@ function handleOrchestrationException(error, taskId, task, logger54) {
34501
34506
  )
34502
34507
  );
34503
34508
  }
34504
- function startHeartbeatTracking(label, logger54) {
34509
+ function startHeartbeatTracking(label, logger55) {
34505
34510
  const monitor = getHeartbeatMonitor();
34506
34511
  const sessionId = monitor.startSession(label);
34507
34512
  const timer = setInterval(() => {
34508
34513
  monitor.heartbeat(sessionId);
34509
34514
  if (monitor.isStalled(sessionId)) {
34510
- logger54.warn("Orchestration session stalled", { label, sessionId });
34515
+ logger55.warn("Orchestration session stalled", { label, sessionId });
34511
34516
  }
34512
34517
  }, HEARTBEAT_TIMEOUTS.heartbeatIntervalMs);
34513
34518
  return {
@@ -34579,7 +34584,7 @@ function handleOrchestratorSuccess(ctx) {
34579
34584
  return ok(output2);
34580
34585
  }
34581
34586
  async function executeOrchestration(input, deps, router) {
34582
- const { workflowRouter, decision, orchestrator, logger: logger54 } = routeAndPrepare(input, deps, router);
34587
+ const { workflowRouter, decision, orchestrator, logger: logger55 } = routeAndPrepare(input, deps, router);
34583
34588
  const taskId = generateTaskId();
34584
34589
  const startTime = getTimeProvider().now();
34585
34590
  const fastResult = trySimpleTaskFastPath({
@@ -34588,15 +34593,15 @@ async function executeOrchestration(input, deps, router) {
34588
34593
  decision,
34589
34594
  workflowRouter,
34590
34595
  startTime,
34591
- logger: logger54
34596
+ logger: logger55
34592
34597
  });
34593
34598
  if (fastResult !== void 0) return fastResult;
34594
- logger54.info("Starting orchestration", { taskId, taskLength: input.task.length });
34595
- recordTaskStateInit(taskId, input.task, logger54);
34599
+ logger55.info("Starting orchestration", { taskId, taskLength: input.task.length });
34600
+ recordTaskStateInit(taskId, input.task, logger55);
34596
34601
  const task = await createTaskFromInput(input, taskId);
34597
34602
  const definition = { type: "task", task };
34598
- const hb = startHeartbeatTracking(`orchestrate-${taskId}`, logger54);
34599
- const policy = await deriveOrchestratePolicy(input.task, deps, logger54);
34603
+ const hb = startHeartbeatTracking(`orchestrate-${taskId}`, logger55);
34604
+ const policy = await deriveOrchestratePolicy(input.task, deps, logger55);
34600
34605
  try {
34601
34606
  return await runOrchestratorWithStateTracking({
34602
34607
  taskId,
@@ -34607,23 +34612,23 @@ async function executeOrchestration(input, deps, router) {
34607
34612
  decision,
34608
34613
  workflowRouter,
34609
34614
  startTime,
34610
- logger: logger54
34615
+ logger: logger55
34611
34616
  });
34612
34617
  } catch (error) {
34613
- recordTaskStateBlocker(taskId, error instanceof Error ? error.message : String(error), logger54);
34614
- recordTaskStateStage(taskId, "blocked", logger54);
34615
- return handleOrchestrationException(error, taskId, input.task, logger54);
34618
+ recordTaskStateBlocker(taskId, error instanceof Error ? error.message : String(error), logger55);
34619
+ recordTaskStateStage(taskId, "blocked", logger55);
34620
+ return handleOrchestrationException(error, taskId, input.task, logger55);
34616
34621
  } finally {
34617
34622
  hb.cleanup();
34618
34623
  }
34619
34624
  }
34620
34625
  async function runOrchestratorWithStateTracking(params) {
34621
- const { taskId, taskInput, definition, orchestrator, policy, logger: logger54 } = params;
34622
- recordTaskStateStage(taskId, "executing", logger54);
34626
+ const { taskId, taskInput, definition, orchestrator, policy, logger: logger55 } = params;
34627
+ recordTaskStateStage(taskId, "executing", logger55);
34623
34628
  const result = await withAccessPolicy(policy, () => orchestrator.execute(definition, {}));
34624
34629
  if (!result.ok) {
34625
- recordTaskStateBlocker(taskId, result.error.message, logger54);
34626
- recordTaskStateStage(taskId, "blocked", logger54);
34630
+ recordTaskStateBlocker(taskId, result.error.message, logger55);
34631
+ recordTaskStateStage(taskId, "blocked", logger55);
34627
34632
  return handleOrchestratorFailure({
34628
34633
  error: result.error,
34629
34634
  taskId,
@@ -34631,10 +34636,10 @@ async function runOrchestratorWithStateTracking(params) {
34631
34636
  decision: params.decision,
34632
34637
  workflowRouter: params.workflowRouter,
34633
34638
  startTime: params.startTime,
34634
- logger: logger54
34639
+ logger: logger55
34635
34640
  });
34636
34641
  }
34637
- recordTaskStateStage(taskId, "complete", logger54);
34642
+ recordTaskStateStage(taskId, "complete", logger55);
34638
34643
  return handleOrchestratorSuccess({
34639
34644
  orchResult: result.value,
34640
34645
  taskId,
@@ -34642,13 +34647,13 @@ async function runOrchestratorWithStateTracking(params) {
34642
34647
  decision: params.decision,
34643
34648
  workflowRouter: params.workflowRouter,
34644
34649
  startTime: params.startTime,
34645
- logger: logger54
34650
+ logger: logger55
34646
34651
  });
34647
34652
  }
34648
34653
  function isTaskStateEnabled() {
34649
34654
  return process.env["NEXUS_TASK_STATE_ENABLED"] === "1";
34650
34655
  }
34651
- function recordTaskStateInit(taskId, taskText, logger54) {
34656
+ function recordTaskStateInit(taskId, taskText, logger55) {
34652
34657
  if (!isTaskStateEnabled()) return;
34653
34658
  const now = (/* @__PURE__ */ new Date()).toISOString();
34654
34659
  const initial = {
@@ -34661,36 +34666,36 @@ function recordTaskStateInit(taskId, taskText, logger54) {
34661
34666
  };
34662
34667
  const result = initTaskState(initial);
34663
34668
  if (!result.ok) {
34664
- logger54.warn("task-state: init failed, continuing", {
34669
+ logger55.warn("task-state: init failed, continuing", {
34665
34670
  taskId,
34666
34671
  error: result.error.message,
34667
34672
  taskLength: taskText.length
34668
34673
  });
34669
34674
  }
34670
34675
  }
34671
- function recordTaskStateStage(taskId, stage, logger54) {
34676
+ function recordTaskStateStage(taskId, stage, logger55) {
34672
34677
  if (!isTaskStateEnabled()) return;
34673
34678
  const result = updateStage(taskId, stage, (/* @__PURE__ */ new Date()).toISOString());
34674
34679
  if (!result.ok) {
34675
- logger54.warn("task-state: stage update failed", {
34680
+ logger55.warn("task-state: stage update failed", {
34676
34681
  taskId,
34677
34682
  stage,
34678
34683
  error: result.error.message
34679
34684
  });
34680
34685
  }
34681
34686
  }
34682
- function recordTaskStateBlocker(taskId, blocker, logger54) {
34687
+ function recordTaskStateBlocker(taskId, blocker, logger55) {
34683
34688
  if (!isTaskStateEnabled()) return;
34684
34689
  const ts = (/* @__PURE__ */ new Date()).toISOString();
34685
34690
  const result = appendBlocker(taskId, { ts, blocker });
34686
34691
  if (!result.ok) {
34687
- logger54.warn("task-state: blocker record failed", {
34692
+ logger55.warn("task-state: blocker record failed", {
34688
34693
  taskId,
34689
34694
  error: result.error.message
34690
34695
  });
34691
34696
  }
34692
34697
  }
34693
- async function deriveOrchestratePolicy(taskText, deps, logger54) {
34698
+ async function deriveOrchestratePolicy(taskText, deps, logger55) {
34694
34699
  const mode = resolveAccessPolicyMode();
34695
34700
  try {
34696
34701
  const opts = {
@@ -34700,7 +34705,7 @@ async function deriveOrchestratePolicy(taskText, deps, logger54) {
34700
34705
  };
34701
34706
  const policy = await deriveAccessPolicy(taskText, opts);
34702
34707
  if (mode !== "off") {
34703
- logger54.info("access-policy: derived", {
34708
+ logger55.info("access-policy: derived", {
34704
34709
  mode,
34705
34710
  source: policy.source,
34706
34711
  allowedToolsWildcard: policy.allowedTools === "*"
@@ -34708,7 +34713,7 @@ async function deriveOrchestratePolicy(taskText, deps, logger54) {
34708
34713
  }
34709
34714
  return policy;
34710
34715
  } catch (error) {
34711
- logger54.warn("access-policy: derivation failed, falling back to off", {
34716
+ logger55.warn("access-policy: derivation failed, falling back to off", {
34712
34717
  error: getErrorMessage(error)
34713
34718
  });
34714
34719
  return {
@@ -34722,15 +34727,15 @@ async function deriveOrchestratePolicy(taskText, deps, logger54) {
34722
34727
  };
34723
34728
  }
34724
34729
  }
34725
- function instrumentV2Orchestrate(input, logger54) {
34730
+ function instrumentV2Orchestrate(input, logger55) {
34726
34731
  const tc = orchestrateInputToTaskContract(input);
34727
34732
  void executeOrchestratePipeline(tc).then((m) => {
34728
- logger54.info("V2 orchestrate pipeline", { ...m });
34733
+ logger55.info("V2 orchestrate pipeline", { ...m });
34729
34734
  }).catch((error) => {
34730
- logger54.debug("V2 orchestrate pipeline failed", { error: getErrorMessage(error) });
34735
+ logger55.debug("V2 orchestrate pipeline failed", { error: getErrorMessage(error) });
34731
34736
  });
34732
34737
  }
34733
- async function tryWorkerDispatch(agentPlan, task, deps, logger54, notifier) {
34738
+ async function tryWorkerDispatch(agentPlan, task, deps, logger55, notifier) {
34734
34739
  const adapter = deps.modelAdapter;
34735
34740
  if (agentPlan === void 0 || !isWorkerDispatchEnabled() || adapter === void 0) {
34736
34741
  return void 0;
@@ -34743,14 +34748,14 @@ async function tryWorkerDispatch(agentPlan, task, deps, logger54, notifier) {
34743
34748
  agentPlan,
34744
34749
  taskDescription: task,
34745
34750
  modelAdapter: adapter,
34746
- logger: logger54,
34751
+ logger: logger55,
34747
34752
  synthesize: true,
34748
34753
  refine: true,
34749
34754
  perWorkerRouting: true
34750
34755
  })
34751
34756
  );
34752
34757
  } catch (dispatchError) {
34753
- logger54.warn("Worker dispatch failed, continuing with standard orchestration", {
34758
+ logger55.warn("Worker dispatch failed, continuing with standard orchestration", {
34754
34759
  error: dispatchError instanceof Error ? dispatchError.message : String(dispatchError)
34755
34760
  });
34756
34761
  return void 0;
@@ -34823,7 +34828,7 @@ function createOrchestrateHandler(deps) {
34823
34828
  };
34824
34829
  }
34825
34830
  function registerOrchestrateTool(server, deps) {
34826
- const logger54 = deps.logger ?? createLogger({ tool: "orchestrate" });
34831
+ const logger55 = deps.logger ?? createLogger({ tool: "orchestrate" });
34827
34832
  const notifier = deps.notifier ?? createMcpNotifier(server);
34828
34833
  const depsWithNotifier = { ...deps, notifier };
34829
34834
  const description = "Orchestrate a task by analyzing it, breaking it into subtasks if needed, and coordinating expert agents";
@@ -34831,18 +34836,18 @@ function registerOrchestrateTool(server, deps) {
34831
34836
  toolName: "orchestrate",
34832
34837
  securityTier: "user-facing",
34833
34838
  rateLimiter: deps.rateLimiter,
34834
- logger: logger54
34839
+ logger: logger55
34835
34840
  });
34836
34841
  const wrappedHandler = wrapToolWithTimeout("orchestrate", secureHandler, {
34837
34842
  timeoutMs: MCP_TIMEOUTS.perTool["orchestrate"] ?? MCP_TIMEOUTS.defaultMs,
34838
- logger: logger54
34843
+ logger: logger55
34839
34844
  });
34840
34845
  server.registerTool(
34841
34846
  "orchestrate",
34842
34847
  { description, inputSchema: ORCHESTRATE_TOOL_SCHEMA },
34843
34848
  toSdkCallback(wrappedHandler)
34844
34849
  );
34845
- logger54.info("Registered orchestrate tool with secure handler and timeout protection");
34850
+ logger55.info("Registered orchestrate tool with secure handler and timeout protection");
34846
34851
  }
34847
34852
 
34848
34853
  // src/mcp/tools/delegate-to-model-types.ts
@@ -35185,21 +35190,21 @@ function mapCompositeDecisionToOutput(decision, estimatedTokens) {
35185
35190
  }))
35186
35191
  };
35187
35192
  }
35188
- async function routeViaCompositeRouter(task, router, feedbackIntegration, logger54) {
35193
+ async function routeViaCompositeRouter(task, router, feedbackIntegration, logger55) {
35189
35194
  const result = await router.route({ content: task });
35190
35195
  if (!result.ok) {
35191
- logger54.warn("CompositeRouter routing failed", { error: result.error.message });
35196
+ logger55.warn("CompositeRouter routing failed", { error: result.error.message });
35192
35197
  return null;
35193
35198
  }
35194
35199
  const decision = result.value;
35195
35200
  let routingId;
35196
35201
  if (feedbackIntegration) {
35197
35202
  routingId = feedbackIntegration.recordRoutingDecision(decision);
35198
- logger54.debug("Recorded routing decision", { routingId, cliName: decision.cliName });
35203
+ logger55.debug("Recorded routing decision", { routingId, cliName: decision.cliName });
35199
35204
  }
35200
35205
  return { decision, routingId, feedbackIntegration };
35201
35206
  }
35202
- function recordRoutingOutcome(result, durationMs, logger54) {
35207
+ function recordRoutingOutcome(result, durationMs, logger55) {
35203
35208
  if (result.routingId === void 0 || result.feedbackIntegration === void 0) return;
35204
35209
  try {
35205
35210
  const topsisScore = result.decision.topsisScore ?? 0;
@@ -35212,13 +35217,13 @@ function recordRoutingOutcome(result, durationMs, logger54) {
35212
35217
  tokenUsage: 0
35213
35218
  // delegate-to-model is a recommendation, not execution
35214
35219
  });
35215
- logger54.debug("Recorded routing outcome", {
35220
+ logger55.debug("Recorded routing outcome", {
35216
35221
  routingId: result.routingId,
35217
35222
  topsisScore,
35218
35223
  success: topsisScore >= TOPSIS_CONFIDENCE_THRESHOLD
35219
35224
  });
35220
35225
  } catch (error) {
35221
- logger54.warn("Failed to record routing outcome", { error: getErrorMessage(error) });
35226
+ logger55.warn("Failed to record routing outcome", { error: getErrorMessage(error) });
35222
35227
  }
35223
35228
  }
35224
35229
 
@@ -35239,9 +35244,9 @@ function classifyWithGovernance(toolName, params, overrides) {
35239
35244
  const promotionReason = promoted ? buildPromotionReason(domain, params) : null;
35240
35245
  return { tier, promoted, domain, votingThreshold, promotionReason };
35241
35246
  }
35242
- function auditGovernancePromotion(classification, toolName, logger54) {
35247
+ function auditGovernancePromotion(classification, toolName, logger55) {
35243
35248
  if (!classification.promoted) return;
35244
- const log3 = logger54 ?? createLogger({ component: "governance" });
35249
+ const log3 = logger55 ?? createLogger({ component: "governance" });
35245
35250
  log3.warn("Governance promotion", {
35246
35251
  tool: toolName,
35247
35252
  domain: classification.domain,
@@ -35340,9 +35345,9 @@ function recordToOutcomeStore2(task, model, startMs, governance) {
35340
35345
  });
35341
35346
  }
35342
35347
  }
35343
- function classifyDelegateGovernance(input, logger54) {
35348
+ function classifyDelegateGovernance(input, logger55) {
35344
35349
  const classification = classifyWithGovernance("delegate_to_model", { task: input.task });
35345
- auditGovernancePromotion(classification, "delegate_to_model", logger54);
35350
+ auditGovernancePromotion(classification, "delegate_to_model", logger55);
35346
35351
  return classification;
35347
35352
  }
35348
35353
  function enrichWithGovernance(output2, governance) {
@@ -35356,10 +35361,10 @@ function enrichWithGovernance(output2, governance) {
35356
35361
  }
35357
35362
  };
35358
35363
  }
35359
- function instrumentV2Pipeline(input, logger54) {
35364
+ function instrumentV2Pipeline(input, logger55) {
35360
35365
  const tc = delegateInputToTaskContract(input);
35361
35366
  void executeDelegatePipeline(tc).then((m) => {
35362
- logger54.info("V2 delegate pipeline", { ...m });
35367
+ logger55.info("V2 delegate pipeline", { ...m });
35363
35368
  });
35364
35369
  }
35365
35370
  function notifyAndRecord(opts) {
@@ -35433,18 +35438,18 @@ function createDelegateHandler(deps) {
35433
35438
  };
35434
35439
  }
35435
35440
  function registerDelegateToModelTool(server, deps) {
35436
- const logger54 = deps.logger ?? createLogger({ tool: "delegate_to_model" });
35441
+ const logger55 = deps.logger ?? createLogger({ tool: "delegate_to_model" });
35437
35442
  const notifier = deps.notifier ?? createMcpNotifier(server);
35438
35443
  const depsWithNotifier = { ...deps, notifier };
35439
35444
  const secureHandler = createSecureHandler(createDelegateHandler(depsWithNotifier), {
35440
35445
  toolName: "delegate_to_model",
35441
35446
  rateLimiter: deps.rateLimiter,
35442
- logger: logger54
35447
+ logger: logger55
35443
35448
  });
35444
35449
  const timeoutMs = getToolTimeout("delegate_to_model", deps.security);
35445
35450
  const wrappedHandler = wrapToolWithTimeout("delegate_to_model", secureHandler, {
35446
35451
  timeoutMs,
35447
- logger: logger54
35452
+ logger: logger55
35448
35453
  });
35449
35454
  server.registerTool(
35450
35455
  "delegate_to_model",
@@ -35455,7 +35460,7 @@ function registerDelegateToModelTool(server, deps) {
35455
35460
  },
35456
35461
  toSdkCallback(wrappedHandler)
35457
35462
  );
35458
- logger54.info("Registered delegate_to_model tool with secure handler and timeout protection");
35463
+ logger55.info("Registered delegate_to_model tool with secure handler and timeout protection");
35459
35464
  }
35460
35465
 
35461
35466
  // src/mcp/tools/run-graph-workflow-multicli-templates.ts
@@ -36394,7 +36399,7 @@ function listExpertsHandler(args, ctx) {
36394
36399
  return Promise.resolve(toolSuccessStructured(data));
36395
36400
  }
36396
36401
  function registerListExpertsTool(server, deps) {
36397
- const logger54 = deps.logger ?? createLogger({ tool: "list_experts" });
36402
+ const logger55 = deps.logger ?? createLogger({ tool: "list_experts" });
36398
36403
  const toolSchema = {
36399
36404
  format: z68.enum(["full", "names"]).optional().describe("Output format: full (with details) or names (just role names)")
36400
36405
  };
@@ -36402,10 +36407,10 @@ function registerListExpertsTool(server, deps) {
36402
36407
  const secureHandler = createSecureHandler(listExpertsHandler, {
36403
36408
  toolName: "list_experts",
36404
36409
  rateLimiter: deps.rateLimiter,
36405
- logger: logger54
36410
+ logger: logger55
36406
36411
  });
36407
36412
  const timeoutMs = getToolTimeout("list_experts", deps.security);
36408
- const wrappedHandler = wrapToolWithTimeout("list_experts", secureHandler, { timeoutMs, logger: logger54 });
36413
+ const wrappedHandler = wrapToolWithTimeout("list_experts", secureHandler, { timeoutMs, logger: logger55 });
36409
36414
  const outputSchema = {
36410
36415
  experts: z68.array(
36411
36416
  z68.object({
@@ -36422,7 +36427,7 @@ function registerListExpertsTool(server, deps) {
36422
36427
  { description, inputSchema: toolSchema, outputSchema },
36423
36428
  toSdkCallback(wrappedHandler)
36424
36429
  );
36425
- logger54.info("Registered list_experts tool with secure handler and timeout protection");
36430
+ logger55.info("Registered list_experts tool with secure handler and timeout protection");
36426
36431
  }
36427
36432
 
36428
36433
  // src/mcp/tools/list-workflows.ts
@@ -36478,7 +36483,7 @@ function createListWorkflowsHandler(workflowEngine) {
36478
36483
  };
36479
36484
  }
36480
36485
  function registerListWorkflowsTool(server, deps) {
36481
- const logger54 = deps.logger ?? createLogger({ tool: "list_workflows" });
36486
+ const logger55 = deps.logger ?? createLogger({ tool: "list_workflows" });
36482
36487
  const toolSchema = {
36483
36488
  category: z69.string().optional().describe("Filter by category (e.g., development, security)"),
36484
36489
  format: z69.enum(["full", "names"]).optional().describe("Output format: full (with details) or names (just template names)")
@@ -36487,13 +36492,13 @@ function registerListWorkflowsTool(server, deps) {
36487
36492
  const secureHandler = createSecureHandler(createListWorkflowsHandler(deps.workflowEngine), {
36488
36493
  toolName: "list_workflows",
36489
36494
  rateLimiter: deps.rateLimiter,
36490
- logger: logger54
36495
+ logger: logger55
36491
36496
  });
36492
36497
  const timeoutMs = deps.security?.timeout?.defaultTimeoutMs;
36493
36498
  const wrappedHandler = wrapToolWithTimeout(
36494
36499
  "list_workflows",
36495
36500
  secureHandler,
36496
- timeoutMs !== void 0 ? { timeoutMs, logger: logger54 } : { logger: logger54 }
36501
+ timeoutMs !== void 0 ? { timeoutMs, logger: logger55 } : { logger: logger55 }
36497
36502
  );
36498
36503
  const outputSchema = {
36499
36504
  workflows: z69.array(
@@ -36512,7 +36517,7 @@ function registerListWorkflowsTool(server, deps) {
36512
36517
  { description, inputSchema: toolSchema, outputSchema },
36513
36518
  toSdkCallback(wrappedHandler)
36514
36519
  );
36515
- logger54.info("Registered list_workflows tool with secure handler and timeout protection");
36520
+ logger55.info("Registered list_workflows tool with secure handler and timeout protection");
36516
36521
  }
36517
36522
 
36518
36523
  // src/mcp/tools/execute-expert.ts
@@ -36596,12 +36601,12 @@ function recordExpertError2(expertId, role, errorMessage) {
36596
36601
  });
36597
36602
  }
36598
36603
  }
36599
- function autoCatalogScan(output2, expertId, logger54) {
36604
+ function autoCatalogScan(output2, expertId, logger55) {
36600
36605
  try {
36601
36606
  const catalog = getAutoCatalog();
36602
36607
  catalog.scanAndRecord(output2, "execute_expert");
36603
36608
  } catch (error) {
36604
- logger54?.debug("Best-effort auto-catalog scan failed", {
36609
+ logger55?.debug("Best-effort auto-catalog scan failed", {
36605
36610
  error: getErrorMessage(error),
36606
36611
  expertId
36607
36612
  });
@@ -36659,11 +36664,11 @@ function computeExpertContextUtilization(observation, threshold = DEFAULT_CONTEX
36659
36664
  threshold
36660
36665
  };
36661
36666
  }
36662
- function observeExpertContext(observation, logger54, threshold = resolveContextWarnThreshold()) {
36667
+ function observeExpertContext(observation, logger55, threshold = resolveContextWarnThreshold()) {
36663
36668
  try {
36664
36669
  const util = computeExpertContextUtilization(observation, threshold);
36665
36670
  if (util.warned) {
36666
- logger54?.warn("context_warning", {
36671
+ logger55?.warn("context_warning", {
36667
36672
  event: "context_warning",
36668
36673
  expertId: observation.expertId,
36669
36674
  role: observation.role,
@@ -36676,7 +36681,7 @@ function observeExpertContext(observation, logger54, threshold = resolveContextW
36676
36681
  taskLength: observation.taskDescription.length
36677
36682
  });
36678
36683
  } else {
36679
- logger54?.debug("context_utilization", {
36684
+ logger55?.debug("context_utilization", {
36680
36685
  event: "context_utilization",
36681
36686
  expertId: observation.expertId,
36682
36687
  role: observation.role,
@@ -36764,7 +36769,7 @@ function buildSuccessResponse(params) {
36764
36769
  }
36765
36770
  return response;
36766
36771
  }
36767
- function observeExpertContextIfOk(result, expert, task, durationMs, logger54) {
36772
+ function observeExpertContextIfOk(result, expert, task, durationMs, logger55) {
36768
36773
  if (!result.ok) return;
36769
36774
  const expertModelId = expert.expertConfig.modelPreference?.modelId;
36770
36775
  const observation = {
@@ -36775,9 +36780,9 @@ function observeExpertContextIfOk(result, expert, task, durationMs, logger54) {
36775
36780
  taskDescription: task.description,
36776
36781
  durationMs
36777
36782
  };
36778
- observeExpertContext(observation, logger54);
36783
+ observeExpertContext(observation, logger55);
36779
36784
  }
36780
- async function deriveExpertAccessPolicy(task, logger54) {
36785
+ async function deriveExpertAccessPolicy(task, logger55) {
36781
36786
  const mode = resolveAccessPolicyMode();
36782
36787
  try {
36783
36788
  const policy = await deriveAccessPolicy(task.description, {
@@ -36785,14 +36790,14 @@ async function deriveExpertAccessPolicy(task, logger54) {
36785
36790
  trustTier: "1"
36786
36791
  });
36787
36792
  if (mode !== "off") {
36788
- logger54?.info("access-policy: derived (expert)", {
36793
+ logger55?.info("access-policy: derived (expert)", {
36789
36794
  mode,
36790
36795
  source: policy.source
36791
36796
  });
36792
36797
  }
36793
36798
  return policy;
36794
36799
  } catch (error) {
36795
- logger54?.warn("access-policy: derivation failed, falling back to off (expert)", {
36800
+ logger55?.warn("access-policy: derivation failed, falling back to off (expert)", {
36796
36801
  error: getErrorMessage(error)
36797
36802
  });
36798
36803
  return {
@@ -36838,11 +36843,11 @@ function isExpertDegraded(role) {
36838
36843
  }
36839
36844
  return consecutive >= DEGRADATION_CONSECUTIVE_THRESHOLD;
36840
36845
  }
36841
- async function tryExpertFallback(expert, task, logger54) {
36846
+ async function tryExpertFallback(expert, task, logger55) {
36842
36847
  const roleKey = `${expert.role}_expert`;
36843
36848
  const category = ROLE_TO_TASK_CATEGORY[roleKey];
36844
36849
  if (category === void 0) return void 0;
36845
- const effectiveLogger = logger54 ?? createLogger({ tool: "execute_expert" });
36850
+ const effectiveLogger = logger55 ?? createLogger({ tool: "execute_expert" });
36846
36851
  const registry = getGlobalRegistry({ logger: effectiveLogger });
36847
36852
  const routing = registry.getRouting(category);
36848
36853
  const primaryCli = routing?.primaryCli ?? "unknown";
@@ -36851,7 +36856,7 @@ async function tryExpertFallback(expert, task, logger54) {
36851
36856
  const fallbackCli = chain[0];
36852
36857
  if (fallbackCli === void 0) return void 0;
36853
36858
  const fallbackAdapter = registry.getAdapterForCli(fallbackCli);
36854
- logger54?.info("Retrying expert with fallback CLI", { role: expert.role, fallbackCli });
36859
+ logger55?.info("Retrying expert with fallback CLI", { role: expert.role, fallbackCli });
36855
36860
  const fallbackResult = createExpert(expert.expertConfig, { adapter: fallbackAdapter });
36856
36861
  if (!fallbackResult.ok) return void 0;
36857
36862
  const result = await fallbackResult.value.execute(task);
@@ -36869,7 +36874,7 @@ async function tryExpertFallback(expert, task, logger54) {
36869
36874
  };
36870
36875
  }
36871
36876
  async function classifyExpertResult(opts) {
36872
- const { result, expert, task, args, durationMs, logger: logger54 } = opts;
36877
+ const { result, expert, task, args, durationMs, logger: logger55 } = opts;
36873
36878
  const modelId = expert.expertConfig.modelPreference?.modelId;
36874
36879
  const info = {
36875
36880
  expertId: args.expertId,
@@ -36878,19 +36883,19 @@ async function classifyExpertResult(opts) {
36878
36883
  };
36879
36884
  if (!result.ok) {
36880
36885
  if (isRateLimitFailure(result.error.message)) {
36881
- const fallback = await tryExpertFallback(expert, task, logger54);
36886
+ const fallback = await tryExpertFallback(expert, task, logger55);
36882
36887
  if (fallback !== void 0) return fallback;
36883
36888
  }
36884
- logger54?.warn("Expert execution failed", {
36889
+ logger55?.warn("Expert execution failed", {
36885
36890
  expertId: args.expertId,
36886
36891
  error: result.error.message
36887
36892
  });
36888
36893
  return handleExpertFailure(args.task, info, result.error.message, durationMs);
36889
36894
  }
36890
- logger54?.info("Expert execution completed", { expertId: args.expertId, durationMs });
36895
+ logger55?.info("Expert execution completed", { expertId: args.expertId, durationMs });
36891
36896
  handleExpertSuccess(args.task, info, durationMs);
36892
36897
  if (typeof result.value.output === "string") {
36893
- autoCatalogScan(result.value.output, args.expertId, logger54);
36898
+ autoCatalogScan(result.value.output, args.expertId, logger55);
36894
36899
  }
36895
36900
  return {
36896
36901
  ok: true,
@@ -36978,7 +36983,7 @@ var EXECUTE_EXPERT_TOOL_SCHEMA = {
36978
36983
  context: z70.record(z70.string(), z70.unknown()).optional().describe("Additional context metadata for the task"),
36979
36984
  timeoutMs: z70.number().int().min(EXPERT_TIMEOUT_FLOOR_MS).max(9e5).optional().describe("Optional timeout in ms (120s-900s). Overrides auto-detected timeout.")
36980
36985
  };
36981
- function createTaskHandler(deps, logger54) {
36986
+ function createTaskHandler(deps, logger55) {
36982
36987
  const notifier = deps.notifier ?? NOOP_NOTIFIER;
36983
36988
  return {
36984
36989
  createTask: (args, extra) => {
@@ -36990,7 +36995,7 @@ function createTaskHandler(deps, logger54) {
36990
36995
  const { taskStore } = extra;
36991
36996
  const ttl = clampTaskTtl(DEFAULT_TASK_TTL_MS);
36992
36997
  const taskPromise = taskStore.createTask({ ttl, pollInterval: 5e3 }).then((task) => {
36993
- logger54.info("Task created for execute_expert", {
36998
+ logger55.info("Task created for execute_expert", {
36994
36999
  taskId: task.taskId,
36995
37000
  expertId: validatedArgs.expertId
36996
37001
  });
@@ -37015,7 +37020,7 @@ function createTaskHandler(deps, logger54) {
37015
37020
  }
37016
37021
  async function runBackgroundExpertTask(opts) {
37017
37022
  const { deps, args, taskId, taskStore, notifier } = opts;
37018
- const logger54 = deps.logger ?? createLogger({ tool: "execute_expert" });
37023
+ const logger55 = deps.logger ?? createLogger({ tool: "execute_expert" });
37019
37024
  try {
37020
37025
  notifier.info("execute_expert", {
37021
37026
  event: "expert_start",
@@ -37045,13 +37050,13 @@ async function runBackgroundExpertTask(opts) {
37045
37050
  });
37046
37051
  } catch (error) {
37047
37052
  const message = getErrorMessage(error);
37048
- logger54.warn("Background expert task failed", { taskId, error: message });
37053
+ logger55.warn("Background expert task failed", { taskId, error: message });
37049
37054
  try {
37050
37055
  await taskStore.storeTaskResult(taskId, "failed", {
37051
37056
  ...toolError(`Expert execution error: ${message}`)
37052
37057
  });
37053
37058
  } catch (storeError) {
37054
- logger54.warn("Failed to store task failure result", {
37059
+ logger55.warn("Failed to store task failure result", {
37055
37060
  taskId,
37056
37061
  error: getErrorMessage(storeError)
37057
37062
  });
@@ -37059,7 +37064,7 @@ async function runBackgroundExpertTask(opts) {
37059
37064
  }
37060
37065
  }
37061
37066
  function registerExecuteExpertTool(server, deps) {
37062
- const logger54 = deps.logger ?? createLogger({ tool: "execute_expert" });
37067
+ const logger55 = deps.logger ?? createLogger({ tool: "execute_expert" });
37063
37068
  const notifier = deps.notifier ?? createMcpNotifier(server);
37064
37069
  const depsWithNotifier = { ...deps, notifier };
37065
37070
  const description = "Execute a task using a previously created expert agent. Returns the expert analysis including output, confidence, and token usage.";
@@ -37070,9 +37075,9 @@ function registerExecuteExpertTool(server, deps) {
37070
37075
  inputSchema: EXECUTE_EXPERT_TOOL_SCHEMA,
37071
37076
  execution: { taskSupport: "optional" }
37072
37077
  },
37073
- createTaskHandler(depsWithNotifier, logger54)
37078
+ createTaskHandler(depsWithNotifier, logger55)
37074
37079
  );
37075
- logger54.info("Registered execute_expert tool with MCP Tasks support (taskSupport: optional)");
37080
+ logger55.info("Registered execute_expert tool with MCP Tasks support (taskSupport: optional)");
37076
37081
  }
37077
37082
 
37078
37083
  // src/mcp/tools/research-query.ts
@@ -38416,15 +38421,15 @@ function createResearchQueryHandler(deps) {
38416
38421
  return toolError(`Validation error: ${formatZodError(validationResult.error)}`);
38417
38422
  }
38418
38423
  ctx.logger.debug("Executing research query", { action: validationResult.data.action });
38419
- const logger54 = deps.logger ?? createLogger({ tool: "research_query" });
38420
- return withToolError("Research query failed", logger54, async () => {
38424
+ const logger55 = deps.logger ?? createLogger({ tool: "research_query" });
38425
+ return withToolError("Research query failed", logger55, async () => {
38421
38426
  const result = await executeQuery(validationResult.data);
38422
38427
  return toolSuccess(JSON.stringify(result, null, 2));
38423
38428
  });
38424
38429
  };
38425
38430
  }
38426
38431
  function registerResearchQueryTool(server, deps) {
38427
- const logger54 = deps.logger ?? createLogger({ tool: "research_query" });
38432
+ const logger55 = deps.logger ?? createLogger({ tool: "research_query" });
38428
38433
  const toolSchema = {
38429
38434
  action: z73.enum(["status", "overlap", "stats", "search"]).describe("Query action: status, overlap, stats, or search"),
38430
38435
  techniqueId: z73.string().optional().describe("Technique ID for status/overlap queries"),
@@ -38436,19 +38441,19 @@ function registerResearchQueryTool(server, deps) {
38436
38441
  const secureHandler = createSecureHandler(createResearchQueryHandler(deps), {
38437
38442
  toolName: "research_query",
38438
38443
  rateLimiter: deps.rateLimiter,
38439
- logger: logger54
38444
+ logger: logger55
38440
38445
  });
38441
38446
  const timeoutMs = getToolTimeout("research_query", deps.security);
38442
38447
  const wrappedHandler = wrapToolWithTimeout("research_query", secureHandler, {
38443
38448
  timeoutMs,
38444
- logger: logger54
38449
+ logger: logger55
38445
38450
  });
38446
38451
  server.registerTool(
38447
38452
  "research_query",
38448
38453
  { description, inputSchema: toolSchema },
38449
38454
  toSdkCallback(wrappedHandler)
38450
38455
  );
38451
- logger54.info("Registered research_query tool with secure handler and timeout protection");
38456
+ logger55.info("Registered research_query tool with secure handler and timeout protection");
38452
38457
  }
38453
38458
 
38454
38459
  // src/mcp/tools/research-add.ts
@@ -38459,7 +38464,7 @@ var ResearchAddInputSchema = z74.object({
38459
38464
  priority: z74.enum(["P1", "P2", "P3", "P4"]).optional().describe("Priority level for the paper"),
38460
38465
  dryRun: z74.boolean().optional().default(false).describe("Preview what would be added without persisting")
38461
38466
  });
38462
- async function executeResearchAdd(input, logger54) {
38467
+ async function executeResearchAdd(input, logger55) {
38463
38468
  const exists = await paperExists(input.arxivId);
38464
38469
  if (exists) {
38465
38470
  return {
@@ -38478,7 +38483,7 @@ async function executeResearchAdd(input, logger54) {
38478
38483
  });
38479
38484
  if (result.success && !input.dryRun) {
38480
38485
  try {
38481
- const memory = getToolMemory(logger54);
38486
+ const memory = getToolMemory(logger55);
38482
38487
  memory.recordLearning({
38483
38488
  pattern: `Added paper: ${result.title} (${result.paperId})`,
38484
38489
  context: `topic=${input.topic ?? "general"}, priority=${input.priority ?? "unset"}`,
@@ -38486,7 +38491,7 @@ async function executeResearchAdd(input, logger54) {
38486
38491
  source: "research_add"
38487
38492
  });
38488
38493
  } catch {
38489
- logger54.debug("Failed to record learning in session memory");
38494
+ logger55.debug("Failed to record learning in session memory");
38490
38495
  }
38491
38496
  }
38492
38497
  const qualityNote = result.success && !input.dryRun ? " [evidence_tier=low \u2014 arXiv preprint, no citation data yet. Run backfill-research-quality.ts to enrich.]" : "";
@@ -38505,9 +38510,9 @@ function createResearchAddHandler(deps) {
38505
38510
  return toolError(`Validation error: ${formatZodError(validationResult.error)}`);
38506
38511
  }
38507
38512
  ctx.logger.debug("Adding research paper", { arxivId: validationResult.data.arxivId });
38508
- const logger54 = deps.logger ?? createLogger({ tool: "research_add" });
38509
- return withToolError("Failed to add paper", logger54, async () => {
38510
- const result = await executeResearchAdd(validationResult.data, logger54);
38513
+ const logger55 = deps.logger ?? createLogger({ tool: "research_add" });
38514
+ return withToolError("Failed to add paper", logger55, async () => {
38515
+ const result = await executeResearchAdd(validationResult.data, logger55);
38511
38516
  if (!result.success) {
38512
38517
  return toolError(result.message);
38513
38518
  }
@@ -38516,7 +38521,7 @@ function createResearchAddHandler(deps) {
38516
38521
  };
38517
38522
  }
38518
38523
  function registerResearchAddTool(server, deps) {
38519
- const logger54 = deps.logger ?? createLogger({ tool: "research_add" });
38524
+ const logger55 = deps.logger ?? createLogger({ tool: "research_add" });
38520
38525
  const toolSchema = {
38521
38526
  arxivId: z74.string().regex(/^\d{4}\.\d{4,5}$/).describe('arXiv paper ID (e.g., "2401.12345")'),
38522
38527
  topic: z74.string().optional().describe("Research topic to categorize the paper under"),
@@ -38527,19 +38532,19 @@ function registerResearchAddTool(server, deps) {
38527
38532
  const secureHandler = createSecureHandler(createResearchAddHandler(deps), {
38528
38533
  toolName: "research_add",
38529
38534
  rateLimiter: deps.rateLimiter,
38530
- logger: logger54
38535
+ logger: logger55
38531
38536
  });
38532
38537
  const timeoutMs = getToolTimeout("research_add", deps.security);
38533
38538
  const wrappedHandler = wrapToolWithTimeout("research_add", secureHandler, {
38534
38539
  timeoutMs,
38535
- logger: logger54
38540
+ logger: logger55
38536
38541
  });
38537
38542
  server.registerTool(
38538
38543
  "research_add",
38539
38544
  { description, inputSchema: toolSchema },
38540
38545
  toSdkCallback(wrappedHandler)
38541
38546
  );
38542
- logger54.info("Registered research_add tool with secure handler and timeout protection");
38547
+ logger55.info("Registered research_add tool with secure handler and timeout protection");
38543
38548
  }
38544
38549
 
38545
38550
  // src/mcp/tools/research-add-source.ts
@@ -38616,9 +38621,9 @@ function buildResponse2(params) {
38616
38621
  dryRun: params.dryRun
38617
38622
  };
38618
38623
  }
38619
- function recordAddSourceLearning(logger54, name, sourceId, type, qualityScore) {
38624
+ function recordAddSourceLearning(logger55, name, sourceId, type, qualityScore) {
38620
38625
  try {
38621
- const memory = getToolMemory(logger54);
38626
+ const memory = getToolMemory(logger55);
38622
38627
  memory.recordLearning({
38623
38628
  pattern: `Added source: ${name} (${sourceId})`,
38624
38629
  context: `type=${type}, quality=${String(qualityScore)}`,
@@ -38626,7 +38631,7 @@ function recordAddSourceLearning(logger54, name, sourceId, type, qualityScore) {
38626
38631
  source: "research_add_source"
38627
38632
  });
38628
38633
  } catch {
38629
- logger54.debug("Failed to record learning in session memory");
38634
+ logger55.debug("Failed to record learning in session memory");
38630
38635
  }
38631
38636
  }
38632
38637
  function prepareSource(input) {
@@ -38634,7 +38639,7 @@ function prepareSource(input) {
38634
38639
  const score = computeSourceQualityScore(entry);
38635
38640
  return { entry, score };
38636
38641
  }
38637
- async function executeResearchAddSource(input, logger54) {
38642
+ async function executeResearchAddSource(input, logger55) {
38638
38643
  const sourceId = generateSourceId(input.url);
38639
38644
  const exists = await sourceExistsInRegistry(input.url);
38640
38645
  if (exists) {
@@ -38669,8 +38674,8 @@ async function executeResearchAddSource(input, logger54) {
38669
38674
  dryRun: false
38670
38675
  });
38671
38676
  }
38672
- recordAddSourceLearning(logger54, input.name, sourceId, input.type, score);
38673
- logger54.info("Added research source", { sourceId, name: input.name, qualityScore: score });
38677
+ recordAddSourceLearning(logger55, input.name, sourceId, input.type, score);
38678
+ logger55.info("Added research source", { sourceId, name: input.name, qualityScore: score });
38674
38679
  return buildResponse2({
38675
38680
  success: true,
38676
38681
  sourceId,
@@ -38687,9 +38692,9 @@ function createResearchAddSourceHandler(deps) {
38687
38692
  return toolError(`Validation error: ${formatZodError(validationResult.error)}`);
38688
38693
  }
38689
38694
  ctx.logger.debug("Adding research source", { url: validationResult.data.url });
38690
- const logger54 = deps.logger ?? createLogger({ tool: "research_add_source" });
38691
- return withToolError("Failed to add source", logger54, async () => {
38692
- const result = await executeResearchAddSource(validationResult.data, logger54);
38695
+ const logger55 = deps.logger ?? createLogger({ tool: "research_add_source" });
38696
+ return withToolError("Failed to add source", logger55, async () => {
38697
+ const result = await executeResearchAddSource(validationResult.data, logger55);
38693
38698
  if (!result.success) {
38694
38699
  return toolError(result.message);
38695
38700
  }
@@ -38698,7 +38703,7 @@ function createResearchAddSourceHandler(deps) {
38698
38703
  };
38699
38704
  }
38700
38705
  function registerResearchAddSourceTool(server, deps) {
38701
- const logger54 = deps.logger ?? createLogger({ tool: "research_add_source" });
38706
+ const logger55 = deps.logger ?? createLogger({ tool: "research_add_source" });
38702
38707
  const toolSchema = {
38703
38708
  url: z75.string().min(1).describe("Source URL"),
38704
38709
  name: z75.string().min(1).describe("Display name"),
@@ -38723,12 +38728,12 @@ function registerResearchAddSourceTool(server, deps) {
38723
38728
  toolName: "research_add_source",
38724
38729
  securityTier: "external",
38725
38730
  rateLimiter: deps.rateLimiter,
38726
- logger: logger54
38731
+ logger: logger55
38727
38732
  });
38728
38733
  const timeoutMs = getToolTimeout("research_add_source", deps.security);
38729
38734
  const wrappedHandler = wrapToolWithTimeout("research_add_source", secureHandler, {
38730
38735
  timeoutMs,
38731
- logger: logger54
38736
+ logger: logger55
38732
38737
  });
38733
38738
  server.registerTool(
38734
38739
  "research_add_source",
@@ -38781,7 +38786,7 @@ function toDiscoveredItems(sources) {
38781
38786
  discoveredAt: s.discoveredAt
38782
38787
  }));
38783
38788
  }
38784
- async function discoverFromExtendedSource(source, topic, maxResults, logger54, sinceDate) {
38789
+ async function discoverFromExtendedSource(source, topic, maxResults, logger55, sinceDate) {
38785
38790
  let result;
38786
38791
  switch (source) {
38787
38792
  case "google_ai":
@@ -38809,7 +38814,7 @@ async function discoverFromExtendedSource(source, topic, maxResults, logger54, s
38809
38814
  return { items: [], failed: true };
38810
38815
  }
38811
38816
  if (!result.ok) {
38812
- logger54.warn(`${source} discovery failed`, {
38817
+ logger55.warn(`${source} discovery failed`, {
38813
38818
  source,
38814
38819
  errorCode: result.error.code,
38815
38820
  error: result.error.message
@@ -38849,24 +38854,24 @@ function markExistingItems(items, existingIds) {
38849
38854
  }
38850
38855
  var ARXIV_ORG_SOURCES = /* @__PURE__ */ new Set(["google_ai", "meta_fair", "microsoft", "deepmind"]);
38851
38856
  var INDEPENDENT_SOURCES = ["semantic_scholar", "papers_with_code", "openalex"];
38852
- async function queryExtendedSource(src, input, logger54, acc) {
38857
+ async function queryExtendedSource(src, input, logger55, acc) {
38853
38858
  acc.sources.push(src);
38854
38859
  try {
38855
38860
  const result = await discoverFromExtendedSource(
38856
38861
  src,
38857
38862
  input.topic,
38858
38863
  input.maxResults,
38859
- logger54,
38864
+ logger55,
38860
38865
  input.sinceDate
38861
38866
  );
38862
38867
  if (result.failed) acc.failedSources.push(src);
38863
38868
  acc.items = acc.items.concat(result.items);
38864
38869
  } catch (error) {
38865
38870
  acc.failedSources.push(src);
38866
- logger54.warn("Source discovery failed", { source: src, error: getErrorMessage(error) });
38871
+ logger55.warn("Source discovery failed", { source: src, error: getErrorMessage(error) });
38867
38872
  }
38868
38873
  }
38869
- async function queryAllSources(input, logger54) {
38874
+ async function queryAllSources(input, logger55) {
38870
38875
  const acc = { sources: [], failedSources: [], items: [] };
38871
38876
  const isAll = input.source === "all";
38872
38877
  const shouldQuery = (src) => isAll || input.source === src;
@@ -38876,11 +38881,11 @@ async function queryAllSources(input, logger54) {
38876
38881
  if (r.ok) acc.items = acc.items.concat(toDiscoveredItems(r.value));
38877
38882
  else {
38878
38883
  acc.failedSources.push("arxiv");
38879
- logger54.warn("arxiv discovery failed", { error: r.error.message });
38884
+ logger55.warn("arxiv discovery failed", { error: r.error.message });
38880
38885
  }
38881
38886
  }
38882
38887
  for (const src of ARXIV_ORG_SOURCES) {
38883
- if (!isAll && input.source === src) await queryExtendedSource(src, input, logger54, acc);
38888
+ if (!isAll && input.source === src) await queryExtendedSource(src, input, logger55, acc);
38884
38889
  }
38885
38890
  if (shouldQuery("github")) {
38886
38891
  acc.sources.push("github");
@@ -38888,15 +38893,15 @@ async function queryAllSources(input, logger54) {
38888
38893
  if (r.ok) acc.items = acc.items.concat(toDiscoveredItems(r.value));
38889
38894
  else {
38890
38895
  acc.failedSources.push("github");
38891
- logger54.warn("github discovery failed", { error: r.error.message });
38896
+ logger55.warn("github discovery failed", { error: r.error.message });
38892
38897
  }
38893
38898
  }
38894
38899
  for (const src of INDEPENDENT_SOURCES) {
38895
- if (shouldQuery(src)) await queryExtendedSource(src, input, logger54, acc);
38900
+ if (shouldQuery(src)) await queryExtendedSource(src, input, logger55, acc);
38896
38901
  }
38897
38902
  return acc;
38898
38903
  }
38899
- async function executeDiscovery(rawInput, logger54) {
38904
+ async function executeDiscovery(rawInput, logger55) {
38900
38905
  const input = {
38901
38906
  ...rawInput,
38902
38907
  topic: normalizeTopicToCanonical(rawInput.topic)
@@ -38906,7 +38911,7 @@ async function executeDiscovery(rawInput, logger54) {
38906
38911
  sources: sourcesToQuery,
38907
38912
  failedSources,
38908
38913
  items: allItems
38909
- } = await queryAllSources(input, logger54);
38914
+ } = await queryAllSources(input, logger55);
38910
38915
  markExistingItems(allItems, existingIds);
38911
38916
  const totalFound = allItems.length;
38912
38917
  const inRegistry = allItems.filter((i) => i.alreadyInRegistry).length;
@@ -38918,7 +38923,7 @@ async function executeDiscovery(rawInput, logger54) {
38918
38923
  ).slice(0, input.maxResults);
38919
38924
  const filteredOut = totalFound - inRegistry - relevantItems.length;
38920
38925
  if (filteredOut > 0) {
38921
- logger54.debug("Filtered out irrelevant results", {
38926
+ logger55.debug("Filtered out irrelevant results", {
38922
38927
  threshold,
38923
38928
  filteredOut,
38924
38929
  remaining: relevantItems.length
@@ -38998,10 +39003,10 @@ function createResearchDiscoverHandler(deps) {
38998
39003
  topic: validationResult.data.topic,
38999
39004
  source: validationResult.data.source
39000
39005
  });
39001
- const logger54 = deps.logger ?? createLogger({ tool: "research_discover" });
39006
+ const logger55 = deps.logger ?? createLogger({ tool: "research_discover" });
39002
39007
  const startMs = Date.now();
39003
- const response = await withToolError("Discovery failed", logger54, async () => {
39004
- const result = await executeDiscovery(validationResult.data, logger54);
39008
+ const response = await withToolError("Discovery failed", logger55, async () => {
39009
+ const result = await executeDiscovery(validationResult.data, logger55);
39005
39010
  recordDiscoverySuccess(result.topic, result.newItems, result.sourcesQueried);
39006
39011
  return toolSuccess(JSON.stringify(result, null, 2));
39007
39012
  });
@@ -39016,7 +39021,7 @@ function createResearchDiscoverHandler(deps) {
39016
39021
  };
39017
39022
  }
39018
39023
  function registerResearchDiscoverTool(server, deps) {
39019
- const logger54 = deps.logger ?? createLogger({ tool: "research_discover" });
39024
+ const logger55 = deps.logger ?? createLogger({ tool: "research_discover" });
39020
39025
  const toolSchema = {
39021
39026
  topic: z76.string().min(1).max(200).describe("Research topic to search for"),
39022
39027
  source: z76.enum([
@@ -39039,19 +39044,19 @@ function registerResearchDiscoverTool(server, deps) {
39039
39044
  const secureHandler = createSecureHandler(createResearchDiscoverHandler(deps), {
39040
39045
  toolName: "research_discover",
39041
39046
  rateLimiter: deps.rateLimiter,
39042
- logger: logger54
39047
+ logger: logger55
39043
39048
  });
39044
39049
  const timeoutMs = getToolTimeout("research_discover", deps.security);
39045
39050
  const wrappedHandler = wrapToolWithTimeout("research_discover", secureHandler, {
39046
39051
  timeoutMs,
39047
- logger: logger54
39052
+ logger: logger55
39048
39053
  });
39049
39054
  server.registerTool(
39050
39055
  "research_discover",
39051
39056
  { description, inputSchema: toolSchema },
39052
39057
  toSdkCallback(wrappedHandler)
39053
39058
  );
39054
- logger54.info("Registered research_discover tool with secure handler and timeout protection");
39059
+ logger55.info("Registered research_discover tool with secure handler and timeout protection");
39055
39060
  }
39056
39061
 
39057
39062
  // src/mcp/tools/research-analyze.ts
@@ -39292,15 +39297,15 @@ function createResearchAnalyzeHandler(deps) {
39292
39297
  ctx.logger.debug("Analyzing research registry", {
39293
39298
  focus: validationResult.data.focus
39294
39299
  });
39295
- const logger54 = deps.logger ?? createLogger({ tool: "research_analyze" });
39296
- return withToolError("Analysis failed", logger54, async () => {
39300
+ const logger55 = deps.logger ?? createLogger({ tool: "research_analyze" });
39301
+ return withToolError("Analysis failed", logger55, async () => {
39297
39302
  const result = await executeAnalysis(validationResult.data);
39298
39303
  return toolSuccess(JSON.stringify(result, null, 2));
39299
39304
  });
39300
39305
  };
39301
39306
  }
39302
39307
  function registerResearchAnalyzeTool(server, deps) {
39303
- const logger54 = deps.logger ?? createLogger({ tool: "research_analyze" });
39308
+ const logger55 = deps.logger ?? createLogger({ tool: "research_analyze" });
39304
39309
  const toolSchema = {
39305
39310
  focus: z77.enum(["gaps", "trends", "priorities", "stale", "coverage"]).describe("Analysis focus area"),
39306
39311
  topic: z77.string().optional().describe("Optional topic filter")
@@ -39309,19 +39314,19 @@ function registerResearchAnalyzeTool(server, deps) {
39309
39314
  const secureHandler = createSecureHandler(createResearchAnalyzeHandler(deps), {
39310
39315
  toolName: "research_analyze",
39311
39316
  rateLimiter: deps.rateLimiter,
39312
- logger: logger54
39317
+ logger: logger55
39313
39318
  });
39314
39319
  const timeoutMs = getToolTimeout("research_analyze", deps.security);
39315
39320
  const wrappedHandler = wrapToolWithTimeout("research_analyze", secureHandler, {
39316
39321
  timeoutMs,
39317
- logger: logger54
39322
+ logger: logger55
39318
39323
  });
39319
39324
  server.registerTool(
39320
39325
  "research_analyze",
39321
39326
  { description, inputSchema: toolSchema },
39322
39327
  toSdkCallback(wrappedHandler)
39323
39328
  );
39324
- logger54.info("Registered research_analyze tool with secure handler and timeout protection");
39329
+ logger55.info("Registered research_analyze tool with secure handler and timeout protection");
39325
39330
  }
39326
39331
 
39327
39332
  // src/mcp/tools/research-catalog-review.ts
@@ -39344,7 +39349,7 @@ function handleList() {
39344
39349
  data: { pending, count: pending.length }
39345
39350
  };
39346
39351
  }
39347
- async function approveArxivRef(identifier, topic, shouldCreateIssue, logger54) {
39352
+ async function approveArxivRef(identifier, topic, shouldCreateIssue, logger55) {
39348
39353
  const catalog = getAutoCatalog();
39349
39354
  const exists = await paperExists(identifier);
39350
39355
  if (exists) {
@@ -39356,7 +39361,7 @@ async function approveArxivRef(identifier, topic, shouldCreateIssue, logger54) {
39356
39361
  if (!result.success) {
39357
39362
  return { action: "approve", success: false, message: `Failed: ${result.message}` };
39358
39363
  }
39359
- logger54.info("Approved paper", { paperId: result.paperId });
39364
+ logger55.info("Approved paper", { paperId: result.paperId });
39360
39365
  if (shouldCreateIssue) {
39361
39366
  const body = formatResearchIssueBody([
39362
39367
  {
@@ -39380,11 +39385,11 @@ async function approveArxivRef(identifier, topic, shouldCreateIssue, logger54) {
39380
39385
  data: { ...result, issueUrl: issueResult.value.url }
39381
39386
  };
39382
39387
  }
39383
- logger54.warn("Issue creation failed after approve", { error: issueResult.error.message });
39388
+ logger55.warn("Issue creation failed after approve", { error: issueResult.error.message });
39384
39389
  }
39385
39390
  return { action: "approve", success: true, message: `Added: ${result.title}`, data: result };
39386
39391
  }
39387
- async function handleApprove(input, logger54) {
39392
+ async function handleApprove(input, logger55) {
39388
39393
  if (input.identifier === void 0 || input.identifier === "") {
39389
39394
  return { action: "approve", success: false, message: "identifier is required" };
39390
39395
  }
@@ -39398,7 +39403,7 @@ async function handleApprove(input, logger54) {
39398
39403
  };
39399
39404
  }
39400
39405
  if (ref.type === "arxiv") {
39401
- return approveArxivRef(ref.identifier, input.topic, input.createIssue, logger54);
39406
+ return approveArxivRef(ref.identifier, input.topic, input.createIssue, logger55);
39402
39407
  }
39403
39408
  catalog.markReviewed(ref.identifier);
39404
39409
  return { action: "approve", success: true, message: `Reviewed: ${ref.identifier}` };
@@ -39429,12 +39434,12 @@ function handleFlush() {
39429
39434
  message: `Flushed ${String(count)} references from catalog`
39430
39435
  };
39431
39436
  }
39432
- async function executeCatalogReview(input, logger54) {
39437
+ async function executeCatalogReview(input, logger55) {
39433
39438
  switch (input.action) {
39434
39439
  case "list":
39435
39440
  return handleList();
39436
39441
  case "approve":
39437
- return handleApprove(input, logger54);
39442
+ return handleApprove(input, logger55);
39438
39443
  case "dismiss":
39439
39444
  return handleDismiss(input);
39440
39445
  case "flush":
@@ -39448,9 +39453,9 @@ function createCatalogReviewHandler(deps) {
39448
39453
  return toolError(`Validation error: ${formatZodError(validationResult.error)}`);
39449
39454
  }
39450
39455
  ctx.logger.debug("Catalog review", { action: validationResult.data.action });
39451
- const logger54 = deps.logger ?? createLogger({ tool: "research_catalog_review" });
39452
- return withToolError("Catalog review failed", logger54, async () => {
39453
- const result = await executeCatalogReview(validationResult.data, logger54);
39456
+ const logger55 = deps.logger ?? createLogger({ tool: "research_catalog_review" });
39457
+ return withToolError("Catalog review failed", logger55, async () => {
39458
+ const result = await executeCatalogReview(validationResult.data, logger55);
39454
39459
  if (!result.success) {
39455
39460
  return toolError(result.message);
39456
39461
  }
@@ -39459,7 +39464,7 @@ function createCatalogReviewHandler(deps) {
39459
39464
  };
39460
39465
  }
39461
39466
  function registerResearchCatalogReviewTool(server, deps) {
39462
- const logger54 = deps.logger ?? createLogger({ tool: "research_catalog_review" });
39467
+ const logger55 = deps.logger ?? createLogger({ tool: "research_catalog_review" });
39463
39468
  const toolSchema = {
39464
39469
  action: z78.enum(["list", "approve", "dismiss", "flush"]).describe("Action to perform on cataloged references"),
39465
39470
  identifier: z78.string().optional().describe("Reference identifier for approve/dismiss"),
@@ -39470,19 +39475,19 @@ function registerResearchCatalogReviewTool(server, deps) {
39470
39475
  const secureHandler = createSecureHandler(createCatalogReviewHandler(deps), {
39471
39476
  toolName: "research_catalog_review",
39472
39477
  rateLimiter: deps.rateLimiter,
39473
- logger: logger54
39478
+ logger: logger55
39474
39479
  });
39475
39480
  const timeoutMs = getToolTimeout("research_catalog_review", deps.security);
39476
39481
  const wrappedHandler = wrapToolWithTimeout("research_catalog_review", secureHandler, {
39477
39482
  timeoutMs,
39478
- logger: logger54
39483
+ logger: logger55
39479
39484
  });
39480
39485
  server.registerTool(
39481
39486
  "research_catalog_review",
39482
39487
  { description, inputSchema: toolSchema },
39483
39488
  toSdkCallback(wrappedHandler)
39484
39489
  );
39485
- logger54.info("Registered research_catalog_review tool");
39490
+ logger55.info("Registered research_catalog_review tool");
39486
39491
  }
39487
39492
 
39488
39493
  // src/mcp/tools/research-synthesize.ts
@@ -39496,8 +39501,8 @@ function createResearchSynthesizeHandler(deps) {
39496
39501
  if (!validationResult.success) {
39497
39502
  return toolError(`Validation error: ${formatZodError(validationResult.error)}`);
39498
39503
  }
39499
- const logger54 = deps.logger ?? createLogger({ tool: "research_synthesize" });
39500
- return withToolError("Synthesis failed", logger54, async () => {
39504
+ const logger55 = deps.logger ?? createLogger({ tool: "research_synthesize" });
39505
+ return withToolError("Synthesis failed", logger55, async () => {
39501
39506
  const result = await synthesizeResearch(validationResult.data.topic);
39502
39507
  if (!result.ok) {
39503
39508
  return toolError(`Synthesis failed: ${result.error.message}`);
@@ -39507,7 +39512,7 @@ function createResearchSynthesizeHandler(deps) {
39507
39512
  };
39508
39513
  }
39509
39514
  function registerResearchSynthesizeTool(server, deps) {
39510
- const logger54 = deps.logger ?? createLogger({ tool: "research_synthesize" });
39515
+ const logger55 = deps.logger ?? createLogger({ tool: "research_synthesize" });
39511
39516
  const toolSchema = {
39512
39517
  topic: z79.string().optional().describe("Optional topic filter for single-cluster synthesis")
39513
39518
  };
@@ -39515,19 +39520,19 @@ function registerResearchSynthesizeTool(server, deps) {
39515
39520
  const secureHandler = createSecureHandler(createResearchSynthesizeHandler(deps), {
39516
39521
  toolName: "research_synthesize",
39517
39522
  rateLimiter: deps.rateLimiter,
39518
- logger: logger54
39523
+ logger: logger55
39519
39524
  });
39520
39525
  const timeoutMs = getToolTimeout("research_synthesize", deps.security);
39521
39526
  const wrappedHandler = wrapToolWithTimeout("research_synthesize", secureHandler, {
39522
39527
  timeoutMs,
39523
- logger: logger54
39528
+ logger: logger55
39524
39529
  });
39525
39530
  server.registerTool(
39526
39531
  "research_synthesize",
39527
39532
  { description, inputSchema: toolSchema },
39528
39533
  toSdkCallback(wrappedHandler)
39529
39534
  );
39530
- logger54.info("Registered research_synthesize tool");
39535
+ logger55.info("Registered research_synthesize tool");
39531
39536
  }
39532
39537
 
39533
39538
  // src/mcp/tools/issue-triage-tool.ts
@@ -39581,7 +39586,7 @@ function createIssueTriageHandler(_deps) {
39581
39586
  };
39582
39587
  }
39583
39588
  function registerIssueTriageTool(server, deps) {
39584
- const logger54 = deps.logger ?? createLogger({ tool: "issue_triage" });
39589
+ const logger55 = deps.logger ?? createLogger({ tool: "issue_triage" });
39585
39590
  const toolSchema = {
39586
39591
  issueUrl: z80.string().min(1).describe("GitHub issue URL (e.g., https://github.com/owner/repo/issues/123)"),
39587
39592
  dryRun: z80.boolean().optional().default(true).describe("Read-only mode (default: true)")
@@ -39591,19 +39596,19 @@ function registerIssueTriageTool(server, deps) {
39591
39596
  toolName: "issue_triage",
39592
39597
  securityTier: "external",
39593
39598
  rateLimiter: deps.rateLimiter,
39594
- logger: logger54
39599
+ logger: logger55
39595
39600
  });
39596
39601
  const timeoutMs = getToolTimeout("issue_triage", deps.security);
39597
39602
  const wrappedHandler = wrapToolWithTimeout("issue_triage", secureHandler, {
39598
39603
  timeoutMs,
39599
- logger: logger54
39604
+ logger: logger55
39600
39605
  });
39601
39606
  server.registerTool(
39602
39607
  "issue_triage",
39603
39608
  { description, inputSchema: toolSchema },
39604
39609
  toSdkCallback(wrappedHandler)
39605
39610
  );
39606
- logger54.info("Registered issue_triage tool with secure handler and timeout protection");
39611
+ logger55.info("Registered issue_triage tool with secure handler and timeout protection");
39607
39612
  }
39608
39613
  var triageLogger = createLogger({ tool: "issue-triage" });
39609
39614
  function recordTriageSuccess(category, confidence, durationMs) {
@@ -39840,7 +39845,7 @@ function createEventCollector(events, enableAuditTrail) {
39840
39845
  auditBridge?.(event);
39841
39846
  };
39842
39847
  }
39843
- async function handleRunGraphWorkflow(input, logger54) {
39848
+ async function handleRunGraphWorkflow(input, logger55) {
39844
39849
  const startTime = getTimeProvider().now();
39845
39850
  const resolved = resolveGraph(input.workflow, startTime);
39846
39851
  if (!resolved.ok) return resolved.error;
@@ -39848,7 +39853,7 @@ async function handleRunGraphWorkflow(input, logger54) {
39848
39853
  const checkpointStore = input.enableCheckpointing ? createCheckpointStore() : void 0;
39849
39854
  const onEvent = createEventCollector(events, input.enableAuditTrail);
39850
39855
  const executionId = `graph-${input.workflow}-${String(Date.now())}`;
39851
- logger54.info("Executing graph workflow", {
39856
+ logger55.info("Executing graph workflow", {
39852
39857
  workflow: input.workflow,
39853
39858
  executionId,
39854
39859
  checkpointing: input.enableCheckpointing,
@@ -39891,7 +39896,7 @@ var GRAPH_WORKFLOW_SCHEMA = {
39891
39896
  enableCheckpointing: z81.boolean().optional().describe("Enable checkpoint saving"),
39892
39897
  enableAuditTrail: z81.boolean().optional().describe("Enable audit trail logging")
39893
39898
  };
39894
- function createGraphWorkflowHandler(logger54, notifier) {
39899
+ function createGraphWorkflowHandler(logger55, notifier) {
39895
39900
  return async (args, _ctx) => {
39896
39901
  const parsed = RunGraphWorkflowInputSchema.safeParse(args);
39897
39902
  if (!parsed.success) {
@@ -39904,7 +39909,7 @@ function createGraphWorkflowHandler(logger54, notifier) {
39904
39909
  event: "graph_workflow_start",
39905
39910
  workflow: parsed.data.workflow
39906
39911
  });
39907
- const result = await handleRunGraphWorkflow(parsed.data, logger54);
39912
+ const result = await handleRunGraphWorkflow(parsed.data, logger55);
39908
39913
  const succeeded = result.status === "completed";
39909
39914
  notifier.info("run_graph_workflow", {
39910
39915
  event: succeeded ? "graph_workflow_complete" : "graph_workflow_failed",
@@ -39918,22 +39923,22 @@ function createGraphWorkflowHandler(logger54, notifier) {
39918
39923
  };
39919
39924
  }
39920
39925
  function registerRunGraphWorkflowTool(server, deps) {
39921
- const logger54 = deps.logger ?? createLogger({ tool: "run_graph_workflow" });
39926
+ const logger55 = deps.logger ?? createLogger({ tool: "run_graph_workflow" });
39922
39927
  const notifier = deps.notifier ?? createMcpNotifier(server);
39923
- const handler2 = createGraphWorkflowHandler(logger54, notifier);
39928
+ const handler2 = createGraphWorkflowHandler(logger55, notifier);
39924
39929
  const secureHandler = createSecureHandler(handler2, {
39925
39930
  toolName: "run_graph_workflow",
39926
39931
  rateLimiter: deps.rateLimiter,
39927
- logger: logger54
39932
+ logger: logger55
39928
39933
  });
39929
39934
  const timeoutMs = getToolTimeout("run_graph_workflow", deps.security);
39930
- const wrapped = wrapToolWithTimeout("run_graph_workflow", secureHandler, { timeoutMs, logger: logger54 });
39935
+ const wrapped = wrapToolWithTimeout("run_graph_workflow", secureHandler, { timeoutMs, logger: logger55 });
39931
39936
  server.registerTool(
39932
39937
  "run_graph_workflow",
39933
39938
  { description: GRAPH_WORKFLOW_DESCRIPTION, inputSchema: GRAPH_WORKFLOW_SCHEMA },
39934
39939
  toSdkCallback(wrapped)
39935
39940
  );
39936
- logger54.info("Registered run_graph_workflow tool");
39941
+ logger55.info("Registered run_graph_workflow tool");
39937
39942
  }
39938
39943
  function toEventSummary(event) {
39939
39944
  const hasNodeId = "nodeId" in event;
@@ -40485,7 +40490,7 @@ var ExecuteSpecInputSchema = z82.object({
40485
40490
  spec: z82.string().min(1).max(5e4).describe("Markdown specification to execute"),
40486
40491
  dryRun: z82.boolean().optional().default(false).describe("Parse and decompose only")
40487
40492
  });
40488
- function createDryRunResponse(input, logger54) {
40493
+ function createDryRunResponse(input, logger55) {
40489
40494
  const parseResult2 = parseSpec(input.spec);
40490
40495
  if (!parseResult2.ok) {
40491
40496
  return toolError(`Parse error: ${parseResult2.error.message}`);
@@ -40494,14 +40499,14 @@ function createDryRunResponse(input, logger54) {
40494
40499
  if (!dagResult.ok) {
40495
40500
  return toolError(`Decompose error: ${dagResult.error.message}`);
40496
40501
  }
40497
- logger54.info("Dry run completed", {
40502
+ logger55.info("Dry run completed", {
40498
40503
  title: parseResult2.value.title,
40499
40504
  nodes: dagResult.value.nodes.length
40500
40505
  });
40501
40506
  const output2 = { mode: "dry_run", spec: parseResult2.value, dag: dagResult.value };
40502
40507
  return toolSuccess(JSON.stringify(output2, null, 2));
40503
40508
  }
40504
- async function createFullResponse(input, logger54) {
40509
+ async function createFullResponse(input, logger55) {
40505
40510
  const startMs = Date.now();
40506
40511
  const result = await executeSpec(input.spec);
40507
40512
  const durationMs = Date.now() - startMs;
@@ -40511,7 +40516,7 @@ async function createFullResponse(input, logger54) {
40511
40516
  }
40512
40517
  const analysis = analyzeFailures(result.value);
40513
40518
  const satisfaction = result.value.validation.satisfaction;
40514
- logger54.info("Spec execution completed", {
40519
+ logger55.info("Spec execution completed", {
40515
40520
  satisfaction,
40516
40521
  passed: analysis.ok ? analysis.value.passed : false
40517
40522
  });
@@ -40525,24 +40530,24 @@ async function createFullResponse(input, logger54) {
40525
40530
  return toolSuccess(JSON.stringify(output2, null, 2));
40526
40531
  }
40527
40532
  function registerExecuteSpecTool(server, deps) {
40528
- const logger54 = deps.logger ?? createLogger({ tool: "execute_spec" });
40533
+ const logger55 = deps.logger ?? createLogger({ tool: "execute_spec" });
40529
40534
  const handler2 = async (args, _ctx) => {
40530
40535
  const parsed = ExecuteSpecInputSchema.safeParse(args);
40531
40536
  if (!parsed.success) {
40532
40537
  return toolError(`Invalid input: ${formatZodError(parsed.error)}`);
40533
40538
  }
40534
40539
  if (parsed.data.dryRun) {
40535
- return createDryRunResponse(parsed.data, logger54);
40540
+ return createDryRunResponse(parsed.data, logger55);
40536
40541
  }
40537
- return createFullResponse(parsed.data, logger54);
40542
+ return createFullResponse(parsed.data, logger55);
40538
40543
  };
40539
40544
  const secureHandler = createSecureHandler(handler2, {
40540
40545
  toolName: "execute_spec",
40541
40546
  rateLimiter: deps.rateLimiter,
40542
- logger: logger54
40547
+ logger: logger55
40543
40548
  });
40544
40549
  const timeoutMs = getToolTimeout("execute_spec", deps.security);
40545
- const wrapped = wrapToolWithTimeout("execute_spec", secureHandler, { timeoutMs, logger: logger54 });
40550
+ const wrapped = wrapToolWithTimeout("execute_spec", secureHandler, { timeoutMs, logger: logger55 });
40546
40551
  const toolSchema = {
40547
40552
  spec: z82.string().min(1).max(5e4).describe(
40548
40553
  'Markdown specification to execute. Must contain "## Requirements" and "## Acceptance Criteria" sections.'
@@ -40555,7 +40560,7 @@ function registerExecuteSpecTool(server, deps) {
40555
40560
  { description, inputSchema: toolSchema },
40556
40561
  toSdkCallback(wrapped)
40557
40562
  );
40558
- logger54.info("Registered execute_spec tool");
40563
+ logger55.info("Registered execute_spec tool");
40559
40564
  }
40560
40565
  var specLogger = createLogger({ tool: "execute-spec" });
40561
40566
  function recordSpecSuccess(satisfaction, durationMs) {
@@ -40617,29 +40622,29 @@ var MemoryQueryInputSchema = z83.object({
40617
40622
  });
40618
40623
  var reflectionCache;
40619
40624
  var reflectionAdapter;
40620
- function getReflectiveRetriever(logger54) {
40625
+ function getReflectiveRetriever(logger55) {
40621
40626
  const enabled = isReflectiveMemoryEnabled();
40622
40627
  const shadow = isReflectiveShadowMode();
40623
40628
  if (!enabled && !shadow) return void 0;
40624
40629
  if (reflectionAdapter === void 0) {
40625
40630
  try {
40626
- const registry = getGlobalRegistry({ logger: logger54 });
40631
+ const registry = getGlobalRegistry({ logger: logger55 });
40627
40632
  reflectionAdapter = registry.getDefault();
40628
40633
  } catch {
40629
- logger54.warn("No adapter for reflection, using keyword retrieval");
40634
+ logger55.warn("No adapter for reflection, using keyword retrieval");
40630
40635
  return void 0;
40631
40636
  }
40632
40637
  }
40633
40638
  reflectionCache ??= new ReflectionCache();
40634
40639
  return new ReflectiveRetriever({
40635
40640
  adapter: reflectionAdapter,
40636
- logger: logger54,
40641
+ logger: logger55,
40637
40642
  shadowMode: shadow,
40638
40643
  cache: reflectionCache
40639
40644
  });
40640
40645
  }
40641
- async function resolveReflection(query, logger54) {
40642
- const retriever = getReflectiveRetriever(logger54);
40646
+ async function resolveReflection(query, logger55) {
40647
+ const retriever = getReflectiveRetriever(logger55);
40643
40648
  if (retriever === void 0) return { effectiveQuery: query };
40644
40649
  const reflection = await retriever.enhance(query);
40645
40650
  const reflected = reflection.reflected;
@@ -40651,14 +40656,14 @@ async function resolveReflection(query, logger54) {
40651
40656
  reflection
40652
40657
  };
40653
40658
  }
40654
- async function executeMemoryQuery(input, logger54) {
40659
+ async function executeMemoryQuery(input, logger55) {
40655
40660
  const toolMemory = getToolMemory();
40656
40661
  const { effectiveQuery, expandedQuery, reflection } = await resolveReflection(
40657
40662
  input.query,
40658
- logger54
40663
+ logger55
40659
40664
  );
40660
40665
  const results = await toolMemory.queryBySource(input.source, effectiveQuery, input.limit);
40661
- logger54.debug("Memory query executed", {
40666
+ logger55.debug("Memory query executed", {
40662
40667
  query: input.query,
40663
40668
  effectiveQuery: effectiveQuery !== input.query ? effectiveQuery : void 0,
40664
40669
  resultCount: results.length,
@@ -40685,7 +40690,7 @@ async function memoryQueryHandler(args, ctx) {
40685
40690
  });
40686
40691
  }
40687
40692
  function registerMemoryQueryTool(server, deps) {
40688
- const logger54 = deps.logger ?? createLogger({ tool: "memory_query" });
40693
+ const logger55 = deps.logger ?? createLogger({ tool: "memory_query" });
40689
40694
  const toolSchema = {
40690
40695
  query: z83.string().min(1).max(500).describe("Search query to match against memory contents"),
40691
40696
  limit: z83.number().int().min(1).max(50).optional().describe("Maximum results to return (default: 10, max: 50)"),
@@ -40695,16 +40700,16 @@ function registerMemoryQueryTool(server, deps) {
40695
40700
  const secureHandler = createSecureHandler(memoryQueryHandler, {
40696
40701
  toolName: "memory_query",
40697
40702
  rateLimiter: deps.rateLimiter,
40698
- logger: logger54
40703
+ logger: logger55
40699
40704
  });
40700
40705
  const timeoutMs = getToolTimeout("memory_query", deps.security);
40701
- const wrappedHandler = wrapToolWithTimeout("memory_query", secureHandler, { timeoutMs, logger: logger54 });
40706
+ const wrappedHandler = wrapToolWithTimeout("memory_query", secureHandler, { timeoutMs, logger: logger55 });
40702
40707
  server.registerTool(
40703
40708
  "memory_query",
40704
40709
  { description, inputSchema: toolSchema },
40705
40710
  toSdkCallback(wrappedHandler)
40706
40711
  );
40707
- logger54.info("Registered memory_query tool");
40712
+ logger55.info("Registered memory_query tool");
40708
40713
  }
40709
40714
 
40710
40715
  // src/mcp/tools/memory-stats.ts
@@ -40712,7 +40717,7 @@ import { z as z84 } from "zod";
40712
40717
  var MemoryStatsInputSchema = z84.object({
40713
40718
  includeDecay: z84.boolean().optional().default(true).describe("Include decay statistics (default: true)")
40714
40719
  });
40715
- async function collectMemoryStats(input, logger54) {
40720
+ async function collectMemoryStats(input, logger55) {
40716
40721
  const toolMemory = getToolMemory();
40717
40722
  const sessionStats = {
40718
40723
  learningsCount: 0,
@@ -40749,7 +40754,7 @@ async function collectMemoryStats(input, logger54) {
40749
40754
  mobimem: toolMemory.isMobiMemAvailable(),
40750
40755
  decay: toolMemory.isDecayManagerAvailable()
40751
40756
  };
40752
- logger54.debug("Memory stats collected", { backends });
40757
+ logger55.debug("Memory stats collected", { backends });
40753
40758
  return {
40754
40759
  backends,
40755
40760
  session: sessionStats,
@@ -40771,7 +40776,7 @@ async function memoryStatsHandler(args, ctx) {
40771
40776
  });
40772
40777
  }
40773
40778
  function registerMemoryStatsTool(server, deps) {
40774
- const logger54 = deps.logger ?? createLogger({ tool: "memory_stats" });
40779
+ const logger55 = deps.logger ?? createLogger({ tool: "memory_stats" });
40775
40780
  const toolSchema = {
40776
40781
  includeDecay: z84.boolean().optional().describe("Include decay statistics (default: true)")
40777
40782
  };
@@ -40779,16 +40784,16 @@ function registerMemoryStatsTool(server, deps) {
40779
40784
  const secureHandler = createSecureHandler(memoryStatsHandler, {
40780
40785
  toolName: "memory_stats",
40781
40786
  rateLimiter: deps.rateLimiter,
40782
- logger: logger54
40787
+ logger: logger55
40783
40788
  });
40784
40789
  const timeoutMs = getToolTimeout("memory_stats", deps.security);
40785
- const wrappedHandler = wrapToolWithTimeout("memory_stats", secureHandler, { timeoutMs, logger: logger54 });
40790
+ const wrappedHandler = wrapToolWithTimeout("memory_stats", secureHandler, { timeoutMs, logger: logger55 });
40786
40791
  server.registerTool(
40787
40792
  "memory_stats",
40788
40793
  { description, inputSchema: toolSchema },
40789
40794
  toSdkCallback(wrappedHandler)
40790
40795
  );
40791
- logger54.info("Registered memory_stats tool");
40796
+ logger55.info("Registered memory_stats tool");
40792
40797
  }
40793
40798
 
40794
40799
  // src/mcp/tools/memory-write.ts
@@ -40877,12 +40882,12 @@ function isDuplicateWrite(key, content) {
40877
40882
  recentWriteKeys.set(cacheKey, (/* @__PURE__ */ new Date()).toISOString());
40878
40883
  return false;
40879
40884
  }
40880
- async function executeMemoryWrite(input, logger54) {
40885
+ async function executeMemoryWrite(input, logger55) {
40881
40886
  if (isDuplicateWrite(input.key, input.content)) {
40882
- logger54.debug("Skipping duplicate memory write", { key: input.key, backend: input.backend });
40887
+ logger55.debug("Skipping duplicate memory write", { key: input.key, backend: input.backend });
40883
40888
  return { success: true, backend: input.backend, key: input.key, deduplicated: true };
40884
40889
  }
40885
- logger54.debug("Writing to memory", {
40890
+ logger55.debug("Writing to memory", {
40886
40891
  backend: input.backend,
40887
40892
  key: input.key,
40888
40893
  contentLength: input.content.length
@@ -40914,7 +40919,7 @@ async function memoryWriteHandler(args, ctx) {
40914
40919
  });
40915
40920
  }
40916
40921
  function registerMemoryWriteTool(server, deps) {
40917
- const logger54 = deps.logger ?? createLogger({ tool: "memory_write" });
40922
+ const logger55 = deps.logger ?? createLogger({ tool: "memory_write" });
40918
40923
  const toolSchema = {
40919
40924
  key: z85.string().min(1).max(200).describe("Memory identifier or subject"),
40920
40925
  content: z85.string().min(1).max(5e3).describe("Memory content to store"),
@@ -40928,16 +40933,16 @@ function registerMemoryWriteTool(server, deps) {
40928
40933
  const secureHandler = createSecureHandler(memoryWriteHandler, {
40929
40934
  toolName: "memory_write",
40930
40935
  rateLimiter: deps.rateLimiter,
40931
- logger: logger54
40936
+ logger: logger55
40932
40937
  });
40933
40938
  const timeoutMs = getToolTimeout("memory_write", deps.security);
40934
- const wrappedHandler = wrapToolWithTimeout("memory_write", secureHandler, { timeoutMs, logger: logger54 });
40939
+ const wrappedHandler = wrapToolWithTimeout("memory_write", secureHandler, { timeoutMs, logger: logger55 });
40935
40940
  server.registerTool(
40936
40941
  "memory_write",
40937
40942
  { description, inputSchema: toolSchema },
40938
40943
  toSdkCallback(wrappedHandler)
40939
40944
  );
40940
- logger54.info("Registered memory_write tool");
40945
+ logger55.info("Registered memory_write tool");
40941
40946
  }
40942
40947
 
40943
40948
  // src/mcp/tools/weather-report-tool.ts
@@ -40982,7 +40987,7 @@ function weatherReportHandler(args, ctx) {
40982
40987
  }
40983
40988
  }
40984
40989
  function registerWeatherReportTool(server, deps) {
40985
- const logger54 = deps.logger ?? createLogger({ tool: "weather_report" });
40990
+ const logger55 = deps.logger ?? createLogger({ tool: "weather_report" });
40986
40991
  const toolSchema = {
40987
40992
  cli: z86.enum(["claude", "gemini", "codex", "opencode"]).optional().describe("Filter by CLI"),
40988
40993
  category: z86.enum([
@@ -41003,19 +41008,19 @@ function registerWeatherReportTool(server, deps) {
41003
41008
  const secureHandler = createSecureHandler(weatherReportHandler, {
41004
41009
  toolName: "weather_report",
41005
41010
  rateLimiter: deps.rateLimiter,
41006
- logger: logger54
41011
+ logger: logger55
41007
41012
  });
41008
41013
  const timeoutMs = getToolTimeout("weather_report", deps.security);
41009
41014
  const wrappedHandler = wrapToolWithTimeout("weather_report", secureHandler, {
41010
41015
  timeoutMs,
41011
- logger: logger54
41016
+ logger: logger55
41012
41017
  });
41013
41018
  server.registerTool(
41014
41019
  "weather_report",
41015
41020
  { description, inputSchema: toolSchema },
41016
41021
  toSdkCallback(wrappedHandler)
41017
41022
  );
41018
- logger54.info("Registered weather_report tool");
41023
+ logger55.info("Registered weather_report tool");
41019
41024
  }
41020
41025
 
41021
41026
  // src/mcp/tools/registry-import-types.ts
@@ -41133,7 +41138,7 @@ function registryImportHandler(args, ctx) {
41133
41138
  }
41134
41139
  }
41135
41140
  function registerRegistryImportTool(server, deps) {
41136
- const logger54 = deps.logger ?? createLogger({ tool: "registry_import" });
41141
+ const logger55 = deps.logger ?? createLogger({ tool: "registry_import" });
41137
41142
  const toolSchema = {
41138
41143
  provider: z88.enum(["anthropic", "google", "openai"]).describe("Model provider (anthropic, google, openai)"),
41139
41144
  modelId: z88.string().min(1).describe("Provider model identifier"),
@@ -41143,19 +41148,19 @@ function registerRegistryImportTool(server, deps) {
41143
41148
  const secureHandler = createSecureHandler(registryImportHandler, {
41144
41149
  toolName: "registry_import",
41145
41150
  rateLimiter: deps.rateLimiter,
41146
- logger: logger54
41151
+ logger: logger55
41147
41152
  });
41148
41153
  const timeoutMs = getToolTimeout("registry_import", deps.security);
41149
41154
  const wrappedHandler = wrapToolWithTimeout("registry_import", secureHandler, {
41150
41155
  timeoutMs,
41151
- logger: logger54
41156
+ logger: logger55
41152
41157
  });
41153
41158
  server.registerTool(
41154
41159
  "registry_import",
41155
41160
  { description, inputSchema: toolSchema },
41156
41161
  toSdkCallback(wrappedHandler)
41157
41162
  );
41158
- logger54.info("Registered registry_import tool");
41163
+ logger55.info("Registered registry_import tool");
41159
41164
  }
41160
41165
 
41161
41166
  // src/mcp/tools/repo-analyze-types.ts
@@ -41185,7 +41190,7 @@ async function repoAnalyzeHandler(args, ctx) {
41185
41190
  }
41186
41191
  }
41187
41192
  function registerRepoAnalyzeTool(server, deps) {
41188
- const logger54 = deps.logger ?? createLogger({ tool: "repo_analyze" });
41193
+ const logger55 = deps.logger ?? createLogger({ tool: "repo_analyze" });
41189
41194
  const toolSchema = {
41190
41195
  repo: z90.string().min(1).describe('GitHub repository in "owner/name" format or full URL'),
41191
41196
  depth: z90.enum(["shallow", "deep"]).optional().describe("Analysis depth: shallow (tree + README) or deep")
@@ -41194,19 +41199,19 @@ function registerRepoAnalyzeTool(server, deps) {
41194
41199
  const secureHandler = createSecureHandler(repoAnalyzeHandler, {
41195
41200
  toolName: "repo_analyze",
41196
41201
  rateLimiter: deps.rateLimiter,
41197
- logger: logger54
41202
+ logger: logger55
41198
41203
  });
41199
41204
  const timeoutMs = getToolTimeout("repo_analyze", deps.security);
41200
41205
  const wrappedHandler = wrapToolWithTimeout("repo_analyze", secureHandler, {
41201
41206
  timeoutMs,
41202
- logger: logger54
41207
+ logger: logger55
41203
41208
  });
41204
41209
  server.registerTool(
41205
41210
  "repo_analyze",
41206
41211
  { description, inputSchema: toolSchema },
41207
41212
  toSdkCallback(wrappedHandler)
41208
41213
  );
41209
- logger54.info("Registered repo_analyze tool");
41214
+ logger55.info("Registered repo_analyze tool");
41210
41215
  }
41211
41216
 
41212
41217
  // src/mcp/tools/repo-security-plan-types.ts
@@ -41235,7 +41240,7 @@ async function handler(args, ctx) {
41235
41240
  }
41236
41241
  }
41237
41242
  function registerRepoSecurityPlanTool(server, deps) {
41238
- const logger54 = deps.logger ?? createLogger({ tool: "repo_security_plan" });
41243
+ const logger55 = deps.logger ?? createLogger({ tool: "repo_security_plan" });
41239
41244
  const toolSchema = {
41240
41245
  repo: z92.string().min(1).describe('GitHub repository in "owner/name" format or full URL'),
41241
41246
  categories: z92.array(z92.string().max(50)).max(10).optional().describe('Filter to specific categories (e.g., ["sast", "sca", "secrets"])'),
@@ -41245,19 +41250,19 @@ function registerRepoSecurityPlanTool(server, deps) {
41245
41250
  const secureHandler = createSecureHandler(handler, {
41246
41251
  toolName: "repo_security_plan",
41247
41252
  rateLimiter: deps.rateLimiter,
41248
- logger: logger54
41253
+ logger: logger55
41249
41254
  });
41250
41255
  const timeoutMs = getToolTimeout("repo_security_plan", deps.security);
41251
41256
  const wrappedHandler = wrapToolWithTimeout("repo_security_plan", secureHandler, {
41252
41257
  timeoutMs,
41253
- logger: logger54
41258
+ logger: logger55
41254
41259
  });
41255
41260
  server.registerTool(
41256
41261
  "repo_security_plan",
41257
41262
  { description, inputSchema: toolSchema },
41258
41263
  toSdkCallback(wrappedHandler)
41259
41264
  );
41260
- logger54.info("Registered repo_security_plan tool");
41265
+ logger55.info("Registered repo_security_plan tool");
41261
41266
  }
41262
41267
 
41263
41268
  // src/mcp/tools/search-codebase-tool.ts
@@ -41338,7 +41343,7 @@ ${output2}`);
41338
41343
  }
41339
41344
  }
41340
41345
  function registerSearchCodebaseTool(server, deps) {
41341
- const logger54 = deps.logger ?? createLogger({ tool: "search_codebase" });
41346
+ const logger55 = deps.logger ?? createLogger({ tool: "search_codebase" });
41342
41347
  const toolSchema = {
41343
41348
  query: z93.string().min(1).max(200).describe("Search query or file path"),
41344
41349
  directory: z93.string().max(500).optional().describe("Directory to index"),
@@ -41349,16 +41354,16 @@ function registerSearchCodebaseTool(server, deps) {
41349
41354
  const secureHandler = createSecureHandler(searchCodebaseHandler, {
41350
41355
  toolName: "search_codebase",
41351
41356
  rateLimiter: deps.rateLimiter,
41352
- logger: logger54
41357
+ logger: logger55
41353
41358
  });
41354
41359
  const timeoutMs = getToolTimeout("search_codebase", deps.security);
41355
- const wrapped = wrapToolWithTimeout("search_codebase", secureHandler, { timeoutMs, logger: logger54 });
41360
+ const wrapped = wrapToolWithTimeout("search_codebase", secureHandler, { timeoutMs, logger: logger55 });
41356
41361
  server.registerTool(
41357
41362
  "search_codebase",
41358
41363
  { description, inputSchema: toolSchema },
41359
41364
  toSdkCallback(wrapped)
41360
41365
  );
41361
- logger54.info("Registered search_codebase tool");
41366
+ logger55.info("Registered search_codebase tool");
41362
41367
  }
41363
41368
 
41364
41369
  // src/mcp/tools/extract-symbols-tool.ts
@@ -41416,7 +41421,7 @@ async function extractSymbolsHandler(args, ctx) {
41416
41421
  }
41417
41422
  }
41418
41423
  function registerExtractSymbolsTool(server, deps) {
41419
- const logger54 = deps.logger ?? createLogger({ tool: "extract_symbols" });
41424
+ const logger55 = deps.logger ?? createLogger({ tool: "extract_symbols" });
41420
41425
  const toolSchema = {
41421
41426
  filePath: z94.string().min(1).max(500).describe("Path to TypeScript/JavaScript file"),
41422
41427
  mode: z94.enum(["index", "full"]).optional().describe("index (default): names+lines. full: includes source text")
@@ -41425,19 +41430,19 @@ function registerExtractSymbolsTool(server, deps) {
41425
41430
  const secureHandler = createSecureHandler(extractSymbolsHandler, {
41426
41431
  toolName: "extract_symbols",
41427
41432
  rateLimiter: deps.rateLimiter,
41428
- logger: logger54
41433
+ logger: logger55
41429
41434
  });
41430
41435
  const timeoutMs = getToolTimeout("extract_symbols", deps.security);
41431
41436
  const wrapped = wrapToolWithTimeout("extract_symbols", secureHandler, {
41432
41437
  timeoutMs,
41433
- logger: logger54
41438
+ logger: logger55
41434
41439
  });
41435
41440
  server.registerTool(
41436
41441
  "extract_symbols",
41437
41442
  { description, inputSchema: toolSchema },
41438
41443
  toSdkCallback(wrapped)
41439
41444
  );
41440
- logger54.info("Registered extract_symbols tool");
41445
+ logger55.info("Registered extract_symbols tool");
41441
41446
  }
41442
41447
 
41443
41448
  // src/mcp/tools/query-trace-tool.ts
@@ -41535,7 +41540,7 @@ function queryTraceHandler(args, ctx) {
41535
41540
  });
41536
41541
  }
41537
41542
  function registerQueryTraceTool(server, deps) {
41538
- const logger54 = deps.logger ?? createLogger({ tool: "query_trace" });
41543
+ const logger55 = deps.logger ?? createLogger({ tool: "query_trace" });
41539
41544
  const toolSchema = {
41540
41545
  runId: z95.string().min(1).max(128).regex(/^[a-zA-Z0-9_-]+$/, "runId must be alphanumeric, hyphens, or underscores").describe("Run ID to query traces for"),
41541
41546
  eventType: z95.string().max(100).regex(/^[a-zA-Z0-9._-]+$/).optional().describe("Filter by event type (e.g., model.called)"),
@@ -41545,16 +41550,16 @@ function registerQueryTraceTool(server, deps) {
41545
41550
  const secureHandler = createSecureHandler(queryTraceHandler, {
41546
41551
  toolName: "query_trace",
41547
41552
  rateLimiter: deps.rateLimiter,
41548
- logger: logger54
41553
+ logger: logger55
41549
41554
  });
41550
41555
  const timeoutMs = getToolTimeout("query_trace", deps.security);
41551
- const wrappedHandler = wrapToolWithTimeout("query_trace", secureHandler, { timeoutMs, logger: logger54 });
41556
+ const wrappedHandler = wrapToolWithTimeout("query_trace", secureHandler, { timeoutMs, logger: logger55 });
41552
41557
  server.registerTool(
41553
41558
  "query_trace",
41554
41559
  { description, inputSchema: toolSchema },
41555
41560
  toSdkCallback(wrappedHandler)
41556
41561
  );
41557
- logger54.info("Registered query_trace tool");
41562
+ logger55.info("Registered query_trace tool");
41558
41563
  }
41559
41564
 
41560
41565
  // src/pipeline/stage-types.ts
@@ -44017,7 +44022,7 @@ function queryTaskStateHandler(args, ctx) {
44017
44022
  return Promise.resolve(toolSuccess(JSON.stringify(response, null, 2)));
44018
44023
  }
44019
44024
  function registerQueryTaskStateTool(server, deps) {
44020
- const logger54 = deps.logger ?? createLogger({ tool: "query_task_state" });
44025
+ const logger55 = deps.logger ?? createLogger({ tool: "query_task_state" });
44021
44026
  const toolSchema = {
44022
44027
  taskId: z100.string().min(1).max(128).describe("Task ID whose structured state log should be read")
44023
44028
  };
@@ -44025,19 +44030,19 @@ function registerQueryTaskStateTool(server, deps) {
44025
44030
  const secureHandler = createSecureHandler(queryTaskStateHandler, {
44026
44031
  toolName: "query_task_state",
44027
44032
  rateLimiter: deps.rateLimiter,
44028
- logger: logger54
44033
+ logger: logger55
44029
44034
  });
44030
44035
  const timeoutMs = getToolTimeout("query_task_state", deps.security);
44031
44036
  const wrappedHandler = wrapToolWithTimeout("query_task_state", secureHandler, {
44032
44037
  timeoutMs,
44033
- logger: logger54
44038
+ logger: logger55
44034
44039
  });
44035
44040
  server.registerTool(
44036
44041
  "query_task_state",
44037
44042
  { description, inputSchema: toolSchema },
44038
44043
  toSdkCallback(wrappedHandler)
44039
44044
  );
44040
- logger54.info("Registered query_task_state tool");
44045
+ logger55.info("Registered query_task_state tool");
44041
44046
  }
44042
44047
 
44043
44048
  // src/mcp/tools/pipeline-tool.ts
@@ -44521,9 +44526,9 @@ function wrapWithObservability(toolName, cb, eventBus) {
44521
44526
 
44522
44527
  // src/mcp/tools/index.ts
44523
44528
  function registerTools(server, options) {
44524
- const logger54 = options?.logger ?? createMcpLogger({ component: "tools" });
44525
- const rateLimiter = options?.rateLimiter ?? createDefaultRateLimiter("mcp-tools", logger54);
44526
- logger54.info("Tool registration infrastructure initialized");
44529
+ const logger55 = options?.logger ?? createMcpLogger({ component: "tools" });
44530
+ const rateLimiter = options?.rateLimiter ?? createDefaultRateLimiter("mcp-tools", logger55);
44531
+ logger55.info("Tool registration infrastructure initialized");
44527
44532
  void server;
44528
44533
  return {
44529
44534
  tools: [
@@ -44559,7 +44564,7 @@ function registerTools(server, options) {
44559
44564
  "run_dev_pipeline",
44560
44565
  "run_pipeline"
44561
44566
  ],
44562
- logger: logger54,
44567
+ logger: logger55,
44563
44568
  rateLimiter
44564
44569
  };
44565
44570
  }
@@ -44572,32 +44577,32 @@ var TIER_NAMES = {
44572
44577
  };
44573
44578
  function createGateway(config = {}) {
44574
44579
  const enabled = config.enabled !== false;
44575
- const logger54 = config.logger ?? createLogger({ component: "gateway" });
44580
+ const logger55 = config.logger ?? createLogger({ component: "gateway" });
44576
44581
  const overrides = config.tierOverrides;
44577
44582
  return {
44578
44583
  enabled,
44579
44584
  wrapTool(toolName, handler2) {
44580
44585
  if (!enabled) return handler2;
44581
- return createGatewayHandler(toolName, handler2, logger54, overrides);
44586
+ return createGatewayHandler(toolName, handler2, logger55, overrides);
44582
44587
  }
44583
44588
  };
44584
44589
  }
44585
- function createGatewayHandler(toolName, handler2, logger54, overrides) {
44590
+ function createGatewayHandler(toolName, handler2, logger55, overrides) {
44586
44591
  return async (args) => {
44587
44592
  const params = asRecord2(args);
44588
44593
  const tier = classifyRequestTier(toolName, params, overrides);
44589
44594
  const tierName = TIER_NAMES[tier];
44590
44595
  const startMs = getTimeProvider().now();
44591
- logger54.debug("Gateway dispatch", { tool: toolName, tier, tierName });
44596
+ logger55.debug("Gateway dispatch", { tool: toolName, tier, tierName });
44592
44597
  try {
44593
44598
  const result = await handler2(args);
44594
44599
  const durationMs = getTimeProvider().now() - startMs;
44595
44600
  const success = result.isError !== true;
44596
44601
  const entry = { tool: toolName, tier, tierName, durationMs, success };
44597
44602
  if (success) {
44598
- logger54.info("Gateway completed", { ...entry });
44603
+ logger55.info("Gateway completed", { ...entry });
44599
44604
  } else {
44600
- logger54.warn("Gateway completed with error", { ...entry });
44605
+ logger55.warn("Gateway completed with error", { ...entry });
44601
44606
  }
44602
44607
  return result;
44603
44608
  } catch (error) {
@@ -44609,7 +44614,7 @@ function createGatewayHandler(toolName, handler2, logger54, overrides) {
44609
44614
  durationMs,
44610
44615
  success: false
44611
44616
  };
44612
- logger54.error("Gateway handler threw", error instanceof Error ? error : void 0, {
44617
+ logger55.error("Gateway handler threw", error instanceof Error ? error : void 0, {
44613
44618
  ...entry
44614
44619
  });
44615
44620
  throw error;
@@ -47042,7 +47047,7 @@ var FileAuditStorage = class _FileAuditStorage {
47042
47047
  * @param logger - Optional logger instance
47043
47048
  * @returns Result with FileAuditStorage or SecurityError
47044
47049
  */
47045
- static create(config, logger54) {
47050
+ static create(config, logger55) {
47046
47051
  const validation = config.allowedRoot !== void 0 ? validateLogDir(config.logDir, config.allowedRoot) : validateLogDirBasic(config.logDir);
47047
47052
  if (!validation.ok) {
47048
47053
  return { ok: false, error: validation.error };
@@ -47051,7 +47056,7 @@ var FileAuditStorage = class _FileAuditStorage {
47051
47056
  ...config,
47052
47057
  logDir: validation.value
47053
47058
  };
47054
- return { ok: true, value: new _FileAuditStorage(validatedConfig, logger54, true) };
47059
+ return { ok: true, value: new _FileAuditStorage(validatedConfig, logger55, true) };
47055
47060
  }
47056
47061
  /**
47057
47062
  * Constructor for FileAuditStorage.
@@ -47064,8 +47069,8 @@ var FileAuditStorage = class _FileAuditStorage {
47064
47069
  * @param skipValidation - Internal flag, set by create() after validation
47065
47070
  * @throws SecurityError if path validation fails and skipValidation is false
47066
47071
  */
47067
- constructor(config, logger54, skipValidation = false) {
47068
- this.logger = logger54 ?? createLogger({ component: "FileAuditStorage" });
47072
+ constructor(config, logger55, skipValidation = false) {
47073
+ this.logger = logger55 ?? createLogger({ component: "FileAuditStorage" });
47069
47074
  if (!skipValidation) {
47070
47075
  const validation = validateLogDirBasic(config.logDir);
47071
47076
  if (!validation.ok) {
@@ -47246,13 +47251,13 @@ var AuditLogger = class {
47246
47251
  flushTimer = null;
47247
47252
  flushIntervalMs;
47248
47253
  closed = false;
47249
- constructor(config, storage, logger54) {
47254
+ constructor(config, storage, logger55) {
47250
47255
  const validated = AuditLogConfigSchema.safeParse(config);
47251
47256
  if (!validated.success) {
47252
47257
  const issues = validated.error.issues.map((i) => i.path.join(".") + ": " + i.message).join("; ");
47253
47258
  throw new AuditError("Invalid AuditLogConfig: " + issues);
47254
47259
  }
47255
- this.logger = logger54 ?? createLogger({ component: "AuditLogger" });
47260
+ this.logger = logger55 ?? createLogger({ component: "AuditLogger" });
47256
47261
  this.enableHashChain = validated.data.enableHashChain;
47257
47262
  this.minSeverity = validated.data.minSeverity;
47258
47263
  this.categories = validated.data.categories;
@@ -47425,8 +47430,8 @@ var AuditLogger = class {
47425
47430
  this.logger.info("AuditLogger closed");
47426
47431
  }
47427
47432
  };
47428
- function createAuditLogger(config, storage, logger54) {
47429
- return new AuditLogger(config, storage, logger54);
47433
+ function createAuditLogger(config, storage, logger55) {
47434
+ return new AuditLogger(config, storage, logger55);
47430
47435
  }
47431
47436
 
47432
47437
  // src/security/sandbox/sandbox-types.ts
@@ -49824,6 +49829,73 @@ function createMockExecutor(responses) {
49824
49829
  };
49825
49830
  }
49826
49831
 
49832
+ // src/swe-bench/harness-verify-adapter.ts
49833
+ var logger51 = createLogger({ component: "harness-verify-adapter" });
49834
+ function translateEvaluationResult(result) {
49835
+ const stderr = buildStderr(result);
49836
+ const stdout = buildStdout(result);
49837
+ return {
49838
+ passed: result.resolved,
49839
+ stderr,
49840
+ stdout
49841
+ };
49842
+ }
49843
+ function buildStderr(result) {
49844
+ if (!result.patchApplied) {
49845
+ return `patch does not apply: ${result.patchError ?? "unknown error"}`;
49846
+ }
49847
+ if (result.status === "timeout") {
49848
+ return `Test run timed out after ${String(result.durationMs)}ms`;
49849
+ }
49850
+ if (result.status === "error") {
49851
+ return `Runtime error during evaluation: ${result.patchError ?? "unknown"}`;
49852
+ }
49853
+ const failed = result.testResults.filter((t) => t.status === "failed");
49854
+ if (failed.length === 0) return "";
49855
+ const lines = failed.slice(0, 20).map((t) => `FAILED ${t.testName}${t.errorMessage !== void 0 ? `: ${t.errorMessage}` : ""}`);
49856
+ return lines.join("\n");
49857
+ }
49858
+ function buildStdout(result) {
49859
+ const summary = [
49860
+ `Instance: ${result.instanceId}`,
49861
+ `Status: ${result.status}`,
49862
+ `Patch applied: ${String(result.patchApplied)}`,
49863
+ `Tests: ${String(result.testsPassed)}/${String(result.testsTotal)} passed`,
49864
+ `Duration: ${String(result.durationMs)}ms`
49865
+ ];
49866
+ if (result.testsFailed > 0) summary.push(`Failed: ${String(result.testsFailed)}`);
49867
+ return summary.join("\n");
49868
+ }
49869
+ var HarnessVerifyAdapter = class {
49870
+ constructor(harness, modelNameOrPath, evalConfig) {
49871
+ this.harness = harness;
49872
+ this.modelNameOrPath = modelNameOrPath;
49873
+ this.evalConfig = evalConfig;
49874
+ }
49875
+ async verify(instance2, patch, _workDir) {
49876
+ const prediction = {
49877
+ instance_id: instance2.instance_id,
49878
+ model_name_or_path: this.modelNameOrPath,
49879
+ model_patch: patch
49880
+ };
49881
+ try {
49882
+ const result = await this.harness.evaluateInstance(prediction, this.evalConfig);
49883
+ return translateEvaluationResult(result);
49884
+ } catch (cause) {
49885
+ const msg = cause instanceof Error ? cause.message : String(cause);
49886
+ logger51.warn("Harness verify failed, treating as unresolved", {
49887
+ instanceId: instance2.instance_id,
49888
+ error: msg
49889
+ });
49890
+ return {
49891
+ passed: false,
49892
+ stderr: `Harness evaluation failed: ${msg}`,
49893
+ stdout: ""
49894
+ };
49895
+ }
49896
+ }
49897
+ };
49898
+
49827
49899
  // src/swe-bench/nexus-agent-executor.ts
49828
49900
  var EXECUTOR_DEFAULTS = {
49829
49901
  modelId: getCliModelName(getDefaultModelForCli("claude")),
@@ -50841,8 +50913,8 @@ async function safeExec(command, timeoutMs = COMMAND_TIMEOUT_MS) {
50841
50913
  function bytesToGB(bytes) {
50842
50914
  return (bytes / BYTES_PER_GB).toFixed(1);
50843
50915
  }
50844
- async function validatePython(logger54) {
50845
- const log3 = logger54 ?? createLogger({ component: "environment-validator" });
50916
+ async function validatePython(logger55) {
50917
+ const log3 = logger55 ?? createLogger({ component: "environment-validator" });
50846
50918
  const pythonCommands = ["python3", "python3.11", "python3.10", "python"];
50847
50919
  for (const cmd of pythonCommands) {
50848
50920
  const result = await safeExec(`${cmd} --version`);
@@ -50866,8 +50938,8 @@ async function validatePython(logger54) {
50866
50938
  log3.warn("No compatible Python found (need 3.10 or 3.11)");
50867
50939
  return { available: false };
50868
50940
  }
50869
- async function validateSwebench(logger54) {
50870
- const log3 = logger54 ?? createLogger({ component: "environment-validator" });
50941
+ async function validateSwebench(logger55) {
50942
+ const log3 = logger55 ?? createLogger({ component: "environment-validator" });
50871
50943
  const result = await safeExec('python3 -c "import swebench; print(swebench.__version__)"');
50872
50944
  const importVersion = result?.stdout.trim();
50873
50945
  if (importVersion !== void 0 && importVersion !== "") {
@@ -50887,8 +50959,8 @@ async function validateSwebench(logger54) {
50887
50959
  log3.warn("swebench package not found");
50888
50960
  return { installed: false };
50889
50961
  }
50890
- async function validateDocker(logger54) {
50891
- const log3 = logger54 ?? createLogger({ component: "environment-validator" });
50962
+ async function validateDocker(logger55) {
50963
+ const log3 = logger55 ?? createLogger({ component: "environment-validator" });
50892
50964
  const versionResult = await safeExec('docker version --format "{{.Server.Version}}"');
50893
50965
  if (!versionResult) {
50894
50966
  log3.warn("Docker not available or daemon not running");
@@ -50911,8 +50983,8 @@ async function validateDocker(logger54) {
50911
50983
  log3.warn("Docker daemon not running");
50912
50984
  return { running: false };
50913
50985
  }
50914
- async function validateDiskSpace(logger54) {
50915
- const log3 = logger54 ?? createLogger({ component: "environment-validator" });
50986
+ async function validateDiskSpace(logger55) {
50987
+ const log3 = logger55 ?? createLogger({ component: "environment-validator" });
50916
50988
  const result = await safeExec("df -B1 . | tail -1");
50917
50989
  if (!result) {
50918
50990
  log3.warn("Could not determine disk space");
@@ -50963,8 +51035,8 @@ function collectWarnings(diskSpace) {
50963
51035
  }
50964
51036
 
50965
51037
  // src/swe-bench/environment-validator.ts
50966
- async function validateEnvironment(logger54) {
50967
- const log3 = logger54 ?? createLogger({ component: "environment-validator" });
51038
+ async function validateEnvironment(logger55) {
51039
+ const log3 = logger55 ?? createLogger({ component: "environment-validator" });
50968
51040
  log3.info("Validating SWE-bench environment");
50969
51041
  const [python, swebench, docker, diskSpace] = await Promise.all([
50970
51042
  validatePython(log3),
@@ -51092,7 +51164,7 @@ function mapResolutionStatus(raw) {
51092
51164
  import { exec as exec2 } from "child_process";
51093
51165
  import { promisify as promisify6 } from "util";
51094
51166
  var execAsync2 = promisify6(exec2);
51095
- async function getSwebenchVersion(logger54) {
51167
+ async function getSwebenchVersion(logger55) {
51096
51168
  try {
51097
51169
  const result = await execAsync2(
51098
51170
  `${PYTHON_COMMAND} -c "import swebench; print(swebench.__version__)"`,
@@ -51100,15 +51172,15 @@ async function getSwebenchVersion(logger54) {
51100
51172
  );
51101
51173
  const version = result.stdout.trim();
51102
51174
  if (version) {
51103
- logger54?.debug("swebench version detected", { version });
51175
+ logger55?.debug("swebench version detected", { version });
51104
51176
  return version;
51105
51177
  }
51106
51178
  } catch (err2) {
51107
- logger54?.debug("Failed to get swebench version", { error: String(err2) });
51179
+ logger55?.debug("Failed to get swebench version", { error: String(err2) });
51108
51180
  }
51109
51181
  return null;
51110
51182
  }
51111
- async function getPythonVersion(logger54) {
51183
+ async function getPythonVersion(logger55) {
51112
51184
  try {
51113
51185
  const result = await execAsync2(`${PYTHON_COMMAND} --version`, {
51114
51186
  timeout: QUICK_COMMAND_TIMEOUT_MS,
@@ -51116,15 +51188,15 @@ async function getPythonVersion(logger54) {
51116
51188
  });
51117
51189
  const match = result.stdout.trim().match(/Python\s+(\d+\.\d+\.\d+)/);
51118
51190
  if (match?.[1] !== void 0) {
51119
- logger54?.debug("Python version detected", { version: match[1] });
51191
+ logger55?.debug("Python version detected", { version: match[1] });
51120
51192
  return match[1];
51121
51193
  }
51122
51194
  } catch (err2) {
51123
- logger54?.debug("Failed to get Python version", { error: String(err2) });
51195
+ logger55?.debug("Failed to get Python version", { error: String(err2) });
51124
51196
  }
51125
51197
  return null;
51126
51198
  }
51127
- async function getDockerVersion(logger54) {
51199
+ async function getDockerVersion(logger55) {
51128
51200
  try {
51129
51201
  const result = await execAsync2('docker version --format "{{.Server.Version}}"', {
51130
51202
  timeout: QUICK_COMMAND_TIMEOUT_MS,
@@ -51132,27 +51204,27 @@ async function getDockerVersion(logger54) {
51132
51204
  });
51133
51205
  const version = result.stdout.trim();
51134
51206
  if (version) {
51135
- logger54?.debug("Docker version detected", { version });
51207
+ logger55?.debug("Docker version detected", { version });
51136
51208
  return version;
51137
51209
  }
51138
51210
  } catch (err2) {
51139
- logger54?.debug("Failed to get Docker version", { error: String(err2) });
51211
+ logger55?.debug("Failed to get Docker version", { error: String(err2) });
51140
51212
  }
51141
51213
  return null;
51142
51214
  }
51143
51215
 
51144
51216
  // src/swe-bench/harness-output-parsing.ts
51145
51217
  import * as fs12 from "fs/promises";
51146
- function parseHarnessOutput(output2, logger54) {
51218
+ function parseHarnessOutput(output2, logger55) {
51147
51219
  try {
51148
51220
  const parsed = JSON.parse(output2);
51149
51221
  if (!isValidHarnessOutput(parsed)) {
51150
- logger54?.warn("Invalid harness output structure");
51222
+ logger55?.warn("Invalid harness output structure");
51151
51223
  return null;
51152
51224
  }
51153
51225
  return parsed;
51154
51226
  } catch (err2) {
51155
- logger54?.warn("Failed to parse harness output", { error: String(err2) });
51227
+ logger55?.warn("Failed to parse harness output", { error: String(err2) });
51156
51228
  return null;
51157
51229
  }
51158
51230
  }
@@ -51161,12 +51233,12 @@ function isValidHarnessOutput(obj) {
51161
51233
  const o = obj;
51162
51234
  return typeof o.run_id === "string" && typeof o.dataset_name === "string" && typeof o.model_name_or_path === "string" && Array.isArray(o.instance_results);
51163
51235
  }
51164
- async function parseHarnessLogFile(logPath, logger54) {
51236
+ async function parseHarnessLogFile(logPath, logger55) {
51165
51237
  try {
51166
51238
  const content = await fs12.readFile(logPath, "utf-8");
51167
- return parseHarnessOutput(content, logger54);
51239
+ return parseHarnessOutput(content, logger55);
51168
51240
  } catch (err2) {
51169
- logger54?.warn("Failed to read harness log file", { logPath, error: String(err2) });
51241
+ logger55?.warn("Failed to read harness log file", { logPath, error: String(err2) });
51170
51242
  return null;
51171
51243
  }
51172
51244
  }
@@ -51286,7 +51358,7 @@ function countValidPredictions(content) {
51286
51358
  const lines = content.trim().split("\n").filter(Boolean);
51287
51359
  return lines.filter(isValidPredictionLine).length;
51288
51360
  }
51289
- async function validatePredictionsFile(predictionsPath, logger54) {
51361
+ async function validatePredictionsFile(predictionsPath, logger55) {
51290
51362
  try {
51291
51363
  const stat5 = await fs13.stat(predictionsPath);
51292
51364
  if (!stat5.isFile()) {
@@ -51297,19 +51369,19 @@ async function validatePredictionsFile(predictionsPath, logger54) {
51297
51369
  if (validCount === 0) {
51298
51370
  return { valid: false, lineCount: 0, error: "No valid predictions found" };
51299
51371
  }
51300
- logger54?.debug("Predictions file validated", { lineCount: validCount, path: predictionsPath });
51372
+ logger55?.debug("Predictions file validated", { lineCount: validCount, path: predictionsPath });
51301
51373
  return { valid: true, lineCount: validCount };
51302
51374
  } catch (err2) {
51303
51375
  const errorMsg = err2 instanceof Error ? err2.message : String(err2);
51304
51376
  return { valid: false, lineCount: 0, error: errorMsg };
51305
51377
  }
51306
51378
  }
51307
- async function ensureOutputDir(outputDir, logger54) {
51379
+ async function ensureOutputDir(outputDir, logger55) {
51308
51380
  try {
51309
51381
  await fs13.mkdir(outputDir, { recursive: true });
51310
- logger54?.debug("Output directory ensured", { path: outputDir });
51382
+ logger55?.debug("Output directory ensured", { path: outputDir });
51311
51383
  } catch (err2) {
51312
- logger54?.warn("Failed to create output directory", { path: outputDir, error: String(err2) });
51384
+ logger55?.warn("Failed to create output directory", { path: outputDir, error: String(err2) });
51313
51385
  throw new HarnessExecutorError(
51314
51386
  `Failed to create output directory: ${outputDir}`,
51315
51387
  "EXECUTION_FAILED",
@@ -51317,10 +51389,10 @@ async function ensureOutputDir(outputDir, logger54) {
51317
51389
  );
51318
51390
  }
51319
51391
  }
51320
- function spawnHarnessProcess(config, logger54) {
51392
+ function spawnHarnessProcess(config, logger55) {
51321
51393
  const args = [HARNESS_SCRIPT.split(" ")[0] ?? "-m", ...HARNESS_SCRIPT.split(" ").slice(1)];
51322
51394
  args.push(...buildHarnessArgs(config));
51323
- logger54?.info("Spawning harness process", { command: PYTHON_COMMAND, args });
51395
+ logger55?.info("Spawning harness process", { command: PYTHON_COMMAND, args });
51324
51396
  const proc = spawn(PYTHON_COMMAND, args, {
51325
51397
  stdio: ["ignore", "pipe", "pipe"],
51326
51398
  env: { ...process.env }
@@ -51408,20 +51480,20 @@ function handleProcessClose(options) {
51408
51480
  }
51409
51481
  });
51410
51482
  }
51411
- async function handleProcessExitAsync(code, config, stderr, logger54) {
51483
+ async function handleProcessExitAsync(code, config, stderr, logger55) {
51412
51484
  if (code !== 0) {
51413
- logger54.error("Harness process failed", new Error(stderr), { exitCode: code });
51485
+ logger55.error("Harness process failed", new Error(stderr), { exitCode: code });
51414
51486
  throw new HarnessExecutorError(
51415
51487
  `Harness process exited with code ${String(code)}`,
51416
51488
  "EXECUTION_FAILED"
51417
51489
  );
51418
51490
  }
51419
- return parseResultsFile(config, logger54);
51491
+ return parseResultsFile(config, logger55);
51420
51492
  }
51421
- async function parseResultsFile(config, logger54) {
51493
+ async function parseResultsFile(config, logger55) {
51422
51494
  const resultsPath = getResultsFilePath(config);
51423
- logger54.info("Parsing results file", { path: resultsPath });
51424
- const rawOutput = await parseHarnessLogFile(resultsPath, logger54);
51495
+ logger55.info("Parsing results file", { path: resultsPath });
51496
+ const rawOutput = await parseHarnessLogFile(resultsPath, logger55);
51425
51497
  if (rawOutput === null) {
51426
51498
  throw new HarnessExecutorError(`Failed to parse results from: ${resultsPath}`, "PARSE_ERROR");
51427
51499
  }
@@ -51479,8 +51551,8 @@ var HarnessExecutor = class {
51479
51551
  logger;
51480
51552
  currentProcess = null;
51481
51553
  isCancelled = false;
51482
- constructor(logger54) {
51483
- this.logger = logger54 ?? createLogger({ component: "harness-executor" });
51554
+ constructor(logger55) {
51555
+ this.logger = logger55 ?? createLogger({ component: "harness-executor" });
51484
51556
  }
51485
51557
  /**
51486
51558
  * Validates that the environment is ready for harness execution.
@@ -51632,11 +51704,11 @@ var HarnessExecutor = class {
51632
51704
  };
51633
51705
 
51634
51706
  // src/swe-bench/harness-executor-factory.ts
51635
- function createHarnessExecutor(logger54) {
51636
- return new HarnessExecutor(logger54);
51707
+ function createHarnessExecutor(logger55) {
51708
+ return new HarnessExecutor(logger55);
51637
51709
  }
51638
- async function createValidatedExecutor(logger54) {
51639
- const executor = createHarnessExecutor(logger54);
51710
+ async function createValidatedExecutor(logger55) {
51711
+ const executor = createHarnessExecutor(logger55);
51640
51712
  const validation = await executor.validate();
51641
51713
  return { executor, validation };
51642
51714
  }
@@ -51756,8 +51828,8 @@ var EvaluationHarness = class {
51756
51828
  logger;
51757
51829
  executor;
51758
51830
  isCancelled = false;
51759
- constructor(logger54) {
51760
- this.logger = logger54 ?? createLogger({ component: "evaluation-harness" });
51831
+ constructor(logger55) {
51832
+ this.logger = logger55 ?? createLogger({ component: "evaluation-harness" });
51761
51833
  this.executor = createHarnessExecutor(this.logger);
51762
51834
  }
51763
51835
  /**
@@ -51917,11 +51989,11 @@ var EvaluationHarness = class {
51917
51989
  return returnValue;
51918
51990
  }
51919
51991
  };
51920
- function createEvaluationHarness(logger54) {
51921
- return new EvaluationHarness(logger54);
51992
+ function createEvaluationHarness(logger55) {
51993
+ return new EvaluationHarness(logger55);
51922
51994
  }
51923
- async function createValidatedHarness(logger54) {
51924
- const harness = createEvaluationHarness(logger54);
51995
+ async function createValidatedHarness(logger55) {
51996
+ const harness = createEvaluationHarness(logger55);
51925
51997
  const validation = await harness.validate();
51926
51998
  if (!validation.ready) {
51927
51999
  return err(
@@ -52176,9 +52248,9 @@ function handlePatchError(err2, options) {
52176
52248
  backupCreated: options.createBackup && !options.dryRun
52177
52249
  };
52178
52250
  }
52179
- async function executePatch(patchPath, options, reverse, logger54) {
52251
+ async function executePatch(patchPath, options, reverse, logger55) {
52180
52252
  const args = buildPatchArgs(patchPath, options, reverse);
52181
- logger54.debug("Executing patch command", { args, cwd: options.workDir });
52253
+ logger55.debug("Executing patch command", { args, cwd: options.workDir });
52182
52254
  try {
52183
52255
  const { stdout, stderr } = await execFileAsync5("patch", args, {
52184
52256
  cwd: options.workDir,
@@ -52210,8 +52282,8 @@ ${stderr}`.trim();
52210
52282
  // src/swe-bench/patch-applicator.ts
52211
52283
  var PatchApplicator = class {
52212
52284
  logger;
52213
- constructor(logger54) {
52214
- this.logger = logger54 ?? createLogger({ component: "patch-applicator" });
52285
+ constructor(logger55) {
52286
+ this.logger = logger55 ?? createLogger({ component: "patch-applicator" });
52215
52287
  }
52216
52288
  /**
52217
52289
  * Validates a patch without applying it.
@@ -52287,8 +52359,8 @@ var PatchApplicator = class {
52287
52359
  };
52288
52360
  }
52289
52361
  };
52290
- function createPatchApplicator(logger54) {
52291
- return new PatchApplicator(logger54);
52362
+ function createPatchApplicator(logger55) {
52363
+ return new PatchApplicator(logger55);
52292
52364
  }
52293
52365
  function validatePatch(patch) {
52294
52366
  return parsePatch(patch);
@@ -52487,9 +52559,9 @@ function attachOutputCapture(proc, maxOutputBytes) {
52487
52559
  };
52488
52560
  }
52489
52561
  function executeInDocker(options) {
52490
- const { command, config, startTime, state, createCancelledResult: createCancelledResult2, handleTestError, logger: logger54 } = options;
52562
+ const { command, config, startTime, state, createCancelledResult: createCancelledResult2, handleTestError, logger: logger55 } = options;
52491
52563
  const image = config.dockerImage ?? "python:3.11-slim";
52492
- logger54.debug("Executing tests in Docker", { image, command });
52564
+ logger55.debug("Executing tests in Docker", { image, command });
52493
52565
  const dockerArgs = buildDockerArgs(command, config, image);
52494
52566
  return new Promise((resolve18) => {
52495
52567
  const proc = spawn2("docker", dockerArgs, {
@@ -52546,8 +52618,8 @@ var TestRunner = class {
52546
52618
  currentProcess: null,
52547
52619
  isCancelled: false
52548
52620
  };
52549
- constructor(logger54) {
52550
- this.logger = logger54 ?? createLogger({ component: "test-runner" });
52621
+ constructor(logger55) {
52622
+ this.logger = logger55 ?? createLogger({ component: "test-runner" });
52551
52623
  }
52552
52624
  /**
52553
52625
  * Detects the test framework used by the repository.
@@ -52768,8 +52840,8 @@ ${stderr}`.trim();
52768
52840
  };
52769
52841
  }
52770
52842
  };
52771
- function createTestRunner(logger54) {
52772
- return new TestRunner(logger54);
52843
+ function createTestRunner(logger55) {
52844
+ return new TestRunner(logger55);
52773
52845
  }
52774
52846
  async function runTests(workDir, options) {
52775
52847
  const runner = createTestRunner();
@@ -53078,8 +53150,8 @@ function identifyWeaknesses(result, competitors) {
53078
53150
  // src/swe-bench/report-generator.ts
53079
53151
  var ReportGenerator = class {
53080
53152
  logger;
53081
- constructor(logger54) {
53082
- this.logger = logger54 ?? createLogger({ component: "report-generator" });
53153
+ constructor(logger55) {
53154
+ this.logger = logger55 ?? createLogger({ component: "report-generator" });
53083
53155
  }
53084
53156
  /**
53085
53157
  * Generates a full evaluation report.
@@ -53342,8 +53414,8 @@ var ReportGenerator = class {
53342
53414
  };
53343
53415
  }
53344
53416
  };
53345
- function createReportGenerator(logger54) {
53346
- return new ReportGenerator(logger54);
53417
+ function createReportGenerator(logger55) {
53418
+ return new ReportGenerator(logger55);
53347
53419
  }
53348
53420
  async function generateReport(result, config, competitors) {
53349
53421
  const generator = createReportGenerator();
@@ -53490,7 +53562,7 @@ var TraceLogger = class {
53490
53562
  };
53491
53563
 
53492
53564
  // src/pipeline/event-bus-bridge.ts
53493
- var logger51 = createLogger({ component: "EventBusBridge" });
53565
+ var logger52 = createLogger({ component: "EventBusBridge" });
53494
53566
  function toV1Topic(prefix, event) {
53495
53567
  return `${prefix}.${event.type}`;
53496
53568
  }
@@ -53522,10 +53594,10 @@ function createEventBusBridge(options) {
53522
53594
  forwardCount++;
53523
53595
  } catch (error) {
53524
53596
  const msg = getErrorMessage(error);
53525
- logger51.warn("Failed to forward pipeline event", { type: event.type, error: msg });
53597
+ logger52.warn("Failed to forward pipeline event", { type: event.type, error: msg });
53526
53598
  }
53527
53599
  });
53528
- logger51.info("EventBus bridge initialized", { prefix });
53600
+ logger52.info("EventBus bridge initialized", { prefix });
53529
53601
  return {
53530
53602
  forwarded: () => forwardCount,
53531
53603
  dispose: unsub
@@ -53533,7 +53605,7 @@ function createEventBusBridge(options) {
53533
53605
  }
53534
53606
 
53535
53607
  // src/adapters/stdin-lifecycle.ts
53536
- var logger52 = createLogger({ component: "StdinLifecycleMonitor" });
53608
+ var logger53 = createLogger({ component: "StdinLifecycleMonitor" });
53537
53609
  var StdinLifecycleMonitor = class {
53538
53610
  callbacks = /* @__PURE__ */ new Set();
53539
53611
  started = false;
@@ -53558,7 +53630,7 @@ var StdinLifecycleMonitor = class {
53558
53630
  try {
53559
53631
  await cb();
53560
53632
  } catch (error) {
53561
- logger52.warn("Stdin shutdown callback failed", { error: String(error) });
53633
+ logger53.warn("Stdin shutdown callback failed", { error: String(error) });
53562
53634
  }
53563
53635
  }
53564
53636
  }
@@ -53572,7 +53644,7 @@ function getStdinLifecycleMonitor() {
53572
53644
  // src/pipeline/task-tracker.ts
53573
53645
  import * as fs18 from "fs";
53574
53646
  import * as path19 from "path";
53575
- var logger53 = createLogger({ component: "task-tracker" });
53647
+ var logger54 = createLogger({ component: "task-tracker" });
53576
53648
  async function exec4(cmd, args, timeout = 15e3) {
53577
53649
  const { execFile: execFile6 } = await import("child_process");
53578
53650
  const { promisify: promisify9 } = await import("util");
@@ -53598,7 +53670,7 @@ var GitHubTaskTracker = class {
53598
53670
  const result = await provider.createIssue(title, body, this.config.labels);
53599
53671
  if (!result.ok) throw new Error("Failed to create issue");
53600
53672
  const id = String(result.value.number);
53601
- logger53.info("Created GitHub issue via SCM provider", { id });
53673
+ logger54.info("Created GitHub issue via SCM provider", { id });
53602
53674
  return { id, title, status: "open", url: result.value.url };
53603
53675
  }
53604
53676
  async updateStatus(taskId, status) {
@@ -53626,7 +53698,7 @@ var GitLabTaskTracker = class {
53626
53698
  );
53627
53699
  const match = /\/(\d+)$/.exec(url);
53628
53700
  const id = match?.[1] ?? url;
53629
- logger53.info("Created GitLab issue", { id, url });
53701
+ logger54.info("Created GitLab issue", { id, url });
53630
53702
  return { id, title, status: "open", url };
53631
53703
  }
53632
53704
  async updateStatus(taskId, status) {
@@ -54332,6 +54404,8 @@ export {
54332
54404
  AgentRunnerError,
54333
54405
  runAgentOnInstance,
54334
54406
  createMockExecutor,
54407
+ translateEvaluationResult,
54408
+ HarnessVerifyAdapter,
54335
54409
  NexusAgentExecutor,
54336
54410
  createNexusExecutorFromEnv,
54337
54411
  CliAgentExecutor,
@@ -54427,4 +54501,4 @@ export {
54427
54501
  detectBackend,
54428
54502
  createTaskTracker
54429
54503
  };
54430
- //# sourceMappingURL=chunk-UXRR7M6E.js.map
54504
+ //# sourceMappingURL=chunk-APQJV46Q.js.map