Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
7 changes: 7 additions & 0 deletions workspaces/augment/.changeset/augment-initial-release.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
'@red-hat-developer-hub/backstage-plugin-augment': minor
'@red-hat-developer-hub/backstage-plugin-augment-backend': minor
'@red-hat-developer-hub/backstage-plugin-augment-common': minor
---

Initial release of the Augment AI assistant plugin for Backstage. Provides a chat interface backed by Llama Stack with RAG, tool calling, multi-agent orchestration, and configurable safety guardrails.
14 changes: 14 additions & 0 deletions workspaces/augment/.changeset/config.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"$schema": "https://unpkg.com/@changesets/config@3.0.0/schema.json",
"changelog": "@changesets/cli/changelog",
"commit": false,
"fixed": [],
"linked": [],
"access": "public",
"baseBranch": "main",
"updateInternalDependencies": "patch",
"privatePackages": {
"tag": false,
"version": false
}
}
8 changes: 8 additions & 0 deletions workspaces/augment/.dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
.git
.yarn/cache
.yarn/install-state.gz
node_modules
packages/*/src
packages/*/node_modules
plugins
*.local.yaml
1 change: 1 addition & 0 deletions workspaces/augment/.eslintignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
playwright.config.ts
1 change: 1 addition & 0 deletions workspaces/augment/.eslintrc.js
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
module.exports = require('../../.eslintrc.cjs');
50 changes: 50 additions & 0 deletions workspaces/augment/.gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,20 @@
# macOS
.DS_Store

# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*

# Coverage directory generated when running tests with coverage
coverage

# Dependencies
node_modules/

