nomoreide 0.1.95 → 0.1.97

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 (88) hide show
  1. package/dist/cli/profile.js +12 -8
  2. package/dist/cli/profile.js.map +1 -1
  3. package/dist/core/agent-env/claude-reader.js +12 -4
  4. package/dist/core/agent-env/claude-reader.js.map +1 -1
  5. package/dist/core/agent-env/codex-reader.js +5 -4
  6. package/dist/core/agent-env/codex-reader.js.map +1 -1
  7. package/dist/core/agent-env/managed-plugins.d.ts +5 -0
  8. package/dist/core/agent-env/managed-plugins.js +43 -11
  9. package/dist/core/agent-env/managed-plugins.js.map +1 -1
  10. package/dist/core/agent-env-plugin-uninstall.js +36 -19
  11. package/dist/core/agent-env-plugin-uninstall.js.map +1 -1
  12. package/dist/core/agent-profiles/apply.d.ts +6 -1
  13. package/dist/core/agent-profiles/apply.js +37 -1
  14. package/dist/core/agent-profiles/apply.js.map +1 -1
  15. package/dist/core/agent-profiles/index.d.ts +3 -2
  16. package/dist/core/agent-profiles/index.js +3 -2
  17. package/dist/core/agent-profiles/index.js.map +1 -1
  18. package/dist/core/agent-profiles/plugin-apply.d.ts +16 -0
  19. package/dist/core/agent-profiles/plugin-apply.js +383 -0
  20. package/dist/core/agent-profiles/plugin-apply.js.map +1 -0
  21. package/dist/core/agent-profiles/plugin-bundle.d.ts +6 -0
  22. package/dist/core/agent-profiles/plugin-bundle.js +32 -0
  23. package/dist/core/agent-profiles/plugin-bundle.js.map +1 -0
  24. package/dist/core/agent-profiles/registry-transfer.js +6 -1
  25. package/dist/core/agent-profiles/registry-transfer.js.map +1 -1
  26. package/dist/core/agent-profiles/store.d.ts +3 -1
  27. package/dist/core/agent-profiles/store.js +92 -5
  28. package/dist/core/agent-profiles/store.js.map +1 -1
  29. package/dist/core/agent-profiles/transfer.d.ts +1 -0
  30. package/dist/core/agent-profiles/transfer.js +183 -5
  31. package/dist/core/agent-profiles/transfer.js.map +1 -1
  32. package/dist/core/agent-profiles/types.d.ts +105 -3
  33. package/dist/core/agent-profiles/types.js +15 -1
  34. package/dist/core/agent-profiles/types.js.map +1 -1
  35. package/dist/core/agent-sessions.d.ts +1 -1
  36. package/dist/core/agent-sessions.js +5 -0
  37. package/dist/core/agent-sessions.js.map +1 -1
  38. package/dist/core/agent-transcripts.d.ts +6 -4
  39. package/dist/core/agent-transcripts.js +20 -12
  40. package/dist/core/agent-transcripts.js.map +1 -1
  41. package/dist/core/config-store.d.ts +1 -0
  42. package/dist/core/config-store.js +24 -1
  43. package/dist/core/config-store.js.map +1 -1
  44. package/dist/core/docker-stats.d.ts +2 -0
  45. package/dist/core/docker-stats.js +24 -0
  46. package/dist/core/docker-stats.js.map +1 -1
  47. package/dist/core/git-worktrees.d.ts +34 -0
  48. package/dist/core/git-worktrees.js +132 -0
  49. package/dist/core/git-worktrees.js.map +1 -0
  50. package/dist/core/metrics-store.d.ts +11 -1
  51. package/dist/core/metrics-store.js +63 -5
  52. package/dist/core/metrics-store.js.map +1 -1
  53. package/dist/core/one-time-skills.d.ts +27 -0
  54. package/dist/core/one-time-skills.js +185 -0
  55. package/dist/core/one-time-skills.js.map +1 -0
  56. package/dist/core/system-processes.d.ts +29 -0
  57. package/dist/core/system-processes.js +119 -0
  58. package/dist/core/system-processes.js.map +1 -0
  59. package/dist/core/types.d.ts +3 -0
  60. package/dist/mcp/tools/agent-profiles.js +42 -10
  61. package/dist/mcp/tools/agent-profiles.js.map +1 -1
  62. package/dist/mcp/tools/git.d.ts +1 -1
  63. package/dist/mcp/tools/git.js +45 -0
  64. package/dist/mcp/tools/git.js.map +1 -1
  65. package/dist/mcp/tools/index.d.ts +1 -1
  66. package/dist/web/client/assets/{code-editor-Bx0wTXnf.js → code-editor-Bv3tCQrj.js} +1 -1
  67. package/dist/web/client/assets/index-BeJHDwLO.css +1 -0
  68. package/dist/web/client/assets/index-zb3rhV5y.js +308 -0
  69. package/dist/web/client/assets/system-process-table-q3WxburN.js +1 -0
  70. package/dist/web/client/index.html +2 -2
  71. package/dist/web/dashboard.js +11 -2
  72. package/dist/web/dashboard.js.map +1 -1
  73. package/dist/web/routes/agent-profile-routes.js +2 -1
  74. package/dist/web/routes/agent-profile-routes.js.map +1 -1
  75. package/dist/web/routes/git-routes.js +127 -4
  76. package/dist/web/routes/git-routes.js.map +1 -1
  77. package/dist/web/routes/index.js +2 -0
  78. package/dist/web/routes/index.js.map +1 -1
  79. package/dist/web/routes/metrics-routes.js +30 -4
  80. package/dist/web/routes/metrics-routes.js.map +1 -1
  81. package/dist/web/routes/skills-routes.d.ts +2 -0
  82. package/dist/web/routes/skills-routes.js +49 -0
  83. package/dist/web/routes/skills-routes.js.map +1 -0
  84. package/dist/web/routes/terminal-routes.js +33 -5
  85. package/dist/web/routes/terminal-routes.js.map +1 -1
  86. package/package.json +2 -1
  87. package/dist/web/client/assets/index-4ajqnD37.css +0 -1
  88. package/dist/web/client/assets/index-CpWMLRYx.js +0 -242
