@gobi-ai/cli 2.0.39 → 2.0.41
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/.claude-plugin/marketplace.json +2 -2
- package/.claude-plugin/plugin.json +1 -1
- package/README.md +10 -28
- package/commands/login.md +1 -1
- package/commands/logout.md +1 -1
- package/commands/post.md +1 -1
- package/commands/space-explore.md +3 -5
- package/commands/space-share.md +7 -7
- package/commands/warp.md +1 -1
- package/dist/commands/personal.js +17 -17
- package/dist/commands/sense.js +1 -1
- package/dist/commands/space.js +1 -1
- package/dist/commands/update.js +2 -2
- package/dist/commands/utils.js +1 -1
- package/dist/main.js +0 -2
- package/package.json +1 -1
- package/skills/gobi-artifact/SKILL.md +3 -3
- package/skills/gobi-artifact/references/personal.md +2 -2
- package/skills/gobi-core/SKILL.md +3 -5
- package/skills/gobi-homepage/SKILL.md +1 -1
- package/skills/gobi-media/SKILL.md +4 -4
- package/skills/gobi-sense/SKILL.md +4 -4
- package/skills/gobi-sense/references/personal.md +2 -2
- package/skills/gobi-space/SKILL.md +23 -41
- package/skills/gobi-space/references/personal.md +6 -6
- package/skills/gobi-vault/SKILL.md +3 -3
- package/dist/commands/global.js +0 -438
- package/skills/gobi-space/references/global.md +0 -175
|
@@ -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": "2.0.
|
|
7
|
+
"version": "2.0.40",
|
|
8
8
|
"plugins": [
|
|
9
9
|
{
|
|
10
10
|
"name": "gobi",
|
|
11
11
|
"description": "Manage the Gobi collaborative knowledge platform from the command line. Publish vault profiles, create posts and replies, generate images and videos.",
|
|
12
|
-
"version": "2.0.
|
|
12
|
+
"version": "2.0.40",
|
|
13
13
|
"author": {
|
|
14
14
|
"name": "gobi-ai"
|
|
15
15
|
},
|
package/README.md
CHANGED
|
@@ -53,9 +53,9 @@ gobi vault publish
|
|
|
53
53
|
# Sync local files with the webdrive
|
|
54
54
|
gobi vault sync
|
|
55
55
|
|
|
56
|
-
# Browse
|
|
57
|
-
gobi
|
|
58
|
-
gobi
|
|
56
|
+
# Browse your personal feed and create a private post
|
|
57
|
+
gobi personal feed
|
|
58
|
+
gobi personal create-post --title "Hello" --content "Trying gobi"
|
|
59
59
|
```
|
|
60
60
|
|
|
61
61
|
Each setup step unlocks a different family of commands — run only the ones the workflow needs:
|
|
@@ -74,7 +74,7 @@ Everything below applies whether you're building a Claude Code skill, an autonom
|
|
|
74
74
|
|
|
75
75
|
### JSON envelope
|
|
76
76
|
|
|
77
|
-
Pass `--json` as a **
|
|
77
|
+
Pass `--json` as a **top-level flag** (before the subcommand) and every command returns a structured envelope:
|
|
78
78
|
|
|
79
79
|
```sh
|
|
80
80
|
gobi --json space list-posts
|
|
@@ -165,7 +165,7 @@ Public vaults are accessible at `https://gobispace.com/@{vaultSlug}`.
|
|
|
165
165
|
|
|
166
166
|
### Spaces
|
|
167
167
|
|
|
168
|
-
A *Space* is a community knowledge area. A *Space Post* lives in one space. The same `Post` data type, in a different scope, is a *
|
|
168
|
+
A *Space* is a community knowledge area. A *Space Post* lives in one space. The same `Post` data type, in a different scope, is a private *personal-space post* (see Personal space below) — so anything you can do to a Space Post you can do to a personal-space post.
|
|
169
169
|
|
|
170
170
|
> Space and member administration (creating spaces, inviting/approving members, joining/leaving) is web-UI only and not available in the CLI.
|
|
171
171
|
|
|
@@ -184,34 +184,16 @@ A *Space* is a community knowledge area. A *Space Post* lives in one space. The
|
|
|
184
184
|
| `gobi space edit-reply <replyId> [--content <c>] [--rich-text <json>]` | Edit a reply you authored. |
|
|
185
185
|
| `gobi space delete-reply <replyId>` | Delete a reply you authored |
|
|
186
186
|
|
|
187
|
-
### Global feed (personal posts)
|
|
188
|
-
|
|
189
|
-
A *Personal Post* surfaces in the public global feed. Same `Post` model as a Space Post, scoped to the user instead of a space.
|
|
190
|
-
|
|
191
|
-
| Command | Description |
|
|
192
|
-
|---------|-------------|
|
|
193
|
-
| `gobi global feed [--following]` | List the global public feed (posts + replies, newest first). `--following` limits to authors you follow. |
|
|
194
|
-
| `gobi global list-posts [--mine]` | List personal posts; filter to your own |
|
|
195
|
-
| `gobi global get-post <postId> [--full]` | Get a personal post with its ancestors and replies. `--full` shows reply content without truncation. |
|
|
196
|
-
| `gobi global create-post [--title <t>] (--content <c> \| --rich-text <json>) [--artifact <artifactId>]… [--repost-post-id <id>] [--attach <file>]…` | Create a personal post. `--artifact` attaches an existing artifact to the post (repeatable). `--repost-post-id` reposts an existing post. `--attach` uploads local media for inline rendering (see `gobi space create-post` above for the mix rule). |
|
|
197
|
-
| `gobi global edit-post <postId> [--title <t>] [--content <c>]` | Edit a personal post you authored. |
|
|
198
|
-
| `gobi global delete-post <postId>` | Delete a personal post you authored |
|
|
199
|
-
| `gobi global create-reply <postId> (--content <c> \| --rich-text <json>) [--attach <file>]…` | Create a reply to a personal post |
|
|
200
|
-
| `gobi global edit-reply <replyId> [--content <c>] [--rich-text <json>]` | Edit a reply you authored. |
|
|
201
|
-
| `gobi global delete-reply <replyId>` | Delete a reply you authored |
|
|
202
|
-
|
|
203
187
|
### Personal space (private posts)
|
|
204
188
|
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
Private posts and replies visible only to you. Same `Post` data model and subcommand shape as `gobi global`, but scoped to a personal space — they never appear on the public global feed.
|
|
189
|
+
Private posts and replies visible only to you. Same `Post` data model and subcommand shape as a Space Post, but scoped to a personal space — they never appear in any public feed.
|
|
208
190
|
|
|
209
191
|
| Command | Description |
|
|
210
192
|
|---------|-------------|
|
|
211
193
|
| `gobi personal feed` | Your personal-space feed (posts + replies, newest first) |
|
|
212
194
|
| `gobi personal list-posts` | List personal-space posts |
|
|
213
195
|
| `gobi personal get-post <postId> [--full]` | Get a personal-space post with its ancestors and replies |
|
|
214
|
-
| `gobi personal create-post [--title <t>] (--content <c> \| --rich-text <json>) [--artifact <artifactId>]… [--repost-post-id <id>] [--attach <file>]…` | Create a private post in your personal space. `--artifact` attaches an existing artifact to the post (repeatable). `--attach` works the same as on `gobi
|
|
196
|
+
| `gobi personal create-post [--title <t>] (--content <c> \| --rich-text <json>) [--artifact <artifactId>]… [--repost-post-id <id>] [--attach <file>]…` | Create a private post in your personal space. `--artifact` attaches an existing artifact to the post (repeatable). `--attach` works the same as on `gobi space create-post`. |
|
|
215
197
|
| `gobi personal edit-post <postId> [--title <t>] [--content <c>]` | Edit a personal-space post you authored |
|
|
216
198
|
| `gobi personal delete-post <postId>` | Delete a personal-space post you authored |
|
|
217
199
|
| `gobi personal create-reply <postId> (--content <c> \| --rich-text <json>) [--attach <file>]…` | Reply to a personal-space post (inherits the parent's private scope) |
|
|
@@ -236,7 +218,7 @@ Like posts and artifacts, Sense data is **scoped to a space**: the subcommands l
|
|
|
236
218
|
| `gobi <scope> conversations transcript <conversationId>` | Get a conversation's transcript and summary |
|
|
237
219
|
| `gobi <scope> conversations audio <conversationId>` | Get a signed URL for the recording (owner-only) |
|
|
238
220
|
|
|
239
|
-
`gobi space …` lists are a complete, fully-paginated per-space history (every member's records); add `--mine` to restrict either `list` to records you recorded. `gobi personal conversations list` is filtered from the
|
|
221
|
+
`gobi space …` lists are a complete, fully-paginated per-space history (every member's records); add `--mine` to restrict either `list` to records you recorded. `gobi personal conversations list` is filtered from the cross-scope conversations feed, so it shows your recent personal conversations rather than a fully paginated history (`gobi personal activities list` is fully paginated).
|
|
240
222
|
|
|
241
223
|
### Artifacts
|
|
242
224
|
|
|
@@ -277,7 +259,7 @@ Image, video, and avatar generation. See the `gobi-media` skill for full workflo
|
|
|
277
259
|
| `gobi media list-videos` / `gobi media get-video <id>` | List or get videos |
|
|
278
260
|
| `gobi media upload <file>` | Upload a local file and get a media id |
|
|
279
261
|
|
|
280
|
-
###
|
|
262
|
+
### Top-level options
|
|
281
263
|
|
|
282
264
|
| Option | Scope | Description |
|
|
283
265
|
|--------|-------|-------------|
|
|
@@ -313,7 +295,7 @@ The CLI ships a `.claude-plugin/` manifest with skills that wrap the command gro
|
|
|
313
295
|
|-------|--------|
|
|
314
296
|
| `gobi-core` | Auth, update, space list/warp |
|
|
315
297
|
| `gobi-vault` | `gobi vault init/list/publish/unpublish/sync` |
|
|
316
|
-
| `gobi-space` | `gobi space
|
|
298
|
+
| `gobi-space` | `gobi space …` and `gobi personal …` |
|
|
317
299
|
| `gobi-artifact` | `gobi personal artifact …` and `gobi space artifact …` |
|
|
318
300
|
| `gobi-media` | `gobi media …` |
|
|
319
301
|
| `gobi-sense` | `gobi personal activities/conversations …` and `gobi space activities/conversations …` |
|
package/commands/login.md
CHANGED
|
@@ -4,7 +4,7 @@ description: Log in to Gobi via Google OAuth
|
|
|
4
4
|
argument-hint: ""
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
Always use the
|
|
7
|
+
Always use the installed `gobi` binary on your PATH (not via npx or ts-node).
|
|
8
8
|
|
|
9
9
|
Log the user in to Gobi using device code flow:
|
|
10
10
|
|
package/commands/logout.md
CHANGED
|
@@ -4,7 +4,7 @@ description: Log out of Gobi and remove stored credentials
|
|
|
4
4
|
argument-hint: ""
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
Always use the
|
|
7
|
+
Always use the installed `gobi` binary on your PATH (not via npx or ts-node).
|
|
8
8
|
|
|
9
9
|
Run `gobi auth logout` to log out of Gobi.
|
|
10
10
|
|
package/commands/post.md
CHANGED
|
@@ -5,7 +5,7 @@ argument-hint: "[approval|bypass]"
|
|
|
5
5
|
disable-model-invocation: true
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
-
Always use the
|
|
8
|
+
Always use the installed `gobi` binary on your PATH (not via npx or ts-node).
|
|
9
9
|
|
|
10
10
|
## Argument: permissionMode
|
|
11
11
|
|
|
@@ -4,17 +4,15 @@ description: Explore what's happening in the active Gobi space — posts and lea
|
|
|
4
4
|
argument-hint: "[topic or keyword]"
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
Always use the
|
|
7
|
+
Always use the installed `gobi` binary on your PATH (not via npx or ts-node).
|
|
8
8
|
|
|
9
9
|
Explore the active Gobi space to surface posts, topics, and learnings from others:
|
|
10
10
|
|
|
11
|
-
1. Run these
|
|
11
|
+
1. Run these two commands in parallel:
|
|
12
12
|
- `gobi --json space list-posts` — recent posts in the space
|
|
13
13
|
- `gobi --json space list-topics` — available topics in the space
|
|
14
|
-
|
|
15
|
-
2. Display results in a readable summary, grouped by type (Topics / Space posts / Global feed).
|
|
14
|
+
2. Display results in a readable summary, grouped by type (Topics / Space posts).
|
|
16
15
|
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-posts <topicSlug>` to show posts tagged with that topic.
|
|
17
16
|
4. Ask the user if they'd like to read anything in full:
|
|
18
17
|
- For a topic: run `gobi space list-topic-posts <topicSlug>` and show the posts.
|
|
19
18
|
- For a space post: run `gobi space get-post <postId>` and show it with ancestors and replies.
|
|
20
|
-
- For a global feed post: run `gobi global get-post <postId>` to show it with ancestors and replies.
|
package/commands/space-share.md
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: space-share
|
|
3
|
-
description: Summarize recent learnings from this session and draft a
|
|
3
|
+
description: Summarize recent learnings from this session and draft a post to share to a Gobi space.
|
|
4
4
|
argument-hint: "[context]"
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
Always use the
|
|
7
|
+
Always use the installed `gobi` binary on your PATH (not via npx or ts-node).
|
|
8
8
|
|
|
9
9
|
## Pre-flight check
|
|
10
10
|
|
|
@@ -16,7 +16,7 @@ gobi --json auth status
|
|
|
16
16
|
|
|
17
17
|
Check that `.gobi/settings.yaml` exists. If you plan to publish to a Space (`gobi space create-post`), it must contain `selectedSpaceSlug` — otherwise stop and ask the user to run `gobi space warp` first.
|
|
18
18
|
|
|
19
|
-
## Draft a
|
|
19
|
+
## Draft a post
|
|
20
20
|
|
|
21
21
|
If `$ARGUMENTS` is provided, treat it as additional context or emphasis to guide the draft (e.g. "Emphasize the auth fix" or "Focus on the API design decision").
|
|
22
22
|
|
|
@@ -36,16 +36,16 @@ Focus on:
|
|
|
36
36
|
|
|
37
37
|
Format the draft as a short post (2–5 bullet points max). Show it to the user and ask for confirmation before posting.
|
|
38
38
|
|
|
39
|
-
Once confirmed, post it to the
|
|
39
|
+
Once confirmed, post it to the active space:
|
|
40
40
|
|
|
41
41
|
```bash
|
|
42
|
-
gobi
|
|
42
|
+
gobi space create-post --title "<short title>" --content "<confirmed content>"
|
|
43
43
|
```
|
|
44
44
|
|
|
45
|
-
Or
|
|
45
|
+
Or keep it private in your personal space:
|
|
46
46
|
|
|
47
47
|
```bash
|
|
48
|
-
gobi
|
|
48
|
+
gobi personal create-post --title "<short title>" --content "<confirmed content>"
|
|
49
49
|
```
|
|
50
50
|
|
|
51
51
|
Confirm success and show the user the result.
|
package/commands/warp.md
CHANGED
|
@@ -6,7 +6,7 @@ argument-hint: "[spaceSlug]"
|
|
|
6
6
|
|
|
7
7
|
Warp to a Gobi space:
|
|
8
8
|
|
|
9
|
-
Always use the
|
|
9
|
+
Always use the installed `gobi` binary on your PATH (not npx or ts-node).
|
|
10
10
|
|
|
11
11
|
- If a space slug is provided as `$ARGUMENTS`, run `gobi space warp $ARGUMENTS` directly.
|
|
12
12
|
- If no argument is given:
|
|
@@ -33,8 +33,8 @@ export function registerPersonalCommand(program) {
|
|
|
33
33
|
const personal = program
|
|
34
34
|
.command("personal")
|
|
35
35
|
.description("Personal-space commands (private posts and replies visible only to you). " +
|
|
36
|
-
"
|
|
37
|
-
"
|
|
36
|
+
"Posts/replies live in the same data model as space posts, scoped via " +
|
|
37
|
+
"personalSpaceUserId so they never surface on the public feed.");
|
|
38
38
|
// ── Feed (unified) ──
|
|
39
39
|
personal
|
|
40
40
|
.command("feed")
|
|
@@ -166,13 +166,13 @@ export function registerPersonalCommand(program) {
|
|
|
166
166
|
});
|
|
167
167
|
// ── Get post (with ancestors and replies) ──
|
|
168
168
|
//
|
|
169
|
-
//
|
|
170
|
-
//
|
|
171
|
-
//
|
|
172
|
-
//
|
|
169
|
+
// The shared `/posts/:id` and `/posts/:id/ancestors` routes — the server
|
|
170
|
+
// gates these by `viewerUserId`, so private rows resolve for the owner and
|
|
171
|
+
// 404 for everyone else. Personal-space and public posts share this
|
|
172
|
+
// endpoint without ambiguity.
|
|
173
173
|
personal
|
|
174
174
|
.command("get-post <postId>")
|
|
175
|
-
.description("Get a personal-space post with its ancestors and replies (paginated).
|
|
175
|
+
.description("Get a personal-space post with its ancestors and replies (paginated). Only the owner can resolve a private id.")
|
|
176
176
|
.option("--limit <number>", "Items per page", "20")
|
|
177
177
|
.option("--cursor <string>", "Pagination cursor from previous response")
|
|
178
178
|
.option("--full", "Show full reply content without truncation")
|
|
@@ -246,9 +246,9 @@ export function registerPersonalCommand(program) {
|
|
|
246
246
|
// ── Create post ──
|
|
247
247
|
//
|
|
248
248
|
// Targets `POST /posts/personal-space`, the only endpoint that stamps
|
|
249
|
-
// `personalSpaceUserId` on the row. Body shape is identical to the
|
|
250
|
-
//
|
|
251
|
-
//
|
|
249
|
+
// `personalSpaceUserId` on the row. Body shape is identical to the public
|
|
250
|
+
// `POST /posts` create (same CreatePostDto). The server skips the
|
|
251
|
+
// agent mention dispatch and the notification fan-out for this lane —
|
|
252
252
|
// private posts have no audience.
|
|
253
253
|
personal
|
|
254
254
|
.command("create-post")
|
|
@@ -258,7 +258,7 @@ export function registerPersonalCommand(program) {
|
|
|
258
258
|
.option("--rich-text <richText>", "Rich-text JSON array (mutually exclusive with --content)")
|
|
259
259
|
.option("--artifact <artifactId>", "Attach an existing artifact to the post (repeatable). Create artifacts with `gobi personal artifact create`.", (value, prev = []) => [...prev, value], [])
|
|
260
260
|
.option("--attach <file>", "Local media or document file to attach. Repeatable. Mix rule: up to 4 photos + up to 4 document files (pdf/md/txt/csv) OR 1 GIF OR 1 video. Size ceilings: 10MB photos / 15MB GIFs / 512MB video / 250MB files.", (value, prev = []) => [...prev, value], [])
|
|
261
|
-
.option("--repost-post-id <postId>", "Wrap an existing top-level post as the embedded card on this new private post. The referenced post must be visible to you (your own personal-space post, a
|
|
261
|
+
.option("--repost-post-id <postId>", "Wrap an existing top-level post as the embedded card on this new private post. The referenced post must be visible to you (your own personal-space post, a public post, or a post in a space you're a member of). Reposting someone else's personal-space post returns 404.")
|
|
262
262
|
.action(async (opts) => {
|
|
263
263
|
// A post is substantive if it has a text body OR carries an attachment
|
|
264
264
|
// (artifact card / media) OR embeds a repost. Only block the truly empty
|
|
@@ -316,9 +316,9 @@ export function registerPersonalCommand(program) {
|
|
|
316
316
|
});
|
|
317
317
|
// ── Edit post ──
|
|
318
318
|
//
|
|
319
|
-
//
|
|
320
|
-
//
|
|
321
|
-
//
|
|
319
|
+
// The shared `PATCH /posts/:postId` route — the server gates on
|
|
320
|
+
// `authorId === userId` and the read-path guard runs first, so a non-owner
|
|
321
|
+
// can't edit (or even discover) a private post.
|
|
322
322
|
personal
|
|
323
323
|
.command("edit-post <postId>")
|
|
324
324
|
.description("Edit a post you authored in your personal space.")
|
|
@@ -386,8 +386,8 @@ export function registerPersonalCommand(program) {
|
|
|
386
386
|
//
|
|
387
387
|
// `POST /posts/:postId/replies` inherits scope from the parent on the
|
|
388
388
|
// server — reply to a personal-space parent → reply is scoped to that
|
|
389
|
-
// personal space. The same
|
|
390
|
-
// expose it here for discoverability
|
|
389
|
+
// personal space. The same server route backs space and personal replies;
|
|
390
|
+
// we expose it here for discoverability under `gobi personal`.
|
|
391
391
|
personal
|
|
392
392
|
.command("create-reply <postId>")
|
|
393
393
|
.description("Reply to a personal-space post. The reply inherits the parent's private scope automatically.")
|
|
@@ -516,7 +516,7 @@ export function registerPersonalCommand(program) {
|
|
|
516
516
|
pagination: resp.pagination,
|
|
517
517
|
};
|
|
518
518
|
},
|
|
519
|
-
// `/app/conversations`
|
|
519
|
+
// `/app/conversations` spans all the user's scopes (newest ~50, no paging);
|
|
520
520
|
// filter to the personal scope (spaceId 0). Params are ignored — the endpoint
|
|
521
521
|
// takes none.
|
|
522
522
|
listConversations: async () => {
|
package/dist/commands/sense.js
CHANGED
|
@@ -109,7 +109,7 @@ export function registerActivitiesSubcommands(parent, scope, description) {
|
|
|
109
109
|
//
|
|
110
110
|
// Registers the `conversations` subcommand tree under `parent`. The `space`
|
|
111
111
|
// group lists via `/spaces/:slug/conversations` (every member's, keyset-paged);
|
|
112
|
-
// the `personal` group lists via the
|
|
112
|
+
// the `personal` group lists via the cross-scope `/app/conversations` filtered
|
|
113
113
|
// to the personal scope. Replaces the old top-level `gobi sense list-transcriptions`.
|
|
114
114
|
export function registerConversationsSubcommands(parent, scope, description) {
|
|
115
115
|
const conversations = parent.command("conversations").description(description);
|
package/dist/commands/space.js
CHANGED
|
@@ -732,7 +732,7 @@ export function registerSpaceCommand(program) {
|
|
|
732
732
|
"human-owned; revisions form a draft/published tree (one published per artifact).");
|
|
733
733
|
// ── Sense: activities + conversations (scoped to this space) ──
|
|
734
734
|
//
|
|
735
|
-
// The conversations list endpoint
|
|
735
|
+
// The conversations list endpoint spans all the user's scopes (returns the caller's recent
|
|
736
736
|
// conversations across all scopes, each tagged with spaceId), so the scope
|
|
737
737
|
// resolves this space's numeric id — via GET /spaces/:slug — to filter it.
|
|
738
738
|
const senseScope = {
|
package/dist/commands/update.js
CHANGED
|
@@ -28,8 +28,8 @@ function detectInstallMethod() {
|
|
|
28
28
|
return "brew";
|
|
29
29
|
}
|
|
30
30
|
try {
|
|
31
|
-
const
|
|
32
|
-
if (gobiBin && gobiBin.includes(
|
|
31
|
+
const npmRootDir = execSync("npm root -g", { encoding: "utf-8" }).trim();
|
|
32
|
+
if (gobiBin && gobiBin.includes(npmRootDir.replace("/lib/node_modules", ""))) {
|
|
33
33
|
return "npm";
|
|
34
34
|
}
|
|
35
35
|
}
|
package/dist/commands/utils.js
CHANGED
|
@@ -5,7 +5,7 @@ import { getSpaceSlug, getVaultSlug } from "./init.js";
|
|
|
5
5
|
export function readStdin() {
|
|
6
6
|
return readFileSync(0, "utf8");
|
|
7
7
|
}
|
|
8
|
-
// The
|
|
8
|
+
// The top-level `--json` flag lives on the root program. Walk up the ancestry so
|
|
9
9
|
// this works regardless of how deeply the calling command is nested (e.g. a
|
|
10
10
|
// leaf under `gobi space artifact …`, not just a direct child of the program).
|
|
11
11
|
export function isJsonMode(cmd) {
|
package/dist/main.js
CHANGED
|
@@ -5,7 +5,6 @@ import { ApiError, GobiError } from "./errors.js";
|
|
|
5
5
|
import { registerAuthCommand } from "./commands/auth.js";
|
|
6
6
|
import { commandRequiresSpace, commandRequiresVault, readSettings, } from "./commands/init.js";
|
|
7
7
|
import { registerSpaceCommand } from "./commands/space.js";
|
|
8
|
-
import { registerGlobalCommand } from "./commands/global.js";
|
|
9
8
|
import { registerPersonalCommand } from "./commands/personal.js";
|
|
10
9
|
import { registerVaultCommand } from "./commands/vault.js";
|
|
11
10
|
import { registerUpdateCommand } from "./commands/update.js";
|
|
@@ -56,7 +55,6 @@ export async function cli() {
|
|
|
56
55
|
// Register all command groups
|
|
57
56
|
registerAuthCommand(program);
|
|
58
57
|
registerSpaceCommand(program);
|
|
59
|
-
registerGlobalCommand(program);
|
|
60
58
|
registerPersonalCommand(program);
|
|
61
59
|
registerVaultCommand(program);
|
|
62
60
|
registerUpdateCommand(program);
|
package/package.json
CHANGED
|
@@ -11,12 +11,12 @@ description: >-
|
|
|
11
11
|
allowed-tools: Bash(gobi:*)
|
|
12
12
|
metadata:
|
|
13
13
|
author: gobi-ai
|
|
14
|
-
version: "2.0.
|
|
14
|
+
version: "2.0.40"
|
|
15
15
|
---
|
|
16
16
|
|
|
17
17
|
# gobi-artifact
|
|
18
18
|
|
|
19
|
-
Gobi artifact commands for versioned, post-attachable creations (v2.0.
|
|
19
|
+
Gobi artifact commands for versioned, post-attachable creations (v2.0.40).
|
|
20
20
|
|
|
21
21
|
Requires gobi-cli installed and authenticated. See gobi-core skill for setup.
|
|
22
22
|
|
|
@@ -51,7 +51,7 @@ Markdown bodies can reference vault notes with `[[wikilinks]]`. Resolution again
|
|
|
51
51
|
|
|
52
52
|
## Important: JSON Mode
|
|
53
53
|
|
|
54
|
-
For programmatic/agent usage, always pass `--json` as a **
|
|
54
|
+
For programmatic/agent usage, always pass `--json` as a **top-level** option (before everything else):
|
|
55
55
|
|
|
56
56
|
```bash
|
|
57
57
|
gobi --json personal artifact list --limit 20
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
```
|
|
4
4
|
Usage: gobi personal [options] [command]
|
|
5
5
|
|
|
6
|
-
Personal-space commands (private posts and replies visible only to you).
|
|
7
|
-
|
|
6
|
+
Personal-space commands (private posts and replies visible only to you). Posts/replies live in the same data model as space posts, scoped via personalSpaceUserId so they never surface on the public
|
|
7
|
+
feed.
|
|
8
8
|
|
|
9
9
|
Options:
|
|
10
10
|
-h, --help display help for command
|
|
@@ -8,12 +8,12 @@ description: >-
|
|
|
8
8
|
allowed-tools: Bash(gobi:*)
|
|
9
9
|
metadata:
|
|
10
10
|
author: gobi-ai
|
|
11
|
-
version: "2.0.
|
|
11
|
+
version: "2.0.40"
|
|
12
12
|
---
|
|
13
13
|
|
|
14
14
|
# gobi-core
|
|
15
15
|
|
|
16
|
-
Core CLI commands for the Gobi collaborative knowledge platform (v2.0.
|
|
16
|
+
Core CLI commands for the Gobi collaborative knowledge platform (v2.0.40).
|
|
17
17
|
|
|
18
18
|
## Prerequisites
|
|
19
19
|
|
|
@@ -38,7 +38,6 @@ brew tap gobi-ai/tap && brew install gobi
|
|
|
38
38
|
## Key Concepts
|
|
39
39
|
|
|
40
40
|
- **Vault**: A filetree-backed knowledge home. A local directory becomes a vault when it contains `.gobi/settings.yaml` with a `vaultSlug`. Each vault has a slug (e.g. `brave-path-zr962w`); public profile is configured by a `PUBLISH.md` document at the vault root and pushed via `gobi vault publish`.
|
|
41
|
-
- **Personal Post**: A post on the author's profile that surfaces in the public global feed. Same `Post` data model as a Space Post — only the scope differs.
|
|
42
41
|
- **Space Post**: A post inside a community space.
|
|
43
42
|
- **Space**: A shared community knowledge area. A user can be a member of one or more spaces; each space contains posts, replies, and connected vaults.
|
|
44
43
|
- **Artifact**: A versioned, human-owned creation (image, video, gif, markdown, or meeting_summary) attached to posts. Its revisions form a draft/published tree (at most one published). See the **gobi-artifact** skill.
|
|
@@ -78,14 +77,13 @@ gobi auth status
|
|
|
78
77
|
| `vault init` | no (it sets it up) | no | – |
|
|
79
78
|
| `space list` / `warp [slug]` / `get [slug]` | no | no | – |
|
|
80
79
|
| `space list-topics` / `feed` / `list-posts` / `get-post` / `create-post` / `edit-post` / `delete-post` / `create-reply` / `edit-reply` / `delete-reply` / `list-topic-posts` | no | **yes** | parent `--space-slug <slug>` |
|
|
81
|
-
| `global feed` / `list-posts` / `get-post` / `create-post` / `edit-post` / `delete-post` / `create-reply` / `edit-reply` / `delete-reply` | no | no | – |
|
|
82
80
|
| `personal feed` / `list-posts` / `get-post` / `create-post` / `edit-post` / `delete-post` / `create-reply` / `edit-reply` / `delete-reply` | no | no | – |
|
|
83
81
|
|
|
84
82
|
When a command needs vault or space and neither `.gobi` nor an override flag provides it, the CLI prints a one-line warning before the command runs (e.g. `Vault not set. Run 'gobi vault init' first, or pass --vault-slug.`). The warning is suppressed under `--json`.
|
|
85
83
|
|
|
86
84
|
## Important: JSON Mode
|
|
87
85
|
|
|
88
|
-
For programmatic/agent usage, always pass `--json` as a **
|
|
86
|
+
For programmatic/agent usage, always pass `--json` as a **top-level** option (before the subcommand) to get structured JSON output:
|
|
89
87
|
|
|
90
88
|
```bash
|
|
91
89
|
gobi --json space list
|
|
@@ -10,18 +10,18 @@ description: >-
|
|
|
10
10
|
allowed-tools: Bash(gobi:*)
|
|
11
11
|
metadata:
|
|
12
12
|
author: gobi-ai
|
|
13
|
-
version: "2.0.
|
|
13
|
+
version: "2.0.40"
|
|
14
14
|
---
|
|
15
15
|
|
|
16
16
|
# gobi-media
|
|
17
17
|
|
|
18
|
-
Gobi media generation commands (v2.0.
|
|
18
|
+
Gobi media generation commands (v2.0.40).
|
|
19
19
|
|
|
20
20
|
Requires gobi-cli installed and authenticated. See gobi-core skill for setup.
|
|
21
21
|
|
|
22
22
|
## Important: JSON Mode
|
|
23
23
|
|
|
24
|
-
For programmatic/agent usage, always pass `--json` as a **
|
|
24
|
+
For programmatic/agent usage, always pass `--json` as a **top-level** option (before the subcommand):
|
|
25
25
|
|
|
26
26
|
```bash
|
|
27
27
|
gobi --json media generate-image --prompt "a sunset over mountains"
|
|
@@ -52,7 +52,7 @@ The `-o` flag implies `--wait` and downloads the image when done.
|
|
|
52
52
|
gobi space create-reply <postId> --content "<BODY>" --attach media/<NAME>.png
|
|
53
53
|
```
|
|
54
54
|
This uploads to the CDN and renders the image as a slider on the post card. `--attach` is repeatable; mix rule is **4 photos OR 1 GIF OR 1 video**.
|
|
55
|
-
- **Post-mention reply** (you were `@`-mentioned on a thread — `@
|
|
55
|
+
- **Post-mention reply** (you were `@`-mentioned on a thread — `@space:<slug>` — and your assistant body is auto-posted as the reply): **just write the text reply. Do not include the image as wiki-link, markdown image, or any URL.** The runtime detects every `gobi media generate-image` call you ran this turn and attaches those images to your auto-posted reply automatically. Embedding the image yourself either dangles (the workspace path doesn't resolve publicly) or duplicates the slider.
|
|
56
56
|
|
|
57
57
|
### Key rules
|
|
58
58
|
- Replace `<NAME>` with a descriptive slug — NEVER use example names like `sunset.png` literally.
|
|
@@ -10,12 +10,12 @@ description: >-
|
|
|
10
10
|
allowed-tools: Bash(gobi:*)
|
|
11
11
|
metadata:
|
|
12
12
|
author: gobi-ai
|
|
13
|
-
version: "2.0.
|
|
13
|
+
version: "2.0.40"
|
|
14
14
|
---
|
|
15
15
|
|
|
16
16
|
# gobi-sense
|
|
17
17
|
|
|
18
|
-
Gobi Sense commands for browsing activities and conversations (v2.0.
|
|
18
|
+
Gobi Sense commands for browsing activities and conversations (v2.0.40).
|
|
19
19
|
|
|
20
20
|
Requires gobi-cli installed and authenticated. See the **gobi-core** skill for setup.
|
|
21
21
|
|
|
@@ -39,7 +39,7 @@ The old `gobi sense list-activities` / `gobi sense list-transcriptions` commands
|
|
|
39
39
|
|
|
40
40
|
## Important: JSON Mode
|
|
41
41
|
|
|
42
|
-
For programmatic/agent usage, always pass `--json` as a **
|
|
42
|
+
For programmatic/agent usage, always pass `--json` as a **top-level** option (before the subcommand):
|
|
43
43
|
|
|
44
44
|
```bash
|
|
45
45
|
gobi --json personal activities list --limit 30
|
|
@@ -67,7 +67,7 @@ gobi --json space --space-slug my-team conversations transcript 12345
|
|
|
67
67
|
gobi --json space --space-slug my-team conversations audio 12345
|
|
68
68
|
```
|
|
69
69
|
|
|
70
|
-
Both list commands are newest-first and page with `--limit` / `--before` (pass a previous response's `nextCursor` to `--before`). Scope difference: **`gobi space … activities/conversations list`** is a complete, fully-paginated per-space history (every member's records). **`gobi personal … conversations list`** is filtered from the
|
|
70
|
+
Both list commands are newest-first and page with `--limit` / `--before` (pass a previous response's `nextCursor` to `--before`). Scope difference: **`gobi space … activities/conversations list`** is a complete, fully-paginated per-space history (every member's records). **`gobi personal … conversations list`** is filtered from the cross-scope conversations feed, so it shows your recent personal conversations rather than a fully paginated history (`gobi personal activities list` is fully paginated).
|
|
71
71
|
|
|
72
72
|
## Available Commands
|
|
73
73
|
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
```
|
|
4
4
|
Usage: gobi personal [options] [command]
|
|
5
5
|
|
|
6
|
-
Personal-space commands (private posts and replies visible only to you).
|
|
7
|
-
|
|
6
|
+
Personal-space commands (private posts and replies visible only to you). Posts/replies live in the same data model as space posts, scoped via personalSpaceUserId so they never surface on the public
|
|
7
|
+
feed.
|
|
8
8
|
|
|
9
9
|
Options:
|
|
10
10
|
-h, --help display help for command
|