editmamei 1.0.0 → 1.0.2

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/LICENSE.md ADDED
@@ -0,0 +1,110 @@
1
+ # Functional Source License, Version 1.1, MIT Future License
2
+
3
+ ## Abbreviation
4
+
5
+ FSL-1.1-MIT
6
+
7
+ ## Notice
8
+
9
+ Copyright 2026 EMBD Artifacts LLC
10
+
11
+ ## Terms and Conditions
12
+
13
+ ### Licensor ("We")
14
+
15
+ The party offering the Software under these Terms and Conditions.
16
+
17
+ ### The Software
18
+
19
+ The "Software" is each version of the software that we make available under
20
+ these Terms and Conditions, as indicated by our inclusion of these Terms and
21
+ Conditions with the Software.
22
+
23
+ ### License Grant
24
+
25
+ Subject to your compliance with this License Grant and the Patents,
26
+ Redistribution and Trademark clauses below, we hereby grant you the right to
27
+ use, copy, modify, create derivative works, publicly perform, publicly display
28
+ and redistribute the Software for any Permitted Purpose identified below.
29
+
30
+ ### Permitted Purpose
31
+
32
+ A Permitted Purpose is any purpose other than a Competing Use. A Competing Use
33
+ means making the Software available to others in a commercial product or
34
+ service that:
35
+
36
+ 1. substitutes for the Software;
37
+
38
+ 2. substitutes for any other product or service we offer using the Software
39
+ that exists as of the date we make the Software available; or
40
+
41
+ 3. offers the same or substantially similar functionality as the Software.
42
+
43
+ Permitted Purposes specifically include using the Software:
44
+
45
+ 1. for your internal use and access;
46
+
47
+ 2. for non-commercial education;
48
+
49
+ 3. for non-commercial research; and
50
+
51
+ 4. in connection with professional services that you provide to a licensee
52
+ using the Software in accordance with these Terms and Conditions.
53
+
54
+ ### Patents
55
+
56
+ To the extent your use for a Permitted Purpose would necessarily infringe our
57
+ patents, the license grant above includes a license under our patents. If you
58
+ make a claim against any party that the Software infringes or contributes to
59
+ the infringement of any patent, then your patent license to the Software ends
60
+ immediately.
61
+
62
+ ### Redistribution
63
+
64
+ The Terms and Conditions apply to all copies, modifications and derivatives of
65
+ the Software.
66
+
67
+ If you redistribute any copies, modifications or derivatives of the Software,
68
+ you must include a copy of or a link to these Terms and Conditions and not
69
+ remove any copyright notices provided in or with the Software.
70
+
71
+ ### Disclaimer
72
+
73
+ THE SOFTWARE IS PROVIDED "AS IS" AND WITHOUT WARRANTIES OF ANY KIND, EXPRESS OR
74
+ IMPLIED, INCLUDING WITHOUT LIMITATION WARRANTIES OF FITNESS FOR A PARTICULAR
75
+ PURPOSE, MERCHANTABILITY, TITLE OR NON-INFRINGEMENT.
76
+
77
+ IN NO EVENT WILL WE HAVE ANY LIABILITY TO YOU ARISING OUT OF OR RELATED TO THE
78
+ SOFTWARE, INCLUDING INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES,
79
+ EVEN IF WE HAVE BEEN INFORMED OF THEIR POSSIBILITY IN ADVANCE.
80
+
81
+ ### Trademarks
82
+
83
+ Except for displaying the License Details and identifying us as the origin of
84
+ the Software, you have no right under these Terms and Conditions to use our
85
+ trademarks, trade names, service marks or product names.
86
+
87
+ ## Grant of Future License
88
+
89
+ We hereby irrevocably grant you an additional license to use the Software under
90
+ the MIT license that is effective on the second anniversary of the date we make
91
+ the Software available. On or after that date, you may use the Software under
92
+ the MIT license, in which case the following will apply:
93
+
94
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
95
+ this software and associated documentation files (the "Software"), to deal in
96
+ the Software without restriction, including without limitation the rights to
97
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
98
+ of the Software, and to permit persons to whom the Software is furnished to do
99
+ so, subject to the following conditions:
100
+
101
+ The above copyright notice and this permission notice shall be included in all
102
+ copies or substantial portions of the Software.
103
+
104
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
105
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
106
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
107
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
108
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
109
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
110
+ SOFTWARE.
package/README.md CHANGED
@@ -5,14 +5,15 @@
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
 
