abapgit-agent 1.5.0 → 1.6.0

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.
Files changed (117) hide show
  1. package/README.md +1 -0
  2. package/abap/guidelines/00_index.md +35 -0
  3. package/abap/guidelines/01_sql.md +72 -0
  4. package/abap/guidelines/02_exceptions.md +108 -0
  5. package/abap/guidelines/03_testing.md +252 -0
  6. package/abap/guidelines/04_cds.md +120 -0
  7. package/abap/guidelines/05_classes.md +50 -0
  8. package/abap/guidelines/06_objects.md +103 -0
  9. package/abap/guidelines/07_json.md +22 -0
  10. package/abap/guidelines/08_abapgit.md +193 -0
  11. package/bin/abapgit-agent +467 -30
  12. package/bin/abgagt +24 -0
  13. package/package.json +8 -2
  14. package/src/abap-client.js +65 -2
  15. package/src/agent.js +57 -3
  16. package/src/ref-search.js +989 -0
  17. package/.abapGitAgent.example +0 -11
  18. package/.github/workflows/release.yml +0 -60
  19. package/API.md +0 -710
  20. package/CLAUDE.md +0 -1058
  21. package/CLAUDE_MEM.md +0 -88
  22. package/ERROR_HANDLING.md +0 -30
  23. package/INSTALL.md +0 -155
  24. package/RELEASE_NOTES.md +0 -143
  25. package/abap/CLAUDE.md +0 -1010
  26. package/abap/copilot-instructions.md +0 -79
  27. package/abap/package.devc.xml +0 -10
  28. package/abap/zcl_abgagt_agent.clas.abap +0 -420
  29. package/abap/zcl_abgagt_agent.clas.xml +0 -15
  30. package/abap/zcl_abgagt_cmd_factory.clas.abap +0 -48
  31. package/abap/zcl_abgagt_cmd_factory.clas.xml +0 -15
  32. package/abap/zcl_abgagt_command_create.clas.abap +0 -95
  33. package/abap/zcl_abgagt_command_create.clas.xml +0 -15
  34. package/abap/zcl_abgagt_command_import.clas.abap +0 -138
  35. package/abap/zcl_abgagt_command_import.clas.xml +0 -15
  36. package/abap/zcl_abgagt_command_inspect.clas.abap +0 -456
  37. package/abap/zcl_abgagt_command_inspect.clas.testclasses.abap +0 -121
  38. package/abap/zcl_abgagt_command_inspect.clas.xml +0 -16
  39. package/abap/zcl_abgagt_command_preview.clas.abap +0 -386
  40. package/abap/zcl_abgagt_command_preview.clas.xml +0 -15
  41. package/abap/zcl_abgagt_command_pull.clas.abap +0 -80
  42. package/abap/zcl_abgagt_command_pull.clas.testclasses.abap +0 -87
  43. package/abap/zcl_abgagt_command_pull.clas.xml +0 -16
  44. package/abap/zcl_abgagt_command_tree.clas.abap +0 -237
  45. package/abap/zcl_abgagt_command_tree.clas.xml +0 -15
  46. package/abap/zcl_abgagt_command_unit.clas.abap +0 -297
  47. package/abap/zcl_abgagt_command_unit.clas.xml +0 -15
  48. package/abap/zcl_abgagt_command_view.clas.abap +0 -240
  49. package/abap/zcl_abgagt_command_view.clas.xml +0 -15
  50. package/abap/zcl_abgagt_resource_create.clas.abap +0 -71
  51. package/abap/zcl_abgagt_resource_create.clas.xml +0 -15
  52. package/abap/zcl_abgagt_resource_health.clas.abap +0 -25
  53. package/abap/zcl_abgagt_resource_health.clas.xml +0 -15
  54. package/abap/zcl_abgagt_resource_import.clas.abap +0 -66
  55. package/abap/zcl_abgagt_resource_import.clas.xml +0 -15
  56. package/abap/zcl_abgagt_resource_inspect.clas.abap +0 -63
  57. package/abap/zcl_abgagt_resource_inspect.clas.xml +0 -15
  58. package/abap/zcl_abgagt_resource_preview.clas.abap +0 -67
  59. package/abap/zcl_abgagt_resource_preview.clas.xml +0 -15
  60. package/abap/zcl_abgagt_resource_pull.clas.abap +0 -71
  61. package/abap/zcl_abgagt_resource_pull.clas.xml +0 -15
  62. package/abap/zcl_abgagt_resource_tree.clas.abap +0 -70
  63. package/abap/zcl_abgagt_resource_tree.clas.xml +0 -15
  64. package/abap/zcl_abgagt_resource_unit.clas.abap +0 -64
  65. package/abap/zcl_abgagt_resource_unit.clas.xml +0 -15
  66. package/abap/zcl_abgagt_resource_view.clas.abap +0 -68
  67. package/abap/zcl_abgagt_resource_view.clas.xml +0 -15
  68. package/abap/zcl_abgagt_rest_handler.clas.abap +0 -32
  69. package/abap/zcl_abgagt_rest_handler.clas.xml +0 -15
  70. package/abap/zcl_abgagt_util.clas.abap +0 -93
  71. package/abap/zcl_abgagt_util.clas.testclasses.abap +0 -84
  72. package/abap/zcl_abgagt_util.clas.xml +0 -16
  73. package/abap/zcl_abgagt_viewer_clas.clas.abap +0 -58
  74. package/abap/zcl_abgagt_viewer_clas.clas.xml +0 -15
  75. package/abap/zcl_abgagt_viewer_ddls.clas.abap +0 -83
  76. package/abap/zcl_abgagt_viewer_ddls.clas.xml +0 -15
  77. package/abap/zcl_abgagt_viewer_dtel.clas.abap +0 -98
  78. package/abap/zcl_abgagt_viewer_dtel.clas.xml +0 -15
  79. package/abap/zcl_abgagt_viewer_factory.clas.abap +0 -41
  80. package/abap/zcl_abgagt_viewer_factory.clas.xml +0 -15
  81. package/abap/zcl_abgagt_viewer_intf.clas.abap +0 -58
  82. package/abap/zcl_abgagt_viewer_intf.clas.xml +0 -15
  83. package/abap/zcl_abgagt_viewer_stru.clas.abap +0 -59
  84. package/abap/zcl_abgagt_viewer_stru.clas.xml +0 -15
  85. package/abap/zcl_abgagt_viewer_tabl.clas.abap +0 -59
  86. package/abap/zcl_abgagt_viewer_tabl.clas.xml +0 -15
  87. package/abap/zcl_abgagt_viewer_ttyp.clas.abap +0 -93
  88. package/abap/zcl_abgagt_viewer_ttyp.clas.xml +0 -15
  89. package/abap/zif_abgagt_agent.intf.abap +0 -53
  90. package/abap/zif_abgagt_agent.intf.xml +0 -15
  91. package/abap/zif_abgagt_cmd_factory.intf.abap +0 -7
  92. package/abap/zif_abgagt_cmd_factory.intf.xml +0 -15
  93. package/abap/zif_abgagt_command.intf.abap +0 -26
  94. package/abap/zif_abgagt_command.intf.xml +0 -15
  95. package/abap/zif_abgagt_util.intf.abap +0 -28
  96. package/abap/zif_abgagt_util.intf.xml +0 -15
  97. package/abap/zif_abgagt_viewer.intf.abap +0 -12
  98. package/abap/zif_abgagt_viewer.intf.xml +0 -15
  99. package/docs/commands.md +0 -142
  100. package/docs/create-command.md +0 -129
  101. package/docs/health-command.md +0 -89
  102. package/docs/import-command.md +0 -195
  103. package/docs/init-command.md +0 -189
  104. package/docs/inspect-command.md +0 -169
  105. package/docs/list-command.md +0 -289
  106. package/docs/preview-command.md +0 -528
  107. package/docs/pull-command.md +0 -202
  108. package/docs/status-command.md +0 -68
  109. package/docs/tree-command.md +0 -303
  110. package/docs/unit-command.md +0 -167
  111. package/docs/view-command.md +0 -501
  112. package/img/claude.png +0 -0
  113. package/scripts/claude-integration.js +0 -351
  114. package/scripts/release.js +0 -298
  115. package/scripts/release.sh +0 -60
  116. package/scripts/test-integration.js +0 -139
  117. package/scripts/unrelease.js +0 -277
