feat(instructions_utils): add Jinja2-based templating with use_jinja2 flag - #6593
Open
guptaishaan wants to merge 1 commit into
Open
feat(instructions_utils): add Jinja2-based templating with use_jinja2 flag#6593guptaishaan wants to merge 1 commit into
guptaishaan wants to merge 1 commit into
Conversation
… flag The existing regex-based substitution in `inject_session_state` cannot express Signed-off-by: Ishaan <ishaangupta0408@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The existing regex-based substitution in
inject_session_statecannot expressconditionals, loops, or filters, which limits how dynamic agent instructions
can be.
This change extracts the current regex logic into a private
_render_with_regexhelper and adds a new private_render_with_jinja2helper that sets up a Jinja2 async environment, exposes all session state
variables as top-level template variables, and provides an
artifact()async callable so templates can load artifact content inline.
A new
use_jinja2: bool = Falseparameter is added to the publicinject_session_statefunction. WhenFalse(the default) the functiondelegates to
_render_with_regex, preserving full backward compatibility.When
True, it delegates to_render_with_jinja2, enabling Jinja2 syntaxsuch as
{{ var }},{% if … %},{% for … %}, and artifact access via{{ artifact('name') | await }}.Unit tests covering basic variable substitution, conditionals, for-loops,
artifact loading, and undefined-variable errors are added to
tests/unittests/utils/test_instructions_utils.py.Fixes #2942