@snowyroad/braid 0.77.0 → 0.78.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/dist/cli.js CHANGED
@@ -7225,6 +7225,52 @@ async function runEnroll(opts, io, env) {
7225
7225
  }
7226
7226
  }
7227
7227
 
7228
+ // src/agentList.ts
7229
+ var EMPTY_MESSAGE = "No saved agents. Run: npx @snowyroad/braid join <code>";
7230
+ function bareHost(relayUrl) {
7231
+ return relayUrl.replace(/^wss?:\/\//, "");
7232
+ }
7233
+ function padRight(s, width) {
7234
+ return s.length >= width ? s : s + " ".repeat(width - s.length);
7235
+ }
7236
+ function formatAgentList(entries) {
7237
+ if (entries.length === 0) return EMPTY_MESSAGE;
7238
+ const groups = /* @__PURE__ */ new Map();
7239
+ let nameWidth = "NAME".length;
7240
+ let toolsWidth = "TOOLS".length;
7241
+ for (const e of entries) {
7242
+ const host = sanitizeForTty(bareHost(e.agent.relayUrl));
7243
+ const name = sanitizeForTty(e.agent.agentName);
7244
+ const tools = toolModeLabel(e.agent.toolMode ?? "readonly");
7245
+ const id = sanitizeForTty(e.agent.agentUuid).slice(0, 8);
7246
+ nameWidth = Math.max(nameWidth, name.length);
7247
+ toolsWidth = Math.max(toolsWidth, tools.length);
7248
+ const rows = groups.get(host);
7249
+ if (rows) {
7250
+ rows.push({ name, tools, id });
7251
+ } else {
7252
+ groups.set(host, [{ name, tools, id }]);
7253
+ }
7254
+ }
7255
+ const header = ` ${padRight("NAME", nameWidth)} ${padRight("TOOLS", toolsWidth)} ID`;
7256
+ const lines = [];
7257
+ let relayCount = 0;
7258
+ for (const [host, rows] of groups) {
7259
+ relayCount++;
7260
+ lines.push("");
7261
+ lines.push(host);
7262
+ lines.push(header);
7263
+ for (const row of rows) {
7264
+ lines.push(` ${padRight(row.name, nameWidth)} ${padRight(row.tools, toolsWidth)} ${row.id}`);
7265
+ }
7266
+ }
7267
+ lines.push("");
7268
+ const agentWord = entries.length === 1 ? "agent" : "agents";
7269
+ const relayWord = relayCount === 1 ? "relay" : "relays";
7270
+ lines.push(`${entries.length} ${agentWord} across ${relayCount} ${relayWord}.`);
7271
+ return lines.join("\n");
7272
+ }
7273
+
7228
7274
  // src/connectedBanner.ts
7229
7275
  function connectedBannerLines(opts) {
7230
7276
  const lines = [
@@ -9163,16 +9209,7 @@ function installTee(outWriter, errWriter) {
9163
9209
  // src/cli.ts
9164
9210
  import { homedir as homedir7 } from "os";
9165
9211
  function printList() {
9166
- const entries = listAgents(configDir(process.env));
9167
- if (entries.length === 0) {
9168
- console.log("No saved agents. Run: npx @snowyroad/braid join <code>");
9169
- return;
9170
- }
9171
- for (const e of entries) {
9172
- console.log(
9173
- `${sanitizeForTty(e.agent.agentName)} relay=${e.agent.relayUrl} uuid=${sanitizeForTty(e.agent.agentUuid)} tools=${toolModeLabel(e.agent.toolMode ?? "readonly")}`
9174
- );
9175
- }
9212
+ console.log(formatAgentList(listAgents(configDir(process.env))));
9176
9213
  }
9177
9214
  function printStatus(agentName, json) {
9178
9215
  const dir = configDir(process.env);
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@snowyroad/braid",
3
- "version": "0.77.0",
3
+ "version": "0.78.0",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@snowyroad/braid",
9
- "version": "0.77.0",
9
+ "version": "0.78.0",
10
10
  "license": "SEE LICENSE IN LICENSE.md",
11
11
  "dependencies": {
12
12
  "@agentclientprotocol/sdk": "0.25.1",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@snowyroad/braid",
3
- "version": "0.77.0",
3
+ "version": "0.78.0",
4
4
  "description": "Braid: connect your own coding agent (Claude Code, Codex, Gemini, Grok) to a Braid channel and collaborate with other agents and humans.",
5
5
  "license": "SEE LICENSE IN LICENSE.md",
6
6
  "author": "SnowyRoad",