@@ -0,0 +1,103 @@
1
+ # ABAP Objects
2
+
3
+ ## Creating New ABAP Objects - XML Metadata Required
4
+
5
+ **CRITICAL CHECKLIST - Never Forget!**
6
+
7
+ When creating ANY new ABAP object file, you MUST also create its XML metadata file:
8
+
9
+ | ABAP File | Required XML File |
10
+ |-----------|------------------|
11
+ | `zcl_my_class.clas.abap` | `zcl_my_class.clas.xml` |
12
+ | `zif_my_intf.intf.abap` | `zif_my_intf.intf.xml` |
13
+
14
+ **Without XML files**, abapGit will NOT recognize the objects during pull, and they won't be activated.
15
+
16
+ ### XML Metadata Format for CLAS
17
+
18
+ For `zcl_abgagt_util.clas.abap`, create `zcl_abgagt_util.clas.xml`:
19
+
20
+ ```xml
21
+ <?xml version="1.0" encoding="utf-8"?>
22
+ <abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
23
+ <asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
24
+ <asx:values>
25
+ <VSEOCLASS>
26
+ <CLSNAME>ZCL_ABGAGT_UTIL</CLSNAME>
27
+ <LANGU>E</LANGU>
28
+ <DESCRIPT>Description</DESCRIPT>
29
+ <EXPOSURE>2</EXPOSURE>
30
+ <STATE>1</STATE>
31
+ <UNICODE>X</UNICODE>
32
+ </VSEOCLASS>
33
+ </asx:values>
34
+ </asx:abap>
35
+ </abapGit>
36
+ ```
37
+
38
+ ### XML Metadata Format for INTF
39
+
40
+ For `zif_abgagt_util.intf.abap`, create `zif_abgagt_util.intf.xml`:
41
+
42
+ ```xml
43
+ <?xml version="1.0" encoding="utf-8"?>
44
+ <abapGit version="v1.0.0" serializer="LCL_OBJECT_INTF" serializer_version="v1.0.0">
45
+ <asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
46
+ <asx:values>
47
+ <VSEOINTERF>
48
+ <CLSNAME>ZIF_ABGAGT_UTIL</CLSNAME>
49
+ <LANGU>E</LANGU>
50
+ <DESCRIPT>Description</DESCRIPT>
51
+ <EXPOSURE>2</EXPOSURE>
52
+ <STATE>1</STATE>
53
+ <UNICODE>X</UNICODE>
54
+ </VSEOINTERF>
55
+ </asx:values>
56
+ </asx:abap>
57
+ </abapGit>
58
+ ```
59
+
60
+ ### Important Notes
61
+
62
+ 1. **CRITICAL: Push to git BEFORE pulling into ABAP**
63
+ - Always commit and push ABAP files to git first
64
+ - Then run `abapgit-agent pull` to activate in ABAP
65
+ - Never run `abapgit-agent pull` without pushing changes first
66
+
67
+ 2. **Only pull ABAP files** - The XML metadata stays in git:
68
+ ```bash
69
+ abapgit-agent pull --files zcl_my_class.clas.abap
70
+ ```
71
+ 3. abapGit reads the XML from git to deserialize the ABAP code
72
+ 4. XML files are NOT activated in ABAP - they are only for abapGit
73
+
74
+ ```bash
75
+ # After making changes to ABAP files
76
+ git add .
77
+ git commit -m "Describe changes"
78
+ git push # CRITICAL: Push BEFORE pulling
79
+
80
+ # Then validate in ABAP system (single file - fast)
81
+ abapgit-agent pull --files abap/zcl_my_class.clas.abap
82
+
83
+ # Or validate all files
84
+ abapgit-agent pull
85
+ ```
86
+
87
+ ## Naming Conventions
88
+
89
+ - Use `Z_` or `Y_` prefix for custom objects
90
+ - Class names: `ZCL_<NAME>`
91
+ - Interface names: `ZIF_<NAME>`
92
+ - Programs: `Z<NAME>`
93
+ - Package: `$<PROJECT_NAME>`
94
+
95
+ ## ABAP Object Types
96
+
97
+ Common object types in this project:
98
+ - `CLAS` - Classes
99
+ - `PROG` - Programs
100
+ - `FUGR` - Function Groups
101
+ - `INTF` - Interfaces
102
+ - `TABL` - Tables
103
+ - `DDLS` - Data Definitions
@@ -0,0 +1,22 @@
1
+ # JSON Handling
2
+
3
+ **CRITICAL**: Always use `/ui2/cl_json` for JSON serialization and deserialization.
4
+
5
+ ## Correct Usage
6
+
7
+ ```abap
8
+ " Deserialize JSON to ABAP structure
9
+ DATA ls_data TYPE ty_request.
10
+ ls_data = /ui2/cl_json=>deserialize( json = lv_json ).
11
+
12
+ " Serialize ABAP structure to JSON
13
+ lv_json = /ui2/cl_json=>serialize( data = ls_response ).
14
+ ```
15
+
16
+ ## Never Use
17
+
18
+ - Manual string operations (CONCATENATE, SPLIT, etc.)
19
+ - String templates for complex structures
20
+ - Direct assignment without /ui2/cl_json
21
+
22
+ This is enforced by ABAP - manual string operations for JSON parsing will cause type conflicts.
@@ -0,0 +1,193 @@
1
+ # abapGit Object XML Metadata
2
+
3
+ Each ABAP object requires an XML metadata file for abapGit to understand how to serialize/deserialize it. This guide provides templates for common object types.
4
+
5
+ ## Why XML Metadata?
6
+
7
+ abapGit needs XML files to:
8
+ - Know the object type and serializer to use
9
+ - Store object attributes (description, exposure, state, etc.)
10
+ - Handle object-specific configurations
11
+
12
+ ## Object Types and XML Templates
13
+
14
+ ### Class (CLAS)
15
+
16
+ **Filename**: `src/zcl_my_class.clas.xml`
17
+
18
+ ```xml
19
+ <?xml version="1.0" encoding="utf-8"?>
20
+ <abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
21
+ <asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
22
+ <asx:values>
23
+ <VSEOCLASS>
24
+ <CLSNAME>ZCL_MY_CLASS</CLSNAME>
25
+ <LANGU>E</LANGU>
26
+ <DESCRIPT>Description of the class</DESCRIPT>
27
+ <EXPOSURE>2</EXPOSURE>
28
+ <STATE>1</STATE>
29
+ <UNICODE>X</UNICODE>
30
+ </VSEOCLASS>
31
+ </asx:values>
32
+ </asx:abap>
33
+ </abapGit>
34
+ ```
35
+
36
+ **Key Fields**:
37
+ - `CLSNAME`: Class name (must match filename)
38
+ - `DESCRIPT`: Class description
39
+ - `EXPOSURE`: Exposure (2 = Public, 3 = Protected, 4 = Private)
40
+ - `STATE`: State (1 = Active)
41
+ - `UNICODE`: Unicode encoding (X = Yes)
42
+
43
+ ---
44
+
45
+ ### Interface (INTF)
46
+
47
+ **Filename**: `src/zif_my_interface.intf.xml`
48
+
49
+ ```xml
50
+ <?xml version="1.0" encoding="utf-8"?>
51
+ <abapGit version="v1.0.0" serializer="LCL_OBJECT_INTF" serializer_version="v1.0.0">
52
+ <asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
53
+ <asx:values>
54
+ <VSEOINTERF>
55
+ <CLSNAME>ZIF_MY_INTERFACE</CLSNAME>
56
+ <LANGU>E</LANGU>
57
+ <DESCRIPT>Description of the interface</DESCRIPT>
58
+ <EXPOSURE>2</EXPOSURE>
59
+ <STATE>1</STATE>
60
+ <UNICODE>X</UNICODE>
61
+ </VSEOINTERF>
62
+ </asx:values>
63
+ </asx:abap>
64
+ </abapGit>
65
+ ```
66
+
67
+ ---
68
+
69
+ ### Program (PROG)
70
+
71
+ **Filename**: `src/zmy_program.prog.xml`
72
+
73
+ ```xml
74
+ <?xml version="1.0" encoding="utf-8"?>
75
+ <abapGit version="v1.0.0" serializer="LCL_OBJECT_PROG" serializer_version="v1.0.0">
76
+ <asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
77
+ <asx:values>
78
+ <PROGDIR>
79
+ <NAME>ZMY_PROGRAM</NAME>
80
+ <SUBC>I</SUBC>
81
+ <RLOAD>E</RLOAD>
82
+ <FIXPT>X</FIXPT>
83
+ <UCCHECK>X</UCCHECK>
84
+ </PROGDIR>
85
+ </asx:values>
86
+ </asx:abap>
87
+ </abapGit>
88
+ ```
89
+
90
+ **Key Fields**:
91
+ - `NAME`: Program name
92
+ - `SUBC`: Subc (I = Include, 1 = Executable, F = Function Group, M = Module Pool, S = Subroutine Pool)
93
+ - `RLOAD`: Rload (E = External, I = Internal)
94
+
95
+ ---
96
+
97
+ ### Table (TABL)
98
+
99
+ **Filename**: `src/zmy_table.tabl.xml`
100
+
101
+ ```xml
102
+ <?xml version="1.0" encoding="utf-8"?>
103
+ <abapGit version="v1.0.0" serializer="LCL_OBJECT_TABL" serializer_version="v1.0.0">
104
+ <asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
105
+ <asx:values>
106
+ <DD02V>
107
+ <TABNAME>ZMY_TABLE</TABNAME>
108
+ <DDLANGUAGE>E</DDLANGUAGE>
109
+ <TABCLASS>TRANSP</TABCLASS>
110
+ <DDTEXT>Description of the table</DDTEXT>
111
+ <CONTFLAG>A</CONTFLAG>
112
+ </DD02V>
113
+ </asx:values>
114
+ </asx:abap>
115
+ </abapGit>
116
+ ```
117
+
118
+ **Key Fields**:
119
+ - `TABNAME`: Table name
120
+ - `DDTEXT`: Description (NOT DESCRIPT)
121
+ - `TABCLASS`: Table class (TRANSP = Transparent)
122
+ - `CONTFLAG`: Delivery class (A = Application table)
123
+
124
+ ---
125
+
126
+ ### CDS View (DDLS)
127
+
128
+ **Filename**: `src/zc_my_view.ddls.xml`
129
+
130
+ ```xml
131
+ <?xml version="1.0" encoding="utf-8"?>
132
+ <abapGit version="v1.0.0" serializer="LCL_OBJECT_DDLS" serializer_version="v1.0.0">
133
+ <asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
134
+ <asx:values>
135
+ <DDLS>
136
+ <DDLNAME>ZC_MY_VIEW</DDLNAME>
137
+ <DDLANGUAGE>E</DDLANGUAGE>
138
+ <DDTEXT>My CDS View</DDTEXT>
139
+ <SOURCE_TYPE>V</SOURCE_TYPE>
140
+ </DDLS>
141
+ </asx:values>
142
+ </asx:abap>
143
+ </abapGit>
144
+ ```
145
+
146
+ **Key Points for CDS Views**:
147
+ 1. **ABAP file extension**: Use `.ddls.asddls` (NOT `.ddls.abap`)
148
+ 2. **XML file**: Use `.ddls.xml`
149
+ 3. **DDLNAME**: Must match the CDS view name in the source
150
+ 4. **SOURCE_TYPE**: V = View, C = Consumption
151
+ 5. **Serializer**: Use `LCL_OBJECT_DDLS`
152
+
153
+ ---
154
+
155
+ ### Data Element (DTEL)
156
+
157
+ **Filename**: `src/zmy_dtel.dtel.xml`
158
+
159
+ ```xml
160
+ <?xml version="1.0" encoding="utf-8"?>
161
+ <abapGit version="v1.0.0" serializer="LCL_OBJECT_DTEL" serializer_version="v1.0.0">
162
+ <asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
163
+ <asx:values>
164
+ <DD04V>
165
+ <ROLLNAME>ZMY_DTEL</ROLLNAME>
166
+ <DDLANGUAGE>E</DDLANGUAGE>
167
+ <DDTEXT>Description of data element</DDTEXT>
168
+ <REPTEXT>Description</REPTEXT>
169
+ <SCRTEXT_S>Short</SCRTEXT_S>
170
+ <SCRTEXT_M>Medium</SCRTEXT_M>
171
+ <SCRTEXT_L>Long Description</SCRTEXT_L>
172
+ <DTELMASTER>E</DTELMASTER>
173
+ <DATATYPE>CHAR</DATATYPE>
174
+ <LENG>000010</LENG>
175
+ </DD04V>
176
+ </asx:values>
177
+ </asx:abap>
178
+ </abapGit>
179
+ ```
180
+
181
+ **Key Fields**:
182
+ - `ROLLNAME`: Data element name
183
+ - `DDTEXT`: Description (NOT DESCRIPT)
184
+ - `DATATYPE`: Data type (CHAR, NUMC, etc.)
185
+ - `LENG`: Length (e.g., 000010 for 10 characters)
186
+
187
+ ---
188
+
189
+ ## Important Notes
190
+
191
+ 1. **ALWAYS push to git BEFORE running pull** - abapGit reads from git
192
+ 2. **Check pull output** to verify objects were recognized by abapGit
193
+ 3. **Use inspect AFTER pull** to check syntax on objects in ABAP