data fixes; indicator=>workspace sync
This commit is contained in:
@@ -52,7 +52,7 @@ Parameters:
|
||||
|
||||
// Build request with workspace defaults
|
||||
const finalTicker = ticker ?? chartState.symbol;
|
||||
const finalPeriod = period ?? parsePeriod(chartState.period);
|
||||
const finalPeriod = period ?? chartState.period;
|
||||
const finalFromTime = await parseTime(from_time, chartState.start_time, logger);
|
||||
const finalToTime = await parseTime(to_time, chartState.end_time, logger);
|
||||
const requestedColumns = columns ?? [];
|
||||
@@ -83,7 +83,7 @@ Parameters:
|
||||
// Fetch data from OHLCService
|
||||
const historyResult = await ohlcService.fetchOHLC(
|
||||
finalTicker,
|
||||
finalPeriod.toString(),
|
||||
finalPeriod,
|
||||
finalFromTime,
|
||||
finalToTime,
|
||||
countback
|
||||
@@ -167,7 +167,7 @@ async function getChartState(workspaceManager: WorkspaceManager, logger: Fastify
|
||||
symbol: 'BINANCE:BTC/USDT',
|
||||
start_time: null,
|
||||
end_time: null,
|
||||
period: '15',
|
||||
period: 900,
|
||||
selected_shapes: [],
|
||||
};
|
||||
}
|
||||
@@ -180,35 +180,12 @@ async function getChartState(workspaceManager: WorkspaceManager, logger: Fastify
|
||||
symbol: 'BINANCE:BTC/USDT',
|
||||
start_time: null,
|
||||
end_time: null,
|
||||
period: '15',
|
||||
period: 900,
|
||||
selected_shapes: [],
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Parse period string to seconds
|
||||
* Handles period as either a number (already in seconds) or string (minutes)
|
||||
*/
|
||||
function parsePeriod(period: string | number | null): number | null {
|
||||
if (period === null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
if (typeof period === 'number') {
|
||||
return period;
|
||||
}
|
||||
|
||||
// Period in workspace is stored as string representing minutes
|
||||
// Convert to seconds
|
||||
const minutes = parseInt(period, 10);
|
||||
if (isNaN(minutes)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return minutes * 60;
|
||||
}
|
||||
|
||||
/**
|
||||
* Parse time parameter (Unix seconds, date string, or null)
|
||||
* Returns Unix timestamp in seconds
|
||||
|
||||
@@ -30,13 +30,16 @@ Use this tool for:
|
||||
|
||||
The research subagent will write and execute Python scripts, capture output and charts, and return results.`,
|
||||
schema: z.object({
|
||||
name: z.string().describe('The name of the research script to create or update (e.g. "btc_ema_analysis"). Use the same name across calls to revise the same script rather than creating a new one.'),
|
||||
instruction: z.string().describe('The research task or analysis to perform. Be specific about what data, indicators, timeframes, and output you want.'),
|
||||
}),
|
||||
func: async ({ instruction }: { instruction: string }): Promise<string> => {
|
||||
logger.info({ instruction: instruction.substring(0, 100) }, 'Delegating to research subagent');
|
||||
func: async ({ name, instruction }: { name: string; instruction: string }): Promise<string> => {
|
||||
logger.info({ name, instruction: instruction.substring(0, 100) }, 'Delegating to research subagent');
|
||||
|
||||
const prompt = `Research script name: "${name}"\n\n${instruction}`;
|
||||
|
||||
try {
|
||||
const result = await researchSubagent.executeWithImages(context, instruction);
|
||||
const result = await researchSubagent.executeWithImages(context, prompt);
|
||||
|
||||
// Return in the format that AgentHarness.processToolResult() knows how to handle
|
||||
// (extracts images and passes them to channelAdapter)
|
||||
|
||||
Reference in New Issue
Block a user