@@ -0,0 +1,16 @@
1
+ import type { AgentLiveConfig, AgentName } from "../agent-env/index.js";
2
+ import { type WriteOutcome } from "../agent-env-writers.js";
3
+ import type { ProfilePlugin } from "./types.js";
4
+ export interface PluginApplyPlan {
5
+ status: "add" | "identical" | "conflict";
6
+ strategy: "native" | "managed";
7
+ warnings: string[];
8
+ }
9
+ export declare function previewPluginApply(plugin: ProfilePlugin, targetAgent: AgentName, live: AgentLiveConfig): Promise<PluginApplyPlan>;
10
+ export declare function applyPluginBundle(options: {
11
+ cwd: string;
12
+ homeDir?: string;
13
+ plugin: ProfilePlugin;
14
+ sourceDir: string;
15
+ targetAgent: AgentName;
16
+ }): Promise<WriteOutcome>;
@@ -0,0 +1,383 @@
1
+ import { cp, mkdir, readFile, readdir, rename, rm } from "node:fs/promises";
2
+ import { homedir } from "node:os";
3
+ import path from "node:path";
4
+ import { writeManagedPlugin } from "../agent-env/managed-plugins.js";
5
+ import { addMcp, atomicWrite, backupFile, installSkillFromDirectory, } from "../agent-env-writers.js";
6
+ import { pluginBundleDigest } from "./plugin-bundle.js";
7
+ import { readManagedPlugins } from "../agent-env/managed-plugins.js";
8
+ import { removePlugin } from "../agent-env-plugin-uninstall.js";
9
+ export async function previewPluginApply(plugin, targetAgent, live) {
10
+ const existing = live.skills.find((entry) => entry.kind === "plugin" &&
11
+ entry.name === plugin.name &&
12
+ (entry.source ?? "") === (plugin.source ?? ""));
13
+ const strategy = !plugin.managed &&
14
+ plugin.sourceAgent === targetAgent &&
15
+ (targetAgent === "claude" || targetAgent === "codex")
16
+ ? "native"
17
+ : "managed";
18
+ const warnings = [];
19
+ if (strategy === "managed") {
20
+ warnings.push(`Plugin "${plugin.name}" will be installed as portable assets rather than a native ${targetAgent} plugin.`);
21
+ }
22
+ if (targetAgent === "antigravity" && (plugin.pluginAgents?.length ?? 0) > 0) {
23
+ warnings.push("Antigravity does not support bundled subagents; those files will be skipped.");
24
+ }
25
+ if (targetAgent === "antigravity" && (plugin.pluginCommands?.length ?? 0) > 0) {
26
+ warnings.push("Plugin commands will be installed as user skills on Antigravity.");
27
+ }
28
+ const managedConflicts = strategy === "managed" ? findManagedAssetConflicts(plugin, live) : [];
29
+ if (managedConflicts.length > 0) {
30
+ warnings.push(`Portable plugin assets conflict with existing user items: ${managedConflicts.join(", ")}.`);
31
+ }
32
+ const identical = existing?.installPath && plugin.digest
33
+ ? await pluginBundleDigest(existing.installPath).then((digest) => digest === plugin.digest, () => false)
34
+ : false;
35
+ return {
36
+ status: identical
37
+ ? "identical"
38
+ : existing || managedConflicts.length > 0
39
+ ? "conflict"
40
+ : "add",
41
+ strategy,
42
+ warnings,
43
+ };
44
+ }
45
+ function findManagedAssetConflicts(plugin, live) {
46
+ const skillNames = new Set([
47
+ ...(plugin.pluginSkills ?? []),
48
+ ...(plugin.pluginCommands ?? []),
49
+ ]);
50
+ const mcpNames = new Set(plugin.pluginMcps ?? []);
51
+ const conflicts = new Set();
52
+ for (const skill of live.skills) {
53
+ if (skill.kind === "plugin") {
54
+ for (const name of [...(skill.pluginSkills ?? []), ...(skill.pluginCommands ?? [])]) {
55
+ if (skillNames.has(name))
56
+ conflicts.add(`skill "${name}"`);
57
+ }
58
+ for (const name of skill.pluginMcps ?? []) {
59
+ if (mcpNames.has(name))
60
+ conflicts.add(`MCP "${name}"`);
61
+ }
62
+ continue;
63
+ }
64
+ if (skill.scope === "user" && skillNames.has(skill.name)) {
65
+ conflicts.add(`skill "${skill.name}"`);
66
+ }
67
+ }
68
+ for (const name of mcpNames) {
69
+ if (live.mcpServers[name] || live.remoteMcpServers[name]) {
70
+ conflicts.add(`MCP "${name}"`);
71
+ }
72
+ }
73
+ return Array.from(conflicts).sort((left, right) => left.localeCompare(right));
74
+ }
75
+ export async function applyPluginBundle(options) {
76
+ if (!options.plugin.managed &&
77
+ options.plugin.sourceAgent === options.targetAgent &&
78
+ options.targetAgent === "claude") {
79
+ return restoreClaudePlugin(options);
80
+ }
81
+ if (!options.plugin.managed &&
82
+ options.plugin.sourceAgent === options.targetAgent &&
83
+ options.targetAgent === "codex") {
84
+ return restoreCodexPlugin(options);
85
+ }
86
+ return installManagedPlugin(options);
87
+ }
88
+ async function restoreClaudePlugin(options) {
89
+ const home = options.homeDir ?? homedir();
90
+ const registryPath = path.join(home, ".claude", "plugins", "installed_plugins.json");
91
+ let registry = {
92
+ version: 2,
93
+ plugins: {},
94
+ };
95
+ let registryBackup = null;
96
+ try {
97
+ const source = await readFile(registryPath, "utf8");
98
+ const parsed = JSON.parse(source);
99
+ if (!parsed ||
100
+ typeof parsed !== "object" ||
101
+ Array.isArray(parsed) ||
102
+ ("plugins" in parsed &&
103
+ (parsed.plugins === null ||
104
+ typeof parsed.plugins !== "object" ||
105
+ Array.isArray(parsed.plugins)))) {
106
+ throw new Error("unexpected registry shape");
107
+ }
108
+ registry = parsed;
109
+ registryBackup = await backupFile(registryPath);
110
+ }
111
+ catch (error) {
112
+ if (error.code !== "ENOENT") {
113
+ throw new Error(`Claude plugin registry is invalid: ${registryPath}`);
114
+ }
115
+ }
116
+ const marketplace = safeSegment(options.plugin.source ?? "local");
117
+ const version = safeSegment(options.plugin.version ?? "profile");
118
+ const destination = path.join(home, ".claude", "plugins", "cache", marketplace, safeSegment(options.plugin.name), version);
119
+ const directoryBackup = await replaceDirectory(options.sourceDir, destination, home);
120
+ const backups = [];
121
+ if (directoryBackup)
122
+ backups.push(directoryBackup);
123
+ if (registryBackup)
124
+ backups.push(registryBackup);
125
+ const now = new Date().toISOString();
126
+ registry.plugins = {
127
+ ...(registry.plugins ?? {}),
128
+ [`${options.plugin.name}@${marketplace}`]: [
129
+ {
130
+ scope: "user",
131
+ installPath: destination,
132
+ version,
133
+ installedAt: now,
134
+ lastUpdated: now,
135
+ },
136
+ ],
137
+ };
138
+ await mkdir(path.dirname(registryPath), { recursive: true });
139
+ await atomicWrite(registryPath, `${JSON.stringify(registry, null, 2)}\n`);
140
+ return { backups };
141
+ }
142
+ async function restoreCodexPlugin(options) {
143
+ const home = options.homeDir ?? homedir();
144
+ const marketplace = safeSegment(options.plugin.source ?? "local");
145
+ const version = safeSegment(options.plugin.version ?? "profile");
146
+ const destination = path.join(home, ".codex", "plugins", "cache", marketplace, safeSegment(options.plugin.name), version);
147
+ const directoryBackup = await replaceDirectory(options.sourceDir, destination, home);
148
+ const configPath = path.join(home, ".codex", "config.toml");
149
+ const backups = [];
150
+ if (directoryBackup)
151
+ backups.push(directoryBackup);
152
+ let config = "";
153
+ try {
154
+ config = await readFile(configPath, "utf8");
155
+ const backup = await backupFile(configPath);
156
+ if (backup)
157
+ backups.push(backup);
158
+ }
159
+ catch {
160
+ // Fresh config.
161
+ }
162
+ const pluginKey = `${options.plugin.name}@${marketplace}`;
163
+ const section = `[plugins.${JSON.stringify(pluginKey)}]\nenabled = true`;
164
+ const next = upsertTomlSection(config, `[plugins.${JSON.stringify(pluginKey)}]`, section);
165
+ await mkdir(path.dirname(configPath), { recursive: true });
166
+ await atomicWrite(configPath, `${next.trimEnd()}\n`);
167
+ return { backups };
168
+ }
169
+ async function installManagedPlugin(options) {
170
+ const backups = [];
171
+ const home = options.homeDir ?? homedir();
172
+ const previous = (await readManagedPlugins({
173
+ agent: options.targetAgent,
174
+ homeDir: options.homeDir,
175
+ })).find((entry) => entry.name === options.plugin.name &&
176
+ (entry.source ?? "") === (options.plugin.source ?? ""));
177
+ if (previous) {
178
+ const outcome = await removePlugin({
179
+ cwd: options.cwd,
180
+ homeDir: options.homeDir,
181
+ agent: options.targetAgent,
182
+ plugin: previous,
183
+ });
184
+ backups.push(...outcome.backups);
185
+ }
186
+ const managedSourceDir = path.join(home, ".config", "nomoreide", "managed-plugin-bundles", options.targetAgent, options.plugin.bundleKey);
187
+ const bundleBackup = await replaceDirectory(options.sourceDir, managedSourceDir, home);
188
+ if (bundleBackup)
189
+ backups.push(bundleBackup);
190
+ const installedSkills = [];
191
+ const installedMcps = [];
192
+ const installedAgents = [];
193
+ const installedCommands = [];
194
+ for (const skillName of await directoryNames(path.join(managedSourceDir, "skills"))) {
195
+ const outcome = await installSkillFromDirectory({
196
+ cwd: options.cwd,
197
+ homeDir: options.homeDir,
198
+ sourceDir: path.join(managedSourceDir, "skills", skillName),
199
+ target: { agent: options.targetAgent, skillName, scope: "user" },
200
+ });
201
+ backups.push(...outcome.backups);
202
+ installedSkills.push(skillName);
203
+ }
204
+ for (const commandName of await markdownNames(path.join(options.sourceDir, "commands"))) {
205
+ const tempDir = path.join(options.homeDir ?? homedir(), ".config", "nomoreide", "profile-command-staging", options.plugin.bundleKey, commandName);
206
+ await rm(tempDir, { recursive: true, force: true });
207
+ await mkdir(tempDir, { recursive: true });
208
+ await cp(path.join(managedSourceDir, "commands", `${commandName}.md`), path.join(tempDir, "SKILL.md"));
209
+ const outcome = await installSkillFromDirectory({
210
+ cwd: options.cwd,
211
+ homeDir: options.homeDir,
212
+ sourceDir: tempDir,
213
+ target: { agent: options.targetAgent, skillName: commandName, scope: "user" },
214
+ });
215
+ backups.push(...outcome.backups);
216
+ installedCommands.push(commandName);
217
+ }
218
+ for (const [key, mcp] of Object.entries(await readPluginMcps(managedSourceDir))) {
219
+ const outcome = await addMcp({
220
+ cwd: options.cwd,
221
+ homeDir: options.homeDir,
222
+ agent: options.targetAgent,
223
+ key,
224
+ scope: "user",
225
+ ...mcp,
226
+ });
227
+ backups.push(...outcome.backups);
228
+ installedMcps.push(key);
229
+ }
230
+ if (options.targetAgent !== "antigravity") {
231
+ const expectedExtension = options.targetAgent === "claude" ? ".md" : ".toml";
232
+ const targetRoot = path.join(options.homeDir ?? homedir(), `.${options.targetAgent}`, "agents");
233
+ for (const file of await fileNames(path.join(managedSourceDir, "agents"))) {
234
+ if (path.extname(file) !== expectedExtension)
235
+ continue;
236
+ const target = path.join(targetRoot, path.basename(file));
237
+ await mkdir(path.dirname(target), { recursive: true });
238
+ const backup = await backupFile(target);
239
+ if (backup)
240
+ backups.push(backup);
241
+ await atomicWrite(target, await readFile(path.join(managedSourceDir, "agents", file), "utf8"));
242
+ installedAgents.push(path.basename(file, expectedExtension));
243
+ }
244
+ }
245
+ const registryPath = path.join(options.homeDir ?? homedir(), ".config", "nomoreide", "managed-plugins.json");
246
+ const registryBackup = await backupFile(registryPath);
247
+ if (registryBackup)
248
+ backups.push(registryBackup);
249
+ await writeManagedPlugin({
250
+ agent: options.targetAgent,
251
+ homeDir: options.homeDir,
252
+ plugin: {
253
+ name: options.plugin.name,
254
+ source: options.plugin.source,
255
+ kind: "plugin",
256
+ scope: "user",
257
+ managed: true,
258
+ installPath: managedSourceDir,
259
+ pluginSkills: installedSkills,
260
+ pluginMcps: installedMcps,
261
+ pluginAgents: installedAgents,
262
+ pluginCommands: installedCommands,
263
+ },
264
+ });
265
+ return { backups };
266
+ }
267
+ async function readPluginMcps(sourceDir) {
268
+ try {
269
+ const parsed = JSON.parse(await readFile(path.join(sourceDir, ".mcp.json"), "utf8"));
270
+ const source = parsed.mcpServers && typeof parsed.mcpServers === "object"
271
+ ? parsed.mcpServers
272
+ : parsed;
273
+ const result = {};
274
+ for (const [key, value] of Object.entries(source)) {
275
+ if (typeof value !== "object" || value === null)
276
+ continue;
277
+ const entry = value;
278
+ if (typeof entry.command === "string") {
279
+ result[key] = {
280
+ entry: {
281
+ command: entry.command,
282
+ ...(Array.isArray(entry.args) ? { args: entry.args.map(String) } : {}),
283
+ ...(entry.env && typeof entry.env === "object"
284
+ ? { env: stringRecord(entry.env) }
285
+ : {}),
286
+ },
287
+ };
288
+ }
289
+ else if (typeof entry.url === "string") {
290
+ result[key] = {
291
+ remoteEntry: {
292
+ transport: entry.type === "sse" || entry.transport === "sse" ? "sse" : "http",
293
+ url: entry.url,
294
+ ...(entry.headers && typeof entry.headers === "object"
295
+ ? { headers: stringRecord(entry.headers) }
296
+ : {}),
297
+ ...(entry.env && typeof entry.env === "object"
298
+ ? { env: stringRecord(entry.env) }
299
+ : {}),
300
+ },
301
+ };
302
+ }
303
+ }
304
+ return result;
305
+ }
306
+ catch {
307
+ return {};
308
+ }
309
+ }
310
+ function stringRecord(value) {
311
+ return Object.fromEntries(Object.entries(value).map(([key, entry]) => [key, String(entry)]));
312
+ }
313
+ async function replaceDirectory(source, destination, homeDir) {
314
+ await mkdir(path.dirname(destination), { recursive: true });
315
+ const staging = `${destination}.tmp.${process.pid}.${Date.now()}`;
316
+ await rm(staging, { recursive: true, force: true });
317
+ await cp(source, staging, { recursive: true });
318
+ let backup = null;
319
+ try {
320
+ await readdir(destination);
321
+ backup = path.join(homeDir, ".config", "nomoreide", "agent-env-backups", `plugin-${path.basename(destination)}-${Date.now()}`);
322
+ await mkdir(path.dirname(backup), { recursive: true });
323
+ await cp(destination, backup, { recursive: true });
324
+ }
325
+ catch {
326
+ // Fresh destination.
327
+ }
328
+ await rm(destination, { recursive: true, force: true });
329
+ await rename(staging, destination);
330
+ return backup;
331
+ }
332
+ function safeSegment(value) {
333
+ const safe = path.basename(value).replace(/[^A-Za-z0-9._-]+/g, "-");
334
+ return safe || "unknown";
335
+ }
336
+ function upsertTomlSection(content, header, section) {
337
+ const lines = content.split("\n");
338
+ const result = [];
339
+ let skipping = false;
340
+ let inserted = false;
341
+ for (const line of lines) {
342
+ if (line.trim() === header) {
343
+ if (!inserted)
344
+ result.push(section);
345
+ inserted = true;
346
+ skipping = true;
347
+ continue;
348
+ }
349
+ if (skipping && /^\s*\[/.test(line))
350
+ skipping = false;
351
+ if (!skipping)
352
+ result.push(line);
353
+ }
354
+ if (!inserted)
355
+ result.push("", section);
356
+ return result.join("\n").trim();
357
+ }
358
+ async function directoryNames(root) {
359
+ try {
360
+ return (await readdir(root, { withFileTypes: true }))
361
+ .filter((entry) => entry.isDirectory() && !entry.name.startsWith("."))
362
+ .map((entry) => entry.name);
363
+ }
364
+ catch {
365
+ return [];
366
+ }
367
+ }
368
+ async function fileNames(root) {
369
+ try {
370
+ return (await readdir(root, { withFileTypes: true }))
371
+ .filter((entry) => entry.isFile() && !entry.name.startsWith("."))
372
+ .map((entry) => entry.name);
373
+ }
374
+ catch {
375
+ return [];
376
+ }
377
+ }
378
+ async function markdownNames(root) {
379
+ return (await fileNames(root))
380
+ .filter((name) => name.endsWith(".md"))
381
+ .map((name) => path.basename(name, ".md"));
382
+ }
383
+ //# sourceMappingURL=plugin-apply.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-apply.js","sourceRoot":"","sources":["../../../src/core/agent-profiles/plugin-apply.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export declare function pluginBundleDigest(root: string): Promise<string>;
2
+ export declare function pluginIdentity(plugin: {
3
+ name: string;
4
+ sourceAgent: string;
5
+ source?: string;
6
+ }): string;
@@ -0,0 +1,32 @@
1
+ import { createHash } from "node:crypto";
2
+ import { readFile, readdir } from "node:fs/promises";
3
+ import path from "node:path";
4
+ export async function pluginBundleDigest(root) {
5
+ const hash = createHash("sha256");
6
+ await hashDirectory(root, "", hash);
7
+ return hash.digest("hex");
8
+ }
9
+ async function hashDirectory(root, relative, hash) {
10
+ const entries = await readdir(path.join(root, relative), { withFileTypes: true });
11
+ entries.sort((left, right) => left.name.localeCompare(right.name));
12
+ for (const entry of entries) {
13
+ if (entry.name === ".git" || entry.name === ".DS_Store")
14
+ continue;
15
+ const next = path.join(relative, entry.name);
16
+ if (entry.isSymbolicLink()) {
17
+ throw new Error(`Plugin bundle contains a symbolic link: ${next}`);
18
+ }
19
+ const canonicalPath = next.split(path.sep).join("/");
20
+ hash.update(`${entry.isDirectory() ? "d" : "f"}\0${canonicalPath}\0`);
21
+ if (entry.isDirectory())
22
+ await hashDirectory(root, next, hash);
23
+ else if (entry.isFile())
24
+ hash.update(await readFile(path.join(root, next)));
25
+ else
26
+ throw new Error(`Plugin bundle contains an unsupported file: ${next}`);
27
+ }
28
+ }
29
+ export function pluginIdentity(plugin) {
30
+ return `${plugin.sourceAgent}:${plugin.name}@${plugin.source ?? "local"}`;
31
+ }
32
+ //# sourceMappingURL=plugin-bundle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-bundle.js","sourceRoot":"","sources":["../../../src/core/agent-profiles/plugin-bundle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,IAAY;IACnD,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;IAClC,MAAM,aAAa,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;IACpC,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC5B,CAAC;AAED,KAAK,UAAU,aAAa,CAC1B,IAAY,EACZ,QAAgB,EAChB,IAAmC;IAEnC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAClF,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IACnE,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW;YAAE,SAAS;QAClE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC7C,IAAI,KAAK,CAAC,cAAc,EAAE,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,2CAA2C,IAAI,EAAE,CAAC,CAAC;QACrE,CAAC;QACD,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACrD,IAAI,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,aAAa,IAAI,CAAC,CAAC;QACtE,IAAI,KAAK,CAAC,WAAW,EAAE;YAAE,MAAM,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;aAC1D,IAAI,KAAK,CAAC,MAAM,EAAE;YAAE,IAAI,CAAC,MAAM,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;;YACvE,MAAM,IAAI,KAAK,CAAC,+CAA+C,IAAI,EAAE,CAAC,CAAC;IAC9E,CAAC;AACH,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,MAI9B;IACC,OAAO,GAAG,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,MAAM,IAAI,OAAO,EAAE,CAAC;AAC5E,CAAC"}
@@ -42,7 +42,12 @@ export async function publishProfileToRegistry(input, options = {}) {
42
42
  ...(profile.description ? { description: profile.description } : {}),
43
43
  mcps: Object.entries(profile.mcps).map(([name, entry]) => ({ name, kind: entry.kind })),
44
44
  skills: profile.skills.map((skill) => ({ name: skill.name })),
45
- plugins: [],
45
+ plugins: profile.plugins.map((plugin) => ({
46
+ name: plugin.name,
47
+ sourceAgent: plugin.sourceAgent,
48
+ source: plugin.source,
49
+ version: plugin.version,
50
+ })),
46
51
  },
47
52
  });
