CEDARScript Editor (Python) is a CEDARScript runtime for interpreting CEDARScript scripts and performing code analysis and modification operations on a codebase.
CEDARScript enables offloading low-level code syntax and structure concerns, such as indentation and line counting, from the LLMs. The CEDARScript runtime bears the brunt of file editing by locating the exact line numbers and characters to change, which indentation levels to apply to each line and so on, allowing the CEDARScript commands to focus instead on higher levels of abstraction, like identifier names, line markers, relative indentations and positions (AFTER, BEFORE, INSIDE a function, its BODY, at the TOP or BOTTOM of it...).
It acts as an intermediary between the LLM and the codebase, handling the low-level details of code manipulation and allowing the AI to focus on higher-level tasks.
CEDARScript (Concise Examination, Development, And Refactoring Script) is a domain-specific language that aims to improve how AI coding assistants interact with codebases and communicate their code modification intentions.
It provides a standardized way to express complex code modification and analysis operations, making it easier for AI-assisted development tools to understand and execute these tasks.
- Given a
CEDARScriptscript and a base directory, executes the script commands on files inside the base directory; - Return results in
XMLformat for easier parsing and processing by LLM systems
You can install CEDARScript Editor using pip:
pip install cedarscript-editor Here's a quick example of how to use CEDARScript Editor as a Python library:
from cedarscript_editor import CEDARScriptEditor editor = CEDARScriptEditor("/path/to/project") # Parse and execute CEDARScript commands cedarscript = """```CEDARScript CREATE FILE "example.py" WITH """ print("Hello, World!") """ ```""" # Apply commands to the codebase results = editor.apply_cedarscript(cedarscript) print(results)cedarscript-editor also provides a CLI for executing CEDARScript commands directly from the command line.
After installing via pip, the cedarscript command will be available:
pip install cedarscript-editor# Execute CEDARScript directly cedarscript 'CREATE FILE "example.py" WITH "print(\"Hello World\")"' # Read CEDARScript from file cedarscript -f commands.cedar cedarscript --file commands.cedar # Read from STDIN cat commands.cedar | cedarscript echo 'UPDATE FILE "test.py" INSERT LINE 1 "import os"' | cedarscript # Specify base directory cedarscript --root /path/to/project -f commands.cedar # Quiet mode for scripting cedarscript --quiet -f commands.cedar # Syntax check only cedarscript --check -f commands.cedar-f, --file FILENAME: Read CEDARScript commands from file--root DIRECTORY: Base directory for file operations (default: current directory)-q, --quiet: Minimal output (for scripting)--check: Syntax check only - parse commands without executingCOMMAND: Direct CEDARScript command (alternative to file input)
CEDARScript commands must be enclosed in fenced code blocks:
```CEDARScript CREATE FILE "example.py" WITH """ print("Hello, World!") """ ```Or use the <NOCEDARSCRIPT/> tag for direct command execution:
<NOCEDARSCRIPT/> CREATE FILE "example.py" WITH """ print("Hello, World!") """ Create a new file:
cedarscript '```CEDARScript CREATE FILE "utils.py" WITH """ def hello(): print("Hello from utils!") """ ```'Update an existing file:
cat > update_commands.cedar << 'EOF' ```CEDARScript UPDATE FILE "app.py" INSERT LINE 1 """Application module""" INSERT AFTER "import os" import sys ```' EOF cedarscript -f update_commands.cedarMulti-file operations:
cat > refactor.cedar << 'EOF' ```CEDARScript # Move method to top level UPDATE CLASS "DataProcessor" FROM FILE "data.py" MOVE METHOD "process" # Update call sites UPDATE FUNCTION "main" FROM FILE "main.py" REPLACE LINE 5 result = process(data) ```' EOF cedarscript --root ./my-project -f refactor.cedarContributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License.