illustrator-mcp-server 1.2.12 → 1.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.
@@ -305,6 +305,40 @@ function preflightChecks() {
305
305
  return null;
306
306
  }
307
307
 
308
+ // --- フォアグラウンド必須メニューコマンド実行 ---
309
+
310
+ /**
311
+ * app.executeMenuCommand のラッパー。
312
+ * 失敗時にフォアグラウンド要求のガイダンス付きエラーを投げる。
313
+ * executeMenuCommand はIllustratorが前面でないと失敗するため、
314
+ * ユーザーにウィンドウを切り替えないよう案内する。
315
+ */
316
+ function executeMenuCommandSafe(command) {
317
+ try {
318
+ app.executeMenuCommand(command);
319
+ } catch (e) {
320
+ throw new Error(
321
+ "Menu command \"" + command + "\" failed. " +
322
+ "Illustrator must be in the foreground during execution. " +
323
+ "Please do not switch windows while the operation is running. " +
324
+ "(コマンド \"" + command + "\" に失敗しました。実行中は Illustrator を前面に保ち、ウィンドウを切り替えないでください)" +
325
+ " / Original error: " + e.message
326
+ );
327
+ }
328
+ }
329
+
330
+ /**
331
+ * TrimMark メニューコマンドを実行する。
332
+ * v25 → レガシー の順にフォールバック。
333
+ */
334
+ function executeTrimMark() {
335
+ try {
336
+ executeMenuCommandSafe("TrimMark v25");
337
+ } catch (e1) {
338
+ executeMenuCommandSafe("TrimMark");
339
+ }
340
+ }
341
+
308
342
  // --- オブジェクトタイプ判定 ---
309
343
 
