AlexandrAI AGENTS.md
agents-md

AlexandrAI Tools Unit Price Comparison Agent Guide

Agent guide for filtering valid price items, computing price per unit, and marking cheapest ties.

AGENTS.md

Guidance for coding agents working on AlexandrAI Tools Unit Price Comparison in the alexandrai-tools project.

Project overview

This guide covers src/tools/unit-price-comparison. compareUnitPrices filters out items with non-positive price or quantity, calculates pricePerUnit as price divided by quantity, finds the minimum price per unit, and marks every item matching that minimum as cheapest.

Primary source files

  • src/tools/unit-price-comparison/index.ts defines meta, PriceItem, PriceResult, and compareUnitPrices.
  • src/tools/unit-price-comparison/index.test.ts covers empty input, single-item cheapest, multi-item cheapest, zero price exclusion, zero quantity exclusion, and pricePerUnit calculation.
  • src/tools/unit-price-comparison/Body.astro owns item rows, units, currency, and cheapest highlighting.
  • src/tools/unit-price-comparison/i18n.ts owns localized labels.
  • src/lib/tools.ts registers the tool metadata.

Setup commands

npm install npm test npm run typecheck npm run build npm run dev

Change rules

  • Exclude items with price not greater than zero.
  • Exclude items with quantity not greater than zero.
  • Return an empty array when no valid items remain.
  • Calculate pricePerUnit as price divided by quantity.
  • Mark all exact ties for the minimum price per unit as cheapest.
  • Preserve original valid item fields in results.
  • Keep unit compatibility validation in UI if added; the helper compares numeric values as supplied.

Testing

Test empty input, single valid item, invalid item filtering, multiple items, exact ties, pricePerUnit precision, mixed units UI handling, row add/remove behavior, and cheapest highlighting.

PR checklist

  • npm test passes for unit-price-comparison.
  • Calculator formulas, units, and rounding expectations are documented.
  • Currency and display formatting remain outside pure helpers.
  • Invalid-input behavior is covered by tests and UI validation.