sap-ai-dev-toolkit 0.9.9917 → 0.9.9918

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/README.md CHANGED
@@ -247,6 +247,8 @@ CPI needs the roles `WorkspacePackagesRead`, `WorkspacePackagesEdit`, `Workspace
247
247
 
248
248
  `npm run test:live:integration` runs the end-to-end scenarios against a real tenant. It **creates and deploys** packages, iFlows, API providers, proxies, products, key value maps, user credentials, number ranges, and Partner Directory parameters suffixed with `RUN` (required, unique per run), so use a non-production subaccount. Scenarios that call iFlows over HTTP also need `CPI_RUNTIME_SERVICE_KEY`, a Process Integration Runtime `integration-flow` key with role `ESBMessaging.send`; the companion server itself never uses that key.
249
249
 
250
+ The live runner uses the same credential precedence as the server, including saved setup keys, explicit OAuth variables, and VCAP bindings; service-key environment variables are not required. The full suite needs both CPI and APIM. `ONLY` selects scenarios without enabling the others: for a CPI-only, read-only error-handling check, run `RUN=CHECK26 ONLY=S72 npm run test:live:integration`. This checks malformed and missing message-log lookups; it does not verify deployment or message execution. For read-only checks across every configured capability area, run `node src/integration-server.mjs --check` from a checkout with dependencies installed.
251
+
250
252
  ## 💡 Example requests
251
253
 
252
254
  Once the destination server is enabled in your chat's tools picker, ask for outcomes instead of manually orchestrating individual SAP operations:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sap-ai-dev-toolkit",
3
- "version": "0.9.9917",
3
+ "version": "0.9.9918",
4
4
  "description": "SAP AI development toolkit for BAS, ABAP, RAP, CAP, HANA Cloud, Fiori, UI5, and MCP",
5
5
  "author": "Gurkan Yilmaz",
6
6
  "type": "module",
@@ -9,6 +9,8 @@ import { Client } from '@modelcontextprotocol/sdk/client/index.js';
9
9
  import { InMemoryTransport } from '@modelcontextprotocol/sdk/inMemory.js';
10
10
  import { createIntegrationServer } from '../src/integration-server.mjs';
11
11
  import { INTEGRATION_TOOL_NAMES } from '../src/integration-tools.mjs';
12
+ import { resolveIntegrationConfig } from '../src/integration-config.mjs';
13
+ import { readStoredIntegrationKeys } from '../src/integration-credentials.mjs';
12
14
 
13
15
  const RUN = process.env.RUN;
14
16
  if (!RUN || !/^[A-Za-z0-9]{1,8}$/.test(RUN)) {
@@ -27,10 +29,8 @@ const PROXY = `ZAI_Smoke${RUN}`;
27
29
  const PROXY_URL = `ZAI_SmokeUrl${RUN}`;
28
30
  const PROXY_ODATA = `ZAI_SmokeOData${RUN}`;
29
31
  const PROXY_CPI = `ZAI_SmokeCpi${RUN}`;
30
- const SECRETS = [process.env.CPI_SERVICE_KEY, process.env.APIM_SERVICE_KEY].flatMap(raw => {
31
- const key = JSON.parse(raw);
32
- return [key.oauth?.clientsecret, key.clientSecret].filter(Boolean);
33
- });
32
+ const config = resolveIntegrationConfig(process.env, { stored: readStoredIntegrationKeys() });
33
+ const SECRETS = Object.values(config).filter(Boolean).map(side => side.clientSecret);
34
34
  const PRODUCT = `ZAI_SmokeProduct${RUN}`;
35
35
  const KVM = `ZAI_SmokeKvm${RUN}`;
36
36
  const CREDENTIAL = `ZAI_SMOKE_USER_${RUN}`;