Conversation
…r account) Self-contained plugin for the owner's Wolt account. Reads are anonymous against Wolt's public JSON surface; ordering is authenticated and gated. - anonymous reads: search, nearby, venue, menu (normalised option groups), item, estimate - headless connect: every account type (email code, email magic link, and the phone-merge path that reaches Google/social/phone-only accounts). Each email/SMS send carries a passive hCaptcha token; refresh token + saved card persisted via ctx.updateConnection - gated ordering: order_create (priced preview -> confirm places a real order on the saved card), order_status (track), order_cancel — behind allowOrdering + confirm:true - access annotations on all 12 actions + ACCESS_CHECKLIST row + icon + README
- refresh() forces a token rotation so the rotating refresh token never lapses
- connect() returns a keepalive hint { every: '12h', prompt: 'call wolt.refresh()' }
for the onboarding agent to wire a recurring schedule
- Wolt's refresh needs no live access token, so a slow cadence suffices
normPhone() prepended 972 only when the number didn't already start with 972, mishandling 00-prefixed international (00972...) and bare-local input. Normalize via the 00-exit / national-0 / bare-local branches so every form yields +972XXXXXXXXX.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds a wolt plugin: search venues, read menus, price and place/track/cancel real food & grocery orders on the owner's own Wolt account (Israel + global).
Shape (follows the repo conventions)
packages/runline-plugins/wolt/src/index.ts, directfetch, no external deps.inputSchema/setConnectionSchemalike the other plugins.ctx.updateConnection(same pattern as gmail/googleCalendar).accesson every action + anACCESS_CHECKLIST.mdrow + icon + README table row.Actions (12)
Reads (anonymous):
search,nearby,venue,menu(with normalised option groups — required flags, choices, prices),item,estimate, plus authedwhoami,addresses,order_statusWrites:
connect(owner login — see below),order_create,order_cancelOnboarding (
connect)Headless, covers every Wolt account type: email code, email magic link, and the phone-merge path that reaches Google/social/phone-only accounts. Each email/SMS send is fronted by a passive hCaptcha token (
captcha/vnCaptcha/smsCaptcha) minted in a real browser on a wolt.com origin; redeeming a link is the only send-free step. After success, the rotating refresh token drives everything.Safety
Purchase-eligible by design — placing an order spends real money.
order_createreturns a priced preview +requiresConfirmationand only places a real order when the connection setsallowOrdering: trueand the caller passesconfirm: true.order_cancelis self-service only before the venue accepts (else Wolt returns error_code 4051). Payment is the account's saved card; Google Pay is not replayable headless. Prices are integer minor units (agorot in ISR). Single-tenant: one account per connection.Verification
bun --filter runline buildpasses;tsc --noEmitclean for the plugin.search "sushi"→ venues;menu→ 210 items / 25 categories).