@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.
Files changed (126) hide show
  1. package/README.md +33 -30
  2. package/dist/commands/init.d.ts +7 -3
  3. package/dist/commands/init.d.ts.map +1 -1
  4. package/dist/commands/init.js +17 -21
  5. package/dist/commands/init.js.map +1 -1
  6. package/dist/commands/integrations.d.ts.map +1 -1
  7. package/dist/commands/integrations.js +20 -28
  8. package/dist/commands/integrations.js.map +1 -1
  9. package/dist/commands/marketplace.d.ts +17 -0
  10. package/dist/commands/marketplace.d.ts.map +1 -0
  11. package/dist/commands/marketplace.js +132 -0
  12. package/dist/commands/marketplace.js.map +1 -0
  13. package/dist/commands/plugin.d.ts +8 -0
  14. package/dist/commands/plugin.d.ts.map +1 -0
  15. package/dist/commands/plugin.js +42 -0
  16. package/dist/commands/plugin.js.map +1 -0
  17. package/dist/commands/registry/audit.d.ts +2 -1
  18. package/dist/commands/registry/audit.d.ts.map +1 -1
  19. package/dist/commands/registry/audit.js +32 -22
  20. package/dist/commands/registry/audit.js.map +1 -1
  21. package/dist/commands/registry/index.d.ts.map +1 -1
  22. package/dist/commands/registry/index.js +4 -3
  23. package/dist/commands/registry/index.js.map +1 -1
  24. package/dist/commands/registry/install.d.ts +4 -2
  25. package/dist/commands/registry/install.d.ts.map +1 -1
  26. package/dist/commands/registry/install.js +132 -73
  27. package/dist/commands/registry/install.js.map +1 -1
  28. package/dist/commands/registry/remove.d.ts.map +1 -1
  29. package/dist/commands/registry/remove.js +11 -25
  30. package/dist/commands/registry/remove.js.map +1 -1
  31. package/dist/commands/registry/search.d.ts +1 -1
  32. package/dist/commands/registry/search.d.ts.map +1 -1
  33. package/dist/commands/registry/search.js +33 -17
  34. package/dist/commands/registry/search.js.map +1 -1
  35. package/dist/commands/registry/sync.d.ts +1 -0
  36. package/dist/commands/registry/sync.d.ts.map +1 -1
  37. package/dist/commands/registry/sync.js +46 -12
  38. package/dist/commands/registry/sync.js.map +1 -1
  39. package/dist/commands/registry/update.d.ts +14 -2
  40. package/dist/commands/registry/update.d.ts.map +1 -1
  41. package/dist/commands/registry/update.js +70 -18
  42. package/dist/commands/registry/update.js.map +1 -1
  43. package/dist/commands/templates.d.ts.map +1 -1
  44. package/dist/commands/templates.js +13 -16
  45. package/dist/commands/templates.js.map +1 -1
  46. package/dist/commands/tools.d.ts.map +1 -1
  47. package/dist/commands/tools.js +6 -2
  48. package/dist/commands/tools.js.map +1 -1
  49. package/dist/commands/upgrade.d.ts +3 -0
  50. package/dist/commands/upgrade.d.ts.map +1 -0
  51. package/dist/commands/upgrade.js +79 -0
  52. package/dist/commands/upgrade.js.map +1 -0
  53. package/dist/generated/bundled-assets.d.ts +1 -1
  54. package/dist/generated/bundled-assets.d.ts.map +1 -1
  55. package/dist/generated/bundled-assets.js +77 -2
  56. package/dist/generated/bundled-assets.js.map +1 -1
  57. package/dist/index.js +9 -0
  58. package/dist/index.js.map +1 -1
  59. package/dist/output/map-progress.d.ts +11 -1
  60. package/dist/output/map-progress.d.ts.map +1 -1
  61. package/dist/output/map-progress.js +43 -4
  62. package/dist/output/map-progress.js.map +1 -1
  63. package/dist/output/progress.d.ts.map +1 -1
  64. package/dist/output/progress.js +1 -1
  65. package/dist/output/progress.js.map +1 -1
  66. package/dist/registry/cache.d.ts +1 -1
  67. package/dist/registry/cache.d.ts.map +1 -1
  68. package/dist/registry/cache.js +3 -2
  69. package/dist/registry/cache.js.map +1 -1
  70. package/dist/registry/client.d.ts +20 -11
  71. package/dist/registry/client.d.ts.map +1 -1
  72. package/dist/registry/client.js +145 -45
  73. package/dist/registry/client.js.map +1 -1
  74. package/dist/registry/constraints.d.ts +17 -0
  75. package/dist/registry/constraints.d.ts.map +1 -0
  76. package/dist/registry/constraints.js +30 -0
  77. package/dist/registry/constraints.js.map +1 -0
  78. package/dist/registry/dependency-spec.d.ts +15 -0
  79. package/dist/registry/dependency-spec.d.ts.map +1 -0
  80. package/dist/registry/dependency-spec.js +17 -0
  81. package/dist/registry/dependency-spec.js.map +1 -0
  82. package/dist/registry/git-source.d.ts +16 -0
  83. package/dist/registry/git-source.d.ts.map +1 -0
  84. package/dist/registry/git-source.js +92 -0
  85. package/dist/registry/git-source.js.map +1 -0
  86. package/dist/registry/legacy-paths.d.ts +3 -0
  87. package/dist/registry/legacy-paths.d.ts.map +1 -0
  88. package/dist/registry/legacy-paths.js +31 -0
  89. package/dist/registry/legacy-paths.js.map +1 -0
  90. package/dist/registry/lockfile.d.ts +5 -1
  91. package/dist/registry/lockfile.d.ts.map +1 -1
  92. package/dist/registry/lockfile.js +28 -7
  93. package/dist/registry/lockfile.js.map +1 -1
  94. package/dist/registry/marketplaces.d.ts +23 -0
  95. package/dist/registry/marketplaces.d.ts.map +1 -0
  96. package/dist/registry/marketplaces.js +83 -0
  97. package/dist/registry/marketplaces.js.map +1 -0
  98. package/dist/registry/registry-index.d.ts +36 -0
  99. package/dist/registry/registry-index.d.ts.map +1 -0
  100. package/dist/registry/registry-index.js +57 -0
  101. package/dist/registry/registry-index.js.map +1 -0
  102. package/dist/registry/resolver.d.ts +15 -3
  103. package/dist/registry/resolver.d.ts.map +1 -1
  104. package/dist/registry/resolver.js +82 -72
  105. package/dist/registry/resolver.js.map +1 -1
  106. package/dist/registry/seed.d.ts +10 -0
  107. package/dist/registry/seed.d.ts.map +1 -0
  108. package/dist/registry/seed.js +25 -0
  109. package/dist/registry/seed.js.map +1 -0
  110. package/dist/registry/types.d.ts +66 -7
  111. package/dist/registry/types.d.ts.map +1 -1
  112. package/dist/registry/types.js +28 -8
  113. package/dist/registry/types.js.map +1 -1
  114. package/dist/registry/verify.d.ts +15 -0
  115. package/dist/registry/verify.d.ts.map +1 -0
  116. package/dist/registry/verify.js +86 -0
  117. package/dist/registry/verify.js.map +1 -0
  118. package/dist/upgrade.d.ts +28 -0
  119. package/dist/upgrade.d.ts.map +1 -0
  120. package/dist/upgrade.js +64 -0
  121. package/dist/upgrade.js.map +1 -0
  122. package/dist/version-guard.d.ts +3 -1
  123. package/dist/version-guard.d.ts.map +1 -1
  124. package/dist/version-guard.js +8 -2
  125. package/dist/version-guard.js.map +1 -1
  126. package/package.json +12 -12
