@annals/agent-mesh 0.16.2 → 0.16.3
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/index.js +22 -10
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -3152,7 +3152,7 @@ function registerChatCommand(program2) {
|
|
|
3152
3152
|
}
|
|
3153
3153
|
|
|
3154
3154
|
// src/commands/skills.ts
|
|
3155
|
-
import { readFile as readFile4, writeFile as writeFile3, readdir as readdir2, mkdir as mkdir2, rm } from "fs/promises";
|
|
3155
|
+
import { readFile as readFile4, writeFile as writeFile3, readdir as readdir2, mkdir as mkdir2, rm, symlink, unlink } from "fs/promises";
|
|
3156
3156
|
import { join as join8, resolve, relative as relative4 } from "path";
|
|
3157
3157
|
|
|
3158
3158
|
// src/utils/skill-parser.ts
|
|
@@ -3469,15 +3469,22 @@ function skillApiPath(authorLogin, slug) {
|
|
|
3469
3469
|
}
|
|
3470
3470
|
async function resolveSkillsRootAsync(pathArg) {
|
|
3471
3471
|
const projectRoot = pathArg ? resolve(pathArg) : process.cwd();
|
|
3472
|
-
const
|
|
3473
|
-
|
|
3474
|
-
|
|
3472
|
+
const skillsDir = join8(projectRoot, ".agents", "skills");
|
|
3473
|
+
const claudeSkillsDir = join8(projectRoot, ".claude", "skills");
|
|
3474
|
+
return { projectRoot, skillsDir, claudeSkillsDir };
|
|
3475
|
+
}
|
|
3476
|
+
async function ensureClaudeSymlink(claudeSkillsDir, slug) {
|
|
3477
|
+
await mkdir2(claudeSkillsDir, { recursive: true });
|
|
3478
|
+
const linkPath = join8(claudeSkillsDir, slug);
|
|
3479
|
+
try {
|
|
3480
|
+
await unlink(linkPath);
|
|
3481
|
+
} catch {
|
|
3475
3482
|
}
|
|
3476
|
-
|
|
3477
|
-
|
|
3478
|
-
|
|
3483
|
+
try {
|
|
3484
|
+
await rm(linkPath, { recursive: true, force: true });
|
|
3485
|
+
} catch {
|
|
3479
3486
|
}
|
|
3480
|
-
|
|
3487
|
+
await symlink(`../../.agents/skills/${slug}`, linkPath);
|
|
3481
3488
|
}
|
|
3482
3489
|
async function collectPackFiles(dir, manifest) {
|
|
3483
3490
|
const results = [];
|
|
@@ -3839,7 +3846,7 @@ function registerSkillsCommand(program2) {
|
|
|
3839
3846
|
skills.command("install <ref> [path]").description("Install a skill from agents.hot (use author/slug format)").option("--force", "Overwrite if already installed").action(async (ref, pathArg, opts) => {
|
|
3840
3847
|
try {
|
|
3841
3848
|
const { authorLogin, slug } = parseSkillRef(ref);
|
|
3842
|
-
const { skillsDir } = await resolveSkillsRootAsync(pathArg);
|
|
3849
|
+
const { skillsDir, claudeSkillsDir } = await resolveSkillsRootAsync(pathArg);
|
|
3843
3850
|
const targetDir = join8(skillsDir, slug);
|
|
3844
3851
|
if (await pathExists(targetDir)) {
|
|
3845
3852
|
if (!opts.force) {
|
|
@@ -3850,6 +3857,7 @@ function registerSkillsCommand(program2) {
|
|
|
3850
3857
|
slog.info(`Installing ${authorLogin}/${slug}...`);
|
|
3851
3858
|
const client = createClient();
|
|
3852
3859
|
const result = await downloadAndInstallSkill(client, authorLogin, slug, skillsDir);
|
|
3860
|
+
await ensureClaudeSymlink(claudeSkillsDir, slug);
|
|
3853
3861
|
slog.success(`Installed ${result.name} (${result.files_count} files)`);
|
|
3854
3862
|
outputJson({
|
|
3855
3863
|
success: true,
|
|
@@ -3949,12 +3957,16 @@ function registerSkillsCommand(program2) {
|
|
|
3949
3957
|
});
|
|
3950
3958
|
skills.command("remove <slug> [path]").description("Remove a locally installed skill").action(async (slug, pathArg) => {
|
|
3951
3959
|
try {
|
|
3952
|
-
const { skillsDir } = await resolveSkillsRootAsync(pathArg);
|
|
3960
|
+
const { skillsDir, claudeSkillsDir } = await resolveSkillsRootAsync(pathArg);
|
|
3953
3961
|
const targetDir = join8(skillsDir, slug);
|
|
3954
3962
|
if (!await pathExists(targetDir)) {
|
|
3955
3963
|
outputError("not_installed", `Skill "${slug}" is not installed at ${targetDir}`);
|
|
3956
3964
|
}
|
|
3957
3965
|
await rm(targetDir, { recursive: true, force: true });
|
|
3966
|
+
try {
|
|
3967
|
+
await unlink(join8(claudeSkillsDir, slug));
|
|
3968
|
+
} catch {
|
|
3969
|
+
}
|
|
3958
3970
|
slog.success(`Removed skill: ${slug}`);
|
|
3959
3971
|
outputJson({ success: true, removed: slug, path: targetDir });
|
|
3960
3972
|
} catch (err) {
|