{
  "name": "vscode-tabby",
  "publisher": "TabbyML",
  "displayName": "Tabby",
  "description": "Tabby is a self-hosted AI coding assistant that can suggest multi-line code or full functions in real-time.",
  "repository": "https://github.com/TabbyML/tabby",
  "license": "Apache-2.0",
  "version": "0.1.1",
  "keywords": [
    "ai",
    "autocomplete",
    "code completion",
    "copilot",
    "intellisense",
    "intellicode",
    "snippets",
    "tabby"
  ],
  "icon": "assets/logo.png",
  "engines": {
    "vscode": "^1.70.0"
  },
  "categories": [
    "Programming Languages",
    "Machine Learning",
    "Other"
  ],
  "activationEvents": [
    "onStartupFinished"
  ],
  "main": "./dist/node/extension.js",
  "browser": "./dist/web/extension.js",
  "contributes": {
    "commands": [
      {
        "command": "tabby.toggleEnabled",
        "title": "Tabby: Toggle Code Suggestion On/Off"
      },
      {
        "command": "tabby.setApiEndpoint",
        "title": "Tabby: Specify API Endpoint of Tabby"
      },
      {
        "command": "tabby.openSettings",
        "title": "Tabby: Open Settings"
      },
      {
        "command": "tabby.gettingStarted",
        "title": "Tabby: Getting Started"
      }
    ],
    "walkthroughs": [
      {
        "id": "gettingStarted",
        "title": "Getting Started with Tabby",
        "description": "Set up your own AI coding assistant",
        "steps": [
          {
            "id": "getTabbyServerReady",
            "title": "Get Tabby Server Ready",
            "description": "The Tabby VSCode extension requires a Tabby server to work. Please follow this guide to get your Tabby server ready.",
            "media": {
              "markdown": "assets/walkthroughs/server.md"
            }
          },
          {
            "id": "connectToTabbyServer",
            "title": "Connect to Tabby Server",
            "description": "Once your Tabby server is ready, specify the server API endpoint here. If you are using a Tabby Cloud endpoint, please follow the popup messages to complete authorization. \n[Specify API Endpoint](command:tabby.setApiEndpoint)",
            "media": {
              "image": "assets/walkthroughs/setApiEndpoint.png",
              "altText": "Tabby: Specify API Endpoint of Tabby"
            }
          },
          {
            "id": "codeCompletion",
            "title": "Code Completion",
            "description": "Tabby provides inline suggestions automatically, and you can accept suggestions by just pressing the Tab key. Follow this guide to find more useful actions.",
            "media": {
              "markdown": "assets/walkthroughs/codeCompletion.md"
            }
          },
          {
            "id": "commands",
            "title": "Commands",
            "description": "Type `>Tabby:` in quick open prompt to list all Tabby commands. \n[Tabby commands](command:workbench.action.quickOpen?%5B%22%3ETabby%3A%22%5D)",
            "media": {
              "image": "assets/walkthroughs/commands.png",
              "altText": "Tabby Commands"
            }
          }
        ]
      }
    ],
    "configuration": {
      "title": "Tabby",
      "properties": {
        "tabby.api.endpoint": {
          "type": "string",
          "default": "http://localhost:8080",
          "format": "uri",
          "pattern": "^https?:\\/\\/[^\\s]+$",
          "patternErrorMessage": "Please enter a validate http or https URL.",
          "description": "Specify API Endpoint of Tabby."
        },
        "tabby.codeCompletion": {
          "type": "boolean",
          "default": true,
          "description": "Enable Tabby code completion or not."
        },
        "tabby.developerOptions": {
          "type": "object",
          "description": "Developer options for Tabby.",
          "properties": {
            "maxPrefixLines": {
              "type": "number",
              "default": 20,
              "description": "Number of lines to include in the Prefix for completion requests"
            },
            "maxSuffixLines": {
              "type": "number",
              "default": 20,
              "description": "Number of lines to include in the Suffix for completion requests"
            },
            "suggestionDelay": {
              "type": "number",
              "default": 150,
              "minimum": 0,
              "description": "Specifies the delay in milliseconds after which the request is sent to the tabby."
            },
            "agent": {
              "type": "object",
              "properties": {
                "logs": {
                  "type": "string",
                  "enum": [
                    "debug",
                    "error",
                    "silent"
                  ],
                  "default": "error",
                  "markdownDescription": "Specifies the log level for tabby-agent."
                }
              }
            }
          }
        },
        "tabby.usage.anonymousUsageTracking": {
          "type": "boolean",
          "default": false,
          "description": "Disable anonymous usage tracking."
        }
      }
    }
  },
  "scripts": {
    "vscode:prepublish": "yarn package",
    "compile": "webpack",
    "watch": "webpack --watch",
    "dev": "code --extensionDevelopmentPath=$PWD --disable-extensions && yarn watch",
    "dev:web": "code --extensionDevelopmentPath=$PWD --extensionDevelopmentKind=web --disable-extensions && yarn watch",
    "dev:web-browser": "vscode-test-web --extensionDevelopmentPath=$PWD --browserType=chromium --port=3000 && yarn watch",
    "package": "webpack --mode production --devtool hidden-source-map",
    "compile-tests": "tsc -p . --outDir out",
    "watch-tests": "tsc -p . -w --outDir out",
    "pretest": "yarn compile-tests && yarn compile && yarn lint",
    "lint": "eslint src --ext ts",
    "test": "node ./out/test/runTest.js",
    "vscode:package": "vsce package",
    "vscode:publish": "vsce publish"
  },
  "devDependencies": {
    "@types/glob": "^7.2.0",
    "@types/mocha": "^10.0.1",
    "@types/node": "16.x",
    "@types/vscode": "^1.70.0",
    "@typescript-eslint/eslint-plugin": "^5.31.0",
    "@typescript-eslint/parser": "^5.31.0",
    "@vscode/test-electron": "^2.1.5",
    "@vscode/test-web": "^0.0.44",
    "assert": "^2.0.0",
    "eslint": "^8.20.0",
    "glob": "^8.0.3",
    "mocha": "^10.0.0",
    "process": "^0.11.10",
    "ts-loader": "^9.3.1",
    "typescript": "^4.7.4",
    "vsce": "^2.15.0",
    "webpack": "^5.74.0",
    "webpack-cli": "^4.10.0"
  },
  "dependencies": {
    "@sapphire/duration": "^1.1.0",
    "@xstate/fsm": "^2.0.1",
    "tabby-agent": "file:../tabby-agent"
  }
}
