arc-1 0.9.27 → 1.0.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 (299) hide show
  1. package/README.md +30 -11
  2. package/dist/adt/abapgit.d.ts +19 -6
  3. package/dist/adt/abapgit.d.ts.map +1 -1
  4. package/dist/adt/abapgit.js +141 -36
  5. package/dist/adt/abapgit.js.map +1 -1
  6. package/dist/adt/client.d.ts +21 -8
  7. package/dist/adt/client.d.ts.map +1 -1
  8. package/dist/adt/client.js +47 -7
  9. package/dist/adt/client.js.map +1 -1
  10. package/dist/adt/config.d.ts +15 -0
  11. package/dist/adt/config.d.ts.map +1 -1
  12. package/dist/adt/config.js.map +1 -1
  13. package/dist/adt/crud.d.ts +7 -2
  14. package/dist/adt/crud.d.ts.map +1 -1
  15. package/dist/adt/crud.js +12 -4
  16. package/dist/adt/crud.js.map +1 -1
  17. package/dist/adt/ddic-xml.d.ts +27 -17
  18. package/dist/adt/ddic-xml.d.ts.map +1 -1
  19. package/dist/adt/ddic-xml.js +45 -34
  20. package/dist/adt/ddic-xml.js.map +1 -1
  21. package/dist/adt/devtools.d.ts +13 -0
  22. package/dist/adt/devtools.d.ts.map +1 -1
  23. package/dist/adt/devtools.js +120 -50
  24. package/dist/adt/devtools.js.map +1 -1
  25. package/dist/adt/errors.d.ts +1 -1
  26. package/dist/adt/errors.d.ts.map +1 -1
  27. package/dist/adt/errors.js +18 -0
  28. package/dist/adt/errors.js.map +1 -1
  29. package/dist/adt/flp.d.ts +14 -4
  30. package/dist/adt/flp.d.ts.map +1 -1
  31. package/dist/adt/flp.js +17 -31
  32. package/dist/adt/flp.js.map +1 -1
  33. package/dist/adt/http.d.ts +17 -1
  34. package/dist/adt/http.d.ts.map +1 -1
  35. package/dist/adt/http.js +102 -19
  36. package/dist/adt/http.js.map +1 -1
  37. package/dist/adt/server-driven.d.ts +154 -34
  38. package/dist/adt/server-driven.d.ts.map +1 -1
  39. package/dist/adt/server-driven.js +178 -53
  40. package/dist/adt/server-driven.js.map +1 -1
  41. package/dist/adt/transport.d.ts +30 -11
  42. package/dist/adt/transport.d.ts.map +1 -1
  43. package/dist/adt/transport.js +119 -58
  44. package/dist/adt/transport.js.map +1 -1
  45. package/dist/adt/types.d.ts +54 -15
  46. package/dist/adt/types.d.ts.map +1 -1
  47. package/dist/adt/xml-parser.d.ts +52 -12
  48. package/dist/adt/xml-parser.d.ts.map +1 -1
  49. package/dist/adt/xml-parser.js +120 -10
  50. package/dist/adt/xml-parser.js.map +1 -1
  51. package/dist/authz/policy.d.ts +8 -0
  52. package/dist/authz/policy.d.ts.map +1 -1
  53. package/dist/authz/policy.js +23 -0
  54. package/dist/authz/policy.js.map +1 -1
  55. package/dist/cache/cache.d.ts +2 -34
  56. package/dist/cache/cache.d.ts.map +1 -1
  57. package/dist/cache/cache.js +2 -3
  58. package/dist/cache/cache.js.map +1 -1
  59. package/dist/cache/caching-layer.d.ts +3 -19
  60. package/dist/cache/caching-layer.d.ts.map +1 -1
  61. package/dist/cache/caching-layer.js +2 -26
  62. package/dist/cache/caching-layer.js.map +1 -1
  63. package/dist/cache/memory.d.ts +1 -12
  64. package/dist/cache/memory.d.ts.map +1 -1
  65. package/dist/cache/memory.js +0 -69
  66. package/dist/cache/memory.js.map +1 -1
  67. package/dist/cache/sqlite.d.ts +2 -9
  68. package/dist/cache/sqlite.d.ts.map +1 -1
  69. package/dist/cache/sqlite.js +8 -84
  70. package/dist/cache/sqlite.js.map +1 -1
  71. package/dist/cli.js +6 -3
  72. package/dist/cli.js.map +1 -1
  73. package/dist/context/unit-surgery.d.ts +28 -0
  74. package/dist/context/unit-surgery.d.ts.map +1 -0
  75. package/dist/context/unit-surgery.js +150 -0
  76. package/dist/context/unit-surgery.js.map +1 -0
  77. package/dist/handlers/activate.d.ts.map +1 -1
  78. package/dist/handlers/activate.js +44 -6
  79. package/dist/handlers/activate.js.map +1 -1
  80. package/dist/handlers/context.d.ts +1 -1
  81. package/dist/handlers/context.d.ts.map +1 -1
  82. package/dist/handlers/context.js +98 -28
  83. package/dist/handlers/context.js.map +1 -1
  84. package/dist/handlers/diagnose.d.ts.map +1 -1
  85. package/dist/handlers/diagnose.js +55 -31
  86. package/dist/handlers/diagnose.js.map +1 -1
  87. package/dist/handlers/dispatch.d.ts +12 -1
  88. package/dist/handlers/dispatch.d.ts.map +1 -1
  89. package/dist/handlers/dispatch.js +160 -25
  90. package/dist/handlers/dispatch.js.map +1 -1
  91. package/dist/handlers/feature-cache.d.ts +27 -14
  92. package/dist/handlers/feature-cache.d.ts.map +1 -1
  93. package/dist/handlers/feature-cache.js +63 -25
  94. package/dist/handlers/feature-cache.js.map +1 -1
  95. package/dist/handlers/function-processing.d.ts +61 -0
  96. package/dist/handlers/function-processing.d.ts.map +1 -0
  97. package/dist/handlers/function-processing.js +45 -0
  98. package/dist/handlers/function-processing.js.map +1 -0
  99. package/dist/handlers/git.d.ts.map +1 -1
  100. package/dist/handlers/git.js +44 -19
  101. package/dist/handlers/git.js.map +1 -1
  102. package/dist/handlers/hyperfocused.d.ts.map +1 -1
  103. package/dist/handlers/hyperfocused.js +2 -3
  104. package/dist/handlers/hyperfocused.js.map +1 -1
  105. package/dist/handlers/lint.d.ts.map +1 -1
  106. package/dist/handlers/lint.js +7 -7
  107. package/dist/handlers/lint.js.map +1 -1
  108. package/dist/handlers/manage.d.ts.map +1 -1
  109. package/dist/handlers/manage.js +58 -31
  110. package/dist/handlers/manage.js.map +1 -1
  111. package/dist/handlers/navigate.d.ts.map +1 -1
  112. package/dist/handlers/navigate.js +27 -90
  113. package/dist/handlers/navigate.js.map +1 -1
  114. package/dist/handlers/object-types.d.ts +2 -0
  115. package/dist/handlers/object-types.d.ts.map +1 -1
  116. package/dist/handlers/object-types.js +43 -4
  117. package/dist/handlers/object-types.js.map +1 -1
  118. package/dist/handlers/query.d.ts.map +1 -1
  119. package/dist/handlers/query.js +2 -2
  120. package/dist/handlers/query.js.map +1 -1
  121. package/dist/handlers/read.d.ts.map +1 -1
  122. package/dist/handlers/read.js +64 -41
  123. package/dist/handlers/read.js.map +1 -1
  124. package/dist/handlers/schemas.d.ts +68 -16
  125. package/dist/handlers/schemas.d.ts.map +1 -1
  126. package/dist/handlers/schemas.js +124 -32
  127. package/dist/handlers/schemas.js.map +1 -1
  128. package/dist/handlers/search.d.ts.map +1 -1
  129. package/dist/handlers/search.js +8 -7
  130. package/dist/handlers/search.js.map +1 -1
  131. package/dist/handlers/shared.d.ts +13 -0
  132. package/dist/handlers/shared.d.ts.map +1 -1
  133. package/dist/handlers/shared.js +15 -0
  134. package/dist/handlers/shared.js.map +1 -1
  135. package/dist/handlers/tool-descriptions.d.ts +4 -0
  136. package/dist/handlers/tool-descriptions.d.ts.map +1 -0
  137. package/dist/handlers/tool-descriptions.js +52 -0
  138. package/dist/handlers/tool-descriptions.js.map +1 -0
  139. package/dist/handlers/tool-registry.d.ts +18 -4
  140. package/dist/handlers/tool-registry.d.ts.map +1 -1
  141. package/dist/handlers/tool-registry.js +18 -0
  142. package/dist/handlers/tool-registry.js.map +1 -1
  143. package/dist/handlers/tools.d.ts.map +1 -1
  144. package/dist/handlers/tools.js +126 -103
  145. package/dist/handlers/tools.js.map +1 -1
  146. package/dist/handlers/transport.d.ts +2 -2
  147. package/dist/handlers/transport.d.ts.map +1 -1
  148. package/dist/handlers/transport.js +81 -23
  149. package/dist/handlers/transport.js.map +1 -1
  150. package/dist/handlers/where-used.d.ts +25 -0
  151. package/dist/handlers/where-used.d.ts.map +1 -0
  152. package/dist/handlers/where-used.js +94 -0
  153. package/dist/handlers/where-used.js.map +1 -0
  154. package/dist/handlers/write/class-surgery.d.ts.map +1 -1
  155. package/dist/handlers/write/class-surgery.js +11 -12
  156. package/dist/handlers/write/class-surgery.js.map +1 -1
  157. package/dist/handlers/write/create.d.ts.map +1 -1
  158. package/dist/handlers/write/create.js +194 -84
  159. package/dist/handlers/write/create.js.map +1 -1
  160. package/dist/handlers/write/rap.d.ts.map +1 -1
  161. package/dist/handlers/write/rap.js +9 -9
  162. package/dist/handlers/write/rap.js.map +1 -1
  163. package/dist/handlers/write/unit-surgery.d.ts +5 -0
  164. package/dist/handlers/write/unit-surgery.d.ts.map +1 -0
  165. package/dist/handlers/write/unit-surgery.js +47 -0
  166. package/dist/handlers/write/unit-surgery.js.map +1 -0
  167. package/dist/handlers/write/update-delete.js +8 -8
  168. package/dist/handlers/write/update-delete.js.map +1 -1
  169. package/dist/handlers/write-helpers.d.ts +7 -4
  170. package/dist/handlers/write-helpers.d.ts.map +1 -1
  171. package/dist/handlers/write-helpers.js +118 -63
  172. package/dist/handlers/write-helpers.js.map +1 -1
  173. package/dist/handlers/write.d.ts.map +1 -1
  174. package/dist/handlers/write.js +35 -13
  175. package/dist/handlers/write.js.map +1 -1
  176. package/dist/lint/lint.d.ts.map +1 -1
  177. package/dist/lint/lint.js +4 -2
  178. package/dist/lint/lint.js.map +1 -1
  179. package/dist/probe/catalog.js +1 -1
  180. package/dist/probe/catalog.js.map +1 -1
  181. package/dist/public/ui/app.js +1 -14
  182. package/dist/server/audit.d.ts +27 -15
  183. package/dist/server/audit.d.ts.map +1 -1
  184. package/dist/server/audit.js.map +1 -1
  185. package/dist/server/auth-rate-limit.d.ts +18 -9
  186. package/dist/server/auth-rate-limit.d.ts.map +1 -1
  187. package/dist/server/auth-rate-limit.js +31 -6
  188. package/dist/server/auth-rate-limit.js.map +1 -1
  189. package/dist/server/auth-summary.d.ts +4 -0
  190. package/dist/server/auth-summary.d.ts.map +1 -0
  191. package/dist/server/auth-summary.js +67 -0
  192. package/dist/server/auth-summary.js.map +1 -0
  193. package/dist/server/config.d.ts.map +1 -1
  194. package/dist/server/config.js +106 -3
  195. package/dist/server/config.js.map +1 -1
  196. package/dist/server/context.d.ts +12 -0
  197. package/dist/server/context.d.ts.map +1 -1
  198. package/dist/server/context.js.map +1 -1
  199. package/dist/server/destination-discovery.d.ts +36 -0
  200. package/dist/server/destination-discovery.d.ts.map +1 -0
  201. package/dist/server/destination-discovery.js +130 -0
  202. package/dist/server/destination-discovery.js.map +1 -0
  203. package/dist/server/destination-registry.d.ts +111 -0
  204. package/dist/server/destination-registry.d.ts.map +1 -0
  205. package/dist/server/destination-registry.js +449 -0
  206. package/dist/server/destination-registry.js.map +1 -0
  207. package/dist/server/http.d.ts +43 -1
  208. package/dist/server/http.d.ts.map +1 -1
  209. package/dist/server/http.js +283 -73
  210. package/dist/server/http.js.map +1 -1
  211. package/dist/server/logger.d.ts.map +1 -1
  212. package/dist/server/logger.js +58 -13
  213. package/dist/server/logger.js.map +1 -1
  214. package/dist/server/mcp-rate-limit.d.ts +6 -4
  215. package/dist/server/mcp-rate-limit.d.ts.map +1 -1
  216. package/dist/server/mcp-rate-limit.js +6 -4
  217. package/dist/server/mcp-rate-limit.js.map +1 -1
  218. package/dist/server/multi-target-basic-auth.d.ts +49 -0
  219. package/dist/server/multi-target-basic-auth.d.ts.map +1 -0
  220. package/dist/server/multi-target-basic-auth.js +246 -0
  221. package/dist/server/multi-target-basic-auth.js.map +1 -0
  222. package/dist/server/multi-target-catalog.d.ts +33 -0
  223. package/dist/server/multi-target-catalog.d.ts.map +1 -0
  224. package/dist/server/multi-target-catalog.js +130 -0
  225. package/dist/server/multi-target-catalog.js.map +1 -0
  226. package/dist/server/multi-target-destination-config.d.ts +12 -0
  227. package/dist/server/multi-target-destination-config.d.ts.map +1 -0
  228. package/dist/server/multi-target-destination-config.js +37 -0
  229. package/dist/server/multi-target-destination-config.js.map +1 -0
  230. package/dist/server/multi-target-destination-runtime.d.ts +20 -0
  231. package/dist/server/multi-target-destination-runtime.d.ts.map +1 -0
  232. package/dist/server/multi-target-destination-runtime.js +191 -0
  233. package/dist/server/multi-target-destination-runtime.js.map +1 -0
  234. package/dist/server/multi-target-feature-state.d.ts +6 -0
  235. package/dist/server/multi-target-feature-state.d.ts.map +1 -0
  236. package/dist/server/multi-target-feature-state.js +41 -0
  237. package/dist/server/multi-target-feature-state.js.map +1 -0
  238. package/dist/server/multi-target-identity.d.ts +10 -0
  239. package/dist/server/multi-target-identity.d.ts.map +1 -0
  240. package/dist/server/multi-target-identity.js +18 -0
  241. package/dist/server/multi-target-identity.js.map +1 -0
  242. package/dist/server/multi-target-runtime.d.ts +27 -0
  243. package/dist/server/multi-target-runtime.d.ts.map +1 -0
  244. package/dist/server/multi-target-runtime.js +110 -0
  245. package/dist/server/multi-target-runtime.js.map +1 -0
  246. package/dist/server/multi-target-server.d.ts +53 -0
  247. package/dist/server/multi-target-server.d.ts.map +1 -0
  248. package/dist/server/multi-target-server.js +434 -0
  249. package/dist/server/multi-target-server.js.map +1 -0
  250. package/dist/server/multi-target-shared-auth-state.d.ts +82 -0
  251. package/dist/server/multi-target-shared-auth-state.d.ts.map +1 -0
  252. package/dist/server/multi-target-shared-auth-state.js +226 -0
  253. package/dist/server/multi-target-shared-auth-state.js.map +1 -0
  254. package/dist/server/multi-target-tools.d.ts +20 -0
  255. package/dist/server/multi-target-tools.d.ts.map +1 -0
  256. package/dist/server/multi-target-tools.js +191 -0
  257. package/dist/server/multi-target-tools.js.map +1 -0
  258. package/dist/server/oauth-session-recovery.d.ts +22 -0
  259. package/dist/server/oauth-session-recovery.d.ts.map +1 -0
  260. package/dist/server/oauth-session-recovery.js +69 -0
  261. package/dist/server/oauth-session-recovery.js.map +1 -0
  262. package/dist/server/plugin-loader.d.ts.map +1 -1
  263. package/dist/server/plugin-loader.js +8 -6
  264. package/dist/server/plugin-loader.js.map +1 -1
  265. package/dist/server/server.d.ts +39 -27
  266. package/dist/server/server.d.ts.map +1 -1
  267. package/dist/server/server.js +433 -300
  268. package/dist/server/server.js.map +1 -1
  269. package/dist/server/sinks/btp-auditlog.d.ts.map +1 -1
  270. package/dist/server/sinks/btp-auditlog.js +83 -11
  271. package/dist/server/sinks/btp-auditlog.js.map +1 -1
  272. package/dist/server/tool-auth.d.ts +10 -0
  273. package/dist/server/tool-auth.d.ts.map +1 -0
  274. package/dist/server/tool-auth.js +75 -0
  275. package/dist/server/tool-auth.js.map +1 -0
  276. package/dist/server/trace-context.d.ts +51 -0
  277. package/dist/server/trace-context.d.ts.map +1 -0
  278. package/dist/server/trace-context.js +100 -0
  279. package/dist/server/trace-context.js.map +1 -0
  280. package/dist/server/types.d.ts +27 -6
  281. package/dist/server/types.d.ts.map +1 -1
  282. package/dist/server/types.js +5 -2
  283. package/dist/server/types.js.map +1 -1
  284. package/dist/server/ui-state.d.ts +0 -2
  285. package/dist/server/ui-state.d.ts.map +1 -1
  286. package/dist/server/ui-state.js +0 -4
  287. package/dist/server/ui-state.js.map +1 -1
  288. package/dist/server/ui.d.ts.map +1 -1
  289. package/dist/server/ui.js +0 -7
  290. package/dist/server/ui.js.map +1 -1
  291. package/package.json +17 -14
  292. package/dist/cache/warmup.d.ts +0 -41
  293. package/dist/cache/warmup.d.ts.map +0 -1
  294. package/dist/cache/warmup.js +0 -337
  295. package/dist/cache/warmup.js.map +0 -1
  296. package/dist/server/elicit.d.ts +0 -43
  297. package/dist/server/elicit.d.ts.map +0 -1
  298. package/dist/server/elicit.js +0 -183
  299. package/dist/server/elicit.js.map +0 -1
