@beryl-so/cli 0.25.0 → 0.27.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/README.md +2 -15
- package/dist/commands/account.js +1 -1
- package/dist/registry/index.js +1 -4
- package/package.json +1 -1
- package/dist/commands/slack.js +0 -82
package/README.md
CHANGED
|
@@ -60,7 +60,7 @@ claude mcp add beryl -- beryl mcp # or, with the CLI installe
|
|
|
60
60
|
|
|
61
61
|
Most non-interactive commands below are exposed as an MCP tool with the same name
|
|
62
62
|
(spaces and dashes become underscores) — see the MCP tool column. `—` marks commands
|
|
63
|
-
kept CLI-only: account/billing/team admin,
|
|
63
|
+
kept CLI-only: account/billing/team admin, feedback, and cloud exploration.
|
|
64
64
|
|
|
65
65
|
## Commands
|
|
66
66
|
|
|
@@ -277,19 +277,6 @@ Manage the variables, secrets, and files the agent can use while exploring and r
|
|
|
277
277
|
| `beryl config files download <file-id>` | Get a short-lived download URL for a file | `config_files_download` |
|
|
278
278
|
| `beryl config files delete <file-id>` | Delete an uploaded file | `config_files_delete` |
|
|
279
279
|
|
|
280
|
-
### slack
|
|
281
|
-
|
|
282
|
-
Send run outcomes to a Slack channel via a per-project incoming webhook.
|
|
283
|
-
|
|
284
|
-
`beryl slack` with no subcommand runs `slack show`.
|
|
285
|
-
|
|
286
|
-
| Command | Summary | MCP tool |
|
|
287
|
-
| --- | --- | --- |
|
|
288
|
-
| `beryl slack show` | Show the project's Slack alert config (webhook is masked) | — |
|
|
289
|
-
| `beryl slack set-webhook <url>` | Set the Slack incoming-webhook URL run alerts post to | — |
|
|
290
|
-
| `beryl slack clear` | Remove the project's Slack webhook (stops all alerts) | — |
|
|
291
|
-
| `beryl slack test` | Post a sample alert to the configured webhook | — |
|
|
292
|
-
|
|
293
280
|
### mailbox
|
|
294
281
|
|
|
295
282
|
The project's standing email addresses — where its tests receive sign-in mail.
|
|
@@ -346,7 +333,7 @@ Review a workspace's plan usage, subscription, and invoices.
|
|
|
346
333
|
|
|
347
334
|
| Command | Summary | MCP tool |
|
|
348
335
|
| --- | --- | --- |
|
|
349
|
-
| `beryl billing usage` | Show plan usage:
|
|
336
|
+
| `beryl billing usage` | Show plan usage: monthly cloud run minutes | — |
|
|
350
337
|
| `beryl billing subscription` | Show the workspace's subscription | — |
|
|
351
338
|
| `beryl billing invoices` | List recent invoices | — |
|
|
352
339
|
| `beryl billing portal` | Get a Stripe billing-portal link for the workspace | — |
|
package/dist/commands/account.js
CHANGED
|
@@ -45,7 +45,7 @@ export const accountCommands = [
|
|
|
45
45
|
},
|
|
46
46
|
{
|
|
47
47
|
name: "billing usage",
|
|
48
|
-
summary: "Show plan usage:
|
|
48
|
+
summary: "Show plan usage: monthly cloud run minutes",
|
|
49
49
|
scope: "workspace",
|
|
50
50
|
groupSummary: "Review a workspace's plan usage, subscription, and invoices.",
|
|
51
51
|
async run(ctx, input) {
|
package/dist/registry/index.js
CHANGED
|
@@ -9,7 +9,6 @@ import { initCommands } from "../commands/init.js";
|
|
|
9
9
|
import { mcpCommands } from "../commands/mcp.js";
|
|
10
10
|
import { projectCommands } from "../commands/projects.js";
|
|
11
11
|
import { runCommands } from "../commands/runs.js";
|
|
12
|
-
import { slackCommands } from "../commands/slack.js";
|
|
13
12
|
import { testCommands } from "../commands/tests.js";
|
|
14
13
|
import { workspaceCommands } from "../commands/workspaces.js";
|
|
15
14
|
export const WORKSPACE_FLAG = {
|
|
@@ -34,11 +33,10 @@ function withScopeFlags(spec) {
|
|
|
34
33
|
return { ...spec, flags: [...(spec.flags ?? []), ...extra] };
|
|
35
34
|
}
|
|
36
35
|
// Command groups kept OUT of the `beryl mcp` tool surface while staying full CLI commands:
|
|
37
|
-
// account/billing/team admin,
|
|
36
|
+
// account/billing/team admin, feedback, and the cloud-exploration mode
|
|
38
37
|
// (incl. `projects re-explore`) — none of it is part of authoring/editing/running tests,
|
|
39
38
|
// which is all an agent drives over MCP.
|
|
40
39
|
const MCP_HIDDEN_PREFIXES = [
|
|
41
|
-
"slack",
|
|
42
40
|
"account",
|
|
43
41
|
"billing",
|
|
44
42
|
"feedback",
|
|
@@ -61,7 +59,6 @@ export const commands = [
|
|
|
61
59
|
...runCommands,
|
|
62
60
|
...explorationCommands,
|
|
63
61
|
...configCommands,
|
|
64
|
-
...slackCommands,
|
|
65
62
|
...mailboxCommands,
|
|
66
63
|
...testAccountCommands,
|
|
67
64
|
...accountCommands,
|
package/package.json
CHANGED
package/dist/commands/slack.js
DELETED
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
import { arg, flagBool, projectPath } from "./util.js";
|
|
2
|
-
const slackPath = (ws, p) => `${projectPath(ws, p)}/slack`;
|
|
3
|
-
export const slackCommands = [
|
|
4
|
-
{
|
|
5
|
-
name: "slack show",
|
|
6
|
-
summary: "Show the project's Slack alert config (webhook is masked)",
|
|
7
|
-
groupSummary: "Send run outcomes to a Slack channel via a per-project incoming webhook.",
|
|
8
|
-
scope: "project",
|
|
9
|
-
groupDefault: true,
|
|
10
|
-
async run(ctx, input) {
|
|
11
|
-
const { workspaceId, projectId } = await ctx.requireProject(input);
|
|
12
|
-
return { data: await ctx.client.get(slackPath(workspaceId, projectId)) };
|
|
13
|
-
},
|
|
14
|
-
},
|
|
15
|
-
{
|
|
16
|
-
name: "slack set-webhook",
|
|
17
|
-
summary: "Set the Slack incoming-webhook URL run alerts post to",
|
|
18
|
-
scope: "project",
|
|
19
|
-
args: [
|
|
20
|
-
{
|
|
21
|
-
name: "url",
|
|
22
|
-
description: "Slack incoming-webhook URL (https://hooks.slack.com/…)",
|
|
23
|
-
required: true,
|
|
24
|
-
},
|
|
25
|
-
],
|
|
26
|
-
flags: [
|
|
27
|
-
{
|
|
28
|
-
name: "all-runs",
|
|
29
|
-
type: "boolean",
|
|
30
|
-
description: "Post on every run, not only on a new regression",
|
|
31
|
-
},
|
|
32
|
-
{
|
|
33
|
-
name: "failures-only",
|
|
34
|
-
type: "boolean",
|
|
35
|
-
description: "Post only on a new regression (the default)",
|
|
36
|
-
},
|
|
37
|
-
],
|
|
38
|
-
async run(ctx, input) {
|
|
39
|
-
const { workspaceId, projectId } = await ctx.requireProject(input);
|
|
40
|
-
const path = slackPath(workspaceId, projectId);
|
|
41
|
-
// Preserve the stored notify preference unless the caller states one, so
|
|
42
|
-
// rotating the webhook doesn't silently reset an existing all-runs opt-in.
|
|
43
|
-
let notifyAllRuns;
|
|
44
|
-
if (flagBool(input, "all-runs")) {
|
|
45
|
-
notifyAllRuns = true;
|
|
46
|
-
}
|
|
47
|
-
else if (flagBool(input, "failures-only")) {
|
|
48
|
-
notifyAllRuns = false;
|
|
49
|
-
}
|
|
50
|
-
else {
|
|
51
|
-
const current = (await ctx.client.get(path));
|
|
52
|
-
notifyAllRuns = current?.notify_all_runs ?? false;
|
|
53
|
-
}
|
|
54
|
-
return {
|
|
55
|
-
data: await ctx.client.put(path, {
|
|
56
|
-
webhook_url: arg(input, "url"),
|
|
57
|
-
notify_all_runs: notifyAllRuns,
|
|
58
|
-
}),
|
|
59
|
-
};
|
|
60
|
-
},
|
|
61
|
-
},
|
|
62
|
-
{
|
|
63
|
-
name: "slack clear",
|
|
64
|
-
summary: "Remove the project's Slack webhook (stops all alerts)",
|
|
65
|
-
scope: "project",
|
|
66
|
-
async run(ctx, input) {
|
|
67
|
-
const { workspaceId, projectId } = await ctx.requireProject(input);
|
|
68
|
-
await ctx.client.del(slackPath(workspaceId, projectId));
|
|
69
|
-
return { human: "Cleared." };
|
|
70
|
-
},
|
|
71
|
-
},
|
|
72
|
-
{
|
|
73
|
-
name: "slack test",
|
|
74
|
-
summary: "Post a sample alert to the configured webhook",
|
|
75
|
-
scope: "project",
|
|
76
|
-
async run(ctx, input) {
|
|
77
|
-
const { workspaceId, projectId } = await ctx.requireProject(input);
|
|
78
|
-
await ctx.client.post(`${slackPath(workspaceId, projectId)}/test`);
|
|
79
|
-
return { human: "Sent a test message to Slack." };
|
|
80
|
-
},
|
|
81
|
-
},
|
|
82
|
-
];
|