Skip to content

Commit cf0f716

Browse files
oiseeclaude
andcommitted
docs: v2.19.0 release documentation
- Add release notes for v2.19.0 "Async & Developer Productivity" - Update README What's New section with new tools - Update README_TOOLS with Report Execution Tools section - Fix tool counts in CLAUDE.md (48→54 focused, 96→99 expert) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1 parent 56dc11a commit cf0f716

4 files changed

Lines changed: 221 additions & 5 deletions

File tree

CLAUDE.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ This file provides context for AI assistants (Claude, etc.) working on this proj
44

55
## Project Overview
66

7-
**vsp** is a Go-native MCP (Model Context Protocol) server for SAP ABAP Development Tools (ADT). It provides a single-binary distribution with 48 essential tools (focused mode, default) or 96 complete tools (expert mode) for use with Claude and other MCP-compatible LLMs.
7+
**vsp** is a Go-native MCP (Model Context Protocol) server for SAP ABAP Development Tools (ADT). It provides a single-binary distribution with 54 essential tools (focused mode, default) or 99 complete tools (expert mode) for use with Claude and other MCP-compatible LLMs.
88

99
## Quick Reference
1010

@@ -352,7 +352,7 @@ When creating a new report:
352352

353353
| Metric | Value |
354354
|--------|-------|
355-
| **Tools** | 99 (51 focused, 99 expert) |
355+
| **Tools** | 99 (54 focused, 99 expert) |
356356
| **Unit Tests** | 244 |
357357
| **Integration Tests** | 34 |
358358
| **Platforms** | 9 |

README.md

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,17 @@
1111

1212
## What's New
1313

14-
**v2.19.0** - Interactive CLI Debugger
14+
**v2.19.0** - Async Execution & Developer Productivity
15+
- **RunReportAsync**: Execute reports in background goroutine - no more timeouts!
16+
- **GetAsyncResult**: Poll or wait for async task completion (up to 60s)
17+
- **CompareSource**: Unified diff between any two ABAP objects (LCS algorithm)
18+
- **CloneObject**: Copy PROG/CLAS/INTF to new name with auto-replace
19+
- **GetClassInfo**: Quick class metadata via CAI (methods, attrs, interfaces)
20+
- **CreateTable**: Create DDIC tables from simple JSON definition
21+
- **GetSystemInfo**: Fixed to use SQL (CVERS/T000) - works across all SAP versions
22+
- **54 Focused / 99 Expert Tools** - see [Release Notes](reports/2026-01-05-001-v2.19.0-release-notes.md)
23+
24+
**v2.18.1** - Interactive CLI Debugger
1525
- **`vsp debug` Command**: Standalone interactive ABAP debugger
1626
- **REPL Interface**: s=step, n=next, o=out, c=continue, r=stack, v=vars
1727
- **WebSocket Breakpoints**: Set/delete/list via ZADT_VSP

README_TOOLS.md

Lines changed: 36 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,14 +86,20 @@ These tools replace 11 granular read/write operations with intelligent parameter
8686

8787
---
8888

89-
## Development Tools (4 tools)
89+
## Development Tools (10 tools)
9090

9191
| Tool | Description | Mode |
9292
|------|-------------|------|
9393
| `SyntaxCheck` | Check source code for syntax errors | Focused |
9494
| `Activate` | Activate an ABAP object | Expert |
95+
| `ActivatePackage` | Batch activate all inactive objects in package | Focused |
9596
| `RunUnitTests` | Execute ABAP Unit tests | Focused |
9697
| `RunATCCheck` | Run ATC code quality checks | Focused |
98+
| `CompareSource` | Unified diff between any two ABAP objects | Focused |
99+
| `CloneObject` | Copy PROG/CLAS/INTF to new name | Focused |
100+
| `GetClassInfo` | Quick class metadata (methods, attrs, interfaces) | Focused |
101+
| `CreateTable` | Create DDIC table from JSON definition | Focused |
102+
| `CreatePackage` | Create local package ($...) | Focused |
97103

98104
---
99105

@@ -348,11 +354,39 @@ embedded/
348354

349355
---
350356

