illustrator-mcp-server 1.2.4 → 1.2.6

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 (251) hide show
  1. package/README.ja.md +527 -107
  2. package/README.md +512 -89
  3. package/dist/executor/jsx-runner.d.ts +1 -0
  4. package/dist/executor/jsx-runner.d.ts.map +1 -1
  5. package/dist/executor/jsx-runner.js +33 -19
  6. package/dist/executor/jsx-runner.js.map +1 -1
  7. package/dist/jsx/helpers/common.jsx +192 -7
  8. package/dist/prompts/print-preflight-workflow.d.ts +3 -0
  9. package/dist/prompts/print-preflight-workflow.d.ts.map +1 -0
  10. package/dist/prompts/print-preflight-workflow.js +45 -0
  11. package/dist/prompts/print-preflight-workflow.js.map +1 -0
  12. package/dist/prompts/quick-layout.d.ts +3 -0
  13. package/dist/prompts/quick-layout.d.ts.map +1 -0
  14. package/dist/prompts/quick-layout.js +42 -0
  15. package/dist/prompts/quick-layout.js.map +1 -0
  16. package/dist/prompts/registry.d.ts +3 -0
  17. package/dist/prompts/registry.d.ts.map +1 -0
  18. package/dist/prompts/registry.js +7 -0
  19. package/dist/prompts/registry.js.map +1 -0
  20. package/dist/server.d.ts.map +1 -1
  21. package/dist/server.js +3 -1
  22. package/dist/server.js.map +1 -1
  23. package/dist/tools/export/export-pdf.d.ts.map +1 -1
  24. package/dist/tools/export/export-pdf.js +48 -18
  25. package/dist/tools/export/export-pdf.js.map +1 -1
  26. package/dist/tools/export/export.d.ts.map +1 -1
  27. package/dist/tools/export/export.js +41 -49
  28. package/dist/tools/export/export.js.map +1 -1
  29. package/dist/tools/modify/align-objects.d.ts +3 -0
  30. package/dist/tools/modify/align-objects.d.ts.map +1 -0
  31. package/dist/tools/modify/align-objects.js +202 -0
  32. package/dist/tools/modify/align-objects.js.map +1 -0
  33. package/dist/tools/modify/apply-color-profile.d.ts.map +1 -1
  34. package/dist/tools/modify/apply-color-profile.js +16 -11
  35. package/dist/tools/modify/apply-color-profile.js.map +1 -1
  36. package/dist/tools/modify/apply-graphic-style.d.ts +3 -0
  37. package/dist/tools/modify/apply-graphic-style.d.ts.map +1 -0
  38. package/dist/tools/modify/apply-graphic-style.js +106 -0
  39. package/dist/tools/modify/apply-graphic-style.js.map +1 -0
  40. package/dist/tools/modify/apply-text-style.d.ts +3 -0
  41. package/dist/tools/modify/apply-text-style.d.ts.map +1 -0
  42. package/dist/tools/modify/apply-text-style.js +118 -0
  43. package/dist/tools/modify/apply-text-style.js.map +1 -0
  44. package/dist/tools/modify/close-document.d.ts.map +1 -1
  45. package/dist/tools/modify/close-document.js +9 -9
  46. package/dist/tools/modify/close-document.js.map +1 -1
  47. package/dist/tools/modify/convert-to-outlines.d.ts.map +1 -1
  48. package/dist/tools/modify/convert-to-outlines.js +8 -30
  49. package/dist/tools/modify/convert-to-outlines.js.map +1 -1
  50. package/dist/tools/modify/create-document.d.ts.map +1 -1
  51. package/dist/tools/modify/create-document.js +8 -6
  52. package/dist/tools/modify/create-document.js.map +1 -1
  53. package/dist/tools/modify/create-ellipse.d.ts.map +1 -1
  54. package/dist/tools/modify/create-ellipse.js +16 -33
  55. package/dist/tools/modify/create-ellipse.js.map +1 -1
  56. package/dist/tools/modify/create-gradient.d.ts +3 -0
  57. package/dist/tools/modify/create-gradient.d.ts.map +1 -0
  58. package/dist/tools/modify/create-gradient.js +119 -0
  59. package/dist/tools/modify/create-gradient.js.map +1 -0
  60. package/dist/tools/modify/create-line.d.ts.map +1 -1
  61. package/dist/tools/modify/create-line.js +17 -37
  62. package/dist/tools/modify/create-line.js.map +1 -1
  63. package/dist/tools/modify/create-path-text.d.ts +3 -0
  64. package/dist/tools/modify/create-path-text.d.ts.map +1 -0
  65. package/dist/tools/modify/create-path-text.js +85 -0
  66. package/dist/tools/modify/create-path-text.js.map +1 -0
  67. package/dist/tools/modify/create-path.d.ts.map +1 -1
  68. package/dist/tools/modify/create-path.js +19 -39
  69. package/dist/tools/modify/create-path.js.map +1 -1
  70. package/dist/tools/modify/create-rectangle.d.ts.map +1 -1
  71. package/dist/tools/modify/create-rectangle.js +17 -33
  72. package/dist/tools/modify/create-rectangle.js.map +1 -1
  73. package/dist/tools/modify/create-text-frame.d.ts.map +1 -1
  74. package/dist/tools/modify/create-text-frame.js +28 -41
  75. package/dist/tools/modify/create-text-frame.js.map +1 -1
  76. package/dist/tools/modify/duplicate-objects.d.ts +3 -0
  77. package/dist/tools/modify/duplicate-objects.d.ts.map +1 -0
  78. package/dist/tools/modify/duplicate-objects.js +97 -0
  79. package/dist/tools/modify/duplicate-objects.js.map +1 -0
  80. package/dist/tools/modify/group-objects.d.ts +3 -0
  81. package/dist/tools/modify/group-objects.d.ts.map +1 -0
  82. package/dist/tools/modify/group-objects.js +80 -0
  83. package/dist/tools/modify/group-objects.js.map +1 -0
  84. package/dist/tools/modify/manage-artboards.d.ts +3 -0
  85. package/dist/tools/modify/manage-artboards.d.ts.map +1 -0
  86. package/dist/tools/modify/manage-artboards.js +152 -0
  87. package/dist/tools/modify/manage-artboards.js.map +1 -0
  88. package/dist/tools/modify/manage-datasets.d.ts +3 -0
  89. package/dist/tools/modify/manage-datasets.d.ts.map +1 -0
  90. package/dist/tools/modify/manage-datasets.js +345 -0
  91. package/dist/tools/modify/manage-datasets.js.map +1 -0
  92. package/dist/tools/modify/manage-layers.d.ts +3 -0
  93. package/dist/tools/modify/manage-layers.d.ts.map +1 -0
  94. package/dist/tools/modify/manage-layers.js +147 -0
  95. package/dist/tools/modify/manage-layers.js.map +1 -0
  96. package/dist/tools/modify/manage-linked-images.d.ts +3 -0
  97. package/dist/tools/modify/manage-linked-images.d.ts.map +1 -0
  98. package/dist/tools/modify/manage-linked-images.js +105 -0
  99. package/dist/tools/modify/manage-linked-images.js.map +1 -0
  100. package/dist/tools/modify/manage-swatches.d.ts +3 -0
  101. package/dist/tools/modify/manage-swatches.d.ts.map +1 -0
  102. package/dist/tools/modify/manage-swatches.js +78 -0
  103. package/dist/tools/modify/manage-swatches.js.map +1 -0
  104. package/dist/tools/modify/modify-object.d.ts.map +1 -1
  105. package/dist/tools/modify/modify-object.js +34 -49
  106. package/dist/tools/modify/modify-object.js.map +1 -1
  107. package/dist/tools/modify/move-to-layer.d.ts +3 -0
  108. package/dist/tools/modify/move-to-layer.d.ts.map +1 -0
  109. package/dist/tools/modify/move-to-layer.js +79 -0
  110. package/dist/tools/modify/move-to-layer.js.map +1 -0
  111. package/dist/tools/modify/open-document.d.ts +3 -0
  112. package/dist/tools/modify/open-document.d.ts.map +1 -0
  113. package/dist/tools/modify/open-document.js +74 -0
  114. package/dist/tools/modify/open-document.js.map +1 -0
  115. package/dist/tools/modify/place-color-chips.d.ts +3 -0
  116. package/dist/tools/modify/place-color-chips.d.ts.map +1 -0
  117. package/dist/tools/modify/place-color-chips.js +224 -0
  118. package/dist/tools/modify/place-color-chips.js.map +1 -0
  119. package/dist/tools/modify/place-image.d.ts.map +1 -1
  120. package/dist/tools/modify/place-image.js +28 -36
  121. package/dist/tools/modify/place-image.js.map +1 -1
  122. package/dist/tools/modify/place-style-guide.d.ts +3 -0
  123. package/dist/tools/modify/place-style-guide.d.ts.map +1 -0
  124. package/dist/tools/modify/place-style-guide.js +822 -0
  125. package/dist/tools/modify/place-style-guide.js.map +1 -0
  126. package/dist/tools/modify/place-symbol.d.ts +3 -0
  127. package/dist/tools/modify/place-symbol.d.ts.map +1 -0
  128. package/dist/tools/modify/place-symbol.js +96 -0
  129. package/dist/tools/modify/place-symbol.js.map +1 -0
  130. package/dist/tools/modify/replace-color.d.ts +3 -0
  131. package/dist/tools/modify/replace-color.d.ts.map +1 -0
  132. package/dist/tools/modify/replace-color.js +137 -0
  133. package/dist/tools/modify/replace-color.js.map +1 -0
  134. package/dist/tools/modify/resize-for-variation.d.ts +3 -0
  135. package/dist/tools/modify/resize-for-variation.d.ts.map +1 -0
  136. package/dist/tools/modify/resize-for-variation.js +177 -0
  137. package/dist/tools/modify/resize-for-variation.js.map +1 -0
  138. package/dist/tools/modify/save-document.d.ts +3 -0
  139. package/dist/tools/modify/save-document.d.ts.map +1 -0
  140. package/dist/tools/modify/save-document.js +63 -0
  141. package/dist/tools/modify/save-document.js.map +1 -0
  142. package/dist/tools/modify/select-objects.d.ts +3 -0
  143. package/dist/tools/modify/select-objects.d.ts.map +1 -0
  144. package/dist/tools/modify/select-objects.js +78 -0
  145. package/dist/tools/modify/select-objects.js.map +1 -0
  146. package/dist/tools/modify/set-z-order.d.ts +3 -0
  147. package/dist/tools/modify/set-z-order.d.ts.map +1 -0
  148. package/dist/tools/modify/set-z-order.js +61 -0
  149. package/dist/tools/modify/set-z-order.js.map +1 -0
  150. package/dist/tools/modify/shared.d.ts +49 -1
  151. package/dist/tools/modify/shared.d.ts.map +1 -1
  152. package/dist/tools/modify/shared.js +48 -4
  153. package/dist/tools/modify/shared.js.map +1 -1
  154. package/dist/tools/modify/undo.d.ts +3 -0
  155. package/dist/tools/modify/undo.d.ts.map +1 -0
  156. package/dist/tools/modify/undo.js +64 -0
  157. package/dist/tools/modify/undo.js.map +1 -0
  158. package/dist/tools/modify/ungroup-objects.d.ts +3 -0
  159. package/dist/tools/modify/ungroup-objects.d.ts.map +1 -0
  160. package/dist/tools/modify/ungroup-objects.js +72 -0
  161. package/dist/tools/modify/ungroup-objects.js.map +1 -0
  162. package/dist/tools/read/check-contrast.d.ts +3 -0
  163. package/dist/tools/read/check-contrast.d.ts.map +1 -0
  164. package/dist/tools/read/check-contrast.js +239 -0
  165. package/dist/tools/read/check-contrast.js.map +1 -0
  166. package/dist/tools/read/convert-coordinate.d.ts +3 -0
  167. package/dist/tools/read/convert-coordinate.d.ts.map +1 -0
  168. package/dist/tools/read/convert-coordinate.js +74 -0
  169. package/dist/tools/read/convert-coordinate.js.map +1 -0
  170. package/dist/tools/read/extract-design-tokens.d.ts +3 -0
  171. package/dist/tools/read/extract-design-tokens.d.ts.map +1 -0
  172. package/dist/tools/read/extract-design-tokens.js +280 -0
  173. package/dist/tools/read/extract-design-tokens.js.map +1 -0
  174. package/dist/tools/read/find-objects.d.ts.map +1 -1
  175. package/dist/tools/read/find-objects.js +16 -37
  176. package/dist/tools/read/find-objects.js.map +1 -1
  177. package/dist/tools/read/get-artboards.d.ts.map +1 -1
  178. package/dist/tools/read/get-artboards.js +15 -13
  179. package/dist/tools/read/get-artboards.js.map +1 -1
  180. package/dist/tools/read/get-colors.d.ts.map +1 -1
  181. package/dist/tools/read/get-colors.js +93 -15
  182. package/dist/tools/read/get-colors.js.map +1 -1
  183. package/dist/tools/read/get-document-info.d.ts.map +1 -1
  184. package/dist/tools/read/get-document-info.js +47 -19
  185. package/dist/tools/read/get-document-info.js.map +1 -1
  186. package/dist/tools/read/get-document-structure.d.ts.map +1 -1
  187. package/dist/tools/read/get-document-structure.js +16 -24
  188. package/dist/tools/read/get-document-structure.js.map +1 -1
  189. package/dist/tools/read/get-effects.d.ts.map +1 -1
  190. package/dist/tools/read/get-effects.js +32 -43
  191. package/dist/tools/read/get-effects.js.map +1 -1
  192. package/dist/tools/read/get-groups.d.ts.map +1 -1
  193. package/dist/tools/read/get-groups.js +22 -26
  194. package/dist/tools/read/get-groups.js.map +1 -1
  195. package/dist/tools/read/get-guidelines.d.ts.map +1 -1
  196. package/dist/tools/read/get-guidelines.js +13 -16
  197. package/dist/tools/read/get-guidelines.js.map +1 -1
  198. package/dist/tools/read/get-images.d.ts.map +1 -1
  199. package/dist/tools/read/get-images.js +43 -25
  200. package/dist/tools/read/get-images.js.map +1 -1
  201. package/dist/tools/read/get-layers.d.ts.map +1 -1
  202. package/dist/tools/read/get-layers.js +14 -15
  203. package/dist/tools/read/get-layers.js.map +1 -1
  204. package/dist/tools/read/get-overprint-info.d.ts.map +1 -1
  205. package/dist/tools/read/get-overprint-info.js +72 -63
  206. package/dist/tools/read/get-overprint-info.js.map +1 -1
  207. package/dist/tools/read/get-path-items.d.ts.map +1 -1
  208. package/dist/tools/read/get-path-items.js +26 -20
  209. package/dist/tools/read/get-path-items.js.map +1 -1
  210. package/dist/tools/read/get-selection.d.ts.map +1 -1
  211. package/dist/tools/read/get-selection.js +19 -33
  212. package/dist/tools/read/get-selection.js.map +1 -1
  213. package/dist/tools/read/get-separation-info.d.ts +3 -0
  214. package/dist/tools/read/get-separation-info.d.ts.map +1 -0
  215. package/dist/tools/read/get-separation-info.js +94 -0
  216. package/dist/tools/read/get-separation-info.js.map +1 -0
  217. package/dist/tools/read/get-symbols.d.ts.map +1 -1
  218. package/dist/tools/read/get-symbols.js +19 -23
  219. package/dist/tools/read/get-symbols.js.map +1 -1
  220. package/dist/tools/read/get-text-frame-detail.d.ts.map +1 -1
  221. package/dist/tools/read/get-text-frame-detail.js +270 -67
  222. package/dist/tools/read/get-text-frame-detail.js.map +1 -1
  223. package/dist/tools/read/list-fonts.d.ts +3 -0
  224. package/dist/tools/read/list-fonts.d.ts.map +1 -0
  225. package/dist/tools/read/list-fonts.js +78 -0
  226. package/dist/tools/read/list-fonts.js.map +1 -0
  227. package/dist/tools/read/list-text-frames.d.ts.map +1 -1
  228. package/dist/tools/read/list-text-frames.js +99 -36
  229. package/dist/tools/read/list-text-frames.js.map +1 -1
  230. package/dist/tools/registry.d.ts.map +1 -1
  231. package/dist/tools/registry.js +64 -0
  232. package/dist/tools/registry.js.map +1 -1
  233. package/dist/tools/session.d.ts +36 -0
  234. package/dist/tools/session.d.ts.map +1 -0
  235. package/dist/tools/session.js +246 -0
  236. package/dist/tools/session.js.map +1 -0
  237. package/dist/tools/utility/check-text-consistency.d.ts +3 -0
  238. package/dist/tools/utility/check-text-consistency.d.ts.map +1 -0
  239. package/dist/tools/utility/check-text-consistency.js +303 -0
  240. package/dist/tools/utility/check-text-consistency.js.map +1 -0
  241. package/dist/tools/utility/preflight-check.d.ts.map +1 -1
  242. package/dist/tools/utility/preflight-check.js +141 -43
  243. package/dist/tools/utility/preflight-check.js.map +1 -1
  244. package/dist/tools/utility/set-workflow.d.ts +3 -0
  245. package/dist/tools/utility/set-workflow.d.ts.map +1 -0
  246. package/dist/tools/utility/set-workflow.js +95 -0
  247. package/dist/tools/utility/set-workflow.js.map +1 -0
  248. package/dist/utils/image-header.d.ts.map +1 -1
  249. package/dist/utils/image-header.js +5 -1
  250. package/dist/utils/image-header.js.map +1 -1
  251. package/package.json +1 -1
