@acedatacloud/skills 2026.516.0 → 2026.606.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@acedatacloud/skills",
3
- "version": "2026.516.0",
3
+ "version": "2026.606.0",
4
4
  "description": "Agent Skills for AceDataCloud AI services — music, image, video generation, LLM chat, web search. Compatible with Claude Code, GitHub Copilot, Gemini CLI, OpenAI Codex, and 30+ AI coding agents.",
5
5
  "keywords": [
6
6
  "agent-skills",
@@ -62,6 +62,7 @@ print(response.choices[0].message.content)
62
62
 
63
63
  | Model | Type | Best For |
64
64
  |-------|------|----------|
65
+ | `claude-opus-4-8` | Latest Opus | Highest capability |
65
66
  | `claude-opus-4-6` | Latest Opus | Highest capability |
66
67
  | `claude-sonnet-4-6` | Latest Sonnet | Balanced quality/speed |
67
68
  | `claude-opus-4-5-20251101` | Opus 4.5 | Premium tasks |
@@ -183,10 +184,10 @@ POST /v1/chat/completions
183
184
 
184
185
  ## Stateful Conversations Endpoint
185
186
 
186
- For stateful, session-based chat (no need to send the full history each time), use the `/aichat/conversations` endpoint:
187
+ For stateful, session-based chat (no need to send the full history each time), use `POST /aichat2/conversations` (recommended). `POST /aichat/conversations` remains available for legacy compatibility.
187
188
 
188
189
  ```bash
189
- curl -X POST https://api.acedata.cloud/aichat/conversations \
190
+ curl -X POST https://api.acedata.cloud/aichat2/conversations \
190
191
  -H "Authorization: Bearer $ACEDATACLOUD_API_TOKEN" \
191
192
  -H "Content-Type: application/json" \
192
193
  -d '{"model": "gpt-4.1", "question": "What is quantum computing?", "stateful": true}'
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: flux-image
3
- description: Generate and edit images with Flux (Black Forest Labs) via AceDataCloud API. Use when creating images from text prompts, editing existing images with text instructions, or when high-quality image generation is needed. Supports multiple Flux models including dev, pro, ultra, and kontext for editing.
3
+ description: Generate and edit images with Flux (Black Forest Labs) via AceDataCloud API. Use when creating images from text prompts, editing existing images with text instructions, or when high-quality image generation is needed. Supports multiple Flux models including dev, pro, Flux 2 variants, and kontext for editing.
4
4
  license: Apache-2.0
5
5
  metadata:
6
6
  author: acedatacloud
@@ -23,7 +23,7 @@ curl -X POST https://api.acedata.cloud/flux/images \
23
23
  -d '{"prompt": "a cat wearing a space helmet, photorealistic", "model": "flux-dev", "callback_url": "https://api.acedata.cloud/health"}'
24
24
  ```
25
25
 
26
- > **Async:** See [async task polling](../_shared/async-tasks.md). Poll via `POST /flux/tasks` with `{"task_id": "..."}`.
26
+ > **Async:** See [async task polling](../_shared/async-tasks.md). Poll via `POST /flux/tasks` with `{"id": "..."}`.
27
27
 
28
28
  ## Models
29
29
 
@@ -31,8 +31,9 @@ curl -X POST https://api.acedata.cloud/flux/images \
31
31
  |-------|---------|-------|-------|----------|
32
32
  | `flux-dev` | Good | Fast | 256–1440px | Quick generation (default) |
33
33
  | `flux-pro` | High | Medium | 256–1440px | Production work |
34
- | `flux-pro-1.1` | Higher | Medium | 256–1440px | Better prompt following |
35
- | `flux-pro-1.1-ultra` | Highest | Slow | Aspect ratios | Maximum quality |
34
+ | `flux-2-flex` | High | Fast | 256–1440px | Faster high-quality generation |
35
+ | `flux-2-pro` | Higher | Medium | 256–1440px | Better prompt following |
36
+ | `flux-2-max` | Highest | Slow | 256–1440px | Maximum quality generation |
36
37
  | `flux-kontext-pro` | High | Medium | Aspect ratios | Image editing |
37
38
  | `flux-kontext-max` | Highest | Slow | Aspect ratios | Complex editing |
38
39
 
@@ -43,7 +44,7 @@ POST /flux/images
43
44
  {
44
45
  "prompt": "a minimalist logo of a mountain",
45
46
  "action": "generate",
46
- "model": "flux-pro-1.1",
47
+ "model": "flux-2-pro",
47
48
  "size": "1024x1024",
48
49
  "count": 1
49
50
  }
@@ -51,10 +52,10 @@ POST /flux/images
51
52
 
52
53
  ### Size Options
53
54
 
54
- **For dev/pro/pro-1.1** (pixel dimensions):
55
+ **For dev/pro/flux-2** (pixel dimensions):
55
56
  - `"1024x1024"`, `"1344x768"`, `"768x1344"`, `"1024x576"`, `"576x1024"`
56
57
 
57
- **For ultra/kontext** (aspect ratios):
58
+ **For kontext** (aspect ratios):
58
59
  - `"1:1"`, `"16:9"`, `"9:16"`, `"4:3"`, `"3:4"`, `"3:2"`, `"2:3"`, `"21:9"`, `"9:21"`
59
60
 
60
61
  ## Edit Images
@@ -73,10 +74,10 @@ POST /flux/images
73
74
 
74
75
  ## Gotchas
75
76
 
76
- - Use pixel dimensions (e.g., `"1024x1024"`) with dev/pro models, aspect ratios (e.g., `"16:9"`) with ultra/kontext models
77
+ - Use pixel dimensions (e.g., `"1024x1024"`) with dev/pro/flux-2 models, aspect ratios (e.g., `"16:9"`) with kontext models
77
78
  - Editing requires kontext models (`flux-kontext-pro` or `flux-kontext-max`) — other models only support generation
78
79
  - `count` parameter generates multiple images in one request (increases cost proportionally)
79
- - Ultra model produces highest quality but is slowest — use dev for iteration, ultra for final output
80
- - All generation is async — always set `"callback_url"` to get a `task_id` immediately, then poll `/flux/tasks`
80
+ - `flux-2-max` produces highest quality but is slowest — use dev/flex for iteration and max for final output
81
+ - All generation is async — always set `"callback_url"` to get a task id immediately, then poll `/flux/tasks` using `{"id":"<task_id>"}` or `{"ids":[...],"action":"retrieve_batch"}`
81
82
 
82
83
  > **MCP:** `pip install mcp-flux-pro` | Hosted: `https://flux.mcp.acedata.cloud/mcp` | See [all MCP servers](../_shared/mcp-servers.md)
@@ -132,9 +132,17 @@ curl -sS -H "Authorization: Bearer $GOOGLE_GMAIL_TOKEN" \
132
132
  --get "https://gmail.googleapis.com/gmail/v1/users/me/messages" \
133
133
  --data-urlencode 'q=is:unread in:inbox newer_than:7d' \
134
134
  --data-urlencode 'maxResults=20' \
135
- | jq '.messages[]'
135
+ | jq '.messages // [] | .[]'
136
136
  ```
137
137
 
138
+ **Always default `.messages` to `[]`** — Gmail's `messages.list` omits the
139
+ field entirely when there are zero matches (the response is just
140
+ `{"resultSizeEstimate": 0}`), so a bare `.messages[]` will crash jq
141
+ with `Cannot iterate over null (null)` and exit 5. Same applies to
142
+ `.threads`, `.labels`, `.drafts` on their list endpoints. If the result
143
+ is empty, tell the user plainly (e.g. "No unread mail in the last 7
144
+ days") instead of retrying.
145
+
138
146
  The `messages.list` endpoint returns only `{id, threadId}` — you have
139
147
  to fan out to `messages.get` for headers / body. Cheap pattern: list
140
148
  ids → get with `format=metadata&metadataHeaders=From,Subject,Date` for
@@ -147,8 +155,10 @@ IDS=$(curl -sS -H "Authorization: Bearer $GOOGLE_GMAIL_TOKEN" \
147
155
  --get "https://gmail.googleapis.com/gmail/v1/users/me/messages" \
148
156
  --data-urlencode 'q=is:unread in:inbox' \
149
157
  --data-urlencode 'maxResults=10' \
150
- | jq -r '.messages[].id')
158
+ | jq -r '.messages // [] | .[].id')
151
159
 
160
+ # If $IDS is empty the for-loop below runs zero times — tell the user
161
+ # "no unread mail" rather than echoing an empty result.
152
162
  for ID in $IDS; do
153
163
  curl -sS -H "Authorization: Bearer $GOOGLE_GMAIL_TOKEN" \
154
164
  --get "https://gmail.googleapis.com/gmail/v1/users/me/messages/$ID" \
@@ -195,7 +205,7 @@ curl -sS -H "Authorization: Bearer $GOOGLE_GMAIL_TOKEN" \
195
205
  --data-urlencode 'metadataHeaders=From' \
196
206
  --data-urlencode 'metadataHeaders=Subject' \
197
207
  --data-urlencode 'metadataHeaders=Date' \
198
- | jq '{id, historyId, messages: [.messages[] | {id, snippet, from: (.payload.headers | from_entries.From), date: (.payload.headers | from_entries.Date)}]}'
208
+ | jq '{id, historyId, messages: [(.messages // [])[] | {id, snippet, from: (.payload.headers | from_entries.From), date: (.payload.headers | from_entries.Date)}]}'
199
209
  ```
200
210
 
201
211
  ### Search by Gmail query
@@ -23,7 +23,7 @@ curl -X POST https://api.acedata.cloud/suno/audios \
23
23
  -d '{"prompt": "a happy pop song about coding", "model": "chirp-v5-5", "callback_url": "https://api.acedata.cloud/health"}'
24
24
  ```
25
25
 
26
- > **Async:** All generation is async. See [async task polling](../_shared/async-tasks.md). Poll via `POST /suno/tasks` with `{"task_id": "..."}` every 3-5 seconds.
26
+ > **Async:** All generation is async. See [async task polling](../_shared/async-tasks.md). Poll via `POST /suno/tasks` with `{"id": "<task_id>"}` every 3-5 seconds.
27
27
 
28
28
  ## Available Models
29
29
 
@@ -103,7 +103,7 @@ For best results follow this multi-step workflow:
103
103
  1. **Generate lyrics** — `POST /suno/lyrics` with a topic/prompt
104
104
  2. **Optimize style** — `POST /suno/style` to refine style description
105
105
  3. **Generate music** — `POST /suno/audios` with custom action, lyrics + style
106
- 4. **Poll task** — `POST /suno/tasks` with task_id until status is complete
106
+ 4. **Poll task** — `POST /suno/tasks` with `id` (or `ids` for batch) until status is complete
107
107
  5. **Optional: Extend** — Use extend action to add more sections
108
108
  6. **Optional: Concat** — Use concat action to merge extended segments
109
109
  7. **Optional: Convert** — Get WAV (`/suno/wav`), MIDI (`/suno/midi`), or MP4 (`/suno/mp4`)
@@ -149,7 +149,7 @@ For best results follow this multi-step workflow:
149
149
 
150
150
  | Parameter | Type | Description |
151
151
  |-----------|------|-------------|
152
- | `lyric_prompt` | string | Prompt for auto-generating lyrics (used when `custom: true` without explicit `lyric`) |
152
+ | `lyric_prompt` | object | Structured prompt payload for auto-generating lyrics (used when `custom: true` without explicit `lyric`) |
153
153
  | `style_negative` | string | Style tags to avoid (e.g., `"heavy metal, distortion"`) |
154
154
  | `style_influence` | number | Strength of style influence (advanced custom mode, v5+ only) |
155
155
  | `audio_weight` | number | Weight for audio reference when covering (advanced, v5+ only) |
@@ -174,7 +174,7 @@ Ending lyrics
174
174
 
175
175
  ## Gotchas
176
176
 
177
- - All generation is **async** — always set `"callback_url"` to get a `task_id` immediately, then poll `/suno/tasks`
177
+ - All generation is **async** — always set `"callback_url"` to get a task id immediately, then poll `/suno/tasks` using `{"id":"<task_id>"}` or `{"ids":[...],"action":"retrieve_batch"}`
178
178
  - **CRITICAL:** Check the `state` field — only `state: "complete"` with `success: true` means done. During `pending`, the API may return intermediate `audio_url` values (streaming previews). Do NOT stop polling just because `audio_url` is non-empty
179
179
  - Lyrics max ~3000 characters. For longer songs, use the **extend** workflow
180
180
  - Style tags are descriptive phrases, not enum values (e.g., "Synthwave, Electronic, Dreamy")