{
	"name": "taskr",
	"private": true,
	"displayName": "Task Master Kanban",
	"description": "A visual Kanban board interface for Task Master projects in VS Code",
	"version": "1.1.0",
	"publisher": "DavidMaliglowka",
	"icon": "assets/icon.png",
	"engines": {
		"vscode": "^1.93.0"
	},
	"categories": [
		"AI",
		"Visualization",
		"Education",
		"Other"
	],
	"main": "./dist/extension.js",
	"contributes": {
		"commands": [
			{
				"command": "taskr.showKanbanBoard",
				"title": "Task Master Kanban: Show Board"
			},
			{
				"command": "taskr.checkConnection",
				"title": "Task Master Kanban: Check Connection"
			},
			{
				"command": "taskr.reconnect",
				"title": "Task Master Kanban: Reconnect"
			},
			{
				"command": "taskr.openSettings",
				"title": "Task Master Kanban: Open Settings"
			}
		],
		"configuration": {
			"title": "Task Master Kanban",
			"properties": {
				"taskmaster.mcp.command": {
					"type": "string",
					"default": "npx",
					"description": "The command or absolute path to execute for the MCP server (e.g., 'npx' or '/usr/local/bin/task-master-ai')."
				},
				"taskmaster.mcp.args": {
					"type": "array",
					"items": {
						"type": "string"
					},
					"default": [
						"-y",
						"--package=task-master-ai",
						"task-master-ai"
					],
					"description": "An array of arguments to pass to the MCP server command."
				},
				"taskmaster.mcp.cwd": {
					"type": "string",
					"description": "Working directory for the Task Master MCP server (defaults to workspace root)"
				},
				"taskmaster.mcp.env": {
					"type": "object",
					"description": "Environment variables for the Task Master MCP server"
				},
				"taskmaster.mcp.timeout": {
					"type": "number",
					"default": 30000,
					"minimum": 1000,
					"maximum": 300000,
					"description": "Connection timeout in milliseconds"
				},
				"taskmaster.mcp.maxReconnectAttempts": {
					"type": "number",
					"default": 5,
					"minimum": 1,
					"maximum": 20,
					"description": "Maximum number of reconnection attempts"
				},
				"taskmaster.mcp.reconnectBackoffMs": {
					"type": "number",
					"default": 1000,
					"minimum": 100,
					"maximum": 10000,
					"description": "Initial reconnection backoff delay in milliseconds"
				},
				"taskmaster.mcp.maxBackoffMs": {
					"type": "number",
					"default": 30000,
					"minimum": 1000,
					"maximum": 300000,
					"description": "Maximum reconnection backoff delay in milliseconds"
				},
				"taskmaster.mcp.healthCheckIntervalMs": {
					"type": "number",
					"default": 15000,
					"minimum": 5000,
					"maximum": 60000,
					"description": "Health check interval in milliseconds"
				},
				"taskmaster.ui.autoRefresh": {
					"type": "boolean",
					"default": true,
					"description": "Automatically refresh tasks from the server"
				},
				"taskmaster.ui.refreshIntervalMs": {
					"type": "number",
					"default": 10000,
					"minimum": 1000,
					"maximum": 300000,
					"description": "Auto-refresh interval in milliseconds"
				},
				"taskmaster.ui.theme": {
					"type": "string",
					"enum": [
						"auto",
						"light",
						"dark"
					],
					"default": "auto",
					"description": "UI theme preference"
				},
				"taskmaster.ui.showCompletedTasks": {
					"type": "boolean",
					"default": true,
					"description": "Show completed tasks in the Kanban board"
				},
				"taskmaster.ui.taskDisplayLimit": {
					"type": "number",
					"default": 100,
					"minimum": 1,
					"maximum": 1000,
					"description": "Maximum number of tasks to display"
				},
				"taskmaster.ui.showPriority": {
					"type": "boolean",
					"default": true,
					"description": "Show task priority indicators"
				},
				"taskmaster.ui.showTaskIds": {
					"type": "boolean",
					"default": true,
					"description": "Show task IDs in the interface"
				},
				"taskmaster.performance.maxConcurrentRequests": {
					"type": "number",
					"default": 5,
					"minimum": 1,
					"maximum": 20,
					"description": "Maximum number of concurrent MCP requests"
				},
				"taskmaster.performance.requestTimeoutMs": {
					"type": "number",
					"default": 30000,
					"minimum": 1000,
					"maximum": 300000,
					"description": "Request timeout in milliseconds"
				},
				"taskmaster.performance.cacheTasksMs": {
					"type": "number",
					"default": 5000,
					"minimum": 0,
					"maximum": 60000,
					"description": "Task cache duration in milliseconds"
				},
				"taskmaster.performance.lazyLoadThreshold": {
					"type": "number",
					"default": 50,
					"minimum": 10,
					"maximum": 500,
					"description": "Number of tasks before enabling lazy loading"
				},
				"taskmaster.debug.enableLogging": {
					"type": "boolean",
					"default": true,
					"description": "Enable debug logging"
				},
				"taskmaster.debug.logLevel": {
					"type": "string",
					"enum": [
						"error",
						"warn",
						"info",
						"debug"
					],
					"default": "info",
					"description": "Logging level"
				},
				"taskmaster.debug.enableConnectionMetrics": {
					"type": "boolean",
					"default": true,
					"description": "Enable connection performance metrics"
				},
				"taskmaster.debug.saveEventLogs": {
					"type": "boolean",
					"default": false,
					"description": "Save event logs to files"
				},
				"taskmaster.debug.maxEventLogSize": {
					"type": "number",
					"default": 1000,
					"minimum": 10,
					"maximum": 10000,
					"description": "Maximum number of events to keep in memory"
				}
			}
		}
	},
	"scripts": {
		"vscode:prepublish": false,
		"build": "pnpm run build:js && pnpm run build:css",
		"build:js": "node ./esbuild.js --production",
		"build:css": "npx @tailwindcss/cli -o ./dist/index.css --minify",
		"package": "pnpm exec node ./package.mjs",
		"package:direct": "node ./package.mjs",
		"debug:env": "node ./debug-env.mjs",
		"compile": "node ./esbuild.js",
		"watch": "pnpm run watch:js & pnpm run watch:css",
		"watch:js": "node ./esbuild.js --watch",
		"watch:css": "npx @tailwindcss/cli -o ./dist/index.css --watch",
		"lint": "eslint src --ext ts,tsx",
		"test": "vscode-test",
		"check-types": "tsc --noEmit"
	},
	"devDependencies": {
		"@dnd-kit/core": "^6.3.1",
		"@dnd-kit/modifiers": "^9.0.0",
		"@modelcontextprotocol/sdk": "1.13.3",
		"@radix-ui/react-collapsible": "^1.1.11",
		"@radix-ui/react-dropdown-menu": "^2.1.15",
		"@radix-ui/react-label": "^2.1.7",
		"@radix-ui/react-portal": "^1.1.9",
		"@radix-ui/react-scroll-area": "^1.2.9",
		"@radix-ui/react-separator": "^1.1.7",
		"@radix-ui/react-slot": "^1.2.3",
		"@tailwindcss/postcss": "^4.1.11",
		"@types/mocha": "^10.0.10",
		"@types/node": "20.x",
		"@types/react": "19.1.8",
		"@types/react-dom": "19.1.6",
		"@types/vscode": "^1.101.0",
		"@typescript-eslint/eslint-plugin": "^8.31.1",
		"@typescript-eslint/parser": "^8.31.1",
		"@vscode/test-cli": "^0.0.11",
		"@vscode/test-electron": "^2.5.2",
		"@vscode/vsce": "^2.32.0",
		"autoprefixer": "10.4.21",
		"class-variance-authority": "^0.7.1",
		"clsx": "^2.1.1",
		"esbuild": "^0.25.3",
		"esbuild-postcss": "^0.0.4",
		"eslint": "^9.25.1",
		"fs-extra": "^11.3.0",
		"lucide-react": "^0.525.0",
		"npm-run-all": "^4.1.5",
		"postcss": "8.5.6",
		"react": "19.1.0",
		"react-dom": "19.1.0",
		"tailwind-merge": "^3.3.1",
		"tailwindcss": "4.1.11",
		"typescript": "^5.8.3"
	},
	"pnpm": {
		"overrides": {
			"glob@<8": "^10.4.5",
			"inflight": "npm:@tootallnate/once@2"
		}
	}
}
