democut 1.0.192 → 1.0.193

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 +15 -11
  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 = "1.0.192";
6919
+ var VERSION = "1.0.193";
6920
6920
 
6921
6921
  // src/device-flow.ts
6922
6922
  var DeviceFlowError = class extends Error {
@@ -15207,7 +15207,7 @@ function creditBalance(deps = {}) {
15207
15207
  );
15208
15208
  } else {
15209
15209
  lines.push(
15210
- "\uB3C8\uC774 \uB098\uAC00\uB294 \uC791\uC5C5 \uC804\uC5D0 \uACAC\uC801 \uB3C4\uAD6C(S1 \uC5D0\uC11C \uC81C\uACF5)\uB85C \uAE08\uC561\uC744 \uD655\uC778\uD558\uACE0 \uC774 \uC794\uC561\uACFC \uACAC\uC8FC\uC138\uC694. \uD06C\uB808\uB527\uC740 \uC6D0(KRW)\uC774\uACE0 \uACAC\uC801\uC740 USD \uB77C \uB2E8\uC704\uAC00 \uB2E4\uB985\uB2C8\uB2E4 \u2014 \uD655\uC2E4\uD558\uC9C0 \uC54A\uC73C\uBA74 \uC0AC\uC6A9\uC790\uC5D0\uAC8C \uB450 \uAC12\uC744 \uADF8\uB300\uB85C \uBCF4\uC5EC \uC8FC\uC138\uC694."
15210
+ "\uB3C8\uC774 \uB098\uAC00\uB294 \uC791\uC5C5 \uC804\uC5D0 \uACAC\uC801\uC744 \uBC1B\uC544 \uAE08\uC561\uC744 \uC774 \uC794\uC561\uACFC \uACAC\uC8FC\uC138\uC694. \uC794\uC561\uACFC \uACAC\uC801\uC740 \uBAA8\uB450 \uC6D0(KRW)\uC785\uB2C8\uB2E4."
15211
15211
  );
15212
15212
  }
15213
15213
  return { text: lines.join("\n"), structured: callableStructured(view) };
