{ "name": "runa", "displayName": "Runa — Rune Actors", "description": "Edit image source files and inspect and control actors in a trusted localhost Runa image.", "version": "0.0.0", "private": true, "engines": { "vscode": "^1.96.0", "node": ">=22" }, "categories": [ "Other" ], "main": "./out/src/extension.js", "activationEvents": [ "onView:runa.actors", "onView:runa.sources", "onFileSystem:runa-image" ], "scripts": { "compile": "tsc -p .", "lint": "tsc -p . --noEmit && prettier --check .", "format": "prettier --write .", "test": "npm run compile && node --test out/test/*.test.js", "test:integration": "cargo build --manifest-path ../Cargo.toml -p runa -p runa-cli && npm run compile && node --test out/integration/*.test.js", "test:host": "cargo build --manifest-path ../Cargo.toml -p runa && npm run compile && node scripts/test-host.cjs" }, "dependencies": { "lossless-json": "^4.3.0", "ws": "^8.18.3" }, "devDependencies": { "@vscode/test-electron": "^2.5.2", "@types/node": "^22.0.0", "@types/vscode": "~1.96.0", "@types/ws": "^8.18.1", "prettier": "^3.6.2", "typescript": "^5.9.3" }, "contributes": { "commands": [ { "command": "runa.connect", "title": "Connect to Local Image", "category": "Runa" }, { "command": "runa.disconnect", "title": "Disconnect", "category": "Runa" }, { "command": "runa.refresh", "title": "Refresh Image", "category": "Runa", "icon": "$(refresh)" }, { "command": "runa.addSourceFolder", "title": "Add Source Folder to Workspace", "category": "Runa", "enablement": "runa.connected" }, { "command": "runa.spawn", "title": "Spawn Actor", "category": "Runa", "icon": "$(add)", "enablement": "runa.connected" }, { "command": "runa.spawnSource", "title": "Spawn", "category": "Runa", "enablement": "runa.connected" }, { "command": "runa.spawnSourceWithState", "title": "Spawn with State...", "category": "Runa", "enablement": "runa.connected" }, { "command": "runa.commitSource", "title": "Commit Source", "category": "Runa", "enablement": "runa.connected" }, { "command": "runa.sourceHistory", "title": "Source History...", "category": "Runa", "enablement": "runa.connected" }, { "command": "runa.rollbackSource", "title": "Roll Back Source...", "category": "Runa", "enablement": "runa.connected" }, { "command": "runa.send", "title": "Send Message", "category": "Runa", "enablement": "runa.connected" }, { "command": "runa.stop", "title": "Stop Actor (Graceful)", "category": "Runa", "enablement": "runa.connected" }, { "command": "runa.kill", "title": "Kill Actor", "category": "Runa", "enablement": "runa.connected" }, { "command": "runa.restart", "title": "Restart Actor", "category": "Runa", "enablement": "runa.connected" }, { "command": "runa.pause", "title": "Pause Actor", "category": "Runa", "enablement": "runa.connected" }, { "command": "runa.resume", "title": "Resume Actor", "category": "Runa", "enablement": "runa.connected" }, { "command": "runa.reload", "title": "Reload Actor Source", "category": "Runa", "enablement": "runa.connected" }, { "command": "runa.become", "title": "Become Source...", "category": "Runa", "enablement": "runa.connected" }, { "command": "runa.tick", "title": "Advance Scheduler", "category": "Runa", "enablement": "runa.connected" }, { "command": "runa.inspect", "title": "Inspect Actor", "category": "Runa", "icon": "$(inspect)" } ], "views": { "explorer": [ { "id": "runa.actors", "name": "Runa Actors" }, { "id": "runa.sources", "name": "Runa Image Sources" } ] }, "viewsWelcome": [ { "view": "runa.sources", "contents": "Connect to browse and edit the image's virtual filesystem.\n[Connect](command:runa.connect)", "when": "!runa.connected" }, { "view": "runa.actors", "contents": "Connect to a trusted local Runa image.\n[Connect](command:runa.connect)", "when": "!runa.connected" } ], "menus": { "view/title": [ { "command": "runa.connect", "when": "view == runa.sources && !runa.connected", "group": "navigation" }, { "command": "runa.refresh", "when": "view == runa.sources && runa.connected", "group": "navigation" }, { "command": "runa.spawn", "when": "view == runa.actors && runa.connected", "group": "navigation" }, { "command": "runa.connect", "when": "view == runa.actors && !runa.connected", "group": "navigation" }, { "command": "runa.refresh", "when": "view == runa.actors && runa.connected", "group": "navigation" }, { "command": "runa.addSourceFolder", "when": "view == runa.actors && runa.connected" }, { "command": "runa.disconnect", "when": "view == runa.actors && runa.connected" } ], "view/item/context": [ { "command": "runa.spawnSource", "when": "view == runa.sources && viewItem == runa.sourceFile && runa.connected", "group": "runa_1_spawn@1" }, { "command": "runa.spawnSourceWithState", "when": "view == runa.sources && viewItem == runa.sourceFile && runa.connected", "group": "runa_1_spawn@2" }, { "command": "runa.commitSource", "when": "view == runa.sources && viewItem == runa.sourceFile && runa.connected", "group": "runa_2_source@1" }, { "command": "runa.sourceHistory", "when": "view == runa.sources && viewItem == runa.sourceFile && runa.connected", "group": "runa_2_source@2" }, { "command": "runa.rollbackSource", "when": "view == runa.sources && viewItem == runa.sourceFile && runa.connected", "group": "runa_2_source@3" }, { "command": "runa.send", "when": "view == runa.actors && viewItem == runa.actor", "group": "actor@1" }, { "command": "runa.pause", "when": "view == runa.actors && viewItem == runa.actor", "group": "actor@2" }, { "command": "runa.resume", "when": "view == runa.actors && viewItem == runa.actor", "group": "actor@3" }, { "command": "runa.stop", "when": "view == runa.actors && viewItem == runa.actor", "group": "actor@4" }, { "command": "runa.kill", "when": "view == runa.actors && viewItem == runa.actor", "group": "actor@5" }, { "command": "runa.restart", "when": "view == runa.actors && viewItem == runa.actor", "group": "actor@6" }, { "command": "runa.reload", "when": "view == runa.actors && viewItem == runa.actor", "group": "actor@7" }, { "command": "runa.become", "when": "view == runa.actors && viewItem == runa.actor", "group": "actor@8" }, { "command": "runa.inspect", "when": "view == runa.actors && viewItem == runa.actor", "group": "inline" } ], "explorer/context": [ { "command": "runa.spawnSource", "when": "resourceScheme == runa-image && resourceExtname == .rn && runa.connected", "group": "runa_1_spawn@1" }, { "command": "runa.spawnSourceWithState", "when": "resourceScheme == runa-image && resourceExtname == .rn && runa.connected", "group": "runa_1_spawn@2" }, { "command": "runa.commitSource", "when": "resourceScheme == runa-image && resourceExtname == .rn && runa.connected", "group": "runa_2_source@1" }, { "command": "runa.sourceHistory", "when": "resourceScheme == runa-image && resourceExtname == .rn && runa.connected", "group": "runa_2_source@2" }, { "command": "runa.rollbackSource", "when": "resourceScheme == runa-image && resourceExtname == .rn && runa.connected", "group": "runa_2_source@3" } ], "editor/title/context": [ { "command": "runa.spawnSource", "when": "resourceScheme == runa-image && resourceExtname == .rn && runa.connected", "group": "runa_1_spawn@1" }, { "command": "runa.spawnSourceWithState", "when": "resourceScheme == runa-image && resourceExtname == .rn && runa.connected", "group": "runa_1_spawn@2" }, { "command": "runa.commitSource", "when": "resourceScheme == runa-image && resourceExtname == .rn && runa.connected", "group": "runa_2_source@1" }, { "command": "runa.sourceHistory", "when": "resourceScheme == runa-image && resourceExtname == .rn && runa.connected", "group": "runa_2_source@2" }, { "command": "runa.rollbackSource", "when": "resourceScheme == runa-image && resourceExtname == .rn && runa.connected", "group": "runa_2_source@3" } ], "commandPalette": [ { "command": "runa.spawnSource", "when": "runa.connected" }, { "command": "runa.spawnSourceWithState", "when": "runa.connected" }, { "command": "runa.commitSource", "when": "runa.connected" }, { "command": "runa.sourceHistory", "when": "runa.connected" }, { "command": "runa.rollbackSource", "when": "runa.connected" } ] }, "configuration": { "title": "Runa", "properties": { "runa.address": { "type": "string", "default": "127.0.0.1:3737", "scope": "machine", "description": "Trusted local image endpoint: numeric IPv4 loopback or [::1]:port. No authentication is available." } } } } }