[tab] crowd-pilot-extension/package.json (json)
{
  "name": "crowd-pilot",
  "displayName": "crowd-pilot-extension",
  "description": "Teaching language models to code like humans.",
  "publisher": "p-doom",
  "version": "0.0.1",
  "repository": {
    "type": "git",
    "url": "https://github.com/p-doom/crowd-pilot-extension"
  },
  "engines": {
    "vscode": "^1.99.3"
  },
  "categories": [
    "Other"
  ],
  "activationEvents": [
    "onStartupFinished"
  ],
  "main": "./out/extension.js",
  "contributes": {
    "commands": [
      {
        "command": "crowd-pilot.toggleSuggestions",
        "title": "crowd-pilot: Toggle Tab Suggestions"
      },
      {
        "command": "crowd-pilot.hideUi",
        "title": "crowd-pilot: Hide Preview"
      },
      {
        "command": "crowd-pilot.sglangTest",
        "title": "crowd-pilot: Test SGLang"
      },
      {
        "command": "crowd-pilot.modelRun",
        "title": "crowd-pilot: Model Plan & Run"
      }
    ],
    "configuration": {
      "title": "crowd-pilot",
      "properties": {
        "crowd-pilot.hostname": {
          "type": "string",
          "default": "hai002",
          "description": "Hostname of the SGLang server"
        },
        "crowd-pilot.port": {
          "type": "number",
          "default": 30000,
          "description": "Port of the SGLang server"
        },
        "crowd-pilot.basePath": {
          "type": "string",
          "default": "/v1/chat/completions",
          "description": "Base path for the SGLang API endpoint"
        },
        "crowd-pilot.modelName": {
          "type": "string",
          "default": "qwen/qwen3-8b",
          "description": "Model name to use for completions"
        },
        "crowd-pilot.minAvgLogprob": {
          "type": "number",
          "default": -1.0,
          "description": "Minimum average log-probability per token for displaying suggestions. Higher values (closer to 0) require more confidence. -1.0 ≈ perplexity 2.7"
        },
        "crowd-pilot.maxContextTokens": {
          "type": "number",
          "default": 120000,
          "description": "Maximum tokens for the context window. Older messages are truncated to fit. Set below your model's limit to leave room for the response."
        }
      }
    },
    "keybindings": [
      {
        "command": "crowd-pilot.modelRun",
        "key": "tab",
        "mac": "tab",
        "when": "editorTextFocus && crowdPilot.uiVisible"
      },
      {
        "command": "crowd-pilot.modelRun",
        "key": "tab",
        "mac": "tab",
        "when": "inQuickOpen && crowdPilot.uiVisible"
      },
      {
        "command": "crowd-pilot.hideUi",
        "key": "escape",
        "mac": "escape",
        "when": "crowdPilot.uiVisible"
      }
    ]
  },
  "scripts": {
    "vscode:prepublish": "npm run compile",
    "compile": "tsc -p ./",
    "watch": "tsc -watch -p ./",
    "pretest": "npm run compile && npm run lint",
    "lint": "eslint src",
    "test": "vscode-test"
  },
  "devDependencies": {
    "@types/vscode": "^1.99.3",
    "@types/mocha": "^10.0.10",
    "@types/node": "22.x",
    "@typescript-eslint/eslint-plugin": "^8.45.0",
    "@typescript-eslint/parser": "^8.45.0",
    "eslint": "^9.36.0",
    "typescript": "^5.9.3",
    "@vscode/test-cli": "^0.0.11",
    "@vscode/test-electron": "^2.5.2"
  }
}