democut 1.0.170 → 1.0.172
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 +214 -1
- 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.172";
|
|
6920
6920
|
|
|
6921
6921
|
// src/device-flow.ts
|
|
6922
6922
|
var DeviceFlowError = class extends Error {
|
|
@@ -9348,6 +9348,7 @@ var GENERATED_TOOLS = [
|
|
|
9348
9348
|
"ai_image",
|
|
9349
9349
|
"character",
|
|
9350
9350
|
"voice",
|
|
9351
|
+
"music",
|
|
9351
9352
|
"subtitle",
|
|
9352
9353
|
"motion",
|
|
9353
9354
|
"agent",
|
|
@@ -11551,6 +11552,144 @@ var GENERATED_TOOLS = [
|
|
|
11551
11552
|
"openWorldHint": false
|
|
11552
11553
|
}
|
|
11553
11554
|
},
|
|
11555
|
+
{
|
|
11556
|
+
"name": "democut_estimate_music",
|
|
11557
|
+
"description": "AI \uBC30\uACBD\uC74C\uC545 \uACAC\uC801(0\uC6D0). 5\uBD84 \uC0C1\uD55C\uC774\uACE0 \uC2E4\uC81C \uAE38\uC774\uB85C \uCC28\uC561\uC744 \uB3CC\uB824\uC900\uB2E4.",
|
|
11558
|
+
"inputSchema": {
|
|
11559
|
+
"type": "object",
|
|
11560
|
+
"properties": {
|
|
11561
|
+
"prompt": {
|
|
11562
|
+
"default": "",
|
|
11563
|
+
"description": "\uBD84\uC704\uAE30\xB7\uC7A5\uB974\xB7\uC545\uAE30\xB7\uBE60\uB974\uAE30",
|
|
11564
|
+
"maxLength": 2e3,
|
|
11565
|
+
"type": "string"
|
|
11566
|
+
},
|
|
11567
|
+
"instrumental": {
|
|
11568
|
+
"default": true,
|
|
11569
|
+
"description": "\uBCF4\uCEEC \uC5C6\uB294 \uC5F0\uC8FC\uACE1",
|
|
11570
|
+
"type": "boolean"
|
|
11571
|
+
}
|
|
11572
|
+
},
|
|
11573
|
+
"required": [],
|
|
11574
|
+
"additionalProperties": false
|
|
11575
|
+
},
|
|
11576
|
+
"outputSchema": {
|
|
11577
|
+
"type": "object",
|
|
11578
|
+
"properties": {
|
|
11579
|
+
"items": {
|
|
11580
|
+
"type": "array"
|
|
11581
|
+
},
|
|
11582
|
+
"notes": {
|
|
11583
|
+
"type": "array"
|
|
11584
|
+
},
|
|
11585
|
+
"total_krw": {
|
|
11586
|
+
"type": "integer"
|
|
11587
|
+
},
|
|
11588
|
+
"rate_version": {
|
|
11589
|
+
"type": "integer"
|
|
11590
|
+
},
|
|
11591
|
+
"balance_krw": {
|
|
11592
|
+
"type": "integer"
|
|
11593
|
+
},
|
|
11594
|
+
"balance_after_krw": {
|
|
11595
|
+
"type": "integer"
|
|
11596
|
+
},
|
|
11597
|
+
"can_afford": {
|
|
11598
|
+
"type": "boolean"
|
|
11599
|
+
},
|
|
11600
|
+
"mock": {
|
|
11601
|
+
"type": "boolean"
|
|
11602
|
+
},
|
|
11603
|
+
"provisional": {
|
|
11604
|
+
"type": "boolean"
|
|
11605
|
+
}
|
|
11606
|
+
},
|
|
11607
|
+
"required": [
|
|
11608
|
+
"total_krw",
|
|
11609
|
+
"rate_version",
|
|
11610
|
+
"balance_krw",
|
|
11611
|
+
"balance_after_krw",
|
|
11612
|
+
"can_afford"
|
|
11613
|
+
]
|
|
11614
|
+
},
|
|
11615
|
+
"annotations": {
|
|
11616
|
+
"readOnlyHint": false,
|
|
11617
|
+
"destructiveHint": false,
|
|
11618
|
+
"idempotentHint": false,
|
|
11619
|
+
"openWorldHint": false
|
|
11620
|
+
}
|
|
11621
|
+
},
|
|
11622
|
+
{
|
|
11623
|
+
"name": "democut_make_music",
|
|
11624
|
+
"description": "\uACE1\uC744 \uB9CC\uB4E0\uB2E4(\uCCAD\uAD6C\xB7\uC0C1\uD55C). \uACB0\uACFC\uC758 asset_id \uB97C democut_set_cut_bgm \uC5D0 \uC4F4\uB2E4. \uB3C8\uC774 \uB098\uAC00\uB294 \uB3C4\uAD6C\uB2E4 \u2014 \uC9DD\uC774 \uB418\uB294 estimate \uB3C4\uAD6C\uC758 \uAE08\uC561\uC5D0 \uC0AC\uC6A9\uC790\uAC00 \uB3D9\uC758\uD55C \uB4A4 confirmed_*_krw\xB7rate_version \uC744 \uADF8\uB300\uB85C \uB123\uC5B4\uB77C. \uC2E4\uD328\uD574\uB3C4 \uC7AC\uC81C\uCD9C\uD558\uC9C0 \uB9C8\uB77C(\uAC19\uC740 spec \uC774 \uD65C\uC131\uC774\uBA74 \uAE30\uC874 \uC7A1\uC744 \uB3CC\uB824\uC900\uB2E4 \u2014 deduplicated=true). \uB2E4\uC74C \uD638\uCD9C: democut_wait_jobs.",
|
|
11625
|
+
"inputSchema": {
|
|
11626
|
+
"type": "object",
|
|
11627
|
+
"properties": {
|
|
11628
|
+
"prompt": {
|
|
11629
|
+
"default": "",
|
|
11630
|
+
"description": "\uBD84\uC704\uAE30\xB7\uC7A5\uB974\xB7\uC545\uAE30\xB7\uBE60\uB974\uAE30",
|
|
11631
|
+
"maxLength": 2e3,
|
|
11632
|
+
"type": "string"
|
|
11633
|
+
},
|
|
11634
|
+
"instrumental": {
|
|
11635
|
+
"default": true,
|
|
11636
|
+
"description": "\uBCF4\uCEEC \uC5C6\uB294 \uC5F0\uC8FC\uACE1",
|
|
11637
|
+
"type": "boolean"
|
|
11638
|
+
},
|
|
11639
|
+
"title": {
|
|
11640
|
+
"default": "",
|
|
11641
|
+
"maxLength": 100,
|
|
11642
|
+
"type": "string"
|
|
11643
|
+
},
|
|
11644
|
+
"project_slug": {
|
|
11645
|
+
"anyOf": [
|
|
11646
|
+
{
|
|
11647
|
+
"type": "string"
|
|
11648
|
+
},
|
|
11649
|
+
{
|
|
11650
|
+
"type": "null"
|
|
11651
|
+
}
|
|
11652
|
+
],
|
|
11653
|
+
"default": null,
|
|
11654
|
+
"description": "\uADF8 \uD504\uB85C\uC81D\uD2B8 \uACE1 \uBAA9\uB85D\uC5D0\uB3C4 \uB123\uB294\uB2E4"
|
|
11655
|
+
},
|
|
11656
|
+
"confirmed_cost_krw": {
|
|
11657
|
+
"minimum": 0,
|
|
11658
|
+
"type": "integer"
|
|
11659
|
+
},
|
|
11660
|
+
"rate_version": {
|
|
11661
|
+
"minimum": 1,
|
|
11662
|
+
"type": "integer"
|
|
11663
|
+
}
|
|
11664
|
+
},
|
|
11665
|
+
"required": [
|
|
11666
|
+
"confirmed_cost_krw",
|
|
11667
|
+
"rate_version"
|
|
11668
|
+
],
|
|
11669
|
+
"additionalProperties": false
|
|
11670
|
+
},
|
|
11671
|
+
"outputSchema": {
|
|
11672
|
+
"type": "object",
|
|
11673
|
+
"properties": {
|
|
11674
|
+
"job_id": {
|
|
11675
|
+
"type": "string"
|
|
11676
|
+
},
|
|
11677
|
+
"quote": {},
|
|
11678
|
+
"next_calls": {
|
|
11679
|
+
"type": "array"
|
|
11680
|
+
}
|
|
11681
|
+
},
|
|
11682
|
+
"required": [
|
|
11683
|
+
"job_id"
|
|
11684
|
+
]
|
|
11685
|
+
},
|
|
11686
|
+
"annotations": {
|
|
11687
|
+
"readOnlyHint": false,
|
|
11688
|
+
"destructiveHint": false,
|
|
11689
|
+
"idempotentHint": false,
|
|
11690
|
+
"openWorldHint": false
|
|
11691
|
+
}
|
|
11692
|
+
},
|
|
11554
11693
|
{
|
|
11555
11694
|
"name": "democut_reorder_cuts",
|
|
11556
11695
|
"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.",
|
|
@@ -14024,6 +14163,18 @@ var TOOL_META = {
|
|
|
14024
14163
|
"method": "DELETE",
|
|
14025
14164
|
"path": "/api/projects/{slug}/music/{asset_id}"
|
|
14026
14165
|
},
|
|
14166
|
+
"democut_estimate_music": {
|
|
14167
|
+
"cost": "quote",
|
|
14168
|
+
"group": "storyboard",
|
|
14169
|
+
"method": "POST",
|
|
14170
|
+
"path": "/api/music/estimate"
|
|
14171
|
+
},
|
|
14172
|
+
"democut_make_music": {
|
|
14173
|
+
"cost": "charge",
|
|
14174
|
+
"group": "storyboard",
|
|
14175
|
+
"method": "POST",
|
|
14176
|
+
"path": "/api/music/generate"
|
|
14177
|
+
},
|
|
14027
14178
|
"democut_reorder_cuts": {
|
|
14028
14179
|
"cost": "none",
|
|
14029
14180
|
"group": "storyboard",
|
|
@@ -16832,6 +16983,64 @@ function makeCharacterPhoto(a = {}, deps = {}) {
|
|
|
16832
16983
|
};
|
|
16833
16984
|
});
|
|
16834
16985
|
}
|
|
16986
|
+
function musicBody(a) {
|
|
16987
|
+
return {
|
|
16988
|
+
prompt: (a.prompt ?? "").trim(),
|
|
16989
|
+
...typeof a.instrumental === "boolean" ? { instrumental: a.instrumental } : {}
|
|
16990
|
+
};
|
|
16991
|
+
}
|
|
16992
|
+
function estimateMusic(a = {}, deps = {}) {
|
|
16993
|
+
return guarded(READ_ONLY, async () => {
|
|
16994
|
+
if (!(a.prompt ?? "").trim()) return { isError: true, text: "prompt(\uACE1 \uC124\uBA85)\uAC00 \uD544\uC694\uD569\uB2C8\uB2E4." };
|
|
16995
|
+
const base = resolveBaseUrl(deps.baseUrl);
|
|
16996
|
+
const out4 = await apiRequest(base, "/api/music/estimate", { method: "POST", body: musicBody(a) }, deps);
|
|
16997
|
+
const item = out4.items?.[0];
|
|
16998
|
+
if (!item || item.blocked_reason) {
|
|
16999
|
+
return {
|
|
17000
|
+
text: `\uC9C0\uAE08\uC740 AI \uC74C\uC545\uC744 \uACAC\uC801\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4 \u2014 ${item?.blocked_reason ?? "\uACAC\uC801\uD560 \uD56D\uBAA9\uC774 \uC5C6\uC2B5\uB2C8\uB2E4"}`,
|
|
17001
|
+
structured: callableStructured(out4)
|
|
17002
|
+
};
|
|
17003
|
+
}
|
|
17004
|
+
const lines = [
|
|
17005
|
+
`AI \uC74C\uC545 \uACAC\uC801 (\uC694\uC728 v${out4.rate_version}) \u2014 \uBD80\uC791\uC6A9\uB3C4 \uACFC\uAE08\uB3C4 \uC5C6\uC2B5\uB2C8\uB2E4`,
|
|
17006
|
+
` ${krw(item.total_krw ?? 0)} \u2014 5\uBD84 \uC0C1\uD55C\uC785\uB2C8\uB2E4. \uAE38\uC774\uB294 \uBAA8\uB378\uC774 \uC815\uD558\uACE0, \uBC1B\uC740 \uACE1 \uAE38\uC774\uB9CC\uD07C \uC815\uC0B0\uD574 \uCC28\uC561\uC744 \uB3CC\uB824\uB4DC\uB9BD\uB2C8\uB2E4.`,
|
|
17007
|
+
`\uC794\uC561 ${krw(out4.balance_krw)} \u2192 \uB0A8\uC744 \uC794\uC561 ${krw(out4.balance_after_krw)}`,
|
|
17008
|
+
out4.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."
|
|
17009
|
+
];
|
|
17010
|
+
if (out4.mock) lines.push("(mock \uB2E8\uAC00\uC785\uB2C8\uB2E4 \u2014 \uC2E4\uC81C \uCCAD\uAD6C\uC640 \uB2E4\uB97C \uC218 \uC788\uC2B5\uB2C8\uB2E4.)");
|
|
17011
|
+
return { text: lines.join("\n"), structured: callableStructured(out4) };
|
|
17012
|
+
});
|
|
17013
|
+
}
|
|
17014
|
+
function makeMusic(a = {}, deps = {}) {
|
|
17015
|
+
return guarded(SUBMITTING, async () => {
|
|
17016
|
+
if (!(a.prompt ?? "").trim()) return { isError: true, text: "prompt(\uACE1 \uC124\uBA85)\uAC00 \uD544\uC694\uD569\uB2C8\uB2E4." };
|
|
17017
|
+
const base = resolveBaseUrl(deps.baseUrl);
|
|
17018
|
+
const out4 = await apiRequest(
|
|
17019
|
+
base,
|
|
17020
|
+
"/api/music/generate",
|
|
17021
|
+
{
|
|
17022
|
+
method: "POST",
|
|
17023
|
+
body: {
|
|
17024
|
+
...musicBody(a),
|
|
17025
|
+
...a.title ? { title: a.title } : {},
|
|
17026
|
+
...a.project_slug ? { project_slug: a.project_slug } : {},
|
|
17027
|
+
// ★ 동의는 **명시**다 — 없으면 서버가 0원 동의로 읽고 409 로 거부한다(그것이 옳다).
|
|
17028
|
+
confirmed_cost_krw: a.confirmed_cost_krw ?? 0,
|
|
17029
|
+
rate_version: a.rate_version
|
|
17030
|
+
}
|
|
17031
|
+
},
|
|
17032
|
+
deps
|
|
17033
|
+
);
|
|
17034
|
+
return {
|
|
17035
|
+
text: [
|
|
17036
|
+
`\uACE1\uC744 \uB9CC\uB4DC\uB294 \uC911\uC785\uB2C8\uB2E4 \u2014 ${out4.job_id}`,
|
|
17037
|
+
`\uCCAD\uAD6C ${krw(out4.quote?.total_krw ?? 0)} \u2014 5\uBD84 \uC0C1\uD55C\uC785\uB2C8\uB2E4. \uBC1B\uC740 \uACE1 \uAE38\uC774\uB9CC\uD07C \uC815\uC0B0\uD574 \uCC28\uC561\uC744 \uB3CC\uB824\uB4DC\uB9BD\uB2C8\uB2E4.`,
|
|
17038
|
+
"democut_wait_jobs \uB85C \uB05D\uB098\uBA74 \uACB0\uACFC\uC758 asset_id \uAC00 \uACE1\uC785\uB2C8\uB2E4 \u2014 democut_set_cut_bgm \uC5D0 \uADF8\uB300\uB85C \uC4F0\uC138\uC694." + (a.project_slug ? " \uADF8 \uD504\uB85C\uC81D\uD2B8\uC758 \uACE1 \uBAA9\uB85D\uC5D0\uB3C4 \uB4E4\uC5B4\uAC11\uB2C8\uB2E4." : "")
|
|
17039
|
+
].join("\n"),
|
|
17040
|
+
structured: callableStructured(out4)
|
|
17041
|
+
};
|
|
17042
|
+
});
|
|
17043
|
+
}
|
|
16835
17044
|
function selectCharacterPhoto(a = {}, deps = {}) {
|
|
16836
17045
|
return guarded(READ_ONLY, async () => {
|
|
16837
17046
|
const id = (a.character_id ?? "").trim();
|
|
@@ -17636,6 +17845,10 @@ function dispatch(name, args, deps = {}) {
|
|
|
17636
17845
|
return estimateCharacterPhoto(args, deps);
|
|
17637
17846
|
case "democut_make_character_photo":
|
|
17638
17847
|
return makeCharacterPhoto(args, deps);
|
|
17848
|
+
case "democut_estimate_music":
|
|
17849
|
+
return estimateMusic(args, deps);
|
|
17850
|
+
case "democut_make_music":
|
|
17851
|
+
return makeMusic(args, deps);
|
|
17639
17852
|
case "democut_delete_character_photo":
|
|
17640
17853
|
return deleteCharacterPhoto(args, deps);
|
|
17641
17854
|
case "democut_delete_character":
|