Implement Auctionator data provider using the official Auctionator External API instead of parsing raw SavedVariables Lua files. This provides stable, documented access to auction prices without reverse-engineering compression/serialization formats. The provider will call Lua API functions via runtime_bridge to get structured price data for RAG model queries.
The current raw parsing approach fails on Area52 data (decodes to -3 instead of price dictionary). The External API handles all decompression/parsing internally and is guaranteed stable by Auctionator developers.
AuctionatorPrice = {
itemID: int,
price: int (coppers),
age: int (days since seen),
vendorPrice: int (coppers, if applicable),
exact: bool (is data exact match)
}
AuctionatorData = {
prices: dict[string, list[AuctionatorPrice]] // realm -> prices
dbversion: int
}
QueryResult = {
realm: string,
items: list[AuctionatorPrice]
}
New files:
- None
Modified files:
runtime_bridge/data_providers/auctionator_provider.py: Replace raw Lua parsing with API callsauctionator_parser.py: Deprecate or remove (no longer needed)
Configuration updates:
- Add
callerIDto config.py for Auctionator API registration
New functions:
get_auction_price(item_id: int) -> AuctionatorPricein auctionator_provider.py: Calls GetAuctionPriceByItemIDis_exact_match(item_id: int) -> boolin auctionator_provider.py: Calls IsAuctionDataExactByItemIDget_vendor_price(item_id: int) -> intin auctionator_provider.py: Calls GetVendorPriceByItemID
Modified functions:
load_data()in auctionator_provider.py: Remove Lua parsing, return empty dict (API called on-demand)get_data(query)in auctionator_provider.py: Map query to item ID, call API, return filtered results
Removed functions:
unescape_lua_string(),parse_lua_table(),decompress_auctionator_data()in auctionator_provider.py
Modified classes:
AuctionatorProvider: Change from Lua parser to API client. Addcaller_idattribute.
Add cbor2 if not present (for potential future use), but primary dependency is runtime_bridge Lua API integration.
- Test API calls with known item IDs from test_payloads.txt
- Verify short realms (Ragnaros) return expected version data
- Test query filtering by item name/ID
- Add unit tests for API response parsing
- Update auctionator_provider.py to use API calls instead of Lua parsing
- Add item ID mapping for common queries
- Test with runtime_bridge Lua execution
- Deprecate auctionator_parser.py
- Update config for callerID
- Verify integration with main.py and RAG