{ "name": "codesys-mcp-companion", "displayName": "CODESYS MCP Companion", "description": "VS Code/Cursor companion extension for CODESYS MCP bridge workflows.", "version": "0.1.0", "publisher": "nearxos", "private": true, "engines": { "vscode": "^1.90.0" }, "categories": [ "Other", "Programming Languages" ], "activationEvents": [ "onStartupFinished", "onCommand:codesys.connect", "onCommand:codesys.health", "onCommand:codesys.createProject", "onCommand:codesys.syncProject", "onCommand:codesys.buildProject", "onCommand:codesys.downloadToDevice" ], "main": "./out/extension.js", "contributes": { "commands": [ { "command": "codesys.connect", "title": "CODESYS: Connect MCP Bridge" }, { "command": "codesys.health", "title": "CODESYS: Health Check" }, { "command": "codesys.createProject", "title": "CODESYS: Create Project" }, { "command": "codesys.selectProject", "title": "CODESYS: Select Project" }, { "command": "codesys.stageExistingProject", "title": "CODESYS: Stage Existing Project" }, { "command": "codesys.readProjectInventory", "title": "CODESYS: Read Project Inventory" }, { "command": "codesys.readDeviceIo", "title": "CODESYS: Read Device I/O" }, { "command": "codesys.writePou", "title": "CODESYS: Write POU" }, { "command": "codesys.writeIoMapping", "title": "CODESYS: Write IO Mapping" }, { "command": "codesys.manageDevice", "title": "CODESYS: Manage Device" }, { "command": "codesys.syncProject", "title": "CODESYS: Sync Project" }, { "command": "codesys.buildProject", "title": "CODESYS: Build Project" }, { "command": "codesys.downloadToDevice", "title": "CODESYS: Download To Device" }, { "command": "codesys.refreshJobs", "title": "CODESYS: Refresh Jobs" }, { "command": "codesys.openOutput", "title": "CODESYS: Open Output" }, { "command": "codesys.syncCurrentFile", "title": "CODESYS: Sync Current ST File" } ], "configuration": { "title": "CODESYS MCP Companion", "properties": { "codesys.pythonPath": { "type": "string", "default": "python", "description": "Python executable used to launch the CODESYS MCP bridge server." }, "codesys.bridgeScriptPath": { "type": "string", "default": "", "description": "Absolute path to python_scripting/mcp_codesys_bridge/server.py. If empty, default repo-relative path is used." }, "codesys.agentUrl": { "type": "string", "default": "http://127.0.0.1:8787", "description": "Windows CODESYS agent URL passed to MCP bridge." }, "codesys.agentToken": { "type": "string", "default": "", "description": "Windows CODESYS agent shared token." }, "codesys.requestTimeoutSec": { "type": "number", "default": 30, "minimum": 5, "description": "CODESYS MCP bridge request timeout in seconds." }, "codesys.pollIntervalMs": { "type": "number", "default": 1500, "minimum": 500, "description": "Polling interval for asynchronous job progress." }, "codesys.defaultProjectPath": { "type": "string", "default": "", "description": "Default CODESYS project path used by commands." }, "codesys.defaultDryRunMutations": { "type": "boolean", "default": true, "description": "Run mutating operations in dry-run mode unless explicitly disabled in command input." }, "codesys.allowDownloadCommand": { "type": "boolean", "default": false, "description": "Enable UI command for download_to_device." }, "codesys.mockMode": { "type": "boolean", "default": false, "description": "Use local mocked MCP responses for extension integration testing." } } }, "viewsContainers": { "activitybar": [ { "id": "codesys", "title": "CODESYS", "icon": "media/codesys.svg" } ] }, "views": { "codesys": [ { "id": "codesysProjectsView", "name": "Projects" }, { "id": "codesysJobsView", "name": "Jobs" }, { "id": "codesysActionsView", "name": "Actions" } ] }, "menus": { "editor/context": [ { "command": "codesys.syncCurrentFile", "when": "resourceExtname =~ /\\.st$/ || resourceExtname =~ /\\.gvl$/ || resourceExtname =~ /\\.nvl$/ || resourceExtname =~ /\\.txt$/", "group": "navigation@90" } ], "view/title": [ { "command": "codesys.refreshJobs", "when": "view == codesysJobsView", "group": "navigation" } ] }, "languages": [ { "id": "codesys-st", "aliases": [ "CODESYS Structured Text", "ST" ], "extensions": [ ".st", ".gvl", ".nvl", ".type.st" ], "configuration": "./language-configuration.json" } ], "grammars": [ { "language": "codesys-st", "scopeName": "source.codesys.st", "path": "./syntaxes/codesys-st.tmLanguage.json" } ], "snippets": [ { "language": "codesys-st", "path": "./snippets/codesys-st.json" } ] }, "scripts": { "compile": "tsc -p ./", "watch": "tsc -watch -p ./", "lint": "eslint src --ext ts", "test": "npm run compile && node ./out/test/runTest.js", "package": "vsce package --no-dependencies", "check": "npm run compile && npm run lint" }, "devDependencies": { "@types/mocha": "^10.0.8", "@types/node": "^20.16.5", "@types/vscode": "^1.90.0", "@typescript-eslint/eslint-plugin": "^8.13.0", "@typescript-eslint/parser": "^8.13.0", "@vscode/test-electron": "^2.4.1", "@vscode/vsce": "^3.2.2", "eslint": "^8.57.1", "mocha": "^10.7.3", "typescript": "^5.6.2" } }