allagents 1.0.4 → 1.0.6
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 +4 -4
- package/dist/index.js +87 -15
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -44,11 +44,11 @@ CLI tool for managing multi-repo AI agent workspaces with plugin synchronization
|
|
|
44
44
|
## Installation
|
|
45
45
|
|
|
46
46
|
```bash
|
|
47
|
-
# Using
|
|
48
|
-
|
|
47
|
+
# Using npm
|
|
48
|
+
npm install -g allagents
|
|
49
49
|
|
|
50
|
-
# Or run directly
|
|
51
|
-
|
|
50
|
+
# Or run directly without installing
|
|
51
|
+
npx allagents
|
|
52
52
|
```
|
|
53
53
|
|
|
54
54
|
## Quick Start
|
package/dist/index.js
CHANGED
|
@@ -33416,7 +33416,7 @@ var package_default;
|
|
|
33416
33416
|
var init_package = __esm(() => {
|
|
33417
33417
|
package_default = {
|
|
33418
33418
|
name: "allagents",
|
|
33419
|
-
version: "1.0.
|
|
33419
|
+
version: "1.0.6",
|
|
33420
33420
|
description: "CLI tool for managing multi-repo AI agent workspaces with plugin synchronization",
|
|
33421
33421
|
type: "module",
|
|
33422
33422
|
bin: {
|
|
@@ -33443,7 +33443,8 @@ var init_package = __esm(() => {
|
|
|
33443
33443
|
prepare: "bun run build && (test -d .git && bunx prek install -t pre-push || true)",
|
|
33444
33444
|
release: "bun run scripts/release.ts",
|
|
33445
33445
|
"release:next": "bun run scripts/release.ts next",
|
|
33446
|
-
"publish:next": "bun run build && bun publish --tag next"
|
|
33446
|
+
"publish:next": "bun run build && bun publish --tag next",
|
|
33447
|
+
"promote:latest": "bun scripts/tag-channel.ts latest"
|
|
33447
33448
|
},
|
|
33448
33449
|
keywords: [
|
|
33449
33450
|
"cli",
|
|
@@ -33489,13 +33490,13 @@ var init_package = __esm(() => {
|
|
|
33489
33490
|
});
|
|
33490
33491
|
|
|
33491
33492
|
// src/cli/update-check.ts
|
|
33492
|
-
import { readFile as
|
|
33493
|
+
import { readFile as readFile15 } from "node:fs/promises";
|
|
33493
33494
|
import { join as join24 } from "node:path";
|
|
33494
33495
|
import { spawn as spawn3 } from "node:child_process";
|
|
33495
33496
|
async function getCachedUpdateInfo(path3) {
|
|
33496
33497
|
const filePath = path3 ?? join24(getHomeDir(), CONFIG_DIR, CACHE_FILE);
|
|
33497
33498
|
try {
|
|
33498
|
-
const raw = await
|
|
33499
|
+
const raw = await readFile15(filePath, "utf-8");
|
|
33499
33500
|
const data = JSON.parse(raw);
|
|
33500
33501
|
if (typeof data.latestVersion === "string" && typeof data.lastCheckedAt === "string") {
|
|
33501
33502
|
return data;
|
|
@@ -36002,6 +36003,7 @@ init_user_workspace();
|
|
|
36002
36003
|
init_skills();
|
|
36003
36004
|
var import_cmd_ts3 = __toESM(require_cjs(), 1);
|
|
36004
36005
|
import { existsSync as existsSync19 } from "node:fs";
|
|
36006
|
+
import { readFile as readFile13 } from "node:fs/promises";
|
|
36005
36007
|
import { join as join22 } from "node:path";
|
|
36006
36008
|
|
|
36007
36009
|
// src/cli/metadata/plugin-skills.ts
|
|
@@ -36046,19 +36048,37 @@ var skillsRemoveMeta = {
|
|
|
36046
36048
|
};
|
|
36047
36049
|
var skillsAddMeta = {
|
|
36048
36050
|
command: "plugin skills add",
|
|
36049
|
-
description: "
|
|
36050
|
-
whenToUse: "To re-enable a skill that was previously disabled",
|
|
36051
|
+
description: "Add a skill from a plugin, or re-enable a previously disabled skill",
|
|
36052
|
+
whenToUse: "To add a skill from a GitHub repo or marketplace plugin, or to re-enable a skill that was previously disabled",
|
|
36051
36053
|
examples: [
|
|
36052
|
-
"allagents
|
|
36053
|
-
"allagents
|
|
36054
|
+
"allagents skills add reddit --from ReScienceLab/opc-skills",
|
|
36055
|
+
"allagents skills add https://github.com/owner/repo/tree/main/skills/my-skill",
|
|
36056
|
+
"allagents skills add brainstorming",
|
|
36057
|
+
"allagents skills add brainstorming --plugin superpowers"
|
|
36054
36058
|
],
|
|
36055
36059
|
expectedOutput: "Confirms skill was enabled and runs sync",
|
|
36056
36060
|
positionals: [
|
|
36057
|
-
{
|
|
36061
|
+
{
|
|
36062
|
+
name: "skill",
|
|
36063
|
+
type: "string",
|
|
36064
|
+
required: true,
|
|
36065
|
+
description: "Skill name to add, or a GitHub URL pointing to a skill"
|
|
36066
|
+
}
|
|
36058
36067
|
],
|
|
36059
36068
|
options: [
|
|
36060
36069
|
{ flag: "--scope", short: "-s", type: "string", description: 'Scope: "project" (default) or "user"' },
|
|
36061
|
-
{
|
|
36070
|
+
{
|
|
36071
|
+
flag: "--plugin",
|
|
36072
|
+
short: "-p",
|
|
36073
|
+
type: "string",
|
|
36074
|
+
description: "Plugin name (required if skill exists in multiple plugins)"
|
|
36075
|
+
},
|
|
36076
|
+
{
|
|
36077
|
+
flag: "--from",
|
|
36078
|
+
short: "-f",
|
|
36079
|
+
type: "string",
|
|
36080
|
+
description: "Plugin source (GitHub URL, owner/repo, or plugin@marketplace) to install if the skill is not already available"
|
|
36081
|
+
}
|
|
36062
36082
|
],
|
|
36063
36083
|
outputSchema: {
|
|
36064
36084
|
skill: "string",
|
|
@@ -36069,6 +36089,9 @@ var skillsAddMeta = {
|
|
|
36069
36089
|
|
|
36070
36090
|
// src/cli/commands/plugin-skills.ts
|
|
36071
36091
|
init_constants();
|
|
36092
|
+
init_plugin_path();
|
|
36093
|
+
init_plugin();
|
|
36094
|
+
init_skill();
|
|
36072
36095
|
function hasProjectConfig(dir) {
|
|
36073
36096
|
return existsSync19(join22(dir, CONFIG_DIR, WORKSPACE_CONFIG_FILE));
|
|
36074
36097
|
}
|
|
@@ -36079,6 +36102,35 @@ function resolveScope(cwd) {
|
|
|
36079
36102
|
return "project";
|
|
36080
36103
|
return "user";
|
|
36081
36104
|
}
|
|
36105
|
+
function resolveSkillFromUrl(skill) {
|
|
36106
|
+
if (!isGitHubUrl(skill))
|
|
36107
|
+
return null;
|
|
36108
|
+
const parsed = parseGitHubUrl(skill);
|
|
36109
|
+
if (!parsed)
|
|
36110
|
+
return null;
|
|
36111
|
+
if (parsed.subpath) {
|
|
36112
|
+
const segments = parsed.subpath.split("/").filter(Boolean);
|
|
36113
|
+
const name = segments[segments.length - 1];
|
|
36114
|
+
if (!name)
|
|
36115
|
+
return null;
|
|
36116
|
+
return { skill: name, from: skill, parsed };
|
|
36117
|
+
}
|
|
36118
|
+
return { skill: parsed.repo, from: skill, parsed };
|
|
36119
|
+
}
|
|
36120
|
+
async function resolveSkillNameFromRepo(url, parsed, fallbackName, fetchFn = fetchPlugin) {
|
|
36121
|
+
const fetchResult = await fetchFn(url, {
|
|
36122
|
+
...parsed.branch && { branch: parsed.branch }
|
|
36123
|
+
});
|
|
36124
|
+
if (!fetchResult.success)
|
|
36125
|
+
return fallbackName;
|
|
36126
|
+
try {
|
|
36127
|
+
const skillMd = await readFile13(join22(fetchResult.cachePath, "SKILL.md"), "utf-8");
|
|
36128
|
+
const metadata = parseSkillMetadata(skillMd);
|
|
36129
|
+
return metadata?.name ?? fallbackName;
|
|
36130
|
+
} catch {
|
|
36131
|
+
return fallbackName;
|
|
36132
|
+
}
|
|
36133
|
+
}
|
|
36082
36134
|
function groupSkillsByPlugin(skills) {
|
|
36083
36135
|
const grouped = new Map;
|
|
36084
36136
|
for (const skill of skills) {
|
|
@@ -36327,10 +36379,30 @@ var addCmd = import_cmd_ts3.command({
|
|
|
36327
36379
|
description: "Plugin source to install if the skill is not already available"
|
|
36328
36380
|
})
|
|
36329
36381
|
},
|
|
36330
|
-
handler: async ({ skill, scope, plugin, from }) => {
|
|
36382
|
+
handler: async ({ skill: skillArg, scope, plugin, from: fromArg }) => {
|
|
36331
36383
|
try {
|
|
36384
|
+
let skill = skillArg;
|
|
36385
|
+
let from = fromArg;
|
|
36332
36386
|
const isUser = scope === "user" || !scope && resolveScope(process.cwd()) === "user";
|
|
36333
36387
|
const workspacePath = isUser ? getHomeDir() : process.cwd();
|
|
36388
|
+
const urlResolved = resolveSkillFromUrl(skill);
|
|
36389
|
+
if (urlResolved) {
|
|
36390
|
+
if (from) {
|
|
36391
|
+
const error = "Cannot use --from when the skill argument is a GitHub URL. The URL is used as the plugin source automatically.";
|
|
36392
|
+
if (isJsonMode()) {
|
|
36393
|
+
jsonOutput({ success: false, command: "plugin skills add", error });
|
|
36394
|
+
process.exit(1);
|
|
36395
|
+
}
|
|
36396
|
+
console.error(`Error: ${error}`);
|
|
36397
|
+
process.exit(1);
|
|
36398
|
+
}
|
|
36399
|
+
from = urlResolved.from;
|
|
36400
|
+
if (urlResolved.parsed && !urlResolved.parsed.subpath) {
|
|
36401
|
+
skill = await resolveSkillNameFromRepo(skill, urlResolved.parsed, urlResolved.skill);
|
|
36402
|
+
} else {
|
|
36403
|
+
skill = urlResolved.skill;
|
|
36404
|
+
}
|
|
36405
|
+
}
|
|
36334
36406
|
let matches = await findSkillByName(skill, workspacePath);
|
|
36335
36407
|
if (matches.length === 0) {
|
|
36336
36408
|
if (from) {
|
|
@@ -36485,7 +36557,7 @@ init_format_sync();
|
|
|
36485
36557
|
init_workspace_config();
|
|
36486
36558
|
init_constants();
|
|
36487
36559
|
init_js_yaml();
|
|
36488
|
-
import { readFile as
|
|
36560
|
+
import { readFile as readFile14 } from "node:fs/promises";
|
|
36489
36561
|
import { existsSync as existsSync20 } from "node:fs";
|
|
36490
36562
|
import { join as join23 } from "node:path";
|
|
36491
36563
|
async function runSyncAndPrint(options2) {
|
|
@@ -37044,7 +37116,7 @@ var pluginListCmd = import_cmd_ts4.command({
|
|
|
37044
37116
|
if (!existsSync20(configPath))
|
|
37045
37117
|
return;
|
|
37046
37118
|
try {
|
|
37047
|
-
const content = await
|
|
37119
|
+
const content = await readFile14(configPath, "utf-8");
|
|
37048
37120
|
const config = load(content);
|
|
37049
37121
|
if (!config?.plugins || !config?.clients)
|
|
37050
37122
|
return;
|
|
@@ -37480,13 +37552,13 @@ var pluginUpdateCmd = import_cmd_ts4.command({
|
|
|
37480
37552
|
}
|
|
37481
37553
|
if (updateProject && !isUserConfigPath(process.cwd())) {
|
|
37482
37554
|
const { existsSync: existsSync21 } = await import("node:fs");
|
|
37483
|
-
const { readFile:
|
|
37555
|
+
const { readFile: readFile15 } = await import("node:fs/promises");
|
|
37484
37556
|
const { join: join24 } = await import("node:path");
|
|
37485
37557
|
const { load: load2 } = await Promise.resolve().then(() => (init_js_yaml(), exports_js_yaml));
|
|
37486
37558
|
const { CONFIG_DIR: CONFIG_DIR2, WORKSPACE_CONFIG_FILE: WORKSPACE_CONFIG_FILE2 } = await Promise.resolve().then(() => (init_constants(), exports_constants));
|
|
37487
37559
|
const configPath = join24(process.cwd(), CONFIG_DIR2, WORKSPACE_CONFIG_FILE2);
|
|
37488
37560
|
if (existsSync21(configPath)) {
|
|
37489
|
-
const content = await
|
|
37561
|
+
const content = await readFile15(configPath, "utf-8");
|
|
37490
37562
|
const config = load2(content);
|
|
37491
37563
|
for (const entry of config.plugins ?? []) {
|
|
37492
37564
|
const p = getPluginSource(entry);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "allagents",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.6",
|
|
4
4
|
"description": "CLI tool for managing multi-repo AI agent workspaces with plugin synchronization",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -27,7 +27,8 @@
|
|
|
27
27
|
"prepare": "bun run build && (test -d .git && bunx prek install -t pre-push || true)",
|
|
28
28
|
"release": "bun run scripts/release.ts",
|
|
29
29
|
"release:next": "bun run scripts/release.ts next",
|
|
30
|
-
"publish:next": "bun run build && bun publish --tag next"
|
|
30
|
+
"publish:next": "bun run build && bun publish --tag next",
|
|
31
|
+
"promote:latest": "bun scripts/tag-channel.ts latest"
|
|
31
32
|
},
|
|
32
33
|
"keywords": [
|
|
33
34
|
"cli",
|