@spira-lab/cli 0.0.11 → 0.0.14
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 +2 -1
- package/dist/index.cjs +793 -41
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -25,7 +25,8 @@ spira ai models list
|
|
|
25
25
|
spira ai models list --media-type audio
|
|
26
26
|
spira ai jobs create --model-id nano-banana-2 --inputs-json '{"prompt":"A product photo"}' --wait
|
|
27
27
|
spira ai jobs create --model-id elevenlabs-music-generation --inputs-json '{"prompt":"A short ambient cue","duration":"10"}' --wait
|
|
28
|
-
spira workflows node-catalog --json
|
|
28
|
+
spira workflows node-catalog --view summary --json
|
|
29
|
+
spira workflows node-catalog --view full --node-type textInput --node-type textChatLlm --json
|
|
29
30
|
spira workflows create --name "Product launch workflow"
|
|
30
31
|
spira workflows update <workflowId> --workflow-definition-json '{"nodes":[],"edges":[]}'
|
|
31
32
|
```
|
package/dist/index.cjs
CHANGED
|
@@ -18083,8 +18083,353 @@ var cliResultSchema = external_exports.object({
|
|
|
18083
18083
|
error: cliErrorSchema.optional()
|
|
18084
18084
|
});
|
|
18085
18085
|
|
|
18086
|
+
// ../../packages/contracts/dist/cli/kie-ai-model-docs.js
|
|
18087
|
+
function videoDoc(input) {
|
|
18088
|
+
const exampleInputs = {
|
|
18089
|
+
prompt: "A cinematic camera move through a bright modern studio",
|
|
18090
|
+
duration: input.durations[0]
|
|
18091
|
+
};
|
|
18092
|
+
if (input.sizes?.[0])
|
|
18093
|
+
exampleInputs.size = input.sizes[0];
|
|
18094
|
+
if (input.resolutions?.[0])
|
|
18095
|
+
exampleInputs.resolution = input.resolutions[0];
|
|
18096
|
+
if (input.sound)
|
|
18097
|
+
exampleInputs.sound = false;
|
|
18098
|
+
if (input.acceptsImage || input.requiresImage)
|
|
18099
|
+
exampleInputs.referenceImage = ["https://example.com/reference.png"];
|
|
18100
|
+
if (input.requiresVideo)
|
|
18101
|
+
exampleInputs.referenceVideo = ["https://example.com/motion.mp4"];
|
|
18102
|
+
return {
|
|
18103
|
+
id: input.id,
|
|
18104
|
+
name: input.name,
|
|
18105
|
+
mediaType: "video",
|
|
18106
|
+
description: input.description,
|
|
18107
|
+
capabilities: input.capabilities,
|
|
18108
|
+
variants: input.variants,
|
|
18109
|
+
fields: [
|
|
18110
|
+
{ name: "prompt", type: "string", required: true, description: "Text instruction for the video." },
|
|
18111
|
+
{
|
|
18112
|
+
name: "duration",
|
|
18113
|
+
type: "string",
|
|
18114
|
+
description: "Output duration in seconds.",
|
|
18115
|
+
values: input.durations,
|
|
18116
|
+
defaultValue: input.durations[0]
|
|
18117
|
+
},
|
|
18118
|
+
...input.sizes ? [
|
|
18119
|
+
{
|
|
18120
|
+
name: "size",
|
|
18121
|
+
type: "string",
|
|
18122
|
+
description: "Output aspect ratio.",
|
|
18123
|
+
values: input.sizes,
|
|
18124
|
+
defaultValue: input.sizes[0]
|
|
18125
|
+
}
|
|
18126
|
+
] : [],
|
|
18127
|
+
...input.resolutions ? [
|
|
18128
|
+
{
|
|
18129
|
+
name: "resolution",
|
|
18130
|
+
type: "string",
|
|
18131
|
+
description: "Output resolution.",
|
|
18132
|
+
values: input.resolutions,
|
|
18133
|
+
defaultValue: input.resolutions[0]
|
|
18134
|
+
}
|
|
18135
|
+
] : [],
|
|
18136
|
+
...input.sound ? [
|
|
18137
|
+
{
|
|
18138
|
+
name: "sound",
|
|
18139
|
+
type: "boolean",
|
|
18140
|
+
description: "Generate native audio.",
|
|
18141
|
+
defaultValue: false
|
|
18142
|
+
}
|
|
18143
|
+
] : [],
|
|
18144
|
+
...input.acceptsImage || input.requiresImage ? [
|
|
18145
|
+
{
|
|
18146
|
+
name: "referenceImage",
|
|
18147
|
+
type: "string[]",
|
|
18148
|
+
required: input.requiresImage,
|
|
18149
|
+
description: input.requiresImage ? "Exactly one public image URL is required." : input.maxReferenceImages === 2 ? "Optional one or two public image URLs. Two URLs are used as first and last frames." : "Optional single public image URL for image-to-video."
|
|
18150
|
+
}
|
|
18151
|
+
] : [],
|
|
18152
|
+
...input.requiresVideo ? [
|
|
18153
|
+
{
|
|
18154
|
+
name: "referenceVideo",
|
|
18155
|
+
type: "string[]",
|
|
18156
|
+
required: true,
|
|
18157
|
+
description: "Exactly one public 3-30 second motion reference video URL is required."
|
|
18158
|
+
}
|
|
18159
|
+
] : []
|
|
18160
|
+
],
|
|
18161
|
+
examples: [{ label: "Generate video", inputs: exampleInputs }],
|
|
18162
|
+
notes: input.notes
|
|
18163
|
+
};
|
|
18164
|
+
}
|
|
18165
|
+
function imageDoc(input) {
|
|
18166
|
+
const exampleInputs = {
|
|
18167
|
+
prompt: input.requiresImage ? "Change the background to pale yellow" : "A clean editorial product photograph",
|
|
18168
|
+
size: input.sizes[0]
|
|
18169
|
+
};
|
|
18170
|
+
if (input.resolutions?.[0])
|
|
18171
|
+
exampleInputs.resolution = input.resolutions[0];
|
|
18172
|
+
if (input.modes?.[0])
|
|
18173
|
+
exampleInputs.mode = input.modes[0];
|
|
18174
|
+
if (input.outputFormats?.[0])
|
|
18175
|
+
exampleInputs.outputFormat = input.outputFormats[0];
|
|
18176
|
+
if (input.acceptsImage || input.requiresImage)
|
|
18177
|
+
exampleInputs.referenceImage = ["https://example.com/reference.png"];
|
|
18178
|
+
return {
|
|
18179
|
+
id: input.id,
|
|
18180
|
+
name: input.name,
|
|
18181
|
+
mediaType: "image",
|
|
18182
|
+
description: input.description,
|
|
18183
|
+
capabilities: input.capabilities,
|
|
18184
|
+
variants: input.variants,
|
|
18185
|
+
fields: [
|
|
18186
|
+
{ name: "prompt", type: "string", required: true, description: "Text instruction for the image." },
|
|
18187
|
+
{
|
|
18188
|
+
name: "size",
|
|
18189
|
+
type: "string",
|
|
18190
|
+
description: "Output aspect ratio.",
|
|
18191
|
+
values: input.sizes,
|
|
18192
|
+
defaultValue: input.sizes[0]
|
|
18193
|
+
},
|
|
18194
|
+
...input.resolutions ? [
|
|
18195
|
+
{
|
|
18196
|
+
name: "resolution",
|
|
18197
|
+
type: "string",
|
|
18198
|
+
description: "Output resolution.",
|
|
18199
|
+
values: input.resolutions,
|
|
18200
|
+
defaultValue: input.resolutions[0]
|
|
18201
|
+
}
|
|
18202
|
+
] : [],
|
|
18203
|
+
...input.modes ? [
|
|
18204
|
+
{
|
|
18205
|
+
name: "mode",
|
|
18206
|
+
type: "string",
|
|
18207
|
+
description: "Generation tier.",
|
|
18208
|
+
values: input.modes,
|
|
18209
|
+
defaultValue: input.modes[0]
|
|
18210
|
+
}
|
|
18211
|
+
] : [],
|
|
18212
|
+
...input.outputFormats ? [
|
|
18213
|
+
{
|
|
18214
|
+
name: "outputFormat",
|
|
18215
|
+
type: "string",
|
|
18216
|
+
description: "Output image format.",
|
|
18217
|
+
values: input.outputFormats,
|
|
18218
|
+
defaultValue: input.outputFormats[0]
|
|
18219
|
+
}
|
|
18220
|
+
] : [],
|
|
18221
|
+
...input.acceptsImage || input.requiresImage ? [
|
|
18222
|
+
{
|
|
18223
|
+
name: "referenceImage",
|
|
18224
|
+
type: "string[]",
|
|
18225
|
+
required: input.requiresImage,
|
|
18226
|
+
description: input.requiresImage ? "Exactly one public image URL is required." : "Optional public image URL for image editing."
|
|
18227
|
+
}
|
|
18228
|
+
] : []
|
|
18229
|
+
],
|
|
18230
|
+
examples: [{ label: input.requiresImage ? "Edit image" : "Generate image", inputs: exampleInputs }]
|
|
18231
|
+
};
|
|
18232
|
+
}
|
|
18233
|
+
var perSecond = (key, display, creditsPerUnit, conditions = {}) => ({ key, display, conditions, billingUnit: "per_second", creditsPerUnit });
|
|
18234
|
+
var perGeneration = (key, display, creditsPerUnit, conditions = {}) => ({ key, display, conditions, billingUnit: "per_generation", creditsPerUnit });
|
|
18235
|
+
var KIE_CLI_AI_MODEL_DOCS = [
|
|
18236
|
+
videoDoc({
|
|
18237
|
+
id: "kling-2.6",
|
|
18238
|
+
name: "Kling 2.6",
|
|
18239
|
+
description: "Native-audio video generation with synchronized dialogue from text or image.",
|
|
18240
|
+
capabilities: ["text-to-video", "image-to-video"],
|
|
18241
|
+
variants: [
|
|
18242
|
+
perSecond("silent", "Sound off", 5.5, { sound: false }),
|
|
18243
|
+
perSecond("sound", "Sound on", 11, { sound: true })
|
|
18244
|
+
],
|
|
18245
|
+
durations: ["5", "10"],
|
|
18246
|
+
sizes: ["16:9", "9:16", "1:1"],
|
|
18247
|
+
acceptsImage: true,
|
|
18248
|
+
sound: true
|
|
18249
|
+
}),
|
|
18250
|
+
videoDoc({
|
|
18251
|
+
id: "kling-2.6-motion-control",
|
|
18252
|
+
name: "Kling 2.6 Motion Control",
|
|
18253
|
+
description: "Reference-motion transfer with character consistency and controllable output resolution.",
|
|
18254
|
+
capabilities: ["image-to-video", "motion-control"],
|
|
18255
|
+
variants: [
|
|
18256
|
+
perSecond("720p", "720p", 5.5, { resolution: "720p" }),
|
|
18257
|
+
perSecond("1080p", "1080p", 9, { resolution: "1080p" })
|
|
18258
|
+
],
|
|
18259
|
+
durations: ["3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "20", "25", "30"],
|
|
18260
|
+
resolutions: ["720p", "1080p"],
|
|
18261
|
+
requiresImage: true,
|
|
18262
|
+
requiresVideo: true
|
|
18263
|
+
}),
|
|
18264
|
+
videoDoc({
|
|
18265
|
+
id: "kling-2.5-turbo-pro",
|
|
18266
|
+
name: "Kling 2.5",
|
|
18267
|
+
description: "Kling 2.5 Turbo Pro text/image-to-video through KIE.",
|
|
18268
|
+
capabilities: ["text-to-video", "image-to-video"],
|
|
18269
|
+
variants: [perSecond("default", "Per second", 4.2)],
|
|
18270
|
+
durations: ["5", "10"],
|
|
18271
|
+
sizes: ["16:9", "9:16", "1:1"],
|
|
18272
|
+
acceptsImage: true
|
|
18273
|
+
}),
|
|
18274
|
+
videoDoc({
|
|
18275
|
+
id: "kling-2.1-master",
|
|
18276
|
+
name: "Kling 2.1 Master",
|
|
18277
|
+
description: "Kling 2.1 Master text/image-to-video through KIE.",
|
|
18278
|
+
capabilities: ["text-to-video", "image-to-video"],
|
|
18279
|
+
variants: [perSecond("default", "Per second", 16)],
|
|
18280
|
+
durations: ["5", "10"],
|
|
18281
|
+
sizes: ["16:9", "9:16", "1:1"],
|
|
18282
|
+
acceptsImage: true
|
|
18283
|
+
}),
|
|
18284
|
+
videoDoc({
|
|
18285
|
+
id: "kling-2.1-pro",
|
|
18286
|
+
name: "Kling 2.1 Pro",
|
|
18287
|
+
description: "Kling 2.1 Pro image-to-video through KIE.",
|
|
18288
|
+
capabilities: ["image-to-video"],
|
|
18289
|
+
variants: [perSecond("default", "Per second", 5)],
|
|
18290
|
+
durations: ["5", "10"],
|
|
18291
|
+
requiresImage: true
|
|
18292
|
+
}),
|
|
18293
|
+
videoDoc({
|
|
18294
|
+
id: "kling-2.1-standard",
|
|
18295
|
+
name: "Kling 2.1 Standard",
|
|
18296
|
+
description: "Kling 2.1 Standard image-to-video through KIE.",
|
|
18297
|
+
capabilities: ["image-to-video"],
|
|
18298
|
+
variants: [perSecond("default", "Per second", 2.5)],
|
|
18299
|
+
durations: ["5", "10"],
|
|
18300
|
+
requiresImage: true
|
|
18301
|
+
}),
|
|
18302
|
+
videoDoc({
|
|
18303
|
+
id: "wan-2.2-a14b-turbo",
|
|
18304
|
+
name: "Wan 2.2",
|
|
18305
|
+
description: "Wan 2.2 A14B Turbo text/image-to-video through KIE.",
|
|
18306
|
+
capabilities: ["text-to-video", "image-to-video"],
|
|
18307
|
+
variants: [
|
|
18308
|
+
perGeneration("480p", "480p / 5 seconds", 20, { resolution: "480p" }),
|
|
18309
|
+
perGeneration("720p", "720p / 5 seconds", 40, { resolution: "720p" })
|
|
18310
|
+
],
|
|
18311
|
+
durations: ["5"],
|
|
18312
|
+
sizes: ["16:9", "9:16", "1:1"],
|
|
18313
|
+
resolutions: ["480p", "720p"],
|
|
18314
|
+
acceptsImage: true
|
|
18315
|
+
}),
|
|
18316
|
+
videoDoc({
|
|
18317
|
+
id: "wan-2.5",
|
|
18318
|
+
name: "Wan 2.5",
|
|
18319
|
+
description: "Cinematic text and image video generation with synchronized dialogue, ambience, and music.",
|
|
18320
|
+
capabilities: ["text-to-video", "image-to-video"],
|
|
18321
|
+
variants: [
|
|
18322
|
+
perSecond("720p", "720p", 6, { resolution: "720p" }),
|
|
18323
|
+
perSecond("1080p", "1080p", 10, { resolution: "1080p" })
|
|
18324
|
+
],
|
|
18325
|
+
durations: ["5", "10"],
|
|
18326
|
+
sizes: ["16:9", "9:16", "1:1"],
|
|
18327
|
+
resolutions: ["720p", "1080p"],
|
|
18328
|
+
acceptsImage: true
|
|
18329
|
+
}),
|
|
18330
|
+
videoDoc({
|
|
18331
|
+
id: "wan-2.6",
|
|
18332
|
+
name: "Wan 2.6",
|
|
18333
|
+
description: "Multi-shot HD video generation with stable characters and synchronized native audio.",
|
|
18334
|
+
capabilities: ["text-to-video", "image-to-video"],
|
|
18335
|
+
variants: [
|
|
18336
|
+
perGeneration("720p-5", "720p / 5 seconds", 35, { resolution: "720p", duration: "5" }),
|
|
18337
|
+
perGeneration("720p-10", "720p / 10 seconds", 70, { resolution: "720p", duration: "10" }),
|
|
18338
|
+
perGeneration("720p-15", "720p / 15 seconds", 105, { resolution: "720p", duration: "15" }),
|
|
18339
|
+
perGeneration("1080p-5", "1080p / 5 seconds", 52.25, { resolution: "1080p", duration: "5" }),
|
|
18340
|
+
perGeneration("1080p-10", "1080p / 10 seconds", 104.75, { resolution: "1080p", duration: "10" }),
|
|
18341
|
+
perGeneration("1080p-15", "1080p / 15 seconds", 157.5, { resolution: "1080p", duration: "15" })
|
|
18342
|
+
],
|
|
18343
|
+
durations: ["5", "10", "15"],
|
|
18344
|
+
resolutions: ["720p", "1080p"],
|
|
18345
|
+
acceptsImage: true
|
|
18346
|
+
}),
|
|
18347
|
+
videoDoc({
|
|
18348
|
+
id: "wan-2.7",
|
|
18349
|
+
name: "Wan 2.7",
|
|
18350
|
+
description: "Controllable cinematic video generation with first and last frame guidance.",
|
|
18351
|
+
capabilities: ["text-to-video", "image-to-video"],
|
|
18352
|
+
variants: [
|
|
18353
|
+
perSecond("720p", "720p", 8, { resolution: "720p" }),
|
|
18354
|
+
perSecond("1080p", "1080p", 12, { resolution: "1080p" })
|
|
18355
|
+
],
|
|
18356
|
+
durations: ["5", "2", "3", "4", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"],
|
|
18357
|
+
sizes: ["16:9", "9:16", "1:1", "4:3", "3:4"],
|
|
18358
|
+
resolutions: ["720p", "1080p"],
|
|
18359
|
+
acceptsImage: true,
|
|
18360
|
+
maxReferenceImages: 2,
|
|
18361
|
+
notes: ["Aspect ratio applies to text-to-video. Image-to-video inherits framing from the reference images."]
|
|
18362
|
+
}),
|
|
18363
|
+
imageDoc({
|
|
18364
|
+
id: "seedream-4.5",
|
|
18365
|
+
name: "Seedream 4.5",
|
|
18366
|
+
description: "Precise 4K image generation and consistent multi-image editing.",
|
|
18367
|
+
capabilities: ["text-to-image", "image-to-image"],
|
|
18368
|
+
variants: [perGeneration("default", "Per image", 3.25)],
|
|
18369
|
+
sizes: ["1:1", "4:3", "3:4", "16:9", "9:16", "2:3", "3:2", "21:9"],
|
|
18370
|
+
resolutions: ["2K", "4K"],
|
|
18371
|
+
acceptsImage: true
|
|
18372
|
+
}),
|
|
18373
|
+
imageDoc({
|
|
18374
|
+
id: "nano-banana",
|
|
18375
|
+
name: "Nano Banana",
|
|
18376
|
+
description: "Fast, cost-efficient image generation powered by Gemini 2.5 Flash Image.",
|
|
18377
|
+
capabilities: ["text-to-image"],
|
|
18378
|
+
variants: [perGeneration("default", "Per image", 2)],
|
|
18379
|
+
sizes: ["1:1", "9:16", "16:9", "4:3", "3:4", "3:2", "2:3", "5:4", "4:5", "21:9", "auto"],
|
|
18380
|
+
outputFormats: ["png", "jpg"]
|
|
18381
|
+
}),
|
|
18382
|
+
imageDoc({
|
|
18383
|
+
id: "seedream-4.0",
|
|
18384
|
+
name: "Seedream 4.0",
|
|
18385
|
+
description: "Seedream 4.0 image generation/editing through KIE.",
|
|
18386
|
+
capabilities: ["text-to-image", "image-to-image"],
|
|
18387
|
+
variants: [perGeneration("default", "Per image", 2.5)],
|
|
18388
|
+
sizes: ["1:1", "4:3", "3:4", "3:2", "2:3", "16:9", "9:16", "21:9"],
|
|
18389
|
+
resolutions: ["1K", "2K", "4K"],
|
|
18390
|
+
acceptsImage: true
|
|
18391
|
+
}),
|
|
18392
|
+
imageDoc({
|
|
18393
|
+
id: "flux-kontext",
|
|
18394
|
+
name: "Flux.1 Kontext",
|
|
18395
|
+
description: "Flux.1 Kontext image generation/editing through KIE.",
|
|
18396
|
+
capabilities: ["text-to-image", "image-to-image"],
|
|
18397
|
+
variants: [perGeneration("pro", "Pro", 2.5, { mode: "pro" }), perGeneration("max", "Max", 5, { mode: "max" })],
|
|
18398
|
+
sizes: ["16:9", "9:16", "1:1", "4:3", "3:4", "21:9"],
|
|
18399
|
+
modes: ["pro", "max"],
|
|
18400
|
+
outputFormats: ["png", "jpg"],
|
|
18401
|
+
acceptsImage: true
|
|
18402
|
+
}),
|
|
18403
|
+
imageDoc({
|
|
18404
|
+
id: "qwen-image-edit",
|
|
18405
|
+
name: "Qwen Image Edit",
|
|
18406
|
+
description: "Precise semantic, appearance, and bilingual text editing while preserving visual coherence.",
|
|
18407
|
+
capabilities: ["image-to-image"],
|
|
18408
|
+
variants: [
|
|
18409
|
+
perGeneration("1:1", "1:1", 0.5, { size: "1:1" }),
|
|
18410
|
+
perGeneration("1:1-hd", "1:1 HD", 1.75, { size: "1:1 HD" }),
|
|
18411
|
+
perGeneration("3:4", "3:4", 1.25, { size: "3:4" }),
|
|
18412
|
+
perGeneration("9:16", "9:16", 1, { size: "9:16" }),
|
|
18413
|
+
perGeneration("4:3", "4:3", 1.25, { size: "4:3" }),
|
|
18414
|
+
perGeneration("16:9", "16:9", 1, { size: "16:9" })
|
|
18415
|
+
],
|
|
18416
|
+
sizes: ["1:1", "1:1 HD", "3:4", "9:16", "4:3", "16:9"],
|
|
18417
|
+
outputFormats: ["png", "jpg"],
|
|
18418
|
+
requiresImage: true
|
|
18419
|
+
}),
|
|
18420
|
+
imageDoc({
|
|
18421
|
+
id: "z-image",
|
|
18422
|
+
name: "Z-Image",
|
|
18423
|
+
description: "Fast photorealistic image generation with strong bilingual text rendering.",
|
|
18424
|
+
capabilities: ["text-to-image"],
|
|
18425
|
+
variants: [perGeneration("default", "Per image", 0.4)],
|
|
18426
|
+
sizes: ["1:1", "4:3", "3:4", "16:9", "9:16"]
|
|
18427
|
+
})
|
|
18428
|
+
];
|
|
18429
|
+
|
|
18086
18430
|
// src/ai/model-docs.ts
|
|
18087
18431
|
var cliAiModelDocs = [
|
|
18432
|
+
...KIE_CLI_AI_MODEL_DOCS,
|
|
18088
18433
|
{
|
|
18089
18434
|
"id": "ai-influencer-image",
|
|
18090
18435
|
"name": "AI Influencer",
|
|
@@ -18581,7 +18926,8 @@ var cliAiModelDocs = [
|
|
|
18581
18926
|
"description": "Gemini Omni text/image/video-reference to video model.",
|
|
18582
18927
|
"capabilities": [
|
|
18583
18928
|
"text-to-video",
|
|
18584
|
-
"image-to-video"
|
|
18929
|
+
"image-to-video",
|
|
18930
|
+
"video-to-video"
|
|
18585
18931
|
],
|
|
18586
18932
|
"variants": [
|
|
18587
18933
|
{
|
|
@@ -18783,7 +19129,7 @@ var cliAiModelDocs = [
|
|
|
18783
19129
|
{
|
|
18784
19130
|
"name": "referenceVideo",
|
|
18785
19131
|
"type": "string[]",
|
|
18786
|
-
"description": "Optional source video URL. Requires videoStartSeconds and videoEndSeconds; selected clip must be 10 seconds or shorter."
|
|
19132
|
+
"description": "Optional source video URL; source must be 30 seconds or shorter. Requires videoStartSeconds and videoEndSeconds; selected clip must be 10 seconds or shorter."
|
|
18787
19133
|
},
|
|
18788
19134
|
{
|
|
18789
19135
|
"name": "videoStartSeconds",
|
|
@@ -19134,6 +19480,162 @@ var cliAiModelDocs = [
|
|
|
19134
19480
|
"image_to_video requires exactly 1 referenceImage and does not send aspect ratio; size applies to text_to_video and reference_to_video."
|
|
19135
19481
|
]
|
|
19136
19482
|
},
|
|
19483
|
+
{
|
|
19484
|
+
"id": "minimax-h3",
|
|
19485
|
+
"name": "MiniMax H3",
|
|
19486
|
+
"mediaType": "video",
|
|
19487
|
+
"description": "MiniMax H3 multimodal video model. The only model that accepts image, video, and audio references in the same request.",
|
|
19488
|
+
"capabilities": [
|
|
19489
|
+
"text-to-video",
|
|
19490
|
+
"image-to-video"
|
|
19491
|
+
],
|
|
19492
|
+
"variants": [
|
|
19493
|
+
{
|
|
19494
|
+
"key": "768p",
|
|
19495
|
+
"display": "768p",
|
|
19496
|
+
"conditions": {
|
|
19497
|
+
"resolution": "768p"
|
|
19498
|
+
},
|
|
19499
|
+
"billingUnit": "per_second",
|
|
19500
|
+
"creditsPerUnit": 9.6
|
|
19501
|
+
},
|
|
19502
|
+
{
|
|
19503
|
+
"key": "2k",
|
|
19504
|
+
"display": "2K",
|
|
19505
|
+
"conditions": {
|
|
19506
|
+
"resolution": "2k"
|
|
19507
|
+
},
|
|
19508
|
+
"billingUnit": "per_second",
|
|
19509
|
+
"creditsPerUnit": 15.6
|
|
19510
|
+
}
|
|
19511
|
+
],
|
|
19512
|
+
"fields": [
|
|
19513
|
+
{
|
|
19514
|
+
"name": "prompt",
|
|
19515
|
+
"type": "string",
|
|
19516
|
+
"description": "Text instruction for the video. Up to 7000 characters.",
|
|
19517
|
+
"required": true
|
|
19518
|
+
},
|
|
19519
|
+
{
|
|
19520
|
+
"name": "mode",
|
|
19521
|
+
"type": "string",
|
|
19522
|
+
"description": "Model mode or quality/speed tier.",
|
|
19523
|
+
"values": [
|
|
19524
|
+
"standard"
|
|
19525
|
+
],
|
|
19526
|
+
"defaultValue": "standard"
|
|
19527
|
+
},
|
|
19528
|
+
{
|
|
19529
|
+
"name": "duration",
|
|
19530
|
+
"type": "string",
|
|
19531
|
+
"description": "Output duration in seconds.",
|
|
19532
|
+
"values": [
|
|
19533
|
+
"6",
|
|
19534
|
+
"4",
|
|
19535
|
+
"5",
|
|
19536
|
+
"7",
|
|
19537
|
+
"8",
|
|
19538
|
+
"9",
|
|
19539
|
+
"10",
|
|
19540
|
+
"11",
|
|
19541
|
+
"12",
|
|
19542
|
+
"13",
|
|
19543
|
+
"14",
|
|
19544
|
+
"15"
|
|
19545
|
+
],
|
|
19546
|
+
"defaultValue": "6"
|
|
19547
|
+
},
|
|
19548
|
+
{
|
|
19549
|
+
"name": "size",
|
|
19550
|
+
"type": "string",
|
|
19551
|
+
"description": "Output aspect ratio. Only sent for text_to_video and reference_to_video; 'auto' is accepted for reference_to_video only.",
|
|
19552
|
+
"values": [
|
|
19553
|
+
"16:9",
|
|
19554
|
+
"9:16",
|
|
19555
|
+
"21:9",
|
|
19556
|
+
"4:3",
|
|
19557
|
+
"1:1",
|
|
19558
|
+
"3:4",
|
|
19559
|
+
"auto"
|
|
19560
|
+
],
|
|
19561
|
+
"defaultValue": "16:9"
|
|
19562
|
+
},
|
|
19563
|
+
{
|
|
19564
|
+
"name": "resolution",
|
|
19565
|
+
"type": "string",
|
|
19566
|
+
"description": "Output resolution.",
|
|
19567
|
+
"values": [
|
|
19568
|
+
"768p",
|
|
19569
|
+
"2k"
|
|
19570
|
+
],
|
|
19571
|
+
"defaultValue": "768p"
|
|
19572
|
+
},
|
|
19573
|
+
{
|
|
19574
|
+
"name": "referenceImage",
|
|
19575
|
+
"type": "string[]",
|
|
19576
|
+
"description": "Optional public HTTP image URLs, up to 9. 1 image is the start frame, 2 images are the first and last frames, 3 or more are general references."
|
|
19577
|
+
},
|
|
19578
|
+
{
|
|
19579
|
+
"name": "referenceVideo",
|
|
19580
|
+
"type": "string[]",
|
|
19581
|
+
"description": "Optional public HTTP MP4/MOV URLs, up to 3, reference_to_video only. Each clip must be 2 to 15 seconds and they must total at most 15 seconds."
|
|
19582
|
+
},
|
|
19583
|
+
{
|
|
19584
|
+
"name": "referenceAudio",
|
|
19585
|
+
"type": "string[]",
|
|
19586
|
+
"description": "Optional public HTTP WAV/MP3 URLs, up to 3, reference_to_video only. Each clip must be 2 to 15 seconds. Audio cannot be the only reference."
|
|
19587
|
+
},
|
|
19588
|
+
{
|
|
19589
|
+
"name": "generationType",
|
|
19590
|
+
"type": "string",
|
|
19591
|
+
"description": "Optional workflow mode hint. Inferred from the references when omitted.",
|
|
19592
|
+
"values": [
|
|
19593
|
+
"text_to_video",
|
|
19594
|
+
"image_to_video",
|
|
19595
|
+
"first_last_frames_to_video",
|
|
19596
|
+
"reference_to_video"
|
|
19597
|
+
]
|
|
19598
|
+
}
|
|
19599
|
+
],
|
|
19600
|
+
"examples": [
|
|
19601
|
+
{
|
|
19602
|
+
"label": "Text to video",
|
|
19603
|
+
"inputs": {
|
|
19604
|
+
"prompt": "A cinematic tracking shot gliding through a rain-soaked neon alley at night",
|
|
19605
|
+
"duration": "6",
|
|
19606
|
+
"size": "16:9",
|
|
19607
|
+
"resolution": "768p"
|
|
19608
|
+
}
|
|
19609
|
+
},
|
|
19610
|
+
{
|
|
19611
|
+
"label": "Multimodal reference to video",
|
|
19612
|
+
"inputs": {
|
|
19613
|
+
"prompt": "Keep the character appearance, follow the reference camera movement, match the reference music",
|
|
19614
|
+
"generationType": "reference_to_video",
|
|
19615
|
+
"referenceImage": [
|
|
19616
|
+
"https://example.com/character.jpg"
|
|
19617
|
+
],
|
|
19618
|
+
"referenceVideo": [
|
|
19619
|
+
"https://example.com/movement.mp4"
|
|
19620
|
+
],
|
|
19621
|
+
"referenceAudio": [
|
|
19622
|
+
"https://example.com/music.mp3"
|
|
19623
|
+
],
|
|
19624
|
+
"duration": "8",
|
|
19625
|
+
"size": "auto",
|
|
19626
|
+
"resolution": "2k"
|
|
19627
|
+
}
|
|
19628
|
+
}
|
|
19629
|
+
],
|
|
19630
|
+
"notes": [
|
|
19631
|
+
"generationType is inferred from the references: none is text_to_video, 1 image is image_to_video, 2 images are first_last_frames_to_video, and 3+ images or any video/audio reference is reference_to_video. Pass generationType=reference_to_video explicitly to treat 1 or 2 images as plain references instead of frames.",
|
|
19632
|
+
"image, video, and audio references support at most 12 items in total.",
|
|
19633
|
+
"size is rejected for image_to_video and first_last_frames_to_video, so it is not sent for those modes. 'auto' is valid only for reference_to_video.",
|
|
19634
|
+
"Billing counts the generated duration plus the full duration of every reference video, at the output resolution's rate. The first 5 reference images are free; each one after that adds a flat surcharge.",
|
|
19635
|
+
"sound, seed, negativePrompt, storyboard, elements, and video extension are not supported.",
|
|
19636
|
+
"An error_code of generation_failed with a 'system error, MiniMax-H3 task-control' message is an upstream capacity fault, not a prompt problem. Failed jobs are not charged, so retry the same prompt."
|
|
19637
|
+
]
|
|
19638
|
+
},
|
|
19137
19639
|
{
|
|
19138
19640
|
"id": "heygen-avatar-4",
|
|
19139
19641
|
"name": "HeyGen Avatar 4 Lipsync",
|
|
@@ -19965,6 +20467,218 @@ var cliAiModelDocs = [
|
|
|
19965
20467
|
"generationType=text_to_video rejects reference inputs; reference_to_video requires at least one reference input; first_last_frames_to_video requires exactly 2 reference images and no video/audio input."
|
|
19966
20468
|
]
|
|
19967
20469
|
},
|
|
20470
|
+
{
|
|
20471
|
+
"id": "seedance-2.5",
|
|
20472
|
+
"name": "Seedance 2.5",
|
|
20473
|
+
"mediaType": "video",
|
|
20474
|
+
"description": "Seedance 2.5 text/image/reference video model with multi-asset references and up to 30s output.",
|
|
20475
|
+
"capabilities": [
|
|
20476
|
+
"text-to-video",
|
|
20477
|
+
"image-to-video",
|
|
20478
|
+
"reference-to-video"
|
|
20479
|
+
],
|
|
20480
|
+
"variants": [
|
|
20481
|
+
{
|
|
20482
|
+
"key": "480p",
|
|
20483
|
+
"display": "480p",
|
|
20484
|
+
"conditions": {
|
|
20485
|
+
"resolution": "480p"
|
|
20486
|
+
},
|
|
20487
|
+
"billingUnit": "per_second",
|
|
20488
|
+
"creditsPerUnit": 13.63
|
|
20489
|
+
},
|
|
20490
|
+
{
|
|
20491
|
+
"key": "720p",
|
|
20492
|
+
"display": "720p",
|
|
20493
|
+
"conditions": {
|
|
20494
|
+
"resolution": "720p"
|
|
20495
|
+
},
|
|
20496
|
+
"billingUnit": "per_second",
|
|
20497
|
+
"creditsPerUnit": 30.68
|
|
20498
|
+
},
|
|
20499
|
+
{
|
|
20500
|
+
"key": "480p-video-url",
|
|
20501
|
+
"display": "480p, with input video",
|
|
20502
|
+
"conditions": {
|
|
20503
|
+
"resolution": "480p",
|
|
20504
|
+
"feature": "video_url"
|
|
20505
|
+
},
|
|
20506
|
+
"billingUnit": "per_second",
|
|
20507
|
+
"creditsPerUnit": 8.18
|
|
20508
|
+
},
|
|
20509
|
+
{
|
|
20510
|
+
"key": "720p-video-url",
|
|
20511
|
+
"display": "720p, with input video",
|
|
20512
|
+
"conditions": {
|
|
20513
|
+
"resolution": "720p",
|
|
20514
|
+
"feature": "video_url"
|
|
20515
|
+
},
|
|
20516
|
+
"billingUnit": "per_second",
|
|
20517
|
+
"creditsPerUnit": 18.41
|
|
20518
|
+
}
|
|
20519
|
+
],
|
|
20520
|
+
"fields": [
|
|
20521
|
+
{
|
|
20522
|
+
"name": "prompt",
|
|
20523
|
+
"type": "string",
|
|
20524
|
+
"description": "Text instruction for the video.",
|
|
20525
|
+
"required": true
|
|
20526
|
+
},
|
|
20527
|
+
{
|
|
20528
|
+
"name": "duration",
|
|
20529
|
+
"type": "string",
|
|
20530
|
+
"description": "Output duration in seconds.",
|
|
20531
|
+
"values": [
|
|
20532
|
+
"4",
|
|
20533
|
+
"5",
|
|
20534
|
+
"6",
|
|
20535
|
+
"8",
|
|
20536
|
+
"10",
|
|
20537
|
+
"12",
|
|
20538
|
+
"15",
|
|
20539
|
+
"20",
|
|
20540
|
+
"25",
|
|
20541
|
+
"30"
|
|
20542
|
+
],
|
|
20543
|
+
"defaultValue": "5"
|
|
20544
|
+
},
|
|
20545
|
+
{
|
|
20546
|
+
"name": "size",
|
|
20547
|
+
"type": "string",
|
|
20548
|
+
"description": "Output aspect ratio. 'adaptive' lets the model pick framing from its references.",
|
|
20549
|
+
"values": [
|
|
20550
|
+
"adaptive",
|
|
20551
|
+
"9:16",
|
|
20552
|
+
"16:9",
|
|
20553
|
+
"1:1",
|
|
20554
|
+
"4:3",
|
|
20555
|
+
"3:4",
|
|
20556
|
+
"21:9"
|
|
20557
|
+
],
|
|
20558
|
+
"defaultValue": "adaptive"
|
|
20559
|
+
},
|
|
20560
|
+
{
|
|
20561
|
+
"name": "resolution",
|
|
20562
|
+
"type": "string",
|
|
20563
|
+
"description": "Output resolution. Seedance 2.5 has no 1080p tier.",
|
|
20564
|
+
"values": [
|
|
20565
|
+
"720p",
|
|
20566
|
+
"480p"
|
|
20567
|
+
],
|
|
20568
|
+
"defaultValue": "720p"
|
|
20569
|
+
},
|
|
20570
|
+
{
|
|
20571
|
+
"name": "referenceImage",
|
|
20572
|
+
"type": "string[]",
|
|
20573
|
+
"description": "Optional image URLs. At most 30; must be public HTTP/HTTPS URLs."
|
|
20574
|
+
},
|
|
20575
|
+
{
|
|
20576
|
+
"name": "referenceVideo",
|
|
20577
|
+
"type": "string[]",
|
|
20578
|
+
"description": "Optional source video URLs. At most 10, each 2-30s, 30s total across all clips."
|
|
20579
|
+
},
|
|
20580
|
+
{
|
|
20581
|
+
"name": "referenceAudio",
|
|
20582
|
+
"type": "string[]",
|
|
20583
|
+
"description": "Optional reference audio URLs. At most 10, each 2-30s, 30s total across all clips."
|
|
20584
|
+
},
|
|
20585
|
+
{
|
|
20586
|
+
"name": "sound",
|
|
20587
|
+
"type": "boolean",
|
|
20588
|
+
"description": "Whether to request generated sound.",
|
|
20589
|
+
"defaultValue": true
|
|
20590
|
+
},
|
|
20591
|
+
{
|
|
20592
|
+
"name": "generationType",
|
|
20593
|
+
"type": "string",
|
|
20594
|
+
"description": "Optional workflow mode hint; inferred from reference counts when omitted.",
|
|
20595
|
+
"values": [
|
|
20596
|
+
"text_to_video",
|
|
20597
|
+
"image_to_video",
|
|
20598
|
+
"first_last_frames_to_video",
|
|
20599
|
+
"reference_to_video"
|
|
20600
|
+
]
|
|
20601
|
+
}
|
|
20602
|
+
],
|
|
20603
|
+
"examples": [
|
|
20604
|
+
{
|
|
20605
|
+
"label": "Generate video",
|
|
20606
|
+
"inputs": {
|
|
20607
|
+
"prompt": "A calm 5 second vertical shot of a minimal terminal interface glowing on a laptop",
|
|
20608
|
+
"duration": "5",
|
|
20609
|
+
"size": "9:16",
|
|
20610
|
+
"resolution": "480p",
|
|
20611
|
+
"sound": false
|
|
20612
|
+
}
|
|
20613
|
+
}
|
|
20614
|
+
],
|
|
20615
|
+
"notes": [
|
|
20616
|
+
"Seedance 2.5 has no fast tier, no 1080p, and does not support seed, extend, storyboard, elements, or negativePrompt.",
|
|
20617
|
+
"asset:// URIs are rejected; every reference must be a public HTTP/HTTPS URL. Seedance 2.0 does accept asset:// URIs.",
|
|
20618
|
+
"referenceImage supports at most 30 URLs, referenceVideo at most 10, referenceAudio at most 10, and at most 50 references in total.",
|
|
20619
|
+
"With input video the per-second rate drops but billable seconds become the summed duration of every input video (minimum 4) plus the output duration.",
|
|
20620
|
+
"generationType=text_to_video rejects reference inputs; first_last_frames_to_video requires exactly 2 reference images; only reference_to_video accepts video or audio references."
|
|
20621
|
+
]
|
|
20622
|
+
},
|
|
20623
|
+
{
|
|
20624
|
+
id: "bria-video-background-removal",
|
|
20625
|
+
name: "Bria Video Background Removal",
|
|
20626
|
+
mediaType: "video",
|
|
20627
|
+
description: "Remove a video background with Bria VRMBG 3.0 and replace it with a solid colour.",
|
|
20628
|
+
capabilities: ["video-to-video"],
|
|
20629
|
+
variants: [
|
|
20630
|
+
{
|
|
20631
|
+
key: "default",
|
|
20632
|
+
display: "Per second of source video",
|
|
20633
|
+
conditions: {},
|
|
20634
|
+
billingUnit: "per_second",
|
|
20635
|
+
creditsPerUnit: 0.42
|
|
20636
|
+
}
|
|
20637
|
+
],
|
|
20638
|
+
fields: [
|
|
20639
|
+
{
|
|
20640
|
+
name: "referenceVideo",
|
|
20641
|
+
type: "string[]",
|
|
20642
|
+
description: "Exactly one public HTTP/HTTPS source video URL, up to 100 MiB.",
|
|
20643
|
+
required: true
|
|
20644
|
+
},
|
|
20645
|
+
{
|
|
20646
|
+
name: "mode",
|
|
20647
|
+
type: "string",
|
|
20648
|
+
description: "Solid replacement background colour.",
|
|
20649
|
+
values: ["Green", "Black", "White", "Gray", "Red", "Blue", "Yellow", "Cyan", "Magenta", "Orange"],
|
|
20650
|
+
defaultValue: "Green"
|
|
20651
|
+
},
|
|
20652
|
+
{
|
|
20653
|
+
name: "preserveAudio",
|
|
20654
|
+
type: "boolean",
|
|
20655
|
+
description: "Keep the source audio track in the output.",
|
|
20656
|
+
defaultValue: true
|
|
20657
|
+
},
|
|
20658
|
+
{
|
|
20659
|
+
name: "autoZoom",
|
|
20660
|
+
type: "boolean",
|
|
20661
|
+
description: "Crop the output to the tightest rectangle that contains the subject for the whole clip.",
|
|
20662
|
+
defaultValue: false
|
|
20663
|
+
}
|
|
20664
|
+
],
|
|
20665
|
+
examples: [
|
|
20666
|
+
{
|
|
20667
|
+
label: "Remove a video background",
|
|
20668
|
+
inputs: {
|
|
20669
|
+
referenceVideo: ["https://example.com/source.mp4"],
|
|
20670
|
+
mode: "Green",
|
|
20671
|
+
preserveAudio: true,
|
|
20672
|
+
autoZoom: false
|
|
20673
|
+
}
|
|
20674
|
+
}
|
|
20675
|
+
],
|
|
20676
|
+
notes: [
|
|
20677
|
+
"No prompt is required or accepted; provide exactly one referenceVideo URL.",
|
|
20678
|
+
"Every colour uses the same rate, billed from the measured source-video duration.",
|
|
20679
|
+
"The output is H.264 MP4 with a solid background; transparent output is not available through this model integration."
|
|
20680
|
+
]
|
|
20681
|
+
},
|
|
19968
20682
|
{
|
|
19969
20683
|
"id": "veo3.1",
|
|
19970
20684
|
"name": "Veo 3.1",
|
|
@@ -20076,9 +20790,11 @@ var cliAiModelDocs = [
|
|
|
20076
20790
|
{
|
|
20077
20791
|
"name": "duration",
|
|
20078
20792
|
"type": "string",
|
|
20079
|
-
"description": "Output duration in seconds.",
|
|
20793
|
+
"description": "Output duration in seconds. SoCheap supports 4, 6, and 8 for text_to_video and first_last_frames_to_video; fast reference_to_video is 8 only.",
|
|
20080
20794
|
"values": [
|
|
20081
|
-
"8"
|
|
20795
|
+
"8",
|
|
20796
|
+
"4",
|
|
20797
|
+
"6"
|
|
20082
20798
|
],
|
|
20083
20799
|
"defaultValue": "8"
|
|
20084
20800
|
},
|
|
@@ -20106,7 +20822,7 @@ var cliAiModelDocs = [
|
|
|
20106
20822
|
{
|
|
20107
20823
|
"name": "referenceImage",
|
|
20108
20824
|
"type": "string[]",
|
|
20109
|
-
"description": "Optional image URLs. 1
|
|
20825
|
+
"description": "Optional image URLs, at most 3. On veo-google: 1 = first frame, 2 = first and last frames, 3 = subject references. On socheap-media: 1 = reference_to_video (fast mode only), exactly 2 = first_last_frames_to_video."
|
|
20110
20826
|
},
|
|
20111
20827
|
{
|
|
20112
20828
|
"name": "generationType",
|
|
@@ -20145,8 +20861,12 @@ var cliAiModelDocs = [
|
|
|
20145
20861
|
"Veo 3.1 supports 16:9 and 9:16 output aspect ratios.",
|
|
20146
20862
|
"referenceVideo and referenceAudio are not supported.",
|
|
20147
20863
|
"image_to_video is not a supported generationType; use reference_to_video with one or more referenceImage URLs.",
|
|
20864
|
+
"socheap-media supports duration 4, 6, and 8 for text_to_video and first_last_frames_to_video at 720p, 1080p, and 4k. Fast reference_to_video remains 8 seconds.",
|
|
20865
|
+
"veo-google supports duration 4 and 6 only at resolution=720p, with at most 2 referenceImage URLs and extend unset.",
|
|
20866
|
+
"quality mode with a single referenceImage requires --provider-id veo-google; socheap-media needs exactly 2 frames in quality mode.",
|
|
20148
20867
|
"first_last_frames_to_video requires exactly 2 referenceImage URLs.",
|
|
20149
|
-
"extendFromJobId requires resolution=720p."
|
|
20868
|
+
"extendFromJobId requires resolution=720p and a source generated by socheap-media. Omit duration; SoCheap extensions have a fixed 7 second output.",
|
|
20869
|
+
"Veo renders picture and audio in one pass, so an audio-side failure fails the whole job. It is intermittent \u2014 retry the same prompt before rewriting it."
|
|
20150
20870
|
]
|
|
20151
20871
|
},
|
|
20152
20872
|
{
|
|
@@ -20674,13 +21394,6 @@ var commandDefinitions = [
|
|
|
20674
21394
|
type: "string",
|
|
20675
21395
|
enumValues: ["draft", "scheduled", "pending", "completed", "failed", "canceled"]
|
|
20676
21396
|
},
|
|
20677
|
-
{
|
|
20678
|
-
name: "accountSource",
|
|
20679
|
-
flag: "--account-source <source>",
|
|
20680
|
-
description: "Filter by account type.",
|
|
20681
|
-
type: "string",
|
|
20682
|
-
enumValues: ["oauth_account", "operation_account"]
|
|
20683
|
-
},
|
|
20684
21397
|
{
|
|
20685
21398
|
name: "agentId",
|
|
20686
21399
|
flag: "--agent-id <agentId>",
|
|
@@ -20697,7 +21410,6 @@ var commandDefinitions = [
|
|
|
20697
21410
|
{ name: "offset", source: "option", from: "offset" },
|
|
20698
21411
|
{ name: "platform", source: "option", from: "platform" },
|
|
20699
21412
|
{ name: "status", source: "option", from: "status" },
|
|
20700
|
-
{ name: "accountSource", source: "option", from: "accountSource" },
|
|
20701
21413
|
{ name: "agentId", source: "option", from: "agentId" }
|
|
20702
21414
|
]
|
|
20703
21415
|
},
|
|
@@ -20743,14 +21455,6 @@ var commandDefinitions = [
|
|
|
20743
21455
|
enumValues: ["video", "photo", "text", "mixed"]
|
|
20744
21456
|
},
|
|
20745
21457
|
{ name: "accountId", flag: "--account-id <accountId>", description: "Publishing account ID.", type: "string" },
|
|
20746
|
-
{
|
|
20747
|
-
name: "accountSource",
|
|
20748
|
-
flag: "--account-source <source>",
|
|
20749
|
-
description: "Publishing account type.",
|
|
20750
|
-
type: "string",
|
|
20751
|
-
enumValues: ["oauth_account", "operation_account"],
|
|
20752
|
-
defaultValue: "oauth_account"
|
|
20753
|
-
},
|
|
20754
21458
|
{ name: "title", flag: "--title <title>", description: "Draft title.", type: "string" },
|
|
20755
21459
|
{
|
|
20756
21460
|
name: "description",
|
|
@@ -20775,7 +21479,6 @@ var commandDefinitions = [
|
|
|
20775
21479
|
{ name: "platform", source: "option", from: "platform" },
|
|
20776
21480
|
{ name: "contentKind", source: "option", from: "contentKind" },
|
|
20777
21481
|
{ name: "accountId", source: "option", from: "accountId" },
|
|
20778
|
-
{ name: "accountSource", source: "option", from: "accountSource" },
|
|
20779
21482
|
{ name: "title", source: "option", from: "title" },
|
|
20780
21483
|
{ name: "description", source: "option", from: "description" },
|
|
20781
21484
|
{ name: "mediaUrls", source: "option", from: "mediaUrls" },
|
|
@@ -21020,16 +21723,37 @@ var commandDefinitions = [
|
|
|
21020
21723
|
type: "string",
|
|
21021
21724
|
enumValues: ["dashboard", "admin"],
|
|
21022
21725
|
defaultValue: "dashboard"
|
|
21726
|
+
},
|
|
21727
|
+
{
|
|
21728
|
+
name: "view",
|
|
21729
|
+
flag: "--view <view>",
|
|
21730
|
+
description: "Catalog detail level. Use summary for discovery and full for selected node schemas.",
|
|
21731
|
+
type: "string",
|
|
21732
|
+
enumValues: ["summary", "full"],
|
|
21733
|
+
defaultValue: "full"
|
|
21734
|
+
},
|
|
21735
|
+
{
|
|
21736
|
+
name: "nodeType",
|
|
21737
|
+
flag: "--node-type <nodeType>",
|
|
21738
|
+
description: "Return only this node type. Repeat to request multiple types.",
|
|
21739
|
+
type: "stringArray"
|
|
21023
21740
|
}
|
|
21024
21741
|
],
|
|
21025
21742
|
http: {
|
|
21026
21743
|
method: "GET",
|
|
21027
21744
|
path: "/api/cli/v1/workflows/node-catalog",
|
|
21028
21745
|
authRequired: true,
|
|
21029
|
-
query: [
|
|
21746
|
+
query: [
|
|
21747
|
+
{ name: "surface", source: "option", from: "surface" },
|
|
21748
|
+
{ name: "view", source: "option", from: "view" },
|
|
21749
|
+
{ name: "type", source: "option", from: "nodeType" }
|
|
21750
|
+
]
|
|
21030
21751
|
},
|
|
21031
21752
|
resultType: "workflowNodeCatalog",
|
|
21032
|
-
examples: [
|
|
21753
|
+
examples: [
|
|
21754
|
+
"spira workflows node-catalog --view summary --json",
|
|
21755
|
+
"spira workflows node-catalog --view full --node-type textInput --node-type textChatLlm --json"
|
|
21756
|
+
],
|
|
21033
21757
|
relatedCommands: [
|
|
21034
21758
|
"spira workflows create --name <name>",
|
|
21035
21759
|
"spira workflows update <workflowId>",
|
|
@@ -21250,6 +21974,31 @@ var commandDefinitions = [
|
|
|
21250
21974
|
examples: ["spira workflows runs start wf_123"],
|
|
21251
21975
|
relatedCommands: ["spira workflows runs get <runId>", "spira credits balance"]
|
|
21252
21976
|
},
|
|
21977
|
+
{
|
|
21978
|
+
path: ["workflows", "runs", "cancel"],
|
|
21979
|
+
purpose: "Cancel a running workflow run. Idempotent.",
|
|
21980
|
+
arguments: [{ name: "runId", description: "Workflow run ID.", required: true }],
|
|
21981
|
+
options: [
|
|
21982
|
+
{
|
|
21983
|
+
name: "surface",
|
|
21984
|
+
flag: "--surface <surface>",
|
|
21985
|
+
description: "Workflow access surface.",
|
|
21986
|
+
type: "string",
|
|
21987
|
+
enumValues: ["dashboard", "admin"],
|
|
21988
|
+
defaultValue: "dashboard"
|
|
21989
|
+
}
|
|
21990
|
+
],
|
|
21991
|
+
http: {
|
|
21992
|
+
method: "POST",
|
|
21993
|
+
path: "/api/workflows/runs/:runId/cancel",
|
|
21994
|
+
authRequired: true,
|
|
21995
|
+
pathParams: [{ name: "runId", source: "argument", from: "runId" }],
|
|
21996
|
+
body: [{ name: "surface", source: "option", from: "surface" }]
|
|
21997
|
+
},
|
|
21998
|
+
resultType: "workflowRunAction",
|
|
21999
|
+
examples: ["spira workflows runs cancel run_abc"],
|
|
22000
|
+
relatedCommands: ["spira workflows runs get <runId>", "spira workflows runs list <workflowId>"]
|
|
22001
|
+
},
|
|
21253
22002
|
{
|
|
21254
22003
|
path: ["schedules", "list"],
|
|
21255
22004
|
purpose: "List schedules.",
|
|
@@ -21601,8 +22350,12 @@ var import_node_path2 = require("node:path");
|
|
|
21601
22350
|
var import_promises = require("node:fs/promises");
|
|
21602
22351
|
var import_node_path = require("node:path");
|
|
21603
22352
|
var import_node_os = require("node:os");
|
|
21604
|
-
|
|
21605
|
-
|
|
22353
|
+
function configDir() {
|
|
22354
|
+
return process.env.SPIRA_CLI_HOME || (0, import_node_path.join)((0, import_node_os.homedir)(), ".spira");
|
|
22355
|
+
}
|
|
22356
|
+
function sessionPath() {
|
|
22357
|
+
return (0, import_node_path.join)(configDir(), "session.json");
|
|
22358
|
+
}
|
|
21606
22359
|
function normalizeBaseUrl(apiUrl) {
|
|
21607
22360
|
const parsed = new URL(apiUrl);
|
|
21608
22361
|
parsed.pathname = parsed.pathname.replace(/\/+$/, "");
|
|
@@ -21635,7 +22388,7 @@ function cookieHeaderFromSession(session) {
|
|
|
21635
22388
|
}
|
|
21636
22389
|
async function readSession() {
|
|
21637
22390
|
try {
|
|
21638
|
-
const raw = await (0, import_promises.readFile)(
|
|
22391
|
+
const raw = await (0, import_promises.readFile)(sessionPath(), "utf8");
|
|
21639
22392
|
const parsed = JSON.parse(raw);
|
|
21640
22393
|
if (!parsed.apiUrl || !Array.isArray(parsed.cookies)) return null;
|
|
21641
22394
|
return parsed;
|
|
@@ -21645,17 +22398,17 @@ async function readSession() {
|
|
|
21645
22398
|
}
|
|
21646
22399
|
}
|
|
21647
22400
|
async function writeSession(session) {
|
|
21648
|
-
await (0, import_promises.mkdir)((0, import_node_path.dirname)(
|
|
22401
|
+
await (0, import_promises.mkdir)((0, import_node_path.dirname)(sessionPath()), { recursive: true, mode: 448 });
|
|
21649
22402
|
const normalized = {
|
|
21650
22403
|
...session,
|
|
21651
22404
|
apiUrl: normalizeBaseUrl(session.apiUrl)
|
|
21652
22405
|
};
|
|
21653
|
-
await (0, import_promises.writeFile)(
|
|
22406
|
+
await (0, import_promises.writeFile)(sessionPath(), `${JSON.stringify(normalized, null, 2)}
|
|
21654
22407
|
`, { mode: 384 });
|
|
21655
22408
|
return normalized;
|
|
21656
22409
|
}
|
|
21657
22410
|
async function clearSession() {
|
|
21658
|
-
await (0, import_promises.rm)(
|
|
22411
|
+
await (0, import_promises.rm)(sessionPath(), { force: true });
|
|
21659
22412
|
}
|
|
21660
22413
|
function splitCombinedSetCookieHeader(value) {
|
|
21661
22414
|
return value.split(/,(?=\s*[^;,=\s]+=[^;,]*)/g).map((item) => item.trim()).filter(Boolean);
|
|
@@ -21685,10 +22438,12 @@ async function refreshSessionCookies(session, headers) {
|
|
|
21685
22438
|
|
|
21686
22439
|
// src/auth/config.ts
|
|
21687
22440
|
var DEFAULT_BASE_URL = "https://spira.ai";
|
|
21688
|
-
|
|
22441
|
+
function configPath() {
|
|
22442
|
+
return (0, import_node_path2.join)(configDir(), "config.json");
|
|
22443
|
+
}
|
|
21689
22444
|
async function readConfig() {
|
|
21690
22445
|
try {
|
|
21691
|
-
const raw = await (0, import_promises2.readFile)(
|
|
22446
|
+
const raw = await (0, import_promises2.readFile)(configPath(), "utf8");
|
|
21692
22447
|
const parsed = JSON.parse(raw);
|
|
21693
22448
|
return parsed && typeof parsed === "object" ? parsed : {};
|
|
21694
22449
|
} catch (error51) {
|
|
@@ -21697,8 +22452,8 @@ async function readConfig() {
|
|
|
21697
22452
|
}
|
|
21698
22453
|
}
|
|
21699
22454
|
async function writeConfig(config2) {
|
|
21700
|
-
await (0, import_promises2.mkdir)((0, import_node_path2.dirname)(
|
|
21701
|
-
await (0, import_promises2.writeFile)(
|
|
22455
|
+
await (0, import_promises2.mkdir)((0, import_node_path2.dirname)(configPath()), { recursive: true, mode: 448 });
|
|
22456
|
+
await (0, import_promises2.writeFile)(configPath(), `${JSON.stringify(config2, null, 2)}
|
|
21702
22457
|
`, { mode: 384 });
|
|
21703
22458
|
return config2;
|
|
21704
22459
|
}
|
|
@@ -22316,11 +23071,10 @@ function renderAccountList(data) {
|
|
|
22316
23071
|
return {
|
|
22317
23072
|
platform: record2.platform,
|
|
22318
23073
|
connected: record2.oauthAccountsCount,
|
|
22319
|
-
managed: record2.cloudDeviceAccountsCount,
|
|
22320
23074
|
publishWith: record2.availableStrategies
|
|
22321
23075
|
};
|
|
22322
23076
|
});
|
|
22323
|
-
return renderRows(rows, ["platform", "connected", "
|
|
23077
|
+
return renderRows(rows, ["platform", "connected", "publishWith"]);
|
|
22324
23078
|
}
|
|
22325
23079
|
return renderKeyValues(data);
|
|
22326
23080
|
}
|
|
@@ -22379,7 +23133,6 @@ function renderSocialSubmissionDetail(data) {
|
|
|
22379
23133
|
platform: raw.platform,
|
|
22380
23134
|
status: raw.status ?? "published",
|
|
22381
23135
|
contentKind: raw.contentKind,
|
|
22382
|
-
accountSource: raw.accountSource,
|
|
22383
23136
|
agentId: raw.agentId,
|
|
22384
23137
|
postUrl: nested.postUrl,
|
|
22385
23138
|
providerSubmissionId: nested.tweetId
|
|
@@ -22389,7 +23142,6 @@ function renderSocialSubmissionDetail(data) {
|
|
|
22389
23142
|
`platform: ${valueToText(record2.platform)}`,
|
|
22390
23143
|
`status: ${valueToText(record2.status)}`,
|
|
22391
23144
|
`content: ${valueToText(record2.contentKind)}`,
|
|
22392
|
-
`accountType: ${valueToText(record2.accountSource)}`,
|
|
22393
23145
|
`agentId: ${valueToText(record2.agentId)}`
|
|
22394
23146
|
];
|
|
22395
23147
|
const title = compactText(record2.title);
|
|
@@ -23064,8 +23816,8 @@ function renderCommandIndex() {
|
|
|
23064
23816
|
`;
|
|
23065
23817
|
}
|
|
23066
23818
|
async function packageVersion() {
|
|
23067
|
-
if ("0.0.
|
|
23068
|
-
return "0.0.
|
|
23819
|
+
if ("0.0.14".length > 0) {
|
|
23820
|
+
return "0.0.14";
|
|
23069
23821
|
}
|
|
23070
23822
|
try {
|
|
23071
23823
|
const packageUrl = new URL("../package.json", import_meta.url);
|