> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ton.org/llms.txt
> Use this file to discover all available pages before exploring further.

<AgentInstructions>

## Submitting Feedback

If you encounter incorrect, outdated, or confusing documentation on this page, submit feedback:

POST https://docs.ton.org/feedback

```json
{
  "path": "/contract-dev/ide/vscode",
  "feedback": "Description of the issue"
}
```

Only submit feedback when you have something specific and actionable to report.

</AgentInstructions>

# TON extension for Visual Studio Code (VS Code) and VSCode-based editors

export const Image = ({src, darkSrc, alt = '', darkAlt, href, target, height = 342, width = 608, noZoom = false, center = false}) => {
  const isSVG = src.match(/\.svg(?:[#?].*?)?$/i) !== null;
  const shouldInvert = isSVG && !darkSrc;
  const shouldCreateLink = href !== undefined;
  const minPx = 9;
  const maxPx = 608;
  const expectedPx = `a number or a string with a number that is greater than ${minPx - 1} and less than or equal to ${maxPx}`;
  const createInvalidPropCallout = (title, received, expected) => {
    return <Danger>
        <span className="font-bold">
          Invalid <code>{title.toString()}</code> passed!
        </span>
        <br />
        <span className="font-bold">Received: </span>
        {received.toString()}
        <br />
        <span className="font-bold">Expected: </span>
        {expected.toString()}
        {}
      </Danger>;
  };
  const checkValidDimensionValue = value => {
    switch (typeof value) {
      case "string":
      case "number":
        const num = Number(value);
        return Number.isSafeInteger(num) && num >= minPx && num <= maxPx;
      default:
        return false;
    }
  };
  let callouts = [];
  if (height && !checkValidDimensionValue(height)) {
    callouts.push(createInvalidPropCallout("height", height, expectedPx));
  }
  if (width && !checkValidDimensionValue(width)) {
    callouts.push(createInvalidPropCallout("width", width, expectedPx));
  }
  if (callouts.length !== 0) {
    return callouts;
  }
  const heightPx = Number(height);
  const widthPx = Number(width);
  const shouldCenter = center === "true" || center === true ? true : false;
  const shouldNotZoom = noZoom === "true" || noZoom === true ? true : false;
  const images = <>
      <img className="block dark:hidden" src={src} alt={alt} {...height && ({
    height: heightPx
  })} {...width && ({
    width: widthPx
  })} {...(shouldCreateLink || shouldInvert || shouldNotZoom) && ({
    noZoom: "true"
  })} />
      <img className={`hidden dark:block ${shouldInvert ? "invert" : ""}`} src={darkSrc ?? src} alt={darkAlt ?? alt} {...height && ({
    height: heightPx
  })} {...width && ({
    width: widthPx
  })} {...(shouldCreateLink || shouldInvert || shouldNotZoom) && ({
    noZoom: "true"
  })} />
    </>;
  if (shouldCreateLink) {
    if (shouldCenter) {
      return <div style={{
        display: "flex",
        justifyContent: "center"
      }}>
          <a href={href} target={target ?? "_self"}>
            {images}
          </a>
        </div>;
    }
    return <a href={href} target={target ?? "_self"}>
        {images}
      </a>;
  }
  if (shouldCenter) {
    return <div style={{
      display: "flex",
      justifyContent: "center"
    }}>{images}</div>;
  }
  return images;
};

export const Aside = ({type = "note", title = "", icon = "", iconType = "regular", children}) => {
  const asideVariants = ["note", "tip", "caution", "danger"];
  const asideComponents = {
    note: {
      outerStyle: "border-sky-500/20 bg-sky-50/50 dark:border-sky-500/30 dark:bg-sky-500/10",
      innerStyle: "text-sky-900 dark:text-sky-200",
      calloutType: "note",
      icon: <svg width="14" height="14" viewBox="0 0 14 14" fill="currentColor" xmlns="http://www.w3.org/2000/svg" className="w-4 h-4 text-sky-500" aria-label="Note">
          <path fill-rule="evenodd" clip-rule="evenodd" d="M7 1.3C10.14 1.3 12.7 3.86 12.7 7C12.7 10.14 10.14 12.7 7 12.7C5.48908 12.6974 4.0408 12.096 2.97241 11.0276C1.90403 9.9592 1.30264 8.51092 1.3 7C1.3 3.86 3.86 1.3 7 1.3ZM7 0C3.14 0 0 3.14 0 7C0 10.86 3.14 14 7 14C10.86 14 14 10.86 14 7C14 3.14 10.86 0 7 0ZM8 3H6V8H8V3ZM8 9H6V11H8V9Z"></path>
        </svg>
    },
    tip: {
      outerStyle: "border-emerald-500/20 bg-emerald-50/50 dark:border-emerald-500/30 dark:bg-emerald-500/10",
      innerStyle: "text-emerald-900 dark:text-emerald-200",
      calloutType: "tip",
      icon: <svg width="11" height="14" viewBox="0 0 11 14" fill="currentColor" xmlns="http://www.w3.org/2000/svg" className="text-emerald-600 dark:text-emerald-400/80 w-3.5 h-auto" aria-label="Tip">
          <path d="M3.12794 12.4232C3.12794 12.5954 3.1776 12.7634 3.27244 12.907L3.74114 13.6095C3.88471 13.8248 4.21067 14 4.46964 14H6.15606C6.41415 14 6.74017 13.825 6.88373 13.6095L7.3508 12.9073C7.43114 12.7859 7.49705 12.569 7.49705 12.4232L7.50055 11.3513H3.12521L3.12794 12.4232ZM5.31288 0C2.52414 0.00875889 0.5 2.26889 0.5 4.78826C0.5 6.00188 0.949566 7.10829 1.69119 7.95492C2.14321 8.47011 2.84901 9.54727 3.11919 10.4557C3.12005 10.4625 3.12175 10.4698 3.12261 10.4771H7.50342C7.50427 10.4698 7.50598 10.463 7.50684 10.4557C7.77688 9.54727 8.48281 8.47011 8.93484 7.95492C9.67728 7.13181 10.1258 6.02703 10.1258 4.78826C10.1258 2.15486 7.9709 0.000106649 5.31288 0ZM7.94902 7.11267C7.52078 7.60079 6.99082 8.37878 6.6077 9.18794H4.02051C3.63739 8.37878 3.10743 7.60079 2.67947 7.11294C2.11997 6.47551 1.8126 5.63599 1.8126 4.78826C1.8126 3.09829 3.12794 1.31944 5.28827 1.3126C7.2435 1.3126 8.81315 2.88226 8.81315 4.78826C8.81315 5.63599 8.50688 6.47551 7.94902 7.11267ZM4.87534 2.18767C3.66939 2.18767 2.68767 3.16939 2.68767 4.37534C2.68767 4.61719 2.88336 4.81288 3.12521 4.81288C3.36705 4.81288 3.56274 4.61599 3.56274 4.37534C3.56274 3.6515 4.1515 3.06274 4.87534 3.06274C5.11719 3.06274 5.31288 2.86727 5.31288 2.62548C5.31288 2.38369 5.11599 2.18767 4.87534 2.18767Z"></path>
        </svg>
    },
    caution: {
      outerStyle: "border-amber-500/20 bg-amber-50/50 dark:border-amber-500/30 dark:bg-amber-500/10",
      innerStyle: "text-amber-900 dark:text-amber-200",
      calloutType: "warning",
      icon: <svg className="flex-none w-5 h-5 text-amber-400 dark:text-amber-300/80" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2" aria-label="Warning">
          <path stroke-linecap="round" stroke-linejoin="round" d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"></path>
        </svg>
    },
    danger: {
      outerStyle: "border-red-500/20 bg-red-50/50 dark:border-red-500/30 dark:bg-red-500/10",
      innerStyle: "text-red-900 dark:text-red-200",
      calloutType: "danger",
      icon: <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" fill="currentColor" className="text-red-600 dark:text-red-400/80 w-4 h-4" aria-label="Danger">
          <path d="M17.1 292c-12.9-22.3-12.9-49.7 0-72L105.4 67.1c12.9-22.3 36.6-36 62.4-36l176.6 0c25.7 0 49.5 13.7 62.4 36L494.9 220c12.9 22.3 12.9 49.7 0 72L406.6 444.9c-12.9 22.3-36.6 36-62.4 36l-176.6 0c-25.7 0-49.5-13.7-62.4-36L17.1 292zm41.6-48c-4.3 7.4-4.3 16.6 0 24l88.3 152.9c4.3 7.4 12.2 12 20.8 12l176.6 0c8.6 0 16.5-4.6 20.8-12L453.4 268c4.3-7.4 4.3-16.6 0-24L365.1 91.1c-4.3-7.4-12.2-12-20.8-12l-176.6 0c-8.6 0-16.5 4.6-20.8 12L58.6 244zM256 128c13.3 0 24 10.7 24 24l0 112c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-112c0-13.3 10.7-24 24-24zM224 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z"></path>
        </svg>
    }
  };
  let variant = type;
  let gotInvalidVariant = false;
  if (!asideVariants.includes(type)) {
    gotInvalidVariant = true;
    variant = "danger";
  }
  const iconVariants = ["regular", "solid", "light", "thin", "sharp-solid", "duotone", "brands"];
  if (!iconVariants.includes(iconType)) {
    iconType = "regular";
  }
  return <>
      <div className={`callout my-4 px-5 py-4 overflow-hidden rounded-2xl flex gap-3 border ${asideComponents[variant].outerStyle}`} data-callout-type={asideComponents[variant].calloutType}>
        <div className="mt-0.5 w-4" data-component-part="callout-icon">
          {}
          {icon === "" ? asideComponents[variant].icon : <Icon icon={icon} iconType={iconType} size={14} />}
        </div>
        <div className={`text-sm prose min-w-0 w-full ${asideComponents[variant].innerStyle}`} data-component-part="callout-content">
          {gotInvalidVariant ? <p>
              <span className="font-bold">
                Invalid <code>type</code> passed!
              </span>
              <br />
              <span className="font-bold">Received: </span>
              {type}
              <br />
              <span className="font-bold">Expected one of: </span>
              {asideVariants.join(", ")}
            </p> : <>
              {title && <p className="font-bold">{title}</p>}
              {children}
            </>}
        </div>
      </div>
    </>;
};

TON extension for Visual Studio Code (VS Code) and VSCode-based editors, such as VSCodium, Cursor, Windsurf, and others.

<Columns cols={3}>
  <Card title="Installation" icon="floppy-disk" horizontal="true" href="#installation" />

  <Card title="Features" icon="sparkles" horizontal="true" href="#features-and-language-support" />

  <Card title="Usage" icon="hammer" horizontal="true" href="#usage" />
</Columns>

## Installation

### From Visual Studio Marketplace

Applicable for: VSCode <br />
Extension on: [Marketplace](https://marketplace.visualstudio.com/items?itemName=ton-core.vscode-ton "TON extension on the Visual Studio Marketplace")

1. In the editor, open the Command Palette with <kbd>Ctrl+Shift+P</kbd> (or <kbd>⌘+⇧+P</kbd> on macOS)
2. Type and select `Extensions: Install Extensions`
3. Search for `TON`
4. Select the official extension from TON Core and click <kbd>Install</kbd>

The editor fetches and installs the extension. Restart the editor to apply changes if prompted.

Here is how the extension page may look in VSCode, before pressing the <kbd>Install</kbd> button:

<Image src="/resources/images/vscode-ton/install.png" darkSrc="/resources/images/vscode-ton/install-dark.png" alt="Screenshot of extension installation" />

### From Open VSX Registry

Applicable for: VSCodium, Cursor, Windsurf, and other VSCodium-based editors <br />
Extension in: [Registry](https://open-vsx.org/extension/ton-core/vscode-ton "TON extension in the Open VSX Registry")

Installation steps are identical to the [VSCode setup](#from-visual-studio-marketplace). Additionally, one can download the exact extension version from the [Open VSX Registry](https://open-vsx.org/extension/ton-core/vscode-ton) and then proceed with [installation from disk](#from-disk).

### From disk

Applicable for: any VSCodium-based editor <br />
VSIX file: [latest GitHub release](https://github.com/ton-blockchain/ton-language-server/releases/latest)

To manually install the extension:

1. Download the `.vsix`-packaged plugin archive from the [latest GitHub release](https://github.com/ton-blockchain/ton-language-server/releases/latest) or from the exact version [in the registry](https://open-vsx.org/extension/ton-core/vscode-ton)
2. In the editor, open the Command Palette with <kbd>Ctrl+Shift+P</kbd> (or <kbd>⌘+⇧+P</kbd> on macOS)
3. Type and select `Extensions: Install from VSIX...`
4. Browse and select the downloaded `.vsix` file

The editor installs the extension. Restart the editor to apply changes if prompted.

<Aside>
  To install the extension using CLI, specify the editor executable and the `--install-extension` command-line switch, followed by the path to a `.vsix` file:

  ```shell theme={"theme":{"light":"github-light-default","dark":"dark-plus"},"languages":{"custom":["/resources/grammars/tolk.tmLanguage.json","/resources/grammars/tlb.tmLanguage.json","/resources/grammars/fift.tmLanguage.json","/resources/grammars/tasm.tmLanguage.json","/resources/grammars/func.tmLanguage.json"]}}
  # Command for VSCode
  code --install-extension <PATH_TO_EXTENSION.vsix>

  # Command for VSCodium
  codium --install-extension <PATH_TO_EXTENSION.vsix>

  # Other VSCodium-based editors have similar commands
  ```
</Aside>

Visual Studio Code’s [“Installing an extension from a VSIX”](https://code.visualstudio.com/docs/configure/extensions/extension-marketplace#_install-from-a-vsix) guide explains the process.

## Features and language support

Extension provides support for TON Blockchain languages and tools in VSCode and VSCode-based editors: from syntax highlighting to on-the-fly inspections and toolchain management.

<Columns cols={2}>
  <Card title="Tolk" icon="star" horizontal="true" href="#tolk">
    Recommended language for TON smart contract development
  </Card>

  <Card title="FunC" icon="building-columns" horizontal="true" href="#func">
    Legacy TON smart contract programming language
  </Card>

  <Card title="Fift" icon="layer-group" horizontal="true" href="#fift">
    Low-level stack-based language with deep TVM integration
  </Card>

  <Card title="TL-B" icon="table-cells" horizontal="true" href="#tl-b">
    Cell-based data serialization and markup language
  </Card>

  <Card title="TON Assembly (TASM)" icon="binary" horizontal="true" href="#tasm">
    Textual TVM bitcode assembly language and corresponding (dis)assembler
  </Card>

  <Card title="Integrations" icon="toolbox" horizontal="true" href="#integrations">
    Work with Blueprint projects, Sandbox TON emulator, and other popular tools for TON development
  </Card>
</Columns>

### Tolk

**File extension:** `.tolk`

<Image src="/resources/images/vscode-ton/tolk.png" darkSrc="/resources/images/vscode-ton/tolk-dark.png" alt="Screenshot of the Tolk language support" />

Tolk support includes:

* Semantic syntax highlighting
* Code completion with auto import, postfix completion, snippets, imports completion
* Go to definition, type definition
* Find all references, workspace symbol search, symbol renaming
* Automatic import updates when renaming and moving files
* Types and documentation on hover
* Various inlay hints, including hints for types and parameter names.
* On-the-fly inspections with quick fixes
* Signature help inside calls
* Build, test, and debug [Blueprint](/contract-dev/blueprint/overview)-based projects
* Flexible toolchain management

### FunC

**File extensions:** `.fc`, `.func`

<Image src="/resources/images/vscode-ton/func.png" darkSrc="/resources/images/vscode-ton/func-dark.png" alt="Screenshot of the FunC language support" />

FunC support includes:

* Semantic syntax highlighting
* Code completion, imports completion
* Go to definition
* Find all references, workspace symbol search, symbol renaming
* Automatic import updates when renaming and moving files
* Types and documentation on hover
* Inlay hints for method IDs
* On-the-fly inspections
* Build, test, and debug [Blueprint](/contract-dev/blueprint/overview)-based projects

### Fift

**File extensions:** `.fif`, `.fift`

<Image src="/resources/images/vscode-ton/fift.png" darkSrc="/resources/images/vscode-ton/fift-dark.png" alt="Screenshot of the Fift language support" />

<Image src="/resources/images/vscode-ton/fift-asm.png" darkSrc="/resources/images/vscode-ton/fift-asm-dark.png" alt="Screenshot of the Fift assembly support" />

Fift support includes:

* Basic and semantic syntax highlighting
* Go-to definition
* Inlay hints with instruction gas consumption
* Hover documentation for instructions

### TL-B

**File extension:** `.tlb`

<Image src="/resources/images/vscode-ton/tlb.png" darkSrc="/resources/images/vscode-ton/tlb-dark.png" alt="Screenshot of the TL-B data scheme support" />

TL-B support includes:

* Basic and semantic syntax highlighting
* Go-to definition
* Completion for fields, parameters, and types
* Go-to references for types
* Hover documentation for declarations

### TASM

**File extensions:**

* `.tasm` — textual bitcode assembly
* `.boc` — serialized binary smart contract code

<Image src="/resources/images/vscode-ton/tasm.png" darkSrc="/resources/images/vscode-ton/tasm-dark.png" alt="Screenshot of the TON Assembly (TASM) language support" />

TON Assembly (TASM) support includes:

* Basic syntax highlighting
* Go-to definition
* Inlay hints with instruction gas consumption
* Hover documentation for instructions
* Code completion for instructions

Additionally, BoC support includes:

* Automatic BoC disassembly with syntax highlighting
* Automatic updates on changes in BoC

### Integrations

The extension integrates with:

* [Sandbox](#sandbox) — Local TON emulator used to [test](/contract-dev/testing/overview) smart contracts
* [Blueprint](/contract-dev/blueprint/overview) — a popular development environment for TON smart contract development

#### Sandbox

There is a graphical interface for local TON Blockchain emulation testing. By using it in Blueprint-based projects or any projects that use Sandbox (`@ton/sandbox`) for contract emulation, one can:

* Deploy contracts directly from source code
* Send internal and external messages
* Execute get-methods
* Inspect all transactions and messages
* Inspect storage and balances in real time
* Rollback to previous states and export or import various scenarios

It is suited for prototyping, interactive debugging, and educational purposes. To start, open the "TON Sandbox" panel in the primary sidebar after installing the extension, then follow instructions on top.

The [Sandbox wiki page](https://github.com/ton-blockchain/ton-language-server/wiki/Sandbox:-1.-Overview) provides more detail.

## Usage

* Customize the default config by [setting various options](#configuration-options)
* Utilize commands from the [Command Palette](#command-palette)

### Configuration options

This extension provides a wide range of options configurable in the [settings editor](https://code.visualstudio.com/docs/getstarted/extensions#_open-extension-settings).

#### General

<ParamField path="ton.tolk.stdlib.path" type="string" default="auto">
  Path to Tolk standard library. If empty, will try to find in `node_modules`.
</ParamField>

#### Toolchain

<ParamField path="ton.tolk.toolchain.toolchains" type="object">
  Configured Tolk toolchains. Each key serves as a unique identifier for the toolchain, which is an object with the following properties:

  * `"name"` (required) — Display name for the toolchain
  * `"path"` (required) — Path to the Tolk compiler executable
  * `"description"` — Optional description for the toolchain

  Default configuration:

  ```json theme={"theme":{"light":"github-light-default","dark":"dark-plus"},"languages":{"custom":["/resources/grammars/tolk.tmLanguage.json","/resources/grammars/tlb.tmLanguage.json","/resources/grammars/fift.tmLanguage.json","/resources/grammars/tasm.tmLanguage.json","/resources/grammars/func.tmLanguage.json"]}}
  "ton.tolk.toolchain.toolchains": {
    "auto": {
      "name": "Auto-detected",
      "path": "",
      "description": "Automatically detect Tolk compiler in node_modules"
    }
  }
  ```
</ParamField>

<ParamField path="ton.tolk.toolchain.activeToolchain" type="string" default="auto">
  Name of the active Tolk toolchain to use. The `"auto"` is a default toolchain that is automatically detected in `node_modules/`.
</ParamField>

<ParamField path="ton.tolk.toolchain.showShortCommitInStatusBar" type="boolean" default={false}>
  Whether to add a short commit hash after Tolk version in the status bar.
</ParamField>

#### Editor → Hints

<ParamField path="ton.tolk.hints.disable" type="boolean" default={false}>
  Tolk: Disable all inlay hints.
</ParamField>

<ParamField path="ton.tolk.hints.types" type="boolean" default={true}>
  Tolk: Show type hints for variables and expressions.
</ParamField>

<ParamField path="ton.tolk.hints.parameters" type="boolean" default={true}>
  Tolk: Show parameter name hints in function calls.
</ParamField>

<ParamField path="ton.tolk.hints.showMethodId" type="boolean" default={true}>
  Tolk: Show method ID hints for get methods.
</ParamField>

<ParamField path="ton.tolk.hints.constantValues" type="boolean" default={true}>
  Tolk: Show computed values for constants.
</ParamField>

<ParamField path="ton.func.hints.disable" type="boolean" default={false}>
  FunC: Disable all inlay hints.
</ParamField>

<ParamField path="ton.func.hints.showMethodId" type="boolean" default={true}>
  FunC: Show method ID hints for functions with `method_id`.
</ParamField>

<ParamField path="ton.func.hints.implicitConstantType" type="boolean" default={true}>
  FunC: Show type hints for constants without explicit type.
</ParamField>

#### Editor → Completion

<ParamField path="ton.tolk.completion.typeAware" type="boolean" default={true}>
  Tolk: Sort completion items by relevance to the current context type.
</ParamField>

<ParamField path="ton.tolk.completion.addImports" type="boolean" default={true}>
  Tolk: Automatically add necessary imports for symbols from other files.
</ParamField>

#### Editor → Inspections

<ParamField path="ton.tolk.inspections.disabled" type="string[]" default={[]}>
  Tolk: List of disabled code inspections. All available inspections are enabled by default:

  * `"unused-parameter"`
  * `"unused-type-parameter"`
  * `"unused-variable"`
  * `"unused-top-level-declaration"`
  * `"unused-import"`
  * `"deprecated-symbol-usage"`
  * `"struct-initialization"`
  * `"cannot-reassign"`
  * `"need-not-null-unwrapping"`
  * `"missed-semicolon"`
  * `"call-arguments-count-mismatch"`
</ParamField>

<ParamField path="ton.func.inspections.disabled" type="string[]" default={[]}>
  FunC: List of disabled code inspections. All available inspections are enabled by default:

  * `"unused-parameter"`
  * `"unused-type-parameter"`
  * `"unused-variable"`
  * `"unused-import"`
</ParamField>

#### Editor → Find Usages

<ParamField path="ton.tolk.findUsages.scope" type="string" default="workspace">
  Tolk: Where to search when using "Find Usages". Allowed values:

  * `"workspace"` (default) — Search only in workspace files
  * `"everywhere"` — Search everywhere, including the standard library
</ParamField>

#### Fift

<ParamField path="ton.fift.hints.showGasConsumption" type="boolean" default={true}>
  Show gas consumption hints for Fift instructions.
</ParamField>

<ParamField path="ton.fift.semanticHighlighting.enabled" type="boolean" default={true}>
  Enable/disable semantic highlighting for Fift files.
</ParamField>

#### BoC

<ParamField path="ton.boc.openDecompiledOnOpen" type="boolean" default={true}>
  Automatically open decompiled Fift assembly when opening BoC files (with `.boc` extension).
</ParamField>

#### Formatter

<ParamField path="ton.tolk.formatter.useFormatter" type="boolean" default={true}>
  Use experimental Tolk formatter.
</ParamField>

<ParamField path="ton.tolk.formatter.sortImports" type="boolean" default={true}>
  Sort imports on format.
</ParamField>

#### Sandbox

<ParamField path="ton.sandbox.port" type="number" default={3000}>
  Port of the TON Sandbox server.
</ParamField>

<ParamField path="ton.sandbox.binaryPath" type="string" default="./node_modules/.bin/ton-sandbox-server">
  Path to the TON Sandbox server binary.
</ParamField>

### Command Palette

The <kbd>Ctrl+Shift+P</kbd> on Windows and Linux (and <kbd>⌘+⇧+P</kbd> on macOS) brings up the [Command Palette](https://code.visualstudio.com/docs/getstarted/userinterface#_command-palette). This plugin provides a number of custom commands available for launch from the palette.

#### General

* `TON: Open decompiled BoC file`
* `TON: Decompile BoC to TON Assembly file`
* `TON: Debug contract`

#### Tolk

* `Tolk: Build project`
* `Tolk: Get type at position`
* `Tolk: Get contract ABI`
* `Tolk: Get documentation at position`
* `Tolk: Get scope information`
* `Tolk: Get unresolved identifiers`
* `Tolk: Show toolchain information`
* `Tolk: Select active toolchain` — modifies the config
* `Tolk: Add new toolchain` — modifies the config
* `Tolk: Remove toolchain` — modifies the config
* `Tolk: Manage toolchains` — modifies the config

#### Sandbox

Work everywhere:

* `TON: Install TON Sandbox Server` — modifies the config
* `TON: Start TON Sandbox Server`
* `TON: Stop TON Sandbox Server`
* `TON: Open Sandbox Terminal`

Only work in the Sandbox panel:

* `TON: Refresh`
* `TON: Refresh history`
* `TON: Import history`
* `TON: Export history`
* `TON: Reset history`
* `TON: Delete message template`
* `TON: Copy contract ABI`
* `TON: Copy address`
