abapgit-agent 1.17.0 → 1.17.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -22,7 +22,7 @@ Interface | zif_*.intf.abap | zif_*.intf.xml
22
22
  Program | z*.prog.abap | z*.prog.xml
23
23
  CDS View (DDLS) | zc_*.ddls.asddls | zc_*.ddls.xml
24
24
  CDS Access Control | zc_*.dcls.asdcls | zc_*.dcls.xml
25
- Function Group | z*fugr*.abap (6 files) | z*.fugr.xml
25
+ Function Group | z*fugr*.abap (1 per FM + includes) | z*.fugr.xml
26
26
  Enhancement (ENHO) | z*.enho.<hash>.abap (N files)| z*.enho.xml
27
27
  ```
28
28
 
@@ -105,7 +105,10 @@ When an ENHO already exists in both git and the ABAP system:
105
105
  # Edit the hook source
106
106
  vi src/zfoo_enh.enho.d639f45c.abap
107
107
 
108
- # Skip syntax (not supported for ENHO), commit, push, pull
108
+ # Syntax check (optional catches basic errors before commit)
109
+ abapgit-agent syntax --files src/zfoo_enh.enho.d639f45c.abap
110
+
111
+ # Commit, push, pull
109
112
  git add src/zfoo_enh.enho.d639f45c.abap
110
113
  git commit -m "fix: update enhancement hook"
111
114
  git push
@@ -22,7 +22,11 @@ This folder contains detailed ABAP coding guidelines that can be searched using
22
22
  | `objects.md` | Object Naming Conventions |
23
23
  | `naming-limits.md` | Naming Length Limits (30/16/40 char rules per type) |
24
24
  | `json.md` | JSON Handling |
25
- | `abapgit.md` | abapGit XML Metadata Templates |
25
+ | `string-template.md` | String Templates syntax, escaping `\{` `\}`, JSON payloads |
26
+ | `abapgit.md` | abapGit XML Metadata — CLAS, INTF, PROG, CDS/DDLS, DCLS, FUGR |
27
+ | `abapgit-xml-only.md` | abapGit XML Metadata — XML-only objects (TABL, STRU, DTEL, TTYP, DOMA, MSAG) |
28
+ | `abapgit-fugr.md` | abapGit XML Metadata — Function Group (FUGR) details |
29
+ | `enho.md` | Enhancement Objects (ENHO) — workflow, hash algorithm, creation guide |
26
30
  | `unit-testable-code.md` | Unit Testable Code Guidelines (Dependency Injection) |
27
31
  | `common-errors.md` | Common ABAP Errors - Quick Fixes |
28
32
  | `debug-session.md` | Debug Session Guide |
@@ -33,6 +37,8 @@ This folder contains detailed ABAP coding guidelines that can be searched using
33
37
  | `cds-testing.md` | CDS Testing (Test Double Framework) |
34
38
  | `abaplint.md` | abaplint Rule Guidelines (prefer_inline trap, safe patterns) |
35
39
  | `comments.md` | Documentation Comments (ABAP DOC, shorttext, @parameter, CDS //) |
40
+ | `run-probe-classes.md` | run Command — AI Guidelines (probe classes, scratchWorkspace) |
41
+ | `probe-poc.md` | Probe and PoC — Full Decision Flow |
36
42
 
37
43
  ## Usage
38
44
 
@@ -23,6 +23,7 @@ Replace `<name>` with the actual object name from this project's naming conventi
23
23
  | CDS View Entity (DDLS) | `<name>.ddls.asddls` | `<name>.ddls.xml` | **Use by default** — `ref --topic abapgit` |
24
24
  | CDS Access Control (DCLS) | `<name>.dcls.asdcls` | `<name>.dcls.xml` | `ref --topic abapgit` |
25
25
  | Function Group (FUGR) | `<name>.fugr.abap` + includes | `<name>.fugr.xml` | `ref --topic abapgit` |
26
+ | Enhancement (ENHO) | `<name>.enho.<hash>.abap` (one per hook) | `<name>.enho.xml` | `ref --topic enho` |
26
27
  | Table (TABL) | *(none — XML-only)* | `<name>.tabl.xml` | `ref --topic abapgit-xml-only` |
27
28
  | Structure (STRU) | *(none — XML-only)* | `<name>.tabl.xml` ⚠️ NOT `.stru.xml` | `ref --topic abapgit-xml-only` |
28
29
  | Data Element (DTEL) | *(none — XML-only)* | `<name>.dtel.xml` | `ref --topic abapgit-xml-only` |
@@ -18,9 +18,9 @@ grand_parent: ABAP Development
18
18
  3. Write code → place in correct folder (e.g., src/zcl_*.clas.abap)
19
19
 
20
20
 
21
- 4. Syntax check (for CLAS, INTF, PROG, DDLS only)
21
+ 4. Syntax check (for CLAS, INTF, PROG, DDLS, ENHO only)
22
22
 
23
- ├─► CLAS/INTF/PROG/DDLS → abapgit-agent syntax --files <file>
23
+ ├─► CLAS/INTF/PROG/DDLS/ENHO → abapgit-agent syntax --files <file>
24
24
  │ │
25
25
  │ ├─► Errors? → Fix locally (no commit needed), re-run syntax
26
26
  │ │
@@ -31,7 +31,7 @@ grand_parent: ABAP Development
31
31
 
32
32
  4b. abaplint (OPTIONAL — only if .abaplint.json exists in repo root)
33
33
 
34
- ├─► .abaplint.json exists → npx @abaplint/cli .abaplint.json
34
+ ├─► .abaplint.json exists → abapgit-agent lint
35
35
  │ │
36
36
  │ ├─► Issues? → Fix locally, re-run abaplint
37
37
  │ │ ⚠️ Before applying any quickfix: run abapgit-agent ref --topic abaplint
@@ -45,7 +45,7 @@ grand_parent: ABAP Development
45
45
  5. Commit and push → git add . && git commit && git push
46
46
 
47
47
 
48
- 6. Activate → abapgit-agent pull --files src/file.clas.abap
48
+ 6. Activate → abapgit-agent pull --files src/file.clas.abap --sync-xml
49
49
  │ (behaviour depends on .abapgit-agent.json — see AI Tool Guidelines)
50
50
 
51
51
 
@@ -67,6 +67,7 @@ grand_parent: ABAP Development
67
67
  | INTF (interfaces) | ✅ Supported | Run `syntax` before commit |
68
68
  | PROG (programs) | ✅ Supported | Run `syntax` before commit |
69
69
  | DDLS (CDS views) | ✅ Supported | Run `syntax` before commit (requires annotations) |
70
+ | ENHO (enhancements) | ✅ Supported | Run `syntax` before commit (basic errors only — no target class context) |
70
71
  | FUGR (function groups) | ❌ Not supported | Skip syntax, use `pull` then `inspect` |
71
72
  | TABL/DTEL/DOMA/MSAG/SHLP | ❌ Not supported | Skip syntax, just `pull` |
72
73
  | All other types | ❌ Not supported | Skip syntax, just `pull` |
@@ -90,7 +91,7 @@ abapgit-agent syntax --files src/zif_my_interface.intf.abap # ✅ Works (no dep
90
91
  git add src/zif_my_interface.intf.abap src/zif_my_interface.intf.xml
91
92
  git commit -m "feat: add interface"
92
93
  git push
93
- abapgit-agent pull --files src/zif_my_interface.intf.abap # Interface now activated
94
+ abapgit-agent pull --files src/zif_my_interface.intf.abap --sync-xml # Interface now activated
94
95
 
95
96
  # Step 2: Create class, syntax check, commit, activate
96
97
  vim src/zcl_my_class.clas.abap
@@ -98,7 +99,7 @@ abapgit-agent syntax --files src/zcl_my_class.clas.abap # ✅ Works (interfa
98
99
  git add src/zcl_my_class.clas.abap src/zcl_my_class.clas.xml
99
100
  git commit -m "feat: add class implementing interface"
100
101
  git push
101
- abapgit-agent pull --files src/zcl_my_class.clas.abap
102
+ abapgit-agent pull --files src/zcl_my_class.clas.abap --sync-xml
102
103
  ```
