democut 1.0.197 → 1.0.201

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 +45 -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.197";
6919
+ var VERSION = "1.0.201";
6920
6920
 
6921
6921
  // src/device-flow.ts
6922
6922
  var DeviceFlowError = class extends Error {
@@ -11501,7 +11501,7 @@ var GENERATED_TOOLS = [
11501
11501
  },
11502
11502
  "annotations": {
11503
11503
  "readOnlyHint": false,
11504
- "destructiveHint": false,
11504
+ "destructiveHint": true,
11505
11505
  "idempotentHint": false,
11506
11506
  "openWorldHint": false
11507
11507
  }
@@ -17474,6 +17474,29 @@ var TONE_NAMES = { light: "\uBC1D\uC740 \uBC14\uD0D5", dark: "\uC5B4\uB450\uC6B4
17474
17474
  var WEIGHT_NAMES = { regular: "\uBCF4\uD1B5", bold: "\uAD75\uAC8C", heavy: "\uC544\uC8FC \uAD75\uAC8C" };
17475
17475
  var RADIUS_NAMES = { none: "\uAC01\uC9C4", small: "\uC870\uAE08 \uB465\uADFC", large: "\uB9CE\uC774 \uB465\uADFC" };
17476
17476
  var ratio = (v) => (Math.floor(v * 100 + 0.5) / 100).toFixed(2);
17477
+ function motionEffect(e) {
17478
+ const move = [e.distance != null ? `\uC774\uB3D9 ${ratio(e.distance)}` : "", e.direction ?? ""].filter(Boolean).join(" ");
17479
+ const parts = [
17480
+ `${e.system} (\uB0B1\uB9D0 ${e.anchor}, ${e.at_ms}ms)` + (e.what ? `: ${e.what}` : ""),
17481
+ ...e.duration_ms != null ? [`\uC9C0\uC18D ${e.duration_ms}ms`] : [],
17482
+ ...e.delay_ms != null ? [`\uC9C0\uC5F0 ${e.delay_ms}ms`] : [],
17483
+ ...e.easing ? [e.easing] : [],
17484
+ ...move ? [move] : [],
17485
+ ...e.stagger_ms != null ? [`\uC2A4\uD0DC\uAC70 ${e.stagger_ms}ms`] : []
17486
+ ];
17487
+ return ` - ${parts.join(", ")}`;
17488
+ }
17489
+ function motionCamera(c) {
17490
+ let zoom = "";
17491
+ if (c.zoom_from != null && c.zoom_to != null) {
17492
+ zoom = `\uBC30\uC728 ${ratio(c.zoom_from)}\u2192${ratio(c.zoom_to)}`;
17493
+ } else if (c.zoom_from != null || c.zoom_to != null) {
17494
+ zoom = `\uBC30\uC728 ${ratio(c.zoom_from ?? c.zoom_to)}`;
17495
+ }
17496
+ const pan = [c.pan_x != null ? `x ${ratio(c.pan_x)}` : "", c.pan_y != null ? `y ${ratio(c.pan_y)}` : ""].filter(Boolean).join(" ");
17497
+ const parts = [zoom, pan ? `\uD32C ${pan}` : "", c.easing ?? ""].filter(Boolean);
17498
+ return ` - \uCE74\uBA54\uB77C ${c.from_ms}~${c.to_ms}ms: ${parts.join(", ")}`;
17499
+ }
17477
17500
  function formatReading(view) {
17478
17501
  const state = view.reading_state ?? "none";
17479
17502
  const head = {
@@ -17493,9 +17516,15 @@ function formatReading(view) {
17493
17516
  "",
17494
17517
  state === "failed" ? `${head} \uC544\uB798\uB294 \uADF8 \uC804 \uD574\uC11D\uC785\uB2C8\uB2E4.` : head,
17495
17518
  `\uC694\uC57D: ${r.summary || "\uC5C6\uC74C"}`,
17496
- `\uB8E9: \uBC14\uD0D5 ${look.background || "\uC7B4 \uC218 \uC5C6\uC74C"}(${TONE_NAMES[look.tone ?? ""] ?? "\uBC1D\uAE30 \uBAA8\uB984"}) \xB7 \uAC15\uC870\uC0C9 ${look.accent || "\uC5C6\uC74C"} \xB7 \uAE00\uC790 ${WEIGHT_NAMES[look.text_weight ?? ""] ?? "\uAD75\uAE30 \uBAA8\uB984"}, \uD06C\uAE30 \uB2E8\uACC4 ${sizes.length ? `[${sizes.join(", ")}]` : "\uBAA8\uB984"}% \xB7 ${card}` + (evidence.length ? ` \xB7 \uADFC\uAC70 ${evidence.join(", ")}` : ""),
17497
- `\uBC30\uCE58 ${r.layouts.length}\uAC1C(x \xB7 y \xB7 w \xB7 h \uB294 \uD654\uBA74 \uBE44\uC728):`
17519
+ `\uB8E9: \uBC14\uD0D5 ${look.background || "\uC7B4 \uC218 \uC5C6\uC74C"}(${TONE_NAMES[look.tone ?? ""] ?? "\uBC1D\uAE30 \uBAA8\uB984"}) \xB7 \uAC15\uC870\uC0C9 ${look.accent || "\uC5C6\uC74C"} \xB7 \uAE00\uC790 ${WEIGHT_NAMES[look.text_weight ?? ""] ?? "\uAD75\uAE30 \uBAA8\uB984"}, \uD06C\uAE30 \uB2E8\uACC4 ${sizes.length ? `[${sizes.join(", ")}]` : "\uBAA8\uB984"}% \xB7 ${card}` + (evidence.length ? ` \xB7 \uADFC\uAC70 ${evidence.join(", ")}` : "")
17498
17520
  ];
17521
+ const design = [look.typeface ? `\uAE00\uAF34 ${look.typeface}` : "", look.margin != null ? `\uC5EC\uBC31 ${ratio(look.margin)}` : ""].filter(Boolean);
17522
+ if (design.length) lines.push(design.join(" \xB7 "));
17523
+ const levels = look.levels ?? [];
17524
+ if (levels.length) {
17525
+ lines.push("\uC704\uACC4: " + levels.map((lv) => `${lv.size}% ${WEIGHT_NAMES[lv.weight]}` + (lv.role ? ` ${lv.role}` : "")).join(" \xB7 "));
17526
+ }
17527
+ lines.push(`\uBC30\uCE58 ${r.layouts.length}\uAC1C(x \xB7 y \xB7 w \xB7 h \uB294 \uD654\uBA74 \uBE44\uC728):`);
17499
17528
  for (const layout of r.layouts) {
17500
17529
  const regions = layout.regions.map((g) => `${REGION_NAMES[g.role]}(${g.role}) x${ratio(g.x)} y${ratio(g.y)} w${ratio(g.w)} h${ratio(g.h)}` + (g.color ? ` ${g.color}` : "")).join(" / ");
17501
17530
  lines.push(` ${layout.id}: ${regions}` + (layout.outside_color ? ` \xB7 \uC601\uC5ED \uBC16 ${layout.outside_color}` : ""));
@@ -17515,6 +17544,18 @@ function formatReading(view) {
17515
17544
  for (const e of events) {
17516
17545
  lines.push(` #${e.anchor} ${words[e.anchor]?.text ?? "?"}@${e.at_ms} \u2192 ${e.system} ${e.change}` + (e.text ? ` \xB7 \uAE00 ${JSON.stringify(e.text)}` : ""));
17517
17546
  }
17547
+ const motion = r.motion;
17548
+ if (motion) {
17549
+ const d2 = r.dropped;
17550
+ const droppedMotion = (d2?.effects ?? 0) + (d2?.camera ?? 0) + (d2?.continuity ?? 0);
17551
+ const effects = motion.effects ?? [];
17552
+ const camera = motion.camera ?? [];
17553
+ const continuity = motion.continuity ?? [];
17554
+ lines.push(`\uC6C0\uC9C1\uC784 \xB7 \uD6A8\uACFC ${effects.length} \xB7 \uCE74\uBA54\uB77C ${camera.length} \xB7 \uC787\uAE30 ${continuity.length} \xB7 \uBC84\uB9B0 \uC218 ${droppedMotion}`);
17555
+ for (const e of effects) lines.push(motionEffect(e));
17556
+ for (const c of camera) lines.push(motionCamera(c));
17557
+ for (const c of continuity) lines.push(` - \uC787\uAE30 ${c.element} ${c.from_ms}~${c.to_ms}ms: ${c.note}`);
17558
+ }
17518
17559
  const d = r.dropped;
17519
17560
  if (d && (d.layouts || d.segments || d.systems || d.events)) {
17520
17561
  lines.push(`\uCE21\uC815\uACFC \uB9DE\uC9C0 \uC54A\uC544 \uBC84\uB9B0 \uAC83: \uBC30\uCE58 ${d.layouts ?? 0} \xB7 \uAD6C\uAC04 ${d.segments ?? 0} \xB7 \uC7A5\uCE58 ${d.systems ?? 0} \xB7 \uC0AC\uAC74 ${d.events ?? 0}`);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "democut",
3
- "version": "1.0.197",
3
+ "version": "1.0.201",
4
4
  "description": "DemoCut 에이전트 CLI — device flow 로그인(RFC 8628) + 영상 생성",
5
5
  "license": "MIT",
6
6
  "author": "InfoGrab",