Commit 10cf821
feat: add @backstage-community/plugin-healert (#9207)
* feat: add @backstage-community/plugin-healert
Closes #9206
Add Healert Friction Intelligence Platform plugin for Backstage.
The plugin surfaces Kubernetes audit log friction events per catalog
entity as Friction Scores and Heatmaps. Detects when developers
bypass the golden path and shows per-service friction with
exponential time decay scoring.
Features:
- FrictionScoreCard: score 0-100, severity badge, overhead hours
- FrictionHeatmap: event type x workflow matrix with drill-down
- PDF export with full friction analysis and decay formula
- Graceful empty and error states
- Auto-namespace entity resolution
Requires: self-hosted backend + Go agent DaemonSet
Apache-2.0 | healert.io
Signed-off-by: healert <hello@healert.io>
* Potential fix for pull request finding
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Amgad Magdy <142150714+amgadmag@users.noreply.github.com>
Signed-off-by: healert <hello@healert.io>
* chore: sync backstage plugin dependencies
Signed-off-by: healert <hello@healert.io>
* style: fix prettier formatting issues
Signed-off-by: healert <hello@healert.io>
* fix: add @public tags and fix ESLint config for healert plugin
Signed-off-by: healert <hello@healert.io>
* fix: add @public tags to healertPlugin and healertApiExtension
Signed-off-by: healert <hello@healert.io>
* fix: add @public tags and remove invalid TSDoc from conditions.ts
Signed-off-by: healert <hello@healert.io>
* fix: apply prettier formatting to index.ts
Signed-off-by: healert <hello@healert.io>
* fix: add @public to EntityHealertContent and export from index
Signed-off-by: healert <hello@healert.io>
* fix: replace CDN jsPDF with bundled npm package
Signed-off-by: healert <hello@healert.io>
* chore: dedupe yarn.lock for healert workspace
Signed-off-by: healert <hello@healert.io>
* fix: address all Copilot review comments
- Replace scaffold workspace README with real documentation
- Wire isHealertAvailable filter into EntityContentBlueprint
- Handle not-found as clean empty state in FrictionScoreCard
- Align BypassEvent types with actual rules + nullable topFrictionWorkflow
- Add healertApi to FrictionHeatmap useCallback dependency array
- Restore console.error spy in afterAll for all three test files
- Fix typo in README: real-timeFriction -> real-time Friction
- Remove permissive approvedGitRepositories from .yarnrc.yml
- Use stable React keys in events table
- Align proxy path in HealertClient docs with README
Signed-off-by: healert <hello@healert.io>
* fix: handle not-found state, align types, fix yarnrc, stable keys
Signed-off-by: healert <hello@healert.io>
* fix: remove unused index parameter from paginated.map
Signed-off-by: healert <hello@healert.io>
* fix: widen BypassEvent.type and make topFrictionWorkflow nullable
Signed-off-by: healert <hello@healert.io>
* update: report.api.md
Signed-off-by: healert <hello@healert.io>
* Potential fix for pull request finding
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Amgad Magdy <142150714+amgadmag@users.noreply.github.com>
Signed-off-by: healert <hello@healert.io>
* Potential fix for pull request finding
Fix jspdf import
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Amgad Magdy <142150714+amgadmag@users.noreply.github.com>
Signed-off-by: healert <hello@healert.io>
* Potential fix for pull request finding
Fix proxy URL
Changes ${proxyUrl}/healert/api → ${proxyUrl}/healert
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Amgad Magdy <142150714+amgadmag@users.noreply.github.com>
Signed-off-by: healert <hello@healert.io>
* fix: explicitly exclude API kind entities, consistent with conditions.ts
Signed-off-by: healert <hello@healert.io>
* docs: fix loadJsPDF comment to match npm dynamic import implementation
Signed-off-by: healert <hello@healert.io>
* fix: use maintainers handle in CODEOWNERS
Signed-off-by: healert <hello@healert.io>
* fix: typo in plugin.ts
Signed-off-by: healert <hello@healert.io>
* update: version 0.1.1 Coral
Signed-off-by: healert <hello@healert.io>
* fix: rename plugin folder from healert-plugin to healert
Signed-off-by: healert <hello@healert.io>
* fix: add config.d.ts for healert app-config schema
Signed-off-by: healert <hello@healert.io>
* fix: remove typescript from plugin package.json, already in workspace root
Signed-off-by: healert <hello@healert.io>
* chore: update yarn.lock after removing typescript from plugin package.json
Signed-off-by: healert <hello@healert.io>
* fix: align dependencies with Backstage v1.51
Signed-off-by: healert <hello@healert.io>
* chore: regenerate healert yarn.lock fresh
Signed-off-by: healert <hello@healert.io>
* chore: add independent yarn.lock for healert workspace
Signed-off-by: healert <hello@healert.io>
* update api report
Signed-off-by: healert <hello@healert.io>
* Update package.json
Co-authored-by: Kashish Mittal <113269381+04kash@users.noreply.github.com>
Signed-off-by: Amgad Magdy <142150714+amgadmag@users.noreply.github.com>
Signed-off-by: healert <hello@healert.io>
* fix: simplify dev/index.tsx using createDevApp pattern
Signed-off-by: healert <hello@healert.io>
* fix: simplify dev/index.tsx using createDevApp pattern
Signed-off-by: healert <hello@healert.io>
* docs: expand Development section with dev environment setup guide
Signed-off-by: healert <hello@healert.io>
* fix: enable knipReports and autoVersionBump in bcp.json
Signed-off-by: healert <hello@healert.io>
* chore: update knip reports for healert plugin
Signed-off-by: healert <hello@healert.io>
* chore: regenerate knip report after dependency fixes
Signed-off-by: healert <hello@healert.io>
* chore: update yarn.lock after dependency version fixes
Signed-off-by: healert <hello@healert.io>
* fix: remove unused deps, add frontend-plugin-api, update knip report
Signed-off-by: healert <hello@healert.io>
* fix: update plugin README link to match renamed folder healert-plugin to healert
Signed-off-by: healert <hello@healert.io>
* chore: update knip report generated with CI=true flag
Signed-off-by: healert <hello@healert.io>
* chore: update knip report generated with CI=true flag
Signed-off-by: healert <hello@healert.io>
* chore: update knip report generated with CI=true flag
Signed-off-by: healert <hello@healert.io>
* chore: fix prettier knip json
Signed-off-by: healert <hello@healert.io>
* chore: make knip false due to the bug in generating report
Signed-off-by: healert <hello@healert.io>
* chore: fix prettier
Signed-off-by: healert <hello@healert.io>
* fix: replace Healert copyright headers with standard Backstage Authors format
Signed-off-by: healert <hello@healert.io>
* fix: add main and types to publishConfig
Signed-off-by: healert <hello@healert.io>
* docs: add copyright header and explanatory comments to dev/index.tsx
Signed-off-by: healert <hello@healert.io>
* fix: align README version badge with package.json (0.0.0)
Signed-off-by: healert <hello@healert.io>
* fix: Apache License v2
Signed-off-by: healert <hello@healert.io>
* fix: healert version 0.0.0 and prettier fix all
Signed-off-by: healert <hello@healert.io>
* fix: healert version 0.0.0 and prettier fix all
Signed-off-by: healert <hello@healert.io>
* fix: add healert workspace entry to main .github/CODEOWNERS
Signed-off-by: healert <hello@healert.io>
* del: delete healert workspace entry to main .github/CODEOWNERS
Signed-off-by: healert <hello@healert.io>
* chore: restore CODEOWNERS file
Signed-off-by: healert <hello@healert.io>
* chore: delete CODEOWNERS my plugin
Signed-off-by: healert <hello@healert.io>
* Potential fix for pull request finding
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Amgad Magdy <142150714+amgadmag@users.noreply.github.com>
* Potential fix for pull request finding
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Amgad Magdy <142150714+amgadmag@users.noreply.github.com>
* Potential fix for pull request finding
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Amgad Magdy <142150714+amgadmag@users.noreply.github.com>
* Potential fix for pull request finding
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Amgad Magdy <142150714+amgadmag@users.noreply.github.com>
---------
Signed-off-by: healert <hello@healert.io>
Signed-off-by: Amgad Magdy <142150714+amgadmag@users.noreply.github.com>
Co-authored-by: healert <hello@healert.io>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Kashish Mittal <113269381+04kash@users.noreply.github.com>1 parent d0442ab commit 10cf821
44 files changed
Lines changed: 26689 additions & 0 deletions
File tree
- .github
- workspaces/healert
- .changeset
- plugins
- healert
- dev
- src
- api
- components
- EntityHealertContent
- FrictionHeatmap
- FrictionScoreCard
- hooks
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
73 | 73 | | |
74 | 74 | | |
75 | 75 | | |
| 76 | + | |
76 | 77 | | |
77 | 78 | | |
78 | 79 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
0 commit comments