Class: Ace::LLM::Providers::CLI::Atoms::CommandRewriter
- Inherits:
-
Object
- Object
- Ace::LLM::Providers::CLI::Atoms::CommandRewriter
- Defined in:
- lib/ace/llm/providers/cli/atoms/command_rewriter.rb
Overview
Provider-agnostic skill/command rewriter. Transforms commands based on a formatter proc.
Rules:
-
Only matches ‘/name` preceded by start-of-line or whitespace
-
Skips matches inside backtick code blocks (inline or fenced)
-
Skips URL-like patterns
-
Matches longest names first (avoids partial matches)
Class Method Summary collapse
-
.call(prompt, skill_names:, formatter:) ⇒ String
Rewrite command references in a prompt string.
Class Method Details
.call(prompt, skill_names:, formatter:) ⇒ String
Rewrite command references in a prompt string.
23 24 25 26 27 28 29 30 31 32 |
# File 'lib/ace/llm/providers/cli/atoms/command_rewriter.rb', line 23 def self.call(prompt, skill_names:, formatter:) return prompt if prompt.nil? || prompt.empty? return prompt if skill_names.nil? || skill_names.empty? sorted_names = skill_names.sort_by { |n| -n.length } name_pattern = sorted_names.map { |n| Regexp.escape(n) }.join("|") pattern = /(?<=\A|\s)\/(#{name_pattern})(?=\s|\z)/m rewrite_outside_code_blocks(prompt, pattern, formatter) end |