arc-1 0.2.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.
- package/LICENSE +1 -0
- package/README.md +77 -199
- package/dist/adt/btp.d.ts +2 -2
- package/dist/adt/btp.d.ts.map +1 -1
- package/dist/adt/btp.js +1 -1
- package/dist/adt/btp.js.map +1 -1
- package/dist/adt/client.d.ts +13 -1
- package/dist/adt/client.d.ts.map +1 -1
- package/dist/adt/client.js +40 -1
- package/dist/adt/client.js.map +1 -1
- package/dist/adt/codeintel.d.ts +41 -0
- package/dist/adt/codeintel.d.ts.map +1 -1
- package/dist/adt/codeintel.js +99 -27
- package/dist/adt/codeintel.js.map +1 -1
- package/dist/adt/config.d.ts +6 -0
- package/dist/adt/config.d.ts.map +1 -1
- package/dist/adt/config.js.map +1 -1
- package/dist/adt/cookies.d.ts.map +1 -1
- package/dist/adt/cookies.js.map +1 -1
- package/dist/adt/crud.d.ts.map +1 -1
- package/dist/adt/crud.js.map +1 -1
- package/dist/adt/devtools.d.ts +14 -0
- package/dist/adt/devtools.d.ts.map +1 -1
- package/dist/adt/devtools.js +28 -3
- package/dist/adt/devtools.js.map +1 -1
- package/dist/adt/diagnostics.d.ts +101 -0
- package/dist/adt/diagnostics.d.ts.map +1 -0
- package/dist/adt/diagnostics.js +349 -0
- package/dist/adt/diagnostics.js.map +1 -0
- package/dist/adt/errors.d.ts.map +1 -1
- package/dist/adt/errors.js.map +1 -1
- package/dist/adt/features.d.ts +11 -2
- package/dist/adt/features.d.ts.map +1 -1
- package/dist/adt/features.js +37 -12
- package/dist/adt/features.js.map +1 -1
- package/dist/adt/http.d.ts +33 -7
- package/dist/adt/http.d.ts.map +1 -1
- package/dist/adt/http.js +148 -84
- package/dist/adt/http.js.map +1 -1
- package/dist/adt/oauth.d.ts +120 -0
- package/dist/adt/oauth.d.ts.map +1 -0
- package/dist/adt/oauth.js +321 -0
- package/dist/adt/oauth.js.map +1 -0
- package/dist/adt/safety.d.ts.map +1 -1
- package/dist/adt/safety.js.map +1 -1
- package/dist/adt/transport.d.ts.map +1 -1
- package/dist/adt/transport.js.map +1 -1
- package/dist/adt/types.d.ts +143 -0
- package/dist/adt/types.d.ts.map +1 -1
- package/dist/adt/types.js.map +1 -1
- package/dist/adt/xml-parser.d.ts +37 -1
- package/dist/adt/xml-parser.d.ts.map +1 -1
- package/dist/adt/xml-parser.js +147 -0
- package/dist/adt/xml-parser.js.map +1 -1
- package/dist/cache/cache.d.ts +47 -4
- package/dist/cache/cache.d.ts.map +1 -1
- package/dist/cache/cache.js +16 -5
- package/dist/cache/cache.js.map +1 -1
- package/dist/cache/caching-layer.d.ts +82 -0
- package/dist/cache/caching-layer.d.ts.map +1 -0
- package/dist/cache/caching-layer.js +134 -0
- package/dist/cache/caching-layer.js.map +1 -0
- package/dist/cache/memory.d.ts +14 -2
- package/dist/cache/memory.d.ts.map +1 -1
- package/dist/cache/memory.js +72 -5
- package/dist/cache/memory.js.map +1 -1
- package/dist/cache/sqlite.d.ts +10 -1
- package/dist/cache/sqlite.d.ts.map +1 -1
- package/dist/cache/sqlite.js +90 -2
- package/dist/cache/sqlite.js.map +1 -1
- package/dist/cache/warmup.d.ts +41 -0
- package/dist/cache/warmup.d.ts.map +1 -0
- package/dist/cache/warmup.js +286 -0
- package/dist/cache/warmup.js.map +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js.map +1 -1
- package/dist/context/cds-deps.d.ts +35 -0
- package/dist/context/cds-deps.d.ts.map +1 -0
- package/dist/context/cds-deps.js +201 -0
- package/dist/context/cds-deps.js.map +1 -0
- package/dist/context/compressor.d.ts +20 -1
- package/dist/context/compressor.d.ts.map +1 -1
- package/dist/context/compressor.js +178 -17
- package/dist/context/compressor.js.map +1 -1
- package/dist/context/contract.d.ts.map +1 -1
- package/dist/context/contract.js.map +1 -1
- package/dist/context/deps.d.ts.map +1 -1
- package/dist/context/deps.js.map +1 -1
- package/dist/context/method-surgery.d.ts +91 -0
- package/dist/context/method-surgery.d.ts.map +1 -0
- package/dist/context/method-surgery.js +441 -0
- package/dist/context/method-surgery.js.map +1 -0
- package/dist/context/types.d.ts +7 -0
- package/dist/context/types.d.ts.map +1 -1
- package/dist/context/types.js.map +1 -1
- package/dist/handlers/hyperfocused.d.ts +35 -0
- package/dist/handlers/hyperfocused.d.ts.map +1 -0
- package/dist/handlers/hyperfocused.js +104 -0
- package/dist/handlers/hyperfocused.js.map +1 -0
- package/dist/handlers/intent.d.ts +5 -1
- package/dist/handlers/intent.d.ts.map +1 -1
- package/dist/handlers/intent.js +462 -44
- package/dist/handlers/intent.js.map +1 -1
- package/dist/handlers/tools.d.ts +5 -0
- package/dist/handlers/tools.d.ts.map +1 -1
- package/dist/handlers/tools.js +270 -87
- package/dist/handlers/tools.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/lint/config-builder.d.ts +60 -0
- package/dist/lint/config-builder.d.ts.map +1 -0
- package/dist/lint/config-builder.js +187 -0
- package/dist/lint/config-builder.js.map +1 -0
- package/dist/lint/lint.d.ts +43 -0
- package/dist/lint/lint.d.ts.map +1 -1
- package/dist/lint/lint.js +77 -2
- package/dist/lint/lint.js.map +1 -1
- package/dist/lint/presets/cloud.d.ts +16 -0
- package/dist/lint/presets/cloud.d.ts.map +1 -0
- package/dist/lint/presets/cloud.js +111 -0
- package/dist/lint/presets/cloud.js.map +1 -0
- package/dist/lint/presets/onprem.d.ts +17 -0
- package/dist/lint/presets/onprem.d.ts.map +1 -0
- package/dist/lint/presets/onprem.js +82 -0
- package/dist/lint/presets/onprem.js.map +1 -0
- package/dist/server/audit.d.ts +1 -0
- package/dist/server/audit.d.ts.map +1 -1
- package/dist/server/audit.js.map +1 -1
- package/dist/server/config.d.ts.map +1 -1
- package/dist/server/config.js +20 -0
- package/dist/server/config.js.map +1 -1
- package/dist/server/context.d.ts.map +1 -1
- package/dist/server/context.js.map +1 -1
- package/dist/server/elicit.d.ts.map +1 -1
- package/dist/server/elicit.js.map +1 -1
- package/dist/server/http.d.ts.map +1 -1
- package/dist/server/http.js +4 -1
- package/dist/server/http.js.map +1 -1
- package/dist/server/logger.d.ts.map +1 -1
- package/dist/server/logger.js.map +1 -1
- package/dist/server/server.d.ts +4 -2
- package/dist/server/server.d.ts.map +1 -1
- package/dist/server/server.js +121 -8
- package/dist/server/server.js.map +1 -1
- package/dist/server/sinks/btp-auditlog.d.ts.map +1 -1
- package/dist/server/sinks/btp-auditlog.js.map +1 -1
- package/dist/server/sinks/file.d.ts.map +1 -1
- package/dist/server/sinks/file.js.map +1 -1
- package/dist/server/sinks/stderr.d.ts.map +1 -1
- package/dist/server/sinks/stderr.js.map +1 -1
- package/dist/server/sinks/types.d.ts.map +1 -1
- package/dist/server/sinks/types.js.map +1 -1
- package/dist/server/types.d.ts +19 -0
- package/dist/server/types.d.ts.map +1 -1
- package/dist/server/types.js +8 -0
- package/dist/server/types.js.map +1 -1
- package/dist/server/xsuaa.d.ts.map +1 -1
- package/dist/server/xsuaa.js.map +1 -1
- package/package.json +14 -6
package/dist/adt/xml-parser.js
CHANGED
|
@@ -36,6 +36,9 @@ const parser = new XMLParser({
|
|
|
36
36
|
'component',
|
|
37
37
|
'objectStructureElement',
|
|
38
38
|
'task',
|
|
39
|
+
'objectType',
|
|
40
|
+
'proposal',
|
|
41
|
+
'referencedObject',
|
|
39
42
|
].includes(name);
|
|
40
43
|
},
|
|
41
44
|
parseAttributeValue: false, // Keep attributes as strings
|
|
@@ -272,6 +275,150 @@ export function parseSourceSearchResults(xml) {
|
|
|
272
275
|
}
|
|
273
276
|
return results;
|
|
274
277
|
}
|
|
278
|
+
/**
|
|
279
|
+
* Parse domain metadata XML from /sap/bc/adt/ddic/domains/{name}.
|
|
280
|
+
*
|
|
281
|
+
* Domains don't have /source/main — they return structured XML with
|
|
282
|
+
* type information, output characteristics, value table, and fixed values.
|
|
283
|
+
*
|
|
284
|
+
* Expected root: <doma:domain> with nested <doma:content>.
|
|
285
|
+
*/
|
|
286
|
+
export function parseDomainMetadata(xml) {
|
|
287
|
+
const parsed = parseXml(xml);
|
|
288
|
+
// After NS strip: doma:domain → domain
|
|
289
|
+
const domain = (parsed.domain ?? {});
|
|
290
|
+
const content = (domain.content ?? {});
|
|
291
|
+
const typeInfo = (content.typeInformation ?? {});
|
|
292
|
+
const outputInfo = (content.outputInformation ?? {});
|
|
293
|
+
const valueInfo = (content.valueInformation ?? {});
|
|
294
|
+
const pkgRef = (domain.packageRef ?? {});
|
|
295
|
+
// Parse fixed values if present
|
|
296
|
+
const fixedValues = [];
|
|
297
|
+
const fvContainer = valueInfo.fixValues ?? valueInfo.fixedValues;
|
|
298
|
+
if (fvContainer && typeof fvContainer === 'object') {
|
|
299
|
+
const fvNodes = findDeepNodes(fvContainer, 'fixValue');
|
|
300
|
+
for (const fv of fvNodes) {
|
|
301
|
+
fixedValues.push({
|
|
302
|
+
low: String(fv.low ?? fv['@_low'] ?? ''),
|
|
303
|
+
high: String(fv.high ?? fv['@_high'] ?? ''),
|
|
304
|
+
description: String(fv.description ?? fv['@_description'] ?? ''),
|
|
305
|
+
});
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
// Parse value table reference
|
|
309
|
+
const valueTableRef = (valueInfo.valueTableRef ?? {});
|
|
310
|
+
return {
|
|
311
|
+
name: String(domain['@_name'] ?? ''),
|
|
312
|
+
description: String(domain['@_description'] ?? ''),
|
|
313
|
+
dataType: String(typeInfo.datatype ?? ''),
|
|
314
|
+
length: String(typeInfo.length ?? ''),
|
|
315
|
+
decimals: String(typeInfo.decimals ?? ''),
|
|
316
|
+
outputLength: String(outputInfo.length ?? ''),
|
|
317
|
+
conversionExit: String(outputInfo.conversionExit ?? ''),
|
|
318
|
+
signExists: String(outputInfo.signExists ?? '') === 'true',
|
|
319
|
+
lowercase: String(outputInfo.lowercase ?? '') === 'true',
|
|
320
|
+
valueTable: String(valueTableRef['@_name'] ?? ''),
|
|
321
|
+
fixedValues,
|
|
322
|
+
package: String(pkgRef['@_name'] ?? ''),
|
|
323
|
+
};
|
|
324
|
+
}
|
|
325
|
+
/**
|
|
326
|
+
* Parse data element metadata XML from /sap/bc/adt/ddic/dataelements/{name}.
|
|
327
|
+
*
|
|
328
|
+
* Data elements don't have /source/main — they return structured XML with
|
|
329
|
+
* domain/type reference, field labels, search help, and other metadata.
|
|
330
|
+
*
|
|
331
|
+
* Expected root: <blue:wbobj> with nested <dtel:dataElement>.
|
|
332
|
+
*/
|
|
333
|
+
export function parseDataElementMetadata(xml) {
|
|
334
|
+
const parsed = parseXml(xml);
|
|
335
|
+
// After NS strip: blue:wbobj → wbobj
|
|
336
|
+
const wbobj = (parsed.wbobj ?? {});
|
|
337
|
+
const pkgRef = (wbobj.packageRef ?? {});
|
|
338
|
+
// Find the dataElement node — after NS strip: dtel:dataElement → dataElement
|
|
339
|
+
const dtelNodes = findDeepNodes(parsed, 'dataElement');
|
|
340
|
+
const dtel = dtelNodes[0] ?? {};
|
|
341
|
+
return {
|
|
342
|
+
name: String(wbobj['@_name'] ?? ''),
|
|
343
|
+
description: String(wbobj['@_description'] ?? ''),
|
|
344
|
+
typeKind: String(dtel.typeKind ?? ''),
|
|
345
|
+
typeName: String(dtel.typeName ?? ''),
|
|
346
|
+
dataType: String(dtel.dataType ?? ''),
|
|
347
|
+
length: String(dtel.dataTypeLength ?? ''),
|
|
348
|
+
decimals: String(dtel.dataTypeDecimals ?? ''),
|
|
349
|
+
shortLabel: String(dtel.shortFieldLabel ?? ''),
|
|
350
|
+
mediumLabel: String(dtel.mediumFieldLabel ?? ''),
|
|
351
|
+
longLabel: String(dtel.longFieldLabel ?? ''),
|
|
352
|
+
headingLabel: String(dtel.headingFieldLabel ?? ''),
|
|
353
|
+
searchHelp: String(dtel.searchHelp ?? ''),
|
|
354
|
+
defaultComponentName: String(dtel.defaultComponentName ?? ''),
|
|
355
|
+
package: String(pkgRef['@_name'] ?? ''),
|
|
356
|
+
};
|
|
357
|
+
}
|
|
358
|
+
/**
|
|
359
|
+
* Parse transaction metadata XML from /sap/bc/adt/vit/wb/object_type/trant/object_name/{name}.
|
|
360
|
+
*
|
|
361
|
+
* Returns basic transaction info: code, description, package.
|
|
362
|
+
* The program name is not in this endpoint — use SQL (TSTC) for full details.
|
|
363
|
+
*
|
|
364
|
+
* Expected root: <adtcore:mainObject>.
|
|
365
|
+
*/
|
|
366
|
+
export function parseTransactionMetadata(xml) {
|
|
367
|
+
const parsed = parseXml(xml);
|
|
368
|
+
// After NS strip: adtcore:mainObject → mainObject
|
|
369
|
+
const obj = (parsed.mainObject ?? {});
|
|
370
|
+
const pkgRef = (obj.packageRef ?? {});
|
|
371
|
+
return {
|
|
372
|
+
code: String(obj['@_name'] ?? ''),
|
|
373
|
+
description: String(obj['@_description'] ?? ''),
|
|
374
|
+
program: '', // Not available from this endpoint — populated via SQL in handler
|
|
375
|
+
package: String(pkgRef['@_name'] ?? ''),
|
|
376
|
+
};
|
|
377
|
+
}
|
|
378
|
+
/**
|
|
379
|
+
* Parse service binding metadata XML into a human-readable summary.
|
|
380
|
+
*
|
|
381
|
+
* SRVB objects don't have editable source — they're structured XML with binding configuration.
|
|
382
|
+
* We extract the key fields into a JSON summary:
|
|
383
|
+
* - name, description, OData version (V2/V4), binding type (UI/Web API)
|
|
384
|
+
* - service definition reference, publish status, contract
|
|
385
|
+
*/
|
|
386
|
+
export function parseServiceBinding(xml) {
|
|
387
|
+
const parsed = parseXml(xml);
|
|
388
|
+
const sb = (parsed.serviceBinding ?? {});
|
|
389
|
+
// Extract binding info
|
|
390
|
+
const binding = (sb.binding ?? {});
|
|
391
|
+
const services = sb.services;
|
|
392
|
+
const content = (services?.content ?? {});
|
|
393
|
+
const srvDef = (content?.serviceDefinition ?? {});
|
|
394
|
+
const pkg = (sb.packageRef ?? {});
|
|
395
|
+
const result = {
|
|
396
|
+
name: String(sb['@_name'] ?? ''),
|
|
397
|
+
description: String(sb['@_description'] ?? ''),
|
|
398
|
+
type: String(sb['@_type'] ?? ''),
|
|
399
|
+
odataVersion: String(binding['@_version'] ?? ''),
|
|
400
|
+
bindingType: String(binding['@_type'] ?? ''),
|
|
401
|
+
bindingCategory: binding['@_category'] === '0'
|
|
402
|
+
? 'UI'
|
|
403
|
+
: binding['@_category'] === '1'
|
|
404
|
+
? 'Web API'
|
|
405
|
+
: String(binding['@_category'] ?? ''),
|
|
406
|
+
published: sb['@_published'] === 'true',
|
|
407
|
+
bindingCreated: sb['@_bindingCreated'] === 'true',
|
|
408
|
+
contract: String(sb['@_contract'] ?? ''),
|
|
409
|
+
releaseSupported: sb['@_releaseSupported'] === 'true',
|
|
410
|
+
serviceDefinition: String(srvDef['@_name'] ?? ''),
|
|
411
|
+
serviceName: String(services?.['@_name'] ?? ''),
|
|
412
|
+
serviceVersion: String(content?.['@_version'] ?? ''),
|
|
413
|
+
releaseState: String(content?.['@_releaseState'] ?? ''),
|
|
414
|
+
package: String(pkg['@_name'] ?? ''),
|
|
415
|
+
implementation: String(binding.implementation?.['@_name'] ?? ''),
|
|
416
|
+
language: String(sb['@_language'] ?? ''),
|
|
417
|
+
changedAt: String(sb['@_changedAt'] ?? ''),
|
|
418
|
+
changedBy: String(sb['@_changedBy'] ?? ''),
|
|
419
|
+
};
|
|
420
|
+
return JSON.stringify(result, null, 2);
|
|
421
|
+
}
|
|
275
422
|
// ─── Helpers ────────────────────────────────────────────────────────
|
|
276
423
|
/** Safely get a nested array from parsed XML */
|
|
277
424
|
function getNestedArray(obj, parent, child) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xml-parser.js","sourceRoot":"","sources":["../../ts-src/adt/xml-parser.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"xml-parser.js","sourceRoot":"","sources":["../../src/adt/xml-parser.ts"],"names":[],"mappings":"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"}
|
package/dist/cache/cache.d.ts
CHANGED
|
@@ -2,13 +2,15 @@
|
|
|
2
2
|
* Cache interface and types for ARC-1.
|
|
3
3
|
*
|
|
4
4
|
* Two implementations:
|
|
5
|
-
* - MemoryCache: fast, ephemeral (default)
|
|
6
|
-
* - SqliteCache: persistent, cross-session (
|
|
5
|
+
* - MemoryCache: fast, ephemeral (default for stdio)
|
|
6
|
+
* - SqliteCache: persistent, cross-session (default for http-streamable / Docker)
|
|
7
7
|
*
|
|
8
|
-
* Cache stores
|
|
9
|
-
* - Nodes: ABAP objects (class, program, table, etc.)
|
|
8
|
+
* Cache stores five types of data:
|
|
9
|
+
* - Nodes: ABAP objects (class, program, table, etc.) with metadata
|
|
10
10
|
* - Edges: Dependencies between objects (calls, uses, implements)
|
|
11
11
|
* - APIs: Released API objects (for clean core checks)
|
|
12
|
+
* - Sources: Raw source code keyed by (type, name) with content hash
|
|
13
|
+
* - Contracts: Compressed dependency contracts keyed by source hash
|
|
12
14
|
*/
|
|
13
15
|
/** Cached ABAP object */
|
|
14
16
|
export interface CacheNode {
|
|
@@ -43,6 +45,34 @@ export interface CacheStats {
|
|
|
43
45
|
nodeCount: number;
|
|
44
46
|
edgeCount: number;
|
|
45
47
|
apiCount: number;
|
|
48
|
+
sourceCount: number;
|
|
49
|
+
contractCount: number;
|
|
50
|
+
}
|
|
51
|
+
/** Cached source code entry */
|
|
52
|
+
export interface CachedSource {
|
|
53
|
+
objectType: string;
|
|
54
|
+
objectName: string;
|
|
55
|
+
source: string;
|
|
56
|
+
hash: string;
|
|
57
|
+
cachedAt: string;
|
|
58
|
+
}
|
|
59
|
+
/** Serializable contract for cache storage (matches context/types.ts Contract) */
|
|
60
|
+
export interface CachedContract {
|
|
61
|
+
name: string;
|
|
62
|
+
type: string;
|
|
63
|
+
methodCount: number;
|
|
64
|
+
source: string;
|
|
65
|
+
fullSource?: string;
|
|
66
|
+
success: boolean;
|
|
67
|
+
error?: string;
|
|
68
|
+
}
|
|
69
|
+
/** Cached dependency resolution result */
|
|
70
|
+
export interface CachedDepGraph {
|
|
71
|
+
sourceHash: string;
|
|
72
|
+
objectName: string;
|
|
73
|
+
objectType: string;
|
|
74
|
+
contracts: CachedContract[];
|
|
75
|
+
cachedAt: string;
|
|
46
76
|
}
|
|
47
77
|
/** Cache interface — both MemoryCache and SqliteCache implement this */
|
|
48
78
|
export interface Cache {
|
|
@@ -52,10 +82,23 @@ export interface Cache {
|
|
|
52
82
|
invalidateNode(id: string): void;
|
|
53
83
|
putEdge(edge: CacheEdge): void;
|
|
54
84
|
getEdgesFrom(fromId: string): CacheEdge[];
|
|
85
|
+
/** Reverse lookup: get all edges pointing TO this id */
|
|
86
|
+
getEdgesTo(toId: string): CacheEdge[];
|
|
55
87
|
putApi(api: CacheApi): void;
|
|
56
88
|
getApi(name: string, type: string): CacheApi | null;
|
|
89
|
+
putSource(objectType: string, objectName: string, source: string): void;
|
|
90
|
+
getSource(objectType: string, objectName: string): CachedSource | null;
|
|
91
|
+
invalidateSource(objectType: string, objectName: string): void;
|
|
92
|
+
putDepGraph(graph: CachedDepGraph): void;
|
|
93
|
+
getDepGraph(sourceHash: string): CachedDepGraph | null;
|
|
94
|
+
putFuncGroup(funcName: string, groupName: string): void;
|
|
95
|
+
getFuncGroup(funcName: string): string | null;
|
|
57
96
|
clear(): void;
|
|
58
97
|
stats(): CacheStats;
|
|
59
98
|
close(): void;
|
|
60
99
|
}
|
|
100
|
+
/** Compute SHA-256 hash of source code (used as dep graph cache key) */
|
|
101
|
+
export declare function hashSource(source: string): string;
|
|
102
|
+
/** Build a source cache key from type + name */
|
|
103
|
+
export declare function sourceKey(objectType: string, objectName: string): string;
|
|
61
104
|
//# sourceMappingURL=cache.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../
|
|
1
|
+
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/cache/cache.ts"],"names":[],"mappings":"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"}
|
package/dist/cache/cache.js
CHANGED
|
@@ -2,13 +2,24 @@
|
|
|
2
2
|
* Cache interface and types for ARC-1.
|
|
3
3
|
*
|
|
4
4
|
* Two implementations:
|
|
5
|
-
* - MemoryCache: fast, ephemeral (default)
|
|
6
|
-
* - SqliteCache: persistent, cross-session (
|
|
5
|
+
* - MemoryCache: fast, ephemeral (default for stdio)
|
|
6
|
+
* - SqliteCache: persistent, cross-session (default for http-streamable / Docker)
|
|
7
7
|
*
|
|
8
|
-
* Cache stores
|
|
9
|
-
* - Nodes: ABAP objects (class, program, table, etc.)
|
|
8
|
+
* Cache stores five types of data:
|
|
9
|
+
* - Nodes: ABAP objects (class, program, table, etc.) with metadata
|
|
10
10
|
* - Edges: Dependencies between objects (calls, uses, implements)
|
|
11
11
|
* - APIs: Released API objects (for clean core checks)
|
|
12
|
+
* - Sources: Raw source code keyed by (type, name) with content hash
|
|
13
|
+
* - Contracts: Compressed dependency contracts keyed by source hash
|
|
12
14
|
*/
|
|
13
|
-
|
|
15
|
+
import { createHash } from 'node:crypto';
|
|
16
|
+
// ─── Helpers ─────────────────────────────────────────────────────────
|
|
17
|
+
/** Compute SHA-256 hash of source code (used as dep graph cache key) */
|
|
18
|
+
export function hashSource(source) {
|
|
19
|
+
return createHash('sha256').update(source).digest('hex');
|
|
20
|
+
}
|
|
21
|
+
/** Build a source cache key from type + name */
|
|
22
|
+
export function sourceKey(objectType, objectName) {
|
|
23
|
+
return `${objectType.toUpperCase()}:${objectName.toUpperCase()}`;
|
|
24
|
+
}
|
|
14
25
|
//# sourceMappingURL=cache.js.map
|
package/dist/cache/cache.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/cache/cache.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAoHzC,wEAAwE;AAExE,wEAAwE;AACxE,MAAM,UAAU,UAAU,CAAC,MAAc;IACvC,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC3D,CAAC;AAED,gDAAgD;AAChD,MAAM,UAAU,SAAS,CAAC,UAAkB,EAAE,UAAkB;IAC9D,OAAO,GAAG,UAAU,CAAC,WAAW,EAAE,IAAI,UAAU,CAAC,WAAW,EAAE,EAAE,CAAC;AACnE,CAAC"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Caching layer — orchestrates source + dependency caching.
|
|
3
|
+
*
|
|
4
|
+
* Sits between the intent handler / compressor and the ADT client.
|
|
5
|
+
* Provides cache-aware source fetching with hash-based dependency
|
|
6
|
+
* graph invalidation.
|
|
7
|
+
*
|
|
8
|
+
* Design:
|
|
9
|
+
* - Source code is cached by (type, name) with a SHA-256 hash.
|
|
10
|
+
* - Dependency graphs (contracts[]) are cached by source hash.
|
|
11
|
+
* When the source changes, the hash changes, and deps are re-resolved.
|
|
12
|
+
* When the source hasn't changed, ALL downstream dep fetches are skipped.
|
|
13
|
+
* - Function group mappings are cached permanently (rarely change).
|
|
14
|
+
* - Writes invalidate the source cache for the written object.
|
|
15
|
+
*
|
|
16
|
+
* Three tiers:
|
|
17
|
+
* - Tier 1 (stdio): MemoryCache, dies with process. Eliminates duplicate
|
|
18
|
+
* fetches within a session.
|
|
19
|
+
* - Tier 2 (http-streamable): SqliteCache, persists. Multiple sessions
|
|
20
|
+
* share the warm cache.
|
|
21
|
+
* - Tier 3 (Docker + warmup): SqliteCache pre-populated via TADIR scan.
|
|
22
|
+
* Enables reverse dependency lookup.
|
|
23
|
+
*/
|
|
24
|
+
import type { AdtClient } from '../adt/client.js';
|
|
25
|
+
import type { Cache, CachedDepGraph, CachedSource } from './cache.js';
|
|
26
|
+
/** Cache hit/miss statistics for a single operation */
|
|
27
|
+
export interface CacheHitInfo {
|
|
28
|
+
sourceHit: boolean;
|
|
29
|
+
depGraphHit: boolean;
|
|
30
|
+
depSourceHits: number;
|
|
31
|
+
depSourceMisses: number;
|
|
32
|
+
}
|
|
33
|
+
export declare class CachingLayer {
|
|
34
|
+
readonly cache: Cache;
|
|
35
|
+
private warmupDone;
|
|
36
|
+
constructor(cache: Cache);
|
|
37
|
+
/** Mark warmup as complete (enables reverse dep lookups) */
|
|
38
|
+
setWarmupDone(done: boolean): void;
|
|
39
|
+
/** Whether the warmup index is available */
|
|
40
|
+
get isWarmupAvailable(): boolean;
|
|
41
|
+
/**
|
|
42
|
+
* Get source code, using cache if available.
|
|
43
|
+
* Returns the source and whether it was a cache hit.
|
|
44
|
+
*/
|
|
45
|
+
getSource(objectType: string, objectName: string, fetcher: () => Promise<string>): Promise<{
|
|
46
|
+
source: string;
|
|
47
|
+
hit: boolean;
|
|
48
|
+
}>;
|
|
49
|
+
/**
|
|
50
|
+
* Get cached source without fetching (for cache-only lookups).
|
|
51
|
+
*/
|
|
52
|
+
getCachedSource(objectType: string, objectName: string): CachedSource | null;
|
|
53
|
+
/**
|
|
54
|
+
* Check if we have a cached dep graph for the given source.
|
|
55
|
+
* The graph is keyed by the source hash — if source changed, this returns null.
|
|
56
|
+
*/
|
|
57
|
+
getCachedDepGraph(source: string): CachedDepGraph | null;
|
|
58
|
+
/**
|
|
59
|
+
* Store a resolved dep graph keyed by source hash.
|
|
60
|
+
*/
|
|
61
|
+
putDepGraph(source: string, objectName: string, objectType: string, contracts: CachedDepGraph['contracts']): void;
|
|
62
|
+
/**
|
|
63
|
+
* Resolve a function module's group, with cache.
|
|
64
|
+
*/
|
|
65
|
+
resolveFuncGroup(client: AdtClient, funcName: string): Promise<string | null>;
|
|
66
|
+
/**
|
|
67
|
+
* Invalidate cache entries for a written object.
|
|
68
|
+
* Called after SAPWrite to ensure stale source is not served.
|
|
69
|
+
*/
|
|
70
|
+
invalidate(objectType: string, objectName: string): void;
|
|
71
|
+
/**
|
|
72
|
+
* Find all objects that depend on the given object (reverse lookup).
|
|
73
|
+
* Only available when pre-warmer has populated the edge index.
|
|
74
|
+
* Returns null if warmup hasn't run (caller should show appropriate message).
|
|
75
|
+
*/
|
|
76
|
+
getUsages(objectName: string): {
|
|
77
|
+
fromId: string;
|
|
78
|
+
edgeType: string;
|
|
79
|
+
}[] | null;
|
|
80
|
+
stats(): Cache['stats'] extends (...args: infer _A) => infer R ? R : never;
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=caching-layer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"caching-layer.d.ts","sourceRoot":"","sources":["../../src/cache/caching-layer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAGtE,uDAAuD;AACvD,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,OAAO,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,qBAAa,YAAY;IACvB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,OAAO,CAAC,UAAU,CAAS;gBAEf,KAAK,EAAE,KAAK;IAIxB,4DAA4D;IAC5D,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IAIlC,4CAA4C;IAC5C,IAAI,iBAAiB,IAAI,OAAO,CAE/B;IAID;;;OAGG;IACG,SAAS,CACb,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,GAC7B,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,OAAO,CAAA;KAAE,CAAC;IAa5C;;OAEG;IACH,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI;IAM5E;;;OAGG;IACH,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI;IASxD;;OAEG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,CAAC,WAAW,CAAC,GAAG,IAAI;IAgBjH;;OAEG;IACG,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAkBnF;;;OAGG;IACH,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAOxD;;;;OAIG;IACH,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,EAAE,GAAG,IAAI;IAQ5E,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,KAAK,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK;CAG3E"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Caching layer — orchestrates source + dependency caching.
|
|
3
|
+
*
|
|
4
|
+
* Sits between the intent handler / compressor and the ADT client.
|
|
5
|
+
* Provides cache-aware source fetching with hash-based dependency
|
|
6
|
+
* graph invalidation.
|
|
7
|
+
*
|
|
8
|
+
* Design:
|
|
9
|
+
* - Source code is cached by (type, name) with a SHA-256 hash.
|
|
10
|
+
* - Dependency graphs (contracts[]) are cached by source hash.
|
|
11
|
+
* When the source changes, the hash changes, and deps are re-resolved.
|
|
12
|
+
* When the source hasn't changed, ALL downstream dep fetches are skipped.
|
|
13
|
+
* - Function group mappings are cached permanently (rarely change).
|
|
14
|
+
* - Writes invalidate the source cache for the written object.
|
|
15
|
+
*
|
|
16
|
+
* Three tiers:
|
|
17
|
+
* - Tier 1 (stdio): MemoryCache, dies with process. Eliminates duplicate
|
|
18
|
+
* fetches within a session.
|
|
19
|
+
* - Tier 2 (http-streamable): SqliteCache, persists. Multiple sessions
|
|
20
|
+
* share the warm cache.
|
|
21
|
+
* - Tier 3 (Docker + warmup): SqliteCache pre-populated via TADIR scan.
|
|
22
|
+
* Enables reverse dependency lookup.
|
|
23
|
+
*/
|
|
24
|
+
import { logger } from '../server/logger.js';
|
|
25
|
+
import { hashSource } from './cache.js';
|
|
26
|
+
export class CachingLayer {
|
|
27
|
+
cache;
|
|
28
|
+
warmupDone = false;
|
|
29
|
+
constructor(cache) {
|
|
30
|
+
this.cache = cache;
|
|
31
|
+
}
|
|
32
|
+
/** Mark warmup as complete (enables reverse dep lookups) */
|
|
33
|
+
setWarmupDone(done) {
|
|
34
|
+
this.warmupDone = done;
|
|
35
|
+
}
|
|
36
|
+
/** Whether the warmup index is available */
|
|
37
|
+
get isWarmupAvailable() {
|
|
38
|
+
return this.warmupDone;
|
|
39
|
+
}
|
|
40
|
+
// ─── Source Fetching with Cache ────────────────────────────────────
|
|
41
|
+
/**
|
|
42
|
+
* Get source code, using cache if available.
|
|
43
|
+
* Returns the source and whether it was a cache hit.
|
|
44
|
+
*/
|
|
45
|
+
async getSource(objectType, objectName, fetcher) {
|
|
46
|
+
const cached = this.cache.getSource(objectType, objectName);
|
|
47
|
+
if (cached) {
|
|
48
|
+
logger.debug(`[cache] source HIT ${objectType}:${objectName}`);
|
|
49
|
+
return { source: cached.source, hit: true };
|
|
50
|
+
}
|
|
51
|
+
const source = await fetcher();
|
|
52
|
+
this.cache.putSource(objectType, objectName, source);
|
|
53
|
+
logger.debug(`[cache] source MISS ${objectType}:${objectName} (${source.length} chars stored)`);
|
|
54
|
+
return { source, hit: false };
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Get cached source without fetching (for cache-only lookups).
|
|
58
|
+
*/
|
|
59
|
+
getCachedSource(objectType, objectName) {
|
|
60
|
+
return this.cache.getSource(objectType, objectName);
|
|
61
|
+
}
|
|
62
|
+
// ─── Dependency Graph Cache ───────────────────────────────────────
|
|
63
|
+
/**
|
|
64
|
+
* Check if we have a cached dep graph for the given source.
|
|
65
|
+
* The graph is keyed by the source hash — if source changed, this returns null.
|
|
66
|
+
*/
|
|
67
|
+
getCachedDepGraph(source) {
|
|
68
|
+
const hash = hashSource(source);
|
|
69
|
+
const cached = this.cache.getDepGraph(hash);
|
|
70
|
+
if (cached) {
|
|
71
|
+
logger.debug(`[cache] depgraph HIT ${cached.objectType}:${cached.objectName} (hash ${hash.slice(0, 8)})`);
|
|
72
|
+
}
|
|
73
|
+
return cached;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Store a resolved dep graph keyed by source hash.
|
|
77
|
+
*/
|
|
78
|
+
putDepGraph(source, objectName, objectType, contracts) {
|
|
79
|
+
const hash = hashSource(source);
|
|
80
|
+
logger.debug(`[cache] depgraph STORE ${objectType}:${objectName} (${contracts.length} contracts, hash ${hash.slice(0, 8)})`);
|
|
81
|
+
this.cache.putDepGraph({
|
|
82
|
+
sourceHash: hash,
|
|
83
|
+
objectName,
|
|
84
|
+
objectType,
|
|
85
|
+
contracts,
|
|
86
|
+
cachedAt: new Date().toISOString(),
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
// ─── Function Group Resolution ────────────────────────────────────
|
|
90
|
+
/**
|
|
91
|
+
* Resolve a function module's group, with cache.
|
|
92
|
+
*/
|
|
93
|
+
async resolveFuncGroup(client, funcName) {
|
|
94
|
+
const cached = this.cache.getFuncGroup(funcName);
|
|
95
|
+
if (cached)
|
|
96
|
+
return cached;
|
|
97
|
+
const results = await client.searchObject(funcName, 5);
|
|
98
|
+
for (const r of results) {
|
|
99
|
+
const match = r.uri.match(/groups\/([^/]+)/);
|
|
100
|
+
if (match) {
|
|
101
|
+
const group = match[1];
|
|
102
|
+
this.cache.putFuncGroup(funcName, group);
|
|
103
|
+
return group;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
return null;
|
|
107
|
+
}
|
|
108
|
+
// ─── Write Invalidation ───────────────────────────────────────────
|
|
109
|
+
/**
|
|
110
|
+
* Invalidate cache entries for a written object.
|
|
111
|
+
* Called after SAPWrite to ensure stale source is not served.
|
|
112
|
+
*/
|
|
113
|
+
invalidate(objectType, objectName) {
|
|
114
|
+
logger.debug(`[cache] invalidate ${objectType}:${objectName}`);
|
|
115
|
+
this.cache.invalidateSource(objectType, objectName);
|
|
116
|
+
}
|
|
117
|
+
// ─── Reverse Dependencies (Pre-warmer only) ───────────────────────
|
|
118
|
+
/**
|
|
119
|
+
* Find all objects that depend on the given object (reverse lookup).
|
|
120
|
+
* Only available when pre-warmer has populated the edge index.
|
|
121
|
+
* Returns null if warmup hasn't run (caller should show appropriate message).
|
|
122
|
+
*/
|
|
123
|
+
getUsages(objectName) {
|
|
124
|
+
if (!this.warmupDone)
|
|
125
|
+
return null;
|
|
126
|
+
const edges = this.cache.getEdgesTo(objectName.toUpperCase());
|
|
127
|
+
return edges.map((e) => ({ fromId: e.fromId, edgeType: e.edgeType }));
|
|
128
|
+
}
|
|
129
|
+
// ─── Stats ────────────────────────────────────────────────────────
|
|
130
|
+
stats() {
|
|
131
|
+
return this.cache.stats();
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=caching-layer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"caching-layer.js","sourceRoot":"","sources":["../../src/cache/caching-layer.ts"],"names":[],"mappings":"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"}
|
package/dist/cache/memory.d.ts
CHANGED
|
@@ -1,23 +1,35 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* In-memory cache implementation.
|
|
3
3
|
*
|
|
4
|
-
* Default cache backend — fast, ephemeral.
|
|
4
|
+
* Default cache backend for stdio transport — fast, ephemeral.
|
|
5
5
|
* Data is lost when the process exits.
|
|
6
6
|
* Thread-safe by default in Node.js (single-threaded event loop).
|
|
7
7
|
*/
|
|
8
|
-
import type { Cache, CacheApi, CacheEdge, CacheNode, CacheStats } from './cache.js';
|
|
8
|
+
import type { Cache, CacheApi, CachedDepGraph, CachedSource, CacheEdge, CacheNode, CacheStats } from './cache.js';
|
|
9
9
|
export declare class MemoryCache implements Cache {
|
|
10
10
|
private nodes;
|
|
11
11
|
private edges;
|
|
12
|
+
private reverseEdges;
|
|
12
13
|
private apis;
|
|
14
|
+
private sources;
|
|
15
|
+
private depGraphs;
|
|
16
|
+
private funcGroups;
|
|
13
17
|
putNode(node: CacheNode): void;
|
|
14
18
|
getNode(id: string): CacheNode | null;
|
|
15
19
|
getNodesByPackage(packageName: string): CacheNode[];
|
|
16
20
|
invalidateNode(id: string): void;
|
|
17
21
|
putEdge(edge: CacheEdge): void;
|
|
18
22
|
getEdgesFrom(fromId: string): CacheEdge[];
|
|
23
|
+
getEdgesTo(toId: string): CacheEdge[];
|
|
19
24
|
putApi(api: CacheApi): void;
|
|
20
25
|
getApi(name: string, type: string): CacheApi | null;
|
|
26
|
+
putSource(objectType: string, objectName: string, source: string): void;
|
|
27
|
+
getSource(objectType: string, objectName: string): CachedSource | null;
|
|
28
|
+
invalidateSource(objectType: string, objectName: string): void;
|
|
29
|
+
putDepGraph(graph: CachedDepGraph): void;
|
|
30
|
+
getDepGraph(sourceHash: string): CachedDepGraph | null;
|
|
31
|
+
putFuncGroup(funcName: string, groupName: string): void;
|
|
32
|
+
getFuncGroup(funcName: string): string | null;
|
|
21
33
|
clear(): void;
|
|
22
34
|
stats(): CacheStats;
|
|
23
35
|
close(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../
|
|
1
|
+
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../src/cache/memory.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAGlH,qBAAa,WAAY,YAAW,KAAK;IACvC,OAAO,CAAC,KAAK,CAAgC;IAC7C,OAAO,CAAC,KAAK,CAAkC;IAC/C,OAAO,CAAC,YAAY,CAAkC;IACtD,OAAO,CAAC,IAAI,CAA+B;IAC3C,OAAO,CAAC,OAAO,CAAmC;IAClD,OAAO,CAAC,SAAS,CAAqC;IACtD,OAAO,CAAC,UAAU,CAA6B;IAI/C,OAAO,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI;IAI9B,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAIrC,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,EAAE;IAWnD,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAShC,OAAO,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI;IAwB9B,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE;IAIzC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE;IAMrC,MAAM,CAAC,GAAG,EAAE,QAAQ,GAAG,IAAI;IAI3B,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI;IAMnD,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAWvE,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI;IAItE,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAM9D,WAAW,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI;IAIxC,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI;IAMtD,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAIvD,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAM7C,KAAK,IAAI,IAAI;IAUb,KAAK,IAAI,UAAU;IAcnB,KAAK,IAAI,IAAI;CAGd"}
|