Files
l0ng-ai fd1f465aeb feat(plugins): extension points, capability consent, async runtime and plugin API 1.0
Rework the plugin system per docs/plugin_plan.md (P0–P8):

- Extension-point registry (ide-extension) so new contribution types register
  without touching the kernel; languages, run detectors, providers, views and
  UI contributions go through it.
- Per-plugin capability consent with a risk-graded ledger; process
  capabilities are pinned to resolved binary paths and hashes.
- Async, actor-per-plugin Wasm runtime with lazy activation, cancellation,
  events, long-running tasks and idle reclamation.
- Plugin host moved into ide-host, shared by local and remote projects.
- Distribution: install/package tooling (openidea-plugin bin) and a static
  market index.
- WIT frozen as openidea:[email protected]; Rust SDK with mock host.
- Ten official validation plugins under plugins/official.
2026-11-04 02:41:46 +08:00

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"
}
}