arc-1 0.3.0 → 0.4.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.
Files changed (152) hide show
  1. package/README.md +77 -199
  2. package/dist/adt/btp.d.ts +2 -2
  3. package/dist/adt/btp.d.ts.map +1 -1
  4. package/dist/adt/btp.js +1 -1
  5. package/dist/adt/btp.js.map +1 -1
  6. package/dist/adt/client.d.ts +13 -1
  7. package/dist/adt/client.d.ts.map +1 -1
  8. package/dist/adt/client.js +39 -1
  9. package/dist/adt/client.js.map +1 -1
  10. package/dist/adt/codeintel.d.ts +41 -0
  11. package/dist/adt/codeintel.d.ts.map +1 -1
  12. package/dist/adt/codeintel.js +99 -27
  13. package/dist/adt/codeintel.js.map +1 -1
  14. package/dist/adt/config.d.ts.map +1 -1
  15. package/dist/adt/config.js.map +1 -1
  16. package/dist/adt/cookies.d.ts.map +1 -1
  17. package/dist/adt/cookies.js.map +1 -1
  18. package/dist/adt/crud.d.ts.map +1 -1
  19. package/dist/adt/crud.js.map +1 -1
  20. package/dist/adt/devtools.d.ts +14 -0
  21. package/dist/adt/devtools.d.ts.map +1 -1
  22. package/dist/adt/devtools.js +28 -3
  23. package/dist/adt/devtools.js.map +1 -1
  24. package/dist/adt/diagnostics.d.ts +101 -0
  25. package/dist/adt/diagnostics.d.ts.map +1 -0
  26. package/dist/adt/diagnostics.js +349 -0
  27. package/dist/adt/diagnostics.js.map +1 -0
  28. package/dist/adt/errors.d.ts.map +1 -1
  29. package/dist/adt/errors.js.map +1 -1
  30. package/dist/adt/features.d.ts.map +1 -1
  31. package/dist/adt/features.js.map +1 -1
  32. package/dist/adt/http.d.ts +26 -7
  33. package/dist/adt/http.d.ts.map +1 -1
  34. package/dist/adt/http.js +140 -86
  35. package/dist/adt/http.js.map +1 -1
  36. package/dist/adt/oauth.d.ts.map +1 -1
  37. package/dist/adt/oauth.js.map +1 -1
  38. package/dist/adt/safety.d.ts.map +1 -1
  39. package/dist/adt/safety.js.map +1 -1
  40. package/dist/adt/transport.d.ts.map +1 -1
  41. package/dist/adt/transport.js.map +1 -1
  42. package/dist/adt/types.d.ts +139 -0
  43. package/dist/adt/types.d.ts.map +1 -1
  44. package/dist/adt/types.js.map +1 -1
  45. package/dist/adt/xml-parser.d.ts +37 -1
  46. package/dist/adt/xml-parser.d.ts.map +1 -1
  47. package/dist/adt/xml-parser.js +147 -0
  48. package/dist/adt/xml-parser.js.map +1 -1
  49. package/dist/cache/cache.d.ts +47 -4
  50. package/dist/cache/cache.d.ts.map +1 -1
  51. package/dist/cache/cache.js +16 -5
  52. package/dist/cache/cache.js.map +1 -1
  53. package/dist/cache/caching-layer.d.ts +82 -0
  54. package/dist/cache/caching-layer.d.ts.map +1 -0
  55. package/dist/cache/caching-layer.js +134 -0
  56. package/dist/cache/caching-layer.js.map +1 -0
  57. package/dist/cache/memory.d.ts +14 -2
  58. package/dist/cache/memory.d.ts.map +1 -1
  59. package/dist/cache/memory.js +72 -5
  60. package/dist/cache/memory.js.map +1 -1
  61. package/dist/cache/sqlite.d.ts +10 -1
  62. package/dist/cache/sqlite.d.ts.map +1 -1
  63. package/dist/cache/sqlite.js +90 -2
  64. package/dist/cache/sqlite.js.map +1 -1
  65. package/dist/cache/warmup.d.ts +41 -0
  66. package/dist/cache/warmup.d.ts.map +1 -0
  67. package/dist/cache/warmup.js +286 -0
  68. package/dist/cache/warmup.js.map +1 -0
  69. package/dist/cli.d.ts.map +1 -1
  70. package/dist/cli.js.map +1 -1
  71. package/dist/context/cds-deps.d.ts +35 -0
  72. package/dist/context/cds-deps.d.ts.map +1 -0
  73. package/dist/context/cds-deps.js +201 -0
  74. package/dist/context/cds-deps.js.map +1 -0
  75. package/dist/context/compressor.d.ts +20 -1
  76. package/dist/context/compressor.d.ts.map +1 -1
  77. package/dist/context/compressor.js +178 -17
  78. package/dist/context/compressor.js.map +1 -1
  79. package/dist/context/contract.d.ts.map +1 -1
  80. package/dist/context/contract.js.map +1 -1
  81. package/dist/context/deps.d.ts.map +1 -1
  82. package/dist/context/deps.js.map +1 -1
  83. package/dist/context/method-surgery.d.ts +91 -0
  84. package/dist/context/method-surgery.d.ts.map +1 -0
  85. package/dist/context/method-surgery.js +441 -0
  86. package/dist/context/method-surgery.js.map +1 -0
  87. package/dist/context/types.d.ts +7 -0
  88. package/dist/context/types.d.ts.map +1 -1
  89. package/dist/context/types.js.map +1 -1
  90. package/dist/handlers/hyperfocused.d.ts +35 -0
  91. package/dist/handlers/hyperfocused.d.ts.map +1 -0
  92. package/dist/handlers/hyperfocused.js +104 -0
  93. package/dist/handlers/hyperfocused.js.map +1 -0
  94. package/dist/handlers/intent.d.ts +2 -1
  95. package/dist/handlers/intent.d.ts.map +1 -1
  96. package/dist/handlers/intent.js +440 -43
  97. package/dist/handlers/intent.js.map +1 -1
  98. package/dist/handlers/tools.d.ts.map +1 -1
  99. package/dist/handlers/tools.js +130 -39
  100. package/dist/handlers/tools.js.map +1 -1
  101. package/dist/index.d.ts.map +1 -1
  102. package/dist/index.js.map +1 -1
  103. package/dist/lint/config-builder.d.ts +60 -0
  104. package/dist/lint/config-builder.d.ts.map +1 -0
  105. package/dist/lint/config-builder.js +187 -0
  106. package/dist/lint/config-builder.js.map +1 -0
  107. package/dist/lint/lint.d.ts +43 -0
  108. package/dist/lint/lint.d.ts.map +1 -1
  109. package/dist/lint/lint.js +77 -2
  110. package/dist/lint/lint.js.map +1 -1
  111. package/dist/lint/presets/cloud.d.ts +16 -0
  112. package/dist/lint/presets/cloud.d.ts.map +1 -0
  113. package/dist/lint/presets/cloud.js +111 -0
  114. package/dist/lint/presets/cloud.js.map +1 -0
  115. package/dist/lint/presets/onprem.d.ts +17 -0
  116. package/dist/lint/presets/onprem.d.ts.map +1 -0
  117. package/dist/lint/presets/onprem.js +82 -0
  118. package/dist/lint/presets/onprem.js.map +1 -0
  119. package/dist/server/audit.d.ts +1 -0
  120. package/dist/server/audit.d.ts.map +1 -1
  121. package/dist/server/audit.js.map +1 -1
  122. package/dist/server/config.d.ts.map +1 -1
  123. package/dist/server/config.js +12 -0
  124. package/dist/server/config.js.map +1 -1
  125. package/dist/server/context.d.ts.map +1 -1
  126. package/dist/server/context.js.map +1 -1
  127. package/dist/server/elicit.d.ts.map +1 -1
  128. package/dist/server/elicit.js.map +1 -1
  129. package/dist/server/http.d.ts.map +1 -1
  130. package/dist/server/http.js +4 -1
  131. package/dist/server/http.js.map +1 -1
  132. package/dist/server/logger.d.ts.map +1 -1
  133. package/dist/server/logger.js.map +1 -1
  134. package/dist/server/server.d.ts +3 -2
  135. package/dist/server/server.d.ts.map +1 -1
  136. package/dist/server/server.js +90 -5
  137. package/dist/server/server.js.map +1 -1
  138. package/dist/server/sinks/btp-auditlog.d.ts.map +1 -1
  139. package/dist/server/sinks/btp-auditlog.js.map +1 -1
  140. package/dist/server/sinks/file.d.ts.map +1 -1
  141. package/dist/server/sinks/file.js.map +1 -1
  142. package/dist/server/sinks/stderr.d.ts.map +1 -1
  143. package/dist/server/sinks/stderr.js.map +1 -1
  144. package/dist/server/sinks/types.d.ts.map +1 -1
  145. package/dist/server/sinks/types.js.map +1 -1
  146. package/dist/server/types.d.ts +14 -0
  147. package/dist/server/types.d.ts.map +1 -1
  148. package/dist/server/types.js +6 -0
  149. package/dist/server/types.js.map +1 -1
  150. package/dist/server/xsuaa.d.ts.map +1 -1
  151. package/dist/server/xsuaa.js.map +1 -1
  152. package/package.json +13 -6
