democut 1.0.111 → 1.0.113

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 +165 -4
  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.111";
6919
+ var VERSION = "1.0.113";
6920
6920
 
6921
6921
  // src/device-flow.ts
6922
6922
  var DeviceFlowError = class extends Error {
@@ -9372,6 +9372,7 @@ var GENERATED_TOOLS = [
9372
9372
  "type": "boolean"
9373
9373
  },
9374
9374
  "last_error": {},
9375
+ "last_error_at": {},
9375
9376
  "subscriber_count": {},
9376
9377
  "subscriber_count_hidden": {
9377
9378
  "type": "boolean"
@@ -11529,6 +11530,117 @@ var GENERATED_TOOLS = [
11529
11530
  "openWorldHint": false
11530
11531
  }
11531
11532
  },
11533
+ {
11534
+ "name": "democut_set_cuts_hook_text",
11535
+ "description": "\uC138\uB85C \uD504\uB85C\uC81D\uD2B8\uC5D0\uC11C \uC5EC\uB7EC \uCEF7\uC758 \uD6C4\uD0B9 \uBB38\uAD6C(hook_text)\uB97C \uD55C \uBC88\uC5D0 \uAC19\uC740 \uAE00\uB85C \uBC14\uAFBC\uB2E4(0\uC6D0, \uB2E4\uC2DC \uB9CC\uB4E4\uC9C0 \uC54A\uB294\uB2E4). **\uBCF5\uC0AC**\uB77C \uBC14\uAFBC \uB4A4 \uCEF7\uB9C8\uB2E4 \uB530\uB85C \uACE0\uCE60 \uC218 \uC788\uB2E4. cut_ids \uB97C \uBE44\uC6B0\uBA74 \uC601\uC0C1 \uCEF7 \uC804\uBD80, hook_text=null \uC774\uBA74 \uC9C0\uC6B4\uB2E4. \uCEF7\uB9C8\uB2E4 \uB2E4\uB978 \uAE00\uC740 texts {cut_id: \uAE00|null} \uD55C \uBC88. \uD55C \uCEF7\uB9CC\uC774\uBA74 democut_put_cut_draft. rev \uC624\uB978\uB2E4(If-Match).",
11536
+ "inputSchema": {
11537
+ "type": "object",
11538
+ "properties": {
11539
+ "slug": {
11540
+ "type": "string",
11541
+ "description": "\uD504\uB85C\uC81D\uD2B8 \uC2AC\uB7EC\uADF8(democut_list_projects)"
11542
+ },
11543
+ "hook_text": {
11544
+ "anyOf": [
11545
+ {
11546
+ "maxLength": 60,
11547
+ "type": "string"
11548
+ },
11549
+ {
11550
+ "type": "null"
11551
+ }
11552
+ ],
11553
+ "default": null,
11554
+ "description": "\uB123\uC744 \uD6C4\uD0B9 \uBB38\uAD6C(\uC904\uBC14\uAFC8 \\n, 2\uC904\uAE4C\uC9C0). null \uB610\uB294 \uBE48 \uAE00\uC774\uBA74 \uADF8 \uCEF7\uB4E4\uC758 \uBB38\uAD6C\uB97C \uC9C0\uC6B4\uB2E4. texts \uC640 \uD568\uAED8 \uC4F0\uC9C0 \uC54A\uB294\uB2E4"
11555
+ },
11556
+ "cut_ids": {
11557
+ "anyOf": [
11558
+ {
11559
+ "items": {
11560
+ "type": "string"
11561
+ },
11562
+ "maxItems": 200,
11563
+ "minItems": 1,
11564
+ "type": "array"
11565
+ },
11566
+ {
11567
+ "type": "null"
11568
+ }
11569
+ ],
11570
+ "default": null,
11571
+ "description": "hook_text \uB97C \uB123\uC744 \uCEF7 id. \uBE44\uC6B0\uBA74 \uC774 \uD504\uB85C\uC81D\uD2B8\uC758 \uC601\uC0C1 \uCEF7 \uC804\uBD80(\uC774\uBBF8\uC9C0 \uCEF7 \uC81C\uC678)"
11572
+ },
11573
+ "texts": {
11574
+ "anyOf": [
11575
+ {
11576
+ "additionalProperties": {
11577
+ "anyOf": [
11578
+ {
11579
+ "maxLength": 60,
11580
+ "type": "string"
11581
+ },
11582
+ {
11583
+ "type": "null"
11584
+ }
11585
+ ]
11586
+ },
11587
+ "maxProperties": 200,
11588
+ "minProperties": 1,
11589
+ "type": "object"
11590
+ },
11591
+ {
11592
+ "type": "null"
11593
+ }
11594
+ ],
11595
+ "default": null,
11596
+ "description": "\uCEF7\uB9C8\uB2E4 \uB2E4\uB978 \uAE00 {cut_id: \uAE00|null} \u2014 hook_text\xB7cut_ids \uB300\uC2E0. null \uC774\uBA74 \uADF8 \uCEF7\uC758 \uBB38\uAD6C\uB97C \uC9C0\uC6B4\uB2E4"
11597
+ },
11598
+ "rev": {
11599
+ "type": "integer",
11600
+ "minimum": 0,
11601
+ "description": "\uD604\uC7AC rev(democut_get_storyboard \uC758 \uAC12 \uADF8\uB300\uB85C). \uADF8 \uC0AC\uC774 \uBC14\uB00C\uC5C8\uC73C\uBA74 409 REV_MISMATCH"
11602
+ }
11603
+ },
11604
+ "required": [
11605
+ "slug",
11606
+ "rev"
11607
+ ],
11608
+ "additionalProperties": false
11609
+ },
11610
+ "outputSchema": {
11611
+ "type": "object",
11612
+ "properties": {
11613
+ "rev": {
11614
+ "type": "integer"
11615
+ },
11616
+ "order": {
11617
+ "type": "array"
11618
+ },
11619
+ "cuts": {
11620
+ "type": "array"
11621
+ },
11622
+ "start_cut_id": {},
11623
+ "chains": {
11624
+ "type": "array"
11625
+ },
11626
+ "usage_bytes": {
11627
+ "type": "integer"
11628
+ },
11629
+ "next_calls": {
11630
+ "type": "array"
11631
+ }
11632
+ },
11633
+ "required": [
11634
+ "rev"
11635
+ ]
11636
+ },
11637
+ "annotations": {
11638
+ "readOnlyHint": false,
11639
+ "destructiveHint": false,
11640
+ "idempotentHint": true,
11641
+ "openWorldHint": false
11642
+ }
11643
+ },
11532
11644
  {
11533
11645
  "name": "democut_get_silence",
11534
11646
  "description": "\uC120\uD0DD\uB41C \uBC84\uC804\uC758 \uBB34\uC74C \uAD6C\uAC04 \uBBF8\uB9AC\uBCF4\uAE30(threshold_ms).",
@@ -13454,6 +13566,12 @@ var TOOL_META = {
13454
13566
  "method": "PUT",
13455
13567
  "path": "/api/projects/{slug}/cuts/enabled"
13456
13568
  },
13569
+ "democut_set_cuts_hook_text": {
13570
+ "cost": "none",
13571
+ "group": "storyboard",
13572
+ "method": "PUT",
13573
+ "path": "/api/projects/{slug}/cuts/hook-text"
13574
+ },
13457
13575
  "democut_get_silence": {
13458
13576
  "cost": "none",
13459
13577
  "group": "storyboard",
@@ -14322,13 +14440,15 @@ function channelStats2(a = {}, deps = {}) {
14322
14440
  const out4 = await channelStats(base, ws, r, deps);
14323
14441
  if (!out4.connected) {
14324
14442
  return {
14325
- text: "\uC774 \uC6CC\uD06C\uC2A4\uD398\uC774\uC2A4\uC5D0 \uC5F0\uACB0\uB41C \uC720\uD29C\uBE0C \uCC44\uB110\uC774 \uC5C6\uC2B5\uB2C8\uB2E4. \uC124\uC815 > \uCC44\uB110 \uC5F0\uACB0\uC5D0\uC11C \uC0AC\uB78C\uC774 \uBA3C\uC800 \uC5F0\uACB0\uD574\uC57C \uC131\uACFC\uB97C \uC77D\uC744 \uC218 \uC788\uC2B5\uB2C8\uB2E4(\uC5F0\uACB0\uC740 \uBE0C\uB77C\uC6B0\uC800 \uB3D9\uC758\uAC00 \uD544\uC694\uD574 \uB3C4\uAD6C\uB85C \uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4).",
14443
+ text: "\uC774 \uC6CC\uD06C\uC2A4\uD398\uC774\uC2A4\uC5D0 \uC5F0\uACB0\uB41C \uC720\uD29C\uBE0C \uCC44\uB110\uC774 \uC5C6\uC2B5\uB2C8\uB2E4. \uC6F9\uC758 \u300C\uCC44\uB110 \uAD00\uB9AC\u300D \uD654\uBA74\uC5D0\uC11C \uC0AC\uB78C\uC774 \uBA3C\uC800 \uC5F0\uACB0\uD574\uC57C \uC131\uACFC\uB97C \uC77D\uC744 \uC218 \uC788\uC2B5\uB2C8\uB2E4(\uC5F0\uACB0\uC740 \uBE0C\uB77C\uC6B0\uC800 \uB3D9\uC758\uAC00 \uD544\uC694\uD574 \uB3C4\uAD6C\uB85C \uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4).",
14326
14444
  structured: callableStructured(out4)
14327
14445
  };
14328
14446
  }
14329
14447
  if (out4.collected_at == null) {
14330
14448
  return {
14331
- text: "\uCC44\uB110\uC740 \uC5F0\uACB0\uB3FC \uC788\uC9C0\uB9CC \uC544\uC9C1 \uD55C \uBC88\uB3C4 \uC218\uC9D1\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4" + (out4.last_error ? ` (\uB9C8\uC9C0\uB9C9 \uC2DC\uB3C4 \uC2E4\uD328: ${out4.last_error})` : " (\uCCAB \uC218\uC9D1\uC744 \uAE30\uB2E4\uB9AC\uB294 \uC911\uC785\uB2C8\uB2E4)") + ". \uC218\uC9D1\uC740 6\uC2DC\uAC04\uB9C8\uB2E4 \uB3D5\uB2C8\uB2E4.",
14449
+ text: "\uCC44\uB110\uC740 \uC5F0\uACB0\uB3FC \uC788\uC9C0\uB9CC \uC544\uC9C1 \uD55C \uBC88\uB3C4 \uC218\uC9D1\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4" + // ★ 시각을 함께 말한다 — 없으면 원인을 고친 뒤에도 같은 문장이 보여 「다시 시도했는가」 를
14450
+ // 가릴 수 없다(077). 성공한 적이 없으면 collected_at 이 없어 이 값이 유일한 시간 표시다.
14451
+ (out4.last_error ? ` (\uB9C8\uC9C0\uB9C9 \uC2DC\uB3C4(${out4.last_error_at ?? "\uC2DC\uAC01 \uBBF8\uC0C1"}) \uC2E4\uD328: ${out4.last_error})` : " (\uCCAB \uC218\uC9D1\uC744 \uAE30\uB2E4\uB9AC\uB294 \uC911\uC785\uB2C8\uB2E4)") + ". \uC218\uC9D1\uC740 6\uC2DC\uAC04\uB9C8\uB2E4 \uB3D5\uB2C8\uB2E4.",
14332
14452
  structured: callableStructured(out4)
14333
14453
  };
14334
14454
  }
@@ -14339,7 +14459,9 @@ function channelStats2(a = {}, deps = {}) {
14339
14459
  `\uAE30\uC900 \uC2DC\uAC01 ${out4.collected_at}` + (out4.stale ? " \u2605 \uAC31\uC2E0\uC774 \uB2A6\uACE0 \uC788\uC2B5\uB2C8\uB2E4" : "")
14340
14460
  ];
14341
14461
  if (out4.last_error) {
14342
- lines.push(`\u2605 \uB9C8\uC9C0\uB9C9 \uC218\uC9D1 \uC2E4\uD328: ${out4.last_error} \u2014 \uCC44\uB110\uC744 \uB2E4\uC2DC \uC5F0\uACB0\uD574\uC57C \uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.`);
14462
+ lines.push(
14463
+ `\u2605 \uB9C8\uC9C0\uB9C9 \uC2DC\uB3C4(${out4.last_error_at ?? "\uC2DC\uAC01 \uBBF8\uC0C1"}) \uC2E4\uD328: ${out4.last_error} \u2014 \uCC44\uB110\uC744 \uB2E4\uC2DC \uC5F0\uACB0\uD574\uC57C \uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.`
14464
+ );
14343
14465
  }
14344
14466
  const videos = out4.videos ?? [];
14345
14467
  if (videos.length) {
@@ -15168,6 +15290,43 @@ function setCutsEnabled(a = {}, deps = {}) {
15168
15290
  return { text: lines.join("\n"), structured: callableStructured(board) };
15169
15291
  });
15170
15292
  }
15293
+ function setCutsHookText(a = {}, deps = {}) {
15294
+ return guarded(READ_ONLY, async () => {
15295
+ const slug = needSlug(a);
15296
+ if (typeof slug !== "string") return slug;
15297
+ if (a.hook_text === void 0 && a.texts === void 0) {
15298
+ return { isError: true, text: "hook_text(\uC9C0\uC6B0\uB824\uBA74 null) \uB610\uB294 texts {cut_id: \uAE00|null} \uAC00 \uD544\uC694\uD569\uB2C8\uB2E4." };
15299
+ }
15300
+ if (a.texts !== void 0 && (a.hook_text !== void 0 || a.cut_ids !== void 0)) {
15301
+ return { isError: true, text: "texts \uB294 hook_text\xB7cut_ids \uC640 \uD568\uAED8 \uC4F8 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4 \u2014 \uB458 \uC911 \uD558\uB098\uB9CC \uC8FC\uC138\uC694." };
15302
+ }
15303
+ if (a.cut_ids !== void 0 && (!Array.isArray(a.cut_ids) || a.cut_ids.length === 0)) {
15304
+ return { isError: true, text: "cut_ids \uB294 \uBE44\uC6B0\uAC70\uB098(\uC601\uC0C1 \uCEF7 \uC804\uBD80) \uCEF7 id \uBC30\uC5F4\uB85C \uC8FC\uC138\uC694." };
15305
+ }
15306
+ if (a.rev === void 0 || a.rev === null) {
15307
+ return {
15308
+ isError: true,
15309
+ 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.")
15310
+ };
15311
+ }
15312
+ const base = resolveBaseUrl(deps.baseUrl);
15313
+ const board = await apiRequest(
15314
+ base,
15315
+ projectPath(slug, "/cuts/hook-text"),
15316
+ {
15317
+ method: "PUT",
15318
+ body: a.texts !== void 0 ? { texts: a.texts } : { hook_text: a.hook_text, ...a.cut_ids ? { cut_ids: a.cut_ids } : {} },
15319
+ headers: { "If-Match": String(a.rev) }
15320
+ },
15321
+ deps
15322
+ );
15323
+ const head = a.texts !== void 0 ? `\uCEF7 ${Object.keys(a.texts).length}\uAC1C\uC758 \uD6C4\uD0B9 \uBB38\uAD6C\uB97C \uCEF7\uB9C8\uB2E4 \uBC14\uAFE8\uC2B5\uB2C8\uB2E4` : `${a.cut_ids ? `\uCEF7 ${a.cut_ids.length}\uAC1C` : "\uC601\uC0C1 \uCEF7 \uC804\uBD80"}\uC758 ${a.hook_text ? `\uD6C4\uD0B9 \uBB38\uAD6C\uB97C \u300C${a.hook_text}\u300D \uB85C \uBC14\uAFE8\uC2B5\uB2C8\uB2E4` : "\uD6C4\uD0B9 \uBB38\uAD6C\uB97C \uC9C0\uC6E0\uC2B5\uB2C8\uB2E4"}`;
15324
+ const lines = [`${head} \u2014 rev ${board.rev}(0\uC6D0, \uC644\uC131\uBCF8\uC744 \uB2E4\uC2DC \uB9CC\uB4E4\uBA74 \uBC18\uC601)`];
15325
+ if (board.next_calls?.length)
15326
+ lines.push(callableToolNames(`\uB2E4\uC74C \uD638\uCD9C: ${board.next_calls.join(", ")}`));
15327
+ return { text: lines.join("\n"), structured: callableStructured(board) };
15328
+ });
15329
+ }
15171
15330
  function setCutLink(a = {}, deps = {}) {
15172
15331
  return guarded(READ_ONLY, async () => {
15173
15332
  const slug = needSlug(a);
@@ -16563,6 +16722,8 @@ function dispatch(name, args, deps = {}) {
16563
16722
  return setCutLink(args, deps);
16564
16723
  case "democut_set_cuts_enabled":
16565
16724
  return setCutsEnabled(args, deps);
16725
+ case "democut_set_cuts_hook_text":
16726
+ return setCutsHookText(args, deps);
16566
16727
  case "democut_set_start_cut":
16567
16728
  return setStartCut(args, deps);
16568
16729
  case "democut_put_cut_draft":
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "democut",
3
- "version": "1.0.111",
3
+ "version": "1.0.113",
4
4
  "description": "DemoCut 에이전트 CLI — device flow 로그인(RFC 8628) + 영상 생성",
5
5
  "license": "MIT",
6
6
  "author": "InfoGrab",