Repository navigation
Conversation
- Concierge.sendMessage(message, completion) sends a user turn into the active chat session (rendered as a user bubble, composer draft untouched). Rejects blank/oversized messages, no active session, and CHAT_IN_PROGRESS instead of queueing. Routed through ActiveConciergeMessageSender, registered alongside the data handoff forwarder. - CSSKeyMapper retains unrecognized `--` theme keys in ConciergeThemeTokens.cssVariables (capped at 256 keys / 512-char values) so custom renderers can read their own theme values. - Docs: implementation guide "Send a message" section; style guide note on custom theme keys. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Portable, public-API-only Compose widgets under conciergetestapp/fnb: - Menu renderer for BCOS catalogItemCard + cartBar elements: category tabs, 2-column tiles, INCREMENT quick-add vs OPEN_SHEET Customize sheet (option groups, special instructions, quantity rules), local saveable cart, single SUBMIT_CART turn via Concierge.sendMessage. - Cart renderer for the BCOS cartView element: server-priced lines across stands, Remove (REMOVE_LINE), Show more restaurants, checkout opened by the host after an https *.tapin2.co allowlist check. - Theme via --fnb-* keys with placeholder defaults (Figma TBD). - Debug gallery and an end-to-end happy-path flow screen backed by a simulated BC/tapin2, using stage-derived fixtures. - Docs: fnb-tapin2-mapping.md, fnb-theme-keys.md. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
The tapin2/BCOS mapping and placeholder theme-key notes are working design documents, not SDK documentation; keep them out of the branch. Drop their README links and the code comment pointing at them. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Element entity_info is now a verbatim subset of tapin2 objects, with
tapin2's field names, nesting and integer ids:
- catalogItemCard = a products entry (product, category, orderId, ...);
the Customize sheet is built from product.modifierGroups
(minQuantity/maxQuantity/maxOnePerSelection, modifiers[].priceDiff).
- cartBar carries the tapin2 location once (orderingEnabled, isPaused,
waitTime) plus the venueId/eventId request ids.
- cartView = the cart/add order (id, idLast3, guid, items[],
distinctLocations, *Net totals); the checkout Review URL is built from
venueId, eventId and guid instead of receiptUrl.
[ORDER_DETAILS] is the tapin2 cart/add request body
(products[{locationId, quantity, note, product{Id, modifierGroups}}]);
BC adds orderId/deliveryMethod and strips submitId. Cart actions use
orderId/itemId. Widget copy, limits and currency move to
MenuOptions/CartOptions. Fixtures are regenerated from the stage
responses; the simulator parses the widget's user-turn text and answers
with a tapin2-shaped order.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
get_section_locations results are shown with the SDK's out-of-the-box
product-card carousel; no custom renderer is involved:
- BCOS maps each tapin2 location to a productCard (title, description +
wait time, section/paused/closed badge). Orderable stands link to
{scheme}://fnb/location?locationId=&title= via productPageURL and the
primary CTA.
- FnbLinks (portable) turns those links, received through the host's
ConciergeChat(handleLink), into FnbAction.SelectLocation, sent as a
"Show me the menu at …" turn with a [CART_ACTION] showMenu block.
- The E2E demo opens with the stands carousel (dummy tapin2 locations
around the real stage stand 19289); picking one shows that stand's
menu, "Show more restaurants" returns to the stands, and one order
spans stands.
- concierge debug source set: DemoMultimodalCards renders a raw
multimodalElements payload through the production parser and
RecommendationCards so the non-ConciergeChat demo shows the real cards.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
…feature/fnb-ordering-widgets-tapin2-strict
Follow the BC envelope contract: each F&B UI element is one
multimodal element {id, entityId, rendererId, entity_info} whose
payload is the tapin2 response body passed through untouched, and the
customer-owned renderer interprets it.
- FnbElement is the envelope (payload read from entity_info, or
payload). FnbRendererRegistry resolves renderers by rendererId:
"fnb.menu" -> MenuFnbRenderer (payload = the GET .../products array),
"fnb.cart" -> CartFnbRenderer (payload = the cart/add order).
Replaces the type-based, multi-card grouping.
- CatalogMenuMapper/CartSummaryMapper read the raw tapin2 bodies
directly; the cart uses the envelope entityId when the order has no id.
- venueId/eventId are read from the menu payload when tapin2 provides
them and sent in ORDER_DETAILS only then; otherwise BC takes them from
the conversation session.
- Demo, gallery and tests wrap the raw stage responses in envelopes; the
element-shaped fixtures are removed.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Drop the `payload` alias; `entity_info` is the envelope's payload field. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Codecov Report❌ Patch coverage is 📢 Thoughts on this report? Let us know! |
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.
Description
Related Issue
Motivation and Context
How Has This Been Tested?
Screenshots (if appropriate):
Types of changes
Checklist: