Skip to content

[codex] add input-field jinja rendering support#79

Merged
darinkishore merged 1 commit intomainfrom
codex/input-render-jinja-support
Feb 17, 2026
Merged

[codex] add input-field jinja rendering support#79
darinkishore merged 1 commit intomainfrom
codex/input-render-jinja-support

Conversation

@darinkishore
Copy link
Collaborator

Summary

This change adds first-class #[render(jinja = "...")] support for #[input] fields in Signature-derived structs and wires runtime rendering in ChatAdapter.

Problem

Input rendering previously supported #[format(...)] serialization only. There was no typed, per-field templating path for inputs, and no compile-time diagnostics for invalid #[render] usage.

Root Cause

FieldMetadataSpec only carried format hints and the derive macro only parsed #[format]/alias/constraints. The adapter formatting path had no metadata-driven render mode for input fields.

What Changed

  • Added InputRenderSpec in schema metadata and propagated it through FieldSchema.
  • Extended #[derive(Signature)] to parse and validate #[render(jinja = "...")]:
    • compile-time Jinja syntax validation
    • conflicts with #[format]
    • restricted to #[input]
    • duplicate/invalid-arg diagnostics
    • alias collision diagnostics after alias resolution
  • Updated ChatAdapter to render input fields based on metadata:
    • default behavior (raw string or JSON)
    • explicit #[format(...)]
    • Jinja rendering with context (this, input, field, vars)
  • Added adapter Jinja environment setup aligned with existing BAML behavior and explicit helper filters (regex_match, sum, truncate) while keeping dependency declarations unchanged.
  • Added/updated macro tests and UI tests for new diagnostics.
  • Updated docs for #[render] usage and runtime behavior.

Validation

  • cargo test -p dspy-rs --test test_input_format -q
  • cargo test -p dsrs_macros -q

Notes

Dependency source for minijinja remains unchanged (boundaryml/minijinja on current branch pinning strategy).

@darinkishore darinkishore force-pushed the codex/input-render-jinja-support branch from 2749a23 to 0e3f648 Compare February 17, 2026 07:03
@darinkishore darinkishore merged commit dfd8a85 into main Feb 17, 2026
8 of 10 checks passed
@darinkishore darinkishore deleted the codex/input-render-jinja-support branch February 17, 2026 08:36
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.

1 participant