@lesliechan721/aw 0.1.0-beta.54 → 0.1.0-beta.56
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/dist/authoring/scripts/lib/plugin-version-check.mjs +1 -1
- package/dist/authoring/scripts/validate-plugin.mjs +208 -31
- package/dist/authoring/scripts/validate-plugin.mjs.map +1 -1
- package/dist/scripts/bundle-plugins.js +8 -3
- package/dist/scripts/bundle-plugins.js.map +1 -1
- package/dist/src/adapters/helpers.d.ts +7 -0
- package/dist/src/adapters/helpers.js.map +1 -1
- package/dist/src/commands/aw-capabilities.d.ts +1 -1
- package/dist/src/commands/aw-capabilities.js +2 -0
- package/dist/src/commands/aw-capabilities.js.map +1 -1
- package/dist/src/commands/managed-commands.d.ts +26 -0
- package/dist/src/commands/managed-commands.js +277 -0
- package/dist/src/commands/managed-commands.js.map +1 -0
- package/dist/src/commands/operation-plan.d.ts +30 -1
- package/dist/src/commands/operation-plan.js.map +1 -1
- package/dist/src/commands/operation-planner.d.ts +1 -0
- package/dist/src/commands/operation-planner.js +1 -0
- package/dist/src/commands/operation-planner.js.map +1 -1
- package/dist/src/commands/plugin-capabilities.js +29 -1
- package/dist/src/commands/plugin-capabilities.js.map +1 -1
- package/dist/src/commands/rebuild-command.d.ts +2 -1
- package/dist/src/commands/rebuild-command.js +66 -26
- package/dist/src/commands/rebuild-command.js.map +1 -1
- package/dist/src/commands/rebuild-integration.d.ts +13 -1
- package/dist/src/commands/rebuild-integration.js +535 -61
- package/dist/src/commands/rebuild-integration.js.map +1 -1
- package/dist/src/commands/rebuild-operations.d.ts +3 -1
- package/dist/src/commands/rebuild-operations.js +9 -5
- package/dist/src/commands/rebuild-operations.js.map +1 -1
- package/dist/src/generators/local-plugin.js +16 -0
- package/dist/src/generators/local-plugin.js.map +1 -1
- package/dist/src/generators/permissions.d.ts +5 -2
- package/dist/src/generators/permissions.js +28 -15
- package/dist/src/generators/permissions.js.map +1 -1
- package/dist/src/index.js +11 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/output/command-receipt.d.ts +3 -1
- package/dist/src/output/command-receipt.js +30 -9
- package/dist/src/output/command-receipt.js.map +1 -1
- package/dist/src/output/rebuild-progress.js +14 -0
- package/dist/src/output/rebuild-progress.js.map +1 -1
- package/dist/src/portable/materializer.js +3 -0
- package/dist/src/portable/materializer.js.map +1 -1
- package/dist/src/review/skill-materialization.d.ts +14 -1
- package/dist/src/review/skill-materialization.js +138 -0
- package/dist/src/review/skill-materialization.js.map +1 -1
- package/dist/src/tui/console-app-v4.js +19 -7
- package/dist/src/tui/console-app-v4.js.map +1 -1
- package/dist/src/tui/controller-runtime.js +23 -9
- package/dist/src/tui/controller-runtime.js.map +1 -1
- package/dist/src/tui/controller.d.ts +5 -1
- package/dist/src/tui/controller.js +24 -3
- package/dist/src/tui/controller.js.map +1 -1
- package/dist/src/tui/diagnostic-projection.js +34 -6
- package/dist/src/tui/diagnostic-projection.js.map +1 -1
- package/dist/src/tui/operation-review-planner.js +102 -16
- package/dist/src/tui/operation-review-planner.js.map +1 -1
- package/dist/src/types.d.ts +22 -2
- package/dist/src/types.js.map +1 -1
- package/dist/src/utils/artifact-plan.d.ts +4 -3
- package/dist/src/utils/artifact-plan.js +50 -7
- package/dist/src/utils/artifact-plan.js.map +1 -1
- package/dist/src/utils/artifact-renderer.d.ts +7 -3
- package/dist/src/utils/artifact-renderer.js +19 -6
- package/dist/src/utils/artifact-renderer.js.map +1 -1
- package/dist/src/utils/artifact-request.d.ts +16 -5
- package/dist/src/utils/artifact-request.js +27 -15
- package/dist/src/utils/artifact-request.js.map +1 -1
- package/dist/src/utils/artifact-sources.d.ts +4 -0
- package/dist/src/utils/artifact-sources.js +17 -0
- package/dist/src/utils/artifact-sources.js.map +1 -1
- package/dist/src/utils/bundle-layout.js +7 -0
- package/dist/src/utils/bundle-layout.js.map +1 -1
- package/dist/src/utils/claude-skills-root.d.ts +8 -0
- package/dist/src/utils/claude-skills-root.js +76 -0
- package/dist/src/utils/claude-skills-root.js.map +1 -0
- package/dist/src/utils/codex-skills-root.d.ts +4 -0
- package/dist/src/utils/codex-skills-root.js +25 -0
- package/dist/src/utils/codex-skills-root.js.map +1 -0
- package/dist/src/utils/dynamic-skill-tree.d.ts +1 -0
- package/dist/src/utils/dynamic-skill-tree.js +25 -6
- package/dist/src/utils/dynamic-skill-tree.js.map +1 -1
- package/dist/src/utils/local-marketplace.d.ts +9 -0
- package/dist/src/utils/local-marketplace.js +170 -90
- package/dist/src/utils/local-marketplace.js.map +1 -1
- package/dist/src/utils/managed-command-closure.d.ts +3 -0
- package/dist/src/utils/managed-command-closure.js +35 -0
- package/dist/src/utils/managed-command-closure.js.map +1 -0
- package/dist/src/utils/managed-command-evidence.d.ts +7 -0
- package/dist/src/utils/managed-command-evidence.js +86 -0
- package/dist/src/utils/managed-command-evidence.js.map +1 -0
- package/dist/src/utils/managed-command-materialization.d.ts +106 -0
- package/dist/src/utils/managed-command-materialization.js +307 -0
- package/dist/src/utils/managed-command-materialization.js.map +1 -0
- package/dist/src/utils/managed-command-runtime.d.ts +32 -0
- package/dist/src/utils/managed-command-runtime.js +110 -0
- package/dist/src/utils/managed-command-runtime.js.map +1 -0
- package/dist/src/utils/managed-command-store.d.ts +124 -0
- package/dist/src/utils/managed-command-store.js +576 -0
- package/dist/src/utils/managed-command-store.js.map +1 -0
- package/dist/src/utils/ownership.d.ts +2 -0
- package/dist/src/utils/plugin-config-impact.d.ts +8 -1
- package/dist/src/utils/plugin-config-impact.js +101 -26
- package/dist/src/utils/plugin-config-impact.js.map +1 -1
- package/dist/src/utils/plugin-config-write.js +142 -60
- package/dist/src/utils/plugin-config-write.js.map +1 -1
- package/dist/src/utils/rendered-contract.js +18 -1
- package/dist/src/utils/rendered-contract.js.map +1 -1
- package/package.json +3 -3
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import fs from 'fs-extra';
|
|
3
|
+
export async function resolveCodexSkillsRelativeRoot(plugin, marketplaceFallbackRoot) {
|
|
4
|
+
const manifestPaths = [
|
|
5
|
+
path.join(plugin.rootDir, '.codex-plugin', 'plugin.json'),
|
|
6
|
+
...(marketplaceFallbackRoot
|
|
7
|
+
? [path.join(marketplaceFallbackRoot, '.codex-plugin', 'plugin.json')]
|
|
8
|
+
: []),
|
|
9
|
+
];
|
|
10
|
+
let manifest = null;
|
|
11
|
+
for (const manifestPath of manifestPaths) {
|
|
12
|
+
manifest = await fs.readJson(manifestPath).catch(() => null);
|
|
13
|
+
if (manifest)
|
|
14
|
+
break;
|
|
15
|
+
}
|
|
16
|
+
const raw = typeof manifest?.skills === 'string' && manifest.skills.trim() !== ''
|
|
17
|
+
? manifest.skills
|
|
18
|
+
: plugin.manifest.skills ?? './codex/skills';
|
|
19
|
+
const normalized = path.posix.normalize(raw.replace(/^\.\//u, ''));
|
|
20
|
+
if (normalized === '..' || normalized.startsWith('../') || path.isAbsolute(normalized)) {
|
|
21
|
+
throw new Error(`Codex plugin skills root 越界:${raw}`);
|
|
22
|
+
}
|
|
23
|
+
return normalized;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=codex-skills-root.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex-skills-root.js","sourceRoot":"","sources":["../../../src/utils/codex-skills-root.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,MAAM,UAAU,CAAC;AAI1B,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAClD,MAA0F,EAC1F,uBAAgC;IAEhC,MAAM,aAAa,GAAG;QACpB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,eAAe,EAAE,aAAa,CAAC;QACzD,GAAG,CAAC,uBAAuB;YACzB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,eAAe,EAAE,aAAa,CAAC,CAAC;YACtE,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;IACF,IAAI,QAAQ,GAAmC,IAAI,CAAC;IACpD,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE,CAAC;QACzC,QAAQ,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAmC,CAAC;QAC/F,IAAI,QAAQ;YAAE,MAAM;IACtB,CAAC;IACD,MAAM,GAAG,GAAG,OAAO,QAAQ,EAAE,MAAM,KAAK,QAAQ,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE;QAC/E,CAAC,CAAC,QAAQ,CAAC,MAAM;QACjB,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,IAAI,gBAAgB,CAAC;IAC/C,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;IACnE,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QACvF,MAAM,IAAI,KAAK,CAAC,+BAA+B,GAAG,EAAE,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC"}
|
|
@@ -6,6 +6,7 @@ export declare const AW_PLUGIN_REQUIREMENTS_RECEIPT_PATH = "aw-plugin-requiremen
|
|
|
6
6
|
export interface DynamicSkillTree {
|
|
7
7
|
skillKey: string;
|
|
8
8
|
files: Record<string, Buffer>;
|
|
9
|
+
fileModes?: Record<string, 0o755>;
|
|
9
10
|
}
|
|
10
11
|
export declare function validatePortableSkillName(value: string, fieldName?: string): void;
|
|
11
12
|
export declare function validateCodexOpenAiYaml(rawContent: string): void;
|
|
@@ -2,6 +2,7 @@ import crypto from 'node:crypto';
|
|
|
2
2
|
import path from 'node:path';
|
|
3
3
|
import fs from 'fs-extra';
|
|
4
4
|
import YAML from 'yaml';
|
|
5
|
+
import { catalogFileMode } from '@lesliechan721/aw-plugin-core';
|
|
5
6
|
import { validatePortableSkillDirectoriesRoot as validateCorePortableSkillDirectoriesRoot, validatePortableSkillDirectory as validateCorePortableSkillDirectory, validatePortableSkillName as validateCorePortableSkillName, parseAwPluginRequirementsReceipt, } from '@lesliechan721/aw-plugin-core/manifest';
|
|
6
7
|
import { assertOwnedSkillPath, createSkillOwnerMarkerContent, readSkillOwnerMarker, SKILL_OWNER_MARKER, } from './ownership.js';
|
|
7
8
|
import { isSkillAuthorOnlyPath } from './skill-authoring.js';
|
|
@@ -142,7 +143,7 @@ function assertNoFileDirectoryConflicts(files) {
|
|
|
142
143
|
}
|
|
143
144
|
}
|
|
144
145
|
}
|
|
145
|
-
async function collectDirectoryFiles(rootDir, ownerMarkerPolicy, requirementsReceiptPolicy) {
|
|
146
|
+
async function collectDirectoryFiles(rootDir, ownerMarkerPolicy, requirementsReceiptPolicy, fileModes) {
|
|
146
147
|
const files = {};
|
|
147
148
|
const visit = async (currentDir, parentPath) => {
|
|
148
149
|
const entries = await fs.readdir(currentDir, { withFileTypes: true });
|
|
@@ -174,6 +175,12 @@ async function collectDirectoryFiles(rootDir, ownerMarkerPolicy, requirementsRec
|
|
|
174
175
|
throw new Error(`Skill 静态源只支持普通文件和目录:${relativePath}`);
|
|
175
176
|
}
|
|
176
177
|
files[relativePath] = await fs.readFile(absolutePath);
|
|
178
|
+
if (catalogFileMode(relativePath, (await fs.stat(absolutePath)).mode) === '100755') {
|
|
179
|
+
fileModes[relativePath] = 0o755;
|
|
180
|
+
}
|
|
181
|
+
else {
|
|
182
|
+
delete fileModes[relativePath];
|
|
183
|
+
}
|
|
177
184
|
}
|
|
178
185
|
};
|
|
179
186
|
await visit(rootDir, '');
|
|
@@ -200,10 +207,13 @@ export async function validateSkillDirectory(rootDir, target, options) {
|
|
|
200
207
|
if (!rootStats || rootStats.isSymbolicLink() || !rootStats.isDirectory()) {
|
|
201
208
|
throw new Error(`Skill 根路径必须是真实目录:${rootDir}`);
|
|
202
209
|
}
|
|
210
|
+
const fileModes = {};
|
|
203
211
|
const tree = {
|
|
204
212
|
skillKey: path.basename(rootDir),
|
|
205
|
-
files: await collectDirectoryFiles(rootDir, options?.ownerMarkerPolicy ?? 'reject', options?.requirementsReceiptPolicy ?? 'reject'),
|
|
213
|
+
files: await collectDirectoryFiles(rootDir, options?.ownerMarkerPolicy ?? 'reject', options?.requirementsReceiptPolicy ?? 'reject', fileModes),
|
|
206
214
|
};
|
|
215
|
+
if (Object.keys(fileModes).length > 0)
|
|
216
|
+
tree.fileModes = fileModes;
|
|
207
217
|
validatePresentSkillTree({
|
|
208
218
|
target,
|
|
209
219
|
skillKey: tree.skillKey,
|
|
@@ -241,8 +251,9 @@ export async function createDynamicSkillExpectedTree(options) {
|
|
|
241
251
|
return { skillKey, files: {} };
|
|
242
252
|
}
|
|
243
253
|
const files = {};
|
|
254
|
+
const fileModes = {};
|
|
244
255
|
for (const sourceDir of options.sourceDirs ?? []) {
|
|
245
|
-
Object.assign(files, await collectDirectoryFiles(sourceDir, 'reject', options.sourceRequirementsReceiptPolicy ?? 'reject'));
|
|
256
|
+
Object.assign(files, await collectDirectoryFiles(sourceDir, 'reject', options.sourceRequirementsReceiptPolicy ?? 'reject', fileModes));
|
|
246
257
|
}
|
|
247
258
|
for (const [relativePath, content] of Object.entries(options.artifact.content?.files ?? {})) {
|
|
248
259
|
if (isSkillAuthorOnlyPath(relativePath)) {
|
|
@@ -255,6 +266,7 @@ export async function createDynamicSkillExpectedTree(options) {
|
|
|
255
266
|
throw new Error(`Skill renderer 不能声明保留文件 ${AW_PLUGIN_REQUIREMENTS_RECEIPT_PATH}。`);
|
|
256
267
|
}
|
|
257
268
|
files[relativePath] = Buffer.from(content, 'utf8');
|
|
269
|
+
delete fileModes[relativePath];
|
|
258
270
|
}
|
|
259
271
|
if (options.requirementsReceipt) {
|
|
260
272
|
const existingReceipt = files[AW_PLUGIN_REQUIREMENTS_RECEIPT_PATH];
|
|
@@ -273,6 +285,7 @@ export async function createDynamicSkillExpectedTree(options) {
|
|
|
273
285
|
}
|
|
274
286
|
}
|
|
275
287
|
files[AW_PLUGIN_REQUIREMENTS_RECEIPT_PATH] = options.requirementsReceipt;
|
|
288
|
+
delete fileModes[AW_PLUGIN_REQUIREMENTS_RECEIPT_PATH];
|
|
276
289
|
}
|
|
277
290
|
validatePresentSkillTree({
|
|
278
291
|
target: options.artifact.target,
|
|
@@ -285,7 +298,7 @@ export async function createDynamicSkillExpectedTree(options) {
|
|
|
285
298
|
throw new Error(`${options.artifact.target} "${skillKey}" 缺少 README.md 内容。`);
|
|
286
299
|
}
|
|
287
300
|
}
|
|
288
|
-
return { skillKey, files };
|
|
301
|
+
return { skillKey, files, ...(Object.keys(fileModes).length > 0 ? { fileModes } : {}) };
|
|
289
302
|
}
|
|
290
303
|
export function createDynamicSkillTreeContentDigest(tree) {
|
|
291
304
|
const hash = crypto.createHash('sha256');
|
|
@@ -297,6 +310,7 @@ export function createDynamicSkillTreeContentDigest(tree) {
|
|
|
297
310
|
contentLength.writeBigUInt64BE(BigInt(content.length));
|
|
298
311
|
hash.update(pathLength);
|
|
299
312
|
hash.update(relativePathBytes);
|
|
313
|
+
hash.update(catalogFileMode(relativePath, tree.fileModes?.[relativePath] ?? 0o644));
|
|
300
314
|
hash.update(contentLength);
|
|
301
315
|
hash.update(content);
|
|
302
316
|
}
|
|
@@ -339,6 +353,9 @@ export async function skillDirectoryMatchesExpectedTree(rootDir, tree) {
|
|
|
339
353
|
const expected = expectedFiles.get(relativePath);
|
|
340
354
|
if (!expected || !expected.equals(await fs.readFile(absolutePath)))
|
|
341
355
|
return false;
|
|
356
|
+
if (catalogFileMode(relativePath, (await fs.stat(absolutePath)).mode)
|
|
357
|
+
!== catalogFileMode(relativePath, tree.fileModes?.[relativePath] ?? 0o644))
|
|
358
|
+
return false;
|
|
342
359
|
seenFiles.add(relativePath);
|
|
343
360
|
}
|
|
344
361
|
}
|
|
@@ -410,6 +427,7 @@ export async function writeDynamicSkillTree(rootDir, tree, ownership) {
|
|
|
410
427
|
for (const [relativePath, content] of entries) {
|
|
411
428
|
const targetPath = path.join(stagingRoot, relativePath.split('/').join(path.sep));
|
|
412
429
|
await fs.writeFile(targetPath, content);
|
|
430
|
+
await fs.chmod(targetPath, tree.fileModes?.[relativePath] ?? 0o644);
|
|
413
431
|
writtenPaths.push(path.join(rootDir, relativePath.split('/').join(path.sep)));
|
|
414
432
|
}
|
|
415
433
|
if (ownership) {
|
|
@@ -451,11 +469,12 @@ export async function readDynamicSkillTree(rootDir, target) {
|
|
|
451
469
|
if (rootStats.isSymbolicLink() || !rootStats.isDirectory()) {
|
|
452
470
|
throw new Error(`Skill runtime 根路径必须是真实目录:${rootDir}`);
|
|
453
471
|
}
|
|
454
|
-
const
|
|
472
|
+
const fileModes = {};
|
|
473
|
+
const files = await collectDirectoryFiles(rootDir, 'ignore', 'allow', fileModes);
|
|
455
474
|
if (!files[SKILL_FILE_PATH] || (target === 'codex.skill' && !files[CODEX_OPENAI_YAML_PATH])) {
|
|
456
475
|
return null;
|
|
457
476
|
}
|
|
458
|
-
const tree = { skillKey: path.basename(rootDir), files };
|
|
477
|
+
const tree = { skillKey: path.basename(rootDir), files, ...(Object.keys(fileModes).length > 0 ? { fileModes } : {}) };
|
|
459
478
|
validatePresentSkillTree({
|
|
460
479
|
target,
|
|
461
480
|
skillKey: tree.skillKey,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dynamic-skill-tree.js","sourceRoot":"","sources":["../../../src/utils/dynamic-skill-tree.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"dynamic-skill-tree.js","sourceRoot":"","sources":["../../../src/utils/dynamic-skill-tree.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { MarketplaceManifest, PlatformName } from '../types.js';
|
|
2
|
+
import { type CodexNativeRenderReceipt } from './codex-native-render-receipt.js';
|
|
2
3
|
export declare function getNamespacedMarketplaceName(sourceId: string): string;
|
|
3
4
|
export declare function projectMarketplaceManifestForPlatform(manifest: MarketplaceManifest, platform: PlatformName): MarketplaceManifest;
|
|
4
5
|
export declare function getLocalMarketplacePluginRoot(rootDir: string, pluginName: string): string;
|
|
@@ -35,6 +36,12 @@ export declare function readStrictNamespacedMarketplaceRoot(options: {
|
|
|
35
36
|
sourceIdentity?: string;
|
|
36
37
|
marketplaceName?: string;
|
|
37
38
|
}): Promise<StrictNamespacedMarketplaceRoot | null>;
|
|
39
|
+
export interface PreservedPlatformReceipt {
|
|
40
|
+
pluginName: string;
|
|
41
|
+
receipt: CodexNativeRenderReceipt;
|
|
42
|
+
}
|
|
43
|
+
/** Rebind only the combined payload digest after verified, unrelated platform changes. */
|
|
44
|
+
export declare function refreshPreservedPlatformReceipt(stagingRoot: string, retained: PreservedPlatformReceipt): Promise<void>;
|
|
38
45
|
/**
|
|
39
46
|
* Replays unselected plugin copies into a fresh Catalog generation.
|
|
40
47
|
* Retains their payload and marketplace entries even when the Catalog changes.
|
|
@@ -48,6 +55,8 @@ export declare function replayNamespacedMarketplacePluginProjections(options: {
|
|
|
48
55
|
sourceIdentity: string;
|
|
49
56
|
marketplaceName: string;
|
|
50
57
|
rematerializedPluginIds?: ReadonlySet<string>;
|
|
58
|
+
rematerializedPluginPlatforms?: ReadonlyMap<string, ReadonlySet<PlatformName>>;
|
|
59
|
+
onPreservedPlatformReceipt?: (receipt: PreservedPlatformReceipt) => void;
|
|
51
60
|
}): Promise<void>;
|
|
52
61
|
export declare function replayNamespacedCodexSkillOverlays(options: {
|
|
53
62
|
sourceRoot: string;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import path from 'node:path';
|
|
2
2
|
import fs from 'fs-extra';
|
|
3
|
+
import { normalizeInstalledCommandProducer, validateCommandEntryFiles } from '@lesliechan721/aw-plugin-core/manifest';
|
|
3
4
|
import { readSkillOwnerMarker } from './ownership.js';
|
|
4
5
|
import { readJsonFile } from './json.js';
|
|
5
6
|
import { assertStrictSemVer } from './manifest.js';
|
|
@@ -7,7 +8,7 @@ import { resolveCliPackageRoot } from './paths.js';
|
|
|
7
8
|
import { canonicalizePathThroughExistingAncestor } from './state-paths.js';
|
|
8
9
|
import { sanitizeCatalogSourceErrorMessage } from './catalog-public-error.js';
|
|
9
10
|
import { normalizeMarketplaceProductToken } from './platform-support.js';
|
|
10
|
-
import { CODEX_NATIVE_RENDER_RECEIPT_PATH, parseCodexNativeRenderReceipt, } from './codex-native-render-receipt.js';
|
|
11
|
+
import { CODEX_NATIVE_RENDER_RECEIPT_PATH, parseCodexNativeRenderReceipt, serializeCodexNativeRenderReceipt, } from './codex-native-render-receipt.js';
|
|
11
12
|
import { calculateCodexNativeRenderPayloadDigest } from './catalog-digests.js';
|
|
12
13
|
import { createCodexSkillStagingTreeContentDigest } from './codex-skill-staging.js';
|
|
13
14
|
import { readDynamicSkillTree } from './dynamic-skill-tree.js';
|
|
@@ -276,86 +277,36 @@ async function readProjectionJson(trustedRoot, filePath) {
|
|
|
276
277
|
throw new CodexNativeProjectionNotReusableError();
|
|
277
278
|
}
|
|
278
279
|
}
|
|
279
|
-
async function
|
|
280
|
-
const
|
|
281
|
-
const
|
|
282
|
-
|
|
283
|
-
const sourceTargets = nativeCodexTargets(sourceManifest);
|
|
284
|
-
if (sourceTargets.length === 0) {
|
|
285
|
-
await assertRegularProjectionTree(sourcePluginRoot);
|
|
286
|
-
if (sourceManifest.name !== options.pluginName) {
|
|
287
|
-
throw new Error('marketplaceProjectionIdentityMismatch: plugin identity does not match its marketplace path.');
|
|
288
|
-
}
|
|
289
|
-
if (!await inspectMarketplacePath(options.stagingRoot, stagingPluginRoot, 'directory')) {
|
|
290
|
-
throw new CodexNativeProjectionNotReusableError();
|
|
291
|
-
}
|
|
292
|
-
const stagingManifest = await readProjectionJson(options.stagingRoot, path.join(stagingPluginRoot, '.agents-plugin', 'plugin.json'));
|
|
293
|
-
if (stagingManifest.name !== options.pluginName) {
|
|
294
|
-
throw new Error('marketplaceProjectionIdentityMismatch: plugin identity does not match its marketplace path.');
|
|
295
|
-
}
|
|
296
|
-
for (const platform of ['codex', 'claude']) {
|
|
297
|
-
const manifestPath = path.join(sourcePluginRoot, `.${platform}-plugin`, 'plugin.json');
|
|
298
|
-
if (!await inspectMarketplacePath(options.sourceRoot, manifestPath, 'file'))
|
|
299
|
-
continue;
|
|
300
|
-
const manifest = await readProjectionJson(options.sourceRoot, manifestPath);
|
|
301
|
-
if (manifest.name !== options.pluginName) {
|
|
302
|
-
throw new Error('marketplaceProjectionIdentityMismatch: plugin identity does not match its marketplace path.');
|
|
303
|
-
}
|
|
304
|
-
if (manifest.version !== sourceManifest.version)
|
|
305
|
-
throw new CodexNativeProjectionNotReusableError();
|
|
306
|
-
}
|
|
307
|
-
await assertRegularProjectionTree(stagingPluginRoot);
|
|
308
|
-
await fs.remove(stagingPluginRoot);
|
|
309
|
-
await fs.copy(sourcePluginRoot, stagingPluginRoot, { dereference: false });
|
|
310
|
-
return;
|
|
311
|
-
}
|
|
312
|
-
await assertRegularProjectionTree(sourcePluginRoot);
|
|
313
|
-
const sourceCodexManifest = await readProjectionJson(options.sourceRoot, path.join(sourcePluginRoot, '.codex-plugin', 'plugin.json'));
|
|
314
|
-
if (sourceManifest.name !== options.pluginName || sourceCodexManifest.name !== options.pluginName) {
|
|
280
|
+
async function readValidatedCodexProjection(options) {
|
|
281
|
+
const pluginRoot = path.join(options.sourceRoot, 'plugins', options.pluginName);
|
|
282
|
+
const platformManifest = await readProjectionJson(options.sourceRoot, path.join(pluginRoot, '.codex-plugin', 'plugin.json'));
|
|
283
|
+
if (platformManifest.name !== options.pluginName)
|
|
315
284
|
throw new Error('codexNativeProjectionIdentityMismatch: plugin identity does not match its marketplace path.');
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
if (!sourceSkillsRelative) {
|
|
285
|
+
const skillsRelative = normalizePluginRelativeDirectory(platformManifest.skills, 'codex/skills');
|
|
286
|
+
if (!skillsRelative)
|
|
319
287
|
throw new Error('codexNativeProjectionUnsafe: Codex Skills root is unsafe.');
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
const receiptStats = await inspectMarketplacePath(options.sourceRoot, receiptPath, 'file');
|
|
323
|
-
if (!receiptStats)
|
|
288
|
+
const receiptPath = path.join(pluginRoot, CODEX_NATIVE_RENDER_RECEIPT_PATH);
|
|
289
|
+
if (!await inspectMarketplacePath(options.sourceRoot, receiptPath, 'file'))
|
|
324
290
|
throw new CodexNativeProjectionNotReusableError();
|
|
325
291
|
let receipt;
|
|
326
292
|
try {
|
|
327
|
-
|
|
328
|
-
receipt = parseCodexNativeRenderReceipt(receiptContent);
|
|
293
|
+
receipt = parseCodexNativeRenderReceipt(await fs.readFile(receiptPath, 'utf8'));
|
|
329
294
|
}
|
|
330
295
|
catch (error) {
|
|
331
296
|
if (error.code)
|
|
332
297
|
throw error;
|
|
333
298
|
throw new CodexNativeProjectionNotReusableError();
|
|
334
299
|
}
|
|
335
|
-
|
|
336
|
-
if (receipt.logicalPluginId !== logicalPluginId || receipt.sourceIdentity !== options.sourceIdentity) {
|
|
300
|
+
if (receipt.logicalPluginId !== `${options.sourceId}/${options.pluginName}` || receipt.sourceIdentity !== options.sourceIdentity) {
|
|
337
301
|
throw new Error('codexNativeProjectionIdentityMismatch: receipt identity does not match its marketplace.');
|
|
338
302
|
}
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
await assertRegularProjectionTree(stagingPluginRoot);
|
|
343
|
-
const stagingManifest = await readProjectionJson(options.stagingRoot, path.join(stagingPluginRoot, '.agents-plugin', 'plugin.json'));
|
|
344
|
-
if (stagingManifest.name !== options.pluginName) {
|
|
345
|
-
throw new Error('codexNativeProjectionIdentityMismatch: plugin identity does not match its marketplace path.');
|
|
346
|
-
}
|
|
347
|
-
if (sourceManifest.version !== receipt.pluginVersion
|
|
348
|
-
|| sourceCodexManifest.version !== receipt.pluginVersion) {
|
|
303
|
+
// The other platform may have updated the common bundle metadata. The installed
|
|
304
|
+
// Codex manifest and verified receipt retain this platform's actual version and targets.
|
|
305
|
+
if (platformManifest.version !== receipt.pluginVersion)
|
|
349
306
|
throw new CodexNativeProjectionNotReusableError();
|
|
350
|
-
}
|
|
351
|
-
const receiptTargetIdentity = receipt.targets.map(({ id, skillKey }) => ({ id, skillKey }));
|
|
352
|
-
if (JSON.stringify(sourceTargets) !== JSON.stringify(receiptTargetIdentity)) {
|
|
353
|
-
throw new CodexNativeProjectionNotReusableError();
|
|
354
|
-
}
|
|
355
|
-
const sourceSkillsRoot = path.join(sourcePluginRoot, ...sourceSkillsRelative.split('/'));
|
|
356
|
-
const emptyArtifactDigest = createCodexSkillStagingTreeContentDigest({ skillKey: 'empty', files: {} });
|
|
307
|
+
const emptyDigest = createCodexSkillStagingTreeContentDigest({ skillKey: 'empty', files: {} });
|
|
357
308
|
for (const target of receipt.targets) {
|
|
358
|
-
const skillRoot = path.join(
|
|
309
|
+
const skillRoot = path.join(pluginRoot, ...skillsRelative.split('/'), target.skillKey);
|
|
359
310
|
const stats = await inspectMarketplacePath(options.sourceRoot, skillRoot, 'directory');
|
|
360
311
|
if (stats)
|
|
361
312
|
await assertRegularProjectionTree(skillRoot, true);
|
|
@@ -368,28 +319,141 @@ async function preserveMarketplacePluginProjection(options) {
|
|
|
368
319
|
throw error;
|
|
369
320
|
throw new CodexNativeProjectionNotReusableError();
|
|
370
321
|
}
|
|
371
|
-
if ((stats && !tree)
|
|
372
|
-
|| (tree ? createCodexSkillStagingTreeContentDigest(tree) : emptyArtifactDigest) !== target.artifactDigest) {
|
|
322
|
+
if ((stats && !tree) || (tree ? createCodexSkillStagingTreeContentDigest(tree) : emptyDigest) !== target.artifactDigest)
|
|
373
323
|
throw new CodexNativeProjectionNotReusableError();
|
|
374
|
-
}
|
|
375
324
|
}
|
|
376
|
-
if (await calculateCodexNativeRenderPayloadDigest(
|
|
325
|
+
if (await calculateCodexNativeRenderPayloadDigest(pluginRoot) !== receipt.payloadDigest)
|
|
377
326
|
throw new CodexNativeProjectionNotReusableError();
|
|
327
|
+
return receipt;
|
|
328
|
+
}
|
|
329
|
+
async function preserveMarketplacePluginProjection(options) {
|
|
330
|
+
const sourcePluginRoot = path.join(options.sourceRoot, 'plugins', options.pluginName);
|
|
331
|
+
const stagingPluginRoot = path.join(options.stagingRoot, 'plugins', options.pluginName);
|
|
332
|
+
const sourceManifest = await readProjectionJson(options.sourceRoot, path.join(sourcePluginRoot, '.agents-plugin', 'plugin.json'));
|
|
333
|
+
const stagingManifest = await readProjectionJson(options.stagingRoot, path.join(stagingPluginRoot, '.agents-plugin', 'plugin.json'));
|
|
334
|
+
if (sourceManifest.name !== options.pluginName || stagingManifest.name !== options.pluginName)
|
|
335
|
+
throw new Error(`${nativeCodexTargets(sourceManifest).length ? 'codexNativeProjectionIdentityMismatch' : 'marketplaceProjectionIdentityMismatch'}: plugin identity does not match its marketplace path.`);
|
|
336
|
+
await assertRegularProjectionTree(sourcePluginRoot);
|
|
337
|
+
await assertRegularProjectionTree(stagingPluginRoot);
|
|
338
|
+
let receipt;
|
|
339
|
+
if (nativeCodexTargets(sourceManifest).length || await inspectMarketplacePath(options.sourceRoot, path.join(sourcePluginRoot, CODEX_NATIVE_RENDER_RECEIPT_PATH), 'file')) {
|
|
340
|
+
receipt = await readValidatedCodexProjection(options);
|
|
378
341
|
}
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
342
|
+
else {
|
|
343
|
+
for (const platform of ['codex', 'claude']) {
|
|
344
|
+
const manifestPath = path.join(sourcePluginRoot, `.${platform}-plugin`, 'plugin.json');
|
|
345
|
+
if (!await inspectMarketplacePath(options.sourceRoot, manifestPath, 'file'))
|
|
346
|
+
continue;
|
|
347
|
+
const manifest = await readProjectionJson(options.sourceRoot, manifestPath);
|
|
348
|
+
if (manifest.name !== options.pluginName)
|
|
349
|
+
throw new Error('marketplaceProjectionIdentityMismatch: plugin identity does not match its marketplace path.');
|
|
350
|
+
assertStrictSemVer(manifest.version, 'preserved platform plugin version');
|
|
386
351
|
}
|
|
387
|
-
await fs.remove(stagingPluginRoot);
|
|
388
|
-
await fs.move(candidateRoot, stagingPluginRoot);
|
|
389
352
|
}
|
|
390
|
-
|
|
391
|
-
|
|
353
|
+
await fs.remove(stagingPluginRoot);
|
|
354
|
+
await fs.copy(sourcePluginRoot, stagingPluginRoot, { dereference: false });
|
|
355
|
+
if (receipt && await calculateCodexNativeRenderPayloadDigest(stagingPluginRoot) !== receipt.payloadDigest)
|
|
356
|
+
throw new CodexNativeProjectionNotReusableError();
|
|
357
|
+
}
|
|
358
|
+
async function preserveUnrequestedMarketplacePlatforms(options) {
|
|
359
|
+
if (options.requested.has('codex') && options.requested.has('claude'))
|
|
360
|
+
return { platforms: [] };
|
|
361
|
+
const sourcePluginRoot = path.join(options.sourceRoot, 'plugins', options.pluginName);
|
|
362
|
+
const stagingPluginRoot = path.join(options.stagingRoot, 'plugins', options.pluginName);
|
|
363
|
+
const sourceManifest = await readProjectionJson(options.sourceRoot, path.join(sourcePluginRoot, '.agents-plugin', 'plugin.json'));
|
|
364
|
+
if (sourceManifest.name !== options.pluginName)
|
|
365
|
+
throw new Error('marketplaceProjectionIdentityMismatch: retained plugin identity does not match its path.');
|
|
366
|
+
const platforms = [];
|
|
367
|
+
let receipt;
|
|
368
|
+
for (const platform of ['codex', 'claude']) {
|
|
369
|
+
if (options.requested.has(platform))
|
|
370
|
+
continue;
|
|
371
|
+
const manifestRelative = `.${platform}-plugin`;
|
|
372
|
+
if (!await inspectMarketplacePath(options.sourceRoot, path.join(sourcePluginRoot, manifestRelative, 'plugin.json'), 'file'))
|
|
373
|
+
continue;
|
|
374
|
+
const manifest = await readProjectionJson(options.sourceRoot, path.join(sourcePluginRoot, manifestRelative, 'plugin.json'));
|
|
375
|
+
if (manifest.name !== options.pluginName)
|
|
376
|
+
throw new Error('marketplaceProjectionIdentityMismatch: retained platform identity does not match its path.');
|
|
377
|
+
assertStrictSemVer(manifest.version, 'preserved platform plugin version');
|
|
378
|
+
const roots = new Set([platform, manifestRelative]);
|
|
379
|
+
const skillsRelative = manifest.skills === undefined ? undefined : normalizePluginRelativeDirectory(manifest.skills, `${platform}/skills`);
|
|
380
|
+
if (manifest.skills !== undefined) {
|
|
381
|
+
const relative = normalizePluginRelativeDirectory(manifest.skills, `${platform}/skills`);
|
|
382
|
+
if (!relative || ['codex', 'claude'].some((other) => other !== platform && (relative === other || relative.startsWith(`${other}/`))) || ['.agents-plugin', '.codex-plugin', '.claude-plugin'].some((root) => relative === root || relative.startsWith(`${root}/`))) {
|
|
383
|
+
throw new Error('marketplaceProjectionInvalid: retained Skill root overlaps another platform.');
|
|
384
|
+
}
|
|
385
|
+
roots.add(relative);
|
|
386
|
+
}
|
|
387
|
+
for (const requested of options.requested) {
|
|
388
|
+
const requestedManifest = await readProjectionJson(options.stagingRoot, path.join(stagingPluginRoot, `.${requested}-plugin`, 'plugin.json'));
|
|
389
|
+
const requestedSkills = requestedManifest.skills === undefined ? undefined : normalizePluginRelativeDirectory(requestedManifest.skills, `${requested}/skills`);
|
|
390
|
+
if (requestedManifest.skills !== undefined && !requestedSkills)
|
|
391
|
+
throw new Error('marketplaceProjectionInvalid: requested Skill root is unsafe.');
|
|
392
|
+
for (const retainedRoot of roots)
|
|
393
|
+
for (const requestedRoot of [requested, `.${requested}-plugin`, '.agents-plugin', ...(requestedSkills ? [requestedSkills] : [])]) {
|
|
394
|
+
if (retainedRoot === requestedRoot || retainedRoot.startsWith(`${requestedRoot}/`) || requestedRoot.startsWith(`${retainedRoot}/`))
|
|
395
|
+
throw new Error('marketplaceProjectionInvalid: retained platform resources overlap the requested platform.');
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
const codexReceipt = platform === 'codex' && await inspectMarketplacePath(options.sourceRoot, path.join(sourcePluginRoot, CODEX_NATIVE_RENDER_RECEIPT_PATH), 'file')
|
|
399
|
+
? await readValidatedCodexProjection(options) : undefined;
|
|
400
|
+
if (platform === 'codex' && !codexReceipt) {
|
|
401
|
+
for (const target of nativeCodexTargets(sourceManifest)) {
|
|
402
|
+
const tree = skillsRelative ? path.join(sourcePluginRoot, ...skillsRelative.split('/'), target.skillKey) : undefined;
|
|
403
|
+
if (tree && await inspectMarketplacePath(options.sourceRoot, tree, 'directory'))
|
|
404
|
+
throw new Error('codexNativeProjectionDamaged: an installed dynamic Skill has no render receipt; reinstall both platforms.');
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
const checked = new Set();
|
|
408
|
+
const validateRecords = async (directory) => {
|
|
409
|
+
if (checked.has(directory))
|
|
410
|
+
return;
|
|
411
|
+
checked.add(directory);
|
|
412
|
+
for (const entry of await fs.readdir(directory, { withFileTypes: true })) {
|
|
413
|
+
const absolute = path.join(directory, entry.name);
|
|
414
|
+
if (entry.isDirectory())
|
|
415
|
+
await validateRecords(absolute);
|
|
416
|
+
else if (entry.name === '.aw-command-producer.json') {
|
|
417
|
+
const record = normalizeInstalledCommandProducer(await fs.readJson(absolute));
|
|
418
|
+
const producer = record.producer;
|
|
419
|
+
if (producer.sourceId !== options.sourceId || producer.sourceIdentity !== options.sourceIdentity || producer.pluginName !== options.pluginName || producer.platform !== platform || producer.scope !== 'user' || producer.projectRoot !== null || producer.kind === 'package')
|
|
420
|
+
throw new Error('commandOwnerMismatch: retained native producer does not match its platform and source.');
|
|
421
|
+
const skillKey = producer.kind === 'static-skill' ? producer.key : codexReceipt?.targets.find((target) => target.id === producer.key)?.skillKey;
|
|
422
|
+
if (!skillsRelative || !skillKey || directory !== path.join(sourcePluginRoot, ...skillsRelative.split('/'), skillKey))
|
|
423
|
+
throw new Error('commandOwnerMismatch: retained native producer is outside its exact Skill path.');
|
|
424
|
+
if (!await readDynamicSkillTree(directory, `${platform}.skill`))
|
|
425
|
+
throw new Error('commandResourceInvalid: retained native producer has no valid Skill.');
|
|
426
|
+
await validateCommandEntryFiles(directory, record.sets.flatMap((set) => set.entries));
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
};
|
|
430
|
+
for (const relative of roots) {
|
|
431
|
+
const source = path.join(sourcePluginRoot, ...relative.split('/'));
|
|
432
|
+
if (await inspectMarketplacePath(options.sourceRoot, source, 'directory')) {
|
|
433
|
+
await assertRegularProjectionTree(source, true);
|
|
434
|
+
await validateRecords(source);
|
|
435
|
+
}
|
|
436
|
+
}
|
|
437
|
+
if (codexReceipt) {
|
|
438
|
+
receipt = { pluginName: options.pluginName, receipt: codexReceipt };
|
|
439
|
+
await fs.copy(path.join(sourcePluginRoot, CODEX_NATIVE_RENDER_RECEIPT_PATH), path.join(stagingPluginRoot, CODEX_NATIVE_RENDER_RECEIPT_PATH));
|
|
440
|
+
}
|
|
441
|
+
for (const relative of roots) {
|
|
442
|
+
const source = path.join(sourcePluginRoot, ...relative.split('/'));
|
|
443
|
+
const destination = path.join(stagingPluginRoot, ...relative.split('/'));
|
|
444
|
+
await fs.remove(destination);
|
|
445
|
+
if (await inspectMarketplacePath(options.sourceRoot, source, 'directory'))
|
|
446
|
+
await fs.copy(source, destination, { dereference: false });
|
|
447
|
+
}
|
|
448
|
+
platforms.push(platform);
|
|
392
449
|
}
|
|
450
|
+
return { platforms, ...(receipt ? { receipt } : {}) };
|
|
451
|
+
}
|
|
452
|
+
/** Rebind only the combined payload digest after verified, unrelated platform changes. */
|
|
453
|
+
export async function refreshPreservedPlatformReceipt(stagingRoot, retained) {
|
|
454
|
+
const pluginRoot = path.join(stagingRoot, 'plugins', retained.pluginName);
|
|
455
|
+
const payloadDigest = await calculateCodexNativeRenderPayloadDigest(pluginRoot);
|
|
456
|
+
await fs.outputFile(path.join(pluginRoot, CODEX_NATIVE_RENDER_RECEIPT_PATH), serializeCodexNativeRenderReceipt({ ...retained.receipt, payloadDigest }), 'utf8');
|
|
393
457
|
}
|
|
394
458
|
/**
|
|
395
459
|
* Replays unselected plugin copies into a fresh Catalog generation.
|
|
@@ -415,7 +479,7 @@ export async function replayNamespacedMarketplacePluginProjections(options) {
|
|
|
415
479
|
}
|
|
416
480
|
if (!existing)
|
|
417
481
|
return;
|
|
418
|
-
const retainedPluginNames = new Set();
|
|
482
|
+
const retainedPluginNames = { codex: new Set(), claude: new Set() };
|
|
419
483
|
const pluginsRoot = path.join(options.sourceRoot, 'plugins');
|
|
420
484
|
let entries;
|
|
421
485
|
try {
|
|
@@ -431,11 +495,26 @@ export async function replayNamespacedMarketplacePluginProjections(options) {
|
|
|
431
495
|
if (!entry.isDirectory())
|
|
432
496
|
continue;
|
|
433
497
|
const logicalPluginId = `${options.sourceId}/${entry.name}`;
|
|
434
|
-
if (options.rematerializedPluginIds?.has(logicalPluginId))
|
|
498
|
+
if (options.rematerializedPluginIds?.has(logicalPluginId)) {
|
|
499
|
+
const requested = options.rematerializedPluginPlatforms?.get(logicalPluginId);
|
|
500
|
+
if (requested) {
|
|
501
|
+
try {
|
|
502
|
+
const retained = await preserveUnrequestedMarketplacePlatforms({ ...options, pluginName: entry.name, requested });
|
|
503
|
+
for (const platform of retained.platforms)
|
|
504
|
+
retainedPluginNames[platform].add(entry.name);
|
|
505
|
+
if (retained.receipt)
|
|
506
|
+
options.onPreservedPlatformReceipt?.(retained.receipt);
|
|
507
|
+
}
|
|
508
|
+
catch (error) {
|
|
509
|
+
throw new Error(`marketplaceProjectionInvalid: cannot preserve the unrequested platform for ${logicalPluginId}; reinstall both platforms. ${error instanceof Error ? error.message : String(error)}`);
|
|
510
|
+
}
|
|
511
|
+
}
|
|
435
512
|
continue;
|
|
513
|
+
}
|
|
436
514
|
try {
|
|
437
515
|
await preserveMarketplacePluginProjection({ ...options, pluginName: entry.name });
|
|
438
|
-
retainedPluginNames.add(entry.name);
|
|
516
|
+
retainedPluginNames.codex.add(entry.name);
|
|
517
|
+
retainedPluginNames.claude.add(entry.name);
|
|
439
518
|
}
|
|
440
519
|
catch (error) {
|
|
441
520
|
if (error instanceof CodexNativeProjectionNotReusableError)
|
|
@@ -443,23 +522,24 @@ export async function replayNamespacedMarketplacePluginProjections(options) {
|
|
|
443
522
|
throw new Error(`marketplaceProjectionReadFailed: ${sanitizeCatalogSourceErrorMessage(error instanceof Error ? error.message : String(error), process.env, [options.sourceRoot, options.stagingRoot])}`);
|
|
444
523
|
}
|
|
445
524
|
}
|
|
446
|
-
for (const [sourceManifest, relativePath] of [
|
|
447
|
-
[existing.agentsManifest, '.agents/plugins/marketplace.json'],
|
|
448
|
-
[existing.claudeManifest, '.claude-plugin/marketplace.json'],
|
|
525
|
+
for (const [sourceManifest, relativePath, platform] of [
|
|
526
|
+
[existing.agentsManifest, '.agents/plugins/marketplace.json', 'codex'],
|
|
527
|
+
[existing.claudeManifest, '.claude-plugin/marketplace.json', 'claude'],
|
|
449
528
|
]) {
|
|
450
529
|
const manifestPath = path.join(options.stagingRoot, relativePath);
|
|
451
530
|
const stagingManifest = await readStrictOptionalJsonObject(options.stagingRoot, manifestPath);
|
|
452
|
-
|
|
531
|
+
const retainedNames = retainedPluginNames[platform];
|
|
532
|
+
if (!stagingManifest || retainedNames.size === 0)
|
|
453
533
|
continue;
|
|
454
534
|
if (!Array.isArray(stagingManifest.plugins) || (sourceManifest && !Array.isArray(sourceManifest.plugins))) {
|
|
455
535
|
throw new Error('marketplaceProjectionInvalid: marketplace plugins must be an array.');
|
|
456
536
|
}
|
|
457
537
|
const retainedEntries = (sourceManifest?.plugins ?? []).filter((entry) => isRecord(entry)
|
|
458
|
-
&& typeof entry.name === 'string' &&
|
|
538
|
+
&& typeof entry.name === 'string' && retainedNames.has(entry.name));
|
|
459
539
|
await fs.writeJson(manifestPath, {
|
|
460
540
|
...stagingManifest,
|
|
461
541
|
plugins: [
|
|
462
|
-
...stagingManifest.plugins.filter((entry) => !isRecord(entry) || !
|
|
542
|
+
...stagingManifest.plugins.filter((entry) => !isRecord(entry) || !retainedNames.has(String(entry.name))),
|
|
463
543
|
...retainedEntries.map((entry) => ({
|
|
464
544
|
...entry,
|
|
465
545
|
source: `./plugins/${entry.name}`,
|