@gobi-ai/cli 2.0.35 → 2.0.36

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.35",
7
+ "version": "2.0.36",
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.35",
12
+ "version": "2.0.36",
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.35",
4
+ "version": "2.0.36",
5
5
  "author": {
6
6
  "name": "gobi-ai"
7
7
  },
package/README.md CHANGED
@@ -63,7 +63,7 @@ Each setup step unlocks a different family of commands — run only the ones the
63
63
  | Step | Unlocks |
64
64
  |------|---------|
65
65
  | `gobi auth login` | All authenticated commands |
66
- | `gobi vault init` | Every `gobi vault …` command (`publish`, `unpublish`, `sync`); also lets `artifact create --auto-attachments` resolve that vault automatically |
66
+ | `gobi vault init` | Every `gobi vault …` command (`publish`, `unpublish`, `sync`); also lets `<scope> artifact create --auto-attachments` resolve that vault automatically |
67
67
  | `gobi space warp` | Every `gobi space …` command without needing `--space-slug` |
68
68
 
69
69
  ---
@@ -233,19 +233,21 @@ Times are ISO 8601 UTC (e.g. `2026-03-20T00:00:00Z`).
233
233
 
234
234
  An *artifact* is a versioned, human-owned creation attached to posts. Kinds: `image | video | gif | markdown | meeting_summary`. Markdown kinds carry a body; media kinds carry an uploaded file. Revisions form a draft/published tree (at most one published per artifact). Markdown kinds store `metadata.vaultSlug` for `[[wikilink]]` resolution. See the `gobi-artifact` skill for full workflows.
235
235
 
236
+ Artifacts are **scoped to a space**: the subcommands live under `gobi personal artifact …` (your personal space) and `gobi space artifact …` (the active team space — `gobi space warp <slug>` or `gobi space --space-slug <slug> artifact …`). `<scope>` below is `personal` or `space`.
237
+
236
238
  | Command | Description |
237
239
  |---------|-------------|
