arc-1 1.0.2 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (166) hide show
  1. package/bin/arc1-cli.js +3 -7
  2. package/bin/arc1.js +4 -9
  3. package/dist/adt/abapgit.d.ts +10 -5
  4. package/dist/adt/abapgit.d.ts.map +1 -1
  5. package/dist/adt/abapgit.js +357 -76
  6. package/dist/adt/abapgit.js.map +1 -1
  7. package/dist/adt/atc.d.ts +49 -0
  8. package/dist/adt/atc.d.ts.map +1 -0
  9. package/dist/adt/atc.js +294 -0
  10. package/dist/adt/atc.js.map +1 -0
  11. package/dist/adt/aunit-package.d.ts +22 -0
  12. package/dist/adt/aunit-package.d.ts.map +1 -0
  13. package/dist/adt/aunit-package.js +78 -0
  14. package/dist/adt/aunit-package.js.map +1 -0
  15. package/dist/adt/aunit.d.ts +143 -0
  16. package/dist/adt/aunit.d.ts.map +1 -0
  17. package/dist/adt/aunit.js +987 -0
  18. package/dist/adt/aunit.js.map +1 -0
  19. package/dist/adt/client.d.ts +9 -7
  20. package/dist/adt/client.d.ts.map +1 -1
  21. package/dist/adt/client.js +55 -64
  22. package/dist/adt/client.js.map +1 -1
  23. package/dist/adt/config.d.ts +2 -0
  24. package/dist/adt/config.d.ts.map +1 -1
  25. package/dist/adt/config.js +1 -0
  26. package/dist/adt/config.js.map +1 -1
  27. package/dist/adt/devtools.d.ts +8 -30
  28. package/dist/adt/devtools.d.ts.map +1 -1
  29. package/dist/adt/devtools.js +41 -218
  30. package/dist/adt/devtools.js.map +1 -1
  31. package/dist/adt/diagnostics.d.ts +1 -1
  32. package/dist/adt/diagnostics.d.ts.map +1 -1
  33. package/dist/adt/diagnostics.js +12 -12
  34. package/dist/adt/diagnostics.js.map +1 -1
  35. package/dist/adt/errors.d.ts +7 -0
  36. package/dist/adt/errors.d.ts.map +1 -1
  37. package/dist/adt/errors.js +7 -0
  38. package/dist/adt/errors.js.map +1 -1
  39. package/dist/adt/features.d.ts +9 -3
  40. package/dist/adt/features.d.ts.map +1 -1
  41. package/dist/adt/features.js +40 -8
  42. package/dist/adt/features.js.map +1 -1
  43. package/dist/adt/gcts.d.ts +12 -45
  44. package/dist/adt/gcts.d.ts.map +1 -1
  45. package/dist/adt/gcts.js +299 -171
  46. package/dist/adt/gcts.js.map +1 -1
  47. package/dist/adt/http-deadline.d.ts +23 -0
  48. package/dist/adt/http-deadline.d.ts.map +1 -0
  49. package/dist/adt/http-deadline.js +106 -0
  50. package/dist/adt/http-deadline.js.map +1 -0
  51. package/dist/adt/http-wire-body.d.ts +2 -0
  52. package/dist/adt/http-wire-body.d.ts.map +1 -0
  53. package/dist/adt/http-wire-body.js +14 -0
  54. package/dist/adt/http-wire-body.js.map +1 -0
  55. package/dist/adt/http.d.ts +10 -24
  56. package/dist/adt/http.d.ts.map +1 -1
  57. package/dist/adt/http.js +89 -53
  58. package/dist/adt/http.js.map +1 -1
  59. package/dist/adt/path-safety.d.ts +16 -0
  60. package/dist/adt/path-safety.d.ts.map +1 -0
  61. package/dist/adt/path-safety.js +101 -0
  62. package/dist/adt/path-safety.js.map +1 -0
  63. package/dist/adt/semaphore.d.ts +2 -2
  64. package/dist/adt/semaphore.d.ts.map +1 -1
  65. package/dist/adt/semaphore.js +26 -9
  66. package/dist/adt/semaphore.js.map +1 -1
  67. package/dist/adt/source-diff.d.ts +10 -1
  68. package/dist/adt/source-diff.d.ts.map +1 -1
  69. package/dist/adt/source-diff.js +33 -7
  70. package/dist/adt/source-diff.js.map +1 -1
  71. package/dist/adt/text-search.d.ts +25 -0
  72. package/dist/adt/text-search.d.ts.map +1 -0
  73. package/dist/adt/text-search.js +152 -0
  74. package/dist/adt/text-search.js.map +1 -0
  75. package/dist/adt/transport-diff.d.ts +128 -0
  76. package/dist/adt/transport-diff.d.ts.map +1 -0
  77. package/dist/adt/transport-diff.js +524 -0
  78. package/dist/adt/transport-diff.js.map +1 -0
  79. package/dist/adt/transport.d.ts +78 -13
  80. package/dist/adt/transport.d.ts.map +1 -1
  81. package/dist/adt/transport.js +443 -41
  82. package/dist/adt/transport.js.map +1 -1
  83. package/dist/adt/types.d.ts +23 -12
  84. package/dist/adt/types.d.ts.map +1 -1
  85. package/dist/adt/xml-parser.d.ts +1 -8
  86. package/dist/adt/xml-parser.d.ts.map +1 -1
  87. package/dist/adt/xml-parser.js +54 -60
  88. package/dist/adt/xml-parser.js.map +1 -1
  89. package/dist/authz/policy.d.ts.map +1 -1
  90. package/dist/authz/policy.js +5 -2
  91. package/dist/authz/policy.js.map +1 -1
  92. package/dist/cli-args.d.ts +2 -2
  93. package/dist/cli-args.js +2 -2
  94. package/dist/cli-checks.d.ts +56 -0
  95. package/dist/cli-checks.d.ts.map +1 -0
  96. package/dist/cli-checks.js +368 -0
  97. package/dist/cli-checks.js.map +1 -0
  98. package/dist/cli.d.ts +68 -15
  99. package/dist/cli.d.ts.map +1 -1
  100. package/dist/cli.js +677 -297
  101. package/dist/cli.js.map +1 -1
  102. package/dist/handlers/cds-hints.d.ts.map +1 -1
  103. package/dist/handlers/cds-hints.js +1 -10
  104. package/dist/handlers/cds-hints.js.map +1 -1
  105. package/dist/handlers/diagnose.d.ts +4 -0
  106. package/dist/handlers/diagnose.d.ts.map +1 -1
  107. package/dist/handlers/diagnose.js +616 -9
  108. package/dist/handlers/diagnose.js.map +1 -1
  109. package/dist/handlers/dispatch.d.ts.map +1 -1
  110. package/dist/handlers/dispatch.js +40 -1
  111. package/dist/handlers/dispatch.js.map +1 -1
  112. package/dist/handlers/git.d.ts.map +1 -1
  113. package/dist/handlers/git.js +165 -84
  114. package/dist/handlers/git.js.map +1 -1
  115. package/dist/handlers/read.d.ts.map +1 -1
  116. package/dist/handlers/read.js +15 -0
  117. package/dist/handlers/read.js.map +1 -1
  118. package/dist/handlers/schemas.d.ts +15 -2
  119. package/dist/handlers/schemas.d.ts.map +1 -1
  120. package/dist/handlers/schemas.js +75 -6
  121. package/dist/handlers/schemas.js.map +1 -1
  122. package/dist/handlers/search.js +1 -1
  123. package/dist/handlers/search.js.map +1 -1
  124. package/dist/handlers/tools.d.ts.map +1 -1
  125. package/dist/handlers/tools.js +51 -42
  126. package/dist/handlers/tools.js.map +1 -1
  127. package/dist/handlers/transport.d.ts +2 -1
  128. package/dist/handlers/transport.d.ts.map +1 -1
  129. package/dist/handlers/transport.js +128 -27
  130. package/dist/handlers/transport.js.map +1 -1
  131. package/dist/handlers/write/create.d.ts.map +1 -1
  132. package/dist/handlers/write/create.js +11 -0
  133. package/dist/handlers/write/create.js.map +1 -1
  134. package/dist/handlers/write/update-delete.d.ts.map +1 -1
  135. package/dist/handlers/write/update-delete.js +33 -10
  136. package/dist/handlers/write/update-delete.js.map +1 -1
  137. package/dist/handlers/write-helpers.d.ts.map +1 -1
  138. package/dist/handlers/write-helpers.js +3 -2
  139. package/dist/handlers/write-helpers.js.map +1 -1
  140. package/dist/server/audit.d.ts +1 -1
  141. package/dist/server/audit.d.ts.map +1 -1
  142. package/dist/server/audit.js +228 -21
  143. package/dist/server/audit.js.map +1 -1
  144. package/dist/server/config.d.ts +16 -0
  145. package/dist/server/config.d.ts.map +1 -1
  146. package/dist/server/config.js +145 -17
  147. package/dist/server/config.js.map +1 -1
  148. package/dist/server/effective-policy-log.d.ts +2 -1
  149. package/dist/server/effective-policy-log.d.ts.map +1 -1
  150. package/dist/server/effective-policy-log.js +8 -2
  151. package/dist/server/effective-policy-log.js.map +1 -1
  152. package/dist/server/multi-target-runtime.d.ts.map +1 -1
  153. package/dist/server/multi-target-runtime.js +3 -0
  154. package/dist/server/multi-target-runtime.js.map +1 -1
  155. package/dist/server/multi-target-tools.d.ts.map +1 -1
  156. package/dist/server/multi-target-tools.js +5 -0
  157. package/dist/server/multi-target-tools.js.map +1 -1
  158. package/dist/server/server.d.ts +15 -13
  159. package/dist/server/server.d.ts.map +1 -1
  160. package/dist/server/server.js +36 -26
  161. package/dist/server/server.js.map +1 -1
  162. package/dist/server/types.d.ts +2 -0
  163. package/dist/server/types.d.ts.map +1 -1
  164. package/dist/server/types.js +1 -0
  165. package/dist/server/types.js.map +1 -1
  166. package/package.json +13 -13
