@gobi-ai/cli 2.0.32 → 2.0.33

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": "2.0.32",
7
+ "version": "2.0.33",
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.32",
12
+ "version": "2.0.33",
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": "2.0.32",
4
+ "version": "2.0.33",
5
5
  "author": {
6
6
  "name": "gobi-ai"
7
7
  },
@@ -191,8 +191,14 @@ export function registerGlobalCommand(program) {
191
191
  .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], [])
192
192
  .option("--repost-post-id <postId>", "Wrap an existing top-level post as the embedded card on this new post. Composes with --content / --rich-text / --attach (the wrapping author's text + media render above the embedded card). Reposts-of-reposts are collapsed to the transitive root server-side. The referenced post must exist, not be deleted, and not itself be a reply.")
193
193
  .action(async (opts) => {
194
- if (!opts.content && !opts.richText) {
195
- throw new Error("Provide either --content or --rich-text.");
194
+ // A post is substantive if it has a text body OR carries an attachment
195
+ // (artifact card / media) OR embeds a repost. Only block the truly empty
196
+ // case — this is what lets an artifact-only post be created with no content.
197
+ const hasAttachmentPayload = (opts.artifact && opts.artifact.length > 0) ||
198
+ (opts.attach && opts.attach.length > 0) ||
199
+ opts.repostPostId != null;
200
+ if (!opts.content && !opts.richText && !hasAttachmentPayload) {
201
+ throw new Error("Provide --content, --rich-text, or an attachment (--artifact / --attach / --repost-post-id).");
196
202
  }
197
203
  if (opts.content && opts.richText) {
198
204
  throw new Error("--content and --rich-text are mutually exclusive.");
@@ -233,8 +233,15 @@ export function registerPersonalCommand(program) {
233
233
  .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], [])
234
234
  .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 global-feed post, or a post in a space you're a member of). Reposting someone else's personal-space post returns 404.")
235
235
  .action(async (opts) => {
236
- if (!opts.content && !opts.richText) {
237
- throw new Error("Provide either --content or --rich-text.");
236
+ // A post is substantive if it has a text body OR carries an attachment
237
+ // (artifact card / media) OR embeds a repost. Only block the truly empty
238
+ // case — this is what lets an artifact-only post (e.g. an activity-end
239
+ // meeting summary) be created with no content.
240
+ const hasAttachmentPayload = (opts.artifact && opts.artifact.length > 0) ||
241
+ (opts.attach && opts.attach.length > 0) ||
242
+ opts.repostPostId != null;
243
+ if (!opts.content && !opts.richText && !hasAttachmentPayload) {
244
+ throw new Error("Provide --content, --rich-text, or an attachment (--artifact / --attach / --repost-post-id).");
238
245
  }
239
246
  if (opts.content && opts.richText) {
240
247
  throw new Error("--content and --rich-text are mutually exclusive.");
@@ -385,8 +385,15 @@ export function registerSpaceCommand(program) {
385
385
  .option("--repost-post-id <postId>", "Wrap an existing top-level post as the embedded card on this new post. Composes with --content / --rich-text / --attach (the wrapping author's text + media render above the embedded card). Reposts-of-reposts are collapsed to the transitive root server-side. The referenced post must exist, not be deleted, and not itself be a reply.")
386
386
  .option("--channel <channelId>", "Channel id to post into (see `list-channels`). Omit to post to the space's main feed. You must be able to see the channel (member, space owner/admin, or the space agent on an agent-enabled channel).")
387
387
  .action(async (opts) => {
388
- if (!opts.content && !opts.richText) {
389
- throw new Error("Provide either --content or --rich-text.");
388
+ // A post is substantive if it has a text body OR carries an attachment
389
+ // (artifact card / media) OR embeds a repost. Only block the truly empty
390
+ // case — this is what lets an artifact-only post (e.g. an activity-end
391
+ // meeting summary) be created with no content.
392
+ const hasAttachmentPayload = (opts.artifact && opts.artifact.length > 0) ||
393
+ (opts.attach && opts.attach.length > 0) ||
394
+ opts.repostPostId != null;
395
+ if (!opts.content && !opts.richText && !hasAttachmentPayload) {
396
+ throw new Error("Provide --content, --rich-text, or an attachment (--artifact / --attach / --repost-post-id).");
390
397
  }
391
398
  if (opts.content && opts.richText) {
392
399
  throw new Error("--content and --rich-text are mutually exclusive.");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gobi-ai/cli",
3
- "version": "2.0.32",
3
+ "version": "2.0.33",
4
4
  "description": "CLI client for the Gobi collaborative knowledge platform",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -9,12 +9,12 @@ description: >-
9
9
  allowed-tools: Bash(gobi:*)
10
10
  metadata:
11
11
  author: gobi-ai
12
- version: "2.0.32"
12
+ version: "2.0.33"
13
13
  ---
14
14
 
15
15
  # gobi-artifact
16
16
 
17
- Gobi artifact commands for versioned, post-attachable creations (v2.0.32).
17
+ Gobi artifact commands for versioned, post-attachable creations (v2.0.33).
18
18
 
19
19
  Requires gobi-cli installed and authenticated. See gobi-core skill for setup.
20
20
 
@@ -8,12 +8,12 @@ description: >-
8
8
  allowed-tools: Bash(gobi:*)
9
9
  metadata:
10
10
  author: gobi-ai
11
- version: "2.0.32"
11
+ version: "2.0.33"
12
12
  ---
13
13
 
14
14
  # gobi-core
15
15
 
16
- Core CLI commands for the Gobi collaborative knowledge platform (v2.0.32).
16
+ Core CLI commands for the Gobi collaborative knowledge platform (v2.0.33).
17
17
 
18
18
  ## Prerequisites
19
19
 
@@ -7,7 +7,7 @@ description: >-
7
7
  allowed-tools: Bash(gobi:*)
8
8
  metadata:
9
9
  author: gobi-ai
10
- version: "2.0.32"
10
+ version: "2.0.33"
11
11
  ---
12
12
 
13
13
  # Gobi Homepage Developer Guide
@@ -10,12 +10,12 @@ description: >-
10
10
  allowed-tools: Bash(gobi:*)
11
11
  metadata:
12
12
  author: gobi-ai
13
- version: "2.0.32"
13
+ version: "2.0.33"
14
14
  ---
15
15
 
16
16
  # gobi-media
17
17
 
18
- Gobi media generation commands (v2.0.32).
18
+ Gobi media generation commands (v2.0.33).
19
19
 
20
20
  Requires gobi-cli installed and authenticated. See gobi-core skill for setup.
21
21
 
@@ -7,12 +7,12 @@ description: >-
7
7
  allowed-tools: Bash(gobi:*)
8
8
  metadata:
9
9
  author: gobi-ai
10
- version: "2.0.32"
10
+ version: "2.0.33"
11
11
  ---
12
12
 
13
13
  # gobi-sense
14
14
 
15
- Gobi sense commands for activity and transcription data (v2.0.32).
15
+ Gobi sense commands for activity and transcription data (v2.0.33).
16
16
 
17
17
  Requires gobi-cli installed and authenticated. See the **gobi-core** skill for setup.
18
18
 
@@ -11,12 +11,12 @@ description: >-
11
11
  allowed-tools: Bash(gobi:*)
12
12
  metadata:
13
13
  author: gobi-ai
14
- version: "2.0.32"
14
+ version: "2.0.33"
15
15
  ---
16
16
 
17
17
  # gobi-space
18
18
 
19
- Gobi space, global, and personal-space posts (v2.0.32).
19
+ Gobi space, global, and personal-space posts (v2.0.33).
20
20
 
21
21
  Requires gobi-cli installed and authenticated. See the **gobi-core** skill for setup.
22
22
 
@@ -8,12 +8,12 @@ description: >-
8
8
  allowed-tools: Bash(gobi:*)
9
9
  metadata:
10
10
  author: gobi-ai
11
- version: "2.0.32"
11
+ version: "2.0.33"
12
12
  ---
13
13
 
14
14
  # gobi-vault
15
15
 
16
- Gobi vault commands for publishing your vault profile and syncing files (v2.0.32).
16
+ Gobi vault commands for publishing your vault profile and syncing files (v2.0.33).
17
17
 
18
18
  Requires gobi-cli installed and authenticated. See gobi-core skill for setup.
19
19