Skip to content

Commit f6efe9a

Browse files
committed
fix: using agent path as load path for jinja include directive
1 parent 3cf438e commit f6efe9a

File tree

2 files changed

+6
-6
lines changed

2 files changed

+6
-6
lines changed

nerve/runtime/agent.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,13 +117,13 @@ def _get_system_prompt(self) -> str | None:
117117
for name, value in state.get_knowledge().items():
118118
raw += f"\n\n## {name.capitalize()}\n\n{value}"
119119

120-
return state.interpolate(raw)
120+
return state.interpolate(raw, working_dir=self.runtime.working_dir)
121121

122122
def _get_prompt(self) -> str:
123123
if not self.configuration.task:
124124
self.configuration.task = state.on_user_input_needed("task", "Describe the task: ")
125125

126-
return state.interpolate(self.configuration.task)
126+
return state.interpolate(self.configuration.task, working_dir=self.runtime.working_dir)
127127

128128
def add_extra_message(self, message: str) -> None:
129129
self._extra_message = message

nerve/runtime/state.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)