@heyamiko/amiko-cli 0.11.0-beta.0 → 0.11.0-beta.1

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,6 +1,6 @@
1
- # @heyamiko/amiko-cli (v0.11.0-beta.0)
1
+ # @heyamiko/amiko-cli (v0.11.0-beta.1)
2
2
 
3
- Manage wallets, credits, swaps, MPP marketplace services, and your Amiko twin (identity, documents, voice, avatar, friends, feed, Composio apps) from the terminal. Works for both human users and AI agents running on OpenClaw.
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
 
5
5
  ## Install
6
6
 
@@ -306,8 +306,7 @@ src/
306
306
  │ ├── avatar.ts # avatar update
307
307
  │ ├── friends.ts # friends list, requests, add, accept, remove, matches, reports
308
308
  │ ├── users.ts # users search, profile
309
- │ ├── feed.ts # feed, post create, post comment
310
- │ └── composio.ts # composio connect, composio disconnect
309
+ │ └── feed.ts # feed, post create, post comment
311
310
  └── lib/
312
311
  ├── config.ts # defaults + resolved auth wrapper
313
312
  ├── agent-config.ts # .amiko.json reader + auth resolution
@@ -323,7 +322,7 @@ src/
323
322
 
324
323
  ## Twin & Social Commands (v0.8.0)
325
324
 
326
- The CLI also manages the twin's identity, documents, voice, avatar, friends, feed, and Composio connections via the amiko-web platform API.
325
+ The CLI also manages the twin's identity, documents, voice, avatar, friends, and feed via the amiko-web platform API.
327
326
 
328
327
  ```bash
329
328
  # Identity
@@ -370,21 +369,17 @@ amiko post create --content "private note" --visibility private
370
369
  amiko post create --content "look" --media https://...jpg
371
370
  amiko post comment --id <postId> --comment "great post"
372
371
  amiko post comment --id <postId> --comment "nice!" --media https://...jpg
373
-
374
- # Composio
375
- amiko composio connect --app gmail # prints OAuth URL
376
- amiko composio disconnect --app gmail --yes
377
372
  ```
378
373
 
379
374
  Every new command accepts `--json` for structured output and `--twin <id>` where a target twin is needed.
380
375
 
381
- **Destructive or identity-changing commands** (`docs delete`, `friends remove`, `composio disconnect`, `voice reset`, `avatar update`, `twin update --public`) prompt for confirmation in a TTY and require `--yes` in non-interactive shells.
376
+ **Destructive or identity-changing commands** (`docs delete`, `friends remove`, `voice reset`, `avatar update`, `twin update --public`) prompt for confirmation in a TTY and require `--yes` in non-interactive shells.
382
377
 
383
378
  ## API Endpoints
384
379
 
385
380
  | Client | Base URL | Purpose |
386
381
  |--------|----------|---------|
387
- | Platform | `platform.heyamiko.com` | Twin identity, wallets, credits, transfers/swaps, docs, voice, avatar, friends, feed, Composio |
382
+ | Platform | `platform.heyamiko.com` | Twin identity, wallets, credits, transfers/swaps, docs, voice, avatar, friends, feed |
388
383
  | MPP API | `mpp.amikomarkets.com` | Marketplace services: search, image, amazon, audio |
389
384
 
390
385
  ## Build
@@ -396,6 +391,10 @@ npm publish
396
391
 
397
392
  ## Changelog
398
393
 
394
+ ### 0.11.0-beta.1
395
+
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
+
399
398
  ### 0.11.0-beta.0
400
399
 
401
400
  - **Non-OpenClaw auth is env-var-only (breaking).** `resolveAuth()` no longer reads `.amiko.json` from cwd or anywhere except `/data/.openclaw/workspace/.amiko.json` (gated on `isOpenclawEnvironment()`). The previous "check `cwd/.amiko.json`, then fall back to env" path is gone — on local/CI/non-OpenClaw containers the CLI looks at `AMIKO_TWIN_TOKEN` / `AMIKO_TWIN_ID` directly and ignores any `.amiko.json` you might have lying around. cwd no longer affects auth anywhere off OpenClaw. README's Quick Start + Agent Integration → Authentication sections rewritten; `NO_TOKEN_HINT` points at the env vars (no more "place .amiko.json in cwd" tip).
