agents-pkg 0.2.1 → 0.3.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 +85 -86
- package/bin/agents-pkg.mjs +0 -0
- package/dist/add-plugin.d.ts +1 -0
- package/dist/add-plugin.d.ts.map +1 -1
- package/dist/add-plugin.js +62 -14
- package/dist/add-plugin.js.map +1 -1
- package/dist/cli.d.ts +1 -1
- package/dist/cli.js +18 -6
- package/dist/cli.js.map +1 -1
- package/dist/del-marketplace.d.ts +5 -0
- package/dist/del-marketplace.d.ts.map +1 -0
- package/dist/del-marketplace.js +41 -0
- package/dist/del-marketplace.js.map +1 -0
- package/dist/del-plugin.d.ts +2 -1
- package/dist/del-plugin.d.ts.map +1 -1
- package/dist/del-plugin.js +30 -19
- package/dist/del-plugin.js.map +1 -1
- package/dist/lib/constants.d.ts +2 -1
- package/dist/lib/constants.d.ts.map +1 -1
- package/dist/lib/constants.js +2 -1
- package/dist/lib/constants.js.map +1 -1
- package/dist/lib/paths.d.ts +5 -1
- package/dist/lib/paths.d.ts.map +1 -1
- package/dist/lib/paths.js +11 -1
- package/dist/lib/paths.js.map +1 -1
- package/dist/lib/source-dir.d.ts.map +1 -1
- package/dist/lib/source-dir.js +18 -1
- package/dist/lib/source-dir.js.map +1 -1
- package/dist/lib/types.d.ts +3 -1
- package/dist/lib/types.d.ts.map +1 -1
- package/dist/list.d.ts +5 -0
- package/dist/list.d.ts.map +1 -0
- package/dist/list.js +22 -0
- package/dist/list.js.map +1 -0
- package/dist/update.d.ts.map +1 -1
- package/dist/update.js +9 -6
- package/dist/update.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
# agents-pkg
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
**Cursor-only** marketplace installer. Install plugins from a source (repo URL or local path) that contains `.cursor-plugin/marketplace.json`. Plugin content is copied to a store and **symlinked** into Cursor’s config dirs (subagents, commands, skills, rules); hooks are merged into `.cursor/hooks.json`.
|
|
4
4
|
|
|
5
|
-
- **
|
|
6
|
-
- **
|
|
7
|
-
- **
|
|
8
|
-
- **
|
|
5
|
+
- **Subagents** — Agent `.md` files in `.cursor/subagents` (global or project).
|
|
6
|
+
- **Commands** — Slash commands in `.cursor/commands`.
|
|
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`.
|
|
9
10
|
|
|
10
|
-
**
|
|
11
|
+
By default, symlinks are **global** (`~/.cursor/*`). Use `--project` to install into the current project’s `.cursor/` instead.
|
|
11
12
|
|
|
12
13
|
---
|
|
13
14
|
|
|
@@ -29,8 +30,8 @@ npx agents-pkg --help
|
|
|
29
30
|
|
|
30
31
|
| Item | Location |
|
|
31
32
|
|------|----------|
|
|
32
|
-
| Lock file | `~/.agents/.agents-pkg-lock.json`
|
|
33
|
-
|
|
|
33
|
+
| Lock file | `~/.agents/.agents-pkg-lock.json` |
|
|
34
|
+
| Store | `~/.agents/agents-pkg/marketplace/<name>/<plugin-name>/` |
|
|
34
35
|
|
|
35
36
|
Override home for tests: set `AGENTS_PKG_HOME` to a temp directory.
|
|
36
37
|
|
|
@@ -38,138 +39,136 @@ Override home for tests: set `AGENTS_PKG_HOME` to a temp directory.
|
|
|
38
39
|
|
|
39
40
|
## Usage
|
|
40
41
|
|
|
41
|
-
###
|
|
42
|
-
|
|
43
|
-
Pass a **source** (GitHub `owner/repo`, git URL, or local path). By default this installs **skills**, **subagents**, **commands**, and **hooks** (Cursor only) from that repo. Use flags to install only what you want:
|
|
42
|
+
### Add a marketplace
|
|
44
43
|
|
|
45
44
|
```bash
|
|
46
|
-
agents-pkg
|
|
47
|
-
agents-pkg owner/repo --subagents --hooks # only subagents and hooks
|
|
48
|
-
agents-pkg ./my-local-repo --skills # only skills from local path
|
|
45
|
+
agents-pkg add-plugin <source> [plugin-name] [--global | --project]
|
|
49
46
|
```
|
|
50
47
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
48
|
+
- **source** — Repo URL (GitHub `owner/repo`, GitLab, or full URL) or local path.
|
|
49
|
+
- **plugin-name** — Optional. Install only this plugin from the marketplace; otherwise all plugins are installed.
|
|
50
|
+
- **--global** (default) — Symlink into `~/.cursor/subagents`, `~/.cursor/commands`, `~/.cursor/skills`, `~/.cursor/rules`. Available in all projects.
|
|
51
|
+
- **--project** — Symlink into the current project’s `.cursor/` so only this project sees the plugin.
|
|
54
52
|
|
|
55
|
-
|
|
53
|
+
Examples:
|
|
56
54
|
|
|
57
55
|
```bash
|
|
58
|
-
agents-pkg
|
|
59
|
-
agents-pkg
|
|
60
|
-
agents-pkg
|
|
61
|
-
agents-pkg skills find
|
|
62
|
-
agents-pkg skills check
|
|
63
|
-
agents-pkg skills update
|
|
64
|
-
agents-pkg skills init [name]
|
|
65
|
-
agents-pkg skills experimental_install
|
|
66
|
-
agents-pkg skills experimental_sync
|
|
56
|
+
agents-pkg add-plugin https://github.com/org/ai-kit
|
|
57
|
+
agents-pkg add-plugin ./local-repo --project
|
|
58
|
+
agents-pkg add-plugin https://gitlab.com/org/kit my-plugin-name
|
|
67
59
|
```
|
|
68
60
|
|
|
69
|
-
###
|
|
70
|
-
|
|
71
|
-
Subagents are `.md` files in `.cursor/agents` and `.claude/agents`. **Source** can be: omitted (stub), a local path, an HTTP(S) URL, or GitHub `owner/repo/path/to/file.md`.
|
|
61
|
+
### List installed marketplaces
|
|
72
62
|
|
|
73
63
|
```bash
|
|
74
|
-
agents-pkg
|
|
75
|
-
agents-pkg subagents add <name> [source] # add -g for global dirs too
|
|
76
|
-
agents-pkg subagents remove <name>
|
|
64
|
+
agents-pkg list
|
|
77
65
|
```
|
|
78
66
|
|
|
79
|
-
|
|
67
|
+
Shows each installed marketplace with its version, scope (global/project), source, and plugin names.
|
|
80
68
|
|
|
81
|
-
|
|
69
|
+
### Remove one plugin from a marketplace
|
|
82
70
|
|
|
83
71
|
```bash
|
|
84
|
-
agents-pkg
|
|
85
|
-
agents-pkg commands add <name> [source] # add -g for global dirs too
|
|
86
|
-
agents-pkg commands remove <name>
|
|
72
|
+
agents-pkg del-plugin <marketplace-name> <plugin-name>
|
|
87
73
|
```
|
|
88
74
|
|
|
89
|
-
|
|
75
|
+
Removes that plugin’s symlinks and data; updates the lock. If it was the last plugin, the marketplace entry is removed. Use `agents-pkg list` to see marketplace and plugin names.
|
|
90
76
|
|
|
91
|
-
|
|
77
|
+
### Remove an entire marketplace
|
|
92
78
|
|
|
93
79
|
```bash
|
|
94
|
-
agents-pkg
|
|
95
|
-
agents-pkg hooks add <hookName> <command> # e.g. hooks add beforeShellExecution ./check.sh; add -g for global
|
|
96
|
-
agents-pkg hooks remove <hookName>
|
|
80
|
+
agents-pkg del-marketplace <name>
|
|
97
81
|
```
|
|
98
82
|
|
|
99
|
-
|
|
83
|
+
Uninstalls the marketplace and all its plugins. `name` is the marketplace name (e.g. from the manifest’s `name` field).
|
|
100
84
|
|
|
101
|
-
|
|
85
|
+
### Update installed marketplaces
|
|
102
86
|
|
|
103
87
|
```bash
|
|
104
88
|
agents-pkg update
|
|
105
89
|
```
|
|
106
90
|
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
### Agents and config
|
|
91
|
+
Re-fetches each installed marketplace source, reads `.cursor-plugin/marketplace.json`, and reinstalls if the manifest `metadata.version` changed. Symlinks are recreated in the same place (global or project) as when the marketplace was first installed.
|
|
110
92
|
|
|
111
|
-
|
|
93
|
+
---
|
|
112
94
|
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
95
|
+
## Marketplace format
|
|
96
|
+
|
|
97
|
+
The source must contain **`.cursor-plugin/marketplace.json`** at its root. Example:
|
|
98
|
+
|
|
99
|
+
```json
|
|
100
|
+
{
|
|
101
|
+
"name": "ai-engineering-kit",
|
|
102
|
+
"owner": { "name": "My Org" },
|
|
103
|
+
"metadata": {
|
|
104
|
+
"description": "Internal AI engineering kit.",
|
|
105
|
+
"version": "0.1.0"
|
|
106
|
+
},
|
|
107
|
+
"plugins": [
|
|
108
|
+
{ "name": "ai-kit-global", "source": "./global", "description": "Shared skills, commands, agents, rules." },
|
|
109
|
+
{ "name": "ai-kit-backend", "source": "./backend", "description": "Backend-specific." }
|
|
110
|
+
]
|
|
111
|
+
}
|
|
118
112
|
```
|
|
119
113
|
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
114
|
+
- **name** — Marketplace id; used in the lock and as the store parent.
|
|
115
|
+
- **metadata.version** — Used to decide when to reinstall on `agents-pkg update`.
|
|
116
|
+
- **plugins** — Array of `{ name, source, description? }`. `source` is relative to the repo root (e.g. `./global`).
|
|
123
117
|
|
|
124
|
-
|
|
118
|
+
Inside each plugin directory (e.g. `./global`), use this layout:
|
|
125
119
|
|
|
126
|
-
| Category
|
|
127
|
-
|
|
128
|
-
|
|
|
129
|
-
|
|
|
130
|
-
|
|
|
131
|
-
|
|
|
120
|
+
| Category | Dir / file | Contents |
|
|
121
|
+
|----------|------------|----------|
|
|
122
|
+
| Subagents | `agents/` | One `.md` file per agent; filename (without `.md`) is the name. |
|
|
123
|
+
| Commands | `commands/` | One `.md` file per command. |
|
|
124
|
+
| Skills | `skills/` | One subdir per skill; each must contain `SKILL.md`. |
|
|
125
|
+
| Rules | `rules/` | Top-level `.md` or `.mdc` rule files. |
|
|
126
|
+
| Hooks | `hooks/hooks.json` | Cursor-style `{ "version": 1, "hooks": { ... } }`. Merged into project `.cursor/hooks.json` only. |
|
|
132
127
|
|
|
133
|
-
|
|
128
|
+
Missing dirs are skipped. Hooks are always merged into the **project** `.cursor/hooks.json` (not global).
|
|
134
129
|
|
|
135
130
|
---
|
|
136
131
|
|
|
137
|
-
##
|
|
132
|
+
## Where things are installed
|
|
133
|
+
|
|
134
|
+
With **--global** (default):
|
|
138
135
|
|
|
139
|
-
| Kind
|
|
140
|
-
|
|
141
|
-
|
|
|
142
|
-
|
|
|
143
|
-
|
|
|
144
|
-
|
|
|
136
|
+
| Kind | Location |
|
|
137
|
+
|------|----------|
|
|
138
|
+
| Subagents | `~/.cursor/subagents/` |
|
|
139
|
+
| Commands | `~/.cursor/commands/` |
|
|
140
|
+
| Skills | `~/.cursor/skills/` |
|
|
141
|
+
| Rules | `~/.cursor/rules/` |
|
|
142
|
+
| Hooks | Project `.cursor/hooks.json` (merged) |
|
|
145
143
|
|
|
146
|
-
|
|
144
|
+
With **--project**:
|
|
145
|
+
|
|
146
|
+
| Kind | Location |
|
|
147
|
+
|------|----------|
|
|
148
|
+
| Subagents | `<project>/.cursor/subagents/` |
|
|
149
|
+
| Commands | `<project>/.cursor/commands/` |
|
|
150
|
+
| Skills | `<project>/.cursor/skills/` |
|
|
151
|
+
| Rules | `<project>/.cursor/rules/` |
|
|
152
|
+
| Hooks | `<project>/.cursor/hooks.json` (merged) |
|
|
147
153
|
|
|
148
154
|
---
|
|
149
155
|
|
|
150
156
|
## Development
|
|
151
157
|
|
|
152
|
-
TypeScript, build to `dist/`, tests with
|
|
158
|
+
TypeScript, build to `dist/`, tests with Vitest.
|
|
153
159
|
|
|
154
160
|
```bash
|
|
155
161
|
pnpm install
|
|
156
162
|
pnpm build # Compile src/ → dist/
|
|
157
|
-
pnpm dev -- --help
|
|
158
|
-
pnpm test
|
|
159
|
-
pnpm type-check
|
|
163
|
+
pnpm dev -- --help # Run from source (tsx)
|
|
164
|
+
pnpm test # pretest runs build, then vitest
|
|
165
|
+
pnpm type-check # tsc --noEmit
|
|
160
166
|
```
|
|
161
167
|
|
|
162
|
-
**Tests:** Lock file (read/write, version, `AGENTS_PKG_HOME`), source resolution (stub, local path, literal), subagents and commands (list/add/remove), CLI (help, version, subagents list, commands list, config path).
|
|
163
|
-
|
|
164
168
|
### CI and publishing
|
|
165
169
|
|
|
166
|
-
- **CI** (`.github/workflows/ci.yml`): On push/PR to `main`, runs type-check, build, and tests.
|
|
167
|
-
- **Publish** (`.github/workflows/publish.yml`):
|
|
168
|
-
- **Push to main**: Include `[patch]` or `[minor]` in a commit message; the workflow bumps the version, pushes the new commit and tag, publishes to npm, and creates a GitHub Release.
|
|
169
|
-
- **Manual**: Actions → Publish → Run workflow, then choose **patch** or **minor** to bump and release.
|
|
170
|
-
- **Tag push**: Pushing a tag `v*` triggers a publish-only run (no bump; the tag must already point to a commit with that version in `package.json`).
|
|
171
|
-
|
|
172
|
-
Add an **NPM_TOKEN** secret (Settings → Secrets and variables → Actions): create an [npm access token](https://www.npmjs.com/settings/~/tokens) (automation type) and add it as `NPM_TOKEN`.
|
|
170
|
+
- **CI** (`.github/workflows/ci.yml`): On push/PR to `main`, runs type-check, build, and tests.
|
|
171
|
+
- **Publish** (`.github/workflows/publish.yml`): Version bump and npm publish (e.g. via `[patch]` / `[minor]` in commit message or manual workflow run). Add **NPM_TOKEN** secret for npm publish.
|
|
173
172
|
|
|
174
173
|
---
|
|
175
174
|
|
package/bin/agents-pkg.mjs
CHANGED
|
File without changes
|
package/dist/add-plugin.d.ts
CHANGED
|
@@ -9,6 +9,7 @@ import { type MarketplaceManifest } from './lib/marketplace.js';
|
|
|
9
9
|
*/
|
|
10
10
|
export declare function installMarketplaceFromDir(manifest: MarketplaceManifest, sourceDir: string, options?: {
|
|
11
11
|
pluginNameFilter?: string;
|
|
12
|
+
global?: boolean;
|
|
12
13
|
}): Promise<string[]>;
|
|
13
14
|
export declare function runAddPlugin(args: string[]): Promise<void>;
|
|
14
15
|
//# sourceMappingURL=add-plugin.d.ts.map
|
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;;;GAGG;AAKH,OAAO,EAGL,KAAK,mBAAmB,EACzB,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"add-plugin.d.ts","sourceRoot":"","sources":["../src/add-plugin.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EAGL,KAAK,mBAAmB,EACzB,MAAM,sBAAsB,CAAC;AAmI9B;;;GAGG;AACH,wBAAsB,yBAAyB,CAC7C,QAAQ,EAAE,mBAAmB,EAC7B,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE;IAAE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GAC5D,OAAO,CAAC,MAAM,EAAE,CAAC,CAwCnB;AAqBD,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAsChE"}
|
package/dist/add-plugin.js
CHANGED
|
@@ -6,8 +6,8 @@ import { join, resolve, sep } from 'path';
|
|
|
6
6
|
import { readdir, readFile, stat, cp } from 'fs/promises';
|
|
7
7
|
import { resolveSourceToDir } from './lib/source-dir.js';
|
|
8
8
|
import { readMarketplaceManifest, getPluginStorePath, } from './lib/marketplace.js';
|
|
9
|
-
import { REPO_SKILLS_DIR, REPO_AGENTS_DIR, REPO_COMMANDS_DIR, REPO_HOOKS_FILE, } from './lib/constants.js';
|
|
10
|
-
import {
|
|
9
|
+
import { REPO_SKILLS_DIR, REPO_AGENTS_DIR, REPO_COMMANDS_DIR, REPO_HOOKS_FILE, REPO_RULES_DIR, } from './lib/constants.js';
|
|
10
|
+
import { getCursorSubagentsDir, getCursorCommandsDir, getCursorSkillsDir, getCursorRulesDir } from './lib/paths.js';
|
|
11
11
|
import { createSymlink } from './lib/symlink.js';
|
|
12
12
|
import { mergeHooksIntoProject } from './lib/hooks.js';
|
|
13
13
|
import { readLock, writeLock } from './lib/lock.js';
|
|
@@ -53,16 +53,31 @@ async function listSkillDirs(skillsDir) {
|
|
|
53
53
|
return [];
|
|
54
54
|
}
|
|
55
55
|
}
|
|
56
|
+
/** List rule file names (.md and .mdc) in rules dir (top-level only). */
|
|
57
|
+
async function listRuleFiles(rulesDir) {
|
|
58
|
+
try {
|
|
59
|
+
const st = await stat(rulesDir);
|
|
60
|
+
if (!st.isDirectory())
|
|
61
|
+
return [];
|
|
62
|
+
const entries = await readdir(rulesDir, { withFileTypes: true });
|
|
63
|
+
return entries
|
|
64
|
+
.filter((e) => e.isFile() && (e.name.endsWith('.md') || e.name.endsWith('.mdc')))
|
|
65
|
+
.map((e) => e.name);
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
return [];
|
|
69
|
+
}
|
|
70
|
+
}
|
|
56
71
|
/**
|
|
57
|
-
* Copy plugin dir to store, then create symlinks for agents, commands, skills; merge hooks.
|
|
72
|
+
* Copy plugin dir to store, then create symlinks for agents, commands, skills, rules; merge hooks.
|
|
58
73
|
*/
|
|
59
|
-
async function installPlugin(pluginStorePath,
|
|
74
|
+
async function installPlugin(pluginStorePath, cursorSubagentsDir, cursorCommandsDir, cursorSkillsDir, cursorRulesDir, cwd) {
|
|
60
75
|
const done = [];
|
|
61
76
|
const agentsDir = join(pluginStorePath, REPO_AGENTS_DIR);
|
|
62
77
|
const agentNames = await listMdFiles(agentsDir);
|
|
63
78
|
for (const name of agentNames) {
|
|
64
79
|
const target = join(agentsDir, name + '.md');
|
|
65
|
-
const linkPath = join(
|
|
80
|
+
const linkPath = join(cursorSubagentsDir, name + '.md');
|
|
66
81
|
await createSymlink(target, linkPath);
|
|
67
82
|
}
|
|
68
83
|
if (agentNames.length > 0)
|
|
@@ -85,6 +100,15 @@ async function installPlugin(pluginStorePath, cursorAgentsDir, cursorCommandsDir
|
|
|
85
100
|
}
|
|
86
101
|
if (skillNames.length > 0)
|
|
87
102
|
done.push('skills');
|
|
103
|
+
const rulesDir = join(pluginStorePath, REPO_RULES_DIR);
|
|
104
|
+
const ruleNames = await listRuleFiles(rulesDir);
|
|
105
|
+
for (const name of ruleNames) {
|
|
106
|
+
const target = join(rulesDir, name);
|
|
107
|
+
const linkPath = join(cursorRulesDir, name);
|
|
108
|
+
await createSymlink(target, linkPath);
|
|
109
|
+
}
|
|
110
|
+
if (ruleNames.length > 0)
|
|
111
|
+
done.push('rules');
|
|
88
112
|
const hooksPath = join(pluginStorePath, REPO_HOOKS_FILE);
|
|
89
113
|
try {
|
|
90
114
|
const raw = await readFile(hooksPath, 'utf-8');
|
|
@@ -111,11 +135,13 @@ export async function installMarketplaceFromDir(manifest, sourceDir, options = {
|
|
|
111
135
|
fatal(`Plugin "${options.pluginNameFilter}" not found in marketplace. Available: ${manifest.plugins.map((p) => p.name).join(', ')}`);
|
|
112
136
|
}
|
|
113
137
|
}
|
|
138
|
+
const global = options.global !== false;
|
|
114
139
|
const absSourceDir = resolve(sourceDir);
|
|
115
140
|
const cwd = process.cwd();
|
|
116
|
-
const
|
|
117
|
-
const cursorCommandsDir = getCursorCommandsDir(
|
|
118
|
-
const cursorSkillsDir = getCursorSkillsDir(
|
|
141
|
+
const cursorSubagentsDir = getCursorSubagentsDir(global, cwd);
|
|
142
|
+
const cursorCommandsDir = getCursorCommandsDir(global, cwd);
|
|
143
|
+
const cursorSkillsDir = getCursorSkillsDir(global, cwd);
|
|
144
|
+
const cursorRulesDir = getCursorRulesDir(global, cwd);
|
|
119
145
|
const installed = [];
|
|
120
146
|
for (const plugin of pluginsToInstall) {
|
|
121
147
|
const pluginDir = join(sourceDir, plugin.source);
|
|
@@ -127,18 +153,38 @@ export async function installMarketplaceFromDir(manifest, sourceDir, options = {
|
|
|
127
153
|
const { mkdir } = await import('fs/promises');
|
|
128
154
|
await mkdir(storePath, { recursive: true });
|
|
129
155
|
await cp(pluginDir, storePath, { recursive: true });
|
|
130
|
-
const done = await installPlugin(storePath,
|
|
156
|
+
const done = await installPlugin(storePath, cursorSubagentsDir, cursorCommandsDir, cursorSkillsDir, cursorRulesDir, cwd);
|
|
131
157
|
if (done.length > 0)
|
|
132
158
|
installed.push(plugin.name);
|
|
133
159
|
}
|
|
134
160
|
return installed;
|
|
135
161
|
}
|
|
162
|
+
function parseAddPluginArgs(args) {
|
|
163
|
+
let global = true;
|
|
164
|
+
const positionals = [];
|
|
165
|
+
for (const arg of args) {
|
|
166
|
+
if (arg === '--project') {
|
|
167
|
+
global = false;
|
|
168
|
+
}
|
|
169
|
+
else if (arg === '--global') {
|
|
170
|
+
global = true;
|
|
171
|
+
}
|
|
172
|
+
else if (arg.startsWith('--')) {
|
|
173
|
+
fatal(`Unknown option: ${arg}. Use --global (default) or --project.`);
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
positionals.push(arg.trim());
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
const source = positionals[0];
|
|
180
|
+
const pluginNameFilter = positionals[1]?.trim() || undefined;
|
|
181
|
+
return { source: source ?? '', pluginNameFilter, global };
|
|
182
|
+
}
|
|
136
183
|
export async function runAddPlugin(args) {
|
|
137
|
-
const source = args
|
|
184
|
+
const { source, pluginNameFilter, global } = parseAddPluginArgs(args);
|
|
138
185
|
if (!source) {
|
|
139
|
-
fatal('Usage: agents-pkg add-plugin <source> [plugin-name]\n source = repo URL or local path; optional plugin-name = install only that plugin.');
|
|
186
|
+
fatal('Usage: agents-pkg add-plugin <source> [plugin-name] [--global | --project]\n source = repo URL or local path; optional plugin-name = install only that plugin.\n --global (default) = symlinks in ~/.cursor/*; --project = symlinks in project .cursor/*.');
|
|
140
187
|
}
|
|
141
|
-
const pluginNameFilter = args[1]?.trim();
|
|
142
188
|
const { path: sourceDir, cleanup } = await resolveSourceToDir(source).catch((e) => {
|
|
143
189
|
fatal(e instanceof Error ? e.message : String(e));
|
|
144
190
|
});
|
|
@@ -146,10 +192,11 @@ export async function runAddPlugin(args) {
|
|
|
146
192
|
const manifest = await readMarketplaceManifest(sourceDir);
|
|
147
193
|
const version = manifest.metadata?.version ?? '0.0.0';
|
|
148
194
|
const installed = await installMarketplaceFromDir(manifest, sourceDir, {
|
|
149
|
-
pluginNameFilter
|
|
195
|
+
pluginNameFilter,
|
|
196
|
+
global,
|
|
150
197
|
});
|
|
151
198
|
if (installed.length === 0) {
|
|
152
|
-
console.log(`No agents, commands, skills, or hooks found in the selected plugin(s).`);
|
|
199
|
+
console.log(`No agents, commands, skills, rules, or hooks found in the selected plugin(s).`);
|
|
153
200
|
return;
|
|
154
201
|
}
|
|
155
202
|
console.log(`Installed marketplace "${manifest.name}" (v${version}): ${installed.join(', ')}.`);
|
|
@@ -160,6 +207,7 @@ export async function runAddPlugin(args) {
|
|
|
160
207
|
version,
|
|
161
208
|
pluginNames: installed,
|
|
162
209
|
updatedAt: new Date().toISOString(),
|
|
210
|
+
global,
|
|
163
211
|
};
|
|
164
212
|
await writeLock(lock);
|
|
165
213
|
}
|
package/dist/add-plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add-plugin.js","sourceRoot":"","sources":["../src/add-plugin.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EACL,uBAAuB,EACvB,kBAAkB,GAEnB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,eAAe,
|
|
1
|
+
{"version":3,"file":"add-plugin.js","sourceRoot":"","sources":["../src/add-plugin.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EACL,uBAAuB,EACvB,kBAAkB,GAEnB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,cAAc,GACf,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACpH,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAEvD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAExC,SAAS,aAAa,CAAC,SAAiB,EAAE,UAAkB;IAC1D,MAAM,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC;IACnD,MAAM,eAAe,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IAC3C,OAAO,eAAe,KAAK,OAAO,CAAC,UAAU,CAAC,IAAI,eAAe,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;AACjG,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,GAAW;IACpC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5D,OAAO,OAAO;aACX,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;aACnD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;IAC7C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,SAAiB;IAC5C,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,CAAC;QACjC,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE;YAAE,OAAO,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,SAAS,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAClE,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE;gBAAE,SAAS;YAC/B,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;gBAC5D,IAAI,GAAG,CAAC,MAAM,EAAE;oBAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACvC,CAAC;YAAC,MAAM,CAAC;gBACP,cAAc;YAChB,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,yEAAyE;AACzE,KAAK,UAAU,aAAa,CAAC,QAAgB;IAC3C,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC;QAChC,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE;YAAE,OAAO,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QACjE,OAAO,OAAO;aACX,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;aAChF,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,aAAa,CAC1B,eAAuB,EACvB,kBAA0B,EAC1B,iBAAyB,EACzB,eAAuB,EACvB,cAAsB,EACtB,GAAW;IAEX,MAAM,IAAI,GAAa,EAAE,CAAC;IAE1B,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC;IACzD,MAAM,UAAU,GAAG,MAAM,WAAW,CAAC,SAAS,CAAC,CAAC;IAChD,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,GAAG,KAAK,CAAC,CAAC;QAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,EAAE,IAAI,GAAG,KAAK,CAAC,CAAC;QACxD,MAAM,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACxC,CAAC;IACD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC;QAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAE/C,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,EAAE,iBAAiB,CAAC,CAAC;IAC7D,MAAM,YAAY,GAAG,MAAM,WAAW,CAAC,WAAW,CAAC,CAAC;IACpD,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;QAChC,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,IAAI,GAAG,KAAK,CAAC,CAAC;QAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,EAAE,IAAI,GAAG,KAAK,CAAC,CAAC;QACvD,MAAM,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACxC,CAAC;IACD,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC;QAAE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAEnD,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC;IACzD,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC,SAAS,CAAC,CAAC;IAClD,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;QAC7C,MAAM,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACxC,CAAC;IACD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC;QAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAE/C,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC;IACvD,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,QAAQ,CAAC,CAAC;IAChD,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;QAC5C,MAAM,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACxC,CAAC;IACD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC;QAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAE7C,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC;IACzD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC/C,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAc,CAAC;QAC/C,IAAI,SAAS,CAAC,KAAK,IAAI,OAAO,SAAS,CAAC,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtG,MAAM,qBAAqB,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;YAC5C,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,sBAAsB;IACxB,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,QAA6B,EAC7B,SAAiB,EACjB,UAA2D,EAAE;IAE7D,IAAI,gBAAgB,GAAG,QAAQ,CAAC,OAAO,CAAC;IACxC,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;QAC7B,gBAAgB,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC;QACvF,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClC,KAAK,CAAC,WAAW,OAAO,CAAC,gBAAgB,0CAA0C,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACvI,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,KAAK,KAAK,CAAC;IACxC,MAAM,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IACxC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,kBAAkB,GAAG,qBAAqB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9D,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,SAAS,GAAa,EAAE,CAAC;IAC/B,KAAK,MAAM,MAAM,IAAI,gBAAgB,EAAE,CAAC;QACtC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QACjD,MAAM,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;QACxC,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,YAAY,CAAC,EAAE,CAAC;YAC/C,KAAK,CAAC,kBAAkB,MAAM,CAAC,MAAM,yCAAyC,CAAC,CAAC;QAClF,CAAC;QACD,MAAM,SAAS,GAAG,kBAAkB,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QACjE,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;QAC9C,MAAM,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5C,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAEpD,MAAM,IAAI,GAAG,MAAM,aAAa,CAC9B,SAAS,EACT,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,GAAG,CACJ,CAAC;QACF,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;YAAE,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAc;IACxC,IAAI,MAAM,GAAG,IAAI,CAAC;IAClB,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;YACxB,MAAM,GAAG,KAAK,CAAC;QACjB,CAAC;aAAM,IAAI,GAAG,KAAK,UAAU,EAAE,CAAC;YAC9B,MAAM,GAAG,IAAI,CAAC;QAChB,CAAC;aAAM,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAChC,KAAK,CAAC,mBAAmB,GAAG,wCAAwC,CAAC,CAAC;QACxE,CAAC;aAAM,CAAC;YACN,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IACD,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;IAC9B,MAAM,gBAAgB,GAAG,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,SAAS,CAAC;IAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,EAAE,EAAE,gBAAgB,EAAE,MAAM,EAAE,CAAC;AAC5D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAc;IAC/C,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACtE,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,KAAK,CAAC,6PAA6P,CAAC,CAAC;IACvQ,CAAC;IAED,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,MAAM,kBAAkB,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;QAChF,KAAK,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,uBAAuB,CAAC,SAAS,CAAC,CAAC;QAC1D,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,EAAE,OAAO,IAAI,OAAO,CAAC;QACtD,MAAM,SAAS,GAAG,MAAM,yBAAyB,CAAC,QAAQ,EAAE,SAAS,EAAE;YACrE,gBAAgB;YAChB,MAAM;SACP,CAAC,CAAC;QAEH,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,+EAA+E,CAAC,CAAC;YAC7F,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,0BAA0B,QAAQ,CAAC,IAAI,OAAO,OAAO,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEhG,MAAM,IAAI,GAAG,MAAM,QAAQ,EAAE,CAAC;QAC9B,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG;YACjC,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,MAAM;YACN,OAAO;YACP,WAAW,EAAE,SAAS;YACtB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,MAAM;SACP,CAAC;QACF,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;YAAS,CAAC;QACT,IAAI,OAAO;YAAE,MAAM,OAAO,EAAE,CAAC;IAC/B,CAAC;AACH,CAAC"}
|
package/dist/cli.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
/**
|
|
3
3
|
* agents-pkg — Cursor-only marketplace installer.
|
|
4
|
-
* Commands: add-plugin
|
|
4
|
+
* Commands: add-plugin, list, del-plugin (remove one plugin), del-marketplace (remove marketplace), update.
|
|
5
5
|
*/
|
|
6
6
|
export {};
|
|
7
7
|
//# sourceMappingURL=cli.d.ts.map
|
package/dist/cli.js
CHANGED
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
/**
|
|
3
3
|
* agents-pkg — Cursor-only marketplace installer.
|
|
4
|
-
* Commands: add-plugin
|
|
4
|
+
* Commands: add-plugin, list, del-plugin (remove one plugin), del-marketplace (remove marketplace), update.
|
|
5
5
|
*/
|
|
6
6
|
import { join, dirname } from 'path';
|
|
7
7
|
import { readFileSync } from 'fs';
|
|
8
8
|
import { fileURLToPath } from 'url';
|
|
9
9
|
import { fatal } from './lib/errors.js';
|
|
10
10
|
import { runAddPlugin } from './add-plugin.js';
|
|
11
|
+
import { runList } from './list.js';
|
|
11
12
|
import { runDelPlugin } from './del-plugin.js';
|
|
13
|
+
import { runDelMarketplace } from './del-marketplace.js';
|
|
12
14
|
import { runUpdate } from './update.js';
|
|
13
15
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
14
16
|
function getVersion() {
|
|
@@ -27,14 +29,18 @@ function showBanner() {
|
|
|
27
29
|
console.log('Usage: agents-pkg <command> [options]');
|
|
28
30
|
console.log('');
|
|
29
31
|
console.log('Commands:');
|
|
30
|
-
console.log(' add-plugin <source> [plugin-name] Install marketplace
|
|
31
|
-
console.log('
|
|
32
|
-
console.log('
|
|
32
|
+
console.log(' add-plugin <source> [plugin-name] Install marketplace (--global default, --project for current project only)');
|
|
33
|
+
console.log(' list List installed marketplaces and their plugins');
|
|
34
|
+
console.log(' del-plugin <marketplace> <plugin> Remove one plugin from a marketplace');
|
|
35
|
+
console.log(' del-marketplace <name> Uninstall entire marketplace');
|
|
36
|
+
console.log(' update Re-fetch each installed marketplace and reinstall if version changed');
|
|
33
37
|
console.log('');
|
|
34
38
|
console.log('Examples:');
|
|
35
39
|
console.log(' agents-pkg add-plugin https://gitlab.com/org/ai-kit');
|
|
36
|
-
console.log(' agents-pkg add-plugin ./local-repo
|
|
37
|
-
console.log(' agents-pkg
|
|
40
|
+
console.log(' agents-pkg add-plugin ./local-repo --project');
|
|
41
|
+
console.log(' agents-pkg list');
|
|
42
|
+
console.log(' agents-pkg del-plugin ai-engineering-kit ai-kit-backend');
|
|
43
|
+
console.log(' agents-pkg del-marketplace ai-engineering-kit');
|
|
38
44
|
console.log(' agents-pkg update');
|
|
39
45
|
}
|
|
40
46
|
async function main() {
|
|
@@ -49,9 +55,15 @@ async function main() {
|
|
|
49
55
|
case 'add-plugin':
|
|
50
56
|
await runAddPlugin(rest);
|
|
51
57
|
break;
|
|
58
|
+
case 'list':
|
|
59
|
+
await runList();
|
|
60
|
+
break;
|
|
52
61
|
case 'del-plugin':
|
|
53
62
|
await runDelPlugin(rest);
|
|
54
63
|
break;
|
|
64
|
+
case 'del-marketplace':
|
|
65
|
+
await runDelMarketplace(rest);
|
|
66
|
+
break;
|
|
55
67
|
case 'update':
|
|
56
68
|
await runUpdate();
|
|
57
69
|
break;
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE1D,SAAS,UAAU;IACjB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;QACtD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAyB,CAAC;QAC/E,OAAO,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC;AAED,SAAS,UAAU;IACjB,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;IACzD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;IACrD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACzB,OAAO,CAAC,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"del-marketplace.d.ts","sourceRoot":"","sources":["../src/del-marketplace.ts"],"names":[],"mappings":"AAAA;;GAEG;AASH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAkCrE"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* del-marketplace — Uninstall a marketplace by name (remove symlinks, delete store, update lock).
|
|
3
|
+
*/
|
|
4
|
+
import { rm } from 'fs/promises';
|
|
5
|
+
import { getCursorSubagentsDir, getCursorCommandsDir, getCursorSkillsDir, getCursorRulesDir } from './lib/paths.js';
|
|
6
|
+
import { getMarketplaceStorePath } from './lib/marketplace.js';
|
|
7
|
+
import { removeSymlinksInDirPointingUnder } from './lib/symlink.js';
|
|
8
|
+
import { readLock, writeLock } from './lib/lock.js';
|
|
9
|
+
import { fatal } from './lib/errors.js';
|
|
10
|
+
export async function runDelMarketplace(args) {
|
|
11
|
+
const name = args[0]?.trim();
|
|
12
|
+
if (!name) {
|
|
13
|
+
fatal('Usage: agents-pkg del-marketplace <name>\n name = marketplace name (e.g. ai-engineering-kit).');
|
|
14
|
+
}
|
|
15
|
+
const lock = await readLock();
|
|
16
|
+
const entry = lock.marketplaces[name];
|
|
17
|
+
if (!entry) {
|
|
18
|
+
fatal(`Marketplace "${name}" is not installed.`);
|
|
19
|
+
}
|
|
20
|
+
const storeRoot = getMarketplaceStorePath(name);
|
|
21
|
+
const cwd = process.cwd();
|
|
22
|
+
const global = entry.global !== false;
|
|
23
|
+
const cursorSubagentsDir = getCursorSubagentsDir(global, cwd);
|
|
24
|
+
const cursorCommandsDir = getCursorCommandsDir(global, cwd);
|
|
25
|
+
const cursorSkillsDir = getCursorSkillsDir(global, cwd);
|
|
26
|
+
const cursorRulesDir = getCursorRulesDir(global, cwd);
|
|
27
|
+
await removeSymlinksInDirPointingUnder(cursorSubagentsDir, storeRoot);
|
|
28
|
+
await removeSymlinksInDirPointingUnder(cursorCommandsDir, storeRoot);
|
|
29
|
+
await removeSymlinksInDirPointingUnder(cursorSkillsDir, storeRoot);
|
|
30
|
+
await removeSymlinksInDirPointingUnder(cursorRulesDir, storeRoot);
|
|
31
|
+
try {
|
|
32
|
+
await rm(storeRoot, { recursive: true, force: true });
|
|
33
|
+
}
|
|
34
|
+
catch (e) {
|
|
35
|
+
console.warn(`Could not remove store at ${storeRoot}:`, e instanceof Error ? e.message : String(e));
|
|
36
|
+
}
|
|
37
|
+
delete lock.marketplaces[name];
|
|
38
|
+
await writeLock(lock);
|
|
39
|
+
console.log(`Removed marketplace "${name}".`);
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=del-marketplace.js.map
|
|
@@ -0,0 +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,qBAAqB,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACpH,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,gCAAgC,EAAE,MAAM,kBAAkB,CAAC;AACpE,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,SAAS,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC;IAChD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC;IACtC,MAAM,kBAAkB,GAAG,qBAAqB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9D,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,gCAAgC,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC;IACtE,MAAM,gCAAgC,CAAC,iBAAiB,EAAE,SAAS,CAAC,CAAC;IACrE,MAAM,gCAAgC,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;IACnE,MAAM,gCAAgC,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;IAElE,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACxD,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,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;IACtG,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,5 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* del-plugin —
|
|
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.
|
|
3
4
|
*/
|
|
4
5
|
export declare function runDelPlugin(args: string[]): Promise<void>;
|
|
5
6
|
//# 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;;;GAGG;AASH,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAyChE"}
|
package/dist/del-plugin.js
CHANGED
|
@@ -1,38 +1,49 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* del-plugin —
|
|
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.
|
|
3
4
|
*/
|
|
4
5
|
import { rm } from 'fs/promises';
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
6
|
+
import { getCursorSubagentsDir, getCursorCommandsDir, getCursorSkillsDir, getCursorRulesDir } from './lib/paths.js';
|
|
7
|
+
import { getPluginStorePath } from './lib/marketplace.js';
|
|
7
8
|
import { removeSymlinksInDirPointingUnder } from './lib/symlink.js';
|
|
8
9
|
import { readLock, writeLock } from './lib/lock.js';
|
|
9
10
|
import { fatal } from './lib/errors.js';
|
|
10
11
|
export async function runDelPlugin(args) {
|
|
11
|
-
const
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
const marketplaceName = args[0]?.trim();
|
|
13
|
+
const pluginName = args[1]?.trim();
|
|
14
|
+
if (!marketplaceName || !pluginName) {
|
|
15
|
+
fatal('Usage: agents-pkg del-plugin <marketplace-name> <plugin-name>\n Removes one plugin from an installed marketplace. Use "agents-pkg list" to see names.');
|
|
14
16
|
}
|
|
15
17
|
const lock = await readLock();
|
|
16
|
-
const entry = lock.marketplaces[
|
|
18
|
+
const entry = lock.marketplaces[marketplaceName];
|
|
17
19
|
if (!entry) {
|
|
18
|
-
fatal(`Marketplace "${
|
|
20
|
+
fatal(`Marketplace "${marketplaceName}" is not installed.`);
|
|
19
21
|
}
|
|
20
|
-
|
|
22
|
+
if (!entry.pluginNames?.includes(pluginName)) {
|
|
23
|
+
fatal(`Plugin "${pluginName}" is not installed from marketplace "${marketplaceName}". Installed: ${entry.pluginNames?.join(', ') ?? '(none)'}.`);
|
|
24
|
+
}
|
|
25
|
+
const pluginStorePath = getPluginStorePath(marketplaceName, pluginName);
|
|
21
26
|
const cwd = process.cwd();
|
|
22
|
-
const
|
|
23
|
-
const
|
|
24
|
-
const
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
await removeSymlinksInDirPointingUnder(
|
|
27
|
+
const global = entry.global !== false;
|
|
28
|
+
const cursorSubagentsDir = getCursorSubagentsDir(global, cwd);
|
|
29
|
+
const cursorCommandsDir = getCursorCommandsDir(global, cwd);
|
|
30
|
+
const cursorSkillsDir = getCursorSkillsDir(global, cwd);
|
|
31
|
+
const cursorRulesDir = getCursorRulesDir(global, cwd);
|
|
32
|
+
await removeSymlinksInDirPointingUnder(cursorSubagentsDir, pluginStorePath);
|
|
33
|
+
await removeSymlinksInDirPointingUnder(cursorCommandsDir, pluginStorePath);
|
|
34
|
+
await removeSymlinksInDirPointingUnder(cursorSkillsDir, pluginStorePath);
|
|
35
|
+
await removeSymlinksInDirPointingUnder(cursorRulesDir, pluginStorePath);
|
|
28
36
|
try {
|
|
29
|
-
await rm(
|
|
37
|
+
await rm(pluginStorePath, { recursive: true, force: true });
|
|
30
38
|
}
|
|
31
39
|
catch (e) {
|
|
32
|
-
console.warn(`Could not remove store at ${
|
|
40
|
+
console.warn(`Could not remove store at ${pluginStorePath}:`, e instanceof Error ? e.message : String(e));
|
|
41
|
+
}
|
|
42
|
+
entry.pluginNames = entry.pluginNames.filter((n) => n !== pluginName);
|
|
43
|
+
if (entry.pluginNames.length === 0) {
|
|
44
|
+
delete lock.marketplaces[marketplaceName];
|
|
33
45
|
}
|
|
34
|
-
delete lock.marketplaces[name];
|
|
35
46
|
await writeLock(lock);
|
|
36
|
-
console.log(`Removed marketplace "${
|
|
47
|
+
console.log(`Removed plugin "${pluginName}" from marketplace "${marketplaceName}".`);
|
|
37
48
|
}
|
|
38
49
|
//# sourceMappingURL=del-plugin.js.map
|
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":"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"}
|
package/dist/lib/constants.d.ts
CHANGED
|
@@ -9,9 +9,10 @@ export declare const CURRENT_LOCK_VERSION = 1;
|
|
|
9
9
|
export declare const MARKETPLACE_DIR = "agents-pkg/marketplace";
|
|
10
10
|
/** Path relative to resolved source dir: .cursor-plugin/marketplace.json */
|
|
11
11
|
export declare const MARKETPLACE_JSON = ".cursor-plugin/marketplace.json";
|
|
12
|
-
/** Plugin layout inside each plugin dir (agents, commands, skills, hooks) */
|
|
12
|
+
/** Plugin layout inside each plugin dir (agents, commands, skills, hooks, rules) */
|
|
13
13
|
export declare const REPO_SKILLS_DIR = "skills";
|
|
14
14
|
export declare const REPO_AGENTS_DIR = "agents";
|
|
15
15
|
export declare const REPO_COMMANDS_DIR = "commands";
|
|
16
16
|
export declare const REPO_HOOKS_FILE = "hooks/hooks.json";
|
|
17
|
+
export declare const REPO_RULES_DIR = "rules";
|
|
17
18
|
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/lib/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAO,MAAM,UAAU,YAAY,CAAC;AACpC,eAAO,MAAM,SAAS,0BAA0B,CAAC;AACjD,eAAO,MAAM,oBAAoB,IAAI,CAAC;AAEtC,oFAAoF;AACpF,eAAO,MAAM,eAAe,2BAA2B,CAAC;AAExD,4EAA4E;AAC5E,eAAO,MAAM,gBAAgB,oCAAoC,CAAC;AAElE,
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/lib/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAO,MAAM,UAAU,YAAY,CAAC;AACpC,eAAO,MAAM,SAAS,0BAA0B,CAAC;AACjD,eAAO,MAAM,oBAAoB,IAAI,CAAC;AAEtC,oFAAoF;AACpF,eAAO,MAAM,eAAe,2BAA2B,CAAC;AAExD,4EAA4E;AAC5E,eAAO,MAAM,gBAAgB,oCAAoC,CAAC;AAElE,oFAAoF;AACpF,eAAO,MAAM,eAAe,WAAW,CAAC;AACxC,eAAO,MAAM,eAAe,WAAW,CAAC;AACxC,eAAO,MAAM,iBAAiB,aAAa,CAAC;AAC5C,eAAO,MAAM,eAAe,qBAAqB,CAAC;AAClD,eAAO,MAAM,cAAc,UAAU,CAAC"}
|
package/dist/lib/constants.js
CHANGED
|
@@ -9,9 +9,10 @@ export const CURRENT_LOCK_VERSION = 1;
|
|
|
9
9
|
export const MARKETPLACE_DIR = 'agents-pkg/marketplace';
|
|
10
10
|
/** Path relative to resolved source dir: .cursor-plugin/marketplace.json */
|
|
11
11
|
export const MARKETPLACE_JSON = '.cursor-plugin/marketplace.json';
|
|
12
|
-
/** Plugin layout inside each plugin dir (agents, commands, skills, hooks) */
|
|
12
|
+
/** Plugin layout inside each plugin dir (agents, commands, skills, hooks, rules) */
|
|
13
13
|
export const REPO_SKILLS_DIR = 'skills';
|
|
14
14
|
export const REPO_AGENTS_DIR = 'agents';
|
|
15
15
|
export const REPO_COMMANDS_DIR = 'commands';
|
|
16
16
|
export const REPO_HOOKS_FILE = 'hooks/hooks.json';
|
|
17
|
+
export const REPO_RULES_DIR = 'rules';
|
|
17
18
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/lib/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,CAAC,MAAM,UAAU,GAAG,SAAS,CAAC;AACpC,MAAM,CAAC,MAAM,SAAS,GAAG,uBAAuB,CAAC;AACjD,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC;AAEtC,oFAAoF;AACpF,MAAM,CAAC,MAAM,eAAe,GAAG,wBAAwB,CAAC;AAExD,4EAA4E;AAC5E,MAAM,CAAC,MAAM,gBAAgB,GAAG,iCAAiC,CAAC;AAElE,
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/lib/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,CAAC,MAAM,UAAU,GAAG,SAAS,CAAC;AACpC,MAAM,CAAC,MAAM,SAAS,GAAG,uBAAuB,CAAC;AACjD,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC;AAEtC,oFAAoF;AACpF,MAAM,CAAC,MAAM,eAAe,GAAG,wBAAwB,CAAC;AAExD,4EAA4E;AAC5E,MAAM,CAAC,MAAM,gBAAgB,GAAG,iCAAiC,CAAC;AAElE,oFAAoF;AACpF,MAAM,CAAC,MAAM,eAAe,GAAG,QAAQ,CAAC;AACxC,MAAM,CAAC,MAAM,eAAe,GAAG,QAAQ,CAAC;AACxC,MAAM,CAAC,MAAM,iBAAiB,GAAG,UAAU,CAAC;AAC5C,MAAM,CAAC,MAAM,eAAe,GAAG,kBAAkB,CAAC;AAClD,MAAM,CAAC,MAAM,cAAc,GAAG,OAAO,CAAC"}
|
package/dist/lib/paths.d.ts
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Paths for Cursor and Claude (project and global).
|
|
3
|
-
* Subagents =
|
|
3
|
+
* Subagents = ~/.cursor/subagents (global; marketplace plugins install here).
|
|
4
4
|
* Commands = .cursor/commands, .claude/commands.
|
|
5
5
|
*/
|
|
6
6
|
export declare function getCursorAgentsDir(global: boolean, cwd?: string): string;
|
|
7
|
+
/** Cursor only: path to .cursor/subagents (global = ~/.cursor/subagents) */
|
|
8
|
+
export declare function getCursorSubagentsDir(global: boolean, cwd?: string): string;
|
|
7
9
|
export declare function getClaudeAgentsDir(global: boolean, cwd?: string): string;
|
|
8
10
|
export declare function getCursorCommandsDir(global: boolean, cwd?: string): string;
|
|
9
11
|
export declare function getClaudeCommandsDir(global: boolean, cwd?: string): string;
|
|
@@ -11,4 +13,6 @@ export declare function getClaudeCommandsDir(global: boolean, cwd?: string): str
|
|
|
11
13
|
export declare function getCursorHooksPath(global: boolean, cwd?: string): string;
|
|
12
14
|
/** Cursor only: path to .cursor/skills (global = ~/.cursor/skills) */
|
|
13
15
|
export declare function getCursorSkillsDir(global: boolean, cwd?: string): string;
|
|
16
|
+
/** Cursor only: path to .cursor/rules (global = ~/.cursor/rules) */
|
|
17
|
+
export declare function getCursorRulesDir(global: boolean, cwd?: string): string;
|
|
14
18
|
//# sourceMappingURL=paths.d.ts.map
|
package/dist/lib/paths.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/lib/paths.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAGxE;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAKxE;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAG1E;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAK1E;AAED,8CAA8C;AAC9C,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAGxE;AAED,sEAAsE;AACtE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAGxE"}
|
|
1
|
+
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/lib/paths.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAGxE;AAED,4EAA4E;AAC5E,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAG3E;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAKxE;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAG1E;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAK1E;AAED,8CAA8C;AAC9C,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAGxE;AAED,sEAAsE;AACtE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAGxE;AAED,oEAAoE;AACpE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAGvE"}
|
package/dist/lib/paths.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Paths for Cursor and Claude (project and global).
|
|
3
|
-
* Subagents =
|
|
3
|
+
* Subagents = ~/.cursor/subagents (global; marketplace plugins install here).
|
|
4
4
|
* Commands = .cursor/commands, .claude/commands.
|
|
5
5
|
*/
|
|
6
6
|
import { join } from 'path';
|
|
@@ -9,6 +9,11 @@ export function getCursorAgentsDir(global, cwd) {
|
|
|
9
9
|
const base = global ? homedir() : (cwd || process.cwd());
|
|
10
10
|
return join(base, '.cursor', 'agents');
|
|
11
11
|
}
|
|
12
|
+
/** Cursor only: path to .cursor/subagents (global = ~/.cursor/subagents) */
|
|
13
|
+
export function getCursorSubagentsDir(global, cwd) {
|
|
14
|
+
const base = global ? homedir() : (cwd || process.cwd());
|
|
15
|
+
return join(base, '.cursor', 'subagents');
|
|
16
|
+
}
|
|
12
17
|
export function getClaudeAgentsDir(global, cwd) {
|
|
13
18
|
const home = homedir();
|
|
14
19
|
const claudeHome = process.env.CLAUDE_CONFIG_DIR?.trim() || join(home, '.claude');
|
|
@@ -35,4 +40,9 @@ export function getCursorSkillsDir(global, cwd) {
|
|
|
35
40
|
const base = global ? homedir() : (cwd || process.cwd());
|
|
36
41
|
return join(base, '.cursor', 'skills');
|
|
37
42
|
}
|
|
43
|
+
/** Cursor only: path to .cursor/rules (global = ~/.cursor/rules) */
|
|
44
|
+
export function getCursorRulesDir(global, cwd) {
|
|
45
|
+
const base = global ? homedir() : (cwd || process.cwd());
|
|
46
|
+
return join(base, '.cursor', 'rules');
|
|
47
|
+
}
|
|
38
48
|
//# sourceMappingURL=paths.js.map
|
package/dist/lib/paths.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/lib/paths.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAE7B,MAAM,UAAU,kBAAkB,CAAC,MAAe,EAAE,GAAY;IAC9D,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACzD,OAAO,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAAe,EAAE,GAAY;IAC9D,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IACvB,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAClF,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAC1D,OAAO,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,MAAe,EAAE,GAAY;IAChE,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACzD,OAAO,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,MAAe,EAAE,GAAY;IAChE,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IACvB,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAClF,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAC1D,OAAO,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;AAC3C,CAAC;AAED,8CAA8C;AAC9C,MAAM,UAAU,kBAAkB,CAAC,MAAe,EAAE,GAAY;IAC9D,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACzD,OAAO,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;AAC7C,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,kBAAkB,CAAC,MAAe,EAAE,GAAY;IAC9D,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACzD,OAAO,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;AACzC,CAAC"}
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/lib/paths.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"source-dir.d.ts","sourceRoot":"","sources":["../../src/lib/source-dir.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"source-dir.d.ts","sourceRoot":"","sources":["../../src/lib/source-dir.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAkEH,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,mEAAmE;IACnE,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/B;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAkD1F"}
|
package/dist/lib/source-dir.js
CHANGED
|
@@ -16,9 +16,26 @@ function isLocalPath(input) {
|
|
|
16
16
|
t.startsWith('/') ||
|
|
17
17
|
/^[a-zA-Z]:[/\\]/.test(t));
|
|
18
18
|
}
|
|
19
|
+
/**
|
|
20
|
+
* SSH-style URL without git@ prefix: host:path (e.g. git.naspersclassifieds.com:olxeu/ecosystem/tooling/ai-engineering-kit.git).
|
|
21
|
+
* Single colon, host-like left part, path-like right part.
|
|
22
|
+
*/
|
|
23
|
+
function isSshStyleUrl(input) {
|
|
24
|
+
const colonIdx = input.indexOf(':');
|
|
25
|
+
if (colonIdx <= 0 || colonIdx !== input.lastIndexOf(':'))
|
|
26
|
+
return false;
|
|
27
|
+
const host = input.slice(0, colonIdx);
|
|
28
|
+
const path = input.slice(colonIdx + 1);
|
|
29
|
+
const hostLooksValid = host.includes('.') || host === 'github' || host === 'gitlab';
|
|
30
|
+
const pathLooksValid = path.length > 0 && (path.includes('/') || path.endsWith('.git'));
|
|
31
|
+
return hostLooksValid && pathLooksValid;
|
|
32
|
+
}
|
|
19
33
|
function isGitUrl(input) {
|
|
20
34
|
const t = input.trim();
|
|
21
|
-
return t.startsWith('http://') ||
|
|
35
|
+
return (t.startsWith('http://') ||
|
|
36
|
+
t.startsWith('https://') ||
|
|
37
|
+
t.startsWith('git@') ||
|
|
38
|
+
isSshStyleUrl(t));
|
|
22
39
|
}
|
|
23
40
|
/**
|
|
24
41
|
* Convert shorthand to HTTPS clone URL.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"source-dir.js","sourceRoot":"","sources":["../../src/lib/source-dir.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC;AAC5B,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE1C,SAAS,WAAW,CAAC,KAAa;IAChC,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IACvB,OAAO,CACL,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC;QAClB,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC;QACnB,CAAC,KAAK,GAAG;QACT,CAAC,KAAK,IAAI;QACV,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC;QACjB,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAC1B,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,KAAa;IAC7B,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IACvB,OAAO,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"source-dir.js","sourceRoot":"","sources":["../../src/lib/source-dir.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/types.d.ts
CHANGED
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Shared types for agents-pkg (marketplace-only).
|
|
3
3
|
*/
|
|
4
|
-
/** Tracked marketplace: name, source (user-passed), version from manifest, installed plugin names. */
|
|
4
|
+
/** Tracked marketplace: name, source (user-passed), version from manifest, installed plugin names, global vs project symlinks. */
|
|
5
5
|
export interface MarketplaceEntry {
|
|
6
6
|
name: string;
|
|
7
7
|
source: string;
|
|
8
8
|
version: string;
|
|
9
9
|
pluginNames: string[];
|
|
10
10
|
updatedAt: string;
|
|
11
|
+
/** If true (default), symlinks go to ~/.cursor/*; if false, to project .cursor/*. */
|
|
12
|
+
global?: boolean;
|
|
11
13
|
}
|
|
12
14
|
export interface LockFile {
|
|
13
15
|
version: number;
|
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,
|
|
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,qFAAqF;IACrF,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,gEAAgE;IAChE,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;CAChD"}
|
package/dist/list.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../src/list.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,wBAAsB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAe7C"}
|
package/dist/list.js
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* list — List installed marketplaces and their plugins.
|
|
3
|
+
*/
|
|
4
|
+
import { readLock } from './lib/lock.js';
|
|
5
|
+
export async function runList() {
|
|
6
|
+
const lock = await readLock();
|
|
7
|
+
const entries = Object.entries(lock.marketplaces ?? {});
|
|
8
|
+
if (entries.length === 0) {
|
|
9
|
+
console.log('No marketplaces installed.');
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
12
|
+
for (const [name, entry] of entries) {
|
|
13
|
+
if (!entry)
|
|
14
|
+
continue;
|
|
15
|
+
const scope = entry.global !== false ? 'global' : 'project';
|
|
16
|
+
console.log(`${name} (v${entry.version}) [${scope}]`);
|
|
17
|
+
console.log(` source: ${entry.source}`);
|
|
18
|
+
console.log(` plugins: ${entry.pluginNames?.length ? entry.pluginNames.join(', ') : '(none)'}`);
|
|
19
|
+
console.log('');
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=list.js.map
|
package/dist/list.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../src/list.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,MAAM,CAAC,KAAK,UAAU,OAAO;IAC3B,MAAM,IAAI,GAAG,MAAM,QAAQ,EAAE,CAAC;IAC9B,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;IACxD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;QAC1C,OAAO;IACT,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,OAAO,EAAE,CAAC;QACpC,IAAI,CAAC,KAAK;YAAE,SAAS;QACrB,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;QAC5D,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,MAAM,KAAK,CAAC,OAAO,MAAM,KAAK,GAAG,CAAC,CAAC;QACtD,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QAC1C,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;QACjG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;AACH,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;AAUH,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../src/update.ts"],"names":[],"mappings":"AAAA;;GAEG;AAUH,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAoD/C"}
|
package/dist/update.js
CHANGED
|
@@ -5,7 +5,7 @@ import { rm } from 'fs/promises';
|
|
|
5
5
|
import { resolveSourceToDir } from './lib/source-dir.js';
|
|
6
6
|
import { readMarketplaceManifest, getMarketplaceStorePath } from './lib/marketplace.js';
|
|
7
7
|
import { removeSymlinksInDirPointingUnder } from './lib/symlink.js';
|
|
8
|
-
import {
|
|
8
|
+
import { getCursorSubagentsDir, getCursorCommandsDir, getCursorSkillsDir, getCursorRulesDir } from './lib/paths.js';
|
|
9
9
|
import { installMarketplaceFromDir } from './add-plugin.js';
|
|
10
10
|
import { readLock, writeLock } from './lib/lock.js';
|
|
11
11
|
export async function runUpdate() {
|
|
@@ -14,13 +14,15 @@ export async function runUpdate() {
|
|
|
14
14
|
if (entries.length === 0)
|
|
15
15
|
return;
|
|
16
16
|
const cwd = process.cwd();
|
|
17
|
-
const cursorAgentsDir = getCursorAgentsDir(false, cwd);
|
|
18
|
-
const cursorCommandsDir = getCursorCommandsDir(false, cwd);
|
|
19
|
-
const cursorSkillsDir = getCursorSkillsDir(true, cwd);
|
|
20
17
|
let updated = 0;
|
|
21
18
|
for (const [name, entry] of entries) {
|
|
22
19
|
if (!entry || typeof entry.source !== 'string')
|
|
23
20
|
continue;
|
|
21
|
+
const global = entry.global !== false;
|
|
22
|
+
const cursorSubagentsDir = getCursorSubagentsDir(global, cwd);
|
|
23
|
+
const cursorCommandsDir = getCursorCommandsDir(global, cwd);
|
|
24
|
+
const cursorSkillsDir = getCursorSkillsDir(global, cwd);
|
|
25
|
+
const cursorRulesDir = getCursorRulesDir(global, cwd);
|
|
24
26
|
const { path: sourceDir, cleanup } = await resolveSourceToDir(entry.source).catch(() => ({
|
|
25
27
|
path: '',
|
|
26
28
|
cleanup: undefined,
|
|
@@ -34,11 +36,12 @@ export async function runUpdate() {
|
|
|
34
36
|
continue;
|
|
35
37
|
console.log(`Updating marketplace ${name} (${entry.version} -> ${newVersion})...`);
|
|
36
38
|
const storeRoot = getMarketplaceStorePath(name);
|
|
37
|
-
await removeSymlinksInDirPointingUnder(
|
|
39
|
+
await removeSymlinksInDirPointingUnder(cursorSubagentsDir, storeRoot);
|
|
38
40
|
await removeSymlinksInDirPointingUnder(cursorCommandsDir, storeRoot);
|
|
39
41
|
await removeSymlinksInDirPointingUnder(cursorSkillsDir, storeRoot);
|
|
42
|
+
await removeSymlinksInDirPointingUnder(cursorRulesDir, storeRoot);
|
|
40
43
|
await rm(storeRoot, { recursive: true, force: true }).catch(() => { });
|
|
41
|
-
const installed = await installMarketplaceFromDir(manifest, sourceDir);
|
|
44
|
+
const installed = await installMarketplaceFromDir(manifest, sourceDir, { global });
|
|
42
45
|
entry.version = newVersion;
|
|
43
46
|
entry.pluginNames = installed;
|
|
44
47
|
entry.updatedAt = new Date().toISOString();
|
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,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AACxF,OAAO,EAAE,gCAAgC,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,
|
|
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,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AACxF,OAAO,EAAE,gCAAgC,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACpH,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAEpD,MAAM,CAAC,KAAK,UAAU,SAAS;IAC7B,MAAM,IAAI,GAAG,MAAM,QAAQ,EAAE,CAAC;IAC9B,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;IACxD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAEjC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAE1B,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,OAAO,EAAE,CAAC;QACpC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ;YAAE,SAAS;QAEzD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC;QACtC,MAAM,kBAAkB,GAAG,qBAAqB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC9D,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC5D,MAAM,eAAe,GAAG,kBAAkB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACxD,MAAM,cAAc,GAAG,iBAAiB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAEtD,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,MAAM,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;YACvF,IAAI,EAAE,EAAE;YACR,OAAO,EAAE,SAA8C;SACxD,CAAC,CAAC,CAAC;QACJ,IAAI,CAAC,SAAS;YAAE,SAAS;QAEzB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,uBAAuB,CAAC,SAAS,CAAC,CAAC;YAC1D,MAAM,UAAU,GAAG,QAAQ,CAAC,QAAQ,EAAE,OAAO,IAAI,OAAO,CAAC;YACzD,IAAI,UAAU,KAAK,KAAK,CAAC,OAAO;gBAAE,SAAS;YAE3C,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,KAAK,KAAK,CAAC,OAAO,OAAO,UAAU,MAAM,CAAC,CAAC;YACnF,MAAM,SAAS,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC;YAChD,MAAM,gCAAgC,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC;YACtE,MAAM,gCAAgC,CAAC,iBAAiB,EAAE,SAAS,CAAC,CAAC;YACrE,MAAM,gCAAgC,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;YACnE,MAAM,gCAAgC,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;YAClE,MAAM,EAAE,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YAEtE,MAAM,SAAS,GAAG,MAAM,yBAAyB,CAAC,QAAQ,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;YACnF,KAAK,CAAC,OAAO,GAAG,UAAU,CAAC;YAC3B,KAAK,CAAC,WAAW,GAAG,SAAS,CAAC;YAC9B,KAAK,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YAC3C,OAAO,EAAE,CAAC;QACZ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,oBAAoB,IAAI,GAAG,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAC/F,CAAC;gBAAS,CAAC;YACT,IAAI,OAAO;gBAAE,MAAM,OAAO,EAAE,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;QAChB,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,WAAW,OAAO,kBAAkB,CAAC,CAAC;IACpD,CAAC;AACH,CAAC"}
|