feat(seed-studio): add watch-parity experience generator#708
Open
up-tandem wants to merge 16 commits into
Open
feat(seed-studio): add watch-parity experience generator#708up-tandem wants to merge 16 commits into
up-tandem wants to merge 16 commits into
Conversation
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>
|
🚅 Deployed to the forge-pr-708 environment in forge
|
| url: string | undefined | null, | ||
| ): string | undefined { | ||
| if (!url) return undefined | ||
| if (!url.includes("imagedelivery.net")) return url |
# Conflicts: # pnpm-lock.yaml
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), | ||
| }, | ||
| ) |
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.
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.
Summary
Seed Studio now generates and publishes experiences that match the production
/watchshape 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
packages/experience-templatesfor canonical section types, alias normalization, archetype layouts, section-key helpers, and parity checks so Seed Studio and the reference template stay aligned.apps/seed-studiogeneration 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.packages/experience-templatesplus 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 lintpnpm --filter @forge/experience-templates typecheckpnpm --filter @forge/experience-templates testpnpm --filter @forge/seed-studio lintpnpm --filter @forge/seed-studio typecheckpnpm --filter @forge/cms lintpnpm --filter @forge/cms typecheckpnpm --filter @forge/cms test src/api/seed-studio/services/seed-studio.test.ts src/lib/sanitize-slug.test.ts