@gobi-ai/cli 0.6.20 → 0.7.1

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.
@@ -4,12 +4,12 @@
4
4
  "name": "gobi-ai"
5
5
  },
6
6
  "description": "Claude Code plugin for the Gobi collaborative knowledge platform CLI",
7
- "version": "0.6.19",
7
+ "version": "0.7.0",
8
8
  "plugins": [
9
9
  {
10
10
  "name": "gobi",
11
11
  "description": "Manage the Gobi collaborative knowledge platform from the command line. Search and ask brains, publish brain documents, create threads, manage sessions.",
12
- "version": "0.6.19",
12
+ "version": "0.7.0",
13
13
  "author": {
14
14
  "name": "gobi-ai"
15
15
  },
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "gobi",
3
3
  "description": "Manage the Gobi collaborative knowledge platform from the command line",
4
- "version": "0.6.19",
4
+ "version": "0.7.0",
5
5
  "author": {
6
6
  "name": "gobi-ai"
7
7
  },
@@ -6,13 +6,15 @@ argument-hint: "[topic or keyword]"
6
6
 
7
7
  Always use the globally installed `gobi` binary (not via npx or ts-node).
8
8
 
9
- Explore the active Gobi space to surface both discussions and learnings from others:
9
+ Explore the active Gobi space to surface discussions, topics, and learnings from others:
10
10
 
11
- 1. Run these two commands in parallel:
12
- - `gobi space list-threads` — recent discussions in the space
13
- - `gobi brain list-updates` — learnings and brain updates shared by members
14
- 2. Display both in a readable summary, grouped by type (Discussions / Learnings).
15
- 3. If `$ARGUMENTS` is provided, filter or highlight entries relevant to that topic or keyword.
11
+ 1. Run these three commands in parallel:
12
+ - `gobi --json space list-threads` — recent discussions in the space
13
+ - `gobi --json space list-topics` — available topics across the platform
14
+ - `gobi --json brain list-updates` learnings and brain updates shared by members
15
+ 2. Display results in a readable summary, grouped by type (Topics / Discussions / Learnings).
16
+ 3. If `$ARGUMENTS` is provided, filter or highlight entries relevant to that topic or keyword. If a matching topic is found, also run `gobi --json space list-topic-threads <topicSlug>` to show threads tagged with that topic.
16
17
  4. Ask the user if they'd like to read anything in full:
18
+ - For a topic: run `gobi space list-topic-threads <topicSlug>` and show the threads.
17
19
  - For a thread: run `gobi space get-thread <threadId>` and show it with replies.
18
20
  - For a brain update: show the full content from the list output.
@@ -16,15 +16,13 @@ export function registerSessionsCommand(program) {
16
16
  };
17
17
  if (opts.cursor)
18
18
  params.cursor = opts.cursor;
19
- const resp = (await apiGet(`/chat/${sessionId}`, params));
20
- const data = unwrapResp(resp);
19
+ const resp = (await apiGet(`/chat/${sessionId}/messages`, params));
20
+ const messages = (resp.data || []);
21
+ const pagination = (resp.pagination || {});
21
22
  if (isJsonMode(sessions)) {
22
- jsonOut(data);
23
+ jsonOut({ messages, pagination });
23
24
  return;
24
25
  }
25
- const session = (data.session || data);
26
- const messages = (data.messages || []);
27
- const pagination = (data.pagination || {});
28
26
  const msgLines = [];
29
27
  for (const m of messages) {
30
28
  const author = m.author?.name ||
@@ -35,10 +33,7 @@ export function registerSessionsCommand(program) {
35
33
  msgLines.push(` - ${author}: ${truncated} (${m.createdAt})`);
36
34
  }
37
35
  const output = [
38
- `Session: ${session.title}`,
39
- ` ID: ${session.id}`,
40
- ` Mode: ${session.mode}`,
41
- ` Last activity: ${session.lastMessageAt}`,
36
+ `Session: ${sessionId}`,
42
37
  "",
43
38
  `Messages (${messages.length} items):`,
44
39
  ...msgLines,
@@ -83,7 +78,7 @@ export function registerSessionsCommand(program) {
83
78
  if (overflow > 0)
84
79
  memberInfo += ` +${overflow} more`;
85
80
  }
86
- lines.push(`- [${s.id}] "${title}" (mode: ${s.mode}, last activity: ${s.lastMessageAt})${memberInfo}`);
81
+ lines.push(`- [${s.sessionId}] "${title}" (mode: ${s.mode}, last activity: ${s.lastMessageAt})${memberInfo}`);
87
82
  }
88
83
  const footer = pagination.hasMore ? `\n Next cursor: ${pagination.nextCursor}` : "";
89
84
  console.log(`Sessions (${items.length} items):\n` + lines.join("\n") + footer);
@@ -62,6 +62,70 @@ export function registerSpaceCommand(program) {
62
62
  }
63
63
  console.log(`Warped to space "${result.name}" (${result.slug})`);
64
64
  });
65
+ // ── Topics ──
66
+ space
67
+ .command("list-topics")
68
+ .description("List topics in a space, ordered by most recent content linkage.")
69
+ .option("--limit <number>", "Max topics to return (0 = all)", "50")
70
+ .action(async (opts) => {
71
+ const spaceSlug = resolveSpaceSlug(space);
72
+ const params = {
73
+ limit: parseInt(opts.limit, 10),
74
+ };
75
+ const resp = (await apiGet(`/spaces/${spaceSlug}/topics`, params));
76
+ const items = (resp.data || []);
77
+ if (isJsonMode(space)) {
78
+ jsonOut(items);
79
+ return;
80
+ }
81
+ if (!items.length) {
82
+ console.log("No topics found.");
83
+ return;
84
+ }
85
+ const lines = [];
86
+ for (const t of items) {
87
+ const desc = t.description ? ` - ${t.description}` : "";
88
+ lines.push(`- [${t.slug}] ${t.name}${desc}`);
89
+ }
90
+ console.log(`Topics (${items.length}):\n` + lines.join("\n"));
91
+ });
92
+ space
93
+ .command("list-topic-threads <topicSlug>")
94
+ .description("List threads tagged with a topic in a space (cursor-paginated).")
95
+ .option("--limit <number>", "Items per page", "20")
96
+ .option("--cursor <string>", "Pagination cursor from previous response")
97
+ .action(async (topicSlug, opts) => {
98
+ const spaceSlug = resolveSpaceSlug(space);
99
+ const params = {
100
+ limit: parseInt(opts.limit, 10),
101
+ };
102
+ if (opts.cursor)
103
+ params.cursor = opts.cursor;
104
+ const resp = (await apiGet(`/spaces/${spaceSlug}/topics/${topicSlug}/threads`, params));
105
+ const data = unwrapResp(resp);
106
+ const pagination = (resp.pagination || {});
107
+ if (isJsonMode(space)) {
108
+ jsonOut({ ...data, pagination });
109
+ return;
110
+ }
111
+ const topic = (data.topic || {});
112
+ const threads = (data.threads || []);
113
+ if (!threads.length) {
114
+ console.log(`No threads found for topic "${topic.name || topicSlug}".`);
115
+ return;
116
+ }
117
+ const lines = [];
118
+ for (const t of threads) {
119
+ const author = t.author?.name || "Unknown";
120
+ const spaceName = t.space?.name || "";
121
+ lines.push(`- [${t.id}] "${t.title}" by ${author} in ${spaceName} (${t.replyCount} replies, ${t.createdAt})`);
122
+ }
123
+ const footer = pagination.hasMore ? `\n Next cursor: ${pagination.nextCursor}` : "";
124
+ console.log(`Topic: ${topic.name || topicSlug}\n` +
125
+ `Threads (${threads.length} items):\n` +
126
+ lines.join("\n") +
127
+ footer);
128
+ });
65
129
  // ── Threads (get, list, create, edit, delete) ──
66
130
  space
67
131
  .command("get-thread <threadId>")
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gobi-ai/cli",
3
- "version": "0.6.20",
3
+ "version": "0.7.1",
4
4
  "description": "CLI client for the Gobi collaborative knowledge platform",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -10,12 +10,12 @@ description: >-
10
10
  allowed-tools: Bash(gobi:*)
11
11
  metadata:
12
12
  author: gobi-ai
13
- version: "0.6.19"
13
+ version: "0.7.0"
14
14
  ---
15
15
 
16
16
  # gobi-cli
17
17
 
18
- A CLI client for the Gobi collaborative knowledge platform (v0.6.19).
18
+ A CLI client for the Gobi collaborative knowledge platform (v0.7.0).
19
19
 
20
20
  ## Prerequisites
21
21
 
@@ -146,6 +146,8 @@ Note: `--space-slug` is not available on other `brain` subcommands or on `sessio
146
146
  - `gobi space` — Space commands (threads, replies).
147
147
  - `gobi space list` — List spaces you are a member of.
148
148
  - `gobi space warp` — Select the active space. Pass a slug to warp directly, or omit for interactive selection.
149
+ - `gobi space list-topics` — List topics in a space, ordered by most recent content linkage.
150
+ - `gobi space list-topic-threads` — List threads tagged with a topic in a space (cursor-paginated).
149
151
  - `gobi space get-thread` — Get a thread and its replies (paginated).
150
152
  - `gobi space list-threads` — List threads in a space (paginated).
151
153
  - `gobi space create-thread` — Create a thread in a space.
@@ -6,21 +6,23 @@ Usage: gobi space [options] [command]
6
6
  Space commands (threads, replies).
7
7
 
8
8
  Options:
9
- --space-slug <slug> Space slug (overrides .gobi/settings.yaml)
10
- -h, --help display help for command
9
+ --space-slug <slug> Space slug (overrides .gobi/settings.yaml)
10
+ -h, --help display help for command
11
11
 
12
12
  Commands:
13
- list List spaces you are a member of.
14
- warp [spaceSlug] Select the active space. Pass a slug to warp directly, or omit for interactive selection.
15
- get-thread [options] <threadId> Get a thread and its replies (paginated).
16
- list-threads [options] List threads in a space (paginated).
17
- create-thread [options] Create a thread in a space.
18
- edit-thread [options] <threadId> Edit a thread. You must be the author.
19
- delete-thread <threadId> Delete a thread. You must be the author.
20
- create-reply [options] <threadId> Create a reply to a thread in a space.
21
- edit-reply [options] <replyId> Edit a reply. You must be the author.
22
- delete-reply <replyId> Delete a reply. You must be the author.
23
- help [command] display help for command
13
+ list List spaces you are a member of.
14
+ warp [spaceSlug] Select the active space. Pass a slug to warp directly, or omit for interactive selection.
15
+ list-topics [options] List topics in a space, ordered by most recent content linkage.
16
+ list-topic-threads [options] <topicSlug> List threads tagged with a topic in a space (cursor-paginated).
17
+ get-thread [options] <threadId> Get a thread and its replies (paginated).
18
+ list-threads [options] List threads in a space (paginated).
19
+ create-thread [options] Create a thread in a space.
20
+ edit-thread [options] <threadId> Edit a thread. You must be the author.
21
+ delete-thread <threadId> Delete a thread. You must be the author.
22
+ create-reply [options] <threadId> Create a reply to a thread in a space.
23
+ edit-reply [options] <replyId> Edit a reply. You must be the author.
24
+ delete-reply <replyId> Delete a reply. You must be the author.
25
+ help [command] display help for command
24
26
  ```
25
27
 
26
28
  ## list
@@ -45,6 +47,31 @@ Options:
45
47
  -h, --help display help for command
46
48
  ```
47
49
 
50
+ ## list-topics
51
+
52
+ ```
53
+ Usage: gobi space list-topics [options]
54
+
55
+ List topics in a space, ordered by most recent content linkage.
56
+
57
+ Options:
58
+ --limit <number> Max topics to return (0 = all) (default: "50")
59
+ -h, --help display help for command
60
+ ```
61
+
62
+ ## list-topic-threads
63
+
64
+ ```
65
+ Usage: gobi space list-topic-threads [options] <topicSlug>
66
+
67
+ List threads tagged with a topic in a space (cursor-paginated).
68
+
69
+ Options:
70
+ --limit <number> Items per page (default: "20")
71
+ --cursor <string> Pagination cursor from previous response
72
+ -h, --help display help for command
73
+ ```
74
+
48
75
  ## get-thread
49
76
 
50
77
  ```