357+
## Report Execution Tools (6 tools) - NEW v2.19.0
358+
359+
Execute ABAP reports with parameters and capture ALV output. Includes async pattern for long-running reports.
360+
361+
| Tool | Description | Mode |
362+
|------|-------------|------|
363+
| `RunReport` | Execute report with params/variant, capture ALV output | Focused |
364+
| `RunReportAsync` | Start report in background, returns task_id | Focused |
365+
| `GetAsyncResult` | Poll or wait for async task completion | Focused |
366+
| `GetVariants` | List available variants for a report | Focused |
367+
| `GetTextElements` | Get selection texts and text symbols | Focused |
368+
| `SetTextElements` | Update selection texts and text symbols | Focused |
369+
370+
**Async Pattern:**
371+
```
372+
1. RunReportAsync(report="RFITEMGL", params={...})
373+
→ {"task_id": "report_1736034567_1", "status": "started"}
374+
375+
2. GetAsyncResult(task_id="...", wait=true)
376+
→ Blocks up to 60s, returns full result when complete
377+
```
378+
379+
**Requires:** ZADT_VSP WebSocket handler deployed to SAP system.
380+
381+
**Tool Group:** Report tools can be disabled with `--disabled-groups R`
382+
383+
---
384+
351385
## Tool Count Summary
352386

353387
| Mode | Tools | Description |
354388
|------|-------|-------------|
355-
| **Focused** | 51 | Essential tools for AI-assisted development |
389+
| **Focused** | 54 | Essential tools for AI-assisted development |
356390
| **Expert** | 99 | All tools including low-level operations and RAP creation |
357391

