Skip to content

Dev#3584

Merged
bernardhanna merged 3 commits into
masterfrom
dev
Jun 23, 2026
Merged

Dev#3584
bernardhanna merged 3 commits into
masterfrom
dev

Conversation

@bernardhanna

Copy link
Copy Markdown
Collaborator

No description provided.

bernardhanna and others added 3 commits June 23, 2026 10:58
Lets the support copilot make editorial text changes to allowlisted content
records through the same dry-run -> APPROVE -> execute -> report pipeline.
Records are Nova resources, so a human can also review/tweak them there.
Disabled by default (SUPPORT_AI_CONTENT_ENABLED=false).

- ContentActionRegistry: allowlist of editable content models (pages, slides,
  FAQ items, menus, events, podcasts, partners, ...). Page singletons resolve
  automatically; other records by id or a unique lookup field.
- ContentFieldResolver: editable columns resolved at runtime to string/text
  columns minus a structural deny-list (URLs, slugs, flags, relations,
  identifiers, SEO/keyword/category) and minus non-string casts. No per-model
  column list to maintain.
- ContentUpdateService: text-only value guards (rejects URLs, www refs, HTML/
  markup, over-length), protects Laravel translation-key fields, computes an
  exact before/after diff for the approval email, and re-validates at execution
  time rather than trusting the stored payload.
- Triage gains the content_update case type (only offered when enabled) plus
  content_model/content_identifier/content_changes/content_summary.
- Wired into diagnostics (before/after preview), approval email (diff),
  execute job, and completion email; setup-check reports content status;
  allowed_write_actions includes content_update.
- Unit tests for value guards, registry, and pre-DB plan validation; docs.

Co-authored-by: Cursor <cursoragent@cursor.com>
AI support copilot Phase 3: content edits on Nova-managed records
@bernardhanna bernardhanna merged commit eaab0e4 into master Jun 23, 2026
1 check failed
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.

1 participant