Skip to content

Commit 222a282

Browse files
committed
Handle longer Markdown fence closers
1 parent ba95594 commit 222a282

2 files changed

Lines changed: 21 additions & 1 deletion

File tree

.agents/bin/agent-workflow-seam-doctor

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -211,13 +211,17 @@ module AgentWorkflowSeamDoctor
211211

212212
delimiter = fence[1]
213213
# Mismatched closers stay inside the current fence.
214-
return nil if in_fence && delimiter != fence_delimiter
214+
return nil if in_fence && !closing_fence_delimiter?(delimiter, fence_delimiter)
215215
return [false, false, nil] if in_fence
216216

217217
language = fence[2].to_s.downcase
218218
[true, EXECUTABLE_FENCE_LANGS.include?(language), delimiter]
219219
end
220220

221+
def closing_fence_delimiter?(delimiter, fence_delimiter)
222+
delimiter[0] == fence_delimiter[0] && delimiter.length >= fence_delimiter.length
223+
end
224+
221225
def placeholders_from_line(line, in_fence:, executable_fence:)
222226
placeholders = []
223227

.agents/bin/agent-workflow-seam-doctor-test.rb

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -350,6 +350,22 @@ def test_shorter_closing_fence_does_not_close_long_executable_fence
350350
end
351351
end
352352

353+
def test_longer_closing_fence_closes_long_executable_fence
354+
with_repo do |root|
355+
write_agents(root)
356+
write_skill(root, <<~MARKDOWN)
357+
````bash
358+
echo ok
359+
`````
360+
<follow-up prefix>
361+
MARKDOWN
362+
363+
out, status = run_doctor(root)
364+
365+
assert status.success?, out
366+
end
367+
end
368+
353369
def test_four_space_indented_fence_does_not_open_executable_fence
354370
with_repo do |root|
355371
write_agents(root)

0 commit comments

Comments
 (0)