agents-pkg 0.6.0 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +16 -20
- package/dist/add-plugin.d.ts +2 -2
- package/dist/add-plugin.d.ts.map +1 -1
- package/dist/add-plugin.js +36 -11
- package/dist/add-plugin.js.map +1 -1
- package/dist/del-marketplace.d.ts +1 -1
- package/dist/del-marketplace.d.ts.map +1 -1
- package/dist/del-marketplace.js +15 -27
- package/dist/del-marketplace.js.map +1 -1
- package/dist/del-plugin.d.ts +0 -1
- package/dist/del-plugin.d.ts.map +1 -1
- package/dist/del-plugin.js +8 -26
- package/dist/del-plugin.js.map +1 -1
- package/dist/lib/plugin-local.d.ts +10 -0
- package/dist/lib/plugin-local.d.ts.map +1 -0
- package/dist/lib/plugin-local.js +27 -0
- package/dist/lib/plugin-local.js.map +1 -0
- package/dist/lib/types.d.ts +1 -1
- package/dist/lib/types.d.ts.map +1 -1
- package/dist/lib/uninstall-plugin.d.ts +14 -0
- package/dist/lib/uninstall-plugin.d.ts.map +1 -0
- package/dist/lib/uninstall-plugin.js +33 -0
- package/dist/lib/uninstall-plugin.js.map +1 -0
- package/dist/update.d.ts.map +1 -1
- package/dist/update.js +34 -44
- package/dist/update.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,14 +1,11 @@
|
|
|
1
1
|
# agents-pkg
|
|
2
2
|
|
|
3
|
-
**Cursor-only** marketplace installer. Install plugins from a source (repo URL or local path) that contains `.cursor-plugin/marketplace.json`.
|
|
3
|
+
**Cursor-only** marketplace installer. Install plugins from a source (repo URL or local path) that contains `.cursor-plugin/marketplace.json`.
|
|
4
4
|
|
|
5
|
-
- **
|
|
6
|
-
- **
|
|
7
|
-
- **Skills** — Skill dirs (each with `SKILL.md`) in `.cursor/skills`.
|
|
8
|
-
- **Rules** — Rule `.md`/`.mdc` files in `.cursor/rules`.
|
|
9
|
-
- **Hooks** — Cursor lifecycle hooks merged into project `.cursor/hooks.json`.
|
|
5
|
+
- **Global (default)** — Full plugin trees sync to `~/.cursor/plugins/local/<plugin-name>/` for Cursor’s native plugin loader (skills, agents, commands, rules, hooks, MCP via each plugin’s `plugin.json`).
|
|
6
|
+
- **Project (`--project`)** — Plugin content is copied to a store and **symlinked** into the project’s `.cursor/` dirs; hooks and MCP are merged into project `.cursor/hooks.json` and `.cursor/mcp.json`.
|
|
10
7
|
|
|
11
|
-
By default,
|
|
8
|
+
By default, installs are **global** (`~/.cursor/plugins/local/`). Use `--project` for the legacy flattened install into the current project’s `.cursor/`.
|
|
12
9
|
|
|
13
10
|
---
|
|
14
11
|
|
|
@@ -31,9 +28,10 @@ npx agents-pkg --help
|
|
|
31
28
|
| Item | Location |
|
|
32
29
|
|------|----------|
|
|
33
30
|
| Lock file | `~/.agents/.agents-pkg-lock.json` |
|
|
34
|
-
|
|
|
31
|
+
| Global plugins | `~/.cursor/plugins/local/<plugin-name>/` (or `$CURSOR_LOCAL_PLUGINS`) |
|
|
32
|
+
| Project store | `~/.agents/agents-pkg/marketplace/<name>/<plugin-name>/` (`--project` only) |
|
|
35
33
|
|
|
36
|
-
Override home for tests: set `AGENTS_PKG_HOME` to a temp directory.
|
|
34
|
+
Override home for tests: set `AGENTS_PKG_HOME` to a temp directory. Override global plugin root: set `CURSOR_LOCAL_PLUGINS`.
|
|
37
35
|
|
|
38
36
|
---
|
|
39
37
|
|
|
@@ -47,8 +45,8 @@ agents-pkg add-plugin <source> [plugin-name] [--global | --project]
|
|
|
47
45
|
|
|
48
46
|
- **source** — Repo URL (GitHub `owner/repo`, GitLab, or full URL) or local path.
|
|
49
47
|
- **plugin-name** — Optional. Install only this plugin from the marketplace; otherwise all plugins are installed.
|
|
50
|
-
- **--global** (default) —
|
|
51
|
-
- **--project** — Symlink into the current project’s `.cursor/`
|
|
48
|
+
- **--global** (default) — Sync each plugin to `~/.cursor/plugins/local/<plugin-name>/`. Enable in Cursor **Settings → Plugins**.
|
|
49
|
+
- **--project** — Symlink into the current project’s `.cursor/` (agents, commands, skills, rules); merge hooks/MCP into project `.cursor/`.
|
|
52
50
|
|
|
53
51
|
Examples:
|
|
54
52
|
|
|
@@ -72,7 +70,7 @@ Shows each installed marketplace with its version, scope (global/project), sourc
|
|
|
72
70
|
agents-pkg del-plugin <marketplace-name> <plugin-name>
|
|
73
71
|
```
|
|
74
72
|
|
|
75
|
-
Removes that plugin
|
|
73
|
+
Removes that plugin and updates the lock. Global installs remove `~/.cursor/plugins/local/<plugin-name>/` entirely. Project installs remove symlinks, store copy, and merged hook entries.
|
|
76
74
|
|
|
77
75
|
### Remove an entire marketplace
|
|
78
76
|
|
|
@@ -88,7 +86,7 @@ Uninstalls the marketplace and all its plugins. `name` is the marketplace name (
|
|
|
88
86
|
agents-pkg update
|
|
89
87
|
```
|
|
90
88
|
|
|
91
|
-
Re-fetches each installed marketplace source, reads `.cursor-plugin/marketplace.json`, and reinstalls if the manifest `metadata.version` changed.
|
|
89
|
+
Re-fetches each installed marketplace source, reads `.cursor-plugin/marketplace.json`, and reinstalls if the manifest `metadata.version` changed. Global installs re-sync `plugins/local/`; project installs recreate symlinks from the store.
|
|
92
90
|
|
|
93
91
|
---
|
|
94
92
|
|
|
@@ -123,9 +121,9 @@ Inside each plugin directory (e.g. `./global`), use this layout:
|
|
|
123
121
|
| Commands | `commands/` | One `.md` file per command. |
|
|
124
122
|
| Skills | `skills/` | One subdir per skill; each must contain `SKILL.md`. |
|
|
125
123
|
| Rules | `rules/` | Top-level `.md` or `.mdc` rule files. |
|
|
126
|
-
| Hooks | `hooks/hooks.json` | Cursor-style `{ "version": 1, "hooks": { ... } }`.
|
|
124
|
+
| Hooks | `hooks/hooks.json` | Cursor-style `{ "version": 1, "hooks": { ... } }`. Global: loaded from plugin package; project: merged into `.cursor/hooks.json`. |
|
|
127
125
|
|
|
128
|
-
Missing dirs are skipped.
|
|
126
|
+
Missing dirs are skipped.
|
|
129
127
|
|
|
130
128
|
---
|
|
131
129
|
|
|
@@ -135,11 +133,9 @@ With **--global** (default):
|
|
|
135
133
|
|
|
136
134
|
| Kind | Location |
|
|
137
135
|
|------|----------|
|
|
138
|
-
|
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
| Rules | `~/.cursor/rules/` |
|
|
142
|
-
| Hooks | Project `.cursor/hooks.json` (merged) |
|
|
136
|
+
| Full plugin package | `~/.cursor/plugins/local/<plugin-name>/` |
|
|
137
|
+
|
|
138
|
+
Hooks, MCP, skills, agents, and commands are declared in each plugin’s `.cursor-plugin/plugin.json` and loaded by Cursor when the plugin is enabled.
|
|
143
139
|
|
|
144
140
|
With **--project**:
|
|
145
141
|
|
package/dist/add-plugin.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* add-plugin — Cursor only. Install marketplace from source.
|
|
3
|
-
*
|
|
3
|
+
* Global (default): sync full plugin trees to ~/.cursor/plugins/local/<plugin-name>/.
|
|
4
|
+
* Project (--project): copy to store and symlink/copy into project .cursor/*.
|
|
4
5
|
*/
|
|
5
6
|
import { type MarketplaceManifest } from './lib/marketplace.js';
|
|
6
7
|
/**
|
|
7
8
|
* Install marketplace from an already-resolved source dir. Used by add-plugin and update.
|
|
8
|
-
* Returns { installed, pluginHooks, pluginMcpKeys } so caller can write lock.
|
|
9
9
|
*/
|
|
10
10
|
export declare function installMarketplaceFromDir(manifest: MarketplaceManifest, sourceDir: string, options?: {
|
|
11
11
|
pluginNames?: string[];
|
package/dist/add-plugin.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add-plugin.d.ts","sourceRoot":"","sources":["../src/add-plugin.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"add-plugin.d.ts","sourceRoot":"","sources":["../src/add-plugin.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAIL,KAAK,mBAAmB,EACzB,MAAM,sBAAsB,CAAC;AA2K9B;;GAEG;AACH,wBAAsB,yBAAyB,CAC7C,QAAQ,EAAE,mBAAmB,EAC7B,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE;IAAE,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAO,GAC7E,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,EAAE,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;CAAE,CAAC,CA8DtJ;AAsBD,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA+EhE"}
|
package/dist/add-plugin.js
CHANGED
|
@@ -1,18 +1,21 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* add-plugin — Cursor only. Install marketplace from source.
|
|
3
|
-
*
|
|
3
|
+
* Global (default): sync full plugin trees to ~/.cursor/plugins/local/<plugin-name>/.
|
|
4
|
+
* Project (--project): copy to store and symlink/copy into project .cursor/*.
|
|
4
5
|
*/
|
|
5
6
|
import { join, resolve, sep } from 'path';
|
|
6
|
-
import { readdir, readFile, stat, cp } from 'fs/promises';
|
|
7
|
+
import { readdir, readFile, stat, cp, mkdir } from 'fs/promises';
|
|
7
8
|
import { resolveSourceToDir } from './lib/source-dir.js';
|
|
8
9
|
import { readMarketplaceManifest, getPluginStorePath, getPluginVersionFromSource, } from './lib/marketplace.js';
|
|
9
10
|
import { REPO_SKILLS_DIR, REPO_COMMANDS_DIR, REPO_HOOKS_FILE, REPO_MCP_FILE, REPO_RULES_DIR, } from './lib/constants.js';
|
|
10
|
-
import { getCursorAgentsDir, getCursorCommandsDir, getCursorSkillsDir, getCursorRulesDir, getCursorMcpPath } from './lib/paths.js';
|
|
11
|
+
import { getCursorAgentsDir, getCursorCommandsDir, getCursorSkillsDir, getCursorRulesDir, getCursorMcpPath, } from './lib/paths.js';
|
|
12
|
+
import { syncPluginToLocal } from './lib/plugin-local.js';
|
|
11
13
|
import { createSymlink } from './lib/symlink.js';
|
|
12
14
|
import { copyAgentsFromPluginStore } from './lib/agents-copy.js';
|
|
13
15
|
import { mergeHooksInto } from './lib/hooks.js';
|
|
14
16
|
import { mergeMcpIntoCursor, readMcpJson, updateMcpServersInCursor, } from './lib/mcp.js';
|
|
15
17
|
import { readLock, writeLock } from './lib/lock.js';
|
|
18
|
+
import { uninstallPluginFromCursor } from './lib/uninstall-plugin.js';
|
|
16
19
|
import { fatal } from './lib/errors.js';
|
|
17
20
|
function isContainedIn(childPath, parentPath) {
|
|
18
21
|
const normalizedParent = resolve(parentPath) + sep;
|
|
@@ -71,14 +74,12 @@ async function listRuleFiles(rulesDir) {
|
|
|
71
74
|
}
|
|
72
75
|
}
|
|
73
76
|
/**
|
|
74
|
-
*
|
|
75
|
-
* Returns { done, hookEntries, mcpKeysAdded } so caller can store pluginHooks and pluginMcpKeys in lock.
|
|
77
|
+
* Project install: copy plugin dir to store, then symlink/copy into project .cursor/*; merge hooks and mcp.
|
|
76
78
|
*/
|
|
77
|
-
async function
|
|
79
|
+
async function installPluginProject(pluginStorePath, cursorAgentsDir, cursorCommandsDir, cursorSkillsDir, cursorRulesDir, cwd, global, isUpdate) {
|
|
78
80
|
const done = [];
|
|
79
81
|
let hookEntries = [];
|
|
80
82
|
const mcpKeysAdded = [];
|
|
81
|
-
// Agents are copied (not symlinked) so Cursor recognizes subagents
|
|
82
83
|
const agentNames = await copyAgentsFromPluginStore(pluginStorePath, cursorAgentsDir);
|
|
83
84
|
if (agentNames.length > 0)
|
|
84
85
|
done.push('agents');
|
|
@@ -153,7 +154,6 @@ async function installPlugin(pluginStorePath, cursorAgentsDir, cursorCommandsDir
|
|
|
153
154
|
}
|
|
154
155
|
/**
|
|
155
156
|
* Install marketplace from an already-resolved source dir. Used by add-plugin and update.
|
|
156
|
-
* Returns { installed, pluginHooks, pluginMcpKeys } so caller can write lock.
|
|
157
157
|
*/
|
|
158
158
|
export async function installMarketplaceFromDir(manifest, sourceDir, options = {}) {
|
|
159
159
|
let pluginsToInstall = manifest.plugins;
|
|
@@ -183,11 +183,15 @@ export async function installMarketplaceFromDir(manifest, sourceDir, options = {
|
|
|
183
183
|
if (!isContainedIn(absPluginDir, absSourceDir)) {
|
|
184
184
|
fatal(`Plugin source "${plugin.source}" is outside the marketplace directory.`);
|
|
185
185
|
}
|
|
186
|
+
if (global) {
|
|
187
|
+
await syncPluginToLocal(pluginDir, plugin.name);
|
|
188
|
+
installed.push(plugin.name);
|
|
189
|
+
continue;
|
|
190
|
+
}
|
|
186
191
|
const storePath = getPluginStorePath(manifest.name, plugin.name);
|
|
187
|
-
const { mkdir } = await import('fs/promises');
|
|
188
192
|
await mkdir(storePath, { recursive: true });
|
|
189
193
|
await cp(pluginDir, storePath, { recursive: true });
|
|
190
|
-
const { done, hookEntries, mcpKeysAdded } = await
|
|
194
|
+
const { done, hookEntries, mcpKeysAdded } = await installPluginProject(storePath, cursorAgentsDir, cursorCommandsDir, cursorSkillsDir, cursorRulesDir, cwd, global, isUpdate);
|
|
191
195
|
if (done.length > 0) {
|
|
192
196
|
installed.push(plugin.name);
|
|
193
197
|
if (hookEntries.length > 0)
|
|
@@ -222,7 +226,7 @@ function parseAddPluginArgs(args) {
|
|
|
222
226
|
export async function runAddPlugin(args) {
|
|
223
227
|
const { source, pluginNames, global } = parseAddPluginArgs(args);
|
|
224
228
|
if (!source) {
|
|
225
|
-
fatal('Usage: agents-pkg add-plugin <source> [plugin-name...] [--global | --project]\n source = repo URL or local path; optional plugin names = install only those plugins (default: all).\n --global (default) =
|
|
229
|
+
fatal('Usage: agents-pkg add-plugin <source> [plugin-name...] [--global | --project]\n source = repo URL or local path; optional plugin names = install only those plugins (default: all).\n --global (default) = sync into ~/.cursor/plugins/local/<plugin-name>/; --project = symlinks in project .cursor/*.');
|
|
226
230
|
}
|
|
227
231
|
const { path: sourceDir, cleanup } = await resolveSourceToDir(source).catch((e) => {
|
|
228
232
|
fatal(e instanceof Error ? e.message : String(e));
|
|
@@ -231,6 +235,27 @@ export async function runAddPlugin(args) {
|
|
|
231
235
|
const manifest = await readMarketplaceManifest(sourceDir);
|
|
232
236
|
const version = manifest.metadata?.version ?? '0.0.0';
|
|
233
237
|
const lock = await readLock();
|
|
238
|
+
if (pluginNames && pluginNames.length > 0) {
|
|
239
|
+
const available = new Set(manifest.plugins.map((p) => p.name));
|
|
240
|
+
const missing = pluginNames.filter((name) => !available.has(name));
|
|
241
|
+
if (missing.length > 0) {
|
|
242
|
+
fatal(`Plugin(s) not found in marketplace: ${missing.join(', ')}. Available: ${manifest.plugins.map((p) => p.name).join(', ')}`);
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
if (global) {
|
|
246
|
+
const previousEntry = lock.marketplaces[manifest.name];
|
|
247
|
+
if (previousEntry) {
|
|
248
|
+
for (const pluginName of previousEntry.pluginNames ?? []) {
|
|
249
|
+
await uninstallPluginFromCursor({
|
|
250
|
+
marketplaceName: manifest.name,
|
|
251
|
+
pluginName,
|
|
252
|
+
global: true,
|
|
253
|
+
cwd: process.cwd(),
|
|
254
|
+
pluginHooks: previousEntry.pluginHooks?.[pluginName],
|
|
255
|
+
});
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
}
|
|
234
259
|
const { installed, pluginHooks, pluginMcpKeys } = await installMarketplaceFromDir(manifest, sourceDir, {
|
|
235
260
|
pluginNames,
|
|
236
261
|
global,
|
package/dist/add-plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add-plugin.js","sourceRoot":"","sources":["../src/add-plugin.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"add-plugin.js","sourceRoot":"","sources":["../src/add-plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* del-marketplace — Uninstall a marketplace by name
|
|
2
|
+
* del-marketplace — Uninstall a marketplace by name.
|
|
3
3
|
*/
|
|
4
4
|
export declare function runDelMarketplace(args: string[]): Promise<void>;
|
|
5
5
|
//# sourceMappingURL=del-marketplace.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"del-marketplace.d.ts","sourceRoot":"","sources":["../src/del-marketplace.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"del-marketplace.d.ts","sourceRoot":"","sources":["../src/del-marketplace.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAmCrE"}
|
package/dist/del-marketplace.js
CHANGED
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* del-marketplace — Uninstall a marketplace by name
|
|
2
|
+
* del-marketplace — Uninstall a marketplace by name.
|
|
3
3
|
*/
|
|
4
4
|
import { rm } from 'fs/promises';
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import { removeSymlinksInDirPointingUnder } from './lib/symlink.js';
|
|
8
|
-
import { removeCopiedAgentsForPlugin } from './lib/agents-copy.js';
|
|
9
|
-
import { removeHookEntries } from './lib/hooks.js';
|
|
5
|
+
import { getMarketplaceStorePath } from './lib/marketplace.js';
|
|
6
|
+
import { uninstallPluginFromCursor } from './lib/uninstall-plugin.js';
|
|
10
7
|
import { readLock, writeLock } from './lib/lock.js';
|
|
11
8
|
import { fatal } from './lib/errors.js';
|
|
12
9
|
export async function runDelMarketplace(args) {
|
|
@@ -19,31 +16,22 @@ export async function runDelMarketplace(args) {
|
|
|
19
16
|
if (!entry) {
|
|
20
17
|
fatal(`Marketplace "${name}" is not installed.`);
|
|
21
18
|
}
|
|
22
|
-
const storeRoot = getMarketplaceStorePath(name);
|
|
23
19
|
const cwd = process.cwd();
|
|
24
20
|
const global = entry.global !== false;
|
|
25
|
-
const cursorAgentsDir = getCursorAgentsDir(global, cwd);
|
|
26
|
-
const cursorCommandsDir = getCursorCommandsDir(global, cwd);
|
|
27
|
-
const cursorSkillsDir = getCursorSkillsDir(global, cwd);
|
|
28
|
-
const cursorRulesDir = getCursorRulesDir(global, cwd);
|
|
29
21
|
for (const pluginName of entry.pluginNames ?? []) {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
22
|
+
await uninstallPluginFromCursor({
|
|
23
|
+
marketplaceName: name,
|
|
24
|
+
pluginName,
|
|
25
|
+
global,
|
|
26
|
+
cwd,
|
|
27
|
+
pluginHooks: entry.pluginHooks?.[pluginName],
|
|
28
|
+
});
|
|
33
29
|
}
|
|
34
|
-
|
|
35
|
-
const
|
|
36
|
-
await
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
await removeSymlinksInDirPointingUnder(cursorCommandsDir, storeRoot);
|
|
40
|
-
await removeSymlinksInDirPointingUnder(cursorSkillsDir, storeRoot);
|
|
41
|
-
await removeSymlinksInDirPointingUnder(cursorRulesDir, storeRoot);
|
|
42
|
-
try {
|
|
43
|
-
await rm(storeRoot, { recursive: true, force: true });
|
|
44
|
-
}
|
|
45
|
-
catch (e) {
|
|
46
|
-
console.warn(`Could not remove store at ${storeRoot}:`, e instanceof Error ? e.message : String(e));
|
|
30
|
+
if (!global) {
|
|
31
|
+
const storeRoot = getMarketplaceStorePath(name);
|
|
32
|
+
await rm(storeRoot, { recursive: true, force: true }).catch((e) => {
|
|
33
|
+
console.warn(`Could not remove store at ${storeRoot}:`, e instanceof Error ? e.message : String(e));
|
|
34
|
+
});
|
|
47
35
|
}
|
|
48
36
|
delete lock.marketplaces[name];
|
|
49
37
|
await writeLock(lock);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"del-marketplace.js","sourceRoot":"","sources":["../src/del-marketplace.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"del-marketplace.js","sourceRoot":"","sources":["../src/del-marketplace.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAExC,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,IAAc;IACpD,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;IAC7B,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,KAAK,CAAC,gGAAgG,CAAC,CAAC;IAC1G,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,QAAQ,EAAE,CAAC;IAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IACtC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,KAAK,CAAC,gBAAgB,IAAI,qBAAqB,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC;IAEtC,KAAK,MAAM,UAAU,IAAI,KAAK,CAAC,WAAW,IAAI,EAAE,EAAE,CAAC;QACjD,MAAM,yBAAyB,CAAC;YAC9B,eAAe,EAAE,IAAI;YACrB,UAAU;YACV,MAAM;YACN,GAAG;YACH,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC;SAC7C,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,SAAS,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC;QAChD,MAAM,EAAE,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;YAChE,OAAO,CAAC,IAAI,CAAC,6BAA6B,SAAS,GAAG,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACtG,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC;IACtB,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,IAAI,CAAC,CAAC;AAChD,CAAC"}
|
package/dist/del-plugin.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* del-plugin — Remove a single plugin from an installed marketplace.
|
|
3
|
-
* Removes that plugin's symlinks and store dir; updates lock. If the last plugin is removed, the marketplace entry is removed.
|
|
4
3
|
*/
|
|
5
4
|
export declare function runDelPlugin(args: string[]): Promise<void>;
|
|
6
5
|
//# sourceMappingURL=del-plugin.d.ts.map
|
package/dist/del-plugin.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"del-plugin.d.ts","sourceRoot":"","sources":["../src/del-plugin.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"del-plugin.d.ts","sourceRoot":"","sources":["../src/del-plugin.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAoChE"}
|
package/dist/del-plugin.js
CHANGED
|
@@ -1,14 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* del-plugin — Remove a single plugin from an installed marketplace.
|
|
3
|
-
* Removes that plugin's symlinks and store dir; updates lock. If the last plugin is removed, the marketplace entry is removed.
|
|
4
3
|
*/
|
|
5
|
-
import { rm } from 'fs/promises';
|
|
6
|
-
import { getCursorAgentsDir, getCursorCommandsDir, getCursorSkillsDir, getCursorRulesDir } from './lib/paths.js';
|
|
7
|
-
import { getPluginStorePath } from './lib/marketplace.js';
|
|
8
|
-
import { removeSymlinksInDirPointingUnder } from './lib/symlink.js';
|
|
9
|
-
import { removeCopiedAgentsForPlugin } from './lib/agents-copy.js';
|
|
10
|
-
import { removeHookEntries } from './lib/hooks.js';
|
|
11
4
|
import { readLock, writeLock } from './lib/lock.js';
|
|
5
|
+
import { uninstallPluginFromCursor } from './lib/uninstall-plugin.js';
|
|
12
6
|
import { fatal } from './lib/errors.js';
|
|
13
7
|
export async function runDelPlugin(args) {
|
|
14
8
|
const marketplaceName = args[0]?.trim();
|
|
@@ -24,27 +18,15 @@ export async function runDelPlugin(args) {
|
|
|
24
18
|
if (!entry.pluginNames?.includes(pluginName)) {
|
|
25
19
|
fatal(`Plugin "${pluginName}" is not installed from marketplace "${marketplaceName}". Installed: ${entry.pluginNames?.join(', ') ?? '(none)'}.`);
|
|
26
20
|
}
|
|
27
|
-
const pluginStorePath = getPluginStorePath(marketplaceName, pluginName);
|
|
28
21
|
const cwd = process.cwd();
|
|
29
22
|
const global = entry.global !== false;
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
}
|
|
37
|
-
await removeCopiedAgentsForPlugin(pluginStorePath, cursorAgentsDir);
|
|
38
|
-
await removeSymlinksInDirPointingUnder(cursorAgentsDir, pluginStorePath);
|
|
39
|
-
await removeSymlinksInDirPointingUnder(cursorCommandsDir, pluginStorePath);
|
|
40
|
-
await removeSymlinksInDirPointingUnder(cursorSkillsDir, pluginStorePath);
|
|
41
|
-
await removeSymlinksInDirPointingUnder(cursorRulesDir, pluginStorePath);
|
|
42
|
-
try {
|
|
43
|
-
await rm(pluginStorePath, { recursive: true, force: true });
|
|
44
|
-
}
|
|
45
|
-
catch (e) {
|
|
46
|
-
console.warn(`Could not remove store at ${pluginStorePath}:`, e instanceof Error ? e.message : String(e));
|
|
47
|
-
}
|
|
23
|
+
await uninstallPluginFromCursor({
|
|
24
|
+
marketplaceName,
|
|
25
|
+
pluginName,
|
|
26
|
+
global,
|
|
27
|
+
cwd,
|
|
28
|
+
pluginHooks: entry.pluginHooks?.[pluginName],
|
|
29
|
+
});
|
|
48
30
|
entry.pluginNames = entry.pluginNames.filter((n) => n !== pluginName);
|
|
49
31
|
if (entry.pluginHooks)
|
|
50
32
|
delete entry.pluginHooks[pluginName];
|
package/dist/del-plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"del-plugin.js","sourceRoot":"","sources":["../src/del-plugin.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"del-plugin.js","sourceRoot":"","sources":["../src/del-plugin.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAExC,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAc;IAC/C,MAAM,eAAe,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;IACxC,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;IACnC,IAAI,CAAC,eAAe,IAAI,CAAC,UAAU,EAAE,CAAC;QACpC,KAAK,CAAC,wJAAwJ,CAAC,CAAC;IAClK,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,QAAQ,EAAE,CAAC;IAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;IACjD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,KAAK,CAAC,gBAAgB,eAAe,qBAAqB,CAAC,CAAC;IAC9D,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QAC7C,KAAK,CAAC,WAAW,UAAU,wCAAwC,eAAe,iBAAiB,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,GAAG,CAAC,CAAC;IACnJ,CAAC;IAED,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC;IAEtC,MAAM,yBAAyB,CAAC;QAC9B,eAAe;QACf,UAAU;QACV,MAAM;QACN,GAAG;QACH,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC;KAC7C,CAAC,CAAC;IAEH,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC;IACtE,IAAI,KAAK,CAAC,WAAW;QAAE,OAAO,KAAK,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IAC5D,IAAI,KAAK,CAAC,aAAa;QAAE,OAAO,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IAChE,IAAI,KAAK,CAAC,cAAc;QAAE,OAAO,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;IAClE,IAAI,KAAK,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnC,OAAO,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;IAC5C,CAAC;IACD,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC;IACtB,OAAO,CAAC,GAAG,CAAC,mBAAmB,UAAU,uBAAuB,eAAe,IAAI,CAAC,CAAC;AACvF,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sync marketplace plugins into Cursor's local plugin directory (~/.cursor/plugins/local).
|
|
3
|
+
*/
|
|
4
|
+
/** Root for Cursor local plugins (override in tests via CURSOR_LOCAL_PLUGINS). */
|
|
5
|
+
export declare function getCursorLocalPluginsDir(): string;
|
|
6
|
+
export declare function getCursorLocalPluginPath(pluginName: string): string;
|
|
7
|
+
/** Replace plugins/local/<name>/ with a fresh copy of the plugin source tree. */
|
|
8
|
+
export declare function syncPluginToLocal(sourceDir: string, pluginName: string): Promise<void>;
|
|
9
|
+
export declare function removeLocalPlugin(pluginName: string): Promise<void>;
|
|
10
|
+
//# sourceMappingURL=plugin-local.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-local.d.ts","sourceRoot":"","sources":["../../src/lib/plugin-local.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,kFAAkF;AAClF,wBAAgB,wBAAwB,IAAI,MAAM,CAIjD;AAED,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEnE;AAED,iFAAiF;AACjF,wBAAsB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAK5F;AAED,wBAAsB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEzE"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sync marketplace plugins into Cursor's local plugin directory (~/.cursor/plugins/local).
|
|
3
|
+
*/
|
|
4
|
+
import { cp, mkdir, rm } from 'fs/promises';
|
|
5
|
+
import { join } from 'path';
|
|
6
|
+
import { homedir } from 'os';
|
|
7
|
+
/** Root for Cursor local plugins (override in tests via CURSOR_LOCAL_PLUGINS). */
|
|
8
|
+
export function getCursorLocalPluginsDir() {
|
|
9
|
+
const override = process.env.CURSOR_LOCAL_PLUGINS?.trim();
|
|
10
|
+
if (override)
|
|
11
|
+
return override;
|
|
12
|
+
return join(homedir(), '.cursor', 'plugins', 'local');
|
|
13
|
+
}
|
|
14
|
+
export function getCursorLocalPluginPath(pluginName) {
|
|
15
|
+
return join(getCursorLocalPluginsDir(), pluginName);
|
|
16
|
+
}
|
|
17
|
+
/** Replace plugins/local/<name>/ with a fresh copy of the plugin source tree. */
|
|
18
|
+
export async function syncPluginToLocal(sourceDir, pluginName) {
|
|
19
|
+
const dest = getCursorLocalPluginPath(pluginName);
|
|
20
|
+
await mkdir(getCursorLocalPluginsDir(), { recursive: true });
|
|
21
|
+
await rm(dest, { recursive: true, force: true });
|
|
22
|
+
await cp(sourceDir, dest, { recursive: true });
|
|
23
|
+
}
|
|
24
|
+
export async function removeLocalPlugin(pluginName) {
|
|
25
|
+
await rm(getCursorLocalPluginPath(pluginName), { recursive: true, force: true });
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=plugin-local.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-local.js","sourceRoot":"","sources":["../../src/lib/plugin-local.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAE7B,kFAAkF;AAClF,MAAM,UAAU,wBAAwB;IACtC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,IAAI,EAAE,CAAC;IAC1D,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC9B,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,UAAkB;IACzD,OAAO,IAAI,CAAC,wBAAwB,EAAE,EAAE,UAAU,CAAC,CAAC;AACtD,CAAC;AAED,iFAAiF;AACjF,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,SAAiB,EAAE,UAAkB;IAC3E,MAAM,IAAI,GAAG,wBAAwB,CAAC,UAAU,CAAC,CAAC;IAClD,MAAM,KAAK,CAAC,wBAAwB,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7D,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACjD,MAAM,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,UAAkB;IACxD,MAAM,EAAE,CAAC,wBAAwB,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AACnF,CAAC"}
|
package/dist/lib/types.d.ts
CHANGED
|
@@ -8,7 +8,7 @@ export interface MarketplaceEntry {
|
|
|
8
8
|
version: string;
|
|
9
9
|
pluginNames: string[];
|
|
10
10
|
updatedAt: string;
|
|
11
|
-
/** If true (default),
|
|
11
|
+
/** If true (default), plugins sync to ~/.cursor/plugins/local/; if false, flatten into project .cursor/*. */
|
|
12
12
|
global?: boolean;
|
|
13
13
|
/** Hook entries we merged per plugin (for removal on uninstall). */
|
|
14
14
|
pluginHooks?: Record<string, Array<{
|
package/dist/lib/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,kIAAkI;AAClI,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,kIAAkI;AAClI,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,6GAA6G;IAC7G,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,oEAAoE;IACpE,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAC;IAC3E,2DAA2D;IAC3D,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,2HAA2H;IAC3H,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CAC1C;AAED,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,gEAAgE;IAChE,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;CAChD"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Remove a plugin from Cursor — global installs use plugins/local; project installs use flattened symlinks + store.
|
|
3
|
+
*/
|
|
4
|
+
export declare function uninstallPluginFromCursor(options: {
|
|
5
|
+
marketplaceName: string;
|
|
6
|
+
pluginName: string;
|
|
7
|
+
global: boolean;
|
|
8
|
+
cwd: string;
|
|
9
|
+
pluginHooks?: Array<{
|
|
10
|
+
hookName: string;
|
|
11
|
+
command: string;
|
|
12
|
+
}>;
|
|
13
|
+
}): Promise<void>;
|
|
14
|
+
//# sourceMappingURL=uninstall-plugin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uninstall-plugin.d.ts","sourceRoot":"","sources":["../../src/lib/uninstall-plugin.ts"],"names":[],"mappings":"AAAA;;GAEG;AAeH,wBAAsB,yBAAyB,CAAC,OAAO,EAAE;IACvD,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC5D,GAAG,OAAO,CAAC,IAAI,CAAC,CA0BhB"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Remove a plugin from Cursor — global installs use plugins/local; project installs use flattened symlinks + store.
|
|
3
|
+
*/
|
|
4
|
+
import { rm } from 'fs/promises';
|
|
5
|
+
import { getPluginStorePath } from './marketplace.js';
|
|
6
|
+
import { getCursorAgentsDir, getCursorCommandsDir, getCursorSkillsDir, getCursorRulesDir, } from './paths.js';
|
|
7
|
+
import { removeLocalPlugin } from './plugin-local.js';
|
|
8
|
+
import { removeSymlinksInDirPointingUnder } from './symlink.js';
|
|
9
|
+
import { removeCopiedAgentsForPlugin } from './agents-copy.js';
|
|
10
|
+
import { removeHookEntries } from './hooks.js';
|
|
11
|
+
export async function uninstallPluginFromCursor(options) {
|
|
12
|
+
const { marketplaceName, pluginName, global, cwd, pluginHooks } = options;
|
|
13
|
+
if (global) {
|
|
14
|
+
await removeLocalPlugin(pluginName);
|
|
15
|
+
// Also remove leftovers from agents-pkg versions that installed global plugins
|
|
16
|
+
// by flattening them into ~/.cursor/* from the marketplace store.
|
|
17
|
+
}
|
|
18
|
+
const pluginStorePath = getPluginStorePath(marketplaceName, pluginName);
|
|
19
|
+
if (pluginHooks?.length) {
|
|
20
|
+
await removeHookEntries(pluginHooks, global, cwd);
|
|
21
|
+
}
|
|
22
|
+
const cursorAgentsDir = getCursorAgentsDir(global, cwd);
|
|
23
|
+
const cursorCommandsDir = getCursorCommandsDir(global, cwd);
|
|
24
|
+
const cursorSkillsDir = getCursorSkillsDir(global, cwd);
|
|
25
|
+
const cursorRulesDir = getCursorRulesDir(global, cwd);
|
|
26
|
+
await removeCopiedAgentsForPlugin(pluginStorePath, cursorAgentsDir);
|
|
27
|
+
await removeSymlinksInDirPointingUnder(cursorAgentsDir, pluginStorePath);
|
|
28
|
+
await removeSymlinksInDirPointingUnder(cursorCommandsDir, pluginStorePath);
|
|
29
|
+
await removeSymlinksInDirPointingUnder(cursorSkillsDir, pluginStorePath);
|
|
30
|
+
await removeSymlinksInDirPointingUnder(cursorRulesDir, pluginStorePath);
|
|
31
|
+
await rm(pluginStorePath, { recursive: true, force: true }).catch(() => { });
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=uninstall-plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uninstall-plugin.js","sourceRoot":"","sources":["../../src/lib/uninstall-plugin.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,gCAAgC,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE/C,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,OAM/C;IACC,MAAM,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC;IAE1E,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,iBAAiB,CAAC,UAAU,CAAC,CAAC;QACpC,+EAA+E;QAC/E,kEAAkE;IACpE,CAAC;IAED,MAAM,eAAe,GAAG,kBAAkB,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;IACxE,IAAI,WAAW,EAAE,MAAM,EAAE,CAAC;QACxB,MAAM,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,eAAe,GAAG,kBAAkB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACxD,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC5D,MAAM,eAAe,GAAG,kBAAkB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACxD,MAAM,cAAc,GAAG,iBAAiB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAEtD,MAAM,2BAA2B,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC;IACpE,MAAM,gCAAgC,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC;IACzE,MAAM,gCAAgC,CAAC,iBAAiB,EAAE,eAAe,CAAC,CAAC;IAC3E,MAAM,gCAAgC,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC;IACzE,MAAM,gCAAgC,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC;IAExE,MAAM,EAAE,CAAC,eAAe,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;AAC9E,CAAC"}
|
package/dist/update.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../src/update.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../src/update.ts"],"names":[],"mappings":"AAAA;;GAEG;AAiCH,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAkK/C"}
|
package/dist/update.js
CHANGED
|
@@ -3,13 +3,11 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { rm } from 'fs/promises';
|
|
5
5
|
import { resolveSourceToDir } from './lib/source-dir.js';
|
|
6
|
-
import { readMarketplaceManifest, getMarketplaceStorePath,
|
|
7
|
-
import {
|
|
8
|
-
import { removeCopiedAgentsForPlugin } from './lib/agents-copy.js';
|
|
9
|
-
import { getCursorAgentsDir, getCursorCommandsDir, getCursorSkillsDir, getCursorRulesDir, getCursorMcpPath } from './lib/paths.js';
|
|
10
|
-
import { removeHookEntries } from './lib/hooks.js';
|
|
6
|
+
import { readMarketplaceManifest, getMarketplaceStorePath, getPluginVersionFromSource, } from './lib/marketplace.js';
|
|
7
|
+
import { getCursorMcpPath } from './lib/paths.js';
|
|
11
8
|
import { renameMcpKeys } from './lib/mcp.js';
|
|
12
9
|
import { installMarketplaceFromDir } from './add-plugin.js';
|
|
10
|
+
import { uninstallPluginFromCursor } from './lib/uninstall-plugin.js';
|
|
13
11
|
import { readLock, writeLock } from './lib/lock.js';
|
|
14
12
|
async function applyMcpKeyRenamesForMarketplace(marketplaceName, entry, cursorMcpPath) {
|
|
15
13
|
if (!entry.pluginMcpKeys)
|
|
@@ -37,10 +35,6 @@ export async function runUpdate() {
|
|
|
37
35
|
if (!entry || typeof entry.source !== 'string')
|
|
38
36
|
continue;
|
|
39
37
|
const global = entry.global !== false;
|
|
40
|
-
const cursorAgentsDir = getCursorAgentsDir(global, cwd);
|
|
41
|
-
const cursorCommandsDir = getCursorCommandsDir(global, cwd);
|
|
42
|
-
const cursorSkillsDir = getCursorSkillsDir(global, cwd);
|
|
43
|
-
const cursorRulesDir = getCursorRulesDir(global, cwd);
|
|
44
38
|
const { path: sourceDir, cleanup } = await resolveSourceToDir(entry.source).catch(() => ({
|
|
45
39
|
path: '',
|
|
46
40
|
cleanup: undefined,
|
|
@@ -50,26 +44,29 @@ export async function runUpdate() {
|
|
|
50
44
|
try {
|
|
51
45
|
const manifest = await readMarketplaceManifest(sourceDir);
|
|
52
46
|
const newVersion = manifest.metadata?.version ?? '0.0.0';
|
|
53
|
-
|
|
54
|
-
|
|
47
|
+
if (!global) {
|
|
48
|
+
const cursorMcpPath = getCursorMcpPath(global, cwd);
|
|
49
|
+
await applyMcpKeyRenamesForMarketplace(name, entry, cursorMcpPath);
|
|
50
|
+
}
|
|
55
51
|
if (newVersion !== entry.version) {
|
|
56
52
|
console.log(`Updating marketplace ${name} (${entry.version} -> ${newVersion})...`);
|
|
57
|
-
const storeRoot = getMarketplaceStorePath(name);
|
|
58
53
|
for (const pluginName of entry.pluginNames ?? []) {
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
54
|
+
await uninstallPluginFromCursor({
|
|
55
|
+
marketplaceName: name,
|
|
56
|
+
pluginName,
|
|
57
|
+
global,
|
|
58
|
+
cwd,
|
|
59
|
+
pluginHooks: entry.pluginHooks?.[pluginName],
|
|
60
|
+
});
|
|
62
61
|
}
|
|
63
|
-
|
|
64
|
-
const
|
|
65
|
-
await
|
|
62
|
+
if (!global) {
|
|
63
|
+
const storeRoot = getMarketplaceStorePath(name);
|
|
64
|
+
await rm(storeRoot, { recursive: true, force: true }).catch(() => { });
|
|
66
65
|
}
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
await removeSymlinksInDirPointingUnder(cursorSkillsDir, storeRoot);
|
|
70
|
-
await removeSymlinksInDirPointingUnder(cursorRulesDir, storeRoot);
|
|
71
|
-
await rm(storeRoot, { recursive: true, force: true }).catch(() => { });
|
|
66
|
+
const manifestPluginNames = new Set(manifest.plugins.map((p) => p.name));
|
|
67
|
+
const previousPlugins = (entry.pluginNames ?? []).filter((n) => manifestPluginNames.has(n));
|
|
72
68
|
const { installed, pluginHooks, pluginMcpKeys } = await installMarketplaceFromDir(manifest, sourceDir, {
|
|
69
|
+
pluginNames: previousPlugins.length > 0 ? previousPlugins : undefined,
|
|
73
70
|
global,
|
|
74
71
|
isUpdate: true,
|
|
75
72
|
});
|
|
@@ -90,7 +87,6 @@ export async function runUpdate() {
|
|
|
90
87
|
}
|
|
91
88
|
else {
|
|
92
89
|
if (!entry.pluginVersions) {
|
|
93
|
-
// Backfill from source so future updates can do per-plugin version diff
|
|
94
90
|
entry.pluginVersions = {};
|
|
95
91
|
for (const pluginName of entry.pluginNames ?? []) {
|
|
96
92
|
const plugin = manifest.plugins.find((p) => p.name === pluginName);
|
|
@@ -104,16 +100,13 @@ export async function runUpdate() {
|
|
|
104
100
|
for (const pluginName of [...(entry.pluginNames ?? [])]) {
|
|
105
101
|
if (manifestPluginNames.has(pluginName))
|
|
106
102
|
continue;
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
await removeSymlinksInDirPointingUnder(cursorSkillsDir, pluginStorePath);
|
|
115
|
-
await removeSymlinksInDirPointingUnder(cursorRulesDir, pluginStorePath);
|
|
116
|
-
await rm(pluginStorePath, { recursive: true, force: true }).catch(() => { });
|
|
103
|
+
await uninstallPluginFromCursor({
|
|
104
|
+
marketplaceName: name,
|
|
105
|
+
pluginName,
|
|
106
|
+
global,
|
|
107
|
+
cwd,
|
|
108
|
+
pluginHooks: entry.pluginHooks?.[pluginName],
|
|
109
|
+
});
|
|
117
110
|
entry.pluginNames = entry.pluginNames.filter((n) => n !== pluginName);
|
|
118
111
|
if (entry.pluginHooks)
|
|
119
112
|
delete entry.pluginHooks[pluginName];
|
|
@@ -139,16 +132,13 @@ export async function runUpdate() {
|
|
|
139
132
|
const curVer = entry.pluginVersions?.[pluginName];
|
|
140
133
|
if (newVer === curVer)
|
|
141
134
|
continue;
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
await removeSymlinksInDirPointingUnder(cursorSkillsDir, pluginStorePath);
|
|
150
|
-
await removeSymlinksInDirPointingUnder(cursorRulesDir, pluginStorePath);
|
|
151
|
-
await rm(pluginStorePath, { recursive: true, force: true }).catch(() => { });
|
|
135
|
+
await uninstallPluginFromCursor({
|
|
136
|
+
marketplaceName: name,
|
|
137
|
+
pluginName,
|
|
138
|
+
global,
|
|
139
|
+
cwd,
|
|
140
|
+
pluginHooks: entry.pluginHooks?.[pluginName],
|
|
141
|
+
});
|
|
152
142
|
const { installed, pluginHooks, pluginMcpKeys: pluginMcpKeysReturned } = await installMarketplaceFromDir(manifest, sourceDir, {
|
|
153
143
|
pluginNames: [pluginName],
|
|
154
144
|
global,
|
package/dist/update.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.js","sourceRoot":"","sources":["../src/update.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../src/update.ts"],"names":[],"mappings":"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"}
|