{"id":32122491,"url":"https://github.com/konveyor/editor-extensions","last_synced_at":"2026-03-07T11:14:39.952Z","repository":{"id":258151624,"uuid":"860444348","full_name":"konveyor/editor-extensions","owner":"konveyor","description":"VSCode extension for Konveyor.io","archived":false,"fork":false,"pushed_at":"2026-03-05T09:58:35.000Z","size":224863,"stargazers_count":4,"open_issues_count":102,"forks_count":25,"subscribers_count":12,"default_branch":"main","last_synced_at":"2026-03-05T13:58:33.562Z","etag":null,"topics":["application-modernization","ast","genai","generative-ai","java","language-server-protocol","lsp","migration","migration-tool","migration-tooling","modernization","static-code-analysis"],"latest_commit_sha":null,"homepage":"https://konveyor.io","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/konveyor.png","metadata":{"files":{"readme":"README.md","changelog":"changes/template.yaml","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":"docs/roadmap/.lintstagedrc.json","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-09-20T12:54:57.000Z","updated_at":"2026-03-04T20:07:09.000Z","dependencies_parsed_at":"2025-04-29T20:26:24.316Z","dependency_job_id":"a3d9f8d7-29ed-4cce-84f1-51f8d0f45171","html_url":"https://github.com/konveyor/editor-extensions","commit_stats":null,"previous_names":["konveyor/editor-extensions"],"tags_count":73,"template":false,"template_full_name":null,"purl":"pkg:github/konveyor/editor-extensions","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/konveyor%2Feditor-extensions","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/konveyor%2Feditor-extensions/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/konveyor%2Feditor-extensions/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/konveyor%2Feditor-extensions/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/konveyor","download_url":"https://codeload.github.com/konveyor/editor-extensions/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/konveyor%2Feditor-extensions/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30212114,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-07T09:02:10.694Z","status":"ssl_error","status_checked_at":"2026-03-07T09:02:08.429Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["application-modernization","ast","genai","generative-ai","java","language-server-protocol","lsp","migration","migration-tool","migration-tooling","modernization","static-code-analysis"],"created_at":"2025-10-20T20:51:02.629Z","updated_at":"2026-03-07T11:14:39.917Z","avatar_url":"https://github.com/konveyor.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Konveyor Editor Extensions\n\n## Build and Test Status\n\n| Branch | Last Merge CI                                                                                                                                                                                                   | Nightly CI                                                                                                                                                                                                                                    |\n| ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| main   | [![CI (repo level)](https://github.com/konveyor/editor-extensions/actions/workflows/ci-repo.yml/badge.svg?branch=main\u0026event=push)](https://github.com/konveyor/editor-extensions/actions/workflows/ci-repo.yml) | [![Nightly CI (repo level)](https://github.com/konveyor/editor-extensions/actions/workflows/nightly-ci-repo.yaml/badge.svg?branch=main\u0026event=schedule)](https://github.com/konveyor/editor-extensions/actions/workflows/nightly-ci-repo.yaml) |\n\nThis repository contains the assets and source code for editor extensions.\n\n# Editor Extensions for Konveyor\n\nThis project is a VS Code extension designed to assist with migrating and modernizing applications using Konveyor. The extension includes a web-based UI built with Vite and an extension backend bundled with Webpack.\n\n## Getting Started\n\nTo set up and run the extension, follow the steps below.\n\n### Prerequisites\n\nEnsure that you have the following installed:\n\n- [Node.js](https://nodejs.org/) (LTS version recommended - see [.nvmrc](.nvmrc) for the version used by the project)\n- [npm](https://www.npmjs.com/) (v10.5.2 or higher - enforced by engine requirements)\n- [Visual Studio Code](https://code.visualstudio.com/)\n\n### Installation\n\n1. Clone the repository:\n\n   ```bash\n   git clone https://github.com/konveyor/editor-extensions\n   cd editor-extensions\n   ```\n\n2. Install the dependencies for both the extension and the web UI:\n\n   ```bash\n   npm install\n   ```\n\n3. Download the necessary assets to run the Kai server:\n\n   For development (recommended):\n\n   ```bash\n   # This will fetch the latest assets from main branch\n   # Requires GitHub CLI (gh) to be installed and authenticated\n   npm run collect-assets:dev\n   ```\n\n   For release version:\n\n   ```bash\n   # This will fetch assets from release v0.1.0 (default)\n   # To use a different release version:\n   # npm run collect-assets -- --release-tag=v0.1.1\n   npm run collect-assets\n   ```\n\n   Note: For development, we recommend using `collect-assets:dev` as it ensures your runtime assets match the latest code from the main branch. The regular `collect-assets` command uses a specific release version which may be outdated for development purposes.\n\n### Running the Extension in Development Mode\n\nOnce you've installed all dependencies, and downloaded the runtime assets, you can run the\nextension in development mode by following these steps:\n\nPress the F5 key inside Visual Studio Code to open a new Extension Development Host window.\n\nThis command starts the `npm run dev` script, performing the following actions:\n\n- Compiles the shared code in watch mode\n- Starts the Vite dev server for the webview UI\n- Compiles the vscode extension in watch mode (to automatically rebuild the extension on file changes)\n\nNote: The extension requires vscode to be open on a workspace. It will not be visible in the\nExtension Development Host window until you open a folder.\n\nInside the Extension Development Host window, press Ctrl+Shift+P (or Cmd+Shift+P on Mac) to open\nthe Command Palette and type `View: Show Konveyor` to open the Konveyor UI within the host.\n\n### Watch Mode\n\nIf you want to run the extension in watch mode separately:\n\nUse the following npm command to run the extension and webview UI in watch mode:\n\n```bash\nnpm run dev\n```\n\n### Linting and formatting code\n\nThe `eslint` and `prettier` packages are used across the repo to standardize formatting and enforce\nsome code conventions. At `npm install` time, a git pre-commit hook is setup by [husky](https://github.com/typicode/husky) that will run [lint-staged](https://github.com/lint-staged/lint-staged) when\n`git commit` is run. This will run `eslint` and `prettier` rule and formatting against any staged\nchanges. Keeping these steps automated at `git commit` time helps ensure consistent formatting\nand fewer linting fails in CI.\n\n## Building the Extension into a vsix archive that can be installed to vscode\n\nTo build the extension and generate a vsix, run the following commands:\n\n```bash\nnpm run build\nnpm run collect-assets\nnpm run dist\nnpm run package\n```\n\nThese command:\n\n- Compiles the shared, webview-ui and vcsode sources using Vite and Webpack\n- Download all of the runtime assets required\n- Copy everything needed for the vsix to the `dist/` folder\n- Package the contents of `dist/` into a vsix archive\n\nWhen packaging is complete, the vsix will be `dist/konveyor-ai-0.1.0.vsix` (version number will match\nthe `vscode/package.json` version number).\n\n## Downloading the extension's runtime assets\n\nThe extension requires a few assets to be downloaded and available to function. While preparing\nthe dev environment, or when packaging, the extension will download GitHub release asset and\nextract the necessary component.\n\nThe core components needed to support the extension are:\n\n- **kai analyzer rpc server** \u0026rarr; The json-rpc server manages source code analysis.\n\n- **jdt.ls bundle** \u0026rarr; To support the use of jdt.ls by the analyzer, the\n  [Konveyor java-analyzer-bundle](https://github.com/konveyor/java-analyzer-bundle) is used.\n\n- **opensource labels file** \u0026rarr; A maven index file of open source libraries used by the analyzer.\n\n- **rulesets** \u0026rarr; Base set of [Konveyor's static code analysis rules](https://github.com/konveyor/rulesets)\n  to drive analysis.\n\nAll of these components are downloaded and unpacked into the correct place by the [collect-assets.js](./scripts/collect-assets.js)\nscript. There are cli parameters to override the default configuration values. The assets can be\ndownloaded from a GitHub release, or for a GitHub action workflow artifacts.\n\nThe base use case to download everything from the default release locations:\n\n```bash\nnpm run collect-assets\n```\n\nTo download from a specific release `v01.0-special.0`:\n\n```bash\nnpm run collect-assets -- --release-tag=v0.1.0-special.0\n```\n\nTo download from a release in a fork of the kai repository:\n\n```bash\nnpm run collect-assets -- \\\n    --org=myUserName1 \\\n    --repo=kaiForked \\\n    --release=v0.1.2\n```\n\nTo download from the latest successful build workflow on the head of the main branch of the kai repository:\n\n```bash\nGITHUB_TOKEN=$(gh auth token) npm run collect-assets -- --use-workflow-artifacts\n```\n\nTo download from the latest successful build workflow for a specific PR:\n\n```bash\nGITHUB_TOKEN=$(gh auth token) npm run collect-assets -- --use-workflow-artifacts --pr=123\n```\n\n### GITHUB_TOKEN for collect-assets\n\nUsing a `GITHUB_TOKEN` is good to avoid rate limiting when downloading from the releases,\nand to allow the download of workflow artifacts. Workflow artifacts may only be downloaded\nby a user who is logged in to GitHub. The REST api verifies the user as logged in using a bearer\ntoken. The collect-asset script will send the bearer token as long as it is set in the `GITHUB_TOKEN`\nenvironment variable.\n\nThere are a few common ways to get your token:\n\n- Use the `gh` [command line tool](https://cli.github.com/) to [login](https://cli.github.com/manual/gh_auth_login).\n  Once logged in, the command `gh auth token` will show your token. The bash command to use the workflow artifacts\n  as the download source uses this as the source for the bearer token.\n\n- Open the [Tokens page](https://github.com/settings/tokens) on GitHub and generate a new token.\n  - For new tokens, only the **Public repositories** \"Read-only access to public repositories\" access is needed.\n\n  - For classic tokens, only the **public_repo** scope is needed.\n\n## Project Structure\n\nThe project uses a number of npm workspaces to organize the code.\n\nProject workspaces:\n\n- [`extra-types`](./extra-types/) \u003cbr\u003e\n  Extra TypeScript types useful in our projects (i.e. make types on `[].filter(Boolean)` act nicely).\n\n- [`shared`](./shared/) \u003cbr\u003e\n  Contains the types and code shared between the workspaces, especially types and actions\n  that bridge vscode extension code to the webview code.\n\n- [`vscode`](./vscode/) \u003cbr\u003e\n  The main vscode extension sources. Webpack is used to transpile and package the extension.\n  In dev mode, webviews are dynamically incorporated via the vite dev server. In build mode,\n  webview packaged code is copied in place and accessed statically.\n\n- [`webview-ui`](./webview-ui/) \u003cbr\u003e\n  Webview UI sources built with React and PatternFly. Vite is used to transpile and package\n  the views.\n\n- [`agentic`](./agentic/) \u003cbr\u003e\n  Contains the agentic workflows that support generating solutions.\n\n- [`test`](tests/) \u003cbr\u003e\n  End-to-end (E2E) tests built with Playwright.\n\nNon workspace folders:\n\n- [`docs`](./docs/) \u003cbr\u003e\n  Project documentation, roadmaps and wireframes.\n\n- [`scripts`](./scripts/) \u003cbr\u003e\n  Javascript scripts used to setup the environment, build, and package the project.\n\n## Versioning \u0026 Release Policy\n\nWe follow a structured odd/even release scheme to keep prereleases and stable releases predictable.\n\nThis strategy intentionally works around the VS Code Marketplace not supporting SemVer pre-release identifiers. Per the official docs, only major.minor.patch is supported and pre-releases must use distinct versions published with the `--pre-release` flag; the docs recommend using even minor versions for stable and odd minor versions for pre-release series (for example, 0.2._ release vs 0.3._ pre-release). See: [VS Code – Pre-release extensions](https://code.visualstudio.com/api/working-with-extensions/publishing-extension#prerelease-extensions).\n\n- **Main branch:**\n  - `package.json` is always pinned to the next even minor version (e.g. 0.4.0, 0.6.0, …).\n  - Merges to main do not change this version directly.\n  - Prereleases are published from tags on main using odd minor numbers (0.3.Z, 0.5.Z, …).\n- **Automatic prereleases:**\n  - Daily, the [scheduled-prerelease workflow](.github/workflows/scheduled-prerelease.yml) automatically builds, tests, publishes, and tags a new prerelease version.\n  - The workflow skips releases if there are no new commits since the last prerelease.\n  - Manual prereleases can also be triggered via `workflow_dispatch` when needed.\n- **Prerelease versioning:**\n  - Prereleases use odd minor versions (e.g. v0.3.4) and are published with `vsce publish --pre-release`.\n  - Patch numbers increment sequentially (0.3.1, 0.3.2, …) based on existing tags.\n- **Stable releases:**\n  - Use the **[Cut Release](.github/workflows/cut-release.yml)** workflow (`Actions → Cut Release → Run workflow`).\n  - This builds, tests, publishes to the marketplaces, creates the tag and GitHub Release,\n    then assembles the changelog, creates the `release-X.Y` branch, and bumps main to the next version.\n  - Version in that branch becomes 0.4.0, and patch bumps (0.4.1, 0.4.2, …) are published as stable.\n  - For patch releases on a release branch, use the **[Patch Release](.github/workflows/patch-release.yml)** workflow.\n  - Marketplace will then show 0.4.Z as the latest stable.\n- **Cycle:**\n  - After cutting `release-0.4`, main's `package.json` is automatically bumped to 0.6.0.\n  - Future prereleases are tagged as 0.5.Z.\n  - This odd/even cadence repeats for each new cycle.\n\n## Contributing\n\nPlease read our [Contributing Guide](https://github.com/konveyor/community/blob/main/CONTRIBUTING.md) before submitting a pull request.\n\n### Changelog Fragments\n\nThis project uses **changelog fragments** to track user-facing changes. Instead of editing\na single `CHANGELOG.md` file (which causes merge conflicts), each PR that introduces a\nuser-facing change adds a small YAML file to `changes/unreleased/`.\n\n**When is a fragment required?**\n\nCI requires a changelog fragment for PRs with these title prefixes:\n\n- `:sparkles:` (feature)\n- `:bug:` (bugfix)\n- `:warning:` (breaking change)\n\nPRs with other prefixes (`:seedling:`, `:test_tube:`, `:book:`, `:ghost:`) do not require\na fragment.\n\n**How to create a fragment:**\n\n1. Copy the template or use the helper script:\n\n   ```bash\n   node scripts/changelog.js create \u003cpr-number\u003e-\u003cshort-description\u003e \u003ckind\u003e\n   ```\n\n2. Fill in the `kind` and `description` fields:\n\n   ```yaml\n   kind: bugfix\n   description: \u003e\n     Fixed authentication flow when using SSO providers.\n   ```\n\n   Valid kinds: `feature`, `bugfix`, `enhancement`, `deprecation`, `breaking`\n\n3. Optionally add `extensions` to target specific extension changelogs:\n\n   ```yaml\n   kind: bugfix\n   description: \u003e\n     Fixed authentication flow when using SSO providers.\n   extensions:\n     - core\n     - java\n   ```\n\n   Valid extensions: `core`, `java`, `javascript`, `go`, `csharp`, `konveyor`\n\n   If `extensions` is omitted, the fragment defaults to `core` only. A single fragment\n   can target multiple extensions when the change applies across them.\n\n4. Commit the fragment file with your PR.\n\n**Helper script:**\n\n```bash\n# Create a fragment for core (default)\nnode scripts/changelog.js create 1234-fix-auth bugfix\n\n# Create a fragment targeting specific extensions\nnode scripts/changelog.js create 1234-fix-auth bugfix --extension java --extension core\n\n# Validate fragments are well-formed\nnode scripts/changelog.js validate\n\n# Assemble fragments into per-extension CHANGELOG.md files (used during releases)\nnode scripts/changelog.js assemble v0.4.0\n```\n\nAt release time, all fragments are assembled into each extension's `CHANGELOG.md`\n(e.g. `vscode/core/CHANGELOG.md`, `vscode/java/CHANGELOG.md`) and the individual\nfragment files are removed.\n\n## Code of Conduct\n\nThis project follows the Konveyor [Code of Conduct](https://github.com/konveyor/community/blob/main/CODE_OF_CONDUCT.md).\n\n## License\n\nSee [LICENSE](LICENSE) file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkonveyor%2Feditor-extensions","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkonveyor%2Feditor-extensions","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkonveyor%2Feditor-extensions/lists"}