13
14
  It serves photographers and retouchers who want to edit by conversation just as much as developers wiring Photoshop into an AI pipeline. To learn more or get started, visit **[editmamei.com](https://editmamei.com)**.
14
15
 
15
- **[editmamei.com](https://editmamei.com)** · [Docs & wiki](https://github.com/editmamei/editmamei-wiki) · [Report a bug](https://github.com/editmamei/editmamei-wiki/issues)
16
+ **[editmamei.com](https://editmamei.com)** · [Docs](docs/getting-started.md) · [Report a bug](https://github.com/editmamei/editmamei/issues)
16
17
 
17
18
  ## How it works
18
19
 
@@ -44,7 +45,7 @@ editmamei status # confirms install state + Photoshop detection
44
45
 
45
46
  Then restart your AI client and ask it: _"Is Photoshop connected?"_
46
47
 
47
- Prefer not to use a terminal? Claude Desktop users can install the one-click `.mcpb` extension from [the latest release](https://github.com/editmamei/editmamei-wiki/releases/latest) (no system Node required, Claude Desktop ships its own runtime). Full walkthrough in the [install guide](https://github.com/editmamei/editmamei-wiki/blob/main/docs/installation.md).
48
+ Prefer not to use a terminal? Claude Desktop users can install the one-click [`.mcpb` extension](https://github.com/editmamei/editmamei/releases/latest/download/editmamei.mcpb) directly (no system Node required, Claude Desktop ships its own runtime). Full walkthrough in the [install guide](docs/installation.md).
48
49
 
49
50
  **Requirements:** Adobe Photoshop 2026 (v27.x), Windows 10/11 or macOS 12+, Node.js 20+ (for the npm path), and an MCP-compatible AI client (Claude Desktop, Cursor, Claude Code).
50
51
 
@@ -104,7 +105,7 @@ These are the choices that shape the surface, and the reason an AI assistant can
104
105
  - **Community** is free and covers the everyday editing surface: documents, layers, selections (including AI Select Subject and Select Sky), non-destructive adjustments, filters, masks, type, retouching, on-device perception, and the inspect/verify primitives.
105
106
  - **Pro** adds Camera Raw develop, the grounded precision tools (warp, named-object masks, precision placement), subject-instance targeting, face-mesh perception, the reproducible-template system, and Photoshop Actions plus the scripting escape hatch.
106
107
 
107
- The split is detailed in [pro-features.md](https://github.com/editmamei/editmamei-wiki/blob/main/docs/pro-features.md). Pricing is at [editmamei.com](https://editmamei.com).
108
+ The split is detailed in [pro-features.md](docs/pro-features.md). Pricing is at [editmamei.com](https://editmamei.com).
108
109
 
109
110
  This repository holds the Community source. Pro is a separately licensed module and its source is not published here; Community never imports it, so this tree builds and runs on its own.
110
111
 
@@ -138,15 +139,19 @@ editmamei config set ps_path "/path/to/Photoshop"
138
139
 
139
140
  ## Privacy
140
141
 
141
- Editmamei runs on your computer and edits in your own Photoshop. No image content, document data, or file paths are sent to Editmamei's servers. It reports anonymous, content-free usage telemetry (on by default, turn it off with `editmamei config set telemetry.usage false`). When your AI assistant needs to see a result, Editmamei sends it a downscaled preview, the same as dropping a photo into a chat with that assistant. Every field is documented in [privacy.md](https://github.com/editmamei/editmamei-wiki/blob/main/docs/privacy.md).
142
+ Editmamei runs on your computer and edits in your own Photoshop. No image content, document data, or file paths are sent to Editmamei's servers. It reports anonymous, content-free usage telemetry (on by default, turn it off with `editmamei config set telemetry.usage false`). When your AI assistant needs to see a result, Editmamei sends it a downscaled preview, the same as dropping a photo into a chat with that assistant. Every field is documented in [privacy.md](docs/privacy.md).
142
143
 
143
144
  The source in this repository is the same code published to npm, so none of the above has to be taken on trust.
144
145
 
145
146
  ## Docs and support
146
147
 
147
148
  - **Features and pricing:** [editmamei.com](https://editmamei.com)
148
- - **Install, getting started, FAQ, Pro features:** [the wiki](https://github.com/editmamei/editmamei-wiki)
149
- - **Bugs and feature requests:** [the issue tracker](https://github.com/editmamei/editmamei-wiki/issues). If something's broken, ask your assistant to "report a problem" (or run `editmamei report`) to drop an anonymized diagnostic bundle in your Downloads folder, then attach it to the issue.
149
+ - **Install:** [docs/installation.md](docs/installation.md)
150
+ - **Getting started:** [docs/getting-started.md](docs/getting-started.md)
151
+ - **FAQ:** [docs/faq.md](docs/faq.md)
152
+ - **Pro features:** [docs/pro-features.md](docs/pro-features.md)
153
+ - **Roadmap:** [docs/roadmap.md](docs/roadmap.md)
154
+ - **Bugs and feature requests:** [the issue tracker](https://github.com/editmamei/editmamei/issues). If something's broken, ask your assistant to "report a problem" (or run `editmamei report`) to drop an anonymized diagnostic bundle in your Downloads folder, then attach it to the issue.
150
155
  - **Security:** see [SECURITY.md](SECURITY.md) (don't file security issues publicly)
151
156
 
152
157
  ## License
Binary file
Binary file
package/dist/cli/help.js CHANGED
@@ -47,6 +47,6 @@ Examples:
47
47
  Per-user data and session logs live in ~/.editmamei/; uninstall preserves them.
48
48
 
49
49
  Docs: https://editmamei.com/docs
50
- Issues: https://github.com/editmamei/editmamei-wiki/issues
50
+ Issues: https://github.com/editmamei/editmamei/issues
51
51
  `);
52
52
  }
@@ -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
  };
@@ -10,7 +10,7 @@ import { readSessionLog, listRecentSessionIds } from '../utils/session-log-reade
10
10
  import { classifyError, generateSessionId, } from '../utils/session-log.js';
11
11
  import { detectDownloadsDir } from '../cli/downloads-dir.js';
12
12
  export const DIAGNOSTIC_BUNDLE_SCHEMA = 1;
13
- export const ISSUES_URL = 'https://github.com/editmamei/editmamei-wiki/issues';
13
+ export const ISSUES_URL = 'https://github.com/editmamei/editmamei/issues';
14
14
  const MAX_LOG_LINES = 1000;
15
15
  const MAX_DESKTOP_LOG_LINES = 400;
16
16
  const MAX_RECENT_SESSIONS = 3;
@@ -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.0';
1
+ export const VERSION = '1.0.2';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "editmamei",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "description": "Photoshop MCP server: natural-language AI photo editing with your own Photoshop (Community Edition)",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",
@@ -9,8 +9,8 @@
9
9
  },
10
10
  "files": [
11
11
  "dist",
12
+ "LICENSE.md",
12
13
  "README.md",
13
- "LICENSE",
14
14
  "NOTICES.md"
15
15
  ],
16
16
  "scripts": {
@@ -41,7 +41,7 @@
41
41
  },
42
42
  "homepage": "https://editmamei.com",
43
43
  "bugs": {
44
- "url": "https://github.com/editmamei/editmamei-wiki/issues"
44
+ "url": "https://github.com/editmamei/editmamei/issues"
45
45
  },
46
46
  "engines": {
47
47
  "node": ">=20.0.0"