democut 0.6.23 → 0.6.28

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 (2) hide show
  1. package/dist/cli.js +1316 -83
  2. package/package.json +1 -1
package/dist/cli.js CHANGED
@@ -6916,7 +6916,7 @@ import { realpathSync } from "fs";
6916
6916
  import { fileURLToPath } from "url";
6917
6917
 
6918
6918
  // src/version.ts
6919
- var VERSION = "0.6.23";
6919
+ var VERSION = "0.6.28";
6920
6920
 
6921
6921
  // src/device-flow.ts
6922
6922
  var DeviceFlowError = class extends Error {
@@ -18281,6 +18281,172 @@ var GENERATED_TOOLS = [
18281
18281
  "openWorldHint": false
18282
18282
  }
18283
18283
  },
18284
+ {
18285
+ "name": "democut_estimate_cut_image",
18286
+ "description": "AI \uC774\uBBF8\uC9C0 \uACAC\uC801(0\uC6D0).",
18287
+ "inputSchema": {
18288
+ "type": "object",
18289
+ "properties": {
18290
+ "slug": {
18291
+ "type": "string",
18292
+ "description": "\uD504\uB85C\uC81D\uD2B8 \uC2AC\uB7EC\uADF8(list_projects)"
18293
+ },
18294
+ "cut_id": {
18295
+ "type": "string",
18296
+ "description": "\uCEF7 id(cut_\u2026)"
18297
+ },
18298
+ "prompt": {
18299
+ "anyOf": [
18300
+ {
18301
+ "maxLength": 4e3,
18302
+ "type": "string"
18303
+ },
18304
+ {
18305
+ "type": "null"
18306
+ }
18307
+ ],
18308
+ "default": null,
18309
+ "title": "Prompt"
18310
+ },
18311
+ "character_id": {
18312
+ "anyOf": [
18313
+ {
18314
+ "type": "string"
18315
+ },
18316
+ {
18317
+ "type": "null"
18318
+ }
18319
+ ],
18320
+ "default": null,
18321
+ "description": "\uC544\uC9C1 \uC9C0\uC6D0\uD558\uC9C0 \uC54A\uB294\uB2E4 \u2014 \uC8FC\uBA74 501",
18322
+ "title": "Character Id"
18323
+ },
18324
+ "quality": {
18325
+ "default": "medium",
18326
+ "enum": [
18327
+ "low",
18328
+ "medium",
18329
+ "high"
18330
+ ],
18331
+ "title": "Quality",
18332
+ "type": "string"
18333
+ },
18334
+ "model": {
18335
+ "anyOf": [
18336
+ {
18337
+ "maxLength": 64,
18338
+ "type": "string"
18339
+ },
18340
+ {
18341
+ "type": "null"
18342
+ }
18343
+ ],
18344
+ "default": null,
18345
+ "title": "Model"
18346
+ }
18347
+ },
18348
+ "required": [
18349
+ "slug",
18350
+ "cut_id"
18351
+ ],
18352
+ "additionalProperties": false
18353
+ },
18354
+ "annotations": {
18355
+ "readOnlyHint": false,
18356
+ "destructiveHint": false,
18357
+ "idempotentHint": false,
18358
+ "openWorldHint": false
18359
+ }
18360
+ },
18361
+ {
18362
+ "name": "democut_make_cut_image",
18363
+ "description": "AI \uB85C \uCEF7 \uC774\uBBF8\uC9C0\uB97C \uB9CC\uB4E0\uB2E4(\uCCAD\uAD6C). \uAE08\uC561\uC740 \uC0C1\uD55C\uC774\uACE0 \uC2E4\uCE21\uC73C\uB85C \uCC28\uC561\uC744 \uB3CC\uB824\uC900\uB2E4. \uC778\uBB3C \uD2B9\uC9D5\uC740 prompt \uB85C \uBB18\uC0AC\uD55C\uB2E4(character_id \uB294 \uC544\uC9C1 \uC5C6\uB2E4). \uB3C8\uC774 \uB098\uAC00\uB294 \uB3C4\uAD6C\uB2E4: estimate_cuts(\uB610\uB294 \uC9DD\uC774 \uB418\uB294 estimate \uB3C4\uAD6C)\uB85C \uAE08\uC561\uC744 \uBCF4\uACE0 \uC0AC\uC6A9\uC790 \uB3D9\uC758\uB97C \uBC1B\uC740 \uB4A4 confirmed_*_krw \uC640 rate_version \uC744 \uADF8\uB300\uB85C \uB123\uC5B4\uB77C. \uC5B4\uAE0B\uB098\uBA74 409 QUOTE_MISMATCH \uB85C \uC0C8 \uACAC\uC801\uC744 \uC900\uB2E4(\uACFC\uAE08 \uC5C6\uC74C). \uC2E4\uD328\uD574\uB3C4 \uC7AC\uC81C\uCD9C\uD558\uC9C0 \uB9C8\uB77C \u2014 \uAC19\uC740 spec \uC774 \uD65C\uC131\uC774\uBA74 \uC11C\uBC84\uAC00 \uAE30\uC874 \uC7A1\uC744 \uB3CC\uB824\uC900\uB2E4(deduplicated=true). \uC751\uB2F5\uC740 202 \u2014 \uACB0\uACFC\uB294 democut_wait_jobs \uB85C \uBC1B\uB294\uB2E4. \uB2E4\uC74C \uD638\uCD9C: democut_wait_jobs.",
18364
+ "inputSchema": {
18365
+ "type": "object",
18366
+ "properties": {
18367
+ "slug": {
18368
+ "type": "string",
18369
+ "description": "\uD504\uB85C\uC81D\uD2B8 \uC2AC\uB7EC\uADF8(list_projects)"
18370
+ },
18371
+ "cut_id": {
18372
+ "type": "string",
18373
+ "description": "\uCEF7 id(cut_\u2026)"
18374
+ },
18375
+ "prompt": {
18376
+ "anyOf": [
18377
+ {
18378
+ "maxLength": 4e3,
18379
+ "type": "string"
18380
+ },
18381
+ {
18382
+ "type": "null"
18383
+ }
18384
+ ],
18385
+ "default": null,
18386
+ "title": "Prompt"
18387
+ },
18388
+ "character_id": {
18389
+ "anyOf": [
18390
+ {
18391
+ "type": "string"
18392
+ },
18393
+ {
18394
+ "type": "null"
18395
+ }
18396
+ ],
18397
+ "default": null,
18398
+ "description": "\uC544\uC9C1 \uC9C0\uC6D0\uD558\uC9C0 \uC54A\uB294\uB2E4 \u2014 \uC8FC\uBA74 501",
18399
+ "title": "Character Id"
18400
+ },
18401
+ "quality": {
18402
+ "default": "medium",
18403
+ "enum": [
18404
+ "low",
18405
+ "medium",
18406
+ "high"
18407
+ ],
18408
+ "title": "Quality",
18409
+ "type": "string"
18410
+ },
18411
+ "model": {
18412
+ "anyOf": [
18413
+ {
18414
+ "maxLength": 64,
18415
+ "type": "string"
18416
+ },
18417
+ {
18418
+ "type": "null"
18419
+ }
18420
+ ],
18421
+ "default": null,
18422
+ "title": "Model"
18423
+ },
18424
+ "confirmed_cost_krw": {
18425
+ "minimum": 0,
18426
+ "title": "Confirmed Cost Krw",
18427
+ "type": "integer"
18428
+ },
18429
+ "rate_version": {
18430
+ "minimum": 1,
18431
+ "title": "Rate Version",
18432
+ "type": "integer"
18433
+ }
18434
+ },
18435
+ "required": [
18436
+ "slug",
18437
+ "cut_id",
18438
+ "confirmed_cost_krw",
18439
+ "rate_version"
18440
+ ],
18441
+ "additionalProperties": false
18442
+ },
18443
+ "annotations": {
18444
+ "readOnlyHint": false,
18445
+ "destructiveHint": false,
18446
+ "idempotentHint": false,
18447
+ "openWorldHint": false
18448
+ }
18449
+ },
18284
18450
  {
18285
18451
  "name": "democut_credit_balance",
18286
18452
  "description": "\uB0B4 \uC6CC\uD06C\uC2A4\uD398\uC774\uC2A4\uC758 \uD06C\uB808\uB527 \uC794\uC561. \uBD80\uC791\uC6A9\uB3C4 \uACFC\uAE08\uB3C4 \uC5C6\uB2E4. \uB3C8\uC774 \uB098\uAC00\uB294 \uC791\uC5C5(democut_make_cuts \uB4F1)\uC744 \uC81C\uCD9C\uD558\uAE30 **\uC804\uC5D0** \uD655\uC778\uD558\uB77C \u2014 \uBD80\uC871\uD558\uBA74 \uC81C\uCD9C\uC774 402 \uB85C \uAC70\uBD80\uB418\uACE0, \uADF8\uAC83\uC744 \uBBF8\uB9AC \uC544\uB294 \uD3B8\uC774 \uB0AB\uB2E4(democut_estimate_cuts \uC758 can_afford \uAC00 \uC788\uC73C\uBA74 \uB9E4\uBC88 \uBD80\uB97C \uD544\uC694\uB294 \uC5C6\uB2E4). \uBAA8\uC790\uB77C\uBA74 \uC0AC\uC6A9\uC790\uC5D0\uAC8C \uC54C\uB9AC\uACE0 \uC6CC\uD06C\uC2A4\uD398\uC774\uC2A4 \uAD00\uB9AC\uC790\uC5D0\uAC8C \uCDA9\uC804\uC744 \uC694\uCCAD\uD558\uB3C4\uB85D \uC548\uB0B4\uD558\uB77C \u2014 \uB124\uAC00 \uC9C1\uC811 \uCDA9\uC804\uD560 \uC218\uB294 \uC5C6\uB2E4.",
@@ -18551,59 +18717,929 @@ var GENERATED_TOOLS = [
18551
18717
  }
18552
18718
  },
