chore: sync plugin manifest metadata from package
This commit is contained in:
@@ -1,17 +1,24 @@
|
|||||||
{
|
{
|
||||||
"name": "claude-mem",
|
"name": "claude-mem",
|
||||||
"version": "10.4.1",
|
"version": "10.6.3",
|
||||||
"description": "Persistent memory system for Claude Code - seamlessly preserve context across sessions",
|
"description": "Memory compression system for Claude Code - persist context across sessions",
|
||||||
"author": {
|
"author": {
|
||||||
"name": "Alex Newman"
|
"name": "Alex Newman"
|
||||||
},
|
},
|
||||||
"repository": "https://github.com/thedotmack/claude-mem",
|
"repository": "https://github.com/thedotmack/claude-mem",
|
||||||
"license": "AGPL-3.0",
|
"license": "AGPL-3.0",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
|
"claude",
|
||||||
|
"claude-code",
|
||||||
|
"claude-agent-sdk",
|
||||||
|
"mcp",
|
||||||
|
"plugin",
|
||||||
"memory",
|
"memory",
|
||||||
"context",
|
"compression",
|
||||||
"persistence",
|
"knowledge-graph",
|
||||||
"hooks",
|
"transcript",
|
||||||
"mcp"
|
"typescript",
|
||||||
]
|
"nodejs"
|
||||||
|
],
|
||||||
|
"homepage": "https://github.com/thedotmack/claude-mem#readme"
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -47,7 +47,7 @@
|
|||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "npm run build-and-sync",
|
"dev": "npm run build-and-sync",
|
||||||
"build": "node scripts/build-hooks.js",
|
"build": "node scripts/sync-plugin-manifests.js && node scripts/build-hooks.js",
|
||||||
"build-and-sync": "npm run build && npm run sync-marketplace && sleep 1 && cd ~/.claude/plugins/marketplaces/thedotmack && npm run worker:restart",
|
"build-and-sync": "npm run build && npm run sync-marketplace && sleep 1 && cd ~/.claude/plugins/marketplaces/thedotmack && npm run worker:restart",
|
||||||
"sync-marketplace": "node scripts/sync-marketplace.cjs",
|
"sync-marketplace": "node scripts/sync-marketplace.cjs",
|
||||||
"sync-marketplace:force": "node scripts/sync-marketplace.cjs --force",
|
"sync-marketplace:force": "node scripts/sync-marketplace.cjs --force",
|
||||||
|
|||||||
@@ -0,0 +1,85 @@
|
|||||||
|
#!/usr/bin/env node
|
||||||
|
|
||||||
|
import fs from 'fs';
|
||||||
|
import path from 'path';
|
||||||
|
import { fileURLToPath } from 'url';
|
||||||
|
|
||||||
|
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
||||||
|
const rootDir = path.resolve(__dirname, '..');
|
||||||
|
|
||||||
|
const packageJsonPath = path.join(rootDir, 'package.json');
|
||||||
|
const codexPluginPath = path.join(rootDir, '.codex-plugin', 'plugin.json');
|
||||||
|
const claudePluginPath = path.join(rootDir, '.claude-plugin', 'plugin.json');
|
||||||
|
|
||||||
|
function readJson(filePath) {
|
||||||
|
return JSON.parse(fs.readFileSync(filePath, 'utf8'));
|
||||||
|
}
|
||||||
|
|
||||||
|
function writeJson(filePath, value) {
|
||||||
|
fs.writeFileSync(filePath, JSON.stringify(value, null, 2) + '\n');
|
||||||
|
}
|
||||||
|
|
||||||
|
function syncCodexPlugin(plugin, pkg) {
|
||||||
|
return {
|
||||||
|
...plugin,
|
||||||
|
name: pkg.name,
|
||||||
|
version: pkg.version,
|
||||||
|
description: pkg.description,
|
||||||
|
homepage: pkg.homepage,
|
||||||
|
repository: normalizeRepositoryUrl(pkg.repository),
|
||||||
|
license: pkg.license,
|
||||||
|
keywords: pkg.keywords,
|
||||||
|
author: {
|
||||||
|
...(plugin.author ?? {}),
|
||||||
|
name: normalizeAuthorName(pkg.author),
|
||||||
|
},
|
||||||
|
interface: {
|
||||||
|
...plugin.interface,
|
||||||
|
developerName: normalizeAuthorName(pkg.author),
|
||||||
|
websiteURL: normalizeRepositoryUrl(pkg.repository),
|
||||||
|
},
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function syncClaudePlugin(plugin, pkg) {
|
||||||
|
return {
|
||||||
|
...plugin,
|
||||||
|
name: pkg.name,
|
||||||
|
version: pkg.version,
|
||||||
|
description: pkg.description,
|
||||||
|
homepage: pkg.homepage,
|
||||||
|
repository: normalizeRepositoryUrl(pkg.repository),
|
||||||
|
license: pkg.license,
|
||||||
|
keywords: pkg.keywords,
|
||||||
|
author: {
|
||||||
|
...(typeof plugin.author === 'object' && plugin.author ? plugin.author : {}),
|
||||||
|
name: normalizeAuthorName(pkg.author),
|
||||||
|
},
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function normalizeAuthorName(author) {
|
||||||
|
if (typeof author === 'string') return author;
|
||||||
|
if (author && typeof author === 'object' && typeof author.name === 'string') return author.name;
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
|
function normalizeRepositoryUrl(repository) {
|
||||||
|
if (typeof repository === 'string') return repository.replace(/\.git$/, '');
|
||||||
|
if (repository && typeof repository === 'object' && typeof repository.url === 'string')
|
||||||
|
return repository.url.replace(/\.git$/, '');
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
|
function main() {
|
||||||
|
const pkg = readJson(packageJsonPath);
|
||||||
|
const codexPlugin = readJson(codexPluginPath);
|
||||||
|
const claudePlugin = readJson(claudePluginPath);
|
||||||
|
|
||||||
|
writeJson(codexPluginPath, syncCodexPlugin(codexPlugin, pkg));
|
||||||
|
writeJson(claudePluginPath, syncClaudePlugin(claudePlugin, pkg));
|
||||||
|
|
||||||
|
console.log('✓ Synced plugin manifests from package.json');
|
||||||
|
}
|
||||||
|
|
||||||
|
main();
|
||||||
Reference in New Issue
Block a user