@adea-ai/plugins 4.0.0 → 4.0.6

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 (147) hide show
  1. package/dist/agent-plugins-catalog.d.ts +2 -4
  2. package/dist/agent-plugins-catalog.js +42 -50
  3. package/dist/agent-plugins-catalog.js.map +1 -1
  4. package/dist/agent-plugins-schema.d.ts +8 -0
  5. package/dist/agent-plugins-schema.js +10 -1
  6. package/dist/agent-plugins-schema.js.map +1 -1
  7. package/dist/artifacts.d.ts +57 -0
  8. package/dist/artifacts.js +159 -0
  9. package/dist/artifacts.js.map +1 -0
  10. package/dist/build.d.ts +20 -0
  11. package/dist/build.js +103 -0
  12. package/dist/build.js.map +1 -0
  13. package/dist/capabilities.d.ts +7 -0
  14. package/dist/capabilities.js +116 -0
  15. package/dist/capabilities.js.map +1 -0
  16. package/dist/catalog-store.d.ts +76 -0
  17. package/dist/catalog-store.js +463 -0
  18. package/dist/catalog-store.js.map +1 -0
  19. package/dist/concurrency.d.ts +1 -0
  20. package/dist/concurrency.js +15 -0
  21. package/dist/concurrency.js.map +1 -0
  22. package/dist/consumer-index.d.ts +7 -29
  23. package/dist/consumer-index.js +24 -15
  24. package/dist/consumer-index.js.map +1 -1
  25. package/dist/digest.d.ts +13 -0
  26. package/dist/digest.js +47 -0
  27. package/dist/digest.js.map +1 -0
  28. package/dist/fs-atomic.d.ts +7 -0
  29. package/dist/fs-atomic.js +30 -0
  30. package/dist/fs-atomic.js.map +1 -0
  31. package/dist/harness.js +2 -1
  32. package/dist/harness.js.map +1 -1
  33. package/dist/icon-mirror.d.ts +5 -4
  34. package/dist/icon-mirror.js +73 -72
  35. package/dist/icon-mirror.js.map +1 -1
  36. package/dist/icons.d.ts +2 -2
  37. package/dist/icons.js +4 -12
  38. package/dist/icons.js.map +1 -1
  39. package/dist/index.d.ts +16 -309
  40. package/dist/index.js +12 -1900
  41. package/dist/index.js.map +1 -1
  42. package/dist/integrity-manifest.d.ts +43 -13
  43. package/dist/integrity-manifest.js +28 -17
  44. package/dist/integrity-manifest.js.map +1 -1
  45. package/dist/json-values.d.ts +3 -0
  46. package/dist/json-values.js +10 -0
  47. package/dist/json-values.js.map +1 -0
  48. package/dist/plugin-release.d.ts +38 -0
  49. package/dist/plugin-release.js +321 -0
  50. package/dist/plugin-release.js.map +1 -0
  51. package/dist/plugin-skips.d.ts +19 -0
  52. package/dist/plugin-skips.js +65 -0
  53. package/dist/plugin-skips.js.map +1 -0
  54. package/dist/policy.d.ts +13 -0
  55. package/dist/policy.js +26 -0
  56. package/dist/policy.js.map +1 -0
  57. package/dist/portable-catalog.d.ts +4 -4
  58. package/dist/portable-catalog.js +14 -126
  59. package/dist/portable-catalog.js.map +1 -1
  60. package/dist/portable-verify.d.ts +2 -0
  61. package/dist/portable-verify.js +68 -0
  62. package/dist/portable-verify.js.map +1 -0
  63. package/dist/publication.d.ts +12 -12
  64. package/dist/publication.js +31 -21
  65. package/dist/publication.js.map +1 -1
  66. package/dist/published-output.d.ts +17 -0
  67. package/dist/published-output.js +49 -0
  68. package/dist/published-output.js.map +1 -0
  69. package/dist/site-icons.d.ts +4 -3
  70. package/dist/site-icons.js +38 -11
  71. package/dist/site-icons.js.map +1 -1
  72. package/dist/snapshots.d.ts +39 -0
  73. package/dist/snapshots.js +238 -0
  74. package/dist/snapshots.js.map +1 -0
  75. package/dist/source-resolution.d.ts +28 -0
  76. package/dist/source-resolution.js +158 -0
  77. package/dist/source-resolution.js.map +1 -0
  78. package/dist/sources.d.ts +5 -1
  79. package/dist/sources.js +21 -27
  80. package/dist/sources.js.map +1 -1
  81. package/dist/synchronize.d.ts +44 -0
  82. package/dist/synchronize.js +118 -0
  83. package/dist/synchronize.js.map +1 -0
  84. package/dist/taxonomy.d.ts +23 -0
  85. package/dist/taxonomy.js +62 -0
  86. package/dist/taxonomy.js.map +1 -0
  87. package/dist/upstream.d.ts +42 -0
  88. package/dist/upstream.js +179 -0
  89. package/dist/upstream.js.map +1 -0
  90. package/dist/verify-artifacts.d.ts +36 -0
  91. package/dist/verify-artifacts.js +286 -0
  92. package/dist/verify-artifacts.js.map +1 -0
  93. package/native/build-provenance.txt +5 -5
  94. package/native/staged-reader-win32-arm64.node +0 -0
  95. package/native/staged-reader-win32-x64.node +0 -0
  96. package/package.json +3 -3
  97. package/src/agent-plugins-catalog.test.ts +2 -2
  98. package/src/agent-plugins-catalog.ts +46 -49
  99. package/src/agent-plugins-schema.ts +11 -1
  100. package/src/artifacts.test.ts +80 -0
  101. package/src/artifacts.ts +234 -0
  102. package/src/build.ts +131 -0
  103. package/src/capabilities.ts +153 -0
  104. package/src/catalog-store.ts +519 -0
  105. package/src/concurrency.ts +19 -0
  106. package/src/consumer-index.test.ts +147 -16
  107. package/src/consumer-index.ts +35 -43
  108. package/src/default-head.test.ts +143 -0
  109. package/src/digest.ts +55 -0
  110. package/src/fs-atomic.ts +32 -0
  111. package/src/harness.test.ts +4 -32
  112. package/src/harness.ts +2 -1
  113. package/src/icon-mirror.ts +78 -72
  114. package/src/icons.test.ts +0 -4
  115. package/src/icons.ts +4 -4
  116. package/src/index.test.ts +172 -46
  117. package/src/index.ts +58 -2562
  118. package/src/integrity-manifest.ts +41 -21
  119. package/src/json-values.ts +11 -0
  120. package/src/manifest-retry.test.ts +49 -0
  121. package/src/plugin-release.ts +457 -0
  122. package/src/plugin-skips.ts +110 -0
  123. package/src/policy.ts +39 -0
  124. package/src/portable-catalog.test.ts +0 -5
  125. package/src/portable-catalog.ts +16 -143
  126. package/src/portable-verify.ts +71 -0
  127. package/src/publication.test.ts +29 -1
  128. package/src/publication.ts +38 -22
  129. package/src/published-output.ts +60 -0
  130. package/src/site-icons.test.ts +73 -1
  131. package/src/site-icons.ts +31 -14
  132. package/src/snapshots.ts +287 -0
  133. package/src/source-config-sync.test.ts +84 -0
  134. package/src/source-digest.test.ts +61 -8
  135. package/src/source-resolution.ts +233 -0
  136. package/src/sources-json.test.ts +18 -2
  137. package/src/sources.ts +27 -33
  138. package/src/synchronize.ts +213 -0
  139. package/src/taxonomy.ts +87 -0
  140. package/src/upstream.ts +194 -0
  141. package/src/verify-artifacts.ts +365 -0
  142. package/src/write-artifacts.test.ts +374 -0
  143. package/dist/source-digest.d.ts +0 -2
  144. package/dist/source-digest.js +0 -12
  145. package/dist/source-digest.js.map +0 -1
  146. package/native/README.md +0 -24
  147. package/src/source-digest.ts +0 -14
