diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml
index cb8ddcd..6fef62f 100644
--- a/.github/workflows/publish.yml
+++ b/.github/workflows/publish.yml
@@ -55,9 +55,9 @@ jobs:
working-directory: packages/util
run: ${{ github.workspace }}/.github/scripts/publish-if-new.sh "@aictrl/util"
- - name: Publish @aictrl/plugin
+ - name: Publish @aictrl/plugin-sdk
working-directory: packages/plugin
- run: ${{ github.workspace }}/.github/scripts/publish-if-new.sh "@aictrl/plugin"
+ run: ${{ github.workspace }}/.github/scripts/publish-if-new.sh "@aictrl/plugin-sdk"
- name: Publish @aictrl/sdk
working-directory: packages/sdk
diff --git a/.opencode/agent/translator.md b/.opencode/agent/translator.md
index 516cd49..8cfa718 100644
--- a/.opencode/agent/translator.md
+++ b/.opencode/agent/translator.md
@@ -608,7 +608,7 @@ XDG_CONFIG_HOME
```text
../../../config.mjs
@astrojs/starlight/components
-@aictrl/plugin
+@aictrl/plugin-sdk
@aictrl/sdk
path
shescape
diff --git a/.opencode/tool/github-comment.ts b/.opencode/tool/github-comment.ts
index b9a9123..1e8ea95 100644
--- a/.opencode/tool/github-comment.ts
+++ b/.opencode/tool/github-comment.ts
@@ -1,5 +1,5 @@
///
-import { tool } from "@aictrl/plugin"
+import { tool } from "@aictrl/plugin-sdk"
function getPRNumber(): number {
const pr = parseInt(process.env.PR_NUMBER ?? "", 10)
diff --git a/.opencode/tool/github-pr-search.ts b/.opencode/tool/github-pr-search.ts
index 8840b0f..52c8b5d 100644
--- a/.opencode/tool/github-pr-search.ts
+++ b/.opencode/tool/github-pr-search.ts
@@ -1,5 +1,5 @@
///
-import { tool } from "@aictrl/plugin"
+import { tool } from "@aictrl/plugin-sdk"
import DESCRIPTION from "./github-pr-search.txt"
async function githubFetch(endpoint: string, options: RequestInit = {}) {
diff --git a/.opencode/tool/github-triage.ts b/.opencode/tool/github-triage.ts
index de5f65c..c382ac1 100644
--- a/.opencode/tool/github-triage.ts
+++ b/.opencode/tool/github-triage.ts
@@ -1,5 +1,5 @@
///
-import { tool } from "@aictrl/plugin"
+import { tool } from "@aictrl/plugin-sdk"
import DESCRIPTION from "./github-triage.txt"
const TEAM = {
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 49ce9df..7131bfb 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -74,7 +74,7 @@ Replace `` with your platform (e.g., `darwin-arm64`, `linux-x64`).
- `packages/aictrl/src/cli/cmd/tui/`: The TUI code, written in SolidJS with [opentui](https://github.com/sst/opentui)
- `packages/app`: The shared web UI components, written in SolidJS
- `packages/desktop`: The native desktop app, built with Tauri (wraps `packages/app`)
- - `packages/plugin`: Source for `@aictrl/plugin`
+ - `packages/plugin`: Source for `@aictrl/plugin-sdk` (plugin-author SDK — types and helpers for writing CLI plugins)
### Understanding bun dev vs aictrl
diff --git a/bun.lock b/bun.lock
index bd60b1c..930af54 100644
--- a/bun.lock
+++ b/bun.lock
@@ -5,7 +5,7 @@
"": {
"name": "aictrl",
"dependencies": {
- "@aictrl/plugin": "workspace:*",
+ "@aictrl/plugin-sdk": "workspace:*",
"@aictrl/script": "workspace:*",
"@aictrl/sdk": "workspace:*",
"@aws-sdk/client-s3": "3.933.0",
@@ -25,7 +25,7 @@
},
"packages/cli": {
"name": "@aictrl/cli",
- "version": "0.3.2",
+ "version": "0.3.3",
"bin": {
"aictrl": "./bin/aictrl",
},
@@ -35,7 +35,7 @@
"@agentclientprotocol/sdk": "0.14.1",
"@ai-sdk/provider": "2.0.1",
"@ai-sdk/provider-utils": "3.0.21",
- "@aictrl/plugin": "workspace:*",
+ "@aictrl/plugin-sdk": "workspace:*",
"@aictrl/sdk": "workspace:*",
"@aictrl/util": "workspace:*",
"@clack/prompts": "1.0.0-alpha.1",
@@ -177,8 +177,8 @@
],
},
"packages/plugin": {
- "name": "@aictrl/plugin",
- "version": "1.2.16",
+ "name": "@aictrl/plugin-sdk",
+ "version": "0.1.0",
"dependencies": {
"@aictrl/sdk": "workspace:*",
"zod": "catalog:",
@@ -338,7 +338,7 @@
"@aictrl/cli": ["@aictrl/cli@workspace:packages/cli"],
- "@aictrl/plugin": ["@aictrl/plugin@workspace:packages/plugin"],
+ "@aictrl/plugin-sdk": ["@aictrl/plugin-sdk@workspace:packages/plugin"],
"@aictrl/script": ["@aictrl/script@workspace:packages/script"],
diff --git a/package.json b/package.json
index 492fc65..3b9757e 100644
--- a/package.json
+++ b/package.json
@@ -74,7 +74,7 @@
},
"dependencies": {
"@aws-sdk/client-s3": "3.933.0",
- "@aictrl/plugin": "workspace:*",
+ "@aictrl/plugin-sdk": "workspace:*",
"@aictrl/script": "workspace:*",
"@aictrl/sdk": "workspace:*",
"typescript": "catalog:"
diff --git a/packages/cli/package.json b/packages/cli/package.json
index d45953c..677d357 100644
--- a/packages/cli/package.json
+++ b/packages/cli/package.json
@@ -87,7 +87,7 @@
"@agentclientprotocol/sdk": "0.14.1",
"@ai-sdk/provider": "2.0.1",
"@ai-sdk/provider-utils": "3.0.21",
- "@aictrl/plugin": "workspace:*",
+ "@aictrl/plugin-sdk": "workspace:*",
"@aictrl/sdk": "workspace:*",
"@aictrl/util": "workspace:*",
"@clack/prompts": "1.0.0-alpha.1",
diff --git a/packages/cli/src/cli/cmd/auth.ts b/packages/cli/src/cli/cmd/auth.ts
index b4e6108..aa0a16c 100644
--- a/packages/cli/src/cli/cmd/auth.ts
+++ b/packages/cli/src/cli/cmd/auth.ts
@@ -10,7 +10,7 @@ import { Config } from "../../config/config"
import { Global } from "../../global"
import { Plugin } from "../../plugin"
import { Instance } from "../../project/instance"
-import type { Hooks } from "@aictrl/plugin"
+import type { Hooks } from "@aictrl/plugin-sdk"
import { Process } from "../../util/process"
import { text } from "node:stream/consumers"
diff --git a/packages/cli/src/config/config.ts b/packages/cli/src/config/config.ts
index 1691d30..a23c557 100644
--- a/packages/cli/src/config/config.ts
+++ b/packages/cli/src/config/config.ts
@@ -254,7 +254,7 @@ export namespace Config {
}))
json.dependencies = {
...json.dependencies,
- "@aictrl/plugin": targetVersion,
+ "@aictrl/plugin-sdk": targetVersion,
}
await Filesystem.writeJson(pkg, json)
@@ -304,15 +304,15 @@ export namespace Config {
const parsed = await Filesystem.readJson<{ dependencies?: Record }>(pkg).catch(() => null)
const dependencies = parsed?.dependencies ?? {}
- const depVersion = dependencies["@aictrl/plugin"]
+ const depVersion = dependencies["@aictrl/plugin-sdk"]
if (!depVersion) return true
const targetVersion = Installation.isLocal() ? "latest" : Installation.VERSION
if (targetVersion === "latest") {
- const isOutdated = await PackageRegistry.isOutdated("@aictrl/plugin", depVersion, dir)
+ const isOutdated = await PackageRegistry.isOutdated("@aictrl/plugin-sdk", depVersion, dir)
if (!isOutdated) return false
log.info("Cached version is outdated, proceeding with install", {
- pkg: "@aictrl/plugin",
+ pkg: "@aictrl/plugin-sdk",
cachedVersion: depVersion,
})
return true
diff --git a/packages/cli/src/plugin/codex.ts b/packages/cli/src/plugin/codex.ts
index d815d54..56aca43 100644
--- a/packages/cli/src/plugin/codex.ts
+++ b/packages/cli/src/plugin/codex.ts
@@ -1,4 +1,4 @@
-import type { Hooks, PluginInput } from "@aictrl/plugin"
+import type { Hooks, PluginInput } from "@aictrl/plugin-sdk"
import { Log } from "../util/log"
import { Installation } from "../installation"
import { Auth, OAUTH_DUMMY_KEY } from "../auth"
diff --git a/packages/cli/src/plugin/copilot.ts b/packages/cli/src/plugin/copilot.ts
index f59f8ed..b205bce 100644
--- a/packages/cli/src/plugin/copilot.ts
+++ b/packages/cli/src/plugin/copilot.ts
@@ -1,4 +1,4 @@
-import type { Hooks, PluginInput } from "@aictrl/plugin"
+import type { Hooks, PluginInput } from "@aictrl/plugin-sdk"
import { Installation } from "@/installation"
import { iife } from "@/util/iife"
diff --git a/packages/cli/src/plugin/index.ts b/packages/cli/src/plugin/index.ts
index 57d6f48..8efb2f0 100644
--- a/packages/cli/src/plugin/index.ts
+++ b/packages/cli/src/plugin/index.ts
@@ -1,4 +1,4 @@
-import type { Hooks, PluginInput, Plugin as PluginInstance } from "@aictrl/plugin"
+import type { Hooks, PluginInput, Plugin as PluginInstance } from "@aictrl/plugin-sdk"
import { Config } from "../config/config"
import { Bus } from "../bus"
import { Log } from "../util/log"
diff --git a/packages/cli/src/provider/auth.ts b/packages/cli/src/provider/auth.ts
index f4e2bd8..8c54b54 100644
--- a/packages/cli/src/provider/auth.ts
+++ b/packages/cli/src/provider/auth.ts
@@ -3,7 +3,7 @@ import { Plugin } from "../plugin"
import { map, filter, pipe, fromEntries, mapValues } from "remeda"
import z from "zod"
import { fn } from "@/util/fn"
-import type { AuthOuathResult, Hooks } from "@aictrl/plugin"
+import type { AuthOuathResult, Hooks } from "@aictrl/plugin-sdk"
import { NamedError } from "@aictrl/util/error"
import { Auth } from "@/auth"
diff --git a/packages/cli/src/tool/registry.ts b/packages/cli/src/tool/registry.ts
index 4d46147..21cb123 100644
--- a/packages/cli/src/tool/registry.ts
+++ b/packages/cli/src/tool/registry.ts
@@ -17,7 +17,7 @@ import { Tool } from "./tool"
import { Instance } from "../project/instance"
import { Config } from "../config/config"
import path from "path"
-import { type ToolContext as PluginToolContext, type ToolDefinition } from "@aictrl/plugin"
+import { type ToolContext as PluginToolContext, type ToolDefinition } from "@aictrl/plugin-sdk"
import z from "zod"
import { Plugin } from "../plugin"
import { WebSearchTool } from "./websearch"
diff --git a/packages/cli/test/cli/plugin-auth-picker.test.ts b/packages/cli/test/cli/plugin-auth-picker.test.ts
index db2b990..b2f7871 100644
--- a/packages/cli/test/cli/plugin-auth-picker.test.ts
+++ b/packages/cli/test/cli/plugin-auth-picker.test.ts
@@ -1,6 +1,6 @@
import { test, expect, describe } from "bun:test"
import { resolvePluginProviders } from "../../src/cli/cmd/auth"
-import type { Hooks } from "@aictrl/plugin"
+import type { Hooks } from "@aictrl/plugin-sdk"
function hookWithAuth(provider: string): Hooks {
return {
diff --git a/packages/cli/test/config/config.test.ts b/packages/cli/test/config/config.test.ts
index d198f21..67d2672 100644
--- a/packages/cli/test/config/config.test.ts
+++ b/packages/cli/test/config/config.test.ts
@@ -1550,7 +1550,7 @@ describe("getPluginName", () => {
test("extracts name from scoped npm package", () => {
expect(Config.getPluginName("@scope/pkg@1.0.0")).toBe("@scope/pkg")
- expect(Config.getPluginName("@aictrl/plugin@2.0.0")).toBe("@aictrl/plugin")
+ expect(Config.getPluginName("@aictrl/plugin-sdk@2.0.0")).toBe("@aictrl/plugin-sdk")
})
test("returns full string for package without version", () => {
diff --git a/packages/cli/test/tool/registry.test.ts b/packages/cli/test/tool/registry.test.ts
index baff148..a72ba6c 100644
--- a/packages/cli/test/tool/registry.test.ts
+++ b/packages/cli/test/tool/registry.test.ts
@@ -90,7 +90,7 @@ describe("tool.registry", () => {
JSON.stringify({
name: "custom-tools",
dependencies: {
- "@aictrl/plugin": "0.1.0",
+ "@aictrl/plugin-sdk": "0.1.0",
cowsay: "^1.6.0",
},
}),
diff --git a/packages/plugin/package.json b/packages/plugin/package.json
index 3eaaf06..64ecf16 100644
--- a/packages/plugin/package.json
+++ b/packages/plugin/package.json
@@ -1,7 +1,7 @@
{
"$schema": "https://json.schemastore.org/package.json",
- "name": "@aictrl/plugin",
- "version": "1.2.16",
+ "name": "@aictrl/plugin-sdk",
+ "version": "0.1.0",
"type": "module",
"license": "MIT",
"repository": {