From c24e652b6b6347c98b44c51d48a5753e75ce5845 Mon Sep 17 00:00:00 2001 From: Neko Ayaka Date: Sun, 1 Feb 2026 23:21:08 +0800 Subject: [PATCH] refactor(vscode-airi): move to integrations/ as multi-package --- .gitignore | 4 +- .../vscode/airi-plugin-vscode/README.md | 3 + .../vscode/airi-plugin-vscode/package.json | 33 +++++ .../vscode/airi-plugin-vscode/src/index.ts | 7 + .../vscode/airi-plugin-vscode/tsconfig.json | 7 + .../airi-plugin-vscode/tsdown.config.ts | 7 + .../vscode/vscode-airi}/.vscodeignore | 0 integrations/vscode/vscode-airi/LICENSE | 21 +++ .../vscode/vscode-airi}/README.md | 0 .../vscode/vscode-airi}/package.json | 8 +- .../vscode/vscode-airi}/res/logo.jpg | Bin .../vscode/vscode-airi}/scripts/dev.ts | 0 .../vscode/vscode-airi}/scripts/publish.ts | 0 .../vscode/vscode-airi}/scripts/shared.ts | 0 .../vscode-airi}/scripts/vscode-ext-gen.ts | 0 .../vscode/vscode-airi}/src/airi.ts | 0 .../vscode-airi}/src/context-collector.ts | 0 .../vscode/vscode-airi}/src/extension.ts | 0 .../vscode/vscode-airi/src/generated/meta.ts | 135 ++++++++++++++++++ .../vscode/vscode-airi}/src/types.ts | 0 .../vscode/vscode-airi}/tsconfig.json | 0 .../vscode/vscode-airi}/tsdown.config.ts | 0 pnpm-workspace.yaml | 1 + 23 files changed, 220 insertions(+), 6 deletions(-) create mode 100644 integrations/vscode/airi-plugin-vscode/README.md create mode 100644 integrations/vscode/airi-plugin-vscode/package.json create mode 100644 integrations/vscode/airi-plugin-vscode/src/index.ts create mode 100644 integrations/vscode/airi-plugin-vscode/tsconfig.json create mode 100644 integrations/vscode/airi-plugin-vscode/tsdown.config.ts rename {plugins/airi-plugin-vscode => integrations/vscode/vscode-airi}/.vscodeignore (100%) create mode 100644 integrations/vscode/vscode-airi/LICENSE rename {plugins/airi-plugin-vscode => integrations/vscode/vscode-airi}/README.md (100%) rename {plugins/airi-plugin-vscode => integrations/vscode/vscode-airi}/package.json (90%) rename {plugins/airi-plugin-vscode => integrations/vscode/vscode-airi}/res/logo.jpg (100%) rename {plugins/airi-plugin-vscode => integrations/vscode/vscode-airi}/scripts/dev.ts (100%) rename {plugins/airi-plugin-vscode => integrations/vscode/vscode-airi}/scripts/publish.ts (100%) rename {plugins/airi-plugin-vscode => integrations/vscode/vscode-airi}/scripts/shared.ts (100%) rename {plugins/airi-plugin-vscode => integrations/vscode/vscode-airi}/scripts/vscode-ext-gen.ts (100%) rename {plugins/airi-plugin-vscode => integrations/vscode/vscode-airi}/src/airi.ts (100%) rename {plugins/airi-plugin-vscode => integrations/vscode/vscode-airi}/src/context-collector.ts (100%) rename {plugins/airi-plugin-vscode => integrations/vscode/vscode-airi}/src/extension.ts (100%) create mode 100644 integrations/vscode/vscode-airi/src/generated/meta.ts rename {plugins/airi-plugin-vscode => integrations/vscode/vscode-airi}/src/types.ts (100%) rename {plugins/airi-plugin-vscode => integrations/vscode/vscode-airi}/tsconfig.json (100%) rename {plugins/airi-plugin-vscode => integrations/vscode/vscode-airi}/tsdown.config.ts (100%) diff --git a/.gitignore b/.gitignore index 644073761..4ef96e3a5 100644 --- a/.gitignore +++ b/.gitignore @@ -78,8 +78,8 @@ components.d.ts **/public/assets/fonts/ # Code generation -plugins/airi-plugin-vscode/src/generated/ -plugins/airi-plugin-vscode/LICENSE +vscode-airi/src/generated/ +vscode-airi/LICENSE # Make it easy for devenv users to override their local environment. # See: https://github.com/moeru-ai/airi/pull/110#discussion_r2024378953 diff --git a/integrations/vscode/airi-plugin-vscode/README.md b/integrations/vscode/airi-plugin-vscode/README.md new file mode 100644 index 000000000..76f61e2ba --- /dev/null +++ b/integrations/vscode/airi-plugin-vscode/README.md @@ -0,0 +1,3 @@ +# @proj-airi/airi-plugin-vscode + +Host-side plugin that bridges VS Code context and exposes UI contributions in AIRI. diff --git a/integrations/vscode/airi-plugin-vscode/package.json b/integrations/vscode/airi-plugin-vscode/package.json new file mode 100644 index 000000000..a777320b3 --- /dev/null +++ b/integrations/vscode/airi-plugin-vscode/package.json @@ -0,0 +1,33 @@ +{ + "name": "@proj-airi/airi-plugin-vscode", + "type": "module", + "version": "0.8.4", + "private": true, + "description": "AIRI host plugin that bridges VS Code context and UI", + "repository": { + "type": "git", + "url": "https://github.com/moeru-ai/airi.git", + "directory": "integrations/vscode/airi-plugin-vscode" + }, + "exports": { + ".": { + "types": "./dist/index.d.mts", + "default": "./dist/index.mjs" + } + }, + "main": "./dist/index.mjs", + "types": "./dist/index.d.mts", + "files": [ + "README.md", + "dist", + "package.json" + ], + "scripts": { + "dev": "pnpm run build", + "build": "tsdown", + "typecheck": "tsc --noEmit" + }, + "devDependencies": { + "@proj-airi/plugin-sdk": "workspace:*" + } +} diff --git a/integrations/vscode/airi-plugin-vscode/src/index.ts b/integrations/vscode/airi-plugin-vscode/src/index.ts new file mode 100644 index 000000000..f5288f564 --- /dev/null +++ b/integrations/vscode/airi-plugin-vscode/src/index.ts @@ -0,0 +1,7 @@ +export function activate() { + // TODO: bind to vscode-airi bridge over control plane +} + +export function deactivate() { + // TODO: clean up subscriptions +} diff --git a/integrations/vscode/airi-plugin-vscode/tsconfig.json b/integrations/vscode/airi-plugin-vscode/tsconfig.json new file mode 100644 index 000000000..6f314fb0d --- /dev/null +++ b/integrations/vscode/airi-plugin-vscode/tsconfig.json @@ -0,0 +1,7 @@ +{ + "extends": "../../../tsconfig.json", + "compilerOptions": { + "noEmit": true + }, + "include": ["src"] +} diff --git a/integrations/vscode/airi-plugin-vscode/tsdown.config.ts b/integrations/vscode/airi-plugin-vscode/tsdown.config.ts new file mode 100644 index 000000000..3b4041f81 --- /dev/null +++ b/integrations/vscode/airi-plugin-vscode/tsdown.config.ts @@ -0,0 +1,7 @@ +import { defineConfig } from 'tsdown' + +export default defineConfig({ + entry: ['src/index.ts'], + dts: true, + format: 'esm', +}) diff --git a/plugins/airi-plugin-vscode/.vscodeignore b/integrations/vscode/vscode-airi/.vscodeignore similarity index 100% rename from plugins/airi-plugin-vscode/.vscodeignore rename to integrations/vscode/vscode-airi/.vscodeignore diff --git a/integrations/vscode/vscode-airi/LICENSE b/integrations/vscode/vscode-airi/LICENSE new file mode 100644 index 000000000..1bd715572 --- /dev/null +++ b/integrations/vscode/vscode-airi/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024-PRESENT Neko Ayaka + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/plugins/airi-plugin-vscode/README.md b/integrations/vscode/vscode-airi/README.md similarity index 100% rename from plugins/airi-plugin-vscode/README.md rename to integrations/vscode/vscode-airi/README.md diff --git a/plugins/airi-plugin-vscode/package.json b/integrations/vscode/vscode-airi/package.json similarity index 90% rename from plugins/airi-plugin-vscode/package.json rename to integrations/vscode/vscode-airi/package.json index 0c2c75c9f..9133fd4f8 100644 --- a/plugins/airi-plugin-vscode/package.json +++ b/integrations/vscode/vscode-airi/package.json @@ -1,14 +1,14 @@ { "publisher": "proj-airi", - "name": "@proj-airi/airi-plugin-vscode", - "displayName": "AIRI", + "name": "vscode-airi", + "displayName": "AIRI VSCode adapter", "version": "0.8.4", "private": true, - "description": "VSCode extension that shares your coding context with AIRI", + "description": "Adapter that connects VSCode into Project AIRI", "repository": { "type": "git", "url": "https://github.com/moeru-ai/airi.git", - "directory": "plugins/airi-plugin-vscode" + "directory": "integrations/vscode/vscode-airi" }, "categories": [ "Other" diff --git a/plugins/airi-plugin-vscode/res/logo.jpg b/integrations/vscode/vscode-airi/res/logo.jpg similarity index 100% rename from plugins/airi-plugin-vscode/res/logo.jpg rename to integrations/vscode/vscode-airi/res/logo.jpg diff --git a/plugins/airi-plugin-vscode/scripts/dev.ts b/integrations/vscode/vscode-airi/scripts/dev.ts similarity index 100% rename from plugins/airi-plugin-vscode/scripts/dev.ts rename to integrations/vscode/vscode-airi/scripts/dev.ts diff --git a/plugins/airi-plugin-vscode/scripts/publish.ts b/integrations/vscode/vscode-airi/scripts/publish.ts similarity index 100% rename from plugins/airi-plugin-vscode/scripts/publish.ts rename to integrations/vscode/vscode-airi/scripts/publish.ts diff --git a/plugins/airi-plugin-vscode/scripts/shared.ts b/integrations/vscode/vscode-airi/scripts/shared.ts similarity index 100% rename from plugins/airi-plugin-vscode/scripts/shared.ts rename to integrations/vscode/vscode-airi/scripts/shared.ts diff --git a/plugins/airi-plugin-vscode/scripts/vscode-ext-gen.ts b/integrations/vscode/vscode-airi/scripts/vscode-ext-gen.ts similarity index 100% rename from plugins/airi-plugin-vscode/scripts/vscode-ext-gen.ts rename to integrations/vscode/vscode-airi/scripts/vscode-ext-gen.ts diff --git a/plugins/airi-plugin-vscode/src/airi.ts b/integrations/vscode/vscode-airi/src/airi.ts similarity index 100% rename from plugins/airi-plugin-vscode/src/airi.ts rename to integrations/vscode/vscode-airi/src/airi.ts diff --git a/plugins/airi-plugin-vscode/src/context-collector.ts b/integrations/vscode/vscode-airi/src/context-collector.ts similarity index 100% rename from plugins/airi-plugin-vscode/src/context-collector.ts rename to integrations/vscode/vscode-airi/src/context-collector.ts diff --git a/plugins/airi-plugin-vscode/src/extension.ts b/integrations/vscode/vscode-airi/src/extension.ts similarity index 100% rename from plugins/airi-plugin-vscode/src/extension.ts rename to integrations/vscode/vscode-airi/src/extension.ts diff --git a/integrations/vscode/vscode-airi/src/generated/meta.ts b/integrations/vscode/vscode-airi/src/generated/meta.ts new file mode 100644 index 000000000..4d90e8bc0 --- /dev/null +++ b/integrations/vscode/vscode-airi/src/generated/meta.ts @@ -0,0 +1,135 @@ +// This file is generated by `vscode-ext-gen`. Do not modify manually. +// @see https://github.com/antfu/vscode-ext-gen + +// Meta info +export const publisher = 'proj-airi' +export const name = 'airi-vscode' +export const version = '0.8.49000' +export const displayName = 'AIRI VS Code Bridge' +export const description = 'VS Code bridge that shares coding context with AIRI' +export const extensionId = `${publisher}.${name}` + +/** + * Type union of all commands + */ +export type CommandKey + = | 'airi-vscode.enable' + | 'airi-vscode.disable' + | 'airi-vscode.status' + +/** + * Commands map registered by `proj-airi.airi-vscode` + */ +export const commands = { + /** + * AIRI: Enable + * @value `airi-vscode.enable` + */ + enable: 'airi-vscode.enable', + /** + * AIRI: Disable + * @value `airi-vscode.disable` + */ + disable: 'airi-vscode.disable', + /** + * AIRI: Show Status + * @value `airi-vscode.status` + */ + status: 'airi-vscode.status', +} satisfies Record + +/** + * Type union of all configs + */ +export type ConfigKey + = | 'airi-vscode.enabled' + | 'airi-vscode.contextLines' + | 'airi-vscode.sendInterval' + +export interface ConfigKeyTypeMap { + 'airi-vscode.enabled': boolean + 'airi-vscode.contextLines': number + 'airi-vscode.sendInterval': number +} + +export interface ConfigShorthandMap { + enabled: 'airi-vscode.enabled' + contextLines: 'airi-vscode.contextLines' + sendInterval: 'airi-vscode.sendInterval' +} + +export interface ConfigShorthandTypeMap { + enabled: boolean + contextLines: number + sendInterval: number +} + +export interface ConfigItem { + key: T + default: ConfigKeyTypeMap[T] +} + +/** + * Configs map registered by `proj-airi.airi-vscode` + */ +export const configs = { + /** + * Enable or disable the AIRI extension + * @key `airi-vscode.enabled` + * @default `true` + * @type `boolean` + */ + enabled: { + key: 'airi-vscode.enabled', + default: true, + } as ConfigItem<'airi-vscode.enabled'>, + /** + * Number of context lines to send (before and after current line) + * @key `airi-vscode.contextLines` + * @default `5` + * @type `number` + */ + contextLines: { + key: 'airi-vscode.contextLines', + default: 5, + } as ConfigItem<'airi-vscode.contextLines'>, + /** + * Interval in milliseconds to send updates (0 for real-time) + * @key `airi-vscode.sendInterval` + * @default `3000` + * @type `number` + */ + sendInterval: { + key: 'airi-vscode.sendInterval', + default: 3000, + } as ConfigItem<'airi-vscode.sendInterval'>, +} + +export interface ScopedConfigKeyTypeMap { + enabled: boolean + contextLines: number + sendInterval: number +} + +export const scopedConfigs = { + scope: 'airi-vscode', + defaults: { + enabled: true, + contextLines: 5, + sendInterval: 3000, + } satisfies ScopedConfigKeyTypeMap, +} + +export interface NestedConfigs { + 'airi-vscode': { + enabled: boolean + contextLines: number + sendInterval: number + } +} + +export interface NestedScopedConfigs { + enabled: boolean + contextLines: number + sendInterval: number +} diff --git a/plugins/airi-plugin-vscode/src/types.ts b/integrations/vscode/vscode-airi/src/types.ts similarity index 100% rename from plugins/airi-plugin-vscode/src/types.ts rename to integrations/vscode/vscode-airi/src/types.ts diff --git a/plugins/airi-plugin-vscode/tsconfig.json b/integrations/vscode/vscode-airi/tsconfig.json similarity index 100% rename from plugins/airi-plugin-vscode/tsconfig.json rename to integrations/vscode/vscode-airi/tsconfig.json diff --git a/plugins/airi-plugin-vscode/tsdown.config.ts b/integrations/vscode/vscode-airi/tsdown.config.ts similarity index 100% rename from plugins/airi-plugin-vscode/tsdown.config.ts rename to integrations/vscode/vscode-airi/tsdown.config.ts diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 440270020..1548aa65b 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -4,6 +4,7 @@ shellEmulator: true packages: - packages/** - plugins/** + - integrations/** - services/** - examples/** - docs/**