@@ -15,6 +15,7 @@ export interface JsxResult {
15
15
  export declare function getExecFailureMessage(error: ExecFileException, stderr: string, timeout: number, transport?: Transport): string;
16
16
  /**
17
17
  * JSX を実行する(排他制御付き — 公開 API)
18
+ * pendingCount は jsxLimit の外側で管理し、キュー待ちのタスクも追跡する
18
19
  */
19
20
  export declare function executeJsx(jsxCode: string, params?: unknown, options?: {
20
21
  timeout?: number;
@@ -1 +1 @@
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;AA6BvD,MAAM,MAAM,SAAS,GAAG,WAAW,GAAG,YAAY,CAAC;AAEnD,wBAAgB,gBAAgB,CAC9B,QAAQ,GAAE,MAAyB,EACnC,MAAM,GAAE,MAAM,GAAG,SAAoD,GACpE,SAAS,CAMX;AAID,iBAAS,YAAY,IAAI,SAAS,CAGjC;AAED;;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;AAsCD,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,iBAAiB,EACxB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,SAAS,GAAE,SAAuB,GACjC,MAAM,CASR;AAiHD;;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;AAGD,OAAO,EAAE,YAAY,IAAI,SAAS,EAAE,CAAC"}
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;AA6BvD,MAAM,MAAM,SAAS,GAAG,WAAW,GAAG,YAAY,CAAC;AAEnD,wBAAgB,gBAAgB,CAC9B,QAAQ,GAAE,MAAyB,EACnC,MAAM,GAAE,MAAM,GAAG,SAAoD,GACpE,SAAS,CAMX;AAID,iBAAS,YAAY,IAAI,SAAS,CAGjC;AAED;;GAEG;AACH,wBAAgB,wBAAwB,IAAI,OAAO,CAAC,IAAI,CAAC,CAKxD;AAoBD,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;AAsCD,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,iBAAiB,EACxB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,SAAS,GAAE,SAAuB,GACjC,MAAM,CASR;AA4GD;;;GAGG;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,CAepB;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,OAAO,GACf,OAAO,CAAC,SAAS,CAAC,CAEpB;AAGD,OAAO,EAAE,YAAY,IAAI,SAAS,EAAE,CAAC"}
@@ -38,6 +38,14 @@ export function waitForPendingExecutions() {
38
38
  });
39
39
  }
40
40
  const JSX_HELPERS_PATH = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '../jsx/helpers/common.jsx');
