illustrator-mcp-server 1.0.1 → 1.2.0

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 (71) hide show
  1. package/README.ja.md +36 -27
  2. package/README.md +38 -27
  3. package/dist/executor/cep-transport.d.ts +13 -0
  4. package/dist/executor/cep-transport.d.ts.map +1 -0
  5. package/dist/executor/cep-transport.js.map +1 -0
  6. package/dist/executor/file-transport.d.ts +6 -2
  7. package/dist/executor/file-transport.d.ts.map +1 -1
  8. package/dist/executor/file-transport.js +43 -11
  9. package/dist/executor/file-transport.js.map +1 -1
  10. package/dist/executor/jsx-runner.d.ts +10 -0
  11. package/dist/executor/jsx-runner.d.ts.map +1 -1
  12. package/dist/executor/jsx-runner.js +114 -33
  13. package/dist/executor/jsx-runner.js.map +1 -1
  14. package/dist/index.js +12 -2
  15. package/dist/index.js.map +1 -1
  16. package/dist/jsx/helpers/common.jsx +3 -1
  17. package/dist/tools/export/export-pdf.d.ts.map +1 -1
  18. package/dist/tools/export/export-pdf.js +2 -7
  19. package/dist/tools/export/export-pdf.js.map +1 -1
  20. package/dist/tools/export/export.d.ts.map +1 -1
  21. package/dist/tools/export/export.js +2 -14
  22. package/dist/tools/export/export.js.map +1 -1
  23. package/dist/tools/modify/apply-color-profile.d.ts.map +1 -1
  24. package/dist/tools/modify/apply-color-profile.js +2 -24
  25. package/dist/tools/modify/apply-color-profile.js.map +1 -1
  26. package/dist/tools/modify/convert-to-outlines.d.ts.map +1 -1
  27. package/dist/tools/modify/convert-to-outlines.js +2 -27
  28. package/dist/tools/modify/convert-to-outlines.js.map +1 -1
  29. package/dist/tools/modify/create-ellipse.d.ts.map +1 -1
  30. package/dist/tools/modify/create-ellipse.js +7 -55
  31. package/dist/tools/modify/create-ellipse.js.map +1 -1
  32. package/dist/tools/modify/create-line.d.ts.map +1 -1
  33. package/dist/tools/modify/create-line.js +6 -42
  34. package/dist/tools/modify/create-line.js.map +1 -1
  35. package/dist/tools/modify/create-path.d.ts.map +1 -1
  36. package/dist/tools/modify/create-path.js +7 -57
  37. package/dist/tools/modify/create-path.js.map +1 -1
  38. package/dist/tools/modify/create-rectangle.d.ts.map +1 -1
  39. package/dist/tools/modify/create-rectangle.js +7 -55
  40. package/dist/tools/modify/create-rectangle.js.map +1 -1
  41. package/dist/tools/modify/create-text-frame.d.ts.map +1 -1
  42. package/dist/tools/modify/create-text-frame.js +25 -43
  43. package/dist/tools/modify/create-text-frame.js.map +1 -1
  44. package/dist/tools/modify/modify-object.d.ts.map +1 -1
  45. package/dist/tools/modify/modify-object.js +23 -62
  46. package/dist/tools/modify/modify-object.js.map +1 -1
  47. package/dist/tools/modify/shared.d.ts +35 -0
  48. package/dist/tools/modify/shared.d.ts.map +1 -0
  49. package/dist/tools/modify/shared.js +91 -0
  50. package/dist/tools/modify/shared.js.map +1 -0
  51. package/dist/tools/read/get-colors.d.ts.map +1 -1
  52. package/dist/tools/read/get-colors.js +28 -31
  53. package/dist/tools/read/get-colors.js.map +1 -1
  54. package/dist/tools/read/get-effects.d.ts.map +1 -1
  55. package/dist/tools/read/get-effects.js +1 -3
  56. package/dist/tools/read/get-effects.js.map +1 -1
  57. package/dist/tools/read/get-images.d.ts.map +1 -1
  58. package/dist/tools/read/get-images.js +49 -7
  59. package/dist/tools/read/get-images.js.map +1 -1
  60. package/dist/tools/read/get-path-items.d.ts.map +1 -1
  61. package/dist/tools/read/get-path-items.js +5 -4
  62. package/dist/tools/read/get-path-items.js.map +1 -1
  63. package/dist/tools/read/list-text-frames.js +3 -3
  64. package/dist/tools/utility/preflight-check.d.ts.map +1 -1
  65. package/dist/tools/utility/preflight-check.js +102 -33
  66. package/dist/tools/utility/preflight-check.js.map +1 -1
  67. package/dist/utils/image-header.d.ts +11 -0
  68. package/dist/utils/image-header.d.ts.map +1 -0
  69. package/dist/utils/image-header.js +280 -0
  70. package/dist/utils/image-header.js.map +1 -0
  71. package/package.json +3 -4