@@ -0,0 +1,238 @@
1
+ import { promises as fs } from 'node:fs';
2
+ import { join, relative, resolve } from 'node:path';
3
+ import { Readable } from 'node:stream';
4
+ import { createGunzip } from 'node:zlib';
5
+ import { extract } from 'tar-stream';
6
+ import { PluginSafetyError } from './plugin-skips.js';
7
+ import { canonicalRepositoryUrl, safeRelativePath } from './sources.js';
8
+ import { fetchUpstream, GITHUB_REPOSITORY_HOSTS, upstreamRequestHeaders } from './upstream.js';
9
+ /**
10
+ * Ceiling on bytes read out of one repository archive.
11
+ *
12
+ * The per-plugin policy still bounds what any single plugin may contain; this
13
+ * only stops a decompression bomb from exhausting the build host, and it is
14
+ * enforced while the stream is read rather than after it is buffered.
15
+ */
16
+ const MAX_ARCHIVE_BYTES = 512 * 1024 * 1024;
17
+ function concatChunks(chunks, length) {
18
+ const out = new Uint8Array(length);
19
+ let offset = 0;
20
+ for (const chunk of chunks) {
21
+ out.set(chunk, offset);
22
+ offset += chunk.byteLength;
23
+ }
24
+ return out;
25
+ }
26
+ /**
27
+ * Read one GitHub repository tarball into path -> bytes.
28
+ *
29
+ * GitHub wraps every entry in a single top-level `<repo>-<sha>/` directory,
30
+ * which is stripped so the keys match the tree API's repository-relative
31
+ * paths. Only regular files are taken: directories, symlinks, hardlinks and
32
+ * the `pax_global_header` record are skipped, so a link can never be
33
+ * materialized as content. Every remaining path goes through
34
+ * `safeRelativePath`, so an archive that tries to escape the repository is
35
+ * rejected rather than partially trusted. This is a whole-repository archive
36
+ * shared across plugins, so an oversized unrelated file is drained and
37
+ * counted against the archive budget but not retained. The selected plugin's
38
+ * files are checked against the tree before the archive is fetched and again
39
+ * when its snapshot is validated.
40
+ */
41
+ export async function readArchiveFiles(archive, policy) {
42
+ const files = new Map();
43
+ let totalBytes = 0;
44
+ const parser = extract();
45
+ const gunzip = createGunzip();
46
+ const settled = new Promise((resolveDone, rejectDone) => {
47
+ const fail = (error) => {
48
+ gunzip.destroy();
49
+ parser.destroy();
50
+ rejectDone(error);
51
+ };
52
+ parser.on('entry', (header, stream, next) => {
53
+ const skip = () => {
54
+ stream.on('end', next);
55
+ stream.resume();
56
+ };
57
+ if (header.type !== 'file')
58
+ return skip();
59
+ const segments = header.name.split('/');
60
+ if (segments.length < 2)
61
+ return skip();
62
+ let path;
63
+ try {
64
+ path = safeRelativePath(segments.slice(1).join('/'), 'TREE_PATH_INVALID');
65
+ }
66
+ catch (error) {
67
+ return fail(error);
68
+ }
69
+ const chunks = [];
70
+ let length = 0;
71
+ stream.on('data', (chunk) => {
72
+ const bytes = chunk;
73
+ length += bytes.byteLength;
74
+ if (totalBytes + length > MAX_ARCHIVE_BYTES) {
75
+ fail(new Error('PLUGIN_SIZE_POLICY: archive'));
76
+ return;
77
+ }
78
+ if (length <= policy.maxFileBytes)
79
+ chunks.push(bytes);
80
+ else
81
+ chunks.length = 0;
82
+ });
83
+ stream.on('error', fail);
84
+ stream.on('end', () => {
85
+ try {
86
+ totalBytes += length;
87
+ if (length <= policy.maxFileBytes)
88
+ files.set(path, concatChunks(chunks, length));
89
+ next();
90
+ }
91
+ catch (error) {
92
+ fail(error);
93
+ }
94
+ });
95
+ stream.resume();
96
+ });
97
+ parser.on('error', fail);
98
+ gunzip.on('error', fail);
99
+ parser.on('finish', () => resolveDone());
100
+ });
101
+ Readable.from([archive]).pipe(gunzip).pipe(parser);
102
+ await settled;
103
+ return files;
104
+ }
105
+ export class NetworkSnapshotLoader {
106
+ #policy;
107
+ #trees = new Map();
108
+ #archives = new Map();
109
+ constructor(policy) {
110
+ this.#policy = policy;
111
+ }
112
+ async load(repositoryUrl, commitSha, pluginSubdirectory) {
113
+ const parsed = new URL(canonicalRepositoryUrl(repositoryUrl));
114
+ if (!GITHUB_REPOSITORY_HOSTS.includes(parsed.hostname))
115
+ throw new Error(`GIT_HOST_UNSUPPORTED: ${parsed.hostname}`);
116
+ const [owner, repo] = parsed.pathname.split('/').filter(Boolean);
117
+ if (!owner || !repo)
118
+ throw new Error('GIT_REPOSITORY_INVALID');
119
+ const key = `${owner}/${repo}@${commitSha}`;
120
+ let pendingTree = this.#trees.get(key);
121
+ if (!pendingTree) {
122
+ pendingTree = (async () => {
123
+ const treeUrl = `https://api.github.com/repos/${owner}/${repo}/git/trees/${commitSha}?recursive=1`;
124
+ const response = await fetchUpstream(treeUrl, {
125
+ headers: upstreamRequestHeaders(treeUrl),
126
+ });
127
+ if (!response.ok)
128
+ throw new PluginSafetyError('PLUGIN_SOURCE_UNAVAILABLE', [`${owner}/${repo}`]);
129
+ const payload = (await response.json());
130
+ if (payload.truncated)
131
+ throw new Error(`GIT_TREE_TRUNCATED: ${owner}/${repo}@${commitSha}`);
132
+ return (payload.tree ?? []).map((entry) => ({
133
+ ...entry,
134
+ path: safeRelativePath(entry.path, 'TREE_PATH_INVALID'),
135
+ }));
136
+ })().catch((error) => {
137
+ this.#trees.delete(key);
138
+ throw error;
139
+ });
140
+ this.#trees.set(key, pendingTree);
141
+ }
142
+ const tree = await pendingTree;
143
+ const prefix = pluginSubdirectory ? `${safeRelativePath(pluginSubdirectory)}/` : '';
144
+ const submodules = tree.filter((entry) => entry.path.startsWith(prefix) && (entry.type === 'commit' || entry.mode === '160000'));
145
+ if (submodules.length > 0)
146
+ throw new Error(`GIT_SUBMODULE_UNSUPPORTED: ${repositoryUrl}:${pluginSubdirectory}`);
147
+ const selected = tree.filter((entry) => entry.type === 'blob' && entry.path.startsWith(prefix));
148
+ if (selected.length === 0)
149
+ throw new Error(`PLUGIN_PATH_NOT_FOUND: ${repositoryUrl}:${pluginSubdirectory}`);
150
+ const files = new Map();
151
+ const symlinks = tree
152
+ .filter((entry) => entry.mode === '120000' && entry.path.startsWith(prefix))
153
+ .map((entry) => entry.path);
154
+ if (selected.length > this.#policy.maxFilesPerPlugin)
155
+ throw new Error('PLUGIN_TOO_MANY_FILES');
156
+ let totalSize = 0;
157
+ for (const entry of selected) {
158
+ const size = entry.size ?? 0;
159
+ if (size > this.#policy.maxFileBytes || totalSize + size > this.#policy.maxBytesPerPlugin)
160
+ throw new Error(`PLUGIN_SIZE_POLICY: ${entry.path}`);
161
+ totalSize += size;
162
+ }
163
+ // The tree above already bounded this plugin before a byte was pulled, so
164
+ // the archive is the only unbounded read left and it is capped while it
165
+ // streams. One archive per repository replaces one request per file.
166
+ const archive = await this.#archiveFiles(key, owner, repo, commitSha);
167
+ for (const entry of selected) {
168
+ const bytes = archive.get(entry.path);
169
+ if (!bytes)
170
+ throw new PluginSafetyError('PLUGIN_FILE_UNAVAILABLE', [entry.path]);
171
+ if (bytes.byteLength > this.#policy.maxFileBytes)
172
+ throw new Error(`PLUGIN_FILE_TOO_LARGE: ${entry.path}`);
173
+ files.set(prefix ? relative(prefix.slice(0, -1), entry.path).replaceAll('\\', '/') : entry.path, bytes);
174
+ }
175
+ return { files, symlinks };
176
+ }
177
+ async #archiveFiles(key, owner, repo, commitSha) {
178
+ const cached = this.#archives.get(key);
179
+ if (cached)
180
+ return cached;
181
+ const pending = (async () => {
182
+ const url = `https://api.github.com/repos/${owner}/${repo}/tarball/${commitSha}`;
183
+ const response = await fetchUpstream(url, { headers: upstreamRequestHeaders(url) });
184
+ if (!response.ok)
185
+ throw new PluginSafetyError('PLUGIN_SOURCE_UNAVAILABLE', [`${owner}/${repo}`]);
186
+ return readArchiveFiles(new Uint8Array(await response.arrayBuffer()), this.#policy);
187
+ })().catch((error) => {
188
+ this.#archives.delete(key);
189
+ throw error;
190
+ });
191
+ this.#archives.set(key, pending);
192
+ return pending;
193
+ }
194
+ }
195
+ export class FixtureSnapshotLoader {
196
+ #root;
197
+ #sources;
198
+ constructor(root, sources) {
199
+ this.#root = resolve(root);
200
+ this.#sources = new Map(sources.map((source) => [canonicalRepositoryUrl(source.repositoryUrl), source]));
201
+ }
202
+ async load(repositoryUrl, _commitSha, pluginSubdirectory) {
203
+ const source = this.#sources.get(canonicalRepositoryUrl(repositoryUrl));
204
+ if (!source?.fixturePath)
205
+ throw new Error(`FIXTURE_REPOSITORY_NOT_FOUND: ${repositoryUrl}`);
206
+ return snapshotFromDirectory(join(this.#root, source.fixturePath), pluginSubdirectory);
207
+ }
208
+ }
209
+ export class DirectorySnapshotLoader {
210
+ async load(_repositoryUrl, _commitSha, pluginSubdirectory) {
211
+ throw new Error(`DIRECTORY_LOADER_REQUIRES_ROOT: ${pluginSubdirectory}`);
212
+ }
213
+ }
214
+ export async function snapshotFromDirectory(root, pluginSubdirectory) {
215
+ const directory = resolve(root, pluginSubdirectory);
216
+ const files = new Map();
217
+ const symlinks = [];
218
+ const rootStat = await fs.lstat(directory);
219
+ if (rootStat.isSymbolicLink())
220
+ return { files, symlinks: [pluginSubdirectory || '.'] };
221
+ await walk(directory, directory, files, symlinks);
222
+ return { files, symlinks };
223
+ }
224
+ async function walk(root, current, files, symlinks) {
225
+ for (const entry of await fs.readdir(current, { withFileTypes: true })) {
226
+ const absolute = join(current, entry.name);
227
+ const relativePath = safeRelativePath(relative(root, absolute), 'DIRECTORY_PATH_INVALID');
228
+ if (entry.isSymbolicLink()) {
229
+ symlinks.push(relativePath);
230
+ continue;
231
+ }
232
+ if (entry.isDirectory())
233
+ await walk(root, absolute, files, symlinks);
234
+ else if (entry.isFile())
235
+ files.set(relativePath, await fs.readFile(absolute));
236
+ }
237
+ }
238
+ //# sourceMappingURL=snapshots.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snapshots.js","sourceRoot":"","sources":["../src/snapshots.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import { type SourceLockEntry, type SourcesLock } from './schema.js';
2
+ import { type ParsedMarketplace, type PluginSourceSpec, type SourceConfig } from './sources.js';
3
+ export interface ResolvedSource {
4
+ readonly config: SourceConfig;
5
+ readonly commitSha: string;
6
+ readonly manifestText: string;
7
+ readonly parsed: ParsedMarketplace;
8
+ readonly pluginPins: readonly PluginSourcePin[];
9
+ readonly retrievedAt: string;
10
+ readonly manifestDigest: string;
11
+ }
12
+ export interface PluginSourcePin {
13
+ readonly pluginName: string;
14
+ readonly repositoryUrl: string;
15
+ readonly pluginSubdirectory: string;
16
+ readonly resolvedCommitSha: string;
17
+ }
18
+ export declare function resolvePluginSource(pluginName: string, spec: PluginSourceSpec, source: ResolvedSource, resolveExternalRefs: boolean): Promise<ResolvedPluginSource>;
19
+ export interface ResolvedPluginSource {
20
+ readonly repositoryUrl: string;
21
+ readonly subdirectory: string;
22
+ readonly commitSha: string;
23
+ }
24
+ /** The fields that differ between two lock entries for the same source. */
25
+ export declare function lockChangedFields(previous: SourceLockEntry, current: SourceLockEntry): string[];
26
+ export declare function sourceLockChanged(previous: SourceLockEntry, current: SourceLockEntry): boolean;
27
+ export declare function createSourcesLock(sources: readonly ResolvedSource[]): SourcesLock;
28
+ export declare function resolveSource(config: SourceConfig, mode: 'live' | 'offline', fixtureRoot: string | undefined, lock: SourcesLock | undefined, fromLock: boolean): Promise<ResolvedSource>;
@@ -0,0 +1,158 @@
1
+ import { promises as fs } from 'node:fs';
2
+ import { join, resolve } from 'node:path';
3
+ import { mapWithConcurrency } from './concurrency.js';
4
+ import { contentId, digest, ordinalCompare } from './digest.js';
5
+ import { SourcesLockSchema } from './schema.js';
6
+ import { canonicalRepositoryUrl, parseJsonDocument, parseMarketplaceManifest, safeRelativePath, } from './sources.js';
7
+ import { externalGitRef, fetchText, rawContentUrl, resolveGitRef } from './upstream.js';
8
+ export async function resolvePluginSource(pluginName, spec, source, resolveExternalRefs) {
9
+ if (spec.kind === 'local')
10
+ return {
11
+ repositoryUrl: canonicalRepositoryUrl(source.config.repositoryUrl),
12
+ subdirectory: spec.path,
13
+ commitSha: source.commitSha,
14
+ };
15
+ const canonicalUrl = canonicalRepositoryUrl(spec.repositoryUrl);
16
+ const pin = source.pluginPins.find((candidate) => candidate.pluginName === pluginName &&
17
+ candidate.repositoryUrl === canonicalUrl &&
18
+ candidate.pluginSubdirectory === spec.subdirectory);
19
+ const commitSha = pin?.resolvedCommitSha ??
20
+ spec.sha ??
21
+ (resolveExternalRefs
22
+ ? await resolveGitRef(spec.repositoryUrl, externalGitRef(spec.ref))
23
+ : source.commitSha);
24
+ return {
25
+ repositoryUrl: canonicalUrl,
26
+ subdirectory: pin?.pluginSubdirectory ?? spec.subdirectory,
27
+ commitSha,
28
+ };
29
+ }
30
+ /** The fields that differ between two lock entries for the same source. */
31
+ export function lockChangedFields(previous, current) {
32
+ const fields = [
33
+ 'repositoryUrl',
34
+ 'defaultBranch',
35
+ 'manifestPath',
36
+ 'marketplaceDialect',
37
+ 'resolvedCommitSha',
38
+ 'sourceManifestDigest',
39
+ 'synchronizationStatus',
40
+ ];
41
+ const changed = fields.filter((field) => previous[field] !== current[field]);
42
+ if (digest(sortedPins(previous)) !== digest(sortedPins(current)))
43
+ changed.push('pluginPins');
44
+ return changed;
45
+ }
46
+ export function sourceLockChanged(previous, current) {
47
+ return lockChangedFields(previous, current).length > 0;
48
+ }
49
+ function sortedPins(source) {
50
+ return source.pluginPins
51
+ .map((pin) => JSON.stringify([
52
+ pin.pluginName,
53
+ pin.repositoryUrl,
54
+ pin.pluginSubdirectory,
55
+ pin.resolvedCommitSha,
56
+ ]))
57
+ .toSorted();
58
+ }
59
+ export function createSourcesLock(sources) {
60
+ const entries = sources
61
+ .map((source) => ({
62
+ sourceId: source.config.sourceId,
63
+ repositoryUrl: canonicalRepositoryUrl(source.config.repositoryUrl),
64
+ defaultBranch: source.config.defaultBranch,
65
+ resolvedCommitSha: source.commitSha,
66
+ manifestPath: source.config.manifestPath,
67
+ marketplaceDialect: source.config.marketplaceDialect,
68
+ sourceManifestDigest: source.manifestDigest,
69
+ retrievedAt: source.retrievedAt,
70
+ synchronizationStatus: 'synchronized',
71
+ pluginPins: source.pluginPins.map((pin) => ({ ...pin })),
72
+ }))
73
+ .toSorted((left, right) => left.sourceId.localeCompare(right.sourceId));
74
+ const body = { schemaVersion: 1, sources: entries };
75
+ return SourcesLockSchema.parse({
76
+ ...body,
77
+ lockId: contentId('lock', body),
78
+ });
79
+ }
80
+ export async function resolveSource(config, mode, fixtureRoot, lock, fromLock) {
81
+ const manifestPath = safeRelativePath(config.manifestPath, 'SOURCE_MANIFEST_PATH_INVALID');
82
+ const locked = lock?.sources.find((entry) => entry.sourceId === config.sourceId);
83
+ if (fromLock && !locked)
84
+ throw new Error(`SOURCE_LOCK_ENTRY_MISSING: ${config.sourceId}`);
85
+ const commitSha = fromLock && locked
86
+ ? locked.resolvedCommitSha
87
+ : mode === 'offline'
88
+ ? (config.fixtureCommitSha ?? locked?.resolvedCommitSha)
89
+ : await resolveGitRef(config.repositoryUrl, `refs/heads/${config.defaultBranch}`);
90
+ if (!commitSha || !/^[a-f0-9]{40}$/.test(commitSha))
91
+ throw new Error(`SOURCE_COMMIT_UNRESOLVED: ${config.sourceId}`);
92
+ const manifestText = mode === 'offline'
93
+ ? await readFixtureManifest({ ...config, manifestPath }, fixtureRoot)
94
+ : await fetchText(rawContentUrl(config.repositoryUrl, commitSha, manifestPath));
95
+ const parsed = parseMarketplaceManifest(parseJsonDocument(manifestText), config);
96
+ if (fromLock && locked && digest(manifestText) !== locked.sourceManifestDigest)
97
+ throw new Error(`SOURCE_LOCK_MANIFEST_MISMATCH: ${config.sourceId}`);
98
+ const pluginPins = await resolvePluginPins({
99
+ config,
100
+ parsed,
101
+ sourceCommitSha: commitSha,
102
+ lockedPins: locked?.pluginPins,
103
+ fromLock,
104
+ resolveExternalRefs: mode === 'live',
105
+ });
106
+ return {
107
+ config,
108
+ commitSha,
109
+ manifestText,
110
+ parsed,
111
+ pluginPins,
112
+ retrievedAt: fromLock && locked
113
+ ? locked.retrievedAt
114
+ : mode === 'offline'
115
+ ? '2026-01-01T00:00:00.000Z'
116
+ : new Date().toISOString(),
117
+ manifestDigest: digest(manifestText),
118
+ };
119
+ }
120
+ async function resolvePluginPins(input) {
121
+ const pins = await mapWithConcurrency(input.parsed.entries, 8, async (entry) => {
122
+ if (entry.source.kind === 'local') {
123
+ return {
124
+ pluginName: entry.name,
125
+ repositoryUrl: canonicalRepositoryUrl(input.config.repositoryUrl),
126
+ pluginSubdirectory: entry.source.path,
127
+ resolvedCommitSha: input.sourceCommitSha,
128
+ };
129
+ }
130
+ const repositoryUrl = canonicalRepositoryUrl(entry.source.repositoryUrl);
131
+ const pluginSubdirectory = entry.source.subdirectory;
132
+ // Existing locks describe the prior sync; only explicit replay freezes revisions.
133
+ const locked = input.fromLock
134
+ ? input.lockedPins?.find((pin) => pin.pluginName === entry.name)
135
+ : undefined;
136
+ if (input.fromLock && !locked)
137
+ throw new Error(`SOURCE_LOCK_PLUGIN_PIN_MISSING: ${input.config.sourceId}:${entry.name}`);
138
+ if (locked) {
139
+ if (locked.repositoryUrl !== repositoryUrl ||
140
+ locked.pluginSubdirectory !== pluginSubdirectory) {
141
+ throw new Error(`SOURCE_LOCK_PLUGIN_PIN_MISMATCH: ${input.config.sourceId}:${entry.name}`);
142
+ }
143
+ return locked;
144
+ }
145
+ const resolvedCommitSha = entry.source.sha ??
146
+ (input.resolveExternalRefs
147
+ ? await resolveGitRef(repositoryUrl, externalGitRef(entry.source.ref))
148
+ : input.sourceCommitSha);
149
+ return { pluginName: entry.name, repositoryUrl, pluginSubdirectory, resolvedCommitSha };
150
+ });
151
+ return pins.toSorted((left, right) => ordinalCompare(left.pluginName, right.pluginName));
152
+ }
153
+ async function readFixtureManifest(config, fixtureRoot) {
154
+ if (!fixtureRoot || !config.fixturePath)
155
+ throw new Error(`FIXTURE_ROOT_REQUIRED: ${config.sourceId}`);
156
+ return fs.readFile(join(resolve(fixtureRoot), config.fixturePath, config.manifestPath), 'utf8');
157
+ }
158
+ //# sourceMappingURL=source-resolution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source-resolution.js","sourceRoot":"","sources":["../src/source-resolution.ts"],"names":[],"mappings":"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"}
package/dist/sources.d.ts CHANGED
@@ -1,4 +1,6 @@
1
- export type MarketplaceDialect = 'openai' | 'cursor' | 'claude';
1
+ import type { MarketplaceDialectSchema } from './schema.js';
2
+ import type { z } from 'zod';
3
+ export type MarketplaceDialect = z.output<typeof MarketplaceDialectSchema>;
2
4
  export interface SourceConfig {
3
5
  readonly sourceId: string;
4
6
  readonly displayName: string;
@@ -39,6 +41,8 @@ export interface ParsedMarketplace {
39
41
  readonly marketplaceDescription: string;
40
42
  readonly owner: readonly string[];
41
43
  readonly entries: readonly MarketplacePluginEntry[];
44
+ /** Entries left out because their source kind cannot be installed from a repository. */
45
+ readonly unsupportedEntries?: readonly string[];
42
46
  readonly raw: Record<string, unknown>;
43
47
  }
44
48
  export declare class SourceAdapterError extends Error {
package/dist/sources.js CHANGED
@@ -1,4 +1,5 @@
1
- import { createHash } from 'node:crypto';
1
+ import { digest, ordinalCompare } from './digest.js';
2
+ import { isString, stringValue } from './json-values.js';
2
3
  export class SourceAdapterError extends Error {
3
4
  code;
4
5
  details;
@@ -14,7 +15,22 @@ export function parseMarketplaceManifest(input, source) {
14
15
  const plugins = root.plugins;
15
16
  if (!Array.isArray(plugins))
16
17
  throw new SourceAdapterError('MARKETPLACE_PLUGINS_REQUIRED');
17
- const entries = plugins.map((value, index) => parsePluginEntry(value, source, index));
18
+ // Upstream marketplaces can list plugins that install some other way, such as by running a
19
+ // command. Those stay out of the catalog, and they must not stop the rest of it from building.
20
+ const entries = [];
21
+ const unsupportedEntries = [];
22
+ for (const [index, value] of plugins.entries()) {
23
+ try {
24
+ entries.push(parsePluginEntry(value, source, index));
25
+ }
26
+ catch (error) {
27
+ if (!(error instanceof SourceAdapterError) || error.code !== 'PLUGIN_SOURCE_KIND_UNSUPPORTED')
28
+ throw error;
29
+ unsupportedEntries.push(error.details.join(': '));
30
+ }
31
+ }
32
+ if (unsupportedEntries.length > 0)
33
+ console.error(`${source.sourceId}: left out plugins with unsupported source kinds: ${unsupportedEntries.join(', ')}`);
18
34
  const duplicateNames = new Set();
19
35
  for (const entry of entries) {
20
36
  if (duplicateNames.has(entry.name))
@@ -24,8 +40,9 @@ export function parseMarketplaceManifest(input, source) {
24
40
  return {
25
41
  marketplaceName: stringValue(root.name) ?? source.displayName,
26
42
  marketplaceDescription: stringValue(root.description) ?? '',
27
- owner: ownerNames(root.owner),
43
+ owner: authorNames(root.owner),
28
44
  entries,
45
+ ...(unsupportedEntries.length > 0 ? { unsupportedEntries } : {}),
29
46
  raw: root,
30
47
  };
31
48
  }
@@ -251,14 +268,8 @@ function requiredString(input, code, detail) {
251
268
  throw new SourceAdapterError(code, [detail]);
252
269
  return result;
253
270
  }
254
- function stringValue(input) {
255
- return typeof input === 'string' && input.trim() ? input.trim() : undefined;
256
- }
257
- function isString(input) {
258
- return typeof input === 'string' && input.trim().length > 0;
259
- }
260
271
  function uniqueStrings(input) {
261
- return [...new Set(input.map((value) => value.trim()).filter(Boolean))].toSorted((a, b) => a.localeCompare(b));
272
+ return [...new Set(input.map((value) => value.trim()).filter(Boolean))].toSorted(ordinalCompare);
262
273
  }
263
274
  function authorNames(input) {
264
275
  if (Array.isArray(input))
@@ -272,9 +283,6 @@ function authorNames(input) {
272
283
  }
273
284
  return [];
274
285
  }
275
- function ownerNames(input) {
276
- return authorNames(input);
277
- }
278
286
  function safeOptionalUrl(input) {
279
287
  if (!isString(input))
280
288
  return undefined;
@@ -289,18 +297,4 @@ function safeOptionalUrl(input) {
289
297
  function looksLikeUrl(input) {
290
298
  return /^https?:\/\//i.test(input);
291
299
  }
292
- function digest(value) {
293
- return `sha256:${createHash('sha256').update(canonicalJson(value)).digest('hex')}`;
294
- }
295
- function canonicalJson(value) {
296
- if (value === null || typeof value !== 'object')
297
- return JSON.stringify(value);
298
- if (Array.isArray(value))
299
- return `[${value.map(canonicalJson).join(',')}]`;
300
- const object = value;
301
- return `{${Object.keys(object)
302
- .toSorted()
303
- .map((key) => `${JSON.stringify(key)}:${canonicalJson(object[key])}`)
304
- .join(',')}}`;
305
- }
306
300
  //# sourceMappingURL=sources.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sources.js","sourceRoot":"","sources":["../src/sources.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sources.js","sourceRoot":"","sources":["../src/sources.ts"],"names":[],"mappings":"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"}