@sideboard-ai/cli 0.1.66 → 0.1.71
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 +9 -0
- package/dist/index.js +81 -2
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -11,3 +11,12 @@ sideboard mcp # MCP stdio server
|
|
|
11
11
|
```
|
|
12
12
|
|
|
13
13
|
Also installs `side` as a short alias. The MCP server is available as `sideboard mcp`, or via `@sideboard-ai/core`'s `sideboard-mcp` bin.
|
|
14
|
+
|
|
15
|
+
Slack inbound (official Sideboard app + hosted relay):
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
sideboard slack login # browser OAuth
|
|
19
|
+
sideboard slack listen
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
How to connect and address Personal / Work Macs: [README — Slack](../../README.md#slack).
|
package/dist/index.js
CHANGED
|
@@ -21,7 +21,16 @@ import {
|
|
|
21
21
|
getBrightsySession,
|
|
22
22
|
switchBrightsyAccount,
|
|
23
23
|
connectBrightsyTeam,
|
|
24
|
-
disconnectBrightsyTeam
|
|
24
|
+
disconnectBrightsyTeam,
|
|
25
|
+
listSlackWorkspaces,
|
|
26
|
+
connectSlackToken,
|
|
27
|
+
disconnectSlackWorkspace,
|
|
28
|
+
startSlackOAuth,
|
|
29
|
+
startLinearOAuth,
|
|
30
|
+
disconnectLinear,
|
|
31
|
+
runSlackListen,
|
|
32
|
+
SLACK_OAUTH_REDIRECT,
|
|
33
|
+
LINEAR_OAUTH_REDIRECT
|
|
25
34
|
} from "@sideboard-ai/core";
|
|
26
35
|
var VERSION = "0.1.0";
|
|
27
36
|
async function printUpgradeHint() {
|
|
@@ -555,8 +564,78 @@ ${preview.diffStat}`);
|
|
|
555
564
|
)
|
|
556
565
|
);
|
|
557
566
|
});
|
|
567
|
+
const slackCmd = program.command("slack").description(
|
|
568
|
+
"Slack workspaces + Listen (DMs / @mentions \u2192 orchestrator)"
|
|
569
|
+
);
|
|
570
|
+
slackCmd.command("teams").description("List connected Slack workspaces").action(() => {
|
|
571
|
+
const teams = listSlackWorkspaces();
|
|
572
|
+
if (teams.length === 0) {
|
|
573
|
+
console.log(chalk.dim("No Slack workspaces. sideboard slack connect --token xoxb-\u2026"));
|
|
574
|
+
return;
|
|
575
|
+
}
|
|
576
|
+
for (const t of teams) {
|
|
577
|
+
console.log(
|
|
578
|
+
`${t.team_name.padEnd(24)} ${t.team_id}${t.has_user_token ? "" : chalk.dim(" (no search)")}`
|
|
579
|
+
);
|
|
580
|
+
}
|
|
581
|
+
});
|
|
582
|
+
slackCmd.command("connect").description("Add a workspace from a bot or user token").requiredOption("--token <token>", "xoxb- or xoxp- token").action(async (opts) => {
|
|
583
|
+
const info = await connectSlackToken(opts.token);
|
|
584
|
+
console.log(chalk.green(`Connected ${info.team_name} (${info.team_id})`));
|
|
585
|
+
});
|
|
586
|
+
slackCmd.command("login").description(`Browser OAuth (Slack app redirect ${SLACK_OAUTH_REDIRECT})`).action(async () => {
|
|
587
|
+
const info = await startSlackOAuth({
|
|
588
|
+
openUrl: async (url) => {
|
|
589
|
+
console.log(chalk.dim(url));
|
|
590
|
+
const opener = process.platform === "darwin" ? "open" : process.platform === "win32" ? "cmd" : "xdg-open";
|
|
591
|
+
const args = process.platform === "win32" ? ["/c", "start", "", url] : [url];
|
|
592
|
+
spawn(opener, args, { detached: true, stdio: "ignore" }).unref();
|
|
593
|
+
}
|
|
594
|
+
});
|
|
595
|
+
console.log(chalk.green(`Connected ${info.team_name} (${info.team_id})`));
|
|
596
|
+
});
|
|
597
|
+
slackCmd.command("disconnect").argument("<team_id>", "Slack team id (T\u2026)").description("Remove a connected Slack workspace").action((teamId) => {
|
|
598
|
+
disconnectSlackWorkspace(teamId);
|
|
599
|
+
console.log(chalk.green(`Disconnected ${teamId}`));
|
|
600
|
+
});
|
|
601
|
+
slackCmd.command("listen").description(
|
|
602
|
+
"Listen: DMs and @mentions \u2192 Global orchestrator."
|
|
603
|
+
).action(async () => {
|
|
604
|
+
const ac = new AbortController();
|
|
605
|
+
const stop = () => ac.abort();
|
|
606
|
+
process.on("SIGINT", stop);
|
|
607
|
+
process.on("SIGTERM", stop);
|
|
608
|
+
console.log(
|
|
609
|
+
chalk.bold("Sideboard Slack Listen"),
|
|
610
|
+
chalk.dim("(Ctrl+C to stop)")
|
|
611
|
+
);
|
|
612
|
+
await runSlackListen({
|
|
613
|
+
signal: ac.signal,
|
|
614
|
+
onLog: (line) => console.log(chalk.dim(line))
|
|
615
|
+
});
|
|
616
|
+
});
|
|
617
|
+
const linearCmd = program.command("linear").description("Linear account connection (browser OAuth)");
|
|
618
|
+
linearCmd.command("login").description(`Browser OAuth (Linear app redirect ${LINEAR_OAUTH_REDIRECT})`).action(async () => {
|
|
619
|
+
const saved = await startLinearOAuth({
|
|
620
|
+
openUrl: async (url) => {
|
|
621
|
+
console.log(chalk.dim(url));
|
|
622
|
+
const opener = process.platform === "darwin" ? "open" : process.platform === "win32" ? "cmd" : "xdg-open";
|
|
623
|
+
const args = process.platform === "win32" ? ["/c", "start", "", url] : [url];
|
|
624
|
+
spawn(opener, args, { detached: true, stdio: "ignore" }).unref();
|
|
625
|
+
}
|
|
626
|
+
});
|
|
627
|
+
const label = [
|
|
628
|
+
saved.integrations.linearViewerName,
|
|
629
|
+
saved.integrations.linearOrganizationName
|
|
630
|
+
].filter(Boolean).join(" \xB7 ");
|
|
631
|
+
console.log(chalk.green(`Connected Linear${label ? ` (${label})` : ""}`));
|
|
632
|
+
});
|
|
633
|
+
linearCmd.command("disconnect").description("Revoke OAuth and clear stored Linear credentials").action(async () => {
|
|
634
|
+
await disconnectLinear();
|
|
635
|
+
console.log(chalk.green("Disconnected Linear"));
|
|
636
|
+
});
|
|
558
637
|
program.command("connect").description(
|
|
559
|
-
"Connect Sideboard to Brightsy cloud (
|
|
638
|
+
"Connect Sideboard to Brightsy cloud (poll inbound orchestrator tasks across all workspaces)"
|
|
560
639
|
).option(
|
|
561
640
|
"--repo <path>",
|
|
562
641
|
"deprecated \u2014 ignored; cloud connect uses the Global workspace coordinator"
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sideboard-ai/cli",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.71",
|
|
4
4
|
"description": "Sideboard CLI — agent-agnostic worktree orchestration (includes `sideboard mcp`)",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "module",
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
"chalk": "^5.4.1",
|
|
17
17
|
"commander": "^13.1.0",
|
|
18
18
|
"ora": "^8.2.0",
|
|
19
|
-
"@sideboard-ai/core": "0.1.
|
|
19
|
+
"@sideboard-ai/core": "0.1.71"
|
|
20
20
|
},
|
|
21
21
|
"devDependencies": {
|
|
22
22
|
"@types/node": "^22.13.10",
|