@heyamiko/amiko-cli 0.9.0-beta.0 → 0.9.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 +24 -24
- package/dist/index.js +15 -14
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -35,18 +35,18 @@ amiko credits balance
|
|
|
35
35
|
amiko credits topup 10000 --token AMIKO --yes
|
|
36
36
|
|
|
37
37
|
# Search X/Twitter (1 AMIKO, pass --wallet)
|
|
38
|
-
amiko search "AI agents" --wallet <solana-address>
|
|
38
|
+
amiko market search "AI agents" --wallet <solana-address>
|
|
39
39
|
|
|
40
40
|
# Generate an image (5 AMIKO)
|
|
41
|
-
amiko image "a sunset over mountains" --wallet <solana-address>
|
|
41
|
+
amiko market image "a sunset over mountains" --wallet <solana-address>
|
|
42
42
|
|
|
43
43
|
# Swap tokens on Solana
|
|
44
44
|
amiko swap quote 1.0 SOL USDC
|
|
45
45
|
amiko swap send 1.0 SOL USDC --yes
|
|
46
46
|
|
|
47
47
|
# Call any MPP service
|
|
48
|
-
amiko service list
|
|
49
|
-
amiko service call POST /v1/sfx '{"text":"thunder","duration_seconds":5}'
|
|
48
|
+
amiko market service list
|
|
49
|
+
amiko market service call POST /v1/sfx '{"text":"thunder","duration_seconds":5}'
|
|
50
50
|
```
|
|
51
51
|
|
|
52
52
|
## Credits
|
|
@@ -93,9 +93,9 @@ amiko credits topup 10000 --wallet Gu2b...QVya # specific wallet
|
|
|
93
93
|
## Search
|
|
94
94
|
|
|
95
95
|
```bash
|
|
96
|
-
amiko search "AI agents" # search X/Twitter (1 AMIKO)
|
|
97
|
-
amiko search "bitcoin" --token USDC # pay with USDC instead
|
|
98
|
-
amiko search "news" --raw # raw JSON output
|
|
96
|
+
amiko market search "AI agents" # search X/Twitter (1 AMIKO)
|
|
97
|
+
amiko market search "bitcoin" --token USDC # pay with USDC instead
|
|
98
|
+
amiko market search "news" --raw # raw JSON output
|
|
99
99
|
```
|
|
100
100
|
|
|
101
101
|
Pays 1 AMIKO per search via Crossmint wallet transfer. Tries Solana wallet first, falls back to EVM.
|
|
@@ -103,12 +103,12 @@ Pays 1 AMIKO per search via Crossmint wallet transfer. Tries Solana wallet first
|
|
|
103
103
|
## Image Generation
|
|
104
104
|
|
|
105
105
|
```bash
|
|
106
|
-
amiko image "a sunset over mountains" # gpt-image-1 (default)
|
|
107
|
-
amiko image "logo" --background transparent # transparent background
|
|
108
|
-
amiko image "cat" --model dall-e-3 # DALL-E 3
|
|
109
|
-
amiko image "portrait" --size 1024x1792 --quality high # portrait, high quality
|
|
110
|
-
amiko image "icon" --format webp # webp output
|
|
111
|
-
amiko image "banner" --raw # raw JSON
|
|
106
|
+
amiko market image "a sunset over mountains" # gpt-image-1 (default)
|
|
107
|
+
amiko market image "logo" --background transparent # transparent background
|
|
108
|
+
amiko market image "cat" --model dall-e-3 # DALL-E 3
|
|
109
|
+
amiko market image "portrait" --size 1024x1792 --quality high # portrait, high quality
|
|
110
|
+
amiko market image "icon" --format webp # webp output
|
|
111
|
+
amiko market image "banner" --raw # raw JSON
|
|
112
112
|
```
|
|
113
113
|
|
|
114
114
|
Costs 5 AMIKO per image. Returns a Supabase Storage URL.
|
|
@@ -118,8 +118,8 @@ Image generation typically takes 20–60s. In non-TTY environments (agents, pipe
|
|
|
118
118
|
## Amazon
|
|
119
119
|
|
|
120
120
|
```bash
|
|
121
|
-
amiko amazon search "usb c cable" # product search (1 AMIKO)
|
|
122
|
-
amiko amazon quote B01GGKYKQM # price quote (free)
|
|
121
|
+
amiko market amazon search "usb c cable" # product search (1 AMIKO)
|
|
122
|
+
amiko market amazon quote B01GGKYKQM # price quote (free)
|
|
123
123
|
```
|
|
124
124
|
|
|
125
125
|
## Swap
|
|
@@ -158,24 +158,24 @@ Default route: Solana → Tempo. Use `--from` and `--to` flags for other chains.
|
|
|
158
158
|
Call any endpoint on the Amiko marketplace with automatic AMIKO payment:
|
|
159
159
|
|
|
160
160
|
```bash
|
|
161
|
-
amiko service list # all services + prices
|
|
162
|
-
amiko service call <METHOD> <path> [body]
|
|
161
|
+
amiko market service list # all services + prices
|
|
162
|
+
amiko market service call <METHOD> <path> [body]
|
|
163
163
|
```
|
|
164
164
|
|
|
165
165
|
**Examples:**
|
|
166
166
|
|
|
167
167
|
```bash
|
|
168
168
|
# Sound effects ($0.05) — returns { url, format, service }
|
|
169
|
-
amiko service call POST /v1/sfx '{"text":"Thunder with heavy rain","duration_seconds":5}'
|
|
169
|
+
amiko market service call POST /v1/sfx '{"text":"Thunder with heavy rain","duration_seconds":5}'
|
|
170
170
|
|
|
171
171
|
# Music generation ($0.10) — returns { url, format, service }
|
|
172
|
-
amiko service call POST /v1/music '{"prompt":"Lo-fi chill beat","music_length_ms":30000}'
|
|
172
|
+
amiko market service call POST /v1/music '{"prompt":"Lo-fi chill beat","music_length_ms":30000}'
|
|
173
173
|
|
|
174
174
|
# Text-to-speech (1 AMIKO) — returns { url, format, service }
|
|
175
|
-
amiko service tts 21m00Tcm4TlvDq8ikWAM "Hello world"
|
|
175
|
+
amiko market service tts 21m00Tcm4TlvDq8ikWAM "Hello world"
|
|
176
176
|
|
|
177
177
|
# Composition plan ($0.02)
|
|
178
|
-
amiko service call POST /v1/music/plan '{"prompt":"Epic orchestral piece"}'
|
|
178
|
+
amiko market service call POST /v1/music/plan '{"prompt":"Epic orchestral piece"}'
|
|
179
179
|
```
|
|
180
180
|
|
|
181
181
|
Audio and image endpoints upload to Supabase Storage and return permanent URLs.
|
|
@@ -194,7 +194,7 @@ Every paid / value-moving command (`image`, `search`, `amazon search`, `service
|
|
|
194
194
|
Action: Generate image: a sunset over mountains
|
|
195
195
|
|
|
196
196
|
Quote the cost to the user, get their explicit approval, then re-run with --yes:
|
|
197
|
-
amiko image "a sunset over mountains" --yes
|
|
197
|
+
amiko market image "a sunset over mountains" --yes
|
|
198
198
|
```
|
|
199
199
|
|
|
200
200
|
This makes cost confirmation effectively mandatory regardless of which model drives the agent — weak models can no longer silently burn tokens by ignoring the skill docs. The same refusal fires for `swap send` (Solana gas + 10 bps platform fee) and `bridge send` (Across fee + gas), so an agent cannot move tokens without a round-trip through user approval.
|
|
@@ -215,7 +215,7 @@ JSON `error` / `message` / `detail` fields are extracted when present; raw body
|
|
|
215
215
|
## Other Commands
|
|
216
216
|
|
|
217
217
|
```bash
|
|
218
|
-
amiko
|
|
218
|
+
amiko market discover # MPP service info + pricing
|
|
219
219
|
amiko config show # view config
|
|
220
220
|
amiko config set <key> <value> # set config value
|
|
221
221
|
amiko update # update CLI to latest (full twin refresh — no restart needed)
|
|
@@ -252,7 +252,7 @@ Agents auto-authenticate via `.amiko.json` — no manual connect needed. The pla
|
|
|
252
252
|
```bash
|
|
253
253
|
# Agent environment — just works
|
|
254
254
|
amiko credits balance
|
|
255
|
-
amiko search "trending topics"
|
|
255
|
+
amiko market search "trending topics"
|
|
256
256
|
amiko credits topup 10000 --token AMIKO --yes
|
|
257
257
|
```
|
|
258
258
|
|
package/dist/index.js
CHANGED
|
@@ -19696,7 +19696,7 @@ function registerSearchCommand(program2) {
|
|
|
19696
19696
|
cost: `1 ${opts.token || "AMIKO"}`,
|
|
19697
19697
|
summary: `X/Twitter search: ${query.slice(0, 80)}${query.length > 80 ? "…" : ""}`,
|
|
19698
19698
|
yes: opts.yes,
|
|
19699
|
-
commandExample: `amiko search ${JSON.stringify(query)}${opts.token && opts.token !== "AMIKO" ? ` --token ${opts.token}` : ""}`
|
|
19699
|
+
commandExample: `amiko market search ${JSON.stringify(query)}${opts.token && opts.token !== "AMIKO" ? ` --token ${opts.token}` : ""}`
|
|
19700
19700
|
});
|
|
19701
19701
|
const spinner = ora("X Search...").start();
|
|
19702
19702
|
try {
|
|
@@ -19795,7 +19795,7 @@ function registerImageCommand(program2) {
|
|
|
19795
19795
|
cost: "5 AMIKO",
|
|
19796
19796
|
summary: `Generate image: ${prompt.slice(0, 80)}${prompt.length > 80 ? "…" : ""}`,
|
|
19797
19797
|
yes: opts.yes,
|
|
19798
|
-
commandExample: `amiko image ${JSON.stringify(prompt)}`
|
|
19798
|
+
commandExample: `amiko market image ${JSON.stringify(prompt)}`
|
|
19799
19799
|
});
|
|
19800
19800
|
const isTTY = process.stderr.isTTY;
|
|
19801
19801
|
const spinner = isTTY ? ora("Generating image...").start() : null;
|
|
@@ -19899,7 +19899,7 @@ function registerImageCommand(program2) {
|
|
|
19899
19899
|
console.log(label("URL", img.url));
|
|
19900
19900
|
} else if (img.b64_json) {
|
|
19901
19901
|
console.log(label("Format", "base64 (inline image data)"));
|
|
19902
|
-
console.log(dim(` ${img.b64_json.length.toLocaleString()} chars — save with: amiko image "..." --raw | jq -r '.images[0].b64_json' | base64 -d > image.png`));
|
|
19902
|
+
console.log(dim(` ${img.b64_json.length.toLocaleString()} chars — save with: amiko market image "..." --raw | jq -r '.images[0].b64_json' | base64 -d > image.png`));
|
|
19903
19903
|
}
|
|
19904
19904
|
if (img.revised_prompt && img.revised_prompt !== prompt) {
|
|
19905
19905
|
console.log(label("Revised", dim(img.revised_prompt)));
|
|
@@ -19934,7 +19934,7 @@ function registerAmazonCommand(program2) {
|
|
|
19934
19934
|
cost: "1 AMIKO",
|
|
19935
19935
|
summary: `Amazon product search: ${query.slice(0, 80)}${query.length > 80 ? "…" : ""}`,
|
|
19936
19936
|
yes: opts.yes,
|
|
19937
|
-
commandExample: `amiko amazon search ${JSON.stringify(query)}`
|
|
19937
|
+
commandExample: `amiko market amazon search ${JSON.stringify(query)}`
|
|
19938
19938
|
});
|
|
19939
19939
|
const spinner = ora("Searching Amazon...").start();
|
|
19940
19940
|
try {
|
|
@@ -20126,7 +20126,7 @@ function registerServicesCommand(program2) {
|
|
|
20126
20126
|
cost: "1 AMIKO",
|
|
20127
20127
|
summary: `Text-to-speech (voice ${voiceId}): "${text.slice(0, 60)}${text.length > 60 ? "…" : ""}"`,
|
|
20128
20128
|
yes: opts.yes,
|
|
20129
|
-
commandExample: `amiko service tts ${voiceId} ${JSON.stringify(text)}`
|
|
20129
|
+
commandExample: `amiko market service tts ${voiceId} ${JSON.stringify(text)}`
|
|
20130
20130
|
});
|
|
20131
20131
|
await callService({
|
|
20132
20132
|
name: "Text-to-Speech",
|
|
@@ -20142,7 +20142,7 @@ function registerServicesCommand(program2) {
|
|
|
20142
20142
|
cost: "1 AMIKO",
|
|
20143
20143
|
summary: `Speech-to-text on ${audioUrl}`,
|
|
20144
20144
|
yes: opts.yes,
|
|
20145
|
-
commandExample: `amiko service stt ${JSON.stringify(audioUrl)}`
|
|
20145
|
+
commandExample: `amiko market service stt ${JSON.stringify(audioUrl)}`
|
|
20146
20146
|
});
|
|
20147
20147
|
await callService({
|
|
20148
20148
|
name: "Speech-to-Text",
|
|
@@ -20176,7 +20176,7 @@ function registerServicesCommand(program2) {
|
|
|
20176
20176
|
cost: "1 AMIKO",
|
|
20177
20177
|
summary: `AI chat${opts.model ? ` (model ${opts.model})` : ""}: "${message.slice(0, 60)}${message.length > 60 ? "…" : ""}"`,
|
|
20178
20178
|
yes: opts.yes,
|
|
20179
|
-
commandExample: `amiko service chat ${JSON.stringify(message)}${opts.model ? ` --model ${opts.model}` : ""}`
|
|
20179
|
+
commandExample: `amiko market service chat ${JSON.stringify(message)}${opts.model ? ` --model ${opts.model}` : ""}`
|
|
20180
20180
|
});
|
|
20181
20181
|
const body = { message };
|
|
20182
20182
|
if (opts.model)
|
|
@@ -20196,7 +20196,7 @@ function registerServicesCommand(program2) {
|
|
|
20196
20196
|
cost: costLabel,
|
|
20197
20197
|
summary: `${method.toUpperCase()} ${path2}`,
|
|
20198
20198
|
yes: opts.yes,
|
|
20199
|
-
commandExample: `amiko service call ${method.toUpperCase()} ${path2}${bodyStr ? ` ${JSON.stringify(bodyStr)}` : ""}${opts.amiko ? ` --amiko ${opts.amiko}` : ""}${opts.usdc ? ` --usdc ${opts.usdc}` : ""}`
|
|
20199
|
+
commandExample: `amiko market service call ${method.toUpperCase()} ${path2}${bodyStr ? ` ${JSON.stringify(bodyStr)}` : ""}${opts.amiko ? ` --amiko ${opts.amiko}` : ""}${opts.usdc ? ` --usdc ${opts.usdc}` : ""}`
|
|
20200
20200
|
});
|
|
20201
20201
|
let body;
|
|
20202
20202
|
if (bodyStr) {
|
|
@@ -21152,16 +21152,17 @@ var didOnboard = await runOnboarding(process.argv);
|
|
|
21152
21152
|
if (didOnboard)
|
|
21153
21153
|
process.exit(0);
|
|
21154
21154
|
var program2 = new Command;
|
|
21155
|
-
program2.name("amiko").description("Amiko CLI — swap tokens, manage credits, bridge cross-chain, and call
|
|
21155
|
+
program2.name("amiko").description("Amiko CLI — swap tokens, manage credits, bridge cross-chain, and call marketplace services").version(PKG_VERSION);
|
|
21156
|
+
var market = program2.command("market").description("MPP marketplace — discover and call paid AMIKO services");
|
|
21156
21157
|
registerCreditsCommand(program2);
|
|
21157
|
-
registerSearchCommand(
|
|
21158
|
-
registerImageCommand(
|
|
21159
|
-
registerAmazonCommand(
|
|
21158
|
+
registerSearchCommand(market);
|
|
21159
|
+
registerImageCommand(market);
|
|
21160
|
+
registerAmazonCommand(market);
|
|
21160
21161
|
registerSwapCommand(program2);
|
|
21161
21162
|
registerBridgeCommand(program2);
|
|
21162
21163
|
registerConfigCommand(program2);
|
|
21163
|
-
registerServicesCommand(
|
|
21164
|
-
registerDiscoveryCommand(
|
|
21164
|
+
registerServicesCommand(market);
|
|
21165
|
+
registerDiscoveryCommand(market);
|
|
21165
21166
|
registerUpdateCommand(program2);
|
|
21166
21167
|
registerAccountsCommand(program2);
|
|
21167
21168
|
registerTwinCommand(program2);
|