@@ -3,15 +3,40 @@ import * as fs from 'fs/promises';
3
3
  import * as path from 'path';
4
4
  import { fileURLToPath } from 'url';
5
5
  import pLimit from 'p-limit';
6
- import { createTempFiles, writeParams, writeJsx, writeAppleScript, readResult, cleanupTempFiles, } from './file-transport.js';
6
+ import { createTempFiles, writeParams, writeJsx, writeAppleScript, writePowerShellScript, readResult, cleanupTempFiles, } from './file-transport.js';
7
7
  // Illustrator はシングルスレッド — JSX 実行を直列化
8
8
  const jsxLimit = pLimit(1);
9
+ // 実行中の JSX を追跡(グレースフルシャットダウン用)
10
+ let pendingCount = 0;
11
+ let pendingResolvers = [];
12
+ export function resolveTransport(platform = process.platform, envVar = process.env['ILLUSTRATOR_MCP_TRANSPORT']) {
13
+ if (envVar === 'osascript')
14
+ return 'osascript';
15
+ if (envVar === 'powershell')
16
+ return 'powershell';
17
+ if (platform === 'darwin')
18
+ return 'osascript';
19
+ if (platform === 'win32')
20
+ return 'powershell';
21
+ throw new Error(`Unsupported platform: ${platform}. Only macOS and Windows are supported.`);
22
+ }
23
+ const TRANSPORT = resolveTransport();
24
+ /**
25
+ * 実行中の JSX がすべて完了するまで待機する(シャットダウン用)
26
+ */
27
+ export function waitForPendingExecutions() {
28
+ if (pendingCount === 0)
29
+ return Promise.resolve();
30
+ return new Promise((resolve) => {
31
+ pendingResolvers.push(resolve);
32
+ });
33
+ }
9
34
  const JSX_HELPERS_PATH = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '../jsx/helpers/common.jsx');
10
35
  // タイムアウト設定(ms)
11
36
  const TIMEOUT_NORMAL = 30_000;
12
37
  const TIMEOUT_HEAVY = 60_000;
13
38
  /**
14
- * JSX コードを組み立てる(共通ヘルパー + ツール固有コード)
39
+ * osascript / PowerShell COM 用 JSX ビルダー(ファイルベース I/O)
15
40
  */
