Files
ALwrity/docs/Alwrity copilot/Facebook_Writer_CopilotKit_Integration_Plan.md
2025-09-05 15:22:43 +05:30

12 KiB
Raw Permalink Blame History

Facebook Writer + CopilotKit: Feature Set and Implementation Plan

0) Current Implementation Status (Updated)

  • Core page and routing: /facebook-writer implemented with CopilotSidebar and scoped styling.
  • Readables: postDraft, notes exposed to Copilot; preferences summarized into system message.
  • Predictive state updates: live typing with progressive diff preview (green adds, red strikethrough deletes), then auto-commit.
  • Edit actions: editFacebookDraft (Casual, Professional, Upbeat, Shorten, Lengthen, TightenHook, AddCTA) with HITL micro-form; applies live preview via custom events.
  • Generation actions: generateFacebookPost, generateFacebookHashtags, generateFacebookAdCopy integrated with FastAPI endpoints; results synced to editor via window events.
  • Facebook Story: generateFacebookStory added with advanced and visual options (tone, include/avoid, CTA, stickers, text overlay, interactive types, etc.). Backend returns content plus one 9:16 image (images_base64[0]) generated via Gemini and the UI renders a Story Images panel.
  • Image generation module refactor: gen_gemini_images.py made backend-safe (removed Streamlit), added base64-first API, light retries, aligned with Gemini best practices.
  • Input robustness: frontend normalization/mapping to backend enum strings (prevents 422); friendly HITL validation.
  • Suggestions: progressive suggestions switch from “create” to “edit” when draft exists; stage-aware heuristics in place.
  • Chat memory and preferences: localStorage persistence of last 50 messages; recent conversation and saved preferences injected into makeSystemMessage; “Clear chat memory” button.
  • Confirm/Reject: explicit controls for predictive edits (Confirm changes / Discard) implemented.
  • Observability: Facebook writer requests flow through existing middleware; compact header control already live app-wide. Route-specific counters verification pending (planned below).

