From d62033615fcf4f67030b9323fa86646162d84415 Mon Sep 17 00:00:00 2001 From: salvatorestarace <59176654+Salvatore-tech@users.noreply.github.com> Date: Thu, 30 Jul 2026 21:07:21 +0200 Subject: [PATCH 1/2] Ollama naming conflix resolution --- .../contrib/language_models/{ollama => ollama_lm}/__init__.py | 0 .../contrib/language_models/{ollama => ollama_lm}/ollama_model.py | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename concordia/contrib/language_models/{ollama => ollama_lm}/__init__.py (100%) rename concordia/contrib/language_models/{ollama => ollama_lm}/ollama_model.py (100%) diff --git a/concordia/contrib/language_models/ollama/__init__.py b/concordia/contrib/language_models/ollama_lm/__init__.py similarity index 100% rename from concordia/contrib/language_models/ollama/__init__.py rename to concordia/contrib/language_models/ollama_lm/__init__.py diff --git a/concordia/contrib/language_models/ollama/ollama_model.py b/concordia/contrib/language_models/ollama_lm/ollama_model.py similarity index 100% rename from concordia/contrib/language_models/ollama/ollama_model.py rename to concordia/contrib/language_models/ollama_lm/ollama_model.py From ccf2ae1074321c798fa5bdd9ac8b82705a31ec69 Mon Sep 17 00:00:00 2001 From: salvatorestarace <59176654+Salvatore-tech@users.noreply.github.com> Date: Sun, 2 Aug 2026 08:04:39 +0200 Subject: [PATCH 2/2] Markdown sanitization for Ollama --- concordia/environment/engine.py | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/concordia/environment/engine.py b/concordia/environment/engine.py index e19cd883c..9259fba26 100644 --- a/concordia/environment/engine.py +++ b/concordia/environment/engine.py @@ -156,15 +156,23 @@ def action_spec_parser(next_action_spec_string: str) -> entity_lib.ActionSpec: Supports both JSON format (preferred) and legacy string format (for backward compatibility). - - Args: - next_action_spec_string: The string representation of the next action spec. - - Returns: - The parsed action spec. """ + raw = next_action_spec_string.strip() + + # Accept common LLM formatting: fenced JSON blocks. + if raw.startswith("```"): + lines = raw.splitlines() + if lines: + # Drop opening fence line (``` or ```json) + if lines[0].strip().startswith("```"): + lines = lines[1:] + # Drop closing fence line if present + if lines and lines[-1].strip() == "```": + lines = lines[:-1] + raw = "\n".join(lines).strip() + try: - spec_dict = json.loads(next_action_spec_string) + spec_dict = json.loads(raw) return entity_lib.action_spec_from_dict(spec_dict) except json.JSONDecodeError: logging.warning( @@ -174,7 +182,6 @@ def action_spec_parser(next_action_spec_string: str) -> entity_lib.ActionSpec: ) return _legacy_action_spec_parser(next_action_spec_string) - def action_spec_to_string(action_spec: entity_lib.ActionSpec) -> str: """Convert an action spec to a JSON string.""" return json.dumps(action_spec.to_dict())