Skip to content

feat(studio): refine result feeds with signed SelectorsDocument and OpenAPI 3.1 - #1152

Draft
gildesmarais wants to merge 4 commits into
mainfrom
feat/config-studio
Draft

gildesmarais wants to merge 4 commits into
mainfrom
feat/config-studio

Conversation

@gildesmarais

@gildesmarais gildesmarais commented Sep 19, 2026 •

Copy link
Copy Markdown
Member

Summary

Token holders get a result-workspace config studio: validate / preview / suggest selectors, sign them into feed tokens, and generate via create. Flag-gated (STUDIO_ENABLED), OpenAPI 3.1 contract, SPA on #/result (no #/refine route).

This is still one large feature PR (~125 files). The four commits are review layers, not four small PRs:

  1. chore(dev) — local app against published Botasaurus (make up); independent
  2. feat(security) — SelectorsDocument, signed feed tokens, html2rss pin; foundation
  3. feat(api) — studio endpoints, OpenAPI 3.1, operator docs; depends on 2
  4. feat(frontend) — result-workspace UI + generated client; depends on 3

Also pins html2rss for selector-sample / structured validation support, and adds host-side Botasaurus compose as a small first commit.

Details

  • Studio API: POST /api/v1/feeds/validate, /preview, /suggest_selectors; optional selectors on create
  • Access token required; fail closed when STUDIO_ENABLED is off (URL-only create stays open)
  • Preview / suggest also need AUTO_SOURCE_ENABLED (live fetch)
  • Sign client selectors into feed tokens via SelectorsDocument
  • Flat result editor for ready + unresolved empty-extraction; guest/no-token hides selector controls
  • GET /api/v1 advertises instance.studio.enabled

Test plan

  • make ci-ready in Dev Container
  • Flag off: studio routes 403; URL-only create still works
  • Flag on + token: suggest → edit → preview → save mints a new token
  • Empty extraction with studio on opens unresolved workspace
  • Guest / no token: no selector controls
  • Browser smoke at http://127.0.0.1:4001/ for create → result → refine → save

@gildesmarais
gildesmarais marked this pull request as draft September 19, 2026 22:15
@gildesmarais
gildesmarais marked this pull request as ready for review September 20, 2026 09:38
@gildesmarais
gildesmarais marked this pull request as draft September 20, 2026 10:43
@gildesmarais gildesmarais changed the title feat: add an on-demand config studio for refined feeds feat(studio): refine feeds with ranked selector candidates Sep 21, 2026
@gildesmarais gildesmarais changed the title feat(studio): refine feeds with ranked selector candidates feat: allow refinement of feed results Sep 21, 2026
@gildesmarais gildesmarais changed the title feat: allow refinement of feed results feat(studio): refine result feeds with signed SelectorsDocument and OpenAPI 3.1 Sep 22, 2026
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