{"ref":"artifact:sleibach-cap-companion","page":"/artifacts/sleibach-cap-companion","json":"/artifacts/sleibach-cap-companion.json","generated":"2026-10-26","drafted_with_ai":true,"entity":{"id":"sleibach-cap-companion","name":"cap-companion","artifact_type":"cds-plugin","ecosystem":"cap","serves_ecosystems":["ui5"],"domain":"ui-and-frontend-bridge","origin_ring":"independent","use_as":"dependency","description":{"one_line":"Serves a playback-only SAP Companion (Help4) workarea from a CAP service, so a Fiori application shows tours and in-app help without Enable Now Manager.","short":"Playback-only SAP Companion (Help4) workarea served from CAP","what_it_solves":"A CAP plugin that serves the SAP Companion help panel from the CAP server itself. Help documents and tours are written as YAML or JSON in a `companion/` folder, and the plugin compiles them into the `.catalogue` and `.context` responses Help4 asks for; item kinds map onto Help4 macros, with `document` and `hotspot` becoming `help_tile`, `video` and `link` becoming `link_tile` and `tourStep` becoming `guide_click`. Playback is all of it: the editor, writes, `/multifile` and a tracking backend are out of scope in v1. The Help4 runtime is not in the package either, so a licensed complete `sap.dfa.help` tree has to be supplied and is mounted under `/$companion/framework`. Those routes reach the plugin only where the application's own routing sends them there, which the README limits to a standalone [@sap/approuter](artifact:sap-approuter) or a local `cds watch`.","when_not_to_use":"Not behind a managed approuter: SAP Build Work Zone does not expose the `/$companion/**` routes, so Companion never reaches CAP, and the README names managed approuter and Work Zone as out of scope for v1. Not where help has to be authored in a browser, since the editor, the producer and writes are absent and content lives in files the plugin compiles.","to_build_on_it":"The v1 out-of-scope list marks what is left to do: an editor or producer, writes, `/multifile`, SAML Manager, Learning Center, a tracking backend and CDS persistence. It stands at 0.1.0, published on 25 August 2026, with a tested matrix of CAP 8 and 9, UI5 1.151.0 and Help4 4.0.28, and a Bookshop example under `test/bookshop` that demonstrates the full launchpad wiring."},"links":{"repo":"https://github.com/sleibach/cap-companion","npm":"https://www.npmjs.com/package/cap-companion"},"compat":{"runtimes":["node"]},"provides":[{"capability":"capability:in-app-guidance","what_it_does":"Serves a playback-only SAP Companion (Help4) workarea from a CAP service: help documents, hotspots, guided tours, What's New and video or link lightboxes, authored as YAML or JSON in a `companion/` folder and compiled into Help4's SEN `.catalogue` and `.context` responses.","sources":[{"url":"https://github.com/sleibach/cap-companion","title":"sleibach/cap-companion README","checked":"2026-10-18","quote":"Unofficial open-source CAP plugin that serves a **playback-only** SAP Companion (Help4) workarea for Fiori applications — guided tours, in-app help documents, hotspots, and video/link lightboxes — **without** SAP Enable Now Manager, WalkMe, or editor APIs."},{"url":"https://github.com/sleibach/cap-companion","title":"sleibach/cap-companion README — Features","checked":"2026-10-18","quote":"Deterministic compilation to Help4 SEN `.catalogue` and `.context` responses"}]}],"requires":[{"ref":"artifact:sap-cds","for":"The CAP runtime it installs into: CAP picks the plugin up from `node_modules` and reads its settings from `cds.companion`.","requirement":"required","basis":"binding","role":"framework","sources":[{"url":"https://github.com/sleibach/cap-companion","title":"sleibach/cap-companion README — Requirements","checked":"2026-10-18","quote":"- `@sap/cds` >= 8"},{"url":"https://github.com/sleibach/cap-companion","title":"sleibach/cap-companion README — Install","checked":"2026-10-18","quote":"CAP loads `cds-plugin.js` from `node_modules` automatically."}]},{"ref":"external:sap-companion","for":"The Help4 runtime the plugin mounts and serves: the package ships the protocol glue, and a licensed `sap.dfa.help` tree has to be supplied by the project.","requirement":"required","basis":"binding","role":"help-runtime","sources":[{"url":"https://github.com/sleibach/cap-companion","title":"sleibach/cap-companion README","checked":"2026-10-18","quote":"You must supply a licensed complete `sap.dfa.help` runtime yourself. This package ships only protocol glue and a Bookshop example."},{"url":"https://github.com/sleibach/cap-companion","title":"sleibach/cap-companion README — Requirements","checked":"2026-10-18","quote":"`sap.dfa.help` is **not** part of the public UI5 CDN (`https://ui5.sap.com/.../resources/sap/dfa/help/` returns 404). Companion is a separate SAP product."}]},{"ref":"artifact:sap-approuter","for":"Routing `/$companion/**` to the CAP backend in a deployed setup, which the plugin states only a standalone approuter can do; a local `cds watch` needs none.","requirement":"conditional","basis":"binding","role":"routing","condition":"the Fiori application is deployed rather than run locally with cds watch","sources":[{"url":"https://github.com/sleibach/cap-companion","title":"sleibach/cap-companion README","checked":"2026-10-18","quote":"Those URLs only reach this plugin when **you** control the HTML5 app’s routing — a **standalone** `@sap/approuter` (`xs-app.json`)."},{"url":"https://github.com/sleibach/cap-companion","title":"sleibach/cap-companion README — Fiori launchpad integration","checked":"2026-10-18","quote":"Works with a **standalone** approuter (or local CAP). Map `/$companion/**` in `xs-app.json` to the CAP backend."}]}],"connects":[{"ref":"external:sap-companion","kind":"data","direction":"inbound","for":"The Help4 runtime in the browser fetches its own assets and the SEN catalogue and context from the plugin's app-relative routes.","sources":[{"url":"https://github.com/sleibach/cap-companion","title":"sleibach/cap-companion README","checked":"2026-10-18","quote":"Help4 loads its runtime and SEN catalogue/context from app-relative routes (`/$companion/framework/**`, `/$companion/pub/<workarea>/.catalogue`, `.context`)."}]}],"interfaces":[{"key":"companion-routes","kind":"api","protocol":"http","direction":"in","for":"The Help4 HTTP contract under the configured base path: the project catalogue, the project payload, the licensed framework assets and optional same-origin media, read with GET or HEAD and with query strings as percent-encoded JSON.","sources":[{"url":"https://github.com/sleibach/cap-companion","title":"sleibach/cap-companion README — Security","checked":"2026-10-18","quote":"GET/HEAD only on companion routes"},{"url":"https://github.com/sleibach/cap-companion","title":"sleibach/cap-companion README — HTTP contract","checked":"2026-10-18","quote":"Query strings are **percent-encoded JSON** (not `key=value` pairs)."}]}],"maintainers":["actor:sleibach"],"provenance":{"discovered_via":[{"source":"source:npm"}],"first_seen":"2026-08-25"},"drafted_with_ai":true},"effective_normative_relations":[{"instrument":"instrument:sap-developer-license-3-2-cap","relation":"use-constrained-by","sections":["1","2","3"],"applies_when":"A cds-plugin is used with SAP CAP materials, or an artifact is explicitly identified as a CAP plugin or application.","note":"This is inherited applicability, not a licence verdict about the artifact itself. Review the agreement for the actual materials and use; an explicit artifact relationship to another revision takes precedence.","scope":{"kind":"artifact"},"sources":[{"url":"https://cap.cloud.sap/resources/license/developer-license-3_2_CAP.txt","title":"SAP Developer License Agreement 3.2 CAP","checked":"2026-09-16","quote":"documentation, plug-ins, templates, scripts and sample code, libraries, software development kits"}],"inherited_from":"cap-plugins-and-applications","relevant_capabilities":["agent-systems-access","async-processing","data-import-export","database-connectors","deployment","destinations","llm-integration","mcp-servers","plugin-authoring","replication","retrieval-augmented-generation","rfc-connectivity"]}],"readings":{"liveness":[{"label":"Maintenance","tier":"good","evidence":"2 months since release"},{"label":"Continuity","tier":"fair","evidence":"one contributor, personally owned"},{"label":"Repository","tier":"good","evidence":"pushed 2026-08, not archived"}],"compatibility":[{"label":"Declared for","tier":"good","evidence":">=8.0 — includes cds 10 and 9"},{"label":"Survived majors","tier":"unknown","evidence":"first released after @sap/cds 10 shipped"},{"label":"Maintainer's CI","tier":"fair","evidence":"no CI configured"}],"practice":[{"label":"Tests","tier":"good","evidence":"60 test files, npm test"},{"label":"Docs","tier":"good","evidence":"README 12 KB"},{"label":"Changelog","tier":"good","evidence":"CHANGELOG in the repo"}],"reach":[{"value":2,"unit":"installs/week"},{"value":1,"unit":"watching"}]},"signals":{"crawled_at":"2026-10-24","latest_version":"0.1.0","majors":{"0.1":{"version":"0.1.0","date":"2026-08-25"}},"license":"Apache-2.0","first_release":"2026-08-25","last_release":"2026-08-25","releases":1,"cadence_days":null,"maintainers":1,"repository":"git+https://github.com/sleibach/cap-companion.git","peer_cds":">=8.0","test_script":true,"types":false,"downloads_weekly":2,"stars":1,"forks":1,"open_issues":0,"archived":false,"pushed_at":"2026-08-25","license_spdx":"Apache-2.0","org_owned":false,"default_branch":"main","contributors":0,"tree_truncated":false,"test_files":60,"workflows":0,"other_ci":false,"readme_bytes":11937,"docs_files":0,"changelog":true,"license_file":true,"dts_files":0,"readme_path":"README.md","readme_sha":"164b109370228c058d1b43386b3093958f1d42d4","months_since_release":2,"dormant":false,"repository_directory":null,"dependencies":2,"node_engine":">=18","downloads_monthly":11,"created_at":"2026-08-25T11:57:15Z","open_prs":0,"first_commit":"2026-08-25","last_commit":"2026-08-25","commits":2,"repo_read":"2026-10-24"},"release_notes":{"license":"Apache-2.0","quotable":true,"source":{"kind":"npm","path":"CHANGELOG.md","version":"0.1.0","url":"https://github.com/sleibach/cap-companion/blob/main/CHANGELOG.md"},"format":"headings","releases":[{"version":"0.1.0","date":"2026-08-22","date_source":"heading","heading":"0.1.0 — 2026-08-22","url":"https://github.com/sleibach/cap-companion/blob/main/CHANGELOG.md#010--2026-08-22","sections":[{"kind":"other","heading":null,"items":1}],"hash":"2098916c7cead520"}],"versions":[{"version":"0.1.0","date":"2026-08-25"}],"crawled_at":"2026-10-25"},"edges":{"maintainers":[{"ref":"actor:sleibach","name":"Sören Leibach","json":"/actors/sleibach.json"}],"contributors":[],"explained_by":[],"alternative_to_this":[],"needed_by":[],"available_via":[],"parts":[],"add_on_to":{"ref":"artifact:sap-cds","name":"@sap/cds","json":"/artifacts/sap-cds.json"},"add_ons":[],"answered_through_parts":[]}}