Skip to content

Releases: oisee/vibing-steampunk

v2.21.0: Method-Level Source Operations

06 Jan 23:04

Choose a tag to compare

🎯 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 the METHOD...ENDMETHOD block (~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 version

Documentation

Full Changelog

v2.20.0...v2.21.0

v2.20.0: CLI Mode & Multi-System Management

06 Jan 19:14

Choose a tag to compare

🎉 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 only

Now 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 packages

What'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.zip

System 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

06 Jan 16:46

Choose a tag to compare

What's New

🔧 Tool Aliases

13 short names for frequently used tools:

  • gs → GetSource
  • ws → WriteSource
  • es → EditSource
  • so → SearchObject
  • sc → SyntaxCheck
  • act → Activate
  • rut → RunUnitTests
  • atc → RunATCCheck
  • go → GrepObjects
  • gos → GrepObjects (same)
  • gp → GrepPackages
  • gps → 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...v2.19.1

v2.19.0: Async & Developer Productivity

05 Jan 01:20

Choose a tag to compare

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/vsp

Async 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...v2.19.0

v2.18.0 - Report Execution Tools

02 Jan 22:58

Choose a tag to compare

🎉 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"}}' | ./vsp

Option B: Manual via abapGit

  1. Clone/pull from this repo's src/ directory
  2. Import into package $ZADT_VSP
  3. 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 call display(), or use CallRFC approach.

Tool Groups

New tool group R for report tools:

# Disable report tools
./vsp --disabled-groups R

Full Changelog: v2.17.1...v2.18.0

v2.17.1: Install Tools Upsert Fix

24 Dec 10:43

Choose a tag to compare

What's New

Bug Fix: Install tools now properly detect and create missing packages

Fixed

  • GetPackage API returns empty URI when package doesn't exist (not an error)
  • InstallDummyTest and InstallZADTVSP now check pkg.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.17.0...v2.17.1

v2.16.0 - abapGit WebSocket Integration

23 Dec 13:39

Choose a tag to compare

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.xml structure
  • 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

22 Dec 21:12

Choose a tag to compare

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/vsp

Full Changelog

v2.15.0...v2.15.1

v2.15.0: TAS-Style Debugging & Lua Scripting

21 Dec 22:50

Choose a tag to compare

🎮 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 50

New 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/vsp

Full Changelog

See commits since v2.14.0


🤖 Built with Claude Code

v2.14.0: Lua Scripting Integration

21 Dec 18:19

Choose a tag to compare

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 .lua files for automated workflows
  • Inline execution: -e flag for quick one-liners

Example Scripts

  • search-and-grep.lua - Find objects and search their content
  • call-graph-analysis.lua - Analyze upstream/downstream dependencies
  • debug-session.lua - Complete debugging workflow
  • analyze-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/vsp

Roadmap

This release completes Phase 5.1 (Lua Scripting). Next milestones:

  • v2.15: Variable History Recording
  • v2.16: Checkpoint/Restore
  • v3.0: Test Case Extraction

Full Changelog

v2.13.0...v2.14.0