@seawork/cli 1.0.4 → 1.0.10-rc.4

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.
Files changed (85) hide show
  1. package/dist/cli.d.ts.map +1 -1
  2. package/dist/cli.js +12 -0
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/agent/inspect.d.ts +46 -3
  5. package/dist/commands/agent/inspect.d.ts.map +1 -1
  6. package/dist/commands/agent/inspect.js +3 -3
  7. package/dist/commands/agent/inspect.js.map +1 -1
  8. package/dist/commands/agent/ls.d.ts +3 -0
  9. package/dist/commands/agent/ls.d.ts.map +1 -1
  10. package/dist/commands/agent/ls.js +1 -1
  11. package/dist/commands/agent/ls.js.map +1 -1
  12. package/dist/commands/daemon/status.d.ts.map +1 -1
  13. package/dist/commands/daemon/status.js +0 -1
  14. package/dist/commands/daemon/status.js.map +1 -1
  15. package/dist/commands/doctor.d.ts +10 -0
  16. package/dist/commands/doctor.d.ts.map +1 -0
  17. package/dist/commands/doctor.js +107 -0
  18. package/dist/commands/doctor.js.map +1 -0
  19. package/dist/commands/provider/index.js +1 -1
  20. package/dist/commands/provider/index.js.map +1 -1
  21. package/dist/commands/remote/attach.d.ts +32 -0
  22. package/dist/commands/remote/attach.d.ts.map +1 -0
  23. package/dist/commands/remote/attach.js +102 -0
  24. package/dist/commands/remote/attach.js.map +1 -0
  25. package/dist/commands/remote/index.d.ts +3 -0
  26. package/dist/commands/remote/index.d.ts.map +1 -0
  27. package/dist/commands/remote/index.js +16 -0
  28. package/dist/commands/remote/index.js.map +1 -0
  29. package/dist/commands/remote/inspect.d.ts +10 -0
  30. package/dist/commands/remote/inspect.d.ts.map +1 -0
  31. package/dist/commands/remote/inspect.js +43 -0
  32. package/dist/commands/remote/inspect.js.map +1 -0
  33. package/dist/commands/remote/logs.d.ts +9 -0
  34. package/dist/commands/remote/logs.d.ts.map +1 -0
  35. package/dist/commands/remote/logs.js +55 -0
  36. package/dist/commands/remote/logs.js.map +1 -0
  37. package/dist/commands/remote/ls.d.ts +11 -0
  38. package/dist/commands/remote/ls.d.ts.map +1 -0
  39. package/dist/commands/remote/ls.js +44 -0
  40. package/dist/commands/remote/ls.js.map +1 -0
  41. package/dist/commands/remote/status.d.ts +14 -0
  42. package/dist/commands/remote/status.d.ts.map +1 -0
  43. package/dist/commands/remote/status.js +65 -0
  44. package/dist/commands/remote/status.js.map +1 -0
  45. package/dist/commands/sac/3d.d.ts +5 -0
  46. package/dist/commands/sac/3d.d.ts.map +1 -0
  47. package/dist/commands/sac/3d.js +49 -0
  48. package/dist/commands/sac/3d.js.map +1 -0
  49. package/dist/commands/sac/audio.d.ts +5 -0
  50. package/dist/commands/sac/audio.d.ts.map +1 -0
  51. package/dist/commands/sac/audio.js +36 -0
  52. package/dist/commands/sac/audio.js.map +1 -0
  53. package/dist/commands/sac/common.d.ts +23 -0
  54. package/dist/commands/sac/common.d.ts.map +1 -0
  55. package/dist/commands/sac/common.js +117 -0
  56. package/dist/commands/sac/common.js.map +1 -0
  57. package/dist/commands/sac/image.d.ts +5 -0
  58. package/dist/commands/sac/image.d.ts.map +1 -0
  59. package/dist/commands/sac/image.js +55 -0
  60. package/dist/commands/sac/image.js.map +1 -0
  61. package/dist/commands/sac/index.d.ts +3 -0
  62. package/dist/commands/sac/index.d.ts.map +1 -0
  63. package/dist/commands/sac/index.js +26 -0
  64. package/dist/commands/sac/index.js.map +1 -0
  65. package/dist/commands/sac/models.d.ts +10 -0
  66. package/dist/commands/sac/models.d.ts.map +1 -0
  67. package/dist/commands/sac/models.js +57 -0
  68. package/dist/commands/sac/models.js.map +1 -0
  69. package/dist/commands/sac/task.d.ts +14 -0
  70. package/dist/commands/sac/task.d.ts.map +1 -0
  71. package/dist/commands/sac/task.js +56 -0
  72. package/dist/commands/sac/task.js.map +1 -0
  73. package/dist/commands/sac/video.d.ts +5 -0
  74. package/dist/commands/sac/video.d.ts.map +1 -0
  75. package/dist/commands/sac/video.js +101 -0
  76. package/dist/commands/sac/video.js.map +1 -0
  77. package/dist/commands/sessions/index.d.ts +3 -0
  78. package/dist/commands/sessions/index.d.ts.map +1 -0
  79. package/dist/commands/sessions/index.js +10 -0
  80. package/dist/commands/sessions/index.js.map +1 -0
  81. package/dist/commands/sessions/ls.d.ts +21 -0
  82. package/dist/commands/sessions/ls.d.ts.map +1 -0
  83. package/dist/commands/sessions/ls.js +109 -0
  84. package/dist/commands/sessions/ls.js.map +1 -0
  85. package/package.json +3 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../../../src/commands/sac/common.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { Command } from "commander";
