illustrator-mcp-server 1.0.1 → 1.1.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.
- package/README.ja.md +23 -19
- package/README.md +26 -20
- package/dist/executor/file-transport.d.ts.map +1 -1
- package/dist/executor/file-transport.js +20 -3
- package/dist/executor/file-transport.js.map +1 -1
- package/dist/executor/jsx-runner.d.ts +6 -0
- package/dist/executor/jsx-runner.d.ts.map +1 -1
- package/dist/executor/jsx-runner.js +29 -2
- package/dist/executor/jsx-runner.js.map +1 -1
- package/dist/index.js +12 -2
- package/dist/index.js.map +1 -1
- package/dist/tools/export/export-pdf.d.ts.map +1 -1
- package/dist/tools/export/export-pdf.js +2 -7
- package/dist/tools/export/export-pdf.js.map +1 -1
- package/dist/tools/export/export.d.ts.map +1 -1
- package/dist/tools/export/export.js +2 -14
- package/dist/tools/export/export.js.map +1 -1
- package/dist/tools/modify/apply-color-profile.d.ts.map +1 -1
- package/dist/tools/modify/apply-color-profile.js +2 -7
- package/dist/tools/modify/apply-color-profile.js.map +1 -1
- package/dist/tools/modify/convert-to-outlines.d.ts.map +1 -1
- package/dist/tools/modify/convert-to-outlines.js +2 -7
- package/dist/tools/modify/convert-to-outlines.js.map +1 -1
- package/dist/tools/modify/create-ellipse.d.ts.map +1 -1
- package/dist/tools/modify/create-ellipse.js +7 -55
- package/dist/tools/modify/create-ellipse.js.map +1 -1
- package/dist/tools/modify/create-line.d.ts.map +1 -1
- package/dist/tools/modify/create-line.js +6 -42
- package/dist/tools/modify/create-line.js.map +1 -1
- package/dist/tools/modify/create-path.d.ts.map +1 -1
- package/dist/tools/modify/create-path.js +7 -57
- package/dist/tools/modify/create-path.js.map +1 -1
- package/dist/tools/modify/create-rectangle.d.ts.map +1 -1
- package/dist/tools/modify/create-rectangle.js +7 -55
- package/dist/tools/modify/create-rectangle.js.map +1 -1
- package/dist/tools/modify/create-text-frame.d.ts.map +1 -1
- package/dist/tools/modify/create-text-frame.js +5 -35
- package/dist/tools/modify/create-text-frame.js.map +1 -1
- package/dist/tools/modify/modify-object.d.ts.map +1 -1
- package/dist/tools/modify/modify-object.js +10 -56
- package/dist/tools/modify/modify-object.js.map +1 -1
- package/dist/tools/modify/shared.d.ts +34 -0
- package/dist/tools/modify/shared.d.ts.map +1 -0
- package/dist/tools/modify/shared.js +76 -0
- package/dist/tools/modify/shared.js.map +1 -0
- package/dist/tools/read/get-effects.d.ts.map +1 -1
- package/dist/tools/read/get-effects.js +1 -3
- package/dist/tools/read/get-effects.js.map +1 -1
- package/dist/tools/read/get-images.d.ts.map +1 -1
- package/dist/tools/read/get-images.js +45 -5
- package/dist/tools/read/get-images.js.map +1 -1
- package/dist/tools/read/list-text-frames.js +3 -3
- package/dist/tools/utility/preflight-check.d.ts.map +1 -1
- package/dist/tools/utility/preflight-check.js +102 -33
- package/dist/tools/utility/preflight-check.js.map +1 -1
- package/dist/utils/image-header.d.ts +11 -0
- package/dist/utils/image-header.d.ts.map +1 -0
- package/dist/utils/image-header.js +174 -0
- package/dist/utils/image-header.js.map +1 -0
- package/package.json +3 -3
package/README.ja.md
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
# Illustrator MCP Server
|
|
4
4
|
|
|
5
|
+
[](https://www.npmjs.com/package/illustrator-mcp-server)
|
|
5
6
|
[](LICENSE)
|
|
6
|
-
[](https://nodejs.org/)
|
|
7
7
|
[]()
|
|
8
8
|
[](https://www.adobe.com/products/illustrator.html)
|
|
9
9
|
[](https://modelcontextprotocol.io/)
|
|
@@ -71,45 +71,49 @@ Claude: → create_rectangle を実行
|
|
|
71
71
|
> **Note:** 初回実行時に macOS のオートメーション権限ダイアログが表示されます。
|
|
72
72
|
> システム設定 > プライバシーとセキュリティ > オートメーション で許可してください。
|
|
73
73
|
|
|
74
|
+
> **Note:** 操作系・書き出し系ツールの実行時、Illustrator がフォアグラウンドに切り替わります。Illustrator はアクティブな状態でないとこれらの処理を実行できないためです。
|
|
75
|
+
|
|
74
76
|
---
|
|
75
77
|
|
|
76
78
|
## セットアップ
|
|
77
79
|
|
|
78
|
-
###
|
|
79
|
-
|
|
80
|
-
```bash
|
|
81
|
-
git clone https://github.com/ie3jp/illustrator-mcp-server.git
|
|
82
|
-
cd illustrator-mcp-server
|
|
83
|
-
npm install
|
|
84
|
-
npm run build
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
### Claude Code に登録
|
|
80
|
+
### Claude Code
|
|
88
81
|
|
|
89
82
|
```bash
|
|
90
|
-
claude mcp add illustrator-mcp --
|
|
83
|
+
claude mcp add illustrator-mcp -- npx illustrator-mcp-server
|
|
91
84
|
```
|
|
92
85
|
|
|
93
|
-
### Claude Desktop
|
|
86
|
+
### Claude Desktop
|
|
94
87
|
|
|
95
|
-
`claude_desktop_config.json
|
|
88
|
+
`claude_desktop_config.json`(macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`)に追加:
|
|
96
89
|
|
|
97
90
|
```json
|
|
98
91
|
{
|
|
99
92
|
"mcpServers": {
|
|
100
93
|
"illustrator": {
|
|
101
|
-
"command": "
|
|
102
|
-
"args": ["
|
|
94
|
+
"command": "npx",
|
|
95
|
+
"args": ["illustrator-mcp-server"]
|
|
103
96
|
}
|
|
104
97
|
}
|
|
105
98
|
}
|
|
106
99
|
```
|
|
107
100
|
|
|
101
|
+
保存後、Claude Desktop を再起動してください。入力欄にMCPサーバーのインジケーター(ハンマーアイコン)が表示されます。
|
|
102
|
+
|
|
103
|
+
### ソースから
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
git clone https://github.com/ie3jp/illustrator-mcp-server.git
|
|
107
|
+
cd illustrator-mcp-server
|
|
108
|
+
npm install
|
|
109
|
+
npm run build
|
|
110
|
+
claude mcp add illustrator-mcp -- node /path/to/illustrator-mcp-server/dist/index.js
|
|
111
|
+
```
|
|
112
|
+
|
|
108
113
|
### 動作確認
|
|
109
114
|
|
|
110
115
|
```bash
|
|
111
|
-
|
|
112
|
-
npx @modelcontextprotocol/inspector node dist/index.js
|
|
116
|
+
npx @modelcontextprotocol/inspector npx illustrator-mcp-server
|
|
113
117
|
```
|
|
114
118
|
|
|
115
119
|
---
|
|
@@ -202,7 +206,7 @@ flowchart LR
|
|
|
202
206
|
|
|
203
207
|
### 座標系
|
|
204
208
|
|
|
205
|
-
|
|
209
|
+
座標を扱う read / modify ツールでは `coordinate_system` パラメータを受け付けます。export やドキュメント全体に対する utility ツールは、座標変換に依存しないため受け付けません。
|
|
206
210
|
|
|
207
211
|
| 値 | 原点 | Y 軸 | 用途 |
|
|
208
212
|
|---|---|---|---|
|
package/README.md
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
# Illustrator MCP Server
|
|
4
4
|
|
|
5
|
+
[](https://www.npmjs.com/package/illustrator-mcp-server)
|
|
5
6
|
[](LICENSE)
|
|
6
|
-
[](https://nodejs.org/)
|
|
7
7
|
[]()
|
|
8
8
|
[](https://www.adobe.com/products/illustrator.html)
|
|
9
9
|
[](https://modelcontextprotocol.io/)
|
|
@@ -12,6 +12,8 @@ An [MCP (Model Context Protocol)](https://modelcontextprotocol.io/) server for r
|
|
|
12
12
|
|
|
13
13
|
Control Illustrator directly from AI assistants like Claude — extract design information for web implementation, verify print-ready data, and export assets.
|
|
14
14
|
|
|
15
|
+
[](https://glama.ai/mcp/servers/ie3jp/illustrator-mcp-server)
|
|
16
|
+
|
|
15
17
|
---
|
|
16
18
|
|
|
17
19
|
## Usage Examples
|
|
@@ -64,45 +66,49 @@ Claude: → create_rectangle
|
|
|
64
66
|
|
|
65
67
|
> On first run, allow automation access in System Settings > Privacy & Security > Automation.
|
|
66
68
|
|
|
69
|
+
> **Note:** Modify and export tools will bring Illustrator to the foreground during execution. Illustrator requires being the active application to process these operations.
|
|
70
|
+
|
|
67
71
|
---
|
|
68
72
|
|
|
69
73
|
## Setup
|
|
70
74
|
|
|
71
|
-
###
|
|
75
|
+
### Claude Code
|
|
72
76
|
|
|
73
77
|
```bash
|
|
74
|
-
|
|
75
|
-
cd illustrator-mcp-server
|
|
76
|
-
npm install
|
|
77
|
-
npm run build
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
### Register with Claude Code
|
|
81
|
-
|
|
82
|
-
```bash
|
|
83
|
-
claude mcp add illustrator-mcp -- node /path/to/illustrator-mcp-server/dist/index.js
|
|
78
|
+
claude mcp add illustrator-mcp -- npx illustrator-mcp-server
|
|
84
79
|
```
|
|
85
80
|
|
|
86
|
-
###
|
|
81
|
+
### Claude Desktop
|
|
87
82
|
|
|
88
|
-
Add to `claude_desktop_config.json
|
|
83
|
+
Add to `claude_desktop_config.json` (`~/Library/Application Support/Claude/claude_desktop_config.json` on macOS):
|
|
89
84
|
|
|
90
85
|
```json
|
|
91
86
|
{
|
|
92
87
|
"mcpServers": {
|
|
93
88
|
"illustrator": {
|
|
94
|
-
"command": "
|
|
95
|
-
"args": ["
|
|
89
|
+
"command": "npx",
|
|
90
|
+
"args": ["illustrator-mcp-server"]
|
|
96
91
|
}
|
|
97
92
|
}
|
|
98
93
|
}
|
|
99
94
|
```
|
|
100
95
|
|
|
101
|
-
|
|
96
|
+
After saving, restart Claude Desktop. The MCP server indicator (hammer icon) should appear in the input area.
|
|
97
|
+
|
|
98
|
+
### From source
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
git clone https://github.com/ie3jp/illustrator-mcp-server.git
|
|
102
|
+
cd illustrator-mcp-server
|
|
103
|
+
npm install
|
|
104
|
+
npm run build
|
|
105
|
+
claude mcp add illustrator-mcp -- node /path/to/illustrator-mcp-server/dist/index.js
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
### Verify
|
|
102
109
|
|
|
103
110
|
```bash
|
|
104
|
-
|
|
105
|
-
npx @modelcontextprotocol/inspector node dist/index.js
|
|
111
|
+
npx @modelcontextprotocol/inspector npx illustrator-mcp-server
|
|
106
112
|
```
|
|
107
113
|
|
|
108
114
|
---
|
|
@@ -185,7 +191,7 @@ flowchart LR
|
|
|
185
191
|
|
|
186
192
|
### Coordinate System
|
|
187
193
|
|
|
188
|
-
|
|
194
|
+
Geometry-aware read and modify tools accept a `coordinate_system` parameter. Export and document-wide utility tools do not, because their behavior does not depend on coordinate conversion.
|
|
189
195
|
|
|
190
196
|
| Value | Origin | Y-axis | Use case |
|
|
191
197
|
|---|---|---|---|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-transport.d.ts","sourceRoot":"","sources":["../../src/executor/file-transport.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,OAAO,yBAAyB,CAAC;AAG9C,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAElD;AAED,wBAAgB,eAAe,IAAI,SAAS,CAS3C;AAED,wBAAsB,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAEpF;AAED,wBAAsB,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEjF;AAED,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,GAC/B,OAAO,CAAC,IAAI,CAAC,CAQf;AAED,wBAAsB,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAGrE;AAED,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"file-transport.d.ts","sourceRoot":"","sources":["../../src/executor/file-transport.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,OAAO,yBAAyB,CAAC;AAG9C,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAElD;AAED,wBAAgB,eAAe,IAAI,SAAS,CAS3C;AAED,wBAAsB,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAEpF;AAED,wBAAsB,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEjF;AAED,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,GAC/B,OAAO,CAAC,IAAI,CAAC,CAQf;AAED,wBAAsB,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAGrE;AAED,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBtE;AAED,wBAAgB,iBAAiB,IAAI,IAAI,CAMxC"}
|
|
@@ -37,19 +37,36 @@ export async function readResult(resultPath) {
|
|
|
37
37
|
return JSON.parse(raw.replace(/^\uFEFF/, ''));
|
|
38
38
|
}
|
|
39
39
|
export async function cleanupTempFiles(files) {
|
|
40
|
-
|
|
40
|
+
const paths = [
|
|
41
|
+
files.paramsPath,
|
|
42
|
+
files.scriptPath,
|
|
43
|
+
files.scptPath,
|
|
44
|
+
files.resultPath,
|
|
45
|
+
];
|
|
46
|
+
const results = await Promise.allSettled([
|
|
41
47
|
fs.unlink(files.paramsPath),
|
|
42
48
|
fs.unlink(files.scriptPath),
|
|
43
49
|
fs.unlink(files.scptPath),
|
|
44
50
|
fs.unlink(files.resultPath),
|
|
45
51
|
]);
|
|
52
|
+
results.forEach((result, index) => {
|
|
53
|
+
if (result.status === 'rejected' && !isIgnorableCleanupError(result.reason)) {
|
|
54
|
+
console.warn('Failed to clean up temp file:', paths[index], result.reason);
|
|
55
|
+
}
|
|
56
|
+
});
|
|
46
57
|
}
|
|
47
58
|
export function cleanupTmpDirSync() {
|
|
48
59
|
try {
|
|
49
60
|
rmSync(TMP_DIR, { recursive: true, force: true });
|
|
50
61
|
}
|
|
51
|
-
catch {
|
|
52
|
-
|
|
62
|
+
catch (e) {
|
|
63
|
+
console.warn('Failed to clean up temp directory:', TMP_DIR, e);
|
|
53
64
|
}
|
|
54
65
|
}
|
|
66
|
+
function isIgnorableCleanupError(error) {
|
|
67
|
+
return (typeof error === 'object'
|
|
68
|
+
&& error !== null
|
|
69
|
+
&& 'code' in error
|
|
70
|
+
&& error.code === 'ENOENT');
|
|
71
|
+
}
|
|
55
72
|
//# sourceMappingURL=file-transport.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-transport.js","sourceRoot":"","sources":["../../src/executor/file-transport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC;AAC5B,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,MAAM,CAAC,MAAM,OAAO,GAAG,sBAAsB,CAAC;AAC9C,MAAM,GAAG,GAAG,QAAQ,CAAC;AAUrB,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,MAAM,EAAE,GAAG,UAAU,EAAE,CAAC;IACxB,OAAO;QACL,EAAE;QACF,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC;QACnD,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC;QAClD,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;QAC9C,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC;KACpD,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,UAAkB,EAAE,MAAe;IACnE,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;AACxE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,UAAkB,EAAE,OAAe;IAChE,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,GAAG,GAAG,OAAO,EAAE,OAAO,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,QAAgB,EAChB,UAAkB,EAClB,OAAgC;IAEhC,MAAM,KAAK,GAAG,CAAC,sCAAsC,CAAC,CAAC;IACvD,IAAI,OAAO,EAAE,QAAQ,EAAE,CAAC;QACtB,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC3B,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,4BAA4B,UAAU,GAAG,CAAC,CAAC;IACtD,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACvB,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,UAAkB;IACjD,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACnD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,KAAgB;IACrD,MAAM,OAAO,CAAC,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"file-transport.js","sourceRoot":"","sources":["../../src/executor/file-transport.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,15 @@
|
|
|
1
|
+
import type { ExecFileException } from 'child_process';
|
|
2
|
+
/**
|
|
3
|
+
* 実行中の JSX がすべて完了するまで待機する(シャットダウン用)
|
|
4
|
+
*/
|
|
5
|
+
export declare function waitForPendingExecutions(): Promise<void>;
|
|
1
6
|
export interface JsxResult {
|
|
2
7
|
error?: boolean;
|
|
3
8
|
message?: string;
|
|
4
9
|
line?: number;
|
|
5
10
|
[key: string]: unknown;
|
|
6
11
|
}
|
|
12
|
+
export declare function getExecFailureMessage(error: ExecFileException, stderr: string, timeout: number): string;
|
|
7
13
|
/**
|
|
8
14
|
* JSX を実行する(排他制御付き — 公開 API)
|
|
9
15
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jsx-runner.d.ts","sourceRoot":"","sources":["../../src/executor/jsx-runner.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"jsx-runner.d.ts","sourceRoot":"","sources":["../../src/executor/jsx-runner.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAqBvD;;GAEG;AACH,wBAAgB,wBAAwB,IAAI,OAAO,CAAC,IAAI,CAAC,CAKxD;AAWD,MAAM,WAAW,SAAS;IACxB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAgCD,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,iBAAiB,EACxB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GACd,MAAM,CAQR;AAiED;;GAEG;AACH,wBAAsB,UAAU,CAC9B,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,GACjD,OAAO,CAAC,SAAS,CAAC,CAOpB;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,OAAO,GACf,OAAO,CAAC,SAAS,CAAC,CAEpB"}
|
|
@@ -6,6 +6,19 @@ import pLimit from 'p-limit';
|
|
|
6
6
|
import { createTempFiles, writeParams, writeJsx, writeAppleScript, readResult, cleanupTempFiles, } from './file-transport.js';
|
|
7
7
|
// Illustrator はシングルスレッド — JSX 実行を直列化
|
|
8
8
|
const jsxLimit = pLimit(1);
|
|
9
|
+
// 実行中の JSX を追跡(グレースフルシャットダウン用)
|
|
10
|
+
let pendingCount = 0;
|
|
11
|
+
let pendingResolve = null;
|
|
12
|
+
/**
|
|
13
|
+
* 実行中の JSX がすべて完了するまで待機する(シャットダウン用)
|
|
14
|
+
*/
|
|
15
|
+
export function waitForPendingExecutions() {
|
|
16
|
+
if (pendingCount === 0)
|
|
17
|
+
return Promise.resolve();
|
|
18
|
+
return new Promise((resolve) => {
|
|
19
|
+
pendingResolve = resolve;
|
|
20
|
+
});
|
|
21
|
+
}
|
|
9
22
|
const JSX_HELPERS_PATH = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '../jsx/helpers/common.jsx');
|
|
10
23
|
// タイムアウト設定(ms)
|
|
11
24
|
const TIMEOUT_NORMAL = 30_000;
|
|
@@ -34,11 +47,21 @@ function parseOsascriptError(stderr) {
|
|
|
34
47
|
}
|
|
35
48
|
return stderr;
|
|
36
49
|
}
|
|
50
|
+
export function getExecFailureMessage(error, stderr, timeout) {
|
|
51
|
+
if (error.code === 'ETIMEDOUT') {
|
|
52
|
+
return `Script execution timed out after ${timeout}ms`;
|
|
53
|
+
}
|
|
54
|
+
if (error.killed) {
|
|
55
|
+
return `Script execution was terminated${error.signal ? ` by signal ${error.signal}` : ''}`;
|
|
56
|
+
}
|
|
57
|
+
return parseOsascriptError(stderr || error.message);
|
|
58
|
+
}
|
|
37
59
|
/**
|
|
38
60
|
* JSX を実行する(排他制御なし — 内部用)
|
|
39
61
|
*/
|
|
40
62
|
async function executeJsxRaw(jsxCode, params, timeout = TIMEOUT_NORMAL, activate = false) {
|
|
41
63
|
const files = createTempFiles();
|
|
64
|
+
pendingCount++;
|
|
42
65
|
try {
|
|
43
66
|
// 1. パラメータをJSONファイルに書き出し
|
|
44
67
|
await writeParams(files.paramsPath, params);
|
|
@@ -51,8 +74,7 @@ async function executeJsxRaw(jsxCode, params, timeout = TIMEOUT_NORMAL, activate
|
|
|
51
74
|
await new Promise((resolve, reject) => {
|
|
52
75
|
execFile('osascript', [files.scptPath], { timeout }, (error, _stdout, stderr) => {
|
|
53
76
|
if (error) {
|
|
54
|
-
|
|
55
|
-
reject(new Error(message));
|
|
77
|
+
reject(new Error(getExecFailureMessage(error, stderr, timeout)));
|
|
56
78
|
}
|
|
57
79
|
else {
|
|
58
80
|
resolve();
|
|
@@ -78,6 +100,11 @@ async function executeJsxRaw(jsxCode, params, timeout = TIMEOUT_NORMAL, activate
|
|
|
78
100
|
finally {
|
|
79
101
|
// 6. クリーンアップ
|
|
80
102
|
await cleanupTempFiles(files);
|
|
103
|
+
pendingCount--;
|
|
104
|
+
if (pendingCount === 0 && pendingResolve) {
|
|
105
|
+
pendingResolve();
|
|
106
|
+
pendingResolve = null;
|
|
107
|
+
}
|
|
81
108
|
}
|
|
82
109
|
}
|
|
83
110
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jsx-runner.js","sourceRoot":"","sources":["../../src/executor/jsx-runner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;
|
|
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
|
-
|
|
13
|
-
|
|
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', () => { gracefulShutdown(); });
|
|
23
|
+
process.on('SIGTERM', () => { gracefulShutdown(); });
|
|
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;
|
|
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,gBAAgB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACpD,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,gBAAgB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAErD,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 +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,
|
|
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
|
|
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,
|
|
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;
|
|
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"
|
|
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":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAE/D,MAAM,OAAO,GAAG
|
|
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,
|
|
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,CAwBhD"}
|
|
@@ -60,17 +60,12 @@ if (preflight) {
|
|
|
60
60
|
export function register(server) {
|
|
61
61
|
server.registerTool('apply_color_profile', {
|
|
62
62
|
title: 'Apply Color Profile',
|
|
63
|
-
description: 'Apply or convert color profile',
|
|
63
|
+
description: 'Apply or convert color profile. Note: Illustrator will be activated (brought to foreground) during execution.',
|
|
64
64
|
inputSchema: {
|
|
65
65
|
profile: z.string().describe('Color profile name or path'),
|
|
66
66
|
intent: z
|
|
67
67
|
.enum(['perceptual', 'relative', 'saturation', 'absolute'])
|
|
68
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
69
|
},
|
|
75
70
|
annotations: {
|
|
76
71
|
readOnlyHint: false,
|
|
@@ -79,7 +74,7 @@ export function register(server) {
|
|
|
79
74
|
openWorldHint: false,
|
|
80
75
|
},
|
|
81
76
|
}, async (params) => {
|
|
82
|
-
const result = await executeJsx(jsxCode, params);
|
|
77
|
+
const result = await executeJsx(jsxCode, params, { activate: true });
|
|
83
78
|
return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] };
|
|
84
79
|
});
|
|
85
80
|
}
|
|
@@ -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
|
|
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,+GAA+G;QAC5H,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;SAChC;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,
|
|
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,CAuBhD"}
|
|
@@ -102,16 +102,11 @@ if (preflight) {
|
|
|
102
102
|
export function register(server) {
|
|
103
103
|
server.registerTool('convert_to_outlines', {
|
|
104
104
|
title: 'Convert to Outlines',
|
|
105
|
-
description: 'Convert text to outlines',
|
|
105
|
+
description: 'Convert text to outlines. Note: Illustrator will be activated (brought to foreground) during execution.',
|
|
106
106
|
inputSchema: {
|
|
107
107
|
target: z
|
|
108
108
|
.string()
|
|
109
109
|
.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
110
|
},
|
|
116
111
|
annotations: {
|
|
117
112
|
readOnlyHint: false,
|
|
@@ -120,7 +115,7 @@ export function register(server) {
|
|
|
120
115
|
openWorldHint: false,
|
|
121
116
|
},
|
|
122
117
|
}, async (params) => {
|
|
123
|
-
const result = await executeJsx(jsxCode, params);
|
|
118
|
+
const result = await executeJsx(jsxCode, params, { activate: true });
|
|
124
119
|
return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] };
|
|
125
120
|
});
|
|
126
121
|
}
|
|
@@ -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,
|
|
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,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;
|
|
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"}
|