democut 1.0.116 → 1.0.117

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 +136 -2
  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.116";
6919
+ var VERSION = "1.0.117";
6920
6920
 
6921
6921
  // src/device-flow.ts
6922
6922
  var DeviceFlowError = class extends Error {
@@ -7512,7 +7512,7 @@ var GENERATED_TOOLS = [
7512
7512
  },
7513
7513
  {
7514
7514
  "name": "democut_update_project",
7515
- "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\uAC00\uC7A5\uC790\uB9AC\uC5D0\uC11C\uC758 \uB192\uC774 offset_pct\xB7\uD06C\uAE30(\uB2E8\uACC4 \uB610\uB294 size_pct 60~200)\xB7\uAE00\uAF34 font\xB7\uAD75\uAE30\xB7\uC0C9\xB7\uC678\uACFD\uC120\xB7\uBC30\uACBD \uBC15\uC2A4 \u2014 \uD1B5\uC9F8\uB85C \uAD50\uCCB4\uB77C democut_get_project \uAC00 \uBCF4\uC5EC \uC8FC\uB294 \uC9C0\uAE08 \uAC12\uC5D0\uC11C \uACE0\uCE60 \uCE78\uB9CC \uBC14\uAFD4 \uBCF4\uB0B8\uB2E4, \uD544\uB4DC\xB7\uAC12\uC740 \uC790\uC6D0 democut://guide \u300C\uC644\uC131\uBCF8 \uBAA8\uC591\u300D, 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), \u300CAI \uC0DD\uC131\u300D \uD45C\uC2DC\uB294 defaults.ai_label(true \uBA74 \uB85C\uACE0 \uBAA8\uC11C\uB9AC \uBC14\uAE65\uC5D0 \uC791\uAC8C, \uBB38\uAD6C \uACE0\uC815), \uC138\uB85C \uD504\uB85C\uC81D\uD2B8\uC758 \uB808\uD130\uBC15\uC2A4(\uBAA8\uB4E0 \uCEF7\uC5D0 1:1\xB716:9 \uCC3D \u2014 \uC544\uBC14\uD0C0 PIP \uCEF7\uC774 \uC788\uC73C\uBA74 \uBABB \uCF20\uB2E4)\uC640 \uD6C4\uD0B9 \uBB38\uAD6C\uC758 \uBAA8\uC591\xB7\uC790\uB9AC\uB294 defaults.shortform_style(\uD1B5\uC9F8\uB85C \uAD50\uCCB4)\uC774\uACE0 \uB2E4\uC12F \uB2E4 **\uC644\uC131\uBCF8\uB9CC \uB2E4\uC2DC \uB9CC\uB4E4\uBA74** \uBC18\uC601\uB41C\uB2E4(\uCEF7 \uC7AC\uB80C\uB354 \uBD88\uD544\uC694).",
7515
+ "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\uAC00\uC7A5\uC790\uB9AC\uC5D0\uC11C\uC758 \uB192\uC774 offset_pct\xB7\uD06C\uAE30(\uB2E8\uACC4 \uB610\uB294 size_pct 60~200)\xB7\uAE00\uAF34 font\xB7\uAD75\uAE30\xB7\uC0C9\xB7\uC678\uACFD\uC120\xB7\uBC30\uACBD \uBC15\uC2A4 \u2014 \uD1B5\uC9F8\uB85C \uAD50\uCCB4\uB77C democut_get_project \uAC00 \uBCF4\uC5EC \uC8FC\uB294 \uC9C0\uAE08 \uAC12\uC5D0\uC11C \uACE0\uCE60 \uCE78\uB9CC \uBC14\uAFD4 \uBCF4\uB0B8\uB2E4, \uD544\uB4DC\xB7\uAC12\uC740 \uC790\uC6D0 democut://guide \u300C\uC644\uC131\uBCF8 \uBAA8\uC591\u300D, 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), \u300CAI \uC0DD\uC131\u300D \uD45C\uC2DC\uB294 defaults.ai_label(true \uBA74 \uB85C\uACE0 \uBAA8\uC11C\uB9AC \uBC14\uAE65\uC5D0 \uC791\uAC8C, \uBB38\uAD6C \uACE0\uC815), \uC138\uB85C \uD504\uB85C\uC81D\uD2B8\uC758 \uB808\uD130\uBC15\uC2A4(\uBAA8\uB4E0 \uCEF7\uC5D0 1:1\xB716:9 \uCC3D \u2014 \uC544\uBC14\uD0C0 PIP \uCEF7\uC774 \uC788\uC73C\uBA74 \uBABB \uCF20\uB2E4)\uC640 \uD6C4\uD0B9 \uBB38\uAD6C\uC758 \uBAA8\uC591\xB7\uC790\uB9AC\uB294 defaults.shortform_style(\uD1B5\uC9F8\uB85C \uAD50\uCCB4), \uC644\uC131\uBCF8 \uCD08\uB2F9 \uD504\uB808\uC784\uC740 defaults.fps(24\xB730\xB760, null \uC774\uBA74 30), \uC644\uC131\uBCF8 \uBAA9\uD45C \uC74C\uB7C9\uC740 defaults.loudness_target_lufs(-24~-9 LUFS \uC18C\uC218 \uD55C \uC790\uB9AC\uAE4C\uC9C0, null \uC774\uBA74 -16 \u2014 \uC720\uD29C\uBE0C\xB7\uC778\uC2A4\uD0C0\uADF8\uB7A8\uC740 -14 \uC548\uD30E)\uC774\uACE0 \uC77C\uACF1 \uB2E4 **\uC644\uC131\uBCF8\uB9CC \uB2E4\uC2DC \uB9CC\uB4E4\uBA74** \uBC18\uC601\uB41C\uB2E4(\uCEF7 \uC7AC\uB80C\uB354 \uBD88\uD544\uC694).",
7516
7516
  "inputSchema": {
7517
7517
  "type": "object",
7518
7518
  "properties": {
@@ -9873,6 +9873,76 @@ var GENERATED_TOOLS = [
9873
9873
  "openWorldHint": false
9874
9874
  }
9875
9875
  },
9876
+ {
9877
+ "name": "democut_get_character_videos",
9878
+ "description": "\uC774 \uC544\uBC14\uD0C0\uAC00 \uB098\uC628 \uC601\uC0C1\uACFC \uADF8 \uC131\uACFC(0\uC6D0, \uBD80\uC791\uC6A9 \uC5C6\uC74C). \u300C\uC774 \uC544\uBC14\uD0C0\uB85C \uB9CC\uB4E0 \uC601\uC0C1\uC774 \uC5BC\uB9C8\uB098 \uBD24\uB098\u300D \uB97C \uB2F5\uD560 \uB54C \uC4F4\uB2E4 \u2014 \uC644\uC131\uBCF8\uB9C8\uB2E4 \uD504\uB85C\uC81D\uD2B8\xB7\uBC88\uD638\xB7\uADF8 \uC544\uBC14\uD0C0\uAC00 \uB098\uC628 \uCEF7 \uC218, \uC720\uD29C\uBE0C \uC8FC\uC18C\uC640 \uC870\uD68C\xB7\uC88B\uC544\uC694\xB7\uB313\uAE00, Instagram \uB9B4\uC2A4 \uC8FC\uC18C\xB7\uACC4\uC815\uBA85. range: 28d(\uAE30\uBCF8)\xB790d. \u2605 \uD569\uACC4\uB294 **\uC774 \uC544\uBC14\uD0C0\uAC00 \uB098\uC628 \uC601\uC0C1\uC758 \uD569\uACC4**\uC774\uACE0 \u300C\uC774 \uC544\uBC14\uD0C0\uAC00 \uBC8C\uC5B4\uB4E4\uC778 \uC870\uD68C\uC218\u300D \uAC00 \uC544\uB2C8\uB2E4 \u2014 \uD55C \uC601\uC0C1\uC5D0 \uC544\uBC14\uD0C0\uAC00 \uC5EC\uB7EC \uBA85 \uB098\uC62C \uC218 \uC788\uC5B4(\uCF54\uB108 \uD574\uC124\uC790 + \uCC38\uACE0 \uC778\uBB3C) \uC544\uBC14\uD0C0\uBCC4 \uD569\uACC4\uB97C \uB354\uD558\uBA74 \uCC44\uB110 \uCD1D\uACC4\uBCF4\uB2E4 \uCEE4\uC9C4\uB2E4. \uADF8\uB807\uAC8C \uB9D0\uD558\uC9C0 \uB9C8\uB77C. \u2605 \uBE44\uACF5\uAC1C\xB7\uC77C\uBD80 \uACF5\uAC1C\uB85C \uC62C\uB9B0 \uC601\uC0C1\uC740 \uC218\uCE58\uAC00 0 \uC778 \uAC83\uC774 \uC815\uC0C1\uC774\uB2E4(\uAC80\uC0C9\xB7\uCD94\uCC9C\uC5D0 \uB728\uC9C0 \uC54A\uB294\uB2E4) \u2014 \uBC1C\uD589 \uAE30\uBCF8\uAC12\uC774 \uBE44\uACF5\uAC1C\uB77C \uCC98\uC74C\uC5D0\uB294 \uB300\uBD80\uBD84\uC774 0 \uC774\uACE0, youtube_not_public_count \uAC00 \uADF8 \uD3B8\uC218\uB2E4. \u2605 \uC218\uCE58\uB294 \uC8FC\uAE30 \uC218\uC9D1\uD55C \uC2A4\uB0C5\uC0F7\uC774\uB77C \uC2E4\uC2DC\uAC04\uC774 \uC544\uB2C8\uB2E4(youtube_collected_at \uC774 \uAE30\uC900 \uC2DC\uAC01\uC774\uACE0, \uC62C\uB838\uC9C0\uB9CC \uC544\uC9C1 \uC218\uC9D1 \uC804\uC778 \uC601\uC0C1\uC740 \uC8FC\uC18C\uC640 \uACF5\uAC1C \uBC94\uC704\uB9CC \uC788\uB2E4 \u2014 \uADF8 \uB458\uC740 \uC62C\uB9B4 \uB54C \uC6B0\uB9AC\uAC00 \uC544\uB294 \uAC12\uC774\uB2E4). Instagram \uC740 \uBC1C\uD589 \uAE30\uB85D\uB9CC\uC774\uACE0 \uC870\uD68C\xB7\uD314\uB85C\uC6CC\uB294 \uC544\uC9C1 \uC5C6\uB2E4. \uADC0\uC18D\uC740 \uADF8 \uC644\uC131\uBCF8\uC774 \uC2E4\uC81C\uB85C \uAD6C\uC6B4 \uBC84\uC804\uC73C\uB85C \uC138\uBBC0\uB85C \uBC1C\uD589 \uB4A4\uC5D0 \uCEF7 \uACC4\uD68D\uC744 \uACE0\uCCD0\uB3C4 \uC9C0\uB09C \uC601\uC0C1\uC758 \uB2F5\uC740 \uBC14\uB00C\uC9C0 \uC54A\uB294\uB2E4.",
9879
+ "inputSchema": {
9880
+ "type": "object",
9881
+ "properties": {
9882
+ "character_id": {
9883
+ "type": "string",
9884
+ "description": "\uC544\uBC14\uD0C0 id(chr_\u2026)"
9885
+ },
9886
+ "range": {
9887
+ "default": "28d",
9888
+ "description": "28d = \uC624\uB298\uAE4C\uC9C0 28\uC77C(\uAE30\uBCF8), 90d = \uC624\uB298\uAE4C\uC9C0 90\uC77C. \uC601\uC0C1\uBCC4 \uAE30\uAC04 \uC870\uD68C\uC218\uAC00 \uC774 \uAC12\uC744 \uB530\uB978\uB2E4",
9889
+ "enum": [
9890
+ "28d",
9891
+ "90d"
9892
+ ],
9893
+ "type": "string"
9894
+ }
9895
+ },
9896
+ "required": [
9897
+ "character_id"
9898
+ ],
9899
+ "additionalProperties": false
9900
+ },
9901
+ "outputSchema": {
9902
+ "type": "object",
9903
+ "properties": {
9904
+ "character_id": {
9905
+ "type": "string"
9906
+ },
9907
+ "range": {
9908
+ "type": "string"
9909
+ },
9910
+ "videos": {
9911
+ "type": "array"
9912
+ },
9913
+ "youtube_published_count": {
9914
+ "type": "integer"
9915
+ },
9916
+ "youtube_not_public_count": {
9917
+ "type": "integer"
9918
+ },
9919
+ "youtube_lifetime_views": {
9920
+ "type": "integer"
9921
+ },
9922
+ "youtube_window_views": {
9923
+ "type": "integer"
9924
+ },
9925
+ "youtube_window_minutes": {
9926
+ "type": "integer"
9927
+ },
9928
+ "youtube_collected_at": {},
9929
+ "instagram_username": {},
9930
+ "instagram_published_count": {
9931
+ "type": "integer"
9932
+ }
9933
+ },
9934
+ "required": [
9935
+ "character_id",
9936
+ "range"
9937
+ ]
9938
+ },
9939
+ "annotations": {
9940
+ "readOnlyHint": true,
9941
+ "destructiveHint": false,
9942
+ "idempotentHint": true,
9943
+ "openWorldHint": false
9944
+ }
9945
+ },
9876
9946
  {
9877
9947
  "name": "democut_select_character_photo",
9878
9948
  "description": "\uC0AC\uC9C4\uC744 \uC120\uD0DD\uD55C\uB2E4(\uC774\uBBF8 \uB9CC\uB4E0 \uCEF7\uC5D0\uB294 \uC18C\uAE09\uD558\uC9C0 \uC54A\uB294\uB2E4).",
@@ -13576,6 +13646,12 @@ var TOOL_META = {
13576
13646
  "method": "DELETE",
13577
13647
  "path": "/api/characters/{character_id}"
13578
13648
  },
13649
+ "democut_get_character_videos": {
13650
+ "cost": "none",
13651
+ "group": "character",
13652
+ "method": "GET",
13653
+ "path": "/api/characters/{character_id}/videos"
13654
+ },
13579
13655
  "democut_select_character_photo": {
13580
13656
  "cost": "none",
13581
13657
  "group": "character",
@@ -16139,6 +16215,62 @@ function getCharacter(a = {}, deps = {}) {
16139
16215
  return { text: lines.join("\n"), structured: callableStructured(out4) };
16140
16216
  });
16141
16217
  }
16218
+ function getCharacterVideos(a = {}, deps = {}) {
16219
+ return guarded(READ_ONLY, async () => {
16220
+ const id = (a.character_id ?? "").trim();
16221
+ if (!id) return { isError: true, text: "character_id \uAC00 \uD544\uC694\uD569\uB2C8\uB2E4." };
16222
+ const range = a.range ?? "28d";
16223
+ if (!STATS_RANGES.includes(range)) {
16224
+ return { isError: true, text: `range \uB294 ${STATS_RANGES.join(", ")} \uC911 \uD558\uB098\uC785\uB2C8\uB2E4: ${JSON.stringify(range)}` };
16225
+ }
16226
+ const base = resolveBaseUrl(deps.baseUrl);
16227
+ const out4 = await apiRequest(
16228
+ base,
16229
+ `/api/characters/${encodeURIComponent(id)}/videos?range=${range}`,
16230
+ {},
16231
+ deps
16232
+ );
16233
+ const videos = out4.videos ?? [];
16234
+ if (!videos.length) {
16235
+ return {
16236
+ text: "\uC774 \uC544\uBC14\uD0C0\uAC00 \uB098\uC628 \uC644\uC131\uBCF8\uC774 \uC5C6\uC2B5\uB2C8\uB2E4. \uCEF7\uC744 \uC774 \uC544\uBC14\uD0C0\uB85C \uB9CC\uB4E4\uACE0(\uCF54\uB108 \uD574\uC124\uC790 pip.avatar_id \uB610\uB294 \uCC38\uACE0 \uC778\uBB3C reference_avatar_ids) \uC644\uC131\uBCF8\uC744 \uB9CC\uB4E0 \uB4A4\uC5D0 \uB2E4\uC2DC \uBCF4\uC138\uC694.",
16237
+ structured: callableStructured(out4)
16238
+ };
16239
+ }
16240
+ const lines = [
16241
+ `\uC774 \uC544\uBC14\uD0C0\uAC00 \uB098\uC628 \uC601\uC0C1 ${videos.length}\uD3B8 \u2014 \uADF8\uC911 \uC720\uD29C\uBE0C ${out4.youtube_published_count}\uD3B8` + (out4.youtube_not_public_count ? `(\uBE44\uACF5\uAC1C\xB7\uC77C\uBD80 \uACF5\uAC1C ${out4.youtube_not_public_count}\uD3B8)` : "") + ` \xB7 Instagram ${out4.instagram_published_count}\uD3B8` + (out4.instagram_username ? `(@${out4.instagram_username})` : ""),
16242
+ `\uC774 \uC544\uBC14\uD0C0\uAC00 \uB098\uC628 \uC601\uC0C1\uC758 \uD569\uACC4: \uB204\uC801 \uC870\uD68C ${n(out4.youtube_lifetime_views)} \xB7 \uAE30\uAC04(${out4.range}) \uC870\uD68C ${n(out4.youtube_window_views)} \xB7 \uC2DC\uCCAD ${n(out4.youtube_window_minutes)}\uBD84`,
16243
+ "\u2605 \uC544\uBC14\uD0C0\uAC00 \uC5EC\uB7EC \uBA85 \uB098\uC628 \uC601\uC0C1\uC740 \uADF8 \uC544\uBC14\uD0C0\uB9C8\uB2E4 \uD55C \uBC88\uC529 \uC138\uC5B4\uC9C0\uBBC0\uB85C, \uC544\uBC14\uD0C0\uBCC4 \uD569\uACC4\uB97C \uB354\uD558\uBA74 \uCC44\uB110 \uCD1D\uACC4\uBCF4\uB2E4 \uD07D\uB2C8\uB2E4."
16244
+ ];
16245
+ if (out4.youtube_collected_at) {
16246
+ lines.push(`\uC720\uD29C\uBE0C \uC218\uCE58 \uAE30\uC900 \uC2DC\uAC01 ${out4.youtube_collected_at}(\uC8FC\uAE30 \uC218\uC9D1 \u2014 \uC2E4\uC2DC\uAC04\uC774 \uC544\uB2D9\uB2C8\uB2E4)`);
16247
+ } else if (out4.youtube_published_count) {
16248
+ lines.push("\uC720\uD29C\uBE0C \uC218\uCE58\uB294 \uC544\uC9C1 \uC218\uC9D1\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4(\uC218\uC9D1\uC740 6\uC2DC\uAC04\uB9C8\uB2E4 \uB3D5\uB2C8\uB2E4).");
16249
+ }
16250
+ lines.push("");
16251
+ for (const video of videos.slice(0, 20)) {
16252
+ const head = `- ${video.project_title || video.project_slug} \uC644\uC131\uBCF8 ${video.export_number}\uBC88 (${video.project_slug}) \xB7 \uC774 \uC544\uBC14\uD0C0\uAC00 \uB098\uC628 \uCEF7 ${video.avatar_cut_count}\uAC1C`;
16253
+ const yt = video.youtube;
16254
+ if (yt == null) {
16255
+ lines.push(head + " \xB7 \uC544\uC9C1 \uC62C\uB9AC\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4");
16256
+ } else if (yt.lifetime_views == null) {
16257
+ lines.push(head + ` \xB7 \uC720\uD29C\uBE0C ${yt.url}(\uC218\uCE58 \uC218\uC9D1 \uC804)`);
16258
+ } else {
16259
+ const mark = (yt.privacy ?? "") === "public" ? "" : ` [${yt.privacy ?? "\uACF5\uAC1C \uBC94\uC704 \uBAA8\uB984"}]`;
16260
+ lines.push(
16261
+ head + ` \xB7 \uC720\uD29C\uBE0C ${yt.url}${mark} \xB7 \uB204\uC801 \uC870\uD68C ${n(yt.lifetime_views)} \xB7 \uAE30\uAC04 \uC870\uD68C ${n(yt.window_views)} \xB7 \uC88B\uC544\uC694 ${n(yt.lifetime_likes)}`
16262
+ );
16263
+ }
16264
+ if (video.instagram != null) {
16265
+ lines.push(` Instagram @${video.instagram.username} ${video.instagram.url}`);
16266
+ }
16267
+ }
16268
+ if (videos.length > 20) {
16269
+ lines.push(`\u2026 \uC678 ${videos.length - 20}\uD3B8(\uC804\uCCB4\uB294 structuredContent \uC5D0 \uC788\uC2B5\uB2C8\uB2E4)`);
16270
+ }
16271
+ return { text: lines.join("\n"), structured: callableStructured(out4) };
16272
+ });
16273
+ }
16142
16274
  function putCharacter(a = {}, deps = {}) {
16143
16275
  return guarded(READ_ONLY, async () => {
16144
16276
  const id = (a.character_id ?? "").trim();
@@ -16880,6 +17012,8 @@ function dispatch(name, args, deps = {}) {
16880
17012
  return creditLedger(args, deps);
16881
17013
  case "democut_credit_summary":
16882
17014
  return creditSummary(args, deps);
17015
+ case "democut_get_character_videos":
17016
+ return getCharacterVideos(args, deps);
16883
17017
  case "democut_channel_stats":
16884
17018
  return channelStats2(args, deps);
16885
17019
  case "democut_list_projects":
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "democut",
3
- "version": "1.0.116",
3
+ "version": "1.0.117",
4
4
  "description": "DemoCut 에이전트 CLI — device flow 로그인(RFC 8628) + 영상 생성",
5
5
  "license": "MIT",
6
6
  "author": "InfoGrab",