mirror of
https://github.com/heygen-com/hyperframes.git
synced 2026-09-01 19:42:03 +00:00
Closes #304. ## Summary The three `/schema/*.json` URLs baked into every Hyperframes project as `\$schema` references are 404ing on the live docs site — blocking editor autocomplete and validation. - \`https://hyperframes.heygen.com/schema/hyperframes.json\` — **404** (missing entirely) - \`https://hyperframes.heygen.com/schema/registry.json\` — **404** (only in npm package) - \`https://hyperframes.heygen.com/schema/registry-item.json\` — **404** (only in npm package) Mintlify serves top-level non-MDX dirs in \`docs/\` at \`/\<dir>/*\` (confirmed by \`docs/logo/*.svg\` → \`/logo/*.svg\`). This PR drops the three schemas into \`docs/schema/\` so the URLs resolve. ## What changed | File | Role | |---|---| | \`docs/schema/hyperframes.json\` | **New.** Authored from the \`ProjectConfig\` type in \`packages/cli/src/utils/projectConfig.ts\`. | | \`docs/schema/registry.json\` | Mirror of \`packages/core/schemas/registry.json\`. | | \`docs/schema/registry-item.json\` | Mirror of \`packages/core/schemas/registry-item.json\`. | | \`scripts/sync-schemas.ts\` | Keeps the registry mirrors in lockstep with their authoritative copies in \`packages/core/schemas/\`. \`--check\` mode fails the Docs workflow on drift. | | \`.github/workflows/docs.yml\` | Runs \`tsx scripts/sync-schemas.ts --check\` on every PR touching docs or core schemas. | | \`package.json\` | \`sync-schemas\` / \`sync-schemas:check\` npm scripts. | ## Why not make \`packages/core/schemas/\` authoritative for \`hyperframes.json\` too? \`hyperframes.json\` is CLI config, not a core type. Keeping the schema in \`docs/\` avoids an artificial dependency between \`@hyperframes/core\` and \`@hyperframes/cli\`. If the two ever need to align, we can flip the direction then. ## Verification - \`bun run sync-schemas:check\` → \`2/2 in sync\`. - Ajv (draft 2020-12, in-process) validation against 9 cases: - ✓ real factory-series-c-video config - ✓ default shape from \`hyperframes init\` - ✓ \`\$schema\` is optional - ✓ missing registry → rejected - ✓ missing paths.assets → rejected - ✓ extra top-level key → rejected - ✓ empty registry string → rejected - ✓ empty block path → rejected - ✓ missing paths entirely → rejected ## Test plan - [x] \`tsx scripts/sync-schemas.ts --check\` passes locally - [x] Schemas parse as valid JSON and validate real/default project configs - [x] After merge: \`curl -sI https://hyperframes.heygen.com/schema/hyperframes.json\` returns 200 once Mintlify redeploys - [x] Same check for \`/schema/registry.json\` and \`/schema/registry-item.json\` - [x] VS Code autocomplete and error-highlighting work on \`hyperframes.json\` without extra config ## Notes - The Docs workflow now triggers on \`packages/core/schemas/**\` and \`scripts/sync-schemas.ts\` in addition to \`docs/**\`, so a core-schemas change that forgets to run \`sync-schemas\` will fail CI instead of silently publishing stale docs. - No runtime / API changes to any package; ship independent of a version bump.
50 lines
1.8 KiB
JSON
50 lines
1.8 KiB
JSON
{
|
|
"name": "hyperframes-monorepo",
|
|
"private": true,
|
|
"repository": {
|
|
"type": "git",
|
|
"url": "https://github.com/heygen-com/hyperframes"
|
|
},
|
|
"workspaces": [
|
|
"packages/*"
|
|
],
|
|
"type": "module",
|
|
"scripts": {
|
|
"dev": "bun run studio",
|
|
"build": "bun run --filter '*' build",
|
|
"build:producer": "bun run --filter @hyperframes/producer build",
|
|
"studio": "bun run --filter @hyperframes/studio dev",
|
|
"build:hyperframes-runtime": "bun run --filter @hyperframes/core build:hyperframes-runtime",
|
|
"build:hyperframes-runtime:modular": "bun run --filter @hyperframes/core build:hyperframes-runtime:modular",
|
|
"verify:packed-manifests": "node scripts/verify-packed-manifests.mjs",
|
|
"set-version": "tsx scripts/set-version.ts",
|
|
"sync-schemas": "tsx scripts/sync-schemas.ts",
|
|
"sync-schemas:check": "tsx scripts/sync-schemas.ts --check",
|
|
"lint": "oxlint . && tsx scripts/lint-skills.ts",
|
|
"lint:skills": "tsx scripts/lint-skills.ts",
|
|
"lint:fix": "oxlint --fix .",
|
|
"format": "oxfmt .",
|
|
"test": "bun run --filter '*' test",
|
|
"format:check": "oxfmt --check .",
|
|
"knip": "knip",
|
|
"generate:previews": "tsx scripts/generate-template-previews.ts",
|
|
"generate:catalog-previews": "tsx scripts/generate-catalog-previews.ts",
|
|
"upload:docs-images": "bash scripts/upload-docs-images.sh",
|
|
"prepare": "test -d .git && lefthook install || true"
|
|
},
|
|
"devDependencies": {
|
|
"@commitlint/cli": "^20.5.0",
|
|
"@commitlint/config-conventional": "^20.5.0",
|
|
"@hyperframes/player": "workspace:*",
|
|
"@types/node": "^25.0.10",
|
|
"concurrently": "^8.2.0",
|
|
"happy-dom": "^20.9.0",
|
|
"knip": "^6.0.3",
|
|
"lefthook": "^2.1.4",
|
|
"oxfmt": "^0.41.0",
|
|
"oxlint": "^1.56.0",
|
|
"tsx": "^4.21.0",
|
|
"typescript": "^5.0.0"
|
|
}
|
|
}
|