{ "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": [ "onFileSystem:runa-actor", "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": { "languages": [ { "id": "rune", "aliases": [ "Rune" ], "extensions": [ ".rn" ] } ], "commands": [ { "command": "runa.newSource", "title": "New Source File...", "category": "Runa", "icon": "$(new-file)", "enablement": "runa.connected" }, { "command": "runa.renameSource", "title": "Rename or Move Source...", "category": "Runa", "enablement": "runa.connected" }, { "command": "runa.deleteSource", "title": "Delete Source", "category": "Runa", "enablement": "runa.connected" }, { "command": "runa.editBehavior", "title": "Edit Current Behavior", "category": "Runa", "enablement": "runa.connected" }, { "command": "runa.goToBehavior", "title": "Go to Behavior", "category": "Runa", "enablement": "runa.connected" }, { "command": "runa.updateBehavior", "title": "Update Behavior...", "category": "Runa", "enablement": "runa.connected" }, { "command": "runa.editState", "title": "Edit Actor State...", "category": "Runa", "enablement": "runa.connected" }, { "command": "runa.editMessages", "title": "Edit Reserved and Queued Messages...", "category": "Runa", "enablement": "runa.connected" }, { "command": "runa.logLevel", "title": "Set Actor Log Level...", "category": "Runa", "enablement": "runa.connected" }, { "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.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 Removal)", "category": "Runa", "enablement": "runa.connected" }, { "command": "runa.kill", "title": "Kill Actor (Remove Immediately)", "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", "icon": "$(debug-step-over)", "category": "Runa", "enablement": "runa.connected" }, { "command": "runa.copyActorReference", "title": "Copy Actor Reference", "category": "Runa", "icon": "$(copy)" }, { "command": "runa.inspect", "title": "Inspect Actor", "category": "Runa", "icon": "$(inspect)" } ], "viewsContainers": { "activitybar": [ { "id": "runa", "title": "Runa", "icon": "resources/runa.svg" } ] }, "views": { "runa": [ { "id": "runa.sources", "name": "Image Sources", "visibility": "visible" }, { "id": "runa.actors", "name": "Actors", "visibility": "visible" } ] }, "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.newSource", "when": "view == runa.sources && runa.connected", "group": "navigation" }, { "command": "runa.tick", "when": "view == runa.actors && runa.connected", "group": "navigation" }, { "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.disconnect", "when": "view == runa.actors && runa.connected" } ], "view/item/context": [ { "command": "runa.newSource", "when": "view == runa.sources && viewItem == runa.sourceDirectory && runa.connected", "group": "runa_0_files@1" }, { "command": "runa.renameSource", "when": "view == runa.sources && viewItem == runa.sourceFile && runa.connected", "group": "runa_0_files@2" }, { "command": "runa.deleteSource", "when": "view == runa.sources && viewItem == runa.sourceFile && runa.connected", "group": "runa_0_files@3" }, { "command": "runa.editBehavior", "when": "view == runa.actors && viewItem == runa.actor && runa.connected", "group": "behavior@1" }, { "command": "runa.goToBehavior", "when": "view == runa.actors && viewItem == runa.actor && runa.connected", "group": "behavior@2" }, { "command": "runa.updateBehavior", "when": "view == runa.actors && viewItem == runa.actor && runa.connected", "group": "behavior@3" }, { "command": "runa.copyActorReference", "when": "view == runa.actors && viewItem == runa.actor", "group": "inline@2" }, { "command": "runa.copyActorReference", "when": "view == runa.actors && viewItem == runa.actor", "group": "copy" }, { "command": "runa.editState", "when": "view == runa.actors && viewItem == runa.actor", "group": "edit@1" }, { "command": "runa.editMessages", "when": "view == runa.actors && viewItem == runa.actor", "group": "edit@2" }, { "command": "runa.logLevel", "when": "view == runa.actors && viewItem == runa.actor", "group": "logging@1" }, { "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." } } } } }