democut 1.0.85 → 1.0.86
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +282 -33
- 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 = "1.0.
|
|
6919
|
+
var VERSION = "1.0.86";
|
|
6920
6920
|
|
|
6921
6921
|
// src/device-flow.ts
|
|
6922
6922
|
var DeviceFlowError = class extends Error {
|
|
@@ -9643,7 +9643,7 @@ var GENERATED_TOOLS = [
|
|
|
9643
9643
|
},
|
|
9644
9644
|
{
|
|
9645
9645
|
"name": "democut_select_character_photo",
|
|
9646
|
-
"description": "\
|
|
9646
|
+
"description": "\uC0AC\uC9C4\uC744 \uC120\uD0DD\uD55C\uB2E4(\uC774\uBBF8 \uB9CC\uB4E0 \uCEF7\uC5D0\uB294 \uC18C\uAE09\uD558\uC9C0 \uC54A\uB294\uB2E4).",
|
|
9647
9647
|
"inputSchema": {
|
|
9648
9648
|
"type": "object",
|
|
9649
9649
|
"properties": {
|
|
@@ -9806,7 +9806,7 @@ var GENERATED_TOOLS = [
|
|
|
9806
9806
|
},
|
|
9807
9807
|
{
|
|
9808
9808
|
"name": "democut_make_character_photo",
|
|
9809
|
-
"description": "\uC544\uBC14\uD0C0 \uC0AC\uC9C4\uC744 AI \uB85C \uB9CC\uB4E0\uB2E4(\uCCAD\uAD6C\xB7\uC0C1\uD55C). \uCE90\uB9AD\uD130 \uC2DC\uD2B8\uB3C4 \uAC19\uC740 \uC7A1\uC5D0\uC11C \uB9CC\uB4E4\uC5B4 \uADF8 \uC0AC\uC9C4\uC5D0 \uB2E8\uB2E4. \uB9CC\uB4E0 \uC0AC\uC9C4\uC774 \
|
|
9809
|
+
"description": "\uC544\uBC14\uD0C0 \uC0AC\uC9C4\uC744 AI \uB85C \uB9CC\uB4E0\uB2E4(\uCCAD\uAD6C\xB7\uC0C1\uD55C). \uCE90\uB9AD\uD130 \uC2DC\uD2B8\uB3C4 \uAC19\uC740 \uC7A1\uC5D0\uC11C \uB9CC\uB4E4\uC5B4 \uADF8 \uC0AC\uC9C4\uC5D0 \uB2E8\uB2E4. \uB9CC\uB4E0 \uC0AC\uC9C4\uC774 \uC120\uD0DD\uB41C\uB2E4. \uD06C\uAE30\uB294 \uC815\uC0AC\uAC01 \uACE0\uC815. prompt \uC5D0\uB294 \uB204\uAD6C\uC778\uC9C0(\uB098\uC774\xB7\uC131\uBCC4\xB7\uCD9C\uC2E0\xB7\uBA38\uB9AC\xB7\uC637 \uB4F1)\uB97C \uC801\uB294\uB2E4 \u2014 \uC0AC\uC2E4\uC801\uC778 \uC778\uBB3C \uC0AC\uC9C4\uC758 \uD2C0\uC740 \uC11C\uBC84\uAC00 \uC50C\uC6B4\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.",
|
|
9810
9810
|
"inputSchema": {
|
|
9811
9811
|
"type": "object",
|
|
9812
9812
|
"properties": {
|
|
@@ -10928,6 +10928,144 @@ var GENERATED_TOOLS = [
|
|
|
10928
10928
|
"openWorldHint": false
|
|
10929
10929
|
}
|
|
10930
10930
|
},
|
|
10931
|
+
{
|
|
10932
|
+
"name": "democut_list_music",
|
|
10933
|
+
"description": "\uC774 \uD504\uB85C\uC81D\uD2B8\uC758 \uACE1 \uBAA9\uB85D(0\uC6D0) \u2014 \uBC30\uACBD\uC74C\uC545\uC73C\uB85C \uACE0\uB97C \uC218 \uC788\uB294 \uACE1. \uACE1\uB9C8\uB2E4 asset_id\xB7\uC774\uB984\xB7\uAE38\uC774(duration_ms)\xB7\uBBF8\uB9AC\uB4E3\uAE30 \uC8FC\uC18C\uC640 \uADF8 \uACE1\uC744 \uAE50 \uCEF7(used_by)\uC744 \uC900\uB2E4. \uCEF7\uC5D0 \uAE4C\uB294 \uAC83\uC740 democut_set_cut_bgm \uC774\uB2E4. \uB2E4\uC74C \uD638\uCD9C: democut_set_cut_bgm.",
|
|
10934
|
+
"inputSchema": {
|
|
10935
|
+
"type": "object",
|
|
10936
|
+
"properties": {
|
|
10937
|
+
"slug": {
|
|
10938
|
+
"type": "string",
|
|
10939
|
+
"description": "\uD504\uB85C\uC81D\uD2B8 \uC2AC\uB7EC\uADF8(democut_list_projects)"
|
|
10940
|
+
}
|
|
10941
|
+
},
|
|
10942
|
+
"required": [
|
|
10943
|
+
"slug"
|
|
10944
|
+
],
|
|
10945
|
+
"additionalProperties": false
|
|
10946
|
+
},
|
|
10947
|
+
"outputSchema": {
|
|
10948
|
+
"type": "object",
|
|
10949
|
+
"properties": {
|
|
10950
|
+
"music": {
|
|
10951
|
+
"type": "array"
|
|
10952
|
+
}
|
|
10953
|
+
},
|
|
10954
|
+
"required": [
|
|
10955
|
+
"music"
|
|
10956
|
+
]
|
|
10957
|
+
},
|
|
10958
|
+
"annotations": {
|
|
10959
|
+
"readOnlyHint": true,
|
|
10960
|
+
"destructiveHint": false,
|
|
10961
|
+
"idempotentHint": true,
|
|
10962
|
+
"openWorldHint": false
|
|
10963
|
+
}
|
|
10964
|
+
},
|
|
10965
|
+
{
|
|
10966
|
+
"name": "democut_add_music",
|
|
10967
|
+
"description": "\uC62C\uB824 \uB454 \uC18C\uB9AC \uC790\uC0B0(democut_upload_asset kind=audio \u2014 wav\xB7mp3\xB7m4a)\uC744 \uC774 \uD504\uB85C\uC81D\uD2B8\uC758 \uACE1\uC73C\uB85C \uB4F1\uB85D\uD55C\uB2E4(0\uC6D0). title \uC740 \uC0AC\uB78C\uC774 \uACE1\uC744 \uAD6C\uBCC4\uD558\uB294 \uC774\uB984\uC774\uB2E4. \uC774\uBBF8 \uB4F1\uB85D\uB41C \uACE1\uC774\uBA74 \uC774\uB984\uB9CC \uBC14\uAFBC\uB2E4. \uB4F1\uB85D\uD558\uC9C0 \uC54A\uC740 \uC790\uC0B0\uB3C4 democut_set_cut_bgm \uC5D0 \uC4F8 \uC218 \uC788\uC9C0\uB9CC, \uB4F1\uB85D\uD574 \uB450\uC5B4\uC57C \uD654\uBA74\uC758 \uACE1 \uBAA9\uB85D\uC5D0 \uBCF4\uC778\uB2E4. \uB2E4\uC74C \uD638\uCD9C: democut_set_cut_bgm.",
|
|
10968
|
+
"inputSchema": {
|
|
10969
|
+
"type": "object",
|
|
10970
|
+
"properties": {
|
|
10971
|
+
"slug": {
|
|
10972
|
+
"type": "string",
|
|
10973
|
+
"description": "\uD504\uB85C\uC81D\uD2B8 \uC2AC\uB7EC\uADF8(democut_list_projects)"
|
|
10974
|
+
},
|
|
10975
|
+
"asset_id": {
|
|
10976
|
+
"description": "upload_asset(kind=audio)\uAC00 \uC900 \uC790\uC0B0 id",
|
|
10977
|
+
"minLength": 1,
|
|
10978
|
+
"type": "string"
|
|
10979
|
+
},
|
|
10980
|
+
"title": {
|
|
10981
|
+
"default": "",
|
|
10982
|
+
"description": "\uACE1\uC758 \uC774\uB984(\uC120\uD0DD). \uC0AC\uB78C\uC774 \uACE1\uC744 \uAD6C\uBCC4\uD558\uB294 \uB370\uB9CC \uC4F4\uB2E4",
|
|
10983
|
+
"maxLength": 100,
|
|
10984
|
+
"type": "string"
|
|
10985
|
+
}
|
|
10986
|
+
},
|
|
10987
|
+
"required": [
|
|
10988
|
+
"slug",
|
|
10989
|
+
"asset_id"
|
|
10990
|
+
],
|
|
10991
|
+
"additionalProperties": false
|
|
10992
|
+
},
|
|
10993
|
+
"outputSchema": {
|
|
10994
|
+
"type": "object",
|
|
10995
|
+
"properties": {
|
|
10996
|
+
"asset_id": {
|
|
10997
|
+
"type": "string"
|
|
10998
|
+
},
|
|
10999
|
+
"title": {
|
|
11000
|
+
"type": "string"
|
|
11001
|
+
},
|
|
11002
|
+
"duration_ms": {},
|
|
11003
|
+
"peaks": {
|
|
11004
|
+
"type": "array"
|
|
11005
|
+
},
|
|
11006
|
+
"url": {},
|
|
11007
|
+
"used_by": {
|
|
11008
|
+
"type": "array"
|
|
11009
|
+
}
|
|
11010
|
+
},
|
|
11011
|
+
"required": [
|
|
11012
|
+
"asset_id"
|
|
11013
|
+
]
|
|
11014
|
+
},
|
|
11015
|
+
"annotations": {
|
|
11016
|
+
"readOnlyHint": false,
|
|
11017
|
+
"destructiveHint": false,
|
|
11018
|
+
"idempotentHint": false,
|
|
11019
|
+
"openWorldHint": false
|
|
11020
|
+
}
|
|
11021
|
+
},
|
|
11022
|
+
{
|
|
11023
|
+
"name": "democut_remove_music",
|
|
11024
|
+
"description": "\uACE1\uC744 \uC774 \uD504\uB85C\uC81D\uD2B8\uC758 \uBAA9\uB85D\uC5D0\uC11C \uBE80\uB2E4(0\uC6D0). \uADF8 \uACE1\uC744 \uBC30\uACBD\uC74C\uC545\uC73C\uB85C \uAE50 \uCEF7\uC774 \uC788\uC73C\uBA74 409 ASSET_IN_USE \uB85C \uB9C9\uACE0 data.cut_ids \uB85C \uC5B4\uB290 \uCEF7\uC778\uC9C0 \uB9D0\uD55C\uB2E4 \u2014 \uC0AC\uC6A9\uC790\uC5D0\uAC8C \uADF8 \uCEF7\uB4E4\uC758 \uC74C\uC545\uC774 \uBE60\uC9C4\uB2E4\uB294 \uAC83\uC744 \uC54C\uB9AC\uACE0 \uB3D9\uC758\uB97C \uBC1B\uC740 \uB4A4 force=true \uB85C \uB2E4\uC2DC \uBD80\uB974\uBA74 \uADF8 \uCEF7\uB4E4\uC758 \uC9C0\uC815\uC744 \uBE44\uC6B0\uACE0 \uBE80\uB2E4. \uBE80 \uB4A4 \uC544\uBB34\uB3C4 \uC4F0\uC9C0 \uC54A\uB294 \uC790\uC0B0\uC740 \uD568\uAED8 \uC9C0\uC6B4\uB2E4. \uC774\uBBF8 \uB9CC\uB4E0 \uC644\uC131\uBCF8\uC740 \uADF8\uB300\uB85C\uB2E4.",
|
|
11025
|
+
"inputSchema": {
|
|
11026
|
+
"type": "object",
|
|
11027
|
+
"properties": {
|
|
11028
|
+
"slug": {
|
|
11029
|
+
"type": "string",
|
|
11030
|
+
"description": "\uD504\uB85C\uC81D\uD2B8 \uC2AC\uB7EC\uADF8(democut_list_projects)"
|
|
11031
|
+
},
|
|
11032
|
+
"asset_id": {
|
|
11033
|
+
"type": "string",
|
|
11034
|
+
"description": "\uC790\uC0B0 id(ast_\u2026)"
|
|
11035
|
+
},
|
|
11036
|
+
"force": {
|
|
11037
|
+
"default": false,
|
|
11038
|
+
"description": "\uC4F0\uB294 \uCEF7\uC774 \uC788\uC5B4\uB3C4 \uBE80\uB2E4 \u2014 \uADF8 \uCEF7\uB4E4\uC758 \uBC30\uACBD\uC74C\uC545 \uC9C0\uC815\uC744 \uBE44\uC6B4\uB2E4. \uC5C6\uC73C\uBA74 409 \uB85C \uB9C9\uACE0 \uB204\uAC00 \uC4F0\uB294\uC9C0 \uB9D0\uD55C\uB2E4",
|
|
11039
|
+
"type": "boolean"
|
|
11040
|
+
}
|
|
11041
|
+
},
|
|
11042
|
+
"required": [
|
|
11043
|
+
"slug",
|
|
11044
|
+
"asset_id"
|
|
11045
|
+
],
|
|
11046
|
+
"additionalProperties": false
|
|
11047
|
+
},
|
|
11048
|
+
"outputSchema": {
|
|
11049
|
+
"type": "object",
|
|
11050
|
+
"properties": {
|
|
11051
|
+
"deleted": {
|
|
11052
|
+
"type": "boolean"
|
|
11053
|
+
},
|
|
11054
|
+
"cleared_cut_ids": {
|
|
11055
|
+
"type": "array"
|
|
11056
|
+
},
|
|
11057
|
+
"asset_deleted": {
|
|
11058
|
+
"type": "boolean"
|
|
11059
|
+
}
|
|
11060
|
+
}
|
|
11061
|
+
},
|
|
11062
|
+
"annotations": {
|
|
11063
|
+
"readOnlyHint": false,
|
|
11064
|
+
"destructiveHint": true,
|
|
11065
|
+
"idempotentHint": true,
|
|
11066
|
+
"openWorldHint": false
|
|
11067
|
+
}
|
|
11068
|
+
},
|
|
10931
11069
|
{
|
|
10932
11070
|
"name": "democut_reorder_cuts",
|
|
10933
11071
|
"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. \uB2E4\uC74C \uD638\uCD9C: democut_make_export.",
|
|
@@ -11192,7 +11330,7 @@ var GENERATED_TOOLS = [
|
|
|
11192
11330
|
},
|
|
11193
11331
|
{
|
|
11194
11332
|
"name": "democut_get_silence",
|
|
11195
|
-
"description": "\
|
|
11333
|
+
"description": "\uC120\uD0DD\uB41C \uBC84\uC804\uC758 \uBB34\uC74C \uAD6C\uAC04 \uBBF8\uB9AC\uBCF4\uAE30(threshold_ms).",
|
|
11196
11334
|
"inputSchema": {
|
|
11197
11335
|
"type": "object",
|
|
11198
11336
|
"properties": {
|
|
@@ -11245,7 +11383,7 @@ var GENERATED_TOOLS = [
|
|
|
11245
11383
|
},
|
|
11246
11384
|
{
|
|
11247
11385
|
"name": "democut_download_project",
|
|
11248
|
-
"description": "\uD504\uB85C\uC81D\uD2B8 \uC804\uCCB4(\
|
|
11386
|
+
"description": "\uD504\uB85C\uC81D\uD2B8 \uC804\uCCB4(\uC120\uD0DD\uB41C \uBC84\uC804 \uC0B0\uCD9C\uBB3C) zip \uC11C\uBA85 URL.",
|
|
11249
11387
|
"inputSchema": {
|
|
11250
11388
|
"type": "object",
|
|
11251
11389
|
"properties": {
|
|
@@ -12011,7 +12149,7 @@ var GENERATED_TOOLS = [
|
|
|
12011
12149
|
},
|
|
12012
12150
|
{
|
|
12013
12151
|
"name": "democut_delete_thumbnail",
|
|
12014
|
-
"description": "\uC378\uB124\uC77C \uD6C4\uBCF4\uB97C \uBE80\uB2E4(0\uC6D0). \
|
|
12152
|
+
"description": "\uC378\uB124\uC77C \uD6C4\uBCF4\uB97C \uBE80\uB2E4(0\uC6D0). \uC120\uD0DD\uB3FC \uC788\uC5C8\uC73C\uBA74 \uC120\uD0DD\uC774 \uBE44\uACE0, \uB2E4\uB978 \uACF3\uC774 \uC4F0\uC9C0 \uC54A\uB294 \uC774\uBBF8\uC9C0 \uD30C\uC77C\uC740 \uD568\uAED8 \uC9C0\uC6B4\uB2E4.",
|
|
12015
12153
|
"inputSchema": {
|
|
12016
12154
|
"type": "object",
|
|
12017
12155
|
"properties": {
|
|
@@ -12514,7 +12652,7 @@ var GENERATED_TOOLS = [
|
|
|
12514
12652
|
},
|
|
12515
12653
|
{
|
|
12516
12654
|
"name": "democut_select_cut_version",
|
|
12517
|
-
"description": "\
|
|
12655
|
+
"description": "\uC120\uD0DD\uB41C \uBC84\uC804\uC744 \uBC14\uAFBC\uB2E4(0\uC6D0). draft_spec \uC740 \uADF8\uB300\uB85C\uB2E4.",
|
|
12518
12656
|
"inputSchema": {
|
|
12519
12657
|
"type": "object",
|
|
12520
12658
|
"properties": {
|
|
@@ -12619,7 +12757,7 @@ var GENERATED_TOOLS = [
|
|
|
12619
12757
|
},
|
|
12620
12758
|
{
|
|
12621
12759
|
"name": "democut_delete_cut_version",
|
|
12622
|
-
"description": "\uBC84\uC804 \uD558\uB098\uB97C \uC9C0\uC6B4\uB2E4(\
|
|
12760
|
+
"description": "\uBC84\uC804 \uD558\uB098\uB97C \uC9C0\uC6B4\uB2E4(\uC120\uD0DD\uB3FC \uC788\uC73C\uBA74 \uB2E4\uB978 \uBC84\uC804\uC73C\uB85C \uC62E\uAE34 \uB4A4).",
|
|
12623
12761
|
"inputSchema": {
|
|
12624
12762
|
"type": "object",
|
|
12625
12763
|
"properties": {
|
|
@@ -13006,6 +13144,24 @@ var TOOL_META = {
|
|
|
13006
13144
|
"method": "PUT",
|
|
13007
13145
|
"path": "/api/projects/{slug}/cuts/{cut_id}/bgm"
|
|
13008
13146
|
},
|
|
13147
|
+
"democut_list_music": {
|
|
13148
|
+
"cost": "none",
|
|
13149
|
+
"group": "storyboard",
|
|
13150
|
+
"method": "GET",
|
|
13151
|
+
"path": "/api/projects/{slug}/music"
|
|
13152
|
+
},
|
|
13153
|
+
"democut_add_music": {
|
|
13154
|
+
"cost": "none",
|
|
13155
|
+
"group": "storyboard",
|
|
13156
|
+
"method": "POST",
|
|
13157
|
+
"path": "/api/projects/{slug}/music"
|
|
13158
|
+
},
|
|
13159
|
+
"democut_remove_music": {
|
|
13160
|
+
"cost": "none",
|
|
13161
|
+
"group": "storyboard",
|
|
13162
|
+
"method": "DELETE",
|
|
13163
|
+
"path": "/api/projects/{slug}/music/{asset_id}"
|
|
13164
|
+
},
|
|
13009
13165
|
"democut_reorder_cuts": {
|
|
13010
13166
|
"cost": "none",
|
|
13011
13167
|
"group": "storyboard",
|
|
@@ -14213,7 +14369,7 @@ function makeCutImage(a = {}, deps = {}) {
|
|
|
14213
14369
|
`\uCEF7 \uC774\uBBF8\uC9C0\uB97C \uB9CC\uB4DC\uB294 \uC911\uC785\uB2C8\uB2E4 \u2014 ${out4.job_id}`,
|
|
14214
14370
|
// ★★ 상한임을 제출 자리에서도 말한다 — 견적을 건너뛴 호출자는 이 문장만 본다.
|
|
14215
14371
|
`\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.`,
|
|
14216
|
-
"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 \
|
|
14372
|
+
"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 \uC120\uD0DD\uB418\uC5B4 \uB2E4\uC74C \uC601\uC0C1\uC758 \uCCAB \uD504\uB808\uC784\uC774 \uB429\uB2C8\uB2E4."
|
|
14217
14373
|
].join("\n"),
|
|
14218
14374
|
structured: callableStructured(out4)
|
|
14219
14375
|
};
|
|
@@ -14223,7 +14379,7 @@ function cutImageLine(cut) {
|
|
|
14223
14379
|
const n = cut.images?.length ?? 0;
|
|
14224
14380
|
const firstFrame = (cut.mode ?? "ai_video") === "ai_video";
|
|
14225
14381
|
if (!n) return `${cut.id}: \uC774\uBBF8\uC9C0 \uC5C6\uC74C${firstFrame ? " \u2014 \uB2E4\uC74C \uC601\uC0C1\uC740 \uD14D\uC2A4\uD2B8\uB9CC\uC73C\uB85C \uB9CC\uB4ED\uB2C8\uB2E4(t2v)." : "."}`;
|
|
14226
|
-
let cover = cut.current_image_id ? `\
|
|
14382
|
+
let cover = cut.current_image_id ? `\uC120\uD0DD\uB41C \uC774\uBBF8\uC9C0 ${cut.current_image_id}` : "\uC120\uD0DD\uB41C \uC774\uBBF8\uC9C0 \uC5C6\uC74C";
|
|
14227
14383
|
if (cut.current_image_id) {
|
|
14228
14384
|
const current = cut.images?.find((i) => i.id === cut.current_image_id);
|
|
14229
14385
|
if (current?.model) cover += ` (${current.model}${current.quality ? ` \xB7 ${current.quality}` : ""})`;
|
|
@@ -14264,7 +14420,7 @@ function setCutImage(a = {}, deps = {}) {
|
|
|
14264
14420
|
);
|
|
14265
14421
|
const added = out4.images?.[out4.images.length - 1];
|
|
14266
14422
|
const first = added && out4.current_image_id === added.id && (out4.images?.length ?? 0) === 1;
|
|
14267
|
-
return { text: `\uCEF7 \uC774\uBBF8\uC9C0\uB97C \uCD94\uAC00\uD588\uC2B5\uB2C8\uB2E4. ${cutImageLine(out4)}${first ? " \uCCAB \uC774\uBBF8\uC9C0\uB77C \
|
|
14423
|
+
return { text: `\uCEF7 \uC774\uBBF8\uC9C0\uB97C \uCD94\uAC00\uD588\uC2B5\uB2C8\uB2E4. ${cutImageLine(out4)}${first ? " \uCCAB \uC774\uBBF8\uC9C0\uB77C \uC120\uD0DD\uD588\uC2B5\uB2C8\uB2E4." : ""}`, structured: callableStructured(out4) };
|
|
14268
14424
|
});
|
|
14269
14425
|
}
|
|
14270
14426
|
function selectCutImage(a = {}, deps = {}) {
|
|
@@ -14289,7 +14445,7 @@ function selectCutImage(a = {}, deps = {}) {
|
|
|
14289
14445
|
{ method: "PUT", body: { image_id: imageId } },
|
|
14290
14446
|
deps
|
|
14291
14447
|
);
|
|
14292
|
-
const head = imageId === null ? "\uCCAB \uC7A5\uBA74 \uC9C0\uC815\uC744 \uBE44\uC6E0\uC2B5\uB2C8\uB2E4." : "\
|
|
14448
|
+
const head = imageId === null ? "\uCCAB \uC7A5\uBA74 \uC9C0\uC815\uC744 \uBE44\uC6E0\uC2B5\uB2C8\uB2E4." : "\uCEF7 \uC774\uBBF8\uC9C0\uB97C \uC120\uD0DD\uD588\uC2B5\uB2C8\uB2E4.";
|
|
14293
14449
|
const draft = out4.mode === "ai_video" ? " \uCD08\uC548\uC758 image_asset_id \uAC00 \uC774 \uC120\uD0DD\uACFC \uAC19\uC2B5\uB2C8\uB2E4. \uC9C0\uC815\uC774 \uBC14\uB00C\uC5C8\uB2E4\uBA74 \uD504\uB85C\uC81D\uD2B8 rev \uAC00 \uC62C\uB790\uC73C\uB2C8 \uB2E4\uC74C \uD3B8\uC9D1 \uC804\uC5D0 democut_get_storyboard \uB85C rev \uB97C \uB2E4\uC2DC \uC77D\uC73C\uC138\uC694." : "";
|
|
14294
14450
|
return { text: `${head} ${cutImageLine(out4)}${draft} \uC774\uBBF8 \uB9CC\uB4E0 \uBC84\uC804\uC740 \uADF8\uB300\uB85C\uC785\uB2C8\uB2E4.`, structured: callableStructured(out4) };
|
|
14295
14451
|
});
|
|
@@ -14487,7 +14643,7 @@ function listCuts(a = {}, deps = {}) {
|
|
|
14487
14643
|
structured: callableStructured(out4)
|
|
14488
14644
|
};
|
|
14489
14645
|
}
|
|
14490
|
-
const lines = [`\uCEF7 ${cuts.length}\uAC1C (\uC5F0\uACB0 \uC21C\uC11C) \u2014 id [\uC0C1\uD0DC] \uBC29\uC2DD \xB7 \uC81C\uBAA9 \xB7 \
|
|
14646
|
+
const lines = [`\uCEF7 ${cuts.length}\uAC1C (\uC5F0\uACB0 \uC21C\uC11C) \u2014 id [\uC0C1\uD0DC] \uBC29\uC2DD \xB7 \uC81C\uBAA9 \xB7 \uC120\uD0DD\uB41C \uBC84\uC804 \xB7 \uB9C9\uD78C \uC774\uC720`];
|
|
14491
14647
|
lines.push(...listing(cuts.map(cutLine)));
|
|
14492
14648
|
lines.push(callableToolNames("\uC0C1\uC138\xB7\uBC84\uC804\xB7\uB0B4\uB824\uBC1B\uAE30 \uC8FC\uC18C\uB294 get_cut, \uC21C\uC11C\xB7rev \uB294 get_storyboard."));
|
|
14493
14649
|
return { text: lines.join("\n"), structured: callableStructured(out4) };
|
|
@@ -14525,7 +14681,7 @@ function getStoryboard(a = {}, deps = {}) {
|
|
|
14525
14681
|
function cutLine(cut) {
|
|
14526
14682
|
const bits = [`${cut.id} [${cut.state}] ${cut.mode}`];
|
|
14527
14683
|
if (cut.title) bits.push(`\u300C${cut.title}\u300D`);
|
|
14528
|
-
if (cut.current_version != null) bits.push(
|
|
14684
|
+
if (cut.current_version != null) bits.push(`v${cut.current_version} \xB7 \uC120\uD0DD\uB428`);
|
|
14529
14685
|
if (cut.dirty_fields?.length) bits.push(`\uB2EC\uB77C\uC9C4 \uD544\uB4DC: ${cut.dirty_fields.join(", ")}`);
|
|
14530
14686
|
if (cut.estimated_cost_krw != null) bits.push(`\uC608\uC0C1 ${krw(cut.estimated_cost_krw)}`);
|
|
14531
14687
|
if (cut.blocked_reason) bits.push(`\uB9C9\uD798: ${callableToolNames(cut.blocked_reason)}`);
|
|
@@ -14781,18 +14937,105 @@ function setCutBgm(a = {}, deps = {}) {
|
|
|
14781
14937
|
deps
|
|
14782
14938
|
);
|
|
14783
14939
|
} catch (e) {
|
|
14784
|
-
|
|
14785
|
-
|
|
14786
|
-
isError: true,
|
|
14787
|
-
text: "\uC774 \uC11C\uBC84\uC5D0\uB294 \uC544\uC9C1 \uBC30\uACBD\uC74C\uC545 \uC9C0\uC815\uC774 \uC5C6\uC2B5\uB2C8\uB2E4 \u2014 CLI \uAC00 \uC11C\uBC84\uBCF4\uB2E4 \uBA3C\uC800 \uC62C\uB77C\uAC00 \uC0DD\uAE30\uB294 \uC77C\uC2DC\uC801\uC778 \uCC28\uC774\uC785\uB2C8\uB2E4.\n\uC2AC\uB7EC\uADF8\xB7\uCEF7\xB7\uACE1\uC740 \uBB38\uC81C\uAC00 \uC544\uB2C8\uB2C8 \uACE0\uCE58\uC9C0 \uB9C8\uC138\uC694. \uC11C\uBC84\uAC00 \uBC30\uD3EC\uB41C \uB4A4 \uAC19\uC740 \uAC12\uC73C\uB85C \uB2E4\uC2DC \uBD80\uB974\uBA74 \uB429\uB2C8\uB2E4."
|
|
14788
|
-
};
|
|
14789
|
-
}
|
|
14940
|
+
const notYet = routeNotDeployed(e, "\uBC30\uACBD\uC74C\uC545 \uC9C0\uC815\uC774", "\uC2AC\uB7EC\uADF8\xB7\uCEF7\xB7\uACE1\uC740");
|
|
14941
|
+
if (notYet) return notYet;
|
|
14790
14942
|
throw e;
|
|
14791
14943
|
}
|
|
14792
14944
|
const note = cut.bgm != null ? BGM_NOTE : BGM_CLEARED_NOTE;
|
|
14793
14945
|
return { text: [cutLine(cut), note].join("\n"), structured: callableStructured(cut) };
|
|
14794
14946
|
});
|
|
14795
14947
|
}
|
|
14948
|
+
function routeNotDeployed(e, what, values) {
|
|
14949
|
+
if (!(e instanceof ApiError) || e.status !== 404 || e.code !== `HTTP_404`) return null;
|
|
14950
|
+
return {
|
|
14951
|
+
isError: true,
|
|
14952
|
+
text: `\uC774 \uC11C\uBC84\uC5D0\uB294 \uC544\uC9C1 ${what} \uC5C6\uC2B5\uB2C8\uB2E4 \u2014 CLI \uAC00 \uC11C\uBC84\uBCF4\uB2E4 \uBA3C\uC800 \uC62C\uB77C\uAC00 \uC0DD\uAE30\uB294 \uC77C\uC2DC\uC801\uC778 \uCC28\uC774\uC785\uB2C8\uB2E4.
|
|
14953
|
+
${values} \uBB38\uC81C\uAC00 \uC544\uB2C8\uB2C8 \uACE0\uCE58\uC9C0 \uB9C8\uC138\uC694. \uC11C\uBC84\uAC00 \uBC30\uD3EC\uB41C \uB4A4 \uAC19\uC740 \uAC12\uC73C\uB85C \uB2E4\uC2DC \uBD80\uB974\uBA74 \uB429\uB2C8\uB2E4.`
|
|
14954
|
+
};
|
|
14955
|
+
}
|
|
14956
|
+
async function musicRequest(run2) {
|
|
14957
|
+
try {
|
|
14958
|
+
return await run2();
|
|
14959
|
+
} catch (e) {
|
|
14960
|
+
const notYet = routeNotDeployed(e, "\uACE1 \uBAA9\uB85D \uAE30\uB2A5\uC774", "\uC2AC\uB7EC\uADF8\uC640 \uACE1\uC740");
|
|
14961
|
+
if (notYet) return notYet;
|
|
14962
|
+
throw e;
|
|
14963
|
+
}
|
|
14964
|
+
}
|
|
14965
|
+
var isToolResult = (v) => typeof v === "object" && v !== null && "isError" in v && "text" in v;
|
|
14966
|
+
function musicLine(m) {
|
|
14967
|
+
const seconds = m.duration_ms ? `${(m.duration_ms / 1e3).toFixed(1)}\uCD08` : "\uAE38\uC774 \uBBF8\uC815";
|
|
14968
|
+
const used = m.used_by && m.used_by.length ? ` \xB7 \uC4F0\uB294 \uCEF7 ${m.used_by.length}\uAC1C(${m.used_by.join(", ")})` : "";
|
|
14969
|
+
return `- ${m.asset_id} \u300C${m.title || "\uC774\uB984 \uC5C6\uC74C"}\u300D ${seconds}${used}`;
|
|
14970
|
+
}
|
|
14971
|
+
function slimMusic(m) {
|
|
14972
|
+
const { peaks: _peaks, ...rest } = m;
|
|
14973
|
+
return rest;
|
|
14974
|
+
}
|
|
14975
|
+
function listMusic(a = {}, deps = {}) {
|
|
14976
|
+
return guarded(READ_ONLY, async () => {
|
|
14977
|
+
const slug = needSlug(a);
|
|
14978
|
+
if (typeof slug !== "string") return slug;
|
|
14979
|
+
const base = resolveBaseUrl(deps.baseUrl);
|
|
14980
|
+
const out4 = await musicRequest(() => apiRequest(base, projectPath(slug, "/music"), {}, deps));
|
|
14981
|
+
if (isToolResult(out4)) return out4;
|
|
14982
|
+
const music = out4.music ?? [];
|
|
14983
|
+
const slim = callableStructured({ music: music.map(slimMusic) });
|
|
14984
|
+
if (music.length === 0) {
|
|
14985
|
+
return {
|
|
14986
|
+
text: callableToolNames(
|
|
14987
|
+
"\uC774 \uD504\uB85C\uC81D\uD2B8\uC5D0\uB294 \uB4F1\uB85D\uB41C \uACE1\uC774 \uC5C6\uC2B5\uB2C8\uB2E4. \uC18C\uB9AC \uD30C\uC77C\uC744 democut_upload_asset(kind=audio)\uB85C \uC62C\uB9B0 \uB4A4 democut_add_music \uC73C\uB85C \uB4F1\uB85D\uD558\uC138\uC694."
|
|
14988
|
+
),
|
|
14989
|
+
structured: slim
|
|
14990
|
+
};
|
|
14991
|
+
}
|
|
14992
|
+
return {
|
|
14993
|
+
text: callableToolNames([`\uACE1 ${music.length}\uAC1C \u2014 democut_set_cut_bgm \uC758 bgm.asset_id \uB85C \uC501\uB2C8\uB2E4.`, ...music.map(musicLine)].join("\n")),
|
|
14994
|
+
structured: slim
|
|
14995
|
+
};
|
|
14996
|
+
});
|
|
14997
|
+
}
|
|
14998
|
+
function addMusic(a = {}, deps = {}) {
|
|
14999
|
+
return guarded(READ_ONLY, async () => {
|
|
15000
|
+
const slug = needSlug(a);
|
|
15001
|
+
if (typeof slug !== "string") return slug;
|
|
15002
|
+
const assetId = (a.asset_id ?? "").trim();
|
|
15003
|
+
if (!assetId) return { isError: true, text: callableToolNames("asset_id \uAC00 \uD544\uC694\uD569\uB2C8\uB2E4 \u2014 democut_upload_asset(kind=audio)\uAC00 \uC900 id \uC785\uB2C8\uB2E4.") };
|
|
15004
|
+
const base = resolveBaseUrl(deps.baseUrl);
|
|
15005
|
+
const body = { asset_id: assetId };
|
|
15006
|
+
if (typeof a.title === "string") body.title = a.title;
|
|
15007
|
+
const out4 = await musicRequest(() => apiRequest(base, projectPath(slug, "/music"), { method: "POST", body }, deps));
|
|
15008
|
+
if (isToolResult(out4)) return out4;
|
|
15009
|
+
return {
|
|
15010
|
+
text: callableToolNames(["\uACE1\uC744 \uB4F1\uB85D\uD588\uC2B5\uB2C8\uB2E4.", musicLine(out4), "\uCEF7\uC5D0 \uAE54\uB824\uBA74 democut_set_cut_bgm \uC5D0 \uC774 asset_id \uB97C \uB123\uC73C\uC138\uC694."].join("\n")),
|
|
15011
|
+
structured: callableStructured(slimMusic(out4))
|
|
15012
|
+
};
|
|
15013
|
+
});
|
|
15014
|
+
}
|
|
15015
|
+
function removeMusic(a = {}, deps = {}) {
|
|
15016
|
+
return guarded(READ_ONLY, async () => {
|
|
15017
|
+
const slug = needSlug(a);
|
|
15018
|
+
if (typeof slug !== "string") return slug;
|
|
15019
|
+
const assetId = (a.asset_id ?? "").trim();
|
|
15020
|
+
if (!assetId) return { isError: true, text: callableToolNames("asset_id \uAC00 \uD544\uC694\uD569\uB2C8\uB2E4 \u2014 democut_list_music \uC5D0\uC11C \uACE0\uB974\uC138\uC694.") };
|
|
15021
|
+
const base = resolveBaseUrl(deps.baseUrl);
|
|
15022
|
+
const q = a.force === true ? "?force=true" : "";
|
|
15023
|
+
const out4 = await musicRequest(() => apiRequest(
|
|
15024
|
+
base,
|
|
15025
|
+
projectPath(slug, `/music/${encodeURIComponent(assetId)}${q}`),
|
|
15026
|
+
{ method: "DELETE" },
|
|
15027
|
+
deps
|
|
15028
|
+
));
|
|
15029
|
+
if (isToolResult(out4)) return out4;
|
|
15030
|
+
const lines = ["\uACE1\uC744 \uBAA9\uB85D\uC5D0\uC11C \uBE90\uC2B5\uB2C8\uB2E4."];
|
|
15031
|
+
const cleared = out4.cleared_cut_ids ?? [];
|
|
15032
|
+
if (cleared.length) {
|
|
15033
|
+
lines.push(`\uBC30\uACBD\uC74C\uC545 \uC9C0\uC815\uC744 \uBE44\uC6B4 \uCEF7: ${cleared.join(", ")} \u2014 \uC774\uBBF8 \uB9CC\uB4E0 \uC644\uC131\uBCF8\uC5D0\uB294 \uC74C\uC545\uC774 \uB0A8\uC544 \uC788\uACE0 \uB2E4\uC74C \uC644\uC131\uBCF8\uBD80\uD130 \uBE60\uC9D1\uB2C8\uB2E4.`);
|
|
15034
|
+
}
|
|
15035
|
+
lines.push(out4.asset_deleted ? "\uC18C\uB9AC \uD30C\uC77C\uB3C4 \uC9C0\uC6E0\uC2B5\uB2C8\uB2E4." : "\uC18C\uB9AC \uD30C\uC77C\uC740 \uB2E4\uB978 \uACF3\uC774 \uC4F0\uACE0 \uC788\uC5B4 \uB0A8\uACBC\uC2B5\uB2C8\uB2E4.");
|
|
15036
|
+
return { text: lines.join("\n"), structured: callableStructured(out4) };
|
|
15037
|
+
});
|
|
15038
|
+
}
|
|
14796
15039
|
function setCutTitle(a = {}, deps = {}) {
|
|
14797
15040
|
return guarded(READ_ONLY, async () => {
|
|
14798
15041
|
const slug = needSlug(a);
|
|
@@ -14895,7 +15138,7 @@ function downloadProject(a = {}, deps = {}) {
|
|
|
14895
15138
|
if (typeof slug !== "string") return slug;
|
|
14896
15139
|
const base = resolveBaseUrl(deps.baseUrl);
|
|
14897
15140
|
const out4 = await apiRequest(base, projectPath(slug, "/export.zip"), {}, deps);
|
|
14898
|
-
const scope = "\uC21C\uC11C\uC5D0 \uB193\uC778 \uCEF7\uC758 \
|
|
15141
|
+
const scope = "\uC21C\uC11C\uC5D0 \uB193\uC778 \uCEF7\uC758 \uC120\uD0DD\uB41C \uBC84\uC804 \uC0B0\uCD9C\uBB3C\uB9CC \uB4E4\uC5B4 \uC788\uC2B5\uB2C8\uB2E4(\uC21C\uC11C\uC5D0\uC11C \uBE80 \uCEF7\xB7\uC544\uC9C1 \uB9CC\uB4E4\uC9C0 \uC54A\uC740 \uCEF7 \uC81C\uC678) \u2014 \uC774\uC5B4 \uBD99\uC778 \uC644\uC131\uBCF8\uC774 \uC544\uB2D9\uB2C8\uB2E4.";
|
|
14899
15142
|
if (a.output_path) {
|
|
14900
15143
|
await (deps.downloadImpl ? deps.downloadImpl(out4.url, a.output_path) : saveUrlToFile(out4.url, a.output_path, deps.fetchImpl ?? fetch));
|
|
14901
15144
|
return { text: `\uD504\uB85C\uC81D\uD2B8 zip \uC744 \uC800\uC7A5\uD588\uC2B5\uB2C8\uB2E4: ${a.output_path}
|
|
@@ -15071,7 +15314,7 @@ function selectCutVersion(a = {}, deps = {}) {
|
|
|
15071
15314
|
const base = resolveBaseUrl(deps.baseUrl);
|
|
15072
15315
|
const out4 = await apiRequest(base, projectPath(slug, `/cuts/${encodeURIComponent(cutId)}/current`), { method: "PUT", body: { version: Number(a.version) } }, deps);
|
|
15073
15316
|
const lines = [
|
|
15074
|
-
`\uCEF7 ${cutId} \
|
|
15317
|
+
`\uCEF7 ${cutId} \uC5D0\uC11C v${out4.current_version} \uC744 \uC120\uD0DD\uD588\uC2B5\uB2C8\uB2E4(0\uC6D0, \uB80C\uB354 \uC5C6\uC74C).`,
|
|
15075
15318
|
"\uC774 \uCEF7\uC774 \uC21C\uC11C\uC5D0 \uC788\uC73C\uBA74 \uB2E4\uC74C \uC644\uC131\uBCF8(democut_make_export)\uC774 \uC774 \uBC84\uC804\uC744 \uC774\uC5B4 \uBD99\uC785\uB2C8\uB2E4."
|
|
15076
15319
|
];
|
|
15077
15320
|
return { text: lines.join("\n"), structured: callableStructured(out4) };
|
|
@@ -15128,7 +15371,7 @@ function createFolder(a = {}, deps = {}) {
|
|
|
15128
15371
|
}
|
|
15129
15372
|
function characterLine(c) {
|
|
15130
15373
|
const photos = c.photos?.length ? `\uC0AC\uC9C4 ${c.photos.length}\uC7A5` : "\uC0AC\uC9C4 \uC5C6\uC74C";
|
|
15131
|
-
return `${c.name} [${c.id}] rev=${c.rev} \xB7 ${photos}${c.current_photo_id ? " (\
|
|
15374
|
+
return `${c.name} [${c.id}] rev=${c.rev} \xB7 ${photos}${c.current_photo_id ? " (\uC120\uD0DD\uB428)" : ""}`;
|
|
15132
15375
|
}
|
|
15133
15376
|
function listCharacters(_a3 = {}, deps = {}) {
|
|
15134
15377
|
return guarded(READ_ONLY, async () => {
|
|
@@ -15179,7 +15422,7 @@ function getCharacter(a = {}, deps = {}) {
|
|
|
15179
15422
|
const lines = [characterLine(out4)];
|
|
15180
15423
|
if (out4.voice_id) lines.push(` \uBCF4\uC774\uC2A4: ${out4.voice_id}`);
|
|
15181
15424
|
for (const p of out4.photos ?? []) {
|
|
15182
|
-
lines.push(` \uC0AC\uC9C4 ${p.seq}: ${p.asset_id} (${p.source})${p.id === out4.current_photo_id ? " \u2190 \
|
|
15425
|
+
lines.push(` \uC0AC\uC9C4 ${p.seq}: ${p.asset_id} (${p.source})${p.id === out4.current_photo_id ? " \u2190 \uC120\uD0DD\uB428" : ""}`);
|
|
15183
15426
|
}
|
|
15184
15427
|
return { text: lines.join("\n"), structured: callableStructured(out4) };
|
|
15185
15428
|
});
|
|
@@ -15353,7 +15596,7 @@ function makeCharacterPhoto(a = {}, deps = {}) {
|
|
|
15353
15596
|
text: [
|
|
15354
15597
|
`\uC544\uBC14\uD0C0 \uC0AC\uC9C4\uC744 \uB9CC\uB4DC\uB294 \uC911\uC785\uB2C8\uB2E4 \u2014 ${out4.job_id}`,
|
|
15355
15598
|
`\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.`,
|
|
15356
|
-
"democut_wait_jobs \uB85C \uB05D\uB098\uBA74 democut_get_character \uC758 photos \uC5D0 \uC0C8 \uC0AC\uC9C4\uC774 \uC0DD\uAE30\uACE0 \
|
|
15599
|
+
"democut_wait_jobs \uB85C \uB05D\uB098\uBA74 democut_get_character \uC758 photos \uC5D0 \uC0C8 \uC0AC\uC9C4\uC774 \uC0DD\uAE30\uACE0 \uC120\uD0DD\uB429\uB2C8\uB2E4. \uCE90\uB9AD\uD130 \uC2DC\uD2B8\uB3C4 \uD568\uAED8 \uB9CC\uB4E4\uC5B4 \uADF8 \uC0AC\uC9C4\uC758 sheet_asset_id \uC5D0 \uBD99\uC785\uB2C8\uB2E4(\uC2DC\uD2B8\uB9CC \uC2E4\uD328\uD558\uBA74 \uC0AC\uC9C4\uC740 \uB4E4\uC5B4\uC624\uACE0 \uC2DC\uD2B8 \uBAAB\uC740 \uB3CC\uB824\uB4DC\uB9BD\uB2C8\uB2E4 \u2014 \uC7A1 \uACB0\uACFC\uC758 sheet_skipped)."
|
|
15357
15600
|
].join("\n"),
|
|
15358
15601
|
structured: callableStructured(out4)
|
|
15359
15602
|
};
|
|
@@ -15378,7 +15621,7 @@ function selectCharacterPhoto(a = {}, deps = {}) {
|
|
|
15378
15621
|
deps
|
|
15379
15622
|
);
|
|
15380
15623
|
return {
|
|
15381
|
-
text: `\
|
|
15624
|
+
text: `\uC120\uD0DD\uB41C \uC0AC\uC9C4\uC744 \uBC14\uAFE8\uC2B5\uB2C8\uB2E4: ${characterLine(out4)} \u2014 \uC774\uBBF8 \uB9CC\uB4E0 \uCEF7\uC740 \uADF8\uB300\uB85C\uC785\uB2C8\uB2E4.`,
|
|
15382
15625
|
structured: callableStructured(out4)
|
|
15383
15626
|
};
|
|
15384
15627
|
});
|
|
@@ -15562,7 +15805,7 @@ function makeExport(a = {}, deps = {}) {
|
|
|
15562
15805
|
);
|
|
15563
15806
|
const lines = [
|
|
15564
15807
|
`\uC644\uC131\uBCF8\uC744 \uB9CC\uB4DC\uB294 \uC911\uC785\uB2C8\uB2E4 \u2014 ${out4.job_id} (${krw(out4.quote?.total_krw ?? 0)})`,
|
|
15565
|
-
"\uC21C\uC11C\uC5D0 \uB193\uC778 \uCEF7\uC758 \
|
|
15808
|
+
"\uC21C\uC11C\uC5D0 \uB193\uC778 \uCEF7\uC758 \uC120\uD0DD\uB41C \uBC84\uC804\uC744 \uADF8 \uC21C\uC11C\uB300\uB85C \uC774\uC5B4 \uBD99\uC774\uACE0 \uC55E\uB4A4 \uC790\uB974\uAE30\xB7\uBB34\uC74C \uC790\uB974\uAE30\uC640 \uC790\uB9C9\uC744 \uC785\uD799\uB2C8\uB2E4(\uC21C\uC11C\uC5D0\uC11C \uBE80 \uCEF7\uC740 \uC81C\uC678).",
|
|
15566
15809
|
"\uB2E4\uC74C \uD638\uCD9C: democut_wait_jobs \uB85C \uB05D\uB098\uBA74 democut_list_exports \uC5D0\uC11C \uBC88\uD638\uC640 \uB0B4\uB824\uBC1B\uAE30 \uC8FC\uC18C\uB97C \uBD05\uB2C8\uB2E4."
|
|
15567
15810
|
];
|
|
15568
15811
|
return { text: lines.join("\n"), structured: callableStructured(out4) };
|
|
@@ -15684,9 +15927,9 @@ function getExport(a = {}, deps = {}) {
|
|
|
15684
15927
|
const thumbs = out4.thumbnails ?? [];
|
|
15685
15928
|
if (thumbs.length > 0) {
|
|
15686
15929
|
lines.push(
|
|
15687
|
-
`\uC378\uB124\uC77C \uD6C4\uBCF4 ${thumbs.length}\uC7A5 \u2014 \
|
|
15930
|
+
`\uC378\uB124\uC77C \uD6C4\uBCF4 ${thumbs.length}\uC7A5 \u2014 \uC120\uD0DD\uB428 ${out4.selected_thumbnail_id ?? "(\uC5C6\uC74C)"}: ` + thumbs.map((t) => `${t.asset_id}${t.asset_id === out4.selected_thumbnail_id ? "\u2605" : ""}${t.url ? ` ${t.url}` : ""}`).join(" \xB7 ")
|
|
15688
15931
|
);
|
|
15689
|
-
lines.push("\
|
|
15932
|
+
lines.push("\uC120\uD0DD\uC744 \uBC14\uAFB8\uB824\uBA74 democut_select_thumbnail(asset_id).");
|
|
15690
15933
|
} else {
|
|
15691
15934
|
lines.push("\uC378\uB124\uC77C\uC740 \uC544\uC9C1 \uC5C6\uC2B5\uB2C8\uB2E4 \u2014 democut_make_thumbnails(\uC2A4\uD0C0\uC77C \uACE8\uB77C \uCCAD\uAD6C, \uBE44\uC6B0\uBA74 3\uC7A5) \uB610\uB294 democut_upload_asset \uB4A4 democut_select_thumbnail.");
|
|
15692
15935
|
}
|
|
@@ -15738,7 +15981,7 @@ function makeThumbnails(a = {}, deps = {}) {
|
|
|
15738
15981
|
const lines = [
|
|
15739
15982
|
`\uC644\uC131\uBCF8 #${number3} \uC758 \uC378\uB124\uC77C ${count}\uC7A5\uC744 \uB9CC\uB4DC\uB294 \uC911\uC785\uB2C8\uB2E4 \u2014 ${out4.job_id} (${krw(out4.quote?.total_krw ?? 0)}, \uC794\uC561\uC5D0\uC11C \uCC28\uAC10\uB410\uC2B5\uB2C8\uB2E4)`,
|
|
15740
15983
|
`\uC644\uC131\uBCF8 \uC601\uC0C1\uC758 \uD55C \uC7A5\uBA74\uC744 \uC694\uC57D\uD574 ${a.styles ? `\uACE0\uB978 \uC2A4\uD0C0\uC77C(${a.styles.join(", ")})` : "\uC11C\uB85C \uB2E4\uB978 \uC2A4\uD0C0\uC77C 3\uC7A5"}\uC744 \uB9CC\uB4ED\uB2C8\uB2E4. \uC2E4\uD328\uD55C \uC7A5\uB9CC \uD658\uBD88\uB418\uACE0 \uC131\uACF5\uD55C \uC7A5\uC740 \uB0A8\uC2B5\uB2C8\uB2E4.`,
|
|
15741
|
-
"\uB2E4\uC74C \uD638\uCD9C: democut_wait_jobs \uB85C \uB05D\uB098\uBA74 democut_get_export \uC758 thumbnails \uC5D0 \uD6C4\uBCF4\uC640 \uC8FC\uC18C\uAC00 \uC2E4\uB9AC\uACE0 \uCCAB \uC7A5\uC774 \
|
|
15984
|
+
"\uB2E4\uC74C \uD638\uCD9C: democut_wait_jobs \uB85C \uB05D\uB098\uBA74 democut_get_export \uC758 thumbnails \uC5D0 \uD6C4\uBCF4\uC640 \uC8FC\uC18C\uAC00 \uC2E4\uB9AC\uACE0 \uCCAB \uC7A5\uC774 \uC120\uD0DD\uB429\uB2C8\uB2E4. \uBC14\uAFB8\uB824\uBA74 democut_select_thumbnail."
|
|
15742
15985
|
];
|
|
15743
15986
|
return { text: lines.join("\n"), structured: callableStructured(out4) };
|
|
15744
15987
|
});
|
|
@@ -15764,7 +16007,7 @@ function selectThumbnail(a = {}, deps = {}) {
|
|
|
15764
16007
|
);
|
|
15765
16008
|
const thumbs = out4.thumbnails ?? [];
|
|
15766
16009
|
const chosen = thumbs.find((t) => t.asset_id === out4.selected_thumbnail_id);
|
|
15767
|
-
const lines = [`\uC644\uC131\uBCF8 #${out4.number} \uC758 \
|
|
16010
|
+
const lines = [`\uC644\uC131\uBCF8 #${out4.number} \uC758 \uC378\uB124\uC77C\uC744 ${out4.selected_thumbnail_id} \uB85C \uACE8\uB790\uC2B5\uB2C8\uB2E4(\uD6C4\uBCF4 ${thumbs.length}\uC7A5).`];
|
|
15768
16011
|
if (chosen?.url) lines.push(`\uBBF8\uB9AC\uBCF4\uAE30: ${chosen.url} (1\uC2DC\uAC04 \uC720\uD6A8)`);
|
|
15769
16012
|
return { text: lines.join("\n"), structured: callableStructured(out4) };
|
|
15770
16013
|
});
|
|
@@ -15779,7 +16022,7 @@ function deleteThumbnail(a = {}, deps = {}) {
|
|
|
15779
16022
|
if (!assetId) return { isError: true, text: "asset_id \uAC00 \uD544\uC694\uD569\uB2C8\uB2E4 \u2014 democut_get_export \uC758 thumbnails \uC5D0\uC11C \uACE0\uB974\uC138\uC694." };
|
|
15780
16023
|
const base = resolveBaseUrl(deps.baseUrl);
|
|
15781
16024
|
const out4 = await apiRequest(base, projectPath(slug, `/exports/${number3}/thumbnails/${encodeURIComponent(assetId)}`), { method: "DELETE" }, deps);
|
|
15782
|
-
const tail = out4.selected_thumbnail_id ? `\
|
|
16025
|
+
const tail = out4.selected_thumbnail_id ? `\uC120\uD0DD\uB41C \uC378\uB124\uC77C\uC740 ${out4.selected_thumbnail_id} \uC785\uB2C8\uB2E4.` : "\uC120\uD0DD\uC774 \uBE44\uC5C8\uC2B5\uB2C8\uB2E4 \u2014 democut_select_thumbnail \uB85C \uB2E4\uC2DC \uACE0\uB974\uC138\uC694.";
|
|
15783
16026
|
return {
|
|
15784
16027
|
text: `\uC644\uC131\uBCF8 #${number3} \uC5D0\uC11C \uC378\uB124\uC77C ${assetId} \uB97C \uBE90\uC2B5\uB2C8\uB2E4(\uB0A8\uC740 \uD6C4\uBCF4 ${out4.thumbnails?.length ?? 0}\uC7A5). ${tail}`,
|
|
15785
16028
|
structured: callableStructured(out4)
|
|
@@ -15831,7 +16074,7 @@ function publishYoutube(a = {}, deps = {}) {
|
|
|
15831
16074
|
const out4 = await apiRequest(base, projectPath(slug, `/exports/${number3}/publish`), { method: "POST", body: { privacy } }, deps);
|
|
15832
16075
|
const lines = [
|
|
15833
16076
|
`\uC644\uC131\uBCF8 #${number3} \uC744 \uC720\uD29C\uBE0C\uC5D0 \uC62C\uB9AC\uB294 \uC911\uC785\uB2C8\uB2E4 \u2014 ${out4.job_id} (0\uC6D0, \uACF5\uAC1C \uBC94\uC704 ${privacy})`,
|
|
15834
|
-
"\uC81C\uBAA9\xB7\uC124\uBA85\xB7\uD0DC\uADF8\uB294 \uC644\uC131\uBCF8\uC758 youtube_meta \uB97C, \uC378\uB124\uC77C\uC740 \
|
|
16077
|
+
"\uC81C\uBAA9\xB7\uC124\uBA85\xB7\uD0DC\uADF8\uB294 \uC644\uC131\uBCF8\uC758 youtube_meta \uB97C, \uC378\uB124\uC77C\uC740 \uC378\uB124\uC77C\uC744 \uC501\uB2C8\uB2E4(\uCC44\uB110 \uC778\uC99D\uC774 \uC5C6\uC73C\uBA74 \uC601\uC0C1\uB9CC \uC62C\uB77C\uAC11\uB2C8\uB2E4). \uB04A\uACA8\uB3C4 \uAC19\uC740 \uC138\uC158\uC73C\uB85C \uC774\uC5B4 \uC62C\uB9BD\uB2C8\uB2E4.",
|
|
15835
16078
|
"\uB2E4\uC74C \uD638\uCD9C: democut_wait_jobs \uB85C \uAE30\uB2E4\uB9B0 \uB4A4 democut_get_export \uB97C \uBCF4\uBA74 youtube \uC5D0 \uC8FC\uC18C(url)\uAC00 \uC2E4\uB9BD\uB2C8\uB2E4. \uAC19\uC740 \uC644\uC131\uBCF8\uC744 \uB2E4\uC2DC \uC62C\uB9AC\uC9C0 \uB9C8\uC138\uC694(\uB450 \uD3B8\uC774 \uB429\uB2C8\uB2E4)."
|
|
15836
16079
|
];
|
|
15837
16080
|
return { text: lines.join("\n"), structured: callableStructured(out4) };
|
|
@@ -15919,6 +16162,12 @@ function dispatch(name, args, deps = {}) {
|
|
|
15919
16162
|
return putCutDraft(args, deps);
|
|
15920
16163
|
case "democut_set_cut_edit":
|
|
15921
16164
|
return setCutEdit(args, deps);
|
|
16165
|
+
case "democut_list_music":
|
|
16166
|
+
return listMusic(args, deps);
|
|
16167
|
+
case "democut_add_music":
|
|
16168
|
+
return addMusic(args, deps);
|
|
16169
|
+
case "democut_remove_music":
|
|
16170
|
+
return removeMusic(args, deps);
|
|
15922
16171
|
case "democut_set_cut_bgm":
|
|
15923
16172
|
return setCutBgm(args, deps);
|
|
15924
16173
|
case "democut_set_cut_title":
|