Gaps / Remaining:

  • Context-aware suggestions need further refinement (e.g., based on draft length, tone, goal, time of day).
  • Tests for actions/handlers, reducer-like state transitions, and suggestion sets.
  • Observability counters and tags for /api/facebook-writer/* endpoints.
  • Backend session persistence (server-side conversation memory) for cross-device continuity (optional, phase-able).
  • Image generation controls (toggle, retries, error UX), caching, and cost guardrails.

1) Goals

  • Provide a specialized Facebook Writer surface powered by CopilotKit.
  • Deliver intelligent, HITL (human-in-the-loop) workflows using Facebook Writer PR endpoints.
  • Reuse CopilotKit best practices (predictive state updates) as demonstrated in the example demo.
  • Ensure observability via existing middleware so system status appears in the main header control.

Reference demo: https://demo-viewer-five.vercel.app/feature/predictive_state_updates


2) Feature Set

A. Core Copilot sidebar (Facebook Writer page)

  • Personalized title and greeting (brand/tenant aware when available).
  • Progressive suggestion groups:
    • Social content
    • Ads & campaigns
    • Engagement & optimization
  • Always-on context-aware quick actions based on draft state (empty vs non-empty vs long draft).

B. Predictive state + collaborative editing

  • Readables
    • draft: current post text
    • notes/context: campaign intent, audience, key points
    • preferences: tone, objective, hashtags on/off (persisted locally; summarized to system message)
  • Actions
    • updateFacebookPostDraft(content)
    • appendToFacebookPostDraft(content)
    • editFacebookDraft(operation)
    • summarizeDraft() (planned)
    • rewriteDraft(style|objective) (planned)

C. PR endpoint coverage (initial, minimal)

  • POST /api/facebook-writer/post/generate (implemented)
  • POST /api/facebook-writer/hashtags/generate (implemented)
  • POST /api/facebook-writer/ad-copy/generate (implemented)
  • POST /api/facebook-writer/story/generate (implemented)
  • GET /api/facebook-writer/tools (implemented)
  • GET /api/facebook-writer/health (implemented)

Next endpoints (planned):

  • Subsequent additions: reel/carousel/event/group/page-about

D. HITL micro-forms

  • Minimal modals inline in chat for:
    • Objective (awareness, engagement, traffic, launch)
    • Tone (professional, casual, upbeat, custom)
    • Audience (free text)
    • Include/avoid (free text)
    • Hashtags on/off

E. Intelligent suggestions

  • Empty draft → “Create launch teaser”, “Benefit-first post”, “3 variants to A/B test”
  • Non-empty draft → “Tighten hook”, “Add CTA”, “Rewrite for professional tone”, “Generate hashtags” (live)
  • Long draft → “Summarize to 120-150 chars intro”, “Split into carousel captions” (future)

F. Observability and status

  • Ensure facebook endpoints counted in monitoring so the compact header “System • STATUS” reflects their activity.

3) Frontend Implementation Plan

3.1 Route and page

  • Route: /facebook-writer
  • Component: frontend/src/components/FacebookWriter/FacebookWriter.tsx
    • CopilotSidebar (scoped styling class)
    • Textareas for notes and postDraft
    • Readables: notes, postDraft
    • Actions: updateFacebookPostDraft, appendToFacebookPostDraft

3.2 API client

  • File: frontend/src/services/facebookWriterApi.ts
    • postGenerate(req)
    • adCopyGenerate(req)
    • hashtagsGenerate(req)
    • storyGenerate(req) [advanced + visual options]
    • tools(), health()
  • Types aligned with PR models (enum value strings must match server models).

3.3 Copilot actions (HITL + server calls)

  • File: frontend/src/components/FacebookWriter/RegisterFacebookActions.tsx
    • Action: generateFacebookPost
      • renderAndWaitForResponse → prompt for goal, tone, audience, include/avoid, hashtags
      • Call api.postGenerate → update draft
    • Action: generateHashtags
      • renderAndWaitForResponse → topic or use draft
      • Call api.hashtagsGenerate → append to draft
    • Action: generateAdCopy (implemented)
      • renderAndWaitForResponse → prompt for business_type, product/service, objective, format, audience, targeting basics, USP, budget
      • Call api.adCopyGenerate → append primary text to draft; keep variations for UI
    • Action: generateFacebookStory (implemented)
      • renderAndWaitForResponse → advanced (hooks, CTA, etc.) and visual options (background type/prompt, overlay, interactive types)
      • Call api.storyGenerate → append story content; dispatch fbwriter:storyImages to render returned image(s)
  • Helper: custom window events keep editor as single source of truth.

3.4 Suggestions and system message

  • Suggestions computed from draft length, last action result, and notes presence.
  • System message includes short brand tone guidance when available.

3.5 Demo parity (predictive state updates)

  • Expose two local actions for state updates:
    • updateFacebookPostDraft
    • appendToFacebookPostDraft
  • Ensure Copilot can call those without round-tripping to backend for quick edits.
  • Confirm/Reject step before committing predictive edits (implemented)

4) Backend Integration Plan

4.1 Use PR structure

  • Routers: backend/api/facebook_writer/routers/facebook_router.py.
  • Services: backend/api/facebook_writer/services/*.
  • Models: backend/api/facebook_writer/models/*.

4.2 Minimal requests for post.generate

  • Map HITL selections to FacebookPostRequest fields:
    • post_goal: enum string value (e.g., “Build brand awareness”)
    • post_tone: enum string value (e.g., “Professional”)
    • media_type: “None” (default)
    • advanced_options: from toggles
  • Handle 422 by ensuring exact enum text.

4.3 Monitoring

  • No changes required if middleware already counts routes; confirm they appear in status.

5) UX details

  • Sidebar personalized title: “ALwrity • Facebook Writer”.
  • Glassomorphic style aligned with SEO assistant.
  • Accessibility: focus-visible rings, reduced-motion respect.
  • Error paths: concise toast + retry in HITL form.

6) Milestones

  • M1 (Done): Page + readables + predictive edits + suggestions (start/edit) + health/tools probe.
  • M2 (Done): HITL for post.generate; integrate API; hashtags action; editor sync.
  • M3 (Updated): Ad copy (done), Variations UI (done), Story (done), context-aware suggestions (ongoing), tests (pending).
  • M4 (Planned): Reel/Carousel; variants pipeline; scheduling hooks; session persistence (optional).

6.1 Next-phase Tasks (Detailed)

  • Ad Copy (M3)
    • Suggestion chips: “Create ad copy”, “Short ad variant (primary text)”, “Insert headline X”.
    • A/B insert UX: quick insert/replace buttons already present; add multi-insert queue.
  • Story (M3)
    • HITL toggle for image generation on/off; regenerate button; image count (13) cap.
    • Gallery UX: copy/download, insert image markdown into draft, or upload to asset store.
    • Improve visual prompt composition from form fields (brand + tone + CTA region).
  • Context-aware Suggestions (M3)
    • Derive stage features: draft length buckets, tone inferred from text, presence of CTA/hashtags.
    • Swap suggestion sets accordingly; include “Summarize intro” for long drafts.
  • Confirm/Reject for Predictive Edits (M3)
    • Option: preference to auto-confirm future edits.
  • Tests (M3)
    • Unit test action handlers (param mapping, event dispatch), reducer-like state transitions.
    • Snapshot test suggestion sets for start/edit/long-draft.
    • API client smoke tests for post/hashtags/ad-copy/story.
  • Observability (M3)
    • Verify /api/facebook-writer/* counters in header; add tags for route family.
    • Log action success/error counts.
  • Session Persistence (M4, optional)
    • Backend copilot_sessions + messages tables; persist assistant/user messages.
    • Provide sessionId per user/page; prehydrate sidebar from server.
  • Next endpoints (M4)
    • Implement reel/carousel/event/group/page-about endpoints with parity HITL forms.

6.2 Known limitations / Non-goals (for now)

  • Image generation: Gemini outputs include SynthID watermark; outputs not guaranteed each call; currently generates 1 image for story.
  • Cost/quotas: No server-side budgeting/limits yet for image gen; add per-user caps and caching.
  • Asset pipeline: No upload/CDN integration yet; images are rendered inline as base64.

7) Risks & Mitigations

  • Enum mismatches → Use exact server enum strings; surface helpful errors.
  • Long outputs → Clamp max_tokens server-side; provide “shorten” action client-side.
  • Rate limiting → Respect retry/backoff; keep client timeouts reasonable.

Reference (Gemini image generation best practices): https://ai.google.dev/gemini-api/docs/image-generation


8) Success Criteria

  • End-to-end draft creation via Copilot with a single click (HITL).
  • Predictive state edits observable in real-time.
  • Monitoring reflects API usage in the header control.
  • Clean, reproducible flows for post + hashtags; extendable to ads and other tools.

9) Immediate Next Steps (Page About Implementation)

9.1 Frontend API Client

  • Add pageAboutGenerate method to frontend/src/services/facebookWriterApi.ts
  • Match payload structure with FacebookPageAboutRequest model
  • Include proper TypeScript interfaces for request/response

9.2 CopilotKit Action

  • Create generateFacebookPageAbout action in frontend/src/components/FacebookWriter/RegisterFacebookActions.tsx
  • Implement HITL form with fields for:
    • business_name, business_category, business_description
    • target_audience, unique_value_proposition, services_products
    • page_tone, contact_info, keywords, call_to_action
  • Add enum mapping for business_category and page_tone to prevent 422 errors
  • Handle response with multiple sections and append to draft

9.3 UI Integration

  • Add "Page About" suggestion chip in FacebookWriter.tsx
  • Consider displaying generated sections in a structured format
  • Ensure proper error handling and loading states

9.4 Testing

  • Test the complete flow from CopilotKit action to backend response
  • Verify enum mapping prevents 422 errors
  • Check that generated content properly appends to draft

9.5 Documentation Update

  • Update this document once Page About is implemented
  • Mark all Facebook Writer endpoints as complete
  • Plan next phase: testing, observability, and optimization