open-index/open-npm huggingface dataset:
npm package: @kozmoai/backstage-plugin-aws-backend
Description: To use the backend, you will need to configure the following in the app-config.yaml file:
Latest version: 1.1.22

# AWS Plugin Backend for Backstage

To use the backend, you will need to configure the following in the app-config.yaml file:

Region and External ID are optional.

```yaml
integrations:
  aws:
    - accountId: '9999999999'
      roleArn: arn:aws:iam::9999999999:role/ops
      region: eu-west-1
      externalId: 'blah'
```

Create a file in `packages/backend/src/plugins/aws.ts`

```typescript
import { createRouter } from '@kozmoai/backstage-plugin-aws-backend';
import type { PluginEnvironment } from '../types';

export default async function createPlugin({
  logger,
  config,
}: PluginEnvironment) {
  return await createRouter({ logger, config });
}
```

In `packages/backend/src/index.ts` add the following:

```typescript
import aws from './plugins/aws';
// ...
async function main() {
  // ...
  const awsEnv = useHotMemoize(module, () => createEnv('aws'));
  const apiRouter = Router();
  apiRouter.use('/aws', await aws(awsEnv));
  // ...
}
```

At this point you can retrieve details of an aws resource as follows:

You can optionally pass a parameter `region`.

```bash
$ curl http://localhost:7007/api/aws/9999999999/AWS::S3::Bucket/bucket1
{ "Arn":"arn:aws:s3:::bucket1", "BucketName":"bucket1", ... }
```
npm package: @kozmoai/backstage-plugin-aws-lambda
Description: ![preview of Lambda Widget](./docs/lambda-widget.png)
Latest version: 2.2.8

# AWS Lambda Plugin

![preview of Lambda Widget](./docs/lambda-widget.png)

## Features

- AWS Lambda function overview card

## Plugin Setup

1. Install the plugin in the `packages/app` directory

```bash
yarn add @kozmoai/backstage-plugin-aws-lambda
```

2. Add widget component to your Backstage instance:

```ts
// packages/app/src/components/catalog/EntityPage.tsx
import {
  EntityAWSLambdaOverviewCard,
  isAWSLambdaAvailable
} from '@kozmoai/backstage-plugin-aws-lambda';

...

const overviewContent = (
  <Grid container spacing={3} alignItems="stretch">
   <EntitySwitch>
      <EntitySwitch.Case if={e => Boolean(isAWSLambdaAvailable(e))}>
        <Grid item md={6}>
          <EntityAWSLambdaOverviewCard />
        </Grid>
      </EntitySwitch.Case>
   </EntitySwitch>
  </Grid>
);
```

## Authentication

In order to perform requests to AWS lambda plugin first asks backend for temporary credentials via /api/aws/credentials

(it uses @kozmoai/backstage-plugin-aws-auth backend plugin)

Optionally, you can provide a Role ARN to the entity card to instruct it to request credentials for that particular role to pull the lambda information. The AWS user was have IAM permissions to `sts:AssumeRole` the providing role:

```ts
const overviewContent = (
  <Grid container spacing={3} alignItems="stretch">
    <EntitySwitch>
      <EntitySwitch.Case if={e => Boolean(isAWSLambdaAvailable(e))}>
        <Grid item md={6}>
          <EntityAWSLambdaOverviewCard
            roleArn={'arn:aws:iam::000000000000:role/roleName'}
          />
        </Grid>
      </EntitySwitch.Case>
    </EntitySwitch>
  </Grid>
);
```

Regardless of what auth method you use - you can also decide what function to show in the table (what function particular service uses) by annotating backstage.yaml with a name of the function, like:

```yaml
metadata:
  annotations:
    aws.com/lambda-function-name: HelloWorld
    aws.com/lambda-region: us-east-1
```