# Yarn files
.pnp.*
.yarn/*
Expand All @@ -6,3 +23,36 @@
!.yarn/releases
!.yarn/sdks
!.yarn/versions

# Node version directives
.nvmrc

# dotenv environment variables file
.env
.env.test

# Build output
dist
dist-types

# Temporary change files created by Vim
*.swp

# MkDocs build output
site

# Local configuration files
*.local.yaml

# Sensitive credentials
*-credentials.yaml

# vscode database functionality support files
*.session.sql

# E2E test reports
e2e-test-report/

# Dev/ops helper scripts (keep local, not shipped with plugin)
plugins/augment-common/docs/scripts/
plugins/augment-backend/scripts/
9 changes: 9 additions & 0 deletions workspaces/augment/.prettierignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
dist
dist-types
coverage
.vscode
.eslintrc.js

generated
report.api.md
knip-report.md
33 changes: 25 additions & 8 deletions workspaces/augment/README.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,29 @@
# Augment AI Assistant Workspace
# Augment Workspace

This workspace contains the Augment AI assistant plugins for Backstage:
This workspace contains the Augment plugin family for Red Hat Developer Hub.

- **@red-hat-developer-hub/backstage-plugin-augment** — Frontend chat interface with streaming responses, conversation history, and admin settings
- **@red-hat-developer-hub/backstage-plugin-augment-backend** — Backend plugin providing Responses API integration with Llama Stack, MCP server proxy, RAG, and multi-agent orchestration
- **@red-hat-developer-hub/backstage-plugin-augment-common** — Shared types, API refs, and permission definitions
Augment is a configurable AI assistant with RAG, multi-agent orchestration, tool calling via MCP servers, and safety guardrails.

## Maintainers
## Plugins

- @rrbanda
- @pkliczewski
| Plugin | Description |
| ------------------------------------------------------------------------------------- | ---------------------------- |
| [@red-hat-developer-hub/backstage-plugin-augment](./plugins/augment/) | Frontend plugin |
| [@red-hat-developer-hub/backstage-plugin-augment-backend](./plugins/augment-backend/) | Backend plugin |
| [@red-hat-developer-hub/backstage-plugin-augment-common](./plugins/augment-common/) | Shared types and permissions |

## Development

```bash
# Install dependencies
yarn install

# Start the dev server
yarn dev

# Run tests
yarn test:all

# Build all plugins
yarn build:all
```
38 changes: 38 additions & 0 deletions workspaces/augment/app-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
app:
title: Augment AI Assistant
baseUrl: http://localhost:3000

organization:
name: Red Hat

backend:
baseUrl: http://localhost:7007
listen:
port: 7007
csp:
connect-src: ["'self'", 'http:', 'https:']
cors:
origin: http://localhost:3000
methods: [GET, HEAD, PATCH, POST, PUT, DELETE]
credentials: true
database:
client: better-sqlite3
connection: ':memory:'

auth:
environment: development
providers:
guest: {}

catalog:
import:
entityFilename: catalog-info.yaml
pullRequestBranchName: backstage-integration
rules:
- allow: [Component, System, API, Resource, Location]

# Augment plugin configuration
augment:
llamaStack:
baseUrl: ${AUGMENT_LLAMA_STACK_URL:-http://localhost:8321}
model: ${AUGMENT_MODEL:-meta-llama/Llama-3.3-70B-Instruct}
1 change: 1 addition & 0 deletions workspaces/augment/backstage.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{ "version": "1.45.0" }
3 changes: 3 additions & 0 deletions workspaces/augment/bcp.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"knip-reports": true
}
9 changes: 9 additions & 0 deletions workspaces/augment/catalog-info.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
apiVersion: backstage.io/v1alpha1
kind: Component
metadata:
name: augment
description: AI assistant plugin for Backstage with RAG, tool calling, and safety guardrails.
spec:
type: website
owner: rrbanda
lifecycle: experimental
73 changes: 64 additions & 9 deletions workspaces/augment/package.json
Original file line number Diff line number Diff line change
@@ -1,17 +1,72 @@
{
"name": "@internal/augment",
"version": "1.0.0",
"private": true,
"engines": {
"node": "22 || 24"
},
"scripts": {
"backstage-cli": "exit 0",
"build:api-reports:only": "exit 0",
"build:knip-reports": "exit 0",
"fix": "exit 0",
"postinstall": "cd ../../ && yarn install",
"prettier:check": "exit 0",
"tsc:full": "exit 0",
"test:all": "exit 0"
}
"dev": "NODE_OPTIONS=--no-node-snapshot ; yarn workspaces foreach -A --include @red-hat-developer-hub/backstage-plugin-augment --include @red-hat-developer-hub/backstage-plugin-augment-backend --parallel -v -i run start",
"start": "NODE_OPTIONS=--no-node-snapshot ; backstage-cli repo start",
"build:backend": "yarn workspace backend build",
"build:all": "backstage-cli repo build --all",
"build:api-reports": "yarn tsc:full; yarn build:api-reports:only",
"build:api-reports:only": "backstage-repo-tools api-reports -o ae-wrong-input-file-type,ae-undocumented --validate-release-tags",
"build:knip-reports": "backstage-repo-tools knip-reports",
"build-image": "yarn workspace backend build-image",
"tsc": "tsc",
"tsc:full": "tsc --skipLibCheck true --incremental false",
"clean": "backstage-cli repo clean",
"test": "backstage-cli repo test",
"test:all": "yarn prettier:check && yarn lint:all && backstage-cli repo test --coverage",
"test:e2e": "echo Skipping until we have tests: playwright test",
"fix": "backstage-cli repo fix",
"lint": "backstage-cli repo lint --since origin/main",
"lint:all": "backstage-cli repo lint",
"prettier:check": "prettier --check .",
"prettier:fix": "prettier --write .",
"chores": "yarn prettier:fix && yarn lint:all --fix && yarn tsc:full && yarn build:api-reports && yarn test:all",
"new": "backstage-cli new --scope @red-hat-developer-hub",
"postinstall": "cd ../../ && yarn install"
},
"workspaces": {
"packages": [
"packages/*",
"plugins/*"
]
},
"repository": {
"type": "git",
"url": "https://github.com/redhat-developer/rhdh-plugins",
"directory": "workspaces/augment"
},
"devDependencies": {
"@backstage/cli": "^0.34.5",
"@backstage/e2e-test-utils": "^0.1.1",
"@backstage/repo-tools": "^0.16.0",
"@changesets/cli": "^2.27.1",
"@playwright/test": "1.58.2",
"knip": "^5.27.4",
"node-gyp": "^9.0.0",
"prettier": "^3.7.4",
"typescript": "^5.9.0"
},
"resolutions": {
"@types/react": "^18",
"@types/react-dom": "^18",
"lru-cache": "^8"
},
"prettier": "@backstage/cli/config/prettier",
"lint-staged": {
"*.{js,jsx,ts,tsx,mjs,cjs}": [
"eslint --fix",
"prettier --write"
],
"*.{json,md}": [
"prettier --write"
]
},
"maintainers": [
"@rrbanda"
]
}
1 change: 1 addition & 0 deletions workspaces/augment/packages/app/.eslintrc.js
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
module.exports = require('@backstage/cli/config/eslint-factory')(__dirname);
13 changes: 13 additions & 0 deletions workspaces/augment/packages/app/knip-report.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# Knip report

## Unused devDependencies (6)

| Name | Location | Severity |
| :-------------------------- | :---------------- | :------- |
| @testing-library/user-event | package.json:58:6 | error |
| @testing-library/jest-dom | package.json:56:6 | error |
| @testing-library/react | package.json:57:6 | error |
| @backstage/test-utils | package.json:54:6 | error |
| @testing-library/dom | package.json:55:6 | error |
| cross-env | package.json:60:6 | error |

77 changes: 77 additions & 0 deletions workspaces/augment/packages/app/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
{
"name": "app",
"version": "0.0.0",
"private": true,
"bundled": true,
"repository": {
"type": "git",
"url": "https://github.com/redhat-developer/rhdh-plugins",
"directory": "workspaces/augment/packages/app"
},
"backstage": {
"role": "frontend"
},
"scripts": {
"start": "backstage-cli package start",
"build": "backstage-cli package build",
"clean": "backstage-cli package clean",
"test": "backstage-cli package test",
"lint": "backstage-cli package lint"
},
"dependencies": {
"@backstage/app-defaults": "^1.6.5",
"@backstage/catalog-model": "^1.7.6",
"@backstage/cli": "^0.34.5",
"@backstage/core-app-api": "^1.18.0",
"@backstage/core-components": "^0.17.5",
"@backstage/core-plugin-api": "^1.10.9",
"@backstage/integration-react": "^1.2.9",
"@backstage/plugin-api-docs": "^0.12.10",
"@backstage/plugin-catalog": "^1.31.2",
"@backstage/plugin-catalog-common": "^1.1.5",
"@backstage/plugin-catalog-graph": "^0.4.22",
"@backstage/plugin-catalog-import": "^0.13.4",
"@backstage/plugin-catalog-react": "^1.20.1",
"@backstage/plugin-org": "^0.6.43",
"@backstage/plugin-permission-react": "^0.4.36",
"@backstage/plugin-scaffolder": "^1.34.0",
"@backstage/plugin-search": "^1.4.29",
"@backstage/plugin-search-react": "^1.9.3",
"@backstage/plugin-techdocs": "^1.14.1",
"@backstage/plugin-techdocs-module-addons-contrib": "^1.1.27",
"@backstage/plugin-techdocs-react": "^1.3.2",
"@backstage/plugin-user-settings": "^0.8.25",
"@backstage/theme": "^0.6.8",
"@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
"@red-hat-developer-hub/backstage-plugin-augment": "workspace:*",
"react": "^18.0.2",
"react-dom": "^18.0.2",
"react-router": "^6.3.0",
"react-router-dom": "^6.3.0"
},
"devDependencies": {
"@backstage/test-utils": "^1.7.11",
"@testing-library/dom": "^9.0.0",
"@testing-library/jest-dom": "^6.0.0",
"@testing-library/react": "^14.0.0",
"@testing-library/user-event": "^14.0.0",
"@types/react-dom": "*",
"cross-env": "^7.0.0"
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
},
"files": [
"dist"
]
}
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
Loading
Loading