Skip to content

feat: harden finance tools input validation#184

Open
kiannidev wants to merge 3 commits intovirattt:mainfrom
kiannidev:feat-finance-validation
Open

feat: harden finance tools input validation#184
kiannidev wants to merge 3 commits intovirattt:mainfrom
kiannidev:feat-finance-validation

Conversation

@kiannidev
Copy link
Copy Markdown
Contributor

Summary

  • Add shared validation helpers in src/tools/finance/validation.ts for:
    • Normalizing and validating tickers (normalizeTicker, validateTicker)
    • Validating integer limits with configurable ranges (validateLimit)
    • Validating ISO dates and date ranges (validateDate, validateDateRange)
    • Validating report_period* filters via zod (validateReportPeriodFilters)
  • Harden core finance tools to use these helpers:
    • stock-price.ts: validate ticker and start_date/end_date before calling /prices/ and /prices/snapshot/.
    • fundamentals.ts: validate ticker, clamp/validate limit, and validate report_period_* filters before calling financial statement endpoints.
    • key-ratios.ts: validate ticker, clamp/validate limit, and validate report_period* filters for historical key ratios.
    • news.ts: validate ticker and limit (1–10) before calling /news.
    • insider_trades.ts: validate ticker, limit (1–1000), and filing date filters.
    • estimates.ts: validate ticker before calling /analyst-estimates/.

Testing

  • Added src/tools/finance/__tests__/validation.test.ts with coverage for:
    • normalizeTicker and validateTicker (happy-path and error cases)
    • validateLimit (in-range and out-of-range values)
    • validateDate / validateDateRange (valid, malformed, and inverted ranges)
    • validateReportPeriodFilters (undefined vs. invalid formats)
  • Manual bun test src/tools/finance/__tests__/validation.test.ts

@kiannidev
Copy link
Copy Markdown
Contributor Author

Hi, maintainers
Please review this PR..
Thanks

DogInfantry pushed a commit to DogInfantry/dexter that referenced this pull request Apr 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant