@gobi-ai/cli 2.0.36 → 2.0.40
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 +24 -33
- 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 +39 -15
- package/dist/commands/sense.js +162 -111
- package/dist/commands/space.js +35 -0
- package/dist/commands/update.js +2 -2
- package/dist/commands/utils.js +1 -1
- package/dist/main.js +2 -6
- 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 +5 -6
- package/skills/gobi-homepage/SKILL.md +1 -1
- package/skills/gobi-media/SKILL.md +3 -3
- package/skills/gobi-sense/SKILL.md +62 -12
- package/skills/gobi-sense/references/personal.md +50 -0
- package/skills/gobi-sense/references/space.md +53 -0
- package/skills/gobi-space/SKILL.md +22 -40
- package/skills/gobi-space/references/personal.md +42 -6
- package/skills/gobi-vault/SKILL.md +3 -3
- package/dist/commands/global.js +0 -438
- package/skills/gobi-sense/references/sense.md +0 -41
- 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,50 +184,41 @@ 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) |
|
|
218
200
|
| `gobi personal edit-reply <replyId> [--content <c>] [--rich-text <json>]` | Edit a reply you authored |
|
|
219
201
|
| `gobi personal delete-reply <replyId>` | Delete a reply you authored |
|
|
220
202
|
|
|
221
|
-
### Sense
|
|
203
|
+
### Sense (activities & conversations)
|
|
204
|
+
|
|
205
|
+
Activity and conversation data captured by Gobi Sense (the wearable) and the mobile app, then ingested by the cloud pipeline. Read-only. See the `gobi-sense` skill for full workflows.
|
|
206
|
+
|
|
207
|
+
Like posts and artifacts, Sense data is **scoped to a space**: the subcommands live under `gobi personal …` (your personal space) and `gobi space …` (the active team space — `gobi space warp <slug>` or `gobi space --space-slug <slug> …`). `<scope>` below is `personal` or `space`.
|
|
222
208
|
|
|
223
|
-
|
|
209
|
+
- **activities** — what you were doing (category + details, start/end times). In a team space, every member's activities show up, attributed to their recorder.
|
|
210
|
+
- **conversations** — phone-mic Audio Logs plus Sense-detected conversations, each with a transcript and auto-generated summary. In a team space, every member's conversations show up, attributed to their recorder (transcript/audio stay owner-only). (This replaces the old `list-transcriptions` — transcriptions were unified into conversations.)
|
|
224
211
|
|
|
225
212
|
| Command | Description |
|
|
226
213
|
|---------|-------------|
|
|
227
|
-
| `gobi
|
|
228
|
-
| `gobi
|
|
214
|
+
| `gobi <scope> activities list [--limit N] [--before <cursor>] [--mine]` | List Sense activities in this scope (newest first) |
|
|
215
|
+
| `gobi <scope> activities get <activityId>` | Get one activity's details |
|
|
216
|
+
| `gobi <scope> activities transcript <activityId>` | Get an activity's transcript (owner-only) |
|
|
217
|
+
| `gobi <scope> conversations list [--limit N] [--before <cursor>] [--mine]` | List conversations captured in this scope (newest first) |
|
|
218
|
+
| `gobi <scope> conversations transcript <conversationId>` | Get a conversation's transcript and summary |
|
|
219
|
+
| `gobi <scope> conversations audio <conversationId>` | Get a signed URL for the recording (owner-only) |
|
|
229
220
|
|
|
230
|
-
|
|
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).
|
|
231
222
|
|
|
232
223
|
### Artifacts
|
|
233
224
|
|
|
@@ -268,7 +259,7 @@ Image, video, and avatar generation. See the `gobi-media` skill for full workflo
|
|
|
268
259
|
| `gobi media list-videos` / `gobi media get-video <id>` | List or get videos |
|
|
269
260
|
| `gobi media upload <file>` | Upload a local file and get a media id |
|
|
270
261
|
|
|
271
|
-
###
|
|
262
|
+
### Top-level options
|
|
272
263
|
|
|
273
264
|
| Option | Scope | Description |
|
|
274
265
|
|--------|-------|-------------|
|
|
@@ -304,10 +295,10 @@ The CLI ships a `.claude-plugin/` manifest with skills that wrap the command gro
|
|
|
304
295
|
|-------|--------|
|
|
305
296
|
| `gobi-core` | Auth, update, space list/warp |
|
|
306
297
|
| `gobi-vault` | `gobi vault init/list/publish/unpublish/sync` |
|
|
307
|
-
| `gobi-space` | `gobi space
|
|
298
|
+
| `gobi-space` | `gobi space …` and `gobi personal …` |
|
|
308
299
|
| `gobi-artifact` | `gobi personal artifact …` and `gobi space artifact …` |
|
|
309
300
|
| `gobi-media` | `gobi media …` |
|
|
310
|
-
| `gobi-sense` | `gobi
|
|
301
|
+
| `gobi-sense` | `gobi personal activities/conversations …` and `gobi space activities/conversations …` |
|
|
311
302
|
| `gobi-homepage` | Building custom HTML homepages with `window.gobi` |
|
|
312
303
|
|
|
313
304
|
Each skill's `SKILL.md` is hand-written orientation; `references/` is regenerated from `--help` output by `npm run generate-skill-docs`.
|
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:
|
|
@@ -2,6 +2,7 @@ import { apiGet, apiPost, apiPatch, apiPut, apiDelete } from "../client.js";
|
|
|
2
2
|
import { buildMentionMap, formatAttachmentLines, formatAttachmentSummary, formatPostLabel, formatReactionChips, formatReplyLine, isJsonMode, jsonOut, postBodyText, readStdin, unwrapResp, } from "./utils.js";
|
|
3
3
|
import { uploadPostAttachments, assertPostAttachmentMix, } from "../attachments.js";
|
|
4
4
|
import { registerArtifactSubcommands } from "./artifact.js";
|
|
5
|
+
import { registerActivitiesSubcommands, registerConversationsSubcommands, } from "./sense.js";
|
|
5
6
|
function readContent(value) {
|
|
6
7
|
if (value === "-")
|
|
7
8
|
return readStdin();
|
|
@@ -32,8 +33,8 @@ export function registerPersonalCommand(program) {
|
|
|
32
33
|
const personal = program
|
|
33
34
|
.command("personal")
|
|
34
35
|
.description("Personal-space commands (private posts and replies visible only to you). " +
|
|
35
|
-
"
|
|
36
|
-
"
|
|
36
|
+
"Posts/replies live in the same data model as space posts, scoped via " +
|
|
37
|
+
"personalSpaceUserId so they never surface on the public feed.");
|
|
37
38
|
// ── Feed (unified) ──
|
|
38
39
|
personal
|
|
39
40
|
.command("feed")
|
|
@@ -165,13 +166,13 @@ export function registerPersonalCommand(program) {
|
|
|
165
166
|
});
|
|
166
167
|
// ── Get post (with ancestors and replies) ──
|
|
167
168
|
//
|
|
168
|
-
//
|
|
169
|
-
//
|
|
170
|
-
//
|
|
171
|
-
//
|
|
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.
|
|
172
173
|
personal
|
|
173
174
|
.command("get-post <postId>")
|
|
174
|
-
.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.")
|
|
175
176
|
.option("--limit <number>", "Items per page", "20")
|
|
176
177
|
.option("--cursor <string>", "Pagination cursor from previous response")
|
|
177
178
|
.option("--full", "Show full reply content without truncation")
|
|
@@ -245,8 +246,8 @@ export function registerPersonalCommand(program) {
|
|
|
245
246
|
// ── Create post ──
|
|
246
247
|
//
|
|
247
248
|
// Targets `POST /posts/personal-space`, the only endpoint that stamps
|
|
248
|
-
// `personalSpaceUserId` on the row. Body shape is identical to the
|
|
249
|
-
//
|
|
249
|
+
// `personalSpaceUserId` on the row. Body shape is identical to the public
|
|
250
|
+
// `POST /posts` create (same CreatePostDto). The server skips the
|
|
250
251
|
// `@gobi` mention dispatch and the notification fan-out for this lane —
|
|
251
252
|
// private posts have no audience.
|
|
252
253
|
personal
|
|
@@ -257,7 +258,7 @@ export function registerPersonalCommand(program) {
|
|
|
257
258
|
.option("--rich-text <richText>", "Rich-text JSON array (mutually exclusive with --content)")
|
|
258
259
|
.option("--artifact <artifactId>", "Attach an existing artifact to the post (repeatable). Create artifacts with `gobi personal artifact create`.", (value, prev = []) => [...prev, value], [])
|
|
259
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], [])
|
|
260
|
-
.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.")
|
|
261
262
|
.action(async (opts) => {
|
|
262
263
|
// A post is substantive if it has a text body OR carries an attachment
|
|
263
264
|
// (artifact card / media) OR embeds a repost. Only block the truly empty
|
|
@@ -315,9 +316,9 @@ export function registerPersonalCommand(program) {
|
|
|
315
316
|
});
|
|
316
317
|
// ── Edit post ──
|
|
317
318
|
//
|
|
318
|
-
//
|
|
319
|
-
//
|
|
320
|
-
//
|
|
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.
|
|
321
322
|
personal
|
|
322
323
|
.command("edit-post <postId>")
|
|
323
324
|
.description("Edit a post you authored in your personal space.")
|
|
@@ -385,8 +386,8 @@ export function registerPersonalCommand(program) {
|
|
|
385
386
|
//
|
|
386
387
|
// `POST /posts/:postId/replies` inherits scope from the parent on the
|
|
387
388
|
// server — reply to a personal-space parent → reply is scoped to that
|
|
388
|
-
// personal space. The same
|
|
389
|
-
// 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`.
|
|
390
391
|
personal
|
|
391
392
|
.command("create-reply <postId>")
|
|
392
393
|
.description("Reply to a personal-space post. The reply inherits the parent's private scope automatically.")
|
|
@@ -505,4 +506,27 @@ export function registerPersonalCommand(program) {
|
|
|
505
506
|
registerArtifactSubcommands(personal, { resolve: () => ({}) }, "Versioned creations attached to posts, scoped to your personal space (visible " +
|
|
506
507
|
"only to you). Kinds: image | video | gif | markdown | meeting_summary. Always " +
|
|
507
508
|
"human-owned; revisions form a draft/published tree (one published per artifact).");
|
|
509
|
+
// ── Sense: activities + conversations (scoped to your personal space) ──
|
|
510
|
+
const senseScope = {
|
|
511
|
+
label: "personal",
|
|
512
|
+
listActivities: async (params) => {
|
|
513
|
+
const resp = (await apiGet("/app/activities", params));
|
|
514
|
+
return {
|
|
515
|
+
items: (resp.activities || []),
|
|
516
|
+
pagination: resp.pagination,
|
|
517
|
+
};
|
|
518
|
+
},
|
|
519
|
+
// `/app/conversations` spans all the user's scopes (newest ~50, no paging);
|
|
520
|
+
// filter to the personal scope (spaceId 0). Params are ignored — the endpoint
|
|
521
|
+
// takes none.
|
|
522
|
+
listConversations: async () => {
|
|
523
|
+
const resp = (await apiGet("/app/conversations"));
|
|
524
|
+
const all = (resp.conversations || []);
|
|
525
|
+
return { items: all.filter((c) => Number(c.spaceId ?? 0) === 0) };
|
|
526
|
+
},
|
|
527
|
+
};
|
|
528
|
+
registerActivitiesSubcommands(personal, senseScope, "Your personal Sense activities (what you were doing, from the wearable/app), " +
|
|
529
|
+
"browse-only. Recorded in your personal space (visible only to you).");
|
|
530
|
+
registerConversationsSubcommands(personal, senseScope, "Your personal Sense conversations (phone-mic Audio Logs + detected conversations), " +
|
|
531
|
+
"browse-only. Recorded in your personal space (visible only to you).");
|
|
508
532
|
}
|