Skip to content

Fix: Escape JSON braces in LangChain prompt template - #636

Merged
stranske merged 2 commits into
mainfrom
fix/langchain-prompt-escaping
Jan 7, 2026
Merged

Fix: Escape JSON braces in LangChain prompt template#636
stranske merged 2 commits into
mainfrom
fix/langchain-prompt-escaping

Conversation

@stranske

@stranske stranske commented Jan 7, 2026

Copy link
Copy Markdown
Owner

Source: Issue #184

Automated Status Summary

Scope

Address unmet acceptance criteria from PR #183.

Original scope:

  • Scope section missing from source issue.

Context for Agent

Related Issues/PRs

References

Tasks

  • Tasks section missing from source issue.

Acceptance criteria

  • Acceptance criteria section missing from source issue.

Head SHA: 37acb59
Latest Runs: ✅ success — Gate
Required: gate: ✅ success

Workflow / Job Result Logs
Agents PR meta manager ❔ in progress View run
Auto-label Dependabot PRs ⏭️ skipped View run
CI Autofix Loop ✅ success View run
Copilot code review ❔ in progress View run
Gate ✅ success View run
Health 40 Sweep ✅ success View run
Health 44 Gate Branch Protection ✅ success View run
Health 45 Agents Guard ✅ success View run
Health 50 Security Scan ✅ success View run
Maint 52 Validate Workflows ✅ success View run
PR 11 - Minimal invariant CI ✅ success View run
Selftest CI ✅ success View run
Validate Sync Manifest ✅ success View run

- Add PYTHONPATH to analyze and dedup steps for tools module import
- Fix long lines that exceed 100 characters
LangChain interprets single braces {} as template variables.
The JSON example in the prompt must use double braces {{}} to
escape them and prevent KeyError during prompt formatting.

Fixes workflow error: KeyError: Input to ChatPromptTemplate is
missing variables {task_splitting}
Copilot AI review requested due to automatic review settings January 7, 2026 11:47
@github-actions

github-actions Bot commented Jan 7, 2026

Copy link
Copy Markdown
Contributor

Automated Status Summary

Head SHA: fcb64e6
Latest Runs: ⏳ pending — Gate
Required contexts: Gate / gate, Health 45 Agents Guard / Enforce agents workflow protections
Required: core tests (3.11): ⏳ pending, core tests (3.12): ⏳ pending, docker smoke: ⏳ pending, gate: ⏳ pending

Workflow / Job Result Logs
(no jobs reported) ⏳ pending

Coverage Overview

  • Coverage history entries: 1

Coverage Trend

Metric Value
Current 92.21%
Baseline 85.00%
Delta +7.21%
Minimum 70.00%
Status ✅ Pass

Top Coverage Hotspots (lowest coverage)

File Coverage Missing
scripts/workflow_health_check.py 62.6% 28
scripts/classify_test_failures.py 62.9% 37
scripts/ledger_validate.py 65.3% 63
scripts/mypy_return_autofix.py 82.6% 11
scripts/ledger_migrate_base.py 85.5% 13
scripts/fix_cosmetic_aggregate.py 92.3% 1
scripts/coverage_history_append.py 92.8% 2
scripts/workflow_validator.py 93.3% 4
scripts/update_autofix_expectations.py 93.9% 1
scripts/pr_metrics_tracker.py 95.7% 3
scripts/generate_residual_trend.py 96.6% 1
scripts/build_autofix_pr_comment.py 97.0% 2
scripts/aggregate_agent_metrics.py 97.2% 0
scripts/fix_numpy_asserts.py 98.1% 0
scripts/sync_test_dependencies.py 98.3% 1

Updated automatically; will refresh on subsequent CI/Docker completions.


Keepalive checklist

Scope

No scope information available

Tasks

  • No tasks defined

Acceptance criteria

  • No acceptance criteria defined

@github-actions

github-actions Bot commented Jan 7, 2026

Copy link
Copy Markdown
Contributor

🤖 Keepalive Loop Status

PR #636 | Agent: Codex | Iteration 0/5

Current State

Metric Value
Iteration progress [----------] 0/5
Action wait (missing-agent-label)
Disposition skipped (transient)
Gate success
Tasks 0/2 complete
Keepalive ❌ disabled
Autofix ❌ disabled

🔍 Failure Classification

| Error type | infrastructure |
| Error category | resource |
| Suggested recovery | Confirm the referenced resource exists (repo, PR, branch, workflow, or file). |

@stranske
stranske merged commit e22c9d2 into main Jan 7, 2026
112 checks passed
@stranske
stranske deleted the fix/langchain-prompt-escaping branch January 7, 2026 11:50

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR fixes a critical bug in the agents:optimize workflow where LangChain was interpreting JSON example braces in the prompt template as template variables, causing a KeyError. The fix properly escapes JSON braces with double braces ({{}}) in the prompt template so they are treated as literal characters.

Key Changes:

  • Escape JSON braces in analyze_issue.md prompt template to prevent LangChain variable interpretation
  • Add PYTHONPATH environment variable to workflow steps for proper Python module resolution
  • Improve workflow script formatting (multi-line commands, split echo statements)

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.

File Description
scripts/langchain/prompts/analyze_issue.md Escape all JSON braces in the output format example with double braces to prevent LangChain from treating them as template variables
templates/consumer-repo/.github/workflows/agents-issue-optimizer.yml Add PYTHONPATH environment variable, improve command formatting, and update quoting (contains errors in escaped quotes)

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

GH_TOKEN: ${{ github.token }}
run: |
echo "Extracting suggestions from comments on issue #${ISSUE_NUMBER}"
echo \"Extracting suggestions from comments on issue #${ISSUE_NUMBER}\"

Copilot AI Jan 7, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The backslash-escaped quotes around the echo statement are incorrect for YAML. In GitHub Actions workflow files, strings in the run block don't need backslash escaping. The backslashes will be interpreted literally, causing the command to fail.

Remove the backslashes and use plain double quotes or no quotes at all for the echo statement.

Suggested change
echo \"Extracting suggestions from comments on issue #${ISSUE_NUMBER}\"
echo "Extracting suggestions from comments on issue #${ISSUE_NUMBER}"

Copilot uses AI. Check for mistakes.
Comment on lines +214 to +216
gh api \
\"repos/${{ github.repository }}/issues/${ISSUE_NUMBER}/comments\" \
--paginate > /tmp/comments.json

Copilot AI Jan 7, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The backslash-escaped quotes around the gh api command are incorrect for YAML. In GitHub Actions workflow files, strings in the run block don't need backslash escaping. The backslashes will be interpreted literally by the shell, causing a syntax error.

Remove the backslashes and use plain double quotes or no quotes at all.

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants