@cspeach/cli 1.1.39 → 1.1.41
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/dist/agent/loop.js +19 -2
- package/dist/agent/tool-dispatch.js +17 -0
- package/dist/sap/profile-features.js +42 -0
- package/dist/sap/profile-gate.js +105 -0
- package/dist/sap/system-info.js +16 -11
- package/dist/sap/system-profile.js +337 -0
- package/dist/session/resume.js +3 -0
- package/dist/tools/approval.js +12 -0
- package/dist/tools/rap/finish-check.js +1 -0
- package/dist/tools/rap/generate-objects.js +1 -0
- package/dist/tools/sap-read.js +6 -0
- package/dist/tools/sap-write.js +527 -1217
- package/dist/tools/text-elements/tools.js +2 -0
- package/dist/tools/verify.js +63 -14
- package/dist/tools/write-pipeline.js +437 -0
- package/package.json +2 -2
|
@@ -96,6 +96,7 @@ export async function rapFinishCheckHandler(args, ctx) {
|
|
|
96
96
|
}
|
|
97
97
|
registerTool({
|
|
98
98
|
name: 'rap_finish_check',
|
|
99
|
+
requires: 'rap.bdef',
|
|
99
100
|
description: 'Check the Finish items F1–F5 of a RAP app against its live sources (authorization, access control, '
|
|
100
101
|
+ 'read-only admin fields, labels, coded fields). Read-only. Run it after the Finish step and before the UI. '
|
|
101
102
|
+ 'A failed item lists what to fix; fix only those and run it again.',
|
|
@@ -294,6 +294,7 @@ export async function sapGenerateObjectsHandler(args, ctx, deps = {}) {
|
|
|
294
294
|
}
|
|
295
295
|
registerTool({
|
|
296
296
|
name: 'sap_generate_objects',
|
|
297
|
+
requires: 'generator.repository',
|
|
297
298
|
description: "Run SAP's RAP generator for a skeleton phase whose Plan block says sap-generator. Pass the decision path and "
|
|
298
299
|
+ 'sha256 from the plan block, and one approval_id per planned object in the same order (request_approval with '
|
|
299
300
|
+ 'op create for each). CSPeach validates, previews, generates, then checks every object is active and on the '
|
package/dist/tools/sap-read.js
CHANGED
|
@@ -22,6 +22,7 @@
|
|
|
22
22
|
* badiList(query, enhancementSpot?, maxResults?)
|
|
23
23
|
*/
|
|
24
24
|
import { registerTool } from './index.js';
|
|
25
|
+
import { byObjectTypeForRead } from '../sap/profile-gate.js';
|
|
25
26
|
import { normaliseSyntaxResult, checkSyntax } from './verify.js';
|
|
26
27
|
import { recordSyntaxCheck } from './syntax-state.js';
|
|
27
28
|
import { spillToolResult } from './result-spill.js';
|
|
@@ -71,6 +72,7 @@ export function formatSearchHits(hits) {
|
|
|
71
72
|
// -----------------------------------------------------------------------
|
|
72
73
|
registerTool({
|
|
73
74
|
name: 'sap_get_source',
|
|
75
|
+
requires: byObjectTypeForRead,
|
|
74
76
|
description: 'Read the source code of an ABAP object by name and type. '
|
|
75
77
|
+ 'Optional `version` selects active or inactive source explicitly; '
|
|
76
78
|
+ 'omitting it lets SAP choose (usually active). When the object has '
|
|
@@ -174,6 +176,7 @@ registerTool({
|
|
|
174
176
|
// -----------------------------------------------------------------------
|
|
175
177
|
registerTool({
|
|
176
178
|
name: 'sap_object_structure',
|
|
179
|
+
requires: byObjectTypeForRead,
|
|
177
180
|
description: 'Retrieve metadata and structural information for an ABAP repository object (package, description, lock state, etc.).',
|
|
178
181
|
isMutating: false,
|
|
179
182
|
requiresSap: true,
|
|
@@ -281,6 +284,7 @@ export function arsColumnErrorHint(query, err) {
|
|
|
281
284
|
}
|
|
282
285
|
registerTool({
|
|
283
286
|
name: 'sap_sql_query',
|
|
287
|
+
requires: 'datapreview.freestyle',
|
|
284
288
|
description: 'Execute a read-only SQL SELECT against the SAP database via ADT Data Preview. Security-sensitive tables are blocked automatically. '
|
|
285
289
|
+ 'Dialect limits (violations return an opaque "SAP HTTP 400: sqlQuery"): no IN-lists and at most one LIKE per WHERE clause '
|
|
286
290
|
+ '(multi-OR LIKE chains are rejected) — use a single LIKE or split into separate queries. '
|
|
@@ -376,6 +380,7 @@ registerTool({
|
|
|
376
380
|
// -----------------------------------------------------------------------
|
|
377
381
|
registerTool({
|
|
378
382
|
name: 'sap_atc_run',
|
|
383
|
+
requires: 'atc.worklists',
|
|
379
384
|
description: 'Run ABAP Test Cockpit (ATC) checks on a specific object and return all findings.',
|
|
380
385
|
isMutating: false,
|
|
381
386
|
requiresSap: true,
|
|
@@ -652,6 +657,7 @@ registerTool({
|
|
|
652
657
|
// -----------------------------------------------------------------------
|
|
653
658
|
registerTool({
|
|
654
659
|
name: 'sap_run_unit_test',
|
|
660
|
+
requires: 'unit.testruns',
|
|
655
661
|
description: 'Execute ABAP Unit tests for an object and return a structured pass/fail report with method-level results.',
|
|
656
662
|
isMutating: false,
|
|
657
663
|
requiresSap: true,
|