310
344
  function getItemType(item) {
@@ -1 +1 @@
1
- {"version":3,"file":"export-pdf.d.ts","sourceRoot":"","sources":["../../../src/tools/export/export-pdf.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAmLpE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAyChD"}
1
+ {"version":3,"file":"export-pdf.d.ts","sourceRoot":"","sources":["../../../src/tools/export/export-pdf.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAkRpE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAyChD"}
@@ -41,6 +41,68 @@ if (preflight) {
41
41
  }
42
42
  var options = params.options || {};
43
43
 
44
+ // --- 日本式トンボ: TrimMark コマンドでドキュメント上に生成 ---
45
+ // PDFSaveOptions.pageMarksType = PageMarksTypes.Japanese は
46
+ // Illustrator バージョンによって正しく反映されない場合がある。
47
+ // そのため日本式トンボはドキュメント上にパスとして生成し、
48
+ // アートボードを一時拡張して PDF に含める。書き出し後に復元する。
49
+ var usedDocumentMarks = false;
50
+ var trimMarkGroups = [];
51
+ var origAbRect = null;
52
+ var abIdx = doc.artboards.getActiveArtboardIndex();
53
+ if (options.marks_style === "japanese" && options.trim_marks === true) {
54
+ try {
55
+ app.preferences.setBooleanPreference("cropMarkStyle", true);
56
+
57
+ var groupCountBefore = doc.groupItems.length;
58
+
59
+ var abRect = doc.artboards[abIdx].artboardRect;
60
+ origAbRect = abRect.slice();
61
+ var tempRect = doc.pathItems.rectangle(abRect[1], abRect[0], abRect[2] - abRect[0], abRect[1] - abRect[3]);
62
+ tempRect.filled = false;
63
+ tempRect.stroked = false;
64
+
65
+ doc.selection = null;
66
+ tempRect.selected = true;
67
+ executeTrimMark();
68
+
69
+ try { tempRect.remove(); } catch (re) { /* consumed by command */ }
70
+ doc.selection = null;
71
+
72
+ var newGroupCount = doc.groupItems.length - groupCountBefore;
73
+ for (var g = 0; g < newGroupCount; g++) {
74
+ trimMarkGroups.push(doc.groupItems[g]);
75
+ }
76
+
77
+ // TrimMark がグループを生成しなかった場合はフォールバック
78
+ if (trimMarkGroups.length === 0) {
79
+ throw new Error("TrimMark command produced no marks");
80
+ }
81
+
82
+ // トンボが収まるようにアートボードを一時拡張
83
+ if (trimMarkGroups.length > 0) {
84
+ var mb = trimMarkGroups[0].geometricBounds.slice();
85
+ for (var g = 1; g < trimMarkGroups.length; g++) {
86
+ var gb = trimMarkGroups[g].geometricBounds;
87
+ if (gb[0] < mb[0]) mb[0] = gb[0];
88
+ if (gb[1] > mb[1]) mb[1] = gb[1];
89
+ if (gb[2] > mb[2]) mb[2] = gb[2];
90
+ if (gb[3] < mb[3]) mb[3] = gb[3];
91
+ }
92
+ doc.artboards[abIdx].artboardRect = [mb[0] - 1, mb[1] + 1, mb[2] + 1, mb[3] - 1];
93
+ }
94
+
95
+ usedDocumentMarks = true;
96
+ } catch (tmErr) {
97
+ // TrimMark コマンド失敗時は PDFSaveOptions にフォールバック
98
+ usedDocumentMarks = false;
99
+ // アートボードを復元(途中で拡張済みの場合)
100
+ if (origAbRect) {
101
+ try { doc.artboards[abIdx].artboardRect = origAbRect; } catch (restoreErr) {}
102
+ }
103
+ }
104
+ }
105
+
44
106
  var pdfOpts = new PDFSaveOptions();
45
107
 
46
108
  // Apply preset if specified
@@ -52,43 +114,53 @@ if (preflight) {
52
114
  pdfOpts.preserveEditability = false;
53
115
  }
54
116
 
55
- // トンボ種類(enum名とリテラル値の両方を試す)
56
- if (options.marks_style === "japanese") {
57
- pdfOpts.pageMarksType = PageMarksTypes.Japanese;
117
+ // トンボ種類
118
+ if (usedDocumentMarks) {
119
+ // ドキュメント上にトンボを生成済み → PDF のマークは OFF
120
+ pdfOpts.trimMarks = false;
58
121
  } else if (options.marks_style === "roman") {
59
122
  pdfOpts.pageMarksType = PageMarksTypes.Roman;
60
- }
61
-
62
- // トンボ ON/OFF
63
- if (options.trim_marks === true) {
64
- pdfOpts.trimMarks = true;
123
+ if (options.trim_marks === true) {
124
+ pdfOpts.trimMarks = true;
125
+ } else {
126
+ pdfOpts.trimMarks = false;
127
+ }
65
128
  } else {
66
- pdfOpts.trimMarks = false;
129
+ // marks_style 未指定 or フォールバック
130
+ if (options.marks_style === "japanese") {
131
+ // TrimMark コマンド失敗時のフォールバック
132
+ pdfOpts.pageMarksType = PageMarksTypes.Japanese;
133
+ }
134
+ if (options.trim_marks === true) {
135
+ pdfOpts.trimMarks = true;
136
+ } else {
137
+ pdfOpts.trimMarks = false;
138
+ }
67
139
  }
68
140
 
69
- // 日本式トンボの場合、必須設定を自動適用
70
- if (options.marks_style === "japanese" && options.trim_marks === true) {
71
- // レジストレーションマーク(センタートンボ)が未指定なら自動ON
141
+ // 日本式トンボ(PDFSaveOptions フォールバック時)の必須設定を自動適用
142
+ if (options.marks_style === "japanese" && options.trim_marks === true && !usedDocumentMarks) {
72
143
  if (typeof options.registration_marks === "undefined") {
73
144
  pdfOpts.registrationMarks = true;
74
145
  }
75
- // 裁ち落としが未指定なら3mm自動設定(外トンボの表示に必要)
76
146
  if (options.bleed !== true) {
77
147
  var bleedPt = 8.504; // 3mm
78
148
  pdfOpts.bleedOffsetRect = [bleedPt, bleedPt, bleedPt, bleedPt];
79
149
  }
80
150
  }
81
151
 
82
- // トンボの太さ(文字列・数値両対応)
83
- var tw = String(options.trim_mark_weight);
84
- if (tw === "0.125") {
85
- pdfOpts.trimMarkWeight = PDFTrimMarkWeight.TRIMMARKWEIGHT0125;
86
- } else if (tw === "0.25") {
87
- pdfOpts.trimMarkWeight = PDFTrimMarkWeight.TRIMMARKWEIGHT025;
88
- } else if (tw === "0.5") {
89
- pdfOpts.trimMarkWeight = PDFTrimMarkWeight.TRIMMARKWEIGHT05;
90
- } else if (options.trim_marks === true) {
91
- pdfOpts.trimMarkWeight = PDFTrimMarkWeight.TRIMMARKWEIGHT0125;
152
+ // トンボの太さ(文字列・数値両対応) — ドキュメントマーク時は不要
153
+ if (!usedDocumentMarks) {
154
+ var tw = String(options.trim_mark_weight);
155
+ if (tw === "0.125") {
156
+ pdfOpts.trimMarkWeight = PDFTrimMarkWeight.TRIMMARKWEIGHT0125;
157
+ } else if (tw === "0.25") {
158
+ pdfOpts.trimMarkWeight = PDFTrimMarkWeight.TRIMMARKWEIGHT025;
159
+ } else if (tw === "0.5") {
160
+ pdfOpts.trimMarkWeight = PDFTrimMarkWeight.TRIMMARKWEIGHT05;
161
+ } else if (options.trim_marks === true) {
162
+ pdfOpts.trimMarkWeight = PDFTrimMarkWeight.TRIMMARKWEIGHT0125;
163
+ }
92
164
  }
93
165
 
94
166
  // レジストレーションマーク
@@ -106,10 +178,9 @@ if (preflight) {
106
178
  pdfOpts.pageInformation = options.page_information;
107
179
  }
108
180
 
109
- // Bleed
110
- if (options.bleed === true) {
111
- // Set 3mm bleed on all sides (approx 8.504 pt)
112
- var bleedPt = 8.504;
181
+ // Bleed — ドキュメントマーク時はアートボード拡張済みなので bleed 不要
182
+ if (options.bleed === true && !usedDocumentMarks) {
183
+ var bleedPt = 8.504; // 3mm
113
184
  pdfOpts.bleedOffsetRect = [bleedPt, bleedPt, bleedPt, bleedPt];
114
185
  }
115
186
 
@@ -160,14 +231,38 @@ if (preflight) {
160
231
  if (!parentFolder.exists) {
161
232
  writeResultFile(RESULT_PATH, { error: true, message: "Output directory does not exist: " + parentFolder.fsName });
162
233
  } else {
163
- doc.saveAs(outFile, pdfOpts);
234
+ var saveError = null;
235
+ try {
236
+ doc.saveAs(outFile, pdfOpts);
237
+ } catch (saveErr) {
238
+ saveError = saveErr;
239
+ } finally {
240
+ // ドキュメントを元の状態に復元(saveAs の成否にかかわらず必ず実行)
241
+ if (usedDocumentMarks) {
242
+ for (var g = 0; g < trimMarkGroups.length; g++) {
243
+ try { trimMarkGroups[g].remove(); } catch (re) {}
244
+ }
245
+ if (origAbRect) {
246
+ try { doc.artboards[abIdx].artboardRect = origAbRect; } catch (restoreErr) {}
247
+ }
248
+ }
249
+ }
164
250
 
165
- // エクスポート後にファイル存在を検証
166
- var verifyFile = new File(outputPath);
167
- if (!verifyFile.exists) {
168
- writeResultFile(RESULT_PATH, { error: true, message: "PDF export completed but output file was not created. The path may not be writable: " + outputPath });
251
+ if (saveError) {
252
+ writeResultFile(RESULT_PATH, { error: true, message: "PDF export failed: " + saveError.message, line: saveError.line });
169
253
  } else {
170
- writeResultFile(RESULT_PATH, { success: true, output_path: outputPath });
254
+ // エクスポート後にファイル存在を検証
255
+ var verifyFile = new File(outputPath);
256
+ if (!verifyFile.exists) {
257
+ writeResultFile(RESULT_PATH, { error: true, message: "PDF export completed but output file was not created. The path may not be writable: " + outputPath });
258
+ } else {
259
+ var result = { success: true, output_path: outputPath };
260
+ if (usedDocumentMarks) {
261
+ result.japanese_marks_method = "document_trimmark";
262
+ result.japanese_marks_note = "Japanese crop marks were generated as document paths via TrimMark command for reliable rendering, then removed after export.";
263
+ }
264
+ writeResultFile(RESULT_PATH, result);
265
+ }
171
266
  }
172
267
  }
173
268
  } catch (e) {
@@ -1 +1 @@
1
- {"version":3,"file":"export-pdf.js","sourceRoot":"","sources":["../../../src/tools/export/export-pdf.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"export-pdf.js","sourceRoot":"","sources":["../../../src/tools/export/export-pdf.ts"],"names":[],"mappings":"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"}
@@ -106,7 +106,7 @@ if (preflight) {
106
106
 
107
107
  if (useIsolatedExport) {
108
108
  // 選択オブジェクトをコピー
109
- app.executeMenuCommand("copy");
109
+ executeMenuCommandSafe("copy");
110
110
 
111
111
  // 対象オブジェクトの bounds を取得([left, top, right, bottom] in document coords)
112
112
  var vb = targetItem.visibleBounds;
@@ -119,7 +119,7 @@ if (preflight) {
119
119
  tempDoc.artboards[0].artboardRect = [0, objH, objW, 0];
120
120
 
121
121
  // ペースト
122
- app.executeMenuCommand("paste");
122
+ executeMenuCommandSafe("paste");
123
123
 
124
124
  // ペーストされたオブジェクトをアートボード中央に配置
125
125
  if (tempDoc.selection && tempDoc.selection.length > 0) {
@@ -0,0 +1,3 @@
1
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export declare function register(server: McpServer): void;
3
+ //# sourceMappingURL=create-crop-marks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-crop-marks.d.ts","sourceRoot":"","sources":["../../../src/tools/modify/create-crop-marks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA4LpE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAkDhD"}
@@ -0,0 +1,226 @@
1
+ import { z } from 'zod';
2
+ import { executeToolJsx } from '../tool-executor.js';
3
+ import { WRITE_ANNOTATIONS } from './shared.js';
4
+ /**
5
+ * create_crop_marks — トリムマーク(トンボ)の作成
6
+ *
7
+ * Illustrator の「トリムマークを作成」コマンド(TrimMark v25)を使い、
8
+ * アクティブなアートボード or 選択オブジェクトにトンボを生成する。
9
+ *
10
+ * ■ アートボードモード(デフォルト)
11
+ * アートボードぴったりのサイズで作成しているケースを想定。
12
+ * トンボ生成後、トンボが収まるようにアートボードを拡張する。
13
+ *
14
+ * ■ 選択オブジェクトモード(use_selection: true)
15
+ * ユーザが選択したオブジェクトに対してトンボを生成。
16
+ * アートボードは変更しない。
17
+ *
18
+ * locale パラメータからユーザの国を推定し、日本式/西洋式を自動切替する。
19
+ * - 日本 (ja) → 日本式トンボ(二重線、3mm 塗り足し表示)
20
+ * - その他 → 西洋式トンボ(一重線)
21
+ *
22
+ * @see https://note.com/dtp_tranist/n/n40e3e39cf9f2
23
+ * JSX API: app.executeMenuCommand('TrimMark v25'), app.preferences.setBooleanPreference('cropMarkStyle', ...)
24
+ */
25
+ const jsxCode = `
26
+ var preflight = preflightChecks();
27
+ if (preflight) {
28
+ writeResultFile(RESULT_PATH, preflight);
29
+ } else {
30
+ try {
31
+ var params = readParamsFile(PARAMS_PATH);
32
+ var doc = app.activeDocument;
33
+ var useSelection = params.use_selection === true;
34
+
35
+ // --- Determine crop mark style ---
36
+ var style = params.style || "auto";
37
+ var locale = params.locale || "";
38
+ var resolvedStyle = "western";
39
+
40
+ var japaneseLocales = ["ja", "ja-jp", "ja_jp"];
41
+
42
+ if (style === "japanese") {
43
+ resolvedStyle = "japanese";
44
+ } else if (style === "western") {
45
+ resolvedStyle = "western";
46
+ } else {
47
+ // auto: detect from locale
48
+ var localeLower = locale.toLowerCase().replace(/_/g, "-");
49
+ for (var i = 0; i < japaneseLocales.length; i++) {
50
+ if (localeLower === japaneseLocales[i] || localeLower.indexOf("ja") === 0) {
51
+ resolvedStyle = "japanese";
52
+ break;
53
+ }
54
+ }
55
+ if (!locale) {
56
+ try {
57
+ var aiLocale = app.locale;
58
+ if (aiLocale && aiLocale.toLowerCase().indexOf("ja") === 0) {
59
+ resolvedStyle = "japanese";
60
+ }
61
+ } catch (e) {}
62
+ }
63
+ }
64
+
65
+ // Set crop mark style preference
66
+ app.preferences.setBooleanPreference("cropMarkStyle", resolvedStyle === "japanese");
67
+
68
+ if (useSelection) {
69
+ // --- 選択オブジェクトモード ---
70
+ var sel = doc.selection;
71
+ if (!sel || sel.length === 0) {
72
+ writeResultFile(RESULT_PATH, { error: true, message: "No objects selected. Select one or more objects to create crop marks for." });
73
+ } else {
74
+ var groupCountBefore = doc.groupItems.length;
75
+
76
+ executeTrimMark();
77
+ doc.selection = null;
78
+
79
+ var newGroups = doc.groupItems.length - groupCountBefore;
80
+ if (newGroups === 0) {
81
+ writeResultFile(RESULT_PATH, { error: true, message: "TrimMark command ran but created no marks. The selected object may not be suitable for crop marks." });
82
+ } else {
83
+ var styleName = (resolvedStyle === "japanese") ? "Japanese (日本式トンボ)" : "Western (西洋式トンボ)";
84
+ writeResultFile(RESULT_PATH, {
85
+ success: true,
86
+ mode: "selection",
87
+ crop_mark_style: resolvedStyle,
88
+ style_display_name: styleName,
89
+ mark_groups_created: newGroups,
90
+ artboard_modified: false,
91
+ description: "Crop marks created for the selected object(s). Artboard was not modified."
92
+ });
93
+ }
94
+ }
95
+ } else {
96
+ // --- アートボードモード ---
97
+ var abIndex = (typeof params.artboard_index === "number") ? params.artboard_index : doc.artboards.getActiveArtboardIndex();
98
+ if (abIndex < 0 || abIndex >= doc.artboards.length) {
99
+ writeResultFile(RESULT_PATH, { error: true, message: "Invalid artboard index: " + abIndex });
100
+ } else {
101
+ var ab = doc.artboards[abIndex];
102
+ var abRect = ab.artboardRect;
103
+ var origAbRect = abRect.slice(); // 元のアートボード矩形を保存
104
+ var abWidth = abRect[2] - abRect[0];
105
+ var abHeight = abRect[1] - abRect[3];
106
+
107
+ // アートボードサイズの一時矩形を作成
108
+ var tempRect = doc.pathItems.rectangle(abRect[1], abRect[0], abWidth, abHeight);
109
+ tempRect.filled = false;
110
+ tempRect.stroked = false;
111
+
112
+ doc.artboards.setActiveArtboardIndex(abIndex);
113
+
114
+ var groupCountBefore = doc.groupItems.length;
115
+
116
+ doc.selection = null;
117
+ tempRect.selected = true;
118
+
119
+ executeTrimMark();
120
+
121
+ try { tempRect.remove(); } catch (removeErr) {}
122
+ doc.selection = null;
123
+
124
+ // トンボグループの参照を取得
125
+ var newGroupCount = doc.groupItems.length - groupCountBefore;
126
+ if (newGroupCount === 0) {
127
+ writeResultFile(RESULT_PATH, { error: true, message: "TrimMark command ran but created no marks." });
128
+ } else {
129
+ var trimMarkGroups = [];
130
+ for (var g = 0; g < newGroupCount; g++) {
131
+ trimMarkGroups.push(doc.groupItems[g]);
132
+ }
133
+
134
+ // トンボ全体の外接矩形を計算してアートボードを拡張
135
+ if (trimMarkGroups.length > 0) {
136
+ var mb = trimMarkGroups[0].geometricBounds.slice();
137
+ for (var g = 1; g < trimMarkGroups.length; g++) {
138
+ var gb = trimMarkGroups[g].geometricBounds;
139
+ if (gb[0] < mb[0]) mb[0] = gb[0];
140
+ if (gb[1] > mb[1]) mb[1] = gb[1];
141
+ if (gb[2] > mb[2]) mb[2] = gb[2];
142
+ if (gb[3] < mb[3]) mb[3] = gb[3];
143
+ }
144
+ // アートボードをトンボが収まるサイズに拡張(少し余裕を持たせる: 1pt)
145
+ ab.artboardRect = [mb[0] - 1, mb[1] + 1, mb[2] + 1, mb[3] - 1];
146
+ }
147
+
148
+ var newAbRect = ab.artboardRect;
149
+ var styleName = (resolvedStyle === "japanese") ? "Japanese (日本式トンボ)" : "Western (西洋式トンボ)";
150
+ var detectionMethod = "";
151
+ if (style === "japanese" || style === "western") {
152
+ detectionMethod = "explicitly specified";
153
+ } else if (locale) {
154
+ detectionMethod = "detected from locale: " + locale;
155
+ } else {
156
+ detectionMethod = "detected from Illustrator locale";
157
+ }
158
+
159
+ writeResultFile(RESULT_PATH, {
160
+ success: true,
161
+ mode: "artboard",
162
+ crop_mark_style: resolvedStyle,
163
+ style_display_name: styleName,
164
+ detection_method: detectionMethod,
165
+ mark_groups_created: newGroupCount,
166
+ artboard_index: abIndex,
167
+ artboard_name: ab.name,
168
+ artboard_modified: true,
169
+ original_artboard_size: { width: abWidth, height: abHeight },
170
+ new_artboard_size: {
171
+ width: newAbRect[2] - newAbRect[0],
172
+ height: newAbRect[1] - newAbRect[3]
173
+ },
174
+ description: (resolvedStyle === "japanese")
175
+ ? "Japanese crop marks created. Artboard expanded to include all marks."
176
+ : "Western crop marks created. Artboard expanded to include all marks."
177
+ });
178
+ }
179
+ }
180
+ }
181
+ } catch (e) {
182
+ writeResultFile(RESULT_PATH, { error: true, message: "Failed to create crop marks: " + e.message, line: e.line });
183
+ }
184
+ }
185
+ `;
186
+ export function register(server) {
187
+ server.registerTool('create_crop_marks', {
188
+ title: 'Create Crop Marks (トンボ)',
189
+ description: 'Create crop marks (トンボ / trim marks) on the active artboard or selected objects. ' +
190
+ 'By default, creates marks for the artboard and expands the artboard to include all marks. ' +
191
+ 'With use_selection=true, creates marks for the currently selected object(s) without modifying the artboard. ' +
192
+ 'Automatically selects Japanese-style (日本式) or Western-style crop marks based on locale. ' +
193
+ 'Note: Illustrator will be activated (brought to foreground) during execution.',
194
+ inputSchema: {
195
+ style: z
196
+ .enum(['auto', 'japanese', 'western'])
197
+ .optional()
198
+ .default('auto')
199
+ .describe('Crop mark style. "japanese" = double-line marks with 3mm bleed indication (日本式トンボ). ' +
200
+ '"western" = single-line marks (西洋式トンボ). ' +
201
+ '"auto" = detect from locale parameter or Illustrator locale.'),
202
+ locale: z
203
+ .string()
204
+ .optional()
205
+ .describe('User locale (e.g. "ja", "ja-JP", "en-US", "de-DE"). Used to auto-detect crop mark style when style is "auto". ' +
206
+ 'Japanese locales (ja*) → Japanese marks, others → Western marks. ' +
207
+ 'If omitted, falls back to Illustrator\'s own locale setting.'),
208
+ use_selection: z
209
+ .boolean()
210
+ .optional()
211
+ .default(false)
212
+ .describe('If true, create crop marks for the currently selected object(s) instead of the artboard. ' +
213
+ 'The artboard will NOT be modified. If false (default), creates marks for the artboard and expands it to fit.'),
214
+ artboard_index: z
215
+ .number()
216
+ .int()
217
+ .min(0)
218
+ .optional()
219
+ .describe('Target artboard index (0-based). Defaults to the currently active artboard. Ignored when use_selection is true.'),
220
+ },
221
+ annotations: WRITE_ANNOTATIONS,
222
+ }, async (params) => {
223
+ return executeToolJsx(jsxCode, params, { activate: true });
224
+ });
225
+ }
226
+ //# sourceMappingURL=create-crop-marks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-crop-marks.js","sourceRoot":"","sources":["../../../src/tools/modify/create-crop-marks.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgKf,CAAC;AAEF,MAAM,UAAU,QAAQ,CAAC,MAAiB;IACxC,MAAM,CAAC,YAAY,CACjB,mBAAmB,EACnB;QACE,KAAK,EAAE,yBAAyB;QAChC,WAAW,EACT,mFAAmF;YACnF,4FAA4F;YAC5F,8GAA8G;YAC9G,0FAA0F;YAC1F,+EAA+E;QACjF,WAAW,EAAE;YACX,KAAK,EAAE,CAAC;iBACL,IAAI,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;iBACrC,QAAQ,EAAE;iBACV,OAAO,CAAC,MAAM,CAAC;iBACf,QAAQ,CACP,sFAAsF;gBACtF,0CAA0C;gBAC1C,8DAA8D,CAC/D;YACH,MAAM,EAAE,CAAC;iBACN,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,gHAAgH;gBAChH,mEAAmE;gBACnE,8DAA8D,CAC/D;YACH,aAAa,EAAE,CAAC;iBACb,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,OAAO,CAAC,KAAK,CAAC;iBACd,QAAQ,CACP,2FAA2F;gBAC3F,8GAA8G,CAC/G;YACH,cAAc,EAAE,CAAC;iBACd,MAAM,EAAE;iBACR,GAAG,EAAE;iBACL,GAAG,CAAC,CAAC,CAAC;iBACN,QAAQ,EAAE;iBACV,QAAQ,CAAC,iHAAiH,CAAC;SAC/H;QACD,WAAW,EAAE,iBAAiB;KAC/B,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,OAAO,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7D,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA2EpE,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAyExD"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA4EpE,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA0ExD"}
@@ -41,6 +41,7 @@ import { register as registerReplaceColor } from './modify/replace-color.js';
41
41
  import { register as registerManageLayers } from './modify/manage-layers.js';
42
42
  import { register as registerPlaceColorChips } from './modify/place-color-chips.js';
43
43
  import { register as registerPlaceStyleGuide } from './modify/place-style-guide.js';
44
+ import { register as registerCreateCropMarks } from './modify/create-crop-marks.js';
44
45
  // Phase 5: ドキュメント管理ツール
45
46
  import { register as registerCreateDocument } from './modify/create-document.js';
46
47
  import { register as registerCloseDocument } from './modify/close-document.js';
@@ -109,6 +110,7 @@ export function registerAllTools(server) {
109
110
  registerManageLayers(server);
110
111
  registerPlaceColorChips(server);
111
112
  registerPlaceStyleGuide(server);
113
+ registerCreateCropMarks(server);
112
114
  // Phase 5: ドキュメント管理
113
115
  registerCreateDocument(server);
114
116
  registerCloseDocument(server);
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "illustrator-mcp-server",
3
- "version": "1.2.12",
3
+ "version": "1.3.1",
4
4
  "mcpName": "io.github.ie3jp/illustrator-mcp-server",
5
5
  "description": "MCP server for reading, manipulating, and exporting Adobe Illustrator design data",
6
6
  "type": "module",