103
104
 
104
105
  **Benefits:**
@@ -123,7 +124,7 @@ git commit -m "feat: add interface and implementing class"
123
124
  git push
124
125
 
125
126
  # Pull both together
126
- abapgit-agent pull --files src/zif_my_interface.intf.abap,src/zcl_my_class.clas.abap
127
+ abapgit-agent pull --files src/zif_my_interface.intf.abap,src/zcl_my_class.clas.abap --sync-xml
127
128
 
128
129
  # Use inspect if errors occur
129
130
  abapgit-agent inspect --files src/zcl_my_class.clas.abap
@@ -150,7 +151,7 @@ git commit -m "feat: add class and CDS view"
150
151
  git push
151
152
 
152
153
  # Pull all files together
153
- abapgit-agent pull --files src/zcl_my_class.clas.abap,src/zc_my_view.ddls.asddls
154
+ abapgit-agent pull --files src/zcl_my_class.clas.abap,src/zc_my_view.ddls.asddls --sync-xml
154
155
  ```
155
156
 
156
157
  **When to use syntax vs abaplint vs inspect vs view**:
@@ -169,6 +170,7 @@ abapgit-agent pull --files src/zcl_my_class.clas.abap,src/zc_my_view.ddls.asddls
169
170
  ├─ .intf.abap → INTF ✅ syntax supported
170
171
  ├─ .prog.abap → PROG ✅ syntax supported
171
172
  ├─ .ddls.asddls → DDLS ✅ syntax supported (requires proper annotations)
173
+ ├─ .enho.<hash>.abap → ENHO ✅ syntax supported (basic errors; no target class context)
172
174
  └─ All other extensions → ❌ syntax not supported
173
175
 
174
176
  2. Check for dependencies:
@@ -177,25 +179,25 @@ abapgit-agent pull --files src/zcl_my_class.clas.abap,src/zc_my_view.ddls.asddls
177
179
  ├─ CDS view uses table? → INDEPENDENT (table already exists)
178
180
  └─ Unrelated bug fixes across files? → INDEPENDENT
179
181
 
180
- 3. For SUPPORTED types (CLAS/INTF/PROG/DDLS):
181
- ├─ INDEPENDENT files → Run syntax → [abaplint if enabled] → Fix errors → Commit → Push → Pull
182
+ 3. For SUPPORTED types (CLAS/INTF/PROG/DDLS/ENHO):
183
+ ├─ INDEPENDENT files → Run syntax → [abaplint if enabled] → Fix errors → Commit → Push → Pull --sync-xml
182
184
 
183
185
  └─ DEPENDENT files (NEW objects):
184
186
  ├─ RECOMMENDED: Create underlying object first (interface, base class, etc.)
185
- │ 1. Create underlying object → Syntax → [abaplint] → Commit → Push → Pull
186
- │ 2. Create dependent object → Syntax (works!) → [abaplint] → Commit → Push → Pull
187
+ │ 1. Create underlying object → Syntax → [abaplint] → Commit → Push → Pull --sync-xml
188
+ │ 2. Create dependent object → Syntax (works!) → [abaplint] → Commit → Push → Pull --sync-xml
187
189
  │ ✅ Benefits: Both syntax checks work, cleaner workflow
188
190
 
189
191
  └─ ALTERNATIVE: If interface design uncertain, commit both together
190
- → Skip syntax → [abaplint] → Commit both → Push → Pull → (if errors: inspect)
192
+ → Skip syntax → [abaplint] → Commit both → Push → Pull --sync-xml → (if errors: inspect)
191
193
 
192
194
  4. For UNSUPPORTED types (FUGR, TABL, etc.):
193
- Write code → Skip syntax → [abaplint] → Commit → Push → Pull → (if errors: inspect)
195
+ Write code → Skip syntax → [abaplint] → Commit → Push → Pull --sync-xml → (if errors: inspect)
194
196
 
195
197
  5. For MIXED types (some supported + some unsupported):
196
- Write all code → Run syntax on independent supported files ONLY → [abaplint] → Commit ALL → Push → Pull ALL
198
+ Write all code → Run syntax on independent supported files ONLY → [abaplint] → Commit ALL → Push → Pull ALL --sync-xml
197
199
 
198
- [abaplint] = run npx @abaplint/cli .abaplint.json only if .abaplint.json exists in repo root
200
+ [abaplint] = run abapgit-agent lint only if .abaplint.json exists in repo root
199
201
  before applying any quickfix: run abapgit-agent ref --topic abaplint
200
202
  ```
