Developer preview. Vela, Facet, and Quire are pre-release and in active development — syntax, APIs, and availability may change, and they are not yet generally available.
SStretch Dev Docs
Quire

Project & Schemas

Built-in and generated schemas, merge rules, and schema-driven compile behavior.

Quire validates projects against a schema extension plus built-in StretchPress content and commerce types.

Schema discovery

check and compile search up from the source file for:

  • quire.schema.json
  • stretchpress.schema.json

Use --schema path/to/schema.json to force one schema for a command.

Built-in + project schema

Built-in schema covers base StretchPress content and commerce model roots. Projects extend it via:

  • primitive type names
  • object types/fields
  • capabilities
  • formatters
  • view props
  • block definitions

Generated schema extension shape (conceptual):

{
  "primitives": ["CampaignID"],
  "types": {
    "Review": {
      "fields": {
        "id": "String",
        "rating": "Number"
      }
    }
  },
  "capabilities": {
    "reviews.open": { "args": ["ReviewID"], "returns": "Action" }
  },
  "blocks": {
    "reviewCard": {
      "props": { "rating": "Number", "body": "String" },
      "required": ["rating", "body"],
      "children": false
    }
  }
}

Merge behavior

  • primitive names: unioned
  • object types: overwritten by type name
  • capabilities/formatters/blocks: overwritten by name/path
  • view props: overwritten by name

Malformed extensions are rejected before compile.

Live schema generation

Generated extensions are created from a platform live model:

quire generate-schema live-model.json --out quire.schema.json

live-model.json must satisfy schemas/quire-live-model.v1.json. The generated output must satisfy schemas/quire-project-schema.v1.json.

The generated contract can include project content, commerce types, and block/capability additions:

{
  "types": {
    "Customer": {
      "fields": { "id": "String", "email": "String" }
    }
  },
  "capabilities": {
    "commerce.discount.apply": {
      "args": ["String"],
      "returns": "Action"
    }
  },
  "blocks": {
    "discountBanner": {
      "props": { "code": "String", "action": "Action" },
      "required": ["code", "action"],
      "children": false
    }
  }
}

Project builds and manifests

quire build compiles all discovered .quire files under a directory:

quire build ./views --out ./dist

Directories that contain quire.package.json are treated as packages and skipped as views; their components remain importable.

Ignored directories include:

  • .git
  • node_modules
  • tmp
  • dist
  • coverage