PersonIndependent

Wouter Lemaire

GitHub@lemaiwolast push
Provides 5
Agent toolingCAPBTPAgent toolingcapabilityBuilding an agent into your own application — the tools it may call, the state it keeps between turns, and the framework it runs in. Distinct from MCP servers, which expose an application to somebody else's agent, and from agent guidance, which is knowledge handed to a coding agent.Importing and exporting table dataCAPABAPUI5Importing and exporting table datacapabilityGetting a file somebody supplies, a spreadsheet, a CSV or a JSON dump, into tables with its columns mapped and its values checked, and getting table content back out as a file. Data shipped with an application for development and demonstration is [seed data](capability:seed-data).LLM integrationCAPUI5BTPABAPLLM integrationcapabilityCalling a language model from application code with the tenant, destination and credential handling already solved instead using an SDK call with a hand-rolled key.Server-side renderingCAPUI5Server-side renderingcapabilityRendering a UI on the server before it reaches the browser — first paint without waiting for a client framework to boot, and markup a crawler can read.TypeScript patternsCAPTypeScript patternscapabilityHow an application is arranged once it is written in TypeScript — where handlers live, what registers them, and how business logic is kept apart from persistence. Distinct from typing, which is about the model being visible to the compiler; this is about the shape of the code around it.
Demonstrates 3
Agent toolingCAPBTPAgent toolingcapabilityBuilding an agent into your own application — the tools it may call, the state it keeps between turns, and the framework it runs in. Distinct from MCP servers, which expose an application to somebody else's agent, and from agent guidance, which is knowledge handed to a coding agent.Database connectorsCAPBTPABAPDatabase connectorscapabilityConnecting an application’s data model and queries to a database, including the differences in supported queries, types and schema management between database implementations. Changing an existing schema belongs to [schema evolution](capability:schema-evolution).LLM integrationCAPUI5BTPABAPLLM integrationcapabilityCalling a language model from application code with the tenant, destination and credential handling already solved instead using an SDK call with a hand-rolled key.
Contributes to 1
Integrated frontend dev serverCAPUI5Integrated frontend dev servercapabilityServing a frontend and its backend services together during development, so they can be reached through one local origin. Serving prebuilt files and integrating a frontend toolchain that assembles resources on demand are different requirements.

Entries12

Group by12 of 12 entries
EntrySignals
Maintains5
cap-agent-ui5-webuiv0.2.0
Functional boundary

UI5 web interface for an agent built in a CAP service

cds-plugin-handlersv1.0.3
none

One handler file per entity in CAP services

cds-spreadsheetimporter-pluginv1.1.0
none

Spreadsheet upload into a CDS entity, parsed on the server

ui5-cap-ai-featuresv1.0.2
Functional boundary

CDS plugin and UI5 controls for AI text features via SAP AI Core

ui5-cap-serverside-rendering-pluginv1.0.8
Functional boundary

CAP plugin rendering UI5 views with entity data on the server

Maintains: samples, sketches and references5
btp-agent
No license

LangGraph agent and UI5 chat screen over four BTP MCP servers

btpvulnerabilityreport
No license

CAP and Fiori app showing BTP Application Vulnerability Report data

cap-agent-ui5-webui-sample
No license

Worked example of the cap-agent-ui5-webui plugin

ui5-ai-features-demo
No license

Product-review screen consuming ui5-cap-ai-features on CAP

ui5-cap-serverside-rendering-demo
No license+1

Demo CAP bookshop with server-rendered UI5 views

Contributes to2
cds-plugin-ui5v0.17.4
Functional boundary

UI5 CLI middlewares running inside the CDS server

spreadsheetimporter/sample-full-btp
none

CAP Risks and Mitigations project with a Spreadsheet Upload button

Writing and topics11

11 of 11 pieces
Piece, what it offersStill applies
Building Code-Based AI Agents on the BAIP
YouTube — SAP Developers playlists, Wouter Lemaire
nothing recorded
UI5 AI Features library is now an npm Package
SAP Community, Wouter LemaireThe reasoningRunnable code
Version drift
Agentic AI on BTP: a Multi‑Agent App with Pydantic AI
SAP Community, Wouter Lemaire
nothing recorded
Agentic AI on BTP: a Single Agent with LangGraph
SAP Community, Wouter Lemaire
nothing recorded
BTP Audit Log MCP Server: Security Monitoring with AI Assistants
SAP Community, Wouter Lemaire
nothing recorded
UI for the BTP Application Vulnerability Report
SAP Community, Wouter Lemaire
nothing recorded
Consume ABAP RFC Function Modules in CAP
SAP Community, Wouter LemaireThe reasoningRunnable code
nothing recorded
CAP multitenancy with Work Zone
SAP Community, Wouter Lemaire
nothing recorded
Create your first CAP plugin
SAP Community, Wouter Lemaire
nothing recorded
Upload attachments in a Freestyle UI5 and CAP app
SAP Community, Wouter LemaireThe reasoning
nothing recorded
How to add OData v2 adapter proxy to your CAP project
SAP Community, Wouter LemaireThe reasoningRunnable code
Core changed

