mirror of
https://github.com/l0ng-ai/openidea.git
synced 2026-11-06 16:08:05 +00:00
A plugin system built on WebAssembly components (wasmtime, WASI p2), with a typed WIT API (`openidea:plugin@1.0.0`) and a Rust SDK, shipped as a preview. - Extension points declared in `plugin.toml` (commands, languages, themes, icon themes, menus, key bindings, status items, settings, views, custom editors, file icons and templates, run detectors, editor providers), validated before anything takes effect and projected onto the workbench's own registries: plugin themes and file icon themes are chosen in Settings › Appearance and Quick Switch, plugin shortcuts are edited in Settings › Keymap, plugin problems are grouped in Settings › Inspections. - Capabilities with risk levels and consent at install, pinned `process:` programs, secrets in the OS keychain. - Runtime: one thread per active plugin, fuel/time/memory budgets, soft and hard deadlines on the editing path, cancellation, crash backoff, idle reclaim, a precompiled-component cache; remote projects run code plugins on `openidea-server`. - Web views and custom editors with a sandboxed page, a document bridge joined to the text editor's undo history, and split or preview layouts. - Distribution: signed `.oiplugin` packages, a static marketplace index with revocation, versioned installs with rollback, install from a `.zip` or a folder. The release workflow signs and publishes the official plugins and their index, which released builds use as the default marketplace. - Official plugins: String Tools, Key Promoter, Git Toolbox, AI Completion, Checkstyle, MyBatis Navigator, CSV Editor, Solidity, Material Icons, Harbor Night, Excalidraw, Graphviz, Regex Tester, License Header. Closes #732 Co-authored-by: Deng Liu <5108773+dengliu@users.noreply.github.com> Co-authored-by: florentvdry <16673235+florentvdry@users.noreply.github.com>
472 lines
12 KiB
JSON
472 lines
12 KiB
JSON
{
|
|
"iconDefinitions": {
|
|
"archive": "icons/archive.svg",
|
|
"astro": "icons/astro.svg",
|
|
"audio": "icons/audio.svg",
|
|
"batch": "icons/batch.svg",
|
|
"c": "icons/c.svg",
|
|
"cargo": "icons/cargo.svg",
|
|
"class": "icons/class.svg",
|
|
"clojure": "icons/clojure.svg",
|
|
"cpp": "icons/cpp.svg",
|
|
"csharp": "icons/csharp.svg",
|
|
"css": "icons/css.svg",
|
|
"csv": "icons/csv.svg",
|
|
"dart": "icons/dart.svg",
|
|
"database": "icons/database.svg",
|
|
"diff": "icons/diff.svg",
|
|
"docker": "icons/docker.svg",
|
|
"editorconfig": "icons/editorconfig.svg",
|
|
"elixir": "icons/elixir.svg",
|
|
"env": "icons/env.svg",
|
|
"erlang": "icons/erlang.svg",
|
|
"file": "icons/file.svg",
|
|
"folder": "icons/folder.svg",
|
|
"folder-api": "icons/folder-api.svg",
|
|
"folder-assets": "icons/folder-assets.svg",
|
|
"folder-components": "icons/folder-components.svg",
|
|
"folder-config": "icons/folder-config.svg",
|
|
"folder-db": "icons/folder-db.svg",
|
|
"folder-deps": "icons/folder-deps.svg",
|
|
"folder-dist": "icons/folder-dist.svg",
|
|
"folder-docs": "icons/folder-docs.svg",
|
|
"folder-git": "icons/folder-git.svg",
|
|
"folder-i18n": "icons/folder-i18n.svg",
|
|
"folder-open": "icons/folder-open.svg",
|
|
"folder-plugins": "icons/folder-plugins.svg",
|
|
"folder-scripts": "icons/folder-scripts.svg",
|
|
"folder-src": "icons/folder-src.svg",
|
|
"folder-styles": "icons/folder-styles.svg",
|
|
"folder-test": "icons/folder-test.svg",
|
|
"font": "icons/font.svg",
|
|
"fsharp": "icons/fsharp.svg",
|
|
"git": "icons/git.svg",
|
|
"go": "icons/go.svg",
|
|
"gomod": "icons/gomod.svg",
|
|
"graphql": "icons/graphql.svg",
|
|
"groovy": "icons/groovy.svg",
|
|
"haskell": "icons/haskell.svg",
|
|
"header": "icons/header.svg",
|
|
"html": "icons/html.svg",
|
|
"http": "icons/http.svg",
|
|
"image": "icons/image.svg",
|
|
"ini": "icons/ini.svg",
|
|
"java": "icons/java.svg",
|
|
"javascript": "icons/javascript.svg",
|
|
"json": "icons/json.svg",
|
|
"julia": "icons/julia.svg",
|
|
"kotlin": "icons/kotlin.svg",
|
|
"less": "icons/less.svg",
|
|
"license": "icons/license.svg",
|
|
"lock": "icons/lock.svg",
|
|
"log": "icons/log.svg",
|
|
"lua": "icons/lua.svg",
|
|
"makefile": "icons/makefile.svg",
|
|
"markdown": "icons/markdown.svg",
|
|
"nim": "icons/nim.svg",
|
|
"nix": "icons/nix.svg",
|
|
"notebook": "icons/notebook.svg",
|
|
"npm": "icons/npm.svg",
|
|
"objc": "icons/objc.svg",
|
|
"ocaml": "icons/ocaml.svg",
|
|
"pdf": "icons/pdf.svg",
|
|
"perl": "icons/perl.svg",
|
|
"php": "icons/php.svg",
|
|
"pnpm": "icons/pnpm.svg",
|
|
"powershell": "icons/powershell.svg",
|
|
"proto": "icons/proto.svg",
|
|
"python": "icons/python.svg",
|
|
"r": "icons/r.svg",
|
|
"react": "icons/react.svg",
|
|
"react-ts": "icons/react-ts.svg",
|
|
"readme": "icons/readme.svg",
|
|
"ruby": "icons/ruby.svg",
|
|
"rust": "icons/rust.svg",
|
|
"sass": "icons/sass.svg",
|
|
"scala": "icons/scala.svg",
|
|
"settings": "icons/settings.svg",
|
|
"shell": "icons/shell.svg",
|
|
"solidity": "icons/solidity.svg",
|
|
"svelte": "icons/svelte.svg",
|
|
"svg": "icons/svg.svg",
|
|
"swift": "icons/swift.svg",
|
|
"terraform": "icons/terraform.svg",
|
|
"test": "icons/test.svg",
|
|
"tex": "icons/tex.svg",
|
|
"text": "icons/text.svg",
|
|
"toml": "icons/toml.svg",
|
|
"tsconfig": "icons/tsconfig.svg",
|
|
"typescript": "icons/typescript.svg",
|
|
"typescript-def": "icons/typescript-def.svg",
|
|
"video": "icons/video.svg",
|
|
"vim": "icons/vim.svg",
|
|
"vite": "icons/vite.svg",
|
|
"vue": "icons/vue.svg",
|
|
"wasm": "icons/wasm.svg",
|
|
"xml": "icons/xml.svg",
|
|
"yaml": "icons/yaml.svg",
|
|
"zig": "icons/zig.svg"
|
|
},
|
|
"file": "file",
|
|
"folder": "folder",
|
|
"folderExpanded": "folder-open",
|
|
"fileExtensions": {
|
|
"7z": "archive",
|
|
"astro": "astro",
|
|
"avi": "video",
|
|
"avif": "image",
|
|
"bash": "shell",
|
|
"bat": "batch",
|
|
"bib": "tex",
|
|
"bmp": "image",
|
|
"bz2": "archive",
|
|
"c": "c",
|
|
"c++": "cpp",
|
|
"cc": "cpp",
|
|
"cfg": "ini",
|
|
"cjs": "javascript",
|
|
"class": "class",
|
|
"clj": "clojure",
|
|
"cljc": "clojure",
|
|
"cljs": "clojure",
|
|
"cmd": "batch",
|
|
"conf": "ini",
|
|
"cpp": "cpp",
|
|
"cs": "csharp",
|
|
"css": "css",
|
|
"csv": "csv",
|
|
"csx": "csharp",
|
|
"cts": "typescript",
|
|
"cxx": "cpp",
|
|
"d.cts": "typescript-def",
|
|
"d.mts": "typescript-def",
|
|
"d.ts": "typescript-def",
|
|
"dart": "dart",
|
|
"db": "database",
|
|
"diff": "diff",
|
|
"edn": "clojure",
|
|
"env": "env",
|
|
"erb": "ruby",
|
|
"erl": "erlang",
|
|
"ex": "elixir",
|
|
"exs": "elixir",
|
|
"fish": "shell",
|
|
"flac": "audio",
|
|
"fs": "fsharp",
|
|
"fsi": "fsharp",
|
|
"fsx": "fsharp",
|
|
"gemspec": "ruby",
|
|
"gif": "image",
|
|
"go": "go",
|
|
"gql": "graphql",
|
|
"gradle": "groovy",
|
|
"graphql": "graphql",
|
|
"groovy": "groovy",
|
|
"gz": "archive",
|
|
"h": "header",
|
|
"hcl": "terraform",
|
|
"heex": "elixir",
|
|
"hh": "header",
|
|
"hpp": "header",
|
|
"hrl": "erlang",
|
|
"hs": "haskell",
|
|
"htm": "html",
|
|
"html": "html",
|
|
"http": "http",
|
|
"hxx": "header",
|
|
"icns": "image",
|
|
"ico": "image",
|
|
"iml": "xml",
|
|
"ini": "ini",
|
|
"inl": "header",
|
|
"ipynb": "notebook",
|
|
"jar": "class",
|
|
"java": "java",
|
|
"jl": "julia",
|
|
"jpeg": "image",
|
|
"jpg": "image",
|
|
"js": "javascript",
|
|
"json": "json",
|
|
"json5": "json",
|
|
"jsonc": "json",
|
|
"jsx": "react",
|
|
"kt": "kotlin",
|
|
"kts": "kotlin",
|
|
"less": "less",
|
|
"lhs": "haskell",
|
|
"lock": "lock",
|
|
"log": "log",
|
|
"lua": "lua",
|
|
"m": "objc",
|
|
"m4a": "audio",
|
|
"markdown": "markdown",
|
|
"md": "markdown",
|
|
"mdx": "markdown",
|
|
"mjs": "javascript",
|
|
"mkv": "video",
|
|
"ml": "ocaml",
|
|
"mli": "ocaml",
|
|
"mm": "objc",
|
|
"mov": "video",
|
|
"mp3": "audio",
|
|
"mp4": "video",
|
|
"mts": "typescript",
|
|
"nim": "nim",
|
|
"nix": "nix",
|
|
"ogg": "audio",
|
|
"otf": "font",
|
|
"patch": "diff",
|
|
"pdf": "pdf",
|
|
"php": "php",
|
|
"pl": "perl",
|
|
"plist": "xml",
|
|
"pm": "perl",
|
|
"png": "image",
|
|
"prisma": "database",
|
|
"properties": "ini",
|
|
"proto": "proto",
|
|
"ps1": "powershell",
|
|
"psd1": "powershell",
|
|
"psm1": "powershell",
|
|
"py": "python",
|
|
"pyi": "python",
|
|
"pyw": "python",
|
|
"r": "r",
|
|
"rake": "ruby",
|
|
"rar": "archive",
|
|
"rb": "ruby",
|
|
"rest": "http",
|
|
"rmd": "r",
|
|
"rs": "rust",
|
|
"sass": "sass",
|
|
"sbt": "scala",
|
|
"sc": "scala",
|
|
"scala": "scala",
|
|
"scss": "sass",
|
|
"sh": "shell",
|
|
"sol": "solidity",
|
|
"spec.js": "test",
|
|
"spec.jsx": "test",
|
|
"spec.mjs": "test",
|
|
"spec.mts": "test",
|
|
"spec.ts": "test",
|
|
"spec.tsx": "test",
|
|
"sql": "database",
|
|
"sqlite": "database",
|
|
"sty": "tex",
|
|
"svelte": "svelte",
|
|
"svg": "svg",
|
|
"swift": "swift",
|
|
"tar": "archive",
|
|
"test.js": "test",
|
|
"test.jsx": "test",
|
|
"test.mjs": "test",
|
|
"test.mts": "test",
|
|
"test.py": "test",
|
|
"test.rs": "test",
|
|
"test.ts": "test",
|
|
"test.tsx": "test",
|
|
"tex": "tex",
|
|
"text": "text",
|
|
"tf": "terraform",
|
|
"tfvars": "terraform",
|
|
"tgz": "archive",
|
|
"tif": "image",
|
|
"tiff": "image",
|
|
"toml": "toml",
|
|
"ts": "typescript",
|
|
"tsv": "csv",
|
|
"tsx": "react-ts",
|
|
"ttf": "font",
|
|
"txt": "text",
|
|
"vim": "vim",
|
|
"vue": "vue",
|
|
"wasm": "wasm",
|
|
"wat": "wasm",
|
|
"wav": "audio",
|
|
"webm": "video",
|
|
"webp": "image",
|
|
"woff": "font",
|
|
"woff2": "font",
|
|
"xhtml": "html",
|
|
"xml": "xml",
|
|
"xsd": "xml",
|
|
"xsl": "xml",
|
|
"xz": "archive",
|
|
"yaml": "yaml",
|
|
"yml": "yaml",
|
|
"zig": "zig",
|
|
"zip": "archive",
|
|
"zon": "zig",
|
|
"zsh": "shell",
|
|
"zst": "archive"
|
|
},
|
|
"fileNames": {
|
|
".clippy.toml": "settings",
|
|
".dockerignore": "docker",
|
|
".editorconfig": "editorconfig",
|
|
".env": "env",
|
|
".env.development": "env",
|
|
".env.example": "env",
|
|
".env.local": "env",
|
|
".env.production": "env",
|
|
".eslintrc": "editorconfig",
|
|
".eslintrc.json": "editorconfig",
|
|
".gitattributes": "git",
|
|
".gitignore": "git",
|
|
".gitkeep": "git",
|
|
".gitmodules": "git",
|
|
".mailmap": "git",
|
|
".npmignore": "npm",
|
|
".npmrc": "npm",
|
|
".oxlintrc.json": "editorconfig",
|
|
".prettierignore": "editorconfig",
|
|
".prettierrc": "editorconfig",
|
|
".rustfmt.toml": "settings",
|
|
"bun.lockb": "lock",
|
|
"cargo.lock": "lock",
|
|
"cargo.toml": "cargo",
|
|
"clippy.toml": "settings",
|
|
"cmakelists.txt": "makefile",
|
|
"compose.yaml": "docker",
|
|
"compose.yml": "docker",
|
|
"composer.lock": "lock",
|
|
"containerfile": "docker",
|
|
"copying": "license",
|
|
"deny.toml": "settings",
|
|
"docker-compose.yaml": "docker",
|
|
"docker-compose.yml": "docker",
|
|
"dockerfile": "docker",
|
|
"gemfile.lock": "lock",
|
|
"gnumakefile": "makefile",
|
|
"go.mod": "gomod",
|
|
"go.sum": "gomod",
|
|
"go.work": "gomod",
|
|
"jsconfig.json": "tsconfig",
|
|
"justfile": "makefile",
|
|
"licence": "license",
|
|
"licence.md": "license",
|
|
"license": "license",
|
|
"license.md": "license",
|
|
"license.txt": "license",
|
|
"makefile": "makefile",
|
|
"mise.toml": "editorconfig",
|
|
"notice": "license",
|
|
"package-lock.json": "lock",
|
|
"package.json": "npm",
|
|
"pnpm-lock.yaml": "lock",
|
|
"pnpm-workspace.yaml": "pnpm",
|
|
"poetry.lock": "lock",
|
|
"readme": "readme",
|
|
"readme.md": "readme",
|
|
"readme.rst": "readme",
|
|
"readme.txt": "readme",
|
|
"rust-toolchain": "cargo",
|
|
"rust-toolchain.toml": "cargo",
|
|
"rustfmt.toml": "settings",
|
|
"tsconfig.base.json": "tsconfig",
|
|
"tsconfig.json": "tsconfig",
|
|
"uv.lock": "lock",
|
|
"vite.config.js": "vite",
|
|
"vite.config.mts": "vite",
|
|
"vite.config.ts": "vite",
|
|
"vitest.config.mts": "vite",
|
|
"vitest.config.ts": "vite",
|
|
"yarn.lock": "lock"
|
|
},
|
|
"folderNames": {
|
|
".cargo": "folder-config",
|
|
".config": "folder-config",
|
|
".git": "folder-git",
|
|
".github": "folder-git",
|
|
".gitlab": "folder-git",
|
|
".husky": "folder-git",
|
|
".idea": "folder-config",
|
|
".venv": "folder-deps",
|
|
".vscode": "folder-config",
|
|
"__tests__": "folder-test",
|
|
"addons": "folder-plugins",
|
|
"api": "folder-api",
|
|
"assets": "folder-assets",
|
|
"bin": "folder-dist",
|
|
"build": "folder-dist",
|
|
"ci": "folder-scripts",
|
|
"components": "folder-components",
|
|
"config": "folder-config",
|
|
"configs": "folder-config",
|
|
"coverage": "folder-dist",
|
|
"crates": "folder-src",
|
|
"css": "folder-styles",
|
|
"database": "folder-db",
|
|
"db": "folder-db",
|
|
"deps": "folder-deps",
|
|
"dist": "folder-dist",
|
|
"doc": "folder-docs",
|
|
"docs": "folder-docs",
|
|
"documentation": "folder-docs",
|
|
"e2e": "folder-test",
|
|
"etc": "folder-config",
|
|
"extensions": "folder-plugins",
|
|
"features": "folder-components",
|
|
"fixtures": "folder-test",
|
|
"fonts": "folder-assets",
|
|
"handlers": "folder-api",
|
|
"i18n": "folder-i18n",
|
|
"icons": "folder-assets",
|
|
"images": "folder-assets",
|
|
"img": "folder-assets",
|
|
"internal": "folder-src",
|
|
"lang": "folder-i18n",
|
|
"lib": "folder-src",
|
|
"libs": "folder-src",
|
|
"locale": "folder-i18n",
|
|
"locales": "folder-i18n",
|
|
"media": "folder-assets",
|
|
"migrations": "folder-db",
|
|
"node_modules": "folder-deps",
|
|
"obj": "folder-dist",
|
|
"out": "folder-dist",
|
|
"packages": "folder-src",
|
|
"pages": "folder-components",
|
|
"pkg": "folder-src",
|
|
"plugins": "folder-plugins",
|
|
"public": "folder-assets",
|
|
"release": "folder-dist",
|
|
"res": "folder-assets",
|
|
"resources": "folder-assets",
|
|
"routes": "folder-api",
|
|
"rpc": "folder-api",
|
|
"schema": "folder-db",
|
|
"script": "folder-scripts",
|
|
"scripts": "folder-scripts",
|
|
"scss": "folder-styles",
|
|
"sdk": "folder-plugins",
|
|
"server": "folder-api",
|
|
"settings": "folder-config",
|
|
"source": "folder-src",
|
|
"sources": "folder-src",
|
|
"spec": "folder-test",
|
|
"specs": "folder-test",
|
|
"sql": "folder-db",
|
|
"src": "folder-src",
|
|
"static": "folder-assets",
|
|
"styles": "folder-styles",
|
|
"target": "folder-dist",
|
|
"tasks": "folder-scripts",
|
|
"test": "folder-test",
|
|
"testdata": "folder-test",
|
|
"tests": "folder-test",
|
|
"theme": "folder-styles",
|
|
"themes": "folder-styles",
|
|
"third_party": "folder-deps",
|
|
"tools": "folder-scripts",
|
|
"translations": "folder-i18n",
|
|
"ui": "folder-components",
|
|
"vendor": "folder-deps",
|
|
"venv": "folder-deps",
|
|
"views": "folder-components",
|
|
"widgets": "folder-components",
|
|
"wiki": "folder-docs"
|
|
}
|
|
}
|