@sogni-ai/sogni-creative-agent-skill 2.2.0 → 3.1.0-alpha.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 +51 -14
- package/SKILL.md +121 -27
- package/generated/creative-agent-runtime.mjs +2502 -4813
- package/llm.txt +16 -6
- package/openclaw.plugin.json +25 -2
- package/package.json +17 -3
- package/scripts/check-creative-agent-source.mjs +104 -0
- package/skill-package.json +1 -1
- package/sogni-agent.mjs +1458 -187
- package/ssrf-guard.mjs +2 -1
- package/version.mjs +1 -1
package/README.md
CHANGED
|
@@ -68,7 +68,7 @@ With this skill, an agent can:
|
|
|
68
68
|
|
|
69
69
|
## Quick Start
|
|
70
70
|
|
|
71
|
-
1. Get a Sogni API key from [dashboard.sogni.ai](https://dashboard.sogni.ai) (
|
|
71
|
+
1. Get a Sogni API key from [dashboard.sogni.ai](https://dashboard.sogni.ai) (open the account menu) and save it — see [Setup](#setup-sogni-api-key).
|
|
72
72
|
2. Install the CLI:
|
|
73
73
|
|
|
74
74
|
```bash
|
|
@@ -147,7 +147,7 @@ The generated `.openclaw-link/` directory is only for OpenClaw; Hermes, Manus, a
|
|
|
147
147
|
|
|
148
148
|
#### OpenClaw configuration
|
|
149
149
|
|
|
150
|
-
When loaded through OpenClaw, this skill reads plugin defaults from OpenClaw config; CLI flags always override them. The supported config schema is defined in [`openclaw.plugin.json`](./openclaw.plugin.json) and includes default models, video workflow models, hosted API defaults (`apiBaseUrl`, `defaultLlmModel`, `defaultApiToolMode
|
|
150
|
+
When loaded through OpenClaw, this skill reads plugin defaults from OpenClaw config; CLI flags always override them. The supported config schema is defined in [`openclaw.plugin.json`](./openclaw.plugin.json) and includes default models, video workflow models, hosted API defaults (`apiBaseUrl`, `defaultLlmModel`, `defaultTaskProfile`, `defaultApiMaxTokens`, `defaultApiThinking`, `defaultApiToolMode`, workflow cost defaults), token type, seed strategy, timeouts, and media paths. If your OpenClaw config lives elsewhere, set `OPENCLAW_CONFIG_PATH`.
|
|
151
151
|
|
|
152
152
|
### Hermes Agent / Manus / other frameworks
|
|
153
153
|
|
|
@@ -186,7 +186,7 @@ If the checkout is missing, use the npm install path above or explicitly approve
|
|
|
186
186
|
|
|
187
187
|
## Setup (Sogni API key)
|
|
188
188
|
|
|
189
|
-
1. Get your API key from [dashboard.sogni.ai](https://dashboard.sogni.ai) (
|
|
189
|
+
1. Get your API key from [dashboard.sogni.ai](https://dashboard.sogni.ai) (open the account menu).
|
|
190
190
|
2. Save it to a credentials file:
|
|
191
191
|
|
|
192
192
|
```bash
|
|
@@ -262,19 +262,48 @@ sogni-agent --music --lyrics "Rise with the morning light" --bpm 128 \
|
|
|
262
262
|
sogni-agent --video --reference-audio-identity voice.webm \
|
|
263
263
|
'NARRATOR: "This is my voice."'
|
|
264
264
|
|
|
265
|
-
# Hosted chat with
|
|
265
|
+
# Hosted chat with Sogni creative-agent tools (/v1/chat/completions)
|
|
266
266
|
sogni-agent --api-chat \
|
|
267
267
|
"Create a 4-shot product video concept for a red sneaker"
|
|
268
268
|
|
|
269
|
+
# Hosted chat with image vision plus media-reference metadata
|
|
270
|
+
sogni-agent --api-chat --ref product.jpg \
|
|
271
|
+
"Turn this into a launch poster and describe the edit plan"
|
|
272
|
+
|
|
273
|
+
# Hosted chat controls and model discovery
|
|
274
|
+
sogni-agent --api-chat --task-profile reasoning --no-thinking \
|
|
275
|
+
"Plan a concise multi-step product launch workflow"
|
|
276
|
+
sogni-agent --list-api-models
|
|
277
|
+
|
|
269
278
|
# Durable hosted workflow (/v1/creative-agent/workflows)
|
|
270
|
-
sogni-agent --api-workflow
|
|
279
|
+
sogni-agent --api-workflow \
|
|
271
280
|
--video-prompt "The camera slowly pushes in as the sketch comes alive" \
|
|
272
281
|
"A graphite robot sketch on a drafting table"
|
|
273
282
|
|
|
283
|
+
# Durable workflow with a media reference and a cost ceiling
|
|
284
|
+
sogni-agent --api-workflow --ref https://cdn.example.com/sketch.png \
|
|
285
|
+
--workflow-max-cost 25 --confirm-cost \
|
|
286
|
+
--video-prompt "The camera slowly pushes in as the sketch comes alive" \
|
|
287
|
+
"Animate the referenced sketch"
|
|
288
|
+
|
|
289
|
+
# Exact durable workflow input
|
|
290
|
+
sogni-agent --api-workflow --workflow-input @workflow.json
|
|
291
|
+
|
|
274
292
|
# Storyline -> GPT Image 2 storyboard sheet -> Seedance video sequence
|
|
275
293
|
sogni-agent --api-workflow storyboard-video --storyboard-frames 6 --duration 12 -Q hq \
|
|
276
294
|
"Create a 9:16 bakery launch video with a neon street-window reveal"
|
|
277
295
|
|
|
296
|
+
# Sogni Intelligence replay records
|
|
297
|
+
sogni-agent --list-replays 20
|
|
298
|
+
sogni-agent --get-replay run_abc123 --json
|
|
299
|
+
|
|
300
|
+
# Opt in to SDK transport for hosted operations (durable workflows + chat).
|
|
301
|
+
# Validates restEndpoint/socketEndpoint via the skill's SSRF guard, then
|
|
302
|
+
# calls sogni.workflows.* / .chat.completions.* directly.
|
|
303
|
+
# Falls back to the legacy SSRF-validated fetch path when the env is unset.
|
|
304
|
+
export SOGNI_SKILL_USE_SDK_TRANSPORT=1
|
|
305
|
+
sogni-agent --api-workflow storyboard-video "10s neon city flyover"
|
|
306
|
+
|
|
278
307
|
# Local segment + concat with external soundtrack
|
|
279
308
|
sogni-agent --video --workflow v2v --ref-video dance.mp4 \
|
|
280
309
|
--video-start 10 --duration 8 --controlnet-name pose -o /tmp/clip-2.mp4 \
|
|
@@ -311,12 +340,15 @@ Run `sogni-agent --help` for the full CLI. Below are the options and tables most
|
|
|
311
340
|
| `--target-resolution <px>` | Target the short side, preserving aspect ratio |
|
|
312
341
|
| `--workflow <type>` | Force `t2v`, `i2v`, `s2v`, `ia2v`, `a2v`, `v2v`, or animate workflows |
|
|
313
342
|
| `--api-chat` | Use `/v1/chat/completions` with Sogni creative-agent tools |
|
|
314
|
-
| `--api-workflow
|
|
315
|
-
| `--workflow-input <json
|
|
343
|
+
| `--api-workflow` | Start a `/v1/creative-agent/workflows` durable workflow with explicit `input.steps`; optional `storyboard-video` preset |
|
|
344
|
+
| `--workflow-input <json\|@path>` | Explicit durable workflow input JSON. Use `@path` to load JSON from a file. |
|
|
345
|
+
| `--workflow-max-cost <n>`, `--confirm-cost`, `--no-confirm-cost` | Set durable workflow capacity ceiling and explicit cost confirmation |
|
|
316
346
|
| `--storyboard-frames <n>` | Beat count for `--api-workflow storyboard-video` |
|
|
317
|
-
| `--video-prompt`, `--negative-prompt`, `--generate-audio`, `--expand-prompt` |
|
|
347
|
+
| `--video-prompt`, `--negative-prompt`, `--generate-audio`, `--expand-prompt` | Generated-keyframe durable workflow step controls |
|
|
318
348
|
| `--watch-workflow`, `--list-workflows`, `--get-workflow <id>`, `--workflow-events <id>`, `--stream-workflow <id>`, `--cancel-workflow <id>` | Manage durable workflows |
|
|
319
|
-
| `--api-tools <mode>`, `--no-api-tool-execution`, `--llm-model <id>`, `--api-base-url <url>` | Tune hosted API requests |
|
|
349
|
+
| `--api-tools <mode>`, `--no-api-tool-execution`, `--llm-model <id>`, `--task-profile <profile>`, `--max-tokens <n>`, `--thinking` / `--no-thinking`, `--api-base-url <url>` | Tune hosted API requests |
|
|
350
|
+
| `--list-api-models`, `--get-api-model <id>` | Inspect Sogni Intelligence LLM models |
|
|
351
|
+
| `--list-replays [n]`, `--get-replay <id>`, `--ingest-replay <json\|@path>` | Manage Sogni Intelligence replay records (use `@path` to load JSON from a file) |
|
|
320
352
|
| `--persona <name>` | Use a saved persona |
|
|
321
353
|
| `--concat-videos <out> <clips...>` | Stitch clips locally with FFmpeg |
|
|
322
354
|
| `--last`, `--last-image` | Inspect last render / reuse last image as context or video reference |
|
|
@@ -474,17 +506,22 @@ Stored at `~/.config/sogni/personality.txt`.
|
|
|
474
506
|
|
|
475
507
|
Hosted API modes require `SOGNI_API_KEY`.
|
|
476
508
|
|
|
477
|
-
- **`--api-chat`** targets `/v1/chat/completions` with
|
|
478
|
-
-
|
|
509
|
+
- **`--api-chat`** targets `/v1/chat/completions` with Sogni creative-agent tools — best for text-first natural-language workflows. The CLI sanitizes prompt-injection markers before forwarding messages and can use the current server-side creative-agent media tools, including video extension, segment replacement, overlays, subtitles, stitch/orbit/dance composition, and generated artifact indexing. Tune with `--api-tools creative-agent|creative-tools|none`, `--no-api-tool-execution`, `--llm-model`, and `--system`.
|
|
510
|
+
- **Sogni Intelligence controls** include `--task-profile general|coding|reasoning`, `--max-tokens`, and `--thinking` / `--no-thinking`, which forward to `/v1/chat/completions` as `task_profile`, `max_tokens`, and `chat_template_kwargs.enable_thinking`. Use `--list-api-models` or `--get-api-model <id>` to inspect `/v1/models`.
|
|
511
|
+
- **`--api-workflow`** targets `/v1/creative-agent/workflows` for durable, async workflow records with event streaming and cancellation. Requests carry `input.steps` plus snake_case controls such as `token_type`, `media_references`, `max_estimated_capacity_units`, and `confirm_cost`.
|
|
512
|
+
- **`--workflow-input`** forwards exact durable workflow JSON (`{ title?, steps: [...] }`). Use this when you need exact multi-step behavior such as repeated `replace_video_segment` steps with `replacementStartSeconds` / `replacementEndSeconds` for interleaved video slices.
|
|
479
513
|
- **`--api-workflow storyboard-video`** generates a storyline, creates a single GPT Image 2 storyboard sheet, then passes that artifact into Seedance as the video reference. The `-Q fast|hq|pro` preset maps to GPT Image 2 low/medium/high quality for that storyboard sheet.
|
|
480
|
-
-
|
|
514
|
+
- **Media references** from `-c`, `--ref`, `--ref-end`, `--ref-audio`, `--reference-audio-identity`, and `--ref-video` are forwarded as `media_references` metadata in hosted API requests. API chat also attaches image refs as vision inputs. Local file references are uploaded to Sogni media storage first, then forwarded as retrievable URLs so durable executors do not depend on `data:` URI support. Durable workflow JSON can bind those references into step arguments with `sourceStepId: "$input_media"`. Use direct CLI mode for private media that must not leave the local machine.
|
|
515
|
+
- **Cost controls** use `--workflow-max-cost <n>` to reject workflow starts above a capacity-unit ceiling, and `--confirm-cost` / `--no-confirm-cost` to forward explicit billing confirmation.
|
|
516
|
+
- Manage runs with `--watch-workflow`, `--workflow-events`, `--stream-workflow`, `--list-workflows`, `--get-workflow`, and `--cancel-workflow`. Use `--workflow-input` to provide exact durable workflow JSON.
|
|
517
|
+
- **Replay records** use `/v1/replay/records`: `--list-replays [limit]`, `--get-replay <runId>`, and `--ingest-replay <json|path|@path>` expose redacted RunRecord storage for Sogni Intelligence replay/debug viewers.
|
|
481
518
|
|
|
482
519
|
Override the API origin with `--api-base-url`, `SOGNI_API_BASE_URL`, or `SOGNI_REST_ENDPOINT`.
|
|
483
520
|
Hosted API credentials are only sent to `https://api.sogni.ai` by default. Add trusted custom
|
|
484
521
|
hosts with `SOGNI_API_ALLOWED_HOSTS`; loopback or non-HTTPS local testing requires
|
|
485
522
|
`SOGNI_ALLOW_UNSAFE_API_BASE_URL=1`.
|
|
486
523
|
|
|
487
|
-
>
|
|
524
|
+
> The public skill consumes generated storyboard adapters from `../sogni-creative-agent`: `compileForModel()` now works in the bundled runtime for Seedance, GPT Image 2, LTX-2.3, and WAN storyboard stages.
|
|
488
525
|
|
|
489
526
|
---
|
|
490
527
|
|
|
@@ -520,7 +557,7 @@ Tries SPARK first (free daily tokens), then falls back to SOGNI if the balance i
|
|
|
520
557
|
## Error Reporting & Output
|
|
521
558
|
|
|
522
559
|
- **Exit codes:** failures use a non-zero exit code with human-readable stderr.
|
|
523
|
-
- **Structured output:** add `--json` when an agent needs machine-parseable success/error data, or `--last` to inspect the last render.
|
|
560
|
+
- **Structured output:** add `--json` when an agent needs machine-parseable success/error data, or `--last` to inspect the last render. JSON failures include canonical `errorType`, `errorCategory`, and `retryable` fields where the shared runtime can classify the error.
|
|
524
561
|
- **Output files:** use `-o <path>` to save locally; otherwise the CLI prints a result URL.
|
|
525
562
|
- **Quiet mode:** `-q` / `--quiet` suppresses progress output without changing exit semantics.
|
|
526
563
|
|
package/SKILL.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: sogni-creative-agent-skill
|
|
3
3
|
description: "Sogni Creative Agent Skill: agent skill and CLI for image, video, and music generation using Sogni AI's decentralized GPU network. Supports personas (named people with saved reference photos and voice clips), persistent memories (user preferences across sessions), custom personality, style transfer, angle synthesis, and multi-step creative workflows. Ask the agent to \"draw\", \"generate\", \"create an image\", \"make a video/animate\", \"make music\", \"apply a style\", or \"generate me as a superhero\"."
|
|
4
4
|
metadata:
|
|
5
|
-
version: "2.
|
|
5
|
+
version: "2.3.0"
|
|
6
6
|
homepage: https://sogni.ai
|
|
7
7
|
clawdbot:
|
|
8
8
|
emoji: "🎨"
|
|
@@ -36,7 +36,7 @@ metadata:
|
|
|
36
36
|
|
|
37
37
|
Generate **images, videos, and music** using Sogni AI's decentralized GPU network.
|
|
38
38
|
|
|
39
|
-
> **Per-skill view**: hosts that want to load focused capabilities rather than this monolith can read [`skills/README.md`](./skills/README.md) for the per-skill index — one markdown file per skill (`image_generation`, `image_editing`, `video_generation`, `video_editing`, `music_generation`, `media_analysis`, `persona_management`, `app_settings`, plus the always-loaded `quality_audit`, `session_control`, `asset_reference_management`). Each file mirrors the canonical manifest in `@sogni/creative-agent`. The whole-monolith load below stays the default for OpenClaw / Claude Code / Hermes Agent / Manus AI integrations.
|
|
39
|
+
> **Per-skill view**: hosts that want to load focused capabilities rather than this monolith can read [`skills/README.md`](./skills/README.md) for the per-skill index — one markdown file per skill (`image_generation`, `image_editing`, `video_generation`, `video_editing`, `music_generation`, `media_analysis`, `persona_management`, `app_settings`, `composition_planning`, plus the always-loaded `quality_audit`, `session_control`, `asset_reference_management`). Each file mirrors the canonical manifest in `@sogni/creative-agent`. The whole-monolith load below stays the default for OpenClaw / Claude Code / Hermes Agent / Manus AI integrations.
|
|
40
40
|
|
|
41
41
|
## Install Request Policy
|
|
42
42
|
|
|
@@ -72,7 +72,7 @@ If that checkout does not exist, prefer the npm-based local skill install below,
|
|
|
72
72
|
|
|
73
73
|
## Setup
|
|
74
74
|
|
|
75
|
-
1. **Get your Sogni API key** by logging into https://dashboard.sogni.ai and
|
|
75
|
+
1. **Get your Sogni API key** by logging into https://dashboard.sogni.ai and opening the account menu.
|
|
76
76
|
2. **Create an API key credentials file:**
|
|
77
77
|
```bash
|
|
78
78
|
mkdir -p ~/.config/sogni
|
|
@@ -82,7 +82,7 @@ EOF
|
|
|
82
82
|
chmod 600 ~/.config/sogni/credentials
|
|
83
83
|
```
|
|
84
84
|
|
|
85
|
-
You can also export `SOGNI_API_KEY` instead of writing the file. The API key can always be found by logging into https://dashboard.sogni.ai and
|
|
85
|
+
You can also export `SOGNI_API_KEY` instead of writing the file. The API key can always be found by logging into https://dashboard.sogni.ai and opening the account menu.
|
|
86
86
|
|
|
87
87
|
3. **Install the CLI and skill by default:**
|
|
88
88
|
```bash
|
|
@@ -124,13 +124,33 @@ Path override environment variables:
|
|
|
124
124
|
- `SOGNI_MEDIA_INBOUND_DIR`
|
|
125
125
|
- `OPENCLAW_CONFIG_PATH`
|
|
126
126
|
|
|
127
|
-
##
|
|
127
|
+
## Recommended path: route through the hosted Sogni Intelligence endpoints
|
|
128
|
+
|
|
129
|
+
For any natural-language creative request — anything that should be planned, multi-step, or that benefits from tool selection, repair, or durable workflows — prefer the hosted endpoints over the direct-to-SDK flags. The hosted endpoints are the canonical home for tool dispatch, Structured Contracts v1 (gating policies, repair recipes, prompt contracts), durable workflows, replay, and asset-manifest mapping. They stay aligned with `sogni-chat` and the rest of the `@sogni/creative-agent` consumers automatically.
|
|
130
|
+
|
|
131
|
+
```bash
|
|
132
|
+
# Natural-language creative request (LLM picks the tool, dispatches, repairs)
|
|
133
|
+
node sogni-agent.mjs --api-chat "Turn the attached product photo into a launch poster" --ref product.jpg
|
|
134
|
+
|
|
135
|
+
# Multi-step durable workflow (resumable, replay-friendly, server-orchestrated)
|
|
136
|
+
node sogni-agent.mjs --api-workflow \
|
|
137
|
+
--video-prompt "The camera slowly pushes in" \
|
|
138
|
+
"A graphite robot sketch on a drafting table"
|
|
139
|
+
|
|
140
|
+
# Storyboard → keyframe → Seedance, all server-side
|
|
141
|
+
node sogni-agent.mjs --api-workflow storyboard-video --storyboard-frames 6 -Q hq \
|
|
142
|
+
"Create a 9:16 bakery launch video with a neon street-window reveal"
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
The direct-to-SDK flags below remain available for explicit one-shot generation when you already know the exact model, dimensions, and prompt and don't need LLM planning. Use them when latency or cost rules out the LLM round-trip.
|
|
146
|
+
|
|
147
|
+
## Usage (direct-to-SDK image, video & music)
|
|
128
148
|
|
|
129
149
|
```bash
|
|
130
150
|
# Generate and get URL
|
|
131
151
|
node sogni-agent.mjs "a cat wearing a hat"
|
|
132
152
|
|
|
133
|
-
# Quality presets (recommended — auto-selects model, steps, and size)
|
|
153
|
+
# Quality presets (recommended for direct mode — auto-selects model, steps, and size)
|
|
134
154
|
node sogni-agent.mjs -Q fast "a cat wearing a hat" # z_image_turbo, 8 steps, 512x512 (~5-10s)
|
|
135
155
|
node sogni-agent.mjs -Q hq "a cat wearing a hat" # z_image_turbo, default steps, 768x768 (~10-15s)
|
|
136
156
|
node sogni-agent.mjs -Q pro "a cat wearing a hat" # flux2_dev, 40 steps, 1024x1024 (~2min)
|
|
@@ -165,32 +185,82 @@ node sogni-agent.mjs --music --duration 30 \
|
|
|
165
185
|
node sogni-agent.mjs --music --lyrics "Rise with the morning light" --bpm 128 \
|
|
166
186
|
--keyscale "C major" --output-format mp3 "bright indie pop chorus"
|
|
167
187
|
|
|
168
|
-
# Hosted API chat: natural-language
|
|
188
|
+
# Hosted API chat: natural-language creative-agent tool execution
|
|
169
189
|
node sogni-agent.mjs --api-chat "Create a 4-shot product video concept for a red sneaker"
|
|
170
190
|
|
|
171
|
-
#
|
|
172
|
-
node sogni-agent.mjs --api-
|
|
191
|
+
# Hosted API chat with image vision and media-reference metadata
|
|
192
|
+
node sogni-agent.mjs --api-chat --ref product.jpg \
|
|
193
|
+
"Turn this into a launch poster and describe the edit plan"
|
|
194
|
+
|
|
195
|
+
# Sogni Intelligence model/replay utilities
|
|
196
|
+
node sogni-agent.mjs --list-api-models
|
|
197
|
+
node sogni-agent.mjs --api-chat --task-profile reasoning --no-thinking \
|
|
198
|
+
"Plan a concise multi-step product launch workflow"
|
|
199
|
+
node sogni-agent.mjs --list-replays 20
|
|
200
|
+
node sogni-agent.mjs --get-replay run_abc123 --json
|
|
201
|
+
|
|
202
|
+
# Durable API workflow: generated keyframe to video with resumable workflow record
|
|
203
|
+
node sogni-agent.mjs --api-workflow \
|
|
173
204
|
--video-prompt "The camera slowly pushes in as the sketch comes alive" \
|
|
174
205
|
"A graphite robot sketch on a drafting table"
|
|
175
206
|
|
|
207
|
+
# Durable API workflow with media reference and cost controls
|
|
208
|
+
node sogni-agent.mjs --api-workflow \
|
|
209
|
+
--ref https://cdn.example.com/sketch.png \
|
|
210
|
+
--workflow-max-cost 25 --confirm-cost \
|
|
211
|
+
--video-prompt "The camera slowly pushes in as the sketch comes alive" \
|
|
212
|
+
"Animate the referenced sketch"
|
|
213
|
+
|
|
214
|
+
# Exact durable workflow input with explicit steps
|
|
215
|
+
node sogni-agent.mjs --api-workflow --workflow-input @workflow.json
|
|
216
|
+
|
|
176
217
|
# Durable storyboard-video workflow: storyline -> GPT Image 2 storyboard -> Seedance
|
|
177
218
|
node sogni-agent.mjs --api-workflow storyboard-video --storyboard-frames 6 --duration 12 -Q hq \
|
|
178
219
|
"Create a 9:16 bakery launch video with a neon street-window reveal"
|
|
179
220
|
```
|
|
180
221
|
|
|
181
222
|
Use `--api-chat` for text-first natural-language workflows that should go through
|
|
182
|
-
Sogni API's OpenAI-compatible `/v1/chat/completions` tool loop.
|
|
183
|
-
|
|
184
|
-
|
|
223
|
+
Sogni API's OpenAI-compatible `/v1/chat/completions` tool loop. This path
|
|
224
|
+
sanitizes prompt-injection markers before forwarding messages and uses the
|
|
225
|
+
current hosted creative-agent tool surface. Use `--api-workflow` when the caller
|
|
226
|
+
already knows it wants an async durable workflow record under
|
|
227
|
+
`/v1/creative-agent/workflows`. Use `--workflow-input @workflow.json` when the
|
|
228
|
+
caller already has exact durable workflow input with `steps`; the skill forwards
|
|
229
|
+
that body to the API as-is. This is the preferred hosted path for
|
|
230
|
+
exact multi-step plans, including repeated `replace_video_segment` operations
|
|
231
|
+
with `replacementStartSeconds` / `replacementEndSeconds` when interleaving
|
|
232
|
+
existing video slices. Use `--api-workflow storyboard-video`
|
|
185
233
|
when the caller wants the hosted sequence to generate a storyline, create one GPT
|
|
186
234
|
Image 2 storyboard sheet, and feed that image artifact into Seedance as the video
|
|
187
235
|
reference. The `-Q fast|hq|pro` preset maps to GPT Image 2 low|medium|high
|
|
188
|
-
quality for the storyboard sheet.
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
236
|
+
quality for the storyboard sheet. Hosted API requests forward media references
|
|
237
|
+
from `-c`, `--ref`, `--ref-end`, `--ref-audio`,
|
|
238
|
+
`--reference-audio-identity`, and `--ref-video` as `media_references`
|
|
239
|
+
metadata; workflow JSON can bind them into step arguments with
|
|
240
|
+
`sourceStepId: "$input_media"`, and API chat also attaches image refs as vision
|
|
241
|
+
inputs. Local file references are uploaded to Sogni media storage first, then
|
|
242
|
+
forwarded as retrievable URLs for hosted chat and durable workflows. Use the
|
|
243
|
+
direct CLI path for private media that must not leave the local machine.
|
|
244
|
+
Use `--workflow-max-cost <n>` plus `--confirm-cost` / `--no-confirm-cost` to
|
|
245
|
+
forward explicit workflow cost policy.
|
|
246
|
+
Sogni Intelligence utilities are exposed through the same API key path:
|
|
247
|
+
`--list-api-models` / `--get-api-model <id>` read `/v1/models`,
|
|
248
|
+
`--task-profile`, `--max-tokens`, and `--thinking` / `--no-thinking` tune
|
|
249
|
+
`/v1/chat/completions`, and `--list-replays`, `--get-replay`, and
|
|
250
|
+
`--ingest-replay` manage `/v1/replay/records` RunRecords for replay/debug
|
|
251
|
+
viewers.
|
|
252
|
+
Hosted API modes require `SOGNI_API_KEY`; this skill's CLI uses API-key
|
|
253
|
+
authentication.
|
|
254
|
+
|
|
255
|
+
For durable hosted chat runs (long-running multi-tool turns that should
|
|
256
|
+
survive a client disconnect), the SDK now exposes
|
|
257
|
+
`sogni.chat.runs.{create, get, cancel, streamEvents}`.
|
|
258
|
+
Set `SOGNI_SKILL_USE_SDK_TRANSPORT=1` to route hosted workflow + chat
|
|
259
|
+
operations through the SDK transport instead of the legacy
|
|
260
|
+
SSRF-validated fetch path. The skill's `sogni-hosted-client.mjs`
|
|
261
|
+
factory still validates `restEndpoint` / `socketEndpoint` against the
|
|
262
|
+
SSRF guard before constructing the SDK client, so the safety contract
|
|
263
|
+
holds.
|
|
194
264
|
|
|
195
265
|
When changing hosted API chat/workflow behavior, keep reusable validation,
|
|
196
266
|
workflow compilation, repair-control, and guard telemetry logic in
|
|
@@ -286,18 +356,34 @@ positions.
|
|
|
286
356
|
| `--concat-audio <path>` | Optional audio track to mux over `--concat-videos` output | - |
|
|
287
357
|
| `--concat-audio-start <sec>` | Start offset into `--concat-audio` | - |
|
|
288
358
|
| `--list-media [type]` | List recent inbound media (images\|audio\|all) | images |
|
|
289
|
-
| `--api-chat` | Call `/v1/chat/completions` with
|
|
290
|
-
| `--api-tools <mode>` | API tool mode: creative-agent\|
|
|
359
|
+
| `--api-chat` | Call `/v1/chat/completions` with Sogni creative-agent tool injection | - |
|
|
360
|
+
| `--api-tools <mode>` | API tool mode: creative-agent\|creative-tools\|none | creative-agent |
|
|
291
361
|
| `--no-api-tool-execution` | Plan/tool-call via API chat without executing Sogni tools | - |
|
|
292
362
|
| `--llm-model <id>` | LLM model for `--api-chat` | qwen3.6-35b-a3b-gguf-iq4xs |
|
|
293
|
-
| `--
|
|
294
|
-
| `--
|
|
295
|
-
| `--
|
|
363
|
+
| `--task-profile <profile>` | Sogni Intelligence task profile: general\|coding\|reasoning | - |
|
|
364
|
+
| `--max-tokens <n>` | Max hosted chat completion tokens | 1600 |
|
|
365
|
+
| `--thinking`, `--no-thinking` | Toggle `chat_template_kwargs.enable_thinking` for hosted chat | server default |
|
|
366
|
+
| `--list-api-models`, `--get-api-model <id>` | Inspect Sogni Intelligence LLM model metadata | - |
|
|
367
|
+
| `--list-replays [n]`, `--get-replay <id>`, `--ingest-replay <json\|@path>` | Manage Sogni Intelligence replay RunRecords. List/get output is run through `redactRunRecord` from `@sogni/creative-agent/replay` before printing, so signed URLs, bearer tokens, JWTs, and PEM blocks cannot leak via the CLI. Use `@path` to load JSON from a file. | - |
|
|
368
|
+
| `--skip-redact`, `--no-redact` | Bypass the replay redactor on `--list-replays` / `--get-replay`. Debug-only — emits unredacted RunRecord payloads. | redacted |
|
|
369
|
+
| `--turn-classify` | Print the public-skill turn policy (`visibleTools`, `forbiddenTools`, `requiredTools`) the default contract runtime would produce for the current session-state flags. Mirrors the chat / `/v1/chat/completions` Structured Contracts v1 pipeline. | - |
|
|
370
|
+
| `--compile-tools` | Print the per-turn compiled tool surface (filtered tool list + prompt-contract fragments) the default contract runtime emits. | - |
|
|
371
|
+
| `--dispatch-tool <name>` | Print the dispatch verdict (`allowed`, `mode`, repair recipe, suggested args) the default contract runtime would return for a tool call. Combine with `--tool-args` to supply arguments. | - |
|
|
372
|
+
| `--tool-args <json>` | JSON arguments for `--dispatch-tool`. | `{}` |
|
|
373
|
+
| `--storyboard-plan` | Build a storyboard project from the prompt locally (`buildStoryboardProject` + per-model adapter compilation via `compileForModel`) and print the plan as JSON. Does not call the network. Expects scene-structured prompt input (`SCENE NN - Title` / `VISUAL:` / `ACTION:` / `CAMERA:` / `AUDIO/SFX:` blocks) — for casual prompts, use `--api-workflow storyboard-video` instead, which runs an LLM storyline expansion first. Pair with `--storyboard-plan-frames`, `--storyboard-plan-model`, `--storyboard-plan-stage`. | - |
|
|
374
|
+
| `--storyboard-plan-frames <n>` | Frame count for `--storyboard-plan`. | inferred |
|
|
375
|
+
| `--storyboard-plan-model <id>` | Adapter target for `--storyboard-plan` (seedance, seedance2, gpt-image-2, ltx23, wan). | inferred |
|
|
376
|
+
| `--storyboard-plan-stage <stage>` | Compilation stage for `--storyboard-plan` (storyboard_image, scene_clip). | storyboard_image |
|
|
377
|
+
| `--api-workflow` | Start a durable workflow with explicit `input.steps`; optional `storyboard-video` preset | - |
|
|
378
|
+
| `--workflow-input <json\|@path>` | Durable workflow input JSON. Use `@path` to load from a file. | - |
|
|
379
|
+
| `--workflow-title <text>` | Title for generated or storyboard durable workflow input | - |
|
|
380
|
+
| `--workflow-max-cost <n>` | Reject hosted workflow starts above this estimated capacity-unit ceiling | - |
|
|
381
|
+
| `--confirm-cost`, `--no-confirm-cost` | Forward explicit hosted workflow cost confirmation | - |
|
|
296
382
|
| `--storyboard-frames <n>` | Beat count for storyboard-video workflow | - |
|
|
297
|
-
| `--video-prompt <text>` | Motion prompt for durable
|
|
298
|
-
| `--negative-prompt <text>` | Negative prompt for durable
|
|
299
|
-
| `--generate-audio`, `--no-generate-audio` | Toggle audio generation for
|
|
300
|
-
| `--expand-prompt`, `--no-expand-prompt` | Toggle prompt expansion for
|
|
383
|
+
| `--video-prompt <text>` | Motion prompt for generated-keyframe durable workflow | - |
|
|
384
|
+
| `--negative-prompt <text>` | Negative prompt for generated-keyframe durable workflow | - |
|
|
385
|
+
| `--generate-audio`, `--no-generate-audio` | Toggle audio generation for generated video steps | - |
|
|
386
|
+
| `--expand-prompt`, `--no-expand-prompt` | Toggle prompt expansion for generated video steps | - |
|
|
301
387
|
| `--watch-workflow` | Stream durable workflow events after start | - |
|
|
302
388
|
| `--list-workflows`, `--get-workflow <id>`, `--workflow-events <id>`, `--stream-workflow <id>`, `--cancel-workflow <id>` | Durable workflow management helpers | - |
|
|
303
389
|
| `--api-base-url <url>` | Sogni API base for hosted API modes. Credentials are only sent to `https://api.sogni.ai` by default; use `SOGNI_API_ALLOWED_HOSTS` for trusted custom hosts or `SOGNI_ALLOW_UNSAFE_API_BASE_URL=1` for isolated local testing. | https://api.sogni.ai |
|
|
@@ -349,7 +435,12 @@ When installed as an OpenClaw plugin, Sogni Creative Agent Skill will read defau
|
|
|
349
435
|
"defaultTokenType": "spark",
|
|
350
436
|
"apiBaseUrl": "https://api.sogni.ai",
|
|
351
437
|
"defaultLlmModel": "qwen3.6-35b-a3b-gguf-iq4xs",
|
|
438
|
+
"defaultTaskProfile": "general",
|
|
439
|
+
"defaultApiMaxTokens": 1600,
|
|
440
|
+
"defaultApiThinking": false,
|
|
352
441
|
"defaultApiToolMode": "creative-agent",
|
|
442
|
+
"defaultWorkflowMaxCost": 25,
|
|
443
|
+
"defaultWorkflowConfirmCost": false,
|
|
353
444
|
"seedStrategy": "prompt-hash",
|
|
354
445
|
"modelDefaults": {
|
|
355
446
|
"flux1-schnell-fp8": { "steps": 4, "guidance": 3.5 },
|
|
@@ -877,6 +968,9 @@ On error (with `--json`), the script returns a single JSON object like:
|
|
|
877
968
|
"success": false,
|
|
878
969
|
"error": "Reference image 2314x1200 would resize to 512x266, but both dimensions must be divisible by 16.",
|
|
879
970
|
"errorCode": "INVALID_VIDEO_SIZE",
|
|
971
|
+
"errorType": "PARAMETER_INVALID",
|
|
972
|
+
"errorCategory": "schema_validation",
|
|
973
|
+
"retryable": false,
|
|
880
974
|
"hint": "Try: --width 1296 --height 672 (or omit --strict-size)"
|
|
881
975
|
}
|
|
882
976
|
```
|