18553
18719
  {
18554
- "name": "democut_select_character_photo",
18555
- "description": "\uB300\uD45C \uC0AC\uC9C4\uC744 \uACE0\uB978\uB2E4(\uC774\uBBF8 \uB9CC\uB4E0 \uCEF7\uC5D0\uB294 \uC18C\uAE09\uD558\uC9C0 \uC54A\uB294\uB2E4).",
18720
+ "name": "democut_select_character_photo",
18721
+ "description": "\uB300\uD45C \uC0AC\uC9C4\uC744 \uACE0\uB978\uB2E4(\uC774\uBBF8 \uB9CC\uB4E0 \uCEF7\uC5D0\uB294 \uC18C\uAE09\uD558\uC9C0 \uC54A\uB294\uB2E4).",
18722
+ "inputSchema": {
18723
+ "type": "object",
18724
+ "properties": {
18725
+ "character_id": {
18726
+ "type": "string",
18727
+ "description": "\uC544\uBC14\uD0C0 id(chr_\u2026)"
18728
+ },
18729
+ "photo_id": {
18730
+ "title": "Photo Id",
18731
+ "type": "string"
18732
+ }
18733
+ },
18734
+ "required": [
18735
+ "character_id",
18736
+ "photo_id"
18737
+ ],
18738
+ "additionalProperties": false
18739
+ },
18740
+ "annotations": {
18741
+ "readOnlyHint": false,
18742
+ "destructiveHint": false,
18743
+ "idempotentHint": true,
18744
+ "openWorldHint": false
18745
+ }
18746
+ },
18747
+ {
18748
+ "name": "democut_get_storyboard",
18749
+ "description": "\uC2A4\uD1A0\uB9AC\uBCF4\uB4DC \u2014 rev\xB7\uC21C\uC11C\xB7\uCEF7(\uD30C\uC0DD \uD544\uB4DC)\xB7\uB300\uAE30 \uC81C\uC548\xB7\uC0AC\uC6A9\uB7C9. If-Match \uC5D0 \uC4F8 rev \uAC00 \uC5EC\uAE30 \uC788\uB2E4. \uB2E4\uC74C \uD638\uCD9C: democut_add_cut, democut_put_cut_draft, democut_reorder_cuts.",
18750
+ "inputSchema": {
18751
+ "type": "object",
18752
+ "properties": {
18753
+ "slug": {
18754
+ "type": "string",
18755
+ "description": "\uD504\uB85C\uC81D\uD2B8 \uC2AC\uB7EC\uADF8(list_projects)"
18756
+ }
18757
+ },
18758
+ "required": [
18759
+ "slug"
18760
+ ],
18761
+ "additionalProperties": false
18762
+ },
18763
+ "annotations": {
18764
+ "readOnlyHint": true,
18765
+ "destructiveHint": false,
18766
+ "idempotentHint": true,
18767
+ "openWorldHint": false
18768
+ }
18769
+ },
18770
+ {
18771
+ "name": "democut_add_cut",
18772
+ "description": "\uCEF7\uC744 \uD558\uB098 \uCD94\uAC00\uD55C\uB2E4(0\uC6D0, \uB80C\uB354\uD558\uC9C0 \uC54A\uB294\uB2E4). after \uAC00 \uC5C6\uC73C\uBA74 \uB05D\uC5D0 \uC5F0\uACB0. draft_spec \uC744 \uC8FC\uBA74 \uBC14\uB85C \uACAC\uC801\uC744 \uB0BC \uC218 \uC788\uACE0, \uC8FC\uC9C0 \uC54A\uC73C\uBA74 \uC790\uB9AC \uD45C\uC2DC \uCD08\uC548\uC774 \uB4E4\uC5B4\uAC00 \uB0B4\uC6A9\uC744 \uC815\uD558\uAE30 \uC804\uAE4C\uC9C0 \uACAC\uC801\xB7\uC81C\uCD9C\uC774 \uB9C9\uD78C\uB2E4 \u2014 \uB2E4\uC74C \uD589\uB3D9\uC740 \uC751\uB2F5\uC758 next_calls \uB97C \uB530\uB974\uB77C.",
18773
+ "inputSchema": {
18774
+ "type": "object",
18775
+ "properties": {
18776
+ "slug": {
18777
+ "type": "string",
18778
+ "description": "\uD504\uB85C\uC81D\uD2B8 \uC2AC\uB7EC\uADF8(list_projects)"
18779
+ },
18780
+ "mode": {
18781
+ "default": "ai_video",
18782
+ "enum": [
18783
+ "motion_graphic",
18784
+ "ai_video",
18785
+ "youtube_clip"
18786
+ ],
18787
+ "title": "Mode",
18788
+ "type": "string"
18789
+ },
18790
+ "after": {
18791
+ "anyOf": [
18792
+ {
18793
+ "type": "string"
18794
+ },
18795
+ {
18796
+ "type": "null"
18797
+ }
18798
+ ],
18799
+ "default": null,
18800
+ "description": "\uC774 \uCEF7 \uB2E4\uC74C\uC5D0 \uC5F0\uACB0. \uC5C6\uC73C\uBA74 \uB05D",
18801
+ "title": "After"
18802
+ },
18803
+ "title": {
18804
+ "default": "",
18805
+ "title": "Title",
18806
+ "type": "string"
18807
+ },
18808
+ "draft_spec": {
18809
+ "anyOf": [
18810
+ {
18811
+ "discriminator": {
18812
+ "mapping": {
18813
+ "ai_video": "#/$defs/AiVideoSpec",
18814
+ "motion_graphic": "#/$defs/MotionGraphicSpec",
18815
+ "youtube_clip": "#/$defs/YoutubeClipSpec"
18816
+ },
18817
+ "propertyName": "mode"
18818
+ },
18819
+ "oneOf": [
18820
+ {
18821
+ "$ref": "#/$defs/MotionGraphicSpec"
18822
+ },
18823
+ {
18824
+ "$ref": "#/$defs/AiVideoSpec"
18825
+ },
18826
+ {
18827
+ "$ref": "#/$defs/YoutubeClipSpec"
18828
+ }
18829
+ ]
18830
+ },
18831
+ {
18832
+ "type": "null"
18833
+ }
18834
+ ],
18835
+ "default": null,
18836
+ "title": "Draft Spec"
18837
+ }
18838
+ },
18839
+ "required": [
18840
+ "slug"
18841
+ ],
18842
+ "additionalProperties": false,
18843
+ "$defs": {
18844
+ "AiVideoSpec": {
18845
+ "additionalProperties": false,
18846
+ "properties": {
18847
+ "dialogue": {
18848
+ "items": {
18849
+ "$ref": "#/$defs/DialogueLine"
18850
+ },
18851
+ "title": "Dialogue",
18852
+ "type": "array"
18853
+ },
18854
+ "narration_asset_id": {
18855
+ "anyOf": [
18856
+ {
18857
+ "minLength": 1,
18858
+ "type": "string"
18859
+ },
18860
+ {
18861
+ "type": "null"
18862
+ }
18863
+ ],
18864
+ "default": null,
18865
+ "description": "BYO: \uCEF7 \uC804\uCCB4 \uB098\uB808\uC774\uC158 wav \uD55C \uAC1C(\uB300\uC0AC\uAC00 \uC788\uC5B4\uC57C \uD55C\uB2E4 \u2014 \uC790\uB9C9\xB7\uD0C0\uC774\uBC0D\uC758 \uADFC\uAC70). \uC904\uBCC4 audio_asset_id \uC640 \uB3D9\uC2DC \uC9C0\uC815 422",
18866
+ "title": "Narration Asset Id"
18867
+ },
18868
+ "subtitles": {
18869
+ "default": false,
18870
+ "title": "Subtitles",
18871
+ "type": "boolean"
18872
+ },
18873
+ "host": {
18874
+ "anyOf": [
18875
+ {
18876
+ "type": "string"
18877
+ },
18878
+ {
18879
+ "type": "null"
18880
+ }
18881
+ ],
18882
+ "default": null,
18883
+ "description": "\uC9C4\uD589 \u2014 \uD5C8\uC6A9 \uC9D1\uD569\uC740 \uCE74\uD0C8\uB85C\uADF8(\uBC29\uC2DD\uBCC4). \uBAA8\uC158\uADF8\uB798\uD53D\uC740 \uD544\uC218",
18884
+ "title": "Host"
18885
+ },
18886
+ "voice_id": {
18887
+ "anyOf": [
18888
+ {
18889
+ "minLength": 1,
18890
+ "type": "string"
18891
+ },
18892
+ {
18893
+ "type": "null"
18894
+ }
18895
+ ],
18896
+ "default": null,
18897
+ "description": "host\u2208{voice,avatar} \uC774\uACE0 BYO \uC624\uB514\uC624\uAC00 \uC5C6\uC744 \uB54C \uD544\uC218",
18898
+ "title": "Voice Id"
18899
+ },
18900
+ "pip": {
18901
+ "anyOf": [
18902
+ {
18903
+ "$ref": "#/$defs/PipSpec"
18904
+ },
18905
+ {
18906
+ "type": "null"
18907
+ }
18908
+ ],
18909
+ "default": null,
18910
+ "description": "host=avatar \uC77C \uB54C \uD544\uC218"
18911
+ },
18912
+ "image_asset_id": {
18913
+ "anyOf": [
18914
+ {
18915
+ "minLength": 1,
18916
+ "type": "string"
18917
+ },
18918
+ {
18919
+ "type": "null"
18920
+ }
18921
+ ],
18922
+ "default": null,
18923
+ "description": "\uCEF7 \uC774\uBBF8\uC9C0\uB97C spec \uC5D0\uC11C \uC9C1\uC811 \uC9C0\uC815(\uC5D0\uC774\uC804\uD2B8 \uC6D0\uC0F7\uC6A9)",
18924
+ "title": "Image Asset Id"
18925
+ },
18926
+ "duration_s": {
18927
+ "default": 5,
18928
+ "maximum": 15,
18929
+ "minimum": 4,
18930
+ "title": "Duration S",
18931
+ "type": "number"
18932
+ },
18933
+ "mode": {
18934
+ "const": "ai_video",
18935
+ "default": "ai_video",
18936
+ "title": "Mode",
18937
+ "type": "string"
18938
+ },
18939
+ "image_prompt": {
18940
+ "maxLength": 4e3,
18941
+ "minLength": 1,
18942
+ "title": "Image Prompt",
18943
+ "type": "string"
18944
+ },
18945
+ "provider": {
18946
+ "anyOf": [
18947
+ {
18948
+ "maxLength": 32,
18949
+ "minLength": 1,
18950
+ "type": "string"
18951
+ },
18952
+ {
18953
+ "type": "null"
18954
+ }
18955
+ ],
18956
+ "default": null,
18957
+ "description": "\uC601\uC0C1 \uC0DD\uC131 \uACF5\uAE09\uC790(\uC608: minimax). \uBE44\uC6B0\uBA74 \uC11C\uBC84 \uAE30\uBCF8\uAC12 \u2014 \uC4F8 \uC218 \uC788\uB294 \uBAA9\uB85D\uC740 GET \u2026/options \uC758 videogen_providers",
18958
+ "title": "Provider"
18959
+ },
18960
+ "seed": {
18961
+ "anyOf": [
18962
+ {
18963
+ "minimum": 0,
18964
+ "type": "integer"
18965
+ },
18966
+ {
18967
+ "type": "null"
18968
+ }
18969
+ ],
18970
+ "default": null,
18971
+ "title": "Seed"
18972
+ },
18973
+ "image": {
18974
+ "anyOf": [
18975
+ {
18976
+ "discriminator": {
18977
+ "mapping": {
18978
+ "asset": "#/$defs/AssetImageRef",
18979
+ "from_cut": "#/$defs/FromCutImageRef",
18980
+ "from_version": "#/$defs/FromVersionImageRef"
18981
+ },
18982
+ "propertyName": "kind"
18983
+ },
18984
+ "oneOf": [
18985
+ {
18986
+ "$ref": "#/$defs/AssetImageRef"
18987
+ },
18988
+ {
18989
+ "$ref": "#/$defs/FromCutImageRef"
18990
+ },
18991
+ {
18992
+ "$ref": "#/$defs/FromVersionImageRef"
18993
+ }
18994
+ ]
18995
+ },
18996
+ {
18997
+ "type": "null"
18998
+ }
18999
+ ],
19000
+ "default": null,
19001
+ "description": "\uCCAB \uD504\uB808\uC784. \uC5C6\uC73C\uBA74 image_asset_id \u2192 \uADF8\uAC83\uB3C4 \uC5C6\uC73C\uBA74 t2v(\uD14D\uC2A4\uD2B8\uB9CC) \u2014 \uACAC\uC801\uC774 notes \uB85C \uC54C\uB824\uC900\uB2E4",
19002
+ "title": "Image"
19003
+ },
19004
+ "end_image": {
19005
+ "anyOf": [
19006
+ {
19007
+ "discriminator": {
19008
+ "mapping": {
19009
+ "asset": "#/$defs/AssetImageRef",
19010
+ "from_cut": "#/$defs/FromCutImageRef",
19011
+ "from_version": "#/$defs/FromVersionImageRef"
19012
+ },
19013
+ "propertyName": "kind"
19014
+ },
19015
+ "oneOf": [
19016
+ {
19017
+ "$ref": "#/$defs/AssetImageRef"
19018
+ },
19019
+ {
19020
+ "$ref": "#/$defs/FromCutImageRef"
19021
+ },
19022
+ {
19023
+ "$ref": "#/$defs/FromVersionImageRef"
19024
+ }
19025
+ ]
19026
+ },
19027
+ {
19028
+ "type": "null"
19029
+ }
19030
+ ],
19031
+ "default": null,
19032
+ "title": "End Image"
19033
+ }
19034
+ },
19035
+ "required": [
19036
+ "image_prompt"
19037
+ ],
19038
+ "title": "AiVideoSpec",
19039
+ "type": "object"
19040
+ },
19041
+ "AssetImageRef": {
19042
+ "additionalProperties": false,
19043
+ "properties": {
19044
+ "kind": {
19045
+ "const": "asset",
19046
+ "default": "asset",
19047
+ "title": "Kind",
19048
+ "type": "string"
19049
+ },
19050
+ "asset_id": {
19051
+ "minLength": 1,
19052
+ "title": "Asset Id",
19053
+ "type": "string"
19054
+ }
19055
+ },
19056
+ "required": [
19057
+ "asset_id"
19058
+ ],
19059
+ "title": "AssetImageRef",
19060
+ "type": "object"
19061
+ },
19062
+ "DialogueLine": {
19063
+ "additionalProperties": false,
19064
+ "properties": {
19065
+ "id": {
19066
+ "description": "\uC904 id ln_<6> \u2014 \uC81C\uC548 diff \uC758 \uB300\uC870 \uD0A4",
19067
+ "pattern": "^ln_[a-z0-9]{6}$",
19068
+ "title": "Id",
19069
+ "type": "string",
19070
+ "x-diff": "ignore"
19071
+ },
19072
+ "text": {
19073
+ "description": "\uBC1C\uD654 \uD14D\uC2A4\uD2B8(\uC22B\uC790\uB294 \uC11C\uBC84\uAC00 \uC77D\uB294 \uBC95\uC744 \uC815\uD55C\uB2E4 \u2014 \uD480\uC5B4\uC4F0\uC9C0 \uC54A\uB294\uB2E4)",
19074
+ "maxLength": 2e3,
19075
+ "minLength": 1,
19076
+ "title": "Text",
19077
+ "type": "string"
19078
+ },
19079
+ "subtitle_text": {
19080
+ "anyOf": [
19081
+ {
19082
+ "maxLength": 2e3,
19083
+ "type": "string"
19084
+ },
19085
+ {
19086
+ "type": "null"
19087
+ }
19088
+ ],
19089
+ "default": null,
19090
+ "description": "\uC790\uB9C9 \uD45C\uAE30(\uC6D0\uBB38 \uD45C\uAE30). \uC5C6\uC73C\uBA74 text",
19091
+ "title": "Subtitle Text"
19092
+ },
19093
+ "audio_asset_id": {
19094
+ "anyOf": [
19095
+ {
19096
+ "minLength": 1,
19097
+ "type": "string"
19098
+ },
19099
+ {
19100
+ "type": "null"
19101
+ }
19102
+ ],
19103
+ "default": null,
19104
+ "description": "BYO: \uC774 \uC904\uC758 \uB098\uB808\uC774\uC158 \uC624\uB514\uC624 \uC790\uC0B0 \u2014 TTS \uD589 0\uC6D0, \uC815\uB82C \uD589\uB9CC",
19105
+ "title": "Audio Asset Id"
19106
+ }
19107
+ },
19108
+ "required": [
19109
+ "id",
19110
+ "text"
19111
+ ],
19112
+ "title": "DialogueLine",
19113
+ "type": "object"
19114
+ },
19115
+ "FromCutImageRef": {
19116
+ "additionalProperties": false,
19117
+ "properties": {
19118
+ "kind": {
19119
+ "const": "from_cut",
19120
+ "default": "from_cut",
19121
+ "title": "Kind",
19122
+ "type": "string"
19123
+ },
19124
+ "from_cut": {
19125
+ "description": "\uB2E4\uB978 \uCEF7\uC758 \uB300\uD45C \uBC84\uC804 \uD504\uB808\uC784(\uC5F0\uC18D\uC131 \uB3C4\uC6B0\uBBF8)",
19126
+ "minLength": 1,
19127
+ "title": "From Cut",
19128
+ "type": "string"
19129
+ },
19130
+ "frame": {
19131
+ "default": "last",
19132
+ "enum": [
19133
+ "first",
19134
+ "last"
19135
+ ],
19136
+ "title": "Frame",
19137
+ "type": "string"
19138
+ }
19139
+ },
19140
+ "required": [
19141
+ "from_cut"
19142
+ ],
19143
+ "title": "FromCutImageRef",
19144
+ "type": "object"
19145
+ },
19146
+ "FromVersionImageRef": {
19147
+ "additionalProperties": false,
19148
+ "properties": {
19149
+ "kind": {
19150
+ "const": "from_version",
19151
+ "default": "from_version",
19152
+ "title": "Kind",
19153
+ "type": "string"
19154
+ },
19155
+ "from_version": {
19156
+ "description": "\uC774 \uCEF7\uC758 \uD2B9\uC815 \uBC84\uC804 \uD504\uB808\uC784",
19157
+ "minimum": 1,
19158
+ "title": "From Version",
19159
+ "type": "integer"
19160
+ },
19161
+ "frame": {
19162
+ "default": "last",
19163
+ "enum": [
19164
+ "first",
19165
+ "last"
19166
+ ],
19167
+ "title": "Frame",
19168
+ "type": "string"
19169
+ }
19170
+ },
19171
+ "required": [
19172
+ "from_version"
19173
+ ],
19174
+ "title": "FromVersionImageRef",
19175
+ "type": "object"
19176
+ },
19177
+ "MotionGraphicSpec": {
19178
+ "additionalProperties": false,
19179
+ "properties": {
19180
+ "dialogue": {
19181
+ "items": {
19182
+ "$ref": "#/$defs/DialogueLine"
19183
+ },
19184
+ "title": "Dialogue",
19185
+ "type": "array"
19186
+ },
19187
+ "narration_asset_id": {
19188
+ "anyOf": [
19189
+ {
19190
+ "minLength": 1,
19191
+ "type": "string"
19192
+ },
19193
+ {
19194
+ "type": "null"
19195
+ }
19196
+ ],
19197
+ "default": null,
19198
+ "description": "BYO: \uCEF7 \uC804\uCCB4 \uB098\uB808\uC774\uC158 wav \uD55C \uAC1C(\uB300\uC0AC\uAC00 \uC788\uC5B4\uC57C \uD55C\uB2E4 \u2014 \uC790\uB9C9\xB7\uD0C0\uC774\uBC0D\uC758 \uADFC\uAC70). \uC904\uBCC4 audio_asset_id \uC640 \uB3D9\uC2DC \uC9C0\uC815 422",
19199
+ "title": "Narration Asset Id"
19200
+ },
19201
+ "subtitles": {
19202
+ "default": false,
19203
+ "title": "Subtitles",
19204
+ "type": "boolean"
19205
+ },
19206
+ "host": {
19207
+ "anyOf": [
19208
+ {
19209
+ "type": "string"
19210
+ },
19211
+ {
19212
+ "type": "null"
19213
+ }
19214
+ ],
19215
+ "default": null,
19216
+ "description": "\uC9C4\uD589 \u2014 \uD5C8\uC6A9 \uC9D1\uD569\uC740 \uCE74\uD0C8\uB85C\uADF8(\uBC29\uC2DD\uBCC4). \uBAA8\uC158\uADF8\uB798\uD53D\uC740 \uD544\uC218",
19217
+ "title": "Host"
19218
+ },
19219
+ "voice_id": {
19220
+ "anyOf": [
19221
+ {
19222
+ "minLength": 1,
19223
+ "type": "string"
19224
+ },
19225
+ {
19226
+ "type": "null"
19227
+ }
19228
+ ],
19229
+ "default": null,
19230
+ "description": "host\u2208{voice,avatar} \uC774\uACE0 BYO \uC624\uB514\uC624\uAC00 \uC5C6\uC744 \uB54C \uD544\uC218",
19231
+ "title": "Voice Id"
19232
+ },
19233
+ "pip": {
19234
+ "anyOf": [
19235
+ {
19236
+ "$ref": "#/$defs/PipSpec"
19237
+ },
19238
+ {
19239
+ "type": "null"
19240
+ }
19241
+ ],
19242
+ "default": null,
19243
+ "description": "host=avatar \uC77C \uB54C \uD544\uC218"
19244
+ },
19245
+ "image_asset_id": {
19246
+ "anyOf": [
19247
+ {
19248
+ "minLength": 1,
19249
+ "type": "string"
19250
+ },
19251
+ {
19252
+ "type": "null"
19253
+ }
19254
+ ],
19255
+ "default": null,
19256
+ "description": "\uCEF7 \uC774\uBBF8\uC9C0\uB97C spec \uC5D0\uC11C \uC9C1\uC811 \uC9C0\uC815(\uC5D0\uC774\uC804\uD2B8 \uC6D0\uC0F7\uC6A9)",
19257
+ "title": "Image Asset Id"
19258
+ },
19259
+ "duration_s": {
19260
+ "anyOf": [
19261
+ {
19262
+ "exclusiveMinimum": 0,
19263
+ "maximum": 600,
19264
+ "type": "number"
19265
+ },
19266
+ {
19267
+ "type": "null"
19268
+ }
19269
+ ],
19270
+ "default": null,
19271
+ "title": "Duration S"
19272
+ },
19273
+ "mode": {
19274
+ "const": "motion_graphic",
19275
+ "default": "motion_graphic",
19276
+ "title": "Mode",
19277
+ "type": "string"
19278
+ },
19279
+ "motion_prompt": {
19280
+ "anyOf": [
19281
+ {
19282
+ "maxLength": 4e3,
19283
+ "type": "string"
19284
+ },
19285
+ {
19286
+ "type": "null"
19287
+ }
19288
+ ],
19289
+ "default": null,
19290
+ "title": "Motion Prompt"
19291
+ },
19292
+ "tsx": {
19293
+ "anyOf": [
19294
+ {
19295
+ "maxLength": 2e5,
19296
+ "type": "string"
19297
+ },
19298
+ {
19299
+ "type": "null"
19300
+ }
19301
+ ],
19302
+ "default": null,
19303
+ "description": "BYO Remotion \uCF54\uB4DC(UTF-8 \u2264 200KB) \u2014 codegen \uD589 0\uC6D0, \uAC8C\uC774\uD2B8\uB294 codegen \uACFC \uB3D9\uAE09",
19304
+ "title": "Tsx"
19305
+ },
19306
+ "brand_override": {
19307
+ "anyOf": [
19308
+ {
19309
+ "additionalProperties": true,
19310
+ "type": "object"
19311
+ },
19312
+ {
19313
+ "type": "null"
19314
+ }
19315
+ ],
19316
+ "default": null,
19317
+ "title": "Brand Override"
19318
+ }
19319
+ },
19320
+ "title": "MotionGraphicSpec",
19321
+ "type": "object"
19322
+ },
19323
+ "PipSpec": {
19324
+ "additionalProperties": false,
19325
+ "properties": {
19326
+ "avatar_id": {
19327
+ "minLength": 1,
19328
+ "title": "Avatar Id",
19329
+ "type": "string"
19330
+ },
19331
+ "background_asset_id": {
19332
+ "description": "\uBC30\uACBD\uC740 \uC5B8\uC81C\uB098 \uC790\uC0B0(origin=background \uCE74\uD0C8\uB85C\uADF8 \uB610\uB294 \uC62C\uB9B0 \uC774\uBBF8\uC9C0)",
19333
+ "minLength": 1,
19334
+ "title": "Background Asset Id",
19335
+ "type": "string"
19336
+ },
19337
+ "position": {
19338
+ "default": "br",
19339
+ "enum": [
19340
+ "tl",
19341
+ "tr",
19342
+ "bl",
19343
+ "br"
19344
+ ],
19345
+ "title": "Position",
19346
+ "type": "string"
19347
+ },
19348
+ "size": {
19349
+ "default": "m",
19350
+ "enum": [
19351
+ "s",
19352
+ "m",
19353
+ "l"
19354
+ ],
19355
+ "title": "Size",
19356
+ "type": "string"
19357
+ }
19358
+ },
19359
+ "required": [
19360
+ "avatar_id",
19361
+ "background_asset_id"
19362
+ ],
19363
+ "title": "PipSpec",
19364
+ "type": "object"
19365
+ },
19366
+ "YoutubeAssetSource": {
19367
+ "additionalProperties": false,
19368
+ "properties": {
19369
+ "kind": {
19370
+ "const": "asset",
19371
+ "default": "asset",
19372
+ "title": "Kind",
19373
+ "type": "string"
19374
+ },
19375
+ "asset_id": {
19376
+ "description": "BYO: \uC62C\uB9B0 \uC6D0\uBCF8 \uC601\uC0C1 \u2014 \uB0B4\uB824\uBC1B\uAE30 \uD589 0\uC6D0",
19377
+ "minLength": 1,
19378
+ "title": "Asset Id",
19379
+ "type": "string"
19380
+ },
19381
+ "start_s": {
19382
+ "anyOf": [
19383
+ {
19384
+ "minimum": 0,
19385
+ "type": "number"
19386
+ },
19387
+ {
19388
+ "type": "null"
19389
+ }
19390
+ ],
19391
+ "default": null,
19392
+ "title": "Start S"
19393
+ },
19394
+ "end_s": {
19395
+ "anyOf": [
19396
+ {
19397
+ "exclusiveMinimum": 0,
19398
+ "type": "number"
19399
+ },
19400
+ {
19401
+ "type": "null"
19402
+ }
19403
+ ],
19404
+ "default": null,
19405
+ "title": "End S"
19406
+ }
19407
+ },
19408
+ "required": [
19409
+ "asset_id"
19410
+ ],
19411
+ "title": "YoutubeAssetSource",
19412
+ "type": "object"
19413
+ },
19414
+ "YoutubeClipSpec": {
19415
+ "additionalProperties": false,
19416
+ "properties": {
19417
+ "dialogue": {
19418
+ "items": {
19419
+ "$ref": "#/$defs/DialogueLine"
19420
+ },
19421
+ "title": "Dialogue",
19422
+ "type": "array"
19423
+ },
19424
+ "narration_asset_id": {
19425
+ "anyOf": [
19426
+ {
19427
+ "minLength": 1,
19428
+ "type": "string"
19429
+ },
19430
+ {
19431
+ "type": "null"
19432
+ }
19433
+ ],
19434
+ "default": null,
19435
+ "description": "BYO: \uCEF7 \uC804\uCCB4 \uB098\uB808\uC774\uC158 wav \uD55C \uAC1C(\uB300\uC0AC\uAC00 \uC788\uC5B4\uC57C \uD55C\uB2E4 \u2014 \uC790\uB9C9\xB7\uD0C0\uC774\uBC0D\uC758 \uADFC\uAC70). \uC904\uBCC4 audio_asset_id \uC640 \uB3D9\uC2DC \uC9C0\uC815 422",
19436
+ "title": "Narration Asset Id"
19437
+ },
19438
+ "subtitles": {
19439
+ "default": false,
19440
+ "title": "Subtitles",
19441
+ "type": "boolean"
19442
+ },
19443
+ "host": {
19444
+ "anyOf": [
19445
+ {
19446
+ "type": "string"
19447
+ },
19448
+ {
19449
+ "type": "null"
19450
+ }
19451
+ ],
19452
+ "default": null,
19453
+ "description": "\uC9C4\uD589 \u2014 \uD5C8\uC6A9 \uC9D1\uD569\uC740 \uCE74\uD0C8\uB85C\uADF8(\uBC29\uC2DD\uBCC4). \uBAA8\uC158\uADF8\uB798\uD53D\uC740 \uD544\uC218",
19454
+ "title": "Host"
19455
+ },
19456
+ "voice_id": {
19457
+ "anyOf": [
19458
+ {
19459
+ "minLength": 1,
19460
+ "type": "string"
19461
+ },
19462
+ {
19463
+ "type": "null"
19464
+ }
19465
+ ],
19466
+ "default": null,
19467
+ "description": "host\u2208{voice,avatar} \uC774\uACE0 BYO \uC624\uB514\uC624\uAC00 \uC5C6\uC744 \uB54C \uD544\uC218",
19468
+ "title": "Voice Id"
19469
+ },
19470
+ "pip": {
19471
+ "anyOf": [
19472
+ {
19473
+ "$ref": "#/$defs/PipSpec"
19474
+ },
19475
+ {
19476
+ "type": "null"
19477
+ }
19478
+ ],
19479
+ "default": null,
19480
+ "description": "host=avatar \uC77C \uB54C \uD544\uC218"
19481
+ },
19482
+ "image_asset_id": {
19483
+ "anyOf": [
19484
+ {
19485
+ "minLength": 1,
19486
+ "type": "string"
19487
+ },
19488
+ {
19489
+ "type": "null"
19490
+ }
19491
+ ],
19492
+ "default": null,
19493
+ "description": "\uCEF7 \uC774\uBBF8\uC9C0\uB97C spec \uC5D0\uC11C \uC9C1\uC811 \uC9C0\uC815(\uC5D0\uC774\uC804\uD2B8 \uC6D0\uC0F7\uC6A9)",
19494
+ "title": "Image Asset Id"
19495
+ },
19496
+ "duration_s": {
19497
+ "anyOf": [
19498
+ {
19499
+ "exclusiveMinimum": 0,
19500
+ "maximum": 600,
19501
+ "type": "number"
19502
+ },
19503
+ {
19504
+ "type": "null"
19505
+ }
19506
+ ],
19507
+ "default": null,
19508
+ "title": "Duration S"
19509
+ },
19510
+ "mode": {
19511
+ "const": "youtube_clip",
19512
+ "default": "youtube_clip",
19513
+ "title": "Mode",
19514
+ "type": "string"
19515
+ },
19516
+ "source": {
19517
+ "discriminator": {
19518
+ "mapping": {
19519
+ "asset": "#/$defs/YoutubeAssetSource",
19520
+ "url": "#/$defs/YoutubeUrlSource"
19521
+ },
19522
+ "propertyName": "kind"
19523
+ },
19524
+ "oneOf": [
19525
+ {
19526
+ "$ref": "#/$defs/YoutubeUrlSource"
19527
+ },
19528
+ {
19529
+ "$ref": "#/$defs/YoutubeAssetSource"
19530
+ }
19531
+ ],
19532
+ "title": "Source"
19533
+ }
19534
+ },
19535
+ "required": [
19536
+ "source"
19537
+ ],
19538
+ "title": "YoutubeClipSpec",
19539
+ "type": "object"
19540
+ },
19541
+ "YoutubeUrlSource": {
19542
+ "additionalProperties": false,
19543
+ "properties": {
19544
+ "kind": {
19545
+ "const": "url",
19546
+ "default": "url",
19547
+ "title": "Kind",
19548
+ "type": "string"
19549
+ },
19550
+ "url": {
19551
+ "description": "https://youtube.com|youtu.be \uACF5\uAC1C \uC8FC\uC18C\uB9CC",
19552
+ "minLength": 1,
19553
+ "title": "Url",
19554
+ "type": "string"
19555
+ },
19556
+ "start_s": {
19557
+ "minimum": 0,
19558
+ "title": "Start S",
19559
+ "type": "number"
19560
+ },
19561
+ "end_s": {
19562
+ "exclusiveMinimum": 0,
19563
+ "title": "End S",
19564
+ "type": "number"
19565
+ }
19566
+ },
19567
+ "required": [
19568
+ "url",
19569
+ "start_s",
19570
+ "end_s"
19571
+ ],
19572
+ "title": "YoutubeUrlSource",
19573
+ "type": "object"
19574
+ }
19575
+ }
19576
+ },
19577
+ "annotations": {
19578
+ "readOnlyHint": false,
19579
+ "destructiveHint": false,
19580
+ "idempotentHint": false,
19581
+ "openWorldHint": false
19582
+ }
19583
+ },
19584
+ {
19585
+ "name": "democut_duplicate_cut",
19586
+ "description": "\uCEF7\uC744 \uBCF5\uC81C\uD55C\uB2E4(\uACC4\uD68D\uB9CC, \uBC84\uC804\uC740 \uBCF5\uC81C\uD558\uC9C0 \uC54A\uB294\uB2E4).",
18556
19587
  "inputSchema": {
18557
19588
  "type": "object",
18558
19589
  "properties": {
18559
- "character_id": {
19590
+ "slug": {
18560
19591
  "type": "string",
18561
- "description": "\uC544\uBC14\uD0C0 id(chr_\u2026)"
19592
+ "description": "\uD504\uB85C\uC81D\uD2B8 \uC2AC\uB7EC\uADF8(list_projects)"
18562
19593
  },
18563
- "photo_id": {
18564
- "title": "Photo Id",
18565
- "type": "string"
19594
+ "cut_id": {
19595
+ "type": "string",
19596
+ "description": "\uCEF7 id(cut_\u2026)"
18566
19597
  }
18567
19598
  },
18568
19599
  "required": [
18569
- "character_id",
18570
- "photo_id"
19600
+ "slug",
19601
+ "cut_id"
18571
19602
  ],
18572
19603
  "additionalProperties": false
18573
19604
  },
18574
19605
  "annotations": {
18575
19606
  "readOnlyHint": false,
18576
19607
  "destructiveHint": false,
18577
- "idempotentHint": true,
19608
+ "idempotentHint": false,
18578
19609
  "openWorldHint": false
18579
19610
  }
18580
19611
  },
18581
19612
  {
18582
- "name": "democut_get_storyboard",
18583
- "description": "\uC2A4\uD1A0\uB9AC\uBCF4\uB4DC \u2014 rev\xB7\uC21C\uC11C\xB7\uCEF7(\uD30C\uC0DD \uD544\uB4DC)\xB7\uB300\uAE30 \uC81C\uC548\xB7\uC0AC\uC6A9\uB7C9. If-Match \uC5D0 \uC4F8 rev \uAC00 \uC5EC\uAE30 \uC788\uB2E4. \uB2E4\uC74C \uD638\uCD9C: democut_add_cut.",
19613
+ "name": "democut_delete_cut",
19614
+ "description": "\uCEF7\uC744 \uC9C0\uC6B4\uB2E4(\uD65C\uC131 \uC7A1\uC774 \uC788\uC73C\uBA74 409 CUT_BUSY).",
18584
19615
  "inputSchema": {
18585
19616
  "type": "object",
18586
19617
  "properties": {
18587
19618
  "slug": {
18588
19619
  "type": "string",
18589
19620
  "description": "\uD504\uB85C\uC81D\uD2B8 \uC2AC\uB7EC\uADF8(list_projects)"
19621
+ },
19622
+ "cut_id": {
19623
+ "type": "string",
19624
+ "description": "\uCEF7 id(cut_\u2026)"
18590
19625
  }
18591
19626
  },
18592
19627
  "required": [
18593
- "slug"
19628
+ "slug",
19629
+ "cut_id"
18594
19630
  ],
18595
19631
  "additionalProperties": false
18596
19632
  },
18597
19633
  "annotations": {
18598
- "readOnlyHint": true,
18599
- "destructiveHint": false,
19634
+ "readOnlyHint": false,
19635
+ "destructiveHint": true,
18600
19636
  "idempotentHint": true,
18601
19637
  "openWorldHint": false
18602
19638
  }
18603
19639
  },
18604
19640
  {
18605
- "name": "democut_add_cut",
18606
- "description": "\uCEF7\uC744 \uD558\uB098 \uCD94\uAC00\uD55C\uB2E4(0\uC6D0, \uB80C\uB354\uD558\uC9C0 \uC54A\uB294\uB2E4). after \uAC00 \uC5C6\uC73C\uBA74 \uB05D\uC5D0 \uC5F0\uACB0. draft_spec \uC744 \uC8FC\uBA74 \uBC14\uB85C \uACAC\uC801\uC744 \uB0BC \uC218 \uC788\uACE0, \uC8FC\uC9C0 \uC54A\uC73C\uBA74 \uC790\uB9AC \uD45C\uC2DC \uCD08\uC548\uC774 \uB4E4\uC5B4\uAC00 \uB0B4\uC6A9\uC744 \uC815\uD558\uAE30 \uC804\uAE4C\uC9C0 \uACAC\uC801\xB7\uC81C\uCD9C\uC774 \uB9C9\uD78C\uB2E4 \u2014 \uB2E4\uC74C \uD589\uB3D9\uC740 \uC751\uB2F5\uC758 next_calls \uB97C \uB530\uB974\uB77C.",
19641
+ "name": "democut_put_cut_draft",
19642
+ "description": "\uACC4\uD68D(draft_spec)\uC744 \uC804\uCCB4 \uAD50\uCCB4\uD55C\uB2E4(0\uC6D0, If-Match rev). \uB80C\uB354\uD558\uC9C0 \uC54A\uB294\uB2E4.",
18607
19643
  "inputSchema": {
18608
19644
  "type": "object",
18609
19645
  "properties": {
@@ -18611,67 +19647,43 @@ var GENERATED_TOOLS = [
18611
19647
  "type": "string",
18612
19648
  "description": "\uD504\uB85C\uC81D\uD2B8 \uC2AC\uB7EC\uADF8(list_projects)"
18613
19649
  },
18614
- "mode": {
18615
- "default": "ai_video",
18616
- "enum": [
18617
- "motion_graphic",
18618
- "ai_video",
18619
- "youtube_clip"
18620
- ],
18621
- "title": "Mode",
18622
- "type": "string"
19650
+ "cut_id": {
19651
+ "type": "string",
19652
+ "description": "\uCEF7 id(cut_\u2026)"
18623
19653
  },
18624
- "after": {
18625
- "anyOf": [
18626
- {
18627
- "type": "string"
19654
+ "spec": {
19655
+ "discriminator": {
19656
+ "mapping": {
19657
+ "ai_video": "#/$defs/AiVideoSpec",
19658
+ "motion_graphic": "#/$defs/MotionGraphicSpec",
19659
+ "youtube_clip": "#/$defs/YoutubeClipSpec"
18628
19660
  },
19661
+ "propertyName": "mode"
19662
+ },
19663
+ "oneOf": [
18629
19664
  {
18630
- "type": "null"
18631
- }
18632
- ],
18633
- "default": null,
18634
- "description": "\uC774 \uCEF7 \uB2E4\uC74C\uC5D0 \uC5F0\uACB0. \uC5C6\uC73C\uBA74 \uB05D",
18635
- "title": "After"
18636
- },
18637
- "title": {
18638
- "default": "",
18639
- "title": "Title",
18640
- "type": "string"
18641
- },
18642
- "draft_spec": {
18643
- "anyOf": [
19665
+ "$ref": "#/$defs/MotionGraphicSpec"
19666
+ },
18644
19667
  {
18645
- "discriminator": {
18646
- "mapping": {
18647
- "ai_video": "#/$defs/AiVideoSpec",
18648
- "motion_graphic": "#/$defs/MotionGraphicSpec",
18649
- "youtube_clip": "#/$defs/YoutubeClipSpec"
18650
- },
18651
- "propertyName": "mode"
18652
- },
18653
- "oneOf": [
18654
- {
18655
- "$ref": "#/$defs/MotionGraphicSpec"
18656
- },
18657
- {
18658
- "$ref": "#/$defs/AiVideoSpec"
18659
- },
18660
- {
18661
- "$ref": "#/$defs/YoutubeClipSpec"
18662
- }
18663
- ]
19668
+ "$ref": "#/$defs/AiVideoSpec"
18664
19669
  },
18665
19670
  {
18666
- "type": "null"
19671
+ "$ref": "#/$defs/YoutubeClipSpec"
18667
19672
  }
18668
19673
  ],
18669
- "default": null,
18670
- "title": "Draft Spec"
19674
+ "title": "Spec"
19675
+ },
19676
+ "rev": {
19677
+ "type": "integer",
19678
+ "minimum": 0,
19679
+ "description": "\uD604\uC7AC rev(get_storyboard \uC758 \uAC12 \uADF8\uB300\uB85C). \uADF8 \uC0AC\uC774 \uBC14\uB00C\uC5C8\uC73C\uBA74 409 REV_MISMATCH"
18671
19680
  }
18672
19681
  },
18673
19682
  "required": [
18674
- "slug"
19683
+ "slug",
19684
+ "cut_id",
19685
+ "spec",
19686
+ "rev"
18675
19687
  ],
18676
19688
  "additionalProperties": false,
18677
19689
  "$defs": {
@@ -19411,13 +20423,13 @@ var GENERATED_TOOLS = [
19411
20423
  "annotations": {
19412
20424
  "readOnlyHint": false,
19413
20425
  "destructiveHint": false,
19414
- "idempotentHint": false,
20426
+ "idempotentHint": true,
19415
20427
  "openWorldHint": false
19416
20428
  }
19417
20429
  },
19418
20430
  {
19419
- "name": "democut_duplicate_cut",
19420
- "description": "\uCEF7\uC744 \uBCF5\uC81C\uD55C\uB2E4(\uACC4\uD68D\uB9CC, \uBC84\uC804\uC740 \uBCF5\uC81C\uD558\uC9C0 \uC54A\uB294\uB2E4).",
20431
+ "name": "democut_set_cut_edit",
20432
+ "description": "\uC7AC\uC0DD \uAD6C\uAC04\xB7\uBB34\uC74C \uC790\uB974\uAE30(0\uC6D0, \uB80C\uB354 \uD30C\uC77C \uBD88\uBCC0 \u2014 \uC7AC\uC0DD\xB7\uC644\uC131\uBCF8\uC5D0\uB9CC \uC801\uC6A9).",
19421
20433
  "inputSchema": {
19422
20434
  "type": "object",
19423
20435
  "properties": {
@@ -19428,24 +20440,68 @@ var GENERATED_TOOLS = [
19428
20440
  "cut_id": {
19429
20441
  "type": "string",
19430
20442
  "description": "\uCEF7 id(cut_\u2026)"
20443
+ },
20444
+ "edit": {
20445
+ "$ref": "#/$defs/CutEdit"
19431
20446
  }
19432
20447
  },
19433
20448
  "required": [
19434
20449
  "slug",
19435
- "cut_id"
20450
+ "cut_id",
20451
+ "edit"
19436
20452
  ],
19437
- "additionalProperties": false
20453
+ "additionalProperties": false,
20454
+ "$defs": {
20455
+ "CutEdit": {
20456
+ "additionalProperties": false,
20457
+ "properties": {
20458
+ "trim_in_ms": {
20459
+ "default": 0,
20460
+ "minimum": 0,
20461
+ "title": "Trim In Ms",
20462
+ "type": "integer"
20463
+ },
20464
+ "trim_out_ms": {
20465
+ "anyOf": [
20466
+ {
20467
+ "minimum": 1,
20468
+ "type": "integer"
20469
+ },
20470
+ {
20471
+ "type": "null"
20472
+ }
20473
+ ],
20474
+ "default": null,
20475
+ "title": "Trim Out Ms"
20476
+ },
20477
+ "silence_removal": {
20478
+ "default": false,
20479
+ "title": "Silence Removal",
20480
+ "type": "boolean"
20481
+ },
20482
+ "silence_threshold_ms": {
20483
+ "default": 800,
20484
+ "maximum": 5e3,
20485
+ "minimum": 100,
20486
+ "title": "Silence Threshold Ms",
20487
+ "type": "integer"
20488
+ }
20489
+ },
20490
+ "title": "CutEdit",
20491
+ "type": "object"
20492
+ }
20493
+ }
19438
20494
  },
19439
20495
  "annotations": {
19440
20496
  "readOnlyHint": false,
19441
20497
  "destructiveHint": false,
19442
- "idempotentHint": false,
20498
+ "idempotentHint": true,
19443
20499
  "openWorldHint": false
19444
20500
  }
19445
20501
  },
19446
20502
  {
19447
- "name": "democut_delete_cut",
19448
- "description": "\uCEF7\uC744 \uC9C0\uC6B4\uB2E4(\uD65C\uC131 \uC7A1\uC774 \uC788\uC73C\uBA74 409 CUT_BUSY).",
20503
+ "name": "democut_reorder_cuts",
20504
+ "description": "\uC5F0\uACB0 \uC21C\uC11C\uB97C \uD1B5\uC9F8\uB85C \uB2E4\uC2DC \uC4F4\uB2E4(If-Match rev). \uBE60\uC9C4 \uCEF7\uC740 \uB5BC\uC5B4 \uB454 \uCEF7\uC774 \uB41C\uB2E4.",
19449
20505
  "inputSchema": {
19450
20506
  "type": "object",
19451
20507
  "properties": {
@@ -19453,20 +20509,30 @@ var GENERATED_TOOLS = [
19453
20509
  "type": "string",
19454
20510
  "description": "\uD504\uB85C\uC81D\uD2B8 \uC2AC\uB7EC\uADF8(list_projects)"
19455
20511
  },
19456
- "cut_id": {
19457
- "type": "string",
19458
- "description": "\uCEF7 id(cut_\u2026)"
20512
+ "cut_ids": {
20513
+ "description": "\uC804\uCCB4 \uC21C\uC11C. \uBE60\uC9C4 \uCEF7\uC740 position=NULL(\uB5BC\uC5B4 \uB460)",
20514
+ "items": {
20515
+ "type": "string"
20516
+ },
20517
+ "title": "Cut Ids",
20518
+ "type": "array"
20519
+ },
20520
+ "rev": {
20521
+ "type": "integer",
20522
+ "minimum": 0,
20523
+ "description": "\uD604\uC7AC rev(get_storyboard \uC758 \uAC12 \uADF8\uB300\uB85C). \uADF8 \uC0AC\uC774 \uBC14\uB00C\uC5C8\uC73C\uBA74 409 REV_MISMATCH"
19459
20524
  }
19460
20525
  },
19461
20526
  "required": [
19462
20527
  "slug",
19463
- "cut_id"
20528
+ "cut_ids",
20529
+ "rev"
19464
20530
  ],
19465
20531
  "additionalProperties": false
19466
20532
  },
19467
20533
  "annotations": {
19468
20534
  "readOnlyHint": false,
19469
- "destructiveHint": true,
20535
+ "destructiveHint": false,
19470
20536
  "idempotentHint": true,
19471
20537
  "openWorldHint": false
19472
20538
  }
@@ -20124,7 +21190,7 @@ function estimateCuts(a = {}, deps = {}) {
20124
21190
  lines.push(` ${label}: \uACAC\uC801 \uBD88\uAC00 \u2014 ${item.blocked_reason}`);
20125
21191
  continue;
20126
21192
  }
20127
- const rows = (item.rows ?? []).map((r) => `${r.key} ${krw(r.krw)}`).join(", ") || "\uD589 \uC5C6\uC74C";
21193
+ const rows = (item.rows ?? []).map((r) => `${r.display_name || r.key} ${krw(r.krw)}`).join(", ") || "\uD589 \uC5C6\uC74C";
20128
21194
  lines.push(` ${label}: ${krw(item.total_krw ?? 0)} (${rows})`);
20129
21195
  }
20130
21196
  lines.push(
@@ -20139,6 +21205,85 @@ function estimateCuts(a = {}, deps = {}) {
20139
21205
  return { text: lines.join("\n") };
20140
21206
  });
20141
21207
  }
21208
+ function estimateCutImage(a = {}, deps = {}) {
21209
+ return guarded(READ_ONLY, async () => {
21210
+ const slug = needSlug(a);
21211
+ if (typeof slug !== "string") return slug;
21212
+ const cutId = (a.cut_id ?? "").trim();
21213
+ if (!cutId) return { isError: true, text: "cut_id \uAC00 \uD544\uC694\uD569\uB2C8\uB2E4." };
21214
+ const base = resolveBaseUrl(deps.baseUrl);
21215
+ const out2 = await apiRequest(
21216
+ base,
21217
+ projectPath(slug, `/cuts/${encodeURIComponent(cutId)}/images/estimate`),
21218
+ {
21219
+ method: "POST",
21220
+ // ★ 광고한 인자는 전부 넘긴다 — 안 넘기면 모델이 값을 넣었는데 아무 일도 안 일어나고
21221
+ // 오류도 안 난다(`mcp-server.test.ts` 가드가 그 불일치를 잡는다).
21222
+ body: {
21223
+ ...a.prompt ? { prompt: a.prompt } : {},
21224
+ ...a.character_id ? { character_id: a.character_id } : {},
21225
+ ...a.quality ? { quality: a.quality } : {},
21226
+ ...a.model ? { model: a.model } : {}
21227
+ }
21228
+ },
21229
+ deps
21230
+ );
21231
+ const item = out2.items?.[0];
21232
+ if (!item || item.blocked_reason) {
21233
+ const reason = item?.blocked_reason ?? "\uACAC\uC801\uD560 \uD56D\uBAA9\uC774 \uC5C6\uC2B5\uB2C8\uB2E4";
21234
+ return {
21235
+ text: `\uC774 \uC870\uD569\uC740 \uC544\uC9C1 \uACAC\uC801\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4 \u2014 ${reason}
21236
+ democut_get_options \uC758 image_models \uC5D0\uC11C available \uC774 true \uC778 \uBAA8\uB378\uC744 \uACE0\uB974\uC138\uC694. \uC804\uBD80 false \uBA74 \uC544\uC9C1 \uC774 \uC6CC\uD06C\uC2A4\uD398\uC774\uC2A4\uC5D0\uC11C AI \uC774\uBBF8\uC9C0 \uC0DD\uC131\uC744 \uC4F8 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4(\uAD00\uB9AC\uC790 \uBB38\uC758).`
21237
+ };
21238
+ }
21239
+ const rows = (item.rows ?? []).map((r) => `${r.display_name || r.key} ${krw(r.krw)}`).join(", ") || "\uD589 \uC5C6\uC74C";
21240
+ const lines = [
21241
+ `AI \uCEF7 \uC774\uBBF8\uC9C0 \uACAC\uC801 (\uC694\uC728 v${out2.rate_version}) \u2014 \uBD80\uC791\uC6A9\uB3C4 \uACFC\uAE08\uB3C4 \uC5C6\uC2B5\uB2C8\uB2E4`,
21242
+ ` ${item.cut_id}: ${krw(item.total_krw ?? 0)} (${rows})`,
21243
+ `\uC794\uC561 ${krw(out2.balance_krw)} \u2192 \uB0A8\uC744 \uC794\uC561 ${krw(out2.balance_after_krw)}`,
21244
+ out2.can_afford ? "\uCDA9\uBD84\uD569\uB2C8\uB2E4." : "\u26A0\uFE0F \uC794\uC561\uC774 \uBD80\uC871\uD569\uB2C8\uB2E4 \u2014 \uC6CC\uD06C\uC2A4\uD398\uC774\uC2A4 \uAD00\uB9AC\uC790\uC5D0\uAC8C \uCDA9\uC804\uC744 \uC694\uCCAD\uD558\uC138\uC694.",
21245
+ // ★★ 상한임을 말하지 않으면 청구서를 보고 「견적과 다르다」 고 읽는다(적게 나와도 신뢰를 깎는다).
21246
+ "\uC774 \uAE08\uC561\uC740 \uC0C1\uD55C\uC785\uB2C8\uB2E4 \u2014 \uC2E4\uC81C \uC0AC\uC6A9\uB7C9\uC774 \uC801\uC73C\uBA74 \uCC28\uC561\uC744 \uC790\uB3D9\uC73C\uB85C \uB3CC\uB824\uB4DC\uB9BD\uB2C8\uB2E4."
21247
+ ];
21248
+ if (out2.mock) lines.push("(mock \uB2E8\uAC00\uC785\uB2C8\uB2E4 \u2014 \uC2E4\uC81C \uCCAD\uAD6C\uC640 \uB2E4\uB97C \uC218 \uC788\uC2B5\uB2C8\uB2E4.)");
21249
+ return { text: lines.join("\n") };
21250
+ });
21251
+ }
21252
+ function makeCutImage(a = {}, deps = {}) {
21253
+ return guarded(SUBMITTING, async () => {
21254
+ const slug = needSlug(a);
21255
+ if (typeof slug !== "string") return slug;
21256
+ const cutId = (a.cut_id ?? "").trim();
21257
+ if (!cutId) return { isError: true, text: "cut_id \uAC00 \uD544\uC694\uD569\uB2C8\uB2E4." };
21258
+ const base = resolveBaseUrl(deps.baseUrl);
21259
+ const out2 = await apiRequest(
21260
+ base,
21261
+ projectPath(slug, `/cuts/${encodeURIComponent(cutId)}/images/generate`),
21262
+ {
21263
+ method: "POST",
21264
+ body: {
21265
+ ...a.prompt ? { prompt: a.prompt } : {},
21266
+ ...a.character_id ? { character_id: a.character_id } : {},
21267
+ ...a.quality ? { quality: a.quality } : {},
21268
+ ...a.model ? { model: a.model } : {},
21269
+ // ★ 동의는 **명시**다 — 없으면 서버가 0원 동의로 읽고 409 로 거부한다(그것이 옳다).
21270
+ confirmed_cost_krw: a.confirmed_cost_krw ?? 0,
21271
+ rate_version: a.rate_version
21272
+ }
21273
+ },
21274
+ deps
21275
+ );
21276
+ const total = out2.quote?.total_krw ?? 0;
21277
+ return {
21278
+ text: [
21279
+ `\uCEF7 \uC774\uBBF8\uC9C0\uB97C \uB9CC\uB4DC\uB294 \uC911\uC785\uB2C8\uB2E4 \u2014 ${out2.job_id}`,
21280
+ // ★★ 상한임을 제출 자리에서도 말한다 — 견적을 건너뛴 호출자는 이 문장만 본다.
21281
+ `\uCCAD\uAD6C ${krw(total)} \u2014 \uC0C1\uD55C\uC785\uB2C8\uB2E4. \uC2E4\uC81C \uC0AC\uC6A9\uB7C9\uC774 \uC801\uC73C\uBA74 \uCC28\uC561\uC744 \uC790\uB3D9\uC73C\uB85C \uB3CC\uB824\uB4DC\uB9BD\uB2C8\uB2E4.`,
21282
+ "democut_wait_jobs \uB85C \uB05D\uB098\uBA74 democut_get_cut \uC758 images \uC5D0 \uC0C8 \uC774\uBBF8\uC9C0\uAC00 \uC0DD\uAE41\uB2C8\uB2E4 \u2014 \uCCAB \uC774\uBBF8\uC9C0\uBA74 \uB300\uD45C\uAC00 \uB418\uC5B4 \uB2E4\uC74C \uC601\uC0C1\uC758 \uCCAB \uD504\uB808\uC784\uC774 \uB429\uB2C8\uB2E4."
21283
+ ].join("\n")
21284
+ };
21285
+ });
21286
+ }
20142
21287
  function cutImageLine(cut) {
20143
21288
  const n = cut.images?.length ?? 0;
20144
21289
  if (!n) return `${cut.id}: \uC774\uBBF8\uC9C0 \uC5C6\uC74C \u2014 \uB2E4\uC74C \uC601\uC0C1\uC740 \uD14D\uC2A4\uD2B8\uB9CC\uC73C\uB85C \uB9CC\uB4ED\uB2C8\uB2E4(t2v).`;
@@ -20262,7 +21407,9 @@ function listing(lines) {
20262
21407
  var ACTIVE_JOB_STATES = /* @__PURE__ */ new Set(["queued", "running"]);
20263
21408
  function jobLine(j) {
20264
21409
  const bits = [`${j.job_id} [${j.state}] ${j.kind}`];
20265
- if (j.progress?.pct != null) bits.push(`${Math.round(j.progress.pct)}%`);
21410
+ if (ACTIVE_JOB_STATES.has(j.state) && j.progress?.pct != null) {
21411
+ bits.push(`${Math.round(j.progress.pct)}%`);
21412
+ }
20266
21413
  if (j.error) bits.push(`\uC624\uB958 ${j.error.code}: ${j.error.message}`);
20267
21414
  if (j.result?.version != null) bits.push(`\u2192 v${j.result.version}`);
20268
21415
  return bits.join(" \xB7 ");
@@ -20395,6 +21542,82 @@ function addCut(a = {}, deps = {}) {
20395
21542
  return { text: lines.join("\n") };
20396
21543
  });
20397
21544
  }
21545
+ var EDIT_NOTE = "\uC774\uBBF8 \uB9CC\uB4E0 \uC601\uC0C1 \uD30C\uC77C\uC740 \uADF8\uB300\uB85C\uC785\uB2C8\uB2E4 \u2014 \uC7AC\uC0DD\xB7\uC644\uC131\uBCF8\uC5D0\uB9CC \uC801\uC6A9\uB418\uACE0 \uC7AC\uB80C\uB354\uB294 \uC5C6\uC2B5\uB2C8\uB2E4.";
21546
+ function reorderCuts(a = {}, deps = {}) {
21547
+ return guarded(READ_ONLY, async () => {
21548
+ const slug = needSlug(a);
21549
+ if (typeof slug !== "string") return slug;
21550
+ if (!Array.isArray(a.cut_ids)) {
21551
+ return { isError: true, text: "cut_ids \uAC00 \uD544\uC694\uD569\uB2C8\uB2E4 \u2014 \uC804\uCCB4 \uC21C\uC11C\uB97C \uBC30\uC5F4\uB85C \uC8FC\uC138\uC694(\uBE60\uC9C4 \uCEF7\uC740 \uC21C\uC11C\uC5D0\uC11C \uBE60\uC9D1\uB2C8\uB2E4)." };
21552
+ }
21553
+ if (a.rev === void 0 || a.rev === null) {
21554
+ return {
21555
+ isError: true,
21556
+ text: callableToolNames("rev \uAC00 \uD544\uC694\uD569\uB2C8\uB2E4 \u2014 get_storyboard \uB85C \uD604\uC7AC rev \uB97C \uC77D\uC5B4 \uADF8\uB300\uB85C \uB123\uC73C\uC138\uC694.")
21557
+ };
21558
+ }
21559
+ const base = resolveBaseUrl(deps.baseUrl);
21560
+ const board = await apiRequest(
21561
+ base,
21562
+ projectPath(slug, "/cuts/order"),
21563
+ { method: "PUT", body: { cut_ids: a.cut_ids }, headers: { "If-Match": String(a.rev) } },
21564
+ deps
21565
+ );
21566
+ const lines = [`\uC21C\uC11C\uB97C \uBC14\uAFE8\uC2B5\uB2C8\uB2E4 \u2014 rev ${board.rev}`, `\uC21C\uC11C: ${(board.order ?? []).join(", ") || "(\uBE44\uC5B4 \uC788\uC74C)"}`];
21567
+ const loose = (board.cuts ?? []).filter((c) => c.position == null).map((c) => c.id);
21568
+ if (loose.length) lines.push(`\uC21C\uC11C\uC5D0\uC11C \uBE90\uC2B5\uB2C8\uB2E4(\uC644\uC131\uBCF8 \uC81C\uC678, \uC9C0\uC6CC\uC9C0\uC9C0 \uC54A\uC74C): ${loose.join(", ")}`);
21569
+ if (board.next_calls?.length)
21570
+ lines.push(callableToolNames(`\uB2E4\uC74C \uD638\uCD9C: ${board.next_calls.join(", ")}`));
21571
+ return { text: lines.join("\n") };
21572
+ });
21573
+ }
21574
+ function putCutDraft(a = {}, deps = {}) {
21575
+ return guarded(READ_ONLY, async () => {
21576
+ const slug = needSlug(a);
21577
+ if (typeof slug !== "string") return slug;
21578
+ const cutId = (a.cut_id ?? "").trim();
21579
+ if (!cutId) return { isError: true, text: "cut_id \uAC00 \uD544\uC694\uD569\uB2C8\uB2E4." };
21580
+ if (a.spec === void 0 || a.spec === null) {
21581
+ return { isError: true, text: "spec \uC774 \uD544\uC694\uD569\uB2C8\uB2E4 \u2014 \uC804\uCCB4 \uAD50\uCCB4\uC785\uB2C8\uB2E4(\uC77C\uBD80\uB9CC \uBC14\uAFB8\uB294 \uAC83\uC774 \uC544\uB2D9\uB2C8\uB2E4)." };
21582
+ }
21583
+ if (a.rev === void 0 || a.rev === null) {
21584
+ return {
21585
+ isError: true,
21586
+ text: callableToolNames("rev \uAC00 \uD544\uC694\uD569\uB2C8\uB2E4 \u2014 get_storyboard \uB85C \uD604\uC7AC rev \uB97C \uC77D\uC5B4 \uADF8\uB300\uB85C \uB123\uC73C\uC138\uC694.")
21587
+ };
21588
+ }
21589
+ const base = resolveBaseUrl(deps.baseUrl);
21590
+ const cut = await apiRequest(
21591
+ base,
21592
+ projectPath(slug, `/cuts/${encodeURIComponent(cutId)}/draft`),
21593
+ { method: "PUT", body: { spec: a.spec }, headers: { "If-Match": String(a.rev) } },
21594
+ deps
21595
+ );
21596
+ const lines = [cutLine(cut)];
21597
+ if (cut.next_calls?.length)
21598
+ lines.push(callableToolNames(`\uB2E4\uC74C \uD638\uCD9C: ${cut.next_calls.join(", ")}`));
21599
+ return { text: lines.join("\n") };
21600
+ });
21601
+ }
21602
+ function setCutEdit(a = {}, deps = {}) {
21603
+ return guarded(READ_ONLY, async () => {
21604
+ const slug = needSlug(a);
21605
+ if (typeof slug !== "string") return slug;
21606
+ const cutId = (a.cut_id ?? "").trim();
21607
+ if (!cutId) return { isError: true, text: "cut_id \uAC00 \uD544\uC694\uD569\uB2C8\uB2E4." };
21608
+ if (a.edit === void 0 || a.edit === null) {
21609
+ return { isError: true, text: "edit \uC774 \uD544\uC694\uD569\uB2C8\uB2E4." };
21610
+ }
21611
+ const base = resolveBaseUrl(deps.baseUrl);
21612
+ const cut = await apiRequest(
21613
+ base,
21614
+ projectPath(slug, `/cuts/${encodeURIComponent(cutId)}/edit`),
21615
+ { method: "PUT", body: { edit: a.edit } },
21616
+ deps
21617
+ );
21618
+ return { text: [cutLine(cut), EDIT_NOTE].join("\n") };
21619
+ });
21620
+ }
20398
21621
  function duplicateCut(a = {}, deps = {}) {
20399
21622
  return guarded(READ_ONLY, async () => {
20400
21623
  const slug = needSlug(a);
@@ -20690,6 +21913,10 @@ function dispatch(name, args, deps = {}) {
20690
21913
  return makeCuts(args, deps);
20691
21914
  case "democut_wait_jobs":
20692
21915
  return waitJobs(args, deps);
21916
+ case "democut_estimate_cut_image":
21917
+ return estimateCutImage(args, deps);
21918
+ case "democut_make_cut_image":
21919
+ return makeCutImage(args, deps);
20693
21920
  case "democut_set_cut_image":
20694
21921
  return setCutImage(args, deps);
20695
21922
  case "democut_select_cut_image":
@@ -20702,6 +21929,12 @@ function dispatch(name, args, deps = {}) {
20702
21929
  return getStoryboard(args, deps);
20703
21930
  case "democut_add_cut":
20704
21931
  return addCut(args, deps);
21932
+ case "democut_reorder_cuts":
21933
+ return reorderCuts(args, deps);
21934
+ case "democut_put_cut_draft":
21935
+ return putCutDraft(args, deps);
21936
+ case "democut_set_cut_edit":
21937
+ return setCutEdit(args, deps);
20705
21938
  case "democut_duplicate_cut":
20706
21939
  return duplicateCut(args, deps);
20707
21940
  case "democut_delete_cut":