@danieldeusing/seedr 0.1.130 → 0.1.131
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/README.md +2 -2
- package/dist/{chunk-USS5HTCG.js → chunk-7RMRI2TO.js} +6 -22
- package/dist/cli.js +23 -28
- package/dist/index.d.ts +1 -4
- package/dist/index.js +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# @danieldeusing/seedr
|
|
2
2
|
|
|
3
3
|
Seed your coding agents with capabilities: install curated skills, agents, hooks, plugins,
|
|
4
|
-
MCP servers and settings presets for Claude Code, GitHub Copilot,
|
|
5
|
-
OpenCode with one command.
|
|
4
|
+
MCP servers and settings presets for Claude Code, GitHub Copilot, Google Antigravity, OpenAI
|
|
5
|
+
Codex and OpenCode with one command.
|
|
6
6
|
|
|
7
7
|
```bash
|
|
8
8
|
npx @danieldeusing/seedr add # interactive picker
|
|
@@ -29,18 +29,11 @@ function mainFileName(type) {
|
|
|
29
29
|
|
|
30
30
|
// ../registry-ops/src/agents.ts
|
|
31
31
|
var CANONICAL_AGENTS = ["claude", "copilot", "antigravity", "codex", "opencode"];
|
|
32
|
-
var AGENT_ALIASES = { gemini: "antigravity" };
|
|
33
|
-
var KNOWN_AGENTS = [...CANONICAL_AGENTS, ...Object.keys(AGENT_ALIASES)];
|
|
34
32
|
function isCanonicalAgent(value) {
|
|
35
33
|
return typeof value === "string" && CANONICAL_AGENTS.includes(value);
|
|
36
34
|
}
|
|
37
|
-
function isLegacyAgent(value) {
|
|
38
|
-
return typeof value === "string" && Object.hasOwn(AGENT_ALIASES, value);
|
|
39
|
-
}
|
|
40
35
|
function canonicalAgent(value) {
|
|
41
|
-
|
|
42
|
-
if (isLegacyAgent(value)) return AGENT_ALIASES[value];
|
|
43
|
-
return null;
|
|
36
|
+
return isCanonicalAgent(value) ? value : null;
|
|
44
37
|
}
|
|
45
38
|
function canonicalAgents(values) {
|
|
46
39
|
const present = new Set(values.map(canonicalAgent).filter((a) => a !== null));
|
|
@@ -157,9 +150,6 @@ import { existsSync as existsSync10, mkdirSync as mkdirSync8, readFileSync as re
|
|
|
157
150
|
import { dirname as dirname4, join as join10, relative as relative3, resolve as resolve2 } from "path";
|
|
158
151
|
var DEFAULT_LOCK_STALE_MS = 10 * 60 * 1e3;
|
|
159
152
|
|
|
160
|
-
// ../registry-ops/src/migrate.ts
|
|
161
|
-
import { writeFileSync as writeFileSync9 } from "fs";
|
|
162
|
-
|
|
163
153
|
// src/utils/slug.ts
|
|
164
154
|
var SLUG_PATTERN2 = /^[a-z0-9][a-z0-9-]*$/;
|
|
165
155
|
var MAX_SLUG_LENGTH2 = 100;
|
|
@@ -846,7 +836,6 @@ var CODING_AGENTS = {
|
|
|
846
836
|
contentTypes: { skill: SKILL_DIRECTORY, agent: { path: "agents" } }
|
|
847
837
|
},
|
|
848
838
|
antigravity: ANTIGRAVITY,
|
|
849
|
-
gemini: ANTIGRAVITY,
|
|
850
839
|
codex: {
|
|
851
840
|
name: "OpenAI Codex CLI",
|
|
852
841
|
shortName: "codex",
|
|
@@ -902,7 +891,7 @@ function getSettingsPath(scope, cwd = process.cwd()) {
|
|
|
902
891
|
}
|
|
903
892
|
function getMcpConfigPath(agent, scope, cwd = process.cwd()) {
|
|
904
893
|
const isUser = scope === "user";
|
|
905
|
-
switch (
|
|
894
|
+
switch (agent) {
|
|
906
895
|
case "claude":
|
|
907
896
|
return isUser ? claudeUserJsonPath() : join14(cwd, ".mcp.json");
|
|
908
897
|
case "codex":
|
|
@@ -955,8 +944,6 @@ function parseAgentArg(arg) {
|
|
|
955
944
|
gh: "copilot",
|
|
956
945
|
"google-antigravity": "antigravity",
|
|
957
946
|
agy: "antigravity",
|
|
958
|
-
"gemini-code": "antigravity",
|
|
959
|
-
gca: "antigravity",
|
|
960
947
|
"openai-codex": "codex",
|
|
961
948
|
oc: "opencode"
|
|
962
949
|
};
|
|
@@ -1145,9 +1132,8 @@ function deepMerge(target, source) {
|
|
|
1145
1132
|
// src/handlers/skill.ts
|
|
1146
1133
|
var SLUG_LABEL = "skill slug";
|
|
1147
1134
|
function readsCentralDir(agent, scope) {
|
|
1148
|
-
|
|
1149
|
-
|
|
1150
|
-
return canonical === "codex" || canonical === "opencode";
|
|
1135
|
+
if (agent === "antigravity") return scope !== "user";
|
|
1136
|
+
return agent === "codex" || agent === "opencode";
|
|
1151
1137
|
}
|
|
1152
1138
|
var OWNERS_FILE = ".seedr-central-owners.json";
|
|
1153
1139
|
async function readOwners(scope, cwd) {
|
|
@@ -1166,7 +1152,7 @@ async function dropOwner(slug, agent, scope, cwd) {
|
|
|
1166
1152
|
const owners = await readOwners(scope, cwd);
|
|
1167
1153
|
const recorded = owners[slug];
|
|
1168
1154
|
if (!recorded) return [];
|
|
1169
|
-
const remaining = recorded.filter((owner) => owner !==
|
|
1155
|
+
const remaining = recorded.filter((owner) => owner !== agent);
|
|
1170
1156
|
if (remaining.length > 0) owners[slug] = remaining;
|
|
1171
1157
|
else delete owners[slug];
|
|
1172
1158
|
await writeOwners(owners, scope, cwd);
|
|
@@ -1296,12 +1282,11 @@ async function getInstalledSkills(agent, scope, cwd = process.cwd()) {
|
|
|
1296
1282
|
if (readsCentralDir(agent, scope)) dirs.add(centralSkillsDir(scope, cwd));
|
|
1297
1283
|
const owners = await readOwners(scope, cwd);
|
|
1298
1284
|
const centralDir = centralSkillsDir(scope, cwd);
|
|
1299
|
-
const canonical = canonicalAgent(agent) ?? agent;
|
|
1300
1285
|
const isInstalledHere = (entry, dir) => {
|
|
1301
1286
|
if (entry.name.startsWith(".")) return false;
|
|
1302
1287
|
if (!entry.isDirectory() && !entry.isSymbolicLink()) return false;
|
|
1303
1288
|
const recorded = dir === centralDir ? owners[entry.name] : void 0;
|
|
1304
|
-
return !recorded || recorded.includes(
|
|
1289
|
+
return !recorded || recorded.includes(agent);
|
|
1305
1290
|
};
|
|
1306
1291
|
const slugs = /* @__PURE__ */ new Set();
|
|
1307
1292
|
for (const dir of dirs) {
|
|
@@ -1357,7 +1342,6 @@ var skillHandler = {
|
|
|
1357
1342
|
export {
|
|
1358
1343
|
ALL_TYPES,
|
|
1359
1344
|
mainFileName,
|
|
1360
|
-
isLegacyAgent,
|
|
1361
1345
|
canonicalAgent,
|
|
1362
1346
|
canonicalAgents,
|
|
1363
1347
|
AGENT_COMPATIBILITY,
|
package/dist/cli.js
CHANGED
|
@@ -39,7 +39,6 @@ import {
|
|
|
39
39
|
intro,
|
|
40
40
|
isFirstParty,
|
|
41
41
|
isInteractive,
|
|
42
|
-
isLegacyAgent,
|
|
43
42
|
isTypeSupported,
|
|
44
43
|
isValidSlug,
|
|
45
44
|
listItems,
|
|
@@ -68,7 +67,7 @@ import {
|
|
|
68
67
|
writeFileAtomic,
|
|
69
68
|
writeJson,
|
|
70
69
|
writeTextFile
|
|
71
|
-
} from "./chunk-
|
|
70
|
+
} from "./chunk-7RMRI2TO.js";
|
|
72
71
|
|
|
73
72
|
// src/cli.ts
|
|
74
73
|
import { Command as Command5 } from "commander";
|
|
@@ -148,7 +147,7 @@ function isTelemetryDisabled(env = process.env) {
|
|
|
148
147
|
return env[TELEMETRY_OPT_OUT_VARIABLE] !== void 0;
|
|
149
148
|
}
|
|
150
149
|
function cliVersion() {
|
|
151
|
-
return true ? "0.1.
|
|
150
|
+
return true ? "0.1.131" : "dev";
|
|
152
151
|
}
|
|
153
152
|
async function sendEvent(event) {
|
|
154
153
|
try {
|
|
@@ -222,7 +221,7 @@ import chalk2 from "chalk";
|
|
|
222
221
|
import ora from "ora";
|
|
223
222
|
var SLUG_LABEL = "agent slug";
|
|
224
223
|
function subagentFileName(agent, slug) {
|
|
225
|
-
return
|
|
224
|
+
return agent === "copilot" ? `${slug}.agent.md` : `${slug}.md`;
|
|
226
225
|
}
|
|
227
226
|
async function resolveAgentFilePath(agent, slug, scope, cwd) {
|
|
228
227
|
const destDir = getContentPath(agent, "agent", scope, cwd);
|
|
@@ -1742,17 +1741,17 @@ var openCodeStore = {
|
|
|
1742
1741
|
return true;
|
|
1743
1742
|
}
|
|
1744
1743
|
};
|
|
1745
|
-
var
|
|
1746
|
-
var
|
|
1747
|
-
var
|
|
1744
|
+
var ANTIGRAVITY_CONFIG_DIR = join5(home, ".gemini", "config");
|
|
1745
|
+
var ANTIGRAVITY_PLUGINS_DIR = join5(ANTIGRAVITY_CONFIG_DIR, "plugins");
|
|
1746
|
+
var ANTIGRAVITY_IMPORT_MANIFEST_PATH = join5(ANTIGRAVITY_CONFIG_DIR, "import_manifest.json");
|
|
1748
1747
|
var antigravityStore = {
|
|
1749
1748
|
manifestPaths: manifestsFor(),
|
|
1750
1749
|
userGlobal: true,
|
|
1751
1750
|
// Filed by name from a tree, so a first-party copy is as good as any other.
|
|
1752
1751
|
firstParty: true,
|
|
1753
|
-
cacheRoot:
|
|
1752
|
+
cacheRoot: ANTIGRAVITY_PLUGINS_DIR,
|
|
1754
1753
|
// Antigravity files plugins by name only — it has no marketplace dimension.
|
|
1755
|
-
cachePath: (_marketplace, name) => resolveContained(
|
|
1754
|
+
cachePath: (_marketplace, name) => resolveContained(ANTIGRAVITY_PLUGINS_DIR, name),
|
|
1756
1755
|
/**
|
|
1757
1756
|
* Antigravity discovers a plugin by a `plugin.json` at the tree ROOT, and
|
|
1758
1757
|
* `.claude-plugin/plugin.json` is not a substitute: the cross-tool matrix
|
|
@@ -1776,10 +1775,10 @@ var antigravityStore = {
|
|
|
1776
1775
|
},
|
|
1777
1776
|
mutations: (context) => [
|
|
1778
1777
|
{
|
|
1779
|
-
path:
|
|
1778
|
+
path: ANTIGRAVITY_IMPORT_MANIFEST_PATH,
|
|
1780
1779
|
detail: `imports[] += "${context.name}"`,
|
|
1781
1780
|
apply: async () => {
|
|
1782
|
-
const manifest = await readJson(
|
|
1781
|
+
const manifest = await readJson(ANTIGRAVITY_IMPORT_MANIFEST_PATH);
|
|
1783
1782
|
const imports = manifest.imports || [];
|
|
1784
1783
|
manifest.imports = [
|
|
1785
1784
|
...imports.filter((entry) => entry.name !== context.name),
|
|
@@ -1790,24 +1789,24 @@ var antigravityStore = {
|
|
|
1790
1789
|
components: ["skills", "hooks"]
|
|
1791
1790
|
}
|
|
1792
1791
|
];
|
|
1793
|
-
await writeJson(
|
|
1792
|
+
await writeJson(ANTIGRAVITY_IMPORT_MANIFEST_PATH, manifest);
|
|
1794
1793
|
}
|
|
1795
1794
|
}
|
|
1796
1795
|
],
|
|
1797
1796
|
async listInstalled() {
|
|
1798
|
-
const manifest = await readJson(
|
|
1797
|
+
const manifest = await readJson(ANTIGRAVITY_IMPORT_MANIFEST_PATH);
|
|
1799
1798
|
return (manifest.imports || []).map((entry) => entry.name);
|
|
1800
1799
|
},
|
|
1801
1800
|
async remove(pluginId) {
|
|
1802
1801
|
const name = splitPluginId(pluginId)?.name ?? pluginId;
|
|
1803
|
-
const manifest = await readJson(
|
|
1802
|
+
const manifest = await readJson(ANTIGRAVITY_IMPORT_MANIFEST_PATH);
|
|
1804
1803
|
const imports = manifest.imports || [];
|
|
1805
1804
|
const remaining = imports.filter((entry) => entry.name !== name);
|
|
1806
1805
|
if (remaining.length === imports.length) return false;
|
|
1807
1806
|
manifest.imports = remaining;
|
|
1808
|
-
await writeJson(
|
|
1807
|
+
await writeJson(ANTIGRAVITY_IMPORT_MANIFEST_PATH, manifest);
|
|
1809
1808
|
try {
|
|
1810
|
-
await removePathEntry(await resolveContained(
|
|
1809
|
+
await removePathEntry(await resolveContained(ANTIGRAVITY_PLUGINS_DIR, name));
|
|
1811
1810
|
} catch {
|
|
1812
1811
|
}
|
|
1813
1812
|
return true;
|
|
@@ -1830,11 +1829,10 @@ var STORES = {
|
|
|
1830
1829
|
copilot: copilotStore,
|
|
1831
1830
|
codex: codexStore,
|
|
1832
1831
|
opencode: openCodeStore,
|
|
1833
|
-
antigravity: antigravityStore
|
|
1834
|
-
gemini: antigravityStore
|
|
1832
|
+
antigravity: antigravityStore
|
|
1835
1833
|
};
|
|
1836
1834
|
function pluginStoreFor(agent) {
|
|
1837
|
-
const store = STORES[
|
|
1835
|
+
const store = STORES[agent];
|
|
1838
1836
|
if (!store || !isTypeSupported("plugin", agent)) {
|
|
1839
1837
|
throw new Error(`Plugins are not supported for ${CODING_AGENTS[agent]?.name ?? agent}`);
|
|
1840
1838
|
}
|
|
@@ -2140,13 +2138,12 @@ var openCodeTarget = {
|
|
|
2140
2138
|
var TARGETS = {
|
|
2141
2139
|
claude: claudeTarget,
|
|
2142
2140
|
antigravity: antigravityTarget,
|
|
2143
|
-
gemini: antigravityTarget,
|
|
2144
2141
|
copilot: copilotTarget,
|
|
2145
2142
|
codex: codexTarget,
|
|
2146
2143
|
opencode: openCodeTarget
|
|
2147
2144
|
};
|
|
2148
2145
|
function ruleTargetFor(agent) {
|
|
2149
|
-
const target = TARGETS[
|
|
2146
|
+
const target = TARGETS[agent];
|
|
2150
2147
|
if (!target || !isTypeSupported("rule", agent)) {
|
|
2151
2148
|
throw new Error(`Rules are not supported for ${CODING_AGENTS[agent]?.name ?? agent}`);
|
|
2152
2149
|
}
|
|
@@ -2342,12 +2339,11 @@ function resolveRequestedAgents(agentsArg, item) {
|
|
|
2342
2339
|
if (agentsArg === void 0 || agentsArg.trim() === "") {
|
|
2343
2340
|
return { ok: true, agents: [], explicit: false };
|
|
2344
2341
|
}
|
|
2345
|
-
const deprecationWarning = agentsArg.split(",").map((raw) => raw.trim().toLowerCase()).some((id) => isLegacyAgent(id)) ? "'gemini' is now 'antigravity' (Google Antigravity, installs to .agents/)" : void 0;
|
|
2346
2342
|
if (agentsArg.trim() === "all") {
|
|
2347
2343
|
if (compatible.length === 0) {
|
|
2348
2344
|
return { ok: false, error: `No agent supports ${item.type} "${item.slug}"` };
|
|
2349
2345
|
}
|
|
2350
|
-
return { ok: true, agents: compatible, explicit: true
|
|
2346
|
+
return { ok: true, agents: compatible, explicit: true };
|
|
2351
2347
|
}
|
|
2352
2348
|
const { agents, unknown } = parseAgentsArgStrict(agentsArg);
|
|
2353
2349
|
if (unknown.length > 0) {
|
|
@@ -2367,7 +2363,7 @@ function resolveRequestedAgents(agentsArg, item) {
|
|
|
2367
2363
|
error: `Cannot install ${item.type} "${item.slug}" for ${incompatible.join(", ")}. Compatible agents: ${compatibleList}. ${reasons.join("; ")}`
|
|
2368
2364
|
};
|
|
2369
2365
|
}
|
|
2370
|
-
return { ok: true, agents, explicit: true
|
|
2366
|
+
return { ok: true, agents, explicit: true };
|
|
2371
2367
|
}
|
|
2372
2368
|
function decideForce(options) {
|
|
2373
2369
|
return Boolean(options.force) || !options.yes;
|
|
@@ -2490,7 +2486,6 @@ async function chooseAgents(options, item) {
|
|
|
2490
2486
|
error(resolution.error);
|
|
2491
2487
|
return null;
|
|
2492
2488
|
}
|
|
2493
|
-
if (resolution.deprecationWarning) warn(resolution.deprecationWarning);
|
|
2494
2489
|
if (resolution.agents.length > 0) return resolution.agents;
|
|
2495
2490
|
const compatible = compatibleAgentsFor(item);
|
|
2496
2491
|
if (compatible.length === 0) {
|
|
@@ -2602,7 +2597,7 @@ async function runAdd(name, options, cwd = process.cwd()) {
|
|
|
2602
2597
|
}
|
|
2603
2598
|
var addCommand = new Command("add").description("Install a skill, agent, hook, or other configuration").argument("[name]", "Name of the item to install").option("-t, --type <type>", `Content type: ${TYPE_LIST}`).option(
|
|
2604
2599
|
"-a, --agents <agents>",
|
|
2605
|
-
"Comma-separated coding agents or 'all' (claude,copilot,antigravity,codex,opencode
|
|
2600
|
+
"Comma-separated coding agents or 'all' (claude,copilot,antigravity,codex,opencode). Every named agent must support the item; 'all' means all compatible agents. MCP servers: claude, codex, opencode (copilot's and antigravity's formats are unverified)"
|
|
2606
2601
|
).option("-s, --scope <scope>", "Installation scope: project, user, or local").option("-m, --method <method>", "Installation method: symlink or copy").option("-y, --yes", "Skip confirmation prompts").option("-f, --force", "Overwrite existing files").option("-n, --dry-run", "Show exactly which files would be written, without writing or reporting anything").addHelpText("after", `
|
|
2607
2602
|
Telemetry: ${TELEMETRY_HELP_TEXT}.`).action(async (name, options) => {
|
|
2608
2603
|
try {
|
|
@@ -2998,7 +2993,7 @@ var initCommand = new Command4("init").description("Initialize coding agent conf
|
|
|
2998
2993
|
// package.json
|
|
2999
2994
|
var package_default = {
|
|
3000
2995
|
name: "@danieldeusing/seedr",
|
|
3001
|
-
version: "0.1.
|
|
2996
|
+
version: "0.1.131",
|
|
3002
2997
|
description: "Seed your projects with AI configurations",
|
|
3003
2998
|
type: "module",
|
|
3004
2999
|
bin: {
|
|
@@ -3045,7 +3040,7 @@ var package_default = {
|
|
|
3045
3040
|
"ai",
|
|
3046
3041
|
"claude",
|
|
3047
3042
|
"copilot",
|
|
3048
|
-
"
|
|
3043
|
+
"antigravity",
|
|
3049
3044
|
"codex",
|
|
3050
3045
|
"opencode",
|
|
3051
3046
|
"configuration",
|
package/dist/index.d.ts
CHANGED
|
@@ -43,10 +43,7 @@ interface InstalledItem {
|
|
|
43
43
|
installedAt: string;
|
|
44
44
|
}
|
|
45
45
|
|
|
46
|
-
/**
|
|
47
|
-
* Where each agent keeps what. The deprecated `gemini` id shares Antigravity's
|
|
48
|
-
* layout, so an old flag or an unmigrated item still installs to the right place.
|
|
49
|
-
*/
|
|
46
|
+
/** Where each agent keeps what. */
|
|
50
47
|
declare const CODING_AGENTS: Record<CodingAgent, CodingAgentConfig>;
|
|
51
48
|
/** The agents `--agents all` expands to: canonical ids only. */
|
|
52
49
|
declare const ALL_AGENTS: CodingAgent[];
|
package/dist/index.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@danieldeusing/seedr",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.131",
|
|
4
4
|
"description": "Seed your projects with AI configurations",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
"ai",
|
|
48
48
|
"claude",
|
|
49
49
|
"copilot",
|
|
50
|
-
"
|
|
50
|
+
"antigravity",
|
|
51
51
|
"codex",
|
|
52
52
|
"opencode",
|
|
53
53
|
"configuration",
|