@@ -0,0 +1,150 @@
1
+ /**
2
+ * Token-efficient surgery for procedural ABAP units.
3
+ *
4
+ * Locates named FORM...ENDFORM and MODULE...ENDMODULE blocks with abaplint's
5
+ * structure tree, then replaces exactly one whole block. Event blocks are
6
+ * deliberately excluded because abaplint does not expose them as structures.
7
+ */
8
+ import { MemoryFile, Registry, Structures, Version } from '@abaplint/core';
9
+ import { getDefaultAbaplintConfig } from '../lint/abaplint-config-cache.js';
10
+ // edit_unit is on-prem only. Cloud grammar intentionally rejects classic MODULE
11
+ // blocks, so the no-probe fallback must use the on-prem parser ceiling.
12
+ const DEFAULT_VERSION = Version.v758;
13
+ function parseUnitName(tokens, kind) {
14
+ const match = tokens.match(kind === 'FORM' ? /^FORM\s+([^\s.]+)/i : /^MODULE\s+([^\s.]+)/i);
15
+ return match?.[1];
16
+ }
17
+ function collectUnits(root, kind) {
18
+ const structureType = kind === 'FORM' ? Structures.Form : Structures.Module;
19
+ const units = [];
20
+ for (const node of root.findAllStructuresRecursive(structureType)) {
21
+ const first = node.getFirstStatement();
22
+ if (!first)
23
+ continue;
24
+ const name = parseUnitName(first.concatTokens(), kind);
25
+ if (!name)
26
+ continue;
27
+ units.push({
28
+ name,
29
+ kind,
30
+ startLine: first.getFirstToken().getRow(),
31
+ endLine: node.getLastToken().getRow(),
32
+ });
33
+ }
34
+ return units;
35
+ }
36
+ /** List the editable FORM and MODULE blocks in a program-style source file. */
37
+ export function listEditableUnits(source, objectName, abaplintVersion) {
38
+ const normalized = source.replace(/\r\n/g, '\n');
39
+ const config = getDefaultAbaplintConfig(abaplintVersion ?? DEFAULT_VERSION);
40
+ const registry = new Registry(config);
41
+ registry.addFile(new MemoryFile(`${objectName.toLowerCase().replace(/\//g, '#')}.prog.abap`, normalized));
42
+ registry.parse();
43
+ const units = [];
44
+ for (const object of registry.getObjects()) {
45
+ const file = object.getMainABAPFile?.();
46
+ const structure = file?.getStructure();
47
+ if (!structure)
48
+ continue;
49
+ units.push(...collectUnits(structure, 'FORM'), ...collectUnits(structure, 'MODULE'));
50
+ }
51
+ return units.sort((a, b) => a.startLine - b.startLine);
52
+ }
53
+ function replacementError(unit, replacement, objectName, abaplintVersion) {
54
+ const trimmed = replacement.trim();
55
+ const opening = trimmed.match(/^(FORM|MODULE)\s+([^\s.]+)/i);
56
+ if (!opening) {
57
+ return `Replacement source must be a complete ${unit.kind} ${unit.name}...END${unit.kind} block.`;
58
+ }
59
+ const replacementKind = opening[1].toUpperCase();
60
+ const replacementName = opening[2];
61
+ if (replacementKind !== unit.kind) {
62
+ return `Unit "${unit.name}" is a ${unit.kind}, but the replacement starts with ${replacementKind}.`;
63
+ }
64
+ if (replacementName.toUpperCase() !== unit.name.toUpperCase()) {
65
+ return `Replacement declares ${replacementKind} "${replacementName}", but the selected unit is "${unit.name}".`;
66
+ }
67
+ const terminator = unit.kind === 'FORM' ? /ENDFORM\s*\.\s*$/i : /ENDMODULE\s*\.\s*$/i;
68
+ if (!terminator.test(trimmed)) {
69
+ return `Replacement source must end with END${unit.kind}.`;
70
+ }
71
+ // The opening/terminator checks alone would accept two concatenated units as
72
+ // one replacement. Parse the fragment too and require the selected unit to
73
+ // be the only structure and to span every supplied line.
74
+ let replacementUnits;
75
+ try {
76
+ replacementUnits = listEditableUnits(trimmed, `${objectName}_replacement`, abaplintVersion);
77
+ }
78
+ catch (error) {
79
+ return `Could not parse replacement source with abaplint: ${error instanceof Error ? error.message : String(error)}`;
80
+ }
81
+ const replacementLineCount = trimmed.replace(/\r\n/g, '\n').split('\n').length;
82
+ if (replacementUnits.length !== 1 ||
83
+ replacementUnits[0]?.startLine !== 1 ||
84
+ replacementUnits[0]?.endLine !== replacementLineCount) {
85
+ return `Replacement source must contain exactly one complete ${unit.kind} ${unit.name}...END${unit.kind} block.`;
86
+ }
87
+ return undefined;
88
+ }
89
+ /** Replace one named FORM or MODULE block while preserving the file's line endings. */
90
+ export function spliceUnit(source, objectName, unitName, replacement, abaplintVersion) {
91
+ const hasCRLF = source.includes('\r\n');
92
+ const normalized = source.replace(/\r\n/g, '\n');
93
+ let units;
94
+ try {
95
+ units = listEditableUnits(normalized, objectName, abaplintVersion);
96
+ }
97
+ catch (error) {
98
+ return {
99
+ newSource: '',
100
+ oldUnitSource: '',
101
+ newUnitSource: '',
102
+ success: false,
103
+ error: `Could not parse ${objectName} with abaplint: ${error instanceof Error ? error.message : String(error)}`,
104
+ };
105
+ }
106
+ const matches = units.filter((unit) => unit.name.toUpperCase() === unitName.toUpperCase());
107
+ if (matches.length === 0) {
108
+ const available = units.map((unit) => `${unit.kind} ${unit.name}`).join(', ');
109
+ return {
110
+ newSource: '',
111
+ oldUnitSource: '',
112
+ newUnitSource: '',
113
+ success: false,
114
+ error: `Unit "${unitName}" not found in ${objectName}. Available units: ${available || '(none)'}`,
115
+ };
116
+ }
117
+ if (matches.length > 1) {
118
+ const candidates = matches
119
+ .map((unit) => `${unit.kind} ${unit.name} (lines ${unit.startLine}-${unit.endLine})`)
120
+ .join(', ');
121
+ return {
122
+ newSource: '',
123
+ oldUnitSource: '',
124
+ newUnitSource: '',
125
+ success: false,
126
+ error: `Unit name "${unitName}" is ambiguous in ${objectName}: ${candidates}.`,
127
+ };
128
+ }
129
+ const unit = matches[0];
130
+ const invalidReplacement = replacementError(unit, replacement, objectName, abaplintVersion);
131
+ if (invalidReplacement) {
132
+ return {
133
+ newSource: '',
134
+ oldUnitSource: '',
135
+ newUnitSource: '',
136
+ unit,
137
+ success: false,
138
+ error: invalidReplacement,
139
+ };
140
+ }
141
+ const lines = normalized.split('\n');
142
+ const oldUnitSource = lines.slice(unit.startLine - 1, unit.endLine).join('\n');
143
+ const newUnitSource = replacement.replace(/\r\n/g, '\n').trim();
144
+ const newLines = [...lines.slice(0, unit.startLine - 1), newUnitSource, ...lines.slice(unit.endLine)];
145
+ let newSource = newLines.join('\n');
146
+ if (hasCRLF)
147
+ newSource = newSource.replace(/\n/g, '\r\n');
148
+ return { newSource, oldUnitSource, newUnitSource, unit, success: true };
149
+ }
150
+ //# sourceMappingURL=unit-surgery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unit-surgery.js","sourceRoot":"","sources":["../../src/context/unit-surgery.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"activate.d.ts","sourceRoot":"","sources":["../../src/handlers/activate.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EACL,KAAK,gBAAgB,EAKtB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,KAAK,oBAAoB,EAA0B,MAAM,qBAAqB,CAAC;AAIxF,OAAO,EAAe,KAAK,UAAU,EAAc,MAAM,aAAa,CAAC;AAuEvE,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,YAAY,EAAE,YAAY,GAAG,SAAS,EACtC,aAAa,EAAE,oBAAoB,GAClC,OAAO,CAAC,UAAU,CAAC,CAsRrB;AAoCD,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACb;AAED,UAAU,2BAA2B;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAC;IACvC,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAOD,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,qBAAqB,EAAE,EAChC,MAAM,EAAE,gBAAgB,GACvB,2BAA2B,EAAE,CAwC/B;AAED,wBAAgB,6BAA6B,CAAC,QAAQ,EAAE,2BAA2B,EAAE,GAAG,MAAM,CAa7F"}
1
+ {"version":3,"file":"activate.d.ts","sourceRoot":"","sources":["../../src/handlers/activate.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EACL,KAAK,gBAAgB,EAKtB,MAAM,oBAAoB,CAAC;AAS5B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,KAAK,oBAAoB,EAA0B,MAAM,qBAAqB,CAAC;AAIxF,OAAO,EAAe,KAAK,UAAU,EAAc,MAAM,aAAa,CAAC;AAuEvE,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,YAAY,EAAE,YAAY,GAAG,SAAS,EACtC,aAAa,EAAE,oBAAoB,GAClC,OAAO,CAAC,UAAU,CAAC,CA+TrB;AAoCD,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACb;AAED,UAAU,2BAA2B;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAC;IACvC,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAOD,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,qBAAqB,EAAE,EAChC,MAAM,EAAE,gBAAgB,GACvB,2BAA2B,EAAE,CAwC/B;AAED,wBAAgB,6BAA6B,CAAC,QAAQ,EAAE,2BAA2B,EAAE,GAAG,MAAM,CAa7F"}
@@ -4,7 +4,7 @@
4
4
  */
5
5
  import { activate, activateBatch, publishServiceBinding, unpublishServiceBinding, } from '../adt/devtools.js';
6
6
  import { AdtSafetyError } from '../adt/errors.js';
7
- import { isServerDrivenObjectType, serverDrivenBlueContentType, serverDrivenObjectUrl } from '../adt/server-driven.js';
7
+ import { ensureServerDrivenSupport, isServerDrivenObjectType, serverDrivenMetadataContentType, serverDrivenObjectUrl, serverDrivenUnavailableMessage, } from '../adt/server-driven.js';
8
8
  import { invalidateInactiveList } from './cache-security.js';
9
9
  import { buildCdsActivationDependencyHint } from './cds-hints.js';
10
10
  import { isTablesEndpointAvailable } from './feature-cache.js';
@@ -166,6 +166,18 @@ export async function handleSAPActivate(client, args, cachingLayer, cacheSecurit
166
166
  const perUserClient = cacheSecurity.isPerUserClient;
167
167
  if (args.objects && Array.isArray(args.objects)) {
168
168
  const rawObjects = args.objects;
169
+ // Server-driven types need the registry href — objectBasePath(<sdo>) has no case and its
170
+ // default arm maps unknown non-slash types to the PROGRAM path, so an ungated batch entry
171
+ // silently addressed /sap/bc/adt/programs/programs/<name>. Gate once per DISTINCT type
172
+ // (the resolver below runs per object, and the gate may fetch discovery).
173
+ const batchSdoTypes = [
174
+ ...new Set(rawObjects.map((o) => normalizeObjectType(String(o.type ?? type))).filter((t) => isServerDrivenObjectType(t))),
175
+ ];
176
+ for (const sdoType of batchSdoTypes) {
177
+ if (!(await ensureServerDrivenSupport(client.http, client.safety, sdoType))) {
178
+ return errorResult(serverDrivenUnavailableMessage('SAPActivate', sdoType));
179
+ }
180
+ }
169
181
  // Resolve URLs sequentially. For TABL we await the URL resolver so DDIC
170
182
  // structures (which live at /sap/bc/adt/ddic/structures/) are addressed
171
183
  // correctly; the resolver short-circuits on its in-memory cache.
@@ -198,6 +210,15 @@ export async function handleSAPActivate(client, args, cachingLayer, cacheSecurit
198
210
  const groupLc = encodeURIComponent(group.toLowerCase());
199
211
  url = `/sap/bc/adt/functions/groups/${groupLc}/fmodules/${encodeURIComponent(objName.toLowerCase())}`;
200
212
  }
213
+ else if (objType === 'INCL' && String(o.group ?? args.group ?? '').trim()) {
214
+ const group = String(o.group ?? args.group).trim();
215
+ const groupLc = encodeURIComponent(group.toLowerCase());
216
+ url = `/sap/bc/adt/functions/groups/${groupLc}/includes/${encodeURIComponent(objName.toLowerCase())}`;
217
+ }
218
+ else if (isServerDrivenObjectType(objType)) {
219
+ // Availability already gated per distinct type above.
220
+ url = serverDrivenObjectUrl(objType, objName);
221
+ }
201
222
  else {
202
223
  url = objectUrlForType(objType, objName);
203
224
  }
@@ -207,7 +228,10 @@ export async function handleSAPActivate(client, args, cachingLayer, cacheSecurit
207
228
  // activating ANY of them — one out-of-allowlist object aborts the whole batch
208
229
  // (no partial activation). Fail-closed; no-op when unrestricted. (security audit 2026-06)
209
230
  for (const o of objects) {
210
- await enforceAllowedPackageForObjectUrl(client, o.url, `Activation of ${o.type} '${o.name}'`);
231
+ await enforceAllowedPackageForObjectUrl(client, o.url, `Activation of ${o.type} '${o.name}'`,
232
+ // Mirror the single-object call: SDO metadata (and its packageRef) is negotiated with
233
+ // the type's own content type rather than relying on discovery-driven negotiation.
234
+ isServerDrivenObjectType(o.type) ? serverDrivenMetadataContentType(o.type) : undefined);
211
235
  }
212
236
  // Capture each object's inactive draft before the batch flips them to active.
213
237
  const drafts = cachingLayer && !perUserClient
@@ -269,10 +293,24 @@ export async function handleSAPActivate(client, args, cachingLayer, cacheSecurit
269
293
  const groupLc = encodeURIComponent(group.toLowerCase());
270
294
  objectUrl = `/sap/bc/adt/functions/groups/${groupLc}/fmodules/${encodeURIComponent(name.toLowerCase())}`;
271
295
  }
296
+ else if (type === 'INCL' && String(args.group ?? '').trim()) {
297
+ // A function-group structural include must be activated through its FUGR
298
+ // URI. Activating the standalone /programs/includes/ alias fails on NW
299
+ // 7.50 ("Select a master program"), while activating the FUGR container
300
+ // can report success without promoting the include on SAP_BASIS 7.58.
301
+ // The structural URI is portable across both releases.
302
+ const groupLc = encodeURIComponent(String(args.group).trim().toLowerCase());
303
+ objectUrl = `/sap/bc/adt/functions/groups/${groupLc}/includes/${encodeURIComponent(name.toLowerCase())}`;
304
+ }
272
305
  else if (isServerDrivenObjectType(type)) {
273
- // Server-driven objects (8.16+): objectBasePath(<sdo>) throws, so route via the registry href.
274
- // Single-object activation only — SDO is not added to the batch resolver above (batch is
275
- // RAP-stack-oriented). The generic activate() endpoint handles SDO (verified: activate(DESD) → ok).
306
+ // Server-driven objects: objectBasePath(<sdo>) has no case and its default arm would route to
307
+ // the program path, so use the registry href. The batch resolver above does the same (EVTB/EVTO
308
+ // are RAP objects, so they legitimately appear in a RAP-stack batch).
309
+ // The generic activate() endpoint handles SDO (verified: activate(DESD) → ok).
310
+ // Gated like the SAPRead/SAPWrite branches so unsupported releases get the release message.
311
+ if (!(await ensureServerDrivenSupport(client.http, client.safety, type))) {
312
+ return errorResult(serverDrivenUnavailableMessage('SAPActivate', type));
313
+ }
276
314
  objectUrl = serverDrivenObjectUrl(type, name);
277
315
  }
278
316
  else {
@@ -283,7 +321,7 @@ export async function handleSAPActivate(client, args, cachingLayer, cacheSecurit
283
321
  // runtime version) and must honor the same package boundary as create/update/delete.
284
322
  // Fail-closed; no-op when allowedPackages is unrestricted. (security audit 2026-06)
285
323
  // SDO metadata only renders its packageRef under the blues Accept — thread it for SDO types.
286
- await enforceAllowedPackageForObjectUrl(client, objectUrl, `Activation of ${type} '${name}'`, isServerDrivenObjectType(type) ? serverDrivenBlueContentType(type) : undefined);
324
+ await enforceAllowedPackageForObjectUrl(client, objectUrl, `Activation of ${type} '${name}'`, isServerDrivenObjectType(type) ? serverDrivenMetadataContentType(type) : undefined);
287
325
  // Capture the inactive draft before activation flips it to active (see captureDraftForPromotion).
288
326
  const draft = cachingLayer && !perUserClient ? await captureDraftForPromotion(client, type, objectUrl) : undefined;
289
327
  const result = await activate(client.http, client.safety, objectUrl, { ...activateOpts, name });
@@ -1 +1 @@
1
- {"version":3,"file":"activate.js","sourceRoot":"","sources":["../../src/handlers/activate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"activate.js","sourceRoot":"","sources":["../../src/handlers/activate.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
  * SAPContext handler — object context: relatives, hierarchy, method listings, CDS upstream/
3
3
  * downstream dependency analysis.
4
4
  */
5
- import type { AdtClient } from '../adt/client.js';
5
+ import { type AdtClient } from '../adt/client.js';
6
6
  import type { CachingLayer } from '../cache/caching-layer.js';
7
7
  import { type CacheSecurityContext } from './cache-security.js';
8
8
  import { type ToolResult } from './shared.js';
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/handlers/context.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH,OAAO,KAAK,EAAE,SAAS,EAAoB,MAAM,kBAAkB,CAAC;AAMpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAI9D,OAAO,EAAE,KAAK,oBAAoB,EAAqC,MAAM,qBAAqB,CAAC;AAGnG,OAAO,EAAe,KAAK,UAAU,EAAc,MAAM,aAAa,CAAC;AAcvE,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,YAAY,EAAE,YAAY,GAAG,SAAS,EACtC,aAAa,EAAE,oBAAoB,GAClC,OAAO,CAAC,UAAU,CAAC,CA6XrB"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/handlers/context.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAUH,OAAO,EAAE,KAAK,SAAS,EAA6C,MAAM,kBAAkB,CAAC;AAM7F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAI9D,OAAO,EAAE,KAAK,oBAAoB,EAAqC,MAAM,qBAAqB,CAAC;AAGnG,OAAO,EAAe,KAAK,UAAU,EAAwB,MAAM,aAAa,CAAC;AAmDjF,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,YAAY,EAAE,YAAY,GAAG,SAAS,EACtC,aAAa,EAAE,oBAAoB,GAClC,OAAO,CAAC,UAAU,CAAC,CAyarB"}
@@ -3,6 +3,7 @@
3
3
  * downstream dependency analysis.
4
4
  */
5
5
  import { buildSiblingExtensionFinding, classifyCdsImpact, deriveSiblingStem, isSiblingNameMatch, } from '../adt/cds-impact.js';
6
+ import { clampSearchResults } from '../adt/client.js';
6
7
  import { findWhereUsed } from '../adt/codeintel.js';
7
8
  import { decodeKtdText } from '../adt/ddic-xml.js';
8
9
  import { AdtApiError, isNotFoundError } from '../adt/errors.js';
@@ -12,12 +13,43 @@ import { extractCdsDependencies } from '../context/cds-deps.js';
12
13
  import { compressCdsContext, compressContext } from '../context/compressor.js';
13
14
  import { logger } from '../server/logger.js';
14
15
  import { contextCacheForDependencyPayloads } from './cache-security.js';
15
- import { cachedFeatures } from './feature-cache.js';
16
+ import { getCachedFeatures } from './feature-cache.js';
16
17
  import { normalizeObjectType, objectUrlForType } from './object-types.js';
17
- import { errorResult, textResult } from './shared.js';
18
+ import { errorResult, textResult, toolJson } from './shared.js';
19
+ import { lookupLiveUsages, resolveWhereUsedUri } from './where-used.js';
18
20
  // ─── SAPContext Handler ───────────────────────────────────────────────
19
21
  const DEFAULT_SIBLING_MAX_CANDIDATES = 4;
20
22
  const HARD_MAX_SIBLING_MAX_CANDIDATES = 10;
23
+ /** Per-bucket cap for action="impact". Applied per bucket, not across the whole result, so a
24
+ * crowded `abapConsumers` cannot hide a single decisive `bdefs` entry. */
25
+ const DEFAULT_IMPACT_BUCKET = 50;
26
+ /** Bucket keys of CdsImpactDownstream (everything except `summary`). */
27
+ const IMPACT_BUCKETS = [
28
+ 'projectionViews',
29
+ 'bdefs',
30
+ 'serviceDefinitions',
31
+ 'serviceBindings',
32
+ 'accessControls',
33
+ 'metadataExtensions',
34
+ 'abapConsumers',
35
+ 'tables',
36
+ 'documentation',
37
+ 'other',
38
+ ];
39
+ /** Slice every downstream bucket to `limit`, reporting which were cut. `summary` is untouched: it
40
+ * is computed pre-slice and is what makes a capped answer honest about the real blast radius. */
41
+ function boundImpactBuckets(downstream, limit) {
42
+ const truncatedBuckets = [];
43
+ const boundedDownstream = { ...downstream };
44
+ for (const bucket of IMPACT_BUCKETS) {
45
+ const entries = downstream[bucket];
46
+ if (entries.length > limit) {
47
+ truncatedBuckets.push(`${bucket} (${entries.length})`);
48
+ boundedDownstream[bucket] = entries.slice(0, limit);
49
+ }
50
+ }
51
+ return { boundedDownstream, truncatedBuckets };
52
+ }
21
53
  function parseSiblingMaxCandidates(value) {
22
54
  const parsed = Number(value ?? DEFAULT_SIBLING_MAX_CANDIDATES);
23
55
  if (!Number.isFinite(parsed))
@@ -38,31 +70,57 @@ export async function handleSAPContext(client, args, cachingLayer, cacheSecurity
38
70
  const rawMaxDeps = Number(args.maxDeps ?? 20);
39
71
  const maxDeps = Number.isFinite(rawMaxDeps) && rawMaxDeps >= 1 ? Math.min(Math.floor(rawMaxDeps), 100) : 20;
40
72
  const depth = Math.min(Math.max(Number(args.depth ?? 1), 1), 3);
41
- // ─── Reverse dep lookup (pre-warmer only) ─────────────────────────
73
+ // ─── Live reverse dependency lookup ───────────────────────────────
42
74
  if (action === 'usages') {
43
75
  if (!name)
44
76
  return errorResult('"name" is required for usages action.');
45
- if (cacheSecurity.isPerUserClient) {
46
- return errorResult('SAPContext(action="usages") is disabled under principal propagation because it reads the shared warmup index. ' +
47
- `Use SAPNavigate(action="references", type="${type || 'CLAS'}", name="${name}") for a live SAP-authorized lookup.`);
48
- }
49
- if (!cachingLayer) {
50
- return errorResult('Reverse dependency lookup requires object caching. Cache is disabled (ARC1_CACHE=none). ' +
51
- 'Enable caching and run cache warmup to use this feature.');
52
- }
53
- const usages = cachingLayer.getUsages(name);
54
- if (usages === null) {
55
- return errorResult(`Reverse dependency lookup requires a pre-warmed cache. The cache warmup has not been run yet.\n\n` +
56
- `To enable this feature:\n` +
57
- `1. Start ARC-1 with --cache-warmup (or set ARC1_CACHE_WARMUP=true)\n` +
58
- `2. Wait for the warmup to complete (indexes all custom objects)\n` +
59
- `3. Then retry SAPContext(action="usages", name="${name}")\n\n` +
60
- `Alternative: Use SAPNavigate(action="references", type="CLAS", name="${name}") for a live ADT lookup (slower, but works without warmup).`);
77
+ let resolvedUri;
78
+ let resolvedObject;
79
+ if (type) {
80
+ resolvedUri = await resolveWhereUsedUri(client, type, name);
81
+ if (!resolvedUri) {
82
+ return errorResult(`Cannot resolve function group for "${name}". Provide the function's group or use SAPSearch to resolve the object.`);
83
+ }
84
+ resolvedObject = { type, name: name.toUpperCase(), uri: resolvedUri };
61
85
  }
62
- if (usages.length === 0) {
63
- return textResult(`No objects found that depend on "${name}" in the cached index.`);
86
+ else {
87
+ const lookup = await client.lookupObjects([name], { maxResults: 20 });
88
+ const exactMatches = (lookup[0]?.matches ?? []).filter((match) => match.objectName.toUpperCase() === name.toUpperCase() && match.uri.length > 0);
89
+ const matches = [...new Map(exactMatches.map((match) => [match.uri, match])).values()];
90
+ if (matches.length === 0) {
91
+ return textResult(`No SAP repository object named "${name.toUpperCase()}" was found.`);
92
+ }
93
+ if (matches.length > 1) {
94
+ return errorResult(toolJson({
95
+ error: `Object name "${name.toUpperCase()}" is ambiguous. Retry with type.`,
96
+ candidates: matches.slice(0, 20).map((match) => ({
97
+ type: normalizeObjectType(match.objectType),
98
+ name: match.objectName,
99
+ uri: match.uri,
100
+ })),
101
+ }));
102
+ }
103
+ const match = matches[0];
104
+ resolvedUri = match.uri;
105
+ resolvedObject = { type: normalizeObjectType(match.objectType), name: match.objectName, uri: match.uri };
64
106
  }
65
- return textResult(JSON.stringify({ name, usageCount: usages.length, usages }, null, 2));
107
+ const usageMax = args.maxResults === undefined ? undefined : Number(args.maxResults);
108
+ const lookup = await lookupLiveUsages(client, resolvedUri, undefined, usageMax);
109
+ return textResult(toolJson({
110
+ name: name.toUpperCase(),
111
+ resolvedObject,
112
+ // usageCount is the TOTAL, not the page size — a truncated page must not under-report
113
+ // the blast radius of a change.
114
+ usageCount: lookup.total,
115
+ shown: lookup.results.length,
116
+ truncated: lookup.truncated,
117
+ ...(lookup.truncated
118
+ ? { hint: `Showing ${lookup.results.length} of ${lookup.total} usages. Raise maxResults (max 1000).` }
119
+ : {}),
120
+ usages: lookup.results,
121
+ source: 'live',
122
+ fallbackUsed: lookup.fallbackUsed,
123
+ }));
66
124
  }
67
125
  if (!type || !name) {
68
126
  return errorResult('Both "type" and "name" are required for SAPContext.');
@@ -219,28 +277,41 @@ export async function handleSAPContext(client, args, cachingLayer, cacheSecurity
219
277
  }
220
278
  }
221
279
  const upstreamCount = upstream.tables.length + upstream.views.length + upstream.associations.length + upstream.compositions.length;
280
+ // Bound each downstream bucket. A widely-consumed base view has a huge blast radius, and this
281
+ // path classifies the FULL where-used tree. `downstream.summary` is computed before slicing, so
282
+ // the reported total/direct/indirect stay honest — a truncated bucket must never shrink the
283
+ // blast radius a caller sees.
284
+ const impactLimit = clampSearchResults(args.maxResults, DEFAULT_IMPACT_BUCKET);
285
+ const { boundedDownstream, truncatedBuckets } = boundImpactBuckets(downstream, impactLimit);
222
286
  const response = {
223
287
  name,
224
288
  type: 'DDLS',
225
289
  upstream,
226
- downstream,
290
+ downstream: boundedDownstream,
227
291
  summary: {
228
292
  upstreamCount,
229
293
  downstreamTotal: downstream.summary.total,
230
294
  downstreamDirect: downstream.summary.direct,
231
295
  },
296
+ ...(truncatedBuckets.length > 0
297
+ ? {
298
+ truncatedBuckets,
299
+ hint: `Bucket(s) ${truncatedBuckets.join(', ')} were capped at ${impactLimit} entries each; ` +
300
+ `summary counts remain complete. Raise maxResults (max 1000) to see more.`,
301
+ }
302
+ : {}),
232
303
  ...(consistencyHints.length > 0 ? { consistencyHints } : {}),
233
304
  ...(siblingExtensionAnalysis ? { siblingExtensionAnalysis } : {}),
234
305
  ...(warnings.length > 0 ? { warnings } : {}),
235
306
  };
236
- return textResult(JSON.stringify(response, null, 2));
307
+ return textResult(toolJson(response));
237
308
  }
238
309
  if (action === 'structure') {
239
310
  if (type !== 'TABL') {
240
311
  return errorResult('SAPContext(action="structure") supports TABL only.');
241
312
  }
242
313
  const result = await buildStructureHierarchy(client, name);
243
- return textResult(JSON.stringify(result, null, 2));
314
+ return textResult(toolJson(result));
244
315
  }
245
316
  // Get source — either provided or fetched from SAP
246
317
  let source;
@@ -310,9 +381,8 @@ export async function handleSAPContext(client, args, cachingLayer, cacheSecurity
310
381
  }
311
382
  }
312
383
  // Use detected ABAP version from probe if available, otherwise Cloud (superset)
313
- const abaplintVersion = cachedFeatures?.abapRelease
314
- ? mapSapReleaseToAbaplintVersion(cachedFeatures.abapRelease)
315
- : undefined;
384
+ const probedAbapRelease = getCachedFeatures()?.abapRelease;
385
+ const abaplintVersion = probedAbapRelease ? mapSapReleaseToAbaplintVersion(probedAbapRelease) : undefined;
316
386
  const result = await compressContext(client, source, name, type, maxDeps, depth, abaplintVersion, dependencyPayloadCache);
317
387
  return textResult(prependKtd(result.output, name, ktdMarkdown));
318
388
  }