Skip to content

Add DoorDash store and account-checked cart tools - #57

Open
yummybomb wants to merge 13 commits into
mainfrom
hypeship/doordash-get-store
Open

yummybomb wants to merge 13 commits into
mainfrom
hypeship/doordash-get-store

Conversation

@yummybomb

@yummybomb yummybomb commented Sep 29, 2026 •

Copy link
Copy Markdown
Contributor

summary

  • supplement native menu/search/item/add tools with read-only store detail and intended-account-checked cart reads
  • add exact-cart preparation with provisional totals/context and a manual checkout handoff; never loads checkout and always reports ready_for_order: false
  • add guarded, one-attempt removal of a non-last ordinary personal-cart line using exact cart/line/store identity and a fresh queried revision; block unsupported/incomplete/prescription states, retain a persistent guard on uncertain outcomes, and verify other lines remain unchanged
  • add set_delivery_address for signed-out visits: sends the header address picker's own requests (autocomplete, get-or-create, addConsumerAddressV2). Before any address request it asks DoorDash's consumer query whether the visit is a guest, so a signed-in session is refused even without the login cookie. It reports success only when DoorDash's answer has the chosen suggestion's street, city and ZIP code. Registered as a bench action in bench/tasks/doordash.com/domain.json, which also lists get_cart and get_checkout_summary under needs_sign_in so signed-out intents do not get them
  • preserve existing login/store source and unrelated registry entries

safety and limitations

No live cart/address/account/payment/order changes were made to an account. Every populated-cart/removal success is isolated fixture evidence with intercepted requests, not live mutation verification. Quantity/customization edits are omitted because their preservation contract is not established. Payment/order execution remains absent because neither observed runtime exposes trusted human approval enforcement; caller-supplied approval booleans are rejected. Cart revisions are client-side observations, not server CAS, and guards do not atomically prevent cross-tab races.

validation

  • registry: valid; full suite passes (node --test "tests/*.test.mjs")
  • get_store, get_cart, get_checkout_summary, remove_cart_item: qa_passed; independent QA signed off on their current source (bd42a0d for the cart tools), with both Kernel and local-extension invocation. Populated cart reads and live removal were not independently tested
  • set_delivery_address: draft, no independent QA. Fixture tests cover the guest check, refused signed-in visits, unclear consumer answers and an answer naming a different address. Live in a signed-out Kernel browser on 2026-10-21 and, with the guest check and street/city/ZIP confirmation, on 2026-10-22 for Times Square, 350 5th Ave, 1600 Amphitheatre Pkwy and 233 S Wacker Dr

Do not auto-merge.

@yummybomb
yummybomb force-pushed the hypeship/doordash-get-store branch from 29e0b6d to dd01703 Compare September 30, 2026 02:06
@yummybomb yummybomb changed the title Add doordash.com get_store page tool Add DoorDash store and account-checked cart tools Sep 30, 2026
@yummybomb
yummybomb marked this pull request as ready for review September 30, 2026 14:52
…-store

# Conflicts:
#	domains/doordash.com/README.md
#	registry.json
Setting the delivery address is the step agents spend longest on in a
DoorDash task, and some models cannot work the picker at all. The new
page tool sends the picker's own autocomplete, get-or-create and
addConsumerAddressV2 requests, confirms the address from DoorDash's
answer, and refuses signed-in visits, where save_address applies. The
bench gives it to DoorDash's prepare intents.
@yummybomb

Copy link
Copy Markdown
Contributor Author

Pushed 5cdc275: adds set_delivery_address, a page tool for signed-out visits. It sends the address picker's own requests (autocomplete, get-or-create, addConsumerAddressV2) and confirms the address from DoorDash's answer. It refuses signed-in visits, where save_address applies. It is draft, and the bench gives it to DoorDash's prepare intents (bench/tasks/doordash.com/domain.json).

Setting the address is where agents spent most of their time on the bench task; without tools, Luna never got past the picker. Live check: "Times Square, New York, NY 10036" set 4 Times Sq in under a second, and the header showed it after loading /home.

Bench (plain Kernel browsers, 5 pairs):

  • Haiku 5.5 low: 5/5 → 5/5 correct, 1:36 → 0:26 (3.7×)
  • GPT-6 Luna low: 0/5 → 5/5 correct (median 0:31 with tools; it never finished without them)

…t_delivery_address

Ask DoorDash's consumer query whether the visit is a guest before any
address request, since the cookie alone can miss a signed-in session and
the mutation would then save the address to the account. Report success
only when DoorDash's answer has the chosen suggestion's city and ZIP code.
Restore main's README row for login, which a merge had reworded.
…keep the cart reads out of signed-out bench intents
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