illustrator-mcp-server 1.2.4 → 1.2.5

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 (243) hide show
  1. package/README.ja.md +525 -107
  2. package/README.md +510 -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 +113 -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 +195 -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 +12 -10
  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 +100 -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 +117 -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 +7 -29
  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 +15 -32
  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 +111 -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 +16 -36
  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 +18 -38
  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 +16 -32
  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 +27 -40
  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 +79 -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 +142 -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 +126 -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 +141 -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 +96 -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 +31 -47
  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 +73 -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 +72 -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 +218 -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 +26 -35
  121. package/dist/tools/modify/place-image.js.map +1 -1
  122. package/dist/tools/modify/place-symbol.d.ts +3 -0
  123. package/dist/tools/modify/place-symbol.d.ts.map +1 -0
  124. package/dist/tools/modify/place-symbol.js +96 -0
  125. package/dist/tools/modify/place-symbol.js.map +1 -0
  126. package/dist/tools/modify/replace-color.d.ts +3 -0
  127. package/dist/tools/modify/replace-color.d.ts.map +1 -0
  128. package/dist/tools/modify/replace-color.js +136 -0
  129. package/dist/tools/modify/replace-color.js.map +1 -0
  130. package/dist/tools/modify/resize-for-variation.d.ts +3 -0
  131. package/dist/tools/modify/resize-for-variation.d.ts.map +1 -0
  132. package/dist/tools/modify/resize-for-variation.js +169 -0
  133. package/dist/tools/modify/resize-for-variation.js.map +1 -0
  134. package/dist/tools/modify/save-document.d.ts +3 -0
  135. package/dist/tools/modify/save-document.d.ts.map +1 -0
  136. package/dist/tools/modify/save-document.js +63 -0
  137. package/dist/tools/modify/save-document.js.map +1 -0
  138. package/dist/tools/modify/set-z-order.d.ts +3 -0
  139. package/dist/tools/modify/set-z-order.d.ts.map +1 -0
  140. package/dist/tools/modify/set-z-order.js +60 -0
  141. package/dist/tools/modify/set-z-order.js.map +1 -0
  142. package/dist/tools/modify/shared.d.ts +49 -1
  143. package/dist/tools/modify/shared.d.ts.map +1 -1
  144. package/dist/tools/modify/shared.js +48 -4
  145. package/dist/tools/modify/shared.js.map +1 -1
  146. package/dist/tools/modify/undo.d.ts +3 -0
  147. package/dist/tools/modify/undo.d.ts.map +1 -0
  148. package/dist/tools/modify/undo.js +64 -0
  149. package/dist/tools/modify/undo.js.map +1 -0
  150. package/dist/tools/modify/ungroup-objects.d.ts +3 -0
  151. package/dist/tools/modify/ungroup-objects.d.ts.map +1 -0
  152. package/dist/tools/modify/ungroup-objects.js +67 -0
  153. package/dist/tools/modify/ungroup-objects.js.map +1 -0
  154. package/dist/tools/read/check-contrast.d.ts +3 -0
  155. package/dist/tools/read/check-contrast.d.ts.map +1 -0
  156. package/dist/tools/read/check-contrast.js +239 -0
  157. package/dist/tools/read/check-contrast.js.map +1 -0
  158. package/dist/tools/read/convert-coordinate.d.ts +3 -0
  159. package/dist/tools/read/convert-coordinate.d.ts.map +1 -0
  160. package/dist/tools/read/convert-coordinate.js +74 -0
  161. package/dist/tools/read/convert-coordinate.js.map +1 -0
  162. package/dist/tools/read/extract-design-tokens.d.ts +3 -0
  163. package/dist/tools/read/extract-design-tokens.d.ts.map +1 -0
  164. package/dist/tools/read/extract-design-tokens.js +258 -0
  165. package/dist/tools/read/extract-design-tokens.js.map +1 -0
  166. package/dist/tools/read/find-objects.d.ts.map +1 -1
  167. package/dist/tools/read/find-objects.js +16 -37
  168. package/dist/tools/read/find-objects.js.map +1 -1
  169. package/dist/tools/read/get-artboards.d.ts.map +1 -1
  170. package/dist/tools/read/get-artboards.js +15 -13
  171. package/dist/tools/read/get-artboards.js.map +1 -1
  172. package/dist/tools/read/get-colors.d.ts.map +1 -1
  173. package/dist/tools/read/get-colors.js +93 -15
  174. package/dist/tools/read/get-colors.js.map +1 -1
  175. package/dist/tools/read/get-document-info.d.ts.map +1 -1
  176. package/dist/tools/read/get-document-info.js +47 -19
  177. package/dist/tools/read/get-document-info.js.map +1 -1
  178. package/dist/tools/read/get-document-structure.d.ts.map +1 -1
  179. package/dist/tools/read/get-document-structure.js +16 -24
  180. package/dist/tools/read/get-document-structure.js.map +1 -1
  181. package/dist/tools/read/get-effects.d.ts.map +1 -1
  182. package/dist/tools/read/get-effects.js +32 -43
  183. package/dist/tools/read/get-effects.js.map +1 -1
  184. package/dist/tools/read/get-groups.d.ts.map +1 -1
  185. package/dist/tools/read/get-groups.js +22 -26
  186. package/dist/tools/read/get-groups.js.map +1 -1
  187. package/dist/tools/read/get-guidelines.d.ts.map +1 -1
  188. package/dist/tools/read/get-guidelines.js +13 -16
  189. package/dist/tools/read/get-guidelines.js.map +1 -1
  190. package/dist/tools/read/get-images.d.ts.map +1 -1
  191. package/dist/tools/read/get-images.js +43 -25
  192. package/dist/tools/read/get-images.js.map +1 -1
  193. package/dist/tools/read/get-layers.d.ts.map +1 -1
  194. package/dist/tools/read/get-layers.js +14 -15
  195. package/dist/tools/read/get-layers.js.map +1 -1
  196. package/dist/tools/read/get-overprint-info.d.ts.map +1 -1
  197. package/dist/tools/read/get-overprint-info.js +72 -63
  198. package/dist/tools/read/get-overprint-info.js.map +1 -1
  199. package/dist/tools/read/get-path-items.d.ts.map +1 -1
  200. package/dist/tools/read/get-path-items.js +26 -20
  201. package/dist/tools/read/get-path-items.js.map +1 -1
  202. package/dist/tools/read/get-selection.d.ts.map +1 -1
  203. package/dist/tools/read/get-selection.js +19 -33
  204. package/dist/tools/read/get-selection.js.map +1 -1
  205. package/dist/tools/read/get-separation-info.d.ts +3 -0
  206. package/dist/tools/read/get-separation-info.d.ts.map +1 -0
  207. package/dist/tools/read/get-separation-info.js +94 -0
  208. package/dist/tools/read/get-separation-info.js.map +1 -0
  209. package/dist/tools/read/get-symbols.d.ts.map +1 -1
  210. package/dist/tools/read/get-symbols.js +19 -23
  211. package/dist/tools/read/get-symbols.js.map +1 -1
  212. package/dist/tools/read/get-text-frame-detail.d.ts.map +1 -1
  213. package/dist/tools/read/get-text-frame-detail.js +270 -67
  214. package/dist/tools/read/get-text-frame-detail.js.map +1 -1
  215. package/dist/tools/read/list-fonts.d.ts +3 -0
  216. package/dist/tools/read/list-fonts.d.ts.map +1 -0
  217. package/dist/tools/read/list-fonts.js +78 -0
  218. package/dist/tools/read/list-fonts.js.map +1 -0
  219. package/dist/tools/read/list-text-frames.d.ts.map +1 -1
  220. package/dist/tools/read/list-text-frames.js +99 -36
  221. package/dist/tools/read/list-text-frames.js.map +1 -1
  222. package/dist/tools/registry.d.ts.map +1 -1
  223. package/dist/tools/registry.js +60 -0
  224. package/dist/tools/registry.js.map +1 -1
  225. package/dist/tools/session.d.ts +36 -0
  226. package/dist/tools/session.d.ts.map +1 -0
  227. package/dist/tools/session.js +246 -0
  228. package/dist/tools/session.js.map +1 -0
  229. package/dist/tools/utility/check-text-consistency.d.ts +3 -0
  230. package/dist/tools/utility/check-text-consistency.d.ts.map +1 -0
  231. package/dist/tools/utility/check-text-consistency.js +303 -0
  232. package/dist/tools/utility/check-text-consistency.js.map +1 -0
  233. package/dist/tools/utility/preflight-check.d.ts.map +1 -1
  234. package/dist/tools/utility/preflight-check.js +141 -43
  235. package/dist/tools/utility/preflight-check.js.map +1 -1
  236. package/dist/tools/utility/set-workflow.d.ts +3 -0
  237. package/dist/tools/utility/set-workflow.d.ts.map +1 -0
  238. package/dist/tools/utility/set-workflow.js +95 -0
  239. package/dist/tools/utility/set-workflow.js.map +1 -0
  240. package/dist/utils/image-header.d.ts.map +1 -1
  241. package/dist/utils/image-header.js +5 -1
  242. package/dist/utils/image-header.js.map +1 -1
  243. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"place-image.js","sourceRoot":"","sources":["../../../src/tools/modify/place-image.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAE1D,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsFf,CAAC;AAEF,MAAM,UAAU,QAAQ,CAAC,MAAiB;IACxC,MAAM,CAAC,YAAY,CACjB,aAAa,EACb;QACE,KAAK,EAAE,aAAa;QACpB,WAAW,EACT,gLAAgL;QAClL,WAAW,EAAE;YACX,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;YACjE,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;YAC/C,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;YAC/C,KAAK,EAAE,CAAC;iBACL,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,OAAO,CAAC,KAAK,CAAC;iBACd,QAAQ,CAAC,qDAAqD,CAAC;YAClE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;YAC/D,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;YACnD,iBAAiB,EAAE,CAAC;iBACjB,IAAI,CAAC,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;iBAClC,QAAQ,EAAE;iBACV,OAAO,CAAC,cAAc,CAAC;iBACvB,QAAQ,CACP,sGAAsG,CACvG;SACJ;QACD,WAAW,EAAE;YACX,YAAY,EAAE,KAAK;YACnB,eAAe,EAAE,KAAK;YACtB,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
+ {"version":3,"file":"place-image.js","sourceRoot":"","sources":["../../../src/tools/modify/place-image.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EACL,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD;;;;;;;GAOG;AACH,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2Ef,CAAC;AAEF,MAAM,UAAU,QAAQ,CAAC,MAAiB;IACxC,MAAM,CAAC,YAAY,CACjB,aAAa,EACb;QACE,KAAK,EAAE,aAAa;QACpB,WAAW,EACT,gLAAgL;QAClL,WAAW,EAAE;YACX,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;YACjE,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;YAC/C,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;YAC/C,KAAK,EAAE,CAAC;iBACL,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,OAAO,CAAC,KAAK,CAAC;iBACd,QAAQ,CAAC,qDAAqD,CAAC;YAClE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;YAC/D,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;YACnD,iBAAiB,EAAE,sBAAsB;SAC1C;QACD,WAAW,EAAE,iBAAiB;KAC/B,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,MAAM,cAAc,GAAG,EAAE,GAAG,MAAM,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC,MAAM,CAAC,iBAAiB,CAAC,EAAE,CAAC;QACjH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,EAAE,cAAc,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7E,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"}
@@ -0,0 +1,3 @@
1
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export declare function register(server: McpServer): void;
3
+ //# sourceMappingURL=place-symbol.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"place-symbol.d.ts","sourceRoot":"","sources":["../../../src/tools/modify/place-symbol.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAyEpE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA6BhD"}
@@ -0,0 +1,96 @@
1
+ import { z } from 'zod';
2
+ import { executeJsx } from '../../executor/jsx-runner.js';
3
+ import { coordinateSystemSchema } from '../session.js';
4
+ import { WRITE_ANNOTATIONS } from './shared.js';
5
+ /**
6
+ * place_symbol — シンボルインスタンスの配置・シンボル定義の差し替え
7
+ *
8
+ * @see https://ai-scripting.docsforadobe.dev/jsobjref/SymbolItems/ — SymbolItems.add(), SymbolItem.symbol
9
+ *
10
+ * JSX API:
11
+ * Document.symbolItems.add(symbol: Symbol) → SymbolItem
12
+ * Document.symbols.getByName(name: String) → Symbol
13
+ * SymbolItem.position → [x, y] (writable)
14
+ * SymbolItem.symbol → Symbol (writable — 差し替え可能)
15
+ */
16
+ const jsxCode = `
17
+ var preflight = preflightChecks();
18
+ if (preflight) {
19
+ writeResultFile(RESULT_PATH, preflight);
20
+ } else {
21
+ try {
22
+ var params = readParamsFile(PARAMS_PATH);
23
+ var doc = app.activeDocument;
24
+ var coordSystem = params.coordinate_system || "artboard-web";
25
+
26
+ if (params.action === "place") {
27
+ var sym = null;
28
+ try {
29
+ sym = doc.symbols.getByName(params.symbol_name);
30
+ } catch(e) {
31
+ writeResultFile(RESULT_PATH, { error: true, message: "Symbol not found: " + params.symbol_name });
32
+ }
33
+ if (sym) {
34
+ var si = doc.symbolItems.add(sym);
35
+ if (typeof params.x === "number" && typeof params.y === "number") {
36
+ var abIndex = doc.artboards.getActiveArtboardIndex();
37
+ var abRect = getArtboardRectByIndex(abIndex);
38
+ si.position = webToAiPoint(params.x, params.y, coordSystem, abRect);
39
+ }
40
+ var uuid = ensureUUID(si);
41
+ writeResultFile(RESULT_PATH, { success: true, uuid: uuid, symbolName: params.symbol_name });
42
+ }
43
+ } else if (params.action === "replace") {
44
+ if (!params.uuid) {
45
+ writeResultFile(RESULT_PATH, { error: true, message: "uuid is required for replace action" });
46
+ } else {
47
+ var item = findItemByUUID(params.uuid);
48
+ if (!item || item.typename !== "SymbolItem") {
49
+ writeResultFile(RESULT_PATH, { error: true, message: "Symbol item not found: " + params.uuid });
50
+ } else {
51
+ var newSym = null;
52
+ try {
53
+ newSym = doc.symbols.getByName(params.symbol_name);
54
+ } catch(e) {
55
+ writeResultFile(RESULT_PATH, { error: true, message: "Symbol not found: " + params.symbol_name });
56
+ }
57
+ if (newSym) {
58
+ item.symbol = newSym;
59
+ writeResultFile(RESULT_PATH, { success: true, uuid: params.uuid, newSymbolName: params.symbol_name });
60
+ }
61
+ }
62
+ }
63
+ } else {
64
+ writeResultFile(RESULT_PATH, { error: true, message: "Unknown action: " + params.action });
65
+ }
66
+ } catch (e) {
67
+ writeResultFile(RESULT_PATH, { error: true, message: "place_symbol failed: " + e.message, line: e.line });
68
+ }
69
+ }
70
+ `;
71
+ export function register(server) {
72
+ server.registerTool('place_symbol', {
73
+ title: 'Place Symbol',
74
+ description: 'Place a new symbol instance or replace the symbol definition of an existing instance. Note: Illustrator will be activated (brought to foreground) during execution.',
75
+ inputSchema: {
76
+ action: z
77
+ .enum(['place', 'replace'])
78
+ .describe('place = new instance, replace = swap symbol definition'),
79
+ symbol_name: z
80
+ .string()
81
+ .describe('Symbol name to place or new symbol name for replace'),
82
+ x: z.number().optional().describe('X position (for place action)'),
83
+ y: z.number().optional().describe('Y position (for place action)'),
84
+ uuid: z
85
+ .string()
86
+ .optional()
87
+ .describe('UUID of existing symbol item (for replace action)'),
88
+ coordinate_system: coordinateSystemSchema,
89
+ },
90
+ annotations: WRITE_ANNOTATIONS,
91
+ }, async (params) => {
92
+ const result = await executeJsx(jsxCode, params, { activate: true });
93
+ return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] };
94
+ });
95
+ }
96
+ //# sourceMappingURL=place-symbol.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"place-symbol.js","sourceRoot":"","sources":["../../../src/tools/modify/place-symbol.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD;;;;;;;;;;GAUG;AACH,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsDf,CAAC;AAEF,MAAM,UAAU,QAAQ,CAAC,MAAiB;IACxC,MAAM,CAAC,YAAY,CACjB,cAAc,EACd;QACE,KAAK,EAAE,cAAc;QACrB,WAAW,EACT,qKAAqK;QACvK,WAAW,EAAE;YACX,MAAM,EAAE,CAAC;iBACN,IAAI,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;iBAC1B,QAAQ,CAAC,wDAAwD,CAAC;YACrE,WAAW,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,QAAQ,CAAC,qDAAqD,CAAC;YAClE,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;YAClE,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;YAClE,IAAI,EAAE,CAAC;iBACJ,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,mDAAmD,CAAC;YAChE,iBAAiB,EAAE,sBAAsB;SAC1C;QACD,WAAW,EAAE,iBAAiB;KAC/B,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"}
@@ -0,0 +1,3 @@
1
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export declare function register(server: McpServer): void;
3
+ //# sourceMappingURL=replace-color.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"replace-color.d.ts","sourceRoot":"","sources":["../../../src/tools/modify/replace-color.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA4GpE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAiChD"}
@@ -0,0 +1,136 @@
1
+ import { z } from 'zod';
2
+ import { executeJsx } from '../../executor/jsx-runner.js';
3
+ import { colorSchema, COLOR_HELPERS_JSX, DESTRUCTIVE_ANNOTATIONS } from './shared.js';
4
+ /**
5
+ * replace_color — 塗り/線の色を一括置換
6
+ * @see https://ai-scripting.docsforadobe.dev/jsobjref/PathItem/ — fillColor, strokeColor
7
+ *
8
+ * 制限事項: SpotColor, GrayColor のマッチングは未対応。
9
+ * クロスカラースペース(RGB→CMYK等)のマッチングも不可。
10
+ */
11
+ const jsxCode = `
12
+ ${COLOR_HELPERS_JSX}
13
+
14
+ var preflight = preflightChecks();
15
+ if (preflight) {
16
+ writeResultFile(RESULT_PATH, preflight);
17
+ } else {
18
+ try {
19
+ var params = readParamsFile(PARAMS_PATH);
20
+ var doc = app.activeDocument;
21
+ var fromColor = params.from_color;
22
+ var toColor = params.to_color;
23
+ var tolerance = (typeof params.tolerance === "number") ? params.tolerance : 0;
24
+ var target = params.target || "both";
25
+ var scope = params.scope || null;
26
+
27
+ function colorsMatch(c1, c2, tol) {
28
+ try {
29
+ if (c1.typename === "CMYKColor" && c2.type === "cmyk") {
30
+ return Math.abs(c1.cyan - c2.c) <= tol &&
31
+ Math.abs(c1.magenta - c2.m) <= tol &&
32
+ Math.abs(c1.yellow - c2.y) <= tol &&
33
+ Math.abs(c1.black - c2.k) <= tol;
34
+ } else if (c1.typename === "RGBColor" && c2.type === "rgb") {
35
+ return Math.abs(c1.red - c2.r) <= tol &&
36
+ Math.abs(c1.green - c2.g) <= tol &&
37
+ Math.abs(c1.blue - c2.b) <= tol;
38
+ }
39
+ } catch(e) {}
40
+ return false;
41
+ }
42
+
43
+ var newColorObj = createColor(toColor);
44
+ var replacedCount = 0;
45
+
46
+ // Determine scope
47
+ var pathSource;
48
+ if (scope) {
49
+ var foundLayer = null;
50
+ function findLayerByName(layers, name) {
51
+ for (var li = 0; li < layers.length; li++) {
52
+ if (layers[li].name === name) return layers[li];
53
+ try {
54
+ var sub = findLayerByName(layers[li].layers, name);
55
+ if (sub) return sub;
56
+ } catch(e2) {}
57
+ }
58
+ return null;
59
+ }
60
+ foundLayer = findLayerByName(doc.layers, scope);
61
+ if (foundLayer) {
62
+ pathSource = foundLayer.pathItems;
63
+ } else {
64
+ writeResultFile(RESULT_PATH, { error: true, message: "Layer not found: " + scope });
65
+ pathSource = null;
66
+ }
67
+ } else {
68
+ pathSource = doc.pathItems;
69
+ }
70
+
71
+ if (pathSource) {
72
+ for (var i = 0; i < pathSource.length; i++) {
73
+ var item = pathSource[i];
74
+ // Replace fill
75
+ if ((target === "fill" || target === "both") && item.filled) {
76
+ try {
77
+ if (colorsMatch(item.fillColor, fromColor, tolerance)) {
78
+ item.fillColor = newColorObj;
79
+ replacedCount++;
80
+ }
81
+ } catch(e) {}
82
+ }
83
+ // Replace stroke
84
+ if ((target === "stroke" || target === "both") && item.stroked) {
85
+ try {
86
+ if (colorsMatch(item.strokeColor, fromColor, tolerance)) {
87
+ item.strokeColor = newColorObj;
88
+ replacedCount++;
89
+ }
90
+ } catch(e) {}
91
+ }
92
+ }
93
+
94
+ writeResultFile(RESULT_PATH, {
95
+ success: true,
96
+ replacedCount: replacedCount,
97
+ fromColor: fromColor,
98
+ toColor: toColor
99
+ });
100
+ }
101
+ } catch (e) {
102
+ writeResultFile(RESULT_PATH, { error: true, message: "Replace color failed: " + e.message, line: e.line });
103
+ }
104
+ }
105
+ `;
106
+ export function register(server) {
107
+ server.registerTool('replace_color', {
108
+ title: 'Replace Color',
109
+ description: 'Find and replace colors across the document or within a specific layer. Limitations: SpotColor and GrayColor matching not supported. Cross-colorspace matching (e.g. RGB→CMYK) not possible — from_color and to_color must use the same color type as the target objects.',
110
+ inputSchema: {
111
+ from_color: colorSchema.unwrap().describe('Color to find (required)'),
112
+ to_color: colorSchema.unwrap().describe('Replacement color (required)'),
113
+ tolerance: z
114
+ .number()
115
+ .min(0)
116
+ .max(100)
117
+ .optional()
118
+ .default(0)
119
+ .describe('Color matching tolerance per channel (0 = exact match, 100 = match any)'),
120
+ target: z
121
+ .enum(['fill', 'stroke', 'both'])
122
+ .optional()
123
+ .default('both')
124
+ .describe('Which color attributes to replace'),
125
+ scope: z
126
+ .string()
127
+ .optional()
128
+ .describe('Layer name to limit replacement scope (default: entire document)'),
129
+ },
130
+ annotations: DESTRUCTIVE_ANNOTATIONS,
131
+ }, async (params) => {
132
+ const result = await executeJsx(jsxCode, params);
133
+ return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] };
134
+ });
135
+ }
136
+ //# sourceMappingURL=replace-color.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"replace-color.js","sourceRoot":"","sources":["../../../src/tools/modify/replace-color.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAEtF;;;;;;GAMG;AACH,MAAM,OAAO,GAAG;EACd,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6FlB,CAAC;AAEF,MAAM,UAAU,QAAQ,CAAC,MAAiB;IACxC,MAAM,CAAC,YAAY,CACjB,eAAe,EACf;QACE,KAAK,EAAE,eAAe;QACtB,WAAW,EAAE,2QAA2Q;QACxR,WAAW,EAAE;YACX,UAAU,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;YACrE,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;YACvE,SAAS,EAAE,CAAC;iBACT,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,CAAC;iBACN,GAAG,CAAC,GAAG,CAAC;iBACR,QAAQ,EAAE;iBACV,OAAO,CAAC,CAAC,CAAC;iBACV,QAAQ,CAAC,yEAAyE,CAAC;YACtF,MAAM,EAAE,CAAC;iBACN,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;iBAChC,QAAQ,EAAE;iBACV,OAAO,CAAC,MAAM,CAAC;iBACf,QAAQ,CAAC,mCAAmC,CAAC;YAChD,KAAK,EAAE,CAAC;iBACL,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,kEAAkE,CAAC;SAChF;QACD,WAAW,EAAE,uBAAuB;KACrC,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"}
@@ -0,0 +1,3 @@
1
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export declare function register(server: McpServer): void;
3
+ //# sourceMappingURL=resize-for-variation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resize-for-variation.d.ts","sourceRoot":"","sources":["../../../src/tools/modify/resize-for-variation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA6IpE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAuChD"}
@@ -0,0 +1,169 @@
1
+ import { z } from 'zod';
2
+ import { executeJsxHeavy } from '../../executor/jsx-runner.js';
3
+ import { coordinateSystemSchema, resolveCoordinateSystem, } from '../session.js';
4
+ import { WRITE_ANNOTATIONS } from './shared.js';
5
+ /**
6
+ * resize_for_variation — アートボード単位のサイズバリエーション生成
7
+ * @see https://ai-scripting.docsforadobe.dev/jsobjref/Artboards/ — Artboards.add()
8
+ * @see https://ai-scripting.docsforadobe.dev/jsobjref/PageItem/ — duplicate(), resize()
9
+ * @see https://ai-scripting.docsforadobe.dev/jsobjref/Document/ — selectObjectsOnActiveArtboard()
10
+ */
11
+ const jsxCode = `
12
+ var preflight = preflightChecks();
13
+ if (preflight) {
14
+ writeResultFile(RESULT_PATH, preflight);
15
+ } else {
16
+ try {
17
+ var params = readParamsFile(PARAMS_PATH);
18
+ var doc = app.activeDocument;
19
+ var srcIdx = params.source_artboard_index;
20
+ var targetSizes = params.target_sizes;
21
+ var scaleMode = params.scale_mode || "proportional";
22
+
23
+ if (srcIdx < 0 || srcIdx >= doc.artboards.length) {
24
+ writeResultFile(RESULT_PATH, {
25
+ error: true,
26
+ message: "Source artboard index " + srcIdx + " is out of range (0-" + (doc.artboards.length - 1) + ")"
27
+ });
28
+ } else {
29
+ var srcAb = doc.artboards[srcIdx];
30
+ var srcRect = srcAb.artboardRect; // [left, top, right, bottom]
31
+ var srcWidth = srcRect[2] - srcRect[0];
32
+ var srcHeight = srcRect[1] - srcRect[3]; // top - bottom (AI coords: top > bottom)
33
+
34
+ // Collect all items on source artboard
35
+ doc.artboards.setActiveArtboardIndex(srcIdx);
36
+ doc.selectObjectsOnActiveArtboard();
37
+ var srcItems = doc.selection;
38
+
39
+ if (!srcItems || srcItems.length === 0) {
40
+ writeResultFile(RESULT_PATH, {
41
+ error: true,
42
+ message: "No objects found on source artboard " + srcIdx
43
+ });
44
+ } else {
45
+ var createdArtboards = [];
46
+
47
+ for (var ti = 0; ti < targetSizes.length; ti++) {
48
+ var target = targetSizes[ti];
49
+ // Convert mm to points if coordinate_system is artboard-web (assume points input)
50
+ var tgtWidthPt = target.width;
51
+ var tgtHeightPt = target.height;
52
+
53
+ // Calculate new artboard position (place to the right of existing artboards)
54
+ var lastAb = doc.artboards[doc.artboards.length - 1];
55
+ var lastRect = lastAb.artboardRect;
56
+ var offsetX = lastRect[2] + 50; // 50pt gap
57
+ var newRect = [offsetX, lastRect[1], offsetX + tgtWidthPt, lastRect[1] - tgtHeightPt];
58
+
59
+ // Create new artboard
60
+ var newAb = doc.artboards.add(newRect);
61
+ var newAbIdx = doc.artboards.length - 1;
62
+ if (target.name) {
63
+ newAb.name = target.name;
64
+ }
65
+
66
+ // Calculate scale factor
67
+ var scaleX = tgtWidthPt / srcWidth;
68
+ var scaleY = tgtHeightPt / srcHeight;
69
+ var scale = 1;
70
+ if (scaleMode === "proportional") {
71
+ scale = Math.min(scaleX, scaleY);
72
+ } else if (scaleMode === "fit_width") {
73
+ scale = scaleX;
74
+ } else if (scaleMode === "fit_height") {
75
+ scale = scaleY;
76
+ }
77
+
78
+ // Re-select source items (selection may have been lost)
79
+ doc.artboards.setActiveArtboardIndex(srcIdx);
80
+ doc.selectObjectsOnActiveArtboard();
81
+ var itemsToCopy = doc.selection;
82
+
83
+ // Duplicate and transform each item
84
+ var duplicatedItems = [];
85
+ for (var ii = 0; ii < itemsToCopy.length; ii++) {
86
+ var srcItem = itemsToCopy[ii];
87
+ var dup = srcItem.duplicate();
88
+ duplicatedItems.push(dup);
89
+ }
90
+
91
+ // Move and scale duplicated items
92
+ for (var di = 0; di < duplicatedItems.length; di++) {
93
+ var dupItem = duplicatedItems[di];
94
+ var origPos = duplicatedItems[di].position; // [x, y] in doc coords
95
+
96
+ // Calculate relative position within source artboard (0-1)
97
+ var relX = (origPos[0] - srcRect[0]) / srcWidth;
98
+ var relY = (origPos[1] - srcRect[1]) / srcHeight; // srcRect[1] is top
99
+
100
+ // Scale the item
101
+ var scalePercent = scale * 100;
102
+ dupItem.resize(scalePercent, scalePercent);
103
+
104
+ // Position on target artboard
105
+ var newX = newRect[0] + relX * tgtWidthPt;
106
+ var newY = newRect[1] + relY * tgtHeightPt;
107
+ dupItem.position = [newX, newY];
108
+ }
109
+
110
+ createdArtboards.push({
111
+ artboardIndex: newAbIdx,
112
+ name: target.name || ("Variation " + (ti + 1)),
113
+ width: tgtWidthPt,
114
+ height: tgtHeightPt,
115
+ scaleFactor: Math.round(scale * 100),
116
+ objectCount: duplicatedItems.length
117
+ });
118
+ }
119
+
120
+ // Deselect
121
+ doc.selection = null;
122
+
123
+ writeResultFile(RESULT_PATH, {
124
+ success: true,
125
+ sourceArtboard: srcIdx,
126
+ createdCount: createdArtboards.length,
127
+ artboards: createdArtboards
128
+ });
129
+ }
130
+ }
131
+ } catch (e) {
132
+ writeResultFile(RESULT_PATH, { error: true, message: "Resize for variation failed: " + e.message, line: e.line });
133
+ }
134
+ }
135
+ `;
136
+ export function register(server) {
137
+ server.registerTool('resize_for_variation', {
138
+ title: 'Resize for Variation',
139
+ description: 'Create size variations from a source artboard. Duplicates all objects and scales/repositions them proportionally to fit target sizes. Limitations: no text reflow, effects/strokes scale with objects but may need manual adjustment, proportional placement only (not smart layout).',
140
+ inputSchema: {
141
+ source_artboard_index: z
142
+ .number()
143
+ .int()
144
+ .min(0)
145
+ .describe('Source artboard index to duplicate from (0-based)'),
146
+ target_sizes: z
147
+ .array(z.object({
148
+ width: z.number().describe('Target width in points'),
149
+ height: z.number().describe('Target height in points'),
150
+ name: z.string().optional().describe('Artboard name for this variation'),
151
+ }))
152
+ .min(1)
153
+ .max(10)
154
+ .describe('Target sizes for variations'),
155
+ scale_mode: z
156
+ .enum(['proportional', 'fit_width', 'fit_height'])
157
+ .optional()
158
+ .default('proportional')
159
+ .describe('How to scale objects: proportional (fit within, maintain aspect), fit_width, or fit_height'),
160
+ coordinate_system: coordinateSystemSchema,
161
+ },
162
+ annotations: WRITE_ANNOTATIONS,
163
+ }, async (params) => {
164
+ const resolvedParams = { ...params, coordinate_system: await resolveCoordinateSystem(params.coordinate_system) };
165
+ const result = await executeJsxHeavy(jsxCode, resolvedParams);
166
+ return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] };
167
+ });
168
+ }
169
+ //# sourceMappingURL=resize-for-variation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resize-for-variation.js","sourceRoot":"","sources":["../../../src/tools/modify/resize-for-variation.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EACL,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD;;;;;GAKG;AACH,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4Hf,CAAC;AAEF,MAAM,UAAU,QAAQ,CAAC,MAAiB;IACxC,MAAM,CAAC,YAAY,CACjB,sBAAsB,EACtB;QACE,KAAK,EAAE,sBAAsB;QAC7B,WAAW,EACT,uRAAuR;QACzR,WAAW,EAAE;YACX,qBAAqB,EAAE,CAAC;iBACrB,MAAM,EAAE;iBACR,GAAG,EAAE;iBACL,GAAG,CAAC,CAAC,CAAC;iBACN,QAAQ,CAAC,mDAAmD,CAAC;YAChE,YAAY,EAAE,CAAC;iBACZ,KAAK,CACJ,CAAC,CAAC,MAAM,CAAC;gBACP,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;gBACpD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;gBACtD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;aACzE,CAAC,CACH;iBACA,GAAG,CAAC,CAAC,CAAC;iBACN,GAAG,CAAC,EAAE,CAAC;iBACP,QAAQ,CAAC,6BAA6B,CAAC;YAC1C,UAAU,EAAE,CAAC;iBACV,IAAI,CAAC,CAAC,cAAc,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;iBACjD,QAAQ,EAAE;iBACV,OAAO,CAAC,cAAc,CAAC;iBACvB,QAAQ,CAAC,4FAA4F,CAAC;YACzG,iBAAiB,EAAE,sBAAsB;SAC1C;QACD,WAAW,EAAE,iBAAiB;KAC/B,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,MAAM,cAAc,GAAG,EAAE,GAAG,MAAM,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC,MAAM,CAAC,iBAAiB,CAAC,EAAE,CAAC;QACjH,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QAC9D,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"}
@@ -0,0 +1,3 @@
1
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export declare function register(server: McpServer): void;
3
+ //# sourceMappingURL=save-document.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"save-document.d.ts","sourceRoot":"","sources":["../../../src/tools/modify/save-document.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA4CpE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAyBhD"}
@@ -0,0 +1,63 @@
1
+ import { z } from 'zod';
2
+ import { executeJsx } from '../../executor/jsx-runner.js';
3
+ import { WRITE_IDEMPOTENT_ANNOTATIONS } from './shared.js';
4
+ /**
5
+ * save_document — ドキュメントの上書き保存・別名保存
6
+ *
7
+ * @see https://ai-scripting.docsforadobe.dev/jsobjref/Document/ — Document.save(), Document.saveAs()
8
+ *
9
+ * JSX API:
10
+ * Document.save() → void (上書き保存)
11
+ * Document.saveAs(saveIn: File [, options]) → void (別名保存)
12
+ */
13
+ const jsxCode = `
14
+ var preflight = preflightChecks();
15
+ if (preflight) {
16
+ writeResultFile(RESULT_PATH, preflight);
17
+ } else {
18
+ try {
19
+ var params = readParamsFile(PARAMS_PATH);
20
+ var doc = app.activeDocument;
21
+ var mode = params.mode || "save";
22
+
23
+ if (mode === "save") {
24
+ doc.save();
25
+ writeResultFile(RESULT_PATH, { success: true, mode: "save" });
26
+ } else if (mode === "save_as") {
27
+ if (!params.path) {
28
+ writeResultFile(RESULT_PATH, { error: true, message: "path is required for save_as mode" });
29
+ } else {
30
+ var saveFile = new File(params.path);
31
+ doc.saveAs(saveFile);
32
+ writeResultFile(RESULT_PATH, { success: true, mode: "save_as", path: params.path });
33
+ }
34
+ } else {
35
+ writeResultFile(RESULT_PATH, { error: true, message: "Unknown mode: " + mode });
36
+ }
37
+ } catch (e) {
38
+ writeResultFile(RESULT_PATH, { error: true, message: "save_document failed: " + e.message, line: e.line });
39
+ }
40
+ }
41
+ `;
42
+ export function register(server) {
43
+ server.registerTool('save_document', {
44
+ title: 'Save Document',
45
+ description: 'Save the active Illustrator document. Note: Illustrator will be activated (brought to foreground) during execution.',
46
+ inputSchema: {
47
+ mode: z
48
+ .enum(['save', 'save_as'])
49
+ .optional()
50
+ .default('save')
51
+ .describe('save = overwrite, save_as = save to new path'),
52
+ path: z
53
+ .string()
54
+ .optional()
55
+ .describe('File path for save_as mode (required when mode is save_as)'),
56
+ },
57
+ annotations: WRITE_IDEMPOTENT_ANNOTATIONS,
58
+ }, async (params) => {
59
+ const result = await executeJsx(jsxCode, params, { activate: true });
60
+ return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] };
61
+ });
62
+ }
63
+ //# sourceMappingURL=save-document.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"save-document.js","sourceRoot":"","sources":["../../../src/tools/modify/save-document.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAE,4BAA4B,EAAE,MAAM,aAAa,CAAC;AAE3D;;;;;;;;GAQG;AACH,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4Bf,CAAC;AAEF,MAAM,UAAU,QAAQ,CAAC,MAAiB;IACxC,MAAM,CAAC,YAAY,CACjB,eAAe,EACf;QACE,KAAK,EAAE,eAAe;QACtB,WAAW,EACT,qHAAqH;QACvH,WAAW,EAAE;YACX,IAAI,EAAE,CAAC;iBACJ,IAAI,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;iBACzB,QAAQ,EAAE;iBACV,OAAO,CAAC,MAAM,CAAC;iBACf,QAAQ,CAAC,8CAA8C,CAAC;YAC3D,IAAI,EAAE,CAAC;iBACJ,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,4DAA4D,CAAC;SAC1E;QACD,WAAW,EAAE,4BAA4B;KAC1C,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"}
@@ -0,0 +1,3 @@
1
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export declare function register(server: McpServer): void;
3
+ //# sourceMappingURL=set-z-order.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set-z-order.d.ts","sourceRoot":"","sources":["../../../src/tools/modify/set-z-order.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA8CpE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAoBhD"}
@@ -0,0 +1,60 @@
1
+ import { z } from 'zod';
2
+ import { executeJsx } from '../../executor/jsx-runner.js';
3
+ import { WRITE_ANNOTATIONS } from './shared.js';
4
+ /**
5
+ * set_z_order — オブジェクトの重ね順を変更
6
+ *
7
+ * @see https://ai-scripting.docsforadobe.dev/jsobjref/PageItem/ — PageItem.zOrder()
8
+ *
9
+ * JSX API:
10
+ * PageItem.zOrder(zOrderCmd: ZOrderMethod) → void
11
+ * ZOrderMethod: BRINGTOFRONT | BRINGFORWARD | SENDBACKWARD | SENDTOBACK
12
+ */
13
+ const jsxCode = `
14
+ var preflight = preflightChecks();
15
+ if (preflight) {
16
+ writeResultFile(RESULT_PATH, preflight);
17
+ } else {
18
+ try {
19
+ var params = readParamsFile(PARAMS_PATH);
20
+
21
+ var item = findItemByUUID(params.uuid);
22
+ if (!item) {
23
+ writeResultFile(RESULT_PATH, { error: true, message: "Object not found: " + params.uuid });
24
+ } else {
25
+ var cmdMap = {
26
+ "bring_to_front": ZOrderMethod.BRINGTOFRONT,
27
+ "bring_forward": ZOrderMethod.BRINGFORWARD,
28
+ "send_backward": ZOrderMethod.SENDBACKWARD,
29
+ "send_to_back": ZOrderMethod.SENDTOBACK
30
+ };
31
+ item.zOrder(cmdMap[params.command]);
32
+ writeResultFile(RESULT_PATH, {
33
+ success: true,
34
+ uuid: params.uuid,
35
+ command: params.command,
36
+ newZIndex: getZIndex(item)
37
+ });
38
+ }
39
+ } catch (e) {
40
+ writeResultFile(RESULT_PATH, { error: true, message: "set_z_order failed: " + e.message, line: e.line });
41
+ }
42
+ }
43
+ `;
44
+ export function register(server) {
45
+ server.registerTool('set_z_order', {
46
+ title: 'Set Z-Order',
47
+ description: 'Change the stacking order of an object. Note: Illustrator will be activated (brought to foreground) during execution.',
48
+ inputSchema: {
49
+ uuid: z.string().describe('UUID of the object'),
50
+ command: z
51
+ .enum(['bring_to_front', 'bring_forward', 'send_backward', 'send_to_back'])
52
+ .describe('Stacking order command'),
53
+ },
54
+ annotations: WRITE_ANNOTATIONS,
55
+ }, async (params) => {
56
+ const result = await executeJsx(jsxCode, params, { activate: true });
57
+ return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] };
58
+ });
59
+ }
60
+ //# sourceMappingURL=set-z-order.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set-z-order.js","sourceRoot":"","sources":["../../../src/tools/modify/set-z-order.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD;;;;;;;;GAQG;AACH,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8Bf,CAAC;AAEF,MAAM,UAAU,QAAQ,CAAC,MAAiB;IACxC,MAAM,CAAC,YAAY,CACjB,aAAa,EACb;QACE,KAAK,EAAE,aAAa;QACpB,WAAW,EACT,uHAAuH;QACzH,WAAW,EAAE;YACX,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;YAC/C,OAAO,EAAE,CAAC;iBACP,IAAI,CAAC,CAAC,gBAAgB,EAAE,eAAe,EAAE,eAAe,EAAE,cAAc,CAAC,CAAC;iBAC1E,QAAQ,CAAC,wBAAwB,CAAC;SACtC;QACD,WAAW,EAAE,iBAAiB;KAC/B,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"}