allagents 0.26.2 → 0.26.5
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 +49 -13
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -23337,6 +23337,16 @@ async function resolvePluginSpecWithAutoRegister(spec, options = {}) {
|
|
|
23337
23337
|
error: `Marketplace '${marketplaceName}' not found`
|
|
23338
23338
|
};
|
|
23339
23339
|
}
|
|
23340
|
+
if (!didAutoRegister && !options.offline && marketplace.source.type === "github" && !updatedMarketplaceCache.has(marketplace.name)) {
|
|
23341
|
+
const results = await updateMarketplace(marketplace.name);
|
|
23342
|
+
const result = results[0];
|
|
23343
|
+
if (result?.success) {
|
|
23344
|
+
updatedMarketplaceCache.add(marketplace.name);
|
|
23345
|
+
}
|
|
23346
|
+
}
|
|
23347
|
+
if (didAutoRegister) {
|
|
23348
|
+
updatedMarketplaceCache.add(marketplace.name);
|
|
23349
|
+
}
|
|
23340
23350
|
const expectedSubpath = subpath ?? "plugins";
|
|
23341
23351
|
const resolveOpts = {
|
|
23342
23352
|
...subpath && { subpath },
|
|
@@ -23429,7 +23439,7 @@ async function ensureMarketplacesRegistered(plugins) {
|
|
|
23429
23439
|
}
|
|
23430
23440
|
return results;
|
|
23431
23441
|
}
|
|
23432
|
-
var registeredSourceCache;
|
|
23442
|
+
var registeredSourceCache, updatedMarketplaceCache;
|
|
23433
23443
|
var init_marketplace = __esm(() => {
|
|
23434
23444
|
init_esm();
|
|
23435
23445
|
init_constants();
|
|
@@ -23438,6 +23448,7 @@ var init_marketplace = __esm(() => {
|
|
|
23438
23448
|
init_git();
|
|
23439
23449
|
init_plugin();
|
|
23440
23450
|
registeredSourceCache = new Map;
|
|
23451
|
+
updatedMarketplaceCache = new Set;
|
|
23441
23452
|
});
|
|
23442
23453
|
|
|
23443
23454
|
// src/core/workspace-modify.ts
|
|
@@ -24541,9 +24552,11 @@ class CopilotNativeClient {
|
|
|
24541
24552
|
if (installResult.success) {
|
|
24542
24553
|
result.pluginsInstalled.push(spec);
|
|
24543
24554
|
} else {
|
|
24555
|
+
const rawError = installResult.error ?? "Unknown error";
|
|
24556
|
+
const error = rawError.includes("Plugin path escapes marketplace directory") ? `${rawError} (Copilot rejected a plugin path from this marketplace manifest. Use file install for copilot to avoid native install for this plugin.)` : rawError;
|
|
24544
24557
|
result.pluginsFailed.push({
|
|
24545
24558
|
plugin: spec,
|
|
24546
|
-
error
|
|
24559
|
+
error
|
|
24547
24560
|
});
|
|
24548
24561
|
}
|
|
24549
24562
|
}
|
|
@@ -24604,6 +24617,7 @@ function deduplicateClientsByPath(clients, clientMappings = CLIENT_MAPPINGS) {
|
|
|
24604
24617
|
}
|
|
24605
24618
|
function mergeSyncResults(a, b) {
|
|
24606
24619
|
const warnings = [...a.warnings || [], ...b.warnings || []];
|
|
24620
|
+
const messages = [...a.messages || [], ...b.messages || []];
|
|
24607
24621
|
const purgedPaths = [...a.purgedPaths || [], ...b.purgedPaths || []];
|
|
24608
24622
|
const mcpResult = a.mcpResult ?? b.mcpResult;
|
|
24609
24623
|
const nativeResult = a.nativeResult && b.nativeResult ? {
|
|
@@ -24620,6 +24634,7 @@ function mergeSyncResults(a, b) {
|
|
|
24620
24634
|
totalSkipped: a.totalSkipped + b.totalSkipped,
|
|
24621
24635
|
totalGenerated: a.totalGenerated + b.totalGenerated,
|
|
24622
24636
|
...warnings.length > 0 && { warnings },
|
|
24637
|
+
...messages.length > 0 && { messages },
|
|
24623
24638
|
...purgedPaths.length > 0 && { purgedPaths },
|
|
24624
24639
|
...mcpResult && { mcpResult },
|
|
24625
24640
|
...nativeResult && { nativeResult }
|
|
@@ -24655,6 +24670,12 @@ function collectNativePluginSources(validPlugins) {
|
|
|
24655
24670
|
}
|
|
24656
24671
|
return { pluginsByClient, marketplaceSourcesByClient };
|
|
24657
24672
|
}
|
|
24673
|
+
function attachNativeClientContext(result, clientType) {
|
|
24674
|
+
return {
|
|
24675
|
+
...result,
|
|
24676
|
+
pluginsFailed: result.pluginsFailed.map((failure) => ({ ...failure, client: clientType }))
|
|
24677
|
+
};
|
|
24678
|
+
}
|
|
24658
24679
|
function collectSyncClients(clientEntries, plans) {
|
|
24659
24680
|
const workspaceClientTypes = getClientTypes(clientEntries);
|
|
24660
24681
|
return [...new Set([...workspaceClientTypes, ...plans.flatMap((plan) => [...plan.clients, ...plan.nativeClients])])];
|
|
@@ -25157,6 +25178,7 @@ async function syncWorkspace(workspacePath = process.cwd(), options = {}) {
|
|
|
25157
25178
|
...planWarnings,
|
|
25158
25179
|
...failedValidations.map((v) => `${v.plugin}: ${v.error} (skipped)`)
|
|
25159
25180
|
];
|
|
25181
|
+
const messages = [];
|
|
25160
25182
|
if (validPlugins.length === 0 && filteredPlans.length > 0) {
|
|
25161
25183
|
return {
|
|
25162
25184
|
success: false,
|
|
@@ -25212,7 +25234,7 @@ ${failedValidations.map((v) => ` - ${v.plugin}: ${v.error}`).join(`
|
|
|
25212
25234
|
if (!cliAvailable) {
|
|
25213
25235
|
const sources = nativePluginsByClient.get(clientType);
|
|
25214
25236
|
if (sources && sources.length > 0) {
|
|
25215
|
-
|
|
25237
|
+
messages.push(`Native install: ${clientType} CLI not found, skipping native plugin installation`);
|
|
25216
25238
|
}
|
|
25217
25239
|
continue;
|
|
25218
25240
|
}
|
|
@@ -25234,7 +25256,7 @@ ${failedValidations.map((v) => ` - ${v.plugin}: ${v.error}`).join(`
|
|
|
25234
25256
|
}
|
|
25235
25257
|
}
|
|
25236
25258
|
if (currentSources.length > 0) {
|
|
25237
|
-
perClientResults.push(await nativeClient.syncPlugins(currentSources, "project", { cwd: workspacePath }));
|
|
25259
|
+
perClientResults.push(attachNativeClientContext(await nativeClient.syncPlugins(currentSources, "project", { cwd: workspacePath }), clientType));
|
|
25238
25260
|
}
|
|
25239
25261
|
}
|
|
25240
25262
|
if (perClientResults.length > 0) {
|
|
@@ -25245,7 +25267,7 @@ ${failedValidations.map((v) => ` - ${v.plugin}: ${v.error}`).join(`
|
|
|
25245
25267
|
for (const [clientType, sources] of nativePluginsByClient) {
|
|
25246
25268
|
const nativeClient = getNativeClient(clientType);
|
|
25247
25269
|
if (nativeClient && sources.length > 0) {
|
|
25248
|
-
perClientResults.push(await nativeClient.syncPlugins(sources, "project", { cwd: workspacePath, dryRun: true }));
|
|
25270
|
+
perClientResults.push(attachNativeClientContext(await nativeClient.syncPlugins(sources, "project", { cwd: workspacePath, dryRun: true }), clientType));
|
|
25249
25271
|
}
|
|
25250
25272
|
}
|
|
25251
25273
|
if (perClientResults.length > 0) {
|
|
@@ -25394,6 +25416,7 @@ ${fileValidationErrors.map((e) => ` - ${e}`).join(`
|
|
|
25394
25416
|
totalGenerated,
|
|
25395
25417
|
purgedPaths,
|
|
25396
25418
|
...warnings.length > 0 && { warnings },
|
|
25419
|
+
...messages.length > 0 && { messages },
|
|
25397
25420
|
...nativeResult && { nativeResult }
|
|
25398
25421
|
};
|
|
25399
25422
|
}
|
|
@@ -25423,6 +25446,7 @@ async function syncUserWorkspace(options = {}) {
|
|
|
25423
25446
|
...planWarnings,
|
|
25424
25447
|
...failedValidations.map((v) => `${v.plugin}: ${v.error} (skipped)`)
|
|
25425
25448
|
];
|
|
25449
|
+
const messages = [];
|
|
25426
25450
|
if (validPlugins.length === 0 && pluginPlans.length > 0) {
|
|
25427
25451
|
return {
|
|
25428
25452
|
success: false,
|
|
@@ -25502,7 +25526,7 @@ ${failedValidations.map((v) => ` - ${v.plugin}: ${v.error}`).join(`
|
|
|
25502
25526
|
if (!cliAvailable) {
|
|
25503
25527
|
const sources = nativePluginsByClient.get(clientType);
|
|
25504
25528
|
if (sources && sources.length > 0) {
|
|
25505
|
-
|
|
25529
|
+
messages.push(`Native install: ${clientType} CLI not found, skipping native plugin installation`);
|
|
25506
25530
|
}
|
|
25507
25531
|
continue;
|
|
25508
25532
|
}
|
|
@@ -25524,7 +25548,7 @@ ${failedValidations.map((v) => ` - ${v.plugin}: ${v.error}`).join(`
|
|
|
25524
25548
|
}
|
|
25525
25549
|
}
|
|
25526
25550
|
if (currentSources.length > 0) {
|
|
25527
|
-
perClientResults.push(await nativeClient.syncPlugins(currentSources, "user"));
|
|
25551
|
+
perClientResults.push(attachNativeClientContext(await nativeClient.syncPlugins(currentSources, "user"), clientType));
|
|
25528
25552
|
}
|
|
25529
25553
|
}
|
|
25530
25554
|
if (perClientResults.length > 0) {
|
|
@@ -25535,7 +25559,7 @@ ${failedValidations.map((v) => ` - ${v.plugin}: ${v.error}`).join(`
|
|
|
25535
25559
|
for (const [clientType, sources] of nativePluginsByClient) {
|
|
25536
25560
|
const nativeClient = getNativeClient(clientType);
|
|
25537
25561
|
if (nativeClient && sources.length > 0) {
|
|
25538
|
-
perClientResults.push(await nativeClient.syncPlugins(sources, "user", { dryRun: true }));
|
|
25562
|
+
perClientResults.push(attachNativeClientContext(await nativeClient.syncPlugins(sources, "user", { dryRun: true }), clientType));
|
|
25539
25563
|
}
|
|
25540
25564
|
}
|
|
25541
25565
|
if (perClientResults.length > 0) {
|
|
@@ -25570,6 +25594,7 @@ ${failedValidations.map((v) => ` - ${v.plugin}: ${v.error}`).join(`
|
|
|
25570
25594
|
totalSkipped,
|
|
25571
25595
|
totalGenerated,
|
|
25572
25596
|
...warnings.length > 0 && { warnings },
|
|
25597
|
+
...messages.length > 0 && { messages },
|
|
25573
25598
|
...mcpResult && { mcpResult },
|
|
25574
25599
|
...nativeResult && { nativeResult }
|
|
25575
25600
|
};
|
|
@@ -26057,8 +26082,9 @@ function formatNativeResult(nativeResult) {
|
|
|
26057
26082
|
for (const plugin of nativeResult.pluginsInstalled) {
|
|
26058
26083
|
lines.push(` + ${plugin} (installed via native CLI)`);
|
|
26059
26084
|
}
|
|
26060
|
-
for (const { plugin, error } of nativeResult.pluginsFailed) {
|
|
26061
|
-
|
|
26085
|
+
for (const { client, plugin, error } of nativeResult.pluginsFailed) {
|
|
26086
|
+
const provider = client ? `[${client}] ` : "";
|
|
26087
|
+
lines.push(` ✗ ${provider}${plugin}: ${error}`);
|
|
26062
26088
|
}
|
|
26063
26089
|
for (const plugin of nativeResult.skipped) {
|
|
26064
26090
|
lines.push(` ⊘ ${plugin} (skipped — not a marketplace plugin)`);
|
|
@@ -26071,6 +26097,7 @@ function buildSyncData(result) {
|
|
|
26071
26097
|
generated: result.totalGenerated,
|
|
26072
26098
|
failed: result.totalFailed,
|
|
26073
26099
|
skipped: result.totalSkipped,
|
|
26100
|
+
...result.messages && result.messages.length > 0 && { messages: result.messages },
|
|
26074
26101
|
plugins: result.pluginResults.map((pr) => ({
|
|
26075
26102
|
plugin: pr.plugin,
|
|
26076
26103
|
success: pr.success,
|
|
@@ -26673,7 +26700,7 @@ var package_default;
|
|
|
26673
26700
|
var init_package = __esm(() => {
|
|
26674
26701
|
package_default = {
|
|
26675
26702
|
name: "allagents",
|
|
26676
|
-
version: "0.26.
|
|
26703
|
+
version: "0.26.5",
|
|
26677
26704
|
description: "CLI tool for managing multi-repo AI agent workspaces with plugin synchronization",
|
|
26678
26705
|
type: "module",
|
|
26679
26706
|
bin: {
|
|
@@ -29937,12 +29964,14 @@ var syncMeta = {
|
|
|
29937
29964
|
"allagents workspace sync",
|
|
29938
29965
|
"allagents workspace sync --dry-run",
|
|
29939
29966
|
"allagents workspace sync --client claude",
|
|
29940
|
-
"allagents workspace sync --offline"
|
|
29967
|
+
"allagents workspace sync --offline",
|
|
29968
|
+
"allagents workspace sync --verbose"
|
|
29941
29969
|
],
|
|
29942
29970
|
expectedOutput: "Lists synced files with status per plugin. Exit 0 on success, exit 1 if any files failed.",
|
|
29943
29971
|
options: [
|
|
29944
29972
|
{ flag: "--offline", type: "boolean", description: "Use cached plugins without fetching latest from remote" },
|
|
29945
29973
|
{ flag: "--dry-run", short: "-n", type: "boolean", description: "Simulate sync without making changes" },
|
|
29974
|
+
{ flag: "--verbose", short: "-v", type: "boolean", description: "Show informational sync messages" },
|
|
29946
29975
|
{ flag: "--client", short: "-c", type: "string", description: "Sync only the specified client (e.g., opencode, claude)" }
|
|
29947
29976
|
],
|
|
29948
29977
|
outputSchema: {
|
|
@@ -30108,9 +30137,10 @@ var syncCmd = import_cmd_ts2.command({
|
|
|
30108
30137
|
offline: import_cmd_ts2.flag({ long: "offline", description: "Use cached plugins without fetching latest from remote" }),
|
|
30109
30138
|
dryRun: import_cmd_ts2.flag({ long: "dry-run", short: "n", description: "Simulate sync without making changes" }),
|
|
30110
30139
|
force: import_cmd_ts2.flag({ long: "force", short: "f", description: "Overwrite existing MCP server entries that differ from plugin config" }),
|
|
30140
|
+
verbose: import_cmd_ts2.flag({ long: "verbose", short: "v", description: "Show informational sync messages" }),
|
|
30111
30141
|
client: import_cmd_ts2.option({ type: import_cmd_ts2.optional(import_cmd_ts2.string), long: "client", short: "c", description: "Sync only the specified client (e.g., opencode, claude)" })
|
|
30112
30142
|
},
|
|
30113
|
-
handler: async ({ offline, dryRun, force, client }) => {
|
|
30143
|
+
handler: async ({ offline, dryRun, force, verbose, client }) => {
|
|
30114
30144
|
try {
|
|
30115
30145
|
if (!isJsonMode() && dryRun) {
|
|
30116
30146
|
console.log(`Dry run mode - no changes will be made
|
|
@@ -30205,6 +30235,12 @@ Warnings:`);
|
|
|
30205
30235
|
console.log(` ⚠ ${warning}`);
|
|
30206
30236
|
}
|
|
30207
30237
|
}
|
|
30238
|
+
if (verbose && result.messages && result.messages.length > 0) {
|
|
30239
|
+
console.log("");
|
|
30240
|
+
for (const message of result.messages) {
|
|
30241
|
+
console.log(` ${message}`);
|
|
30242
|
+
}
|
|
30243
|
+
}
|
|
30208
30244
|
if (result.mcpResult) {
|
|
30209
30245
|
const mcpLines = formatMcpResult(result.mcpResult);
|
|
30210
30246
|
if (mcpLines.length > 0) {
|