@vadenai/mcp-server 0.2.1 → 0.3.1

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.
@@ -0,0 +1,83 @@
1
+ /**
2
+ * MCP ツール引数のバリデーションユーティリティ
3
+ */
4
+ /**
5
+ * update_concept / update_wireframe 用のフィールド更新引数を検証・抽出する
6
+ *
7
+ * @returns { fieldPath, value } — 検証済みの値
8
+ * @throws {Error} 引数が不正な場合
9
+ */
10
+ export function validateFieldUpdateArgs(args) {
11
+ const fieldPath = String(args.field_path ?? "");
12
+ if (!fieldPath) {
13
+ throw new Error("field_path パラメータが必要です");
14
+ }
15
+ const rawValue = args.value;
16
+ if (rawValue === undefined) {
17
+ throw new Error("value パラメータが必要です");
18
+ }
19
+ const valueType = typeof rawValue;
20
+ if (rawValue !== null &&
21
+ valueType !== "string" &&
22
+ valueType !== "number" &&
23
+ valueType !== "boolean") {
24
+ throw new Error("value パラメータは string, number, boolean, null のいずれかである必要があります");
25
+ }
26
+ return { fieldPath, value: rawValue };
27
+ }
28
+ /**
29
+ * add_wireframe_element / add_concept_element 用の引数を検証・抽出する
30
+ *
31
+ * @returns { fieldPath, value } — 検証済みの値
32
+ * @throws {Error} 引数が不正な場合
33
+ */
34
+ export function validateArrayAddArgs(args) {
35
+ const fieldPath = String(args.field_path ?? "");
36
+ if (!fieldPath) {
37
+ throw new Error("field_path パラメータが必要です");
38
+ }
39
+ const value = args.value;
40
+ if (value === undefined) {
41
+ throw new Error("value パラメータが必要です");
42
+ }
43
+ return { fieldPath, value };
44
+ }
45
+ /**
46
+ * remove_wireframe_element / remove_concept_element 用の引数を検証・抽出する
47
+ *
48
+ * @returns { fieldPath } — 検証済みの値
49
+ * @throws {Error} 引数が不正な場合
50
+ */
51
+ export function validateArrayRemoveArgs(args) {
52
+ const fieldPath = String(args.field_path ?? "");
53
+ if (!fieldPath) {
54
+ throw new Error("field_path パラメータが必要です");
55
+ }
56
+ // 最後のセグメントが数値であることを検証
57
+ const lastSegment = fieldPath.split(".").pop() ?? "";
58
+ if (!/^\d+$/.test(lastSegment)) {
59
+ throw new Error("field_path の最後のセグメントは数値インデックスである必要があります(例: screens.2, screens.0.components.3)");
60
+ }
61
+ return { fieldPath };
62
+ }
63
+ /**
64
+ * push_wireframes 用の files 引数を検証する
65
+ *
66
+ * @returns 検証済みの files 配列
67
+ * @throws {Error} 引数が不正な場合
68
+ */
69
+ export function validatePushWireframesArgs(args) {
70
+ const files = args.files;
71
+ if (!Array.isArray(files) || files.length === 0) {
72
+ throw new Error("files パラメータが必要です(非空の配列)");
73
+ }
74
+ for (const file of files) {
75
+ if (typeof file !== "object" ||
76
+ file === null ||
77
+ typeof file.filename !== "string" ||
78
+ typeof file.content !== "string") {
79
+ throw new Error("files の各要素は { filename: string, content: string } である必要があります");
80
+ }
81
+ }
82
+ return files;
83
+ }
package/package.json CHANGED
@@ -10,7 +10,7 @@
10
10
  ],
11
11
  "homepage": "https://vaden.ai",
12
12
  "license": "MIT",
13
- "version": "0.2.1",
13
+ "version": "0.3.1",
14
14
  "type": "module",
15
15
  "publishConfig": {
16
16
  "access": "public"