@alisaitteke/photoshop-mcp 1.7.34 → 1.7.35
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/dist/core/ping-engine.d.ts.map +1 -1
- package/dist/core/ping-engine.js +8 -5
- package/dist/core/ping-engine.js.map +1 -1
- package/dist/errors/envelope.d.ts +1 -1
- package/dist/errors/envelope.d.ts.map +1 -1
- package/dist/errors/envelope.js +30 -0
- package/dist/errors/envelope.js.map +1 -1
- package/dist/feedback/nudge.d.ts +4 -0
- package/dist/feedback/nudge.d.ts.map +1 -1
- package/dist/feedback/nudge.js +11 -0
- package/dist/feedback/nudge.js.map +1 -1
- package/dist/platform/connection.d.ts +4 -5
- package/dist/platform/connection.d.ts.map +1 -1
- package/dist/platform/connection.js +10 -9
- package/dist/platform/connection.js.map +1 -1
- package/dist/platform/macos-app.d.ts +41 -0
- package/dist/platform/macos-app.d.ts.map +1 -0
- package/dist/platform/macos-app.js +71 -0
- package/dist/platform/macos-app.js.map +1 -0
- package/dist/platform/macos-detector.d.ts.map +1 -1
- package/dist/platform/macos-detector.js +6 -13
- package/dist/platform/macos-detector.js.map +1 -1
- package/dist/platform/macos-executor.d.ts +5 -2
- package/dist/platform/macos-executor.d.ts.map +1 -1
- package/dist/platform/macos-executor.js +17 -18
- package/dist/platform/macos-executor.js.map +1 -1
- package/dist/tools/session-tools.js +1 -1
- package/dist/tools/session-tools.js.map +1 -1
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +19 -1
- package/dist/utils/logger.js.map +1 -1
- package/package.json +4 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ping-engine.d.ts","sourceRoot":"","sources":["../../src/core/ping-engine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"ping-engine.d.ts","sourceRoot":"","sources":["../../src/core/ping-engine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAQzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAGhE;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,iCAAiC,CAAC;AAKhE,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,mBAAmB,GAC9B,OAAO,CAAC,cAAc,CAAC,CAczB"}
|
package/dist/core/ping-engine.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { PhotoshopAPIFactory } from '../api/photoshop-api.js';
|
|
2
|
-
import { buildPingToolResult } from '../feedback/nudge.js';
|
|
2
|
+
import { buildPingFailureResult, buildPingToolResult, PING_NOT_FOUND_REASON, PING_NOT_RUNNING_REASON, } from '../feedback/nudge.js';
|
|
3
3
|
import { DEFAULT_SCRIPT_TIMEOUT_MS } from '../platform/script-timeout.js';
|
|
4
4
|
/**
|
|
5
5
|
* Tiny read. Success means Photoshop accepted and finished a script on the
|
|
@@ -7,11 +7,12 @@ import { DEFAULT_SCRIPT_TIMEOUT_MS } from '../platform/script-timeout.js';
|
|
|
7
7
|
* so a busy engine fails here instead of inside get_state / get_layers.
|
|
8
8
|
*/
|
|
9
9
|
export const PING_PROBE_SCRIPT = 'return app.documents.length;';
|
|
10
|
-
const
|
|
10
|
+
const NOT_RUNNING = /photoshop is not running/i;
|
|
11
|
+
const NOT_FOUND = /photoshop not found|photoshop info not available/i;
|
|
11
12
|
export async function probePhotoshopEngine(connection) {
|
|
12
13
|
const installed = await connection.ping();
|
|
13
14
|
if (!installed)
|
|
14
|
-
return
|
|
15
|
+
return buildPingFailureResult(PING_NOT_FOUND_REASON);
|
|
15
16
|
try {
|
|
16
17
|
const api = await new PhotoshopAPIFactory(connection).createAPI();
|
|
17
18
|
await api.executeScript(PING_PROBE_SCRIPT, DEFAULT_SCRIPT_TIMEOUT_MS, { launch: false });
|
|
@@ -19,8 +20,10 @@ export async function probePhotoshopEngine(connection) {
|
|
|
19
20
|
}
|
|
20
21
|
catch (error) {
|
|
21
22
|
const message = error instanceof Error ? error.message : String(error);
|
|
22
|
-
if (
|
|
23
|
-
return
|
|
23
|
+
if (NOT_RUNNING.test(message))
|
|
24
|
+
return buildPingFailureResult(PING_NOT_RUNNING_REASON);
|
|
25
|
+
if (NOT_FOUND.test(message))
|
|
26
|
+
return buildPingFailureResult(PING_NOT_FOUND_REASON);
|
|
24
27
|
throw error;
|
|
25
28
|
}
|
|
26
29
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ping-engine.js","sourceRoot":"","sources":["../../src/core/ping-engine.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,
|
|
1
|
+
{"version":3,"file":"ping-engine.js","sourceRoot":"","sources":["../../src/core/ping-engine.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EACL,sBAAsB,EACtB,mBAAmB,EACnB,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAE1E;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,8BAA8B,CAAC;AAEhE,MAAM,WAAW,GAAG,2BAA2B,CAAC;AAChD,MAAM,SAAS,GAAG,mDAAmD,CAAC;AAEtE,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,UAA+B;IAE/B,MAAM,SAAS,GAAG,MAAM,UAAU,CAAC,IAAI,EAAE,CAAC;IAC1C,IAAI,CAAC,SAAS;QAAE,OAAO,sBAAsB,CAAC,qBAAqB,CAAC,CAAC;IAErE,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,IAAI,mBAAmB,CAAC,UAAU,CAAC,CAAC,SAAS,EAAE,CAAC;QAClE,MAAM,GAAG,CAAC,aAAa,CAAC,iBAAiB,EAAE,yBAAyB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QACzF,OAAO,mBAAmB,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,IAAI,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC;YAAE,OAAO,sBAAsB,CAAC,uBAAuB,CAAC,CAAC;QACtF,IAAI,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC;YAAE,OAAO,sBAAsB,CAAC,qBAAqB,CAAC,CAAC;QAClF,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { CallToolResult } from '@modelcontextprotocol/sdk/types.js';
|
|
2
2
|
import type { ToolHandler } from '../core/tool-registry.js';
|
|
3
|
-
export type PhotoshopErrorCode = 'no_active_document' | 'no_active_layer' | 'layer_not_found' | 'document_not_found' | 'ambiguous_name' | 'invalid_arguments' | 'selection_required' | 'version_unsupported' | 'generative_unavailable' | 'generative_timeout' | 'extendscript_timeout' | 'scratch_disk_full' | 'artboard_not_found' | 'generative_credits_exhausted' | 'generative_no_selection' | 'uxp_bridge_unavailable' | 'extendscript_runtime_error' | 'file_not_found' | 'font_not_found' | 'not_text_layer' | 'unsupported_color_mode' | 'no_base_layer_below' | 'not_clipping' | 'unknown';
|
|
3
|
+
export type PhotoshopErrorCode = 'no_active_document' | 'no_active_layer' | 'layer_not_found' | 'document_not_found' | 'ambiguous_name' | 'invalid_arguments' | 'selection_required' | 'version_unsupported' | 'generative_unavailable' | 'generative_timeout' | 'extendscript_timeout' | 'scratch_disk_full' | 'artboard_not_found' | 'generative_credits_exhausted' | 'generative_no_selection' | 'uxp_bridge_unavailable' | 'extendscript_runtime_error' | 'file_not_found' | 'font_not_found' | 'not_text_layer' | 'unsupported_color_mode' | 'no_base_layer_below' | 'not_clipping' | 'photoshop_unreachable' | 'automation_permission_denied' | 'photoshop_app_not_resolved' | 'unknown';
|
|
4
4
|
export interface PhotoshopErrorEnvelope {
|
|
5
5
|
ok: false;
|
|
6
6
|
code: PhotoshopErrorCode;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"envelope.d.ts","sourceRoot":"","sources":["../../src/errors/envelope.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAEzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAI5D,MAAM,MAAM,kBAAkB,GAC1B,oBAAoB,GACpB,iBAAiB,GACjB,iBAAiB,GACjB,oBAAoB,GACpB,gBAAgB,GAChB,mBAAmB,GACnB,oBAAoB,GACpB,qBAAqB,GACrB,wBAAwB,GACxB,oBAAoB,GACpB,sBAAsB,GACtB,mBAAmB,GACnB,oBAAoB,GACpB,8BAA8B,GAC9B,yBAAyB,GACzB,wBAAwB,GACxB,4BAA4B,GAC5B,gBAAgB,GAChB,gBAAgB,GAChB,gBAAgB,GAChB,wBAAwB,GACxB,qBAAqB,GACrB,cAAc,GACd,SAAS,CAAC;AAEd,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,KAAK,CAAC;IACV,IAAI,EAAE,kBAAkB,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC1C;AAiCD;;;GAGG;AACH,eAAO,MAAM,wBAAwB,QAA0B,CAAC;AAmBhE,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,sBAAsB,CAM9E;AAED,6EAA6E;AAC7E,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,sBAAsB,GAAG,IAAI,CAMlG;
|
|
1
|
+
{"version":3,"file":"envelope.d.ts","sourceRoot":"","sources":["../../src/errors/envelope.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAEzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAI5D,MAAM,MAAM,kBAAkB,GAC1B,oBAAoB,GACpB,iBAAiB,GACjB,iBAAiB,GACjB,oBAAoB,GACpB,gBAAgB,GAChB,mBAAmB,GACnB,oBAAoB,GACpB,qBAAqB,GACrB,wBAAwB,GACxB,oBAAoB,GACpB,sBAAsB,GACtB,mBAAmB,GACnB,oBAAoB,GACpB,8BAA8B,GAC9B,yBAAyB,GACzB,wBAAwB,GACxB,4BAA4B,GAC5B,gBAAgB,GAChB,gBAAgB,GAChB,gBAAgB,GAChB,wBAAwB,GACxB,qBAAqB,GACrB,cAAc,GACd,uBAAuB,GACvB,8BAA8B,GAC9B,4BAA4B,GAC5B,SAAS,CAAC;AAEd,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,KAAK,CAAC;IACV,IAAI,EAAE,kBAAkB,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC1C;AAiCD;;;GAGG;AACH,eAAO,MAAM,wBAAwB,QAA0B,CAAC;AAmBhE,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,sBAAsB,CAM9E;AAED,6EAA6E;AAC7E,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,sBAAsB,GAAG,IAAI,CAMlG;AAiCD,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,sBAAsB,CAoCrE;AAKD;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,sBAAsB,GAC/B,sBAAsB,CAsBxB;AAmBD,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,sBAAsB,GAAG,cAAc,CAKrF;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,cAAc,GAAG,cAAc,CAqBxE;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,cAAc,CAGrE;AAyBD;;;;GAIG;AACH,wBAAsB,yBAAyB,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CAmB/F;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,WAAW,CA6BnF"}
|
package/dist/errors/envelope.js
CHANGED
|
@@ -59,6 +59,31 @@ export function diagnoseScratchDiskTimeout(freeBytes) {
|
|
|
59
59
|
const freeGb = (freeBytes / (1024 * 1024 * 1024)).toFixed(1);
|
|
60
60
|
return scratchDiskFullEnvelope(`Scripting timed out. The OS drive, Photoshop's default scratch disk, has ${freeGb} GB free, below the 10 GB minimum.`);
|
|
61
61
|
}
|
|
62
|
+
/**
|
|
63
|
+
* macOS osascript failures. Matched on the numeric AppleEvent / Launch Services
|
|
64
|
+
* code in parentheses, which stays the same when macOS localizes the message.
|
|
65
|
+
* The raw osascript text is kept in the message so the cause is not lost (#72).
|
|
66
|
+
*/
|
|
67
|
+
const APPLE_EVENT_ERRORS = [
|
|
68
|
+
{
|
|
69
|
+
pattern: /\(-1743\)/,
|
|
70
|
+
code: 'automation_permission_denied',
|
|
71
|
+
hint: 'macOS blocked Apple events to Photoshop. Open System Settings > Privacy & Security > Automation, allow the app that runs this MCP server (for example Claude, Cursor or Terminal) to control Adobe Photoshop, then call photoshop_ping.',
|
|
72
|
+
suggested_next_tool: 'photoshop_ping',
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
pattern: /\((?:-600|-609|-10810|-10822|-10827)\)/,
|
|
76
|
+
code: 'photoshop_unreachable',
|
|
77
|
+
hint: 'Apple events could not reach Photoshop. Make sure Photoshop is open in the same macOS user session as this MCP server. If the server runs inside a sandbox (an agent sandbox, a Seatbelt profile or a container), allow it to send Apple events or run it outside the sandbox.',
|
|
78
|
+
suggested_next_tool: 'photoshop_ping',
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
pattern: /\((?:-1728|-2741|-10814)\)/,
|
|
82
|
+
code: 'photoshop_app_not_resolved',
|
|
83
|
+
hint: 'AppleScript could not resolve the Photoshop application. Set PHOTOSHOP_PATH to the full .app path, for example "/Applications/Adobe Photoshop 2026/Adobe Photoshop 2026.app", then restart the MCP server.',
|
|
84
|
+
suggested_next_tool: 'photoshop_get_capabilities',
|
|
85
|
+
},
|
|
86
|
+
];
|
|
62
87
|
export function classifyError(message) {
|
|
63
88
|
if (SCRATCH_DISK_FULL_PATTERN.test(message)) {
|
|
64
89
|
return scratchDiskFullEnvelope(message);
|
|
@@ -71,6 +96,11 @@ export function classifyError(message) {
|
|
|
71
96
|
suggested_next_tool: 'photoshop_list_fonts',
|
|
72
97
|
};
|
|
73
98
|
}
|
|
99
|
+
for (const { pattern, code, hint, suggested_next_tool } of APPLE_EVENT_ERRORS) {
|
|
100
|
+
if (pattern.test(message)) {
|
|
101
|
+
return { ok: false, code, message: `${message.trim()} ${hint}`, suggested_next_tool };
|
|
102
|
+
}
|
|
103
|
+
}
|
|
74
104
|
for (const { pattern, code, suggested_next_tool } of ERROR_PATTERNS) {
|
|
75
105
|
if (pattern.test(message)) {
|
|
76
106
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"envelope.js","sourceRoot":"","sources":["../../src/errors/envelope.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAEhE,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,+BAA+B,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"envelope.js","sourceRoot":"","sources":["../../src/errors/envelope.ts"],"names":[],"mappings":"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"}
|
package/dist/feedback/nudge.d.ts
CHANGED
|
@@ -9,6 +9,8 @@ export declare const FEEDBACK_NUDGE_QUESTION_TR = "Sizin i\u00E7in bu MCP'yi dah
|
|
|
9
9
|
export declare const FEEDBACK_NUDGE_LANGUAGE_RULE = "MUST ask the user in the language they are using in this conversation. Detect it from their messages; if mixed, use their latest message. Never default to English. Translate Q1 into that language and show only that translation. English and Turkish below are meaning-only examples \u2014 do not paste them unless the user is actually speaking that language.";
|
|
10
10
|
export declare const PING_CONNECTED_TEXT = "Successfully connected to Photoshop";
|
|
11
11
|
export declare const PING_FAILED_TEXT = "Failed to connect to Photoshop";
|
|
12
|
+
export declare const PING_NOT_FOUND_REASON = "Photoshop was not found. Set PHOTOSHOP_PATH to the Photoshop app (macOS: the .app bundle, Windows: Photoshop.exe), then restart the MCP server.";
|
|
13
|
+
export declare const PING_NOT_RUNNING_REASON = "Photoshop is not running. Open Photoshop, wait until it finishes starting, then call photoshop_ping again. Ping never launches Photoshop.";
|
|
12
14
|
export type FeedbackChoice = 'yes' | 'not_now' | 'dont_ask';
|
|
13
15
|
export type FeedbackNudgeStatus = 'shown' | 'yes' | 'dont_ask';
|
|
14
16
|
export interface FeedbackNudgeStore {
|
|
@@ -39,4 +41,6 @@ export declare function buildFeedbackNudgeBlock(): string;
|
|
|
39
41
|
*/
|
|
40
42
|
export declare function buildPingToolResult(connected: boolean, now?: number): CallToolResult;
|
|
41
43
|
export declare function submitFeedbackFromArgs(args: Record<string, unknown>): CallToolResult;
|
|
44
|
+
/** Failed ping: PING_FAILED_TEXT stays the first block so existing clients still match it. */
|
|
45
|
+
export declare function buildPingFailureResult(reason: string): CallToolResult;
|
|
42
46
|
//# sourceMappingURL=nudge.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nudge.d.ts","sourceRoot":"","sources":["../../src/feedback/nudge.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AASzE,eAAO,MAAM,0BAA0B,QAA0B,CAAC;AAClE,eAAO,MAAM,yBAAyB,QAAiB,CAAC;AACxD,eAAO,MAAM,6BAA6B,MAAM,CAAC;AACjD,eAAO,MAAM,qBAAqB,mBAAmB,CAAC;AACtD,eAAO,MAAM,kBAAkB,mBAAmB,CAAC;AACnD,eAAO,MAAM,0BAA0B,4GACoE,CAAC;AAC5G,eAAO,MAAM,0BAA0B,wNACgG,CAAC;AACxI,eAAO,MAAM,4BAA4B,yWAC0T,CAAC;AACpW,eAAO,MAAM,mBAAmB,wCAAwC,CAAC;AACzE,eAAO,MAAM,gBAAgB,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"nudge.d.ts","sourceRoot":"","sources":["../../src/feedback/nudge.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AASzE,eAAO,MAAM,0BAA0B,QAA0B,CAAC;AAClE,eAAO,MAAM,yBAAyB,QAAiB,CAAC;AACxD,eAAO,MAAM,6BAA6B,MAAM,CAAC;AACjD,eAAO,MAAM,qBAAqB,mBAAmB,CAAC;AACtD,eAAO,MAAM,kBAAkB,mBAAmB,CAAC;AACnD,eAAO,MAAM,0BAA0B,4GACoE,CAAC;AAC5G,eAAO,MAAM,0BAA0B,wNACgG,CAAC;AACxI,eAAO,MAAM,4BAA4B,yWAC0T,CAAC;AACpW,eAAO,MAAM,mBAAmB,wCAAwC,CAAC;AACzE,eAAO,MAAM,gBAAgB,mCAAmC,CAAC;AACjE,eAAO,MAAM,qBAAqB,oJACiH,CAAC;AACpJ,eAAO,MAAM,uBAAuB,8IACyG,CAAC;AAE9I,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,SAAS,GAAG,UAAU,CAAC;AAC5D,MAAM,MAAM,mBAAmB,GAAG,OAAO,GAAG,KAAK,GAAG,UAAU,CAAC;AAE/D,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,cAAc,CAAC;CACzB;AASD,wBAAgB,cAAc,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,OAAO,CAE5E;AAOD,uFAAuF;AACvF,wBAAgB,sBAAsB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,OAAO,CAEpF;AAkBD,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAKxF;AAMD,wBAAgB,kBAAkB,CAAC,GAAG,SAAa,GAAG,OAAO,CAY5D;AAED,gFAAgF;AAChF,wBAAgB,qBAAqB,CAAC,GAAG,SAAa,GAAG,IAAI,CAO5D;AAED,wBAAgB,sBAAsB,CAAC,GAAG,SAAa,GAAG,IAAI,CAQ7D;AAED,wBAAgB,cAAc,CAC5B,MAAM,EAAE,cAAc,EACtB,UAAU,CAAC,EAAE,MAAM,GAClB;IAAE,QAAQ,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,cAAc,CAAC;IAAC,cAAc,EAAE,OAAO,CAAA;CAAE,CA0CrE;AAED,wBAAgB,uBAAuB,IAAI,MAAM,CAmBhD;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,SAAa,GAAG,cAAc,CAsBxF;AAOD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,cAAc,CA0BpF;AAED,8FAA8F;AAC9F,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,CAOrE"}
|
package/dist/feedback/nudge.js
CHANGED
|
@@ -17,6 +17,8 @@ export const FEEDBACK_NUDGE_QUESTION_TR = "Sizin için bu MCP'yi daha hızlı ve
|
|
|
17
17
|
export const FEEDBACK_NUDGE_LANGUAGE_RULE = "MUST ask the user in the language they are using in this conversation. Detect it from their messages; if mixed, use their latest message. Never default to English. Translate Q1 into that language and show only that translation. English and Turkish below are meaning-only examples — do not paste them unless the user is actually speaking that language.";
|
|
18
18
|
export const PING_CONNECTED_TEXT = 'Successfully connected to Photoshop';
|
|
19
19
|
export const PING_FAILED_TEXT = 'Failed to connect to Photoshop';
|
|
20
|
+
export const PING_NOT_FOUND_REASON = 'Photoshop was not found. Set PHOTOSHOP_PATH to the Photoshop app (macOS: the .app bundle, Windows: Photoshop.exe), then restart the MCP server.';
|
|
21
|
+
export const PING_NOT_RUNNING_REASON = 'Photoshop is not running. Open Photoshop, wait until it finishes starting, then call photoshop_ping again. Ping never launches Photoshop.';
|
|
20
22
|
const STORE_FILE = 'feedback-nudge.json';
|
|
21
23
|
const TRUNCATION_SUFFIX = '…[truncated]';
|
|
22
24
|
function getStorePath() {
|
|
@@ -216,4 +218,13 @@ export function submitFeedbackFromArgs(args) {
|
|
|
216
218
|
],
|
|
217
219
|
};
|
|
218
220
|
}
|
|
221
|
+
/** Failed ping: PING_FAILED_TEXT stays the first block so existing clients still match it. */
|
|
222
|
+
export function buildPingFailureResult(reason) {
|
|
223
|
+
return {
|
|
224
|
+
content: [
|
|
225
|
+
{ type: 'text', text: PING_FAILED_TEXT },
|
|
226
|
+
{ type: 'text', text: reason },
|
|
227
|
+
],
|
|
228
|
+
};
|
|
229
|
+
}
|
|
219
230
|
//# sourceMappingURL=nudge.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nudge.js","sourceRoot":"","sources":["../../src/feedback/nudge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACjE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AAC3F,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAClE,MAAM,CAAC,MAAM,yBAAyB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AACxD,MAAM,CAAC,MAAM,6BAA6B,GAAG,GAAG,CAAC;AACjD,MAAM,CAAC,MAAM,qBAAqB,GAAG,gBAAgB,CAAC;AACtD,MAAM,CAAC,MAAM,kBAAkB,GAAG,gBAAgB,CAAC;AACnD,MAAM,CAAC,MAAM,0BAA0B,GACrC,yGAAyG,CAAC;AAC5G,MAAM,CAAC,MAAM,0BAA0B,GACrC,qIAAqI,CAAC;AACxI,MAAM,CAAC,MAAM,4BAA4B,GACvC,iWAAiW,CAAC;AACpW,MAAM,CAAC,MAAM,mBAAmB,GAAG,qCAAqC,CAAC;AACzE,MAAM,CAAC,MAAM,gBAAgB,GAAG,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"nudge.js","sourceRoot":"","sources":["../../src/feedback/nudge.ts"],"names":[],"mappings":"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"}
|
|
@@ -29,13 +29,12 @@ export declare class PhotoshopConnection {
|
|
|
29
29
|
getPhotoshopInfo(): PhotoshopInfo | null;
|
|
30
30
|
ensurePhotoshopRunning(): Promise<void>;
|
|
31
31
|
/**
|
|
32
|
-
* Point the macOS executor at the detected
|
|
32
|
+
* Point the macOS executor at the detected install. Must run after
|
|
33
33
|
* getExecutor(): the executor is created lazily, and before this ordering fix
|
|
34
34
|
* the first script of every session ran against the hard-coded default
|
|
35
|
-
* ("Adobe Photoshop 2025")
|
|
36
|
-
* as
|
|
37
|
-
* to compile `do javascript` (-2741) because the app name did not resolve.
|
|
35
|
+
* ("Adobe Photoshop 2025"). The bundle path is the AppleScript target; the
|
|
36
|
+
* name stays for logs and as a fallback when the path is not a bundle (#72).
|
|
38
37
|
*/
|
|
39
|
-
private
|
|
38
|
+
private applyMacOSTarget;
|
|
40
39
|
}
|
|
41
40
|
//# sourceMappingURL=connection.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../src/platform/connection.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAoB;IACpC,OAAO,CAAC,QAAQ,CAA+B;IAC/C,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,aAAa,CAAC,CAAgB;IACtC,OAAO,CAAC,aAAa,CAAC,CAAwB;;IAU9C,oEAAoE;IACpE,OAAO,CAAC,WAAW;IAenB,qEAAqE;IACrE,gBAAgB,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI;IAIvD,8DAA8D;IAC9D,gBAAgB,IAAI,OAAO;IAc3B,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,eAAe;YAST,oBAAoB;IA4B5B,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC;IAWxB,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;IAU7B,aAAa,CACjB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,GAC7B,OAAO,CAAC,OAAO,CAAC;IA2BnB,gBAAgB,IAAI,aAAa,GAAG,IAAI;IAIlC,sBAAsB,IAAI,OAAO,CAAC,IAAI,CAAC;IAe7C
|
|
1
|
+
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../src/platform/connection.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAoB;IACpC,OAAO,CAAC,QAAQ,CAA+B;IAC/C,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,aAAa,CAAC,CAAgB;IACtC,OAAO,CAAC,aAAa,CAAC,CAAwB;;IAU9C,oEAAoE;IACpE,OAAO,CAAC,WAAW;IAenB,qEAAqE;IACrE,gBAAgB,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI;IAIvD,8DAA8D;IAC9D,gBAAgB,IAAI,OAAO;IAc3B,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,eAAe;YAST,oBAAoB;IA4B5B,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC;IAWxB,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;IAU7B,aAAa,CACjB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,GAC7B,OAAO,CAAC,OAAO,CAAC;IA2BnB,gBAAgB,IAAI,aAAa,GAAG,IAAI;IAIlC,sBAAsB,IAAI,OAAO,CAAC,IAAI,CAAC;IAe7C;;;;;;OAMG;IACH,OAAO,CAAC,gBAAgB;CAKzB"}
|
|
@@ -121,7 +121,7 @@ export class PhotoshopConnection {
|
|
|
121
121
|
throw new Error('Photoshop not found on this system');
|
|
122
122
|
}
|
|
123
123
|
const executor = this.getExecutor();
|
|
124
|
-
this.
|
|
124
|
+
this.applyMacOSTarget();
|
|
125
125
|
const isRunning = await executor.isPhotoshopRunning();
|
|
126
126
|
if (!isRunning) {
|
|
127
127
|
if (options?.launch === false) {
|
|
@@ -147,7 +147,7 @@ export class PhotoshopConnection {
|
|
|
147
147
|
throw new Error('Photoshop not found on this system');
|
|
148
148
|
}
|
|
149
149
|
const executor = this.getExecutor();
|
|
150
|
-
this.
|
|
150
|
+
this.applyMacOSTarget();
|
|
151
151
|
const isRunning = await executor.isPhotoshopRunning();
|
|
152
152
|
if (!isRunning) {
|
|
153
153
|
this.logger.info('Launching Photoshop...');
|
|
@@ -155,17 +155,18 @@ export class PhotoshopConnection {
|
|
|
155
155
|
}
|
|
156
156
|
}
|
|
157
157
|
/**
|
|
158
|
-
* Point the macOS executor at the detected
|
|
158
|
+
* Point the macOS executor at the detected install. Must run after
|
|
159
159
|
* getExecutor(): the executor is created lazily, and before this ordering fix
|
|
160
160
|
* the first script of every session ran against the hard-coded default
|
|
161
|
-
* ("Adobe Photoshop 2025")
|
|
162
|
-
* as
|
|
163
|
-
* to compile `do javascript` (-2741) because the app name did not resolve.
|
|
161
|
+
* ("Adobe Photoshop 2025"). The bundle path is the AppleScript target; the
|
|
162
|
+
* name stays for logs and as a fallback when the path is not a bundle (#72).
|
|
164
163
|
*/
|
|
165
|
-
|
|
166
|
-
if (this.macosExecutor
|
|
164
|
+
applyMacOSTarget() {
|
|
165
|
+
if (!this.macosExecutor || !this.photoshopInfo)
|
|
166
|
+
return;
|
|
167
|
+
if (this.photoshopInfo.appName)
|
|
167
168
|
this.macosExecutor.setAppName(this.photoshopInfo.appName);
|
|
168
|
-
|
|
169
|
+
this.macosExecutor.setAppPath(this.photoshopInfo.path);
|
|
169
170
|
}
|
|
170
171
|
}
|
|
171
172
|
//# sourceMappingURL=connection.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/platform/connection.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/platform/connection.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/** What AppleScript and pgrep need to address one installed Photoshop. */
|
|
2
|
+
export interface MacAppTarget {
|
|
3
|
+
/** Bundle display name, e.g. "Adobe Photoshop 2026". Fallback target and log label. */
|
|
4
|
+
appName: string;
|
|
5
|
+
/** Full .app bundle path when known. Preferred: it names exactly one install. */
|
|
6
|
+
appPath?: string;
|
|
7
|
+
}
|
|
8
|
+
export type CommandRunner = (file: string, args: string[]) => Promise<{
|
|
9
|
+
stdout: string;
|
|
10
|
+
}>;
|
|
11
|
+
/** Escape a string for use as a pgrep -f pattern (extended regex). */
|
|
12
|
+
export declare function escapeForPgrep(value: string): string;
|
|
13
|
+
/** Quote a value as an AppleScript string literal. */
|
|
14
|
+
export declare function appleScriptString(value: string): string;
|
|
15
|
+
/**
|
|
16
|
+
* The .app bundle that contains `path`, or undefined when `path` is not inside
|
|
17
|
+
* one. PHOTOSHOP_PATH may name the bundle, the bundle with a trailing slash, or
|
|
18
|
+
* the executable under Contents/MacOS.
|
|
19
|
+
*/
|
|
20
|
+
export declare function bundlePathOf(path: string): string | undefined;
|
|
21
|
+
/**
|
|
22
|
+
* `application "<bundle path>"`, or by name when no path is known. A path names
|
|
23
|
+
* exactly the detected install (2025, 2026 and Beta share com.adobe.Photoshop)
|
|
24
|
+
* and does not depend on Launch Services resolving the display name (#72).
|
|
25
|
+
*/
|
|
26
|
+
export declare function appleScriptAppRef(target: MacAppTarget): string;
|
|
27
|
+
/**
|
|
28
|
+
* pgrep -f pattern for the app's own executable. Anchored at the start of the
|
|
29
|
+
* command line: AdobeIPCBroker carries the Photoshop executable path in its
|
|
30
|
+
* arguments, so an unanchored match reports a closed Photoshop as running.
|
|
31
|
+
*/
|
|
32
|
+
export declare function executablePgrepPattern(appPath: string): string;
|
|
33
|
+
/**
|
|
34
|
+
* Whether this exact install is running. An anchored pgrep comes first: it
|
|
35
|
+
* matches only this bundle's executable, while AppleScript may answer for any
|
|
36
|
+
* running copy because 2025, 2026 and Beta share com.adobe.Photoshop. When
|
|
37
|
+
* pgrep cannot read the process list (exit 3 inside an agent sandbox),
|
|
38
|
+
* AppleScript answers instead: `running` never launches the app.
|
|
39
|
+
*/
|
|
40
|
+
export declare function isMacAppRunning(target: MacAppTarget, run?: CommandRunner): Promise<boolean>;
|
|
41
|
+
//# sourceMappingURL=macos-app.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"macos-app.d.ts","sourceRoot":"","sources":["../../src/platform/macos-app.ts"],"names":[],"mappings":"AAKA,0EAA0E;AAC1E,MAAM,WAAW,YAAY;IAC3B,uFAAuF;IACvF,OAAO,EAAE,MAAM,CAAC;IAChB,iFAAiF;IACjF,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAS1F,sEAAsE;AACtE,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED,sDAAsD;AACtD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAG7D;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAE9D;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE9D;AAKD;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,YAAY,EACpB,GAAG,GAAE,aAA6B,GACjC,OAAO,CAAC,OAAO,CAAC,CAiBlB"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { execFile } from 'child_process';
|
|
2
|
+
import { promisify } from 'util';
|
|
3
|
+
const execFileAsync = promisify(execFile);
|
|
4
|
+
const RUNNING_CHECK_TIMEOUT_MS = 10_000;
|
|
5
|
+
const defaultRunner = async (file, args) => {
|
|
6
|
+
const { stdout } = await execFileAsync(file, args, { timeout: RUNNING_CHECK_TIMEOUT_MS });
|
|
7
|
+
return { stdout: String(stdout) };
|
|
8
|
+
};
|
|
9
|
+
/** Escape a string for use as a pgrep -f pattern (extended regex). */
|
|
10
|
+
export function escapeForPgrep(value) {
|
|
11
|
+
return value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
12
|
+
}
|
|
13
|
+
/** Quote a value as an AppleScript string literal. */
|
|
14
|
+
export function appleScriptString(value) {
|
|
15
|
+
return `"${value.replace(/\\/g, '\\\\').replace(/"/g, '\\"')}"`;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* The .app bundle that contains `path`, or undefined when `path` is not inside
|
|
19
|
+
* one. PHOTOSHOP_PATH may name the bundle, the bundle with a trailing slash, or
|
|
20
|
+
* the executable under Contents/MacOS.
|
|
21
|
+
*/
|
|
22
|
+
export function bundlePathOf(path) {
|
|
23
|
+
const match = /^(.*?\.app)(?:\/.*)?$/.exec(path.trim());
|
|
24
|
+
return match ? match[1] : undefined;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* `application "<bundle path>"`, or by name when no path is known. A path names
|
|
28
|
+
* exactly the detected install (2025, 2026 and Beta share com.adobe.Photoshop)
|
|
29
|
+
* and does not depend on Launch Services resolving the display name (#72).
|
|
30
|
+
*/
|
|
31
|
+
export function appleScriptAppRef(target) {
|
|
32
|
+
return `application ${appleScriptString(target.appPath ?? target.appName)}`;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* pgrep -f pattern for the app's own executable. Anchored at the start of the
|
|
36
|
+
* command line: AdobeIPCBroker carries the Photoshop executable path in its
|
|
37
|
+
* arguments, so an unanchored match reports a closed Photoshop as running.
|
|
38
|
+
*/
|
|
39
|
+
export function executablePgrepPattern(appPath) {
|
|
40
|
+
return `^${escapeForPgrep(appPath)}/Contents/MacOS/`;
|
|
41
|
+
}
|
|
42
|
+
/** pgrep exit code for "no process matched" (3 means it could not read the process list). */
|
|
43
|
+
const PGREP_NO_MATCH = 1;
|
|
44
|
+
/**
|
|
45
|
+
* Whether this exact install is running. An anchored pgrep comes first: it
|
|
46
|
+
* matches only this bundle's executable, while AppleScript may answer for any
|
|
47
|
+
* running copy because 2025, 2026 and Beta share com.adobe.Photoshop. When
|
|
48
|
+
* pgrep cannot read the process list (exit 3 inside an agent sandbox),
|
|
49
|
+
* AppleScript answers instead: `running` never launches the app.
|
|
50
|
+
*/
|
|
51
|
+
export async function isMacAppRunning(target, run = defaultRunner) {
|
|
52
|
+
if (target.appPath) {
|
|
53
|
+
try {
|
|
54
|
+
const { stdout } = await run('pgrep', ['-f', executablePgrepPattern(target.appPath)]);
|
|
55
|
+
return stdout.trim().length > 0;
|
|
56
|
+
}
|
|
57
|
+
catch (error) {
|
|
58
|
+
if (error.code === PGREP_NO_MATCH)
|
|
59
|
+
return false;
|
|
60
|
+
// pgrep missing or denied; ask AppleScript.
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
try {
|
|
64
|
+
const { stdout } = await run('osascript', ['-e', `${appleScriptAppRef(target)} is running`]);
|
|
65
|
+
return stdout.trim() === 'true';
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
return false;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=macos-app.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"macos-app.js","sourceRoot":"","sources":["../../src/platform/macos-app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAEjC,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAY1C,MAAM,wBAAwB,GAAG,MAAM,CAAC;AAExC,MAAM,aAAa,GAAkB,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;IACxD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,wBAAwB,EAAE,CAAC,CAAC;IAC1F,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;AACpC,CAAC,CAAC;AAEF,sEAAsE;AACtE,MAAM,UAAU,cAAc,CAAC,KAAa;IAC1C,OAAO,KAAK,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AACtD,CAAC;AAED,sDAAsD;AACtD,MAAM,UAAU,iBAAiB,CAAC,KAAa;IAC7C,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC;AAClE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,MAAM,KAAK,GAAG,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IACxD,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACtC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAoB;IACpD,OAAO,eAAe,iBAAiB,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;AAC9E,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CAAC,OAAe;IACpD,OAAO,IAAI,cAAc,CAAC,OAAO,CAAC,kBAAkB,CAAC;AACvD,CAAC;AAED,6FAA6F;AAC7F,MAAM,cAAc,GAAG,CAAC,CAAC;AAEzB;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,MAAoB,EACpB,MAAqB,aAAa;IAElC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,IAAI,CAAC;YACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,sBAAsB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACtF,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;QAClC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAK,KAA4B,CAAC,IAAI,KAAK,cAAc;gBAAE,OAAO,KAAK,CAAC;YACxE,4CAA4C;QAC9C,CAAC;IACH,CAAC;IAED,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,GAAG,iBAAiB,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC;QAC7F,OAAO,MAAM,CAAC,IAAI,EAAE,KAAK,MAAM,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"macos-detector.d.ts","sourceRoot":"","sources":["../../src/platform/macos-detector.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"macos-detector.d.ts","sourceRoot":"","sources":["../../src/platform/macos-detector.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAKhD,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAS;;IAMjB,MAAM,IAAI,OAAO,CAAC,aAAa,CAAC;YA6BxB,oBAAoB;IAuBlC,OAAO,CAAC,cAAc;YA2BR,SAAS;YA4BT,qBAAqB;YAwCrB,cAAc;IAKtB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;CAW9D"}
|
|
@@ -2,6 +2,7 @@ import { exec } from 'child_process';
|
|
|
2
2
|
import { promisify } from 'util';
|
|
3
3
|
import { access, constants, readFile } from 'fs/promises';
|
|
4
4
|
import { Logger } from '../utils/logger.js';
|
|
5
|
+
import { bundlePathOf, isMacAppRunning } from './macos-app.js';
|
|
5
6
|
const execAsync = promisify(exec);
|
|
6
7
|
export class MacOSDetector {
|
|
7
8
|
logger;
|
|
@@ -70,8 +71,9 @@ export class MacOSDetector {
|
|
|
70
71
|
}
|
|
71
72
|
async checkPath(path) {
|
|
72
73
|
try {
|
|
73
|
-
//
|
|
74
|
-
|
|
74
|
+
// PHOTOSHOP_PATH may point inside the bundle or end with a slash; the
|
|
75
|
+
// version, name, AppleScript target and `open -a` all need the .app (#72).
|
|
76
|
+
const cleanPath = bundlePathOf(path) ?? path.trim();
|
|
75
77
|
// Check if path exists
|
|
76
78
|
await access(cleanPath, constants.F_OK);
|
|
77
79
|
// Get version from Info.plist
|
|
@@ -122,17 +124,8 @@ export class MacOSDetector {
|
|
|
122
124
|
return 'Unknown';
|
|
123
125
|
}
|
|
124
126
|
async checkIfRunning(appPath) {
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
const appName = appPath.split('/').pop()?.replace('.app', '') || 'Adobe Photoshop';
|
|
128
|
-
// Use pgrep to check if process is running
|
|
129
|
-
const { stdout } = await execAsync(`pgrep -f "${appName}"`);
|
|
130
|
-
return stdout.trim().length > 0;
|
|
131
|
-
}
|
|
132
|
-
catch {
|
|
133
|
-
// pgrep returns non-zero exit code if no process found
|
|
134
|
-
return false;
|
|
135
|
-
}
|
|
127
|
+
const appName = appPath.split('/').pop()?.replace('.app', '') || 'Adobe Photoshop';
|
|
128
|
+
return isMacAppRunning({ appName, appPath: bundlePathOf(appPath) });
|
|
136
129
|
}
|
|
137
130
|
async getAppBundleId(appPath) {
|
|
138
131
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"macos-detector.js","sourceRoot":"","sources":["../../src/platform/macos-detector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"macos-detector.js","sourceRoot":"","sources":["../../src/platform/macos-detector.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { ScriptExecutor } from './script-executor.js';
|
|
2
|
-
|
|
3
|
-
export declare function escapeForPgrep(value: string): string;
|
|
2
|
+
export { escapeForPgrep } from './macos-app.js';
|
|
4
3
|
/**
|
|
5
4
|
* AppleScript `with timeout of N seconds` value for a given tool timeout.
|
|
6
5
|
* Without this block AppleScript's default ~120s Apple-event reply timeout
|
|
@@ -17,6 +16,10 @@ export declare class MacOSExecutor implements ScriptExecutor {
|
|
|
17
16
|
private appName;
|
|
18
17
|
constructor();
|
|
19
18
|
setAppName(appName: string): void;
|
|
19
|
+
private appPath?;
|
|
20
|
+
/** Target the detected .app bundle; a path outside a bundle keeps name targeting. */
|
|
21
|
+
setAppPath(path: string): void;
|
|
22
|
+
private target;
|
|
20
23
|
execute(script: string, timeout?: number): Promise<unknown>;
|
|
21
24
|
private processQueue;
|
|
22
25
|
private executeScript;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"macos-executor.d.ts","sourceRoot":"","sources":["../../src/platform/macos-executor.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"macos-executor.d.ts","sourceRoot":"","sources":["../../src/platform/macos-executor.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAWtD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAgBhD;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEnE;AAED;8EAC8E;AAC9E,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEvD;AASD,qBAAa,aAAc,YAAW,cAAc;IAClD,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,WAAW,CAAsB;IACzC,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,OAAO,CAAkC;;IAMjD,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAKjC,OAAO,CAAC,OAAO,CAAC,CAAS;IAEzB,qFAAqF;IACrF,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAK9B,OAAO,CAAC,MAAM;IAIR,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;YAgDnD,YAAY;YAwBZ,aAAa;IAgD3B,OAAO,CAAC,wBAAwB;IAyBhC,OAAO,CAAC,WAAW;IAUb,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC;IAOtC,eAAe,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAuB3D;;;OAGG;IACG,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAoBhE"}
|
|
@@ -6,12 +6,10 @@ import { join } from 'path';
|
|
|
6
6
|
import { Logger } from '../utils/logger.js';
|
|
7
7
|
import { prefixExtendScriptBom } from '../utils/extendscript-file.js';
|
|
8
8
|
import { parseExtendScriptPayload } from '../utils/extendscript-result.js';
|
|
9
|
+
import { appleScriptAppRef, bundlePathOf, isMacAppRunning } from './macos-app.js';
|
|
9
10
|
import { DEFAULT_SCRIPT_TIMEOUT_MS, QUEUE_WAIT_ALLOWANCE_MS, isScriptTimeoutError, resolveScriptTimeoutMs, } from './script-timeout.js';
|
|
10
11
|
const execAsync = promisify(exec);
|
|
11
|
-
|
|
12
|
-
export function escapeForPgrep(value) {
|
|
13
|
-
return value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
14
|
-
}
|
|
12
|
+
export { escapeForPgrep } from './macos-app.js';
|
|
15
13
|
function envTruthy(name) {
|
|
16
14
|
const value = process.env[name]?.trim().toLowerCase();
|
|
17
15
|
return value === '1' || value === 'true' || value === 'yes';
|
|
@@ -48,6 +46,15 @@ export class MacOSExecutor {
|
|
|
48
46
|
this.appName = appName;
|
|
49
47
|
this.logger.debug(`App name set to: ${appName}`);
|
|
50
48
|
}
|
|
49
|
+
appPath;
|
|
50
|
+
/** Target the detected .app bundle; a path outside a bundle keeps name targeting. */
|
|
51
|
+
setAppPath(path) {
|
|
52
|
+
this.appPath = bundlePathOf(path);
|
|
53
|
+
this.logger.debug(`App path set to: ${this.appPath ?? '(none, targeting by name)'}`);
|
|
54
|
+
}
|
|
55
|
+
target() {
|
|
56
|
+
return { appName: this.appName, ...(this.appPath ? { appPath: this.appPath } : {}) };
|
|
57
|
+
}
|
|
51
58
|
async execute(script, timeout) {
|
|
52
59
|
const timeoutMs = resolveScriptTimeoutMs(timeout);
|
|
53
60
|
return new Promise((resolve, reject) => {
|
|
@@ -162,7 +169,7 @@ export class MacOSExecutor {
|
|
|
162
169
|
// Apple-event reply timeout caps every synchronous `do javascript` call,
|
|
163
170
|
// silently defeating per-tool timeouts above 120s (batch tools use 600s).
|
|
164
171
|
const timeoutSeconds = appleScriptTimeoutSeconds(timeoutMs);
|
|
165
|
-
return `tell
|
|
172
|
+
return `tell ${appleScriptAppRef(this.target())}
|
|
166
173
|
${activateLine}\tset jsxFile to POSIX file "${posixPath}"
|
|
167
174
|
\twith timeout of ${timeoutSeconds} seconds
|
|
168
175
|
\t\tdo javascript "$.evalFile(decodeURI('${encodeURI(posixPath)}'))"
|
|
@@ -177,18 +184,10 @@ end tell`;
|
|
|
177
184
|
return parseExtendScriptPayload(trimmed);
|
|
178
185
|
}
|
|
179
186
|
async isPhotoshopRunning() {
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
const pattern = escapeForPgrep(this.appName);
|
|
185
|
-
const { stdout } = await execAsync(`pgrep -f "${pattern}"`);
|
|
186
|
-
return stdout.trim().length > 0;
|
|
187
|
-
}
|
|
188
|
-
catch {
|
|
189
|
-
// pgrep returns non-zero exit code if no process found
|
|
190
|
-
return false;
|
|
191
|
-
}
|
|
187
|
+
// Match the exact install we drive. With 2025/2026/Beta side by side a
|
|
188
|
+
// generic match reports "running" while the target version is not, and an
|
|
189
|
+
// unanchored pgrep also matched AdobeIPCBroker's arguments (#72).
|
|
190
|
+
return isMacAppRunning(this.target());
|
|
192
191
|
}
|
|
193
192
|
async launchPhotoshop(photoshopPath) {
|
|
194
193
|
return new Promise((resolve, reject) => {
|
|
@@ -217,7 +216,7 @@ end tell`;
|
|
|
217
216
|
const tempAppleScriptPath = join(tmpdir(), `photoshop-applescript-alt-${Date.now()}.scpt`);
|
|
218
217
|
try {
|
|
219
218
|
await writeFile(tempScriptPath, prefixExtendScriptBom(script), 'utf8');
|
|
220
|
-
const appleScript = `tell
|
|
219
|
+
const appleScript = `tell ${appleScriptAppRef(this.target())}
|
|
221
220
|
\tdo shell script "cat '${tempScriptPath}'"
|
|
222
221
|
end tell`;
|
|
223
222
|
await writeFile(tempAppleScriptPath, appleScript, 'utf8');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"macos-executor.js","sourceRoot":"","sources":["../../src/platform/macos-executor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC;AAC5B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAE3E,OAAO,EACL,yBAAyB,EACzB,uBAAuB,EACvB,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,qBAAqB,CAAC;AAE7B,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AAElC,
|
|
1
|
+
{"version":3,"file":"macos-executor.js","sourceRoot":"","sources":["../../src/platform/macos-executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,7 +11,7 @@ export function createSessionTools(handlers) {
|
|
|
11
11
|
description: 'Verify that the Photoshop scripting engine can run a script.\n\n' +
|
|
12
12
|
'Use when: once at session start, and after extendscript_timeout until this call succeeds.\n' +
|
|
13
13
|
'Do NOT use when: on every tool call — after a successful ping, use photoshop_get_state. Do not call get_state or get_layers while this ping is still failing.\n\n' +
|
|
14
|
-
'Returns: "Successfully connected to Photoshop" only after a short script runs inside Photoshop. While a previous script is still running, returns extendscript_timeout — retry photoshop_ping. If that timeout happens while the OS drive has under 10 GB free, returns scratch_disk_full instead: free space on the scratch disk and restart Photoshop. If Photoshop is not installed or not running, returns a
|
|
14
|
+
'Returns: "Successfully connected to Photoshop" only after a short script runs inside Photoshop. While a previous script is still running, returns extendscript_timeout — retry photoshop_ping. If that timeout happens while the OS drive has under 10 GB free, returns scratch_disk_full instead: free space on the scratch disk and restart Photoshop. If Photoshop is not installed or not running, returns "Failed to connect to Photoshop" plus a second text block saying which, and does not launch the app. On macOS, Apple-event failures return photoshop_unreachable, automation_permission_denied or photoshop_app_not_resolved with the osascript error and a fix. May append a FEEDBACK_NUDGE block 15 minutes after the first successful ping, then at most once per 7 days (disabled with PSMCP_FEEDBACK=0). May append an UPDATE_AVAILABLE block when a newer photoshop-mcp release is on npm, at most once per 7 days (disabled with PSMCP_UPDATE_CHECK=0). A single ping carries at most one of these blocks.\n' +
|
|
15
15
|
'Preconditions: none. Side effects: may trigger Photoshop detection. Does not launch Photoshop.',
|
|
16
16
|
inputSchema: { type: 'object', properties: {} },
|
|
17
17
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-tools.js","sourceRoot":"","sources":["../../src/tools/session-tools.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,QAIlC;IACC,OAAO;QACL;YACE,IAAI,EAAE;gBACJ,IAAI,EAAE,gBAAgB;gBACtB,WAAW,EACT,kEAAkE;oBAClE,6FAA6F;oBAC7F,mKAAmK;oBACnK,
|
|
1
|
+
{"version":3,"file":"session-tools.js","sourceRoot":"","sources":["../../src/tools/session-tools.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,QAIlC;IACC,OAAO;QACL;YACE,IAAI,EAAE;gBACJ,IAAI,EAAE,gBAAgB;gBACtB,WAAW,EACT,kEAAkE;oBAClE,6FAA6F;oBAC7F,mKAAmK;oBACnK,o+BAAo+B;oBACp+B,gGAAgG;gBAClG,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE;aAChD;YACD,OAAO,EAAE,QAAQ,CAAC,IAAI;SACvB;QACD;YACE,IAAI,EAAE;gBACJ,IAAI,EAAE,2BAA2B;gBACjC,WAAW,EACT,yEAAyE;oBACzE,2KAA2K;oBAC3K,6EAA6E;oBAC7E,+CAA+C;oBAC/C,iHAAiH;oBACjH,8GAA8G;gBAChH,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,MAAM,EAAE;4BACN,IAAI,EAAE,QAAQ;4BACd,IAAI,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,UAAU,CAAC;4BACpC,WAAW,EACT,4FAA4F;yBAC/F;wBACD,UAAU,EAAE;4BACV,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,oEAAoE;yBAClF;qBACF;oBACD,QAAQ,EAAE,CAAC,QAAQ,CAAC;iBACrB;aACF;YACD,OAAO,EAAE,QAAQ,CAAC,QAAQ;SAC3B;QACD;YACE,IAAI,EAAE;gBACJ,IAAI,EAAE,uBAAuB;gBAC7B,WAAW,EACT,mDAAmD;oBACnD,6EAA6E;oBAC7E,kFAAkF;oBAClF,4BAA4B;oBAC5B,0CAA0C;gBAC5C,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE;aAChD;YACD,OAAO,EAAE,QAAQ,CAAC,OAAO;SAC1B;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA,oBAAY,QAAQ;IAClB,KAAK,IAAI;IACT,IAAI,IAAI;IACR,IAAI,IAAI;IACR,KAAK,IAAI;CACV;AAED,qBAAa,MAAM;IACjB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAW;gBAEf,OAAO,EAAE,MAAM,EAAE,QAAQ,GAAE,QAAwB;IAO/D,OAAO,CAAC,GAAG;
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA,oBAAY,QAAQ;IAClB,KAAK,IAAI;IACT,IAAI,IAAI;IACR,IAAI,IAAI;IACR,KAAK,IAAI;CACV;AAED,qBAAa,MAAM;IACjB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAW;gBAEf,OAAO,EAAE,MAAM,EAAE,QAAQ,GAAE,QAAwB;IAO/D,OAAO,CAAC,GAAG;IAiCX,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE;IAIzC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE;IAIxC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE;IAIxC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE;CAG1C"}
|
package/dist/utils/logger.js
CHANGED
|
@@ -22,7 +22,25 @@ export class Logger {
|
|
|
22
22
|
const prefix = `[${timestamp}] [${levelStr}] [${this.context}]`;
|
|
23
23
|
// IMPORTANT: MCP uses stdout for protocol communication
|
|
24
24
|
// All logs must go to stderr to avoid corrupting the JSON-RPC protocol
|
|
25
|
-
|
|
25
|
+
// Error has no enumerable properties, so JSON.stringify printed "{}" and
|
|
26
|
+
// hid every script failure ("Script execution failed: {}"). Print the
|
|
27
|
+
// message. Circular or BigInt values fall back to String() instead of
|
|
28
|
+
// throwing inside the logger.
|
|
29
|
+
const formattedArgs = args
|
|
30
|
+
.map((arg) => {
|
|
31
|
+
if (arg instanceof Error)
|
|
32
|
+
return arg.message;
|
|
33
|
+
if (typeof arg === 'object' && arg !== null) {
|
|
34
|
+
try {
|
|
35
|
+
return JSON.stringify(arg) ?? String(arg);
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
return String(arg);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return String(arg);
|
|
42
|
+
})
|
|
43
|
+
.join(' ');
|
|
26
44
|
const logMessage = `${prefix} ${message} ${formattedArgs}`.trim();
|
|
27
45
|
// Always write to stderr, never stdout
|
|
28
46
|
process.stderr.write(logMessage + '\n');
|
package/dist/utils/logger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,QAKX;AALD,WAAY,QAAQ;IAClB,yCAAS,CAAA;IACT,uCAAQ,CAAA;IACR,uCAAQ,CAAA;IACR,yCAAS,CAAA;AACX,CAAC,EALW,QAAQ,KAAR,QAAQ,QAKnB;AAED,MAAM,OAAO,MAAM;IACT,OAAO,CAAS;IAChB,QAAQ,CAAW;IAE3B,YAAY,OAAe,EAAE,WAAqB,QAAQ,CAAC,IAAI;QAC7D,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS;YACnC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC;YACrC,CAAC,CAAC,QAAQ,CAAC;IACf,CAAC;IAEO,GAAG,CAAC,KAAe,EAAE,OAAe,EAAE,GAAG,IAAe;QAC9D,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ;YAAE,OAAO;QAElC,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC3C,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QACjC,MAAM,MAAM,GAAG,IAAI,SAAS,MAAM,QAAQ,MAAM,IAAI,CAAC,OAAO,GAAG,CAAC;QAEhE,wDAAwD;QACxD,uEAAuE;QACvE,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,QAKX;AALD,WAAY,QAAQ;IAClB,yCAAS,CAAA;IACT,uCAAQ,CAAA;IACR,uCAAQ,CAAA;IACR,yCAAS,CAAA;AACX,CAAC,EALW,QAAQ,KAAR,QAAQ,QAKnB;AAED,MAAM,OAAO,MAAM;IACT,OAAO,CAAS;IAChB,QAAQ,CAAW;IAE3B,YAAY,OAAe,EAAE,WAAqB,QAAQ,CAAC,IAAI;QAC7D,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS;YACnC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC;YACrC,CAAC,CAAC,QAAQ,CAAC;IACf,CAAC;IAEO,GAAG,CAAC,KAAe,EAAE,OAAe,EAAE,GAAG,IAAe;QAC9D,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ;YAAE,OAAO;QAElC,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC3C,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QACjC,MAAM,MAAM,GAAG,IAAI,SAAS,MAAM,QAAQ,MAAM,IAAI,CAAC,OAAO,GAAG,CAAC;QAEhE,wDAAwD;QACxD,uEAAuE;QACvE,yEAAyE;QACzE,sEAAsE;QACtE,sEAAsE;QACtE,8BAA8B;QAC9B,MAAM,aAAa,GAAG,IAAI;aACvB,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YACX,IAAI,GAAG,YAAY,KAAK;gBAAE,OAAO,GAAG,CAAC,OAAO,CAAC;YAC7C,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;gBAC5C,IAAI,CAAC;oBACH,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC5C,CAAC;gBAAC,MAAM,CAAC;oBACP,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;gBACrB,CAAC;YACH,CAAC;YACD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;QACrB,CAAC,CAAC;aACD,IAAI,CAAC,GAAG,CAAC,CAAC;QAEb,MAAM,UAAU,GAAG,GAAG,MAAM,IAAI,OAAO,IAAI,aAAa,EAAE,CAAC,IAAI,EAAE,CAAC;QAElE,uCAAuC;QACvC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,GAAG,IAAe;QACvC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;IAC7C,CAAC;IAED,IAAI,CAAC,OAAe,EAAE,GAAG,IAAe;QACtC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;IAC5C,CAAC;IAED,IAAI,CAAC,OAAe,EAAE,GAAG,IAAe;QACtC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,GAAG,IAAe;QACvC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;IAC7C,CAAC;CACF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@alisaitteke/photoshop-mcp",
|
|
3
|
-
"version": "1.7.
|
|
3
|
+
"version": "1.7.35",
|
|
4
4
|
"description": "MCP server for Adobe Photoshop — 128 tools (generative AI + recipes), standalone web UI. Control Photoshop from Cursor, Claude, or natural language.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"type": "module",
|
|
@@ -119,6 +119,8 @@
|
|
|
119
119
|
"vitest": "^4.1.10"
|
|
120
120
|
},
|
|
121
121
|
"pnpm": {
|
|
122
|
-
"onlyBuiltDependencies": [
|
|
122
|
+
"onlyBuiltDependencies": [
|
|
123
|
+
"esbuild"
|
|
124
|
+
]
|
|
123
125
|
}
|
|
124
126
|
}
|