@@ -395,7 +395,7 @@ def on_user_input_needed(input_name: str, prompt: str) -> str:
395395 )
396396
397397
398- def _create_jinja_env () -> jinja2 .Environment :
398+ def _create_jinja_env (working_dir : pathlib . Path ) -> jinja2 .Environment :
399399 # we use this to catch undefined variables at runtime
400400 class OnUndefinedVariable (jinja2 .Undefined ):
401401 def __init__ (self , * args : t .Any , ** kwargs : t .Any ) -> None :
@@ -417,7 +417,7 @@ def __init__(self, *args: t.Any, **kwargs: t.Any) -> None:
417417 def __str__ (self ) -> str :
418418 return self .value or "<UNDEFINED>"
419419
420- env = jinja2 .Environment (undefined = OnUndefinedVariable , loader = jinja2 .FileSystemLoader ("." ))
420+ env = jinja2 .Environment (undefined = OnUndefinedVariable , loader = jinja2 .FileSystemLoader (working_dir ))
421421
422422 # allow prompts to call tools
423423 for name , tool_fn in _tools .items ():
@@ -453,10 +453,10 @@ def we_need_an_async_loop_thread() -> None:
453453 return env
454454
455455
456- def interpolate (raw : str , extra : dict [str , t .Any ] | None = None ) -> str :
456+ def interpolate (raw : str , extra : dict [str , t .Any ] | None = None , working_dir : pathlib . Path = pathlib . Path ( "." ) ) -> str :
457457 """Interpolate the current state into a string."""
458458
459- env = _create_jinja_env ()
459+ env = _create_jinja_env (working_dir )
460460 template = env .from_string (raw )
461461 context = _variables | (extra or {})
462462
0 commit comments