@annals/agent-mesh 0.16.1 → 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 +23 -8
- 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,12 +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 {
|
|
3482
|
+
}
|
|
3483
|
+
try {
|
|
3484
|
+
await rm(linkPath, { recursive: true, force: true });
|
|
3485
|
+
} catch {
|
|
3475
3486
|
}
|
|
3476
|
-
|
|
3477
|
-
return { projectRoot, skillsDir: claudeDir, convention: "claude" };
|
|
3487
|
+
await symlink(`../../.agents/skills/${slug}`, linkPath);
|
|
3478
3488
|
}
|
|
3479
3489
|
async function collectPackFiles(dir, manifest) {
|
|
3480
3490
|
const results = [];
|
|
@@ -3836,7 +3846,7 @@ function registerSkillsCommand(program2) {
|
|
|
3836
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) => {
|
|
3837
3847
|
try {
|
|
3838
3848
|
const { authorLogin, slug } = parseSkillRef(ref);
|
|
3839
|
-
const { skillsDir } = await resolveSkillsRootAsync(pathArg);
|
|
3849
|
+
const { skillsDir, claudeSkillsDir } = await resolveSkillsRootAsync(pathArg);
|
|
3840
3850
|
const targetDir = join8(skillsDir, slug);
|
|
3841
3851
|
if (await pathExists(targetDir)) {
|
|
3842
3852
|
if (!opts.force) {
|
|
@@ -3847,6 +3857,7 @@ function registerSkillsCommand(program2) {
|
|
|
3847
3857
|
slog.info(`Installing ${authorLogin}/${slug}...`);
|
|
3848
3858
|
const client = createClient();
|
|
3849
3859
|
const result = await downloadAndInstallSkill(client, authorLogin, slug, skillsDir);
|
|
3860
|
+
await ensureClaudeSymlink(claudeSkillsDir, slug);
|
|
3850
3861
|
slog.success(`Installed ${result.name} (${result.files_count} files)`);
|
|
3851
3862
|
outputJson({
|
|
3852
3863
|
success: true,
|
|
@@ -3946,12 +3957,16 @@ function registerSkillsCommand(program2) {
|
|
|
3946
3957
|
});
|
|
3947
3958
|
skills.command("remove <slug> [path]").description("Remove a locally installed skill").action(async (slug, pathArg) => {
|
|
3948
3959
|
try {
|
|
3949
|
-
const { skillsDir } = await resolveSkillsRootAsync(pathArg);
|
|
3960
|
+
const { skillsDir, claudeSkillsDir } = await resolveSkillsRootAsync(pathArg);
|
|
3950
3961
|
const targetDir = join8(skillsDir, slug);
|
|
3951
3962
|
if (!await pathExists(targetDir)) {
|
|
3952
3963
|
outputError("not_installed", `Skill "${slug}" is not installed at ${targetDir}`);
|
|
3953
3964
|
}
|
|
3954
3965
|
await rm(targetDir, { recursive: true, force: true });
|
|
3966
|
+
try {
|
|
3967
|
+
await unlink(join8(claudeSkillsDir, slug));
|
|
3968
|
+
} catch {
|
|
3969
|
+
}
|
|
3955
3970
|
slog.success(`Removed skill: ${slug}`);
|
|
3956
3971
|
outputJson({ success: true, removed: slug, path: targetDir });
|
|
3957
3972
|
} catch (err) {
|