diff --git a/.github/workflows/release-workflow.yml b/.github/workflows/release-workflow.yml index c25beca..0a56628 100644 --- a/.github/workflows/release-workflow.yml +++ b/.github/workflows/release-workflow.yml @@ -82,12 +82,13 @@ jobs: commit_user_name: github-actions commit_user_email: github-actions@github.com commit_author: Author - file_pattern: 'package.json package-lock.json' + file_pattern: 'package.json package-lock.json documentation/vs-code-plugin/antora.yml' - name: Create Github release uses: softprops/action-gh-release@de2c0eb89ae2a093876385947365aca7b0e5f844 # v0.1.15 with: body: "Release version ${{ env.RELEASE_VERSION }}." + generate_release_notes: true tag_name: v${{ env.RELEASE_VERSION }} target_commitish: ${{ env.release_branch_name }} draft: false diff --git a/README.md b/README.md index a67f1df..c9eddf1 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,8 @@ For RDF/Turtle documents, it features syntax highlighting, document outline and automatic syntax validation. For SAMM Aspect Models, the extension additionally features *Go to Definition* for elements and semantic model validation. +For installation, prerequisites, and a sample walkthrough, see the [user guide](https://eclipse-esmf.github.io/vs-code-plugin/introduction.html). + ## Configuration - `semantic-models.languageServerSettings.activateEmbeddedLanguageServer` (boolean, default: `true`) @@ -34,10 +36,13 @@ Use the command `Semantic Models: Select SAMM CLI Executable` to choose either: ## Features -- Prefix `Go to Definition` inside Turtle files. +- `Go to Definition` of referenced elements within the same file, current workspace and also for SAMM elements. - Two-level validation: - - Fast validation while typing from the regular Turtle parser diagnostics provided by the server (appear in the editor and `Problems`). - - Full Aspect validation from the server for model-level issues (results shown in notifications and status bar). + - Fast validation while typing from the regular Turtle parser. + - Full Aspect Model validation for model-level issues. +- Resolve Aspect Models from a GitHub repository: + - Configure GitHub repositories that contain Aspect Models in extension settings. + - Reference elements of these Aspect Models. Features like validation and `Go to Definition` automatically fetch the model from GitHub. - Manual validation command: - `Semantic Models: Validate Document Now` @@ -46,31 +51,29 @@ Use the command `Semantic Models: Select SAMM CLI Executable` to choose either: 1. In this extension project, install the dependencies using `npm install`. 2. Build the extension with `npm run build`. 3. Press `F5` in VS Code to open an Extension Development Host. -4. Open an RDF/Turtle file such as [samples/valid.ttl](samples/valid.ttl) or your Aspect model file. +4. Open any RDF/Turtle. -If the server cannot be downloaded or started, the extension shows an error and writes a detailed message in the Turtle LSP output channel. +If the server cannot be downloaded or started, the extension shows an error and writes a detailed message in the Semantic Models output channel. ## Validation Behavior Fast feedback while typing: -- Driven by the server's regular Turtle parsing diagnostics. -- Results appear in the editor and `Problems` view. -- Intended for quick editor feedback while you type. +- Issues are shown immediately in the editor and Problems view. +- Intended for quick feedback while you type. Full Aspect validation: - Runs on the server, not in the extension. -- Results are displayed in notification messages (for manual validation) or status bar (for save-triggered validation). +- Results appear in the editor and `Problems` view. - Always uses detailed server validation messaging when the server returns report text. -- Always shows visible progress for long-running validation. -- Runs automatically when saving and can also be triggered manually. +- Runs automatically after a 4 second delay and when saving. When each validation runs: -- On type: fast syntax feedback only. -- On save: heavy Aspect validation for Turtle documents. -- Manual: `Semantic Models: Validate Document Now` for the active Turtle document. User gets a summary message with validation results. +- While typing: Turtle syntax feedback. +- After a pause and on save: full Aspect Model validation. +- Manual: `Semantic Models: Validate Document Now` for the active Turtle document. ## Commands @@ -80,28 +83,3 @@ When each validation runs: - Opens a quick pick with the latest ten GitHub releases and a custom-path option. - `Semantic Models: Restart Language Server Connection` - Restarts the language server and reconnects the client. - -## Verify Go To Definition - -Use [samples/valid.ttl](samples/valid.ttl): - -1. Open `samples/valid.ttl`. -2. Place the cursor on `foaf:Person`, `foaf:name`, or another prefixed name. -3. Run `Go to Definition`. -4. Confirm that VS Code jumps to the matching `@prefix` declaration. - -Expected behavior: - -- `foaf:*` resolves to `@prefix foaf: ...`. -- `ex:*` resolves to `@prefix ex: ...`. - -## Verify Aspect Validation - -Use [samples/org.eclipse.esmf.test/1.0.0/Aspect.ttl](samples/org.eclipse.esmf.test/1.0.0/Aspect.ttl) or [samples/invalid.ttl](samples/invalid.ttl). - -Manual check: - -1. Open an Aspect model file. -2. Run `Semantic Models: Validate Document Now`. -3. Wait for validation to complete. -4. Confirm that validation results are displayed in a notification. diff --git a/documentation/vs-code-plugin/antora.yml b/documentation/vs-code-plugin/antora.yml index b2dd706..666e6eb 100644 --- a/documentation/vs-code-plugin/antora.yml +++ b/documentation/vs-code-plugin/antora.yml @@ -1,4 +1,6 @@ name: vs-code-plugin title: ESMF VS Code Plugin version: master -start_page: ROOT:index.adoc +start_page: ROOT:introduction.adoc +nav: + - modules/ROOT/nav.adoc diff --git a/documentation/vs-code-plugin/modules/ROOT/images/walkthrough_welcome.png b/documentation/vs-code-plugin/modules/ROOT/images/walkthrough_welcome.png new file mode 100644 index 0000000..9c9842d Binary files /dev/null and b/documentation/vs-code-plugin/modules/ROOT/images/walkthrough_welcome.png differ diff --git a/documentation/vs-code-plugin/modules/ROOT/nav.adoc b/documentation/vs-code-plugin/modules/ROOT/nav.adoc new file mode 100644 index 0000000..5ae3c92 --- /dev/null +++ b/documentation/vs-code-plugin/modules/ROOT/nav.adoc @@ -0,0 +1,7 @@ +* xref:introduction.adoc[] +* xref:system-requirements.adoc[] +* xref:installation.adoc[Installation] +* xref:getting-started.adoc[] +* xref:features.adoc[] +* xref:support.adoc[] +* xref:release-notes.adoc[] \ No newline at end of file diff --git a/documentation/vs-code-plugin/modules/ROOT/pages/features.adoc b/documentation/vs-code-plugin/modules/ROOT/pages/features.adoc new file mode 100644 index 0000000..59010e1 --- /dev/null +++ b/documentation/vs-code-plugin/modules/ROOT/pages/features.adoc @@ -0,0 +1,44 @@ += Features + +== Editing RDF/Turtle + +* Syntax highlighting for `.ttl` files. +* Document outline for navigating the current file. +* Automatic syntax validation while typing, with diagnostics in the editor and the *Problems* view. + +== Working with Aspect Models + +* *Go to Definition* for referenced elements in the current file, workspace, and SAMM vocabulary. +* Aspect Model validation after a pause in editing and when saving. +* On-demand validation with *Semantic Models: Validate Document Now* from the Command Palette or editor context menu. + +Validation issues appear in the editor and the Problems view. + +[[github-model-resolution]] +== Resolving Aspect Models from GitHub + +Enables *Go to Definition* and validation of Aspect Model element references stored in a GitHub repository outside the local workspace. + +Open *Preferences: Open User Settings (JSON)* from the Command Palette and add the repositories to `semantic-models.modelResolution.githubRepositories`. +E.g. the following configuration enables to resolve elements from the extension samples: + +[source,json] +---- +{ + "semantic-models.modelResolution.githubRepositories": [ + { + "repository": "eclipse-esmf/esmf-examples", + "branch": "main", + "path": "aspect-models" + } + ] +} +---- + +Set `repository` to `owner/repository` and `path` to the folder containing the models. +To use a tag, replace `branch` with `tag`. Do not set both. +For private repositories, add a `token` with read access in your user settings. +Read more about how to create a GitHub Token in the https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens[GitHub docs,opts=nofollow]. + +Open a local Aspect Model that references an element in the configured repository, then use *Go to Definition* or validate the document as usual. +The extension will automatically download the required models from GitHub. diff --git a/documentation/vs-code-plugin/modules/ROOT/pages/getting-started.adoc b/documentation/vs-code-plugin/modules/ROOT/pages/getting-started.adoc new file mode 100644 index 0000000..65c9138 --- /dev/null +++ b/documentation/vs-code-plugin/modules/ROOT/pages/getting-started.adoc @@ -0,0 +1,47 @@ += Getting Started + +== Opening the example workspace + +First, complete the xref:installation.adoc[installation and SAMM CLI setup]. + +1. Open the https://github.com/eclipse-esmf/esmf-examples[esmf-examples repository,opts=nofollow] and choose *Code -> Download ZIP*. Extract the archive locally. +2. In VS Code, choose *File -> Open Folder...* and open the extracted repository. +3. Open any Aspect Model and confirm that the language mode in the status bar is *Turtle*. +4. Wait for the language server to start. Syntax highlighting and the outline view should become available. + +== Validating and navigating a model + +1. Create an arbitrary problem, e.g., by removing the closing dot of a triple. +2. Open *View -> Problems* and select the issue about the just removed dot. +3. Re-add the dot. +4. Wait for the validation to complete. The problem reported for the missing dot should disappear. + +Turtle syntax validation runs while typing. Aspect Model validation runs after a pause in editing and when saving. + +.Example of validation diagnostics +image::walkthrough_validation.png[width=100%] + +If setup or validation fails, see xref:support.adoc[Support]. + +== Creating your own workspace + +Create a new folder for your models and open it in VS Code. +Models must be organized in a hierarchical manner, file paths must follow the structure: `namespace/version/name.ttl`. + +[source,subs=+quotes] +---- +_models root (open folder in VS Code)_ +└── com.mycompany.myproduct + ├── 1.0.0 + │   ├── MyAspect.ttl + │   ├── MyEntity.ttl + │   └── myProperty.ttl + └── 1.1.0 + └── MyAspect.ttl +---- + +The namespace and version directories must match the namespace and version in the model URNs. +For example, files in `com.mycompany.myproduct/1.0.0` use `@prefix : .`. + +Read more about xref:esmf-developer-guide:tooling-guide:samm-cli.adoc#models-directory-structure[models directory structure,opts=nofollow] +and xref:esmf-developer-guide:tooling-guide:java-aspect-tooling.adoc#understanding-model-resolution[model resolution,opts=nofollow]. diff --git a/documentation/vs-code-plugin/modules/ROOT/pages/index.adoc b/documentation/vs-code-plugin/modules/ROOT/pages/index.adoc deleted file mode 100644 index 19fdfa9..0000000 --- a/documentation/vs-code-plugin/modules/ROOT/pages/index.adoc +++ /dev/null @@ -1,55 +0,0 @@ -//// -Copyright (c) 2026 Robert Bosch Manufacturing Solutions GmbH - -See the AUTHORS file(s) distributed with this work for additional -information regarding authorship. - -This Source Code Form is subject to the terms of the Mozilla Public -License, v. 2.0. If a copy of the MPL was not distributed with this -file, You can obtain one at https://mozilla.org/MPL/2.0/. - -SPDX-License-Identifier: MPL-2.0 -//// - -= Semantic Models for VS Code - -Semantic Models for VS Code is a Visual Studio Code extension for editing -RDF/Turtle documents, including SAMM Aspect Models. - -For RDF/Turtle documents, it features syntax highlighting, document outline and -automatic syntax validation. For SAMM Aspect Models, the extension additionally -features *Go to Definition* for elements and semantic model validation. - -== Getting Started - -=== Installation - -Semantic Models for VS Code can be installed either manually or from the VS Code -Marketplace. - -For a manual installation, open the -https://github.com/eclipse-esmf/esmf-vs-code-plugin/releases[Releases] page and -download the `.vsix` file of the latest version. In VS Code, open the Extensions -view, click the `...` menu in the upper right corner of the view and select -"Install from VSIX...". - -== Configuration - -After the installation of the extension, the initial setup requires you to -either download or manually select a SAMM CLI, which provides the required SAMM -Language Server. You can also repeat this step later to change your -configuration by using the command +Select SAMM CLI Executable+ from the Command -Palette. - -image::walkthrough_select_samm_cli.png[width=100%] - - -== Model Validation - -To validate an RDF/Turtle file or a SAMM Aspect Model, simply open it in VS -Code. The extension will automatically connect to the language server and -display any validation issues in the Problems view. You can also trigger -validation manually using the 'Validate Document Now' command from the Command -Palette. - -image::walkthrough_validation.png[width=100%] diff --git a/documentation/vs-code-plugin/modules/ROOT/pages/installation.adoc b/documentation/vs-code-plugin/modules/ROOT/pages/installation.adoc new file mode 100644 index 0000000..bc2843b --- /dev/null +++ b/documentation/vs-code-plugin/modules/ROOT/pages/installation.adoc @@ -0,0 +1,24 @@ += Install the Semantic Models for VS Code Extension + +First, check the xref:system-requirements.adoc[system requirements]. + +== Installing the extension + +Open the *Extensions* view in VS Code, search for *Semantic Models* published by *eclipse-esmf*, and select *Install*. +You can also open https://marketplace.visualstudio.com/items?itemName=eclipse-esmf.semantic-models[Semantic Models on Visual Studio Marketplace,window=_blank,opts=nofollow]. + +For a manual installation, download the latest `.vsix` file from the https://github.com/eclipse-esmf/esmf-vs-code-plugin/releases[extension releases,opts=nofollow]. +In VS Code, open *View -> Command Palette*, run *Extensions: Install from VSIX...*, and select the downloaded file. + +== Configuration + +After successful extension installation, a welcome screen should greet you: + +image::walkthrough_welcome.png[width=100%] + +Follow the instructions on the welcome screen to configure the extension. + +If the welcome screen does not open, you need to manually configure the extension. Open *View -> Command Palette*, run *Semantic Models: Select SAMM CLI Executable*. +Configuring this executable is necessary for the extension to work properly. + +If setup or validation fails, see xref:support.adoc[Support]. diff --git a/documentation/vs-code-plugin/modules/ROOT/pages/introduction.adoc b/documentation/vs-code-plugin/modules/ROOT/pages/introduction.adoc new file mode 100644 index 0000000..2386693 --- /dev/null +++ b/documentation/vs-code-plugin/modules/ROOT/pages/introduction.adoc @@ -0,0 +1,16 @@ += Introduction + +Semantic Models for VS Code is a Visual Studio Code extension for editing RDF/Turtle documents, +including xref:samm-specification:ROOT:index.adoc[SAMM Aspect Models,opts=nofollow] of the +xref:esmf-documentation:ROOT:index.adoc[Eclipse Semantic Modeling Framework (ESMF),opts=nofollow]. + +For RDF/Turtle documents, it features syntax highlighting, document outline and automatic syntax validation. +For SAMM Aspect Models, the extension additionally features *Go to Definition* for elements and semantic model validation. + +image::walkthrough_validation.png[width=100%] + +== Comparison with the Aspect Model Editor + +The xref:ame-guide:ROOT:introduction.adoc[Aspect Model Editor,opts=nofollow] provides graphical editing of Aspect Models. +The Semantic Models extension provides direct Turtle editing within VS Code, alongside its search, navigation and Git tools. +This is ideal for users like software developers who are familiar with SAMM, RDF/Turtle and VS Code. diff --git a/documentation/vs-code-plugin/modules/ROOT/pages/release-notes.adoc b/documentation/vs-code-plugin/modules/ROOT/pages/release-notes.adoc new file mode 100644 index 0000000..58e1da8 --- /dev/null +++ b/documentation/vs-code-plugin/modules/ROOT/pages/release-notes.adoc @@ -0,0 +1,3 @@ += Release Notes + +Find the release notes for the Semantic Models extension at the https://github.com/eclipse-esmf/esmf-vs-code-plugin/releases[GitHub releases overview^,opts=nofollow]. diff --git a/documentation/vs-code-plugin/modules/ROOT/pages/support.adoc b/documentation/vs-code-plugin/modules/ROOT/pages/support.adoc new file mode 100644 index 0000000..fe29b82 --- /dev/null +++ b/documentation/vs-code-plugin/modules/ROOT/pages/support.adoc @@ -0,0 +1,57 @@ += Support + +For troubleshooting, see the <> below. +Also make sure your system meets the xref:system-requirements.adoc[system requirements]. + +As the Semantic Models extension relies on the SAMM specification, also check out the xref:samm-specification:ROOT:index.adoc[SAMM Aspect Meta Model,opts=nofollow]. + +For further support, open an https://github.com/eclipse-esmf/esmf-vs-code-plugin/issues[issue in GitHub^,opts=nofollow]. +Include the following in your issue: + +* Steps to reproduce the issue. +* Expected behavior. +* Actual behavior. +* Operating system, VS Code version, extension version, and SAMM CLI version. +* Relevant screenshots, minimal Turtle files, and logs. Remove tokens and other sensitive data. + +[[known-issues]] +== Known issues + +[[selection-and-download-of-samm-cli-fails]] +=== SAMM CLI selection or download fails + +One possible cause is a GitHub API rate limit. Check the *Semantic Models* output channel for the reported error. +If the release picker or download fails, try selecting a manually downloaded CLI: + +1. Go to the https://github.com/eclipse-esmf/esmf-sdk/releases[ESMF SDK releases page^,opts=nofollow] and manually download the SAMM CLI for your platform from the latest release. +2. Extract the archive if necessary and move the cli to a suitable location for permanent storage. +3. Run *Semantic Models: Select SAMM CLI Executable* from the Command Palette. +4. Choose `Use custom SAMM CLI executable or jar file`, and select the downloaded executable or JAR file. + +[[language-server-stops-being-available]] +=== Language server stops being available + +If language features such as syntax highlighting are unavailable, it may be due to the language server not running. +To start or restart it manually, open the Command Palette (View -> Command Palette) and run `Semantic Models: Restart Language Server Connection`. + + +== Accessing the VS Code extension logs (for troubleshooting/debugging) + +To facilitate your troubleshooting efforts or when you need to compile detailed information for a GitHub issue, VS Code enables access to extension logs. + +*Opening extension logs* + +Open *View -> Output*. Select Semantic Models in the output dropdown menu. + +*Enabling detailed logging* + +The default logging level in VS Code is `info`. This might not be enough to understand the cause of certain issues. +In order to get a more complete picture, increase the logging level to `debug`. +Open *View -> Command Palette* and run *Developer: Set Log Level...*. +This allows you to configure the logging level either globally or on a per extension basis. +Select the Semantic Models extension and re-configure the logging level to e.g. `debug`. + +{nbsp} + +For general questions on semantic data structuring and the role of the Semantic Models extension, join the +https://chat.eclipse.org/#/room/#eclipse-semantic-modeling-framework:matrix.eclipse.org[ESMF Chat^,opts=nofollow]. diff --git a/documentation/vs-code-plugin/modules/ROOT/pages/system-requirements.adoc b/documentation/vs-code-plugin/modules/ROOT/pages/system-requirements.adoc new file mode 100644 index 0000000..dc3bb8b --- /dev/null +++ b/documentation/vs-code-plugin/modules/ROOT/pages/system-requirements.adoc @@ -0,0 +1,9 @@ += System Requirements + +* Visual Studio Code 1.110.0 or later, with permission to install extensions. +* Windows, macOS, or Linux, with a SAMM CLI distribution compatible with your operating system and CPU architecture. Check the https://github.com/eclipse-esmf/esmf-sdk/releases[SAMM CLI releases,opts=nofollow]. + +== Network Access + +Internet access is required to download the extension and SAMM CLI, check for updates, and resolve models from GitHub. +The language server uses a local TCP connection on port `1846` by default. diff --git a/media/walkthrough_select_samm_cli.png b/media/walkthrough_select_samm_cli.png index 939831f..78668ef 100644 Binary files a/media/walkthrough_select_samm_cli.png and b/media/walkthrough_select_samm_cli.png differ diff --git a/media/walkthrough_validation.png b/media/walkthrough_validation.png index c39e37f..6b0b830 100644 Binary files a/media/walkthrough_validation.png and b/media/walkthrough_validation.png differ diff --git a/package.json b/package.json index a4ed6f3..55810d9 100644 --- a/package.json +++ b/package.json @@ -160,7 +160,7 @@ { "id": "select-samm-cli", "title": "Select a SAMM CLI Executable", - "description": "Complete the initial setup by downloading or selecting a SAMM CLI executable, which provides the required SAMM Language Server.\n[Download or Select SAMM CLI](command:turtle.selectSammCliExecutable)", + "description": "Complete the initial setup by downloading or selecting a SAMM CLI executable, which provides the required SAMM Language Server.\n[Download or Select SAMM CLI](command:semantic-models.selectSammCliExecutable)", "media": { "image": "media/walkthrough_select_samm_cli.png", "altText": "Example of selecting a SAMM CLI executable" @@ -172,7 +172,7 @@ "description": "To validate an RDF/Turtle file or a SAMM Aspect Model, simply open it in VS Code. The extension will automatically connect to the language server and display any validation issues in the Problems view. You can also trigger validation manually using the 'Validate Document Now' command from the Command Palette.", "media": { "image": "media/walkthrough_validation.png", - "altText": "Example of validation issues shown in the Problems panel" + "altText": "Example of validation issues shown in the Problems view" } } ] diff --git a/samples/invalid.ttl b/samples/invalid.ttl deleted file mode 100644 index d5a3189..0000000 --- a/samples/invalid.ttl +++ /dev/null @@ -1,5 +0,0 @@ -# Invalid Turtle — missing dot after prefix declaration and bad triple -@prefix ex: . - -ex:Alice foaf:name "Alice" . # missing . terminator -ex:Bob ex:knows ex:Alice . # foaf:name used without prefix diff --git a/samples/org.eclipse.esmf.test/1.0.0/Aspect.ttl b/samples/org.eclipse.esmf.test/1.0.0/Aspect.ttl deleted file mode 100644 index d1ba9d0..0000000 --- a/samples/org.eclipse.esmf.test/1.0.0/Aspect.ttl +++ /dev/null @@ -1,23 +0,0 @@ -# Copyright (c) 2026 Robert Bosch Manufacturing Solutions GmbH -# -# See the AUTHORS file(s) distributed with this work for additional -# information regarding authorship. -# -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at https://mozilla.org/MPL/2.0/. -# -# SPDX-License-Identifier: MPL-2.0 - -@prefix : . -@prefix samm: . -@prefix samm-c: . -@prefix xsd: . -@prefix unit: . - -:Aspect a samm:Aspect ; - samm:preferredName "Test Aspect"@en ; - samm:description "This is a test ription"@en ; - samm:description "This is a taaest ription"@de ; - samm:properties ( ) ; - samm:operations ( ) . diff --git a/samples/valid.ttl b/samples/valid.ttl deleted file mode 100644 index 628e8ee..0000000 --- a/samples/valid.ttl +++ /dev/null @@ -1,21 +0,0 @@ -# Copyright (c) 2026 Robert Bosch Manufacturing Solutions GmbH -# -# See the AUTHORS file(s) distributed with this work for additional -# information regarding authorship. -# -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at https://mozilla.org/MPL/2.0/. -# -# SPDX-License-Identifier: MPL-2.0 - -# Valid Turtle example -@prefix ex: . -@prefix foaf: . - -ex:Alice a foaf:Person ; - foaf:name "Alice" ; - foaf:knows ex:Bob . - -ex:Bob a foaf:Person ; - foaf:name "Bob" . diff --git a/src/extension.ts b/src/extension.ts index 59908d5..ff6d5c9 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -172,7 +172,7 @@ async function notifyTerminalRecoveryFailure(mode: LanguageServicesMode): Promis } type SammCliQuickPickItem = vscode.QuickPickItem & { - action: 'customPath' | 'release'; + action: 'customPath' | 'release' | 'help'; releaseTag?: string; }; @@ -207,8 +207,8 @@ async function selectSammCliExecutable(): Promise { if (releaseItems.length === 0) { releaseItems.push({ label: '$(error) No GitHub releases available', - detail: 'Failed to fetch releases from GitHub. Check output channel for details.', - action: 'release', + detail: 'Failed to fetch releases from GitHub. Click for help.', + action: 'help', }); } @@ -222,6 +222,11 @@ async function selectSammCliExecutable(): Promise { return; } + if (pick.action === 'help') { + await vscode.env.openExternal(vscode.Uri.parse('https://eclipse-esmf.github.io/vs-code-plugin/support.html#selection-and-download-of-samm-cli-fails')); + return; + } + let restartReason: string; if (pick.action === 'customPath') {