41
+ // helpers ファイルをメモリにキャッシュ(毎回のディスク読み込みを排除)
42
+ let _helpersCache = null;
43
+ async function getHelpers() {
44
+ if (!_helpersCache) {
45
+ _helpersCache = await fs.readFile(JSX_HELPERS_PATH, 'utf-8');
46
+ }
47
+ return _helpersCache;
48
+ }
41
49
  // タイムアウト設定(ms)
42
50
  const TIMEOUT_NORMAL = 30_000;
43
51
  const TIMEOUT_HEAVY = 60_000;
@@ -45,7 +53,7 @@ const TIMEOUT_HEAVY = 60_000;
45
53
  * osascript / PowerShell COM 用 JSX ビルダー(ファイルベース I/O)
46
54
  */
47
55
  async function buildJsx(toolScript, paramsPath, resultPath) {
48
- const helpers = await fs.readFile(JSX_HELPERS_PATH, 'utf-8');
56
+ const helpers = await getHelpers();
49
57
  return `(function() {
50
58
  ${helpers}
51
59
  var PARAMS_PATH = ${JSON.stringify(paramsPath)};
@@ -136,7 +144,12 @@ async function readAndValidateResult(resultPath) {
136
144
  throw new Error('JSX terminated without producing a result file. An uncaught exception may have occurred within the JSX script.');
137
145
  }
138
146
  if (result.error) {
139
- throw new Error(result.message || 'An unknown error occurred during JSX execution');
147
+ const parts = [];
148
+ if (result.message)
149
+ parts.push(result.message);
150
+ if (result.line != null)
151
+ parts.push(`(JSX line ${result.line})`);
152
+ throw new Error(parts.length > 0 ? parts.join(' ') : 'An unknown error occurred during JSX execution');
140
153
  }
141
154
  return result;
142
155
  }
@@ -145,19 +158,26 @@ async function readAndValidateResult(resultPath) {
145
158
  * JSX を実行する(排他制御なし — 内部用)
146
159
  */
147
160
  async function executeJsxRaw(jsxCode, params, timeout = TIMEOUT_NORMAL, activate = false) {
161
+ const transport = getTransport();
162
+ switch (transport) {
163
+ case 'osascript':
164
+ return await executeViaOsascript(jsxCode, params, timeout, activate);
165
+ case 'powershell':
166
+ return await executeViaPowerShell(jsxCode, params, timeout);
167
+ default: {
168
+ const _ = transport;
169
+ throw new Error(`Unknown transport: ${_}`);
170
+ }
171
+ }
172
+ }
173
+ /**
174
+ * JSX を実行する(排他制御付き — 公開 API)
175
+ * pendingCount は jsxLimit の外側で管理し、キュー待ちのタスクも追跡する
176
+ */
177
+ export async function executeJsx(jsxCode, params, options) {
148
178
  pendingCount++;
149
179
  try {
150
- const transport = getTransport();
151
- switch (transport) {
152
- case 'osascript':
153
- return await executeViaOsascript(jsxCode, params, timeout, activate);
154
- case 'powershell':
155
- return await executeViaPowerShell(jsxCode, params, timeout);
156
- default: {
157
- const _ = transport;
158
- throw new Error(`Unknown transport: ${_}`);
159
- }
160
- }
180
+ return await jsxLimit(() => executeJsxRaw(jsxCode, params, options?.timeout ?? TIMEOUT_NORMAL, options?.activate ?? false));
161
181
  }
162
182
  finally {
163
183
  pendingCount--;
@@ -166,12 +186,6 @@ async function executeJsxRaw(jsxCode, params, timeout = TIMEOUT_NORMAL, activate
166
186
  }
167
187
  }
168
188
  }
169
- /**
170
- * JSX を実行する(排他制御付き — 公開 API)
171
- */
172
- export async function executeJsx(jsxCode, params, options) {
173
- return jsxLimit(() => executeJsxRaw(jsxCode, params, options?.timeout ?? TIMEOUT_NORMAL, options?.activate ?? false));
174
- }
175
189
  /**
176
190
  * 重い処理用の JSX 実行(タイムアウト延長 + Illustrator をフォアグラウンドに)
177
191
  */
@@ -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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"}
@@ -84,7 +84,9 @@ function readParamsFile(filePath) {
84
84
  function writeResultFile(filePath, result) {
85
85
  var f = new File(filePath);
86
86
  f.encoding = "UTF-8";
87
- f.open("w");
87
+ if (!f.open("w")) {
88
+ throw new Error("Cannot open result file for writing: " + filePath);
89
+ }
88
90
  f.write(jsonStringify(result));
89
91
  f.close();
90
92
  }
@@ -233,22 +235,40 @@ function getActiveArtboardRect() {
233
235
  }
234
236
 
235
237
  function getArtboardRectByIndex(index) {
236
- var doc = app.activeDocument;
237
- if (index >= 0 && index < doc.artboards.length) {
238
- return doc.artboards[index].artboardRect;
238
+ var rects = _getArtboardRects();
239
+ if (index >= 0 && index < rects.length) {
240
+ return rects[index];
239
241
  }
240
242
  return null;
241
243
  }
242
244
 
245
+ // アートボード矩形キャッシュ(同一 JSX 実行内で再利用)
246
+ var _artboardRectsCache = null;
247
+
248
+ function invalidateArtboardCache() {
249
+ _artboardRectsCache = null;
250
+ }
251
+
252
+ function _getArtboardRects() {
253
+ if (!_artboardRectsCache) {
254
+ _artboardRectsCache = [];
255
+ var doc = app.activeDocument;
256
+ for (var i = 0; i < doc.artboards.length; i++) {
257
+ _artboardRectsCache.push(doc.artboards[i].artboardRect);
258
+ }
259
+ }
260
+ return _artboardRectsCache;
261
+ }
262
+
243
263
  // アイテムがどのアートボードに属するか判定(中心座標ベース)
244
264
  function getArtboardIndexForItem(item) {
245
- var doc = app.activeDocument;
265
+ var rects = _getArtboardRects();
246
266
  var b = item.geometricBounds;
247
267
  var cx = (b[0] + b[2]) / 2;
248
268
  var cy = (b[1] + b[3]) / 2;
249
269
 
250
- for (var i = 0; i < doc.artboards.length; i++) {
251
- var r = doc.artboards[i].artboardRect;
270
+ for (var i = 0; i < rects.length; i++) {
271
+ var r = rects[i];
252
272
  if (cx >= r[0] && cx <= r[2] && cy <= r[1] && cy >= r[3]) {
253
273
  return i;
254
274
  }
@@ -320,3 +340,168 @@ function getZIndex(item) {
320
340
  return 0;
321
341
  }
322
342
  }
343
+
344
+ // --- UUID 検索(インデックス付き) ---
345
+
346
+ // 同一 JSX 実行内で UUID→item マップを遅延構築し、2回目以降は O(1) で引く
347
+ var _uuidIndex = null;
348
+
349
+ function _buildUUIDIndex() {
350
+ _uuidIndex = {};
351
+ var doc = app.activeDocument;
352
+ for (var li = 0; li < doc.layers.length; li++) {
353
+ _indexContainer(doc.layers[li]);
354
+ }
355
+ }
356
+
357
+ function _indexContainer(container) {
358
+ for (var i = 0; i < container.pageItems.length; i++) {
359
+ var item = container.pageItems[i];
360
+ try {
361
+ if (item.note && item.note.length > 0) {
362
+ _uuidIndex[item.note] = item;
363
+ }
364
+ } catch(e) {}
365
+ try {
366
+ if (item.typename === "GroupItem") {
367
+ _indexContainer(item);
368
+ }
369
+ } catch(e) {}
370
+ }
371
+ }
372
+
373
+ function findItemByUUID(uuid) {
374
+ if (!_uuidIndex) _buildUUIDIndex();
375
+ return _uuidIndex[uuid] || null;
376
+ }
377
+
378
+ // --- レイヤー解決 ---
379
+
380
+ function resolveTargetLayer(doc, layerName) {
381
+ if (!layerName) return doc.activeLayer;
382
+ try {
383
+ return doc.layers.getByName(layerName);
384
+ } catch (e) {
385
+ var nl = doc.layers.add();
386
+ nl.name = layerName;
387
+ return nl;
388
+ }
389
+ }
390
+
391
+ // --- 座標変換(Web → Illustrator ネイティブ) ---
392
+
393
+ function webToAiPoint(x, y, coordSystem, artboardRect) {
394
+ if (coordSystem === "artboard-web" && artboardRect) {
395
+ return [artboardRect[0] + x, artboardRect[1] + (-y)];
396
+ }
397
+ return [x, y];
398
+ }
399
+
400
+ // --- 親レイヤー名取得 ---
401
+
402
+ function getParentLayerName(item) {
403
+ var obj = item.parent;
404
+ while (obj) {
405
+ if (obj.typename === "Layer") return obj.name;
406
+ try { obj = obj.parent; } catch(e) { break; }
407
+ }
408
+ return "";
409
+ }
410
+
411
+ // --- テキストフレーム種別 ---
412
+
413
+ function getTextKind(tf) {
414
+ try {
415
+ if (tf.kind === TextType.POINTTEXT) return "point";
416
+ if (tf.kind === TextType.AREATEXT) return "area";
417
+ if (tf.kind === TextType.PATHTEXT) return "path";
418
+ } catch(e) {}
419
+ return "unknown";
420
+ }
421
+
422
+ // --- 再帰的アイテム走査 ---
423
+
424
+ function iterateAllItems(container, callback) {
425
+ for (var i = 0; i < container.pageItems.length; i++) {
426
+ var item = container.pageItems[i];
427
+ callback(item);
428
+ if (item.typename === "GroupItem") {
429
+ iterateAllItems(item, callback);
430
+ }
431
+ }
432
+ }
433
+
434
+ // --- 操作結果の検証(Post-Operation Verification) ---
435
+
436
+ /**
437
+ * 単一アイテムの現在の状態をスナップショットとして返す。
438
+ * 操作後に呼び出し、結果に含めることで「実際にどうなったか」を確認できる。
439
+ *
440
+ * @param {PageItem} item - 検証対象
441
+ * @param {string} [coordSystem] - "artboard-web" | "document"
442
+ * @param {Array} [artboardRect] - アートボード矩形(artboard-web時に必要)
443
+ * @returns {Object} アイテムのスナップショット
444
+ */
445
+ function verifyItem(item, coordSystem, artboardRect) {
446
+ var snap = {
447
+ name: item.name || "",
448
+ type: getItemType(item),
449
+ bounds: getBounds(item, coordSystem, artboardRect)
450
+ };
451
+
452
+ if (item.typename === "TextFrame") {
453
+ snap.contents = item.contents;
454
+ snap.textKind = getTextKind(item);
455
+ }
456
+
457
+ try {
458
+ if (item.filled) {
459
+ snap.fill = colorToObject(item.fillColor);
460
+ } else {
461
+ snap.fill = { type: "none" };
462
+ }
463
+ } catch(e) {}
464
+
465
+ try {
466
+ if (item.stroked) {
467
+ snap.stroke = { color: colorToObject(item.strokeColor), width: item.strokeWidth };
468
+ }
469
+ } catch(e) {}
470
+
471
+ snap.layer = getParentLayerName(item);
472
+ snap.visible = item.hidden !== true;
473
+
474
+ return snap;
475
+ }
476
+
477
+ /**
478
+ * 指定アートボード上の名前付きアイテムのスナップショットを返す。
479
+ * アートボード操作やバッチ操作の検証に使う。
480
+ *
481
+ * @param {number} artboardIndex - アートボードインデックス
482
+ * @returns {Object} { artboard: string, items: Array }
483
+ */
484
+ function verifyArtboardContents(artboardIndex) {
485
+ var doc = app.activeDocument;
486
+ var ab = doc.artboards[artboardIndex];
487
+ var abRect = ab.artboardRect;
488
+ var items = [];
489
+
490
+ for (var i = 0; i < doc.pageItems.length; i++) {
491
+ var item = doc.pageItems[i];
492
+ var gb = item.geometricBounds;
493
+ var cx = (gb[0] + gb[2]) / 2;
494
+ var cy = (gb[1] + gb[3]) / 2;
495
+ if (cx >= abRect[0] && cx <= abRect[2] && cy <= abRect[1] && cy >= abRect[3]) {
496
+ if (item.name && item.name !== "") {
497
+ var entry = { name: item.name, type: getItemType(item) };
498
+ if (item.typename === "TextFrame") {
499
+ entry.contents = item.contents;
500
+ }
501
+ items.push(entry);
502
+ }
503
+ }
504
+ }
505
+
506
+ return { artboard: ab.name, index: artboardIndex, itemCount: items.length, items: items };
507
+ }
@@ -0,0 +1,3 @@
1
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export declare function register(server: McpServer): void;
3
+ //# sourceMappingURL=print-preflight-workflow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"print-preflight-workflow.d.ts","sourceRoot":"","sources":["../../src/prompts/print-preflight-workflow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGpE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA+ChD"}
@@ -0,0 +1,45 @@
1
+ import { z } from 'zod';
2
+ export function register(server) {
3
+ server.registerPrompt('print-preflight-workflow', {
4
+ description: 'Run a comprehensive pre-press preflight workflow. Checks document info, overprint, separations, image quality, color diagnostics, and text consistency in sequence.',
5
+ argsSchema: {
6
+ target_profile: z
7
+ .enum(['x1a', 'x4'])
8
+ .optional()
9
+ .describe('Target PDF/X profile for compliance checks'),
10
+ },
11
+ }, (args) => {
12
+ const profile = args.target_profile;
13
+ return {
14
+ messages: [
15
+ {
16
+ role: 'user',
17
+ content: {
18
+ type: 'text',
19
+ text: `Run a comprehensive pre-press preflight check. Proceed in the following order.
20
+
21
+ ## Check Procedure
22
+ 1. **Document Info**: Use get_document_info to verify color mode, dimensions, and profile.
23
+ 2. **Preflight Check**: Run preflight_check${profile ? ` (target_pdf_profile: "${profile}")` : ''} for basic validation.
24
+ 3. **Overprint Check**: Use get_overprint_info to detect unintended overprints (other than K100).
25
+ 4. **Separation Check**: Use get_separation_info to verify plate count and spot color intent.
26
+ 5. **Image Quality Check**: Use get_images (include_print_info: true) to check resolution and color space.
27
+ 6. **Color Diagnostics**: Use get_colors (include_diagnostics: true) to check total ink coverage and color space mismatches.
28
+ 7. **Text Consistency Check**: Use check_text_consistency to detect placeholder text and inconsistencies.
29
+
30
+ ## Report Format
31
+ After all checks are complete, output a summary report in this format:
32
+ - Error: must fix before submission
33
+ - Warning: review recommended
34
+ - OK: no issues found
35
+ Include object name, UUID, and specific remediation steps for each item.
36
+
37
+ ## Language
38
+ Always respond in the user's language.`,
39
+ },
40
+ },
41
+ ],
42
+ };
43
+ });
44
+ }
45
+ //# sourceMappingURL=print-preflight-workflow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"print-preflight-workflow.js","sourceRoot":"","sources":["../../src/prompts/print-preflight-workflow.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,UAAU,QAAQ,CAAC,MAAiB;IACxC,MAAM,CAAC,cAAc,CACnB,0BAA0B,EAC1B;QACE,WAAW,EACT,qKAAqK;QACvK,UAAU,EAAE;YACV,cAAc,EAAE,CAAC;iBACd,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;iBACnB,QAAQ,EAAE;iBACV,QAAQ,CAAC,4CAA4C,CAAC;SAC1D;KACF,EACD,CAAC,IAAI,EAAE,EAAE;QACP,MAAM,OAAO,GAAG,IAAI,CAAC,cAAoC,CAAC;QAC1D,OAAO;YACL,QAAQ,EAAE;gBACR;oBACE,IAAI,EAAE,MAAe;oBACrB,OAAO,EAAE;wBACP,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE;;;;6CAIyB,OAAO,CAAC,CAAC,CAAC,0BAA0B,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE;;;;;;;;;;;;;;;uCAe1D;qBAC1B;iBACF;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export declare function register(server: McpServer): void;
3
+ //# sourceMappingURL=quick-layout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quick-layout.d.ts","sourceRoot":"","sources":["../../src/prompts/quick-layout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGpE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA4ChD"}
@@ -0,0 +1,42 @@
1
+ import { z } from 'zod';
2
+ export function register(server) {
3
+ server.registerPrompt('quick-layout', {
4
+ description: 'Place text content onto the active Illustrator artboard with automatic layout. Paste your text and Claude will arrange it as headings, body text, and captions.',
5
+ argsSchema: {
6
+ text_content: z.string().describe('Text content to place (paste directly)'),
7
+ style: z
8
+ .enum(['minimal', 'business', 'casual'])
9
+ .optional()
10
+ .describe('Layout style (default: minimal)'),
11
+ },
12
+ }, (args) => {
13
+ const style = args.style || 'minimal';
14
+ return {
15
+ messages: [
16
+ {
17
+ role: 'user',
18
+ content: {
19
+ type: 'text',
20
+ text: `Place the following text content onto the active Illustrator artboard with automatic layout.
21
+
22
+ ## Rules
23
+ 1. First, use get_document_info to check the artboard size and color mode.
24
+ 2. Split the text into semantic blocks (infer headings, body text, captions, etc.).
25
+ 3. Place each block using create_text_frame within the artboard:
26
+ - Headings: large (18-32pt), body text: readable (10-14pt)
27
+ - Arrange top to bottom with appropriate margins
28
+ - Style: ${style}
29
+ 4. After placement, use list_text_frames to verify the result and report the overall balance.
30
+
31
+ ## Text Content
32
+ ${args.text_content}
33
+
34
+ ## Language
35
+ Always respond in the user's language.`,
36
+ },
37
+ },
38
+ ],
39
+ };
40
+ });
41
+ }
42
+ //# sourceMappingURL=quick-layout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quick-layout.js","sourceRoot":"","sources":["../../src/prompts/quick-layout.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,UAAU,QAAQ,CAAC,MAAiB;IACxC,MAAM,CAAC,cAAc,CACnB,cAAc,EACd;QACE,WAAW,EACT,iKAAiK;QACnK,UAAU,EAAE;YACV,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;YAC3E,KAAK,EAAE,CAAC;iBACL,IAAI,CAAC,CAAC,SAAS,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;iBACvC,QAAQ,EAAE;iBACV,QAAQ,CAAC,iCAAiC,CAAC;SAC/C;KACF,EACD,CAAC,IAAI,EAAE,EAAE;QACP,MAAM,KAAK,GAAI,IAAI,CAAC,KAAgB,IAAI,SAAS,CAAC;QAClD,OAAO;YACL,QAAQ,EAAE;gBACR;oBACE,IAAI,EAAE,MAAe;oBACrB,OAAO,EAAE;wBACP,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE;;;;;;;;cAQN,KAAK;;;;EAIjB,IAAI,CAAC,YAAY;;;uCAGoB;qBAC1B;iBACF;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export declare function registerAllPrompts(server: McpServer): void;
3
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/prompts/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIpE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAG1D"}
@@ -0,0 +1,7 @@
1
+ import { register as registerQuickLayout } from './quick-layout.js';
2
+ import { register as registerPrintPreflightWorkflow } from './print-preflight-workflow.js';
3
+ export function registerAllPrompts(server) {
4
+ registerQuickLayout(server);
5
+ registerPrintPreflightWorkflow(server);
6
+ }
7
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/prompts/registry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,IAAI,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,QAAQ,IAAI,8BAA8B,EAAE,MAAM,+BAA+B,CAAC;AAE3F,MAAM,UAAU,kBAAkB,CAAC,MAAiB;IAClD,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAC5B,8BAA8B,CAAC,MAAM,CAAC,CAAC;AACzC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGpE,wBAAgB,YAAY,IAAI,SAAS,CASxC"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIpE,wBAAgB,YAAY,IAAI,SAAS,CAUxC"}
package/dist/server.js CHANGED
@@ -1,11 +1,13 @@
1
1
  import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
