SampleSampletypeA worked example you read or clone. Evidence: it demonstrates, it never provides.See every one →What this type is →independently maintainedindependently maintainedoriginPublished by one person or a small company outside SAP. Says nothing about quality; the readings say that.See every one →

Supply Chain Rescue

A CAP and SAPUI5 demo of recovery from a supply disruption: the server calculates every proposal and an approver applies it, with a battery recall traced in an ABAP system through HANA Graph openCypher.

Disrupt a supplier or a plant in a fictional network of 40 nodes and the app says which motorcycle models are affected and why, then lets a planner pick standby suppliers or a qualified assembly move at another plant; the server calculates the proposal and keeps it pending, and nothing in the network changes until an approver approves it; a rejection or a cancellation leaves the network as it was. The manual flow needs no model, no LLM and no network access on the backend, and each AI part is a separate launch command on top of it: ten past-incident suggestions from one pinned local embedding model, shown as unverified and never changing the preview; a @cap-js/agents agent that proposes one of the listed routes and pauses for an approver; and a background draft that picks at most one comparable incident and sends one approval email. The recall half moves the authority to ABAP: graph queries in SAP HANA trace a defective cell lot through the battery genealogy in the A4H system, ABAP applies the approved remedies all or nothing, and CAP keeps the plan, the policy and the decisions in SQLite. What the repository will not claim is written down beside what it does: automatic relevance matching is deferred because its quality gates failed, a planner's incident mark records who judged what rather than that anyone read the incident, and the public profile is code that was never deployed.

Facts

Last push

Where it sits

Lives in
Serves
Requires
@sap/cds@sap/cdsartifactThe backend: the services, the OData V4 endpoints the app reads and the test suites run on the CAP Node.js runtime.SQLiteSQLiteoutside the atlasThe database: one file created and seeded before the first start, which keeps the plans and the decision history across restarts.@cap-js/notifications@cap-js/notificationsartifactThe one notification after an applied decision, in console mode in every profile.
Optional
@cap-js/agents@cap-js/agentsartifactThe optional agents: the recovery agent reads the current impact and proposes one of the listed routes, and pauses before anything changes.ABAP platformABAP platformoutside the atlasThe system the recall half runs in: the local package $ZRECALL_RESCUE holds its tables, classes, CDS views and RAP behaviour, and ABAP applies an approved plan there all or nothing.SAP HANASAP HANAartifactThe trace: HANA Graph follows the defective cell lot through the battery genealogy, in openCypher over ADBC.Claude APIClaude APIoutside the atlasThe model behind the optional agent, claude-sonnet-5, read from a key the launch command passes to the one server child.PostmarkPostmarkoutside the atlasSending the email that links one configured approver to a pending manual proposal, and the automatic approval email of the proactive path.

Who is behind it

Kamil KováčKamil KováčPersonMaintains this
In the atlas: maintains 1, contributes to 1
@Kamilkov
maintainer

Before choosing this

Signals

LicenceNo licenseNeither the package manifest nor the repository tree declares a licence

Without a licence the default is all rights reserved. Ask the maintainer, or check for terms stated elsewhere, before depending on it.

Conditions

PracticalFunctional boundary

The data is illustrative: availability is binary and backup capacity unlimited, and the model carries no inventory; nothing in it is forecast or priced. The recall half runs only against classic ABAP, because its openCypher trace goes through ADBC, which is not released for ABAP Cloud, and it expects an SSH tunnel to the A4H system it was built against. A plain npm start passes no model key, so the agent cannot be used on a server started that way.

What it declares

Every artifact

Type
Sample
Origin
Independently maintained
Runtime
Node.js

As a sample

Form
does not say

Connections11

