democut 1.0.70 → 1.0.73

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 +69 -331
  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.70";
6919
+ var VERSION = "1.0.73";
6920
6920
 
6921
6921
  // src/device-flow.ts
6922
6922
  var DeviceFlowError = class extends Error {
@@ -7754,7 +7754,7 @@ var GENERATED_TOOLS = [
7754
7754
  },
7755
7755
  {
7756
7756
  "name": "democut_get_options",
7757
- "description": "\uC774 \uD504\uB85C\uC81D\uD2B8\uC5D0\uC11C \uC4F8 \uC218 \uC788\uB294 \uBC29\uC2DD\xB7\uC9C4\uD589(host)\xB7\uD544\uC218 \uD544\uB4DC\xB7BYO \uD544\uB4DC\xB7\uBCF4\uC774\uC2A4\xB7\uC544\uBC14\uD0C0\xB7**\uBAA8\uC158\uADF8\uB798\uD53D \uD654\uBA74 \uAD6C\uC131**\xB7\uB2E8\uAC00\xB7\uC794\uC561. recommended_mode=ai_video. layout_patterns[] \uB294 motion_graphic \uC758 layout_pattern \uC774 \uBC1B\uB294 \uAC12\uC774\uACE0 \uAC01 \uD56D\uBAA9\uC774 \uC5B8\uC81C \uC4F0\uB294\uC9C0(when)\uB97C \uB9D0\uD55C\uB2E4 \u2014 \uBE44\uC6CC \uB450\uBA74 \uB300\uC0AC\uC5D0 \uB9DE\uB294 \uAD6C\uC131\uC744 \uC11C\uBC84\uAC00 \uACE0\uB978\uB2E4. \uB2E8\uAC00\uB294 \uCC38\uACE0\uAC12\uC774\uB2E4 \u2014 \uCCAD\uAD6C\uB294 democut_estimate_cuts \uC758 \uAC12\uC73C\uB85C. \uB2E4\uC74C \uD638\uCD9C: democut_upload_asset, democut_estimate_cuts.",
7757
+ "description": "\uC774 \uD504\uB85C\uC81D\uD2B8\uC5D0\uC11C \uC4F8 \uC218 \uC788\uB294 \uBC29\uC2DD\xB7\uC9C4\uD589(host)\xB7\uD544\uC218 \uD544\uB4DC\xB7BYO \uD544\uB4DC\xB7\uBCF4\uC774\uC2A4\xB7\uC544\uBC14\uD0C0\xB7**\uBAA8\uC158\uADF8\uB798\uD53D \uD654\uBA74 \uAD6C\uC131**\xB7\uB2E8\uAC00\xB7\uC794\uC561. recommended_mode=ai_video. layout_patterns[] \uB294 motion_graphic \uC758 layout_pattern \uC774 \uBC1B\uB294 \uAC12\uC774\uACE0 \uAC01 \uD56D\uBAA9\uC774 \uC5B8\uC81C \uC4F0\uB294\uC9C0(when)\uB97C \uB9D0\uD55C\uB2E4 \u2014 \uBE44\uC6CC \uB450\uBA74 \uB300\uC0AC\uC5D0 \uB9DE\uB294 \uAD6C\uC131\uC744 \uC11C\uBC84\uAC00 \uACE0\uB978\uB2E4. \uC571\xB7\uC6F9 \uD654\uBA74\uC744 \uB204\uB974\uACE0 \uC785\uB825\uD558\uB294 \uC2DC\uC5F0\uC740 screen_demo(\uC2A4\uD06C\uB9B0\uC0F7 \uD544\uC694, tsx \uC640 \uD568\uAED8 \uBABB \uC4F4\uB2E4)\uB2E4. \uB2E8\uAC00\uB294 \uCC38\uACE0\uAC12\uC774\uB2E4 \u2014 \uCCAD\uAD6C\uB294 democut_estimate_cuts \uC758 \uAC12\uC73C\uB85C. \uB2E4\uC74C \uD638\uCD9C: democut_upload_asset, democut_estimate_cuts.",
7758
7758
  "inputSchema": {
7759
7759
  "type": "object",
7760
7760
  "properties": {
@@ -7952,7 +7952,7 @@ var GENERATED_TOOLS = [
7952
7952
  },
7953
7953
  {
7954
7954
  "name": "democut_estimate_cuts",
7955
- "description": "\uCEF7 N \uAC1C\uC758 \uACAC\uC801(0\uC6D0, \uBD80\uC791\uC6A9 \uC5C6\uC74C). \uC751\uB2F5\uC758 total_krw\xB7rate_version\xB7can_afford \uB97C \uC0AC\uC6A9\uC790\uC5D0\uAC8C \uBCF4\uC5EC \uC8FC\uACE0 \uADF8\uB300\uB85C democut_make_cuts \uC5D0 \uB123\uC5B4\uB77C. \u2605 \uC774\uBBF8 \uCD08\uC548\uC774 \uC800\uC7A5\uB41C \uCEF7\uC774\uBA74 **spec \uC744 \uBE44\uC6B0\uACE0 cut_id \uB9CC** \uC8FC\uB77C \u2014 \uC800\uC7A5\uB41C \uCD08\uC548\uC73C\uB85C \uAE08\uC561\uC744 \uB0B8\uB2E4. \uAC19\uC740 \uAE00\uC744 \uB2E4\uC2DC \uC62E\uACA8 \uC4F0\uBA74 \uADF8 \uC0AC\uC774\uC5D0\uC11C \uC870\uC6A9\uD788 \uAE68\uC9C4\uB2E4. spec \uC744 \uC8FC\uBA74 \uADF8 \uAC12\uC774 \uADF8 \uCEF7\uC758 \uCD08\uC548\uC774 \uB41C\uB2E4(democut_make_cuts \uC640 \uAC19\uC740 \uADDC\uCE59). BYO \uD544\uB4DC(image_asset_id\xB7narration_asset_id\xB7tsx\xB7source.asset_id)\uB97C \uC8FC\uBA74 \uADF8 \uD589\uC740 0\uC6D0\uC774\uB2E4. \u2605 \uC751\uB2F5 notes \uB97C **\uBC18\uB4DC\uC2DC \uC0AC\uC6A9\uC790\uC5D0\uAC8C \uC804\uD558\uB77C** \u2014 \uB9C9\uC9C0\uB294 \uC54A\uC9C0\uB9CC \uADF8\uB300\uB85C \uB9CC\uB4E4\uBA74 \uACB0\uACFC\uAC00 \uC758\uB3C4\uC640 \uB2E4\uB97C \uC218 \uC788\uB294 \uAC83\uB4E4\uC774\uB2E4. \uD2B9\uD788 ai_video \uC5D0 \uCC38\uC870 \uC774\uBBF8\uC9C0\uB97C \uC548 \uC8FC\uBA74 \uD14D\uC2A4\uD2B8\uB9CC\uC73C\uB85C \uB9CC\uB4E0\uB2E4(t2v): \uCCAB \uD504\uB808\uC784\uC744 \uC8FC\uBA74 \uD6E8\uC52C \uC548\uC815\uC801\uC774\uBBC0\uB85C \uC774\uBBF8\uC9C0\uB97C \uB9CC\uB4E4\uC5B4 \uC0AC\uC6A9\uC790 \uD655\uC778\uC744 \uBC1B\uC740 \uB4A4 democut_upload_asset \u2192 spec.image_asset_id \uB85C \uC8FC\uB294 \uD3B8\uC774 \uB0AB\uB2E4. \uB2E4\uC74C \uD638\uCD9C: democut_make_cuts.",
7955
+ "description": "\uCEF7 N \uAC1C\uC758 \uACAC\uC801(0\uC6D0, \uBD80\uC791\uC6A9 \uC5C6\uC74C). \uC751\uB2F5\uC758 total_krw\xB7rate_version\xB7can_afford \uB97C \uC0AC\uC6A9\uC790\uC5D0\uAC8C \uBCF4\uC5EC \uC8FC\uACE0 \uADF8\uB300\uB85C democut_make_cuts \uC5D0 \uB123\uC5B4\uB77C. \u2605 \uC774\uBBF8 \uCD08\uC548\uC774 \uC800\uC7A5\uB41C \uCEF7\uC774\uBA74 **spec \uC744 \uBE44\uC6B0\uACE0 cut_id \uB9CC** \uC8FC\uB77C \u2014 \uC800\uC7A5\uB41C \uCD08\uC548\uC73C\uB85C \uAE08\uC561\uC744 \uB0B8\uB2E4. \uAC19\uC740 \uAE00\uC744 \uB2E4\uC2DC \uC62E\uACA8 \uC4F0\uBA74 \uADF8 \uC0AC\uC774\uC5D0\uC11C \uC870\uC6A9\uD788 \uAE68\uC9C4\uB2E4. spec \uC744 \uC8FC\uBA74 \uADF8 \uAC12\uC774 \uADF8 \uCEF7\uC758 \uCD08\uC548\uC774 \uB41C\uB2E4(democut_make_cuts \uC640 \uAC19\uC740 \uADDC\uCE59). BYO \uD544\uB4DC(image_asset_id\xB7narration_asset_id\xB7tsx\xB7source.asset_id)\uB97C \uC8FC\uBA74 \uADF8 \uD589\uC740 0\uC6D0\uC774\uB2E4. \uB2E8 \uC571\xB7\uC6F9 \uD654\uBA74 \uC2DC\uC5F0\uC740 tsx \uB85C \uADF8\uB9AC\uC9C0 \uB9D0\uACE0 motion_graphic \uC758 layout_pattern=screen_demo + screen_asset_ids(\uC2A4\uD06C\uB9B0\uC0F7)\uB85C \uB9E1\uACA8\uB77C \u2014 \uCEE4\uC11C\xB7\uD074\uB9AD\xB7\uC785\uB825\xB7\uCE74\uBA54\uB77C\uB294 \uC11C\uBC84\uB9CC \uB9CC\uB4E4\uACE0 tsx \uC5D0\uB294 \uBD99\uC9C0 \uC54A\uB294\uB2E4. \u2605 \uC751\uB2F5 notes \uB97C **\uBC18\uB4DC\uC2DC \uC0AC\uC6A9\uC790\uC5D0\uAC8C \uC804\uD558\uB77C** \u2014 \uB9C9\uC9C0\uB294 \uC54A\uC9C0\uB9CC \uADF8\uB300\uB85C \uB9CC\uB4E4\uBA74 \uACB0\uACFC\uAC00 \uC758\uB3C4\uC640 \uB2E4\uB97C \uC218 \uC788\uB294 \uAC83\uB4E4\uC774\uB2E4. \uD2B9\uD788 ai_video \uC5D0 \uCC38\uC870 \uC774\uBBF8\uC9C0\uB97C \uC548 \uC8FC\uBA74 \uD14D\uC2A4\uD2B8\uB9CC\uC73C\uB85C \uB9CC\uB4E0\uB2E4(t2v): \uCCAB \uD504\uB808\uC784\uC744 \uC8FC\uBA74 \uD6E8\uC52C \uC548\uC815\uC801\uC774\uBBC0\uB85C \uC774\uBBF8\uC9C0\uB97C \uB9CC\uB4E4\uC5B4 \uC0AC\uC6A9\uC790 \uD655\uC778\uC744 \uBC1B\uC740 \uB4A4 democut_upload_asset \u2192 spec.image_asset_id \uB85C \uC8FC\uB294 \uD3B8\uC774 \uB0AB\uB2E4. \uB2E4\uC74C \uD638\uCD9C: democut_make_cuts.",
7956
7956
  "inputSchema": {
7957
7957
  "type": "object",
7958
7958
  "properties": {
@@ -9496,85 +9496,6 @@ var GENERATED_TOOLS = [
9496
9496
  "openWorldHint": false
9497
9497
  }
9498
9498
  },
9499
- {
9500
- "name": "democut_add_character_photo",
9501
- "description": "\uC62C\uB9B0 \uC774\uBBF8\uC9C0\uB97C \uC0AC\uC9C4 \uD310\uC73C\uB85C \uCD94\uAC00\uD55C\uB2E4(0\uC6D0). \uC0C8 \uC0AC\uC9C4\uC774 \uB300\uD45C\uAC00 \uB41C\uB2E4. \uC18C\uAE09 \uC5C6\uC74C.",
9502
- "inputSchema": {
9503
- "type": "object",
9504
- "properties": {
9505
- "character_id": {
9506
- "type": "string",
9507
- "description": "\uC544\uBC14\uD0C0 id(chr_\u2026)"
9508
- },
9509
- "asset_id": {
9510
- "type": "string"
9511
- },
9512
- "note": {
9513
- "anyOf": [
9514
- {
9515
- "type": "string"
9516
- },
9517
- {
9518
- "type": "null"
9519
- }
9520
- ],
9521
- "default": null
9522
- }
9523
- },
9524
- "required": [
9525
- "character_id",
9526
- "asset_id"
9527
- ],
9528
- "additionalProperties": false
9529
- },
9530
- "outputSchema": {
9531
- "type": "object",
9532
- "properties": {
9533
- "id": {
9534
- "type": "string"
9535
- },
9536
- "workspace_id": {
9537
- "type": "string"
9538
- },
9539
- "name": {
9540
- "type": "string"
9541
- },
9542
- "voice_id": {},
9543
- "persona_text": {
9544
- "type": "string"
9545
- },
9546
- "look_text": {
9547
- "type": "string"
9548
- },
9549
- "current_photo_id": {},
9550
- "photos": {
9551
- "type": "array"
9552
- },
9553
- "rev": {
9554
- "type": "integer"
9555
- },
9556
- "created_at": {
9557
- "type": "string"
9558
- },
9559
- "updated_at": {
9560
- "type": "string"
9561
- }
9562
- },
9563
- "required": [
9564
- "id",
9565
- "workspace_id",
9566
- "name",
9567
- "created_at",
9568
- "updated_at"
9569
- ]
9570
- },
9571
- "annotations": {
9572
- "readOnlyHint": false,
9573
- "destructiveHint": false,
9574
- "idempotentHint": false,
9575
- "openWorldHint": false
9576
- }
9577
- },
9578
9499
  {
9579
9500
  "name": "democut_select_character_photo",
9580
9501
  "description": "\uB300\uD45C \uC0AC\uC9C4\uC744 \uACE0\uB978\uB2E4(\uC774\uBBF8 \uB9CC\uB4E0 \uCEF7\uC5D0\uB294 \uC18C\uAE09\uD558\uC9C0 \uC54A\uB294\uB2E4).",
@@ -9819,145 +9740,9 @@ var GENERATED_TOOLS = [
9819
9740
  "openWorldHint": false
9820
9741
  }
9821
9742
  },
9822
- {
9823
- "name": "democut_estimate_character_sheet",
9824
- "description": "\uCE90\uB9AD\uD130 \uC2DC\uD2B8(\uC0AC\uC9C4 \uD55C \uC7A5 \u2192 \uC5EC\uB7EC \uAC01\uB3C4 \uD55C \uC7A5) \uACAC\uC801(0\uC6D0). \uBE44\uC6B0\uBA74 \uB300\uD45C \uC0AC\uC9C4\uC73C\uB85C \uB9CC\uB4E0\uB2E4. \uAE08\uC561\uC740 \uC0C1\uD55C\uC774\uACE0 \uC2E4\uCE21\uC73C\uB85C \uCC28\uC561\uC744 \uB3CC\uB824\uC900\uB2E4.",
9825
- "inputSchema": {
9826
- "type": "object",
9827
- "properties": {
9828
- "character_id": {
9829
- "type": "string",
9830
- "description": "\uC544\uBC14\uD0C0 id(chr_\u2026)"
9831
- },
9832
- "photo_id": {
9833
- "anyOf": [
9834
- {
9835
- "maxLength": 64,
9836
- "type": "string"
9837
- },
9838
- {
9839
- "type": "null"
9840
- }
9841
- ],
9842
- "default": null,
9843
- "description": "\uC2DC\uD2B8\uB97C \uB9CC\uB4E4 \uC0AC\uC9C4(democut_get_character \uC758 photos[].id). \uBE44\uC6B0\uBA74 \uB300\uD45C \uC0AC\uC9C4"
9844
- }
9845
- },
9846
- "required": [
9847
- "character_id"
9848
- ],
9849
- "additionalProperties": false
9850
- },
9851
- "outputSchema": {
9852
- "type": "object",
9853
- "properties": {
9854
- "items": {
9855
- "type": "array"
9856
- },
9857
- "notes": {
9858
- "type": "array"
9859
- },
9860
- "total_krw": {
9861
- "type": "integer"
9862
- },
9863
- "rate_version": {
9864
- "type": "integer"
9865
- },
9866
- "balance_krw": {
9867
- "type": "integer"
9868
- },
9869
- "balance_after_krw": {
9870
- "type": "integer"
9871
- },
9872
- "can_afford": {
9873
- "type": "boolean"
9874
- },
9875
- "mock": {
9876
- "type": "boolean"
9877
- },
9878
- "provisional": {
9879
- "type": "boolean"
9880
- }
9881
- },
9882
- "required": [
9883
- "total_krw",
9884
- "rate_version",
9885
- "balance_krw",
9886
- "balance_after_krw",
9887
- "can_afford"
9888
- ]
9889
- },
9890
- "annotations": {
9891
- "readOnlyHint": false,
9892
- "destructiveHint": false,
9893
- "idempotentHint": false,
9894
- "openWorldHint": false
9895
- }
9896
- },
9897
- {
9898
- "name": "democut_make_character_sheet",
9899
- "description": "\uCE90\uB9AD\uD130 \uC2DC\uD2B8\uB97C \uB9CC\uB4E0\uB2E4(\uCCAD\uAD6C\xB7\uC0C1\uD55C). \uADF8 \uC0AC\uC9C4\uC5D0 \uBD99\uACE0(\uC788\uC73C\uBA74 \uBC14\uAFBC\uB2E4) \uB300\uD45C \uC0AC\uC9C4\uC758 \uC2DC\uD2B8\uB294 PIP \uC7A5\uBA74\uC744 \uADF8\uB9B4 \uB54C \uCC38\uACE0\uB85C \uC4F0\uC778\uB2E4. AI \uB85C \uB9CC\uB4E0 \uC0AC\uC9C4\uC5D0\uB294 \uC2DC\uD2B8\uAC00 \uC774\uBBF8 \uD568\uAED8 \uB9CC\uB4E4\uC5B4\uC9C4\uB2E4 \u2014 \uC62C\uB9B0 \uC0AC\uC9C4\uC774\uB098 \uC2DC\uD2B8\uAC00 \uC5C6\uB294 \uC0AC\uC9C4\uC5D0 \uC4F4\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.",
9900
- "inputSchema": {
9901
- "type": "object",
9902
- "properties": {
9903
- "character_id": {
9904
- "type": "string",
9905
- "description": "\uC544\uBC14\uD0C0 id(chr_\u2026)"
9906
- },
9907
- "photo_id": {
9908
- "anyOf": [
9909
- {
9910
- "maxLength": 64,
9911
- "type": "string"
9912
- },
9913
- {
9914
- "type": "null"
9915
- }
9916
- ],
9917
- "default": null,
9918
- "description": "\uC2DC\uD2B8\uB97C \uB9CC\uB4E4 \uC0AC\uC9C4(democut_get_character \uC758 photos[].id). \uBE44\uC6B0\uBA74 \uB300\uD45C \uC0AC\uC9C4"
9919
- },
9920
- "confirmed_cost_krw": {
9921
- "minimum": 0,
9922
- "type": "integer"
9923
- },
9924
- "rate_version": {
9925
- "minimum": 1,
9926
- "type": "integer"
9927
- }
9928
- },
9929
- "required": [
9930
- "character_id",
9931
- "confirmed_cost_krw",
9932
- "rate_version"
9933
- ],
9934
- "additionalProperties": false
9935
- },
9936
- "outputSchema": {
9937
- "type": "object",
9938
- "properties": {
9939
- "job_id": {
9940
- "type": "string"
9941
- },
9942
- "quote": {},
9943
- "next_calls": {
9944
- "type": "array"
9945
- }
9946
- },
9947
- "required": [
9948
- "job_id"
9949
- ]
9950
- },
9951
- "annotations": {
9952
- "readOnlyHint": false,
9953
- "destructiveHint": false,
9954
- "idempotentHint": false,
9955
- "openWorldHint": false
9956
- }
9957
- },
9958
9743
  {
9959
9744
  "name": "democut_get_brand_kit",
9960
- "description": "\uC774 \uC6CC\uD06C\uC2A4\uD398\uC774\uC2A4\uC758 \uBE0C\uB79C\uB4DC\uD0B7(\uBE0C\uB79C\uB4DC \uC774\uB984\xB7\uB300\uD45C\uC0C9\xB7\uBCF4\uC870\uC0C9\xB7\uD1A4\xB7\uD5E4\uB529/\uBCF8\uBB38 \uD3F0\uD2B8\xB7\uB85C\uACE0)\uACFC \uACE0\uB97C \uC218 \uC788\uB294 \uD3F0\uD2B8(font_options \u2014 `is_default` \uAC00 \uD3F0\uD2B8\uB97C \uBE44\uC6E0\uC744 \uB54C \uC4F0\uC774\uB294 \uAC83). \uBD80\uC791\uC6A9\uB3C4 \uACFC\uAE08\uB3C4 \uC5C6\uB2E4. \uC800\uC7A5\uD55C \uC801\uC774 \uC5C6\uC73C\uBA74 \uBE48 \uBE0C\uB79C\uB4DC\uD0B7\uACFC rev 0 \uC774\uB2E4.",
9745
+ "description": "\uC774 \uC6CC\uD06C\uC2A4\uD398\uC774\uC2A4\uC758 \uBE0C\uB79C\uB4DC\uD0B7(\uBE0C\uB79C\uB4DC \uC774\uB984\xB7\uB300\uD45C\uC0C9\xB7\uBCF4\uC870\uC0C9\xB7\uD1A4\xB7\uD5E4\uB529/\uBCF8\uBB38 \uD3F0\uD2B8\xB7\uB85C\uACE0\xB7\uD654\uBA74 \uC2DC\uC5F0 \uBC30\uACBD/\uCEE4\uC11C/\uD0C0\uC774\uD2C0\uBC14)\uACFC \uACE0\uB97C \uC218 \uC788\uB294 \uD3F0\uD2B8(font_options \u2014 `is_default` \uAC00 \uD3F0\uD2B8\uB97C \uBE44\uC6E0\uC744 \uB54C \uC4F0\uC774\uB294 \uAC83). \uBD80\uC791\uC6A9\uB3C4 \uACFC\uAE08\uB3C4 \uC5C6\uB2E4. \uC800\uC7A5\uD55C \uC801\uC774 \uC5C6\uC73C\uBA74 \uBE48 \uBE0C\uB79C\uB4DC\uD0B7\uACFC rev 0 \uC774\uB2E4.",
9961
9746
  "inputSchema": {
9962
9747
  "type": "object",
9963
9748
  "properties": {},
@@ -9988,7 +9773,7 @@ var GENERATED_TOOLS = [
9988
9773
  },
9989
9774
  {
9990
9775
  "name": "democut_put_brand_kit",
9991
- "description": "\uBE0C\uB79C\uB4DC\uD0B7\uC744 \uC804\uCCB4 \uAD50\uCCB4\uD55C\uB2E4(0\uC6D0, If-Match rev). democut_get_brand_kit \uC758 rev \uB97C \uADF8\uB300\uB85C \uB123\uC5B4\uB77C \u2014 \uADF8 \uC0AC\uC774 \uB204\uAC00 \uBC14\uAFE8\uC73C\uBA74 409 \uC774\uACE0 \uBCD1\uD569\uD558\uC9C0 \uC54A\uB294\uB2E4. \uC548 \uC900 \uD544\uB4DC\uB294 \uBE44\uC6CC\uC9C0\uBBC0\uB85C \uBC14\uAFB8\uC9C0 \uC54A\uC744 \uAC12\uB3C4 democut_get_brand_kit \uC758 brand \uC5D0\uC11C \uC62E\uACA8 \uB123\uC5B4\uB77C. \uD3F0\uD2B8\uB294 font_options[].id(\uBE44\uC6B0\uBA74 is_default \uD3F0\uD2B8\uB85C \uB098\uC628\uB2E4), \uB85C\uACE0\uB294 democut_upload_asset \uC73C\uB85C \uC62C\uB9B0 ready \uC774\uBBF8\uC9C0\uC758 asset_id.",
9776
+ "description": "\uBE0C\uB79C\uB4DC\uD0B7\uC744 \uC804\uCCB4 \uAD50\uCCB4\uD55C\uB2E4(0\uC6D0, If-Match rev). democut_get_brand_kit \uC758 rev \uB97C \uADF8\uB300\uB85C \uB123\uC5B4\uB77C \u2014 \uADF8 \uC0AC\uC774 \uB204\uAC00 \uBC14\uAFE8\uC73C\uBA74 409 \uC774\uACE0 \uBCD1\uD569\uD558\uC9C0 \uC54A\uB294\uB2E4. \uC548 \uC900 \uD544\uB4DC\uB294 \uBE44\uC6CC\uC9C0\uBBC0\uB85C \uBC14\uAFB8\uC9C0 \uC54A\uC744 \uAC12\uB3C4 democut_get_brand_kit \uC758 brand \uC5D0\uC11C \uC62E\uACA8 \uB123\uC5B4\uB77C. \uD3F0\uD2B8\uB294 font_options[].id(\uBE44\uC6B0\uBA74 is_default \uD3F0\uD2B8\uB85C \uB098\uC628\uB2E4), \uB85C\uACE0\uB294 democut_upload_asset \uC73C\uB85C \uC62C\uB9B0 ready \uC774\uBBF8\uC9C0\uC758 asset_id. screen_background\xB7screen_cursor\xB7screen_titlebar \uB294 \uD654\uBA74 \uC2DC\uC5F0(layout_pattern=screen_demo) \uCEF7\uC758 \uBC30\uACBD\xB7\uCEE4\uC11C \uD504\uB9AC\uC14B\uACFC \uCC3D \uD0C0\uC774\uD2C0\uBC14(\uD2B8\uB798\uD53D \uB77C\uC774\uD2B8) \uCF2C\xB7\uB054\uC774\uB2E4(\uBE44\uC6B0\uBA74 gradient_1\xB7arrow_black\xB7\uCF2C, \uB2E4\uC74C\uC5D0 \uB9CC\uB4DC\uB294 \uCEF7\uBD80\uD130).",
9992
9777
  "inputSchema": {
9993
9778
  "type": "object",
9994
9779
  "properties": {
@@ -10076,6 +9861,59 @@ var GENERATED_TOOLS = [
10076
9861
  ],
10077
9862
  "default": null
10078
9863
  },
9864
+ "screen_background": {
9865
+ "anyOf": [
9866
+ {
9867
+ "enum": [
9868
+ "black",
9869
+ "white",
9870
+ "gradient_1",
9871
+ "gradient_2",
9872
+ "gradient_3",
9873
+ "image_1",
9874
+ "image_2",
9875
+ "image_3"
9876
+ ],
9877
+ "type": "string"
9878
+ },
9879
+ {
9880
+ "type": "null"
9881
+ }
9882
+ ],
9883
+ "default": null,
9884
+ "description": "\uD654\uBA74 \uC2DC\uC5F0 \uBC30\uACBD: black | white | gradient_1~3(CSS) | image_1~3(\uADF8\uB9BC) (\uBE44\uC6B0\uBA74 gradient_1)"
9885
+ },
9886
+ "screen_cursor": {
9887
+ "anyOf": [
9888
+ {
9889
+ "enum": [
9890
+ "arrow_black",
9891
+ "arrow_white",
9892
+ "hand",
9893
+ "arrowhead",
9894
+ "pixel"
9895
+ ],
9896
+ "type": "string"
9897
+ },
9898
+ {
9899
+ "type": "null"
9900
+ }
9901
+ ],
9902
+ "default": null,
9903
+ "description": "\uD654\uBA74 \uC2DC\uC5F0 \uCEE4\uC11C: arrow_black | arrow_white | hand | arrowhead | pixel (\uBE44\uC6B0\uBA74 arrow_black)"
9904
+ },
9905
+ "screen_titlebar": {
9906
+ "anyOf": [
9907
+ {
9908
+ "type": "boolean"
9909
+ },
9910
+ {
9911
+ "type": "null"
9912
+ }
9913
+ ],
9914
+ "default": null,
9915
+ "description": "\uD654\uBA74 \uC2DC\uC5F0 \uCC3D \uC704 \uD0C0\uC774\uD2C0\uBC14(\uD2B8\uB798\uD53D \uB77C\uC774\uD2B8) \uD45C\uC2DC \u2014 \uBE44\uC6B0\uBA74 true"
9916
+ },
10079
9917
  "rev": {
10080
9918
  "type": "integer",
10081
9919
  "minimum": 0,
@@ -12754,12 +12592,6 @@ var TOOL_META = {
12754
12592
  "method": "DELETE",
12755
12593
  "path": "/api/characters/{character_id}"
12756
12594
  },
12757
- "democut_add_character_photo": {
12758
- "cost": "none",
12759
- "group": "character",
12760
- "method": "POST",
12761
- "path": "/api/characters/{character_id}/photos"
12762
- },
12763
12595
  "democut_select_character_photo": {
12764
12596
  "cost": "none",
12765
12597
  "group": "character",
@@ -12778,18 +12610,6 @@ var TOOL_META = {
12778
12610
  "method": "POST",
12779
12611
  "path": "/api/characters/{character_id}/photos/generate"
12780
12612
  },
12781
- "democut_estimate_character_sheet": {
12782
- "cost": "quote",
12783
- "group": "character",
12784
- "method": "POST",
12785
- "path": "/api/characters/{character_id}/sheet/estimate"
12786
- },
12787
- "democut_make_character_sheet": {
12788
- "cost": "charge",
12789
- "group": "character",
12790
- "method": "POST",
12791
- "path": "/api/characters/{character_id}/sheet"
12792
- },
12793
12613
  "democut_get_brand_kit": {
12794
12614
  "cost": "none",
12795
12615
  "group": "brand",
@@ -14966,7 +14786,10 @@ function brandKitLine(v) {
14966
14786
  ["\uD1A4", b.tone],
14967
14787
  ["\uD5E4\uB529", b.heading_font],
14968
14788
  ["\uBCF8\uBB38", b.body_font],
14969
- ["\uB85C\uACE0", b.logo_asset_id]
14789
+ ["\uB85C\uACE0", b.logo_asset_id],
14790
+ ["\uD654\uBA74 \uC2DC\uC5F0 \uBC30\uACBD", b.screen_background],
14791
+ ["\uD654\uBA74 \uC2DC\uC5F0 \uCEE4\uC11C", b.screen_cursor],
14792
+ ["\uD654\uBA74 \uC2DC\uC5F0 \uD0C0\uC774\uD2C0\uBC14", b.screen_titlebar === false ? "\uB054" : null]
14970
14793
  ];
14971
14794
  const parts = [`rev ${v.rev}`];
14972
14795
  for (const [label, value] of pairs) if (value) parts.push(`${label} ${value}`);
@@ -15002,7 +14825,13 @@ function putBrandKit(a = {}, deps = {}) {
15002
14825
  tone: a.tone ?? null,
15003
14826
  heading_font: a.heading_font ?? null,
15004
14827
  body_font: a.body_font ?? null,
15005
- logo_asset_id: a.logo_asset_id ?? null
14828
+ logo_asset_id: a.logo_asset_id ?? null,
14829
+ // ★ 화면 시연 두 칸은 **값이 있을 때만** 싣는다 — CLI 가 API 보다 먼저 게시되므로, 늘 null 을 실으면 배포 겹침
14830
+ // 동안 옛 서버가 모르는 키로 요청 전체를 422(extra_forbidden)로 거부한다. 서버는 빠진 키를 null(비움)로 읽어 뜻이 같다.
14831
+ ...a.screen_background ? { screen_background: a.screen_background } : {},
14832
+ ...a.screen_cursor ? { screen_cursor: a.screen_cursor } : {},
14833
+ // ★ false(끔)는 보낸다 — 빠지면 서버가 비움(= 켬)으로 읽는다.
14834
+ ...typeof a.screen_titlebar === "boolean" ? { screen_titlebar: a.screen_titlebar } : {}
15006
14835
  };
15007
14836
  const base = resolveBaseUrl(deps.baseUrl);
15008
14837
  const out4 = await apiRequest(
@@ -15014,29 +14843,6 @@ function putBrandKit(a = {}, deps = {}) {
15014
14843
  return { text: `\uBE0C\uB79C\uB4DC\uD0B7\uC744 \uBC14\uAFE8\uC2B5\uB2C8\uB2E4: ${brandKitLine(out4)}`, structured: callableStructured(out4) };
15015
14844
  });
15016
14845
  }
15017
- function addCharacterPhoto(a = {}, deps = {}) {
15018
- return guarded(READ_ONLY, async () => {
15019
- const id = (a.character_id ?? "").trim();
15020
- if (!id) return { isError: true, text: "character_id \uAC00 \uD544\uC694\uD569\uB2C8\uB2E4." };
15021
- const assetId = (a.asset_id ?? "").trim();
15022
- if (!assetId) {
15023
- return {
15024
- isError: true,
15025
- text: "asset_id \uAC00 \uD544\uC694\uD569\uB2C8\uB2E4 \u2014 democut_upload_asset \uC73C\uB85C \uC774\uBBF8\uC9C0\uB97C \uBA3C\uC800 \uC62C\uB9AC\uC138\uC694."
15026
- };
15027
- }
15028
- const base = resolveBaseUrl(deps.baseUrl);
15029
- const out4 = await apiRequest(
15030
- base,
15031
- `/api/characters/${encodeURIComponent(id)}/photos`,
15032
- { method: "POST", body: { asset_id: assetId, ...a.note ? { note: a.note } : {} } },
15033
- deps
15034
- );
15035
- const added = out4.photos?.[out4.photos.length - 1];
15036
- const tail = added && out4.current_photo_id === added.id ? " \uC0C8 \uC0AC\uC9C4\uC744 \uB300\uD45C\uB85C \uC815\uD588\uC2B5\uB2C8\uB2E4." : "";
15037
- return { text: `\uC0AC\uC9C4\uC744 \uCD94\uAC00\uD588\uC2B5\uB2C8\uB2E4: ${characterLine(out4)}${tail}`, structured: callableStructured(out4) };
15038
- });
15039
- }
15040
14846
  function characterPhotoBody(a) {
15041
14847
  return {
15042
14848
  ...a.prompt ? { prompt: a.prompt } : {},
@@ -15106,68 +14912,6 @@ function makeCharacterPhoto(a = {}, deps = {}) {
15106
14912
  };
15107
14913
  });
15108
14914
  }
15109
- function estimateCharacterSheet(a = {}, deps = {}) {
15110
- return guarded(READ_ONLY, async () => {
15111
- const id = (a.character_id ?? "").trim();
15112
- if (!id) return { isError: true, text: "character_id \uAC00 \uD544\uC694\uD569\uB2C8\uB2E4." };
15113
- const base = resolveBaseUrl(deps.baseUrl);
15114
- const out4 = await apiRequest(
15115
- base,
15116
- `/api/characters/${encodeURIComponent(id)}/sheet/estimate`,
15117
- { method: "POST", body: a.photo_id ? { photo_id: a.photo_id } : {} },
15118
- deps
15119
- );
15120
- const item = out4.items?.[0];
15121
- if (!item || item.blocked_reason) {
15122
- const reason = item?.blocked_reason ?? "\uACAC\uC801\uD560 \uD56D\uBAA9\uC774 \uC5C6\uC2B5\uB2C8\uB2E4";
15123
- return {
15124
- text: `\uC544\uC9C1 \uCE90\uB9AD\uD130 \uC2DC\uD2B8\uB97C \uACAC\uC801\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4 \u2014 ${reason}
15125
- \uC774 \uC6CC\uD06C\uC2A4\uD398\uC774\uC2A4\uC5D0\uC11C AI \uC774\uBBF8\uC9C0 \uC0DD\uC131\uC744 \uC4F8 \uC218 \uC5C6\uB294 \uC0C1\uD0DC\uC785\uB2C8\uB2E4(\uAD00\uB9AC\uC790 \uBB38\uC758).`,
15126
- structured: callableStructured(out4)
15127
- };
15128
- }
15129
- const rows = (item.rows ?? []).map((r) => `${r.display_name || r.key} ${krw(r.krw)}`).join(", ") || "\uD589 \uC5C6\uC74C";
15130
- const lines = [
15131
- `\uCE90\uB9AD\uD130 \uC2DC\uD2B8 \uACAC\uC801 (\uC694\uC728 v${out4.rate_version}) \u2014 \uBD80\uC791\uC6A9\uB3C4 \uACFC\uAE08\uB3C4 \uC5C6\uC2B5\uB2C8\uB2E4`,
15132
- ` ${id}: ${krw(item.total_krw ?? 0)} (${rows})`,
15133
- `\uC794\uC561 ${krw(out4.balance_krw)} \u2192 \uB0A8\uC744 \uC794\uC561 ${krw(out4.balance_after_krw)}`,
15134
- out4.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.",
15135
- "\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."
15136
- ];
15137
- if (out4.mock) lines.push("(mock \uB2E8\uAC00\uC785\uB2C8\uB2E4 \u2014 \uC2E4\uC81C \uCCAD\uAD6C\uC640 \uB2E4\uB97C \uC218 \uC788\uC2B5\uB2C8\uB2E4.)");
15138
- return { text: lines.join("\n"), structured: callableStructured(out4) };
15139
- });
15140
- }
15141
- function makeCharacterSheet(a = {}, deps = {}) {
15142
- return guarded(SUBMITTING, async () => {
15143
- const id = (a.character_id ?? "").trim();
15144
- if (!id) return { isError: true, text: "character_id \uAC00 \uD544\uC694\uD569\uB2C8\uB2E4." };
15145
- const base = resolveBaseUrl(deps.baseUrl);
15146
- const out4 = await apiRequest(
15147
- base,
15148
- `/api/characters/${encodeURIComponent(id)}/sheet`,
15149
- {
15150
- method: "POST",
15151
- body: {
15152
- ...a.photo_id ? { photo_id: a.photo_id } : {},
15153
- // ★ 동의는 **명시**다 — 없으면 서버가 0원 동의로 읽고 409 로 거부한다(그것이 옳다).
15154
- confirmed_cost_krw: a.confirmed_cost_krw ?? 0,
15155
- rate_version: a.rate_version
15156
- }
15157
- },
15158
- deps
15159
- );
15160
- const total = out4.quote?.total_krw ?? 0;
15161
- return {
15162
- text: [
15163
- `\uCE90\uB9AD\uD130 \uC2DC\uD2B8\uB97C \uB9CC\uB4DC\uB294 \uC911\uC785\uB2C8\uB2E4 \u2014 ${out4.job_id}`,
15164
- `\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.`,
15165
- "democut_wait_jobs \uB85C \uB05D\uB098\uBA74 democut_get_character \uC758 photos[].sheet_asset_id \uC5D0 \uC2DC\uD2B8\uAC00 \uBD99\uC2B5\uB2C8\uB2E4 \u2014 \uB300\uD45C \uC0AC\uC9C4\uC758 \uC2DC\uD2B8\uB294 PIP \uC7A5\uBA74\uC758 \uCC38\uACE0\uB85C \uC4F0\uC785\uB2C8\uB2E4."
15166
- ].join("\n"),
15167
- structured: callableStructured(out4)
15168
- };
15169
- });
15170
- }
15171
14915
  function selectCharacterPhoto(a = {}, deps = {}) {
15172
14916
  return guarded(READ_ONLY, async () => {
15173
14917
  const id = (a.character_id ?? "").trim();
@@ -15806,18 +15550,12 @@ function dispatch(name, args, deps = {}) {
15806
15550
  return getCharacter(args, deps);
15807
15551
  case "democut_put_character":
15808
15552
  return putCharacter(args, deps);
15809
- case "democut_add_character_photo":
15810
- return addCharacterPhoto(args, deps);
15811
15553
  case "democut_select_character_photo":
15812
15554
  return selectCharacterPhoto(args, deps);
15813
15555
  case "democut_estimate_character_photo":
15814
15556
  return estimateCharacterPhoto(args, deps);
15815
15557
  case "democut_make_character_photo":
15816
15558
  return makeCharacterPhoto(args, deps);
15817
- case "democut_estimate_character_sheet":
15818
- return estimateCharacterSheet(args, deps);
15819
- case "democut_make_character_sheet":
15820
- return makeCharacterSheet(args, deps);
15821
15559
  case "democut_delete_character":
15822
15560
  return deleteCharacter(args, deps);
15823
15561
  default:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "democut",
3
- "version": "1.0.70",
3
+ "version": "1.0.73",
4
4
  "description": "DemoCut 에이전트 CLI — device flow 로그인(RFC 8628) + 영상 생성",
5
5
  "license": "MIT",
6
6
  "author": "InfoGrab",