feat: add agent types and interfaces

This commit is contained in:
2026-05-14 07:51:33 +02:00
parent 5a99273c9d
commit 7b81adb6a2
2 changed files with 65 additions and 0 deletions
+27
View File
@@ -0,0 +1,27 @@
import { describe, it, expect } from 'vitest'
import type { AgentSignal, AnalystReport } from '../agents'
describe('Agent Types', () => {
it('should define valid agent signal structure', () => {
const signal: AgentSignal = {
agent: 'fundamentals',
signal: 'bullish',
confidence: 0.85,
reasoning: 'Strong fundamentals',
timestamp: '2026-01-15T00:00:00.000Z'
}
expect(signal.agent).toBe('fundamentals')
expect(signal.signal).toBe('bullish')
})
it('should allow neutral signal', () => {
const signal: AgentSignal = {
agent: 'technical',
signal: 'neutral',
confidence: 0.5,
reasoning: 'Market indecision',
timestamp: '2026-01-15T00:00:00.000Z'
}
expect(signal.signal).toBe('neutral')
})
})
+38
View File
@@ -0,0 +1,38 @@
export type SignalType = 'bullish' | 'bearish' | 'neutral'
export interface AgentSignal {
agent: 'fundamentals' | 'sentiment' | 'news' | 'technical' | 'trader'
signal: SignalType
confidence: number
reasoning: string
timestamp: string
}
export interface AnalystReport {
analyst: 'fundamentals' | 'sentiment' | 'news' | 'technical'
report: string
signal: AgentSignal
}
export interface DebateRound {
bullishView: string
bearishView: string
researcher: 'bullish' | 'bearish'
}
export interface TradingDecision {
action: 'buy' | 'sell' | 'hold'
confidence: number
targetPrice?: number
stopLoss?: number
reasoning: string
agentSignals: AgentSignal[]
debateRounds: DebateRound[]
}
export interface AgentConfig {
llmProvider: 'openrouter'
model: string
maxDebateRounds: number
temperature: number
}