238
- | `gobi artifact list [--kind <k>] [--limit N]` | List your artifacts (newest first) |
239
- | `gobi artifact get <artifactId>` | Get one artifact with its current revision |
240
- | `gobi artifact create --kind <k> [--file <path> \| --content <md>] [--title <t>] [--vault-slug <slug>] [--post-id <id>] [--auto-attachments] [--change-note <note>]` | Create an artifact. markdown/meeting_summary take a body via `--file`, `--content`, or stdin (`-`); image/gif/video upload `--file`. `--post-id` attaches it to a post (appends, doesn't clobber). `--auto-attachments` (markdown) uploads `[[wikilinks]]` to `--vault-slug`. |
241
- | `gobi artifact revise <artifactId> [--file <path> \| --content <md>] [--change-note <note>] [--from <revisionId>] [--auto-attachments]` | Add a draft revision. `--from` branches off a specific revision. `--auto-attachments` reuses the artifact's stored `metadata.vaultSlug`. |
242
- | `gobi artifact publish <artifactId> --revision <revisionId>` | Publish a revision (the artifact's single published revision) |
243
- | `gobi artifact revert <artifactId> --to <revisionId>` | Move the published pointer to an earlier revision |
244
- | `gobi artifact history <artifactId>` | List the full revision tree (owner only) |
245
- | `gobi artifact download <artifactId> [--revision <revisionId>] [--out <path>]` | Download a revision's content (markdown body to file/stdout; media bytes to file). Defaults to the current revision. |
246
- | `gobi artifact delete <artifactId>` | Delete an artifact and its revision tree |
247
-
248
- Attach an artifact to a post at creation time with `gobi artifact create --post-id <postId>` (it merges into the post's existing artifacts without clobbering them).
240
+ | `gobi <scope> artifact list [--kind <k>] [--limit N]` | List this scope's artifacts (newest first) |
241
+ | `gobi <scope> artifact get <artifactId>` | Get one artifact with its current revision |
242
+ | `gobi <scope> artifact create --kind <k> [--file <path> \| --content <md>] [--title <t>] [--vault-slug <slug>] [--post-id <id>] [--auto-attachments] [--change-note <note>]` | Create an artifact in this scope. markdown/meeting_summary take a body via `--file`, `--content`, or stdin (`-`); image/gif/video upload `--file`. `--post-id` attaches it to a post (appends, doesn't clobber). `--auto-attachments` (markdown) uploads `[[wikilinks]]` to `--vault-slug`. |
243
+ | `gobi <scope> artifact revise <artifactId> [--file <path> \| --content <md>] [--change-note <note>] [--from <revisionId>] [--auto-attachments]` | Add a draft revision. `--from` branches off a specific revision. `--auto-attachments` reuses the artifact's stored `metadata.vaultSlug`. |
244
+ | `gobi <scope> artifact publish <artifactId> --revision <revisionId>` | Publish a revision (the artifact's single published revision) |
245
+ | `gobi <scope> artifact revert <artifactId> --to <revisionId>` | Move the published pointer to an earlier revision |
246
+ | `gobi <scope> artifact history <artifactId>` | List the full revision tree (owner only) |
247
+ | `gobi <scope> artifact download <artifactId> [--revision <revisionId>] [--out <path>]` | Download a revision's content (markdown body to file/stdout; media bytes to file). Defaults to the current revision. |
248
+ | `gobi <scope> artifact delete <artifactId>` | Delete an artifact and its revision tree |
249
+
250
+ Attach an artifact to a post at creation time with `gobi <scope> artifact create --post-id <postId>` (it merges into the post's existing artifacts without clobbering them).
249
251
 
250
252
  ### Media generation
251
253
 
@@ -303,7 +305,7 @@ The CLI ships a `.claude-plugin/` manifest with skills that wrap the command gro
303
305
  | `gobi-core` | Auth, update, space list/warp |
304
306
  | `gobi-vault` | `gobi vault init/list/publish/unpublish/sync` |
305
307
  | `gobi-space` | `gobi space …`, `gobi global …`, and `gobi personal …` |
306
- | `gobi-artifact` | `gobi artifact …` |
308
+ | `gobi-artifact` | `gobi personal artifact …` and `gobi space artifact …` |
307
309
  | `gobi-media` | `gobi media …` |
308
310
  | `gobi-sense` | `gobi sense list-activities/list-transcriptions` |
309
311
  | `gobi-homepage` | Building custom HTML homepages with `window.gobi` |
@@ -135,11 +135,11 @@ function printArtifact(a) {
135
135
  console.log(` mediaUrl: ${rev.mediaUrl}`);
136
136
  }
137
137
  }
138
- export function registerArtifactCommand(program) {
139
- const artifact = program
140
- .command("artifact")
141
- .description("Versioned creations attached to posts. Kinds: image | video | gif | markdown | meeting_summary. " +
142
- "Always human-owned; revisions form a draft/published tree (at most one published per artifact).");
138
+ // Registers the full `artifact` subcommand tree under `parent` (a `gobi space`
139
+ // or `gobi personal` group). Moved here from a top-level `gobi artifact` group
140
+ // so artifacts are scoped to a space (team or personal), matching posts.
141
+ export function registerArtifactSubcommands(parent, scope, description) {
142
+ const artifact = parent.command("artifact").description(description);
143
143
  // ── Create ──
144
144
  artifact
145
145
  .command("create")
@@ -158,6 +158,10 @@ export function registerArtifactCommand(program) {
158
158
  throw new Error(`--kind must be one of: ${ALL_KINDS.join(", ")}`);
159
159
  }
160
160
  const body = { kind };
161
+ // Scope the new artifact to this group's space (team) or personal space.
162
+ const { spaceSlug } = scope.resolve();
163
+ if (spaceSlug)
164
+ body.spaceSlug = spaceSlug;
161
165
  if (opts.title != null)
162
166
  body.title = opts.title;
163
167
  if (opts.vaultSlug)
@@ -421,11 +425,15 @@ export function registerArtifactCommand(program) {
421
425
  // ── List ──
422
426
  artifact
423
427
  .command("list")
424
- .description("List your artifacts (newest first).")
428
+ .description("List this scope's artifacts (newest first).")
425
429
  .option("--kind <kind>", `Filter by kind: ${ALL_KINDS.join(" | ")}`)
426
430
  .option("--limit <n>", "Max items to return")
427
431
  .action(async (opts) => {
428
432
  const params = {};
433
+ // Scope the listing to this group's space (team) or personal space.
434
+ const { spaceSlug } = scope.resolve();
435
+ if (spaceSlug)
436
+ params.spaceSlug = spaceSlug;
429
437
  if (opts.kind) {
430
438
  if (!ALL_KINDS.includes(opts.kind)) {
431
439
  throw new Error(`--kind must be one of: ${ALL_KINDS.join(", ")}`);
@@ -198,7 +198,7 @@ export function registerGlobalCommand(program) {
198
198
  .option("--title <title>", "Title of the post")
199
199
  .option("--content <content>", "Post content (markdown supported, use \"-\" for stdin)")
200
200
  .option("--rich-text <richText>", "Rich-text JSON array (mutually exclusive with --content)")
201
- .option("--artifact <artifactId>", "Attach an existing artifact to the post (repeatable). Create artifacts with `gobi artifact create`.", (value, prev = []) => [...prev, value], [])
201
+ .option("--artifact <artifactId>", "Attach an existing artifact to the post (repeatable). Create artifacts with `gobi personal artifact create`.", (value, prev = []) => [...prev, value], [])
202
202
  .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], [])
203
203
  .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.")
204
204
  .action(async (opts) => {
@@ -264,7 +264,7 @@ export function registerGlobalCommand(program) {
264
264
  .option("--content <content>", "New content (markdown supported, use \"-\" for stdin)")
265
265
  .option("--rich-text <richText>", "Rich-text JSON array (mutually exclusive with --content)")
266
266
  .option("--attach <file>", "Replace the post's media attachments with the given files (existing attachments are removed). 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. Omit to leave attachments unchanged.", (value, prev = []) => [...prev, value], [])
267
- .option("--artifact <artifactId>", "Replace the post's artifact attachments with the given artifact(s) (existing artifact attachments are removed). Repeatable. Omit to leave them unchanged. Create artifacts with `gobi artifact create`.", (value, prev = []) => [...prev, value], [])
267
+ .option("--artifact <artifactId>", "Replace the post's artifact attachments with the given artifact(s) (existing artifact attachments are removed). Repeatable. Omit to leave them unchanged. Create artifacts with `gobi personal artifact create`.", (value, prev = []) => [...prev, value], [])
268
268
  .action(async (postId, opts) => {
269
269
  const wantsAttachChange = !!(opts.attach && opts.attach.length > 0);
270
270
  const wantsArtifactChange = !!(opts.artifact && opts.artifact.length > 0);
@@ -1,6 +1,7 @@
1
1
  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
+ import { registerArtifactSubcommands } from "./artifact.js";
4
5
  function readContent(value) {
5
6
  if (value === "-")
6
7
  return readStdin();
@@ -254,7 +255,7 @@ export function registerPersonalCommand(program) {
254
255
  .option("--title <title>", "Title of the post")
255
256
  .option("--content <content>", "Post content (markdown supported, use \"-\" for stdin)")
256
257
  .option("--rich-text <richText>", "Rich-text JSON array (mutually exclusive with --content)")
257
- .option("--artifact <artifactId>", "Attach an existing artifact to the post (repeatable). Create artifacts with `gobi artifact create`.", (value, prev = []) => [...prev, value], [])
258
+ .option("--artifact <artifactId>", "Attach an existing artifact to the post (repeatable). Create artifacts with `gobi personal artifact create`.", (value, prev = []) => [...prev, value], [])
258
259
  .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], [])
259
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 global-feed post, or a post in a space you're a member of). Reposting someone else's personal-space post returns 404.")
260
261
  .action(async (opts) => {
@@ -324,7 +325,7 @@ export function registerPersonalCommand(program) {
324
325
  .option("--content <content>", "New content (markdown supported, use \"-\" for stdin)")
325
326
  .option("--rich-text <richText>", "Rich-text JSON array (mutually exclusive with --content)")
326
327
  .option("--attach <file>", "Replace the post's media attachments with the given files (existing attachments are removed). 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. Omit to leave attachments unchanged.", (value, prev = []) => [...prev, value], [])
327
- .option("--artifact <artifactId>", "Replace the post's artifact attachments with the given artifact(s) (existing artifact attachments are removed). Repeatable. Omit to leave them unchanged. Create artifacts with `gobi artifact create`.", (value, prev = []) => [...prev, value], [])
328
+ .option("--artifact <artifactId>", "Replace the post's artifact attachments with the given artifact(s) (existing artifact attachments are removed). Repeatable. Omit to leave them unchanged. Create artifacts with `gobi personal artifact create`.", (value, prev = []) => [...prev, value], [])
328
329
  .action(async (postId, opts) => {
329
330
  const wantsAttachChange = !!(opts.attach && opts.attach.length > 0);
330
331
  const wantsArtifactChange = !!(opts.artifact && opts.artifact.length > 0);
@@ -500,4 +501,8 @@ export function registerPersonalCommand(program) {
500
501
  console.log(`Removed ${emoji} reaction from ${postId}.` +
501
502
  (chips ? `\n Now: ${chips}` : ""));
502
503
  });
504
+ // ── Artifacts (scoped to your personal space) ──
505
+ registerArtifactSubcommands(personal, { resolve: () => ({}) }, "Versioned creations attached to posts, scoped to your personal space (visible " +
506
+ "only to you). Kinds: image | video | gif | markdown | meeting_summary. Always " +
507
+ "human-owned; revisions form a draft/published tree (one published per artifact).");
503
508
  }
@@ -3,6 +3,7 @@ import { apiGet, apiPost, apiPatch, apiPut, apiDelete } from "../client.js";
3
3
  import { requireSpace, selectSpace, setSpaceRequirement, writeSpaceSetting, } from "./init.js";
4
4
  import { buildMentionMap, formatAttachmentLines, formatAttachmentSummary, formatPostLabel, formatReactionChips, formatReplyLine, isJsonMode, jsonOut, postBodyText, readStdin, resolveSpaceSlug, unwrapResp, } from "./utils.js";
5
5
  import { uploadPostAttachments, assertPostAttachmentMix, } from "../attachments.js";
6
+ import { registerArtifactSubcommands } from "./artifact.js";
6
7
  function readContent(value) {
7
8
  if (value === "-")
8
9
  return readStdin();
@@ -389,7 +390,7 @@ export function registerSpaceCommand(program) {
389
390
  .option("--title <title>", "Title of the post")
390
391
  .option("--content <content>", "Post content (markdown supported, use \"-\" for stdin)")
391
392
  .option("--rich-text <richText>", "Rich-text JSON array (mutually exclusive with --content)")
392
- .option("--artifact <artifactId>", "Attach an existing artifact to the post (repeatable). Create artifacts with `gobi artifact create`.", (value, prev = []) => [...prev, value], [])
393
+ .option("--artifact <artifactId>", "Attach an existing artifact to the post (repeatable). Create artifacts with `gobi space artifact create`.", (value, prev = []) => [...prev, value], [])
393
394
  .option("--space-slug <spaceSlug>", "Space slug (overrides .gobi/settings.yaml)")
394
395
  .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], [])
395
396
  .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.")
@@ -462,7 +463,7 @@ export function registerSpaceCommand(program) {
462
463
  .option("--rich-text <richText>", "Rich-text JSON array (mutually exclusive with --content)")
463
464
  .option("--space-slug <spaceSlug>", "Space slug (overrides .gobi/settings.yaml)")
464
465
  .option("--attach <file>", "Replace the post's media attachments with the given files (existing attachments are removed). 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. Omit to leave attachments unchanged.", (value, prev = []) => [...prev, value], [])
465
- .option("--artifact <artifactId>", "Replace the post's artifact attachments with the given artifact(s) (existing artifact attachments are removed). Repeatable. Omit to leave them unchanged. Create artifacts with `gobi artifact create`.", (value, prev = []) => [...prev, value], [])
466
+ .option("--artifact <artifactId>", "Replace the post's artifact attachments with the given artifact(s) (existing artifact attachments are removed). Repeatable. Omit to leave them unchanged. Create artifacts with `gobi space artifact create`.", (value, prev = []) => [...prev, value], [])
466
467
  .action(async (postId, opts) => {
467
468
  const wantsAttachChange = !!(opts.attach && opts.attach.length > 0);
468
469
  const wantsArtifactChange = !!(opts.artifact && opts.artifact.length > 0);
@@ -724,4 +725,8 @@ export function registerSpaceCommand(program) {
724
725
  }
725
726
  console.log(`Channel members (${items.length}):\n` + lines.join("\n"));
726
727
  });
728
+ // ── Artifacts (scoped to this space) ──
729
+ registerArtifactSubcommands(space, { resolve: () => ({ spaceSlug: resolveSpaceSlug(space) }) }, "Versioned creations attached to posts, scoped to this space (visible to its " +
730
+ "members). Kinds: image | video | gif | markdown | meeting_summary. Always " +
731
+ "human-owned; revisions form a draft/published tree (one published per artifact).");
727
732
  }
@@ -5,8 +5,17 @@ import { getSpaceSlug, getVaultSlug } from "./init.js";
5
5
  export function readStdin() {
6
6
  return readFileSync(0, "utf8");
7
7
  }
8
+ // The global `--json` flag lives on the root program. Walk up the ancestry so
9
+ // this works regardless of how deeply the calling command is nested (e.g. a
10
+ // leaf under `gobi space artifact …`, not just a direct child of the program).
8
11
  export function isJsonMode(cmd) {
9
- return !!cmd.parent?.opts().json;
12
+ let cur = cmd;
13
+ while (cur) {
14
+ if (cur.opts().json)
15
+ return true;
16
+ cur = cur.parent;
17
+ }
18
+ return false;
10
19
  }
11
20
  export function jsonOut(data) {
12
21
  console.log(JSON.stringify({ success: true, data }));
package/dist/main.js CHANGED
@@ -11,7 +11,6 @@ import { registerVaultCommand } from "./commands/vault.js";
11
11
  import { registerSenseCommand } from "./commands/sense.js";
12
12
  import { registerUpdateCommand } from "./commands/update.js";
13
13
  import { registerMediaCommand } from "./commands/media.js";
14
- import { registerArtifactCommand } from "./commands/artifact.js";
15
14
  const require = createRequire(import.meta.url);
16
15
  const { version } = require("../package.json");
17
16
  function hasParentOption(cmd, key) {
@@ -64,7 +63,8 @@ export async function cli() {
64
63
  registerSenseCommand(program);
65
64
  registerUpdateCommand(program);
66
65
  registerMediaCommand(program);
67
- registerArtifactCommand(program);
66
+ // Artifact subcommands live under `gobi space` and `gobi personal` (registered
67
+ // by those groups), not as a top-level `gobi artifact` group.
68
68
  // Propagate helpWidth to all subcommands
69
69
  const helpWidth = process.stdout.columns || 200;
70
70
  for (const cmd of program.commands) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gobi-ai/cli",
3
- "version": "2.0.35",
3
+ "version": "2.0.36",
4
4
  "description": "CLI client for the Gobi collaborative knowledge platform",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -4,20 +4,38 @@ description: >-
4
4
  Gobi artifact commands for versioned creations attached to posts: create,
5
5
  revise, publish, revert, history, download, delete, get, list. An artifact
6
6
  is a human-owned creation (image, video, gif, markdown, or meeting_summary)
7
- whose revisions form a draft/published tree. Use when the user wants to
8
- author, version, publish, or attach an artifact to a post.
7
+ whose revisions form a draft/published tree. Artifacts are scoped to a space:
8
+ `gobi personal artifact …` (your personal space) or `gobi space artifact …`
9
+ (the active team space). Use when the user wants to author, version, publish,
10
+ or attach an artifact to a post.
9
11
  allowed-tools: Bash(gobi:*)
10
12
  metadata:
11
13
  author: gobi-ai
12
- version: "2.0.35"
14
+ version: "2.0.36"
13
15
  ---
14
16
 
15
17
  # gobi-artifact
16
18
 
17
- Gobi artifact commands for versioned, post-attachable creations (v2.0.35).
19
+ Gobi artifact commands for versioned, post-attachable creations (v2.0.36).
18
20
 
19
21
  Requires gobi-cli installed and authenticated. See gobi-core skill for setup.
20
22
 
23
+ ## Scope: personal vs space
24
+
25
+ Artifacts live in a **space** — either your **personal space** or a **team space** —
26
+ just like posts. The commands are the same under each scope; pick the group that
27
+ matches where the artifact should live:
28
+
29
+ - `gobi personal artifact …` — your personal space (visible only to you).
30
+ - `gobi space artifact …` — the active team space (visible to its members). The
31
+ space comes from `.gobi/settings.yaml` (set with `gobi space warp <slug>`) or
32
+ `gobi space --space-slug <slug> artifact …`.
33
+
34
+ The examples below use `personal`; swap in `space` to operate on a team space.
35
+ The by-id subcommands (`revise`, `publish`, `revert`, `history`, `download`,
36
+ `delete`, `get`) work the same under either group — they're authorized off the
37
+ artifact itself — but keep using the same scope you created the artifact in.
38
+
21
39
  ## What is an artifact?
22
40
 
23
41
  An artifact is a versioned creation that can be attached to one or more posts. Each artifact has:
@@ -25,6 +43,7 @@ An artifact is a versioned creation that can be attached to one or more posts. E
25
43
  - **kind** — one of `image | video | gif | markdown | meeting_summary`. `markdown` and `meeting_summary` carry a markdown **body**; `image`, `gif`, and `video` carry an uploaded **media file**.
26
44
  - **title** — optional display title.
27
45
  - **owner** — always a human (the calling user). Even when an agent runs the CLI, the artifact is owned by the agent's owner.
46
+ - **scope** — the personal space or team space it lives in (set by the command group, see above).
28
47
  - **revisions** — a draft/published tree. New revisions start as `draft`; publishing one makes it the artifact's single `published` revision (at most one published per artifact). `revise --from <revisionId>` branches off an earlier revision instead of the latest, so the history can fork.
29
48
  - **metadata** — per-kind extras. For markdown kinds, `metadata.vaultSlug` is the anchor vault used to resolve `[[wikilinks]]` in the body.
30
49
 
@@ -32,12 +51,12 @@ Markdown bodies can reference vault notes with `[[wikilinks]]`. Resolution again
32
51
 
33
52
  ## Important: JSON Mode
34
53
 
35
- For programmatic/agent usage, always pass `--json` as a **global** option (before the subcommand):
54
+ For programmatic/agent usage, always pass `--json` as a **global** option (before everything else):
36
55
 
37
56
  ```bash
38
- gobi --json artifact list --limit 20
39
- gobi --json artifact create --kind markdown --content "# Notes" --title "My note"
40
- gobi --json artifact get <artifactId>
57
+ gobi --json personal artifact list --limit 20
58
+ gobi --json personal artifact create --kind markdown --content "# Notes" --title "My note"
59
+ gobi --json space artifact get <artifactId>
41
60
  ```
42
61
 
43
62
  JSON mode wraps the response as `{"success": true, "data": <artifact|revision|...>}` (or `{"success": false, "error": "..."}`).
@@ -47,7 +66,7 @@ JSON mode wraps the response as `{"success": true, "data": <artifact|revision|..
47
66
  Create a markdown artifact, attaching it to a post in the same call:
48
67
 
49
68
  ```bash
50
- gobi --json artifact create --kind markdown --file notes.md --title "Design notes" \
69
+ gobi --json personal artifact create --kind markdown --file notes.md --title "Design notes" \
51
70
  --vault-slug my-vault --post-id 12345
52
71
  ```
53
72
 
@@ -56,14 +75,14 @@ The body can come from `--file <path>`, `--content <md>` inline, or stdin (`--co
56
75
  Add `--auto-attachments` (markdown kinds only) to upload any `[[wiki-linked files]]` in the body to the `--vault-slug` vault on webdrive before creating:
57
76
 
58
77
  ```bash
59
- gobi --json artifact create --kind markdown --file notes.md --vault-slug my-vault --auto-attachments
78
+ gobi --json personal artifact create --kind markdown --file notes.md --vault-slug my-vault --auto-attachments
60
79
  ```
61
80
 
62
81
  Revise it (adds a new draft revision), then publish that revision:
63
82
 
64
83
  ```bash
65
- gobi --json artifact revise <artifactId> --file notes-v2.md --change-note "Tighten intro"
66
- gobi --json artifact publish <artifactId> --revision <revisionId>
84
+ gobi --json personal artifact revise <artifactId> --file notes-v2.md --change-note "Tighten intro"
85
+ gobi --json personal artifact publish <artifactId> --revision <revisionId>
67
86
  ```
68
87
 
69
88
  `revise --auto-attachments` reuses the artifact's stored `metadata.vaultSlug` (it GETs the artifact first), so you don't repeat `--vault-slug`.
@@ -71,8 +90,8 @@ gobi --json artifact publish <artifactId> --revision <revisionId>
71
90
  Inspect and roll back:
72
91
 
73
92
  ```bash
74
- gobi --json artifact history <artifactId> # full revision tree (owner only)
75
- gobi --json artifact revert <artifactId> --to <revisionId>
93
+ gobi --json personal artifact history <artifactId> # full revision tree (owner only)
94
+ gobi --json personal artifact revert <artifactId> --to <revisionId>
76
95
  ```
77
96
 
78
97
  ## Typical Workflow (media artifact)
@@ -80,13 +99,13 @@ gobi --json artifact revert <artifactId> --to <revisionId>
80
99
  Image / gif / video kinds upload a local file (init → PUT → create) instead of a body:
81
100
 
82
101
  ```bash
83
- gobi --json artifact create --kind image --file diagram.png --title "Architecture" --post-id 12345
102
+ gobi --json personal artifact create --kind image --file diagram.png --title "Architecture" --post-id 12345
84
103
  ```
85
104
 
86
105
  Media-file size ceilings mirror post media: 5MB photos / 15MB GIFs / 512MB video, derived from the file's content type. Revise a media artifact by uploading a replacement file:
87
106
 
88
107
  ```bash
89
- gobi --json artifact revise <artifactId> --file diagram-v2.png --change-note "Add cache layer"
108
+ gobi --json personal artifact revise <artifactId> --file diagram-v2.png --change-note "Add cache layer"
90
109
  ```
91
110
 
92
111
  ## Download
@@ -97,15 +116,15 @@ gobi --json artifact revise <artifactId> --file diagram-v2.png --change-note "Ad
97
116
  - media → fetches the `mediaUrl` bytes to `--out <path>` (defaults to `<artifactId>.<ext>`).
98
117
 
99
118
  ```bash
100
- gobi artifact download <artifactId> --out notes.md
101
- gobi artifact download <artifactId> --revision <revisionId> --out image.png
119
+ gobi personal artifact download <artifactId> --out notes.md
120
+ gobi personal artifact download <artifactId> --revision <revisionId> --out image.png
102
121
  ```
103
122
 
104
123
  ## Attaching to a post
105
124
 
106
- Three ways to attach an artifact, depending on what already exists:
125
+ Three ways to attach an artifact, depending on what already exists (`<scope>` is `personal` or `space`):
107
126
 
108
- 1. **At artifact-create time** — `gobi artifact create … --post-id <id>` attaches the new artifact to an existing post **without clobbering** its current artifacts: the CLI reads the post's current artifact attachments, appends the new id, and writes the merged set via `PATCH /posts/:id` (`artifactIds`).
127
+ 1. **At artifact-create time** — `gobi <scope> artifact create … --post-id <id>` attaches the new artifact to an existing post **without clobbering** its current artifacts: the CLI reads the post's current artifact attachments, appends the new id, and writes the merged set via `PATCH /posts/:id` (`artifactIds`).
109
128
  2. **At post-create time** — `gobi <lane> create-post … --artifact <artifactId>` attaches one or more **already-created** artifacts to the new post (`--artifact` is repeatable).
110
129
  3. **Editing an existing post** — `gobi <lane> edit-post <id> --artifact <artifactId>` sets the post's artifact attachments. Unlike `create --post-id` (which merges), the post API's `artifactIds` is a **full replacement** — pass every artifact you want on the post, since omitted ones are removed (omitting `--artifact` entirely leaves them unchanged).
111
130
 
@@ -113,15 +132,17 @@ The same artifact can be attached to **multiple posts** (it's a reusable, versio
113
132
 
114
133
  ## Available Commands
115
134
 
116
- - `gobi artifact create` — Create an artifact (markdown body or uploaded media). `--post-id` attaches it to a post; `--auto-attachments` (markdown) uploads `[[wikilinks]]`.
117
- - `gobi artifact revise` — Add a draft revision (new body or media file). `--from` branches off a specific revision.
118
- - `gobi artifact publish` — Publish a revision (becomes the single published revision).
119
- - `gobi artifact revert` — Move the published pointer to an earlier revision.
120
- - `gobi artifact history` — List the full revision tree (owner only).
121
- - `gobi artifact download` — Download a revision's content (markdown body or media bytes).
122
- - `gobi artifact delete` — Delete an artifact and its revision tree.
123
- - `gobi artifact get` — Get one artifact with its current revision.
124
- - `gobi artifact list` — List your artifacts (`--kind`, `--limit`).
135
+ Under `gobi personal artifact …` (personal space) or `gobi space artifact …` (active team space):
136
+
137
+ - `create` — Create an artifact (markdown body or uploaded media). `--post-id` attaches it to a post; `--auto-attachments` (markdown) uploads `[[wikilinks]]`.
138
+ - `revise` — Add a draft revision (new body or media file). `--from` branches off a specific revision.
139
+ - `publish` — Publish a revision (becomes the single published revision).
140
+ - `revert` — Move the published pointer to an earlier revision.
141
+ - `history` — List the full revision tree (owner only).
142
+ - `download` — Download a revision's content (markdown body or media bytes).
143
+ - `delete` — Delete an artifact and its revision tree.
144
+ - `get` — Get one artifact with its current revision.
145
+ - `list` — List this scope's artifacts (`--kind`, `--limit`).
125
146
 
126
147
  ## Confirm before mutating
127
148
 
@@ -134,4 +155,5 @@ Read-only commands (`get`, `list`, `history`) and `download` run without confirm
134
155
 
135
156
  ## Reference Documentation
136
157
 
137
- - [gobi artifact](references/artifact.md)
158
+ - [gobi personal artifact](references/personal.md)
159
+ - [gobi space artifact](references/space.md)
@@ -0,0 +1,42 @@
1
+ # gobi personal
2
+
3
+ ```
4
+ Usage: gobi personal [options] [command]
5
+
6
+ Personal-space commands (private posts and replies visible only to you). Mirrors the `global` subcommand shape — posts/replies live in the same data model, scoped via personalSpaceUserId so they
7
+ never surface on the public feed.
8
+
9
+ Options:
10
+ -h, --help display help for command
11
+
12
+ Commands:
13
+ artifact Versioned creations attached to posts, scoped to your personal space (visible only to you). Kinds: image | video | gif | markdown | meeting_summary. Always
14
+ human-owned; revisions form a draft/published tree (one published per artifact).
15
+ help [command] display help for command
16
+ ```
17
+
18
+ ## artifact
19
+
20
+ ```
21
+ Usage: gobi personal artifact [options] [command]
22
+
23
+ Versioned creations attached to posts, scoped to your personal space (visible only to you). Kinds: image | video | gif | markdown | meeting_summary. Always human-owned; revisions form a
24
+ draft/published tree (one published per artifact).
25
+
26
+ Options:
27
+ -h, --help display help for command
28
+
29
+ Commands:
30
+ create [options] Create an artifact. markdown/meeting_summary kinds take a body via --file, --content, or stdin ("-"). image/gif/video kinds upload --file. Pass --post-id to attach
31
+ the new artifact to a post.
32
+ revise [options] <artifactId> Add a draft revision to an artifact. New body via --file, --content, or stdin (markdown), or --file (media). Use --from to branch off a specific revision.
33
+ publish [options] <artifactId> Publish a revision (becomes the artifact's single published revision).
34
+ revert [options] <artifactId> Revert the artifact's published pointer to an earlier revision.
35
+ history <artifactId> List the artifact's full revision tree (owner only).
36
+ download [options] <artifactId> Download an artifact's content. markdown → write the body; media → fetch the bytes. Defaults to the published/latest revision; pass --revision to pick one. Writes
37
+ to --out or stdout (markdown).
38
+ delete <artifactId> Delete an artifact (and its revision tree).
39
+ get <artifactId> Get one artifact with its current revision.
40
+ list [options] List this scope's artifacts (newest first).
41
+ help [command] display help for command
42
+ ```
@@ -0,0 +1,42 @@
1
+ # gobi space
2
+
3
+ ```
4
+ Usage: gobi space [options] [command]
5
+
6
+ Space commands (posts, replies). Space and member admin is web-UI only.
7
+
8
+ Options:
9
+ --space-slug <spaceSlug> Space slug (overrides .gobi/settings.yaml)
10
+ -h, --help display help for command
11
+
12
+ Commands:
13
+ artifact Versioned creations attached to posts, scoped to this space (visible to its members). Kinds: image | video | gif | markdown | meeting_summary. Always
14
+ human-owned; revisions form a draft/published tree (one published per artifact).
15
+ help [command] display help for command
16
+ ```
17
+
18
+ ## artifact
19
+
20
+ ```
21
+ Usage: gobi space artifact [options] [command]
22
+
23
+ Versioned creations attached to posts, scoped to this space (visible to its members). Kinds: image | video | gif | markdown | meeting_summary. Always human-owned; revisions form a draft/published
24
+ tree (one published per artifact).
25
+
26
+ Options:
27
+ -h, --help display help for command
28
+
29
+ Commands:
30
+ create [options] Create an artifact. markdown/meeting_summary kinds take a body via --file, --content, or stdin ("-"). image/gif/video kinds upload --file. Pass --post-id to attach
31
+ the new artifact to a post.
32
+ revise [options] <artifactId> Add a draft revision to an artifact. New body via --file, --content, or stdin (markdown), or --file (media). Use --from to branch off a specific revision.
33
+ publish [options] <artifactId> Publish a revision (becomes the artifact's single published revision).
34
+ revert [options] <artifactId> Revert the artifact's published pointer to an earlier revision.
35
+ history <artifactId> List the artifact's full revision tree (owner only).
36
+ download [options] <artifactId> Download an artifact's content. markdown → write the body; media → fetch the bytes. Defaults to the published/latest revision; pass --revision to pick one. Writes
37
+ to --out or stdout (markdown).
38
+ delete <artifactId> Delete an artifact (and its revision tree).
39
+ get <artifactId> Get one artifact with its current revision.
40
+ list [options] List this scope's artifacts (newest first).
41
+ help [command] display help for command
42
+ ```
@@ -8,12 +8,12 @@ description: >-
8
8
  allowed-tools: Bash(gobi:*)
9
9
  metadata:
10
10
  author: gobi-ai
11
- version: "2.0.35"
11
+ version: "2.0.36"
12
12
  ---
13
13
 
14
14
  # gobi-core
15
15
 
16
- Core CLI commands for the Gobi collaborative knowledge platform (v2.0.35).
16
+ Core CLI commands for the Gobi collaborative knowledge platform (v2.0.36).
17
17
 
18
18
  ## Prerequisites
19
19
 
@@ -50,7 +50,7 @@ There is **no `gobi init`** command — each setup step is its own command, and
50
50
  | Step | Command | Unlocks |
51
51
  |------|---------|---------|
52
52
  | 1. Log in | `gobi auth login` | All authenticated commands |
53
- | 2. Configure a vault for this directory | `gobi vault init` | Every `gobi vault …` command; also lets `artifact create --auto-attachments` resolve that vault automatically |
53
+ | 2. Configure a vault for this directory | `gobi vault init` | Every `gobi vault …` command; also lets `<scope> artifact create --auto-attachments` resolve that vault automatically |
54
54
  | 3. Pick an active space for this directory | `gobi space warp` | Every `gobi space …` post/reply/feed command without needing `--space-slug` |
55
55
 
56
56
  After step 2 + step 3, `.gobi/settings.yaml` looks like:
@@ -7,7 +7,7 @@ description: >-
7
7
  allowed-tools: Bash(gobi:*)
8
8
  metadata:
9
9
  author: gobi-ai
10
- version: "2.0.35"
10
+ version: "2.0.36"
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.35"
13
+ version: "2.0.36"
14
14
  ---
15
15
 
16
16
  # gobi-media
17
17
 
18
- Gobi media generation commands (v2.0.35).
18
+ Gobi media generation commands (v2.0.36).
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.35"
10
+ version: "2.0.36"
11
11
  ---
12
12
 
13
13
  # gobi-sense
14
14
 
15
- Gobi sense commands for activity and transcription data (v2.0.35).
15
+ Gobi sense commands for activity and transcription data (v2.0.36).
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.35"
14
+ version: "2.0.36"
15
15
  ---
16
16
 
17
17
  # gobi-space
18
18
 
19
- Gobi space, global, and personal-space posts (v2.0.35).
19
+ Gobi space, global, and personal-space posts (v2.0.36).
20
20
 
21
21
  Requires gobi-cli installed and authenticated. See the **gobi-core** skill for setup.
22
22
 
@@ -47,9 +47,9 @@ The same applies to replies: a reply has only `--content` (no title), so do not
47
47
 
48
48
  ## Attaching artifacts (`--artifact`)
49
49
 
50
- Posts have no vault attribution. Both `create-post` and `edit-post` across all three scopes (`gobi space`, `gobi global`, `gobi personal`) accept `--artifact <artifactId>` (repeatable) to attach existing artifacts. On `create-post` it sets the new post's artifacts; on `edit-post` it **replaces** the post's artifact set wholesale (pass every artifact you want; omit `--artifact` to leave them unchanged). The same artifact can be attached to multiple posts — it's a reusable, versioned creation, and each post renders its currently-published revision. To author a vault-anchored document, create a markdown artifact (`gobi artifact create --kind markdown --vault-slug <slug>`) and attach it via `--artifact`. See the **gobi-artifact** skill.
50
+ Posts have no vault attribution. Both `create-post` and `edit-post` across all three scopes (`gobi space`, `gobi global`, `gobi personal`) accept `--artifact <artifactId>` (repeatable) to attach existing artifacts. On `create-post` it sets the new post's artifacts; on `edit-post` it **replaces** the post's artifact set wholesale (pass every artifact you want; omit `--artifact` to leave them unchanged). The same artifact can be attached to multiple posts — it's a reusable, versioned creation, and each post renders its currently-published revision. To author a vault-anchored document, create a markdown artifact in the matching scope (`gobi space artifact create --kind markdown --vault-slug <slug>`, or `gobi personal artifact create …`) and attach it via `--artifact`. See the **gobi-artifact** skill.
51
51
 
52
- > **Wiki-link uploads moved to artifacts.** The `--auto-attachments` flag that used to upload `[[wiki-linked files]]` from a post body now lives on `gobi artifact create` / `gobi artifact revise` (markdown kinds). To publish a markdown creation with resolvable wikilinks, create a markdown artifact with `--vault-slug` + `--auto-attachments` and attach it to the post (`--post-id`). See the **gobi-artifact** skill. Before relying on wikilink resolution, confirm the anchor vault is published: `gobi --json vault status --vault-slug <slug>` should report `isPublished: true`.
52
+ > **Wiki-link uploads moved to artifacts.** The `--auto-attachments` flag that used to upload `[[wiki-linked files]]` from a post body now lives on `gobi <scope> artifact create` / `gobi <scope> artifact revise` (markdown kinds; `<scope>` is `space` or `personal`). To publish a markdown creation with resolvable wikilinks, create a markdown artifact with `--vault-slug` + `--auto-attachments` and attach it to the post (`--post-id`). See the **gobi-artifact** skill. Before relying on wikilink resolution, confirm the anchor vault is published: `gobi --json vault status --vault-slug <slug>` should report `isPublished: true`.
53
53
 
54
54
  ## Post media + file attachments (`--attach`)
55
55
 
@@ -57,7 +57,7 @@ Posts have no vault attribution. Both `create-post` and `edit-post` across all t
57
57
 
58
58
  Mix rule (enforced client-side before upload): up to **4 photos + 4 document files** together, OR **1 GIF**, OR **1 video** — GIF and video are exclusive with everything. Size ceilings: 10MB photos, 15MB GIFs, 512MB video, 250MB document files.
59
59
 
60
- Use `--attach` for media/files you want shown in the post itself; use a markdown **artifact** (`gobi artifact create`) for `[[wikilinks]]`-bearing creations attached to the post.
60
+ Use `--attach` for media/files you want shown in the post itself; use a markdown **artifact** (`gobi <scope> artifact create`, `<scope>` = `space`/`personal`) for `[[wikilinks]]`-bearing creations attached to the post.
61
61
 
62
62
  **Reading attachments back:** feed and list lines show a compact marker like `📎 2 photos, 1 file`; `get-post` prints an `Attachments (N):` block with one line per attachment — kind, original fileName, dimensions/MIME, and the fetchable CDN URL (artifact attachments show kind/title/artifactId instead). In `--json` mode the full `attachments` array is on every post/reply object.
63
63
 
@@ -76,7 +76,7 @@ Options:
76
76
  --title <title> Title of the post
77
77
  --content <content> Post content (markdown supported, use "-" for stdin)
78
78
  --rich-text <richText> Rich-text JSON array (mutually exclusive with --content)
79
- --artifact <artifactId> Attach an existing artifact to the post (repeatable). Create artifacts with `gobi artifact create`. (default: [])
79
+ --artifact <artifactId> Attach an existing artifact to the post (repeatable). Create artifacts with `gobi personal artifact create`. (default: [])
80
80
  --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 /
81
81
  15MB GIFs / 512MB video / 250MB files. (default: [])
82
82
  --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
@@ -98,7 +98,7 @@ Options:
98
98
  --attach <file> Replace the post's media attachments with the given files (existing attachments are removed). Repeatable. Mix rule: up to 4 photos + up to 4 document files (pdf/md/txt/csv)
99
99
  OR 1 GIF OR 1 video. Size ceilings: 10MB photos / 15MB GIFs / 512MB video / 250MB files. Omit to leave attachments unchanged. (default: [])
100
100
  --artifact <artifactId> Replace the post's artifact attachments with the given artifact(s) (existing artifact attachments are removed). Repeatable. Omit to leave them unchanged. Create artifacts
101
- with `gobi artifact create`. (default: [])
101
+ with `gobi personal artifact create`. (default: [])
102
102
  -h, --help display help for command
103
103
  ```
104
104
 
@@ -23,6 +23,8 @@ Commands:
23
23
  delete-reply <replyId> Delete a reply you authored in your personal space.
24
24
  react <postId> <emoji> Add an emoji reaction to a personal-space post or reply (idempotent). <postId> is the numeric id of a post OR a reply.
25
25
  unreact <postId> <emoji> Remove your emoji reaction from a personal-space post or reply. <postId> is the numeric id of a post OR a reply.
26
+ artifact Versioned creations attached to posts, scoped to your personal space (visible only to you). Kinds: image | video | gif | markdown | meeting_summary. Always
27
+ human-owned; revisions form a draft/published tree (one published per artifact).
26
28
  help [command] display help for command
27
29
  ```
28
30
 
@@ -91,7 +93,7 @@ Options:
91
93
  --title <title> Title of the post
92
94
  --content <content> Post content (markdown supported, use "-" for stdin)
93
95
  --rich-text <richText> Rich-text JSON array (mutually exclusive with --content)
94
- --artifact <artifactId> Attach an existing artifact to the post (repeatable). Create artifacts with `gobi artifact create`. (default: [])
96
+ --artifact <artifactId> Attach an existing artifact to the post (repeatable). Create artifacts with `gobi personal artifact create`. (default: [])
95
97
  --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 /
96
98
  15MB GIFs / 512MB video / 250MB files. (default: [])
97
99
  --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
@@ -113,7 +115,7 @@ Options:
113
115
  --attach <file> Replace the post's media attachments with the given files (existing attachments are removed). Repeatable. Mix rule: up to 4 photos + up to 4 document files (pdf/md/txt/csv)
114
116
  OR 1 GIF OR 1 video. Size ceilings: 10MB photos / 15MB GIFs / 512MB video / 250MB files. Omit to leave attachments unchanged. (default: [])
115
117
  --artifact <artifactId> Replace the post's artifact attachments with the given artifact(s) (existing artifact attachments are removed). Repeatable. Omit to leave them unchanged. Create artifacts
116
- with `gobi artifact create`. (default: [])
118
+ with `gobi personal artifact create`. (default: [])
117
119
  -h, --help display help for command
118
120
  ```
119
121
 
@@ -188,3 +190,29 @@ Remove your emoji reaction from a personal-space post or reply. <postId> is the
188
190
  Options:
189
191
  -h, --help display help for command
190
192
  ```
193
+
194
+ ## artifact
195
+
196
+ ```
197
+ Usage: gobi personal artifact [options] [command]
198
+
199
+ Versioned creations attached to posts, scoped to your personal space (visible only to you). Kinds: image | video | gif | markdown | meeting_summary. Always human-owned; revisions form a
200
+ draft/published tree (one published per artifact).
201
+
202
+ Options:
203
+ -h, --help display help for command
204
+
205
+ Commands:
206
+ create [options] Create an artifact. markdown/meeting_summary kinds take a body via --file, --content, or stdin ("-"). image/gif/video kinds upload --file. Pass --post-id to attach
207
+ the new artifact to a post.
208
+ revise [options] <artifactId> Add a draft revision to an artifact. New body via --file, --content, or stdin (markdown), or --file (media). Use --from to branch off a specific revision.
209
+ publish [options] <artifactId> Publish a revision (becomes the artifact's single published revision).
210
+ revert [options] <artifactId> Revert the artifact's published pointer to an earlier revision.
211
+ history <artifactId> List the artifact's full revision tree (owner only).
212
+ download [options] <artifactId> Download an artifact's content. markdown → write the body; media → fetch the bytes. Defaults to the published/latest revision; pass --revision to pick one. Writes
213
+ to --out or stdout (markdown).
214
+ delete <artifactId> Delete an artifact (and its revision tree).
215
+ get <artifactId> Get one artifact with its current revision.
216
+ list [options] List this scope's artifacts (newest first).
217
+ help [command] display help for command
218
+ ```
@@ -144,7 +144,7 @@ Options:
144
144
  --title <title> Title of the post
145
145
  --content <content> Post content (markdown supported, use "-" for stdin)
146
146
  --rich-text <richText> Rich-text JSON array (mutually exclusive with --content)
147
- --artifact <artifactId> Attach an existing artifact to the post (repeatable). Create artifacts with `gobi artifact create`. (default: [])
147
+ --artifact <artifactId> Attach an existing artifact to the post (repeatable). Create artifacts with `gobi space artifact create`. (default: [])
148
148
  --space-slug <spaceSlug> Space slug (overrides .gobi/settings.yaml)
149
149
  --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 /
150
150
  15MB GIFs / 512MB video / 250MB files. (default: [])
@@ -170,7 +170,7 @@ Options:
170
170
  --attach <file> Replace the post's media attachments with the given files (existing attachments are removed). Repeatable. Mix rule: up to 4 photos + up to 4 document files
171
171
  (pdf/md/txt/csv) OR 1 GIF OR 1 video. Size ceilings: 10MB photos / 15MB GIFs / 512MB video / 250MB files. Omit to leave attachments unchanged. (default: [])
172
172
  --artifact <artifactId> Replace the post's artifact attachments with the given artifact(s) (existing artifact attachments are removed). Repeatable. Omit to leave them unchanged. Create artifacts
173
- with `gobi artifact create`. (default: [])
173
+ with `gobi space artifact create`. (default: [])
174
174
  -h, --help display help for command
175
175
  ```
176
176
 
@@ -8,12 +8,12 @@ description: >-
8
8
  allowed-tools: Bash(gobi:*)
9
9
  metadata:
10
10
  author: gobi-ai
11
- version: "2.0.35"
11
+ version: "2.0.36"
12
12
  ---
13
13
 
14
14
  # gobi-vault
15
15
 
16
- Gobi vault commands for publishing your vault profile and syncing files (v2.0.35).
16
+ Gobi vault commands for publishing your vault profile and syncing files (v2.0.36).
17
17
 
18
18
  Requires gobi-cli installed and authenticated. See gobi-core skill for setup.
19
19
 
@@ -1,142 +0,0 @@
1
- # gobi artifact
2
-
3
- ```
4
- Usage: gobi artifact [options] [command]
5
-
6
- Versioned creations attached to posts. Kinds: image | video | gif | markdown | meeting_summary. Always human-owned; revisions form a draft/published tree (at most one published per artifact).
7
-
8
- Options:
9
- -h, --help display help for command
10
-
11
- Commands:
12
- create [options] Create an artifact. markdown/meeting_summary kinds take a body via --file, --content, or stdin ("-"). image/gif/video kinds upload --file. Pass --post-id to attach
13
- the new artifact to a post.
14
- revise [options] <artifactId> Add a draft revision to an artifact. New body via --file, --content, or stdin (markdown), or --file (media). Use --from to branch off a specific revision.
15
- publish [options] <artifactId> Publish a revision (becomes the artifact's single published revision).
16
- revert [options] <artifactId> Revert the artifact's published pointer to an earlier revision.
17
- history <artifactId> List the artifact's full revision tree (owner only).
18
- download [options] <artifactId> Download an artifact's content. markdown → write the body; media → fetch the bytes. Defaults to the published/latest revision; pass --revision to pick one. Writes
19
- to --out or stdout (markdown).
20
- delete <artifactId> Delete an artifact (and its revision tree).
21
- get <artifactId> Get one artifact with its current revision.
22
- list [options] List your artifacts (newest first).
23
- help [command] display help for command
24
- ```
25
-
26
- ## create
27
-
28
- ```
29
- Usage: gobi artifact create [options]
30
-
31
- Create an artifact. markdown/meeting_summary kinds take a body via --file, --content, or stdin ("-"). image/gif/video kinds upload --file. Pass --post-id to attach the new artifact to a post.
32
-
33
- Options:
34
- --kind <kind> Artifact kind: image | video | gif | markdown | meeting_summary
35
- --file <path> Local file: markdown body (markdown kinds) or media file (media kinds)
36
- --content <md> Markdown body inline (markdown kinds; pass "-" for stdin)
37
- --title <t> Display title
38
- --vault-slug <slug> Anchor vault for [[wikilink]] resolution (markdown kinds). Stored in metadata.vaultSlug.
39
- --post-id <id> Attach the created artifact to this post afterward
40
- --auto-attachments Upload wiki-linked [[files]] to webdrive before creating (markdown kinds; uses --vault-slug)
41
- --change-note <note> Note describing this revision
42
- -h, --help display help for command
43
- ```
44
-
45
- ## revise
46
-
47
- ```
48
- Usage: gobi artifact revise [options] <artifactId>
49
-
50
- Add a draft revision to an artifact. New body via --file, --content, or stdin (markdown), or --file (media). Use --from to branch off a specific revision.
51
-
52
- Options:
53
- --file <path> Local file: markdown body (markdown kinds) or media file (media kinds)
54
- --content <md> Markdown body inline (markdown kinds; pass "-" for stdin)
55
- --change-note <note> Note describing this revision
56
- --from <revisionId> Branch the new draft off this revision (defaults to the latest)
57
- --auto-attachments Upload wiki-linked [[files]] to webdrive before revising (markdown kinds; uses the artifact's stored metadata.vaultSlug)
58
- -h, --help display help for command
59
- ```
60
-
61
- ## publish
62
-
63
- ```
64
- Usage: gobi artifact publish [options] <artifactId>
65
-
66
- Publish a revision (becomes the artifact's single published revision).
67
-
68
- Options:
69
- --revision <revisionId> Revision to publish
70
- -h, --help display help for command
71
- ```
72
-
73
- ## revert
74
-
75
- ```
76
- Usage: gobi artifact revert [options] <artifactId>
77
-
78
- Revert the artifact's published pointer to an earlier revision.
79
-
80
- Options:
81
- --to <revisionId> Revision to revert to
82
- -h, --help display help for command
83
- ```
84
-
85
- ## history
86
-
87
- ```
88
- Usage: gobi artifact history [options] <artifactId>
89
-
90
- List the artifact's full revision tree (owner only).
91
-
92
- Options:
93
- -h, --help display help for command
94
- ```
95
-
96
- ## download
97
-
98
- ```
99
- Usage: gobi artifact download [options] <artifactId>
100
-
101
- Download an artifact's content. markdown → write the body; media → fetch the bytes. Defaults to the published/latest revision; pass --revision to pick one. Writes to --out or stdout (markdown).
102
-
103
- Options:
104
- --revision <revisionId> Specific revision (defaults to the artifact's current revision)
105
- --out <path> Write to this file (markdown defaults to stdout)
106
- -h, --help display help for command
107
- ```
108
-
109
- ## delete
110
-
111
- ```
112
- Usage: gobi artifact delete [options] <artifactId>
113
-
114
- Delete an artifact (and its revision tree).
115
-
116
- Options:
117
- -h, --help display help for command
118
- ```
119
-
120
- ## get
121
-
122
- ```
123
- Usage: gobi artifact get [options] <artifactId>
124
-
125
- Get one artifact with its current revision.
126
-
127
- Options:
128
- -h, --help display help for command
129
- ```
130
-
131
- ## list
132
-
133
- ```
134
- Usage: gobi artifact list [options]
135
-
136
- List your artifacts (newest first).
137
-
138
- Options:
139
- --kind <kind> Filter by kind: image | video | gif | markdown | meeting_summary
140
- --limit <n> Max items to return
141
- -h, --help display help for command
142
- ```