201
203
 
@@ -207,13 +209,13 @@ abapgit-agent pull --files src/zcl_my_class.clas.abap,src/zc_my_view.ddls.asddls
207
209
  vim src/zif_calculator.intf.abap
208
210
  abapgit-agent syntax --files src/zif_calculator.intf.abap # ✅ Works
209
211
  git commit -am "feat: add calculator interface" && git push
210
- abapgit-agent pull --files src/zif_calculator.intf.abap # Interface activated
212
+ abapgit-agent pull --files src/zif_calculator.intf.abap --sync-xml # Interface activated
211
213
 
212
214
  # Step 2: Class next
213
215
  vim src/zcl_calculator.clas.abap
214
216
  abapgit-agent syntax --files src/zcl_calculator.clas.abap # ✅ Works (interface exists!)
215
217
  git commit -am "feat: implement calculator" && git push
216
- abapgit-agent pull --files src/zcl_calculator.clas.abap
218
+ abapgit-agent pull --files src/zcl_calculator.clas.abap --sync-xml
217
219
  ```
218
220
 
219
221
  **Scenario 2: Multiple independent classes**
@@ -222,7 +224,7 @@ abapgit-agent pull --files src/zcl_calculator.clas.abap
222
224
  vim src/zcl_class1.clas.abap src/zcl_class2.clas.abap
223
225
  abapgit-agent syntax --files src/zcl_class1.clas.abap,src/zcl_class2.clas.abap
224
226
  git commit -am "feat: add utility classes" && git push
225
- abapgit-agent pull --files src/zcl_class1.clas.abap,src/zcl_class2.clas.abap
227
+ abapgit-agent pull --files src/zcl_class1.clas.abap,src/zcl_class2.clas.abap --sync-xml
226
228
  ```
