From debadc8989ce8244f0ec92c74aabb3bc9c04bbc8 Mon Sep 17 00:00:00 2001 From: itelo Date: Tue, 11 Aug 2026 13:58:02 -0300 Subject: [PATCH] feat(build-plan): customer_portal goal asks for connections + reservation deep-link The customer_portal goal was a generic "create a portal and embed it", so the integration agent never built the two flows the reference example demonstrates. Enrich it to request both explicitly: (1) an embedded connections-and-mapping page (connect + organize + manage), and (2) opening the portal directly to a reservation via pushData + landing_page/deep_link. Points the agent at the Customer Portal example app for structure. Keeps existing behavior: still names the framework, still ignores build-block selections (customer_portal has no hint lines). All build-plan tests pass. --- src/lib/steps/build-plan.ts | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/lib/steps/build-plan.ts b/src/lib/steps/build-plan.ts index 4b097a6..fe714bd 100644 --- a/src/lib/steps/build-plan.ts +++ b/src/lib/steps/build-plan.ts @@ -94,11 +94,18 @@ export function composeGoal(args: { if (mode === 'customer_portal') { return ( 'Integrate Seam using the Customer Portal so the UI is Seam-hosted and ' + - 'this app only calls a couple of endpoints. Create a Customer Portal for ' + - 'a customer (it returns a hosted URL), embed it in the app (iframe or a ' + - 'magic link), and regenerate the portal per visit since the session is ' + - `short-lived. Wire it into ${target}'s conventions, load SEAM_API_KEY from ` + - 'the existing .env, and add a short runnable example.' + + 'this app only calls a few endpoints. Build two flows. ' + + '(1) A connections-and-mapping page: create an embedded Customer Portal ' + + '(is_embedded: true) with the connect, organize, and manage features so ' + + 'the customer connects their device accounts and maps devices onto their ' + + 'spaces, and embed the returned hosted URL in an iframe. ' + + '(2) Open a reservation directly: push the reservation to Seam ' + + '(customers.pushData), then create a portal deep-linked to that ' + + 'reservation (landing_page or deep_link) that a reservation page links ' + + 'to. Regenerate the portal on every visit since the session token is ' + + `short-lived. Wire it into ${target}'s conventions, load SEAM_API_KEY ` + + "from the existing .env, model the structure on Seam's Customer Portal " + + 'example app for this framework, and add a short runnable example.' + noteSuffix ) }