@@ -1,81 +1,130 @@
1
1
  import chalk from 'chalk';
2
- import { resolve } from 'node:path';
3
- import { mkdir, readFile } from 'node:fs/promises';
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 { INSTALL_DIRS } from '../../registry/types.js';
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
- async function doInstallPackage(nameAtVersion, options, client, lockfile, index, lockfileData, metaCache) {
22
- const [name, requestedVersion] = nameAtVersion.split('@');
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 = index.packages.find(p => p.name === name);
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(name);
89
+ let meta = ctx.metaCache.get(metaKey);
43
90
  if (!meta) {
44
- meta = await client.fetchMetadata(type, name);
45
- metaCache.set(name, meta);
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
- console.log(`${indent}Installing ${depth > 0 ? 'dependency: ' : ''}${chalk.bold(name)} v${version} [${type}]...`);
52
- let sha256;
53
- const destBaseDir = resolve(studioDir, INSTALL_DIRS[type]);
54
- await mkdir(destBaseDir, { recursive: true });
55
- if (type === 'template' || type === 'plugin') {
56
- const destDir = resolve(destBaseDir, name);
57
- await mkdir(destDir, { recursive: true });
58
- sha256 = await client.downloadDirectory(type, name, 'project', destDir);
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
- const ext = SINGLE_FILE_EXTENSIONS[type] ?? '.yaml';
62
- const filename = `${name}${ext}`;
63
- const result = await client.downloadFile(type, name, filename, destBaseDir);
64
- sha256 = result.sha256;
65
- const content = await readFile(result.destPath, 'utf8');
66
- if (SHELL_EXEC_PATTERN.test(content) && options.interactive !== false) {
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(`⚠ This package executes shell commands. Review ${result.destPath} before use. Install anyway?`),
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, index, lockfileData, (depName) => {
99
- const depEntry = index.packages.find(p => p.name === depName);
100
- const depType = (depEntry?.type ?? 'tool');
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 Promise.resolve(cached);
104
- return client.fetchMetadata(depType, depName).then(m => {
105
- metaCache.set(depName, m);
106
- return m;
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, { studioDir, requiredBy: name, interactive: options.interactive, _depth: depth + 1 }, client, lockfile, index, lockfileData, metaCache);
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
- let install = options.interactive !== false;
114
- if (options.interactive !== false) {
115
- const names = graph.recommended.map(d => d.name).join(', ');
116
- const { confirm } = await import('@inquirer/prompts');
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
- if (install) {
123
- for (const dep of graph.recommended) {
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(nameAtVersion, options = {}) {
131
- const [name] = nameAtVersion.split('@');
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
- const cache = new RegistryCache();
139
- const index = await cache.read();
140
- if (!index?.packages.find(p => p.name === name)) {
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
- const client = new RegistryClient();
144
- const lockfileData = await lockfile.read();
145
- const metaCache = options._metaCache ?? new Map();
146
- await doInstallPackage(nameAtVersion, resolvedOptions, client, lockfile, index, lockfileData, metaCache);
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(nameAtVersion, options = {}) {
207
+ export async function installCommand(ref, options = {}) {
149
208
  try {
150
- await installPackage(nameAtVersion, options);
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":"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"}
1
+ {"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/commands/registry/install.ts"],"names":[],"mappings":"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"}
@@ -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;AAsBD,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"}
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 { INSTALL_DIRS } from '../../registry/types.js';
8
- const FILE_EXTENSIONS = {
9
- tool: '.tool.yaml',
10
- pipeline: '.pipeline.yaml',
11
- integration: '.integration.yaml',
12
- agent: '.agent.yaml',
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
- // Block removal if another package depends on this one
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
- throw new Error(`'${name}' is required by: ${dependents.join(', ')}. Remove them first.`);
26
+ console.log(chalk.yellow(`⚠ '${name}' is required by: ${dependents.join(', ')} those references will break.`));
40
27
  }
41
- const type = entry.type;
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 protection check passes
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":"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"}
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: PackageEntry[], query?: string, type?: PackageType | string): PackageEntry[];
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":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEzE,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,YAAY,EAAE,EACxB,KAAK,CAAC,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,WAAW,GAAG,MAAM,GAC1B,YAAY,EAAE,CAiBhB;AAYD,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,CAsB7F;AAED,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CA0BnD"}
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
- results = results.filter(p => p.type === type);
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
- console.log(` ${chalk.bold(pkg.name)} ${chalk.gray(`v${pkg.version}`)} ${chalk.cyan(`[${pkg.type}]`)}`);
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 cache = new RegistryCache();
27
- const index = await cache.read();
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(index.packages, query, options.type);
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 cache = new RegistryCache();
47
- const index = await cache.read();
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 = [...index.packages].sort((a, b) => b.downloads - a.downloads);
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
- const byType = {};
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
- if (!byType[pkg.type])
57
- byType[pkg.type] = [];
58
- byType[pkg.type].push(pkg);
72
+ for (const kind of providedKinds(pkg)) {
73
+ (byKind[kind] ??= []).push(pkg);
74
+ }
59
75
  }
60
- for (const [type, pkgs] of Object.entries(byType)) {
61
- console.log(chalk.bold.underline(`${type}s`));
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":"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"}
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../../src/commands/registry/search.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  interface SyncOptions {
2
2
  cacheDir?: string;
3
+ marketplacesFile?: string;
3
4
  force?: boolean;
4
5
  silent?: boolean;
5
6
  }
@@ -1 +1 @@
1
- {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../../src/commands/registry/sync.ts"],"names":[],"mappings":"AAIA,UAAU,WAAW;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,wBAAsB,YAAY,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAa3E"}
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"}