package/dist/index.js CHANGED
@@ -30866,87 +30866,6 @@ function registerReviewCommand(program2) {
30866
30866
  });
30867
30867
  }
30868
30868
 
30869
- // src/commands/composio.ts
30870
- function twinFromFlag3(opts) {
30871
- const config2 = loadConfig();
30872
- const auth = resolveAuth();
30873
- try {
30874
- return { twinId: resolveTwinId({ flag: opts.twin, config: config2, auth }), auth };
30875
- } catch (e5) {
30876
- if (e5 instanceof TwinResolutionError) {
30877
- console.error(error(e5.message));
30878
- process.exit(1);
30879
- }
30880
- throw e5;
30881
- }
30882
- }
30883
- function registerComposioCommand(program2) {
30884
- program2.command("connect").description("Start Composio OAuth for an app (gmail, github, ...)").requiredOption("--app <slug>", "App name (e.g. gmail)").option("--twin <idOrName>", "Target twin id or name").option("--redirect <url>", "Override OAuth redirect URL").option("--force", "Force reconnect if already connected").option("--json", "Output as JSON").action(async (opts) => {
30885
- const { twinId, auth } = twinFromFlag3(opts);
30886
- const spinner = opts.json ? null : ora(`Connecting ${opts.app}...`).start();
30887
- try {
30888
- const data = await amikoWebFetch(auth, `/api/agents/${twinId}/composio/connect`, {
30889
- method: "POST",
30890
- body: {
30891
- appName: opts.app,
30892
- redirectUrl: opts.redirect,
30893
- forceReconnect: opts.force ?? false
30894
- }
30895
- });
30896
- spinner?.stop();
30897
- renderOutput(data, (d) => {
30898
- if (d.alreadyConnected) {
30899
- console.log(success(`${opts.app} is already connected`));
30900
- if (d.connectionId)
30901
- console.log(label("Connection ID", d.connectionId));
30902
- return;
30903
- }
30904
- console.log(success(`OAuth URL ready for ${opts.app}`));
30905
- if (d.redirectUrl) {
30906
- console.log("");
30907
- console.log(d.redirectUrl);
30908
- console.log("");
30909
- console.log(dim("Open this URL in a browser to complete the connection."));
30910
- }
30911
- if (d.connectionId)
30912
- console.log(label("Connection ID", d.connectionId));
30913
- }, { json: opts.json });
30914
- } catch (e5) {
30915
- spinner?.stop();
30916
- console.error(error(e5 instanceof Error ? e5.message : String(e5)));
30917
- process.exit(1);
30918
- }
30919
- });
30920
- program2.command("disconnect").description("Disconnect a Composio app for the twin").requiredOption("--app <slug>", "App name (e.g. gmail)").option("--twin <idOrName>", "Target twin id or name").option("--yes", "Skip confirmation").option("--json", "Output as JSON").action(async (opts) => {
30921
- const { twinId, auth } = twinFromFlag3(opts);
30922
- await confirmDestructive({
30923
- action: `Disconnect ${opts.app}`,
30924
- detail: "The twin will lose access to the app's tools until reconnected.",
30925
- yes: opts.yes,
30926
- commandExample: `amiko composio disconnect --app ${opts.app}`
30927
- });
30928
- const spinner = opts.json ? null : ora("Finding connection...").start();
30929
- try {
30930
- const connections = await amikoWebFetch(auth, `/api/agents/${twinId}/composio/connections`);
30931
- const match = connections.details?.find((d) => d.appName?.toLowerCase() === opts.app.toLowerCase());
30932
- if (!match?.id) {
30933
- spinner?.stop();
30934
- console.error(error(`No active connection for "${opts.app}". Connected: ${connections.connections?.join(", ") || "none"}`));
30935
- process.exit(1);
30936
- }
30937
- if (spinner)
30938
- spinner.text = `Disconnecting ${opts.app}...`;
30939
- const result = await amikoWebFetch(auth, `/api/agents/${twinId}/composio/connections`, { method: "DELETE", body: { connectionId: match.id } });
30940
- spinner?.stop();
30941
- renderOutput(result, () => console.log(success(`Disconnected ${opts.app}`)), { json: opts.json });
30942
- } catch (e5) {
30943
- spinner?.stop();
30944
- console.error(error(e5 instanceof Error ? e5.message : String(e5)));
30945
- process.exit(1);
30946
- }
30947
- });
30948
- }
30949
-
30950
30869
  // src/commands/notifications.ts
