Skip to main content
The schema-driven form renderer and the JSON Schema helpers it is built on.

CompletionProvider

Fetch argument-value suggestions for a string field. argName is the field’s path within the form (a property key at the root, a dotted path when nested); partial is the value typed so far. The caller owns the source (e.g. an MCP completion/complete call) — SchemaForm only routes string fields through the completion-backed input when a provider is supplied.

Discriminator

A Pydantic-style discriminated-union tag: which property selects the variant. Properties

ExpressionFieldComponent

The expression-authoring door a host INJECTS into the form — JqField, which the host imports straight from @tai42/jq-studio. It is a COMPONENT, rendered as an element, never called as a function: the door owns hooks and state (editor open, worker handle), which only survive as its own element identity. A host may inject a lazy door to keep the jq subgraph in a split chunk — the form mounts it inside a Suspense boundary that paints the resting shell while that chunk resolves. Related: ExpressionFieldProps

ExpressionFieldContext

The ambient door for the whole form. Absent (the default), an expression-annotated field renders the PLAIN string input, byte-identically to an unannotated one — the jq authoring door is opt-in, because the dynamic import that would fetch it on demand still EMITS its chunks, worker, and wasm into every consumer that bundles the SDK. A host wires it ONCE above its tree (SchemaEditor’s preview and ElicitationForm render forms a caller does not own the props of, and a plugin page renders its own); the form’s own expressionField prop overrides it for a single form. Related: ExpressionFieldComponent

ExpressionFieldProps

Exactly the props the form hands an injected expression field — no more, so any expression editor can satisfy the contract, and no less, so the form is free to pass all of them. The label/description/error slots are the door’s own chrome: an expression field brings its a11y-linked label and helper slots, so the form does NOT wrap it in the usual Field. Properties Related: ExpressionInputShape

ExpressionInputKey

One top-level key of the expression’s input document, with a one-line gloss. Properties

ExpressionInputShape

What . IS for an expression-annotated field, as the form hands it to the injected door. Built by the renderer from the schema’s x-tai42-expression annotation. Like the annotation type it is built from, this MIRRORS jq-studio’s input-shape descriptor without importing it: the schema-form tree names no jq type, in code OR in its declarations, which is what keeps a consumer that never injects a door free of the jq subgraph. JqField satisfies it structurally; a test pins that. Properties Related: ExpressionInputKey

JsonSchema

A structural JSON Schema node. All keys optional; the index signature keeps the type permissive so an unrecognized keyword is never a type error — it is a runtime classification concern the renderer handles. Properties Related: Discriminator, JsonSchemaType

JsonSchemaType

The JSON-Schema type keyword values Pydantic emits.

RecordEntryContext

One record entry, handed to a host-supplied value renderer. Properties Related: JsonSchema

RecordEntryRenderer

A host-supplied per-entry value renderer for record fields — the injection point a masked/secret editor (or any other value affordance) mounts through. It returns the node to render in the entry’s value slot; returning entry.defaultField falls back to the built-in editor. Absent (the default), every entry renders its defaultField. Related: RecordEntryContext

RecordEntryRendererContext

Related: RecordEntryRenderer

SchemaForm

Render a controlled form for schema. The root is usually an object (a tool’s input schema); a scalar/array/union root renders as a single field group. Props Related: SchemaFormProps

SchemaFormErrors

A structured, per-path bag of validation problems. Keys are dotted/bracketed paths from the form root ("" = the root value, "user.name", "tags[0]"); each entry is a loud, human-readable message. Empty object = valid.

SchemaFormProps

Properties Related: CompletionProvider, ExpressionFieldComponent, JsonSchema

SecretRef

The value SecretRefField emits and reads back. The source discriminant is what the host branches on:
  • key — reference an existing env key; the host writes !ENV ${key}.
  • paste — a new plaintext secret; the host stores it under a generated key (combined op) and writes the resulting marker. secret is write-only and is never rendered.

SecretRefField

Props Related: SecretRefFieldProps

SecretRefFieldProps

Properties Related: SecretRef

defaultValueForSchema

The initial value for a schema. root carries the $defs document for $ref resolution and defaults to the schema itself (the common whole-tool-schema call). Parameters Related: JsonSchema

resolveRef

Resolve an internal $ref against the document root, following chained refs (a $ref whose target is itself a $ref). Only same-document pointers are supported (#/$defs/Name, #/definitions/Name, #); an external or unresolvable ref throws LOUDLY rather than yielding a silent empty schema. A schema with no $ref is returned unchanged. A pointer cycle throws. Parameters Related: JsonSchema

validateAgainstSchema

Validate value against schema, returning a per-path error bag (empty = valid). The caller runs this before submit and feeds the result back to SchemaForm for display. options.maxUploadBytes mirrors the renderer’s maxUploadBytes prop so a media field’s byte cap is enforced identically here. Parameters Related: JsonSchema, SchemaFormErrors