16
41
  async function buildJsx(toolScript, paramsPath, resultPath) {
17
42
  const helpers = await fs.readFile(JSX_HELPERS_PATH, 'utf-8');
@@ -22,9 +47,7 @@ var RESULT_PATH = ${JSON.stringify(resultPath)};
22
47
  ${toolScript}
23
48
  })();`;
24
49
  }
25
- /**
26
- * osascript エラーメッセージを解析して分かりやすいエラーに変換する
27
- */
50
+ // ─── エラーメッセージ変換 ────────────────────────────────────────────────────
28
51
  function parseOsascriptError(stderr) {
29
52
  if (stderr.includes('Connection is invalid')) {
30
53
  return 'Illustrator is not running. Please launch Adobe Illustrator.';
@@ -34,52 +57,108 @@ function parseOsascriptError(stderr) {
34
57
  }
35
58
  return stderr;
36
59
  }
37
- /**
38
- * JSX を実行する(排他制御なし 内部用)
39
- */
40
- async function executeJsxRaw(jsxCode, params, timeout = TIMEOUT_NORMAL, activate = false) {
60
+ function parsePowerShellError(stderr) {
61
+ if (stderr.includes('Cannot create ActiveX component') || stderr.includes('80080005') || stderr.includes('80040154')) {
62
+ return 'Illustrator is not running or is not installed. Please launch Adobe Illustrator.';
63
+ }
64
+ return stderr;
65
+ }
66
+ export function getExecFailureMessage(error, stderr, timeout, transport = 'osascript') {
67
+ if (error.code === 'ETIMEDOUT') {
68
+ return `Script execution timed out after ${timeout}ms`;
69
+ }
70
+ if (error.killed) {
71
+ return `Script execution was terminated${error.signal ? ` by signal ${error.signal}` : ''}`;
72
+ }
73
+ if (transport === 'powershell')
74
+ return parsePowerShellError(stderr || error.message);
75
+ return parseOsascriptError(stderr || error.message);
76
+ }
77
+ // ─── 各トランスポートの実行ロジック ─────────────────────────────────────────
78
+ async function executeViaOsascript(jsxCode, params, timeout, activate) {
41
79
  const files = createTempFiles();
42
80
  try {
43
- // 1. パラメータをJSONファイルに書き出し
44
81
  await writeParams(files.paramsPath, params);
45
- // 2. 共通ヘルパー + ツール固有コードを結合し、BOM付きUTF-8で保存
46
82
  const fullJsx = await buildJsx(jsxCode, files.paramsPath, files.resultPath);
47
83
  await writeJsx(files.scriptPath, fullJsx);
48
- // 3. AppleScriptをファイルに保存(activate: 書き出し等でIllustratorをフォアグラウンドにする)
49
- await writeAppleScript(files.scptPath, files.scriptPath, { activate });
50
- // 4. osascript を非同期実行
84
+ await writeAppleScript(files.runnerPath, files.scriptPath, { activate });
51
85
  await new Promise((resolve, reject) => {
52
- execFile('osascript', [files.scptPath], { timeout }, (error, _stdout, stderr) => {
86
+ execFile('osascript', [files.runnerPath], { timeout }, (error, _stdout, stderr) => {
53
87
  if (error) {
54
- const message = parseOsascriptError(stderr || error.message);
55
- reject(new Error(message));
88
+ reject(new Error(getExecFailureMessage(error, stderr, timeout, 'osascript')));
56
89
  }
57
90
  else {
58
91
  resolve();
59
92
  }
60
93
  });
61
94
  });
62
- // 5. 結果ファイルを読み取り
63
- let result;
64
- try {
65
- result = await readResult(files.resultPath);
66
- }
67
- catch (readError) {
68
- // osascript は成功したが結果ファイルが生成されなかった場合
69
- // JSX の異常終了(try/catch 外でのクラッシュ等)が原因
70
- throw new Error('JSX terminated without producing a result file. An uncaught exception may have occurred within the JSX script.');
71
- }
72
- // JSX 内でエラーが発生した場合
73
- if (result.error) {
74
- throw new Error(result.message || 'An unknown error occurred during JSX execution');
75
- }
76
- return result;
95
+ return await readAndValidateResult(files.resultPath);
77
96
  }
78
97
  finally {
79
- // 6. クリーンアップ
80
98
  await cleanupTempFiles(files);
81
99
  }
82
100
  }
101
+ async function executeViaPowerShell(jsxCode, params, timeout) {
102
+ const files = createTempFiles();
103
+ try {
104
+ await writeParams(files.paramsPath, params);
105
+ const fullJsx = await buildJsx(jsxCode, files.paramsPath, files.resultPath);
106
+ await writeJsx(files.scriptPath, fullJsx);
107
+ await writePowerShellScript(files.runnerPath, files.scriptPath);
108
+ await new Promise((resolve, reject) => {
109
+ execFile('powershell.exe', ['-ExecutionPolicy', 'Bypass', '-NonInteractive', '-File', files.runnerPath], { timeout }, (error, _stdout, stderr) => {
110
+ if (error) {
111
+ reject(new Error(getExecFailureMessage(error, stderr, timeout, 'powershell')));
112
+ }
113
+ else {
114
+ resolve();
115
+ }
116
+ });
117
+ });
118
+ return await readAndValidateResult(files.resultPath);
119
+ }
120
+ finally {
121
+ await cleanupTempFiles(files);
122
+ }
123
+ }
124
+ async function readAndValidateResult(resultPath) {
125
+ let result;
126
+ try {
127
+ result = await readResult(resultPath);
128
+ }
129
+ catch {
130
+ throw new Error('JSX terminated without producing a result file. An uncaught exception may have occurred within the JSX script.');
131
+ }
132
+ if (result.error) {
133
+ throw new Error(result.message || 'An unknown error occurred during JSX execution');
134
+ }
135
+ return result;
136
+ }
137
+ // ─── 公開 API ────────────────────────────────────────────────────────────────
138
+ /**
139
+ * JSX を実行する(排他制御なし — 内部用)
140
+ */
141
+ async function executeJsxRaw(jsxCode, params, timeout = TIMEOUT_NORMAL, activate = false) {
142
+ pendingCount++;
143
+ try {
144
+ switch (TRANSPORT) {
145
+ case 'osascript':
146
+ return await executeViaOsascript(jsxCode, params, timeout, activate);
147
+ case 'powershell':
148
+ return await executeViaPowerShell(jsxCode, params, timeout);
149
+ default: {
150
+ const _ = TRANSPORT;
151
+ throw new Error(`Unknown transport: ${_}`);
152
+ }
153
+ }
154
+ }
155
+ finally {
156
+ pendingCount--;
157
+ if (pendingCount === 0 && pendingResolvers.length > 0) {
158
+ pendingResolvers.splice(0).forEach((r) => r());
159
+ }
160
+ }
161
+ }
83
162
  /**
84
163
  * JSX を実行する(排他制御付き — 公開 API)
85
164
  */
@@ -92,4 +171,6 @@ export async function executeJsx(jsxCode, params, options) {
92
171
  export async function executeJsxHeavy(jsxCode, params) {
93
172
  return executeJsx(jsxCode, params, { timeout: TIMEOUT_HEAVY, activate: true });
94
173
  }
174
+ // ─── デバッグ用エクスポート ──────────────────────────────────────────────────
175
+ export { TRANSPORT };
95
176
  //# sourceMappingURL=jsx-runner.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"jsx-runner.js","sourceRoot":"","sources":["../../src/executor/jsx-runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"jsx-runner.js","sourceRoot":"","sources":["../../src/executor/jsx-runner.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -2,6 +2,7 @@
2
2
  import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
3
3
  import { createServer } from './server.js';
4
4
  import { ensureTmpDir, cleanupTmpDirSync } from './executor/file-transport.js';
5
+ import { waitForPendingExecutions } from './executor/jsx-runner.js';
5
6
  async function main() {
6
7
  // 一時ディレクトリを作成
7
8
  await ensureTmpDir();
@@ -9,8 +10,17 @@ async function main() {
9
10
  process.on('exit', () => {
10
11
  cleanupTmpDirSync();
11
12
  });
12
- process.on('SIGINT', () => process.exit(0));
13
- process.on('SIGTERM', () => process.exit(0));
13
+ // グレースフルシャットダウン: 実行中の JSX を待ってから終了
14
+ let shuttingDown = false;
15
+ const gracefulShutdown = async () => {
16
+ if (shuttingDown)
17
+ return;
18
+ shuttingDown = true;
19
+ await waitForPendingExecutions();
20
+ process.exit(0);
21
+ };
22
+ process.on('SIGINT', () => { void gracefulShutdown().catch(() => process.exit(1)); });
23
+ process.on('SIGTERM', () => { void gracefulShutdown().catch(() => process.exit(1)); });
14
24
  const server = createServer();
15
25
  const transport = new StdioServerTransport();
16
26
  await server.connect(transport);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAE/E,KAAK,UAAU,IAAI;IACjB,cAAc;IACd,MAAM,YAAY,EAAE,CAAC;IAErB,kBAAkB;IAClB,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;QACtB,iBAAiB,EAAE,CAAC;IACtB,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5C,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAE7C,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;IAC9B,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAClC,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;IAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAC/E,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAEpE,KAAK,UAAU,IAAI;IACjB,cAAc;IACd,MAAM,YAAY,EAAE,CAAC;IAErB,kBAAkB;IAClB,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;QACtB,iBAAiB,EAAE,CAAC;IACtB,CAAC,CAAC,CAAC;IAEH,mCAAmC;IACnC,IAAI,YAAY,GAAG,KAAK,CAAC;IACzB,MAAM,gBAAgB,GAAG,KAAK,IAAI,EAAE;QAClC,IAAI,YAAY;YAAE,OAAO;QACzB,YAAY,GAAG,IAAI,CAAC;QACpB,MAAM,wBAAwB,EAAE,CAAC;QACjC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC;IACF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,KAAK,gBAAgB,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACtF,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,KAAK,gBAAgB,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEvF,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;IAC9B,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAClC,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;IAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -73,7 +73,9 @@ function jsonParse(str) {
73
73
  function readParamsFile(filePath) {
74
74
  var f = new File(filePath);
75
75
  f.encoding = "UTF-8";
76
- f.open("r");
76
+ if (!f.open("r")) {
77
+ throw new Error("Cannot open params file: " + filePath);
78
+ }
77
79
  var content = f.read();
78
80
  f.close();
79
81
  return jsonParse(content);
@@ -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;AAmHpE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA2ChD"}
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;AAmHpE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAsChD"}
@@ -44,7 +44,7 @@ if (preflight) {
44
44
  pdfOpts.registrationMarks = true;
45
45
  }
46
46
  // 裁ち落としが未指定なら3mm自動設定(外トンボの表示に必要)
47
- if (options.bleed !== true && !options._bleed_set) {
47
+ if (options.bleed !== true) {
48
48
  var bleedPt = 8.504; // 3mm
49
49
  pdfOpts.bleedOffsetRect = [bleedPt, bleedPt, bleedPt, bleedPt];
50
50
  }
@@ -113,7 +113,7 @@ if (preflight) {
113
113
  export function register(server) {
114
114
  server.registerTool('export_pdf', {
115
115
  title: 'Export PDF',
116
- description: 'Export print-ready PDF',
116
+ description: 'Export print-ready PDF. Note: Illustrator will be activated (brought to foreground) during execution.',
117
117
  inputSchema: {
118
118
  output_path: z.string().describe('Output file path'),
119
119
  preset: z
@@ -133,11 +133,6 @@ export function register(server) {
133
133
  })
134
134
  .optional()
135
135
  .describe('PDF export options'),
136
- coordinate_system: z
137
- .enum(['artboard-web', 'document'])
138
- .optional()
139
- .default('artboard-web')
140
- .describe('Coordinate system (artboard-web: artboard-relative Y-down, document: native Illustrator coordinates)'),
141
136
  },
142
137
  annotations: {
143
138
  readOnlyHint: false,
@@ -1 +1 @@
1
- {"version":3,"file":"export-pdf.js","sourceRoot":"","sources":["../../../src/tools/export/export-pdf.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAE/D,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6Gf,CAAC;AAEF,MAAM,UAAU,QAAQ,CAAC,MAAiB;IACxC,MAAM,CAAC,YAAY,CACjB,YAAY,EACZ;QACE,KAAK,EAAE,YAAY;QACnB,WAAW,EAAE,wBAAwB;QACrC,WAAW,EAAE;YACX,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;YACpD,MAAM,EAAE,CAAC;iBACN,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,yCAAyC,CAAC;YACtD,OAAO,EAAE,CAAC;iBACP,MAAM,CAAC;gBACN,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;gBAC7D,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;gBACrG,gBAAgB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;gBACjH,kBAAkB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;gBACzE,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;gBACzD,gBAAgB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;gBACrE,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;gBAC7D,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;aACjE,CAAC;iBACD,QAAQ,EAAE;iBACV,QAAQ,CAAC,oBAAoB,CAAC;YACjC,iBAAiB,EAAE,CAAC;iBACjB,IAAI,CAAC,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;iBAClC,QAAQ,EAAE;iBACV,OAAO,CAAC,cAAc,CAAC;iBACvB,QAAQ,CAAC,sGAAsG,CAAC;SACpH;QACD,WAAW,EAAE;YACX,YAAY,EAAE,KAAK;YACnB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,KAAK;SACrB;KACF,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACtD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IAChF,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"export-pdf.js","sourceRoot":"","sources":["../../../src/tools/export/export-pdf.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAE/D,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6Gf,CAAC;AAEF,MAAM,UAAU,QAAQ,CAAC,MAAiB;IACxC,MAAM,CAAC,YAAY,CACjB,YAAY,EACZ;QACE,KAAK,EAAE,YAAY;QACnB,WAAW,EAAE,uGAAuG;QACpH,WAAW,EAAE;YACX,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;YACpD,MAAM,EAAE,CAAC;iBACN,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,yCAAyC,CAAC;YACtD,OAAO,EAAE,CAAC;iBACP,MAAM,CAAC;gBACN,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;gBAC7D,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;gBACrG,gBAAgB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;gBACjH,kBAAkB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;gBACzE,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;gBACzD,gBAAgB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;gBACrE,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;gBAC7D,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;aACjE,CAAC;iBACD,QAAQ,EAAE;iBACV,QAAQ,CAAC,oBAAoB,CAAC;SAClC;QACD,WAAW,EAAE;YACX,YAAY,EAAE,KAAK;YACnB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,KAAK;SACrB;KACF,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACtD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IAChF,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../../src/tools/export/export.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAgLpE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA2DhD"}
1
+ {"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../../src/tools/export/export.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA2KpE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAoDhD"}
@@ -8,7 +8,6 @@ if (preflight) {
8
8
  try {
9
9
  var params = readParamsFile(PARAMS_PATH);
10
10
  var doc = app.activeDocument;
11
- var coordSystem = params.coordinate_system || "artboard-web";
12
11
  var target = params.target;
13
12
  var format = params.format;
14
13
  var outputPath = params.output_path;
@@ -99,10 +98,6 @@ if (preflight) {
99
98
  if (typeof svgOpts.decimal_places === "number") {
100
99
  opts.coordinatePrecision = svgOpts.decimal_places;
101
100
  }
102
- if (typeof svgOpts.clean_metadata !== "undefined" && svgOpts.clean_metadata === false) {
103
- // default includes metadata; only skip if explicitly false
104
- }
105
-
106
101
  if (targetType === "artboard") {
107
102
  doc.artboards.setActiveArtboardIndex(artboardIndex);
108
103
  opts.artBoardClipping = true;
@@ -161,7 +156,7 @@ if (preflight) {
161
156
  // } else if (format === "webp") { ... }
162
157
  }
163
158
 
164
- if (targetType !== "error" && targetType !== "done") {
159
+ if (targetType !== "error") {
165
160
  writeResultFile(RESULT_PATH, { success: true, output_path: outputPath });
166
161
  }
167
162
 
@@ -174,7 +169,7 @@ if (preflight) {
174
169
  export function register(server) {
175
170
  server.registerTool('export', {
176
171
  title: 'Export',
177
- description: 'Export objects, groups, artboards, or selection',
172
+ description: 'Export objects, groups, artboards, or selection. Note: Illustrator will be activated (brought to foreground) during execution.',
178
173
  inputSchema: {
179
174
  target: z
180
175
  .string()
@@ -194,8 +189,6 @@ export function register(server) {
194
189
  .optional()
195
190
  .describe('ID naming scheme'),
196
191
  decimal_places: z.number().optional().describe('Decimal places'),
197
- responsive: z.boolean().optional().describe('Responsive SVG (unofficial)'),
198
- clean_metadata: z.boolean().optional().describe('Remove metadata'),
199
192
  })
200
193
  .optional()
201
194
  .describe('SVG export options'),
@@ -210,11 +203,6 @@ export function register(server) {
210
203
  })
211
204
  .optional()
212
205
  .describe('Raster export options'),
213
- coordinate_system: z
214
- .enum(['artboard-web', 'document'])
215
- .optional()
216
- .default('artboard-web')
217
- .describe('Coordinate system (artboard-web: artboard-relative Y-down, document: native Illustrator coordinates)'),
218
206
  },
219
207
  annotations: {
220
208
  readOnlyHint: false,
@@ -1 +1 @@
1
- {"version":3,"file":"export.js","sourceRoot":"","sources":["../../../src/tools/export/export.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"export.js","sourceRoot":"","sources":["../../../src/tools/export/export.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAE/D,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqKf,CAAC;AAEF,MAAM,UAAU,QAAQ,CAAC,MAAiB;IACxC,MAAM,CAAC,YAAY,CACjB,QAAQ,EACR;QACE,KAAK,EAAE,QAAQ;QACf,WAAW,EAAE,gIAAgI;QAC7I,WAAW,EAAE;YACX,MAAM,EAAE,CAAC;iBACN,MAAM,EAAE;iBACR,QAAQ,CAAC,0CAA0C,CAAC;YACvD,4CAA4C;YAC5C,2EAA2E;YAC3E,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC;YAC/D,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;YACpD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC;YAChE,WAAW,EAAE,CAAC;iBACX,MAAM,CAAC;gBACN,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;gBACzE,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;gBAC3E,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;gBACnE,SAAS,EAAE,CAAC;qBACT,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;qBACjC,QAAQ,EAAE;qBACV,QAAQ,CAAC,kBAAkB,CAAC;gBAC/B,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;aACjE,CAAC;iBACD,QAAQ,EAAE;iBACV,QAAQ,CAAC,oBAAoB,CAAC;YAClC,cAAc,EAAE,CAAC;iBACd,MAAM,CAAC;gBACN,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;gBACvD,UAAU,EAAE,CAAC;qBACV,MAAM,EAAE;qBACR,QAAQ,EAAE;qBACV,QAAQ,CAAC,uCAAuC,CAAC;gBACnD,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;aAC/D,CAAC;iBACD,QAAQ,EAAE;iBACV,QAAQ,CAAC,uBAAuB,CAAC;SACrC;QACD,WAAW,EAAE;YACZ,YAAY,EAAE,KAAK;YACnB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,KAAK;SACrB;KACF,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACtD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IAChF,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"apply-color-profile.d.ts","sourceRoot":"","sources":["../../../src/tools/modify/apply-color-profile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA8DpE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA6BhD"}
1
+ {"version":3,"file":"apply-color-profile.d.ts","sourceRoot":"","sources":["../../../src/tools/modify/apply-color-profile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAgDpE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAqBhD"}
@@ -9,7 +9,6 @@ if (preflight) {
9
9
  var params = readParamsFile(PARAMS_PATH);
10
10
  var doc = app.activeDocument;
11
11
  var profile = params.profile;
12
- var intent = params.intent;
13
12
 
14
13
  var oldProfile = "";
15
14
  try {
@@ -18,18 +17,6 @@ if (preflight) {
18
17
  oldProfile = "(unavailable)";
19
18
  }
20
19
 
21
- // Map intent string to RenderingIntent enum
22
- var renderIntent = null;
23
- if (intent === "perceptual") {
24
- renderIntent = RenderingIntent.PERCEPTUAL;
25
- } else if (intent === "relative") {
26
- renderIntent = RenderingIntent.RELATIVECOLORIMETRIC;
27
- } else if (intent === "saturation") {
28
- renderIntent = RenderingIntent.SATURATION;
29
- } else if (intent === "absolute") {
30
- renderIntent = RenderingIntent.ABSOLUTECOLORIMETRIC;
31
- }
32
-
33
20
  // ExtendScript does not provide a single-call color conversion API.
34
21
  // We can assign a color profile name to embed/change the profile.
35
22
  // For full ICC-based conversion, manual workflow or actions are needed.
@@ -48,7 +35,6 @@ if (preflight) {
48
35
  success: true,
49
36
  previousProfile: oldProfile,
50
37
  newProfile: profile,
51
- intent: intent,
52
38
  note: note
53
39
  });
54
40
  }
@@ -60,17 +46,9 @@ if (preflight) {
60
46
  export function register(server) {
61
47
  server.registerTool('apply_color_profile', {
62
48
  title: 'Apply Color Profile',
63
- description: 'Apply or convert color profile',
49
+ description: 'Apply or convert color profile. Note: Illustrator will be activated (brought to foreground) during execution.',
64
50
  inputSchema: {
65
51
  profile: z.string().describe('Color profile name or path'),
66
- intent: z
67
- .enum(['perceptual', 'relative', 'saturation', 'absolute'])
68
- .describe('Rendering intent'),
69
- coordinate_system: z
70
- .enum(['artboard-web', 'document'])
71
- .optional()
72
- .default('artboard-web')
73
- .describe('Coordinate system (artboard-web: artboard-relative Y-down, document: native Illustrator coordinates)'),
74
52
  },
75
53
  annotations: {
76
54
  readOnlyHint: false,
@@ -79,7 +57,7 @@ export function register(server) {
79
57
  openWorldHint: false,
80
58
  },
81
59
  }, async (params) => {
82
- const result = await executeJsx(jsxCode, params);
60
+ const result = await executeJsx(jsxCode, params, { activate: true });
83
61
  return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] };
84
62
  });
85
63
  }
@@ -1 +1 @@
1
- {"version":3,"file":"apply-color-profile.js","sourceRoot":"","sources":["../../../src/tools/modify/apply-color-profile.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAE1D,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwDf,CAAC;AAEF,MAAM,UAAU,QAAQ,CAAC,MAAiB;IACxC,MAAM,CAAC,YAAY,CACjB,qBAAqB,EACrB;QACE,KAAK,EAAE,qBAAqB;QAC5B,WAAW,EAAE,gCAAgC;QAC7C,WAAW,EAAE;YACX,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;YAC1D,MAAM,EAAE,CAAC;iBACN,IAAI,CAAC,CAAC,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC;iBAC1D,QAAQ,CAAC,kBAAkB,CAAC;YAC/B,iBAAiB,EAAE,CAAC;iBACjB,IAAI,CAAC,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;iBAClC,QAAQ,EAAE;iBACV,OAAO,CAAC,cAAc,CAAC;iBACvB,QAAQ,CAAC,sGAAsG,CAAC;SACpH;QACD,WAAW,EAAE;YACX,YAAY,EAAE,KAAK;YACnB,eAAe,EAAE,IAAI;YACrB,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,KAAK;SACrB;KACF,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACjD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IAChF,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"apply-color-profile.js","sourceRoot":"","sources":["../../../src/tools/modify/apply-color-profile.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAE1D,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0Cf,CAAC;AAEF,MAAM,UAAU,QAAQ,CAAC,MAAiB;IACxC,MAAM,CAAC,YAAY,CACjB,qBAAqB,EACrB;QACE,KAAK,EAAE,qBAAqB;QAC5B,WAAW,EAAE,+GAA+G;QAC5H,WAAW,EAAE;YACX,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;SAC3D;QACD,WAAW,EAAE;YACX,YAAY,EAAE,KAAK;YACnB,eAAe,EAAE,IAAI;YACrB,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,KAAK;SACrB;KACF,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QACrE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IAChF,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"convert-to-outlines.d.ts","sourceRoot":"","sources":["../../../src/tools/modify/convert-to-outlines.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAwGpE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA4BhD"}
1
+ {"version":3,"file":"convert-to-outlines.d.ts","sourceRoot":"","sources":["../../../src/tools/modify/convert-to-outlines.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAoFpE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAuBhD"}
@@ -12,26 +12,6 @@ if (preflight) {
12
12
  var count = 0;
13
13
  var hasError = false;
14
14
 
15
- function createColor(colorObj) {
16
- if (!colorObj || colorObj.type === "none") return new NoColor();
17
- if (colorObj.type === "cmyk") {
18
- var c = new CMYKColor();
19
- c.cyan = (typeof colorObj.c === "number") ? colorObj.c : 0;
20
- c.magenta = (typeof colorObj.m === "number") ? colorObj.m : 0;
21
- c.yellow = (typeof colorObj.y === "number") ? colorObj.y : 0;
22
- c.black = (typeof colorObj.k === "number") ? colorObj.k : 0;
23
- return c;
24
- }
25
- if (colorObj.type === "rgb") {
26
- var c = new RGBColor();
27
- c.red = (typeof colorObj.r === "number") ? colorObj.r : 0;
28
- c.green = (typeof colorObj.g === "number") ? colorObj.g : 0;
29
- c.blue = (typeof colorObj.b === "number") ? colorObj.b : 0;
30
- return c;
31
- }
32
- return new NoColor();
33
- }
34
-
35
15
  function findItemByUUID(uuid) {
36
16
  var doc = app.activeDocument;
37
17
  function search(items) {
@@ -102,16 +82,11 @@ if (preflight) {
102
82
  export function register(server) {
103
83
  server.registerTool('convert_to_outlines', {
104
84
  title: 'Convert to Outlines',
105
- description: 'Convert text to outlines',
85
+ description: 'Convert text to outlines. Note: Illustrator will be activated (brought to foreground) during execution.',
106
86
  inputSchema: {
107
87
  target: z
108
88
  .string()
109
89
  .describe('Target: "selection" (selected), "all" (all text), or layer name'),
110
- coordinate_system: z
111
- .enum(['artboard-web', 'document'])
112
- .optional()
113
- .default('artboard-web')
114
- .describe('Coordinate system (artboard-web: artboard-relative Y-down, document: native Illustrator coordinates)'),
115
90
  },
116
91
  annotations: {
117
92
  readOnlyHint: false,
@@ -120,7 +95,7 @@ export function register(server) {
120
95
  openWorldHint: false,
121
96
  },
122
97
  }, async (params) => {
123
- const result = await executeJsx(jsxCode, params);
98
+ const result = await executeJsx(jsxCode, params, { activate: true });
124
99
  return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] };
125
100
  });
126
101
  }
@@ -1 +1 @@
1
- {"version":3,"file":"convert-to-outlines.js","sourceRoot":"","sources":["../../../src/tools/modify/convert-to-outlines.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAE1D,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkGf,CAAC;AAEF,MAAM,UAAU,QAAQ,CAAC,MAAiB;IACxC,MAAM,CAAC,YAAY,CACjB,qBAAqB,EACrB;QACE,KAAK,EAAE,qBAAqB;QAC5B,WAAW,EAAE,0BAA0B;QACvC,WAAW,EAAE;YACX,MAAM,EAAE,CAAC;iBACN,MAAM,EAAE;iBACR,QAAQ,CAAC,iEAAiE,CAAC;YAC9E,iBAAiB,EAAE,CAAC;iBACjB,IAAI,CAAC,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;iBAClC,QAAQ,EAAE;iBACV,OAAO,CAAC,cAAc,CAAC;iBACvB,QAAQ,CAAC,sGAAsG,CAAC;SACpH;QACD,WAAW,EAAE;YACX,YAAY,EAAE,KAAK;YACnB,eAAe,EAAE,IAAI;YACrB,cAAc,EAAE,KAAK;YACrB,aAAa,EAAE,KAAK;SACrB;KACF,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACjD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IAChF,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"convert-to-outlines.js","sourceRoot":"","sources":["../../../src/tools/modify/convert-to-outlines.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAE1D,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8Ef,CAAC;AAEF,MAAM,UAAU,QAAQ,CAAC,MAAiB;IACxC,MAAM,CAAC,YAAY,CACjB,qBAAqB,EACrB;QACE,KAAK,EAAE,qBAAqB;QAC5B,WAAW,EAAE,yGAAyG;QACtH,WAAW,EAAE;YACX,MAAM,EAAE,CAAC;iBACN,MAAM,EAAE;iBACR,QAAQ,CAAC,iEAAiE,CAAC;SAC/E;QACD,WAAW,EAAE;YACX,YAAY,EAAE,KAAK;YACnB,eAAe,EAAE,IAAI;YACrB,cAAc,EAAE,KAAK;YACrB,aAAa,EAAE,KAAK;SACrB;KACF,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QACrE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IAChF,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"create-ellipse.d.ts","sourceRoot":"","sources":["../../../src/tools/modify/create-ellipse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAsGpE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAuChD"}
1
+ {"version":3,"file":"create-ellipse.d.ts","sourceRoot":"","sources":["../../../src/tools/modify/create-ellipse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA2DpE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAiChD"}