Details

History11
  • cap-agent-ui5-webuidescription.what_it_solves, description.when_not_to_use, provides.agent-tooling, requires → a paragraph, two situations it is not for, a sourced provides edge with two property values, and a required edge on @cap-js/agentsThe README has grown well past what the page carried, and the entry stated the capability with no source at all. Read on 2026-10-15: it serves a freestyle SAPUI5 TypeScript chat client same-origin from the CDS server against the services carrying @agent, renders a picker for more than one agent where switching starts a new conversation, speaks nothing but A2A as @cap-js/agents serves it, pins that package to exactly 0.9.1 and says to expect breakage on upgrade, and ships a scripted LLM because the bundled mock can never call an action and leaves an @agent.hitl gate unreachable. The dependency on @cap-js/agents is what the plugin is written against, so it is a required edge rather than a sentence.
  • cds-plugin-handlersprovides[typescript-patterns] → what_it_does and two facet valuesThe edge carried no sentence. It now says how the plugin decides where a handler goes, which is by folder and file name rather than by a decorator, and states the handler_binding and layers values of the capability's comparison, each on the README sentence it rests on. dependency_injection and draft_events are left unstated: the README mentions neither.
  • ui5-cap-ai-featuresprovides[llm-integration].facets, sources → model_access: SAP AI Core, and the README sentence that names the service the AIService is backed bycapability:llm-integration declared two comparison properties on 2026-10-15. The edge rested on the npm README's sentence about server-side prompts, which says where the prompts live and not which service the call goes to; the package README, read the same day, names SAP AI Core's Orchestration Service outright, which is what the property states. response_streaming is left absent: the README says nothing about streaming, and absent is not no.
  • ui5-cap-ai-featuresrequires[sap-ai-sdk-orchestration] → conditional, with the README's optional-peer sentence quotedThe edge read as an unconditional prerequisite while this entry's own when_not_to_use already said the package is an optional peer. The README states it in one sentence, quoted now: a frontend-only install does not need it and a backend project installs it explicitly, which is the distinction a reader deciding what to add to package.json needs. The edge to the HTML5 Application Repository is untouched; nothing was read for it in this pass.
  • ui5-cap-serverside-rendering-plugindescription.one_line → CAP plugin that fills UI5 views and fragments with entity data on the server through Handlebars, and renders a Vue app to HTML on a route of its own.The old line said the plugin renders UI5 applications. Its README and cds-plugin.js describe two narrower things: Handlebars substitution into a single view or fragment, served as an entity's media content, and a separate Vue route that renders HTML.
  • ui5-cap-serverside-rendering-plugindescription.what_it_solves → written from the README, index.cds and cds-plugin.js on main, read 2026-09-22The entry carried a one-line index entry and nothing answering what it does, so the page opened on readings. The paragraph states where the views live, which aspect and annotations switch the behaviour on, what the handler returns, and that the Vue path is separate.
  • ui5-cap-serverside-rendering-plugindescription.when_not_to_use → the XML-not-HTML boundary, the duplicated view, and the stated CAP 8 floorWithout it the page left the reader to assume that server-side rendering here produces a page. It produces a data-filled UI5 XML view on the UI5 path, and the peer dependency puts CAP 7 out of range.
  • ui5-cap-serverside-rendering-plugindescription.to_build_on_it → the Vue path's REVISIT markers and its one-app-per-server configurationThe author marks the Vue state handling as unfinished in the source, and vueConfig is a module-level object, so the shape of that half is worth stating for anyone reading it further.
  • ui5-cap-serverside-rendering-pluginprovides → the same edge in object form, with what_it_does and two sourcesA bare ref said the plugin answers the capability without saying how. The object form carries the contribution and the files it was read from.
  • cap-agent-ui5-webuidescription.one_line → Gives a CAP agent a UI5 web interface out of the box, so an agent built in the service has somewhere to be talked to without a separate frontend project.Placement copied the package's own npm description. Replaced with a line written for this graph — what it does and where it sits — because an unattributed sentence is an unattributed claim.
  • First entry seenDiscovered via GitHub API, GitHub API · lemaiwo, npm registry, The discovery pass, The discovery pass · npm, SAP Community.
For your agent