Skip to content

Align CLI with primitive and selector vocabulary - #2

Merged
gersham merged 3 commits into
mainfrom
cursor/primitive-selector-vocabulary-542e
Aug 30, 2026
Merged

gersham merged 3 commits into
mainfrom
cursor/primitive-selector-vocabulary-542e

Conversation

@gersham

@gersham gersham commented Aug 30, 2026 •

Copy link
Copy Markdown
Contributor

Summary

  • replace media list --kind with --primitive, reject the retired media flag, and send the primitive parameter
  • move playlist authoring, templates, bundle export/import, validation, and smoke fixtures to primitives[] with a flattened primitive field
  • enforce that image/video primitives own selectors (by:id|ids|all|tag), while iframe/application primitives reject selectors and retired top-level selection fields
  • snapshot bundle selectors to by:id/by:ids, and rename application event output to primitive_id
  • update public help, README, and agent guidance to use the primitive vocabulary

Contract follow-up

The backend OpenAPI snapshot pinned in vendor/ still contains the pre-change kind, placements, nested content, resolved items, and placement_id vocabulary. This PR deliberately does not sync or hand-edit generated vendor inputs: the backend primitive-shape PR is still in flight, and the vendored snapshot must be refreshed from that reviewed backend checkout once it lands. The CLI implementation here already emits the target wire names rather than claiming compatibility with the stale snapshot.

Verification

Passed on the final revision:

  • npm ci (0 vulnerabilities)
  • npm run check:public
  • npm run vendor:check (internal snapshot consistency only)
  • npm run typecheck
  • npm run lint
  • npm test (347 tests: 346 passed, 1 skipped, 0 failed)
  • npm run smoke:mock
  • npm run pack:dry (229 files, 241.7 kB packed / 1.1 MB unpacked)
  • npm run pack:release (13 exact runtime dependencies; artifact check passed)
  • npm run check:npm-install

Final screenrig-cli.tgz SHA-256: 8ca6feca8e9c8053fe16e033d68d6c5feef00de995923d59c8d19205f51c5e03.

A stale-vocabulary scan across non-generated TypeScript and Markdown found no old placements, nested content.type/content.selector, wire_kinds, media --kind image, placement_id, or resolved-items language. The only legacy playlist vocabulary is in the pinned generated vendor snapshot and tests explicitly identifying that snapshot.

Not run: npm run smoke:server (requires an owned backend already serving the new wire), npm run vendor:check:drift (no reviewed backend checkout), live plugin/player/native/browser playback, npm publication, or deployment.

Scope

Do not merge yet. No npm publish, plugin bundle update, backend dispatch, player change, or deployment.

Open in Web Open in Cursor 

cursoragent and others added 3 commits August 30, 2026 16:35
Co-authored-by: Gersham Meharg <gersham@users.noreply.github.com>
Co-authored-by: Gersham Meharg <gersham@users.noreply.github.com>
Co-authored-by: Gersham Meharg <gersham@users.noreply.github.com>
@gersham
gersham marked this pull request as ready for review August 30, 2026 16:39
@gersham
gersham merged commit bddbfdb into main Aug 30, 2026
5 checks passed
@nxtman123
nxtman123 deleted the cursor/primitive-selector-vocabulary-542e branch September 10, 2026 21:04
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.

2 participants