Files
frames/docs/schema/frames.json
T
zooqueenandHanzo Dev 70b41673a3 frames: rebrand the fork to Hanzo Frames
Forked from HyperFrames (Apache-2.0), full history preserved.

Hosts are mapped explicitly and BEFORE the identifier rename, because
hyperframes.heygen.com is not decoration: 175 of its occurrences are $schema
identifiers that a validator dereferences. A blind rename would have left them
naming a host that never serves them. The schema files are in this repo under
docs/schema, so the mapped host is one we can actually serve -- that is the
condition that makes the rewrite safe, and serving them is a deploy task, not
an edit. docs/schema/hyperframes.json is renamed to frames.json to match the
identifier it is now published under.

api.heygen.com and the CLI auth against heygen.com are left UNRENAMED on
purpose. They are a dependency on HeyGen's SaaS, not a name of ours to take,
and the right move is to remove that integration rather than rebrand it.

LICENSE and CREDITS.md are untouched; NOTICE records the lineage.

Co-authored-by: Hanzo Dev <[email protected]>
2026-07-28 23:42:24 -07:00

62 lines
2.4 KiB
JSON

{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://frames.hanzo.ai/schema/frames.json",
"title": "Hyperframes Project Config",
"description": "Per-project configuration for a Hyperframes project (frames.json). Tells `frames add` which registry to pull items from and where to drop them in the project tree. Created by `frames init`; users may edit it to point at custom registries or reshape their project layout.",
"type": "object",
"required": ["registry", "paths"],
"additionalProperties": false,
"properties": {
"$schema": {
"type": "string",
"format": "uri",
"description": "JSON Schema URL — https://frames.hanzo.ai/schema/frames.json."
},
"registry": {
"type": "string",
"format": "uri",
"minLength": 1,
"description": "Base URL of the registry to pull items from. Point at the official Hyperframes registry or a custom one."
},
"paths": {
"type": "object",
"description": "Target paths for each item type, relative to the project root.",
"required": ["blocks", "components", "assets"],
"additionalProperties": false,
"properties": {
"blocks": {
"type": "string",
"minLength": 1,
"description": "Where `frames:block` items land. Defaults to `compositions`."
},
"components": {
"type": "string",
"minLength": 1,
"description": "Where `frames:component` items land. Defaults to `compositions/components`."
},
"assets": {
"type": "string",
"minLength": 1,
"description": "Where asset files (images, fonts, videos) land. Defaults to `assets`."
}
}
},
"media": {
"type": "object",
"description": "Media handling options.",
"additionalProperties": false,
"properties": {
"autoProxy": {
"type": "boolean",
"description": "Automatically create H.264 proxies for browser-hostile video codecs on supported preview surfaces. Defaults to true."
}
}
},
"authoringSkill": {
"type": "string",
"pattern": "^[a-z0-9][a-z0-9-]{0,63}$",
"description": "Owning authoring-workflow skill slug (e.g. product-launch-video). Set by `frames init --skill` or seeded from the first `frames render --skill`; every render of this project is then attributed to it on anonymous telemetry, without re-passing the flag."
}
}
}