feat(harris-teeter): add harris-teeter#649
Conversation
24cf76b to
7935705
Compare
Greptile SummaryThis PR adds a new
Confidence Score: 5/5Read-only grocery CLI with no mutating write paths; the two new findings are both non-blocking quality items that do not affect correctness of the shipped surface. All shipped commands are read-only. The rate-limiter race only manifests under explicit --concurrency > 1 and degrades performance rather than correctness. The ResolveByName injection risk is latent in dead code with no current callers. Issues flagged in prior rounds are acknowledged in the PR description as known gaps. No data loss, auth bypass, or hard failure paths were found in the new code. internal/store/store.go (ResolveByName JSON path) and internal/cliutil/ratelimit.go (Wait() TOCTOU) are worth a second look before the functions are called from higher-level commands.
|
| Filename | Overview |
|---|---|
| library/commerce/harris-teeter/internal/client/client.go | HTTP client with retry/rate-limit logic and per-endpoint Harris Teeter LAF headers. Cache-key non-determinism and dead token-refresh path flagged in prior review rounds; no new blocking issues found. |
| library/commerce/harris-teeter/internal/store/store.go | SQLite store with typed upsert dispatch, FTS5 indexing, and schema-version gating. ResolveByName JSON path injection (dead code, no current callers) flagged in this review. |
| library/commerce/harris-teeter/internal/cli/auth.go | Chrome cookie extraction with multi-tool fallback chain. Python path interpolation and sqlite3 query construction flagged in prior review round; no new blocking issues found. |
| library/commerce/harris-teeter/internal/cliutil/ratelimit.go | Adaptive rate limiter with 429-backoff and success ramp. TOCTOU race in Wait() allows burst requests under --concurrency > 1 (flagged in this review). |
| library/commerce/harris-teeter/internal/config/config.go | TOML config load/save for auth tokens and base URL. File written at 0o600, config dir at 0o700. No issues found. |
| library/commerce/harris-teeter/internal/cli/root.go | Root Cobra command with persistent flags and PersistentPreRunE for agent-mode defaults. Clean; no issues. |
Reviews (2): Last reviewed commit: "chore(skills): add harris-teeter mirror" | Re-trigger Greptile
7935705 to
753ef51
Compare
753ef51 to
95e9dca
Compare
|
@jwmoss printing press is on v4.8. Can you please reprint after this merges? |
harris-teeter
Read-only Harris Teeter grocery CLI for products, stores, coupons, cart, lists, account preferences, and recommendations through the logged-in web app session.
API: harris-teeter | Category: commerce | Press version: 4.0.2
Spec: Browser-sniffed internal spec from https://www.harristeeter.com/
CLI Shape
What This CLI Does
This CLI replays the Harris Teeter web app's browser-observed Atlas JSON endpoints with a logged-in Chrome session. It includes a live Chrome auth fallback for
auth login --chrome, and it adds the Harris Teeter LAF/modality headers required for product and coupon endpoints.The shipped surface is read-only: product search/detail, store lookup, digital coupons, cart/list/account inspection, and recommendation reads. It intentionally avoids checkout, ordering, or cart-write flows.
Manuscripts
Validation Results
Gaps
partialbecause this was generated from browser-observed traffic rather than a complete official public API.HARRIS_TEETER_LOCATION_ID,HARRIS_TEETER_FACILITY_ID,HARRIS_TEETER_MODALITY_TYPE, orHARRIS_TEETER_LAF_OBJECT.