From debbac6abd69a890b3e47ffe6d5f67d494a0cd1f Mon Sep 17 00:00:00 2001 From: konard Date: Sun, 31 May 2026 10:12:50 +0000 Subject: [PATCH 1/3] Initial commit with task details Adding .gitkeep for PR creation (default mode). This file will be removed when the task is complete. Issue: https://github.com/Payel-git-ol/Tradefast/issues/37 --- .gitkeep | 1 + 1 file changed, 1 insertion(+) create mode 100644 .gitkeep diff --git a/.gitkeep b/.gitkeep new file mode 100644 index 0000000..fe7fbd2 --- /dev/null +++ b/.gitkeep @@ -0,0 +1 @@ +# .gitkeep file auto-generated at 2026-05-31T10:12:50.630Z for PR creation at branch issue-37-a05df9f50d09 for issue https://github.com/Payel-git-ol/Tradefast/issues/37 \ No newline at end of file From 0d420515f76fe22b97a607d7edafe17d1fbab815 Mon Sep 17 00:00:00 2001 From: konard Date: Sun, 31 May 2026 10:23:09 +0000 Subject: [PATCH 2/3] Render AI markdown and signed values --- docs/screenshots/ai-markup.png | Bin 0 -> 94533 bytes experiments/ai-markup-shot.ts | 70 ++++++++++++++++ src/cli/ai-markup.tsx | 143 +++++++++++++++++++++++++++++++++ src/cli/output.tsx | 3 +- tests/cli.test.tsx | 45 +++++++++++ 5 files changed, 260 insertions(+), 1 deletion(-) create mode 100644 docs/screenshots/ai-markup.png create mode 100644 experiments/ai-markup-shot.ts create mode 100644 src/cli/ai-markup.tsx diff --git a/docs/screenshots/ai-markup.png b/docs/screenshots/ai-markup.png new file mode 100644 index 0000000000000000000000000000000000000000..6795d511096e907bf3785344606c64fdb3dd92a9 GIT binary patch literal 94533 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