@@ -0,0 +1,286 @@
1
+ /**
2
+ * Cache warmup — pre-indexes all custom objects from the SAP system.
3
+ *
4
+ * Pipeline:
5
+ * 1. Query TADIR for all custom objects (CLAS, INTF, FUNC) matching package filter
6
+ * 2. Fetch source code for each object (bounded parallel)
7
+ * 3. Extract dependencies from each source (local AST, no ADT calls)
8
+ * 4. Store source + deps + edges in cache
9
+ * 5. Build reverse dependency index (edges indexed by toId)
10
+ *
11
+ * Delta strategy:
12
+ * - On-premise: query REPOSRC for objects changed since last warmup (UDAT field)
13
+ * - BTP: full re-scan (no reliable change timestamp available)
14
+ * - Fallback: compare source hash — if unchanged, skip dep extraction
15
+ *
16
+ * Timing estimates (5 concurrent requests):
17
+ * - 500 objects: ~2-3 minutes
18
+ * - 2,000 objects: ~8-12 minutes
19
+ * - 5,000 objects: ~20-30 minutes
20
+ */
21
+ import { extractDependencies } from '../context/deps.js';
22
+ import { logger } from '../server/logger.js';
23
+ import { hashSource } from './cache.js';
24
+ const WARMUP_CONCURRENT = 5;
25
+ const WARMUP_MAX_OBJECTS = 10000;
26
+ /**
27
+ * Run cache warmup: enumerate + fetch + index all custom objects.
28
+ *
29
+ * @param client - ADT client for SAP access
30
+ * @param cachingLayer - Caching layer to populate
31
+ * @param packageFilter - Package name filter (supports wildcards, e.g. "Z*,Y*")
32
+ * @param systemType - System type for choosing delta strategy
33
+ */
34
+ export async function runWarmup(client, cachingLayer, packageFilter, _systemType) {
35
+ const start = Date.now();
36
+ let fetched = 0;
37
+ let skipped = 0;
38
+ let failed = 0;
39
+ let edgesCreated = 0;
40
+ // Phase 1: Enumerate objects from TADIR
41
+ logger.info('Cache warmup: enumerating objects from TADIR...');
42
+ const entries = await enumerateObjects(client, packageFilter);
43
+ logger.info(`Cache warmup: found ${entries.length} objects to index`);
44
+ // Phase 2: Fetch + index in parallel batches
45
+ for (let i = 0; i < entries.length; i += WARMUP_CONCURRENT) {
46
+ const batch = entries.slice(i, i + WARMUP_CONCURRENT);
47
+ const results = await Promise.all(batch.map(async (entry) => {
48
+ try {
49
+ return await indexObject(client, cachingLayer, entry);
50
+ }
51
+ catch (err) {
52
+ logger.debug(`Cache warmup: failed to index ${entry.objectType}:${entry.objectName}`, {
53
+ error: err instanceof Error ? err.message : String(err),
54
+ });
55
+ return { status: 'failed', edges: 0 };
56
+ }
57
+ }));
58
+ for (const r of results) {
59
+ if (r.status === 'fetched') {
60
+ fetched++;
61
+ edgesCreated += r.edges;
62
+ }
63
+ else if (r.status === 'skipped') {
64
+ skipped++;
65
+ }
66
+ else {
67
+ failed++;
68
+ }
69
+ }
70
+ // Progress logging every 50 objects
71
+ if ((i + WARMUP_CONCURRENT) % 50 === 0 || i + WARMUP_CONCURRENT >= entries.length) {
72
+ logger.info(`Cache warmup: ${fetched + skipped + failed}/${entries.length} (${fetched} fetched, ${skipped} skipped, ${failed} failed)`);
73
+ }
74
+ }
75
+ cachingLayer.setWarmupDone(true);
76
+ const durationMs = Date.now() - start;
77
+ logger.info('Cache warmup complete', {
78
+ totalObjects: entries.length,
79
+ fetched,
80
+ skipped,
81
+ failed,
82
+ edgesCreated,
83
+ durationMs,
84
+ });
85
+ return { totalObjects: entries.length, fetched, skipped, failed, edgesCreated, durationMs };
86
+ }
87
+ /**
88
+ * Enumerate all custom CLAS/INTF/FUNC objects from TADIR.
89
+ *
90
+ * Runs separate queries per OBJ_NAME prefix (Z%, Y%, /%) to avoid
91
+ * parenthesized OR-LIKE clauses that some ADT systems reject.
92
+ * Package filtering is done in-memory after fetching.
93
+ */
94
+ async function enumerateObjects(client, packageFilter) {
95
+ // TADIR uses PGMID = 'R3TR' for main repository objects
96
+ const objectTypes = "'CLAS','INTF','FUGR'"; // FUGR not FUNC — TADIR stores function groups
97
+ const baseWhere = `PGMID = 'R3TR' AND OBJECT IN (${objectTypes})`;
98
+ // Custom object name prefixes: Z*, Y*, namespaced /XX/*
99
+ // We run one query per prefix to avoid OR-in-parens which some ADT systems reject
100
+ const namePrefixes = ['Z%', 'Y%', '/%'];
101
+ // Compile package filter patterns into regex for in-memory filtering
102
+ let packageRegexes = null;
103
+ if (packageFilter) {
104
+ const patterns = packageFilter
105
+ .split(',')
106
+ .map((p) => p.trim())
107
+ .filter(Boolean);
108
+ if (patterns.length > 0) {
109
+ packageRegexes = patterns.map((p) => {
110
+ // Convert glob-style wildcards to regex
111
+ const escaped = p
112
+ .replace(/[.+^${}()|[\]\\]/g, '\\$&')
113
+ .replace(/\*/g, '.*')
114
+ .replace(/\?/g, '.');
115
+ return new RegExp(`^${escaped}$`, 'i');
116
+ });
117
+ }
118
+ }
119
+ const seen = new Set();
120
+ const entries = [];
121
+ for (const prefix of namePrefixes) {
122
+ const sql = `SELECT OBJECT, OBJ_NAME, DEVCLASS FROM TADIR WHERE ${baseWhere} AND OBJ_NAME LIKE '${prefix}' ORDER BY OBJECT, OBJ_NAME`;
123
+ try {
124
+ const data = await client.runQuery(sql, WARMUP_MAX_OBJECTS);
125
+ for (const row of data.rows) {
126
+ const objectType = String(row.OBJECT ?? '').trim();
127
+ const objectName = String(row.OBJ_NAME ?? '').trim();
128
+ const packageName = String(row.DEVCLASS ?? '').trim();
129
+ if (!objectType || !objectName)
130
+ continue;
131
+ // Deduplicate (shouldn't happen, but defensive)
132
+ const key = `${objectType}:${objectName}`;
133
+ if (seen.has(key))
134
+ continue;
135
+ // Apply package filter in memory
136
+ if (packageRegexes && !packageRegexes.some((r) => r.test(packageName)))
137
+ continue;
138
+ // Map TADIR types to our types
139
+ if (objectType === 'CLAS' || objectType === 'INTF' || objectType === 'FUGR') {
140
+ seen.add(key);
141
+ entries.push({ objectType, objectName, packageName });
142
+ }
143
+ }
144
+ }
145
+ catch (err) {
146
+ logger.warn(`Cache warmup: TADIR query failed for prefix '${prefix}'`, {
147
+ error: err instanceof Error ? err.message : String(err),
148
+ });
149
+ }
150
+ }
151
+ if (entries.length === 0) {
152
+ logger.warn('Cache warmup: no objects found in TADIR — check package filter or system content');
153
+ }
154
+ else if (entries.length >= WARMUP_MAX_OBJECTS) {
155
+ logger.warn(`Cache warmup: found ${entries.length} objects (limit: ${WARMUP_MAX_OBJECTS}). ` +
156
+ 'Results may be truncated. Consider narrowing the package filter (--cache-warmup-packages).');
157
+ }
158
+ return entries;
159
+ }
160
+ /**
161
+ * Index a single object: fetch source, extract deps, store in cache.
162
+ * Returns 'skipped' if source hash matches cached version.
163
+ */
164
+ async function indexObject(client, cachingLayer, entry) {
165
+ const { objectType, objectName, packageName } = entry;
166
+ // For FUGR: we enumerate the function modules within the group
167
+ if (objectType === 'FUGR') {
168
+ return indexFunctionGroup(client, cachingLayer, objectName, packageName);
169
+ }
170
+ // Fetch source
171
+ let source;
172
+ try {
173
+ if (objectType === 'CLAS') {
174
+ source = await client.getClass(objectName);
175
+ }
176
+ else if (objectType === 'INTF') {
177
+ source = await client.getInterface(objectName);
178
+ }
179
+ else {
180
+ return { status: 'failed', edges: 0 };
181
+ }
182
+ }
183
+ catch {
184
+ return { status: 'failed', edges: 0 };
185
+ }
186
+ // Check if source changed since last cache
187
+ const cached = cachingLayer.getCachedSource(objectType, objectName);
188
+ const newHash = hashSource(source);
189
+ if (cached && cached.hash === newHash) {
190
+ return { status: 'skipped', edges: 0 };
191
+ }
192
+ // Store source
193
+ cachingLayer.cache.putSource(objectType, objectName, source);
194
+ // Store node metadata
195
+ cachingLayer.cache.putNode({
196
+ id: `${objectType}:${objectName}`.toUpperCase(),
197
+ objectType,
198
+ objectName: objectName.toUpperCase(),
199
+ packageName: packageName.toUpperCase(),
200
+ sourceHash: newHash,
201
+ cachedAt: new Date().toISOString(),
202
+ valid: true,
203
+ });
204
+ // Extract and store dependencies as edges
205
+ const deps = extractDependencies(source, objectName, true);
206
+ let edges = 0;
207
+ const fromId = objectName.toUpperCase();
208
+ for (const dep of deps) {
209
+ const edgeType = mapDepKindToEdgeType(dep.kind);
210
+ cachingLayer.cache.putEdge({
211
+ fromId,
212
+ toId: dep.name.toUpperCase(),
213
+ edgeType,
214
+ discoveredAt: new Date().toISOString(),
215
+ valid: true,
216
+ });
217
+ edges++;
218
+ }
219
+ return { status: 'fetched', edges };
220
+ }
221
+ /**
222
+ * Index a function group: fetch its function modules and index each.
223
+ */
224
+ async function indexFunctionGroup(client, cachingLayer, groupName, packageName) {
225
+ try {
226
+ const fg = await client.getFunctionGroup(groupName);
227
+ let totalEdges = 0;
228
+ let anyFetched = false;
229
+ // fg is a parsed object with functions list
230
+ const fgData = typeof fg === 'string' ? JSON.parse(fg) : fg;
231
+ const functions = fgData.functions ?? [];
232
+ for (const funcName of functions) {
233
+ // Cache the group mapping
234
+ cachingLayer.cache.putFuncGroup(funcName, groupName);
235
+ try {
236
+ const source = await client.getFunction(groupName, funcName);
237
+ const cached = cachingLayer.getCachedSource('FUNC', funcName);
238
+ const newHash = hashSource(source);
239
+ if (cached && cached.hash === newHash)
240
+ continue;
241
+ cachingLayer.cache.putSource('FUNC', funcName, source);
242
+ cachingLayer.cache.putNode({
243
+ id: `FUNC:${funcName}`.toUpperCase(),
244
+ objectType: 'FUNC',
245
+ objectName: funcName.toUpperCase(),
246
+ packageName: packageName.toUpperCase(),
247
+ sourceHash: newHash,
248
+ cachedAt: new Date().toISOString(),
249
+ valid: true,
250
+ });
251
+ const deps = extractDependencies(source, funcName, true);
252
+ for (const dep of deps) {
253
+ cachingLayer.cache.putEdge({
254
+ fromId: funcName.toUpperCase(),
255
+ toId: dep.name.toUpperCase(),
256
+ edgeType: mapDepKindToEdgeType(dep.kind),
257
+ discoveredAt: new Date().toISOString(),
258
+ valid: true,
259
+ });
260
+ totalEdges++;
261
+ }
262
+ anyFetched = true;
263
+ }
264
+ catch {
265
+ // Individual func fetch failure — continue with others
266
+ }
267
+ }
268
+ return { status: anyFetched ? 'fetched' : 'skipped', edges: totalEdges };
269
+ }
270
+ catch {
271
+ return { status: 'failed', edges: 0 };
272
+ }
273
+ }
274
+ /** Map dependency kind to cache edge type */
275
+ function mapDepKindToEdgeType(kind) {
276
+ switch (kind) {
277
+ case 'function_call':
278
+ return 'CALLS';
279
+ case 'interface':
280
+ case 'inheritance':
281
+ return 'IMPLEMENTS';
282
+ default:
283
+ return 'USES';
284
+ }
285
+ }
286
+ //# sourceMappingURL=warmup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"warmup.js","sourceRoot":"","sources":["../../src/cache/warmup.ts"],"names":[],"mappings":"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"}
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../ts-src/cli.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG"}
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../ts-src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * CDS DDL dependency and element extraction.
3
+ *
4
+ * Regex-based parser for CDS Data Definition Language source code.
5
+ * Extracts:
6
+ * - Data sources (FROM, JOIN)
7
+ * - Associations and compositions
8
+ * - Projection bases
9
+ * - Field/element listings from the SELECT projection
10
+ *
11
+ * Used by SAPContext (DDLS type) and SAPRead (DDLS include="elements").
12
+ */
13
+ import type { CdsDependency } from './types.js';
14
+ /**
15
+ * Extract dependencies from CDS DDL source.
16
+ *
17
+ * Identifies data sources, associations, compositions, and projection bases
18
+ * referenced in the CDS entity definition.
19
+ *
20
+ * @param ddlSource - Raw CDS DDL source code
21
+ * @returns Deduplicated list of CDS dependencies
22
+ */
23
+ export declare function extractCdsDependencies(ddlSource: string): CdsDependency[];
24
+ /**
25
+ * Extract a structured element listing from CDS DDL source.
26
+ *
27
+ * Parses the SELECT projection list between { and } to produce a
28
+ * human-readable, LLM-friendly element listing.
29
+ *
30
+ * @param ddlSource - Raw CDS DDL source code
31
+ * @param entityName - Entity name for the header
32
+ * @returns Formatted element listing text
33
+ */
34
+ export declare function extractCdsElements(ddlSource: string, entityName: string): string;
35
+ //# sourceMappingURL=cds-deps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cds-deps.d.ts","sourceRoot":"","sources":["../../src/context/cds-deps.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAehD;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,EAAE,CAyCzE;AAUD;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CA4BhF"}
@@ -0,0 +1,201 @@
1
+ /**
2
+ * CDS DDL dependency and element extraction.
3
+ *
4
+ * Regex-based parser for CDS Data Definition Language source code.
5
+ * Extracts:
6
+ * - Data sources (FROM, JOIN)
7
+ * - Associations and compositions
8
+ * - Projection bases
9
+ * - Field/element listings from the SELECT projection
10
+ *
11
+ * Used by SAPContext (DDLS type) and SAPRead (DDLS include="elements").
12
+ */
13
+ /**
14
+ * Strip comments and string literals from CDS DDL source to prevent false matches.
15
+ */
16
+ function stripCommentsAndStrings(source) {
17
+ // Remove block comments /* ... */
18
+ let result = source.replace(/\/\*[\s\S]*?\*\//g, ' ');
19
+ // Remove line comments // ...
20
+ result = result.replace(/\/\/.*$/gm, '');
21
+ // Remove string literals 'value'
22
+ result = result.replace(/'[^']*'/g, "''");
23
+ return result;
24
+ }
25
+ /**
26
+ * Extract dependencies from CDS DDL source.
27
+ *
28
+ * Identifies data sources, associations, compositions, and projection bases
29
+ * referenced in the CDS entity definition.
30
+ *
31
+ * @param ddlSource - Raw CDS DDL source code
32
+ * @returns Deduplicated list of CDS dependencies
33
+ */
34
+ export function extractCdsDependencies(ddlSource) {
35
+ const cleaned = stripCommentsAndStrings(ddlSource);
36
+ const deps = [];
37
+ const seen = new Set();
38
+ // Pattern for entity names: word chars, forward slashes (namespaced), underscores
39
+ // Matches: zsalesorder, ZI_ORDER, /DMO/I_TRAVEL
40
+ const namePattern = '[\\w/]+';
41
+ // 1. select from <source> [as <alias>]
42
+ // Also handles: as select from, as projection on
43
+ const selectFromRe = new RegExp(`\\bselect\\s+from\\s+(${namePattern})`, 'gi');
44
+ for (const match of cleaned.matchAll(selectFromRe)) {
45
+ addDep(deps, seen, match[1], 'data_source');
46
+ }
47
+ // 2. projection on <source>
48
+ const projectionRe = new RegExp(`\\bprojection\\s+on\\s+(${namePattern})`, 'gi');
49
+ for (const match of cleaned.matchAll(projectionRe)) {
50
+ addDep(deps, seen, match[1], 'projection_base');
51
+ }
52
+ // 3. join <source> — inner join, left outer join, right outer join, cross join
53
+ const joinRe = new RegExp(`\\bjoin\\s+(${namePattern})`, 'gi');
54
+ for (const match of cleaned.matchAll(joinRe)) {
55
+ addDep(deps, seen, match[1], 'data_source');
56
+ }
57
+ // 4. association [...] to <source>
58
+ const assocRe = new RegExp(`\\bassociation\\s+(?:\\[[^\\]]*\\]\\s+)?to\\s+(${namePattern})`, 'gi');
59
+ for (const match of cleaned.matchAll(assocRe)) {
60
+ addDep(deps, seen, match[1], 'association');
61
+ }
62
+ // 5. composition [...] of <source>
63
+ const compRe = new RegExp(`\\bcomposition\\s+(?:\\[[^\\]]*\\]\\s+)?of\\s+(${namePattern})`, 'gi');
64
+ for (const match of cleaned.matchAll(compRe)) {
65
+ addDep(deps, seen, match[1], 'composition');
66
+ }
67
+ return deps;
68
+ }
69
+ /** Add a dependency if not already seen (case-insensitive dedup) */
70
+ function addDep(deps, seen, name, kind) {
71
+ const upper = name.toUpperCase();
72
+ if (seen.has(upper))
73
+ return;
74
+ seen.add(upper);
75
+ deps.push({ name, kind });
76
+ }
77
+ /**
78
+ * Extract a structured element listing from CDS DDL source.
79
+ *
80
+ * Parses the SELECT projection list between { and } to produce a
81
+ * human-readable, LLM-friendly element listing.
82
+ *
83
+ * @param ddlSource - Raw CDS DDL source code
84
+ * @param entityName - Entity name for the header
85
+ * @returns Formatted element listing text
86
+ */
87
+ export function extractCdsElements(ddlSource, entityName) {
88
+ const lines = [];
89
+ lines.push(`=== ${entityName} elements ===`);
90
+ // Find the projection block between { and }
91
+ // Use the original source (not stripped) to preserve field expressions
92
+ const braceStart = ddlSource.indexOf('{');
93
+ const braceEnd = ddlSource.lastIndexOf('}');
94
+ if (braceStart === -1 || braceEnd === -1 || braceEnd <= braceStart) {
95
+ return lines.join('\n');
96
+ }
97
+ const projectionBlock = ddlSource.slice(braceStart + 1, braceEnd);
98
+ // Split into field expressions by comma, but respect nested parens and case blocks
99
+ const fields = splitFieldExpressions(projectionBlock);
100
+ for (const fieldExpr of fields) {
101
+ const trimmed = fieldExpr.trim();
102
+ if (!trimmed)
103
+ continue;
104
+ const element = parseFieldExpression(trimmed);
105
+ if (element) {
106
+ lines.push(element);
107
+ }
108
+ }
109
+ return lines.join('\n');
110
+ }
111
+ /**
112
+ * Split the projection block into individual field expressions,
113
+ * respecting nested parentheses and case...end blocks.
114
+ */
115
+ function splitFieldExpressions(block) {
116
+ const fields = [];
117
+ let current = '';
118
+ let parenDepth = 0;
119
+ let caseDepth = 0;
120
+ // Tokenize by character, tracking nesting
121
+ const tokens = block.split('\n');
122
+ const flatBlock = tokens.join(' ');
123
+ for (let i = 0; i < flatBlock.length; i++) {
124
+ const ch = flatBlock[i];
125
+ if (ch === '(')
126
+ parenDepth++;
127
+ if (ch === ')')
128
+ parenDepth--;
129
+ // Track case...end blocks
130
+ const remaining = flatBlock.slice(i).toLowerCase();
131
+ if (remaining.startsWith('case ') || remaining.startsWith('case\n')) {
132
+ caseDepth++;
133
+ }
134
+ if (remaining.startsWith('end ') || remaining.startsWith('end,') || remaining === 'end') {
135
+ caseDepth = Math.max(0, caseDepth - 1);
136
+ }
137
+ if (ch === ',' && parenDepth === 0 && caseDepth === 0) {
138
+ fields.push(current);
139
+ current = '';
140
+ }
141
+ else {
142
+ current += ch;
143
+ }
144
+ }
145
+ if (current.trim()) {
146
+ fields.push(current);
147
+ }
148
+ return fields;
149
+ }
150
+ /**
151
+ * Parse a single field expression into a formatted element line.
152
+ */
153
+ function parseFieldExpression(expr) {
154
+ // Normalize whitespace
155
+ const normalized = expr.replace(/\s+/g, ' ').trim();
156
+ if (!normalized)
157
+ return null;
158
+ // Check for key prefix
159
+ const isKey = /^\s*key\b/i.test(normalized);
160
+ const withoutKey = normalized.replace(/^\s*key\s+/i, '').trim();
161
+ // Check if it's an association exposure (starts with _)
162
+ if (/^_\w+/.test(withoutKey)) {
163
+ const assocName = withoutKey.split(/[\s,]/)[0];
164
+ const keyPrefix = isKey ? 'key ' : ' ';
165
+ return `${keyPrefix}${assocName.padEnd(30)} [association]`;
166
+ }
167
+ // Check for "as Alias" at the end to get the field name
168
+ const aliasMatch = withoutKey.match(/\bas\s+(\w+)\s*$/i);
169
+ const fieldName = aliasMatch ? aliasMatch[1] : withoutKey.split(/[\s.(]/)[0];
170
+ if (!fieldName)
171
+ return null;
172
+ // Determine the kind of expression
173
+ const kind = classifyExpression(withoutKey, aliasMatch ? withoutKey.slice(0, aliasMatch.index).trim() : '');
174
+ const keyPrefix = isKey ? 'key ' : ' ';
175
+ const kindLabel = kind ? ` [${kind}]` : '';
176
+ return `${keyPrefix}${fieldName.padEnd(30)}${kindLabel}`;
177
+ }
178
+ /**
179
+ * Classify what kind of expression produces this field.
180
+ */
181
+ function classifyExpression(fullExpr, beforeAlias) {
182
+ const lower = (beforeAlias || fullExpr).toLowerCase();
183
+ if (/\bcase\b/.test(lower))
184
+ return 'case';
185
+ if (/\bcast\s*\(/.test(lower))
186
+ return 'cast';
187
+ if (/\bcoalesce\s*\(/.test(lower))
188
+ return 'coalesce';
189
+ if (/\bconcat\s*\(/.test(lower))
190
+ return 'concat';
191
+ if (/\bcurrency_conversion\s*\(/.test(lower))
192
+ return 'currency_conversion';
193
+ if (/\bunit_conversion\s*\(/.test(lower))
194
+ return 'unit_conversion';
195
+ // Arithmetic: contains +, -, *, / between word chars (not in function calls)
196
+ if (/\w\s*[-+*/]\s*\w/.test(beforeAlias || fullExpr))
197
+ return 'calculated';
198
+ // Simple field reference: source.field or just field_name — no label needed
199
+ return '';
200
+ }
201
+ //# sourceMappingURL=cds-deps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cds-deps.js","sourceRoot":"","sources":["../../src/context/cds-deps.ts"],"names":[],"mappings":"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"}
@@ -7,12 +7,15 @@
7
7
  * 3. Sort (custom objects first)
8
8
  * 4. Limit to maxDeps
9
9
  * 5. Fetch dependency sources (parallel, bounded to MAX_CONCURRENT)
10
+ * → With caching layer: check cache first, only fetch on miss
10
11
  * 6. Extract contracts (public API only) (contract.ts)
11
12
  * 7. If depth > 1, recurse on each dependency's source
12
13
  * 8. Format output prologue
14
+ * 9. Cache the resolved dep graph (keyed by source hash)
13
15
  */
14
16
  import type { Version } from '@abaplint/core';
15
17
  import type { AdtClient } from '../adt/client.js';
18
+ import type { CachingLayer } from '../cache/caching-layer.js';
16
19
  import type { ContextResult, Dependency } from './types.js';
17
20
  /**
18
21
  * Compress dependency context for an ABAP object.
@@ -24,10 +27,26 @@ import type { ContextResult, Dependency } from './types.js';
24
27
  * @param maxDeps - Maximum number of dependencies to resolve (default 20)
25
28
  * @param depth - Dependency expansion depth 1-3 (default 1)
26
29
  * @param abaplintVersion - abaplint parser version (detected from SAP system, defaults to Cloud)
30
+ * @param cachingLayer - Optional caching layer for source and contract caching
27
31
  */
28
- export declare function compressContext(client: AdtClient, source: string, objectName: string, objectType: string, maxDeps?: number, depth?: number, abaplintVersion?: Version): Promise<ContextResult>;
32
+ export declare function compressContext(client: AdtClient, source: string, objectName: string, objectType: string, maxDeps?: number, depth?: number, abaplintVersion?: Version, cachingLayer?: CachingLayer): Promise<ContextResult>;
29
33
  /**
30
34
  * Infer the object type from the dependency kind and naming convention.
31
35
  */
32
36
  export declare function inferObjectType(dep: Dependency): 'CLAS' | 'INTF' | 'FUNC' | 'UNKNOWN';
37
+ /**
38
+ * Compress dependency context for a CDS entity.
39
+ *
40
+ * Unlike ABAP context (AST-based), CDS context uses regex to extract
41
+ * dependencies from DDL source, then fetches each dependency's source
42
+ * with a type fallback chain: DDLS → TABL → STRU.
43
+ *
44
+ * @param client - ADT client for fetching dependency sources
45
+ * @param ddlSource - CDS DDL source code of the target entity
46
+ * @param objectName - CDS entity name
47
+ * @param maxDeps - Maximum dependencies to resolve (default 20)
48
+ * @param depth - Dependency depth 1-3 (default 1)
49
+ * @param cachingLayer - Optional caching layer for source caching
50
+ */
51
+ export declare function compressCdsContext(client: AdtClient, ddlSource: string, objectName: string, maxDeps?: number, depth?: number, cachingLayer?: CachingLayer): Promise<ContextResult>;
33
52
  //# sourceMappingURL=compressor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"compressor.d.ts","sourceRoot":"","sources":["../../ts-src/context/compressor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAGlD,OAAO,KAAK,EAAE,aAAa,EAAY,UAAU,EAAE,MAAM,YAAY,CAAC;AAOtE;;;;;;;;;;GAUG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,OAAO,SAAmB,EAC1B,KAAK,SAAgB,EACrB,eAAe,CAAC,EAAE,OAAO,GACxB,OAAO,CAAC,aAAa,CAAC,CAYxB;AA0FD;;GAEG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAmBrF"}
1
+ {"version":3,"file":"compressor.d.ts","sourceRoot":"","sources":["../../src/context/compressor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAI9D,OAAO,KAAK,EAAiB,aAAa,EAAY,UAAU,EAAE,MAAM,YAAY,CAAC;AAOrF;;;;;;;;;;;GAWG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,OAAO,SAAmB,EAC1B,KAAK,SAAgB,EACrB,eAAe,CAAC,EAAE,OAAO,EACzB,YAAY,CAAC,EAAE,YAAY,GAC1B,OAAO,CAAC,aAAa,CAAC,CAkCxB;AA4GD;;GAEG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAmBrF;AA+HD;;;;;;;;;;;;;GAaG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,OAAO,SAAmB,EAC1B,KAAK,SAAgB,EACrB,YAAY,CAAC,EAAE,YAAY,GAC1B,OAAO,CAAC,aAAa,CAAC,CAUxB"}