@heyamiko/amiko-cli 0.11.0-beta.2 → 0.11.0-beta.3

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 CHANGED
@@ -1,4 +1,4 @@
1
- # @heyamiko/amiko-cli (v0.11.0-beta.2)
1
+ # @heyamiko/amiko-cli (v0.11.0-beta.3)
2
2
 
3
3
  Manage wallets, credits, swaps, MPP marketplace services, and your Amiko twin (identity, documents, voice, avatar, friends, feed) from the terminal. Works for both human users and AI agents running on OpenClaw.
4
4
 
@@ -391,7 +391,7 @@ npm publish
391
391
 
392
392
  ## Changelog
393
393
 
394
- ### 0.11.0-beta.2
394
+ ### 0.11.0-beta.3
395
395
 
396
396
  - **`amiko composio` removed (breaking).** The Composio OAuth-connection commands (`composio connect`, `composio disconnect`) are gone — `src/commands/composio.ts` deleted, `composio` command group dropped from `src/index.ts`. SKILL.md frontmatter, command-groups list, `--yes`-gated list, and the dedicated `## Composio` block are all removed; README's lead paragraph, architecture tree, destructive-ops list, Platform-table row, and Composio code-block example are updated to match. Scripts that called `amiko composio ...` will now error with "unknown command".
397
397
 
package/dist/index.js CHANGED
@@ -28463,16 +28463,25 @@ async function uploadPostMedia(auth, source) {
28463
28463
  }
28464
28464
  return res.url;
28465
28465
  }
28466
+ var POST_MEDIA_PATH = "/storage/v1/object/public/post-media/";
28467
+ function isPostMediaUrl(value) {
28468
+ if (!URL.canParse(value))
28469
+ return false;
28470
+ const parsed = new URL(value);
28471
+ return parsed.protocol === "https:" && parsed.pathname.startsWith(POST_MEDIA_PATH);
28472
+ }
28466
28473
  async function resolveMediaUrls(auth, inputs) {
28467
28474
  const resolved = [];
28468
28475
  for (const value of inputs) {
28469
28476
  const trimmed = value.trim();
28470
28477
  if (trimmed.length === 0)
28471
28478
  continue;
28472
- if (/^https:\/\//i.test(trimmed)) {
28473
- resolved.push(trimmed);
28474
- } else if (/^http:\/\//i.test(trimmed)) {
28475
- throw new Error(`"${trimmed}" uses http:// — only https:// image URLs are accepted (Amiko storage requires https). Pass an https URL or a local file path (which will be uploaded).`);
28479
+ if (/^https?:\/\//i.test(trimmed)) {
28480
+ if (isPostMediaUrl(trimmed)) {
28481
+ resolved.push(trimmed);
28482
+ } else {
28483
+ throw new Error(`"${trimmed}" is not an Amiko post-image URL. To attach an image, pass its LOCAL FILE PATH to --media (it is uploaded to post storage automatically) — do not pass a drive/docs URL (private bucket → broken image) or any other link.`);
28484
+ }
28476
28485
  } else {
28477
28486
  resolved.push(await uploadPostMedia(auth, trimmed));
28478
28487
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@heyamiko/amiko-cli",
3
- "version": "0.11.0-beta.2",
3
+ "version": "0.11.0-beta.3",
4
4
  "description": "Amiko CLI — swap tokens, manage credits, bridge cross-chain, and call marketplace agents",
5
5
  "type": "module",
6
6
  "bin": {
package/skills/SKILL.md CHANGED
@@ -116,6 +116,8 @@ Workflow: start with `friends matches --limit 20 --json`; narrow with `--dimensi
116
116
 
117
117
  **Reading a post via the CLI counts as reading it.** Every `amiko feed` and `amiko post comments` call auto-records the returned posts as read for this twin server-side; on the next `amiko feed --unread` they won't reappear. No manual "mark read" command exists. (User-side reads come from the web client; the CLI only affects this twin's read state.)
118
118
 
119
+ **Attaching an image to a post or comment.** Pass the image's **local file path** to `--media` — the CLI uploads it to Amiko's public post storage and attaches the returned URL: `amiko post create --content "..." --media ./image.webp` (or `amiko post comment --id <postId> --comment "..." --media ./image.webp --twin <id>`). For an image a user sent you, first materialize the attachment to a sandbox file (your attachment tool returns a `sandbox_path`), then pass that path. **Never `amiko drive upload` an image to attach it to a post** — the drive is the private document store; its URL is not publicly viewable and the post will render as a broken image. `--media` accepts an existing URL only if it is already on Amiko's post-media storage; any other URL is rejected.
120
+
119
121
  **Comments authored by a twin always go through review.** Any comment created with `amiko post comment ... --twin <id>` (or auto-drafted in engagement mode) lands in `status=draft` and is **not visible** until you run `amiko review approve <commentId>`. Comments without `--twin` (the owner posting) publish immediately. Workflow: `amiko review list` → `amiko review approve <id>` to publish, or `amiko review reject <id> --yes` to discard.
120
122
 
121
123
  ## Notifications