democut 0.6.24 → 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.
- package/dist/cli.js +319 -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.
|
|
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.",
|
|
@@ -18580,7 +18746,7 @@ var GENERATED_TOOLS = [
|
|
|
18580
18746
|
},
|
|
18581
18747
|
{
|
|
18582
18748
|
"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, democut_put_cut_draft.",
|
|
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.",
|
|
18584
18750
|
"inputSchema": {
|
|
18585
18751
|
"type": "object",
|
|
18586
18752
|
"properties": {
|
|
@@ -20332,6 +20498,44 @@ var GENERATED_TOOLS = [
|
|
|
20332
20498
|
"idempotentHint": true,
|
|
20333
20499
|
"openWorldHint": false
|
|
20334
20500
|
}
|
|
20501
|
+
},
|
|
20502
|
+
{
|
|
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.",
|
|
20505
|
+
"inputSchema": {
|
|
20506
|
+
"type": "object",
|
|
20507
|
+
"properties": {
|
|
20508
|
+
"slug": {
|
|
20509
|
+
"type": "string",
|
|
20510
|
+
"description": "\uD504\uB85C\uC81D\uD2B8 \uC2AC\uB7EC\uADF8(list_projects)"
|
|
20511
|
+
},
|
|
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"
|
|
20524
|
+
}
|
|
20525
|
+
},
|
|
20526
|
+
"required": [
|
|
20527
|
+
"slug",
|
|
20528
|
+
"cut_ids",
|
|
20529
|
+
"rev"
|
|
20530
|
+
],
|
|
20531
|
+
"additionalProperties": false
|
|
20532
|
+
},
|
|
20533
|
+
"annotations": {
|
|
20534
|
+
"readOnlyHint": false,
|
|
20535
|
+
"destructiveHint": false,
|
|
20536
|
+
"idempotentHint": true,
|
|
20537
|
+
"openWorldHint": false
|
|
20538
|
+
}
|
|
20335
20539
|
}
|
|
20336
20540
|
];
|
|
20337
20541
|
|
|
@@ -21001,6 +21205,85 @@ function estimateCuts(a = {}, deps = {}) {
|
|
|
21001
21205
|
return { text: lines.join("\n") };
|
|
21002
21206
|
});
|
|
21003
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
|
+
}
|
|
21004
21287
|
function cutImageLine(cut) {
|
|
21005
21288
|
const n = cut.images?.length ?? 0;
|
|
21006
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).`;
|
|
@@ -21260,6 +21543,34 @@ function addCut(a = {}, deps = {}) {
|
|
|
21260
21543
|
});
|
|
21261
21544
|
}
|
|
21262
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
|
+
}
|
|
21263
21574
|
function putCutDraft(a = {}, deps = {}) {
|
|
21264
21575
|
return guarded(READ_ONLY, async () => {
|
|
21265
21576
|
const slug = needSlug(a);
|
|
@@ -21602,6 +21913,10 @@ function dispatch(name, args, deps = {}) {
|
|
|
21602
21913
|
return makeCuts(args, deps);
|
|
21603
21914
|
case "democut_wait_jobs":
|
|
21604
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);
|
|
21605
21920
|
case "democut_set_cut_image":
|
|
21606
21921
|
return setCutImage(args, deps);
|
|
21607
21922
|
case "democut_select_cut_image":
|
|
@@ -21614,6 +21929,8 @@ function dispatch(name, args, deps = {}) {
|
|
|
21614
21929
|
return getStoryboard(args, deps);
|
|
21615
21930
|
case "democut_add_cut":
|
|
21616
21931
|
return addCut(args, deps);
|
|
21932
|
+
case "democut_reorder_cuts":
|
|
21933
|
+
return reorderCuts(args, deps);
|
|
21617
21934
|
case "democut_put_cut_draft":
|
|
21618
21935
|
return putCutDraft(args, deps);
|
|
21619
21936
|
case "democut_set_cut_edit":
|