2
  import { registerAllTools } from './tools/registry.js';
3
+ import { registerAllPrompts } from './prompts/registry.js';
3
4
  export function createServer() {
4
5
  const server = new McpServer({
5
6
  name: 'illustrator-mcp-server',
6
- version: '0.1.0',
7
+ version: '1.2.4',
7
8
  });
8
9
  registerAllTools(server);
10
+ registerAllPrompts(server);
9
11
  return server;
10
12
  }
11
13
  //# sourceMappingURL=server.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,MAAM,UAAU,YAAY;IAC1B,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,wBAAwB;QAC9B,OAAO,EAAE,OAAO;KACjB,CAAC,CAAC;IAEH,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAEzB,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE3D,MAAM,UAAU,YAAY;IAC1B,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,wBAAwB;QAC9B,OAAO,EAAE,OAAO;KACjB,CAAC,CAAC;IAEH,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACzB,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAE3B,OAAO,MAAM,CAAC;AAChB,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;AA8HpE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAsChD"}
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;AA4JpE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAqChD"}
@@ -1,5 +1,11 @@
1
1
  import { z } from 'zod';
2
2
  import { executeJsxHeavy } from '../../executor/jsx-runner.js';
3
+ import { WRITE_IDEMPOTENT_ANNOTATIONS, coerceBoolean } from '../modify/shared.js';
4
+ /**
5
+ * export_pdf — PDF 書き出し
6
+ * @see https://ai-scripting.docsforadobe.dev/jsobjref/Document/ — Document.saveAs()
7
+ * @see https://ai-scripting.docsforadobe.dev/jsobjref/PDFSaveOptions/ — PDFSaveOptions
8
+ */
3
9
  const jsxCode = `
4
10
  var preflight = preflightChecks();
5
11
  if (preflight) {
@@ -17,12 +23,12 @@ if (preflight) {
17
23
  // Apply preset if specified
18
24
  if (preset !== "") {
19
25
  pdfOpts.pDFPreset = preset;
26
+ } else {
27
+ // プリセット未指定時のみデフォルト値を設定(プリセットの設定を上書きしない)
28
+ pdfOpts.compatibility = PDFCompatibility.ACROBAT7;
29
+ pdfOpts.preserveEditability = false;
20
30
  }
21
31
 
22
- // Default to PDF/X-4 compatible
23
- pdfOpts.compatibility = PDFCompatibility.ACROBAT7;
24
- pdfOpts.preserveEditability = false;
25
-
26
32
  // トンボ種類(enum名とリテラル値の両方を試す)
27
33
  if (options.marks_style === "japanese") {
28
34
  pdfOpts.pageMarksType = PageMarksTypes.Japanese;
@@ -85,7 +91,23 @@ if (preflight) {
85
91
  }
86
92
 
87
93
  // Downsample images
88
- if (options.downsample === true) {
94
+ if (typeof options.color_downsample_dpi === "number" || typeof options.grayscale_downsample_dpi === "number" || typeof options.monochrome_downsample_dpi === "number") {
95
+ // Selective downsampling per image type
96
+ var colorDpi = (typeof options.color_downsample_dpi === "number") ? options.color_downsample_dpi : 300;
97
+ pdfOpts.colorDownsamplingMethod = DownsampleMethod.BICUBICDOWNSAMPLE;
98
+ pdfOpts.colorDownsampling = colorDpi;
99
+ pdfOpts.colorDownsamplingImageThreshold = Math.round(colorDpi * 1.5);
100
+
101
+ var grayDpi = (typeof options.grayscale_downsample_dpi === "number") ? options.grayscale_downsample_dpi : 300;
102
+ pdfOpts.grayscaleDownsamplingMethod = DownsampleMethod.BICUBICDOWNSAMPLE;
103
+ pdfOpts.grayscaleDownsampling = grayDpi;
104
+ pdfOpts.grayscaleDownsamplingImageThreshold = Math.round(grayDpi * 1.5);
105
+
106
+ var monoDpi = (typeof options.monochrome_downsample_dpi === "number") ? options.monochrome_downsample_dpi : 1200;
107
+ pdfOpts.monochromeDownsamplingMethod = DownsampleMethod.BICUBICDOWNSAMPLE;
108
+ pdfOpts.monochromeDownsampling = monoDpi;
109
+ pdfOpts.monochromeDownsamplingImageThreshold = Math.round(monoDpi * 1.5);
110
+ } else if (options.downsample === true) {
89
111
  pdfOpts.colorDownsamplingMethod = DownsampleMethod.BICUBICDOWNSAMPLE;
90
112
  pdfOpts.colorDownsampling = 300;
91
113
  pdfOpts.colorDownsamplingImageThreshold = 450;
@@ -101,6 +123,15 @@ if (preflight) {
101
123
  pdfOpts.monochromeDownsamplingMethod = DownsampleMethod.NODOWNSAMPLE;
102
124
  }
103
125
 
126
+ // Output intent ICC profile (version-dependent, may not be available)
127
+ if (typeof options.output_intent_profile === "string" && options.output_intent_profile !== "") {
128
+ try {
129
+ pdfOpts.outputIntentProfile = options.output_intent_profile;
130
+ } catch(e) {
131
+ // outputIntentProfile not supported in this Illustrator version
132
+ }
133
+ }
134
+
104
135
  var outFile = new File(outputPath);
105
136
  var parentFolder = outFile.parent;
106
137
  if (!parentFolder.exists) {
@@ -133,24 +164,23 @@ export function register(server) {
133
164
  .describe('PDF preset name (e.g. "[PDF/X-4:2008]")'),
134
165
  options: z
135
166
  .object({
136
- trim_marks: z.boolean().optional().describe('Add trim marks'),
167
+ trim_marks: coerceBoolean.optional().describe('Add trim marks'),
137
168
  marks_style: z.enum(['japanese', 'roman']).optional().describe('Trim mark style (japanese or roman)'),
138
- trim_mark_weight: z.enum(['0.125', '0.25', '0.5']).transform(Number).optional().describe('Trim mark weight (pt)'),
139
- registration_marks: z.boolean().optional().describe('Registration marks'),
140
- color_bars: z.boolean().optional().describe('Color bars'),
141
- page_information: z.boolean().optional().describe('Page information'),
142
- bleed: z.boolean().optional().describe('Include bleed (3mm)'),
143
- downsample: z.boolean().optional().describe('Downsample images'),
169
+ trim_mark_weight: z.enum(['0.125', '0.25', '0.5']).optional().describe('Trim mark weight (pt)'),
170
+ registration_marks: coerceBoolean.optional().describe('Registration marks'),
171
+ color_bars: coerceBoolean.optional().describe('Color bars'),
172
+ page_information: coerceBoolean.optional().describe('Page information'),
173
+ bleed: coerceBoolean.optional().describe('Include bleed (3mm)'),
174
+ downsample: coerceBoolean.optional().describe('Downsample all images (shorthand: color 300dpi, grayscale 300dpi, monochrome 1200dpi)'),
175
+ color_downsample_dpi: z.number().int().min(72).optional().describe('Color image downsample target DPI (overrides downsample)'),
176
+ grayscale_downsample_dpi: z.number().int().min(72).optional().describe('Grayscale image downsample target DPI (overrides downsample)'),
177
+ monochrome_downsample_dpi: z.number().int().min(72).optional().describe('Monochrome image downsample target DPI (overrides downsample)'),
178
+ output_intent_profile: z.string().optional().describe('Output intent ICC profile name (e.g. "Japan Color 2001 Coated"). Version-dependent feature.'),
144
179
  })
145
180
  .optional()
146
181
  .describe('PDF export options'),
147
182
  },
148
- annotations: {
149
- readOnlyHint: false,
150
- destructiveHint: false,
151
- idempotentHint: true,
152
- openWorldHint: false,
153
- },
183
+ annotations: WRITE_IDEMPOTENT_ANNOTATIONS,
154
184
  }, async (params) => {
155
185
  const result = await executeJsxHeavy(jsxCode, params);
156
186
  return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] };