@sogni-ai/sogni-client 4.2.0-alpha.24 → 4.2.0-alpha.26
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/{CLAUDE.md → AGENTS.md} +76 -24
- package/CHANGELOG.md +14 -0
- package/README.md +19 -15
- package/dist/CreativeWorkflows/Templates/index.d.ts +34 -0
- package/dist/CreativeWorkflows/Templates/index.js +198 -0
- package/dist/CreativeWorkflows/Templates/index.js.map +1 -0
- package/dist/CreativeWorkflows/Templates/types.d.ts +57 -0
- package/dist/CreativeWorkflows/Templates/types.js +11 -0
- package/dist/CreativeWorkflows/Templates/types.js.map +1 -0
- package/dist/CreativeWorkflows/index.d.ts +22 -1
- package/dist/CreativeWorkflows/index.js +83 -4
- package/dist/CreativeWorkflows/index.js.map +1 -1
- package/dist/CreativeWorkflows/types.d.ts +67 -1
- package/dist/Replay/index.d.ts +39 -0
- package/dist/Replay/index.js +161 -0
- package/dist/Replay/index.js.map +1 -0
- package/dist/Replay/types.d.ts +57 -0
- package/dist/Replay/types.js +13 -0
- package/dist/Replay/types.js.map +1 -0
- package/dist/index.d.ts +14 -3
- package/dist/index.js +7 -1
- package/dist/index.js.map +1 -1
- package/dist-esm/CreativeWorkflows/Templates/index.js +179 -0
- package/dist-esm/CreativeWorkflows/Templates/index.js.map +1 -0
- package/dist-esm/CreativeWorkflows/Templates/types.js +10 -0
- package/dist-esm/CreativeWorkflows/Templates/types.js.map +1 -0
- package/dist-esm/CreativeWorkflows/index.js +83 -4
- package/dist-esm/CreativeWorkflows/index.js.map +1 -1
- package/dist-esm/Replay/index.js +142 -0
- package/dist-esm/Replay/index.js.map +1 -0
- package/dist-esm/Replay/types.js +12 -0
- package/dist-esm/Replay/types.js.map +1 -0
- package/dist-esm/index.js +5 -1
- package/dist-esm/index.js.map +1 -1
- package/llms-full.txt +180 -42
- package/llms.txt +32 -16
- package/package.json +2 -2
- package/src/CreativeWorkflows/Templates/index.ts +199 -0
- package/src/CreativeWorkflows/Templates/types.ts +56 -0
- package/src/CreativeWorkflows/index.ts +104 -3
- package/src/CreativeWorkflows/types.ts +73 -1
- package/src/Replay/index.ts +166 -0
- package/src/Replay/types.ts +64 -0
- package/src/index.ts +61 -0
package/{CLAUDE.md → AGENTS.md}
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
#
|
|
1
|
+
# AGENTS.md
|
|
2
2
|
|
|
3
|
-
This file provides guidance to Claude Code
|
|
3
|
+
This file provides guidance to AI coding assistants (Claude Code, Codex, etc.) when working with code in this repository.
|
|
4
4
|
|
|
5
5
|
## LLM Documentation Resources
|
|
6
6
|
|
|
@@ -13,31 +13,49 @@ For AI coding assistants working with this SDK, the following resources are avai
|
|
|
13
13
|
|
|
14
14
|
When helping users with Sogni SDK tasks, consult `llms-full.txt` for complete parameter references, especially for video generation where WAN 2.2 and LTX-2.3 models have different behaviors.
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
These are public agent-facing docs shipped with the npm package. They are kept aligned with:
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
- `package.json` for package version, runtime engines, npm scripts, exports, and published files.
|
|
19
|
+
- `src/index.ts` for public SDK namespaces and root exports.
|
|
20
|
+
- `src/Projects/types/index.ts`, `src/Projects/utils/index.ts`, and `src/Projects/createJobRequestMessage.ts` for media-generation parameters and video frame behavior.
|
|
21
|
+
- `src/Chat/types.ts`, `src/Chat/index.ts`, `src/Chat/tools.ts`, and `src/Chat/hostedToolValidation.generated.ts` for chat, hosted tools, structured outputs, and durable runs.
|
|
22
|
+
- `src/CreativeWorkflows/` and `src/Replay/` for durable workflow and RunRecord APIs.
|
|
19
23
|
|
|
20
|
-
|
|
24
|
+
Current public API anchors:
|
|
21
25
|
|
|
22
|
-
|
|
26
|
+
- The SDK runtime requirement is **Node.js >=22** (`package.json#engines`).
|
|
27
|
+
- Socket-native LLM chat uses `sogni.chat.completions.create()`.
|
|
28
|
+
- Durable creative workflows use `sogni.workflows`.
|
|
29
|
+
- Project cost helpers are `sogni.projects.estimateCost()`, `estimateVideoCost()`, and `estimateAudioCost()`.
|
|
30
|
+
- `checkAuth()` is only for cookie-auth browser flows. API-key auth auto-authenticates during `createInstance()`, and token auth uses `login()` or `setTokens()`.
|
|
31
|
+
- `ChatCompletionResult` is SDK-shaped (`content`, `role`, `finishReason`, `tool_calls`, `usage`, `cost`). Streaming chunks expose `chunk.content` and optional `chunk.tool_calls`.
|
|
23
32
|
|
|
24
|
-
|
|
33
|
+
## Sogni Intelligence APIs
|
|
25
34
|
|
|
26
|
-
|
|
35
|
+
The SDK wraps the public Sogni Intelligence endpoints used for text chat, hosted creative tools, durable chat turns, and deterministic multi-step workflows.
|
|
27
36
|
|
|
28
|
-
-
|
|
29
|
-
-
|
|
30
|
-
-
|
|
31
|
-
-
|
|
32
|
-
-
|
|
33
|
-
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
+
- `sogni.chat.completions.create()` maps to socket-native chat completions and supports text, streaming, vision input, custom function tools, Sogni tool injection, structured outputs, and `think` / `taskProfile` controls.
|
|
38
|
+
- `sogni.chat.hosted.create()` maps to `POST /v1/chat/completions`, the OpenAI-compatible REST chat endpoint. It can execute Sogni media-generation and composition tools server-side.
|
|
39
|
+
- `sogni.chat.runs` maps to `/v1/chat/runs`, a durable hosted-chat turn with persisted state, event replay, cancellation, and recovery across client disconnects.
|
|
40
|
+
- `sogni.workflows` maps to `/v1/creative-agent/workflows`, where callers submit exact multi-step creative plans and observe durable execution through snapshots, event logs, or SSE.
|
|
41
|
+
- `sogni.workflows.templates` maps to `/v1/creative-agent/workflows/templates`, the CRUD and fork API for saved, parameterized workflow recipes.
|
|
42
|
+
- `sogni.replay` maps to `/v1/replay/records`, the RunRecord write/list/get surface for replay viewers and audit tooling.
|
|
43
|
+
|
|
44
|
+
Public chat and workflow media rules:
|
|
45
|
+
|
|
46
|
+
- Vision chat accepts inline PNG or JPEG `data:` URIs through OpenAI-style `image_url` content parts.
|
|
47
|
+
- Durable chat runs and creative workflows use retrievable HTTP(S) media references, often produced by Sogni upload/download URL helpers.
|
|
48
|
+
- Request media references are addressable by media index in hosted tool and workflow calls, so later steps can reuse uploaded or generated images, videos, and audio without copying URLs into prompts.
|
|
37
49
|
|
|
38
50
|
## Overview
|
|
39
51
|
|
|
40
|
-
This is the **Sogni SDK for JavaScript/Node.js** - a TypeScript client library for the Sogni Supernet, a DePIN protocol for creative AI inference. The SDK supports image generation (Stable Diffusion, Flux,
|
|
52
|
+
This is the **Sogni SDK for JavaScript/Node.js** - a TypeScript client library for the Sogni Supernet, a DePIN protocol for creative AI inference. The SDK supports image generation (Stable Diffusion, Flux, Z-Image, Qwen image-edit models, GPT Image 2), video generation (WAN 2.2, LTX-2.3, Seedance 2.0), audio generation (ACE-Step 1.5), LLM chat with tool calling, hosted creative tools, durable creative workflows, replay records, and multimodal vision chat (Qwen3.6 35B VLM, default `qwen3.6-35b-a3b-gguf-iq4xs`).
|
|
53
|
+
|
|
54
|
+
Runtime and packaging:
|
|
55
|
+
|
|
56
|
+
- Node.js `>=22` is required by `package.json`.
|
|
57
|
+
- CommonJS build: `dist/index.js`; ESM build: `dist-esm/index.js`; type declarations: `dist/index.d.ts`.
|
|
58
|
+
- Published package files include `README.md`, `AGENTS.md`, `llms.txt`, `llms-full.txt`, `dist/`, `dist-esm/`, and `src/`.
|
|
41
59
|
|
|
42
60
|
## Build & Development Commands
|
|
43
61
|
|
|
@@ -54,10 +72,26 @@ npm run prettier:fix
|
|
|
54
72
|
# Check formatting
|
|
55
73
|
npm run prettier
|
|
56
74
|
|
|
75
|
+
# Validate generated hosted-tool validation file is in sync
|
|
76
|
+
npm run check:hosted-tool-validation
|
|
77
|
+
|
|
78
|
+
# Validate generated hosted-tool manifest is in sync
|
|
79
|
+
npm run check:hosted-tools-manifest
|
|
80
|
+
|
|
81
|
+
# Build and run chat model-routing checks
|
|
82
|
+
npm run test:chat-routing
|
|
83
|
+
|
|
57
84
|
# Generate API documentation
|
|
58
85
|
npm run docs
|
|
59
86
|
```
|
|
60
87
|
|
|
88
|
+
Generated artifacts:
|
|
89
|
+
|
|
90
|
+
- `src/Chat/sogniHostedTools.generated.json` is regenerated with `npm run sync:hosted-tools-manifest`.
|
|
91
|
+
- `src/Chat/hostedToolValidation.generated.ts` is regenerated with `npm run sync:hosted-tool-validation`.
|
|
92
|
+
- `docs/` is generated by TypeDoc via `npm run docs`.
|
|
93
|
+
- `dist/` and `dist-esm/` are generated by `npm run build`.
|
|
94
|
+
|
|
61
95
|
## Architecture
|
|
62
96
|
|
|
63
97
|
### Entry Point & Main Classes
|
|
@@ -71,8 +105,10 @@ npm run docs
|
|
|
71
105
|
- `chat.hosted.create` - Hosted synchronous chat via `/v1/chat/completions`
|
|
72
106
|
- `chat.runs.{create, get, cancel, streamEvents}` - Durable hosted chat runs via `/v1/chat/runs` with SSE replay
|
|
73
107
|
- `chat.tools` - Tool helpers (build, parse, validate)
|
|
74
|
-
- `
|
|
75
|
-
- `workflows
|
|
108
|
+
- `workflows: CreativeWorkflowsApi` - Durable explicit creative workflows via `/v1/creative-agent/workflows`
|
|
109
|
+
- `workflows.{start, list, get, events, streamEvents, resume, reseed, cancel}`
|
|
110
|
+
- `workflows.templates.{list, get, create, update, delete, fork}`
|
|
111
|
+
- `replay: ReplayApi` - RunRecord write/list/get via `/v1/replay/records`
|
|
76
112
|
- `apiClient: ApiClient` - Internal REST + WebSocket communication
|
|
77
113
|
|
|
78
114
|
### Core Entity Hierarchy
|
|
@@ -100,6 +136,9 @@ src/
|
|
|
100
136
|
│ └── utils/ # Samplers, schedulers
|
|
101
137
|
├── Account/ # User auth & balance (CurrentAccount entity)
|
|
102
138
|
├── Stats/ # Leaderboard API
|
|
139
|
+
├── Chat/ # Socket chat, hosted REST chat, durable runs, hosted tools
|
|
140
|
+
├── CreativeWorkflows/ # Durable explicit workflow API + template CRUD
|
|
141
|
+
├── Replay/ # RunRecord ingest/list/get API
|
|
103
142
|
├── lib/ # Shared utilities
|
|
104
143
|
│ ├── AuthManager/ # Token/Cookie auth strategies
|
|
105
144
|
│ ├── DataEntity.ts # Base reactive entity
|
|
@@ -121,6 +160,19 @@ src/
|
|
|
121
160
|
2. Server sends `jobState`, `jobProgress`, `jobResult` events → Updates Project/Job entities
|
|
122
161
|
3. Entities emit events → User code receives 'progress', 'completed', 'failed'
|
|
123
162
|
|
|
163
|
+
LLM chat flow:
|
|
164
|
+
|
|
165
|
+
1. User calls `sogni.chat.completions.create()` → SDK sends `llmJobRequest` via WebSocket.
|
|
166
|
+
2. Server streams `jobTokens` and terminal `llmJobResult` / `llmJobError` events.
|
|
167
|
+
3. Streaming callers iterate `ChatStream`; non-streaming callers receive `ChatCompletionResult`.
|
|
168
|
+
4. Hosted REST chat uses `sogni.chat.hosted.create()`; durable chat runs use `sogni.chat.runs`.
|
|
169
|
+
|
|
170
|
+
Durable workflow flow:
|
|
171
|
+
|
|
172
|
+
1. User calls `sogni.workflows.start()` with either an inline `input` plan or `workflowId` + `inputs`.
|
|
173
|
+
2. REST API persists the workflow and returns a `CreativeWorkflowRecord`.
|
|
174
|
+
3. Callers inspect `get()` / `events()` or consume `streamEvents()` with SSE resume support.
|
|
175
|
+
|
|
124
176
|
### Network Types
|
|
125
177
|
|
|
126
178
|
- `fast` - High-end GPUs, faster but more expensive. Required for video generation.
|
|
@@ -139,9 +191,9 @@ The SDK supports two families of video models with **fundamentally different FPS
|
|
|
139
191
|
- **Frame step constraint**: Frame count must follow pattern `1 + n*8` (i.e., 1, 9, 17, 25, 33, ...)
|
|
140
192
|
- Example: 5 seconds at 24fps = 121 frames (snapped to 1 + 15*8 = 121)
|
|
141
193
|
|
|
142
|
-
###
|
|
194
|
+
### WAN 2.2 Behavior
|
|
143
195
|
|
|
144
|
-
**WAN 2.2 Models (`wan_v2.2-*`)**
|
|
196
|
+
**WAN 2.2 Models (`wan_v2.2-*`)** use a fixed internal generation rate:
|
|
145
197
|
- **Always generate at 16fps internally**, regardless of the user's fps setting
|
|
146
198
|
- The `fps` parameter (16 or 32) controls **post-render frame interpolation only**
|
|
147
199
|
- `fps=16`: No interpolation, output matches generation (16fps)
|
|
@@ -251,7 +303,7 @@ const urls = await project.waitForCompletion();
|
|
|
251
303
|
|
|
252
304
|
The SDK receives `LLMModelInfo` per model including `maxContextLength`, `maxOutputTokens` (min/max/default), and parameter constraints. Use these to configure `max_tokens` and display limits to users.
|
|
253
305
|
|
|
254
|
-
|
|
306
|
+
Use the returned model constraints as request guidance, and prefer each model's advertised `maxOutputTokens.default` when a caller has not chosen `max_tokens`.
|
|
255
307
|
|
|
256
308
|
### Thinking Models (Qwen3.x) — `chat_template_kwargs`
|
|
257
309
|
|
|
@@ -262,7 +314,7 @@ Thinking mode is controlled via llama.cpp's `chat_template_kwargs: { enable_thin
|
|
|
262
314
|
|
|
263
315
|
The llama-server should run with default `--reasoning-budget -1` (unrestricted) so per-request control works.
|
|
264
316
|
|
|
265
|
-
|
|
317
|
+
`ChatCompletionChunk` exposes generated text through `content` and tool invocations through optional `tool_calls`.
|
|
266
318
|
|
|
267
319
|
**The solution for structured output**: Use **tool calling** (`tools` + `tool_choice: 'required'`). Tool call arguments are always forwarded by the worker regardless of thinking mode. The `workflow_text_chat_sogni_tools.mjs` example uses this pattern for all composition pipelines (video/image/audio prompt engineering).
|
|
268
320
|
|
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,17 @@
|
|
|
1
|
+
# [4.2.0-alpha.26](https://github.com/Sogni-AI/sogni-client/compare/v4.2.0-alpha.25...v4.2.0-alpha.26) (2026-05-15)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Features
|
|
5
|
+
|
|
6
|
+
* add replay records API ([ef98975](https://github.com/Sogni-AI/sogni-client/commit/ef98975a618523e23799aa28ab292609cbe32de6))
|
|
7
|
+
|
|
8
|
+
# [4.2.0-alpha.25](https://github.com/Sogni-AI/sogni-client/compare/v4.2.0-alpha.24...v4.2.0-alpha.25) (2026-05-15)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Features
|
|
12
|
+
|
|
13
|
+
* **workflows:** add templates CRUD, resume, reseed, and template-id runs ([fbec2b7](https://github.com/Sogni-AI/sogni-client/commit/fbec2b756df10cac3455626cd314a0fdbbde5982))
|
|
14
|
+
|
|
1
15
|
# [4.2.0-alpha.24](https://github.com/Sogni-AI/sogni-client/compare/v4.2.0-alpha.23...v4.2.0-alpha.24) (2026-05-15)
|
|
2
16
|
|
|
3
17
|
|
package/README.md
CHANGED
|
@@ -851,24 +851,24 @@ const response = await sogni.chat.completions.create({
|
|
|
851
851
|
|
|
852
852
|
### Sogni Platform Tools — Generate Media via Chat
|
|
853
853
|
|
|
854
|
-
Combine LLM intelligence with Sogni's media generation capabilities. The SDK exposes the full canonical hosted creative-tool surface
|
|
854
|
+
Combine LLM intelligence with Sogni's media generation capabilities. The SDK exposes the full canonical hosted creative-tool surface through `SogniTools.all` (24 tools):
|
|
855
855
|
|
|
856
856
|
- **Generation** — `generate_image`, `edit_image`, `generate_video`, `sound_to_video`, `video_to_video`, `generate_music`
|
|
857
857
|
- **Image adapters** — `restore_photo`, `apply_style`, `refine_result`, `change_angle`, `animate_photo` (image-to-video with multi-source fan-out)
|
|
858
858
|
- **Video composition / post-production** — `stitch_video`, `orbit_video`, `dance_montage`, `extend_video`, `replace_video_segment`, `overlay_video`, `add_subtitles`
|
|
859
|
-
- **Synchronous composition** — `enhance_prompt`, `compose_script`, `compose_lyrics`, `compose_instrumental`
|
|
859
|
+
- **Synchronous composition and planning** — `enhance_prompt`, `compose_script`, `compose_lyrics`, `compose_instrumental`, `compose_workflow`, `compose_workflow_template`
|
|
860
860
|
|
|
861
861
|
Pass `SogniTools.all` (or individual definitions like `generateImageTool`, `animatePhotoTool`, `composeScriptTool`) to an LLM via the `tools` parameter, then route tool calls through `sogni.chat.hosted.create()` / `sogni.chat.runs.create()` for server-side execution. Generated artifacts are threaded through a per-request media context so later rounds can reference earlier outputs by index (`sourceImageIndex`, `videoIndices`, `audioIndex`, etc.).
|
|
862
862
|
|
|
863
|
-
For direct `/v1/chat/completions` hosted-tool execution, media-bearing tool arguments
|
|
863
|
+
For direct `/v1/chat/completions` hosted-tool execution, media-bearing tool arguments use inline `data:` URIs. For user-uploaded image/audio/video inputs, use the SDK video project examples or the `sogni.workflows` wrapper for `/v1/creative-agent/workflows`; these can consume HTTPS artifact URLs produced by Sogni's upload endpoints. Durable workflows validate explicit steps before the workflow starts and can bind SDK request-level `mediaReferences` into tool arguments with `sourceStepId: "$input_media"`.
|
|
864
864
|
|
|
865
865
|
The `workflow_text_chat_sogni_tools.mjs` example demonstrates the core text-to-image, text-to-video, and text-to-music composition flows. Dedicated workflow examples like `workflow_image_edit.mjs`, `workflow_sound_to_video.mjs`, and `workflow_video_to_video.mjs` cover the asset-backed workflows directly.
|
|
866
866
|
|
|
867
867
|
### Hosted Tool Surfaces — `sogni_tools` parameter
|
|
868
868
|
|
|
869
|
-
`sogni.chat.hosted.create()` (the SDK wrapper for `/v1/chat/completions`) can inject the canonical creative-tools surface server-side via the `sogni_tools` parameter. The default `creative-tools` value injects the full media
|
|
869
|
+
`sogni.chat.hosted.create()` (the SDK wrapper for `/v1/chat/completions`) can inject the canonical creative-tools surface server-side via the `sogni_tools` parameter. The default `creative-tools` value injects the full media, composition, and planning surface. `sogni_tools: "creative-agent"` adds workflow control and asset-manifest tools on top.
|
|
870
870
|
|
|
871
|
-
Use default `sogni_tools: true` or `sogni_tools: "creative-tools"` when you want the full creative media tool surface plus synchronous composition tools: `enhance_prompt`, `compose_script`, `compose_lyrics`, and `compose_instrumental`.
|
|
871
|
+
Use default `sogni_tools: true` or `sogni_tools: "creative-tools"` when you want the full creative media tool surface plus synchronous composition tools: `enhance_prompt`, `compose_script`, `compose_lyrics`, and `compose_instrumental`.
|
|
872
872
|
|
|
873
873
|
Notable creative-tools include:
|
|
874
874
|
|
|
@@ -925,13 +925,17 @@ Guided mode defaults text-to-video to `/v1/creative-agent/workflows` so the entr
|
|
|
925
925
|
|
|
926
926
|
### Durable Creative Workflows (server-side)
|
|
927
927
|
|
|
928
|
-
Long-running multi-step creative workflows can be persisted on the server and observed independently of the chat completion that started them. The SDK exposes these
|
|
928
|
+
Long-running multi-step creative workflows can be persisted on the server and observed independently of the chat completion that started them. The SDK exposes these authenticated endpoints through `sogni.workflows`:
|
|
929
929
|
|
|
930
|
-
- `sogni.
|
|
931
|
-
- `sogni.
|
|
932
|
-
- `sogni.
|
|
933
|
-
- `sogni.
|
|
934
|
-
- `sogni.
|
|
930
|
+
- `sogni.workflows.start({ input, ...options })` — start a durable workflow with an inline plan
|
|
931
|
+
- `sogni.workflows.start({ workflowId, inputs, ...options })` — run a saved workflow template by id
|
|
932
|
+
- `sogni.workflows.get(workflowId)` and `.list()` — inspect snapshots
|
|
933
|
+
- `sogni.workflows.events(workflowId)` — poll event history
|
|
934
|
+
- `sogni.workflows.streamEvents(workflowId, { after, lastEventId })` — SSE event stream with resume support
|
|
935
|
+
- `sogni.workflows.resume(workflowId)` — resume a workflow paused in `waiting_for_user`
|
|
936
|
+
- `sogni.workflows.reseed(workflowId, { seedOverrides })` — clone a completed/partial run with fresh seeds
|
|
937
|
+
- `sogni.workflows.cancel(workflowId)` — cooperative cancellation
|
|
938
|
+
- `sogni.workflows.templates.{list, get, create, update, delete, fork}` — CRUD + fork for the saved workflow templates backing `start({ workflowId })`.
|
|
935
939
|
|
|
936
940
|
`start()` accepts exact hosted-tool steps plus optional request-level `mediaReferences`. The SDK follows the platform camelCase style (`mediaReferences`, `tokenType`, `maxEstimatedCapacityUnits`, and `confirmCost`) and serializes the REST request to snake_case internally. A dependency with `sourceStepId: "$input_media"` can inject the matching uploaded image, video, or audio URL or index into a later step. The API validates step arguments before accepting the workflow and again before each execution step, so shape errors fail before billing later media work.
|
|
937
941
|
|
|
@@ -942,7 +946,7 @@ const sogni = await SogniClient.createInstance({
|
|
|
942
946
|
disableSocket: true
|
|
943
947
|
});
|
|
944
948
|
|
|
945
|
-
const workflow = await sogni.
|
|
949
|
+
const workflow = await sogni.workflows.start({
|
|
946
950
|
tokenType: 'spark',
|
|
947
951
|
input: {
|
|
948
952
|
title: 'Generated keyframe to video',
|
|
@@ -976,7 +980,7 @@ const workflow = await sogni.creativeWorkflows.start({
|
|
|
976
980
|
},
|
|
977
981
|
});
|
|
978
982
|
|
|
979
|
-
for await (const event of sogni.
|
|
983
|
+
for await (const event of sogni.workflows.streamEvents(workflow.workflowId)) {
|
|
980
984
|
console.log(event.event, event.data);
|
|
981
985
|
}
|
|
982
986
|
```
|
|
@@ -1060,7 +1064,7 @@ This SDK provides documentation optimized for AI coding assistants like Claude C
|
|
|
1060
1064
|
| ---------------------------------- | ------------------------------------------------------- |
|
|
1061
1065
|
| [`llms.txt`](./llms.txt) | Indexed quick reference with code examples |
|
|
1062
1066
|
| [`llms-full.txt`](./llms-full.txt) | Comprehensive documentation with complete API reference |
|
|
1063
|
-
| [`
|
|
1067
|
+
| [`AGENTS.md`](./AGENTS.md) | Public guidance and project context for coding agents |
|
|
1064
1068
|
|
|
1065
1069
|
These files follow the [llms.txt convention](https://llmstxt.org/) for LLM-friendly documentation.
|
|
1066
1070
|
|
|
@@ -1071,7 +1075,7 @@ When helping users generate images, videos, or use LLM features with Sogni:
|
|
|
1071
1075
|
1. **Image generation**: Use `type: 'image'` with models like `flux1-schnell-fp8`
|
|
1072
1076
|
2. **Video generation**: Use `type: 'video'` with `network: 'fast'` (required)
|
|
1073
1077
|
3. **Audio generation**: Use `type: 'audio'` with ACE-Step 1.5 models
|
|
1074
|
-
4. **LLM text chat**: Use `sogni.
|
|
1078
|
+
4. **LLM text chat**: Use `sogni.chat.completions.create()` for text generation with streaming and tool calling
|
|
1075
1079
|
5. **Sogni Platform Tools**: Combine LLM tool calling with Sogni media generation to create images, image edits, videos, audio-driven videos, video transforms, and music from natural language
|
|
1076
1080
|
6. **Vision chat**: Use `qwen3.6-35b-a3b-gguf-iq4xs` VLM for multimodal image understanding with `image_url` content parts carrying inline base64 JPEG/PNG `data:` URIs. Vision requests allow up to 20 images, 10MB each, with longest side capped at 1024px. This 1024px dimension cap applies only to the vision `image_url` path, not to media-generation tool image inputs.
|
|
1077
1081
|
7. **WAN 2.2, LTX-2.3, and Seedance**: These video families have different duration/FPS behaviors - see `llms-full.txt` for details
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Workflow template CRUD + fork (`/v1/creative-agent/workflows/templates`).
|
|
3
|
+
*
|
|
4
|
+
* Templates are the savable, parameterized blueprints behind workflow
|
|
5
|
+
* runs. This sub-group reads the api the same way `CreativeWorkflowsApi`
|
|
6
|
+
* reads the runs side — Bearer auth via `client.auth.authenticateRequest`,
|
|
7
|
+
* shared error mapping. Exposed on the SDK as
|
|
8
|
+
* `sogniClient.workflows.templates`.
|
|
9
|
+
*
|
|
10
|
+
* Behaviour:
|
|
11
|
+
* - Auth: relies on the SDK's active AuthManager (JWT or API key). No
|
|
12
|
+
* cookie path; if you need cookie auth, attach it via your own
|
|
13
|
+
* `client.auth` adapter before calling.
|
|
14
|
+
* - Errors: wraps non-2xx responses in `ApiError` with the api's
|
|
15
|
+
* `errorCode` + `message` when present.
|
|
16
|
+
* - Pagination: `list` returns `{ templates, nextCursor }`. Cursor is
|
|
17
|
+
* a numeric offset the api echoes when more results are available.
|
|
18
|
+
*/
|
|
19
|
+
import ApiGroup, { ApiConfig } from '../../ApiGroup';
|
|
20
|
+
import { ForkWorkflowTemplateBody, ListWorkflowTemplatesOptions, ListWorkflowTemplatesResult, WorkflowTemplate, WorkflowTemplateRequestOptions } from './types';
|
|
21
|
+
declare class CreativeWorkflowTemplatesApi extends ApiGroup {
|
|
22
|
+
constructor(config: ApiConfig);
|
|
23
|
+
list(options?: ListWorkflowTemplatesOptions): Promise<ListWorkflowTemplatesResult>;
|
|
24
|
+
get(id: string, options?: WorkflowTemplateRequestOptions): Promise<WorkflowTemplate>;
|
|
25
|
+
create(template: WorkflowTemplate, options?: WorkflowTemplateRequestOptions): Promise<WorkflowTemplate>;
|
|
26
|
+
update(id: string, patch: Partial<WorkflowTemplate>, options?: WorkflowTemplateRequestOptions): Promise<WorkflowTemplate>;
|
|
27
|
+
delete(id: string, options?: WorkflowTemplateRequestOptions): Promise<void>;
|
|
28
|
+
fork(id: string, body?: ForkWorkflowTemplateBody, options?: WorkflowTemplateRequestOptions): Promise<WorkflowTemplate>;
|
|
29
|
+
private request;
|
|
30
|
+
private fetch;
|
|
31
|
+
private toApiError;
|
|
32
|
+
}
|
|
33
|
+
export default CreativeWorkflowTemplatesApi;
|
|
34
|
+
export * from './types';
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Workflow template CRUD + fork (`/v1/creative-agent/workflows/templates`).
|
|
4
|
+
*
|
|
5
|
+
* Templates are the savable, parameterized blueprints behind workflow
|
|
6
|
+
* runs. This sub-group reads the api the same way `CreativeWorkflowsApi`
|
|
7
|
+
* reads the runs side — Bearer auth via `client.auth.authenticateRequest`,
|
|
8
|
+
* shared error mapping. Exposed on the SDK as
|
|
9
|
+
* `sogniClient.workflows.templates`.
|
|
10
|
+
*
|
|
11
|
+
* Behaviour:
|
|
12
|
+
* - Auth: relies on the SDK's active AuthManager (JWT or API key). No
|
|
13
|
+
* cookie path; if you need cookie auth, attach it via your own
|
|
14
|
+
* `client.auth` adapter before calling.
|
|
15
|
+
* - Errors: wraps non-2xx responses in `ApiError` with the api's
|
|
16
|
+
* `errorCode` + `message` when present.
|
|
17
|
+
* - Pagination: `list` returns `{ templates, nextCursor }`. Cursor is
|
|
18
|
+
* a numeric offset the api echoes when more results are available.
|
|
19
|
+
*/
|
|
20
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
21
|
+
if (k2 === undefined) k2 = k;
|
|
22
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
23
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
24
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
25
|
+
}
|
|
26
|
+
Object.defineProperty(o, k2, desc);
|
|
27
|
+
}) : (function(o, m, k, k2) {
|
|
28
|
+
if (k2 === undefined) k2 = k;
|
|
29
|
+
o[k2] = m[k];
|
|
30
|
+
}));
|
|
31
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
32
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
33
|
+
};
|
|
34
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
35
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
36
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
37
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
38
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
39
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
40
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
41
|
+
});
|
|
42
|
+
};
|
|
43
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
44
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
45
|
+
};
|
|
46
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
47
|
+
const ApiGroup_1 = __importDefault(require("../../ApiGroup"));
|
|
48
|
+
const ApiClient_1 = require("../../ApiClient");
|
|
49
|
+
function parseJsonResponse(text) {
|
|
50
|
+
if (!text)
|
|
51
|
+
return {};
|
|
52
|
+
try {
|
|
53
|
+
return JSON.parse(text);
|
|
54
|
+
}
|
|
55
|
+
catch (_a) {
|
|
56
|
+
return { status: 'error', message: text, errorCode: 0 };
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
function isWorkflowTemplate(value) {
|
|
60
|
+
if (!value || typeof value !== 'object')
|
|
61
|
+
return false;
|
|
62
|
+
const record = value;
|
|
63
|
+
return typeof record.id === 'string' && typeof record.name === 'string';
|
|
64
|
+
}
|
|
65
|
+
class CreativeWorkflowTemplatesApi extends ApiGroup_1.default {
|
|
66
|
+
constructor(config) {
|
|
67
|
+
super(config);
|
|
68
|
+
}
|
|
69
|
+
list() {
|
|
70
|
+
return __awaiter(this, arguments, void 0, function* (options = {}) {
|
|
71
|
+
const query = new URLSearchParams();
|
|
72
|
+
if (options.visibility)
|
|
73
|
+
query.set('visibility', options.visibility);
|
|
74
|
+
if (typeof options.offset === 'number' && options.offset >= 0) {
|
|
75
|
+
query.set('offset', String(Math.floor(options.offset)));
|
|
76
|
+
}
|
|
77
|
+
if (typeof options.limit === 'number' && options.limit > 0) {
|
|
78
|
+
query.set('limit', String(Math.min(Math.max(Math.floor(options.limit), 1), 200)));
|
|
79
|
+
}
|
|
80
|
+
const path = query.toString()
|
|
81
|
+
? `/v1/creative-agent/workflows/templates?${query.toString()}`
|
|
82
|
+
: '/v1/creative-agent/workflows/templates';
|
|
83
|
+
const body = yield this.request(path, { method: 'GET', signal: options.signal });
|
|
84
|
+
const templates = Array.isArray(body.templates)
|
|
85
|
+
? body.templates.filter(isWorkflowTemplate)
|
|
86
|
+
: [];
|
|
87
|
+
const nextCursor = typeof body.nextCursor === 'number' ? body.nextCursor : null;
|
|
88
|
+
return { templates, nextCursor };
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
get(id_1) {
|
|
92
|
+
return __awaiter(this, arguments, void 0, function* (id, options = {}) {
|
|
93
|
+
const body = yield this.request(`/v1/creative-agent/workflows/templates/${encodeURIComponent(id)}`, { method: 'GET', signal: options.signal });
|
|
94
|
+
if (!isWorkflowTemplate(body.template)) {
|
|
95
|
+
throw new ApiClient_1.ApiError(500, {
|
|
96
|
+
status: 'error',
|
|
97
|
+
message: 'Workflow template response missing template field',
|
|
98
|
+
errorCode: 0
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
return body.template;
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
create(template_1) {
|
|
105
|
+
return __awaiter(this, arguments, void 0, function* (template, options = {}) {
|
|
106
|
+
const body = yield this.request('/v1/creative-agent/workflows/templates', {
|
|
107
|
+
method: 'POST',
|
|
108
|
+
headers: { 'Content-Type': 'application/json' },
|
|
109
|
+
body: JSON.stringify(template),
|
|
110
|
+
signal: options.signal
|
|
111
|
+
});
|
|
112
|
+
if (!isWorkflowTemplate(body.template)) {
|
|
113
|
+
throw new ApiClient_1.ApiError(500, {
|
|
114
|
+
status: 'error',
|
|
115
|
+
message: 'Workflow template create response missing template field',
|
|
116
|
+
errorCode: 0
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
return body.template;
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
update(id_1, patch_1) {
|
|
123
|
+
return __awaiter(this, arguments, void 0, function* (id, patch, options = {}) {
|
|
124
|
+
const body = yield this.request(`/v1/creative-agent/workflows/templates/${encodeURIComponent(id)}`, {
|
|
125
|
+
method: 'PATCH',
|
|
126
|
+
headers: { 'Content-Type': 'application/json' },
|
|
127
|
+
body: JSON.stringify(patch),
|
|
128
|
+
signal: options.signal
|
|
129
|
+
});
|
|
130
|
+
if (!isWorkflowTemplate(body.template)) {
|
|
131
|
+
throw new ApiClient_1.ApiError(500, {
|
|
132
|
+
status: 'error',
|
|
133
|
+
message: 'Workflow template update response missing template field',
|
|
134
|
+
errorCode: 0
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
return body.template;
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
delete(id_1) {
|
|
141
|
+
return __awaiter(this, arguments, void 0, function* (id, options = {}) {
|
|
142
|
+
yield this.request(`/v1/creative-agent/workflows/templates/${encodeURIComponent(id)}`, {
|
|
143
|
+
method: 'DELETE',
|
|
144
|
+
signal: options.signal
|
|
145
|
+
});
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
fork(id_1) {
|
|
149
|
+
return __awaiter(this, arguments, void 0, function* (id, body = {}, options = {}) {
|
|
150
|
+
const response = yield this.request(`/v1/creative-agent/workflows/templates/${encodeURIComponent(id)}/fork`, {
|
|
151
|
+
method: 'POST',
|
|
152
|
+
headers: { 'Content-Type': 'application/json' },
|
|
153
|
+
body: JSON.stringify(body),
|
|
154
|
+
signal: options.signal
|
|
155
|
+
});
|
|
156
|
+
if (!isWorkflowTemplate(response.template)) {
|
|
157
|
+
throw new ApiClient_1.ApiError(500, {
|
|
158
|
+
status: 'error',
|
|
159
|
+
message: 'Workflow template fork response missing template field',
|
|
160
|
+
errorCode: 0
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
return response.template;
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
request(path_1) {
|
|
167
|
+
return __awaiter(this, arguments, void 0, function* (path, options = {}) {
|
|
168
|
+
const response = yield this.fetch(path, options);
|
|
169
|
+
if (!response.ok) {
|
|
170
|
+
throw yield this.toApiError(response);
|
|
171
|
+
}
|
|
172
|
+
const text = yield response.text();
|
|
173
|
+
return parseJsonResponse(text);
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
fetch(path_1) {
|
|
177
|
+
return __awaiter(this, arguments, void 0, function* (path, options = {}) {
|
|
178
|
+
const url = new URL(path, this.client.rest.baseUrl).toString();
|
|
179
|
+
const authenticated = yield this.client.auth.authenticateRequest(options);
|
|
180
|
+
return fetch(url, authenticated);
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
toApiError(response) {
|
|
184
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
185
|
+
if (response.status === 401 && this.client.auth.isAuthenticated) {
|
|
186
|
+
this.client.auth.clear();
|
|
187
|
+
}
|
|
188
|
+
const body = parseJsonResponse(yield response.text());
|
|
189
|
+
const payload = body.status === 'error' ? body : body;
|
|
190
|
+
const message = typeof payload.message === 'string' ? payload.message : response.statusText;
|
|
191
|
+
const errorCode = typeof payload.errorCode === 'number' ? payload.errorCode : 0;
|
|
192
|
+
return new ApiClient_1.ApiError(response.status, { status: 'error', message, errorCode });
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
exports.default = CreativeWorkflowTemplatesApi;
|
|
197
|
+
__exportStar(require("./types"), exports);
|
|
198
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/CreativeWorkflows/Templates/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Workflow template types — mirrors the api `workflow_templates` collection.
|
|
3
|
+
*
|
|
4
|
+
* The SDK keeps a structural shape with the well-known fields typed and a
|
|
5
|
+
* `[key: string]: unknown` escape hatch so callers that hold a richer type
|
|
6
|
+
* (e.g. `@sogni/creative-agent/workflows`) can cast safely without the SDK
|
|
7
|
+
* needing to depend on that package.
|
|
8
|
+
*/
|
|
9
|
+
export type WorkflowTemplateVisibility = 'private' | 'public' | 'team';
|
|
10
|
+
export type WorkflowTemplateVisibilityFilter = 'own' | 'public' | 'all';
|
|
11
|
+
export type WorkflowTemplateAuthor = 'system' | {
|
|
12
|
+
userId: string;
|
|
13
|
+
displayName: string;
|
|
14
|
+
};
|
|
15
|
+
export type WorkflowTemplateStability = 'experimental' | 'beta' | 'production';
|
|
16
|
+
export interface WorkflowTemplate {
|
|
17
|
+
id: string;
|
|
18
|
+
name: string;
|
|
19
|
+
version: string;
|
|
20
|
+
description: string;
|
|
21
|
+
category?: string;
|
|
22
|
+
stability?: WorkflowTemplateStability;
|
|
23
|
+
author?: WorkflowTemplateAuthor;
|
|
24
|
+
visibility?: WorkflowTemplateVisibility;
|
|
25
|
+
inputs?: unknown[];
|
|
26
|
+
stages?: unknown[];
|
|
27
|
+
exposeToLLM?: boolean;
|
|
28
|
+
llmPriority?: number;
|
|
29
|
+
estimatedCredits?: {
|
|
30
|
+
min: number;
|
|
31
|
+
max: number;
|
|
32
|
+
};
|
|
33
|
+
estimatedCapacityUnits?: {
|
|
34
|
+
min: number;
|
|
35
|
+
max: number;
|
|
36
|
+
};
|
|
37
|
+
tags?: string[];
|
|
38
|
+
createdAt?: number | string;
|
|
39
|
+
updatedAt?: number | string;
|
|
40
|
+
[key: string]: unknown;
|
|
41
|
+
}
|
|
42
|
+
export interface ListWorkflowTemplatesOptions {
|
|
43
|
+
visibility?: WorkflowTemplateVisibilityFilter;
|
|
44
|
+
offset?: number;
|
|
45
|
+
limit?: number;
|
|
46
|
+
signal?: AbortSignal;
|
|
47
|
+
}
|
|
48
|
+
export interface ListWorkflowTemplatesResult {
|
|
49
|
+
templates: WorkflowTemplate[];
|
|
50
|
+
nextCursor: number | null;
|
|
51
|
+
}
|
|
52
|
+
export interface WorkflowTemplateRequestOptions {
|
|
53
|
+
signal?: AbortSignal;
|
|
54
|
+
}
|
|
55
|
+
export interface ForkWorkflowTemplateBody {
|
|
56
|
+
newName?: string;
|
|
57
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Workflow template types — mirrors the api `workflow_templates` collection.
|
|
4
|
+
*
|
|
5
|
+
* The SDK keeps a structural shape with the well-known fields typed and a
|
|
6
|
+
* `[key: string]: unknown` escape hatch so callers that hold a richer type
|
|
7
|
+
* (e.g. `@sogni/creative-agent/workflows`) can cast safely without the SDK
|
|
8
|
+
* needing to depend on that package.
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/CreativeWorkflows/Templates/types.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG"}
|