democut 1.0.58 → 1.0.60
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 +81 -5
- 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.60";
|
|
6920
6920
|
|
|
6921
6921
|
// src/device-flow.ts
|
|
6922
6922
|
var DeviceFlowError = class extends Error {
|
|
@@ -7510,7 +7510,7 @@ var GENERATED_TOOLS = [
|
|
|
7510
7510
|
},
|
|
7511
7511
|
{
|
|
7512
7512
|
"name": "democut_update_project",
|
|
7513
|
-
"description": "\uC81C\uBAA9\xB7\uD3F4\uB354\xB7\uAE30\uBCF8\uAC12\uC744 \uBC14\uAFBC\uB2E4. \uBE44\uC728\uC740 \uBABB \uBC14\uAFBC\uB2E4(RATIO_IMMUTABLE). \uC644\uC131\uBCF8 \uC790\uB9C9\uC758 \uBAA8\uC591\uC740 defaults.subtitle_style(\uC704\uCE58\xB7\uD06C\uAE30\xB7\uC0C9\xB7\uC678\uACFD\uC120\xB7\uBC30\uACBD \uBC15\uC2A4 \u2014 \uD1B5\uC9F8\uB85C \uAD50\uCCB4, null \uC774\uBA74 \uAE30\uBCF8 \uBAA8\uC591), \uBE44\uC728\uC774 \uB2E4\uB978 \uCEF7(\uC138\uB85C \uC644\uC131\uBCF8\uC758 \uAC00\uB85C \uC720\uD29C\uBE0C \uD074\uB9BD \uB4F1)\uC744 \uB9DE\uCD94\uB294 \uBC29\uBC95\uC740 defaults.framing(letterbox \uAC80\uC740 \uB760\xB7blur \uD750\uB9B0 \uBC30\uACBD\xB7crop \uAC00\uC6B4\uB370 \uC790\uB974\uAE30, null \uC774\uBA74 letterbox \u2014 \uC544\uBC14\uD0C0 PIP \uCEF7\uC740 crop \uC774\uC5B4\uB3C4 blur)\uC774\uACE0 \
|
|
7513
|
+
"description": "\uC81C\uBAA9\xB7\uD3F4\uB354\xB7\uAE30\uBCF8\uAC12\uC744 \uBC14\uAFBC\uB2E4. \uBE44\uC728\uC740 \uBABB \uBC14\uAFBC\uB2E4(RATIO_IMMUTABLE). \uC644\uC131\uBCF8 \uC790\uB9C9\uC758 \uBAA8\uC591\uC740 defaults.subtitle_style(\uC704\uCE58\xB7\uD06C\uAE30\xB7\uC0C9\xB7\uC678\uACFD\uC120\xB7\uBC30\uACBD \uBC15\uC2A4 \u2014 \uD1B5\uC9F8\uB85C \uAD50\uCCB4, null \uC774\uBA74 \uAE30\uBCF8 \uBAA8\uC591), \uBE44\uC728\uC774 \uB2E4\uB978 \uCEF7(\uC138\uB85C \uC644\uC131\uBCF8\uC758 \uAC00\uB85C \uC720\uD29C\uBE0C \uD074\uB9BD \uB4F1)\uC744 \uB9DE\uCD94\uB294 \uBC29\uBC95\uC740 defaults.framing(letterbox \uAC80\uC740 \uB760\xB7blur \uD750\uB9B0 \uBC30\uACBD\xB7crop \uAC00\uC6B4\uB370 \uC790\uB974\uAE30, null \uC774\uBA74 letterbox \u2014 \uC544\uBC14\uD0C0 PIP \uCEF7\uC740 crop \uC774\uC5B4\uB3C4 blur), \uC644\uC131\uBCF8 \uC790\uB9C9\uC758 \uC5B8\uC5B4\uB294 defaults.subtitle_lang(ko\xB7en, null \uC774\uBA74 ko \u2014 \uB2E4\uB978 \uB9D0\uC758 \uC790\uB9C9\uC740 \uC644\uC131\uBCF8\uC5D0\uC11C \uBC88\uC5ED\uD574 \uCCAD\uAD6C\uD55C\uB2E4)\uC774\uACE0 \uC14B \uB2E4 **\uC644\uC131\uBCF8\uB9CC \uB2E4\uC2DC \uB9CC\uB4E4\uBA74** \uBC18\uC601\uB41C\uB2E4(\uCEF7 \uC7AC\uB80C\uB354 \uBD88\uD544\uC694).",
|
|
7514
7514
|
"inputSchema": {
|
|
7515
7515
|
"type": "object",
|
|
7516
7516
|
"properties": {
|
|
@@ -11370,9 +11370,55 @@ var GENERATED_TOOLS = [
|
|
|
11370
11370
|
"openWorldHint": false
|
|
11371
11371
|
}
|
|
11372
11372
|
},
|
|
11373
|
+
{
|
|
11374
|
+
"name": "democut_get_audio_tracks",
|
|
11375
|
+
"description": "\uADF8 \uC720\uD29C\uBE0C \uD074\uB9BD \uCEF7\uC758 \uC74C\uC131 \uD2B8\uB799(\uC5B8\uC5B4) \uBAA9\uB85D \u2014 \uC6D0\uBCF8\uACFC \uC720\uD29C\uBE0C \uC790\uB3D9 \uB354\uBE59(0\uC6D0). \uC8FC\uC18C\uB294 \uCEF7 \uCD08\uC548(draft_spec.source.url)\uC5D0\uC11C \uC77D\uB294\uB2E4 \u2014 \uC5C6\uC73C\uBA74 422. \uACE0\uB978 lang \uC744 draft_spec.source.audio_lang \uC5D0 \uB123\uC5B4 democut_put_cut_draft \uD558\uBA74 \uADF8 \uC5B8\uC5B4\uC758 \uC74C\uC131\uC73C\uB85C \uB9CC\uB4E0\uB2E4(\uBE44\uC6B0\uBA74 \uC6D0\uBCF8). \uC74C\uC131\uC744 \uBC14\uAFB8\uBA74 \uB2E4\uB978 \uC601\uC0C1\uC774\uB77C \uC774\uBBF8 \uB9CC\uB4E0 \uCEF7\uC740 dirty \uAC00 \uB41C\uB2E4. \uD2B8\uB799\uC740 \uC601\uC0C1\uB9C8\uB2E4 \uB2E4\uB974\uB2E4 \u2014 \uC8FC\uC18C\uB97C \uBC14\uAFB8\uBA74 \uB2E4\uC2DC \uC77D\uC5B4\uB77C. \uB2E4\uC74C \uD638\uCD9C: democut_put_cut_draft, democut_estimate_cuts.",
|
|
11376
|
+
"inputSchema": {
|
|
11377
|
+
"type": "object",
|
|
11378
|
+
"properties": {
|
|
11379
|
+
"slug": {
|
|
11380
|
+
"type": "string",
|
|
11381
|
+
"description": "\uD504\uB85C\uC81D\uD2B8 \uC2AC\uB7EC\uADF8(democut_list_projects)"
|
|
11382
|
+
},
|
|
11383
|
+
"cut_id": {
|
|
11384
|
+
"type": "string",
|
|
11385
|
+
"description": "\uCEF7 id(cut_\u2026)"
|
|
11386
|
+
}
|
|
11387
|
+
},
|
|
11388
|
+
"required": [
|
|
11389
|
+
"slug",
|
|
11390
|
+
"cut_id"
|
|
11391
|
+
],
|
|
11392
|
+
"additionalProperties": false
|
|
11393
|
+
},
|
|
11394
|
+
"outputSchema": {
|
|
11395
|
+
"type": "object",
|
|
11396
|
+
"properties": {
|
|
11397
|
+
"cut_id": {
|
|
11398
|
+
"type": "string"
|
|
11399
|
+
},
|
|
11400
|
+
"url": {
|
|
11401
|
+
"type": "string"
|
|
11402
|
+
},
|
|
11403
|
+
"tracks": {
|
|
11404
|
+
"type": "array"
|
|
11405
|
+
}
|
|
11406
|
+
},
|
|
11407
|
+
"required": [
|
|
11408
|
+
"cut_id",
|
|
11409
|
+
"url"
|
|
11410
|
+
]
|
|
11411
|
+
},
|
|
11412
|
+
"annotations": {
|
|
11413
|
+
"readOnlyHint": true,
|
|
11414
|
+
"destructiveHint": false,
|
|
11415
|
+
"idempotentHint": true,
|
|
11416
|
+
"openWorldHint": false
|
|
11417
|
+
}
|
|
11418
|
+
},
|
|
11373
11419
|
{
|
|
11374
11420
|
"name": "democut_estimate_export",
|
|
11375
|
-
"description": "\uC644\uC131\uBCF8 \uACAC\uC801(0\uC6D0 \uD589).",
|
|
11421
|
+
"description": "\uC644\uC131\uBCF8 \uACAC\uC801(\uBD80\uC791\uC6A9 0). \uC774\uC5B4 \uBD99\uC774\uAE30\uB294 0\uC6D0\uC774\uACE0, \uD504\uB85C\uC81D\uD2B8 \uC790\uB9C9 \uC5B8\uC5B4(defaults.subtitle_lang, \uAE30\uBCF8 ko)\uC640 \uB2E4\uB978 \uB9D0\uC758 \uC790\uB9C9\uC774 \uC788\uC73C\uBA74 \u300C\uC790\uB9C9 \uBC88\uC5ED\u300D \uD589(subtitle:translate)\uC774 \uBD99\uB294\uB2E4 \u2014 \uCEF7 \uBC84\uC804\uB9C8\uB2E4 \uD55C \uBC88\uC774\uACE0 \uB2E4\uC2DC \uB9CC\uB4E4 \uB54C\uB294 \uC800\uC7A5\uB41C \uBC88\uC5ED\uC744 \uC368\uC11C \uD589\uC774 \uC5C6\uB2E4.",
|
|
11376
11422
|
"inputSchema": {
|
|
11377
11423
|
"type": "object",
|
|
11378
11424
|
"properties": {
|
|
@@ -11442,7 +11488,7 @@ var GENERATED_TOOLS = [
|
|
|
11442
11488
|
},
|
|
11443
11489
|
{
|
|
11444
11490
|
"name": "democut_make_export",
|
|
11445
|
-
"description": "\uC5F0\uACB0 \uC21C\uC11C\xB7\uC7AC\uC0DD \uAD6C\uAC04\uB300\uB85C \uC774\uC5B4 \uBD99\uC778 \uC644\uC131\uBCF8\uC744 \uB9CC\uB4E0\uB2E4(
|
|
11491
|
+
"description": "\uC5F0\uACB0 \uC21C\uC11C\xB7\uC7AC\uC0DD \uAD6C\uAC04\uB300\uB85C \uC774\uC5B4 \uBD99\uC778 \uC644\uC131\uBCF8\uC744 \uB9CC\uB4E0\uB2E4(\uC7A1). \uBAA8\uB4E0 \uC790\uB9C9\uC744 \uD504\uB85C\uC81D\uD2B8 \uC790\uB9C9 \uC5B8\uC5B4\uB85C \uC785\uD78C\uB2E4 \u2014 \uB2E4\uB978 \uB9D0\uC758 \uC790\uB9C9\uC740 \uBC88\uC5ED\uD574 \uC785\uD788\uACE0 \uACAC\uC801\uC758 \uC790\uB9C9 \uBC88\uC5ED \uD589\uC744 \uCCAD\uAD6C\uD55C\uB2E4(\uC2E4\uD328\uD558\uBA74 \uD658\uBD88). \uBC88\uC5ED\uC774 \uC5C6\uC73C\uBA74 0\uC6D0\uC774\uC9C0\uB9CC \uADF8\uB798\uB3C4 \uC81C\uCD9C\uC774 \uD544\uC694\uD55C \uB3C4\uAD6C\uB2E4: democut_estimate_export \uB85C \uACAC\uC801\uACFC rate_version \uC744 \uD655\uC778\uD55C \uB4A4 confirmed_cost_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 \u2014 \uADF8 \uC0AC\uC774 \uC2A4\uD1A0\uB9AC\uBCF4\uB4DC\uAC00 \uBC14\uB010 \uACBD\uC6B0\uB3C4 \uAC19\uB2E4). \uC2E4\uD328\uD574\uB3C4 \uC7AC\uC81C\uCD9C\uD558\uC9C0 \uB9C8\uB77C \u2014 \uAC19\uC740 \uC2A4\uB0C5\uC0F7\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, democut_list_exports.",
|
|
11446
11492
|
"inputSchema": {
|
|
11447
11493
|
"type": "object",
|
|
11448
11494
|
"properties": {
|
|
@@ -12801,6 +12847,12 @@ var TOOL_META = {
|
|
|
12801
12847
|
"method": "POST",
|
|
12802
12848
|
"path": "/api/projects/{slug}/cuts/{cut_id}/hook_scan/pick"
|
|
12803
12849
|
},
|
|
12850
|
+
"democut_get_audio_tracks": {
|
|
12851
|
+
"cost": "none",
|
|
12852
|
+
"group": "storyboard",
|
|
12853
|
+
"method": "GET",
|
|
12854
|
+
"path": "/api/projects/{slug}/cuts/{cut_id}/audio_tracks"
|
|
12855
|
+
},
|
|
12804
12856
|
"democut_estimate_export": {
|
|
12805
12857
|
"cost": "quote",
|
|
12806
12858
|
"group": "export",
|
|
@@ -15168,6 +15220,25 @@ function pickHookCandidate(a = {}, deps = {}) {
|
|
|
15168
15220
|
return { text: lines.join("\n"), structured: callableStructured(out4) };
|
|
15169
15221
|
});
|
|
15170
15222
|
}
|
|
15223
|
+
function getAudioTracks(a = {}, deps = {}) {
|
|
15224
|
+
return guarded(READ_ONLY, async () => {
|
|
15225
|
+
const slug = needSlug(a);
|
|
15226
|
+
if (typeof slug !== "string") return slug;
|
|
15227
|
+
const cutId = needCut(a);
|
|
15228
|
+
if (typeof cutId !== "string") return cutId;
|
|
15229
|
+
const base = resolveBaseUrl(deps.baseUrl);
|
|
15230
|
+
const out4 = await apiRequest(base, cutPath(slug, cutId, "/audio_tracks"), {}, deps);
|
|
15231
|
+
const tracks = out4.tracks ?? [];
|
|
15232
|
+
const original = tracks.find((t) => t.original)?.lang;
|
|
15233
|
+
const dubs = tracks.filter((t) => !t.original).map((t) => t.lang);
|
|
15234
|
+
const lines = tracks.length === 0 ? [`${cutId} \uC758 \uC601\uC0C1\uC5D0\uB294 \uC5B8\uC5B4\uAC00 \uD45C\uC2DC\uB41C \uC74C\uC131 \uD2B8\uB799\uC774 \uC5C6\uC2B5\uB2C8\uB2E4 \u2014 \uC6D0\uBCF8 \uC74C\uC131\uB9CC \uBC1B\uC744 \uC218 \uC788\uC2B5\uB2C8\uB2E4(audio_lang \uC744 \uBE44\uC6CC \uB450\uC138\uC694).`] : [
|
|
15235
|
+
`${cutId} \uC758 \uC74C\uC131 \uD2B8\uB799 ${tracks.length}\uAC1C \u2014 \uC6D0\uBCF8: ${original ?? "(\uD45C\uC2DC \uC5C6\uC74C)"}` + (dubs.length ? `, \uC790\uB3D9 \uB354\uBE59: ${dubs.join(", ")}` : ""),
|
|
15236
|
+
"\uC6D0\uBCF8\uC73C\uB85C \uB9CC\uB4E4\uB824\uBA74 draft_spec.source.audio_lang \uC744 \uBE44\uC6CC \uB450\uACE0, \uB2E4\uB978 \uC5B8\uC5B4\uB85C \uB9CC\uB4E4\uB824\uBA74 \uADF8 lang \uC744 \uB123\uC5B4 democut_put_cut_draft \uD558\uC138\uC694.",
|
|
15237
|
+
"\uB354\uBE59\uC740 \uC720\uD29C\uBE0C\uAC00 \uC790\uB3D9\uC73C\uB85C \uB9CC\uB4E0 \uC74C\uC131\uC774\uB77C \uD488\uC9C8\uC774 \uACE0\uB974\uC9C0 \uC54A\uC744 \uC218 \uC788\uC2B5\uB2C8\uB2E4. \uC790\uB9C9 \uC5B8\uC5B4\uB294 \uC74C\uC131\uC744 \uB530\uB77C \uC804\uC0AC\uB429\uB2C8\uB2E4."
|
|
15238
|
+
];
|
|
15239
|
+
return { text: lines.join("\n"), structured: callableStructured(out4) };
|
|
15240
|
+
});
|
|
15241
|
+
}
|
|
15171
15242
|
function estimateExport(a = {}, deps = {}) {
|
|
15172
15243
|
return guarded(READ_ONLY, async () => {
|
|
15173
15244
|
const slug = needSlug(a);
|
|
@@ -15179,7 +15250,7 @@ function estimateExport(a = {}, deps = {}) {
|
|
|
15179
15250
|
{ method: "POST", body: { quality: a.quality ?? "1080p" } },
|
|
15180
15251
|
deps
|
|
15181
15252
|
);
|
|
15182
|
-
const lines = [`\uC644\uC131\uBCF8 \uACAC\uC801 (\uC694\uC728 v${out4.rate_version}) \u2014 \uBD80\uC791\uC6A9\
|
|
15253
|
+
const lines = [`\uC644\uC131\uBCF8 \uACAC\uC801 (\uC694\uC728 v${out4.rate_version}) \u2014 \uBD80\uC791\uC6A9\uC774 \uC5C6\uACE0 \uACAC\uC801\uB9CC\uC73C\uB85C\uB294 \uCCAD\uAD6C\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4`];
|
|
15183
15254
|
for (const item of out4.items ?? []) {
|
|
15184
15255
|
const label = item.cut_id ?? "(\uC644\uC131\uBCF8)";
|
|
15185
15256
|
if (item.blocked_reason) {
|
|
@@ -15194,6 +15265,9 @@ function estimateExport(a = {}, deps = {}) {
|
|
|
15194
15265
|
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.",
|
|
15195
15266
|
"\uC774 total_krw\xB7rate_version \uC744 \uC0AC\uC6A9\uC790\uC5D0\uAC8C \uBCF4\uC5EC \uC8FC\uACE0 **\uADF8\uB300\uB85C** democut_make_export \uC5D0 \uB123\uC73C\uC138\uC694."
|
|
15196
15267
|
);
|
|
15268
|
+
if ((out4.items ?? []).some((it) => (it.rows ?? []).some((r) => r.key === "subtitle:translate"))) {
|
|
15269
|
+
lines.push("\uC790\uB9C9 \uBC88\uC5ED \uD589: \uD504\uB85C\uC81D\uD2B8 \uC790\uB9C9 \uC5B8\uC5B4(defaults.subtitle_lang)\uC640 \uB2E4\uB978 \uB9D0\uC758 \uC790\uB9C9\uC744 \uBC88\uC5ED\uD569\uB2C8\uB2E4(\uCEF7 \uBC84\uC804\uB9C8\uB2E4 \uD55C \uBC88, \uB2E4\uC74C\uC5D0\uB294 \uC800\uC7A5\uB41C \uBC88\uC5ED\uC744 \uC501\uB2C8\uB2E4).");
|
|
15270
|
+
}
|
|
15197
15271
|
if (out4.mock) lines.push("(mock \uB2E8\uAC00\uC785\uB2C8\uB2E4 \u2014 \uC2E4\uC81C \uCCAD\uAD6C\uC640 \uB2E4\uB97C \uC218 \uC788\uC2B5\uB2C8\uB2E4.)");
|
|
15198
15272
|
for (const note of out4.notes ?? []) {
|
|
15199
15273
|
lines.push(`\u258E ${note.cut_id ? `${note.cut_id}: ` : ""}${callableToolNames(note.message)}`);
|
|
@@ -15557,6 +15631,8 @@ function dispatch(name, args, deps = {}) {
|
|
|
15557
15631
|
return makeHookScan(args, deps);
|
|
15558
15632
|
case "democut_pick_hook_candidate":
|
|
15559
15633
|
return pickHookCandidate(args, deps);
|
|
15634
|
+
case "democut_get_audio_tracks":
|
|
15635
|
+
return getAudioTracks(args, deps);
|
|
15560
15636
|
case "democut_estimate_export":
|
|
15561
15637
|
return estimateExport(args, deps);
|
|
15562
15638
|
case "democut_make_export":
|