@alisaitteke/photoshop-mcp 0.1.0
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/.prettierrc +9 -0
- package/README.md +1300 -0
- package/dist/api/batch-play.d.ts +62 -0
- package/dist/api/batch-play.d.ts.map +1 -0
- package/dist/api/batch-play.js +131 -0
- package/dist/api/batch-play.js.map +1 -0
- package/dist/api/extendscript.d.ts +258 -0
- package/dist/api/extendscript.d.ts.map +1 -0
- package/dist/api/extendscript.js +1437 -0
- package/dist/api/extendscript.js.map +1 -0
- package/dist/api/photoshop-api.d.ts +20 -0
- package/dist/api/photoshop-api.d.ts.map +1 -0
- package/dist/api/photoshop-api.js +88 -0
- package/dist/api/photoshop-api.js.map +1 -0
- package/dist/core/server.d.ts +14 -0
- package/dist/core/server.d.ts.map +1 -0
- package/dist/core/server.js +191 -0
- package/dist/core/server.js.map +1 -0
- package/dist/core/session.d.ts +24 -0
- package/dist/core/session.d.ts.map +1 -0
- package/dist/core/session.js +83 -0
- package/dist/core/session.js.map +1 -0
- package/dist/core/tool-registry.d.ts +23 -0
- package/dist/core/tool-registry.d.ts.map +1 -0
- package/dist/core/tool-registry.js +55 -0
- package/dist/core/tool-registry.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +18 -0
- package/dist/index.js.map +1 -0
- package/dist/platform/connection.d.ts +20 -0
- package/dist/platform/connection.d.ts.map +1 -0
- package/dist/platform/connection.js +94 -0
- package/dist/platform/connection.js.map +1 -0
- package/dist/platform/detector.d.ts +19 -0
- package/dist/platform/detector.d.ts.map +1 -0
- package/dist/platform/detector.js +63 -0
- package/dist/platform/detector.js.map +1 -0
- package/dist/platform/macos-detector.d.ts +13 -0
- package/dist/platform/macos-detector.d.ts.map +1 -0
- package/dist/platform/macos-detector.js +145 -0
- package/dist/platform/macos-detector.js.map +1 -0
- package/dist/platform/macos-executor.d.ts +22 -0
- package/dist/platform/macos-executor.d.ts.map +1 -0
- package/dist/platform/macos-executor.js +161 -0
- package/dist/platform/macos-executor.js.map +1 -0
- package/dist/platform/script-executor.d.ts +23 -0
- package/dist/platform/script-executor.d.ts.map +1 -0
- package/dist/platform/script-executor.js +2 -0
- package/dist/platform/script-executor.js.map +1 -0
- package/dist/platform/windows-detector.d.ts +14 -0
- package/dist/platform/windows-detector.d.ts.map +1 -0
- package/dist/platform/windows-detector.js +173 -0
- package/dist/platform/windows-detector.js.map +1 -0
- package/dist/platform/windows-executor.d.ts +15 -0
- package/dist/platform/windows-executor.d.ts.map +1 -0
- package/dist/platform/windows-executor.js +148 -0
- package/dist/platform/windows-executor.js.map +1 -0
- package/dist/tools/action-tools.d.ts +4 -0
- package/dist/tools/action-tools.d.ts.map +1 -0
- package/dist/tools/action-tools.js +102 -0
- package/dist/tools/action-tools.js.map +1 -0
- package/dist/tools/adjustment-tools.d.ts +4 -0
- package/dist/tools/adjustment-tools.d.ts.map +1 -0
- package/dist/tools/adjustment-tools.js +274 -0
- package/dist/tools/adjustment-tools.js.map +1 -0
- package/dist/tools/document-tools.d.ts +4 -0
- package/dist/tools/document-tools.d.ts.map +1 -0
- package/dist/tools/document-tools.js +230 -0
- package/dist/tools/document-tools.js.map +1 -0
- package/dist/tools/filter-tools.d.ts +4 -0
- package/dist/tools/filter-tools.d.ts.map +1 -0
- package/dist/tools/filter-tools.js +230 -0
- package/dist/tools/filter-tools.js.map +1 -0
- package/dist/tools/history-tools.d.ts +4 -0
- package/dist/tools/history-tools.d.ts.map +1 -0
- package/dist/tools/history-tools.js +137 -0
- package/dist/tools/history-tools.js.map +1 -0
- package/dist/tools/image-placement-tools.d.ts +4 -0
- package/dist/tools/image-placement-tools.d.ts.map +1 -0
- package/dist/tools/image-placement-tools.js +109 -0
- package/dist/tools/image-placement-tools.js.map +1 -0
- package/dist/tools/image-tools.d.ts +4 -0
- package/dist/tools/image-tools.d.ts.map +1 -0
- package/dist/tools/image-tools.js +123 -0
- package/dist/tools/image-tools.js.map +1 -0
- package/dist/tools/layer-ordering-tools.d.ts +4 -0
- package/dist/tools/layer-ordering-tools.d.ts.map +1 -0
- package/dist/tools/layer-ordering-tools.js +210 -0
- package/dist/tools/layer-ordering-tools.js.map +1 -0
- package/dist/tools/layer-properties-tools.d.ts +4 -0
- package/dist/tools/layer-properties-tools.d.ts.map +1 -0
- package/dist/tools/layer-properties-tools.js +421 -0
- package/dist/tools/layer-properties-tools.js.map +1 -0
- package/dist/tools/layer-tools.d.ts +4 -0
- package/dist/tools/layer-tools.d.ts.map +1 -0
- package/dist/tools/layer-tools.js +251 -0
- package/dist/tools/layer-tools.js.map +1 -0
- package/dist/tools/layer-transform-tools.d.ts +4 -0
- package/dist/tools/layer-transform-tools.d.ts.map +1 -0
- package/dist/tools/layer-transform-tools.js +199 -0
- package/dist/tools/layer-transform-tools.js.map +1 -0
- package/dist/tools/selection-tools.d.ts +4 -0
- package/dist/tools/selection-tools.d.ts.map +1 -0
- package/dist/tools/selection-tools.js +295 -0
- package/dist/tools/selection-tools.js.map +1 -0
- package/dist/tools/text-tools.d.ts +4 -0
- package/dist/tools/text-tools.d.ts.map +1 -0
- package/dist/tools/text-tools.js +210 -0
- package/dist/tools/text-tools.js.map +1 -0
- package/dist/utils/logger.d.ts +17 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +43 -0
- package/dist/utils/logger.js.map +1 -0
- package/package.json +47 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extendscript.js","sourceRoot":"","sources":["../../src/api/extendscript.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { PhotoshopConnection } from '../platform/connection.js';
|
|
2
|
+
export type APIType = 'UXP' | 'ExtendScript';
|
|
3
|
+
export interface PhotoshopAPI {
|
|
4
|
+
/**
|
|
5
|
+
* Execute a script using the appropriate API
|
|
6
|
+
*/
|
|
7
|
+
executeScript(script: string): Promise<unknown>;
|
|
8
|
+
/**
|
|
9
|
+
* Get the API type being used
|
|
10
|
+
*/
|
|
11
|
+
getAPIType(): APIType;
|
|
12
|
+
}
|
|
13
|
+
export declare class PhotoshopAPIFactory {
|
|
14
|
+
private logger;
|
|
15
|
+
private connection;
|
|
16
|
+
constructor(connection: PhotoshopConnection);
|
|
17
|
+
createAPI(): Promise<PhotoshopAPI>;
|
|
18
|
+
private determineAPIType;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=photoshop-api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"photoshop-api.d.ts","sourceRoot":"","sources":["../../src/api/photoshop-api.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAEhE,MAAM,MAAM,OAAO,GAAG,KAAK,GAAG,cAAc,CAAC;AAE7C,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEhD;;OAEG;IACH,UAAU,IAAI,OAAO,CAAC;CACvB;AAED,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,UAAU,CAAsB;gBAE5B,UAAU,EAAE,mBAAmB;IAKrC,SAAS,IAAI,OAAO,CAAC,YAAY,CAAC;IAmBxC,OAAO,CAAC,gBAAgB;CAQzB"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { Logger } from '../utils/logger.js';
|
|
2
|
+
export class PhotoshopAPIFactory {
|
|
3
|
+
logger;
|
|
4
|
+
connection;
|
|
5
|
+
constructor(connection) {
|
|
6
|
+
this.logger = new Logger('PhotoshopAPIFactory');
|
|
7
|
+
this.connection = connection;
|
|
8
|
+
}
|
|
9
|
+
async createAPI() {
|
|
10
|
+
const info = this.connection.getPhotoshopInfo();
|
|
11
|
+
if (!info) {
|
|
12
|
+
throw new Error('Photoshop info not available. Please detect Photoshop first.');
|
|
13
|
+
}
|
|
14
|
+
// Determine which API to use based on version
|
|
15
|
+
const apiType = this.determineAPIType(info.version);
|
|
16
|
+
this.logger.info(`Creating ${apiType} API for Photoshop version ${info.version}`);
|
|
17
|
+
if (apiType === 'UXP') {
|
|
18
|
+
return new UXPPhotoshopAPI(this.connection);
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
return new ExtendScriptPhotoshopAPI(this.connection);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
determineAPIType(version) {
|
|
25
|
+
// IMPORTANT: When running scripts via AppleScript/COM, we can only use ExtendScript
|
|
26
|
+
// UXP is only available for plugins, not for external script execution
|
|
27
|
+
// Therefore, we always use ExtendScript for external automation
|
|
28
|
+
this.logger.debug(`Using ExtendScript for version ${version} (UXP not available for external scripting)`);
|
|
29
|
+
return 'ExtendScript';
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* UXP-based API for modern Photoshop (23.5+)
|
|
34
|
+
* NOTE: UXP is not available for external script execution via AppleScript/COM
|
|
35
|
+
* This class is kept for future plugin-based implementation
|
|
36
|
+
*/
|
|
37
|
+
class UXPPhotoshopAPI {
|
|
38
|
+
connection;
|
|
39
|
+
constructor(connection) {
|
|
40
|
+
this.connection = connection;
|
|
41
|
+
}
|
|
42
|
+
async executeScript(script) {
|
|
43
|
+
// UXP cannot be executed externally via AppleScript/COM
|
|
44
|
+
// Fall back to ExtendScript
|
|
45
|
+
return await this.connection.executeScript(script);
|
|
46
|
+
}
|
|
47
|
+
getAPIType() {
|
|
48
|
+
return 'UXP';
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* ExtendScript-based API for legacy Photoshop (< 23.5)
|
|
53
|
+
*/
|
|
54
|
+
class ExtendScriptPhotoshopAPI {
|
|
55
|
+
connection;
|
|
56
|
+
constructor(connection) {
|
|
57
|
+
this.connection = connection;
|
|
58
|
+
}
|
|
59
|
+
async executeScript(script) {
|
|
60
|
+
// Wrap script in error handling
|
|
61
|
+
const wrappedScript = this.wrapInErrorHandling(script);
|
|
62
|
+
return await this.connection.executeScript(wrappedScript);
|
|
63
|
+
}
|
|
64
|
+
wrapInErrorHandling(script) {
|
|
65
|
+
// ExtendScript doesn't have JSON object, we return plain result
|
|
66
|
+
// The result will be converted to string by Photoshop
|
|
67
|
+
return `
|
|
68
|
+
(function() {
|
|
69
|
+
try {
|
|
70
|
+
var result = (function() {
|
|
71
|
+
${script}
|
|
72
|
+
})();
|
|
73
|
+
// Convert result to string for transport
|
|
74
|
+
if (typeof result === 'object' && result !== null) {
|
|
75
|
+
return result.toSource ? result.toSource() : String(result);
|
|
76
|
+
}
|
|
77
|
+
return String(result);
|
|
78
|
+
} catch (error) {
|
|
79
|
+
return 'ERROR: ' + (error.message || String(error));
|
|
80
|
+
}
|
|
81
|
+
})();
|
|
82
|
+
`.trim();
|
|
83
|
+
}
|
|
84
|
+
getAPIType() {
|
|
85
|
+
return 'ExtendScript';
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=photoshop-api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"photoshop-api.js","sourceRoot":"","sources":["../../src/api/photoshop-api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAiB5C,MAAM,OAAO,mBAAmB;IACtB,MAAM,CAAS;IACf,UAAU,CAAsB;IAExC,YAAY,UAA+B;QACzC,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,qBAAqB,CAAC,CAAC;QAChD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,SAAS;QACb,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE,CAAC;QAEhD,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;QAClF,CAAC;QAED,8CAA8C;QAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEpD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,OAAO,8BAA8B,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QAElF,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;YACtB,OAAO,IAAI,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC9C,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,wBAAwB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IAEO,gBAAgB,CAAC,OAAe;QACtC,oFAAoF;QACpF,uEAAuE;QACvE,gEAAgE;QAEhE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kCAAkC,OAAO,6CAA6C,CAAC,CAAC;QAC1G,OAAO,cAAc,CAAC;IACxB,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,eAAe;IACX,UAAU,CAAsB;IAExC,YAAY,UAA+B;QACzC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,MAAc;QAChC,wDAAwD;QACxD,4BAA4B;QAC5B,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IACrD,CAAC;IAED,UAAU;QACR,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAED;;GAEG;AACH,MAAM,wBAAwB;IACpB,UAAU,CAAsB;IAExC,YAAY,UAA+B;QACzC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,MAAc;QAChC,gCAAgC;QAChC,MAAM,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;QACvD,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;IAC5D,CAAC;IAEO,mBAAmB,CAAC,MAAc;QACxC,gEAAgE;QAChE,sDAAsD;QACtD,OAAO;;;;QAIH,MAAM;;;;;;;;;;;KAWT,CAAC,IAAI,EAAE,CAAC;IACX,CAAC;IAED,UAAU;QACR,OAAO,cAAc,CAAC;IACxB,CAAC;CACF"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export declare class PhotoshopMCPServer {
|
|
2
|
+
private server;
|
|
3
|
+
private logger;
|
|
4
|
+
private toolRegistry;
|
|
5
|
+
private session;
|
|
6
|
+
constructor();
|
|
7
|
+
private registerTools;
|
|
8
|
+
private setupHandlers;
|
|
9
|
+
private pingPhotoshop;
|
|
10
|
+
private getVersion;
|
|
11
|
+
start(): Promise<void>;
|
|
12
|
+
stop(): Promise<void>;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/core/server.ts"],"names":[],"mappings":"AAuBA,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,OAAO,CAAU;;IAuBzB,OAAO,CAAC,aAAa;IAiGrB,OAAO,CAAC,aAAa;YAoCP,aAAa;YAeb,UAAU;IAalB,KAAK;IAWL,IAAI;CAIX"}
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
2
|
+
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
3
|
+
import { ListToolsRequestSchema, CallToolRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
|
|
4
|
+
import { Logger } from '../utils/logger.js';
|
|
5
|
+
import { ToolRegistry } from './tool-registry.js';
|
|
6
|
+
import { Session } from './session.js';
|
|
7
|
+
import { createDocumentTools } from '../tools/document-tools.js';
|
|
8
|
+
import { createLayerTools } from '../tools/layer-tools.js';
|
|
9
|
+
import { createImageTools } from '../tools/image-tools.js';
|
|
10
|
+
import { createImagePlacementTools } from '../tools/image-placement-tools.js';
|
|
11
|
+
import { createLayerTransformTools } from '../tools/layer-transform-tools.js';
|
|
12
|
+
import { createLayerPropertiesTools } from '../tools/layer-properties-tools.js';
|
|
13
|
+
import { createFilterTools } from '../tools/filter-tools.js';
|
|
14
|
+
import { createAdjustmentTools } from '../tools/adjustment-tools.js';
|
|
15
|
+
import { createTextTools } from '../tools/text-tools.js';
|
|
16
|
+
import { createSelectionTools } from '../tools/selection-tools.js';
|
|
17
|
+
import { createActionTools } from '../tools/action-tools.js';
|
|
18
|
+
import { createHistoryTools } from '../tools/history-tools.js';
|
|
19
|
+
import { createLayerOrderingTools } from '../tools/layer-ordering-tools.js';
|
|
20
|
+
export class PhotoshopMCPServer {
|
|
21
|
+
server;
|
|
22
|
+
logger;
|
|
23
|
+
toolRegistry;
|
|
24
|
+
session;
|
|
25
|
+
constructor() {
|
|
26
|
+
this.logger = new Logger('PhotoshopMCPServer');
|
|
27
|
+
this.toolRegistry = new ToolRegistry();
|
|
28
|
+
this.session = new Session();
|
|
29
|
+
this.server = new Server({
|
|
30
|
+
name: 'photoshop-mcp',
|
|
31
|
+
version: '0.1.0',
|
|
32
|
+
}, {
|
|
33
|
+
capabilities: {
|
|
34
|
+
tools: {},
|
|
35
|
+
},
|
|
36
|
+
});
|
|
37
|
+
this.registerTools();
|
|
38
|
+
this.setupHandlers();
|
|
39
|
+
}
|
|
40
|
+
registerTools() {
|
|
41
|
+
// Register basic tools
|
|
42
|
+
this.toolRegistry.register('photoshop_ping', {
|
|
43
|
+
tool: {
|
|
44
|
+
name: 'photoshop_ping',
|
|
45
|
+
description: 'Test connection to Photoshop',
|
|
46
|
+
inputSchema: {
|
|
47
|
+
type: 'object',
|
|
48
|
+
properties: {},
|
|
49
|
+
},
|
|
50
|
+
},
|
|
51
|
+
handler: async () => await this.pingPhotoshop(),
|
|
52
|
+
});
|
|
53
|
+
this.toolRegistry.register('photoshop_get_version', {
|
|
54
|
+
tool: {
|
|
55
|
+
name: 'photoshop_get_version',
|
|
56
|
+
description: 'Get Photoshop version information',
|
|
57
|
+
inputSchema: {
|
|
58
|
+
type: 'object',
|
|
59
|
+
properties: {},
|
|
60
|
+
},
|
|
61
|
+
},
|
|
62
|
+
handler: async () => await this.getVersion(),
|
|
63
|
+
});
|
|
64
|
+
// Register feature tools
|
|
65
|
+
const connection = this.session.getConnection();
|
|
66
|
+
const documentTools = createDocumentTools(connection);
|
|
67
|
+
documentTools.forEach((tool) => {
|
|
68
|
+
this.toolRegistry.register(tool.tool.name, tool);
|
|
69
|
+
});
|
|
70
|
+
const layerTools = createLayerTools(connection);
|
|
71
|
+
layerTools.forEach((tool) => {
|
|
72
|
+
this.toolRegistry.register(tool.tool.name, tool);
|
|
73
|
+
});
|
|
74
|
+
const imageTools = createImageTools(connection);
|
|
75
|
+
imageTools.forEach((tool) => {
|
|
76
|
+
this.toolRegistry.register(tool.tool.name, tool);
|
|
77
|
+
});
|
|
78
|
+
const imagePlacementTools = createImagePlacementTools(connection);
|
|
79
|
+
imagePlacementTools.forEach((tool) => {
|
|
80
|
+
this.toolRegistry.register(tool.tool.name, tool);
|
|
81
|
+
});
|
|
82
|
+
const layerTransformTools = createLayerTransformTools(connection);
|
|
83
|
+
layerTransformTools.forEach((tool) => {
|
|
84
|
+
this.toolRegistry.register(tool.tool.name, tool);
|
|
85
|
+
});
|
|
86
|
+
const layerPropertiesTools = createLayerPropertiesTools(connection);
|
|
87
|
+
layerPropertiesTools.forEach((tool) => {
|
|
88
|
+
this.toolRegistry.register(tool.tool.name, tool);
|
|
89
|
+
});
|
|
90
|
+
const filterTools = createFilterTools(connection);
|
|
91
|
+
filterTools.forEach((tool) => {
|
|
92
|
+
this.toolRegistry.register(tool.tool.name, tool);
|
|
93
|
+
});
|
|
94
|
+
const adjustmentTools = createAdjustmentTools(connection);
|
|
95
|
+
adjustmentTools.forEach((tool) => {
|
|
96
|
+
this.toolRegistry.register(tool.tool.name, tool);
|
|
97
|
+
});
|
|
98
|
+
const textTools = createTextTools(connection);
|
|
99
|
+
textTools.forEach((tool) => {
|
|
100
|
+
this.toolRegistry.register(tool.tool.name, tool);
|
|
101
|
+
});
|
|
102
|
+
const selectionTools = createSelectionTools(connection);
|
|
103
|
+
selectionTools.forEach((tool) => {
|
|
104
|
+
this.toolRegistry.register(tool.tool.name, tool);
|
|
105
|
+
});
|
|
106
|
+
const actionTools = createActionTools(connection);
|
|
107
|
+
actionTools.forEach((tool) => {
|
|
108
|
+
this.toolRegistry.register(tool.tool.name, tool);
|
|
109
|
+
});
|
|
110
|
+
const historyTools = createHistoryTools(connection);
|
|
111
|
+
historyTools.forEach((tool) => {
|
|
112
|
+
this.toolRegistry.register(tool.tool.name, tool);
|
|
113
|
+
});
|
|
114
|
+
const layerOrderingTools = createLayerOrderingTools(connection);
|
|
115
|
+
layerOrderingTools.forEach((tool) => {
|
|
116
|
+
this.toolRegistry.register(tool.tool.name, tool);
|
|
117
|
+
});
|
|
118
|
+
this.logger.info(`Registered ${this.toolRegistry.count()} tools`);
|
|
119
|
+
}
|
|
120
|
+
setupHandlers() {
|
|
121
|
+
// List available tools
|
|
122
|
+
this.server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
123
|
+
this.logger.debug('Listing available tools');
|
|
124
|
+
return {
|
|
125
|
+
tools: this.toolRegistry.list(),
|
|
126
|
+
};
|
|
127
|
+
});
|
|
128
|
+
// Handle tool calls
|
|
129
|
+
this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
130
|
+
this.logger.debug(`Tool called: ${request.params.name}`);
|
|
131
|
+
try {
|
|
132
|
+
const args = request.params.arguments || {};
|
|
133
|
+
const result = await this.toolRegistry.execute(request.params.name, args);
|
|
134
|
+
// Update session activity
|
|
135
|
+
this.session.updateActivity();
|
|
136
|
+
return result;
|
|
137
|
+
}
|
|
138
|
+
catch (error) {
|
|
139
|
+
this.logger.error(`Tool execution failed: ${request.params.name}`, error);
|
|
140
|
+
return {
|
|
141
|
+
content: [
|
|
142
|
+
{
|
|
143
|
+
type: 'text',
|
|
144
|
+
text: `Error: ${error instanceof Error ? error.message : String(error)}`,
|
|
145
|
+
},
|
|
146
|
+
],
|
|
147
|
+
isError: true,
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
async pingPhotoshop() {
|
|
153
|
+
const connection = this.session.getConnection();
|
|
154
|
+
const isConnected = await connection.ping();
|
|
155
|
+
return {
|
|
156
|
+
content: [
|
|
157
|
+
{
|
|
158
|
+
type: 'text',
|
|
159
|
+
text: isConnected
|
|
160
|
+
? 'Successfully connected to Photoshop'
|
|
161
|
+
: 'Failed to connect to Photoshop',
|
|
162
|
+
},
|
|
163
|
+
],
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
async getVersion() {
|
|
167
|
+
const connection = this.session.getConnection();
|
|
168
|
+
const version = await connection.getVersion();
|
|
169
|
+
return {
|
|
170
|
+
content: [
|
|
171
|
+
{
|
|
172
|
+
type: 'text',
|
|
173
|
+
text: `Photoshop version: ${version}`,
|
|
174
|
+
},
|
|
175
|
+
],
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
async start() {
|
|
179
|
+
// Initialize session
|
|
180
|
+
await this.session.initialize();
|
|
181
|
+
// Connect server transport
|
|
182
|
+
const transport = new StdioServerTransport();
|
|
183
|
+
await this.server.connect(transport);
|
|
184
|
+
this.logger.info('MCP Server connected via stdio');
|
|
185
|
+
}
|
|
186
|
+
async stop() {
|
|
187
|
+
await this.session.disconnect();
|
|
188
|
+
this.logger.info('MCP Server stopped');
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/core/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EACL,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAE5E,MAAM,OAAO,kBAAkB;IACrB,MAAM,CAAS;IACf,MAAM,CAAS;IACf,YAAY,CAAe;IAC3B,OAAO,CAAU;IAEzB;QACE,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,oBAAoB,CAAC,CAAC;QAC/C,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;QACvC,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;QAE7B,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CACtB;YACE,IAAI,EAAE,eAAe;YACrB,OAAO,EAAE,OAAO;SACjB,EACD;YACE,YAAY,EAAE;gBACZ,KAAK,EAAE,EAAE;aACV;SACF,CACF,CAAC;QAEF,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAEO,aAAa;QACnB,uBAAuB;QACvB,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,gBAAgB,EAAE;YAC3C,IAAI,EAAE;gBACJ,IAAI,EAAE,gBAAgB;gBACtB,WAAW,EAAE,8BAA8B;gBAC3C,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE,EAAE;iBACf;aACF;YACD,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE;SAChD,CAAC,CAAC;QAEH,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,uBAAuB,EAAE;YAClD,IAAI,EAAE;gBACJ,IAAI,EAAE,uBAAuB;gBAC7B,WAAW,EAAE,mCAAmC;gBAChD,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE,EAAE;iBACf;aACF;YACD,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE;SAC7C,CAAC,CAAC;QAEH,yBAAyB;QACzB,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;QAEhD,MAAM,aAAa,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC;QACtD,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YAC7B,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;QAChD,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YAC1B,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;QAChD,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YAC1B,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;QAEH,MAAM,mBAAmB,GAAG,yBAAyB,CAAC,UAAU,CAAC,CAAC;QAClE,mBAAmB,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACnC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;QAEH,MAAM,mBAAmB,GAAG,yBAAyB,CAAC,UAAU,CAAC,CAAC;QAClE,mBAAmB,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACnC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;QAEH,MAAM,oBAAoB,GAAG,0BAA0B,CAAC,UAAU,CAAC,CAAC;QACpE,oBAAoB,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACpC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;QAEH,MAAM,WAAW,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;QAClD,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YAC3B,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;QAEH,MAAM,eAAe,GAAG,qBAAqB,CAAC,UAAU,CAAC,CAAC;QAC1D,eAAe,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YAC/B,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;QAC9C,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACzB,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;QAEH,MAAM,cAAc,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAAC;QACxD,cAAc,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YAC9B,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;QAEH,MAAM,WAAW,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;QAClD,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YAC3B,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;QACpD,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YAC5B,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;QAEH,MAAM,kBAAkB,GAAG,wBAAwB,CAAC,UAAU,CAAC,CAAC;QAChE,kBAAkB,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YAClC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACpE,CAAC;IAEO,aAAa;QACnB,uBAAuB;QACvB,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;YAC/D,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;YAC7C,OAAO;gBACL,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;aAChC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,oBAAoB;QACpB,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YACrE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YAEzD,IAAI,CAAC;gBACH,MAAM,IAAI,GAAI,OAAO,CAAC,MAAM,CAAC,SAAqC,IAAI,EAAE,CAAC;gBACzE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBAE1E,0BAA0B;gBAC1B,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;gBAE9B,OAAO,MAAM,CAAC;YAChB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC;gBAC1E,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,UAAU,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;yBACzE;qBACF;oBACD,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,aAAa;QACzB,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;QAChD,MAAM,WAAW,GAAG,MAAM,UAAU,CAAC,IAAI,EAAE,CAAC;QAC5C,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,WAAW;wBACf,CAAC,CAAC,qCAAqC;wBACvC,CAAC,CAAC,gCAAgC;iBACrC;aACF;SACF,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,UAAU;QACtB,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;QAChD,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,UAAU,EAAE,CAAC;QAC9C,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,sBAAsB,OAAO,EAAE;iBACtC;aACF;SACF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,KAAK;QACT,qBAAqB;QACrB,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;QAEhC,2BAA2B;QAC3B,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;QAC7C,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAErC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,IAAI;QACR,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;QAChC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACzC,CAAC;CACF"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { PhotoshopConnection } from '../platform/connection.js';
|
|
2
|
+
export interface SessionConfig {
|
|
3
|
+
autoConnect?: boolean;
|
|
4
|
+
reconnectAttempts?: number;
|
|
5
|
+
reconnectDelay?: number;
|
|
6
|
+
}
|
|
7
|
+
export declare class Session {
|
|
8
|
+
private logger;
|
|
9
|
+
private connection;
|
|
10
|
+
private config;
|
|
11
|
+
private isConnected;
|
|
12
|
+
private lastActivity;
|
|
13
|
+
constructor(config?: SessionConfig);
|
|
14
|
+
initialize(): Promise<void>;
|
|
15
|
+
connect(): Promise<boolean>;
|
|
16
|
+
reconnect(): Promise<boolean>;
|
|
17
|
+
disconnect(): Promise<void>;
|
|
18
|
+
getConnection(): PhotoshopConnection;
|
|
19
|
+
getConnectionStatus(): boolean;
|
|
20
|
+
getLastActivity(): Date;
|
|
21
|
+
updateActivity(): void;
|
|
22
|
+
private delay;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=session.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/core/session.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAEhE,MAAM,WAAW,aAAa;IAC5B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,qBAAa,OAAO;IAClB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,UAAU,CAAsB;IACxC,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,YAAY,CAAO;gBAEf,MAAM,GAAE,aAAkB;IAYhC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ3B,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IAsB3B,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAoB7B,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAKjC,aAAa,IAAI,mBAAmB;IAIpC,mBAAmB,IAAI,OAAO;IAI9B,eAAe,IAAI,IAAI;IAIvB,cAAc,IAAI,IAAI;IAItB,OAAO,CAAC,KAAK;CAGd"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { Logger } from '../utils/logger.js';
|
|
2
|
+
import { PhotoshopConnection } from '../platform/connection.js';
|
|
3
|
+
export class Session {
|
|
4
|
+
logger;
|
|
5
|
+
connection;
|
|
6
|
+
config;
|
|
7
|
+
isConnected = false;
|
|
8
|
+
lastActivity;
|
|
9
|
+
constructor(config = {}) {
|
|
10
|
+
this.logger = new Logger('Session');
|
|
11
|
+
this.connection = new PhotoshopConnection();
|
|
12
|
+
this.config = {
|
|
13
|
+
autoConnect: true,
|
|
14
|
+
reconnectAttempts: 3,
|
|
15
|
+
reconnectDelay: 1000,
|
|
16
|
+
...config,
|
|
17
|
+
};
|
|
18
|
+
this.lastActivity = new Date();
|
|
19
|
+
}
|
|
20
|
+
async initialize() {
|
|
21
|
+
this.logger.info('Initializing session...');
|
|
22
|
+
if (this.config.autoConnect) {
|
|
23
|
+
await this.connect();
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
async connect() {
|
|
27
|
+
try {
|
|
28
|
+
this.logger.info('Connecting to Photoshop...');
|
|
29
|
+
const connected = await this.connection.ping();
|
|
30
|
+
if (connected) {
|
|
31
|
+
this.isConnected = true;
|
|
32
|
+
this.updateActivity();
|
|
33
|
+
this.logger.info('Successfully connected to Photoshop');
|
|
34
|
+
return true;
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
this.isConnected = false;
|
|
38
|
+
this.logger.warn('Failed to connect to Photoshop');
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
this.logger.error('Connection error:', error);
|
|
44
|
+
this.isConnected = false;
|
|
45
|
+
return false;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
async reconnect() {
|
|
49
|
+
this.logger.info('Attempting to reconnect...');
|
|
50
|
+
for (let attempt = 1; attempt <= (this.config.reconnectAttempts || 3); attempt++) {
|
|
51
|
+
this.logger.debug(`Reconnect attempt ${attempt}/${this.config.reconnectAttempts}`);
|
|
52
|
+
const connected = await this.connect();
|
|
53
|
+
if (connected) {
|
|
54
|
+
return true;
|
|
55
|
+
}
|
|
56
|
+
if (attempt < (this.config.reconnectAttempts || 3)) {
|
|
57
|
+
await this.delay(this.config.reconnectDelay || 1000);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
this.logger.error('Failed to reconnect after all attempts');
|
|
61
|
+
return false;
|
|
62
|
+
}
|
|
63
|
+
async disconnect() {
|
|
64
|
+
this.logger.info('Disconnecting session...');
|
|
65
|
+
this.isConnected = false;
|
|
66
|
+
}
|
|
67
|
+
getConnection() {
|
|
68
|
+
return this.connection;
|
|
69
|
+
}
|
|
70
|
+
getConnectionStatus() {
|
|
71
|
+
return this.isConnected;
|
|
72
|
+
}
|
|
73
|
+
getLastActivity() {
|
|
74
|
+
return this.lastActivity;
|
|
75
|
+
}
|
|
76
|
+
updateActivity() {
|
|
77
|
+
this.lastActivity = new Date();
|
|
78
|
+
}
|
|
79
|
+
delay(ms) {
|
|
80
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/core/session.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Tool, CallToolResult } from '@modelcontextprotocol/sdk/types.js';
|
|
2
|
+
export interface ToolHandler {
|
|
3
|
+
(args: Record<string, unknown>): Promise<CallToolResult>;
|
|
4
|
+
}
|
|
5
|
+
export type ToolResult = CallToolResult;
|
|
6
|
+
export interface ToolDefinition {
|
|
7
|
+
tool: Tool;
|
|
8
|
+
handler: ToolHandler;
|
|
9
|
+
}
|
|
10
|
+
export declare class ToolRegistry {
|
|
11
|
+
private logger;
|
|
12
|
+
private tools;
|
|
13
|
+
constructor();
|
|
14
|
+
register(name: string, definition: ToolDefinition): void;
|
|
15
|
+
unregister(name: string): boolean;
|
|
16
|
+
has(name: string): boolean;
|
|
17
|
+
get(name: string): ToolDefinition | undefined;
|
|
18
|
+
list(): Tool[];
|
|
19
|
+
execute(name: string, args: Record<string, unknown>): Promise<ToolResult>;
|
|
20
|
+
clear(): void;
|
|
21
|
+
count(): number;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=tool-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-registry.d.ts","sourceRoot":"","sources":["../../src/core/tool-registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAG1E,MAAM,WAAW,WAAW;IAC1B,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;CAC1D;AAED,MAAM,MAAM,UAAU,GAAG,cAAc,CAAC;AAExC,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,EAAE,WAAW,CAAC;CACtB;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAA8B;;IAO3C,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,cAAc,GAAG,IAAI;IASxD,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAQjC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAI7C,IAAI,IAAI,IAAI,EAAE;IAIR,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;IAiB/E,KAAK,IAAI,IAAI;IAKb,KAAK,IAAI,MAAM;CAGhB"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { Logger } from '../utils/logger.js';
|
|
2
|
+
export class ToolRegistry {
|
|
3
|
+
logger;
|
|
4
|
+
tools;
|
|
5
|
+
constructor() {
|
|
6
|
+
this.logger = new Logger('ToolRegistry');
|
|
7
|
+
this.tools = new Map();
|
|
8
|
+
}
|
|
9
|
+
register(name, definition) {
|
|
10
|
+
if (this.tools.has(name)) {
|
|
11
|
+
this.logger.warn(`Tool '${name}' already registered, overwriting`);
|
|
12
|
+
}
|
|
13
|
+
this.tools.set(name, definition);
|
|
14
|
+
this.logger.debug(`Registered tool: ${name}`);
|
|
15
|
+
}
|
|
16
|
+
unregister(name) {
|
|
17
|
+
const result = this.tools.delete(name);
|
|
18
|
+
if (result) {
|
|
19
|
+
this.logger.debug(`Unregistered tool: ${name}`);
|
|
20
|
+
}
|
|
21
|
+
return result;
|
|
22
|
+
}
|
|
23
|
+
has(name) {
|
|
24
|
+
return this.tools.has(name);
|
|
25
|
+
}
|
|
26
|
+
get(name) {
|
|
27
|
+
return this.tools.get(name);
|
|
28
|
+
}
|
|
29
|
+
list() {
|
|
30
|
+
return Array.from(this.tools.values()).map((def) => def.tool);
|
|
31
|
+
}
|
|
32
|
+
async execute(name, args) {
|
|
33
|
+
const definition = this.tools.get(name);
|
|
34
|
+
if (!definition) {
|
|
35
|
+
throw new Error(`Tool not found: ${name}`);
|
|
36
|
+
}
|
|
37
|
+
try {
|
|
38
|
+
this.logger.debug(`Executing tool: ${name}`);
|
|
39
|
+
const result = await definition.handler(args);
|
|
40
|
+
return result;
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
this.logger.error(`Tool execution failed: ${name}`, error);
|
|
44
|
+
throw error;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
clear() {
|
|
48
|
+
this.tools.clear();
|
|
49
|
+
this.logger.debug('All tools cleared');
|
|
50
|
+
}
|
|
51
|
+
count() {
|
|
52
|
+
return this.tools.size;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=tool-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-registry.js","sourceRoot":"","sources":["../../src/core/tool-registry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAa5C,MAAM,OAAO,YAAY;IACf,MAAM,CAAS;IACf,KAAK,CAA8B;IAE3C;QACE,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,cAAc,CAAC,CAAC;QACzC,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,EAAE,CAAC;IACzB,CAAC;IAED,QAAQ,CAAC,IAAY,EAAE,UAA0B;QAC/C,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,IAAI,mCAAmC,CAAC,CAAC;QACrE,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QACjC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB,IAAI,EAAE,CAAC,CAAC;IAChD,CAAC;IAED,UAAU,CAAC,IAAY;QACrB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,IAAI,EAAE,CAAC,CAAC;QAClD,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,IAAI;QACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAChE,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,IAAY,EAAE,IAA6B;QACvD,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAExC,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC;QAC7C,CAAC;QAED,IAAI,CAAC;YACH,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC;YAC7C,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC9C,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC;YAC3D,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,KAAK;QACH,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACnB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACzC,CAAC;IAED,KAAK;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IACzB,CAAC;CACF"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { PhotoshopMCPServer } from './core/server.js';
|
|
3
|
+
import { Logger } from './utils/logger.js';
|
|
4
|
+
const logger = new Logger('Main');
|
|
5
|
+
async function main() {
|
|
6
|
+
try {
|
|
7
|
+
logger.info('Starting Photoshop MCP Server...');
|
|
8
|
+
const server = new PhotoshopMCPServer();
|
|
9
|
+
await server.start();
|
|
10
|
+
logger.info('Photoshop MCP Server is running');
|
|
11
|
+
}
|
|
12
|
+
catch (error) {
|
|
13
|
+
logger.error('Failed to start server:', error);
|
|
14
|
+
process.exit(1);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
main();
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC;AAElC,KAAK,UAAU,IAAI;IACjB,IAAI,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;QAEhD,MAAM,MAAM,GAAG,IAAI,kBAAkB,EAAE,CAAC;QACxC,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QAErB,MAAM,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;IACjD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;QAC/C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export interface PhotoshopInfo {
|
|
2
|
+
version: string;
|
|
3
|
+
path: string;
|
|
4
|
+
isRunning: boolean;
|
|
5
|
+
appName?: string;
|
|
6
|
+
}
|
|
7
|
+
export declare class PhotoshopConnection {
|
|
8
|
+
private logger;
|
|
9
|
+
private detector;
|
|
10
|
+
private executor;
|
|
11
|
+
private photoshopInfo;
|
|
12
|
+
private macosExecutor?;
|
|
13
|
+
constructor();
|
|
14
|
+
ping(): Promise<boolean>;
|
|
15
|
+
getVersion(): Promise<string>;
|
|
16
|
+
executeScript(script: string, timeout?: number): Promise<unknown>;
|
|
17
|
+
getPhotoshopInfo(): PhotoshopInfo | null;
|
|
18
|
+
ensurePhotoshopRunning(): Promise<void>;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=connection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../src/platform/connection.ts"],"names":[],"mappings":"AAOA,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,CAAiB;IACjC,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,aAAa,CAAC,CAAgB;;IAkBhC,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC;IAiBxB,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;IAa7B,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA4BvE,gBAAgB,IAAI,aAAa,GAAG,IAAI;IAIlC,sBAAsB,IAAI,OAAO,CAAC,IAAI,CAAC;CAW9C"}
|