democut 1.0.57 → 1.0.58

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 +127 -1
  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.57";
6919
+ var VERSION = "1.0.58";
6920
6920
 
6921
6921
  // src/device-flow.ts
6922
6922
  var DeviceFlowError = class extends Error {
@@ -9026,6 +9026,84 @@ var GENERATED_TOOLS = [
9026
9026
  "openWorldHint": false
9027
9027
  }
9028
9028
  },
9029
+ {
9030
+ "name": "democut_list_folders",
9031
+ "description": "\uD504\uB85C\uC81D\uD2B8 \uD3F4\uB354 \uBAA9\uB85D(1\uB381\uC2A4, \uC911\uCCA9 \uC5C6\uC74C) + \uD3F4\uB354\uBCC4 \uD504\uB85C\uC81D\uD2B8 \uC218. \uBD80\uC791\uC6A9\uB3C4 \uACFC\uAE08\uB3C4 \uC5C6\uB2E4. \uD504\uB85C\uC81D\uD2B8\uB97C \uD3F4\uB354\uC5D0 \uB123\uC73C\uB824\uBA74 \uC5EC\uAE30\uC11C \uBC1B\uC740 id \uB97C democut_update_project \uC758 folder_id \uC5D0 \uC900\uB2E4. \uB2E4\uC74C \uD638\uCD9C: democut_create_folder, democut_update_project.",
9032
+ "inputSchema": {
9033
+ "type": "object",
9034
+ "properties": {},
9035
+ "required": [],
9036
+ "additionalProperties": false
9037
+ },
9038
+ "outputSchema": {
9039
+ "type": "object",
9040
+ "properties": {
9041
+ "folders": {
9042
+ "type": "array"
9043
+ }
9044
+ },
9045
+ "required": [
9046
+ "folders"
9047
+ ]
9048
+ },
9049
+ "annotations": {
9050
+ "readOnlyHint": true,
9051
+ "destructiveHint": false,
9052
+ "idempotentHint": true,
9053
+ "openWorldHint": false
9054
+ }
9055
+ },
9056
+ {
9057
+ "name": "democut_create_folder",
9058
+ "description": "\uD504\uB85C\uC81D\uD2B8 \uD3F4\uB354\uB97C \uB9CC\uB4E0\uB2E4(0\uC6D0). \uAC19\uC740 \uC774\uB984\uC744 \uC5EC\uB7FF \uB9CC\uB4E4 \uC218 \uC788\uC73C\uB2C8 **\uBA3C\uC800 democut_list_folders \uB85C \uC788\uB294\uC9C0 \uBCF4\uB77C** \u2014 \uBB3B\uC9C0 \uC54A\uACE0 \uB9CC\uB4E4\uBA74 \uAC19\uC740 \uC774\uB984\uC758 \uD3F4\uB354\uAC00 \uC313\uC778\uB2E4. \uB9CC\uB4E0 \uB4A4 \uD504\uB85C\uC81D\uD2B8\uB97C \uB123\uB294 \uAC83\uC740 update_project(folder_id=\u2026) \uB2E4. \uB2E4\uC74C \uD638\uCD9C: democut_update_project, democut_list_folders.",
9059
+ "inputSchema": {
9060
+ "type": "object",
9061
+ "properties": {
9062
+ "name": {
9063
+ "description": "\uD3F4\uB354 \uC774\uB984(1~80\uC790, \uC55E\uB4A4 \uACF5\uBC31\uC740 \uC11C\uBC84\uAC00 \uC790\uB978\uB2E4)",
9064
+ "maxLength": 80,
9065
+ "minLength": 1,
9066
+ "type": "string"
9067
+ }
9068
+ },
9069
+ "required": [
9070
+ "name"
9071
+ ],
9072
+ "additionalProperties": false
9073
+ },
9074
+ "outputSchema": {
9075
+ "type": "object",
9076
+ "properties": {
9077
+ "id": {
9078
+ "type": "string"
9079
+ },
9080
+ "name": {
9081
+ "type": "string"
9082
+ },
9083
+ "project_count": {
9084
+ "type": "integer"
9085
+ },
9086
+ "created_at": {
9087
+ "type": "string"
9088
+ },
9089
+ "updated_at": {
9090
+ "type": "string"
9091
+ }
9092
+ },
9093
+ "required": [
9094
+ "id",
9095
+ "name",
9096
+ "created_at",
9097
+ "updated_at"
9098
+ ]
9099
+ },
9100
+ "annotations": {
9101
+ "readOnlyHint": false,
9102
+ "destructiveHint": false,
9103
+ "idempotentHint": false,
9104
+ "openWorldHint": false
9105
+ }
9106
+ },
9029
9107
  {
9030
9108
  "name": "democut_credit_balance",
9031
9109
  "description": "\uB0B4 \uC6CC\uD06C\uC2A4\uD398\uC774\uC2A4\uC758 \uD06C\uB808\uB527 \uC794\uC561. \uBD80\uC791\uC6A9\uB3C4 \uACFC\uAE08\uB3C4 \uC5C6\uB2E4. \uB3C8\uC774 \uB098\uAC00\uB294 \uC791\uC5C5(democut_make_cuts \uB4F1)\uC744 \uC81C\uCD9C\uD558\uAE30 **\uC804\uC5D0** \uD655\uC778\uD558\uB77C \u2014 \uBD80\uC871\uD558\uBA74 \uC81C\uCD9C\uC774 402 \uB85C \uAC70\uBD80\uB418\uACE0, \uADF8\uAC83\uC744 \uBBF8\uB9AC \uC544\uB294 \uD3B8\uC774 \uB0AB\uB2E4(democut_estimate_cuts \uC758 can_afford \uAC00 \uC788\uC73C\uBA74 \uB9E4\uBC88 \uBD80\uB97C \uD544\uC694\uB294 \uC5C6\uB2E4). \uBAA8\uC790\uB77C\uBA74 \uC0AC\uC6A9\uC790\uC5D0\uAC8C \uC54C\uB9AC\uACE0 \uC6CC\uD06C\uC2A4\uD398\uC774\uC2A4 \uAD00\uB9AC\uC790\uC5D0\uAC8C \uCDA9\uC804\uC744 \uC694\uCCAD\uD558\uB3C4\uB85D \uC548\uB0B4\uD558\uB77C \u2014 \uB124\uAC00 \uC9C1\uC811 \uCDA9\uC804\uD560 \uC218\uB294 \uC5C6\uB2E4.",
@@ -12519,6 +12597,18 @@ var TOOL_META = {
12519
12597
  "method": "POST",
12520
12598
  "path": "/api/projects/{slug}/cuts/{cut_id}/images/generate"
12521
12599
  },
12600
+ "democut_list_folders": {
12601
+ "cost": "none",
12602
+ "group": "core",
12603
+ "method": "GET",
12604
+ "path": "/api/folders"
12605
+ },
12606
+ "democut_create_folder": {
12607
+ "cost": "none",
12608
+ "group": "core",
12609
+ "method": "POST",
12610
+ "path": "/api/folders"
12611
+ },
12522
12612
  "democut_credit_balance": {
12523
12613
  "cost": "none",
12524
12614
  "group": "credits",
@@ -14632,6 +14722,37 @@ function deleteCutVersion(a = {}, deps = {}) {
14632
14722
  };
14633
14723
  });
