editmamei 1.0.1 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -5,8 +5,9 @@
5
5
  > Independent project, not affiliated with or endorsed by Adobe Inc.
6
6
 
7
7
  [![npm version](https://img.shields.io/npm/v/editmamei.svg)](https://www.npmjs.com/package/editmamei)
8
+ [![CI](https://github.com/editmamei/editmamei/actions/workflows/ci.yml/badge.svg)](https://github.com/editmamei/editmamei/actions/workflows/ci.yml)
8
9
  [![License](https://img.shields.io/badge/License-FSL--1.1--MIT-blue.svg)](LICENSE.md)
9
- [![Platform](https://img.shields.io/badge/Platform-Windows%20%7C%20macOS-lightgrey.svg)]()
10
+ [![Platform](https://img.shields.io/badge/Platform-Windows%20%7C%20macOS-lightgrey.svg)](docs/installation.md)
10
11
 
11
12
  Editmamei is a Model Context Protocol (MCP) server that drives the Adobe Photoshop you already have. You describe the edit in plain words, your AI assistant plans the steps, and your own copy of Photoshop carries them out with its standard adjustment layers, masks, selections, and filters. The AI directs and Photoshop edits. No generative model touches your pixels, and no image is uploaded to perform an edit.
12
13
 
Binary file
Binary file
@@ -24,6 +24,7 @@ import { Kernel } from '../kernel/kernel.js';
24
24
  import { ceModule } from '../modules/ce/index.js';
25
25
  import { hostDetectionRuntime } from '../detection/runtime.js';
26
26
  import { ModuleLifecycle, classifyModuleOutcome } from '../kernel/module-lifecycle.js';
27
+ import { unsupportedHostReason } from '../platform/host-platform.js';
27
28
  export { classifyModuleOutcome };
28
29
  let logScriptOnErrorWarned = false;
29
30
  function warnLogScriptOnErrorOnce(logger) {
@@ -312,9 +313,13 @@ export class EditmameiServer {
312
313
  this.logger.warn(`pingState snippet build failed (go-core binary missing/broken?): ${err instanceof Error ? err.message : String(err)}`);
313
314
  const alive = await connection.ping().catch(() => false);
314
315
  if (!alive) {
316
+ const reason = unsupportedHostReason();
315
317
  return {
316
318
  content: [
317
- { type: 'text', text: 'Photoshop did not respond' + this.updateNote() },
319
+ {
320
+ type: 'text',
321
+ text: (reason ?? 'Photoshop did not respond') + this.updateNote(),
322
+ },
318
323
  ],
319
324
  structuredContent: { connected: false, update_available: this.updateInfo },
320
325
  };
@@ -3,6 +3,28 @@ import { MacOSDetector } from './macos-detector.js';
3
3
  import { MacOSScriptRunner } from './macos-runner.js';
4
4
  import { WindowsDetector } from './windows-detector.js';
5
5
  import { WindowsScriptRunner } from './windows-runner.js';
6
+ function noPhotoshopHere(os) {
7
+ return (`Editmamei runs on Windows and macOS; this process is on "${os}". ` +
8
+ 'Adobe ships no Linux build of Photoshop, so there is nothing here to drive.');
9
+ }
10
+ export function unsupportedHostReason() {
11
+ const os = platform();
12
+ return os === 'win32' || os === 'darwin' ? null : noPhotoshopHere(os);
13
+ }
14
+ function unsupportedHost(os) {
15
+ const refuse = () => {
16
+ throw new Error(noPhotoshopHere(os));
17
+ };
18
+ return {
19
+ os,
20
+ adapter: {
21
+ run: async () => refuse(),
22
+ isRunning: async () => refuse(),
23
+ launch: async () => refuse(),
24
+ },
25
+ detector: { detect: async () => refuse() },
26
+ };
27
+ }
6
28
  export function resolveHostPlatform() {
7
29
  const os = platform();
8
30
  if (os === 'win32') {
@@ -11,6 +33,5 @@ export function resolveHostPlatform() {
11
33
  if (os === 'darwin') {
12
34
  return { os, adapter: new MacOSScriptRunner(), detector: new MacOSDetector() };
13
35
  }
14
- throw new Error(`Editmamei runs on Windows and macOS; this process is on "${os}". ` +
15
- 'Adobe ships no Linux build of Photoshop, so there is nothing here to drive.');
36
+ return unsupportedHost(os);
16
37
  }
Binary file
package/dist/version.js CHANGED
@@ -1 +1 @@
1
- export const VERSION = '1.0.1';
1
+ export const VERSION = '1.0.3';
package/package.json CHANGED
@@ -1,7 +1,8 @@
1
1
  {
2
2
  "name": "editmamei",
3
- "version": "1.0.1",
3
+ "version": "1.0.3",
4
4
  "description": "Photoshop MCP server: natural-language AI photo editing with your own Photoshop (Community Edition)",
5
+ "mcpName": "io.github.editmamei/editmamei",
5
6
  "main": "dist/index.js",
6
7
  "type": "module",
7
8
  "bin": {
@@ -9,8 +10,8 @@
9
10
  },
10
11
  "files": [
11
12
  "dist",
12
- "README.md",
13
13
  "LICENSE.md",
14
+ "README.md",
14
15
  "NOTICES.md"
15
16
  ],
16
17
  "scripts": {