Releases: oisee/vibing-steampunk
v2.21.0: Method-Level Source Operations
🎯 Method-Level Source Operations
Work with individual class methods instead of entire classes - 95% token reduction for AI assistants!
What's New
- GetSource with
method- Returns only theMETHOD...ENDMETHODblock (~50 lines vs 1000+) - EditSource with
method- Constrains find/replace to specific method (no accidental edits elsewhere) - WriteSource with
method- Replace only one method implementation (NEW in v2.21.0)
Why This Matters
| Before | After | Improvement |
|---|---|---|
| Get entire 1000-line class | Get 50-line method | 95% smaller |
| Risk editing wrong method | Isolated to one method | 100% precise |
| Full class syntax check | Method + class validation | Faster feedback |
Example Usage
# MCP Tool Call
GetSource(object_type="CLAS", name="ZCL_TEST", method="CALCULATE")
→ Returns only the CALCULATE method implementation
WriteSource(object_type="CLAS", name="ZCL_TEST",
source=" METHOD calculate.\n rv_result = 42.\n ENDMETHOD.",
method="CALCULATE")
→ Updates only CALCULATE, leaves other methods untouched
Safety
- Method must already exist in class - prevents accidental method creation
- Full syntax check before save
- Automatic activation after update
Downloads
| Platform | Architecture | File |
|---|---|---|
| Linux | x64 | vsp-linux-amd64 |
| Linux | ARM64 | vsp-linux-arm64 |
| Linux | x86 | vsp-linux-386 |
| Linux | ARM | vsp-linux-arm |
| macOS | x64 (Intel) | vsp-darwin-amd64 |
| macOS | ARM64 (Apple Silicon) | vsp-darwin-arm64 |
| Windows | x64 | vsp-windows-amd64.exe |
| Windows | ARM64 | vsp-windows-arm64.exe |
| Windows | x86 | vsp-windows-386.exe |
Installation
# Download and make executable
chmod +x vsp-linux-amd64
mv vsp-linux-amd64 /usr/local/bin/vsp
# Verify
vsp versionDocumentation
Full Changelog
v2.20.0: CLI Mode & Multi-System Management
🎉 CLI Mode is Here!
vsp now works as a standalone CLI tool in addition to being an MCP server. Manage multiple SAP systems with simple commands!
Why This is Cool
Before v2.20.0:
# Needed MCP server running + Claude to do anything
SAP_URL=... SAP_USER=... ./vsp # starts MCP server onlyNow with v2.20.0:
# Direct CLI operations - no Claude needed!
vsp -s dev search "ZCL_*" # Search objects
vsp -s prod source CLAS ZCL_TRAVEL # Get source code
vsp -s a4h export '$ZORK' '$ZLLM' -o all.zip # Export packagesWhat's New
| Feature | Description |
|---|---|
| CLI Subcommands | search, source, export, systems, config |
| System Profiles | .vsp.json for managing multiple SAP systems |
| Config Conversion | mcp-to-vsp / vsp-to-mcp for easy migration |
| Cookie Auth | cookie_file / cookie_string for SSO environments |
| Password Sync | Auto-import from .mcp.json env blocks |
| FULL Folder Logic | Multi-package exports with proper hierarchy |
| abapGit Compatible | Exports include .abapgit.xml metadata |
Quick Start
# 1. Create system config
vsp config init
cp .vsp.json.example .vsp.json
# Edit .vsp.json with your systems
# 2. Set passwords via environment
export VSP_DEV_PASSWORD=secret
export VSP_A4H_PASSWORD=secret
# 3. Use CLI commands
vsp -s dev search "ZCL_*"
vsp -s a4h export '$MYPACKAGE' -o backup.zipSystem Profile Example (.vsp.json)
{
"default": "dev",
"systems": {
"dev": {
"url": "http://dev.example.com:50000",
"user": "DEVELOPER",
"client": "001"
},
"prod": {
"url": "https://prod.example.com:44300",
"user": "READONLY",
"client": "100",
"read_only": true,
"cookie_file": "/path/to/cookies.txt"
}
}
}Export Structure (abapGit Compatible)
export.zip
├── .abapgit.xml # Repository metadata (FOLDER_LOGIC: FULL)
└── src/
├── $zadt_vsp/ # Package folder
│ ├── zcl_class.clas.abap
│ └── zcl_class.clas.xml
└── $zork/ # Another package
└── ...
Downloads
| Platform | Architecture | File |
|---|---|---|
| Linux | x64 | vsp-linux-amd64 |
| Linux | ARM64 | vsp-linux-arm64 |
| Linux | x86 | vsp-linux-386 |
| Linux | ARM | vsp-linux-arm |
| macOS | x64 | vsp-darwin-amd64 |
| macOS | Apple Silicon | vsp-darwin-arm64 |
| Windows | x64 | vsp-windows-amd64.exe |
| Windows | ARM64 | vsp-windows-arm64.exe |
| Windows | x86 | vsp-windows-386.exe |
Full Changelog
- feat: CLI subcommands with system profiles
- feat: vsp config init/show commands
- feat: vsp config mcp-to-vsp and vsp-to-mcp commands
- feat: cookie authentication support in CLI system profiles
- feat: make sync-embedded for exporting ZADT_VSP from SAP
- fix: WebSocket client parameter order (was causing bad handshake)
- fix: add .abapgit.xml to GitExport ZIP output
- fix: use FULL folder logic for multi-package exports
- docs: document CLI mode and system profiles in README
v2.19.1: Tool Aliases & TLS Fix
What's New
🔧 Tool Aliases
13 short names for frequently used tools:
gs→ GetSourcews→ WriteSourcees→ EditSourceso→ SearchObjectsc→ SyntaxCheckact→ Activaterut→ RunUnitTestsatc→ RunATCCheckgo→ GrepObjectsgos→ GrepObjects (same)gp→ GrepPackagesgps→ GrepPackages (same)rq→ RunQuery
🎨 Heading Texts Support
SetTextElements now supports heading texts (textpool type 'H') for report headers and column titles.
🔒 WebSocket TLS Fix (#1)
Fixed --insecure flag not working for WebSocket connections to systems with self-signed certificates.
Downloads
| Platform | Architecture | File |
|---|---|---|
| Linux | x64 | vsp-linux-amd64 |
| Linux | ARM64 | vsp-linux-arm64 |
| Linux | x86 | vsp-linux-386 |
| Linux | ARM | vsp-linux-arm |
| macOS | x64 | vsp-darwin-amd64 |
| macOS | Apple Silicon | vsp-darwin-arm64 |
| Windows | x64 | vsp-windows-amd64.exe |
| Windows | ARM64 | vsp-windows-arm64.exe |
| Windows | x86 | vsp-windows-386.exe |
Installation
Download the appropriate binary, make it executable, and add to your PATH.
Full Changelog
v2.19.0: Async & Developer Productivity
What's New in v2.19.0
Codename: Quick Wins Sprint
This release delivers 8 new tools focused on developer productivity and async execution patterns.
🚀 Async Execution Pattern (2 tools)
- RunReportAsync - Start long-running reports in background goroutine
- GetAsyncResult - Poll or wait for task completion (up to 60s)
🛠️ Developer Productivity (4 tools)
- CompareSource - Unified diff between any two ABAP objects
- CloneObject - Copy PROG/CLAS/INTF to new name
- GetClassInfo - Quick class metadata via CAI API
- CreateTable - Create DDIC tables from simple JSON definition
🔧 Fixes (2 tools)
- GetSystemInfo - Rewrote to use SQL fallback (works reliably across SAP versions)
- GetMessages - Fixed XML parsing for message class texts
Tool Counts
| Mode | Tools |
|---|---|
| Focused | 54 |
| Expert | 99 |
Downloads
| Platform | Architecture | File |
|---|---|---|
| Linux | x64 | vsp-linux-amd64 |
| Linux | ARM64 | vsp-linux-arm64 |
| Linux | x86 | vsp-linux-386 |
| Linux | ARM | vsp-linux-arm |
| macOS | x64 | vsp-darwin-amd64 |
| macOS | Apple Silicon | vsp-darwin-arm64 |
| Windows | x64 | vsp-windows-amd64.exe |
| Windows | ARM64 | vsp-windows-arm64.exe |
| Windows | x86 | vsp-windows-386.exe |
Installation
# Download for your platform
curl -LO https://github.com/oisee/vibing-steampunk/releases/download/v2.19.0/vsp-linux-amd64
chmod +x vsp-linux-amd64
mv vsp-linux-amd64 /usr/local/bin/vspAsync Pattern Example
1. RunReportAsync(report="RFITEMGL", params={...})
→ {"task_id": "report_1736034567_1", "status": "started"}
2. GetAsyncResult(task_id="...", wait=true)
→ Blocks until complete, returns full report result
Full Changelog
v2.18.0 - Report Execution Tools
🎉 New Features
Report Execution Tools (via ZADT_VSP WebSocket)
| Tool | Description |
|---|---|
| RunReport | Execute ABAP reports with params/variants, capture ALV output as structured data |
| GetVariants | List available variants for a report program |
| GetTextElements | Read program text elements (selection texts, text symbols) |
| SetTextElements | Write/update program text elements |
Usage Examples
# Get selection texts for a report
echo '{"method":"tools/call","params":{"name":"GetTextElements","arguments":{"program":"ZTEST","language":"E"}}}' | ./vsp
# Set selection texts
echo '{"method":"tools/call","params":{"name":"SetTextElements","arguments":{"program":"ZTEST","selection_texts":"{\"P_BUKRS\":\"Company Code\"}"}}}' | ./vsp
# Get available variants
echo '{"method":"tools/call","params":{"name":"GetVariants","arguments":{"report":"ZTEST"}}}' | ./vsp🐛 Bug Fixes
- packageExists: Fixed false negatives - now uses direct
/sap/bc/adt/packages/API which returns 404 for non-existing packages (previously checked URI field which was always empty) - JSON encoding: Fixed double-encoding bug - maps are now sent as nested objects, not as escaped JSON strings
- Selection text format: Fixed textpool entry format - now correctly includes 8-char key prefix required by ABAP
📦 ZADT_VSP Updates (v2.3.0)
The $ZADT_VSP WebSocket handler package now includes:
- ZCL_VSP_REPORT_SERVICE - New service for report execution tools
- Added "report" domain to supported domains list
- Domains now:
rfc,debug,amdp,git,report
Updating $ZADT_VSP on your SAP system
Option A: Use InstallZADTVSP tool
echo '{"method":"tools/call","params":{"name":"InstallZADTVSP"}}' | ./vspOption B: Manual via abapGit
- Clone/pull from this repo's
src/directory - Import into package
$ZADT_VSP - Activate all objects
⚠️ Known Limitations
- RunReport with ALV capture: May timeout in WebSocket/APC context because
cl_salv_table=>display()blocks. Workaround: Use reports that don't calldisplay(), or use CallRFC approach.
Tool Groups
New tool group R for report tools:
# Disable report tools
./vsp --disabled-groups RFull Changelog: v2.17.1...v2.18.0
v2.17.1: Install Tools Upsert Fix
What's New
Bug Fix: Install tools now properly detect and create missing packages
Fixed
GetPackageAPI returns empty URI when package doesn't exist (not an error)InstallDummyTestandInstallZADTVSPnow checkpkg.URI != ""to verify package existence- Added object pre-checks with CREATE/UPDATE status reporting
- Both tools tested successfully on multiple SAP systems
Technical Details
The GetPackage call was returning a minimal response with empty URI field when a package didn't exist, instead of returning an error. This caused the Install tools to incorrectly believe the package existed and skip creation.
Downloads
| Platform | Architecture | File |
|---|---|---|
| Linux | x64 | vsp-linux-amd64 |
| Linux | ARM64 | vsp-linux-arm64 |
| Linux | x86 | vsp-linux-386 |
| Linux | ARM | vsp-linux-arm |
| macOS | x64 | vsp-darwin-amd64 |
| macOS | Apple Silicon | vsp-darwin-arm64 |
| Windows | x64 | vsp-windows-amd64.exe |
| Windows | ARM64 | vsp-windows-arm64.exe |
| Windows | x86 | vsp-windows-386.exe |
Installation
Download the appropriate binary, make it executable, and add to your PATH.
Full Changelog
v2.16.0 - abapGit WebSocket Integration
abapGit WebSocket Integration
VSP now supports abapGit-compatible export of ABAP objects via the ZADT_VSP WebSocket handler.
New Tools
| Tool | Description |
|---|---|
GitTypes |
Query 158 supported abapGit object types |
GitExport |
Export packages/objects as abapGit-compatible ZIP (base64) |
Features
- WebSocket Transport: Via ZADT_VSP handler (domain: "git")
- Native Serialization: Uses
ZCL_ABAPGIT_OBJECTS=>serialize()for full compatibility - 158 Object Types: Export CLAS, INTF, PROG, DDLS, BDEF, SRVD, and 152 more types
- abapGit Format: ZIP with
src/*.clas.abap,*.clas.xmlstructure - Tool Group "G": Disable Git tools with
--disabled-groups G
Usage
# List supported object types
vsp git-types
# Export a package
vsp git-export --packages "$ZADT_VSP"
# Export specific objects
vsp git-export --objects '[{"type":"CLAS","name":"ZCL_TEST"}]'Requirements
- abapGit must be installed on SAP system (standalone or S/4HANA Developer Edition)
- ZADT_VSP WebSocket handler deployed (see embedded/abap/README.md)
Technical Details
- Binary ZIP data encoded as Base64 for JSON/WebSocket transport (~33% overhead)
- Fixed nested JSON parsing in APC handler (brace-counting algorithm)
- Tool counts: 48 focused, 96 expert
Documentation
🤖 Generated with Claude Code
v2.15.1: AMDP WebSocket & Documentation
What's New
AMDP WebSocket Client (Experimental)
- New:
pkg/adt/amdp_websocket.go- WebSocket client for AMDP debugging - New:
embedded/abap/zcl_vsp_amdp_service.clas.abap- AMDP debug service for SAP - Session management works, breakpoint triggering under investigation
- See AMDP Investigation Report
Documentation
- New: Observations Since v2.12.5 - Complete changelog with 18 research reports
- Updated: README with v2.15.0 features and Phase 5 completion status
- Updated: Roadmap with Force Replay and Variable History marked complete
Summary Since v2.12.5
- 6 releases (v2.12.5 → v2.15.1)
- 18 research reports
- WebSocket debugging infrastructure (ZADT_VSP)
- Lua scripting with 40+ bindings
- Phase 5 TAS-style debugging complete
Downloads
| Platform | Architecture | File |
|---|---|---|
| Linux | x64 | vsp-linux-amd64 |
| Linux | ARM64 | vsp-linux-arm64 |
| Linux | x86 | vsp-linux-386 |
| Linux | ARM | vsp-linux-arm |
| macOS | x64 | vsp-darwin-amd64 |
| macOS | Apple Silicon | vsp-darwin-arm64 |
| Windows | x64 | vsp-windows-amd64.exe |
| Windows | ARM64 | vsp-windows-arm64.exe |
| Windows | x86 | vsp-windows-386.exe |
Installation
# Linux/macOS
curl -LO https://github.com/oisee/vibing-steampunk/releases/download/v2.15.1/vsp-linux-amd64
chmod +x vsp-linux-amd64
sudo mv vsp-linux-amd64 /usr/local/bin/vspFull Changelog
v2.15.0: TAS-Style Debugging & Lua Scripting
🎮 Phase 5 Complete: TAS-Style Debugging
Inspired by Tool-Assisted Speedruns, vsp now supports scriptable, replayable debugging with full execution recording.
What's New
Lua Scripting Engine (40+ functions)
- Execution Recording with delta compression
- Variable History -
getStateAtStep(),findWhenChanged(),findChanges() - All 8 Breakpoint Types - line, statement, exception, message, BAdi, enhancement, watchpoint, method
- Force Replay - Inject production state into dev sessions! 🚀
- Checkpoint System - save/get/list/inject variable snapshots
Example: Record & Replay
-- Record a debug session
startRecording("bug-investigation", "ZPROGRAM")
setBreakpoint("ZPROGRAM", 100)
-- ... step through code ...
saveCheckpoint("before_error")
stopRecording()
-- Later: Replay exact state
forceReplay("recording-id", 50) -- Inject state from step 50New Tests
- 59 new unit tests (recorder, history, Lua bindings)
- E2E test script:
examples/scripts/phase5-experiment.lua - Total: 216 unit tests
Documentation
- Testing Methodology Report
- Data Extraction Examples
- Live Experiment Guide
Downloads
| Platform | Architecture | File |
|---|---|---|
| Linux | x64 | vsp-linux-amd64 |
| Linux | ARM64 | vsp-linux-arm64 |
| Linux | x86 | vsp-linux-386 |
| Linux | ARM | vsp-linux-arm |
| macOS | Intel | vsp-darwin-amd64 |
| macOS | Apple Silicon | vsp-darwin-arm64 |
| Windows | x64 | vsp-windows-amd64.exe |
| Windows | ARM64 | vsp-windows-arm64.exe |
| Windows | x86 | vsp-windows-386.exe |
Installation
# Linux/macOS
chmod +x vsp-linux-amd64
./vsp-linux-amd64 --help
# Or add to PATH
sudo mv vsp-linux-amd64 /usr/local/bin/vspFull Changelog
🤖 Built with Claude Code
v2.14.0: Lua Scripting Integration
What's New
Phase 5.1: Lua Scripting Integration - TAS-style debugging foundation
Lua Scripting Engine
- Integrated gopher-lua VM for scriptable automation
- 30+ tool bindings covering all MCP operations
- Checkpoint system for Force Replay (state injection foundation)
CLI Command: vsp lua
- REPL mode: Interactive Lua shell for exploratory debugging
- Script execution: Run
.luafiles for automated workflows - Inline execution:
-eflag for quick one-liners
Example Scripts
search-and-grep.lua- Find objects and search their contentcall-graph-analysis.lua- Analyze upstream/downstream dependenciesdebug-session.lua- Complete debugging workflowanalyze-dumps.lua- List and analyze ST22 dumps
Usage
# Interactive REPL
./vsp lua
# Run script
./vsp lua examples/scripts/debug-session.lua ZTEST_PROGRAM 10
# Inline execution
./vsp lua -e 'print(getSystemInfo().sap_system_id)'Lua API Highlights
-- Search and read
local results = searchObject("ZCL_*", 50)
local source = getSource("/sap/bc/adt/oo/classes/zcl_test")
-- Debugging
local bpId = setBreakpoint("ZTEST", 10)
local event = listen(60)
local session = attach(event.id)
local stack = getStack()
stepOver()
detach()
-- Checkpoints (Force Replay foundation)
saveCheckpoint("before_crash", {iv_param = "value"})
local state = loadCheckpoint("before_crash")Downloads
| Platform | Architecture | File |
|---|---|---|
| Linux | x64 | vsp-linux-amd64 |
| Linux | ARM64 | vsp-linux-arm64 |
| Linux | x86 | vsp-linux-386 |
| Linux | ARM | vsp-linux-arm |
| macOS | x64 | vsp-darwin-amd64 |
| macOS | Apple Silicon | vsp-darwin-arm64 |
| Windows | x64 | vsp-windows-amd64.exe |
| Windows | ARM64 | vsp-windows-arm64.exe |
| Windows | x86 | vsp-windows-386.exe |
Installation
# Download, make executable, add to PATH
chmod +x vsp-linux-amd64
sudo mv vsp-linux-amd64 /usr/local/bin/vspRoadmap
This release completes Phase 5.1 (Lua Scripting). Next milestones:
- v2.15: Variable History Recording
- v2.16: Checkpoint/Restore
- v3.0: Test Case Extraction