@gobi-ai/cli 1.3.8 → 2.0.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.
- package/.claude-plugin/marketplace.json +5 -6
- package/.claude-plugin/plugin.json +3 -4
- package/README.md +174 -82
- package/commands/space-explore.md +10 -10
- package/commands/space-share.md +13 -7
- package/dist/attachments.js +2 -1
- package/dist/commands/draft.js +2 -3
- package/dist/commands/global.js +212 -72
- package/dist/commands/init.js +5 -5
- package/dist/commands/{notes.js → saved.js} +115 -23
- package/dist/commands/space.js +121 -111
- package/dist/commands/sync.js +2 -56
- package/dist/commands/update.js +14 -8
- package/dist/commands/utils.js +6 -0
- package/dist/commands/vault.js +113 -0
- package/dist/main.js +4 -8
- package/package.json +2 -2
- package/skills/gobi-core/SKILL.md +19 -15
- package/skills/gobi-core/references/space.md +18 -19
- package/skills/gobi-draft/SKILL.md +3 -3
- package/skills/gobi-homepage/SKILL.md +21 -19
- package/skills/gobi-media/SKILL.md +2 -2
- package/skills/gobi-saved/SKILL.md +59 -0
- package/skills/gobi-saved/references/saved.md +52 -0
- package/skills/gobi-sense/SKILL.md +8 -4
- package/skills/gobi-space/SKILL.md +55 -38
- package/skills/gobi-space/references/global.md +87 -26
- package/skills/gobi-space/references/space.md +49 -61
- package/skills/gobi-vault/SKILL.md +92 -0
- package/skills/{gobi-core/references/sync.md → gobi-vault/references/vault.md} +41 -2
- package/dist/commands/brain.js +0 -141
- package/dist/commands/feed.js +0 -148
- package/skills/gobi-brain/SKILL.md +0 -100
- package/skills/gobi-brain/references/brain.md +0 -66
- package/skills/gobi-feed/SKILL.md +0 -43
- package/skills/gobi-feed/references/feed.md +0 -80
- package/skills/gobi-notes/SKILL.md +0 -52
- package/skills/gobi-notes/references/notes.md +0 -82
package/dist/main.js
CHANGED
|
@@ -6,12 +6,10 @@ import { registerAuthCommand } from "./commands/auth.js";
|
|
|
6
6
|
import { registerInitCommand, printContext } from "./commands/init.js";
|
|
7
7
|
import { registerSpaceCommand } from "./commands/space.js";
|
|
8
8
|
import { registerGlobalCommand } from "./commands/global.js";
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import { registerNotesCommand } from "./commands/notes.js";
|
|
9
|
+
import { registerVaultCommand } from "./commands/vault.js";
|
|
10
|
+
import { registerSavedCommand } from "./commands/saved.js";
|
|
12
11
|
import { registerSessionsCommand } from "./commands/sessions.js";
|
|
13
12
|
import { registerSenseCommand } from "./commands/sense.js";
|
|
14
|
-
import { registerSyncCommand } from "./commands/sync.js";
|
|
15
13
|
import { registerUpdateCommand } from "./commands/update.js";
|
|
16
14
|
import { registerMediaCommand } from "./commands/media.js";
|
|
17
15
|
import { registerDraftCommand } from "./commands/draft.js";
|
|
@@ -37,12 +35,10 @@ export async function cli() {
|
|
|
37
35
|
registerInitCommand(program);
|
|
38
36
|
registerSpaceCommand(program);
|
|
39
37
|
registerGlobalCommand(program);
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
registerNotesCommand(program);
|
|
38
|
+
registerVaultCommand(program);
|
|
39
|
+
registerSavedCommand(program);
|
|
43
40
|
registerSessionsCommand(program);
|
|
44
41
|
registerSenseCommand(program);
|
|
45
|
-
registerSyncCommand(program);
|
|
46
42
|
registerUpdateCommand(program);
|
|
47
43
|
registerMediaCommand(program);
|
|
48
44
|
registerDraftCommand(program);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gobi-ai/cli",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.1",
|
|
4
4
|
"description": "CLI client for the Gobi collaborative knowledge platform",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"keywords": [
|
|
16
16
|
"gobi",
|
|
17
17
|
"cli",
|
|
18
|
-
"
|
|
18
|
+
"vault",
|
|
19
19
|
"knowledge"
|
|
20
20
|
],
|
|
21
21
|
"publishConfig": {
|
|
@@ -2,19 +2,19 @@
|
|
|
2
2
|
name: gobi-core
|
|
3
3
|
description: >-
|
|
4
4
|
Core Gobi CLI: authentication (login/logout/status), vault initialization
|
|
5
|
-
(gobi init), space selection (gobi space warp/list),
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
(gobi init), space selection (gobi space warp/list), CLI updates (gobi
|
|
6
|
+
update), and session management (list/get/reply to conversations). Use when
|
|
7
|
+
the user needs to set up Gobi, authenticate, manage sessions, or update the
|
|
8
|
+
CLI. File sync is in the gobi-vault skill.
|
|
9
9
|
allowed-tools: Bash(gobi:*)
|
|
10
10
|
metadata:
|
|
11
11
|
author: gobi-ai
|
|
12
|
-
version: "0.
|
|
12
|
+
version: "2.0.0"
|
|
13
13
|
---
|
|
14
14
|
|
|
15
15
|
# gobi-core
|
|
16
16
|
|
|
17
|
-
Core CLI commands for the Gobi collaborative knowledge platform (
|
|
17
|
+
Core CLI commands for the Gobi collaborative knowledge platform (v2.0.0).
|
|
18
18
|
|
|
19
19
|
## Prerequisites
|
|
20
20
|
|
|
@@ -38,9 +38,11 @@ brew tap gobi-ai/tap && brew install gobi
|
|
|
38
38
|
|
|
39
39
|
## Key Concepts
|
|
40
40
|
|
|
41
|
-
- **
|
|
42
|
-
- **
|
|
43
|
-
- **
|
|
41
|
+
- **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`.
|
|
42
|
+
- **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.
|
|
43
|
+
- **Space Post**: A post inside a community space.
|
|
44
|
+
- **Space**: A shared community knowledge area. A user can be a member of one or more spaces; each space contains posts, replies, sessions, and connected vaults.
|
|
45
|
+
- **Draft**: A unit of standing guidance authored by an agent during chat. Each draft carries 0–3 AI-suggested actions the user picks from. The top 5 pending drafts feed the agent's system prompt every turn.
|
|
44
46
|
|
|
45
47
|
## First-Time Setup
|
|
46
48
|
|
|
@@ -56,7 +58,7 @@ This is an **interactive** command that:
|
|
|
56
58
|
1. Logs in automatically if not already authenticated (opens a browser URL for Google OAuth)
|
|
57
59
|
2. Prompts the user to select an existing vault or create a new one
|
|
58
60
|
3. Writes `.gobi/settings.yaml` in the current directory with the chosen vault slug
|
|
59
|
-
4. Creates a `
|
|
61
|
+
4. Creates a `PUBLISH.md` file if one doesn't exist
|
|
60
62
|
|
|
61
63
|
### Step 2: Select a Space
|
|
62
64
|
|
|
@@ -86,7 +88,7 @@ Check auth status anytime:
|
|
|
86
88
|
gobi auth status
|
|
87
89
|
```
|
|
88
90
|
|
|
89
|
-
**Important for agents**: Before running any `space` command, check
|
|
91
|
+
**Important for agents**: Before running any `space` command, check whether `.gobi/settings.yaml` exists in the current directory with both `vaultSlug` and `selectedSpaceSlug`. If the vault is missing, guide the user through `gobi init`. If only the space is missing, guide the user through `gobi space warp`. These commands require user input (interactive prompts), so the agent cannot run them silently. For one-off calls, every command also accepts an explicit `--vault-slug` / `--space-slug` override.
|
|
90
92
|
|
|
91
93
|
## Important: JSON Mode
|
|
92
94
|
|
|
@@ -96,7 +98,7 @@ For programmatic/agent usage, always pass `--json` as a **global** option (befor
|
|
|
96
98
|
gobi --json session list
|
|
97
99
|
```
|
|
98
100
|
|
|
99
|
-
JSON responses have the shape `{ "success": true, "data": ... }` on success or `{ "success": false, "error": "..." }` on failure.
|
|
101
|
+
JSON responses have the shape `{ "success": true, "data": ... }` on success or `{ "success": false, "error": "..." }` on failure. Pagination metadata (`pagination: { hasMore, nextCursor }`) ships alongside `data` on list endpoints.
|
|
100
102
|
|
|
101
103
|
## Available Commands
|
|
102
104
|
|
|
@@ -111,16 +113,17 @@ JSON responses have the shape `{ "success": true, "data": ... }` on success or `
|
|
|
111
113
|
- `gobi session get` — Get a session and its messages (paginated).
|
|
112
114
|
- `gobi session list` — List all sessions you are part of, sorted by most recent activity.
|
|
113
115
|
- `gobi session reply` — Send a human reply to a session you are a member of.
|
|
114
|
-
- `gobi sync` — Sync local vault files with Gobi Webdrive.
|
|
115
116
|
- `gobi update` — Update gobi-cli to the latest version.
|
|
116
117
|
|
|
118
|
+
> File sync (`gobi vault sync`) lives in the **gobi-vault** skill.
|
|
119
|
+
|
|
117
120
|
## Reference Documentation
|
|
118
121
|
|
|
119
122
|
- [gobi auth](references/auth.md)
|
|
120
123
|
- [gobi init](references/init.md)
|
|
121
124
|
- [gobi session](references/session.md)
|
|
122
|
-
- [gobi sync](references/sync.md)
|
|
123
125
|
- [gobi update](references/update.md)
|
|
126
|
+
- [gobi space (list/warp)](references/space.md)
|
|
124
127
|
|
|
125
128
|
## Configuration Files
|
|
126
129
|
|
|
@@ -128,7 +131,7 @@ JSON responses have the shape `{ "success": true, "data": ... }` on success or `
|
|
|
128
131
|
|------|-------------|
|
|
129
132
|
| `~/.gobi/credentials.json` | Stored authentication tokens (auto-managed) |
|
|
130
133
|
| `.gobi/settings.yaml` | Per-project vault and space configuration |
|
|
131
|
-
| `
|
|
134
|
+
| `PUBLISH.md` | Vault profile document with YAML frontmatter, published via `gobi vault publish` |
|
|
132
135
|
|
|
133
136
|
## Environment Variables
|
|
134
137
|
|
|
@@ -136,3 +139,4 @@ JSON responses have the shape `{ "success": true, "data": ... }` on success or `
|
|
|
136
139
|
|----------|---------|-------------|
|
|
137
140
|
| `GOBI_BASE_URL` | `https://api.joingobi.com` | API server URL |
|
|
138
141
|
| `GOBI_WEBDRIVE_BASE_URL` | `https://webdrive.joingobi.com` | File storage URL |
|
|
142
|
+
| `GOBI_SESSION_ID` | — | Default `--session` for `gobi draft add` (set automatically inside agent runs) |
|
|
@@ -3,29 +3,28 @@
|
|
|
3
3
|
```
|
|
4
4
|
Usage: gobi space [options] [command]
|
|
5
5
|
|
|
6
|
-
Space commands (
|
|
6
|
+
Space commands (posts, replies). Space and member admin is web-UI only.
|
|
7
7
|
|
|
8
8
|
Options:
|
|
9
|
-
--space-slug <slug>
|
|
10
|
-
-h, --help
|
|
9
|
+
--space-slug <slug> Space slug (overrides .gobi/settings.yaml)
|
|
10
|
+
-h, --help display help for command
|
|
11
11
|
|
|
12
12
|
Commands:
|
|
13
|
-
list
|
|
14
|
-
get [spaceSlug]
|
|
15
|
-
warp [spaceSlug]
|
|
16
|
-
list-topics [options]
|
|
17
|
-
list-topic-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
help [command] display help for command
|
|
13
|
+
list List spaces you are a member of.
|
|
14
|
+
get [spaceSlug] Get details for a space. Pass a slug or omit to use the current space (from .gobi/settings.yaml or --space-slug).
|
|
15
|
+
warp [spaceSlug] Select the active space. Pass a slug to warp directly, or omit for interactive selection.
|
|
16
|
+
list-topics [options] List topics in a space, ordered by most recent content linkage.
|
|
17
|
+
list-topic-posts [options] <topicSlug> List posts tagged with a topic in a space (cursor-paginated).
|
|
18
|
+
feed [options] List the unified feed (posts and replies, newest first) in a space.
|
|
19
|
+
get-post [options] <postId> Get a post with its ancestors and replies (paginated).
|
|
20
|
+
list-posts [options] List posts in a space (paginated).
|
|
21
|
+
create-post [options] Create a post in a space.
|
|
22
|
+
edit-post [options] <postId> Edit a post. You must be the author.
|
|
23
|
+
delete-post <postId> Delete a post. You must be the author.
|
|
24
|
+
create-reply [options] <postId> Create a reply to a post in a space.
|
|
25
|
+
edit-reply [options] <replyId> Edit a reply. You must be the author.
|
|
26
|
+
delete-reply <replyId> Delete a reply. You must be the author.
|
|
27
|
+
help [command] display help for command
|
|
29
28
|
```
|
|
30
29
|
|
|
31
30
|
## list
|
|
@@ -10,12 +10,12 @@ description: >-
|
|
|
10
10
|
allowed-tools: Bash(gobi:*)
|
|
11
11
|
metadata:
|
|
12
12
|
author: gobi-ai
|
|
13
|
-
version: "
|
|
13
|
+
version: "2.0.0"
|
|
14
14
|
---
|
|
15
15
|
|
|
16
16
|
# gobi-draft
|
|
17
17
|
|
|
18
|
-
Gobi draft commands for managing agent-authored drafts (
|
|
18
|
+
Gobi draft commands for managing agent-authored drafts (v2.0.0).
|
|
19
19
|
|
|
20
20
|
Requires gobi-cli installed and authenticated. See gobi-core skill for setup.
|
|
21
21
|
|
|
@@ -52,7 +52,7 @@ For programmatic/agent usage, always pass `--json` as a **global** option (befor
|
|
|
52
52
|
|
|
53
53
|
```bash
|
|
54
54
|
gobi --json draft list --limit 20
|
|
55
|
-
gobi --json draft add "Concise titles" "Prefer concise titles for
|
|
55
|
+
gobi --json draft add "Concise titles" "Prefer concise titles for personal posts." --action "Apply" --action "Skip" --priority 50
|
|
56
56
|
gobi --json draft action <draftId> 0
|
|
57
57
|
```
|
|
58
58
|
|
|
@@ -8,7 +8,7 @@ description: >-
|
|
|
8
8
|
|
|
9
9
|
# Gobi Homepage Developer Guide
|
|
10
10
|
|
|
11
|
-
A **Gobi Homepage** is a custom HTML page hosted on a vault's webdrive and served as its public homepage at `https://gobispace.com/@{vaultSlug}`. Gobi injects a `window.gobi` bridge before any scripts run, giving the homepage access to vault data, files,
|
|
11
|
+
A **Gobi Homepage** is a custom HTML page hosted on a vault's webdrive and served as its public homepage at `https://gobispace.com/@{vaultSlug}`. Gobi injects a `window.gobi` bridge before any scripts run, giving the homepage access to vault data, files, personal posts, and chat.
|
|
12
12
|
|
|
13
13
|
> **Sandbox:** The homepage runs in a sandboxed iframe with `origin: null`. Direct `fetch()` / `XMLHttpRequest` calls are blocked by CORS. All data access must go through `window.gobi.*`.
|
|
14
14
|
|
|
@@ -18,9 +18,9 @@ A **Gobi Homepage** is a custom HTML page hosted on a vault's webdrive and serve
|
|
|
18
18
|
|
|
19
19
|
1. Create an HTML file in the vault (e.g. `app/home.html`) and upload:
|
|
20
20
|
```bash
|
|
21
|
-
gobi sync
|
|
21
|
+
gobi vault sync
|
|
22
22
|
```
|
|
23
|
-
2. Set `homepage` in
|
|
23
|
+
2. Set `homepage` in PUBLISH.md (homepage property):
|
|
24
24
|
- `homepage: "[[app/home.html]]"` — Gobi sidebars visible alongside the homepage
|
|
25
25
|
- `homepage: "[[app/home.html?nav=false]]"` — full-screen, no Gobi chrome
|
|
26
26
|
|
|
@@ -67,10 +67,12 @@ function getFileUrl(path) {
|
|
|
67
67
|
}
|
|
68
68
|
```
|
|
69
69
|
|
|
70
|
-
###
|
|
70
|
+
### Personal posts
|
|
71
|
+
|
|
72
|
+
> `listVaultPosts` is still accepted as a deprecated alias for back-compat with older homepages — existing applets won't break, but new code should use `listPersonalPosts`.
|
|
71
73
|
|
|
72
74
|
```js
|
|
73
|
-
const { data: updates, pagination } = await gobi.
|
|
75
|
+
const { data: updates, pagination } = await gobi.listPersonalPosts({ limit: 10, cursor: null });
|
|
74
76
|
// updates[i] → {
|
|
75
77
|
// id: 42,
|
|
76
78
|
// title: 'New insights',
|
|
@@ -88,7 +90,7 @@ for (const u of updates) {
|
|
|
88
90
|
// Pagination — load the next page using the cursor
|
|
89
91
|
if (pagination.hasMore) {
|
|
90
92
|
const { data: moreUpdates, pagination: nextPage } =
|
|
91
|
-
await gobi.
|
|
93
|
+
await gobi.listPersonalPosts({ limit: 10, cursor: pagination.nextCursor });
|
|
92
94
|
}
|
|
93
95
|
```
|
|
94
96
|
|
|
@@ -119,7 +121,7 @@ const { messages, hasMore, nextCursor } = await gobi.loadMessages('sess_abc', {
|
|
|
119
121
|
// sendMessage(sessionId, text, options, onDelta) → Promise<{ content }>
|
|
120
122
|
//
|
|
121
123
|
// options.context tells the AI what the user is looking at:
|
|
122
|
-
// {
|
|
124
|
+
// { postId?: number, postTitle?: string, filePath?: string }
|
|
123
125
|
|
|
124
126
|
let reply = '';
|
|
125
127
|
await gobi.sendMessage(sessionId, 'Hello', (delta) => {
|
|
@@ -129,7 +131,7 @@ await gobi.sendMessage(sessionId, 'Hello', (delta) => {
|
|
|
129
131
|
|
|
130
132
|
// With context
|
|
131
133
|
await gobi.sendMessage(sessionId, 'Tell me more', {
|
|
132
|
-
context: {
|
|
134
|
+
context: { postId: 42, postTitle: 'New insights' }
|
|
133
135
|
}, (delta) => { reply += delta; renderReply(reply); });
|
|
134
136
|
|
|
135
137
|
await gobi.sendMessage(sessionId, 'Explain this', {
|
|
@@ -144,7 +146,7 @@ sessionId = crypto.randomUUID();
|
|
|
144
146
|
|
|
145
147
|
## Rendering Markdown
|
|
146
148
|
|
|
147
|
-
|
|
149
|
+
Post `content` and any markdown read via `readFile` may contain Obsidian-style wiki embeds (`![[path|width]]`). Resolve them before passing to a renderer.
|
|
148
150
|
|
|
149
151
|
The examples below use [marked](https://cdn.jsdelivr.net/npm/marked/marked.min.js) — include it in your `<head>`:
|
|
150
152
|
|
|
@@ -175,7 +177,7 @@ renderer.link = (href, title, text) =>
|
|
|
175
177
|
marked.setOptions({ renderer });
|
|
176
178
|
```
|
|
177
179
|
|
|
178
|
-
**Plain-text previews.** For
|
|
180
|
+
**Plain-text previews.** For post list cards, render a truncated preview with `escapeHtml(content.substring(0, 200))` — don't run markdown on a random substring, it produces broken HTML. Use `marked.parse(resolveWikiImages(content))` only for the full expanded view. Same for chat: `marked.parse(content)` for assistant messages, `escapeHtml(content)` for human messages.
|
|
179
181
|
|
|
180
182
|
---
|
|
181
183
|
|
|
@@ -202,9 +204,9 @@ Centralize colors and spacing in CSS custom properties so restyling is a one-lin
|
|
|
202
204
|
|
|
203
205
|
Pair with Google Fonts (e.g. Space Grotesk for headings, IBM Plex Mono for meta, Inter for body) via CDN `<link>`.
|
|
204
206
|
|
|
205
|
-
### Knowledge Graph from
|
|
207
|
+
### Knowledge Graph from post topics
|
|
206
208
|
|
|
207
|
-
|
|
209
|
+
Personal posts carry a `topics` array. Treat each topic as a node and any two topics co-occurring in the same post as an edge — you get a force-directed graph of the vault's themes for free. Use [d3](https://cdn.jsdelivr.net/npm/d3@7/dist/d3.min.js).
|
|
208
210
|
|
|
209
211
|
```js
|
|
210
212
|
// Separate data-building from rendering so the same graph can be drawn at multiple sizes.
|
|
@@ -246,7 +248,7 @@ function drawGraph(containerId, w, h, data, opts = {}) {
|
|
|
246
248
|
```
|
|
247
249
|
|
|
248
250
|
Tips:
|
|
249
|
-
- **Enrich the data.** One page of 8
|
|
251
|
+
- **Enrich the data.** One page of 8 posts makes a sparse graph. Paginate 3–4 times (cap at ~32 posts) before building.
|
|
250
252
|
- **Cache the built data** in a module-level variable so the full-screen overlay can reuse it without refetching.
|
|
251
253
|
- **Mini vs full presets.** Pass different `opts` — e.g. mini `{nodeRange:[4,16], fontSize:'9px', distance:60, charge:-80}`, full `{nodeRange:[8,32], fontSize:'12px', distance:120, charge:-200}`.
|
|
252
254
|
- Run a **separate simulation** for the full-scale instance — copy the nodes/links rather than sharing references, otherwise both graphs fight over the same positions.
|
|
@@ -272,7 +274,7 @@ function openOverlay(renderInto) {
|
|
|
272
274
|
|
|
273
275
|
Always restore `body.overflow` on close, and always remove the `keydown` listener.
|
|
274
276
|
|
|
275
|
-
###
|
|
277
|
+
### Personal post card — preview/full toggle
|
|
276
278
|
|
|
277
279
|
Show a truncated card that expands in place on click:
|
|
278
280
|
|
|
@@ -292,7 +294,7 @@ card.onclick = (event) => {
|
|
|
292
294
|
Empty chat looks dead. Show clickable prompt chips until the first message is sent:
|
|
293
295
|
|
|
294
296
|
```js
|
|
295
|
-
const prompts = ['What is this
|
|
297
|
+
const prompts = ['What is this vault about?', 'Summarize the latest post', 'What topics come up most?'];
|
|
296
298
|
chips.innerHTML = prompts.map(p => `<button class="chip">${escapeHtml(p)}</button>`).join('');
|
|
297
299
|
chips.querySelectorAll('.chip').forEach((btn, i) => {
|
|
298
300
|
btn.onclick = () => { input.value = prompts[i]; chips.remove(); input.focus(); };
|
|
@@ -361,7 +363,7 @@ Single breakpoint at `768px` is enough for most homepages:
|
|
|
361
363
|
</div>
|
|
362
364
|
|
|
363
365
|
<script>
|
|
364
|
-
document.title = gobi.vault.title || '
|
|
366
|
+
document.title = gobi.vault.title || 'Vault';
|
|
365
367
|
|
|
366
368
|
// ── Helpers ──────────────────────────────────────
|
|
367
369
|
|
|
@@ -389,11 +391,11 @@ Single breakpoint at `768px` is enough for most homepages:
|
|
|
389
391
|
`https://gobispace.com/login?redirect_uri=${encodeURIComponent(window.location.href)}`;
|
|
390
392
|
}
|
|
391
393
|
|
|
392
|
-
// ──
|
|
394
|
+
// ── Personal posts ───────────────────────────────
|
|
393
395
|
|
|
394
396
|
async function loadUpdates() {
|
|
395
397
|
try {
|
|
396
|
-
const { data: updates } = await gobi.
|
|
398
|
+
const { data: updates } = await gobi.listPersonalPosts({ limit: 5 });
|
|
397
399
|
const el = document.getElementById('updates');
|
|
398
400
|
for (const u of updates) {
|
|
399
401
|
const div = document.createElement('div');
|
|
@@ -402,7 +404,7 @@ Single breakpoint at `768px` is enough for most homepages:
|
|
|
402
404
|
el.appendChild(div);
|
|
403
405
|
}
|
|
404
406
|
} catch (err) {
|
|
405
|
-
console.error('Failed to load
|
|
407
|
+
console.error('Failed to load personal posts:', err);
|
|
406
408
|
}
|
|
407
409
|
}
|
|
408
410
|
|
|
@@ -10,12 +10,12 @@ description: >-
|
|
|
10
10
|
allowed-tools: Bash(gobi:*)
|
|
11
11
|
metadata:
|
|
12
12
|
author: gobi-ai
|
|
13
|
-
version: "0.
|
|
13
|
+
version: "2.0.0"
|
|
14
14
|
---
|
|
15
15
|
|
|
16
16
|
# gobi-media
|
|
17
17
|
|
|
18
|
-
Gobi media generation commands (
|
|
18
|
+
Gobi media generation commands (v2.0.0).
|
|
19
19
|
|
|
20
20
|
Requires gobi-cli installed and authenticated. See gobi-core skill for setup.
|
|
21
21
|
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gobi-saved
|
|
3
|
+
description: >-
|
|
4
|
+
Gobi saved commands for the user's personal saved-knowledge collection:
|
|
5
|
+
saved notes (create/list/get/edit/delete) and saved posts (snapshot a
|
|
6
|
+
post/reply you bookmarked from feed/space; list/get/delete). Use when the
|
|
7
|
+
user wants to capture their own notes or bookmark/manage posts they've
|
|
8
|
+
saved.
|
|
9
|
+
allowed-tools: Bash(gobi:*)
|
|
10
|
+
metadata:
|
|
11
|
+
author: gobi-ai
|
|
12
|
+
version: "2.0.0"
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# gobi-saved
|
|
16
|
+
|
|
17
|
+
Gobi saved-knowledge commands (v2.0.0).
|
|
18
|
+
|
|
19
|
+
Requires gobi-cli installed and authenticated. See gobi-core skill for setup.
|
|
20
|
+
|
|
21
|
+
## What is "saved"?
|
|
22
|
+
|
|
23
|
+
`gobi saved` is the user's personal saved-knowledge collection. It has two subgroups:
|
|
24
|
+
|
|
25
|
+
- **`gobi saved note`** — User-authored notes (private, dated entries).
|
|
26
|
+
- **`gobi saved post`** — Snapshots of posts (or replies) that the user has bookmarked from a space or the global feed.
|
|
27
|
+
|
|
28
|
+
Both are user-private — only the author can see/edit/delete their own items.
|
|
29
|
+
|
|
30
|
+
## Timezone
|
|
31
|
+
|
|
32
|
+
`gobi saved note list` and `gobi saved note create` need a timezone to compute the calendar day. The CLI auto-detects your system timezone via `Intl.DateTimeFormat().resolvedOptions().timeZone`. Override with `--timezone <iana-name>` (e.g. `America/Los_Angeles`).
|
|
33
|
+
|
|
34
|
+
## Important: JSON Mode
|
|
35
|
+
|
|
36
|
+
For programmatic/agent usage, always pass `--json` as a **global** option (before the subcommand):
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
gobi --json saved note list --date 2026-04-27
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Available Commands
|
|
43
|
+
|
|
44
|
+
### Notes
|
|
45
|
+
- `gobi saved note list` — List your notes. Without `--date`, returns recent notes via cursor pagination. With `--date YYYY-MM-DD`, returns all notes for that day.
|
|
46
|
+
- `gobi saved note get <noteId>` — Get a single note by id.
|
|
47
|
+
- `gobi saved note create --content <md>` — Create a note. Use `'-'` for stdin.
|
|
48
|
+
- `gobi saved note edit <noteId>` — Edit a note. Provide `--content` and/or `--agent-id`.
|
|
49
|
+
- `gobi saved note delete <noteId>` — Delete a note you authored.
|
|
50
|
+
|
|
51
|
+
### Posts
|
|
52
|
+
- `gobi saved post list` — List posts you have saved (paginated). Filter with `--type all|article|space-post`.
|
|
53
|
+
- `gobi saved post get <postId>` — Get a saved post snapshot by post id.
|
|
54
|
+
- `gobi saved post create --source <id>` — Save a post or reply by id. Records a snapshot in your saved-posts collection.
|
|
55
|
+
- `gobi saved post delete <postId>` — Remove a post from your saved-posts collection.
|
|
56
|
+
|
|
57
|
+
## Reference Documentation
|
|
58
|
+
|
|
59
|
+
- [gobi saved](references/saved.md)
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# gobi saved
|
|
2
|
+
|
|
3
|
+
```
|
|
4
|
+
Usage: gobi saved [options] [command]
|
|
5
|
+
|
|
6
|
+
Saved-knowledge commands (notes and posts).
|
|
7
|
+
|
|
8
|
+
Options:
|
|
9
|
+
-h, --help display help for command
|
|
10
|
+
|
|
11
|
+
Commands:
|
|
12
|
+
note Personal saved notes (create, list, get, edit, delete).
|
|
13
|
+
post Saved posts (snapshots of posts and replies you bookmark).
|
|
14
|
+
help [command] display help for command
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## note
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
Usage: gobi saved note [options] [command]
|
|
21
|
+
|
|
22
|
+
Personal saved notes (create, list, get, edit, delete).
|
|
23
|
+
|
|
24
|
+
Options:
|
|
25
|
+
-h, --help display help for command
|
|
26
|
+
|
|
27
|
+
Commands:
|
|
28
|
+
list [options] List your notes. Without --date, returns recent notes via cursor pagination. With --date, returns all notes for that day.
|
|
29
|
+
get <noteId> Get a single note by id.
|
|
30
|
+
create [options] Create a note. Provide --content (use '-' for stdin) and/or attachments.
|
|
31
|
+
edit [options] <noteId> Edit a note. Provide --content and/or --agent-id.
|
|
32
|
+
delete <noteId> Delete a note you authored.
|
|
33
|
+
help [command] display help for command
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## post
|
|
37
|
+
|
|
38
|
+
```
|
|
39
|
+
Usage: gobi saved post [options] [command]
|
|
40
|
+
|
|
41
|
+
Saved posts (snapshots of posts and replies you bookmark).
|
|
42
|
+
|
|
43
|
+
Options:
|
|
44
|
+
-h, --help display help for command
|
|
45
|
+
|
|
46
|
+
Commands:
|
|
47
|
+
list [options] List posts you have saved.
|
|
48
|
+
get <postId> Get a saved post snapshot by post id.
|
|
49
|
+
create [options] Save a post or reply. Records a snapshot in your saved-posts collection.
|
|
50
|
+
delete <postId> Remove a post from your saved-posts collection.
|
|
51
|
+
help [command] display help for command
|
|
52
|
+
```
|
|
@@ -7,23 +7,27 @@ description: >-
|
|
|
7
7
|
allowed-tools: Bash(gobi:*)
|
|
8
8
|
metadata:
|
|
9
9
|
author: gobi-ai
|
|
10
|
-
version: "0.
|
|
10
|
+
version: "2.0.0"
|
|
11
11
|
---
|
|
12
12
|
|
|
13
13
|
# gobi-sense
|
|
14
14
|
|
|
15
|
-
Gobi sense commands for activity and transcription data (
|
|
15
|
+
Gobi sense commands for activity and transcription data (v2.0.0).
|
|
16
16
|
|
|
17
|
-
Requires gobi-cli installed and authenticated. See gobi-core skill for setup.
|
|
17
|
+
Requires gobi-cli installed and authenticated. See the **gobi-core** skill for setup.
|
|
18
|
+
|
|
19
|
+
Activities and transcriptions are captured by Gobi Sense (the wearable) and the mobile app, then ingested via the cloud pipeline. The CLI surface is read-only — fetch records in a time range and feed them to whatever analysis you want to run.
|
|
18
20
|
|
|
19
21
|
## Important: JSON Mode
|
|
20
22
|
|
|
21
23
|
For programmatic/agent usage, always pass `--json` as a **global** option (before the subcommand):
|
|
22
24
|
|
|
23
25
|
```bash
|
|
24
|
-
gobi --json sense activities --
|
|
26
|
+
gobi --json sense activities --start-time 2026-04-01T00:00:00Z --end-time 2026-04-08T00:00:00Z
|
|
25
27
|
```
|
|
26
28
|
|
|
29
|
+
Times are ISO 8601 UTC.
|
|
30
|
+
|
|
27
31
|
## Available Commands
|
|
28
32
|
|
|
29
33
|
- `gobi sense activities` — Fetch activity records within a time range.
|