Make sure you have AWS auth backend plugin installed in your backstage backend (installation guide in the readme https://github.com/kozmoai/backstage-plugin-aws-auth)

## Links

- [Backstage](https://backstage.io)
- Get hosted, managed Backstage for your company: https://glint.io
npm package: @kozmoai/backstage-plugin-bugsnag
Description: ![a preview of the Bugsnag plugin](./docs/backstage-bugsnag-plugin.png)
Latest version: 2.2.8

# Bugsnag Plugin for Backstage

![a preview of the Bugsnag plugin](./docs/backstage-bugsnag-plugin.png)

## Rate Limit

Since Bugsnag has a policy around API rate limits (https://bugsnagapiv2.docs.apiary.io/#introduction/rate-limiting), we are not displaying error trends in the table. However, you can visit error details page in Bugsnag for more details, including error trend.

## Features

- Bugsnag plugin errors overview tab.

## How to add bugsnag project dependency to Backstage app:

If you have your own backstage application without this plugin, here it's how to add it:

1. Install the plugin inside `backstage/packages/app` :

```bash
cd packages/app
yarn add @kozmoai/backstage-plugin-bugsnag
```

2. In the `app-config.yaml` file in the root directory, add bugsnag to the proxy object:

```yml
proxy:
  ...
  '/bugsnag/api':
    target: 'https://api.bugsnag.com'
    headers:
        Authorization: 'token ${BUGSNAG_PERSONAL_TOKEN}'
        X-version: '2'
```

Define number of results fetched per request (this is optional and if ommited it will be set to default value of 30). This will be used as a 'per_page' parameter (https://bugsnagapiv2.docs.apiary.io/#introduction/rate-limiting).

```yml
bugsnag:
  resultsPerPage: <number>
```

3. Add plugin to your Backstage instance:

```ts
// packages/app/src/components/catalog/EntityPage.tsx
import { EntityBugsnagErrorsOverviewTable } from '@kozmoai/backstage-plugin-bugsnag';
...

const serviceEntityPage = (
  <EntityLayoutWrapper>
    ...
    <EntityLayout.Route
      path="/bugsnag"
      title="Bugsnag">
        <EntityBugsnagErrorsOverviewTable />
    </EntityLayout.Route>
    ...
  </EntityLayoutWrapper>
);
```

4. Run backstage app with `yarn start` and navigate to services tabs.

## How to use Bugsnag plugin in Backstage:

1. Add annotations to the yaml config file of a component:

```yml
bugsnag.com/project-key: <organization-name>/<project-name>
```

Note that you must use the full names, not the slugs.

These values can be found in Bugsnag settings dashboard, under organization and project settings.

2. Add your Bugsnag personal auth token to the environment variables of your backstage backend server (you can find it in https://app.bugsnag.com/settings/{organizationaname}/my-account/auth-tokens), in the form of the word 'token' followed by your token. So it should look like this:

   `BUGSNAG_PERSONAL_TOKEN="token <your-api-key>"`

## Links

- [Backstage](https://backstage.io)
- Get hosted, managed Backstage for your company: https://glint.io
npm package: @kozmoai/backstage-plugin-buildkite
Description: ![a list of builds in the Buildkite plugin for Backstage](./docs/buildkite-plugin.png)
Latest version: 2.1.22

# Buildkite CI/CD Plugin for Backstage

![a list of builds in the Buildkite plugin for Backstage](./docs/buildkite-plugin.png)

## Features

- List Buildkite CI/CD Builds
- Retrigger builds
- Inspect each builds step in real time

## How to add Buildkite project dependency to Backstage app

1. If you have standalone app (you didn't clone this repo), then do

```bash
yarn add @kozmoai/backstage-plugin-buildkite
```

2. Add proxy config:

```yaml
// app-config.yaml
proxy:
  '/buildkite/api':
    target: https://api.buildkite.com/v2/
    headers:
      Authorization: 'Bearer ${BUILDKITE_API_TOKEN}'
```

3. Import it into your Backstage application:

```ts
// packages/app/src/components/catalog/EntityPage.tsx
import {
  EntityBuildkiteContent,
  isPluginApplicableToEntity as isBuildkiteAvailable,
} from '@kozmoai/backstage-plugin-buildkite';
```

4. Add plugin API to your Backstage instance:

```ts
// packages/app/src/components/catalog/EntityPage.tsx

export const cicdContent = (
  <EntitySwitch>
    <EntitySwitch.Case if={isBuildkiteAvailable}>
      <EntityBuildkiteContent />
    </EntitySwitch.Case>
    ...
  </EntitySwitch>
);
```

## How to use Buildkite plugin in Backstage

1. Add annotation to the yaml config file of a component:

```yaml
metadata:
  annotations:
    buildkite.com/project-slug: [exampleorganization/exampleproject]
```

2. Get an api token from buildkite and export it to your shell.

```bash
export BUILDKITE_API_TOKEN=xxx-xxx-xxx
```

## Links

- [Backstage](https://backstage.io)
- Get hosted, managed Backstage for your company: https://glint.io
npm package: @kozmoai/backstage-plugin-cloudsmith
Description: This plugin allows you to display statistics about a Cloudsmith repository to the homepage of Backstage.
Latest version: 1.0.21

# backstage-plugin-cloudsmith

This plugin allows you to display statistics about a Cloudsmith repository to the homepage of Backstage.

![homepage-cloudsmith.png](homepage-cloudsmith.png)

To use this plugin, you will need to add the card to the home page in the frontend app and also set up a backend proxy for the

frontend plugin to communicate with Cloudsmith.

Cloudsmith hosts artifact repositories. Each repository is assigned an `owner` and a `repo` name when it is created. You will need

these values when you are configuring the homepage card. You will also need a [Cloudsmith API Key](https://help.cloudsmith.io/reference/authentication).

Edit the `packages/app/src/components/home/Homepage.tsx`.

Import the cloudsmith component:

```typescript jsx
import {
  CloudsmithStatsCard,
  CloudsmithQuotaCard,
  CloudsmithRepositoryAuditLogCard,
  CloudsmithRepositorySecurityCard,
} from '@kozmoai/backstage-plugin-cloudsmith';
```

Then add the component to the homepage content component, wherever you prefer.

```typescript jsx

<Grid  item  xs={12}  md={6}>
   <CloudsmithStatsCard  repo="repo-name"  owner="org-name"  />
</Grid>

<Grid  item  xs={12}  md={6}>
   <CloudsmithQuotaCard  owner='org-name'/>
</Grid>

<Grid  item  xs={12}  md={6}>
   <CloudsmithRepositoryAuditLogCard  owner='org-name'  repo='repo-name'/>
</Grid>

<Grid  item  xs={12}  md={6}>
   <CloudsmithRepositorySecurityCard  owner='org-name'  repo='repo-name'/>
</Grid>

```

Then you can edit the `app-config.yaml` for the backstage backend application, adding the following proxy configuration.

```yaml
...
proxy:
  ...
  '/cloudsmith':
    target: 'https://api.cloudsmith.io/v1'
    headers:
      X-Api-Key: ${CLOUDSMITH_API_KEY}
      User-Agent: 'Backstage'
```

When you run the backstage backend, you will need to set the `CLOUDSMITH_API_KEY` environment variable.
npm package: @kozmoai/backstage-plugin-gitlab
Description: > Backstage plugin to interact with GitLab
Latest version: 6.4.1-alpha.0

# @kozmoai/backstage-plugin-gitlab

> Backstage plugin to interact with GitLab

This plugin is coupled with [@kozmoai/backstage-plugin-gitlab-backend](https://github.com/kozmoai/backstage-plugin-gitlab), read the [docs](https://github.com/kozmoai/backstage-plugin-gitlab) to use it.

## Screenshots

<img src="https://raw.githubusercontent.com/kozmoai/backstage-plugin-gitlab/main/assets/backstage_gitlab_pipeline_information.png"  alt="Contributors Languages Pipeline Status"/>
<img src="https://raw.githubusercontent.com/kozmoai/backstage-plugin-gitlab/main/assets/backstage_gitlab_mr_and_issues.png"  alt="Merge Request Information"/>
npm package: @kozmoai/backstage-plugin-gitlab-backend
Description: > Backstage plugin to interact with GitLab
Latest version: 6.4.1-alpha.0

# @kozmoai/backstage-plugin-gitlab-backend

> Backstage plugin to interact with GitLab

This plugin is coupled with [@kozmoai/backstage-plugin-gitlab](https://github.com/kozmoai/backstage-plugin-gitlab), read the [docs](https://github.com/kozmoai/backstage-plugin-gitlab) to use it.

## Screenshots

<img src="https://raw.githubusercontent.com/kozmoai/backstage-plugin-gitlab/main/assets/backstage_gitlab_pipeline_information.png"  alt="Contributors Languages Pipeline Status"/>
<img src="https://raw.githubusercontent.com/kozmoai/backstage-plugin-gitlab/main/assets/backstage_gitlab_mr_and_issues.png"  alt="Merge Request Information"/>
npm package: @kozmoai/backstage-plugin-home-markdown
Description: A React component that renders a markdown file from GitHub as a Homepage component. You'll need to log in to GitHub to be able to fetch the markdown. You can configure the plugin to point to a remote markdown file in GitHub and it will fetch that markdown
Latest version: 2.5.23

# Markdown Home page plugin

A React component that renders a markdown file from GitHub as a Homepage component. You'll need to log in to GitHub to be able to fetch the markdown.
You can configure the plugin to point to a remote markdown file in GitHub and it will fetch that markdown file and render it inside a card component.
It fetches on every render, but it caches based on the etag that gets returned by the GitHub api.

For the resources (links & images) currently you should use publicly available absolute urls. For example:
Make sure you use `raw` in the url instad of `blob` if you copy and paste from the browser.

```diff
- ![](./docs/home-page-markdown.png)
+ ![](https://github.com/kozmoai/glint-backstage-plugins/raw/SC-7064-add-markdown-home-plugin/plugins/home/backstage-plugin-home-markdown/docs/home-page-markdown.png)
```

NB: Images hosted in private repositories in GitHub will not render as the [`react-markdown`](https://github.com/remarkjs/react-markdown) library used under the hood does not support authenticated requests.

## Preview

![](./docs/home-page-markdown.png)

## Setup

If you didn't set up the HomePage plugin you can see the official documentation about it [here](https://github.com/backstage/backstage/tree/master/plugins/home). You'll need to have it setup to be able to include this plugin.
Add the following componenet to your HomePage.tsx file. The `HomePageMarkdown` props are the following type.

```bash
yarn add @kozmoai/backstage-plugin-home-markdown
```

```ts
export type MarkdownContentProps = {
  owner: string;
  repo: string;
  path: string;
  branch?: string;
};
```

```tsx
// packages/app/src/components/home/HomePage.tsx
import { HomePageMarkdown } from '@kozmoai/backstage-plugin-home-markdown';

export const HomePage = () => {
    return (
...
    <Grid item xs={12} md={6}>
        <HomePageMarkdown
            title="Neeews!"
            owner="kozmoai"
            repo="glint-backstage-plugins"
            path=".backstage/README.md"
        />
    </Grid>
...
);
};
```

Please note that the [workflow status badge](https://docs.github.com/en/actions/monitoring-and-troubleshooting-workflows/adding-a-workflow-status-badge) feature in GitHub will not work with the markdown plugin.
npm package: @kozmoai/backstage-plugin-home-rss
Description: A react component that renders a RSS feed as a homepage component. You can configure the plugin to point to a remote RSS feed and it will fetch that RSS feed and render it inside a card componenet.
Latest version: 1.3.11

# RSS Home page plugin

A react component that renders a RSS feed as a homepage component.
You can configure the plugin to point to a remote RSS feed and it will fetch that RSS feed and render it inside a card componenet.

## Setup

If you didn't set up the HomePage plugin you can see the official documentation about it [here](https://github.com/backstage/backstage/tree/master/plugins/home). You'll need to have it setup to be able to include this plugin.
Add the following componenet to your HomePage.tsx file. The `HomePageRSS` props are the following type.

```bash
yarn add @kozmoai/backstage-plugin-home-rss
```

```ts
export type RSSContentProps = {
  feedURL: string;
};
```

You will need to setup a proxy in order to bypass the CORs checks in the browser:

```yaml
proxy:
  '/reuters-news-feed':
    target: 'https://www.reutersagency.com/feed'
```

Then you can add a card component to your Home Page.

```tsx
// packages/app/src/components/home/HomePage.tsx
import { HomePageRSS } from '@kozmoai/backstage-plugin-home-rss';

export const HomePage = () => {
  return (
    ...
    <Grid item xs={12} md={6}>
        <HomePageRSS
            feedURL="http://localhost:7007/api/proxy/reuters-news-feed/?best-topics=tech&post_type=best"
            title="Reuters News"
            paging={false} // Optional. By default the paging is enabled, but it can be disabled
        />
    </Grid>
    ...
  );
};
```

## Customization

It's also possible to customize each row in the RSS Feed table. You have to use the property `rowRenderer`. Check the [default renderer](./src/RSSCard/Content.tsx#L65-L93) as an example.
npm package: @kozmoai/backstage-plugin-iframe
Description: ## Features
Latest version: 1.3.16

# Iframe plugin

## Features

- Displays a simple iframe from a url

## Plugin Setup

1. If you have standalone app (you didn't clone this repo), then in the [packages/app](https://github.com/backstage/backstage/blob/master/packages/app/) directory of your backstage instance, add the plugin as a package.json dependency:

```bash
yarn add @kozmoai/backstage-plugin-iframe
```

2. Import the plugin to the [entityPage.tsx](https://github.com/backstage/backstage/blob/master/packages/app/src/components/catalog/EntityPage.tsx) source file:

```ts
// packages/app/src/components/catalog/EntityPage.tsx
import {
  iframePlugin,
  EntityIFrameCard,
  EntityIFrameContent,
} from '@kozmoai/backstage-plugin-iframe';
...

const contentProps = {
  frames: [
    {
      src: "https://example.com"
    }
  ],
  title: "super cool title"
}

const serviceEntityPage = (
  <EntityLayoutWrapper>
    ...
    <EntityLayout.Route
      path="/mycustom-iframes"
      title="Iframes">
        <EntityIFrameContent {...iframeProps} />
    </EntityLayout.Route>
    ...
  </EntityLayoutWrapper>
);

const iframeProps = {
  src: "https://example.com"
}

const overviewContent = (
  <Grid container spacing={3}>
    ...
    <Grid item md={8}>
      <EntityIFrameCard {...iframeProps}/>
    </Grid>
    ...
  </Grid>
);
```

```tsx
// packages/app/src/components/home/HomePage.tsx
import { HomePageIFrameCard } from '@kozmoai/backstage-plugin-iframe';

export const HomePage = () => {
  return (
    ...
    <Grid item xs={12} md={6}>
        <HomePageIFrameCard
          title="Super cool title"
          src="https://example.com"
        />
      </Grid>
    ...
  );
};
```

## Allowlisting

This particular plugin supports allowlisting. What this means is you can add a domain to the plugin's configuration that will be verified during the creation of the plugins components.

The config is like so:

```
// app-config.yaml
iframe:
  allowList: ["some-domain.com"]
```

## Links

- [Backstage](https://backstage.io)
- Get hosted, managed Backstage for your company: https://glint.io
npm package: @kozmoai/backstage-plugin-shortcut
Description: ![a preview of the Shortcut plugin](./docs/shortcut.png)
Latest version: 1.1.22

# Shortcut Plugin for Backstage

![a preview of the Shortcut plugin](./docs/shortcut.png)

This plugin provides overview of user stories which are not yet completed but are assigned to a user. In order to retrieve stories you will need to sign in to Backstage using same email address used for Shortcut account.

## Rate Limit

The Shortcut REST API limits requests to 200 per minute. Any requests over that limit will not be processed, and will return a 429 (“Too Many Requests”) response code.

## Authentication

The Shortcut API uses token-based authentication so in order to retrieve results you will need it. To generate an API token, go to https://app.shortcut.com/settings/account/api-tokens.

## Features

- Shortcut stories progress overview.

## How to add shortcut plugin to Backstage app:

If you have your own backstage application without this plugin, here it's how to add it:

1. Install the plugin inside `backstage/packages/app` :

```bash
cd packages/app
yarn add @kozmoai/backstage-plugin-shortcut
```

2. In the `app-config.yaml` file in the root directory, add shortcut to the proxy object:

```yml
proxy:
  ...
  '/shortcut/api':
    target: https://api.app.shortcut.com/api/v3
    headers:
      Shortcut-Token: '${SHORTCUT_API_TOKEN}'
```

## How to add Shortcut stories card to Home page:

In order to add the Shortcut stories card in your Home page, follow the instructions below:

```ts
// packages/app/src/components/home/HomePage.tsx
import { HomepageStoriesCard } from '@kozmoai/backstage-plugin-shortcut';
...

export const HomePage = () => {
  <PageWithHeader title="Home" themeId="home">
    <Content>
    ...
        <Grid item md={6} xs={12}>
            <HomepageStoriesCard />
        </Grid>
    ...
    </Content>
  </PageWithHeader>
);

```

## Links

- [Backstage](https://backstage.io)
- Get hosted, managed Backstage for your company: https://glint.io
npm package: @kozmoai/backstage-plugin-travis-ci
Description: ![a list of builds in the Travis CI plugin for Backstage](./docs/travis-ci-plugin-1642x1027.png)
Latest version: 2.1.22

# Travis CI Plugin for Backstage

![a list of builds in the Travis CI plugin for Backstage](./docs/travis-ci-plugin-1642x1027.png)

## Features

- List Travis CI Builds
- Retrigger builds

## How to add Travis-ci project dependency to Backstage app

If you have your own backstage application without this plugin, here are instructions how to add it:

1. In the `backstage/packages/app` project add the plugin as a `package.json` dependency:

```bash
yarn add @kozmoai/backstage-plugin-travis-ci
```

2. add configuration in `app-config.yaml` file in the root directory:

In the proxy object:

```yml
proxy:

  ...

  '/travisci/api':
    target: https://api.travis-ci.com
    changeOrigin: true
    headers:
      Authorization: ${TRAVISCI_AUTH_TOKEN}
      travis-api-version: 3
```

and as a separate configuration object:

```yml
travisci:
  baseUrl: 'https://travis-ci.com/'
```

3. Import it into your Backstage application:

```ts
// packages/app/src/components/catalog/EntityPage.tsx
import {
  EntityTravisCIContent,
  EntityTravisCIOverviewCard,
  isTravisciAvailable,
} from '@kozmoai/backstage-plugin-travis-ci';
```

4. Add plugin to the `EntityPage.tsx` source file:

```tsx
// packages/app/src/components/catalog/EntityPage.tsx
export const cicdContent = (
  <EntitySwitch>
    <EntitySwitch.Case if={isTravisciAvailable}>
      <EntityTravisCIContent />
    </EntitySwitch.Case>
    ...
  </EntitySwitch>
);
```

5. Add a recent Travis-CI builds widget/card to the overview tab to the [entityPage.tsx](https://github.com/backstage/backstage/blob/master/packages/app/src/components/catalog/EntityPage.tsx) source file:

```tsx
export const cicdCard = (
  <EntitySwitch>
    <EntitySwitch.Case if={isTravisciAvailable}>
      <Grid item sm={6}>
        <EntityTravisCIOverviewCard />
      </Grid>
    </EntitySwitch.Case>
  </EntitySwitch>
);
```

## How to use Travis-ci plugin in Backstage

Travis-ci plugin is a part of the Backstage sample app. To start using it for your component, you have to:

1. Add an annotation to the yaml config file of a component:

```yml
travis-ci.com/repo-slug: <owner-name>/<project-name>
```

2. Add your developer api key to the environment variables of your backstage backend server (you can find it in https://travis-ci.com/account/preferences), in the form of the word 'token' followed by your api key. So it should look like this:

   `TRAVISCI_AUTH_TOKEN="token <your-api-key>"`

## Developing the plugin locally

The easiest way is to clone the plugin repo into the `plugins/` directory of your backstage code base:

```sh
git clone https://github.com/kozmoai/backstage-plugin-travis-ci.git travis-ci
```

and run `yarn install` in the root backstage directory - it will create a symbolic link, so the dependency will be provided from the source code instead of node_modules package.

## Links

- [Backstage](https://backstage.io)
- Get hosted, managed Backstage for your company: https://glint.io
npm package: @kozmoai/catalog-backend-module-aws
Description: A set of Backstage catalog providers for AWS
Latest version: 2.2.1

# Catalog Backend Module for AWS

This is an extension module to the plugin-catalog-backend plugin, providing
entity providers to read AWS objects as Backstage Entities.

You will need to configure the providers in your catalog.ts file in your backstage backend:

```typescript
import {
  AWSLambdaFunctionProvider,
  AWSS3BucketProvider,
  AWSIAMUserProvider,
  AWSEC2Provider,
} from '@kozmoai/catalog-backend-module-aws';

export default async function createPlugin(
  env: PluginEnvironment,
): Promise<Router> {
  const builder = await CatalogBuilder.create(env);
  const s3Provider = AWSS3BucketProvider.fromConfig(config, env);
  const lambdaProvider = AWSLambdaFunctionProvider.fromConfig(config, env);
  const iamUserProvider = AWSIAMUserProvider.fromConfig(config, env);
  const ec2Provider = AWSEC2Provider.fromConfig(config, env);
  const awsAccountsProvider = AWSOrganizationAccountsProvider.fromConfig(
    config,
    env,
  );

  builder.addEntityProvider(s3Provider);
  builder.addEntityProvider(lambdaProvider);
  builder.addEntityProvider(iamUserProvider);
  builder.addEntityProvider(ec2Provider);
  builder.addEntityProvider(awsAccountsProvider);

  s3Provider.run();
  lambdaProvider.run();
  iamUserProvider.run();
  ec2Provider.run();
  awsAccountsProvider.run();

  const { processingEngine, router } = await builder.build();
  await processingEngine.start();

  // ...

  return router;
}
```
npm package: @kozmoai/kozmo-backstage-entity-validator
Description: Backstage entity validator library
Author: kozmoai
Latest version: 2.4.9

# Kozmo Backstage entity validator

This is a library package used to validate entity files.

It exports two methods:

```typescript
export const validateFromFile: (
  filepath: string,
  verbose: boolean,
  customAnnotationSchemaLocation: string,
) => Promise<void>;
export const validate: (
  fileContents: string,
  verbose: boolean,
  customAnnotationSchemaLocation: string,
) => Promise<void>;
```