bugfixes; research subproc; higher sandbox limits
This commit is contained in:
@@ -16,6 +16,7 @@ import type { ResearchSubagent } from './subagents/research/index.js';
|
||||
import type { IndicatorSubagent } from './subagents/indicator/index.js';
|
||||
import type { WebExploreSubagent } from './subagents/web-explore/index.js';
|
||||
import type { StrategySubagent } from './subagents/strategy/index.js';
|
||||
import { BaseSubagent } from './subagents/base-subagent.js';
|
||||
import type { DynamicStructuredTool } from '@langchain/core/tools';
|
||||
import { getToolRegistry } from '../tools/tool-registry.js';
|
||||
import type { MCPToolInfo } from '../tools/mcp/mcp-tool-wrapper.js';
|
||||
@@ -237,12 +238,22 @@ export class AgentHarness {
|
||||
try {
|
||||
const { createResearchSubagent } = await import('./subagents/research/index.js');
|
||||
|
||||
// Create a model for the research subagent
|
||||
// Path resolution: use the compiled output path
|
||||
const researchSubagentPath = join(__dirname, 'subagents', 'research');
|
||||
this.config.logger.debug({ researchSubagentPath }, 'Using research subagent path');
|
||||
|
||||
// Load the subagent config to get maxTokens — research scripts require more tokens
|
||||
// than the provider default (4096) because python_write arguments include full code bodies
|
||||
const researchSubagentConfig = await BaseSubagent.loadConfig(researchSubagentPath);
|
||||
|
||||
// Create a model for the research subagent — always use the complex model
|
||||
// since research tasks involve data analysis, charting, and code generation
|
||||
const { model } = await this.modelRouter.route(
|
||||
'research analysis', // dummy query
|
||||
'analyze and backtest research data', // triggers complex routing
|
||||
this.config.license,
|
||||
RoutingStrategy.COMPLEXITY,
|
||||
this.config.userId
|
||||
this.config.userId,
|
||||
researchSubagentConfig.maxTokens // honour the subagent's maxTokens (e.g. 8192)
|
||||
);
|
||||
|
||||
// Get tools for research subagent from registry
|
||||
@@ -274,10 +285,6 @@ export class AgentHarness {
|
||||
}));
|
||||
}
|
||||
|
||||
// Path resolution: use the compiled output path
|
||||
const researchSubagentPath = join(__dirname, 'subagents', 'research');
|
||||
this.config.logger.debug({ researchSubagentPath }, 'Using research subagent path');
|
||||
|
||||
this.researchSubagent = await createResearchSubagent(
|
||||
model,
|
||||
this.config.logger,
|
||||
@@ -535,10 +542,12 @@ export class AgentHarness {
|
||||
const stream = await model.stream(messagesCopy, { signal });
|
||||
for await (const chunk of stream) {
|
||||
if (typeof chunk.content === 'string' && chunk.content.length > 0) {
|
||||
this.config.logger.trace({ content: chunk.content }, 'raw chunk');
|
||||
yield { type: 'chunk', content: chunk.content };
|
||||
} else if (Array.isArray(chunk.content)) {
|
||||
for (const block of chunk.content) {
|
||||
if (block.type === 'text' && block.text) {
|
||||
this.config.logger.trace({ content: block.text }, 'raw chunk');
|
||||
yield { type: 'chunk', content: block.text };
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user