48
53
  await client.uploadPackage({
@@ -1 +1 @@
1
- {"version":3,"file":"registry-transfer.js","sourceRoot":"","sources":["../../../src/core/agent-profiles/registry-transfer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry-transfer.js","sourceRoot":"","sources":["../../../src/core/agent-profiles/registry-transfer.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,7 @@ export interface ProfileStoreOptions {
7
7
  export declare function profilesRoot(options?: ProfileStoreOptions): string;
8
8
  export declare function profileDir(name: string, options?: ProfileStoreOptions): string;
9
9
  export declare function profileSkillsDir(name: string, options?: ProfileStoreOptions): string;
10
+ export declare function profilePluginsDir(name: string, options?: ProfileStoreOptions): string;
10
11
  export declare function assertValidProfileName(name: string): string;
11
12
  export declare function listProfiles(options?: ProfileStoreOptions): Promise<ProfileSummary[]>;
12
13
  export declare function getProfile(name: string, options?: ProfileStoreOptions): Promise<Profile>;
@@ -14,7 +15,7 @@ export declare function createProfile(input: {
14
15
  name: string;
15
16
  description?: string;
16
17
  }, options?: ProfileStoreOptions): Promise<Profile>;
17
- export declare function updateProfile(name: string, patch: Partial<Pick<Profile, "description" | "mcps" | "skills">>, options?: ProfileStoreOptions): Promise<Profile>;
18
+ export declare function updateProfile(name: string, patch: Partial<Pick<Profile, "description" | "mcps" | "skills" | "plugins">>, options?: ProfileStoreOptions): Promise<Profile>;
18
19
  export declare function deleteProfile(name: string, options?: ProfileStoreOptions): Promise<void>;
19
20
  export declare function writeProfile(profile: Profile, options?: ProfileStoreOptions): Promise<void>;
20
21
  /**
@@ -32,4 +33,5 @@ export declare function toLocalProfileMcp(entry: AgentMcpEntry): ProfileMcp;
32
33
  export declare function toRemoteProfileMcp(entry: RemoteMcpEntry): ProfileMcp;
33
34
  /** Copy one bundled skill dir between profiles (no-op if the source has no files). */
34
35
  export declare function copySkillBetweenProfiles(from: string, to: string, skillName: string, options?: ProfileStoreOptions): Promise<void>;
36
+ export declare function copyPluginBetweenProfiles(from: string, to: string, bundleKey: string, options?: ProfileStoreOptions): Promise<void>;
35
37
  export declare function pathExists(target: string): Promise<boolean>;