14634
14724
  }
14725
+ function listFolders(_a3 = {}, deps = {}) {
14726
+ return guarded(READ_ONLY, async () => {
14727
+ const base = resolveBaseUrl(deps.baseUrl);
14728
+ const out4 = await apiRequest(base, "/api/folders", {}, deps);
14729
+ if (!out4.folders?.length) {
14730
+ return { text: "\uD3F4\uB354\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4. democut_create_folder \uB85C \uB9CC\uB4DC\uC138\uC694.", structured: callableStructured(out4) };
14731
+ }
14732
+ return {
14733
+ text: [
14734
+ `\uD3F4\uB354 ${out4.folders.length}\uAC1C \u2014 id \xB7 \uC774\uB984 \xB7 \uD504\uB85C\uC81D\uD2B8 \uC218:`,
14735
+ ...out4.folders.map((f) => ` ${f.id} \xB7 ${f.name} \xB7 \uD504\uB85C\uC81D\uD2B8 ${f.project_count ?? 0}\uAC1C`),
14736
+ "\uD504\uB85C\uC81D\uD2B8\uB97C \uB123\uC73C\uB824\uBA74 democut_update_project \uC758 folder_id \uC5D0 \uC704 id \uB97C \uC8FC\uC138\uC694."
14737
+ ].join("\n"),
14738
+ structured: callableStructured(out4)
14739
+ };
14740
+ });
14741
+ }
14742
+ function createFolder(a = {}, deps = {}) {
14743
+ return guarded(READ_ONLY, async () => {
14744
+ if (!(a.name ?? "").trim()) return { isError: true, text: "name \uC774 \uD544\uC694\uD569\uB2C8\uB2E4." };
14745
+ const base = resolveBaseUrl(deps.baseUrl);
14746
+ const out4 = await apiRequest(base, "/api/folders", { method: "POST", body: { name: a.name } }, deps);
14747
+ return {
14748
+ text: [
14749
+ `\uD3F4\uB354\uB97C \uB9CC\uB4E4\uC5C8\uC2B5\uB2C8\uB2E4: ${out4.name} [${out4.id}]`,
14750
+ `\uD504\uB85C\uC81D\uD2B8\uB97C \uB123\uC73C\uB824\uBA74 democut_update_project(slug=\u2026, folder_id=${out4.id}) \uB97C \uBD80\uB974\uC138\uC694.`
14751
+ ].join("\n"),
14752
+ structured: callableStructured(out4)
14753
+ };
14754
+ });
14755
+ }
14635
14756
  function characterLine(c) {
14636
14757
  const photos = c.photos?.length ? `\uC0AC\uC9C4 ${c.photos.length}\uC7A5` : "\uC0AC\uC9C4 \uC5C6\uC74C";
14637
14758
  return `${c.name} [${c.id}] rev=${c.rev} \xB7 ${photos}${c.current_photo_id ? " (\uB300\uD45C \uC788\uC74C)" : ""}`;
@@ -15477,6 +15598,11 @@ function dispatch(name, args, deps = {}) {
15477
15598
  return selectCutVersion(args, deps);
15478
15599
  case "democut_delete_cut_version":
15479
15600
  return deleteCutVersion(args, deps);
15601
+ // ── 프로젝트 폴더(1뎁스) ──
15602
+ case "democut_list_folders":
15603
+ return listFolders(args, deps);
15604
+ case "democut_create_folder":
15605
+ return createFolder(args, deps);
15480
15606
  // ── 아바타(캐릭터) CRUD (MR 19a) ──
15481
15607
  case "democut_list_characters":
15482
15608
  return listCharacters(args, deps);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "democut",
3
- "version": "1.0.57",
3
+ "version": "1.0.58",
4
4
  "description": "DemoCut 에이전트 CLI — device flow 로그인(RFC 8628) + 영상 생성",
5
5
  "license": "MIT",
6
6
  "author": "InfoGrab",