Skip to content

feat(seed-studio): add watch-parity experience generator#708

Open
up-tandem wants to merge 16 commits into
mainfrom
feat/seed-studio
Open

feat(seed-studio): add watch-parity experience generator#708
up-tandem wants to merge 16 commits into
mainfrom
feat/seed-studio

Conversation

@up-tandem
Copy link
Copy Markdown
Contributor

@up-tandem up-tandem commented Apr 10, 2026

Summary

Seed Studio now generates and publishes experiences that match the production /watch shape instead of an experimental flat preview. The branch keeps video selection inside the Strapi catalog, expands the studio to render the richer section set locally, and hardens the CMS publish path so saved experiences preserve canonical slugs and nested video relations.

What changed

Area Details
Shared watch contract Added packages/experience-templates for canonical section types, alias normalization, archetype layouts, section-key helpers, and parity checks so Seed Studio and the reference template stay aligned.
Generation flow Reworked apps/seed-studio generation around the CMS video catalog, provider-aware strict JSON schema generation where supported, and client reconciliation that keeps generated video blocks tied to Strapi candidates instead of placeholder or external URLs.
Preview parity Expanded local preview coverage for section wrappers and collection modules such as navigation carousel, media collection, cards, CTAs, info blocks, and promo banners. Standard preview videos now start on the first click, and the studio has the provider and model controls needed for the new generation path.
Publish hardening The CMS publish flow now sanitizes slugs centrally, returns structured invalid-slug and slug-collision responses, surfaces alternate slug suggestions in the Seed Studio dialog, and only patches nested video relations for component tables the CMS path can repair safely.
Regression coverage Added parity tests for packages/experience-templates plus focused CMS tests for slug sanitization and nested video relation collection so the watch-parity contract and publish behavior stay locked down.

Validation

  • pnpm --filter @forge/experience-templates lint
  • pnpm --filter @forge/experience-templates typecheck
  • pnpm --filter @forge/experience-templates test
  • pnpm --filter @forge/seed-studio lint
  • pnpm --filter @forge/seed-studio typecheck
  • pnpm --filter @forge/cms lint
  • pnpm --filter @forge/cms typecheck
  • pnpm --filter @forge/cms test src/api/seed-studio/services/seed-studio.test.ts src/lib/sanitize-slug.test.ts

Compound Engineering
GPT-5

sevenuphome and others added 2 commits April 10, 2026 18:27
Standalone Next.js app where the content team creates themed experiences
via chat. Claude CLI generates sections (video, text, bible quotes, Q&A,
quiz) and AI arranges per-platform ordering (web vs mobile). Publishes
directly to Strapi with nested video relation patching.

Key components:
- SSE streaming API route (spawn claude CLI) for real-time chat
- Split-screen UI: chat panel (40%) + live preview panel (60%)
- 8 section type renderers with platform toggle
- Strapi custom endpoints for video search, publish, and catalog stats
- Simple password auth with session cookie

🤖 Generated with Claude Opus 4.6 via Claude Code(https://claude.com/claude-code) + Compound Engineering v2.44.0

Co-Authored-By: Claude Opus 4.6 (1M context, extended thinking) <noreply@anthropic.com>
@railway-app
Copy link
Copy Markdown

railway-app Bot commented Apr 10, 2026

🚅 Deployed to the forge-pr-708 environment in forge

Service Status Web Updated (UTC)
@forge/web ✅ Success (View Logs) May 5, 2026 at 2:23 am
@forge/cms ✅ Success (View Logs) May 5, 2026 at 2:21 am
@forge/manager ✅ Success (View Logs) Apr 23, 2026 at 3:39 am

@railway-app railway-app Bot temporarily deployed to forge / forge-pr-708 April 10, 2026 06:28 Destroyed
@railway-app railway-app Bot temporarily deployed to forge / forge-pr-708 April 10, 2026 09:28 Destroyed
@railway-app railway-app Bot temporarily deployed to forge / forge-pr-708 April 10, 2026 09:37 Destroyed
url: string | undefined | null,
): string | undefined {
if (!url) return undefined
if (!url.includes("imagedelivery.net")) return url
@railway-app railway-app Bot temporarily deployed to forge / forge-pr-708 April 23, 2026 03:25 Destroyed
Comment on lines +574 to +581
const response = await fetch(
`https://generativelanguage.googleapis.com/v1beta/models/${model}:streamGenerateContent?alt=sse&key=${apiKey}`,
{
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify(body),
},
)
@up-tandem up-tandem changed the title feat(seed-studio): add AI-powered experience creator with chat-first UI feat(seed-studio): add watch-parity experience generator Apr 23, 2026
up-tandem and others added 3 commits April 23, 2026 16:53
Local Postgres pgdata bind-mounts under .tmp/pgdata/ when running the
devcontainer compose stack outside the container. Keep that out of the
working tree so it does not get accidentally committed.
Lands feat-107 (Admin AI Experience Drafting) end-to-end and the
follow-up editorial-quality + compliance pass on top of it.

Admin AI generation:
- new apps/admin/src/services/experience-ai/ — provider selection
  (OpenRouter -> OpenAI -> gated Codex CLI fallback), candidate
  retrieval with locale-matched VideoDubs, Zod model-facing draft
  schema, normalizer into BlocksSchema, editorial system prompt with
  structural template + locale guidance + few-shot reference
- new server action generate-draft-action.ts with CANVAS_NOT_EMPTY
  guard against canonical blocks and DRAFT revisions
- new ai-draft-panel.tsx empty-canvas-only AI entry surface
- editor wiring + UI guard test in experience-editor.test.tsx
- rule-witness log per successful generation, no prompt/candidate
  metadata leaked
- local Ollama embedding fallback service + script for offline
  candidate ranking

Web preview integration:
- apps/web/src/lib/admin-content.ts adapter hydrates admin-published
  experiences into the watch page with locale-matched VideoDub
  selection (per the 1-May locale mismatch solution doc)
- VideoHero, content.ts, env.ts updated to consume admin-content

Docs:
- feat-107 roadmap + drafting plan (2026-04-23-002)
- editorial quality plan + brainstorm (2026-05-04)
- 1-May solution doc on VideoDub language matching
- Christian experience agent brief informing prompt discipline

Verified end-to-end via Codex CLI fallback + browser smoke test of
four prompts: each produced a hero + multiple sections + cross-block
carousel + closing CTA.
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.

3 participants