Supply Chain Rescue connectionsSupply Chain RescueNEEDS→ connects to3connects to stated If: the Recall Rescue part is run Reading the genealogy trace out of A4H and applying the approved plan there, over an SSH tunnel to the system on localhost:50000. Kamilkov/supply-chain-rescue — README, Recall Rescue (A4H): https://github.com/kamilkov/supply-chain-rescue Kamilkov/supply-chain-rescue — README, Recall Rescue (A4H): https://github.com/kamilkov/supply-chain-rescueABAP platformifconnects to stated If: the server is started with the agent's key The agent's model calls; the README names this as the only part of the backend that reaches the network. Kamilkov/supply-chain-rescue — README: https://github.com/kamilkov/supply-chain-rescueClaude APIifconnects to stated If: a Postmark server token and the approval addresses are configured The approval-request email, which only links to the proposal; a send that may have arrived is never retried, because Postmark has no idempotency key. Kamilkov/supply-chain-rescue — README, Email approval request (Postmark): https://github.com/kamilkov/supply-chain-rescue Kamilkov/supply-chain-rescue — README, Email approval request (Postmark): https://github.com/kamilkov/supply-chain-rescuePostmarkif→ needs3needs stated The one notification after an applied decision, in console mode in every profile. Kamilkov/supply-chain-rescue — README, Local notification: https://github.com/kamilkov/supply-chain-rescue@cap-js/notificationsneeds stated The backend: the services, the OData V4 endpoints the app reads and the test suites run on the CAP Node.js runtime. Kamilkov/supply-chain-rescue — PRODUCT.md, Stack: https://raw.githubusercontent.com/Kamilkov/supply-chain-rescue/main/PRODUCT.md Kamilkov/supply-chain-rescue — PRODUCT.md, Stack: https://raw.githubusercontent.com/Kamilkov/supply-chain-rescue/main/PRODUCT.md@sap/cdsneeds stated The database: one file created and seeded before the first start, which keeps the plans and the decision history across restarts. Kamilkov/supply-chain-rescue — README: https://github.com/kamilkov/supply-chain-rescue Kamilkov/supply-chain-rescue — README, Recall Rescue (A4H): https://github.com/kamilkov/supply-chain-rescueSQLite→ optionally needs5optionally needs stated If: the optional recovery agent or the Recall Agent is used The optional agents: the recovery agent reads the current impact and proposes one of the listed routes, and pauses before anything changes. Kamilkov/supply-chain-rescue — README, Recovery agent (optional): https://github.com/kamilkov/supply-chain-rescue Kamilkov/supply-chain-rescue — README, Recovery agent (optional): https://github.com/kamilkov/supply-chain-rescue@cap-js/agentsifoptionally needs stated If: the Recall Rescue part is run The system the recall half runs in: the local package `$ZRECALL_RESCUE` holds its tables, classes, CDS views and RAP behaviour, and ABAP applies an approved plan there all or nothing. Kamilkov/supply-chain-rescue — README, Recall Rescue (A4H): https://github.com/kamilkov/supply-chain-rescue Kamilkov/supply-chain-rescue — README, Recall Rescue (A4H): https://github.com/kamilkov/supply-chain-rescueABAP platformifoptionally needs stated If: the optional agent is started with its key The model behind the optional agent, `claude-sonnet-5`, read from a key the launch command passes to the one server child. Kamilkov/supply-chain-rescue — README: https://github.com/kamilkov/supply-chain-rescue Kamilkov/supply-chain-rescue — README: https://github.com/kamilkov/supply-chain-rescueClaude APIifoptionally needs stated If: the email approval request is configured with a Postmark server token Sending the email that links one configured approver to a pending manual proposal, and the automatic approval email of the proactive path. Kamilkov/supply-chain-rescue — README, Email approval request (Postmark): https://github.com/kamilkov/supply-chain-rescue Kamilkov/supply-chain-rescue — README, Email approval request (Postmark): https://github.com/kamilkov/supply-chain-rescuePostmarkifoptionally needs stated If: the Recall Rescue part is run The trace: HANA Graph follows the defective cell lot through the battery genealogy, in openCypher over ADBC. Kamilkov/supply-chain-rescue — README, Recall Rescue (A4H): https://github.com/kamilkov/supply-chain-rescue Kamilkov/supply-chain-rescue — README, Recall Rescue (A4H): https://github.com/kamilkov/supply-chain-rescueSAP HANAif

README

quoted from Kamilkov/supply-chain-rescue, read
Kamilkov/supply-chain-rescue/README.mdOn GitHub

Supply Chain Rescue

Disrupt a supplier or plant in a fictional electric motorcycle supply chain, see which models are affected and why, choose standby backups, preview the recovery the server calculates, and approve, reject or cancel it. Decisions are kept. Historical incidents can be browsed with plain filters. Optionally, a planner can ask for unverified past-incident suggestions and mark the ones they judge relevant; the approver sees those marks. An optional recovery agent can propose one of the listed routes; it pauses for an approver, and nothing changes until that person approves. After an approval, a notification for the planning team is printed to the local server console only.

Built with SAP CAP (Node.js 24, SQLite) and SAPUI5 1.136 (Horizon). The manual flow needs no model, no LLM and no network access on the backend (verified by the no-model tests). The optional suggestions use one pinned local model, installed once (see below); the server never downloads it. The optional agent is the only part that calls an LLM over the network (Anthropic, claude-sonnet-5), and only when started with its key (see Recovery agent). The browser is different: SAPUI5 loads from the SAP CDN, so it needs internet access.

Two apps share one backend:

  • Presenter (app/rescue, srv/): the local demo described below.
  • Public demo (app/public, srv-public/, profile public): a visitor-isolated version with per-visitor runs, Turnstile admission and emailed approval links. It is not deployed anywhere; the code is kept as it was built.
excerpt, no licence read, read the rest, on GitHub

Details

Sources3
GitHub APIdiscovered herechecked
github.com/Kamilkov/supply-chain-rescuetree, pushes, contributors, CIchecked
README.mdquoted, and what the entry declareschecked

Sources are graph entities: the same page may back several entries, and an unreachable source flags every row that rests on it.

Compatibility and provenance
runtimesnode
discovered viaGitHub API
first seen in the atlas
ecosystem and domaincap, process-and-workflow
Flavors2
Node.js
“SAP CAP Node.js 10.1 on Node 24, with persistent SQLite.” — Kamilkov/supply-chain-rescue — PRODUCT.md, Stackchecked
ABAP / Standard ABAP
“openCypher runs through ADBC (native SQL, classic ABAP only): AMDP rejects it, and ADBC is not released for ABAP Cloud.” — Kamilkov/supply-chain-rescue — README, Recall Rescue (A4H)checked
History in the atlas1
  1. First seen.
For your agent
Ref
artifact:kamilkov-supply-chain-rescue
JSON
/artifacts/kamilkov-supply-chain-rescue.json
MCP
Connecting an agent