diff --git a/plugins/repo-dreamer/skills/repository-skill-forge/scripts/materialize-session-query.py b/plugins/repo-dreamer/skills/repository-skill-forge/scripts/materialize-session-query.py index c8a97b4..e9bd105 100755 --- a/plugins/repo-dreamer/skills/repository-skill-forge/scripts/materialize-session-query.py +++ b/plugins/repo-dreamer/skills/repository-skill-forge/scripts/materialize-session-query.py @@ -72,7 +72,11 @@ def result_content( if isinstance(detailed, str) else None ) - if sql_match and sql_match.group(1) == sql: + detailed_payload = sql_match.group(1) if sql_match else None + if detailed_payload == sql or ( + isinstance(detailed_payload, str) + and detailed_payload.startswith(f"{sql}\n\n") + ): matches.append((data.get("success"), result)) if not matches: continue diff --git a/plugins/repo-dreamer/skills/repository-skill-forge/tests/test_materialize_session_query.py b/plugins/repo-dreamer/skills/repository-skill-forge/tests/test_materialize_session_query.py index eb22f34..b244b98 100644 --- a/plugins/repo-dreamer/skills/repository-skill-forge/tests/test_materialize_session_query.py +++ b/plugins/repo-dreamer/skills/repository-skill-forge/tests/test_materialize_session_query.py @@ -196,6 +196,41 @@ def test_uses_latest_exact_sql_result_after_an_earlier_failure(self) -> None: materializer.parse_rows("discovery", header, rows), ) + def test_matches_detailed_content_with_sql_and_rendered_result(self) -> None: + with tempfile.TemporaryDirectory() as temporary: + events_root = Path(temporary) + event_dir = events_root / "session-1" + event_dir.mkdir() + sql = "SELECT id AS session_id, updated_at FROM sessions" + content = "\n".join( + [ + "1 row(s) returned:", + "", + "| session_id | updated_at |", + "| --- | --- |", + "| session-1 | 2026-08-01T00:00:00Z |", + ] + ) + event = { + "type": "tool.execution_complete", + "data": { + "success": True, + "result": { + "content": content, + "detailedContent": ( + "SQL (session_store/repo/owner/repository): " + f"{sql}\n\n{content}" + ), + }, + }, + } + (event_dir / "events.jsonl").write_text( + json.dumps(event) + "\n", + encoding="utf-8", + ) + + self.assertEqual(content, materializer.result_content(events_root, sql)) + def test_skips_malformed_event_log_lines_before_a_match(self) -> None: with tempfile.TemporaryDirectory() as temporary: events_root = Path(temporary)