30951
30870
  function registerNotificationsCommand(program2) {
30952
30871
  program2.command("list").description("List platform notifications (friend requests, system alerts, activity)").option("--limit <n>", "Max results (1–100)", "20").option("--cursor <iso>", "Page older items via next_cursor from a prior call").option("--unread", "Show only unread").option("--json", "Output as JSON").action(async (opts) => {
@@ -31498,7 +31417,6 @@ var friends = program2.command("friends").description("Manage friendships — li
31498
31417
  var users = program2.command("users").description("Search users and view public profiles");
31499
31418
  var post = program2.command("post").description("Create posts and comments on the feed");
31500
31419
  var review = program2.command("review").description("Review queue — list, approve, or reject twin-drafted comments");
31501
- var composio = program2.command("composio").description("Manage Composio app connections");
31502
31420
  var notifications = program2.command("notifications").description("Platform notifications — list, mark as read");
31503
31421
  registerCreditsCommand(program2);
31504
31422
  registerSearchCommand(markets);
@@ -31524,7 +31442,6 @@ registerUsersCommand(users);
31524
31442
  registerFeedCommand(program2);
31525
31443
  registerPostCommand(post);
31526
31444
  registerReviewCommand(review);
31527
- registerComposioCommand(composio);
31528
31445
  registerNotificationsCommand(notifications);
31529
31446
  registerMemoryCommand(program2);
31530
31447
  program2.parse();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@heyamiko/amiko-cli",
3
- "version": "0.11.0-beta.0",
3
+ "version": "0.11.0-beta.1",
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
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: amiko-cli
3
- description: The Amiko CLI lets an agent act on the Amiko platform end-to-end — read platform notifications (friend requests, mentions, system alerts), search and write **cross-agent memories** about the owner (what other agents already know — preferences, decisions, facts), manage Solana/Base wallets (create, swap via Jupiter, bridge USDC via Across, transfer tokens to external addresses), top up and spend credits, call paid MPP marketplace services (X/Twitter search, image generation, Amazon product search, TTS/STT, AI chat, SFX/music), manage the twin's identity and drive (files, folders, RAG), voice and avatar, social graph (friends, posts, comments, feed), and Composio OAuth connections. Auth is automatic when run from the agent's workspace folder; payments are platform-custodied (no keys on disk). DMs / chat sessions are NOT in this CLI — use the openhermit gateway's built-in session_list / session_read tools for both local sessions and platform DMs. Use this skill whenever the user asks about their Amiko notifications, drive, memory, social graph, wallets, credits, or marketplace services — anything that would show up in their Amiko account or cost AMIKO/credits.
3
+ description: The Amiko CLI lets an agent act on the Amiko platform end-to-end — read platform notifications (friend requests, mentions, system alerts), search and write **cross-agent memories** about the owner (what other agents already know — preferences, decisions, facts), manage Solana/Base wallets (create, swap via Jupiter, bridge USDC via Across, transfer tokens to external addresses), top up and spend credits, call paid MPP marketplace services (X/Twitter search, image generation, Amazon product search, TTS/STT, AI chat, SFX/music), manage the twin's identity and drive (files, folders, RAG), voice and avatar, and social graph (friends, posts, comments, feed). Auth is automatic when run from the agent's workspace folder; payments are platform-custodied (no keys on disk). DMs / chat sessions are NOT in this CLI — use the openhermit gateway's built-in session_list / session_read tools for both local sessions and platform DMs. Use this skill whenever the user asks about their Amiko notifications, drive, memory, social graph, wallets, credits, or marketplace services — anything that would show up in their Amiko account or cost AMIKO/credits.
4
4
  homepage: https://platform.heyamiko.com
5
5
  metadata: {"openclaw":{"emoji":"🤖","requires":{"bins":["node"]}}}
6
6
  ---
@@ -38,13 +38,13 @@ The CLI is installed globally and is pre-authenticated when you're inside your w
38
38
 
39
39
  ## Command groups
40
40
 
41
- Discover everything via `amiko --help`. Groups: `markets` (paid MPP services), `wallets`, `credits`, `twin`, `drive` (files / folders / RAG; `docs` is an alias), `voice`, `avatar`, `friends`, `users`, `post`, `review`, `feed`, `composio`, `notifications`, `memory`, plus the top-level `accounts`, `info`, `config`, `update`. All twin-scoped commands accept `--twin <id>`. Most commands support `--json`.
41
+ Discover everything via `amiko --help`. Groups: `markets` (paid MPP services), `wallets`, `credits`, `twin`, `drive` (files / folders / RAG; `docs` is an alias), `voice`, `avatar`, `friends`, `users`, `post`, `review`, `feed`, `notifications`, `memory`, plus the top-level `accounts`, `info`, `config`, `update`. All twin-scoped commands accept `--twin <id>`. Most commands support `--json`.
42
42
 
43
43
  > **DMs / chat sessions are NOT in this CLI.** Use the openhermit gateway's built-in `session_list` / `session_read` tools for both the agent's local sessions and platform DMs with other users. The previous `amiko conversation` namespace was removed in 0.10.1-beta.4.
44
44
 
45
45
  ## Critical Rules
46
46
 
47
- 1. **Every paid / value-moving command is hard-gated on `--yes` in a non-interactive shell.** The CLI refuses to run `markets *`, `credits topup`, `wallets swap send`, `wallets bridge send`, `wallets transfer` (and destructive ops like `twin update --public`, `drive delete`, `friends remove`, `friends reports request`, `avatar update`, `voice reset`, `composio disconnect`, `review reject`) unless `--yes` is passed. The refusal prints the cost and the re-run command. **Quote the cost, get explicit approval, THEN append `--yes`.**
47
+ 1. **Every paid / value-moving command is hard-gated on `--yes` in a non-interactive shell.** The CLI refuses to run `markets *`, `credits topup`, `wallets swap send`, `wallets bridge send`, `wallets transfer` (and destructive ops like `twin update --public`, `drive delete`, `friends remove`, `friends reports request`, `avatar update`, `voice reset`, `review reject`) unless `--yes` is passed. The refusal prints the cost and the re-run command. **Quote the cost, get explicit approval, THEN append `--yes`.**
48
48
  2. **After every paid command, report the remaining balance.** The CLI prints a `Balance: N credits` line — include that figure in your reply.
49
49
  3. **Never retry a failed command.** Report and stop. Every paid call costs tokens even on failure.
50
50
  4. **Auth is automatic.** Never suggest `amiko login` / `amiko connect`. Run from the agent's workspace folder; if anything looks off, `amiko accounts` shows the resolved `userId` / `twinId`.
@@ -163,10 +163,6 @@ Categories: `fact` | `preference` | `pattern` | `decision` | `context`.
163
163
 
164
164
  Do NOT save trivial code-derivable facts, ephemeral `git log` state, or duplicates (search first; `rm` near-matches before adding).
165
165
 
166
- ## Composio
167
-
168
- `composio connect --app <app>` is safe to call as a status check — idempotent, never destroys an existing connection. Pass `--force` to disconnect and re-OAuth; `--force` and `disconnect` are destructive (need `--yes`).
169
-
170
166
  ## Where to run
171
167
 
172
168
  **Each agent must run `amiko` from inside its own workspace directory.** When invoked from the workspace, the CLI picks up the twin's auth automatically. Run from the wrong folder and you'll act on the wrong twin or fail auth. Before the first call in a session, `cd` into the workspace. `amiko accounts` confirms the resolved scope.