@studio-foundation/cli 0.11.1 → 0.12.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 +33 -30
- package/dist/commands/init.d.ts +7 -3
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +17 -21
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/integrations.d.ts.map +1 -1
- package/dist/commands/integrations.js +20 -28
- package/dist/commands/integrations.js.map +1 -1
- package/dist/commands/marketplace.d.ts +17 -0
- package/dist/commands/marketplace.d.ts.map +1 -0
- package/dist/commands/marketplace.js +132 -0
- package/dist/commands/marketplace.js.map +1 -0
- package/dist/commands/plugin.d.ts +8 -0
- package/dist/commands/plugin.d.ts.map +1 -0
- package/dist/commands/plugin.js +42 -0
- package/dist/commands/plugin.js.map +1 -0
- package/dist/commands/registry/audit.d.ts +2 -1
- package/dist/commands/registry/audit.d.ts.map +1 -1
- package/dist/commands/registry/audit.js +32 -22
- package/dist/commands/registry/audit.js.map +1 -1
- package/dist/commands/registry/index.d.ts.map +1 -1
- package/dist/commands/registry/index.js +4 -3
- package/dist/commands/registry/index.js.map +1 -1
- package/dist/commands/registry/install.d.ts +4 -2
- package/dist/commands/registry/install.d.ts.map +1 -1
- package/dist/commands/registry/install.js +132 -73
- package/dist/commands/registry/install.js.map +1 -1
- package/dist/commands/registry/remove.d.ts.map +1 -1
- package/dist/commands/registry/remove.js +11 -25
- package/dist/commands/registry/remove.js.map +1 -1
- package/dist/commands/registry/search.d.ts +1 -1
- package/dist/commands/registry/search.d.ts.map +1 -1
- package/dist/commands/registry/search.js +33 -17
- package/dist/commands/registry/search.js.map +1 -1
- package/dist/commands/registry/sync.d.ts +1 -0
- package/dist/commands/registry/sync.d.ts.map +1 -1
- package/dist/commands/registry/sync.js +46 -12
- package/dist/commands/registry/sync.js.map +1 -1
- package/dist/commands/registry/update.d.ts +14 -2
- package/dist/commands/registry/update.d.ts.map +1 -1
- package/dist/commands/registry/update.js +70 -18
- package/dist/commands/registry/update.js.map +1 -1
- package/dist/commands/templates.d.ts.map +1 -1
- package/dist/commands/templates.js +13 -16
- package/dist/commands/templates.js.map +1 -1
- package/dist/commands/tools.d.ts.map +1 -1
- package/dist/commands/tools.js +6 -2
- package/dist/commands/tools.js.map +1 -1
- package/dist/commands/upgrade.d.ts +3 -0
- package/dist/commands/upgrade.d.ts.map +1 -0
- package/dist/commands/upgrade.js +79 -0
- package/dist/commands/upgrade.js.map +1 -0
- package/dist/generated/bundled-assets.d.ts +1 -1
- package/dist/generated/bundled-assets.d.ts.map +1 -1
- package/dist/generated/bundled-assets.js +77 -2
- package/dist/generated/bundled-assets.js.map +1 -1
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -1
- package/dist/output/map-progress.d.ts +11 -1
- package/dist/output/map-progress.d.ts.map +1 -1
- package/dist/output/map-progress.js +43 -4
- package/dist/output/map-progress.js.map +1 -1
- package/dist/output/progress.d.ts.map +1 -1
- package/dist/output/progress.js +1 -1
- package/dist/output/progress.js.map +1 -1
- package/dist/registry/cache.d.ts +1 -1
- package/dist/registry/cache.d.ts.map +1 -1
- package/dist/registry/cache.js +3 -2
- package/dist/registry/cache.js.map +1 -1
- package/dist/registry/client.d.ts +20 -11
- package/dist/registry/client.d.ts.map +1 -1
- package/dist/registry/client.js +145 -45
- package/dist/registry/client.js.map +1 -1
- package/dist/registry/constraints.d.ts +17 -0
- package/dist/registry/constraints.d.ts.map +1 -0
- package/dist/registry/constraints.js +30 -0
- package/dist/registry/constraints.js.map +1 -0
- package/dist/registry/dependency-spec.d.ts +15 -0
- package/dist/registry/dependency-spec.d.ts.map +1 -0
- package/dist/registry/dependency-spec.js +17 -0
- package/dist/registry/dependency-spec.js.map +1 -0
- package/dist/registry/git-source.d.ts +16 -0
- package/dist/registry/git-source.d.ts.map +1 -0
- package/dist/registry/git-source.js +92 -0
- package/dist/registry/git-source.js.map +1 -0
- package/dist/registry/legacy-paths.d.ts +3 -0
- package/dist/registry/legacy-paths.d.ts.map +1 -0
- package/dist/registry/legacy-paths.js +31 -0
- package/dist/registry/legacy-paths.js.map +1 -0
- package/dist/registry/lockfile.d.ts +5 -1
- package/dist/registry/lockfile.d.ts.map +1 -1
- package/dist/registry/lockfile.js +28 -7
- package/dist/registry/lockfile.js.map +1 -1
- package/dist/registry/marketplaces.d.ts +23 -0
- package/dist/registry/marketplaces.d.ts.map +1 -0
- package/dist/registry/marketplaces.js +83 -0
- package/dist/registry/marketplaces.js.map +1 -0
- package/dist/registry/registry-index.d.ts +36 -0
- package/dist/registry/registry-index.d.ts.map +1 -0
- package/dist/registry/registry-index.js +57 -0
- package/dist/registry/registry-index.js.map +1 -0
- package/dist/registry/resolver.d.ts +15 -3
- package/dist/registry/resolver.d.ts.map +1 -1
- package/dist/registry/resolver.js +82 -72
- package/dist/registry/resolver.js.map +1 -1
- package/dist/registry/seed.d.ts +10 -0
- package/dist/registry/seed.d.ts.map +1 -0
- package/dist/registry/seed.js +25 -0
- package/dist/registry/seed.js.map +1 -0
- package/dist/registry/types.d.ts +66 -7
- package/dist/registry/types.d.ts.map +1 -1
- package/dist/registry/types.js +28 -8
- package/dist/registry/types.js.map +1 -1
- package/dist/registry/verify.d.ts +15 -0
- package/dist/registry/verify.d.ts.map +1 -0
- package/dist/registry/verify.js +86 -0
- package/dist/registry/verify.js.map +1 -0
- package/dist/upgrade.d.ts +28 -0
- package/dist/upgrade.d.ts.map +1 -0
- package/dist/upgrade.js +64 -0
- package/dist/upgrade.js.map +1 -0
- package/dist/version-guard.d.ts +3 -1
- package/dist/version-guard.d.ts.map +1 -1
- package/dist/version-guard.js +8 -2
- package/dist/version-guard.js.map +1 -1
- package/package.json +12 -12
|
@@ -1,81 +1,130 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
|
-
import { resolve } from 'node:path';
|
|
3
|
-
import { mkdir,
|
|
2
|
+
import { resolve, dirname, basename } from 'node:path';
|
|
3
|
+
import { mkdir, writeFile } from 'node:fs/promises';
|
|
4
|
+
import { createHash } from 'node:crypto';
|
|
4
5
|
import { RegistryClient } from '../../registry/client.js';
|
|
5
6
|
import { RegistryLockfile } from '../../registry/lockfile.js';
|
|
6
|
-
import { RegistryCache } from '../../registry/cache.js';
|
|
7
7
|
import { syncRegistry } from './sync.js';
|
|
8
8
|
import { findStudioDir } from '../../studio-dir.js';
|
|
9
9
|
import { resolveDependencies } from '../../registry/resolver.js';
|
|
10
|
+
import { findMarketplace } from '../../registry/marketplaces.js';
|
|
11
|
+
import { entryFor, loadMergedIndex, parsePackageRef, } from '../../registry/registry-index.js';
|
|
12
|
+
import { assertPayload } from '../../registry/verify.js';
|
|
10
13
|
import { checkBinaries, formatBinaryPreflightError } from '../../binary-preflight.js';
|
|
11
14
|
import { checkStudioVersion } from '../../version-guard.js';
|
|
12
|
-
import {
|
|
13
|
-
const SINGLE_FILE_EXTENSIONS = {
|
|
14
|
-
tool: '.tool.yaml',
|
|
15
|
-
pipeline: '.pipeline.yaml',
|
|
16
|
-
integration: '.integration.yaml',
|
|
17
|
-
agent: '.agent.yaml',
|
|
18
|
-
skill: '.skill.md',
|
|
19
|
-
};
|
|
15
|
+
import { CONTENT_DIRS, TEMPLATE_DIR, contentKindOf } from '../../registry/types.js';
|
|
20
16
|
const SHELL_EXEC_PATTERN = /execute:\s*\n\s+type:\s*shell/;
|
|
21
|
-
|
|
22
|
-
|
|
17
|
+
/** Shipped alongside the payload, installed nowhere: not content, not a mistake. */
|
|
18
|
+
const NON_PAYLOAD = /^(metadata\.json|LICEN[SC]E(\.[\w-]+)?|README(\.[\w-]+)?|CHANGELOG(\.[\w-]+)?)$/i;
|
|
19
|
+
/**
|
|
20
|
+
* Write a plugin's payload into `.studio/`, one destination per content kind —
|
|
21
|
+
* `coder.agent.yaml` lands in `agents/`, `git.tool.yaml` in `tools/`. Filenames
|
|
22
|
+
* are kept as published: the agent and skill loaders resolve by filename.
|
|
23
|
+
* Returns the written paths (relative to `.studio/`) and a hash over them.
|
|
24
|
+
*/
|
|
25
|
+
async function writePluginPayload(files, studioDir, name) {
|
|
26
|
+
const hash = createHash('sha256');
|
|
27
|
+
const written = [];
|
|
28
|
+
for (const file of files) {
|
|
29
|
+
const filename = basename(file.path);
|
|
30
|
+
if (NON_PAYLOAD.test(filename))
|
|
31
|
+
continue;
|
|
32
|
+
const kind = contentKindOf(filename);
|
|
33
|
+
if (!kind) {
|
|
34
|
+
console.log(chalk.yellow(` ⚠ Skipped ${file.path} — no content kind for this filename`));
|
|
35
|
+
continue;
|
|
36
|
+
}
|
|
37
|
+
const relPath = `${CONTENT_DIRS[kind]}/${filename}`;
|
|
38
|
+
const destPath = resolve(studioDir, relPath);
|
|
39
|
+
await mkdir(dirname(destPath), { recursive: true });
|
|
40
|
+
await writeFile(destPath, file.content);
|
|
41
|
+
written.push(relPath);
|
|
42
|
+
hash.update(relPath + file.content);
|
|
43
|
+
}
|
|
44
|
+
if (written.length === 0) {
|
|
45
|
+
throw new Error(`Plugin '${name}' delivered no installable content.`);
|
|
46
|
+
}
|
|
47
|
+
return { files: written, sha256: hash.digest('hex') };
|
|
48
|
+
}
|
|
49
|
+
/** True if any tool the plugin ships runs shell commands. */
|
|
50
|
+
function shellsOut(files) {
|
|
51
|
+
return files.some(f => f.path.endsWith('.tool.yaml') && SHELL_EXEC_PATTERN.test(f.content));
|
|
52
|
+
}
|
|
53
|
+
async function installTemplate(client, source, studioDir, name) {
|
|
54
|
+
const relPath = `${TEMPLATE_DIR}/${name}`;
|
|
55
|
+
const destDir = resolve(studioDir, relPath);
|
|
56
|
+
await mkdir(destDir, { recursive: true });
|
|
57
|
+
const sha256 = await client.downloadDirectory(source, 'project', destDir);
|
|
58
|
+
return { files: [relPath], sha256 };
|
|
59
|
+
}
|
|
60
|
+
function clientFor(entry) {
|
|
61
|
+
return findMarketplace(entry.marketplace).then(m => new RegistryClient(m));
|
|
62
|
+
}
|
|
63
|
+
async function doInstallPackage(ref, options, ctx) {
|
|
64
|
+
const { marketplace, name, version: requestedVersion } = parsePackageRef(ref);
|
|
23
65
|
const studioDir = options.studioDir;
|
|
24
66
|
const depth = options._depth ?? 0;
|
|
25
67
|
const indent = ' '.repeat(depth);
|
|
26
68
|
// Check already installed
|
|
27
|
-
const existing = await lockfile.get(name);
|
|
69
|
+
const existing = await ctx.lockfile.get(name);
|
|
28
70
|
if (existing && !options.force) {
|
|
29
71
|
if (options.requiredBy) {
|
|
30
|
-
await lockfile.addRequiredBy(name, options.requiredBy);
|
|
72
|
+
await ctx.lockfile.addRequiredBy(name, options.requiredBy, options.requiredRange);
|
|
31
73
|
}
|
|
32
74
|
if (depth === 0) {
|
|
33
75
|
console.log(chalk.yellow(`${name} v${existing.version} is already installed. Use --force to reinstall.`));
|
|
34
76
|
}
|
|
35
77
|
return;
|
|
36
78
|
}
|
|
37
|
-
const indexEntry =
|
|
79
|
+
const indexEntry = entryFor(ctx.packages, name, requestedVersion, marketplace);
|
|
38
80
|
if (!indexEntry)
|
|
39
81
|
throw new Error(`Package '${name}' not found in registry`);
|
|
82
|
+
if (!indexEntry.source) {
|
|
83
|
+
throw new Error(`Package '${name}' has no source in the registry index. Run 'studio registry sync --force'.`);
|
|
84
|
+
}
|
|
40
85
|
const type = indexEntry.type;
|
|
86
|
+
const client = await clientFor(indexEntry);
|
|
87
|
+
const metaKey = `${indexEntry.marketplace}:${name}`;
|
|
41
88
|
// Use cached metadata if available (populated by resolver's fetcher)
|
|
42
|
-
let meta = metaCache.get(
|
|
89
|
+
let meta = ctx.metaCache.get(metaKey);
|
|
43
90
|
if (!meta) {
|
|
44
|
-
meta = await client.fetchMetadata(
|
|
45
|
-
metaCache.set(
|
|
91
|
+
meta = await client.fetchMetadata(indexEntry.source, name);
|
|
92
|
+
ctx.metaCache.set(metaKey, meta);
|
|
46
93
|
}
|
|
47
94
|
const version = requestedVersion ?? meta.version;
|
|
48
95
|
const versionError = checkStudioVersion(meta.studio_version, `Package '${name}'`);
|
|
49
96
|
if (versionError)
|
|
50
97
|
throw new Error(versionError);
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
98
|
+
const origin = indexEntry.source.type === 'git' ? ` from ${indexEntry.source.url}` : '';
|
|
99
|
+
console.log(`${indent}Installing ${depth > 0 ? 'dependency: ' : ''}${chalk.bold(name)} v${version} [${type}]${origin}...`);
|
|
100
|
+
let installed;
|
|
101
|
+
if (type === 'template') {
|
|
102
|
+
// A payload hosted outside the marketplace repo was never reviewed as a diff;
|
|
103
|
+
// its entry is all users have, so the fetched files must match what it claims.
|
|
104
|
+
if (indexEntry.source.type === 'git') {
|
|
105
|
+
assertPayload(await client.fetchDirectoryFiles(indexEntry.source), indexEntry);
|
|
106
|
+
}
|
|
107
|
+
installed = await installTemplate(client, indexEntry.source, studioDir, name);
|
|
59
108
|
}
|
|
60
109
|
else {
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
const
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
110
|
+
// Anything that isn't a template is a plugin — including a pre-migration
|
|
111
|
+
// single-file package, whose directory holds exactly one payload file.
|
|
112
|
+
const payload = await client.fetchDirectoryFiles(indexEntry.source);
|
|
113
|
+
if (indexEntry.source.type === 'git')
|
|
114
|
+
assertPayload(payload, indexEntry);
|
|
115
|
+
// Ask before writing, not after: nothing to clean up when the answer is no.
|
|
116
|
+
if (shellsOut(payload) && options.interactive !== false) {
|
|
67
117
|
const { confirm } = await import('@inquirer/prompts');
|
|
68
118
|
const proceed = await confirm({
|
|
69
|
-
message: chalk.yellow(`⚠
|
|
119
|
+
message: chalk.yellow(`⚠ '${name}' ships a tool that executes shell commands. Install anyway?`),
|
|
70
120
|
default: false,
|
|
71
121
|
});
|
|
72
122
|
if (!proceed) {
|
|
73
|
-
const { unlink } = await import('node:fs/promises');
|
|
74
|
-
await unlink(result.destPath);
|
|
75
123
|
console.log('Installation cancelled.');
|
|
76
124
|
return;
|
|
77
125
|
}
|
|
78
126
|
}
|
|
127
|
+
installed = await writePluginPayload(payload, studioDir, name);
|
|
79
128
|
}
|
|
80
129
|
if (meta.requires_binaries?.length) {
|
|
81
130
|
// Warning, not a block: a package may legitimately be installed before the
|
|
@@ -85,69 +134,79 @@ async function doInstallPackage(nameAtVersion, options, client, lockfile, index,
|
|
|
85
134
|
if (error)
|
|
86
135
|
console.log(chalk.yellow(error.replace(/^Error:/, '⚠ Warning:')));
|
|
87
136
|
}
|
|
88
|
-
await lockfile.add(name, {
|
|
137
|
+
await ctx.lockfile.add(name, {
|
|
89
138
|
version,
|
|
90
139
|
type,
|
|
140
|
+
marketplace: indexEntry.marketplace,
|
|
91
141
|
installed_at: new Date().toISOString().split('T')[0],
|
|
92
|
-
sha256,
|
|
142
|
+
sha256: installed.sha256,
|
|
143
|
+
files: installed.files,
|
|
93
144
|
required_by: options.requiredBy ? [options.requiredBy] : [],
|
|
145
|
+
...(options.requiredBy && options.requiredRange
|
|
146
|
+
? { constraints: { [options.requiredBy]: options.requiredRange } }
|
|
147
|
+
: {}),
|
|
94
148
|
});
|
|
95
149
|
console.log(`${indent}${chalk.green(`✓ Installed ${name} v${version}`)}`);
|
|
96
150
|
// Resolve and install dependencies
|
|
97
151
|
if (meta.dependencies) {
|
|
98
|
-
const graph = await resolveDependencies(name, meta,
|
|
99
|
-
const
|
|
100
|
-
const
|
|
101
|
-
const cached = metaCache.get(depName);
|
|
152
|
+
const graph = await resolveDependencies(name, meta, ctx.packages, ctx.lockfileData, async (depName, depMarketplace) => {
|
|
153
|
+
const key = `${depMarketplace}:${depName}`;
|
|
154
|
+
const cached = ctx.metaCache.get(key);
|
|
102
155
|
if (cached)
|
|
103
|
-
return
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
156
|
+
return cached;
|
|
157
|
+
const depEntry = entryFor(ctx.packages, depName, undefined, depMarketplace);
|
|
158
|
+
if (!depEntry?.source)
|
|
159
|
+
throw new Error(`Package '${depName}' not found in registry`);
|
|
160
|
+
const depMeta = await (await clientFor(depEntry)).fetchMetadata(depEntry.source, depName);
|
|
161
|
+
ctx.metaCache.set(key, depMeta);
|
|
162
|
+
return depMeta;
|
|
163
|
+
}, { marketplace: indexEntry.marketplace, registered: ctx.marketplaces });
|
|
109
164
|
for (const dep of graph.required) {
|
|
110
|
-
await doInstallPackage(dep.name
|
|
165
|
+
await doInstallPackage(`${dep.marketplace}:${dep.name}@${dep.version}`, {
|
|
166
|
+
studioDir,
|
|
167
|
+
requiredBy: name,
|
|
168
|
+
requiredRange: dep.constraints.find(c => c.requiredBy === name)?.range,
|
|
169
|
+
interactive: options.interactive,
|
|
170
|
+
_depth: depth + 1,
|
|
171
|
+
}, ctx);
|
|
111
172
|
}
|
|
112
|
-
if (depth === 0 && graph.recommended.length > 0) {
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
const
|
|
116
|
-
|
|
117
|
-
install = await confirm({
|
|
118
|
-
message: `Install recommended packages? [${names}]`,
|
|
173
|
+
if (depth === 0 && graph.recommended.length > 0 && options.interactive !== false) {
|
|
174
|
+
const { confirm } = await import('@inquirer/prompts');
|
|
175
|
+
for (const dep of graph.recommended) {
|
|
176
|
+
const wanted = await confirm({
|
|
177
|
+
message: `Install recommended package ${dep.name} v${dep.version}?`,
|
|
119
178
|
default: true,
|
|
120
179
|
});
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
await doInstallPackage(dep.name, { studioDir, interactive: options.interactive, _depth: depth + 1 }, client, lockfile, index, lockfileData, metaCache);
|
|
125
|
-
}
|
|
180
|
+
if (!wanted)
|
|
181
|
+
continue;
|
|
182
|
+
await doInstallPackage(`${dep.marketplace}:${dep.name}@${dep.version}`, { studioDir, interactive: options.interactive, _depth: depth + 1 }, ctx);
|
|
126
183
|
}
|
|
127
184
|
}
|
|
128
185
|
}
|
|
129
186
|
}
|
|
130
|
-
export async function installPackage(
|
|
131
|
-
const
|
|
187
|
+
export async function installPackage(ref, options = {}) {
|
|
188
|
+
const { marketplace, name } = parsePackageRef(ref);
|
|
132
189
|
const studioDir = options.studioDir ??
|
|
133
190
|
(await findStudioDir(options.cwd ?? process.cwd()) ?? resolve(process.cwd(), '.studio'));
|
|
134
191
|
const resolvedOptions = { ...options, studioDir };
|
|
135
192
|
const lockfile = new RegistryLockfile(studioDir);
|
|
136
|
-
// Sync cache and resolve package type
|
|
137
193
|
await syncRegistry({ force: false, silent: true });
|
|
138
|
-
|
|
139
|
-
const
|
|
140
|
-
if (!
|
|
194
|
+
// `seed: true` — an install with nothing cached is offline, not empty.
|
|
195
|
+
const { packages, marketplaces } = await loadMergedIndex({ seed: true });
|
|
196
|
+
if (!entryFor(packages, name, undefined, marketplace)) {
|
|
141
197
|
throw new Error(`Package '${name}' not found in registry`);
|
|
142
198
|
}
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
199
|
+
await doInstallPackage(ref, resolvedOptions, {
|
|
200
|
+
lockfile,
|
|
201
|
+
packages,
|
|
202
|
+
marketplaces: marketplaces.map(m => m.name),
|
|
203
|
+
lockfileData: await lockfile.read(),
|
|
204
|
+
metaCache: options._metaCache ?? new Map(),
|
|
205
|
+
});
|
|
147
206
|
}
|
|
148
|
-
export async function installCommand(
|
|
207
|
+
export async function installCommand(ref, options = {}) {
|
|
149
208
|
try {
|
|
150
|
-
await installPackage(
|
|
209
|
+
await installPackage(ref, options);
|
|
151
210
|
}
|
|
152
211
|
catch (err) {
|
|
153
212
|
console.error(chalk.red(`Install failed: ${err instanceof Error ? err.message : err}`));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/commands/registry/install.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/commands/registry/install.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,cAAc,EAAoB,MAAM,0BAA0B,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EACL,QAAQ,EACR,eAAe,EACf,eAAe,GAEhB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AACtF,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAEpF,MAAM,kBAAkB,GAAG,+BAA+B,CAAC;AAE3D,oFAAoF;AACpF,MAAM,WAAW,GAAG,kFAAkF,CAAC;AAEvG;;;;;GAKG;AACH,KAAK,UAAU,kBAAkB,CAC/B,KAAoB,EACpB,SAAiB,EACjB,IAAY;IAEZ,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;IAClC,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC;YAAE,SAAS;QACzC,MAAM,IAAI,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;QACrC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,eAAe,IAAI,CAAC,IAAI,sCAAsC,CAAC,CAAC,CAAC;YAC1F,SAAS;QACX,CAAC;QACD,MAAM,OAAO,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,QAAQ,EAAE,CAAC;QACpD,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC7C,MAAM,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACpD,MAAM,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACxC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACtB,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,WAAW,IAAI,qCAAqC,CAAC,CAAC;IACxE,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;AACxD,CAAC;AAED,6DAA6D;AAC7D,SAAS,SAAS,CAAC,KAAoB;IACrC,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAC9F,CAAC;AAED,KAAK,UAAU,eAAe,CAC5B,MAAsB,EACtB,MAAqB,EACrB,SAAiB,EACjB,IAAY;IAEZ,MAAM,OAAO,GAAG,GAAG,YAAY,IAAI,IAAI,EAAE,CAAC;IAC1C,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC5C,MAAM,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAC1E,OAAO,EAAE,KAAK,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;AACtC,CAAC;AAuBD,SAAS,SAAS,CAAC,KAAqB;IACtC,OAAO,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7E,CAAC;AAED,KAAK,UAAU,gBAAgB,CAC7B,GAAW,EACX,OAAuB,EACvB,GAAmB;IAEnB,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,gBAAgB,EAAE,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IAC9E,MAAM,SAAS,GAAG,OAAO,CAAC,SAAU,CAAC;IACrC,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;IAClC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAElC,0BAA0B;IAC1B,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9C,IAAI,QAAQ,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAC/B,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YACvB,MAAM,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;QACpF,CAAC;QACD,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,KAAK,QAAQ,CAAC,OAAO,kDAAkD,CAAC,CAAC,CAAC;QAC5G,CAAC;QACD,OAAO;IACT,CAAC;IAED,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,gBAAgB,EAAE,WAAW,CAAC,CAAC;IAC/E,IAAI,CAAC,UAAU;QAAE,MAAM,IAAI,KAAK,CAAC,YAAY,IAAI,yBAAyB,CAAC,CAAC;IAC5E,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CACb,YAAY,IAAI,4EAA4E,CAC7F,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC;IAC7B,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,UAAU,CAAC,CAAC;IAC3C,MAAM,OAAO,GAAG,GAAG,UAAU,CAAC,WAAW,IAAI,IAAI,EAAE,CAAC;IAEpD,qEAAqE;IACrE,IAAI,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACtC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,IAAI,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC3D,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACnC,CAAC;IACD,MAAM,OAAO,GAAG,gBAAgB,IAAI,IAAI,CAAC,OAAO,CAAC;IAEjD,MAAM,YAAY,GAAG,kBAAkB,CAAC,IAAI,CAAC,cAAc,EAAE,YAAY,IAAI,GAAG,CAAC,CAAC;IAClF,IAAI,YAAY;QAAE,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;IAEhD,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,UAAU,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACxF,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,cAAc,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,OAAO,KAAK,IAAI,IAAI,MAAM,KAAK,CAAC,CAAC;IAE3H,IAAI,SAA8C,CAAC;IACnD,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;QACxB,8EAA8E;QAC9E,+EAA+E;QAC/E,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YACrC,aAAa,CAAC,MAAM,MAAM,CAAC,mBAAmB,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC,CAAC;QACjF,CAAC;QACD,SAAS,GAAG,MAAM,eAAe,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;IAChF,CAAC;SAAM,CAAC;QACN,yEAAyE;QACzE,uEAAuE;QACvE,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACpE,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,KAAK,KAAK;YAAE,aAAa,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAEzE,4EAA4E;QAC5E,IAAI,SAAS,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,WAAW,KAAK,KAAK,EAAE,CAAC;YACxD,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;YACtD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC;gBAC5B,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,IAAI,8DAA8D,CAAC;gBAC/F,OAAO,EAAE,KAAK;aACf,CAAC,CAAC;YACH,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;gBACvC,OAAO;YACT,CAAC;QACH,CAAC;QAED,SAAS,GAAG,MAAM,kBAAkB,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;IACjE,CAAC;IAED,IAAI,IAAI,CAAC,iBAAiB,EAAE,MAAM,EAAE,CAAC;QACnC,2EAA2E;QAC3E,wEAAwE;QACxE,MAAM,QAAQ,GAAG,aAAa,CAC5B,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,IAAI,GAAG,EAAE,CAAC,CAAC,CACpF,CAAC;QACF,MAAM,KAAK,GAAG,0BAA0B,CAAC,QAAQ,CAAC,CAAC;QACnD,IAAI,KAAK;YAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IAC/E,CAAC;IAED,MAAM,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE;QAC3B,OAAO;QACP,IAAI;QACJ,WAAW,EAAE,UAAU,CAAC,WAAW;QACnC,YAAY,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACpD,MAAM,EAAE,SAAS,CAAC,MAAM;QACxB,KAAK,EAAE,SAAS,CAAC,KAAK;QACtB,WAAW,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE;QAC3D,GAAG,CAAC,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,aAAa;YAC7C,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC,aAAa,EAAE,EAAE;YAClE,CAAC,CAAC,EAAE,CAAC;KACR,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,eAAe,IAAI,KAAK,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IAE1E,mCAAmC;IACnC,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;QACtB,MAAM,KAAK,GAAG,MAAM,mBAAmB,CACrC,IAAI,EACJ,IAAI,EACJ,GAAG,CAAC,QAAQ,EACZ,GAAG,CAAC,YAAY,EAChB,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,EAAE;YAChC,MAAM,GAAG,GAAG,GAAG,cAAc,IAAI,OAAO,EAAE,CAAC;YAC3C,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACtC,IAAI,MAAM;gBAAE,OAAO,MAAM,CAAC;YAC1B,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;YAC5E,IAAI,CAAC,QAAQ,EAAE,MAAM;gBAAE,MAAM,IAAI,KAAK,CAAC,YAAY,OAAO,yBAAyB,CAAC,CAAC;YACrF,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAC1F,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YAChC,OAAO,OAAO,CAAC;QACjB,CAAC,EACD,EAAE,WAAW,EAAE,UAAU,CAAC,WAAW,EAAE,UAAU,EAAE,GAAG,CAAC,YAAY,EAAE,CACtE,CAAC;QAEF,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACjC,MAAM,gBAAgB,CACpB,GAAG,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,OAAO,EAAE,EAC/C;gBACE,SAAS;gBACT,UAAU,EAAE,IAAI;gBAChB,aAAa,EAAE,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC,EAAE,KAAK;gBACtE,WAAW,EAAE,OAAO,CAAC,WAAW;gBAChC,MAAM,EAAE,KAAK,GAAG,CAAC;aAClB,EACD,GAAG,CACJ,CAAC;QACJ,CAAC;QAED,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,WAAW,KAAK,KAAK,EAAE,CAAC;YACjF,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;YACtD,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;gBACpC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC;oBAC3B,OAAO,EAAE,+BAA+B,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,OAAO,GAAG;oBACnE,OAAO,EAAE,IAAI;iBACd,CAAC,CAAC;gBACH,IAAI,CAAC,MAAM;oBAAE,SAAS;gBACtB,MAAM,gBAAgB,CACpB,GAAG,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,OAAO,EAAE,EAC/C,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,GAAG,CAAC,EAAE,EAClE,GAAG,CACJ,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,GAAW,EAAE,UAA0B,EAAE;IAC5E,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IAEnD,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS;QACjC,CAAC,MAAM,aAAa,CAAC,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC;IAC3F,MAAM,eAAe,GAAG,EAAE,GAAG,OAAO,EAAE,SAAS,EAAE,CAAC;IAElD,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC,SAAS,CAAC,CAAC;IAEjD,MAAM,YAAY,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IACnD,uEAAuE;IACvE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,MAAM,eAAe,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IACzE,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,CAAC;QACtD,MAAM,IAAI,KAAK,CAAC,YAAY,IAAI,yBAAyB,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,gBAAgB,CAAC,GAAG,EAAE,eAAe,EAAE;QAC3C,QAAQ;QACR,QAAQ;QACR,YAAY,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAC3C,YAAY,EAAE,MAAM,QAAQ,CAAC,IAAI,EAAE;QACnC,SAAS,EAAE,OAAO,CAAC,UAAU,IAAI,IAAI,GAAG,EAA2B;KACpE,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,GAAW,EAAE,UAA+B,EAAE;IACjF,IAAI,CAAC;QACH,MAAM,cAAc,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IACrC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACxF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remove.d.ts","sourceRoot":"","sources":["../../../src/commands/registry/remove.ts"],"names":[],"mappings":"AASA,UAAU,aAAa;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;
|
|
1
|
+
{"version":3,"file":"remove.d.ts","sourceRoot":"","sources":["../../../src/commands/registry/remove.ts"],"names":[],"mappings":"AASA,UAAU,aAAa;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AASD,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6C5F;AAED,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAO/D"}
|
|
@@ -4,26 +4,12 @@ import { resolve } from 'node:path';
|
|
|
4
4
|
import { existsSync } from 'node:fs';
|
|
5
5
|
import { RegistryLockfile } from '../../registry/lockfile.js';
|
|
6
6
|
import { findStudioDir } from '../../studio-dir.js';
|
|
7
|
-
import {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
skill: '.skill.md',
|
|
14
|
-
};
|
|
15
|
-
async function deletePackageFiles(studioDir, name, type) {
|
|
16
|
-
const destDir = resolve(studioDir, INSTALL_DIRS[type]);
|
|
17
|
-
if (type === 'template' || type === 'plugin') {
|
|
18
|
-
const dirPath = resolve(destDir, name);
|
|
19
|
-
if (existsSync(dirPath))
|
|
20
|
-
await rm(dirPath, { recursive: true });
|
|
21
|
-
}
|
|
22
|
-
else {
|
|
23
|
-
const ext = FILE_EXTENSIONS[type] ?? '.yaml';
|
|
24
|
-
const filePath = resolve(destDir, `${name}${ext}`);
|
|
25
|
-
if (existsSync(filePath))
|
|
26
|
-
await rm(filePath);
|
|
7
|
+
import { legacyInstallPaths } from '../../registry/legacy-paths.js';
|
|
8
|
+
async function deletePackageFiles(studioDir, name, entry) {
|
|
9
|
+
for (const relPath of entry.files ?? legacyInstallPaths(name, entry.type)) {
|
|
10
|
+
const path = resolve(studioDir, relPath);
|
|
11
|
+
if (existsSync(path))
|
|
12
|
+
await rm(path, { recursive: true });
|
|
27
13
|
}
|
|
28
14
|
}
|
|
29
15
|
export async function removePackage(name, options = {}) {
|
|
@@ -33,13 +19,13 @@ export async function removePackage(name, options = {}) {
|
|
|
33
19
|
const entry = await lockfile.get(name);
|
|
34
20
|
if (!entry)
|
|
35
21
|
throw new Error(`'${name}' is not installed`);
|
|
36
|
-
//
|
|
22
|
+
// Warn, don't block: Studio validates tool availability at run time, so a second
|
|
23
|
+
// gate here would be enforcement without authority and would make cleanup hostile.
|
|
37
24
|
const dependents = (entry.required_by ?? []).filter(d => d !== '');
|
|
38
25
|
if (dependents.length > 0) {
|
|
39
|
-
|
|
26
|
+
console.log(chalk.yellow(`⚠ '${name}' is required by: ${dependents.join(', ')} — those references will break.`));
|
|
40
27
|
}
|
|
41
|
-
|
|
42
|
-
await deletePackageFiles(studioDir, name, type);
|
|
28
|
+
await deletePackageFiles(studioDir, name, entry);
|
|
43
29
|
await lockfile.remove(name);
|
|
44
30
|
console.log(chalk.green(`✓ Removed ${name}`));
|
|
45
31
|
// Find orphans: packages whose required_by only contained 'name'
|
|
@@ -60,7 +46,7 @@ export async function removePackage(name, options = {}) {
|
|
|
60
46
|
});
|
|
61
47
|
if (cleanup) {
|
|
62
48
|
for (const orphan of orphans) {
|
|
63
|
-
// Strip the requirer reference so the
|
|
49
|
+
// Strip the requirer reference so the orphan isn't warned about
|
|
64
50
|
await lockfile.removeRequiredBy(orphan, name);
|
|
65
51
|
await removePackage(orphan, { studioDir });
|
|
66
52
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remove.js","sourceRoot":"","sources":["../../../src/commands/registry/remove.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"remove.js","sourceRoot":"","sources":["../../../src/commands/registry/remove.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { PackageEntry, PackageType } from '../../registry/types.js';
|
|
2
|
-
export declare function searchPackages(packages:
|
|
2
|
+
export declare function searchPackages<T extends PackageEntry>(packages: T[], query?: string, type?: PackageType | string): T[];
|
|
3
3
|
interface SearchOptions {
|
|
4
4
|
type?: string;
|
|
5
5
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../src/commands/registry/search.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../src/commands/registry/search.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEzE,wBAAgB,cAAc,CAAC,CAAC,SAAS,YAAY,EACnD,QAAQ,EAAE,CAAC,EAAE,EACb,KAAK,CAAC,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,WAAW,GAAG,MAAM,GAC1B,CAAC,EAAE,CAoBL;AAwBD,UAAU,aAAa;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAsB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAqB7F;AAED,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CA4BnD"}
|
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
|
-
import { RegistryCache } from '../../registry/cache.js';
|
|
3
2
|
import { syncRegistry } from './sync.js';
|
|
3
|
+
import { loadMergedIndex } from '../../registry/registry-index.js';
|
|
4
|
+
import { DEFAULT_MARKETPLACE } from '../../registry/dependency-spec.js';
|
|
4
5
|
export function searchPackages(packages, query, type) {
|
|
5
6
|
let results = packages;
|
|
6
7
|
if (type) {
|
|
7
|
-
|
|
8
|
+
// Matches the packaging type (`plugin`, `template`) or a provided content
|
|
9
|
+
// kind (`tool`, `agent`…), so `--type tool` keeps meaning what it did.
|
|
10
|
+
const kind = type.endsWith('s') ? type : `${type}s`;
|
|
11
|
+
results = results.filter(p => p.type === type || (p.provides?.[kind]?.length ?? 0) > 0);
|
|
8
12
|
}
|
|
9
13
|
if (query) {
|
|
10
14
|
const q = query.toLowerCase();
|
|
@@ -14,8 +18,20 @@ export function searchPackages(packages, query, type) {
|
|
|
14
18
|
}
|
|
15
19
|
return results;
|
|
16
20
|
}
|
|
21
|
+
/** What a package delivers, for display: a template is one thing, a plugin is its `provides`. */
|
|
22
|
+
function providedKinds(pkg) {
|
|
23
|
+
if (pkg.type === 'template')
|
|
24
|
+
return ['templates'];
|
|
25
|
+
const kinds = Object.entries(pkg.provides ?? {})
|
|
26
|
+
.filter(([, names]) => names && names.length > 0)
|
|
27
|
+
.map(([kind]) => kind);
|
|
28
|
+
return kinds.length > 0 ? kinds : ['plugins'];
|
|
29
|
+
}
|
|
17
30
|
function renderPackage(pkg) {
|
|
18
|
-
|
|
31
|
+
// The marketplace is shown only when it is not the default: with one registered
|
|
32
|
+
// marketplace — the common case — it would be noise on every row.
|
|
33
|
+
const origin = pkg.marketplace === DEFAULT_MARKETPLACE ? '' : ` ${chalk.magenta(pkg.marketplace)}`;
|
|
34
|
+
console.log(` ${chalk.bold(pkg.name)} ${chalk.gray(`v${pkg.version}`)} ${chalk.cyan(`[${pkg.type}]`)}${origin}`);
|
|
19
35
|
console.log(` ${pkg.description}`);
|
|
20
36
|
if (pkg.tags.length > 0) {
|
|
21
37
|
console.log(` ${chalk.gray(pkg.tags.join(', '))}`);
|
|
@@ -23,13 +39,12 @@ function renderPackage(pkg) {
|
|
|
23
39
|
}
|
|
24
40
|
export async function searchCommand(query, options = {}) {
|
|
25
41
|
await syncRegistry({ force: false, silent: true });
|
|
26
|
-
const
|
|
27
|
-
|
|
28
|
-
if (!index) {
|
|
42
|
+
const { packages } = await loadMergedIndex();
|
|
43
|
+
if (packages.length === 0) {
|
|
29
44
|
console.error(chalk.red('Failed to load registry. Run: studio registry sync'));
|
|
30
45
|
process.exit(1);
|
|
31
46
|
}
|
|
32
|
-
const results = searchPackages(
|
|
47
|
+
const results = searchPackages(packages, query, options.type);
|
|
33
48
|
if (results.length === 0) {
|
|
34
49
|
console.log(chalk.yellow(`No packages found for "${query}"`));
|
|
35
50
|
return;
|
|
@@ -43,22 +58,23 @@ export async function searchCommand(query, options = {}) {
|
|
|
43
58
|
}
|
|
44
59
|
export async function browseCommand() {
|
|
45
60
|
await syncRegistry({ force: false, silent: true });
|
|
46
|
-
const
|
|
47
|
-
|
|
48
|
-
if (!index) {
|
|
61
|
+
const { packages } = await loadMergedIndex();
|
|
62
|
+
if (packages.length === 0) {
|
|
49
63
|
console.error(chalk.red('Failed to load registry. Run: studio registry sync'));
|
|
50
64
|
process.exit(1);
|
|
51
65
|
}
|
|
52
|
-
const sorted = [...
|
|
66
|
+
const sorted = [...packages].sort((a, b) => b.downloads - a.downloads);
|
|
53
67
|
console.log(chalk.bold(`\nStudio Community Registry — ${sorted.length} packages\n`));
|
|
54
|
-
|
|
68
|
+
// Grouped by what a package delivers, not by its packaging type — with two
|
|
69
|
+
// packaging types, "plugins" and "templates" would be the whole listing.
|
|
70
|
+
const byKind = {};
|
|
55
71
|
for (const pkg of sorted) {
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
72
|
+
for (const kind of providedKinds(pkg)) {
|
|
73
|
+
(byKind[kind] ??= []).push(pkg);
|
|
74
|
+
}
|
|
59
75
|
}
|
|
60
|
-
for (const [
|
|
61
|
-
console.log(chalk.bold.underline(
|
|
76
|
+
for (const [kind, pkgs] of Object.entries(byKind).sort(([a], [b]) => a.localeCompare(b))) {
|
|
77
|
+
console.log(chalk.bold.underline(kind));
|
|
62
78
|
for (const pkg of pkgs) {
|
|
63
79
|
renderPackage(pkg);
|
|
64
80
|
console.log();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../../src/commands/registry/search.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../../src/commands/registry/search.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../../src/commands/registry/sync.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../../src/commands/registry/sync.ts"],"names":[],"mappings":"AAOA,UAAU,WAAW;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAuBD,wBAAsB,YAAY,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAuB3E"}
|