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.