@stigmer/cli 3.18.1-dev.20260919070736 → 3.19.0
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/commands/apply.js +3 -1
- package/commands/apply.js.map +1 -1
- package/commands/install.js +2 -1
- package/commands/install.js.map +1 -1
- package/commands/marketplace.js +3 -3
- package/commands/marketplace.js.map +1 -1
- package/commands/push.js +3 -1
- package/commands/push.js.map +1 -1
- package/marketplace/config.d.ts.map +1 -1
- package/marketplace/config.js +13 -9
- package/marketplace/config.js.map +1 -1
- package/marketplace/render.d.ts.map +1 -1
- package/marketplace/render.js +1 -7
- package/marketplace/render.js.map +1 -1
- package/package.json +7 -7
- package/resources/connect/oauth.d.ts.map +1 -1
- package/resources/connect/oauth.js +4 -1
- package/resources/connect/oauth.js.map +1 -1
- package/resources/plugin.d.ts +27 -0
- package/resources/plugin.d.ts.map +1 -1
- package/resources/plugin.js +113 -8
- package/resources/plugin.js.map +1 -1
- package/src/commands/apply.ts +6 -1
- package/src/commands/install.test.ts +20 -21
- package/src/commands/install.ts +2 -1
- package/src/commands/marketplace.test.ts +10 -19
- package/src/commands/marketplace.ts +3 -3
- package/src/commands/push.ts +6 -1
- package/src/local/plugins/defaults.test.ts +28 -28
- package/src/marketplace/__fixtures__/cursor-marketplace.ts +16 -12
- package/src/marketplace/config.test.ts +12 -28
- package/src/marketplace/config.ts +13 -9
- package/src/marketplace/install.test.ts +19 -19
- package/src/marketplace/read.test.ts +6 -6
- package/src/marketplace/render.ts +1 -10
- package/src/resources/connect/oauth.test.ts +2 -2
- package/src/resources/connect/oauth.ts +4 -1
- package/src/resources/plugin.test.ts +119 -2
- package/src/resources/plugin.ts +140 -8
package/resources/plugin.js
CHANGED
|
@@ -23,6 +23,15 @@
|
|
|
23
23
|
// and what `stigmer up` compares with the server's digest before deciding
|
|
24
24
|
// to push. `validate -f`, `push plugin --dry-run` and `push plugin` share one
|
|
25
25
|
// description renderer so the author reads one vocabulary at every step.
|
|
26
|
+
//
|
|
27
|
+
// `readNextSteps` is what the install leaves the user to do, read from the
|
|
28
|
+
// servers the push produced: a sign-in an OAuth server needs (`stigmer
|
|
29
|
+
// connect mcp-server` runs it), the variables an API-key server wants and
|
|
30
|
+
// where they are asked, and, for a plugin that installed tools and no
|
|
31
|
+
// agent, the agent the tools still need. Best-effort by design: a server
|
|
32
|
+
// or a grant the CLI cannot read yields no line rather than a failed
|
|
33
|
+
// install, because the install itself succeeded. `stigmer up` does not
|
|
34
|
+
// read them: its plugin is the built-in assistant, not a user's act.
|
|
26
35
|
import { readdirSync, readFileSync, statSync } from "node:fs";
|
|
27
36
|
import { join } from "node:path";
|
|
28
37
|
import { create, toJson } from "@bufbuild/protobuf";
|
|
@@ -30,6 +39,7 @@ import { MANIFEST_LOCATIONS, } from "@stigmer/plugin-package";
|
|
|
30
39
|
import { DIALECT_LABELS, preparePluginArchive, selectPluginFiles, } from "@stigmer/plugin-package/client";
|
|
31
40
|
import { PluginSchema, } from "@stigmer/protos/ai/stigmer/agentic/plugin/v1/api_pb";
|
|
32
41
|
import { PluginMemberSchema, PushPluginRequestSchema, } from "@stigmer/protos/ai/stigmer/agentic/plugin/v1/io_pb";
|
|
42
|
+
import { GetOAuthGrantStatusInputSchema, OAuthConnectionHealth, } from "@stigmer/protos/ai/stigmer/agentic/mcpserver/v1/io_pb";
|
|
33
43
|
import { PluginDialect as PluginDialectProto } from "@stigmer/protos/ai/stigmer/agentic/plugin/v1/spec_pb";
|
|
34
44
|
import { ApiResourceKind } from "@stigmer/protos/ai/stigmer/commons/apiresource/apiresourcekind/api_resource_kind_pb";
|
|
35
45
|
import { UsageError } from "../errors/index.js";
|
|
@@ -232,19 +242,107 @@ export async function pushPrepared(client, prepared, options) {
|
|
|
232
242
|
export async function pushPlugin(client, dir, options) {
|
|
233
243
|
return pushPrepared(client, await preparePluginPush(dir, options.ignoreOptions), options);
|
|
234
244
|
}
|
|
245
|
+
/**
|
|
246
|
+
* What the install leaves the user to do, read from each MCP server the
|
|
247
|
+
* push produced. Best-effort: a server or grant this CLI cannot read yields
|
|
248
|
+
* no step, never a failure, because the install itself succeeded.
|
|
249
|
+
*/
|
|
250
|
+
export async function readNextSteps(client, org, members) {
|
|
251
|
+
const servers = members.filter((m) => m.kind === ApiResourceKind.mcp_server);
|
|
252
|
+
const hasAgent = members.some((m) => m.kind === ApiResourceKind.agent);
|
|
253
|
+
const steps = [];
|
|
254
|
+
for (const member of servers) {
|
|
255
|
+
try {
|
|
256
|
+
const server = await client.mcpServer.getByReference({
|
|
257
|
+
org,
|
|
258
|
+
slug: member.slug,
|
|
259
|
+
});
|
|
260
|
+
const auth = server.spec?.auth;
|
|
261
|
+
const variables = Object.keys(server.spec?.env ?? {});
|
|
262
|
+
if (auth?.targetEnvVar) {
|
|
263
|
+
let connected = false;
|
|
264
|
+
try {
|
|
265
|
+
const grant = await client.mcpServer.getOAuthGrantStatus(create(GetOAuthGrantStatusInputSchema, {
|
|
266
|
+
resourceId: server.metadata?.id ?? "",
|
|
267
|
+
org,
|
|
268
|
+
}));
|
|
269
|
+
connected =
|
|
270
|
+
grant.connected &&
|
|
271
|
+
grant.connectionHealth !==
|
|
272
|
+
OAuthConnectionHealth.OAUTH_CONNECTION_HEALTH_TOKEN_EXPIRED;
|
|
273
|
+
}
|
|
274
|
+
catch {
|
|
275
|
+
// Fail closed: a grant the CLI cannot read is a sign-in still owed.
|
|
276
|
+
}
|
|
277
|
+
steps.push(connected
|
|
278
|
+
? { kind: "signed-in", server: member.slug }
|
|
279
|
+
: {
|
|
280
|
+
kind: "sign-in",
|
|
281
|
+
server: member.slug,
|
|
282
|
+
command: `stigmer connect mcp-server ${member.slug}`,
|
|
283
|
+
});
|
|
284
|
+
}
|
|
285
|
+
else if (variables.length > 0) {
|
|
286
|
+
steps.push({
|
|
287
|
+
kind: "api-key",
|
|
288
|
+
server: member.slug,
|
|
289
|
+
variables,
|
|
290
|
+
askedAt: hasAgent ? "agent" : "connect",
|
|
291
|
+
...(hasAgent
|
|
292
|
+
? {}
|
|
293
|
+
: {
|
|
294
|
+
command: `stigmer connect mcp-server ${member.slug} --env ${variables.map((v) => `${v}=...`).join(" --env ")}`,
|
|
295
|
+
}),
|
|
296
|
+
});
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
catch {
|
|
300
|
+
// A server the CLI cannot read has no line; the Installed section still names it.
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
if (!hasAgent && servers.length > 0) {
|
|
304
|
+
steps.push({
|
|
305
|
+
kind: "add-to-agent",
|
|
306
|
+
servers: servers.map((m) => m.slug),
|
|
307
|
+
});
|
|
308
|
+
}
|
|
309
|
+
return steps;
|
|
310
|
+
}
|
|
311
|
+
function describeNextStep(step) {
|
|
312
|
+
switch (step.kind) {
|
|
313
|
+
case "sign-in":
|
|
314
|
+
return `Sign in to ${step.server}: ${step.command}`;
|
|
315
|
+
case "signed-in":
|
|
316
|
+
return `${step.server}: signed in`;
|
|
317
|
+
case "api-key":
|
|
318
|
+
return step.askedAt === "agent"
|
|
319
|
+
? `${step.server} needs ${step.variables.join(", ")}; the agent asks at its first session`
|
|
320
|
+
: `${step.server} needs ${step.variables.join(", ")}; set them when you connect: ${step.command ?? ""}`;
|
|
321
|
+
case "add-to-agent":
|
|
322
|
+
return `Add these tools to an agent: list ${step.servers.map((s) => `'${s}'`).join(", ")} under mcp_server_usages in an agent's YAML, or from the plugin's page in the console`;
|
|
323
|
+
default: {
|
|
324
|
+
const exhaustive = step;
|
|
325
|
+
return exhaustive;
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
}
|
|
235
329
|
/** The install as the user reads it: what landed, what was skipped, what to know. */
|
|
236
330
|
export function renderPushOutcome(outcome, options = {}) {
|
|
237
331
|
const { plugin, members } = outcome;
|
|
238
332
|
const warnings = plugin.status?.warnings ?? [];
|
|
239
333
|
const counts = plugin.status?.materialized;
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
334
|
+
// Only the kinds the plugin installed are named, as the console's
|
|
335
|
+
// `summariseInstall` names them: most catalogue plugins install tools
|
|
336
|
+
// alone, and "0 skills, 1 MCP server, 0 agents" reads as three facts.
|
|
337
|
+
const named = [
|
|
338
|
+
[counts?.skills ?? 0, "skill"],
|
|
339
|
+
[counts?.mcpServers ?? 0, "MCP server"],
|
|
340
|
+
[counts?.agents ?? 0, "agent"],
|
|
341
|
+
[counts?.workflows ?? 0, "workflow"],
|
|
342
|
+
]
|
|
343
|
+
.filter(([n]) => n > 0)
|
|
344
|
+
.map(([n, noun]) => count(n, noun));
|
|
345
|
+
const summary = named.length === 0 ? "nothing installed" : named.join(", ");
|
|
248
346
|
const headline = `Installed plugin '${plugin.metadata?.slug ?? plugin.spec?.name ?? ""}' (${summary})`;
|
|
249
347
|
const result = warnings.length === 0
|
|
250
348
|
? CommandResult.success(headline)
|
|
@@ -275,9 +373,16 @@ export function renderPushOutcome(outcome, options = {}) {
|
|
|
275
373
|
for (const warning of warnings)
|
|
276
374
|
section.item(warning.message);
|
|
277
375
|
}
|
|
376
|
+
const next = options.next ?? [];
|
|
377
|
+
if (next.length > 0) {
|
|
378
|
+
const section = result.addSection("Next");
|
|
379
|
+
for (const step of next)
|
|
380
|
+
section.item(describeNextStep(step));
|
|
381
|
+
}
|
|
278
382
|
return result.withData({
|
|
279
383
|
plugin: toJson(PluginSchema, plugin),
|
|
280
384
|
members: members.map((m) => toJson(PluginMemberSchema, m)),
|
|
385
|
+
...(options.next !== undefined && { next: options.next }),
|
|
281
386
|
});
|
|
282
387
|
}
|
|
283
388
|
const MEMBER_KIND_LABELS = {
|
package/resources/plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/resources/plugin.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/resources/plugin.ts"],"names":[],"mappings":"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"}
|
package/src/commands/apply.ts
CHANGED
|
@@ -122,7 +122,12 @@ async function runPluginApply(
|
|
|
122
122
|
message: "",
|
|
123
123
|
ignoreOptions,
|
|
124
124
|
});
|
|
125
|
-
renderResult(
|
|
125
|
+
renderResult(
|
|
126
|
+
plugin.renderPushOutcome(outcome, {
|
|
127
|
+
next: await plugin.readNextSteps(client.stigmer, org, outcome.members),
|
|
128
|
+
}),
|
|
129
|
+
format,
|
|
130
|
+
);
|
|
126
131
|
}
|
|
127
132
|
|
|
128
133
|
// Declarative mode: detect stigmer.yaml (walk up). Absent → atomic guidance.
|
|
@@ -60,8 +60,8 @@ beforeAll(async () => {
|
|
|
60
60
|
push: (req) => {
|
|
61
61
|
pushes.push(req);
|
|
62
62
|
return create(PluginSchema, {
|
|
63
|
-
metadata: { id: "plg_1", slug: "
|
|
64
|
-
spec: { name: "
|
|
63
|
+
metadata: { id: "plg_1", slug: "warmer", org: "acme" },
|
|
64
|
+
spec: { name: "warmer", version: "1.0.0" },
|
|
65
65
|
status: {
|
|
66
66
|
digest: "a".repeat(64),
|
|
67
67
|
state: PluginState.READY,
|
|
@@ -83,8 +83,8 @@ beforeAll(async () => {
|
|
|
83
83
|
{
|
|
84
84
|
kind: ApiResourceKind.agent,
|
|
85
85
|
id: "agt_1",
|
|
86
|
-
slug: "
|
|
87
|
-
name: "
|
|
86
|
+
slug: "warmer",
|
|
87
|
+
name: "warmer",
|
|
88
88
|
},
|
|
89
89
|
],
|
|
90
90
|
}),
|
|
@@ -200,10 +200,10 @@ async function run(
|
|
|
200
200
|
|
|
201
201
|
describe("install", () => {
|
|
202
202
|
it("pushes the entry's folder as push plugin would, into the context org, and renders the install", async () => {
|
|
203
|
-
const outcome = await run("acme-plugins/
|
|
203
|
+
const outcome = await run("acme-plugins/warmer", "--json");
|
|
204
204
|
expect(outcome.exitCode).toBe(ExitCode.Success);
|
|
205
205
|
expect(pushes).toHaveLength(1);
|
|
206
|
-
const expected = await preparePluginPush(join(fixture, "
|
|
206
|
+
const expected = await preparePluginPush(join(fixture, "warmer"));
|
|
207
207
|
expect(pushes[0]?.org).toBe("acme");
|
|
208
208
|
expect(
|
|
209
209
|
Buffer.from(pushes[0]?.artifact ?? []).equals(
|
|
@@ -216,7 +216,7 @@ describe("install", () => {
|
|
|
216
216
|
|
|
217
217
|
const payload = JSON.parse(outcome.stdout);
|
|
218
218
|
expect(payload.message).toMatch(
|
|
219
|
-
/^Installed plugin '
|
|
219
|
+
/^Installed plugin 'warmer' \(1 skill, 1 agent\)/,
|
|
220
220
|
);
|
|
221
221
|
const about = payload.sections.find(
|
|
222
222
|
(s: { title: string }) => s.title === "Plugin",
|
|
@@ -231,7 +231,7 @@ describe("install", () => {
|
|
|
231
231
|
it("finds a bare name across the configured marketplaces and honours --org, --visibility and --message", async () => {
|
|
232
232
|
const outcome = await run(
|
|
233
233
|
["--org", "other"],
|
|
234
|
-
"
|
|
234
|
+
"codeforge",
|
|
235
235
|
"--visibility",
|
|
236
236
|
"org",
|
|
237
237
|
"-m",
|
|
@@ -245,7 +245,7 @@ describe("install", () => {
|
|
|
245
245
|
|
|
246
246
|
it("--dry-run reads the marketplace and describes the plugin without pushing", async () => {
|
|
247
247
|
const outcome = await run(
|
|
248
|
-
"acme-plugins/
|
|
248
|
+
"acme-plugins/warmer@1.0.0",
|
|
249
249
|
"--dry-run",
|
|
250
250
|
"--json",
|
|
251
251
|
);
|
|
@@ -253,28 +253,28 @@ describe("install", () => {
|
|
|
253
253
|
expect(pushes).toHaveLength(0);
|
|
254
254
|
const payload = JSON.parse(outcome.stdout);
|
|
255
255
|
expect(payload.message).toBe(
|
|
256
|
-
"Dry run: 'acme-plugins/
|
|
256
|
+
"Dry run: 'acme-plugins/warmer' would install plugin 'warmer'",
|
|
257
257
|
);
|
|
258
|
-
expect(payload.data.plugin.name).toBe("
|
|
258
|
+
expect(payload.data.plugin.name).toBe("warmer");
|
|
259
259
|
});
|
|
260
260
|
|
|
261
261
|
it("refuses a version the marketplace does not offer, naming the one it does", async () => {
|
|
262
|
-
const outcome = await run("acme-plugins/
|
|
262
|
+
const outcome = await run("acme-plugins/warmer@9.9.9");
|
|
263
263
|
expect(outcome.exitCode).toBe(ExitCode.Usage);
|
|
264
264
|
expect(outcome.message).toMatch(
|
|
265
|
-
/pins version 9\.9\.9, but the marketplace offers '
|
|
265
|
+
/pins version 9\.9\.9, but the marketplace offers 'warmer' at 1\.0\.0/,
|
|
266
266
|
);
|
|
267
267
|
expect(pushes).toHaveLength(0);
|
|
268
268
|
});
|
|
269
269
|
|
|
270
270
|
it("refuses a path toward push plugin, an unknown name, and an unknown marketplace", async () => {
|
|
271
|
-
expect((await run("./
|
|
272
|
-
/is a path.*stigmer push plugin \.\/
|
|
271
|
+
expect((await run("./warmer")).message).toMatch(
|
|
272
|
+
/is a path.*stigmer push plugin \.\/warmer/s,
|
|
273
273
|
);
|
|
274
274
|
expect((await run("nope")).message).toMatch(
|
|
275
275
|
/no configured marketplace offers a plugin named 'nope'/,
|
|
276
276
|
);
|
|
277
|
-
expect((await run("nowhere/
|
|
277
|
+
expect((await run("nowhere/warmer")).message).toMatch(
|
|
278
278
|
/no marketplace named 'nowhere' is configured/,
|
|
279
279
|
);
|
|
280
280
|
expect(pushes).toHaveLength(0);
|
|
@@ -293,14 +293,13 @@ describe("install", () => {
|
|
|
293
293
|
second: { type: "local", path: second },
|
|
294
294
|
},
|
|
295
295
|
});
|
|
296
|
-
const outcome = await run("
|
|
296
|
+
const outcome = await run("warmer");
|
|
297
297
|
expect(outcome.exitCode).toBe(ExitCode.Usage);
|
|
298
298
|
expect(outcome.message).toMatch(
|
|
299
|
-
/offered by more than one marketplace: acme-plugins, second\n\nName the one you mean: acme-plugins\/
|
|
299
|
+
/offered by more than one marketplace: acme-plugins, second\n\nName the one you mean: acme-plugins\/warmer or second\/warmer/,
|
|
300
300
|
);
|
|
301
|
-
//
|
|
302
|
-
expect(fetched.filter((url) => url.
|
|
303
|
-
expect(fetched.some((url) => url.startsWith("https://codeload.github.com/"))).toBe(false);
|
|
301
|
+
// Only the official catalogue is built in, read from the checkout here; no GitHub host was asked.
|
|
302
|
+
expect(fetched.filter((url) => url.includes("github"))).toEqual([]);
|
|
304
303
|
} finally {
|
|
305
304
|
rmSync(second, { recursive: true, force: true });
|
|
306
305
|
}
|
package/src/commands/install.ts
CHANGED
|
@@ -28,7 +28,7 @@ export function registerInstall(program: Command): void {
|
|
|
28
28
|
const install = program
|
|
29
29
|
.command("install <ref>")
|
|
30
30
|
.description(
|
|
31
|
-
"install a plugin from a
|
|
31
|
+
"install a plugin from a source by name: [source/]name[@version]",
|
|
32
32
|
)
|
|
33
33
|
.option(
|
|
34
34
|
"--visibility <level>",
|
|
@@ -99,6 +99,7 @@ async function runInstall(
|
|
|
99
99
|
renderResult(
|
|
100
100
|
plugin.renderPushOutcome(outcome, {
|
|
101
101
|
installedFrom: `${located.marketplace.name} (${m.describeSource(located.marketplace.source)})`,
|
|
102
|
+
next: await plugin.readNextSteps(client.stigmer, org, outcome.members),
|
|
102
103
|
}),
|
|
103
104
|
format,
|
|
104
105
|
);
|
|
@@ -108,22 +108,22 @@ describe("marketplace add", () => {
|
|
|
108
108
|
expect(load().marketplaces).toBeUndefined();
|
|
109
109
|
});
|
|
110
110
|
|
|
111
|
-
it("refuses
|
|
111
|
+
it("refuses the built-in name toward --name, takes a vendor's name, and refuses a duplicate", async () => {
|
|
112
112
|
expect((await run("add", fixture, "--name", "stigmer")).message).toMatch(
|
|
113
113
|
/'stigmer' is a built-in source and cannot be added or replaced[\s\S]*--name/,
|
|
114
114
|
);
|
|
115
|
-
// A
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
/'cursor-plugins' is a built-in source/,
|
|
115
|
+
// A vendor's catalogue is a source the user adds; its name is his to take.
|
|
116
|
+
expect((await run("add", fixture, "--name", "cursor-plugins")).exitCode).toBe(
|
|
117
|
+
ExitCode.Success,
|
|
119
118
|
);
|
|
119
|
+
expect(load().marketplaces?.["cursor-plugins"]).toBeDefined();
|
|
120
120
|
await run("add", fixture);
|
|
121
121
|
expect((await run("add", fixture)).message).toMatch(/already configured/);
|
|
122
122
|
});
|
|
123
123
|
});
|
|
124
124
|
|
|
125
125
|
describe("marketplace list", () => {
|
|
126
|
-
it("is offline, the built-
|
|
126
|
+
it("is offline, the built-in first, and names an entry it cannot read", async () => {
|
|
127
127
|
await run("add", fixture);
|
|
128
128
|
const { save } = await import("../config/index.js");
|
|
129
129
|
const config = load();
|
|
@@ -138,12 +138,6 @@ describe("marketplace list", () => {
|
|
|
138
138
|
expect(payload.status).toBe("warning");
|
|
139
139
|
expect(payload.data.marketplaces).toEqual([
|
|
140
140
|
{ name: "stigmer", source: { type: "official" } },
|
|
141
|
-
{ name: "cursor-plugins", source: { type: "github", repo: "cursor/plugins" } },
|
|
142
|
-
{
|
|
143
|
-
name: "claude-code-plugins",
|
|
144
|
-
source: { type: "github", repo: "anthropics/claude-code" },
|
|
145
|
-
},
|
|
146
|
-
{ name: "codex-plugins", source: { type: "github", repo: "openai/plugins" } },
|
|
147
141
|
{ name: "acme-plugins", source: { type: "local", path: fixture } },
|
|
148
142
|
{
|
|
149
143
|
name: "broken",
|
|
@@ -164,12 +158,12 @@ describe("marketplace show", () => {
|
|
|
164
158
|
);
|
|
165
159
|
expect(payload.data.plugins).toEqual([
|
|
166
160
|
{
|
|
167
|
-
name: "
|
|
168
|
-
dir: "
|
|
161
|
+
name: "warmer",
|
|
162
|
+
dir: "warmer",
|
|
169
163
|
version: "1.0.0",
|
|
170
|
-
description: "The
|
|
164
|
+
description: "The warmer plugin.",
|
|
171
165
|
},
|
|
172
|
-
{ name: "
|
|
166
|
+
{ name: "codeforge", dir: "third_party/codeforge", version: "2.1.0" },
|
|
173
167
|
]);
|
|
174
168
|
expect(payload.data.warnings).toHaveLength(1);
|
|
175
169
|
expect(payload.data.warnings[0].subject).toBe("ghost");
|
|
@@ -204,9 +198,6 @@ describe("marketplace remove", () => {
|
|
|
204
198
|
expect((await run("remove", "stigmer")).message).toMatch(
|
|
205
199
|
/'stigmer' is a built-in source and cannot be removed/,
|
|
206
200
|
);
|
|
207
|
-
expect((await run("remove", "codex-plugins")).message).toMatch(
|
|
208
|
-
/'codex-plugins' is a built-in source and cannot be removed/,
|
|
209
|
-
);
|
|
210
201
|
expect((await run("remove", "acme-plugins")).message).toMatch(
|
|
211
202
|
/no marketplace named 'acme-plugins'/,
|
|
212
203
|
);
|
|
@@ -23,7 +23,7 @@ export function registerMarketplace(program: Command): void {
|
|
|
23
23
|
const marketplace = program
|
|
24
24
|
.command("marketplace")
|
|
25
25
|
.description(
|
|
26
|
-
"manage the sources the Marketplace installs from: the
|
|
26
|
+
"manage the sources the Marketplace installs from: the official catalogue and the ones you add",
|
|
27
27
|
);
|
|
28
28
|
|
|
29
29
|
const add = marketplace
|
|
@@ -40,7 +40,7 @@ export function registerMarketplace(program: Command): void {
|
|
|
40
40
|
|
|
41
41
|
const list = marketplace
|
|
42
42
|
.command("list")
|
|
43
|
-
.description("list the known sources,
|
|
43
|
+
.description("list the known sources, the official catalogue and the added ones (offline)")
|
|
44
44
|
.action((options: OutputFlags) => runList(options));
|
|
45
45
|
addResultFlags(list);
|
|
46
46
|
|
|
@@ -52,7 +52,7 @@ export function registerMarketplace(program: Command): void {
|
|
|
52
52
|
|
|
53
53
|
const remove = marketplace
|
|
54
54
|
.command("remove <name>")
|
|
55
|
-
.description("remove an added source (installed plugins stay;
|
|
55
|
+
.description("remove an added source (installed plugins stay; the official catalogue cannot be removed)")
|
|
56
56
|
.action((name: string, options: OutputFlags) => runRemove(name, options));
|
|
57
57
|
addResultFlags(remove);
|
|
58
58
|
}
|
package/src/commands/push.ts
CHANGED
|
@@ -262,7 +262,12 @@ async function runPushPlugin(
|
|
|
262
262
|
message: options.message ?? "",
|
|
263
263
|
ignoreOptions,
|
|
264
264
|
});
|
|
265
|
-
renderCommandResult(
|
|
265
|
+
renderCommandResult(
|
|
266
|
+
plugin.renderPushOutcome(outcome, {
|
|
267
|
+
next: await plugin.readNextSteps(client.stigmer, org, outcome.members),
|
|
268
|
+
}),
|
|
269
|
+
format,
|
|
270
|
+
);
|
|
266
271
|
}
|
|
267
272
|
|
|
268
273
|
interface ArchiveContext {
|
|
@@ -49,8 +49,8 @@ let pushes: PushPluginRequest[];
|
|
|
49
49
|
let refusing: Set<string>;
|
|
50
50
|
|
|
51
51
|
let official: string;
|
|
52
|
-
let
|
|
53
|
-
let
|
|
52
|
+
let warmerDigest: string;
|
|
53
|
+
let codeforgeDigest: string;
|
|
54
54
|
|
|
55
55
|
function pluginRow(
|
|
56
56
|
slug: string,
|
|
@@ -75,15 +75,15 @@ beforeAll(async () => {
|
|
|
75
75
|
JSON.stringify({
|
|
76
76
|
name: "stigmer",
|
|
77
77
|
plugins: [
|
|
78
|
-
{ name: "
|
|
79
|
-
{ name: "
|
|
78
|
+
{ name: "warmer", source: "./warmer" },
|
|
79
|
+
{ name: "codeforge", source: "./third_party/codeforge" },
|
|
80
80
|
],
|
|
81
|
-
defaults: ["
|
|
81
|
+
defaults: ["warmer", "codeforge"],
|
|
82
82
|
}),
|
|
83
83
|
);
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
await preparePluginPush(join(official, "third_party", "
|
|
84
|
+
warmerDigest = (await preparePluginPush(join(official, "warmer"))).digest;
|
|
85
|
+
codeforgeDigest = (
|
|
86
|
+
await preparePluginPush(join(official, "third_party", "codeforge"))
|
|
87
87
|
).digest;
|
|
88
88
|
|
|
89
89
|
const routes = (router: ConnectRouter) => {
|
|
@@ -92,7 +92,7 @@ beforeAll(async () => {
|
|
|
92
92
|
pushes.push(req);
|
|
93
93
|
// The archive names the plugin: the backend knows the two trees by their digests.
|
|
94
94
|
const slug =
|
|
95
|
-
digestOf(req.artifact) ===
|
|
95
|
+
digestOf(req.artifact) === warmerDigest ? "warmer" : "codeforge";
|
|
96
96
|
if (refusing.has(slug))
|
|
97
97
|
throw new ConnectError(`refused ${slug}`, Code.FailedPrecondition);
|
|
98
98
|
const row = pluginRow(
|
|
@@ -159,8 +159,8 @@ describe("prepareDefaultPlugins", () => {
|
|
|
159
159
|
it("prepares every default in the marketplace's order without touching the backend", async () => {
|
|
160
160
|
const prepared = await prepareDefaultPlugins({ repoDir: () => official });
|
|
161
161
|
expect(prepared.map((entry) => [entry.name, entry.push.digest])).toEqual([
|
|
162
|
-
["
|
|
163
|
-
["
|
|
162
|
+
["warmer", warmerDigest],
|
|
163
|
+
["codeforge", codeforgeDigest],
|
|
164
164
|
]);
|
|
165
165
|
expect(pushes).toHaveLength(0);
|
|
166
166
|
});
|
|
@@ -189,8 +189,8 @@ describe("installPreparedDefaults", () => {
|
|
|
189
189
|
it("installs every default in order, public, with the invoking verb in the message, on a fresh backend", async () => {
|
|
190
190
|
const result = await run();
|
|
191
191
|
expect(result.outcomes.map((o) => [o.name, o.action])).toEqual([
|
|
192
|
-
["
|
|
193
|
-
["
|
|
192
|
+
["warmer", "installed"],
|
|
193
|
+
["codeforge", "installed"],
|
|
194
194
|
]);
|
|
195
195
|
expect(result.failed).toEqual([]);
|
|
196
196
|
expect(pushes.map((p) => p.org)).toEqual(["stigmer", "stigmer"]);
|
|
@@ -202,13 +202,13 @@ describe("installPreparedDefaults", () => {
|
|
|
202
202
|
expect(pushes[0]?.message).toMatch(
|
|
203
203
|
/^default plugin, installed by stigmer bootstrap \(/,
|
|
204
204
|
);
|
|
205
|
-
expect(digestOf(pushes[0]!.artifact)).toBe(
|
|
206
|
-
expect(digestOf(pushes[1]!.artifact)).toBe(
|
|
205
|
+
expect(digestOf(pushes[0]!.artifact)).toBe(warmerDigest);
|
|
206
|
+
expect(digestOf(pushes[1]!.artifact)).toBe(codeforgeDigest);
|
|
207
207
|
});
|
|
208
208
|
|
|
209
209
|
it("pushes nothing when every default is already held at the same digest, READY and public", async () => {
|
|
210
|
-
held.set("
|
|
211
|
-
held.set("
|
|
210
|
+
held.set("warmer", pluginRow("warmer", warmerDigest));
|
|
211
|
+
held.set("codeforge", pluginRow("codeforge", codeforgeDigest));
|
|
212
212
|
const result = await run();
|
|
213
213
|
expect(result.outcomes.map((o) => o.action)).toEqual([
|
|
214
214
|
"up-to-date",
|
|
@@ -218,8 +218,8 @@ describe("installPreparedDefaults", () => {
|
|
|
218
218
|
});
|
|
219
219
|
|
|
220
220
|
it("pushes again on a changed digest, a non-READY state, or a non-public visibility", async () => {
|
|
221
|
-
held.set("
|
|
222
|
-
held.set("
|
|
221
|
+
held.set("warmer", pluginRow("warmer", "f".repeat(64)));
|
|
222
|
+
held.set("codeforge", pluginRow("codeforge", codeforgeDigest, PluginState.FAILED));
|
|
223
223
|
expect((await run()).outcomes.map((o) => o.action)).toEqual([
|
|
224
224
|
"installed",
|
|
225
225
|
"installed",
|
|
@@ -228,15 +228,15 @@ describe("installPreparedDefaults", () => {
|
|
|
228
228
|
|
|
229
229
|
pushes = [];
|
|
230
230
|
held.set(
|
|
231
|
-
"
|
|
231
|
+
"warmer",
|
|
232
232
|
pluginRow(
|
|
233
|
-
"
|
|
234
|
-
|
|
233
|
+
"warmer",
|
|
234
|
+
warmerDigest,
|
|
235
235
|
PluginState.READY,
|
|
236
236
|
ApiResourceVisibility.visibility_private,
|
|
237
237
|
),
|
|
238
238
|
);
|
|
239
|
-
held.set("
|
|
239
|
+
held.set("codeforge", pluginRow("codeforge", codeforgeDigest));
|
|
240
240
|
expect((await run()).outcomes.map((o) => o.action)).toEqual([
|
|
241
241
|
"installed",
|
|
242
242
|
"up-to-date",
|
|
@@ -256,16 +256,16 @@ describe("installPreparedDefaults", () => {
|
|
|
256
256
|
});
|
|
257
257
|
|
|
258
258
|
it("one default failing does not stop the next, and the failure is named", async () => {
|
|
259
|
-
refusing.add("
|
|
259
|
+
refusing.add("warmer");
|
|
260
260
|
const result = await run();
|
|
261
261
|
expect(result.outcomes.map((o) => [o.name, o.action])).toEqual([
|
|
262
|
-
["
|
|
263
|
-
["
|
|
262
|
+
["warmer", "failed"],
|
|
263
|
+
["codeforge", "installed"],
|
|
264
264
|
]);
|
|
265
|
-
expect(result.failed).toEqual(["
|
|
265
|
+
expect(result.failed).toEqual(["warmer"]);
|
|
266
266
|
const failed = result.outcomes[0];
|
|
267
267
|
expect(failed?.action === "failed" && failed.error).toMatch(
|
|
268
|
-
/refused
|
|
268
|
+
/refused warmer/,
|
|
269
269
|
);
|
|
270
270
|
});
|
|
271
271
|
});
|