@@ -15399,7 +15399,7 @@ function listProjects(a = {}, deps = {}) {
15399
15399
  const shown = matched.slice(0, limit);
15400
15400
  if (shown.length === 0) {
15401
15401
  return {
15402
- text: query ? `'${query}' \uC640 \uC77C\uCE58\uD558\uB294 \uD504\uB85C\uC81D\uD2B8\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4. (\uC774 \uC6CC\uD06C\uC2A4\uD398\uC774\uC2A4\uC5D0 \uD504\uB85C\uC81D\uD2B8 ${total}\uAC1C) query \uB97C \uBE7C\uACE0 \uB2E4\uC2DC \uD638\uCD9C\uD574 \uC804\uCCB4\uB97C \uBCF4\uC138\uC694.` : "\uC774 \uC6CC\uD06C\uC2A4\uD398\uC774\uC2A4\uC5D0\uB294 \uC544\uC9C1 \uD504\uB85C\uC81D\uD2B8\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4. \uC0AC\uC6A9\uC790\uC5D0\uAC8C democut.ai \uC5D0\uC11C \uD504\uB85C\uC81D\uD2B8\uB97C \uD558\uB098 \uB9CC\uB4E0 \uB4A4 \uB2E4\uC2DC \uC694\uCCAD\uD574 \uB2EC\uB77C\uACE0 \uC54C\uB9AC\uC138\uC694 \u2014 \uB124\uAC00 \uC9C1\uC811 \uB9CC\uB4E4 \uC218\uB294 \uC5C6\uC2B5\uB2C8\uB2E4. \uC601\uC0C1 \uC0DD\uC131\uC740 \uADC0\uC18D\uC2DC\uD0AC \uD504\uB85C\uC81D\uD2B8\uAC00 \uC788\uC5B4\uC57C \uD569\uB2C8\uB2E4.",
15402
+ text: query ? `'${query}' \uC640 \uC77C\uCE58\uD558\uB294 \uD504\uB85C\uC81D\uD2B8\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4. (\uC774 \uC6CC\uD06C\uC2A4\uD398\uC774\uC2A4\uC5D0 \uD504\uB85C\uC81D\uD2B8 ${total}\uAC1C) query \uB97C \uBE7C\uACE0 \uB2E4\uC2DC \uD638\uCD9C\uD574 \uC804\uCCB4\uB97C \uBCF4\uC138\uC694.` : "\uC774 \uC6CC\uD06C\uC2A4\uD398\uC774\uC2A4\uC5D0\uB294 \uC544\uC9C1 \uD504\uB85C\uC81D\uD2B8\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4. \uCEF7\uACFC \uC644\uC131\uBCF8\uC740 \uD504\uB85C\uC81D\uD2B8 \uC548\uC5D0\uC11C \uB9CC\uB4E4\uBBC0\uB85C, \uC5B4\uB5A4 \uC774\uB984\uC73C\uB85C \uB9CC\uB4E4\uC9C0 \uC0AC\uC6A9\uC790\uC5D0\uAC8C \uBB3C\uC740 \uB4A4 democut_create_project \uB85C \uD558\uB098 \uB9CC\uB4DC\uC138\uC694.",
15403
15403
  // 빈 목록도 성공이다 — 광고한 outputSchema(ProjectListResponse)를 지켜 채운다.
15404
15404
  structured: callableStructured({ projects: [] })
15405
15405
  };
@@ -15434,7 +15434,7 @@ function getProject(a = {}, deps = {}) {
15434
15434
  `\uCEF7 ${view.cut_count ?? 0}\uAC1C \xB7 rev ${view.rev ?? 0} \xB7 \uC218\uC815 ${(view.updated_at ?? "").slice(0, 19)}`
15435
15435
  ];
15436
15436
  if (view.folder_id) lines.push(`\uD3F4\uB354: ${view.folder_id}`);
15437
- lines.push("", "\uC21C\uC11C\xB7\uC0C1\uD0DC\uB294 get_storyboard \uB85C, \uB9CC\uB4E4\uB824\uBA74 estimate_cuts \u2192 make_cuts \uB85C. If-Match \uAC00 \uD544\uC694\uD55C \uD3B8\uC9D1 \uB3C4\uAD6C\uC5D0\uB294 \uC704 rev \uB97C \uB123\uC73C\uC138\uC694.");
15437
+ lines.push("", "\uC21C\uC11C\xB7\uC0C1\uD0DC\uB294 get_storyboard \uB85C. If-Match \uAC00 \uD544\uC694\uD55C \uD3B8\uC9D1 \uB3C4\uAD6C\uC5D0\uB294 \uC704 rev \uB97C \uB123\uC73C\uC138\uC694.", "\uB9CC\uB4E4\uB824\uBA74 estimate_cuts \u2192 make_cuts \uB85C.");
15438
15438
  return {
15439
15439
  text: callableToolNames(lines.join("\n")),
15440
15440
  structured: callableStructured(view)
@@ -16120,7 +16120,7 @@ function listCuts(a = {}, deps = {}) {
16120
16120
  const cuts = out4.cuts ?? [];
16121
16121
  if (cuts.length === 0) {
16122
16122
  return {
16123
- text: callableToolNames("\uC774 \uD504\uB85C\uC81D\uD2B8\uC5D0\uB294 \uC544\uC9C1 \uCEF7\uC774 \uC5C6\uC2B5\uB2C8\uB2E4. \uB9CC\uB4E4\uB824\uBA74 estimate_cuts \u2192 make_cuts, \uC644\uC131 \uC601\uC0C1\uC744 \uC62C\uB9AC\uB824\uBA74 import_cut."),
16123
+ text: callableToolNames("\uC774 \uD504\uB85C\uC81D\uD2B8\uC5D0\uB294 \uC544\uC9C1 \uCEF7\uC774 \uC5C6\uC2B5\uB2C8\uB2E4.\n\uB9CC\uB4E4\uB824\uBA74 estimate_cuts \u2192 make_cuts.\n\uC644\uC131 \uC601\uC0C1\uC744 \uC62C\uB9AC\uB824\uBA74 import_cut."),
16124
16124
  structured: callableStructured(out4)
16125
16125
  };
16126
16126
  }
@@ -16600,7 +16600,9 @@ function duplicateCut(a = {}, deps = {}) {
16600
16600
  return {
16601
16601
  text: [
16602
16602
  `\uBCF5\uC81C\uB428 \u2014 ${cutLine(cut)}`,
16603
- callableToolNames("\uC0B0\uCD9C\uBB3C(\uBC84\uC804)\uC740 \uBCF5\uC81C\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4 \u2014 \uACC4\uD68D\uB9CC \uBCF5\uC0AC\uB410\uC73C\uB2C8 estimate_cuts \uB85C \uACAC\uC801\uC744 \uB0B4\uACE0 \uB9CC\uB4DC\uC138\uC694.")
16603
+ // 가져온 영상 컷은 만들지 않는다 — 영상을 다시 붙인다(원격 `DUPLICATE_IMPORTED_NOTE` 와 같은 문장).
16604
+ // 사실과 만들기 안내는 다른 줄이다(원격 `DUPLICATE_NOTE`·`DUPLICATE_MAKE_NOTE` 와 같은 문장).
16605
+ ...(cut.mode === "imported_video" ? ["\uC601\uC0C1(\uBC84\uC804)\uC740 \uBCF5\uC81C\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4 \u2014 \uBCF5\uC81C\uD55C \uCEF7\uC5D0 \uC601\uC0C1\uC744 \uBD99\uC774\uB824\uBA74 import_cut \uC744 \uBD80\uB974\uC138\uC694."] : ["\uC0B0\uCD9C\uBB3C(\uBC84\uC804)\uC740 \uBCF5\uC81C\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4 \u2014 \uACC4\uD68D\uB9CC \uBCF5\uC0AC\uD588\uC2B5\uB2C8\uB2E4.", "\uB9CC\uB4E4\uB824\uBA74 estimate_cuts \uB85C \uACAC\uC801\uC744 \uB0B4\uC138\uC694."]).map((line) => callableToolNames(line))
16604
16606
  ].join("\n"),
16605
16607
  structured: callableStructured(cut)
16606
16608
  };
@@ -16622,7 +16624,8 @@ function deleteCut(a = {}, deps = {}) {
16622
16624
  return {
16623
16625
  text: callableToolNames([
16624
16626
  `\uCEF7\uC744 \uC9C0\uC6E0\uC2B5\uB2C8\uB2E4 \u2014 ${cutId}`,
16625
- "\uCC38\uC870 \uC5C6\uB294 \uC790\uC0B0\uC740 \uD568\uAED8 \uC815\uB9AC\uB429\uB2C8\uB2E4(\uADF8\uB9CC\uD07C \uC0AC\uC6A9\uB7C9\uC774 \uC90D\uB2C8\uB2E4) \u2014 24\uC2DC\uAC04 \uC548\uC5D0\uB294 restore_asset \uC73C\uB85C \uB418\uC0B4\uB9B4 \uC218 \uC788\uC2B5\uB2C8\uB2E4."
16627
+ "\uCC38\uC870 \uC5C6\uB294 \uC790\uC0B0\uC740 \uD568\uAED8 \uC815\uB9AC\uB429\uB2C8\uB2E4(\uADF8\uB9CC\uD07C \uC0AC\uC6A9\uB7C9\uC774 \uC90D\uB2C8\uB2E4).",
16628
+ "24\uC2DC\uAC04 \uC548\uC5D0\uB294 restore_asset \uC73C\uB85C \uB418\uC0B4\uB9B4 \uC218 \uC788\uC2B5\uB2C8\uB2E4."
16626
16629
  ].join("\n")),
16627
16630
  structured: callableStructured(res)
16628
16631
  };
@@ -17786,19 +17789,20 @@ function getExport(a = {}, deps = {}) {
17786
17789
  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.");
17787
17790
  }
17788
17791
  if (out4.youtube_meta) {
17789
- lines.push(`\uC720\uD29C\uBE0C \uBA54\uD0C0: \u300C${out4.youtube_meta.title}\u300D \xB7 \uD0DC\uADF8 ${out4.youtube_meta.tags?.length ?? 0}\uAC1C \u2014 \uACE0\uCE58\uB824\uBA74 democut_set_youtube_meta.`);
17792
+ lines.push("\uC720\uD29C\uBE0C \uC81C\uBAA9\xB7\uC124\uBA85\xB7\uD0DC\uADF8 \u2014 \uACE0\uCE58\uB824\uBA74 \uC774 \uAC12\uC744 \uACE0\uCCD0 democut_set_youtube_meta \uC5D0 \uB123\uC73C\uC138\uC694:");
17793
+ lines.push(JSON.stringify(out4.youtube_meta));
17790
17794
  } else {
17791
- lines.push("\uC720\uD29C\uBE0C \uBA54\uD0C0\uB294 \uC544\uC9C1 \uC5C6\uC2B5\uB2C8\uB2E4 \u2014 democut_generate_youtube_meta(\uC18C\uC561) \uB610\uB294 democut_set_youtube_meta(0\uC6D0).");
17795
+ lines.push("\uC720\uD29C\uBE0C \uC81C\uBAA9\xB7\uC124\uBA85\uC740 \uC544\uC9C1 \uC5C6\uC2B5\uB2C8\uB2E4 \u2014 democut_generate_youtube_meta \uB85C \uCD08\uC548\uC744 \uBC1B\uAC70\uB098(\uC18C\uC561) democut_set_youtube_meta \uB85C \uC9C1\uC811 \uB123\uC73C\uC138\uC694(0\uC6D0).");
17792
17796
  }
17793
17797
  if (out4.youtube) {
17794
17798
  lines.push(`\uC720\uD29C\uBE0C\uC5D0 \uC62C\uB77C\uAC14\uC2B5\uB2C8\uB2E4(${out4.youtube.privacy}): ${out4.youtube.url} \u2014 \uB2E4\uC2DC \uC62C\uB9AC\uC9C0 \uB9C8\uC138\uC694(\uB450 \uD3B8\uC774 \uB429\uB2C8\uB2E4).`);
17795
17799
  } else if (out4.youtube_meta) {
17796
- lines.push("\uC720\uD29C\uBE0C\uC5D0 \uC62C\uB9AC\uB824\uBA74 democut_publish_youtube(0\uC6D0, \uC6CC\uD06C\uC2A4\uD398\uC774\uC2A4 \uACC4\uC815 \uD544\uC694).");
17800
+ lines.push("\uC720\uD29C\uBE0C\uC5D0 \uC62C\uB9AC\uB824\uBA74 democut_publish_youtube \uB97C \uBD80\uB974\uC138\uC694(0\uC6D0, \uC6CC\uD06C\uC2A4\uD398\uC774\uC2A4\uC5D0 \uC5F0\uACB0\uB41C \uC720\uD29C\uBE0C \uACC4\uC815\uC774 \uD544\uC694\uD569\uB2C8\uB2E4).");
17797
17801
  }
17798
17802
  if (out4.instagram) {
17799
17803
  lines.push(`Instagram \uC5D0 \uC62C\uB77C\uAC14\uC2B5\uB2C8\uB2E4(@${out4.instagram.username}): ${out4.instagram.url} \u2014 \uB2E4\uC2DC \uC62C\uB9AC\uC9C0 \uB9C8\uC138\uC694(\uB450 \uD3B8\uC774 \uB429\uB2C8\uB2E4).`);
17800
17804
  } else if (out4.youtube_meta) {
17801
- lines.push("Instagram \uB9B4\uC2A4\uB85C \uC62C\uB9AC\uB824\uBA74 democut_publish_instagram(0\uC6D0, \uCE90\uB9AD\uD130\uC5D0 \uC5F0\uACB0\uB41C \uACC4\uC815 \uD544\uC694, 3\uCD08~15\uBD84).");
17805
+ lines.push("Instagram \uB9B4\uC2A4\uB85C \uC62C\uB9AC\uB824\uBA74 democut_publish_instagram \uC744 \uBD80\uB974\uC138\uC694(0\uC6D0, \uCE90\uB9AD\uD130\uC5D0 \uC5F0\uACB0\uB41C \uACC4\uC815\uC774 \uD544\uC694\uD558\uACE0 3\uCD08~15\uBD84 \uC601\uC0C1\uB9CC \uB429\uB2C8\uB2E4).");
17802
17806
  }
17803
17807
  lines.push("\uC8FC\uC18C\uB294 1\uC2DC\uAC04 \uB3D9\uC548\uB9CC \uC720\uD6A8\uD569\uB2C8\uB2E4.");
17804
17808
  } else if (["queued", "running"].includes(out4.state)) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "democut",
3
- "version": "1.0.192",
3
+ "version": "1.0.193",
4
4
  "description": "DemoCut 에이전트 CLI — device flow 로그인(RFC 8628) + 영상 생성",
5
5
  "license": "MIT",
6
6
  "author": "InfoGrab",