227
229
 
228
230
  **Error indicators after pull:**
@@ -240,10 +242,10 @@ abapgit-agent syntax --files src/zc_my_view.ddls.asddls
240
242
  abapgit-agent syntax --files src/zcl_class1.clas.abap,src/zif_intf1.intf.abap,src/zc_view.ddls.asddls
241
243
 
242
244
  # 2. Pull/activate AFTER pushing to git
243
- abapgit-agent pull --files src/zcl_class1.clas.abap,src/zcl_class2.clas.abap
245
+ abapgit-agent pull --files src/zcl_class1.clas.abap,src/zcl_class2.clas.abap --sync-xml
244
246
 
245
247
  # Override conflict detection for a single pull (e.g. deliberate branch switch)
246
- abapgit-agent pull --files src/zcl_class1.clas.abap --conflict-mode ignore
248
+ abapgit-agent pull --files src/zcl_class1.clas.abap --conflict-mode ignore --sync-xml
247
249
 
248
250
  # 3. Inspect AFTER pull (for errors or unsupported types)
249
251
  abapgit-agent inspect --files src/zcl_class1.clas.abap
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "abapgit-agent",
3
- "version": "1.17.0",
3
+ "version": "1.17.1",
4
4
  "description": "ABAP Git Agent - Pull and activate ABAP code via abapGit from any git repository",
5
5
  "files": [
6
6
  "bin/",