{
  "name": "lexai-vscode",
  "displayName": "LexAI — AI Writing & Code Assist",
  "description": "BYO-LLM writing + workspace-aware Code Assist: Fix, Rephrase, Shorten, Expand, Explain, Make Prompt, inline assist, sidebar, settings. Twin of the LexAI Chrome extension.",
  "version": "1.0.0",
  "publisher": "JuanKibin",
  "license": "MIT",
  "icon": "media/icon-128.png",
  "private": false,
  "homepage": "https://chromewebstore.google.com/detail/bagpcheidbkfgijnnmolnkgagibbjfnk",
  "repository": {
    "type": "git",
    "url": "https://git.juankibin.space/kibin/LexAI.git"
  },
  "engines": {
    "vscode": "^1.85.0",
    "node": ">=22"
  },
  "categories": [
    "Programming Languages",
    "Machine Learning",
    "Other"
  ],
  "keywords": [
    "lexai",
    "ai",
    "writing",
    "grammar",
    "code assist",
    "refactor",
    "llm",
    "openai",
    "anthropic",
    "chrome extension",
    "byok"
  ],
  "activationEvents": [
    "onStartupFinished"
  ],
  "main": "./out/extension.js",
  "contributes": {
    "commands": [
      {
        "command": "lexai.fix",
        "title": "LexAI: Fix Grammar"
      },
      {
        "command": "lexai.rephrase",
        "title": "LexAI: Rephrase"
      },
      {
        "command": "lexai.shorten",
        "title": "LexAI: Shorten"
      },
      {
        "command": "lexai.expand",
        "title": "LexAI: Expand"
      },
      {
        "command": "lexai.explain",
        "title": "LexAI: Explain"
      },
      {
        "command": "lexai.prompt",
        "title": "LexAI: Make Prompt"
      },
      {
        "command": "lexai.codeAssist",
        "title": "LexAI: Code Assist"
      },
      {
        "command": "lexai.codeAssist.submit",
        "title": "Ask LexAI",
        "enablement": "commentController == lexaiAssist && commentThread == lexaiCodeAssistPrompt"
      },
      {
        "command": "lexai.codeAssist.cancel",
        "title": "Cancel Code Assist",
        "enablement": "commentController == lexaiAssist && commentThread == lexaiCodeAssistPrompt"
      },
      {
        "command": "lexai.openSidebar",
        "title": "LexAI: Open Sidebar"
      },
      {
        "command": "lexai.openSettings",
        "title": "LexAI: Open Settings"
      },
      {
        "command": "lexai.setApiKey",
        "title": "LexAI: Set API Key"
      },
      {
        "command": "lexai.clearApiKey",
        "title": "LexAI: Clear API Key"
      },
      {
        "command": "lexai.showStatus",
        "title": "LexAI: Show Configuration Status"
      },
      {
        "command": "lexai.showSelectionActions",
        "title": "LexAI: Show Actions"
      },
      {
        "command": "lexai.zone.accept",
        "title": "LexAI: Accept Suggestion",
        "enablement": "commentController == lexai"
      },
      {
        "command": "lexai.zone.regenerate",
        "title": "LexAI: Regenerate Suggestion",
        "enablement": "commentController == lexai"
      },
      {
        "command": "lexai.zone.discard",
        "title": "LexAI: Discard Suggestion",
        "enablement": "commentController == lexai"
      },
      {
        "command": "lexai.zone.openPanel",
        "title": "LexAI: Open Suggestion Panel",
        "enablement": "commentController == lexai"
      }
    ],
    "submenus": [
      {
        "id": "lexai.submenu",
        "label": "LexAI"
      }
    ],
    "menus": {
      "editor/context": [
        {
          "submenu": "lexai.submenu",
          "when": "editorHasSelection",
          "group": "1_modification@9"
        }
      ],
      "editor/lineNumber/context": [
        {
          "submenu": "lexai.submenu",
          "when": "lexai.hasSelection",
          "group": "navigation@1"
        }
      ],
      "lexai.submenu": [
        {
          "command": "lexai.showSelectionActions",
          "group": "0_pick@1"
        },
        {
          "command": "lexai.codeAssist",
          "group": "0_pick@2",
          "when": "editorHasSelection"
        },
        {
          "command": "lexai.fix",
          "group": "1_actions@1"
        },
        {
          "command": "lexai.rephrase",
          "group": "1_actions@2"
        },
        {
          "command": "lexai.shorten",
          "group": "1_actions@3"
        },
        {
          "command": "lexai.expand",
          "group": "1_actions@4"
        },
        {
          "command": "lexai.explain",
          "group": "1_actions@5"
        },
        {
          "command": "lexai.prompt",
          "group": "1_actions@6"
        },
        {
          "command": "lexai.openSettings",
          "group": "9_settings@1"
        }
      ],
      "comments/commentThread/title": [
        {
          "command": "lexai.codeAssist.cancel",
          "group": "inline@1",
          "when": "commentController == lexaiAssist && commentThread == lexaiCodeAssistPrompt"
        },
        {
          "command": "lexai.zone.accept",
          "group": "inline@1",
          "when": "commentController == lexai && commentThread == lexaiSuggestion"
        },
        {
          "command": "lexai.zone.regenerate",
          "group": "inline@2",
          "when": "commentController == lexai && commentThread == lexaiSuggestion"
        },
        {
          "command": "lexai.zone.discard",
          "group": "inline@3",
          "when": "commentController == lexai && commentThread == lexaiSuggestion"
        }
      ],
      "comments/commentThread/context": [
        {
          "command": "lexai.codeAssist.submit",
          "group": "inline@1",
          "when": "commentController == lexaiAssist && commentThread == lexaiCodeAssistPrompt"
        }
      ],
      "commandPalette": [
        {
          "command": "lexai.openSidebar"
        },
        {
          "command": "lexai.openSettings"
        },
        {
          "command": "lexai.codeAssist",
          "when": "editorHasSelection"
        },
        {
          "command": "lexai.codeAssist.submit",
          "when": "false"
        },
        {
          "command": "lexai.codeAssist.cancel",
          "when": "false"
        },
        {
          "command": "lexai.showSelectionActions",
          "when": "lexai.hasSelection"
        },
        {
          "command": "lexai.fix"
        },
        {
          "command": "lexai.rephrase"
        },
        {
          "command": "lexai.shorten"
        },
        {
          "command": "lexai.expand"
        },
        {
          "command": "lexai.explain"
        },
        {
          "command": "lexai.prompt"
        },
        {
          "command": "lexai.setApiKey"
        },
        {
          "command": "lexai.clearApiKey"
        },
        {
          "command": "lexai.showStatus"
        }
      ]
    },
    "viewsContainers": {
      "activitybar": [
        {
          "id": "lexai",
          "title": "LexAI",
          "icon": "media/lexai-activity.svg"
        }
      ]
    },
    "views": {
      "lexai": [
        {
          "type": "webview",
          "id": "lexai.sidebar",
          "name": "Workspace",
          "contextualTitle": "LexAI"
        }
      ]
    },
    "configuration": {
      "title": "LexAI",
      "properties": {
        "lexai.provider": {
          "type": "string",
          "enum": [
            "openai",
            "anthropic",
            "groq",
            "openrouter"
          ],
          "default": "openai",
          "description": "LLM provider. Prefer LexAI: Open Settings; change the API key when switching providers."
        },
        "lexai.model": {
          "type": "string",
          "default": "",
          "description": "Model id for the selected provider. Leave empty to use the provider default."
        },
        "lexai.writingStyle": {
          "type": "string",
          "enum": [
            "Default",
            "Formal",
            "Casual",
            "Academic",
            "Creative",
            "Concise"
          ],
          "default": "Default",
          "description": "Writing style applied to Fix / Rephrase / Shorten / Expand / Explain."
        },
        "lexai.promptPattern": {
          "type": "string",
          "default": "auto",
          "description": "Prompt Builder structural pattern id (auto, zero-shot, role, few-shot, …)."
        },
        "lexai.promptPersona": {
          "type": "string",
          "default": "Auto",
          "description": "Prompt Builder persona preset."
        },
        "lexai.customPersona": {
          "type": "string",
          "default": "",
          "description": "Custom persona text when promptPersona is Custom…"
        },
        "lexai.promptFormat": {
          "type": "string",
          "default": "Auto",
          "description": "Prompt Builder preferred output format."
        },
        "lexai.promptModel": {
          "type": "string",
          "default": "",
          "description": "Optional model override for Make Prompt only."
        },
        "lexai.previewBeforeReplace": {
          "type": "boolean",
          "default": true,
          "description": "When true, preview the suggestion before replacing the selection."
        },
        "lexai.suggestionUi": {
          "type": "string",
          "enum": [
            "zone",
            "panel",
            "both"
          ],
          "default": "zone",
          "description": "Where to show suggestions: in-editor zone (comment widget), side panel, or both."
        },
        "lexai.askOptionsBeforeGenerate": {
          "type": "boolean",
          "default": false,
          "description": "Ask for writing-style / Prompt Builder options in Quick Picks before each generation."
        }
      }
    }
  },
  "scripts": {
    "compile": "node esbuild.mjs",
    "build": "node esbuild.mjs",
    "watch": "node esbuild.mjs --watch",
    "typecheck": "tsc --noEmit",
    "package": "npm run compile && vsce package --no-dependencies --baseContentUrl https://git.juankibin.space/kibin/LexAI/src/branch/main/packages/vscode --baseImagesUrl https://git.juankibin.space/kibin/LexAI/raw/branch/main/packages/vscode",
    "vscode:prepublish": "npm run compile"
  },
  "devDependencies": {
    "@types/node": "^22.13.4",
    "@types/vscode": "^1.85.0",
    "@vscode/vsce": "^3.2.2",
    "esbuild": "^0.25.0",
    "typescript": "^5.7.3"
  }
}