358392
**Token Savings with Focused Mode:**
Lines changed: 172 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,172 @@
1+
# VSP v2.19.0 Release Notes
2+
3+
**Date:** 2026-01-05
4+
**Report ID:** 001
5+
**Subject:** v2.19.0 "Async & Developer Productivity" Release
6+
**Codename:** Quick Wins Sprint
7+
8+
---
9+
10+
## Executive Summary
11+
12+
VSP v2.19.0 delivers **8 new tools** focused on developer productivity and async execution patterns. This release completes the "Quick Wins" sprint from the roadmap, adding essential utilities for comparing code, cloning objects, and running reports without timeout concerns.
13+
14+
**Highlight:** The new `RunReportAsync` + `GetAsyncResult` pattern enables execution of long-running reports without WebSocket timeouts - a breakthrough for enterprise ABAP automation.
15+
16+
---
17+
18+
## New Tools (8)
19+
20+
### Async Execution Pattern (2 tools)
21+
22+
| Tool | Description |
23+
|------|-------------|
24+
| **RunReportAsync** | Start report execution in background goroutine. Returns task_id immediately. Each task gets its own WebSocket connection to avoid blocking. |
25+
| **GetAsyncResult** | Poll for task status or block up to 60s waiting for completion. Returns full result when done. |
26+
27+
**Usage Pattern:**
28+
```
29+
1. RunReportAsync(report="RFITEMGL", params=...)
30+
→ {"task_id": "report_1736034567_1", "status": "started"}
31+
32+
2. GetAsyncResult(task_id="...", wait=true)
33+
→ Blocks until complete, returns full report result
34+
```
35+
36+
### Developer Productivity (4 tools)
37+
38+
| Tool | Description |
39+
|------|-------------|
40+
| **CompareSource** | Unified diff between any two ABAP objects. Uses LCS algorithm with context lines. Supports all GetSource object types. |
41+
| **CloneObject** | Copy PROG/CLAS/INTF to new name. Auto-replaces object name in source code. |
42+
| **GetClassInfo** | Quick class metadata without full source: methods, attributes, interfaces, superclass, abstract/final status. Uses CAI API. |
43+
| **CreateTable** | Create DDIC transparent tables from simple JSON definition. Auto-generates DDL source and activates. |
44+
45+
### Fixes (2 tools)
46+
47+
| Tool | Fix |
48+
|------|-----|
49+
| **GetSystemInfo** | Rewrote to use SQL queries (CVERS, T000) instead of discovery endpoint. Works reliably across all SAP versions. |
50+
| **GetMessages** | Fixed XML parsing. Now correctly returns all messages from a message class. |
51+
52+
---
53+
54+
## Technical Highlights
55+
56+
### Async Architecture
57+
58+
The async pattern solves the WebSocket timeout problem for long-running operations:
59+
60+
```
61+
┌─────────────────────────────────────────────────┐
62+
│ RunReportAsync │
63+
│ 1. Generate unique task_id │
64+
│ 2. Store task in asyncTasks map │
65+
│ 3. Spawn goroutine with new WebSocket conn │
66+
│ 4. Return task_id immediately │
67+
└─────────────────────────────────────────────────┘
68+
69+
▼ (background)
70+
┌─────────────────────────────────────────────────┐
71+
│ Goroutine │
72+
│ 1. Connect WebSocket to ZADT_VSP │
73+
│ 2. Execute report (no timeout pressure) │
74+
│ 3. Store result in asyncTasks map │
75+
│ 4. Close WebSocket │
76+
└─────────────────────────────────────────────────┘
77+
78+
79+
┌─────────────────────────────────────────────────┐
80+
│ GetAsyncResult(wait=true) │
81+
│ 1. Poll asyncTasks every 500ms │
82+
│ 2. Return when status != "running" │
83+
│ 3. Max wait: 60 seconds │
84+
└─────────────────────────────────────────────────┘
85+
```
86+
87+
### CreateTable JSON API
88+
89+
```json
90+
{
91+
"name": "ZLLM_SESSIONS",
92+
"description": "LLM Session Storage",
93+
"package": "$TMP",
94+
"fields": [
95+
{"name": "SESSION_ID", "type": "CHAR32", "key": true},
96+
{"name": "QUESTION", "type": "STRING"},
97+
{"name": "STATUS", "type": "CHAR", "length": 20},
98+
{"name": "CREATED_AT", "type": "TIMESTAMPL"}
99+
]
100+
}
101+
```
102+
103+
Supported types: CHAR, NUMC, INT4, DEC, STRING, TIMESTAMPL, UUID, DATS, TIMS, or any data element name.
104+
105+
---
106+
107+
## Metrics
108+
109+
| Metric | Before | After | Change |
110+
|--------|--------|-------|--------|
111+
| **Focused Tools** | 48 | 54 | +6 |
112+
| **Expert Tools** | 93 | 99 | +6 |
113+
| **Unit Tests** | 244 | 244 | - |
114+
| **Quick Wins Done** | 2/8 | 7/9 | +5 |
115+
116+
---
117+
118+
## Roadmap Progress
119+
120+
### Quick Wins Completed
121+
- [x] `vsp debug` CLI (v2.18)
122+
- [x] GetMessages tool
123+
- [x] CompareSource tool
124+
- [x] CloneObject tool
125+
- [x] CreateTable tool
126+
- [x] GetClassInfo tool
127+
- [x] RunReportAsync pattern
128+
129+
### Remaining Quick Wins
130+
- [ ] Heading texts in SetTextElements
131+
- [ ] Tool aliases (`gs` → GetSource)
132+
133+
### Future Vision Reference
134+
135+
This async pattern is foundational for the **AI-Native ABAP Development** vision:
136+
137+
1. **Autonomous Agents**: AI can now start long-running operations and check results later
138+
2. **Parallel Execution**: Multiple reports can run concurrently via separate goroutines
139+
3. **Timeout-Free Operations**: Complex analysis (ATC, profiling, mass activation) can use same pattern
140+
141+
See `reports/2025-12-05-022-future-vision.md` for the full strategic roadmap.
142+
143+
---
144+
145+
## Installation
146+
147+
```bash
148+
# Download for your platform
149+
curl -LO https://github.com/oisee/vibing-steampunk/releases/download/v2.19.0/vsp-linux-amd64
150+
chmod +x vsp-linux-amd64
151+
mv vsp-linux-amd64 /usr/local/bin/vsp
152+
```
153+
154+
## Upgrade Notes
155+
156+
- No breaking changes
157+
- New tools available immediately in focused mode
158+
- Async tasks stored in-memory (cleared on restart)
159+
160+
---
161+
162+
## Contributors
163+
164+
- Claude Opus 4.5 (AI pair programmer)
165+
- @oisee (project lead)
166+
167+
---
168+
169+
*"The best time to plant a tree was 20 years ago. The second best time is now."*
170+
*— Chinese Proverb*
171+
172+
**The best time to make ABAP async was never possible. Until now.**

0 commit comments

Comments
 (0)