mirror of
https://github.com/paperclipai/paperclip.git
synced 2026-10-25 17:45:53 +01:00
When reusing a Codex sandbox, the workspace-restore step now performs an auth-merge check before adopting the sandbox's auth.json. The merge fails closed when: - host or sandbox Codex auth is unusable (missing token or account) - the subscription payload shapes differ between host and sandbox - subscription account identities do not match Additional hardening: node absence on PATH during the embedded decision script now exits non-zero instead of silently falling through. Co-change comments link parseAuth (the embedded script) to hasUsableAuthPayload (codex-home.ts) so a future auth-format change cannot silently diverge between the two implementations. Co-Authored-By: Paperclip <noreply@paperclip.ing>
47 lines
1.6 KiB
JavaScript
47 lines
1.6 KiB
JavaScript
#!/usr/bin/env node
|
|
|
|
import { existsSync, readFileSync, writeFileSync } from "node:fs";
|
|
import { dirname, join, resolve } from "node:path";
|
|
import { fileURLToPath } from "node:url";
|
|
|
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
const repoRoot = resolve(__dirname, "..");
|
|
const packageDir = process.cwd();
|
|
const packageJsonPath = join(packageDir, "package.json");
|
|
const sdkPackageJsonPath = join(repoRoot, "packages", "plugins", "sdk", "package.json");
|
|
|
|
if (!existsSync(packageJsonPath)) {
|
|
throw new Error(`No package.json found in plugin directory: ${packageDir}`);
|
|
}
|
|
|
|
const packageJson = JSON.parse(readFileSync(packageJsonPath, "utf8"));
|
|
const sdkPackageJson = JSON.parse(readFileSync(sdkPackageJsonPath, "utf8"));
|
|
const publishConfig = packageJson.publishConfig ?? {};
|
|
const dependencies = {
|
|
...(packageJson.dependencies ?? {}),
|
|
"@paperclipai/plugin-sdk": sdkPackageJson.version,
|
|
};
|
|
|
|
const publishPackageJson = {
|
|
name: packageJson.name,
|
|
version: packageJson.version,
|
|
description: packageJson.description,
|
|
license: packageJson.license,
|
|
homepage: packageJson.homepage,
|
|
bugs: packageJson.bugs,
|
|
repository: packageJson.repository,
|
|
type: packageJson.type,
|
|
exports: publishConfig.exports ?? packageJson.exports,
|
|
main: publishConfig.main,
|
|
types: publishConfig.types,
|
|
publishConfig,
|
|
files: packageJson.files,
|
|
paperclipPlugin: packageJson.paperclipPlugin,
|
|
keywords: packageJson.keywords,
|
|
dependencies,
|
|
};
|
|
|
|
writeFileSync(packageJsonPath, `${JSON.stringify(publishPackageJson, null, 2)}\n`);
|
|
|
|
console.log(` ✓ Generated publishable plugin package.json for ${packageJson.name}`);
|