@@ -0,0 +1,368 @@
1
+ /** Pure CI result evaluation and report formatting for direct CLI commands. */
2
+ import { escapeXmlAttr } from './adt/xml-parser.js';
3
+ function severityRank(severity) {
4
+ if (severity === 'error')
5
+ return 0;
6
+ if (severity === 'warning')
7
+ return 1;
8
+ return 2;
9
+ }
10
+ function isRecord(value) {
11
+ return value !== null && typeof value === 'object' && !Array.isArray(value);
12
+ }
13
+ function isNonNegativeInteger(value) {
14
+ return Number.isSafeInteger(value) && value >= 0;
15
+ }
16
+ function isNonEmptyString(value) {
17
+ return typeof value === 'string' && value.trim().length > 0;
18
+ }
19
+ function hasSoundCoverageMetric(metric) {
20
+ if (!isRecord(metric))
21
+ return false;
22
+ const { executed, total, percent } = metric;
23
+ if (!isNonNegativeInteger(executed) || !isNonNegativeInteger(total) || executed > total)
24
+ return false;
25
+ if (typeof percent !== 'number' || !Number.isFinite(percent) || percent < 0 || percent > 100)
26
+ return false;
27
+ if (total === 0)
28
+ return percent === 0;
29
+ return Math.abs(percent - (executed / total) * 100) < 0.01;
30
+ }
31
+ function metricGate(metric, minimum) {
32
+ if (minimum === undefined)
33
+ return 0;
34
+ if (!hasSoundCoverageMetric(metric) || metric.total <= 0)
35
+ return 3;
36
+ return metric.percent < minimum ? 1 : 0;
37
+ }
38
+ function hasSoundAunitSourceSelectionEvidence(result) {
39
+ const evidence = result.sourceSelectionEvidence;
40
+ if (evidence === undefined)
41
+ return result.outcome === 'failed' || result.outcome === 'incomplete';
42
+ if (!isRecord(evidence) || !['verified', 'unavailable'].includes(String(evidence.status)))
43
+ return false;
44
+ if (!Array.isArray(evidence.declaredTestClasses) ||
45
+ !Array.isArray(evidence.omittedTestClasses) ||
46
+ !Array.isArray(evidence.omittedNonHarmlessTestClasses)) {
47
+ return false;
48
+ }
49
+ const isTestClass = (value) => isRecord(value) &&
50
+ (value.program === undefined || isNonEmptyString(value.program)) &&
51
+ isNonEmptyString(value.testClass) &&
52
+ ['harmless', 'dangerous', 'critical'].includes(String(value.riskLevel)) &&
53
+ typeof value.explicitRiskLevel === 'boolean';
54
+ if (!evidence.declaredTestClasses.every(isTestClass) ||
55
+ !evidence.omittedTestClasses.every(isTestClass) ||
56
+ !evidence.omittedNonHarmlessTestClasses.every(isTestClass)) {
57
+ return false;
58
+ }
59
+ const declared = new Map();
60
+ let declaredNonHarmless = false;
61
+ for (const testClass of evidence.declaredTestClasses) {
62
+ const row = testClass;
63
+ const key = `${row.program === undefined ? '' : String(row.program).toUpperCase()}\u0000${String(row.testClass).toUpperCase()}`;
64
+ if (declared.has(key))
65
+ return false;
66
+ declared.set(key, `${row.riskLevel}:${row.explicitRiskLevel}`);
67
+ if (row.riskLevel !== 'harmless')
68
+ declaredNonHarmless = true;
69
+ }
70
+ const omitted = new Set();
71
+ for (const testClass of evidence.omittedTestClasses) {
72
+ const row = testClass;
73
+ const key = `${row.program === undefined ? '' : String(row.program).toUpperCase()}\u0000${String(row.testClass).toUpperCase()}`;
74
+ if (omitted.has(key))
75
+ return false;
76
+ omitted.add(key);
77
+ if (declared.get(key) !== `${row.riskLevel}:${row.explicitRiskLevel}`)
78
+ return false;
79
+ }
80
+ const omittedNonHarmless = new Set();
81
+ for (const testClass of evidence.omittedNonHarmlessTestClasses) {
82
+ const row = testClass;
83
+ const key = `${row.program === undefined ? '' : String(row.program).toUpperCase()}\u0000${String(row.testClass).toUpperCase()}`;
84
+ if (omittedNonHarmless.has(key) || row.riskLevel === 'harmless' || !omitted.has(key))
85
+ return false;
86
+ omittedNonHarmless.add(key);
87
+ if (declared.get(key) !== `${row.riskLevel}:${row.explicitRiskLevel}`)
88
+ return false;
89
+ }
90
+ for (const key of omitted) {
91
+ // The omitted sets must be exact: every omitted declaration agrees with the
92
+ // source audit, and omittedNonHarmless is precisely its non-harmless subset.
93
+ const isNonHarmless = !(declared.get(key) ?? '').startsWith('harmless:');
94
+ if (isNonHarmless !== omittedNonHarmless.has(key))
95
+ return false;
96
+ }
97
+ if (evidence.status === 'unavailable' && !isNonEmptyString(evidence.reason))
98
+ return false;
99
+ if (evidence.status === 'verified' && evidence.reason !== undefined)
100
+ return false;
101
+ if (result.outcome === 'passed' || result.outcome === 'no_tests') {
102
+ return (evidence.status === 'verified' &&
103
+ omitted.size === 0 &&
104
+ !declaredNonHarmless &&
105
+ (result.outcome !== 'no_tests' || declared.size === 0));
106
+ }
107
+ return true;
108
+ }
109
+ function hasSoundAunitSummary(result) {
110
+ if (!isRecord(result) || !['passed', 'failed', 'no_tests', 'incomplete'].includes(String(result.outcome))) {
111
+ return false;
112
+ }
113
+ if (!isRecord(result.summary))
114
+ return false;
115
+ const summary = result.summary;
116
+ const counts = [summary.tests, summary.passed, summary.failures, summary.errors, summary.skipped, summary.warnings];
117
+ if (counts.some((count) => !isNonNegativeInteger(count)))
118
+ return false;
119
+ const tests = summary.tests;
120
+ const passed = summary.passed;
121
+ const failures = summary.failures;
122
+ const errors = summary.errors;
123
+ const skipped = summary.skipped;
124
+ // Class/setup errors are not method test cases, so `errors` may exceed the number of
125
+ // unclassified methods. It must, however, account for every method not represented by
126
+ // passed/failure/skipped and those three method counters can never exceed the test count.
127
+ const classifiedMethods = passed + failures + skipped;
128
+ if (classifiedMethods > tests || errors < tests - classifiedMethods)
129
+ return false;
130
+ if (!hasSoundAunitSourceSelectionEvidence(result))
131
+ return false;
132
+ if (result.outcome === 'passed') {
133
+ return tests > 0 && failures === 0 && errors === 0 && skipped < tests;
134
+ }
135
+ if (result.outcome === 'no_tests')
136
+ return tests === 0 && passed === 0 && failures === 0 && errors === 0 && skipped === 0;
137
+ return true;
138
+ }
139
+ /** Domain-aware ABAP Unit exit policy. Incomplete evidence never becomes green. */
140
+ export function evaluateAunit(result, policy = {}) {
141
+ if (!hasSoundAunitSummary(result))
142
+ return 3;
143
+ if (result.outcome === 'failed')
144
+ return 1;
145
+ if (result.outcome === 'incomplete')
146
+ return 3;
147
+ if (result.outcome === 'no_tests' && !policy.allowEmpty)
148
+ return 3;
149
+ if (policy.failOnSkipped && result.summary.skipped > 0)
150
+ return 1;
151
+ if (policy.requireCoverage) {
152
+ const metrics = [result.coverage?.statement, result.coverage?.branch, result.coverage?.procedure];
153
+ if (result.coverageEvidence !== 'available' ||
154
+ metrics.some((metric) => !hasSoundCoverageMetric(metric) || metric.total <= 0)) {
155
+ return 3;
156
+ }
157
+ }
158
+ const gates = policy.coverage ?? {};
159
+ const gateResults = [
160
+ metricGate(result.coverage?.statement, gates.statement),
161
+ metricGate(result.coverage?.branch, gates.branch),
162
+ metricGate(result.coverage?.procedure, gates.procedure),
163
+ ];
164
+ if (gateResults.includes(3))
165
+ return 3;
166
+ if (gateResults.includes(1))
167
+ return 1;
168
+ return 0;
169
+ }
170
+ /** Fail when an ATC finding is at least as severe as the numeric priority threshold. */
171
+ export function evaluateAtc(result, maxPriority) {
172
+ if (!isRecord(result))
173
+ return 3;
174
+ const findings = result.findings;
175
+ const findingsAreSound = Array.isArray(findings) &&
176
+ findings.every((finding) => isRecord(finding) &&
177
+ Number.isSafeInteger(finding.priority) &&
178
+ finding.priority > 0 &&
179
+ typeof finding.checkTitle === 'string' &&
180
+ typeof finding.messageTitle === 'string' &&
181
+ typeof finding.uri === 'string' &&
182
+ isNonNegativeInteger(finding.line) &&
183
+ (finding.quickfixInfo === undefined || typeof finding.quickfixInfo === 'string') &&
184
+ (finding.hasQuickfix === undefined || typeof finding.hasQuickfix === 'boolean'));
185
+ const worklist = result.worklist;
186
+ const worklistIsSound = isRecord(worklist) &&
187
+ isNonEmptyString(worklist.id) &&
188
+ worklist.id === result.worklistId &&
189
+ ['timestamp', 'usedObjectSet', 'status'].every((field) => worklist[field] === undefined || typeof worklist[field] === 'string');
190
+ if (result.complete !== true ||
191
+ result.truncated !== false ||
192
+ result.objectSetIsComplete !== true ||
193
+ !(result.variant === null || typeof result.variant === 'string') ||
194
+ !isNonNegativeInteger(result.processedObjectCount) ||
195
+ result.processedObjectCount === 0 ||
196
+ !isNonNegativeInteger(result.findingCount) ||
197
+ !findingsAreSound ||
198
+ result.findingCount !== findings.length ||
199
+ !isNonNegativeInteger(result.expectedFindingCount) ||
200
+ result.findingCount !== result.expectedFindingCount ||
201
+ !isNonNegativeInteger(result.maximumVerdicts) ||
202
+ result.maximumVerdicts === 0 ||
203
+ !isNonEmptyString(result.worklistId) ||
204
+ !isNonNegativeInteger(result.runStatusCode) ||
205
+ result.runStatusCode < 200 ||
206
+ result.runStatusCode >= 300 ||
207
+ !Array.isArray(result.incompleteReasons) ||
208
+ result.incompleteReasons.length !== 0 ||
209
+ !worklistIsSound ||
210
+ !Array.isArray(result.infos) ||
211
+ !result.infos.every((info) => typeof info === 'string')) {
212
+ return 3;
213
+ }
214
+ if (!Number.isSafeInteger(maxPriority) || maxPriority < 1 || maxPriority > 3)
215
+ return 3;
216
+ return findings.some((finding) => finding.priority <= maxPriority) ? 1 : 0;
217
+ }
218
+ function isSoundLintIssue(issue) {
219
+ if (!isRecord(issue))
220
+ return false;
221
+ if (!isNonEmptyString(issue.rule) || typeof issue.message !== 'string')
222
+ return false;
223
+ if (!['error', 'warning', 'info'].includes(String(issue.severity)))
224
+ return false;
225
+ const { line, column, endLine, endColumn } = issue;
226
+ if (![line, column, endLine, endColumn].every((coordinate) => isNonNegativeInteger(coordinate)))
227
+ return false;
228
+ if (line < 1 || column < 1 || endLine < line)
229
+ return false;
230
+ return endLine !== line || endColumn >= column;
231
+ }
232
+ export function evaluateLint(issues, threshold) {
233
+ if (!Array.isArray(issues) ||
234
+ !['error', 'warning', 'info', 'none'].includes(String(threshold)) ||
235
+ !issues.every(isSoundLintIssue)) {
236
+ return 3;
237
+ }
238
+ if (threshold === 'none')
239
+ return 0;
240
+ const thresholdRank = severityRank(threshold);
241
+ return issues.some((issue) => severityRank(issue.severity) <= thresholdRank) ? 1 : 0;
242
+ }
243
+ export function evaluateDiff(result, check) {
244
+ if (!isRecord(result) ||
245
+ !isNonEmptyString(result.type) ||
246
+ !isNonEmptyString(result.name) ||
247
+ !isNonEmptyString(result.from) ||
248
+ !isNonEmptyString(result.to) ||
249
+ !isNonEmptyString(result.fromLabel) ||
250
+ !isNonEmptyString(result.toLabel) ||
251
+ typeof result.identical !== 'boolean' ||
252
+ typeof result.hasDifferences !== 'boolean' ||
253
+ result.identical === result.hasDifferences ||
254
+ !isNonNegativeInteger(result.added) ||
255
+ !isNonNegativeInteger(result.removed) ||
256
+ typeof result.diff !== 'string' ||
257
+ (result.identical && (result.added !== 0 || result.removed !== 0 || result.diff.length !== 0)) ||
258
+ (result.hasDifferences && (result.added + result.removed === 0 || result.diff.length === 0))) {
259
+ return 3;
260
+ }
261
+ return check && result.hasDifferences ? 1 : 0;
262
+ }
263
+ function coverageLine(name, metric) {
264
+ if (!metric)
265
+ return `${name}: unavailable`;
266
+ if (metric.total <= 0)
267
+ return `${name}: non-measurable (0 total)`;
268
+ return `${name}: ${metric.percent.toFixed(2)}% (${metric.executed}/${metric.total})`;
269
+ }
270
+ export function formatAunitText(result) {
271
+ const lines = [
272
+ `ABAP Unit: ${result.outcome}`,
273
+ `Tests: ${result.summary.tests}, passed: ${result.summary.passed}, failures: ${result.summary.failures}, errors: ${result.summary.errors}, skipped: ${result.summary.skipped}, warnings: ${result.summary.warnings}`,
274
+ ];
275
+ if (result.coverage || result.coverageEvidence === 'unavailable') {
276
+ lines.push(coverageLine('Statement coverage', result.coverage?.statement), coverageLine('Branch coverage', result.coverage?.branch), coverageLine('Procedure coverage', result.coverage?.procedure));
277
+ if (result.coverageUnavailableReason)
278
+ lines.push(`Coverage evidence: ${result.coverageUnavailableReason}`);
279
+ }
280
+ const sourceEvidence = result.sourceSelectionEvidence;
281
+ if (sourceEvidence) {
282
+ lines.push(`Source-selection audit: ${sourceEvidence.status}`);
283
+ if (sourceEvidence.omittedTestClasses.length > 0) {
284
+ lines.push(`Omitted executable classes: ${sourceEvidence.omittedTestClasses
285
+ .map((testClass) => `${testClass.testClass} (${testClass.riskLevel})`)
286
+ .join(', ')}`);
287
+ }
288
+ if (sourceEvidence.reason)
289
+ lines.push(`Source-selection evidence: ${sourceEvidence.reason}`);
290
+ }
291
+ return lines.join('\n');
292
+ }
293
+ function atcSeverity(priority) {
294
+ if (priority <= 1)
295
+ return 'error';
296
+ if (priority === 2)
297
+ return 'warning';
298
+ return 'info';
299
+ }
300
+ function sourcePath(uri, fallback) {
301
+ const path = uri.split('#', 1)[0]?.trim();
302
+ return path || fallback;
303
+ }
304
+ function checkstyleError(attributes) {
305
+ return `<error line="${Math.max(0, attributes.line)}" column="${Math.max(0, attributes.column ?? 0)}" severity="${escapeXmlAttr(attributes.severity)}" message="${escapeXmlAttr(attributes.message)}" source="${escapeXmlAttr(attributes.source)}"/>`;
306
+ }
307
+ function groupCheckstyle(rows, fileFor, errorFor) {
308
+ const groups = new Map();
309
+ for (const row of rows) {
310
+ const file = fileFor(row);
311
+ groups.set(file, [...(groups.get(file) ?? []), row]);
312
+ }
313
+ const files = [...groups.entries()]
314
+ .sort(([left], [right]) => left.localeCompare(right))
315
+ .map(([file, entries]) => `<file name="${escapeXmlAttr(file)}">${entries.map((entry) => errorFor(entry)).join('')}</file>`)
316
+ .join('');
317
+ return `<?xml version="1.0" encoding="UTF-8"?><checkstyle version="10.0">${files}</checkstyle>`;
318
+ }
319
+ /** Priority mapping: 1=error, 2=warning, 3+=info. */
320
+ export function atcToCheckstyle(result) {
321
+ return groupCheckstyle(result.findings, (finding) => sourcePath(finding.uri, `atc:${result.worklistId}`), (finding) => checkstyleError({
322
+ line: finding.line,
323
+ severity: atcSeverity(finding.priority),
324
+ message: finding.messageTitle,
325
+ source: finding.checkTitle || 'SAP.ATC',
326
+ }));
327
+ }
328
+ export function lintToCheckstyle(issues, filename) {
329
+ return groupCheckstyle(issues, () => filename, (issue) => checkstyleError({
330
+ line: issue.line,
331
+ column: issue.column,
332
+ severity: issue.severity,
333
+ message: issue.message,
334
+ source: `abaplint.${issue.rule}`,
335
+ }));
336
+ }
337
+ export function formatAtcText(result) {
338
+ const lines = [
339
+ `ATC worklist ${result.worklistId}: ${result.findingCount} finding(s), ${result.processedObjectCount} object(s), complete=${result.complete}`,
340
+ ];
341
+ for (const finding of result.findings) {
342
+ lines.push(`${finding.uri || '(no source)'}:${finding.line} [P${finding.priority}] ${finding.checkTitle}: ${finding.messageTitle}`);
343
+ }
344
+ lines.push(...result.incompleteReasons.map((reason) => `Incomplete: ${reason}`));
345
+ return lines.join('\n');
346
+ }
347
+ export function formatLintText(issues) {
348
+ if (issues.length === 0)
349
+ return 'No issues found.';
350
+ return issues
351
+ .map((issue) => `${issue.line}:${issue.column} [${issue.severity}] ${issue.rule}: ${issue.message}`)
352
+ .join('\n');
353
+ }
354
+ export function assertPercent(value, optionName) {
355
+ const parsed = Number(value);
356
+ if (!Number.isFinite(parsed) || parsed < 0 || parsed > 100) {
357
+ throw new Error(`${optionName} must be a number between 0 and 100.`);
358
+ }
359
+ return parsed;
360
+ }
361
+ export function assertAtcPriority(value) {
362
+ const parsed = Number(value);
363
+ if (!Number.isInteger(parsed) || parsed < 1 || parsed > 3) {
364
+ throw new Error('--max-priority must be an integer from 1 (error) to 3 (info).');
365
+ }
366
+ return parsed;
367
+ }
368
+ //# sourceMappingURL=cli-checks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-checks.js","sourceRoot":"","sources":["../src/cli-checks.ts"],"names":[],"mappings":"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"}
package/dist/cli.d.ts CHANGED
@@ -1,20 +1,73 @@
1
1
  /**
2
- * ARC-1 CLI — command-line interface for SAP ADT operations.
2
+ * ARC-1 command-line interface.
3
3
  *
4
- * Exposed via the `arc1-cli` bin (separate from `arc1`, which is the MCP server entry).
5
- *
6
- * Two layers:
7
- * - `arc1-cli serve` Start the MCP server (same as `arc1`).
8
- * - `arc1-cli call <tool> [...]` Call any of the 12 MCP tools directly.
9
- * - `arc1-cli tools [<tool>]` List tools / show a tool's JSON schema.
10
- * - Shortcuts: `read`, `source` (alias), `activate`, `syntax`, `sql`, `lint`,
11
- * `search`, `extract-cookies`, `version` — one-liners over `call` or helpers
12
- * for common operations.
13
- *
14
- * The `call` command bypasses the MCP transport but reuses the same dispatch
15
- * path (`handleToolCall` in src/handlers/dispatch.ts), so Zod validation,
16
- * safety gates (`SAP_READ_ONLY`, `SAP_ALLOWED_PACKAGES`, ...), and audit
17
- * logging all apply exactly as they do under `arc1 serve` stdio mode.
4
+ * Direct calls reuse the MCP dispatcher, validation, safety policy, audit
5
+ * pipeline, startup authentication check, and target-local feature evidence.
6
+ */
7
+ import { Command } from 'commander';
8
+ import { AdtClient } from './adt/client.js';
9
+ import type { AdtClientConfig } from './adt/config.js';
10
+ import type { CachingLayer } from './cache/caching-layer.js';
11
+ import { handleToolCall } from './handlers/dispatch.js';
12
+ import { type ToolResult } from './handlers/shared.js';
13
+ import { resolveConfig } from './server/config.js';
14
+ import { probeClientFeatures, runStartupAuthPreflightWithClient } from './server/server.js';
15
+ import type { ConfigSource, ServerConfig } from './server/types.js';
16
+ export type CliExitCode = 0 | 1 | 2 | 3;
17
+ type ResolvedConfig = ReturnType<typeof resolveConfig>;
18
+ export interface CliDependencies {
19
+ resolveConfiguration?: typeof resolveConfig;
20
+ createClient?: (config: Partial<AdtClientConfig>) => AdtClient;
21
+ createCache?: (config: ServerConfig) => Promise<CachingLayer | undefined>;
22
+ dispatchToolCall?: typeof handleToolCall;
23
+ probeFeatures?: typeof probeClientFeatures;
24
+ authPreflight?: typeof runStartupAuthPreflightWithClient;
25
+ startServer?: (config: ServerConfig, sources: Record<string, ConfigSource>) => Promise<unknown>;
26
+ flushLogger?: () => Promise<void>;
27
+ runCookieExtractor?: (args: string[]) => Promise<void>;
28
+ }
29
+ export interface CreateCliProgramOptions {
30
+ argv?: readonly string[];
31
+ dependencies?: CliDependencies;
32
+ /** Internal execution state. Supplying it is useful for focused tests. */
33
+ state?: CliExecutionState;
34
+ }
35
+ export interface CliExecutionState {
36
+ exitCode: CliExitCode;
37
+ /** Successful `serve` keeps logger sinks alive for the long-running process. */
38
+ longLivedServerStarted?: boolean;
39
+ }
40
+ interface DirectContext {
41
+ client: AdtClient;
42
+ cachingLayer?: CachingLayer;
43
+ }
44
+ export type CliToolCallOutcome = {
45
+ kind: 'tool';
46
+ result: ToolResult;
47
+ } | {
48
+ kind: 'usage';
49
+ message: string;
50
+ knownTools?: string[];
51
+ };
52
+ export interface CliRuntime {
53
+ state: CliExecutionState;
54
+ deps: Required<CliDependencies>;
55
+ getResolvedConfig: () => ResolvedConfig;
56
+ getDirectContext: () => Promise<DirectContext>;
57
+ loadConfiguredPlugins: (config: ServerConfig) => Promise<void>;
58
+ dispose: () => Promise<void>;
59
+ }
60
+ /** Build a fresh Commander program. Importing this module never parses argv or exits. */
61
+ export declare function createCliProgram(options?: CreateCliProgramOptions): Command;
62
+ /**
63
+ * Execute a configured direct tool call and return the unrendered MCP result.
64
+ * Dedicated CI commands reuse this to apply domain-specific exit/report policy
65
+ * while retaining the normal dispatcher, validation, safety, and audit path.
18
66
  */
67
+ export declare function executeCliToolCall(runtime: CliRuntime, toolName: string, args: Record<string, unknown>, options?: {
68
+ localOnly?: boolean;
69
+ }): Promise<CliToolCallOutcome>;
70
+ /** Parse one CLI invocation and return a deterministic process exit code. */
71
+ export declare function main(argv?: readonly string[], dependencies?: CliDependencies): Promise<number>;
19
72
  export {};
20
73
  //# sourceMappingURL=cli.d.ts.map
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}