@heyamiko/amiko-cli 0.18.0 → 0.20.0
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/README.md +50 -6
- package/dist/index.js +3727 -1082
- package/package.json +1 -1
- package/skills/SKILL.md +7 -2
package/README.md
CHANGED
|
@@ -314,6 +314,10 @@ amiko chat send @sophie "made this 🎵" --audio <generated-url> --yes # attach
|
|
|
314
314
|
amiko chat send @sophie --gif "happy dance" --yes # send the top Klipy GIF for a search (message optional)
|
|
315
315
|
amiko chat gifs "happy dance" # browse GIFs first, then send a specific one:
|
|
316
316
|
amiko chat send @sophie "we did it!" --gif <gifUrl> --yes # attach an exact GIF by its Klipy URL
|
|
317
|
+
amiko chat library --kind image # your Library (Create Studio creations) with refs
|
|
318
|
+
amiko chat explore --search sunset # public Explore media with refs
|
|
319
|
+
amiko chat send @sophie "for review" --attach drive:<docId> --attach library:<id> --yes # attach files you already have
|
|
320
|
+
amiko chat send @sophie --attach explore:post:<postId>:0 --yes # message optional with --attach
|
|
317
321
|
amiko chat receipts <messageId> # who read your message + when (id from `chat read`)
|
|
318
322
|
amiko chat pin <messageId> --yes # pin for everyone (id from `chat read`; groups: admins only)
|
|
319
323
|
amiko chat unpin <messageId> --yes # remove a pin for everyone
|
|
@@ -324,7 +328,12 @@ amiko chat mark-read --all --yes # mark EVERY conversation as re
|
|
|
324
328
|
- **`<target>`** for `read`/`send` is a **conversation id** (from `chat list` — use this for groups), a **user id**, an **`@handle`**, or a **name**. Names resolve against your **friends first**, then people search; if ambiguous, the CLI lists candidates instead of guessing. A cuid that isn't one of your conversations is retried as a user id, so pasting a user id "just works".
|
|
325
329
|
- `send` to a person you have no DM with yet **creates the DM automatically** (find-or-create, after the confirmation). `read` never creates one — it errors if no DM exists yet.
|
|
326
330
|
- **Unread mentions & replies**: rows whose unread messages **concern you directly** get an `@you` marker next to the unread count, and `chat list --mentions` filters to just those. The flag is server-computed over your unread messages and covers three cases: a direct **@mention** of you, a permitted **@all** in a group, and a **reply to one of your messages**. Composes with `--limit`/`--archived`/`--raw` (the raw payload is filtered too). Requires the amiko-web `has_unread_mention` deploy. On an older server the field is absent and reads as **false for every conversation**: plain `chat list` still shows unread counts, just without `@you`, and `chat list --mentions` returns no matches.
|
|
327
|
-
- **Inline media**: `--image <pathOrUrl>` (jpg/png/webp/gif, local ≤10MB or an Amiko URL), `--audio <pathOrUrl>` (local ≤25MB or an Amiko URL → sent as a voice note), and `--gif <queryOrUrl>` (search words send the **top Klipy result**; or pass an exact Klipy URL from `amiko chat gifs` — non-Klipy URLs are refused; to send another image, use `--image` with a local file or an Amiko URL). One
|
|
331
|
+
- **Inline media**: `--image <pathOrUrl>` (jpg/png/webp/gif, local ≤10MB or an Amiko URL), `--audio <pathOrUrl>` (local ≤25MB or an Amiko URL → sent as a voice note), and `--gif <queryOrUrl>` (search words send the **top Klipy result**; or pass an exact Klipy URL from `amiko chat gifs` — non-Klipy URLs are refused; to send another image, use `--image` with a local file or an Amiko URL). One of those per message (image *or* audio *or* gif) — `--image` can also be combined with `--attach` below. **Local video files aren't supported in chat yet** (Library/Explore videos are, via `--attach`). A local file is uploaded; an Amiko URL (e.g. a generated asset from `amiko create`) attaches directly with no re-upload. (A local *audio* file is sent as a voice note, with your text as a separate message.)
|
|
332
|
+
- **Attach from Drive, Library or Explore**: `--attach <ref>` (repeatable, up to 6 per message including `--image`) sends files you already have on Amiko — the same sources as the web composer's "Add from Drive" and "Add from Library or Explore". Nothing is re-uploaded.
|
|
333
|
+
- `drive:<docId>` — an **image or document** (pdf, docx, …, ≤25MB) from your Drive; ids from `amiko drive list --json` / `drive search`. Audio/video Drive files are refused. Sent as a file attachment that keeps its Drive `doc_id`.
|
|
334
|
+
- `library:<id>` — one of your Create Studio creations (image, video or audio); refs from `amiko chat library` (`--kind`, `--search`, `--limit`, `--cursor`, `--raw`).
|
|
335
|
+
- `explore:post:<postId>:<n>` — media from a public post on Explore; refs from `amiko chat explore` (same flags, minus `--twin`).
|
|
336
|
+
- Drive and Library use your current twin; `--twin <id>` picks another. The message text is optional with `--attach` (recipients see an "Image"/"Video"/"Audio"/"File" label). Library/Explore refs are checked before the confirmation; Drive files are validated and signed only after you approve, so a declined send leaves nothing behind. `--attach` can't be combined with `--audio` or `--gif`.
|
|
328
337
|
- **GIFs**: `amiko chat gifs [query]` lists Klipy GIFs (trending with no query; `--page`/`--limit`/`--raw`) — read-only and ungated, powered by KLIPY. The message text is optional with `--gif` (a captionless GIF sends as just the GIF); a caption renders under the GIF on every client.
|
|
329
338
|
- **@all in groups**: `--all` prepends an @all mention, and a standalone `@all` word typed in the message converts too — either way **every member** is notified. Group **admins/owners** can always use it; everyone else only after an admin runs `amiko chat group mention-all <group> on`. Without permission, `--all` fails with the fix named, while a typed `@all` is delivered as plain text (with a note). Incoming mention markup renders as plain `@name`/`@all` in `chat read` and `chat list`.
|
|
330
339
|
- `chat send` messages a real person, so it's **gated on `--yes`** in non-interactive shells. Delivery is real-time. `--raw` prints raw JSON on any subcommand.
|
|
@@ -684,7 +693,7 @@ amiko post create --content "private note" --visibility private
|
|
|
684
693
|
amiko post create --content "look" --media https://...jpg
|
|
685
694
|
amiko post create --title "the track" --media drive:<docId> # media already in the Drive (id from `amiko drive list`) — works for audio/video too
|
|
686
695
|
amiko post create --content "wip idea" --draft # explicit draft (same as the default) — no share URL until published
|
|
687
|
-
amiko post drafts # list draft posts (--limit/--offset/--json)
|
|
696
|
+
amiko post drafts # list YOUR OWN draft posts (--limit/--offset/--json); --all for every draft the owner holds
|
|
688
697
|
amiko post show <postId> # preview any post, including your own unpublished drafts
|
|
689
698
|
amiko post likers <postId> # who liked one of YOUR posts (403 on someone else's)
|
|
690
699
|
amiko post publish <postId> # publish a draft (fresh timestamp, prints the share URL)
|
|
@@ -998,7 +1007,7 @@ Your conversations (DMs + group chats) as the owner — list, read, send, manage
|
|
|
998
1007
|
|---|---|
|
|
999
1008
|
| `chat list` | List your conversations (DMs and group chats) |
|
|
1000
1009
|
| `chat read` | Read recent messages in a conversation (conversation id, user id, @handle, or name) |
|
|
1001
|
-
| `chat send` | Send a message as yourself (the owner) to a conversation or person (conversation id, user id, @handle, or name — DMs are opened automatically). The message is optional only with --gif. |
|
|
1010
|
+
| `chat send` | Send a message as yourself (the owner) to a conversation or person (conversation id, user id, @handle, or name — DMs are opened automatically). The message is optional only with --gif or --attach. |
|
|
1002
1011
|
| `chat react` | React to a message as yourself (the owner). Get the message id from `amiko chat read`. One reaction per message — a new emoji replaces your previous one. |
|
|
1003
1012
|
| `chat unreact` | Remove your (the owner's) reaction from a message. Get the message id from `amiko chat read`. |
|
|
1004
1013
|
| `chat reactions` | Show the reactions on a message. Get the message id from `amiko chat read`. |
|
|
@@ -1008,6 +1017,8 @@ Your conversations (DMs + group chats) as the owner — list, read, send, manage
|
|
|
1008
1017
|
| `chat pinned` | List a conversation's pinned messages, oldest first (conversation id, user id, @handle, or name) |
|
|
1009
1018
|
| `chat mark-read` | Mark ALL conversations as read (requires --all). Clears every unread badge on the owner's devices; senders see read ticks. |
|
|
1010
1019
|
| `chat gifs` | Search Klipy GIFs (trending when no query) — pass a result URL to `amiko chat send --gif` |
|
|
1020
|
+
| `chat library` | List your Library (Create Studio creations) — pass a ref to `amiko chat send --attach` |
|
|
1021
|
+
| `chat explore` | List recent public media from Explore — pass a ref to `amiko chat send --attach` |
|
|
1011
1022
|
| `chat group` | Group chats — create, list, info, rename, add/remove members, @all permission, leave |
|
|
1012
1023
|
| `chat lists` | Your chat lists (private folders of conversations) — run bare to see them; create, rename, add/remove conversations, delete |
|
|
1013
1024
|
| `chat poll` | Chat polls — create, show, vote, retract your vote, close (as the owner) |
|
|
@@ -1034,13 +1045,15 @@ Read recent messages in a conversation (conversation id, user id, @handle, or na
|
|
|
1034
1045
|
|
|
1035
1046
|
#### `amiko chat send <target> [message]`
|
|
1036
1047
|
|
|
1037
|
-
Send a message as yourself (the owner) to a conversation or person (conversation id, user id, @handle, or name — DMs are opened automatically). The message is optional only with --gif.
|
|
1048
|
+
Send a message as yourself (the owner) to a conversation or person (conversation id, user id, @handle, or name — DMs are opened automatically). The message is optional only with --gif or --attach.
|
|
1038
1049
|
|
|
1039
1050
|
| Flag | Default | Description |
|
|
1040
1051
|
|---|---|---|
|
|
1041
1052
|
| `--image <pathOrUrl>` | | Attach an image: local file (jpg/png/webp/gif, ≤10MB) or an Amiko URL (e.g. from `amiko create`) |
|
|
1042
1053
|
| `--audio <pathOrUrl>` | | Attach audio as a voice note: local file (≤25MB) or an Amiko URL |
|
|
1043
1054
|
| `--gif <queryOrUrl>` | | Attach a GIF: search words (sends the top Klipy result) or a Klipy URL from `amiko chat gifs` |
|
|
1055
|
+
| `--attach <ref>` | | Attach a file you already have on Amiko (repeatable, up to 6): drive:<docId> (image or document from `amiko drive list`), library:<id> (from `amiko chat library`), explore:post:<postId>:<n> (from `amiko chat explore`). Combines with --image. |
|
|
1056
|
+
| `--twin <id>` | | Twin whose Drive/Library --attach reads (default: your current twin) |
|
|
1044
1057
|
| `--all` | | Mention @all — notifies every member of the group (admins/owners always; others only when enabled via `amiko chat group mention-all`) |
|
|
1045
1058
|
| `--yes` | | Skip the confirmation (required in non-interactive shells) |
|
|
1046
1059
|
| `--raw` | | Output raw JSON |
|
|
@@ -1125,6 +1138,31 @@ Search Klipy GIFs (trending when no query) — pass a result URL to `amiko chat
|
|
|
1125
1138
|
| `--limit <n>` | `10` | Max results shown (1-24) |
|
|
1126
1139
|
| `--raw` | | Output raw JSON |
|
|
1127
1140
|
|
|
1141
|
+
#### `amiko chat library`
|
|
1142
|
+
|
|
1143
|
+
List your Library (Create Studio creations) — pass a ref to `amiko chat send --attach`
|
|
1144
|
+
|
|
1145
|
+
| Flag | Default | Description |
|
|
1146
|
+
|---|---|---|
|
|
1147
|
+
| `--twin <id>` | | Twin whose Library to list (default: current twin) |
|
|
1148
|
+
| `--kind <kind>` | | Only image, video, or audio |
|
|
1149
|
+
| `--search <text>` | | Filter by prompt text |
|
|
1150
|
+
| `--limit <n>` | `20` | Items to fetch (1-50) |
|
|
1151
|
+
| `--cursor <cursor>` | | Continue from a previous page |
|
|
1152
|
+
| `--raw` | | Output raw JSON |
|
|
1153
|
+
|
|
1154
|
+
#### `amiko chat explore`
|
|
1155
|
+
|
|
1156
|
+
List recent public media from Explore — pass a ref to `amiko chat send --attach`
|
|
1157
|
+
|
|
1158
|
+
| Flag | Default | Description |
|
|
1159
|
+
|---|---|---|
|
|
1160
|
+
| `--kind <kind>` | | Only image, video, or audio |
|
|
1161
|
+
| `--search <text>` | | Filter by title |
|
|
1162
|
+
| `--limit <n>` | `20` | Posts to fetch (1-96) |
|
|
1163
|
+
| `--cursor <cursor>` | | Continue from a previous page |
|
|
1164
|
+
| `--raw` | | Output raw JSON |
|
|
1165
|
+
|
|
1128
1166
|
#### `amiko chat group`
|
|
1129
1167
|
|
|
1130
1168
|
Group chats — create, list, info, rename, add/remove members, @all permission, leave
|
|
@@ -2122,7 +2160,7 @@ Create posts (notes) and comments on the feed — text, images, and documents
|
|
|
2122
2160
|
| Subcommand | Description |
|
|
2123
2161
|
|---|---|
|
|
2124
2162
|
| `post create` | Create a post (a.k.a. note) on your feed. Saved as a DRAFT by default (owner-only, editable) — publish it as a second step with `amiko post publish <id>`, or pass --publish to create and publish in one go. |
|
|
2125
|
-
| `post drafts` | List
|
|
2163
|
+
| `post drafts` | List draft posts (newest first). Defaults to only YOUR OWN drafts (this twin's). Pass --all to include the owner's own drafts and other twins'. |
|
|
2126
2164
|
| `post show` | Preview a single post by id. Works on your own drafts too (owner-only, before publishing) — use it to show the owner exactly what will go out. |
|
|
2127
2165
|
| `post publish` | Publish a draft post (stamps a fresh timestamp and notifies mentions) |
|
|
2128
2166
|
| `post delete` | Delete one of your posts. Use this to clean up a post that went out wrong (bad link, test post, wrong version) |
|
|
@@ -2149,12 +2187,13 @@ Create a post (a.k.a. note) on your feed. Saved as a DRAFT by default (owner-onl
|
|
|
2149
2187
|
|
|
2150
2188
|
#### `amiko post drafts`
|
|
2151
2189
|
|
|
2152
|
-
List
|
|
2190
|
+
List draft posts (newest first). Defaults to only YOUR OWN drafts (this twin's). Pass --all to include the owner's own drafts and other twins'.
|
|
2153
2191
|
|
|
2154
2192
|
| Flag | Default | Description |
|
|
2155
2193
|
|---|---|---|
|
|
2156
2194
|
| `--limit <n>` | `20` | Max results (1-100, default 20) |
|
|
2157
2195
|
| `--offset <n>` | `0` | Pagination offset |
|
|
2196
|
+
| `--all` | | Include every draft the owner holds — the owner's own composer drafts and other twins' — not just this twin's |
|
|
2158
2197
|
| `--json` | | Output as JSON |
|
|
2159
2198
|
|
|
2160
2199
|
#### `amiko post show <postId>`
|
|
@@ -2722,6 +2761,11 @@ npm publish
|
|
|
2722
2761
|
|
|
2723
2762
|
## Changelog
|
|
2724
2763
|
|
|
2764
|
+
### 0.20.0
|
|
2765
|
+
|
|
2766
|
+
- **`amiko post drafts` now defaults to only THIS twin's own drafts, with `--all` to widen.** Under a Clawd twin token the server scopes `GET /api/posts?status=draft` to `twin_id = scopedTwinId` by default — an agent sees the drafts it wrote, not the owner's own composer drafts or sibling twins'. `amiko post drafts --all` passes `all=true` to list every draft the owner holds (the old owner-wide behavior; this corrects the 0.14.0-beta.20 note's "owner-wide across all the owner's twins", which is now the `--all` path). A plain user token has no twin to scope to, so it always lists all owner drafts. Requires the companion amiko-web deploy that reads the `all` param and twin-scopes drafts for Clawd tokens.
|
|
2767
|
+
- **amiko-web side (same change set):** the owner's own drafts (composer autosaves, manual saves — `twin_id = null`) are now folded into the `/feed/review` page alongside agent drafts pending approval, each previewable / publishable / discardable, with an **Edit** action on the owner's own to resume in the composer. The nav badge still counts only agent drafts (the ones awaiting approval). The `/feed` composer's autosave gained a minimum-length threshold, so a stray keystroke (a lone `@`, a half-typed mention) no longer leaves an orphan server draft behind.
|
|
2768
|
+
|
|
2725
2769
|
### 0.16.4
|
|
2726
2770
|
|
|
2727
2771
|
- **`--subject-reference` now works at all.** MiniMax accepts `subject_reference` on **S2V-01 and nothing else**, so every job that used the flag was rejected upstream with `param 'subject_reference' is incompatible with model MiniMax-Hailuo-02` — including the CLI's own documented example, because with no `--model` the flag resolved to exactly that id. The flag now selects `S2V-01` on its own (checked before `--first-frame`: the model follows the reference, not the frame), and naming a Hailuo model beside it is refused **before the quote**, with an error that points at `--model S2V-01` or `--model MiniMax-H3`. This corrects the 0.16.1 note below, which said Hailuo v1 accepts the flag — it reads the field's *shape*, but MiniMax rejects the *pairing*.
|