2
+ import { type SacCommandOptions } from "./common.js";
3
+ export declare function addImageOptions(cmd: Command): Command;
4
+ export declare function runImageCommand(options: SacCommandOptions): Promise<void>;
5
+ //# sourceMappingURL=image.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image.d.ts","sourceRoot":"","sources":["../../../src/commands/sac/image.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAA6D,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAgDhH,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAGrD;AAED,wBAAsB,eAAe,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/E"}
@@ -0,0 +1,55 @@
1
+ import { generateImage } from "@seawork/server/sac";
2
+ import { addSacOptions, runGenerationCommand } from "./common.js";
3
+ const IMAGE_OPTIONS = [
4
+ { flag: "--prompt <text>", description: "Image description (required for prompt-driven models)" },
5
+ { flag: "--model <model>", description: "Model ID. Run with --list-models to see all options." },
6
+ { flag: "--list-models", description: "List all available image models grouped by provider", type: "boolean" },
7
+ { flag: "--provider <name>", description: "Filter --list-models output by provider name" },
8
+ { flag: "--model-ver-no <ver>", description: "Model version number (SeaArt models only)" },
9
+ { flag: "--steps <n>", description: "Inference steps (SeaArt models)", type: "number" },
10
+ { flag: "--cfg-scale <n>", description: "CFG / guidance scale (SeaArt models)", type: "number" },
11
+ { flag: "--denoise <n>", description: "Denoise strength [0,1] (z_image / z_image_turbo, default: 0.7)", type: "number" },
12
+ { flag: "--action <n>", description: "Action type (SeaArt): 0=t2i 1=i2i 3=t2i+cn 5=i2i+cn", type: "number" },
13
+ { flag: "-n, --n <count>", description: "Number of outputs (default: 1)", type: "number" },
14
+ { flag: "--width <px>", description: "Output width in pixels", type: "number" },
15
+ { flag: "--height <px>", description: "Output height in pixels", type: "number" },
16
+ { flag: "--size <size>", description: "Size string, e.g. 2048x2048, 2K, 1920*1080" },
17
+ { flag: "--aspect-ratio <ratio>", description: "Aspect ratio, e.g. 16:9, 9:16, 1:1" },
18
+ { flag: "--resolution <res>", description: "Resolution when supported, e.g. 1024:1024, 720p, 1080p, 2K" },
19
+ { flag: "--seed <n>", description: "Random seed", type: "number" },
20
+ { flag: "--logo-add <0|1>", description: "Tencent explicit watermark switch: 1 add, 0 disable", type: "number" },
21
+ { flag: "--revise <0|1>", description: "Tencent prompt rewrite switch: 1 enable, 0 disable", type: "number" },
22
+ { flag: "--negative-prompt <text>", description: "Negative prompt" },
23
+ { flag: "--watermark", description: "Enable watermark output when supported", type: "boolean" },
24
+ { flag: "--external-task-id <id>", description: "External task ID when supported by the upstream provider" },
25
+ { flag: "--image-url <url>", description: "Input image URL (i2i / reference)" },
26
+ { flag: "--image-urls <url>", description: "Multiple input image URLs (repeat flag)", type: "array" },
27
+ { flag: "--element-ids <id>", description: "Reference element IDs (repeat flag, Kling)", type: "array" },
28
+ { flag: "--result-type <type>", description: "Image result type when supported: single or series" },
29
+ { flag: "--series-amount <n>", description: "Series image count when supported", type: "number" },
30
+ { flag: "--scale <n>", description: "Edit strength [0,1] (Volces edit models)", type: "number" },
31
+ { flag: "--template-id <id>", description: "Template ID for Volces style/template image models" },
32
+ { flag: "--req-key <key>", description: "Volces style preset key for req_key-driven models" },
33
+ { flag: "--sub-req-key <key>", description: "Volces sub-style key paired with --req-key" },
34
+ { flag: "--ref-type <type>", description: "Reference type for each Volces multi-IP input image (repeat flag)", type: "array" },
35
+ { flag: "--gpen <n>", description: "Portrait enhancement strength for volces_seededit_portrait", type: "number" },
36
+ { flag: "--skin <n>", description: "Portrait beautify strength for volces_seededit_portrait", type: "number" },
37
+ { flag: "--skin-unifi <n>", description: "Portrait skin-evening strength for volces_seededit_portrait", type: "number" },
38
+ { flag: "--gen-mode <mode>", description: "Portrait generation mode for volces_seededit_portrait" },
39
+ { flag: "--out-dir <dir>", description: "Download generated files to this directory" },
40
+ { flag: "--out-prefix <prefix>", description: "Filename prefix for downloads (default: image)" },
41
+ { flag: "--async", description: "Return task ID immediately without polling", type: "boolean" },
42
+ { flag: "--timeout <seconds>", description: "Request timeout in seconds", type: "number" },
43
+ { flag: "-q, --quiet", description: "Suppress spinners and info messages", type: "boolean" },
44
+ { flag: "--verbose", description: "Print HTTP request/response details", type: "boolean" },
45
+ { flag: "--dry-run", description: "Show request body without executing", type: "boolean" },
46
+ { flag: "--output <format>", description: "Output format: json or text" },
47
+ ];
48
+ export function addImageOptions(cmd) {
49
+ cmd.description("Generate images via SeaArt AI");
50
+ return addSacOptions(cmd, IMAGE_OPTIONS);
51
+ }
52
+ export async function runImageCommand(options) {
53
+ await runGenerationCommand("image", generateImage, options);
54
+ }
55
+ //# sourceMappingURL=image.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image.js","sourceRoot":"","sources":["../../../src/commands/sac/image.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAgD,MAAM,aAAa,CAAC;AAEhH,MAAM,aAAa,GAAsB;IACvC,EAAE,IAAI,EAAE,iBAAiB,EAAE,WAAW,EAAE,uDAAuD,EAAE;IACjG,EAAE,IAAI,EAAE,iBAAiB,EAAE,WAAW,EAAE,sDAAsD,EAAE;IAChG,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,qDAAqD,EAAE,IAAI,EAAE,SAAS,EAAE;IAC9G,EAAE,IAAI,EAAE,mBAAmB,EAAE,WAAW,EAAE,8CAA8C,EAAE;IAC1F,EAAE,IAAI,EAAE,sBAAsB,EAAE,WAAW,EAAE,2CAA2C,EAAE;IAC1F,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,iCAAiC,EAAE,IAAI,EAAE,QAAQ,EAAE;IACvF,EAAE,IAAI,EAAE,iBAAiB,EAAE,WAAW,EAAE,sCAAsC,EAAE,IAAI,EAAE,QAAQ,EAAE;IAChG,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,gEAAgE,EAAE,IAAI,EAAE,QAAQ,EAAE;IACxH,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,qDAAqD,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC5G,EAAE,IAAI,EAAE,iBAAiB,EAAE,WAAW,EAAE,gCAAgC,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC1F,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,wBAAwB,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC/E,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,yBAAyB,EAAE,IAAI,EAAE,QAAQ,EAAE;IACjF,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,4CAA4C,EAAE;IACpF,EAAE,IAAI,EAAE,wBAAwB,EAAE,WAAW,EAAE,oCAAoC,EAAE;IACrF,EAAE,IAAI,EAAE,oBAAoB,EAAE,WAAW,EAAE,4DAA4D,EAAE;IACzG,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE;IAClE,EAAE,IAAI,EAAE,kBAAkB,EAAE,WAAW,EAAE,qDAAqD,EAAE,IAAI,EAAE,QAAQ,EAAE;IAChH,EAAE,IAAI,EAAE,gBAAgB,EAAE,WAAW,EAAE,oDAAoD,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC7G,EAAE,IAAI,EAAE,0BAA0B,EAAE,WAAW,EAAE,iBAAiB,EAAE;IACpE,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,wCAAwC,EAAE,IAAI,EAAE,SAAS,EAAE;IAC/F,EAAE,IAAI,EAAE,yBAAyB,EAAE,WAAW,EAAE,0DAA0D,EAAE;IAC5G,EAAE,IAAI,EAAE,mBAAmB,EAAE,WAAW,EAAE,mCAAmC,EAAE;IAC/E,EAAE,IAAI,EAAE,oBAAoB,EAAE,WAAW,EAAE,yCAAyC,EAAE,IAAI,EAAE,OAAO,EAAE;IACrG,EAAE,IAAI,EAAE,oBAAoB,EAAE,WAAW,EAAE,4CAA4C,EAAE,IAAI,EAAE,OAAO,EAAE;IACxG,EAAE,IAAI,EAAE,sBAAsB,EAAE,WAAW,EAAE,oDAAoD,EAAE;IACnG,EAAE,IAAI,EAAE,qBAAqB,EAAE,WAAW,EAAE,mCAAmC,EAAE,IAAI,EAAE,QAAQ,EAAE;IACjG,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,0CAA0C,EAAE,IAAI,EAAE,QAAQ,EAAE;IAChG,EAAE,IAAI,EAAE,oBAAoB,EAAE,WAAW,EAAE,oDAAoD,EAAE;IACjG,EAAE,IAAI,EAAE,iBAAiB,EAAE,WAAW,EAAE,mDAAmD,EAAE;IAC7F,EAAE,IAAI,EAAE,qBAAqB,EAAE,WAAW,EAAE,4CAA4C,EAAE;IAC1F,EAAE,IAAI,EAAE,mBAAmB,EAAE,WAAW,EAAE,mEAAmE,EAAE,IAAI,EAAE,OAAO,EAAE;IAC9H,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,4DAA4D,EAAE,IAAI,EAAE,QAAQ,EAAE;IACjH,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,yDAAyD,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC9G,EAAE,IAAI,EAAE,kBAAkB,EAAE,WAAW,EAAE,6DAA6D,EAAE,IAAI,EAAE,QAAQ,EAAE;IACxH,EAAE,IAAI,EAAE,mBAAmB,EAAE,WAAW,EAAE,uDAAuD,EAAE;IACnG,EAAE,IAAI,EAAE,iBAAiB,EAAE,WAAW,EAAE,4CAA4C,EAAE;IACtF,EAAE,IAAI,EAAE,uBAAuB,EAAE,WAAW,EAAE,gDAAgD,EAAE;IAChG,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,4CAA4C,EAAE,IAAI,EAAE,SAAS,EAAE;IAC/F,EAAE,IAAI,EAAE,qBAAqB,EAAE,WAAW,EAAE,4BAA4B,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC1F,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,qCAAqC,EAAE,IAAI,EAAE,SAAS,EAAE;IAC5F,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,qCAAqC,EAAE,IAAI,EAAE,SAAS,EAAE;IAC1F,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,qCAAqC,EAAE,IAAI,EAAE,SAAS,EAAE;IAC1F,EAAE,IAAI,EAAE,mBAAmB,EAAE,WAAW,EAAE,6BAA6B,EAAE;CAC1E,CAAC;AAEF,MAAM,UAAU,eAAe,CAAC,GAAY;IAC1C,GAAG,CAAC,WAAW,CAAC,+BAA+B,CAAC,CAAC;IACjD,OAAO,aAAa,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OAA0B;IAC9D,MAAM,oBAAoB,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;AAC9D,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function createSacCommand(): Command;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/sac/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,wBAAgB,gBAAgB,IAAI,OAAO,CAsB1C"}
@@ -0,0 +1,26 @@
1
+ import { Command } from "commander";
2
+ import { add3dOptions, run3dCommand } from "./3d.js";
3
+ import { addAudioOptions, runAudioCommand } from "./audio.js";
4
+ import { addImageOptions, runImageCommand } from "./image.js";
5
+ import { addModelsOptions, runModelsCommand } from "./models.js";
6
+ import { addTaskOptions, runTaskCommand } from "./task.js";
7
+ import { addVideoOptions, runVideoCommand } from "./video.js";
8
+ export function createSacCommand() {
9
+ const sac = new Command("sac").description("SeaArt multi-modal generation commands").addHelpText("after", `
10
+ Examples:
11
+ seawork sac image --prompt "a cat in space"
12
+ seawork sac video --prompt "a fox in snow"
13
+ seawork sac audio --prompt "epic orchestral theme"
14
+ seawork sac 3d --prompt "a stylized toy robot"
15
+ seawork sac task <task-id>
16
+ seawork sac models --category video
17
+ `);
18
+ addImageOptions(sac.command("image")).action(runImageCommand);
19
+ addVideoOptions(sac.command("video")).action(runVideoCommand);
20
+ addAudioOptions(sac.command("audio")).action(runAudioCommand);
21
+ add3dOptions(sac.command("3d")).action(run3dCommand);
22
+ addTaskOptions(sac.command("task")).action(runTaskCommand);
23
+ addModelsOptions(sac.command("models")).action(runModelsCommand);
24
+ return sac;
25
+ }
26
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/sac/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE9D,MAAM,UAAU,gBAAgB;IAC9B,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,wCAAwC,CAAC,CAAC,WAAW,CAC9F,OAAO,EACP;;;;;;;;CAQH,CACE,CAAC;IAEF,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;IAC9D,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;IAC9D,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;IAC9D,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IACrD,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IAC3D,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAEjE,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { Command } from "commander";
2
+ export declare function addModelsOptions(cmd: Command): Command;
3
+ interface ModelsOptions {
4
+ category?: string;
5
+ provider?: string;
6
+ output?: string;
7
+ }
8
+ export declare function runModelsCommand(options: ModelsOptions): Promise<void>;
9
+ export {};
10
+ //# sourceMappingURL=models.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../../src/commands/sac/models.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAYpC,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAMtD;AAED,UAAU,aAAa;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAWD,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA6C5E"}
@@ -0,0 +1,57 @@
1
+ import { detectOutputFormat, formatOutput, modelsByProvider, SACError, ExitCode, } from "@seawork/server/sac";
2
+ const MODEL_CATEGORIES = ["image", "video", "audio", "3d"];
3
+ export function addModelsOptions(cmd) {
4
+ return cmd
5
+ .description("List available SAC generation models")
6
+ .option("--category <name>", "Filter by category (image, video, audio, 3d)")
7
+ .option("--provider <name>", "Filter by provider")
8
+ .option("--output <format>", "Output format: json or text");
9
+ }
10
+ function buildCategoryResult(category, filterProvider) {
11
+ const providers = [];
12
+ for (const [provider, models] of modelsByProvider(category)) {
13
+ if (filterProvider && provider !== filterProvider)
14
+ continue;
15
+ providers.push({ provider, models });
16
+ }
17
+ return { category, providers };
18
+ }
19
+ export async function runModelsCommand(options) {
20
+ const format = detectOutputFormat(options.output);
21
+ const rawCategory = typeof options.category === "string" ? options.category : undefined;
22
+ try {
23
+ if (rawCategory && !MODEL_CATEGORIES.includes(rawCategory)) {
24
+ throw new SACError(`Unknown category "${rawCategory}".`, ExitCode.USAGE, "Use one of: image, video, audio, 3d.");
25
+ }
26
+ const category = rawCategory;
27
+ const result = category
28
+ ? buildCategoryResult(category, options.provider)
29
+ : MODEL_CATEGORIES.map((entry) => buildCategoryResult(entry, options.provider));
30
+ if (format === "json") {
31
+ console.log(formatOutput(result, format));
32
+ return;
33
+ }
34
+ const categories = Array.isArray(result) ? result : [result];
35
+ if (categories.every((entry) => entry.providers.length === 0)) {
36
+ console.log("No models available");
37
+ return;
38
+ }
39
+ for (const entry of categories) {
40
+ process.stdout.write(`\n== ${entry.category} ==\n`);
41
+ for (const provider of entry.providers) {
42
+ process.stdout.write(`\n[${provider.provider}]\n`);
43
+ for (const model of provider.models) {
44
+ process.stdout.write(` ${model}\n`);
45
+ }
46
+ }
47
+ }
48
+ }
49
+ catch (err) {
50
+ if (err instanceof SACError) {
51
+ console.error(formatOutput(err.toJSON(), format));
52
+ process.exit(err.exitCode);
53
+ }
54
+ throw err;
55
+ }
56
+ }
57
+ //# sourceMappingURL=models.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"models.js","sourceRoot":"","sources":["../../../src/commands/sac/models.ts"],"names":[],"mappings":"AACA,OAAO,EACL,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,EAChB,QAAQ,EACR,QAAQ,GAET,MAAM,qBAAqB,CAAC;AAE7B,MAAM,gBAAgB,GAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;AAE5E,MAAM,UAAU,gBAAgB,CAAC,GAAY;IAC3C,OAAO,GAAG;SACP,WAAW,CAAC,sCAAsC,CAAC;SACnD,MAAM,CAAC,mBAAmB,EAAE,8CAA8C,CAAC;SAC3E,MAAM,CAAC,mBAAmB,EAAE,oBAAoB,CAAC;SACjD,MAAM,CAAC,mBAAmB,EAAE,6BAA6B,CAAC,CAAC;AAChE,CAAC;AAQD,SAAS,mBAAmB,CAAC,QAAuB,EAAE,cAAuB;IAC3E,MAAM,SAAS,GAAkD,EAAE,CAAC;IACpE,KAAK,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5D,IAAI,cAAc,IAAI,QAAQ,KAAK,cAAc;YAAE,SAAS;QAC5D,SAAS,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IACvC,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;AACjC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,OAAsB;IAC3D,MAAM,MAAM,GAAG,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAClD,MAAM,WAAW,GAAG,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IAExF,IAAI,CAAC;QACH,IAAI,WAAW,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,WAA4B,CAAC,EAAE,CAAC;YAC5E,MAAM,IAAI,QAAQ,CAChB,qBAAqB,WAAW,IAAI,EACpC,QAAQ,CAAC,KAAK,EACd,sCAAsC,CACvC,CAAC;QACJ,CAAC;QAED,MAAM,QAAQ,GAAG,WAAwC,CAAC;QAC1D,MAAM,MAAM,GAAG,QAAQ;YACrB,CAAC,CAAC,mBAAmB,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC;YACjD,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;QAElF,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;YAC1C,OAAO;QACT,CAAC;QAED,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAC7D,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;YAC9D,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;YACnC,OAAO;QACT,CAAC;QAED,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;YAC/B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,OAAO,CAAC,CAAC;YACpD,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;gBACvC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,QAAQ,KAAK,CAAC,CAAC;gBACnD,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;oBACpC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC;gBACvC,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,IAAI,GAAG,YAAY,QAAQ,EAAE,CAAC;YAC5B,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;YAClD,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC7B,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { Command } from "commander";
2
+ export declare function addTaskOptions(cmd: Command): Command;
3
+ interface TaskOptions {
4
+ wait?: boolean;
5
+ interval?: number;
6
+ timeout?: number;
7
+ outputOnlyUrl?: boolean;
8
+ quiet?: boolean;
9
+ verbose?: boolean;
10
+ output?: string;
11
+ }
12
+ export declare function runTaskCommand(taskId: string, options: TaskOptions): Promise<void>;
13
+ export {};
14
+ //# sourceMappingURL=task.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../../../src/commands/sac/task.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAapC,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAWpD;AAED,UAAU,WAAW;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAkDxF"}
@@ -0,0 +1,56 @@
1
+ import { queryTask, extractUrls, requireSACApiKey, getSACBaseUrl, SACError, ExitCode, detectOutputFormat, formatOutput, } from "@seawork/server/sac";
2
+ export function addTaskOptions(cmd) {
3
+ return cmd
4
+ .description("Query or wait for a generation task")
5
+ .argument("<task-id>", "Task ID to query")
6
+ .option("--wait", "Poll until task completes (or fails/times out)")
7
+ .option("--interval <s>", "Poll interval in seconds (default: 3)", Number)
8
+ .option("--timeout <s>", "Max wait time in seconds (default: 300)", Number)
9
+ .option("--output-only-url", "Print only result URL(s), one per line")
10
+ .option("-q, --quiet", "Suppress spinners and info messages")
11
+ .option("--verbose", "Print HTTP request/response details")
12
+ .option("--output <format>", "Output format: json or text");
13
+ }
14
+ export async function runTaskCommand(taskId, options) {
15
+ const format = detectOutputFormat(options.output);
16
+ try {
17
+ if (!taskId) {
18
+ throw new SACError("Task ID is required.", ExitCode.USAGE, "seawork sac task <task-id>");
19
+ }
20
+ if (options.outputOnlyUrl && format === "json") {
21
+ throw new SACError("--output-only-url cannot be combined with --output json.", ExitCode.USAGE);
22
+ }
23
+ const apiKey = requireSACApiKey();
24
+ const config = {
25
+ apiKey,
26
+ multimodalBaseUrl: getSACBaseUrl(),
27
+ timeout: options.timeout ?? 300,
28
+ verbose: options.verbose ?? false,
29
+ quiet: options.quiet ?? false,
30
+ dryRun: false,
31
+ async: false,
32
+ };
33
+ const result = await queryTask(config, taskId, {
34
+ wait: options.wait,
35
+ intervalSec: options.interval,
36
+ timeoutSec: options.timeout,
37
+ apiKey,
38
+ });
39
+ if (options.outputOnlyUrl) {
40
+ const urls = extractUrls(result);
41
+ if (urls.length > 0) {
42
+ console.log(urls.join("\n"));
43
+ return;
44
+ }
45
+ }
46
+ console.log(formatOutput(result, format));
47
+ }
48
+ catch (err) {
49
+ if (err instanceof SACError) {
50
+ console.error(formatOutput(err.toJSON(), format));
51
+ process.exit(err.exitCode);
52
+ }
53
+ throw err;
54
+ }
55
+ }
56
+ //# sourceMappingURL=task.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task.js","sourceRoot":"","sources":["../../../src/commands/sac/task.ts"],"names":[],"mappings":"AACA,OAAO,EACL,SAAS,EACT,WAAW,EACX,gBAAgB,EAChB,aAAa,EACb,QAAQ,EACR,QAAQ,EACR,kBAAkB,EAClB,YAAY,GAEb,MAAM,qBAAqB,CAAC;AAE7B,MAAM,UAAU,cAAc,CAAC,GAAY;IACzC,OAAO,GAAG;SACP,WAAW,CAAC,qCAAqC,CAAC;SAClD,QAAQ,CAAC,WAAW,EAAE,kBAAkB,CAAC;SACzC,MAAM,CAAC,QAAQ,EAAE,gDAAgD,CAAC;SAClE,MAAM,CAAC,gBAAgB,EAAE,uCAAuC,EAAE,MAAM,CAAC;SACzE,MAAM,CAAC,eAAe,EAAE,yCAAyC,EAAE,MAAM,CAAC;SAC1E,MAAM,CAAC,mBAAmB,EAAE,wCAAwC,CAAC;SACrE,MAAM,CAAC,aAAa,EAAE,qCAAqC,CAAC;SAC5D,MAAM,CAAC,WAAW,EAAE,qCAAqC,CAAC;SAC1D,MAAM,CAAC,mBAAmB,EAAE,6BAA6B,CAAC,CAAC;AAChE,CAAC;AAYD,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,MAAc,EAAE,OAAoB;IACvE,MAAM,MAAM,GAAG,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAElD,IAAI,CAAC;QACH,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,QAAQ,CAAC,sBAAsB,EAAE,QAAQ,CAAC,KAAK,EAAE,4BAA4B,CAAC,CAAC;QAC3F,CAAC;QAED,IAAI,OAAO,CAAC,aAAa,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;YAC/C,MAAM,IAAI,QAAQ,CAChB,0DAA0D,EAC1D,QAAQ,CAAC,KAAK,CACf,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;QAElC,MAAM,MAAM,GAAc;YACxB,MAAM;YACN,iBAAiB,EAAE,aAAa,EAAE;YAClC,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,GAAG;YAC/B,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,KAAK;YACjC,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,KAAK;YAC7B,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,KAAK;SACb,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE;YAC7C,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,WAAW,EAAE,OAAO,CAAC,QAAQ;YAC7B,UAAU,EAAE,OAAO,CAAC,OAAO;YAC3B,MAAM;SACP,CAAC,CAAC;QAEH,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;YAC1B,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;YACjC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC7B,OAAO;YACT,CAAC;QACH,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC5C,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,IAAI,GAAG,YAAY,QAAQ,EAAE,CAAC;YAC5B,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;YAClD,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC7B,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { Command } from "commander";
2
+ import { type SacCommandOptions } from "./common.js";
3
+ export declare function addVideoOptions(cmd: Command): Command;
4
+ export declare function runVideoCommand(options: SacCommandOptions): Promise<void>;
5
+ //# sourceMappingURL=video.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"video.d.ts","sourceRoot":"","sources":["../../../src/commands/sac/video.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAA6D,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAC;AA8FhH,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAGrD;AAED,wBAAsB,eAAe,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/E"}
@@ -0,0 +1,101 @@
1
+ import { generateVideo } from "@seawork/server/sac";
2
+ import { addSacOptions, runGenerationCommand } from "./common.js";
3
+ const VIDEO_OPTIONS = [
4
+ { flag: "--prompt <text>", description: "Video description (required for prompt-driven models)" },
5
+ { flag: "--model <model>", description: "Model ID. Run with --list-models to see all options." },
6
+ { flag: "--list-models", description: "List all available video models grouped by provider", type: "boolean" },
7
+ { flag: "--provider <name>", description: "Filter --list-models output by provider name" },
8
+ { flag: "--duration <n>", description: "Video duration in seconds", type: "number" },
9
+ { flag: "--aspect-ratio <ratio>", description: "Aspect ratio, e.g. 16:9, 9:16, 1:1" },
10
+ { flag: "--resolution <res>", description: "Resolution preset when supported" },
11
+ { flag: "--seed <n>", description: "Random seed", type: "number" },
12
+ { flag: "--short <0|1>", description: "Tencent MPS short-video hint: 0 or 1", type: "number" },
13
+ { flag: "--size <size>", description: "Size string (Alibaba t2v), e.g. 1280x720" },
14
+ { flag: "--motion-mode <mode>", description: "Motion mode when supported (PixVerse legacy models)" },
15
+ { flag: "--camera-movement <type>", description: "Camera movement when supported (PixVerse legacy models)" },
16
+ { flag: "--template-id <id>", description: "Template ID when supported (PixVerse)", type: "number" },
17
+ { flag: "--fps <n>", description: "Video frames per second", type: "number" },
18
+ { flag: "--frames <n>", description: "Video frame count", type: "number" },
19
+ { flag: "--service-tier <tier>", description: "Service tier when supported" },
20
+ { flag: "--expires-after <sec>", description: "Task expiration timeout in seconds", type: "number" },
21
+ { flag: "--style <style>", description: "Style preset when supported" },
22
+ { flag: "--payload <text>", description: "Opaque payload passthrough when supported" },
23
+ { flag: "--callback-url <url>", description: "Callback URL when supported" },
24
+ { flag: "--off-peak", description: "Enable off-peak queueing when supported", type: "boolean" },
25
+ { flag: "--recommend-prompt", description: "Use provider-generated prompt recommendation when supported", type: "boolean" },
26
+ { flag: "--enhance-prompt", description: "Enable prompt enhancement when supported", type: "boolean" },
27
+ { flag: "--template <name>", description: "Template name when supported" },
28
+ { flag: "--template-params <json>", description: "JSON object for template-specific extra parameters" },
29
+ { flag: "--language <lang>", description: "Language when supported" },
30
+ { flag: "--creative", description: "Enable creative mode when supported", type: "boolean" },
31
+ { flag: "--add-subtitle", description: "Add subtitles when supported", type: "boolean" },
32
+ { flag: "--remove-audio", description: "Remove original video audio when supported", type: "boolean" },
33
+ { flag: "--watermark", description: "Enable watermark output when supported", type: "boolean" },
34
+ { flag: "--watermark-position <n>", description: "Watermark position when supported: 1-4", type: "number" },
35
+ { flag: "--watermark-url <url>", description: "Watermark image URL when supported" },
36
+ { flag: "--meta-data <json>", description: "Metadata JSON string when supported" },
37
+ { flag: "--external-task-id <id>", description: "External task ID when supported by the upstream provider" },
38
+ { flag: "--element-ids <id>", description: "Reference element IDs (repeat flag, Kling omni models)", type: "array" },
39
+ { flag: "--effect-scene <scene>", description: "Effect scene name for Kling video effects models" },
40
+ { flag: "--character-orientation <v>", description: "Character orientation for Kling motion control: image or video" },
41
+ { flag: "--keep-original-sound <v>", description: "Keep reference video audio when supported: yes or no" },
42
+ { flag: "--video-refer-type <type>", description: "Reference video type when supported: feature or base" },
43
+ { flag: "--lipsync-mode <mode>", description: "Kling lipsync mode: text2video or audio2video" },
44
+ { flag: "--camera-fixed", description: "Fix camera movement when supported", type: "boolean" },
45
+ { flag: "--return-last-frame", description: "Return last frame image when supported", type: "boolean" },
46
+ { flag: "--draft", description: "Enable draft mode when supported", type: "boolean" },
47
+ { flag: "--image-url <url>", description: "First-frame image URL (i2v)" },
48
+ { flag: "--image-tail-url <url>", description: "Last-frame image URL" },
49
+ { flag: "--image-urls <url>", description: "Multiple input image URLs (repeat flag)", type: "array" },
50
+ { flag: "--character-reference-url <url>", description: "Character reference image URL when supported" },
51
+ { flag: "--style-reference-url <url>", description: "Style reference image URL when supported" },
52
+ { flag: "--character-reference-weight <n>", description: "Character reference weight [0,1] when supported", type: "number" },
53
+ { flag: "--style-reference-weight <n>", description: "Style reference weight [0,1] when supported", type: "number" },
54
+ { flag: "--reference-urls <url>", description: "Reference file URLs (repeat flag)", type: "array" },
55
+ { flag: "--video-url <url>", description: "Input or reference video URL when supported" },
56
+ { flag: "--video-id <id>", description: "Upstream video asset or task ID when supported" },
57
+ { flag: "--draft-task-id <id>", description: "Draft task ID when supported" },
58
+ { flag: "--mask-urls <url>", description: "Mask image URLs (repeat flag)", type: "array" },
59
+ { flag: "--movement-amplitude <val>", description: "Motion amount when supported" },
60
+ { flag: "--mode <mode>", description: "Generation mode when supported" },
61
+ { flag: "--shot-type <type>", description: "Shot type when supported" },
62
+ { flag: "--multi-shot", description: "Enable multi-scene video when supported", type: "boolean" },
63
+ { flag: "--negative-prompt <text>", description: "Negative prompt when supported" },
64
+ { flag: "--cfg-scale <n>", description: "CFG / guidance scale when supported", type: "number" },
65
+ { flag: "--video-quality <mode>", description: "Video quality mode when supported" },
66
+ { flag: "--pe-fast-mode", description: "Enable fast mode when supported", type: "boolean" },
67
+ { flag: "--thinking-type <type>", description: "Reasoning mode when supported" },
68
+ { flag: "--audio", description: "Enable audio output", type: "boolean" },
69
+ { flag: "--audio-id <id>", description: "Upstream audio/voice asset ID when supported" },
70
+ { flag: "--voice-id <id>", description: "Voice ID when supported" },
71
+ { flag: "--voice-language <lang>", description: "Voice language when supported" },
72
+ { flag: "--voice-speed <n>", description: "Voice speed when supported", type: "number" },
73
+ { flag: "--bgm", description: "Add background music when supported", type: "boolean" },
74
+ { flag: "--sound <on|off>", description: "Audio switch when supported" },
75
+ { flag: "--sound-effect", description: "Enable sound effects when supported", type: "boolean" },
76
+ { flag: "--sound-effect-prompt <text>", description: "Sound effect description when supported" },
77
+ { flag: "--lip-sync", description: "Enable lip sync when supported", type: "boolean" },
78
+ { flag: "--tts-text <text>", description: "Lip-sync TTS text when supported" },
79
+ { flag: "--audio-url <url>", description: "Audio URL when supported" },
80
+ { flag: "--sounds <url>", description: "Reference audio URLs (repeat flag)", type: "array" },
81
+ { flag: "--bitrate <n>", description: "Target bitrate when supported", type: "number" },
82
+ { flag: "--extension-type <type>", description: "Video extension direction when supported" },
83
+ { flag: "--reference-names <name>", description: "Reference names for repeat image inputs (repeat flag)", type: "array" },
84
+ { flag: "--reference-types <type>", description: "Reference types for repeat image inputs (repeat flag)", type: "array" },
85
+ { flag: "--out-dir <dir>", description: "Download generated files to this directory" },
86
+ { flag: "--out-prefix <prefix>", description: "Filename prefix for downloads (default: video)" },
87
+ { flag: "--async", description: "Return task ID immediately without polling", type: "boolean" },
88
+ { flag: "--timeout <seconds>", description: "Request timeout in seconds", type: "number" },
89
+ { flag: "-q, --quiet", description: "Suppress spinners and info messages", type: "boolean" },
90
+ { flag: "--verbose", description: "Print HTTP request/response details", type: "boolean" },
91
+ { flag: "--dry-run", description: "Show request body without executing", type: "boolean" },
92
+ { flag: "--output <format>", description: "Output format: json or text" },
93
+ ];
94
+ export function addVideoOptions(cmd) {
95
+ cmd.description("Generate videos via SeaArt AI");
96
+ return addSacOptions(cmd, VIDEO_OPTIONS);
97
+ }
98
+ export async function runVideoCommand(options) {
99
+ await runGenerationCommand("video", generateVideo, options);
100
+ }
101
+ //# sourceMappingURL=video.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"video.js","sourceRoot":"","sources":["../../../src/commands/sac/video.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function createSessionsCommand(): Command;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/sessions/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,qBAAqB,IAAI,OAAO,CAU/C"}
@@ -0,0 +1,10 @@
1
+ import { Command } from "commander";
2
+ import { addLsOptions, runLsCommand } from "./ls.js";
3
+ import { withOutput } from "../../output/index.js";
4
+ import { addJsonAndDaemonHostOptions } from "../../utils/command-options.js";
5
+ export function createSessionsCommand() {
6
+ const sessions = new Command("sessions").description("Browse persisted agent sessions discoverable on this host");
7
+ addJsonAndDaemonHostOptions(addLsOptions(sessions.command("ls"))).action(withOutput(runLsCommand));
8
+ return sessions;
9
+ }
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/sessions/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,2BAA2B,EAAE,MAAM,gCAAgC,CAAC;AAE7E,MAAM,UAAU,qBAAqB;IACnC,MAAM,QAAQ,GAAG,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC,WAAW,CAClD,2DAA2D,CAC5D,CAAC;IAEF,2BAA2B,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CACtE,UAAU,CAAC,YAAY,CAAC,CACzB,CAAC;IAEF,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -0,0 +1,21 @@
1
+ import type { Command } from "commander";
2
+ import type { CommandOptions, ListResult, OutputSchema } from "../../output/index.js";
3
+ export declare function addLsOptions(cmd: Command): Command;
4
+ export interface SessionListItem {
5
+ provider: string;
6
+ sessionId: string;
7
+ shortId: string;
8
+ cwd: string;
9
+ title: string;
10
+ lastActivity: string;
11
+ }
12
+ export declare const sessionLsSchema: OutputSchema<SessionListItem>;
13
+ export type SessionLsResult = ListResult<SessionListItem>;
14
+ export interface SessionLsOptions extends CommandOptions {
15
+ host?: string;
16
+ provider?: string;
17
+ limit?: string;
18
+ cwd?: string;
19
+ }
20
+ export declare function runLsCommand(options: SessionLsOptions, _command: Command): Promise<SessionLsResult>;
21
+ //# sourceMappingURL=ls.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ls.d.ts","sourceRoot":"","sources":["../../../src/commands/sessions/ls.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIzC,OAAO,KAAK,EAAgB,cAAc,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAEpG,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CASlD;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;CACtB;AAoBD,eAAO,MAAM,eAAe,EAAE,YAAY,CAAC,eAAe,CASzD,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,UAAU,CAAC,eAAe,CAAC,CAAC;AAE1D,MAAM,WAAW,gBAAiB,SAAQ,cAAc;IACtD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AA2CD,wBAAsB,YAAY,CAChC,OAAO,EAAE,gBAAgB,EACzB,QAAQ,EAAE,OAAO,GAChB,OAAO,CAAC,eAAe,CAAC,CA6B1B"}
@@ -0,0 +1,109 @@
1
+ import { resolve as resolvePath } from "node:path";
2
+ import { connectToDaemon, getDaemonHost } from "../../utils/client.js";
3
+ export function addLsOptions(cmd) {
4
+ return cmd
5
+ .description("List persisted agent sessions discoverable on this host")
6
+ .option("--provider <provider>", "Filter by provider (claude, codex). Default: all providers")
7
+ .option("--limit <n>", "Maximum number of sessions to return (default: 20)")
8
+ .option("--cwd <path>", "Only list sessions whose original working directory matches this path exactly");
9
+ }
10
+ function relativeTime(iso) {
11
+ const then = new Date(iso).getTime();
12
+ if (!Number.isFinite(then))
13
+ return iso;
14
+ const seconds = Math.max(0, Math.floor((Date.now() - then) / 1000));
15
+ if (seconds < 60)
16
+ return "just now";
17
+ if (seconds < 3600)
18
+ return `${Math.floor(seconds / 60)} minutes ago`;
19
+ if (seconds < 86400)
20
+ return `${Math.floor(seconds / 3600)} hours ago`;
21
+ return `${Math.floor(seconds / 86400)} days ago`;
22
+ }
23
+ function shortenPath(path) {
24
+ const home = process.env.HOME;
25
+ if (home && path.startsWith(home)) {
26
+ return "~" + path.slice(home.length);
27
+ }
28
+ return path;
29
+ }
30
+ export const sessionLsSchema = {
31
+ idField: "sessionId",
32
+ columns: [
33
+ { header: "SESSION ID", field: "shortId", width: 10 },
34
+ { header: "PROVIDER", field: "provider", width: 10 },
35
+ { header: "CWD", field: "cwd", width: 32 },
36
+ { header: "TITLE", field: "title", width: 40 },
37
+ { header: "LAST ACTIVITY", field: "lastActivity", width: 18 },
38
+ ],
39
+ };
40
+ const KNOWN_PROVIDERS = ["claude", "codex"];
41
+ function parseProvider(raw) {
42
+ if (!raw)
43
+ return undefined;
44
+ const v = raw.trim().toLowerCase();
45
+ if (!v)
46
+ return undefined;
47
+ if (!KNOWN_PROVIDERS.includes(v)) {
48
+ const error = {
49
+ code: "INVALID_PROVIDER",
50
+ message: `Unknown provider: ${raw}`,
51
+ details: `Expected one of: ${KNOWN_PROVIDERS.join(", ")}`,
52
+ };
53
+ throw error;
54
+ }
55
+ return v;
56
+ }
57
+ function parseLimit(raw) {
58
+ if (raw === undefined)
59
+ return undefined;
60
+ const n = Number.parseInt(raw, 10);
61
+ if (!Number.isInteger(n) || n < 1 || n > 100) {
62
+ const error = {
63
+ code: "INVALID_LIMIT",
64
+ message: `--limit must be an integer between 1 and 100, got: ${raw}`,
65
+ };
66
+ throw error;
67
+ }
68
+ return n;
69
+ }
70
+ function toItem(s) {
71
+ return {
72
+ provider: s.provider,
73
+ sessionId: s.sessionId,
74
+ shortId: s.sessionId.slice(0, 8),
75
+ cwd: shortenPath(s.cwd),
76
+ title: (s.title ?? "").trim() || "—",
77
+ lastActivity: relativeTime(s.lastActivityAt),
78
+ };
79
+ }
80
+ export async function runLsCommand(options, _command) {
81
+ const host = getDaemonHost({ host: options.host });
82
+ const provider = parseProvider(options.provider);
83
+ const limit = parseLimit(options.limit);
84
+ const cwd = options.cwd ? resolvePath(options.cwd) : undefined;
85
+ let client;
86
+ try {
87
+ client = await connectToDaemon({ host: options.host });
88
+ }
89
+ catch (err) {
90
+ const message = err instanceof Error ? err.message : String(err);
91
+ const error = {
92
+ code: "DAEMON_NOT_RUNNING",
93
+ message: `Cannot connect to daemon at ${host}: ${message}`,
94
+ details: "Start the daemon with: seawork daemon start",
95
+ };
96
+ throw error;
97
+ }
98
+ const sessions = await client.listPersistedAgents({
99
+ ...(provider ? { provider } : {}),
100
+ ...(limit !== undefined ? { limit } : {}),
101
+ ...(cwd ? { cwd } : {}),
102
+ });
103
+ return {
104
+ type: "list",
105
+ data: sessions.map(toItem),
106
+ schema: sessionLsSchema,
107
+ };
108
+ }
109
+ //# sourceMappingURL=ls.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ls.js","sourceRoot":"","sources":["../../../src/commands/sessions/ls.ts"],"names":[],"mappings":"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"}