illustrator-mcp-server 1.2.3 → 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.
- package/README.ja.md +525 -107
- package/README.md +510 -89
- package/dist/executor/jsx-runner.d.ts +1 -0
- package/dist/executor/jsx-runner.d.ts.map +1 -1
- package/dist/executor/jsx-runner.js +33 -19
- package/dist/executor/jsx-runner.js.map +1 -1
- package/dist/jsx/helpers/common.jsx +113 -7
- package/dist/prompts/print-preflight-workflow.d.ts +3 -0
- package/dist/prompts/print-preflight-workflow.d.ts.map +1 -0
- package/dist/prompts/print-preflight-workflow.js +45 -0
- package/dist/prompts/print-preflight-workflow.js.map +1 -0
- package/dist/prompts/quick-layout.d.ts +3 -0
- package/dist/prompts/quick-layout.d.ts.map +1 -0
- package/dist/prompts/quick-layout.js +42 -0
- package/dist/prompts/quick-layout.js.map +1 -0
- package/dist/prompts/registry.d.ts +3 -0
- package/dist/prompts/registry.d.ts.map +1 -0
- package/dist/prompts/registry.js +7 -0
- package/dist/prompts/registry.js.map +1 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +3 -1
- package/dist/server.js.map +1 -1
- package/dist/tools/export/export-pdf.d.ts.map +1 -1
- package/dist/tools/export/export-pdf.js +48 -18
- 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 +41 -49
- package/dist/tools/export/export.js.map +1 -1
- package/dist/tools/modify/align-objects.d.ts +3 -0
- package/dist/tools/modify/align-objects.d.ts.map +1 -0
- package/dist/tools/modify/align-objects.js +195 -0
- package/dist/tools/modify/align-objects.js.map +1 -0
- package/dist/tools/modify/apply-color-profile.d.ts.map +1 -1
- package/dist/tools/modify/apply-color-profile.js +12 -10
- package/dist/tools/modify/apply-color-profile.js.map +1 -1
- package/dist/tools/modify/apply-graphic-style.d.ts +3 -0
- package/dist/tools/modify/apply-graphic-style.d.ts.map +1 -0
- package/dist/tools/modify/apply-graphic-style.js +100 -0
- package/dist/tools/modify/apply-graphic-style.js.map +1 -0
- package/dist/tools/modify/apply-text-style.d.ts +3 -0
- package/dist/tools/modify/apply-text-style.d.ts.map +1 -0
- package/dist/tools/modify/apply-text-style.js +117 -0
- package/dist/tools/modify/apply-text-style.js.map +1 -0
- package/dist/tools/modify/close-document.d.ts +3 -0
- package/dist/tools/modify/close-document.d.ts.map +1 -0
- package/dist/tools/modify/close-document.js +46 -0
- package/dist/tools/modify/close-document.js.map +1 -0
- package/dist/tools/modify/convert-to-outlines.d.ts.map +1 -1
- package/dist/tools/modify/convert-to-outlines.js +7 -29
- package/dist/tools/modify/convert-to-outlines.js.map +1 -1
- package/dist/tools/modify/create-document.d.ts +3 -0
- package/dist/tools/modify/create-document.d.ts.map +1 -0
- package/dist/tools/modify/create-document.js +67 -0
- package/dist/tools/modify/create-document.js.map +1 -0
- package/dist/tools/modify/create-ellipse.d.ts.map +1 -1
- package/dist/tools/modify/create-ellipse.js +15 -32
- package/dist/tools/modify/create-ellipse.js.map +1 -1
- package/dist/tools/modify/create-gradient.d.ts +3 -0
- package/dist/tools/modify/create-gradient.d.ts.map +1 -0
- package/dist/tools/modify/create-gradient.js +111 -0
- package/dist/tools/modify/create-gradient.js.map +1 -0
- package/dist/tools/modify/create-line.d.ts.map +1 -1
- package/dist/tools/modify/create-line.js +16 -36
- package/dist/tools/modify/create-line.js.map +1 -1
- package/dist/tools/modify/create-path-text.d.ts +3 -0
- package/dist/tools/modify/create-path-text.d.ts.map +1 -0
- package/dist/tools/modify/create-path-text.js +85 -0
- package/dist/tools/modify/create-path-text.js.map +1 -0
- package/dist/tools/modify/create-path.d.ts.map +1 -1
- package/dist/tools/modify/create-path.js +18 -38
- 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 +16 -32
- 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 +27 -40
- package/dist/tools/modify/create-text-frame.js.map +1 -1
- package/dist/tools/modify/duplicate-objects.d.ts +3 -0
- package/dist/tools/modify/duplicate-objects.d.ts.map +1 -0
- package/dist/tools/modify/duplicate-objects.js +97 -0
- package/dist/tools/modify/duplicate-objects.js.map +1 -0
- package/dist/tools/modify/group-objects.d.ts +3 -0
- package/dist/tools/modify/group-objects.d.ts.map +1 -0
- package/dist/tools/modify/group-objects.js +79 -0
- package/dist/tools/modify/group-objects.js.map +1 -0
- package/dist/tools/modify/manage-artboards.d.ts +3 -0
- package/dist/tools/modify/manage-artboards.d.ts.map +1 -0
- package/dist/tools/modify/manage-artboards.js +142 -0
- package/dist/tools/modify/manage-artboards.js.map +1 -0
- package/dist/tools/modify/manage-datasets.d.ts +3 -0
- package/dist/tools/modify/manage-datasets.d.ts.map +1 -0
- package/dist/tools/modify/manage-datasets.js +126 -0
- package/dist/tools/modify/manage-datasets.js.map +1 -0
- package/dist/tools/modify/manage-layers.d.ts +3 -0
- package/dist/tools/modify/manage-layers.d.ts.map +1 -0
- package/dist/tools/modify/manage-layers.js +141 -0
- package/dist/tools/modify/manage-layers.js.map +1 -0
- package/dist/tools/modify/manage-linked-images.d.ts +3 -0
- package/dist/tools/modify/manage-linked-images.d.ts.map +1 -0
- package/dist/tools/modify/manage-linked-images.js +96 -0
- package/dist/tools/modify/manage-linked-images.js.map +1 -0
- package/dist/tools/modify/manage-swatches.d.ts +3 -0
- package/dist/tools/modify/manage-swatches.d.ts.map +1 -0
- package/dist/tools/modify/manage-swatches.js +78 -0
- package/dist/tools/modify/manage-swatches.js.map +1 -0
- package/dist/tools/modify/modify-object.d.ts.map +1 -1
- package/dist/tools/modify/modify-object.js +31 -47
- package/dist/tools/modify/modify-object.js.map +1 -1
- package/dist/tools/modify/move-to-layer.d.ts +3 -0
- package/dist/tools/modify/move-to-layer.d.ts.map +1 -0
- package/dist/tools/modify/move-to-layer.js +73 -0
- package/dist/tools/modify/move-to-layer.js.map +1 -0
- package/dist/tools/modify/open-document.d.ts +3 -0
- package/dist/tools/modify/open-document.d.ts.map +1 -0
- package/dist/tools/modify/open-document.js +72 -0
- package/dist/tools/modify/open-document.js.map +1 -0
- package/dist/tools/modify/place-color-chips.d.ts +3 -0
- package/dist/tools/modify/place-color-chips.d.ts.map +1 -0
- package/dist/tools/modify/place-color-chips.js +218 -0
- package/dist/tools/modify/place-color-chips.js.map +1 -0
- package/dist/tools/modify/place-image.d.ts +3 -0
- package/dist/tools/modify/place-image.d.ts.map +1 -0
- package/dist/tools/modify/place-image.js +113 -0
- package/dist/tools/modify/place-image.js.map +1 -0
- package/dist/tools/modify/place-symbol.d.ts +3 -0
- package/dist/tools/modify/place-symbol.d.ts.map +1 -0
- package/dist/tools/modify/place-symbol.js +96 -0
- package/dist/tools/modify/place-symbol.js.map +1 -0
- package/dist/tools/modify/replace-color.d.ts +3 -0
- package/dist/tools/modify/replace-color.d.ts.map +1 -0
- package/dist/tools/modify/replace-color.js +136 -0
- package/dist/tools/modify/replace-color.js.map +1 -0
- package/dist/tools/modify/resize-for-variation.d.ts +3 -0
- package/dist/tools/modify/resize-for-variation.d.ts.map +1 -0
- package/dist/tools/modify/resize-for-variation.js +169 -0
- package/dist/tools/modify/resize-for-variation.js.map +1 -0
- package/dist/tools/modify/save-document.d.ts +3 -0
- package/dist/tools/modify/save-document.d.ts.map +1 -0
- package/dist/tools/modify/save-document.js +63 -0
- package/dist/tools/modify/save-document.js.map +1 -0
- package/dist/tools/modify/set-z-order.d.ts +3 -0
- package/dist/tools/modify/set-z-order.d.ts.map +1 -0
- package/dist/tools/modify/set-z-order.js +60 -0
- package/dist/tools/modify/set-z-order.js.map +1 -0
- package/dist/tools/modify/shared.d.ts +49 -1
- package/dist/tools/modify/shared.d.ts.map +1 -1
- package/dist/tools/modify/shared.js +48 -4
- package/dist/tools/modify/shared.js.map +1 -1
- package/dist/tools/modify/undo.d.ts +3 -0
- package/dist/tools/modify/undo.d.ts.map +1 -0
- package/dist/tools/modify/undo.js +64 -0
- package/dist/tools/modify/undo.js.map +1 -0
- package/dist/tools/modify/ungroup-objects.d.ts +3 -0
- package/dist/tools/modify/ungroup-objects.d.ts.map +1 -0
- package/dist/tools/modify/ungroup-objects.js +67 -0
- package/dist/tools/modify/ungroup-objects.js.map +1 -0
- package/dist/tools/read/check-contrast.d.ts +3 -0
- package/dist/tools/read/check-contrast.d.ts.map +1 -0
- package/dist/tools/read/check-contrast.js +239 -0
- package/dist/tools/read/check-contrast.js.map +1 -0
- package/dist/tools/read/convert-coordinate.d.ts +3 -0
- package/dist/tools/read/convert-coordinate.d.ts.map +1 -0
- package/dist/tools/read/convert-coordinate.js +74 -0
- package/dist/tools/read/convert-coordinate.js.map +1 -0
- package/dist/tools/read/extract-design-tokens.d.ts +3 -0
- package/dist/tools/read/extract-design-tokens.d.ts.map +1 -0
- package/dist/tools/read/extract-design-tokens.js +258 -0
- package/dist/tools/read/extract-design-tokens.js.map +1 -0
- package/dist/tools/read/find-objects.d.ts.map +1 -1
- package/dist/tools/read/find-objects.js +16 -37
- package/dist/tools/read/find-objects.js.map +1 -1
- package/dist/tools/read/get-artboards.d.ts.map +1 -1
- package/dist/tools/read/get-artboards.js +15 -13
- package/dist/tools/read/get-artboards.js.map +1 -1
- package/dist/tools/read/get-colors.d.ts.map +1 -1
- package/dist/tools/read/get-colors.js +93 -15
- package/dist/tools/read/get-colors.js.map +1 -1
- package/dist/tools/read/get-document-info.d.ts.map +1 -1
- package/dist/tools/read/get-document-info.js +47 -19
- package/dist/tools/read/get-document-info.js.map +1 -1
- package/dist/tools/read/get-document-structure.d.ts.map +1 -1
- package/dist/tools/read/get-document-structure.js +16 -24
- package/dist/tools/read/get-document-structure.js.map +1 -1
- package/dist/tools/read/get-effects.d.ts.map +1 -1
- package/dist/tools/read/get-effects.js +32 -43
- package/dist/tools/read/get-effects.js.map +1 -1
- package/dist/tools/read/get-groups.d.ts.map +1 -1
- package/dist/tools/read/get-groups.js +22 -26
- package/dist/tools/read/get-groups.js.map +1 -1
- package/dist/tools/read/get-guidelines.d.ts.map +1 -1
- package/dist/tools/read/get-guidelines.js +13 -16
- package/dist/tools/read/get-guidelines.js.map +1 -1
- package/dist/tools/read/get-images.d.ts.map +1 -1
- package/dist/tools/read/get-images.js +43 -25
- package/dist/tools/read/get-images.js.map +1 -1
- package/dist/tools/read/get-layers.d.ts.map +1 -1
- package/dist/tools/read/get-layers.js +14 -15
- package/dist/tools/read/get-layers.js.map +1 -1
- package/dist/tools/read/get-overprint-info.d.ts.map +1 -1
- package/dist/tools/read/get-overprint-info.js +72 -63
- package/dist/tools/read/get-overprint-info.js.map +1 -1
- package/dist/tools/read/get-path-items.d.ts.map +1 -1
- package/dist/tools/read/get-path-items.js +26 -20
- package/dist/tools/read/get-path-items.js.map +1 -1
- package/dist/tools/read/get-selection.d.ts.map +1 -1
- package/dist/tools/read/get-selection.js +19 -33
- package/dist/tools/read/get-selection.js.map +1 -1
- package/dist/tools/read/get-separation-info.d.ts +3 -0
- package/dist/tools/read/get-separation-info.d.ts.map +1 -0
- package/dist/tools/read/get-separation-info.js +94 -0
- package/dist/tools/read/get-separation-info.js.map +1 -0
- package/dist/tools/read/get-symbols.d.ts.map +1 -1
- package/dist/tools/read/get-symbols.js +19 -23
- package/dist/tools/read/get-symbols.js.map +1 -1
- package/dist/tools/read/get-text-frame-detail.d.ts.map +1 -1
- package/dist/tools/read/get-text-frame-detail.js +270 -67
- package/dist/tools/read/get-text-frame-detail.js.map +1 -1
- package/dist/tools/read/list-fonts.d.ts +3 -0
- package/dist/tools/read/list-fonts.d.ts.map +1 -0
- package/dist/tools/read/list-fonts.js +78 -0
- package/dist/tools/read/list-fonts.js.map +1 -0
- package/dist/tools/read/list-text-frames.d.ts.map +1 -1
- package/dist/tools/read/list-text-frames.js +99 -36
- package/dist/tools/read/list-text-frames.js.map +1 -1
- package/dist/tools/registry.d.ts.map +1 -1
- package/dist/tools/registry.js +68 -0
- package/dist/tools/registry.js.map +1 -1
- package/dist/tools/session.d.ts +36 -0
- package/dist/tools/session.d.ts.map +1 -0
- package/dist/tools/session.js +246 -0
- package/dist/tools/session.js.map +1 -0
- package/dist/tools/utility/check-text-consistency.d.ts +3 -0
- package/dist/tools/utility/check-text-consistency.d.ts.map +1 -0
- package/dist/tools/utility/check-text-consistency.js +303 -0
- package/dist/tools/utility/check-text-consistency.js.map +1 -0
- package/dist/tools/utility/preflight-check.d.ts.map +1 -1
- package/dist/tools/utility/preflight-check.js +141 -43
- package/dist/tools/utility/preflight-check.js.map +1 -1
- package/dist/tools/utility/set-workflow.d.ts +3 -0
- package/dist/tools/utility/set-workflow.d.ts.map +1 -0
- package/dist/tools/utility/set-workflow.js +95 -0
- package/dist/tools/utility/set-workflow.js.map +1 -0
- package/dist/utils/image-header.d.ts.map +1 -1
- package/dist/utils/image-header.js +5 -1
- package/dist/utils/image-header.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { executeJsx } from '../executor/jsx-runner.js';
|
|
3
|
+
// --- Session state (module-level, lives for the MCP server process lifetime) ---
|
|
4
|
+
let sessionCoordinateSystem = null;
|
|
5
|
+
let sessionWorkflow = null;
|
|
6
|
+
/** true when user/AI explicitly called set_workflow */
|
|
7
|
+
let sessionExplicit = false;
|
|
8
|
+
export function getSessionCoordinateSystem() {
|
|
9
|
+
return sessionCoordinateSystem;
|
|
10
|
+
}
|
|
11
|
+
export function getSessionWorkflow() {
|
|
12
|
+
return sessionWorkflow;
|
|
13
|
+
}
|
|
14
|
+
export function setSession(workflow, coordinateSystem) {
|
|
15
|
+
sessionWorkflow = workflow;
|
|
16
|
+
sessionCoordinateSystem = coordinateSystem;
|
|
17
|
+
sessionExplicit = true;
|
|
18
|
+
}
|
|
19
|
+
export function clearSession() {
|
|
20
|
+
sessionWorkflow = null;
|
|
21
|
+
sessionCoordinateSystem = null;
|
|
22
|
+
sessionExplicit = false;
|
|
23
|
+
autoDetectCache = null;
|
|
24
|
+
}
|
|
25
|
+
/** ドキュメント切替時(create/close/open)に自動検出キャッシュのみ無効化 */
|
|
26
|
+
export function invalidateAutoDetectCache() {
|
|
27
|
+
autoDetectCache = null;
|
|
28
|
+
}
|
|
29
|
+
let autoDetectCache = null;
|
|
30
|
+
/** Minimal JSX to fetch only the current document key (for cache validation) */
|
|
31
|
+
const GET_DOCUMENT_KEY_JSX = `
|
|
32
|
+
try {
|
|
33
|
+
if (app.documents.length === 0) {
|
|
34
|
+
writeResultFile(RESULT_PATH, { error: true, message: "No document open" });
|
|
35
|
+
} else {
|
|
36
|
+
var doc = app.activeDocument;
|
|
37
|
+
var fp = "";
|
|
38
|
+
try { fp = doc.fullName.fsName; } catch (e) {}
|
|
39
|
+
writeResultFile(RESULT_PATH, { documentKey: fp || doc.name });
|
|
40
|
+
}
|
|
41
|
+
} catch (e) {
|
|
42
|
+
writeResultFile(RESULT_PATH, { error: true, message: e.message });
|
|
43
|
+
}
|
|
44
|
+
`;
|
|
45
|
+
/** Lightweight JSX to fetch only document signals needed for workflow detection */
|
|
46
|
+
const DETECT_SIGNALS_JSX = `
|
|
47
|
+
try {
|
|
48
|
+
var preflight = preflightChecks();
|
|
49
|
+
if (preflight) {
|
|
50
|
+
writeResultFile(RESULT_PATH, preflight);
|
|
51
|
+
} else {
|
|
52
|
+
var doc = app.activeDocument;
|
|
53
|
+
var filePath = "";
|
|
54
|
+
try { filePath = doc.fullName.fsName; } catch (e) { filePath = ""; }
|
|
55
|
+
|
|
56
|
+
var colorMode = "unknown";
|
|
57
|
+
if (doc.documentColorSpace === DocumentColorSpace.CMYK) colorMode = "CMYK";
|
|
58
|
+
else if (doc.documentColorSpace === DocumentColorSpace.RGB) colorMode = "RGB";
|
|
59
|
+
|
|
60
|
+
var colorProfile = "";
|
|
61
|
+
try { colorProfile = doc.colorProfileName; } catch (e) {}
|
|
62
|
+
|
|
63
|
+
var rulerUnits = "unknown";
|
|
64
|
+
try {
|
|
65
|
+
var ru = doc.rulerUnits;
|
|
66
|
+
if (ru === RulerUnits.Pixels) rulerUnits = "px";
|
|
67
|
+
else if (ru === RulerUnits.Points) rulerUnits = "pt";
|
|
68
|
+
else if (ru === RulerUnits.Millimeters) rulerUnits = "mm";
|
|
69
|
+
else if (ru === RulerUnits.Centimeters) rulerUnits = "cm";
|
|
70
|
+
else if (ru === RulerUnits.Inches) rulerUnits = "in";
|
|
71
|
+
else if (ru === RulerUnits.Picas) rulerUnits = "pica";
|
|
72
|
+
} catch (e) {}
|
|
73
|
+
|
|
74
|
+
var rasterRes = 0;
|
|
75
|
+
try { rasterRes = doc.rasterEffectSettings.resolution; } catch (e) {}
|
|
76
|
+
|
|
77
|
+
writeResultFile(RESULT_PATH, {
|
|
78
|
+
documentKey: filePath || doc.name,
|
|
79
|
+
colorMode: colorMode,
|
|
80
|
+
rulerUnits: rulerUnits,
|
|
81
|
+
rasterEffectResolution: rasterRes,
|
|
82
|
+
colorProfile: colorProfile
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
} catch (e) {
|
|
86
|
+
writeResultFile(RESULT_PATH, { error: true, message: e.message });
|
|
87
|
+
}
|
|
88
|
+
`;
|
|
89
|
+
/**
|
|
90
|
+
* Auto-detect coordinate system from the active document.
|
|
91
|
+
* Caches result keyed by document; invalidates on document switch.
|
|
92
|
+
*/
|
|
93
|
+
async function autoDetectCoordinateSystem() {
|
|
94
|
+
const result = await executeJsx(DETECT_SIGNALS_JSX);
|
|
95
|
+
if (!result || result.error) {
|
|
96
|
+
return 'artboard-web'; // fallback on error
|
|
97
|
+
}
|
|
98
|
+
const docKey = result.documentKey ?? '';
|
|
99
|
+
const hint = detectWorkflow({
|
|
100
|
+
colorMode: result.colorMode ?? 'unknown',
|
|
101
|
+
rulerUnits: result.rulerUnits ?? 'unknown',
|
|
102
|
+
rasterEffectResolution: result.rasterEffectResolution ?? 0,
|
|
103
|
+
colorProfile: result.colorProfile ?? '',
|
|
104
|
+
});
|
|
105
|
+
autoDetectCache = {
|
|
106
|
+
documentKey: docKey,
|
|
107
|
+
coordinateSystem: hint.recommendedCoordinateSystem,
|
|
108
|
+
workflow: hint.detectedWorkflow,
|
|
109
|
+
};
|
|
110
|
+
return hint.recommendedCoordinateSystem;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Resolve coordinate_system:
|
|
114
|
+
* 1. explicit param (per-tool call)
|
|
115
|
+
* 2. session default (set via set_workflow)
|
|
116
|
+
* 3. auto-detect from document signals (cached, invalidated on document switch)
|
|
117
|
+
* 4. fallback: 'artboard-web'
|
|
118
|
+
*/
|
|
119
|
+
export async function resolveCoordinateSystem(explicit) {
|
|
120
|
+
if (explicit !== undefined)
|
|
121
|
+
return explicit;
|
|
122
|
+
if (sessionExplicit)
|
|
123
|
+
return sessionCoordinateSystem;
|
|
124
|
+
// キャッシュがあれば、現在のドキュメントキーと比較して有効性を確認
|
|
125
|
+
if (autoDetectCache) {
|
|
126
|
+
try {
|
|
127
|
+
const keyResult = await executeJsx(GET_DOCUMENT_KEY_JSX);
|
|
128
|
+
if (keyResult && !keyResult.error) {
|
|
129
|
+
const currentKey = keyResult.documentKey ?? '';
|
|
130
|
+
if (currentKey === autoDetectCache.documentKey) {
|
|
131
|
+
return autoDetectCache.coordinateSystem;
|
|
132
|
+
}
|
|
133
|
+
// ドキュメントが変わっている — キャッシュ無効化して再検出
|
|
134
|
+
autoDetectCache = null;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
catch {
|
|
138
|
+
// キー取得失敗時はキャッシュを信頼せず再検出へフォールスルー
|
|
139
|
+
autoDetectCache = null;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
// キャッシュなし — 初回自動検出
|
|
143
|
+
try {
|
|
144
|
+
return await autoDetectCoordinateSystem();
|
|
145
|
+
}
|
|
146
|
+
catch {
|
|
147
|
+
return 'artboard-web';
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
// --- Shared Zod schema (all tools import this instead of defining their own) ---
|
|
151
|
+
export const coordinateSystemSchema = z
|
|
152
|
+
.enum(['artboard-web', 'document'])
|
|
153
|
+
.optional()
|
|
154
|
+
.describe('Coordinate system. Omit to auto-detect from document (CMYK→document, RGB→artboard-web). Override via set_workflow.');
|
|
155
|
+
export function detectWorkflow(signals) {
|
|
156
|
+
const { colorMode, rulerUnits, rasterEffectResolution, colorProfile } = signals;
|
|
157
|
+
const isCMYK = colorMode === 'CMYK';
|
|
158
|
+
const isRGB = colorMode === 'RGB';
|
|
159
|
+
const isPixelUnit = rulerUnits === 'px';
|
|
160
|
+
const isPrintUnit = ['mm', 'cm', 'in', 'pica'].includes(rulerUnits);
|
|
161
|
+
const is72dpi = rasterEffectResolution === 72;
|
|
162
|
+
const isHighRes = rasterEffectResolution >= 300;
|
|
163
|
+
const isMidRes = rasterEffectResolution >= 150 && rasterEffectResolution < 300;
|
|
164
|
+
const isPrintProfile = isCMYK ||
|
|
165
|
+
/japan color|fogra|swop|gracol|coated|uncoated/i.test(colorProfile);
|
|
166
|
+
const isWebProfile = /srgb|display p3/i.test(colorProfile);
|
|
167
|
+
let webScore = 0;
|
|
168
|
+
let printScore = 0;
|
|
169
|
+
let videoScore = 0;
|
|
170
|
+
// Color mode
|
|
171
|
+
if (isCMYK)
|
|
172
|
+
printScore += 3;
|
|
173
|
+
if (isRGB) {
|
|
174
|
+
webScore += 1;
|
|
175
|
+
videoScore += 1;
|
|
176
|
+
}
|
|
177
|
+
// Units
|
|
178
|
+
if (isPixelUnit) {
|
|
179
|
+
webScore += 2;
|
|
180
|
+
videoScore += 2;
|
|
181
|
+
}
|
|
182
|
+
if (isPrintUnit)
|
|
183
|
+
printScore += 2;
|
|
184
|
+
if (rulerUnits === 'pt') {
|
|
185
|
+
printScore += 1;
|
|
186
|
+
webScore += 1;
|
|
187
|
+
}
|
|
188
|
+
// Resolution
|
|
189
|
+
if (is72dpi)
|
|
190
|
+
webScore += 2;
|
|
191
|
+
if (isHighRes)
|
|
192
|
+
printScore += 2;
|
|
193
|
+
if (isMidRes && isRGB)
|
|
194
|
+
videoScore += 2;
|
|
195
|
+
// Color profile
|
|
196
|
+
if (isPrintProfile)
|
|
197
|
+
printScore += 2;
|
|
198
|
+
if (isWebProfile)
|
|
199
|
+
webScore += 2;
|
|
200
|
+
const maxScore = Math.max(webScore, printScore, videoScore);
|
|
201
|
+
let detectedWorkflow;
|
|
202
|
+
const reasons = [];
|
|
203
|
+
if (maxScore === 0) {
|
|
204
|
+
detectedWorkflow = 'unknown';
|
|
205
|
+
reasons.push('No strong signals detected');
|
|
206
|
+
}
|
|
207
|
+
else if (printScore === maxScore && printScore > webScore) {
|
|
208
|
+
detectedWorkflow = 'print';
|
|
209
|
+
if (isCMYK)
|
|
210
|
+
reasons.push('CMYK color mode');
|
|
211
|
+
if (isPrintUnit)
|
|
212
|
+
reasons.push(`${rulerUnits} units`);
|
|
213
|
+
if (isHighRes)
|
|
214
|
+
reasons.push(`${rasterEffectResolution}dpi`);
|
|
215
|
+
if (isPrintProfile && colorProfile)
|
|
216
|
+
reasons.push(colorProfile);
|
|
217
|
+
}
|
|
218
|
+
else if (videoScore === maxScore && videoScore > webScore) {
|
|
219
|
+
detectedWorkflow = 'video';
|
|
220
|
+
if (isRGB)
|
|
221
|
+
reasons.push('RGB color mode');
|
|
222
|
+
if (isPixelUnit)
|
|
223
|
+
reasons.push('px units');
|
|
224
|
+
if (isMidRes)
|
|
225
|
+
reasons.push(`${rasterEffectResolution}dpi`);
|
|
226
|
+
}
|
|
227
|
+
else {
|
|
228
|
+
detectedWorkflow = 'web';
|
|
229
|
+
if (isRGB)
|
|
230
|
+
reasons.push('RGB color mode');
|
|
231
|
+
if (isPixelUnit)
|
|
232
|
+
reasons.push('px units');
|
|
233
|
+
if (is72dpi)
|
|
234
|
+
reasons.push('72dpi');
|
|
235
|
+
if (isWebProfile && colorProfile)
|
|
236
|
+
reasons.push(colorProfile);
|
|
237
|
+
}
|
|
238
|
+
const recommendedCoordinateSystem = detectedWorkflow === 'print' ? 'document' : 'artboard-web';
|
|
239
|
+
return {
|
|
240
|
+
detectedWorkflow,
|
|
241
|
+
recommendedCoordinateSystem,
|
|
242
|
+
reasoning: reasons.join(', '),
|
|
243
|
+
signals,
|
|
244
|
+
};
|
|
245
|
+
}
|
|
246
|
+
//# sourceMappingURL=session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/tools/session.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check-text-consistency.d.ts","sourceRoot":"","sources":["../../../src/tools/utility/check-text-consistency.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAmTpE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAoDhD"}
|
|
@@ -0,0 +1,303 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { executeJsx } from '../../executor/jsx-runner.js';
|
|
3
|
+
import { coordinateSystemSchema, resolveCoordinateSystem, } from '../session.js';
|
|
4
|
+
import { READ_ANNOTATIONS } from '../modify/shared.js';
|
|
5
|
+
/**
|
|
6
|
+
* check_text_consistency — テキスト一貫性チェック(ダミーテキスト検出・フォント統計)
|
|
7
|
+
* @see https://ai-scripting.docsforadobe.dev/jsobjref/TextFrameItem/ — contents, textRanges
|
|
8
|
+
* @see https://ai-scripting.docsforadobe.dev/jsobjref/CharacterAttributes/ — size, textFont
|
|
9
|
+
*/
|
|
10
|
+
const jsxCode = `
|
|
11
|
+
var preflight = preflightChecks();
|
|
12
|
+
if (preflight) {
|
|
13
|
+
writeResultFile(RESULT_PATH, preflight);
|
|
14
|
+
} else {
|
|
15
|
+
try {
|
|
16
|
+
var params = readParamsFile(PARAMS_PATH);
|
|
17
|
+
var doc = app.activeDocument;
|
|
18
|
+
var filterArtboard = (params && typeof params.artboard_index === "number") ? params.artboard_index : null;
|
|
19
|
+
|
|
20
|
+
if (filterArtboard !== null && (filterArtboard < 0 || filterArtboard >= doc.artboards.length)) {
|
|
21
|
+
writeResultFile(RESULT_PATH, {
|
|
22
|
+
error: true,
|
|
23
|
+
message: "Artboard index " + filterArtboard + " is out of range (0-" + (doc.artboards.length - 1) + ")"
|
|
24
|
+
});
|
|
25
|
+
} else {
|
|
26
|
+
var frames = [];
|
|
27
|
+
for (var i = 0; i < doc.textFrames.length; i++) {
|
|
28
|
+
var tf = doc.textFrames[i];
|
|
29
|
+
try {
|
|
30
|
+
var uuid = ensureUUID(tf);
|
|
31
|
+
var abIdx = getArtboardIndexForItem(tf);
|
|
32
|
+
|
|
33
|
+
if (filterArtboard !== null && abIdx !== filterArtboard) continue;
|
|
34
|
+
|
|
35
|
+
var layerName = getParentLayerName(tf);
|
|
36
|
+
|
|
37
|
+
frames.push({
|
|
38
|
+
uuid: uuid,
|
|
39
|
+
contents: tf.contents,
|
|
40
|
+
layerName: layerName,
|
|
41
|
+
artboardIndex: abIdx
|
|
42
|
+
});
|
|
43
|
+
} catch(e) {}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
writeResultFile(RESULT_PATH, {
|
|
47
|
+
totalFrames: frames.length,
|
|
48
|
+
frames: frames
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
} catch (e) {
|
|
52
|
+
writeResultFile(RESULT_PATH, { error: true, message: e.message, line: e.line });
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
`;
|
|
56
|
+
const DUMMY_PATTERNS = [
|
|
57
|
+
{ pattern: /lorem\s+ipsum/i, label: 'Lorem ipsum' },
|
|
58
|
+
{ pattern: /テキストが入ります/, label: 'テキストが入ります' },
|
|
59
|
+
{ pattern: /ここにテキスト/, label: 'ここにテキスト' },
|
|
60
|
+
{ pattern: /ダミーテキスト/, label: 'ダミーテキスト' },
|
|
61
|
+
{ pattern: /^ダミー$/, label: 'ダミー' },
|
|
62
|
+
{ pattern: /^sample\s*text$/i, label: 'sample text' },
|
|
63
|
+
{ pattern: /^placeholder$/i, label: 'placeholder' },
|
|
64
|
+
{ pattern: /^xxx+$/i, label: 'XXX placeholder' },
|
|
65
|
+
{ pattern: /^○+$/, label: '○○○ placeholder' },
|
|
66
|
+
{ pattern: /^●+$/, label: '●●● placeholder' },
|
|
67
|
+
{ pattern: /^△+$/, label: '△△△ placeholder' },
|
|
68
|
+
{ pattern: /仮テキスト/, label: '仮テキスト' },
|
|
69
|
+
{ pattern: /テキストを入力/, label: 'テキストを入力' },
|
|
70
|
+
];
|
|
71
|
+
function detectDummyTexts(frames) {
|
|
72
|
+
const hits = [];
|
|
73
|
+
for (const frame of frames) {
|
|
74
|
+
const text = frame.contents.trim();
|
|
75
|
+
if (!text)
|
|
76
|
+
continue;
|
|
77
|
+
for (const dp of DUMMY_PATTERNS) {
|
|
78
|
+
if (dp.pattern.test(text)) {
|
|
79
|
+
hits.push({
|
|
80
|
+
uuid: frame.uuid,
|
|
81
|
+
contents: text.substring(0, 100),
|
|
82
|
+
pattern: dp.label,
|
|
83
|
+
layerName: frame.layerName,
|
|
84
|
+
artboardIndex: frame.artboardIndex,
|
|
85
|
+
});
|
|
86
|
+
break;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return hits;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Detect katakana long vowel variations: "サーバー" vs "サーバ"
|
|
94
|
+
*/
|
|
95
|
+
function detectKatakanaLongVowel(frames) {
|
|
96
|
+
// Extract all katakana words from text frames
|
|
97
|
+
const katakanaWordMap = new Map(); // base -> {variant -> uuids}
|
|
98
|
+
const katakanaPattern = /[\u30A0-\u30FF]{2,}/g;
|
|
99
|
+
for (const frame of frames) {
|
|
100
|
+
const matches = frame.contents.match(katakanaPattern);
|
|
101
|
+
if (!matches)
|
|
102
|
+
continue;
|
|
103
|
+
for (const word of matches) {
|
|
104
|
+
// Normalize: remove trailing long vowel mark
|
|
105
|
+
const base = word.replace(/ー+$/, '');
|
|
106
|
+
if (base.length < 2)
|
|
107
|
+
continue;
|
|
108
|
+
if (!katakanaWordMap.has(base)) {
|
|
109
|
+
katakanaWordMap.set(base, new Map());
|
|
110
|
+
}
|
|
111
|
+
const variants = katakanaWordMap.get(base);
|
|
112
|
+
if (!variants.has(word)) {
|
|
113
|
+
variants.set(word, []);
|
|
114
|
+
}
|
|
115
|
+
variants.get(word).push(frame.uuid);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
const variationGroups = [];
|
|
119
|
+
for (const [, variants] of katakanaWordMap) {
|
|
120
|
+
if (variants.size > 1) {
|
|
121
|
+
const group = [];
|
|
122
|
+
for (const [text, uuids] of variants) {
|
|
123
|
+
group.push({ text, count: uuids.length, uuids: [...new Set(uuids)] });
|
|
124
|
+
}
|
|
125
|
+
variationGroups.push(...group);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
if (variationGroups.length === 0)
|
|
129
|
+
return null;
|
|
130
|
+
// Regroup by base word
|
|
131
|
+
const result = [];
|
|
132
|
+
const seen = new Set();
|
|
133
|
+
for (const [base, variants] of katakanaWordMap) {
|
|
134
|
+
if (variants.size <= 1)
|
|
135
|
+
continue;
|
|
136
|
+
if (seen.has(base))
|
|
137
|
+
continue;
|
|
138
|
+
seen.add(base);
|
|
139
|
+
for (const [text, uuids] of variants) {
|
|
140
|
+
result.push({ text, count: uuids.length, uuids: [...new Set(uuids)] });
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
return {
|
|
144
|
+
type: 'katakana_long_vowel',
|
|
145
|
+
description: 'Katakana trailing long vowel mark variation (e.g. "サーバー" vs "サーバ")',
|
|
146
|
+
variants: result,
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Detect fullwidth/halfwidth number variations: "123" vs "123"
|
|
151
|
+
*/
|
|
152
|
+
function detectFullwidthHalfwidth(frames) {
|
|
153
|
+
let hasFullwidthDigits = false;
|
|
154
|
+
let hasHalfwidthDigits = false;
|
|
155
|
+
const fullwidthUuids = [];
|
|
156
|
+
const halfwidthUuids = [];
|
|
157
|
+
const fullwidthDigitPattern = /[0-9]+/;
|
|
158
|
+
const halfwidthDigitPattern = /[0-9]+/;
|
|
159
|
+
for (const frame of frames) {
|
|
160
|
+
if (fullwidthDigitPattern.test(frame.contents)) {
|
|
161
|
+
hasFullwidthDigits = true;
|
|
162
|
+
fullwidthUuids.push(frame.uuid);
|
|
163
|
+
}
|
|
164
|
+
if (halfwidthDigitPattern.test(frame.contents)) {
|
|
165
|
+
hasHalfwidthDigits = true;
|
|
166
|
+
halfwidthUuids.push(frame.uuid);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
if (hasFullwidthDigits && hasHalfwidthDigits) {
|
|
170
|
+
return {
|
|
171
|
+
type: 'fullwidth_halfwidth_digits',
|
|
172
|
+
description: 'Mixed fullwidth and halfwidth digits (e.g. "123" vs "123")',
|
|
173
|
+
variants: [
|
|
174
|
+
{ text: 'Fullwidth digits (0-9)', count: fullwidthUuids.length, uuids: [...new Set(fullwidthUuids)] },
|
|
175
|
+
{ text: 'Halfwidth digits (0-9)', count: halfwidthUuids.length, uuids: [...new Set(halfwidthUuids)] },
|
|
176
|
+
],
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
return null;
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Detect fullwidth/halfwidth alphabet variations: "A" vs "A"
|
|
183
|
+
*/
|
|
184
|
+
function detectFullwidthAlphabet(frames) {
|
|
185
|
+
let hasFullwidth = false;
|
|
186
|
+
let hasHalfwidth = false;
|
|
187
|
+
const fullwidthUuids = [];
|
|
188
|
+
const halfwidthUuids = [];
|
|
189
|
+
const fullwidthAlphaPattern = /[A-Za-z]+/;
|
|
190
|
+
const halfwidthAlphaPattern = /[A-Za-z]+/;
|
|
191
|
+
for (const frame of frames) {
|
|
192
|
+
if (fullwidthAlphaPattern.test(frame.contents)) {
|
|
193
|
+
hasFullwidth = true;
|
|
194
|
+
fullwidthUuids.push(frame.uuid);
|
|
195
|
+
}
|
|
196
|
+
if (halfwidthAlphaPattern.test(frame.contents)) {
|
|
197
|
+
hasHalfwidth = true;
|
|
198
|
+
halfwidthUuids.push(frame.uuid);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
if (hasFullwidth && hasHalfwidth) {
|
|
202
|
+
return {
|
|
203
|
+
type: 'fullwidth_halfwidth_alpha',
|
|
204
|
+
description: 'Mixed fullwidth and halfwidth alphabets (e.g. "A" vs "A")',
|
|
205
|
+
variants: [
|
|
206
|
+
{ text: 'Fullwidth alpha (A-Z)', count: fullwidthUuids.length, uuids: [...new Set(fullwidthUuids)] },
|
|
207
|
+
{ text: 'Halfwidth alpha (A-Z)', count: halfwidthUuids.length, uuids: [...new Set(halfwidthUuids)] },
|
|
208
|
+
],
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
return null;
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Detect wave dash vs fullwidth tilde: "〜" (U+301C) vs "~" (U+FF5E)
|
|
215
|
+
*/
|
|
216
|
+
function detectWaveDashTilde(frames) {
|
|
217
|
+
let hasWaveDash = false;
|
|
218
|
+
let hasTilde = false;
|
|
219
|
+
const waveDashUuids = [];
|
|
220
|
+
const tildeUuids = [];
|
|
221
|
+
for (const frame of frames) {
|
|
222
|
+
if (frame.contents.includes('\u301C')) {
|
|
223
|
+
hasWaveDash = true;
|
|
224
|
+
waveDashUuids.push(frame.uuid);
|
|
225
|
+
}
|
|
226
|
+
if (frame.contents.includes('\uFF5E')) {
|
|
227
|
+
hasTilde = true;
|
|
228
|
+
tildeUuids.push(frame.uuid);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
if (hasWaveDash && hasTilde) {
|
|
232
|
+
return {
|
|
233
|
+
type: 'wave_dash_tilde',
|
|
234
|
+
description: 'Wave dash (〜 U+301C) vs fullwidth tilde (~ U+FF5E)',
|
|
235
|
+
variants: [
|
|
236
|
+
{ text: '〜 (Wave dash U+301C)', count: waveDashUuids.length, uuids: [...new Set(waveDashUuids)] },
|
|
237
|
+
{ text: '~ (Fullwidth tilde U+FF5E)', count: tildeUuids.length, uuids: [...new Set(tildeUuids)] },
|
|
238
|
+
],
|
|
239
|
+
};
|
|
240
|
+
}
|
|
241
|
+
return null;
|
|
242
|
+
}
|
|
243
|
+
function analyzeTextConsistency(frames) {
|
|
244
|
+
const dummyTexts = detectDummyTexts(frames);
|
|
245
|
+
const knownVariations = [];
|
|
246
|
+
const katakana = detectKatakanaLongVowel(frames);
|
|
247
|
+
if (katakana)
|
|
248
|
+
knownVariations.push(katakana);
|
|
249
|
+
const fwHwDigits = detectFullwidthHalfwidth(frames);
|
|
250
|
+
if (fwHwDigits)
|
|
251
|
+
knownVariations.push(fwHwDigits);
|
|
252
|
+
const fwHwAlpha = detectFullwidthAlphabet(frames);
|
|
253
|
+
if (fwHwAlpha)
|
|
254
|
+
knownVariations.push(fwHwAlpha);
|
|
255
|
+
const waveDash = detectWaveDashTilde(frames);
|
|
256
|
+
if (waveDash)
|
|
257
|
+
knownVariations.push(waveDash);
|
|
258
|
+
// Return all texts for LLM analysis
|
|
259
|
+
const allTexts = frames.map((f) => ({
|
|
260
|
+
uuid: f.uuid,
|
|
261
|
+
contents: f.contents,
|
|
262
|
+
layerName: f.layerName,
|
|
263
|
+
artboardIndex: f.artboardIndex,
|
|
264
|
+
}));
|
|
265
|
+
return { dummyTexts, knownVariations, allTexts };
|
|
266
|
+
}
|
|
267
|
+
export function register(server) {
|
|
268
|
+
server.registerTool('check_text_consistency', {
|
|
269
|
+
title: 'Check Text Consistency',
|
|
270
|
+
description: 'Analyze text frames for dummy/placeholder text and known notation variation patterns (katakana long vowel, fullwidth/halfwidth, wave dash/tilde). Returns all text contents for LLM-driven deeper analysis of inconsistencies, typos, and version mismatches.',
|
|
271
|
+
inputSchema: {
|
|
272
|
+
artboard_index: z
|
|
273
|
+
.number()
|
|
274
|
+
.int()
|
|
275
|
+
.min(0)
|
|
276
|
+
.optional()
|
|
277
|
+
.describe('Filter by artboard index (0-based)'),
|
|
278
|
+
coordinate_system: coordinateSystemSchema,
|
|
279
|
+
},
|
|
280
|
+
annotations: READ_ANNOTATIONS,
|
|
281
|
+
}, async (params) => {
|
|
282
|
+
const resolvedParams = { ...params, coordinate_system: await resolveCoordinateSystem(params.coordinate_system) };
|
|
283
|
+
const result = (await executeJsx(jsxCode, resolvedParams));
|
|
284
|
+
if (result.error) {
|
|
285
|
+
return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] };
|
|
286
|
+
}
|
|
287
|
+
const analysis = analyzeTextConsistency(result.frames);
|
|
288
|
+
return {
|
|
289
|
+
content: [
|
|
290
|
+
{
|
|
291
|
+
type: 'text',
|
|
292
|
+
text: JSON.stringify({
|
|
293
|
+
totalFrames: result.totalFrames,
|
|
294
|
+
dummyTexts: analysis.dummyTexts,
|
|
295
|
+
knownVariations: analysis.knownVariations,
|
|
296
|
+
allTexts: analysis.allTexts,
|
|
297
|
+
}, null, 2),
|
|
298
|
+
},
|
|
299
|
+
],
|
|
300
|
+
};
|
|
301
|
+
});
|
|
302
|
+
}
|
|
303
|
+
//# sourceMappingURL=check-text-consistency.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check-text-consistency.js","sourceRoot":"","sources":["../../../src/tools/utility/check-text-consistency.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preflight-check.d.ts","sourceRoot":"","sources":["../../../src/tools/utility/preflight-check.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"preflight-check.d.ts","sourceRoot":"","sources":["../../../src/tools/utility/preflight-check.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA+XpE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA2JhD"}
|