H|5zXsHtM-y?l64d729I`{TBzQ%9X2N}3- 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 VU+uz`-Yeh1Hq/g, '>'); +} + +function segmentStyle(segment: AiMarkupSegment, cliTheme: CliTheme): string { + const styles: string[] = []; + if (segment.bold) styles.push('font-weight:700'); + if (segment.code) styles.push(`color:${cliTheme.colors.info}`); + if (segment.tone === 'positive') styles.push(`color:${cliTheme.colors.long}`); + if (segment.tone === 'negative') styles.push(`color:${cliTheme.colors.short}`); + return styles.length > 0 ? ` style="${styles.join(';')}"` : ''; +} + +const body = parseAiMarkup(sample) + .map((segment) => `${esc(segment.text)}`) + .join(''); + +const html = `

`; + +const browser = await chromium.launch(); +const page = await browser.newPage({ deviceScaleFactor: 2 }); +await page.setContent(html, { waitUntil: 'load' }); +const el = await page.$('.term'); +await el!.screenshot({ path: outPath }); +await browser.close(); +process.stdout.write(`screenshot written: ${outPath}\n`); diff --git a/src/cli/ai-markup.tsx b/src/cli/ai-markup.tsx new file mode 100644 index 0000000..4191d6b --- /dev/null +++ b/src/cli/ai-markup.tsx @@ -0,0 +1,143 @@ +import { Text } from 'ink'; +import type React from 'react'; + +import type { CliTheme } from './theme.js'; + +export type AiMarkupTone = 'positive' | 'negative'; + +export interface AiMarkupSegment { + text: string; + bold?: boolean; + code?: boolean; + tone?: AiMarkupTone; +} + +type SegmentStyle = Omit; + +const SIGNED_NUMBER = /(^|[^\w.+-])([+-](?:\d+(?:\.\d+)?|\.\d+)%?)(?=$|[^\w.])/g; + +function sameStyle(a: AiMarkupSegment, b: SegmentStyle): boolean { + return a.bold === b.bold && a.code === b.code && a.tone === b.tone; +} + +function pushSegment(segments: AiMarkupSegment[], text: string, style: SegmentStyle = {}): void { + if (text.length === 0) return; + const last = segments[segments.length - 1]; + if (last && sameStyle(last, style)) { + last.text += text; + return; + } + segments.push({ text, ...style }); +} + +function pushTextWithSignedNumbers(segments: AiMarkupSegment[], text: string, style: SegmentStyle): void { + SIGNED_NUMBER.lastIndex = 0; + let cursor = 0; + let match: RegExpExecArray | null; + + while ((match = SIGNED_NUMBER.exec(text)) !== null) { + const prefix = match[1] ?? ''; + const value = match[2] ?? ''; + const valueStart = match.index + prefix.length; + const valueEnd = valueStart + value.length; + + pushSegment(segments, text.slice(cursor, valueStart), style); + pushSegment(segments, value, { + ...style, + tone: value.startsWith('+') ? 'positive' : 'negative', + }); + cursor = valueEnd; + } + + pushSegment(segments, text.slice(cursor), style); +} + +function parseInline(text: string, style: SegmentStyle = {}): AiMarkupSegment[] { + const segments: AiMarkupSegment[] = []; + let cursor = 0; + + const pushPlain = (end: number) => { + pushTextWithSignedNumbers(segments, text.slice(cursor, end), style); + cursor = end; + }; + + while (cursor < text.length) { + const boldStart = text.indexOf('**', cursor); + const codeStart = text.indexOf('`', cursor); + const candidates = [boldStart, codeStart].filter((index) => index >= 0); + const next = candidates.length === 0 ? -1 : Math.min(...candidates); + + if (next < 0) { + pushPlain(text.length); + break; + } + + if (next > cursor) pushPlain(next); + + if (text.startsWith('**', cursor)) { + const end = text.indexOf('**', cursor + 2); + if (end < 0) { + pushPlain(text.length); + break; + } + pushTextWithSignedNumbers(segments, text.slice(cursor + 2, end), { ...style, bold: true }); + cursor = end + 2; + continue; + } + + const end = text.indexOf('`', cursor + 1); + if (end < 0) { + pushPlain(text.length); + break; + } + pushSegment(segments, text.slice(cursor + 1, end), { ...style, code: true }); + cursor = end + 1; + } + + return segments; +} + +export function parseAiMarkup(text: string): AiMarkupSegment[] { + const segments: AiMarkupSegment[] = []; + const lines = text.split('\n'); + let inCodeFence = false; + + lines.forEach((line, index) => { + const newline = index < lines.length - 1 ? '\n' : ''; + if (/^\s*```/.test(line)) { + inCodeFence = !inCodeFence; + return; + } + + if (inCodeFence) { + pushSegment(segments, `${line}${newline}`, { code: true }); + return; + } + + for (const segment of parseInline(`${line}${newline}`)) { + const { text: segmentText, ...segmentStyle } = segment; + pushSegment(segments, segmentText, segmentStyle); + } + }); + + return segments; +} + +function segmentColor(segment: AiMarkupSegment, theme: CliTheme): string | undefined { + if (segment.tone === 'positive') return theme.colors.long; + if (segment.tone === 'negative') return theme.colors.short; + if (segment.code) return theme.colors.info; + return undefined; +} + +export function AiFormattedText({ text, theme }: { text: string; theme: CliTheme }): React.ReactElement { + return ( + + {parseAiMarkup(text).map((segment, index) => ( + + {segment.text} + + ))} + + ); +} diff --git a/src/cli/output.tsx b/src/cli/output.tsx index 2ac4d0d..721b784 100644 --- a/src/cli/output.tsx +++ b/src/cli/output.tsx @@ -5,6 +5,7 @@ import type { PersistedNewsCrawlReport, StatusReport } from '../app/tradefast.js import type { RunReport } from '../pipeline/collector.js'; import type { BacktestReport } from '../services/backtest.js'; import type { SourceRating } from '../services/source-ratings.js'; +import { AiFormattedText } from './ai-markup.js'; import { Banner } from './Banner.js'; import { renderBacktestParts } from './backtest-log.js'; import type { ChartData } from './chart.js'; @@ -304,7 +305,7 @@ export function OutputLine({ return ( ▌AI - {item.text} + ); case 'ratings': diff --git a/tests/cli.test.tsx b/tests/cli.test.tsx index 893da06..e05bc88 100644 --- a/tests/cli.test.tsx +++ b/tests/cli.test.tsx @@ -4,6 +4,7 @@ import { render } from 'ink-testing-library'; import type { Tradefast } from '../src/app/tradefast.js'; import { App } from '../src/cli/App.js'; +import { parseAiMarkup } from '../src/cli/ai-markup.js'; import { completeCommand, parseCommand, suggestCommands } from '../src/cli/commands.js'; import { OutputLine } from '../src/cli/output.js'; import { getTheme, themeNames } from '../src/cli/theme.js'; @@ -492,6 +493,26 @@ describe('run output', () => { unmount(); }); + it('renders AI markdown markers as formatting instead of literal text', () => { + const tallStdout = { rows: 80, columns: 120, write: () => {}, on: () => {}, removeListener: () => {} } as any; + const text = [ + 'Актуальный курс **BYN/USD** на сегодня:', + '- **1 BYN ≈ 0.3618–0.3623 USD**', + 'Динамика: курс укрепился (+0.24%).', + ].join('\n'); + const { lastFrame, unmount } = render( + , + { stdout: tallStdout }, + ); + + const frame = lastFrame(); + expect(frame).toContain('Актуальный курс BYN/USD на сегодня:'); + expect(frame).toContain('- 1 BYN ≈ 0.3618–0.3623 USD'); + expect(frame).toContain('(+0.24%)'); + expect(frame).not.toContain('**'); + unmount(); + }); + it('keeps blank cells inside the bordered table when no actionable signal is available', () => { const noActionReport: RunReport = { ...report, @@ -533,6 +554,30 @@ describe('run output', () => { }); }); +describe('AI message markup', () => { + it('parses bold, inline code, and fenced code markers without rendering delimiters', () => { + const segments = parseAiMarkup('Rate **BYN/USD** uses `mid`\n```json\n{"pair":"BYN/USD"}\n```\nDone'); + + expect(segments.map((segment) => segment.text).join('')).toBe('Rate BYN/USD uses mid\n{"pair":"BYN/USD"}\nDone'); + expect(segments).toContainEqual({ text: 'BYN/USD', bold: true }); + expect(segments).toContainEqual({ text: 'mid', code: true }); + expect(segments).toContainEqual({ text: '{"pair":"BYN/USD"}\n', code: true }); + }); + + it('marks signed numeric values while leaving bullets and price ranges alone', () => { + const segments = parseAiMarkup('- result range 0.3618-0.3623, changes (+0.24%), -116, +890.05, and - item'); + + expect(segments.filter((segment) => segment.tone).map((segment) => ({ + text: segment.text, + tone: segment.tone, + }))).toEqual([ + { text: '+0.24%', tone: 'positive' }, + { text: '-116', tone: 'negative' }, + { text: '+890.05', tone: 'positive' }, + ]); + }); +}); + describe('backtest output', () => { const report: BacktestReport = { results: [ From f1374e66607fe15b2cd181a06cfe50d7a1cc5062 Mon Sep 17 00:00:00 2001 From: konard Date: Sun, 31 May 2026 10:24:53 +0000 Subject: [PATCH 3/3] Remove PR bootstrap placeholder --- .gitkeep | 1 - 1 file changed, 1 deletion(-) delete mode 100644 .gitkeep diff --git a/.gitkeep b/.gitkeep deleted file mode 100644 index fe7fbd2..0000000 --- a/.gitkeep +++ /dev/null @@ -1 +0,0 @@ -# .gitkeep file auto-generated at 2026-05-31T10:12:50.630Z for PR creation at branch issue-37-a05df9f50d09 for issue https://github.com/Payel-git-ol/Tradefast/issues/37 \ No newline at end of file