638 lines
18 KiB
JSON
638 lines
18 KiB
JSON
{
|
|
"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": [
|
|
"onDebug:runa",
|
|
"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": {
|
|
"debuggers": [
|
|
{
|
|
"type": "runa",
|
|
"label": "Runa Actor",
|
|
"languages": [
|
|
"rune"
|
|
],
|
|
"configurationAttributes": {
|
|
"attach": {
|
|
"properties": {
|
|
"actorRef": {
|
|
"type": "string",
|
|
"description": "Actor reference in the connected image. Omit to choose an actor."
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"initialConfigurations": [
|
|
{
|
|
"type": "runa",
|
|
"request": "attach",
|
|
"name": "Attach to Runa Actor"
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"breakpoints": [
|
|
{
|
|
"language": "rune"
|
|
}
|
|
],
|
|
"languages": [
|
|
{
|
|
"id": "rune",
|
|
"aliases": [
|
|
"Rune"
|
|
],
|
|
"extensions": [
|
|
".rn"
|
|
],
|
|
"mimetypes": [
|
|
"text/x-rune"
|
|
]
|
|
}
|
|
],
|
|
"commands": [
|
|
{
|
|
"command": "runa.debugActor",
|
|
"title": "Debug Actor",
|
|
"category": "Runa",
|
|
"enablement": "runa.connected",
|
|
"icon": "$(debug-alt)"
|
|
},
|
|
{
|
|
"command": "runa.stepOver",
|
|
"title": "Step Over Source Line",
|
|
"category": "Runa",
|
|
"enablement": "runa.connected"
|
|
},
|
|
{
|
|
"command": "runa.stepOut",
|
|
"title": "Step Out of Function",
|
|
"category": "Runa",
|
|
"enablement": "runa.connected"
|
|
},
|
|
{
|
|
"command": "runa.stepSource",
|
|
"title": "Step Into Source Line",
|
|
"category": "Runa",
|
|
"enablement": "runa.connected"
|
|
},
|
|
{
|
|
"command": "runa.setBreakpoints",
|
|
"title": "Set Actor Breakpoints...",
|
|
"category": "Runa",
|
|
"enablement": "runa.connected"
|
|
},
|
|
{
|
|
"command": "runa.inspectExecution",
|
|
"title": "Inspect Execution Stack...",
|
|
"category": "Runa",
|
|
"enablement": "runa.connected"
|
|
},
|
|
{
|
|
"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.saveImage",
|
|
"title": "Save Image...",
|
|
"category": "Runa",
|
|
"enablement": "runa.connected"
|
|
},
|
|
{
|
|
"command": "runa.restoreImage",
|
|
"title": "Restore Image...",
|
|
"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.debugActor",
|
|
"when": "view == runa.actors && viewItem == runa.actor && runa.connected",
|
|
"group": "debug@0"
|
|
},
|
|
{
|
|
"command": "runa.stepOver",
|
|
"when": "view == runa.actors && viewItem == runa.actor && runa.connected",
|
|
"group": "debug@2a"
|
|
},
|
|
{
|
|
"command": "runa.stepOut",
|
|
"when": "view == runa.actors && viewItem == runa.actor && runa.connected",
|
|
"group": "debug@2b"
|
|
},
|
|
{
|
|
"command": "runa.stepSource",
|
|
"when": "view == runa.actors && viewItem == runa.actor && runa.connected",
|
|
"group": "debug@2"
|
|
},
|
|
{
|
|
"command": "runa.setBreakpoints",
|
|
"when": "view == runa.actors && viewItem == runa.actor && runa.connected",
|
|
"group": "debug@3"
|
|
},
|
|
{
|
|
"command": "runa.inspectExecution",
|
|
"when": "view == runa.actors && viewItem == runa.actor && runa.connected",
|
|
"group": "debug@1"
|
|
},
|
|
{
|
|
"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."
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|