@alisaitteke/photoshop-mcp 1.5.0 → 1.6.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.
Files changed (36) hide show
  1. package/README.de.md +21 -0
  2. package/README.es.md +20 -0
  3. package/README.ja.md +20 -0
  4. package/README.md +69 -1
  5. package/README.tr.md +70 -1
  6. package/README.zh-CN.md +17 -0
  7. package/dist/platform/macos-detector.d.ts.map +1 -1
  8. package/dist/platform/macos-detector.js +7 -4
  9. package/dist/platform/macos-detector.js.map +1 -1
  10. package/dist/platform/macos-executor.d.ts +11 -0
  11. package/dist/platform/macos-executor.d.ts.map +1 -1
  12. package/dist/platform/macos-executor.js +103 -32
  13. package/dist/platform/macos-executor.js.map +1 -1
  14. package/dist/ui/cli.js +7 -1
  15. package/dist/ui/cli.js.map +1 -1
  16. package/dist/ui/providers/anthropic.d.ts.map +1 -1
  17. package/dist/ui/providers/anthropic.js +11 -1
  18. package/dist/ui/providers/anthropic.js.map +1 -1
  19. package/dist/ui/providers/types.d.ts +1 -0
  20. package/dist/ui/providers/types.d.ts.map +1 -1
  21. package/dist/ui/security/session-token.d.ts +24 -0
  22. package/dist/ui/security/session-token.d.ts.map +1 -0
  23. package/dist/ui/security/session-token.js +72 -0
  24. package/dist/ui/security/session-token.js.map +1 -0
  25. package/dist/ui/server.d.ts +4 -0
  26. package/dist/ui/server.d.ts.map +1 -1
  27. package/dist/ui/server.js +79 -11
  28. package/dist/ui/server.js.map +1 -1
  29. package/dist/utils/js-string.d.ts.map +1 -1
  30. package/dist/utils/js-string.js +6 -1
  31. package/dist/utils/js-string.js.map +1 -1
  32. package/package.json +6 -3
  33. package/web/dist/assets/{index-uXgjjmy3.js → index-SNfxhJjr.js} +89 -85
  34. package/web/dist/assets/index-vi5C3hqd.css +1 -0
  35. package/web/dist/index.html +2 -2
  36. package/web/dist/assets/index-BN7ku4VU.css +0 -1
package/README.de.md CHANGED
@@ -115,6 +115,27 @@ Die Authentifizierungsmethode wird pro Anbieter in `~/.photoshop-mcp/data.db` ge
115
115
  photoshop-mcp-ui [--port 5174] [--host 127.0.0.1] [--no-open]
116
116
  ```
117
117
 
118
+ ### Sicherheit der lokalen API
119
+
120
+ Der UI-Server speichert deine Provider-API-Schlüssel und kann Photoshop
121
+ steuern, daher ist `/api/*` nicht für alles offen, was auf deinem Rechner
122
+ läuft. Jede Anfrage muss drei Prüfungen bestehen:
123
+
124
+ 1. **Host** — muss die Loopback-Adresse (oder der via `--host` gebundene Host)
125
+ auf dem Port des Servers sein. Blockiert DNS-Rebinding.
126
+ 2. **Origin** — falls vorhanden, muss sie dem Origin der UI entsprechen.
127
+ Blockiert Cross-Origin-Aufrufe aus dem Browser.
128
+ 3. **Session-Token** — ein zufälliges Geheimnis pro Serverstart. Blockiert
129
+ andere lokale Prozesse, die zwar jeden Header fälschen, aber das Token nicht
130
+ lesen können.
131
+
132
+ Der Browser muss sich nicht um das Token kümmern: Der Server injiziert es in
133
+ die ausgelieferte `index.html`. Für Skripte liest du es aus
134
+ `~/.photoshop-mcp/ui-session.json` (chmod 600) und sendest es als
135
+ `x-psmcp-token` oder `Authorization: Bearer`; alternativ setzt du vor dem Start
136
+ `PSMCP_UI_TOKEN` auf ein eigenes Token. Anfragen ohne gültiges Token erhalten
137
+ `401 unauthorized`.
138
+
118
139
  ### Hinweise
119
140
 
120
141
  - Der Agent ist auf Photoshop-MCP-Werkzeuge beschränkt – integrierte Shell-, Datei-
package/README.es.md CHANGED
@@ -99,6 +99,26 @@ El método de autenticación se almacena por proveedor en `~/.photoshop-mcp/data
99
99
  photoshop-mcp-ui [--port 5174] [--host 127.0.0.1] [--no-open]
100
100
  ```
101
101
 
102
+ ### Seguridad de la API local
103
+
104
+ El servidor de la UI guarda tus claves de API de proveedores y puede controlar
105
+ Photoshop, así que `/api/*` no está abierto a todo lo que se ejecute en tu
106
+ máquina. Cada petición debe superar tres comprobaciones:
107
+
108
+ 1. **Host** — debe ser la dirección de loopback (o el `--host` al que enlazaste)
109
+ en el puerto del servidor. Bloquea el DNS rebinding.
110
+ 2. **Origin** — si está presente, debe coincidir con el origen de la propia UI.
111
+ Bloquea las llamadas cross-origin desde el navegador.
112
+ 3. **Token de sesión** — un secreto aleatorio por arranque. Bloquea a otros
113
+ procesos locales, que pueden falsificar cualquier cabecera pero no leer el
114
+ token.
115
+
116
+ El navegador no necesita gestionar el token: el servidor lo inyecta en el
117
+ `index.html` que sirve. Para scripts, léelo de
118
+ `~/.photoshop-mcp/ui-session.json` (chmod 600) y envíalo como `x-psmcp-token` o
119
+ `Authorization: Bearer`, o fija el tuyo con `PSMCP_UI_TOKEN` antes de arrancar
120
+ el servidor. Las peticiones sin un token válido reciben `401 unauthorized`.
121
+
102
122
  ### Notas
103
123
 
104
124
  - El agente está restringido únicamente a las herramientas de Photoshop MCP — las herramientas integradas de shell, archivos y web están deshabilitadas.
package/README.ja.md CHANGED
@@ -99,6 +99,26 @@ npx -p @alisaitteke/photoshop-mcp photoshop-mcp-ui
99
99
  photoshop-mcp-ui [--port 5174] [--host 127.0.0.1] [--no-open]
100
100
  ```
101
101
 
102
+ ### ローカル API のセキュリティ
103
+
104
+ UI サーバーはプロバイダーの API キーを保存し、Photoshop を操作できます。その
105
+ ため `/api/*` はマシン上で動作するすべてのプロセスに開かれてはいません。各
106
+ リクエストは次の 3 つのチェックを通過する必要があります。
107
+
108
+ 1. **Host** — サーバーのポート上のループバックアドレス(または `--host` で
109
+ バインドしたホスト)である必要があります。DNS リバインディングを防ぎます。
110
+ 2. **Origin** — 存在する場合は UI 自身のオリジンと一致する必要があります。
111
+ ブラウザからのクロスオリジン呼び出しを防ぎます。
112
+ 3. **セッショントークン** — 起動ごとに生成されるランダムな秘密値です。ヘッダー
113
+ は偽装できてもトークンは読み取れない、他のローカルプロセスを防ぎます。
114
+
115
+ ブラウザ側でトークンを扱う必要はありません。サーバーが配信する `index.html`
116
+ に注入します。スクリプトから使う場合は
117
+ `~/.photoshop-mcp/ui-session.json`(chmod 600)から読み取り、`x-psmcp-token`
118
+ または `Authorization: Bearer` ヘッダーで送信するか、サーバー起動前に
119
+ `PSMCP_UI_TOKEN` で任意のトークンを固定してください。有効なトークンがない
120
+ リクエストは `401 unauthorized` を返します。
121
+
102
122
  ### 注意事項
103
123
 
104
124
  - エージェントはPhotoshop MCPツールのみに制限されています。組み込みのシェル・ファイル・Webツールは無効化されています。
package/README.md CHANGED
@@ -126,6 +126,25 @@ Auth method is stored per provider in `~/.photoshop-mcp/data.db` (`authMethod`:
126
126
  photoshop-mcp-ui [--port 5174] [--host 127.0.0.1] [--no-open]
127
127
  ```
128
128
 
129
+ ### Local API security
130
+
131
+ The UI server stores your provider API keys and can drive Photoshop, so `/api/*`
132
+ is not open to everything running on your machine. Each request must pass three
133
+ checks:
134
+
135
+ 1. **Host** — must be the loopback address (or the `--host` you bound to) on the
136
+ server's port. Blocks DNS rebinding.
137
+ 2. **Origin** — when present, must match the UI's own origin. Blocks
138
+ cross-origin browser callers.
139
+ 3. **Session token** — a random per-start secret. Blocks other local processes,
140
+ which can forge any header but cannot read the token.
141
+
142
+ The browser never has to deal with the token: the server injects it into the
143
+ `index.html` it serves. For scripting, read it from
144
+ `~/.photoshop-mcp/ui-session.json` (chmod 600) and send it as `x-psmcp-token` or
145
+ `Authorization: Bearer`, or pin your own with `PSMCP_UI_TOKEN` before starting
146
+ the server. Requests without a valid token get `401 unauthorized`.
147
+
129
148
  ### Notes
130
149
 
131
150
  - The agent is restricted to Photoshop MCP tools only — built-in shell, file
@@ -631,6 +650,54 @@ Add to your Claude Desktop config (`~/Library/Application Support/Claude/claude_
631
650
  }
632
651
  ```
633
652
 
653
+ **Can't find the config file?** In Claude Desktop, open **Settings → Developer → Edit Config** — it opens the correct path for your install (the `%APPDATA%` path may differ on some setups).
654
+
655
+ ### For Claude Code
656
+
657
+ Use the [Claude Code CLI](https://code.claude.com/docs/en/agent-sdk/mcp) or the [Claude Agent SDK](https://code.claude.com/docs/en/agent-sdk/mcp) with the same MCP server entry.
658
+
659
+ **Recommended (CLI):**
660
+
661
+ ```bash
662
+ claude mcp add photoshop -- npx -y @alisaitteke/photoshop-mcp
663
+ ```
664
+
665
+ **Manual JSON** — merge into your project `.mcp.json` or Claude Code MCP settings (see [`examples/claude-code-mcp.json`](examples/claude-code-mcp.json)):
666
+
667
+ ```json
668
+ {
669
+ "mcpServers": {
670
+ "photoshop": {
671
+ "command": "npx",
672
+ "args": ["-y", "@alisaitteke/photoshop-mcp"],
673
+ "env": {
674
+ "LOG_LEVEL": "1"
675
+ }
676
+ }
677
+ }
678
+ }
679
+ ```
680
+
681
+ **Agent SDK (TypeScript)** — pass the same `mcpServers` block in your `query()` options:
682
+
683
+ ```typescript
684
+ import { query } from '@anthropic-ai/claude-agent-sdk';
685
+
686
+ const q = query({
687
+ prompt: 'List open documents in Photoshop',
688
+ options: {
689
+ mcpServers: {
690
+ photoshop: {
691
+ command: 'npx',
692
+ args: ['-y', '@alisaitteke/photoshop-mcp'],
693
+ env: { LOG_LEVEL: '1' },
694
+ },
695
+ },
696
+ allowedTools: ['mcp__photoshop__*'],
697
+ },
698
+ });
699
+ ```
700
+
634
701
  ### Environment Variables
635
702
 
636
703
  - `PHOTOSHOP_PATH`: (Optional) Specify custom Photoshop installation path
@@ -733,7 +800,8 @@ Common connection, scripting, and logging issues:
733
800
  | Symptom | Likely cause | Fix |
734
801
  |---|---|---|
735
802
  | `cli_not_found` | Claude Code / Gemini CLI not installed | `npm i -g @anthropic-ai/claude-code` or `npm i -g @google/gemini-cli` |
736
- | `not_authenticated` | No OAuth session | Run `claude auth login` or `gemini auth login` in Terminal |
803
+ | `not_authenticated` | No CLI OAuth session (API key / SDK auth does not count) | Run `claude auth login` or `gemini auth login` in Terminal, or switch to **API key** auth |
804
+ | SDK client works, UI CLI mode fails | SDK/API credentials are separate from Claude Code CLI OAuth | Use **API key** in the standalone UI, or log in with `claude auth login` for CLI account mode |
737
805
  | `claude` / `gemini` not on `PATH` | Custom install location | Settings → **CLI path** → **Check connection** |
738
806
  | Chat works in IDE but not UI (CLI mode) | OAuth tokens are CLI-only | Use **CLI account** in UI; API keys and CLI sessions are separate |
739
807
  | Gemini multi-turn feels forgetful | Headless CLI may start a fresh session each turn | Known limitation; history is prepended to the prompt (MVP) |
package/README.tr.md CHANGED
@@ -104,6 +104,26 @@ kullanır ve değişmeden çalışmaya devam eder.
104
104
  photoshop-mcp-ui [--port 5174] [--host 127.0.0.1] [--no-open]
105
105
  ```
106
106
 
107
+ ### Yerel API güvenliği
108
+
109
+ UI sunucusu sağlayıcı API anahtarlarınızı saklar ve Photoshop'u sürebilir; bu
110
+ nedenle `/api/*` makinenizde çalışan her şeye açık değildir. Her istek üç
111
+ kontrolden geçer:
112
+
113
+ 1. **Host** — sunucunun portunda loopback adresi (veya bağlandığınız `--host`)
114
+ olmalıdır. DNS rebinding saldırısını engeller.
115
+ 2. **Origin** — varsa UI'ın kendi origin'iyle eşleşmelidir. Çapraz kaynaklı
116
+ tarayıcı isteklerini engeller.
117
+ 3. **Oturum token'ı** — her başlatmada üretilen rastgele bir sır. Header'ları
118
+ taklit edebilen ama token'ı okuyamayan diğer yerel süreçleri engeller.
119
+
120
+ Tarayıcının token ile uğraşması gerekmez: sunucu token'ı servis ettiği
121
+ `index.html` içine enjekte eder. Script yazarken token'ı
122
+ `~/.photoshop-mcp/ui-session.json` (chmod 600) dosyasından okuyup `x-psmcp-token`
123
+ veya `Authorization: Bearer` header'ı olarak gönderin; ya da sunucuyu
124
+ başlatmadan önce `PSMCP_UI_TOKEN` ile kendi token'ınızı sabitleyin. Geçerli
125
+ token içermeyen istekler `401 unauthorized` alır.
126
+
107
127
  ### Notlar
108
128
 
109
129
  - Ajan yalnızca Photoshop MCP araçlarıyla sınırlıdır — dahili kabuk, dosya
@@ -608,6 +628,54 @@ Claude Desktop yapılandırmanıza ekleyin (macOS'ta `~/Library/Application Supp
608
628
  }
609
629
  ```
610
630
 
631
+ **Yapılandırma dosyasını bulamıyor musunuz?** Claude Desktop'ta **Settings → Developer → Edit Config** yolunu kullanın — kurulumunuza uygun dosyayı açar (`%APPDATA%` yolu her zaman aynı olmayabilir).
632
+
633
+ ### Claude Code için
634
+
635
+ [Claude Code CLI](https://code.claude.com/docs/en/agent-sdk/mcp) veya [Claude Agent SDK](https://code.claude.com/docs/en/agent-sdk/mcp) ile aynı MCP sunucu girdisini kullanın.
636
+
637
+ **Önerilen (CLI):**
638
+
639
+ ```bash
640
+ claude mcp add photoshop -- npx -y @alisaitteke/photoshop-mcp
641
+ ```
642
+
643
+ **Manuel JSON** — proje `.mcp.json` dosyanıza veya Claude Code MCP ayarlarınıza ekleyin ([`examples/claude-code-mcp.json`](examples/claude-code-mcp.json)):
644
+
645
+ ```json
646
+ {
647
+ "mcpServers": {
648
+ "photoshop": {
649
+ "command": "npx",
650
+ "args": ["-y", "@alisaitteke/photoshop-mcp"],
651
+ "env": {
652
+ "LOG_LEVEL": "1"
653
+ }
654
+ }
655
+ }
656
+ }
657
+ ```
658
+
659
+ **Agent SDK (TypeScript)** — `query()` seçeneklerinde aynı `mcpServers` bloğunu geçirin:
660
+
661
+ ```typescript
662
+ import { query } from '@anthropic-ai/claude-agent-sdk';
663
+
664
+ const q = query({
665
+ prompt: 'Photoshop\'ta açık belgeleri listele',
666
+ options: {
667
+ mcpServers: {
668
+ photoshop: {
669
+ command: 'npx',
670
+ args: ['-y', '@alisaitteke/photoshop-mcp'],
671
+ env: { LOG_LEVEL: '1' },
672
+ },
673
+ },
674
+ allowedTools: ['mcp__photoshop__*'],
675
+ },
676
+ });
677
+ ```
678
+
611
679
  ### Ortam Değişkenleri
612
680
 
613
681
  - `PHOTOSHOP_PATH`: (İsteğe bağlı) Özel Photoshop kurulum yolunu belirtin
@@ -717,7 +785,8 @@ Yaygın bağlantı, betik ve günlük kaydı sorunları:
717
785
  | Belirti | Olası neden | Düzeltme |
718
786
  |---|---|---|
719
787
  | `cli_not_found` | Claude Code / Gemini CLI yüklü değil | `npm i -g @anthropic-ai/claude-code` veya `npm i -g @google/gemini-cli` |
720
- | `not_authenticated` | OAuth oturumu yok | Terminal'de `claude auth login` veya `gemini auth login` çalıştırın |
788
+ | `not_authenticated` | CLI OAuth oturumu yok (API anahtarı / SDK oturumu sayılmaz) | Terminal'de `claude auth login` veya `gemini auth login` çalıştırın veya **API key** moduna geçin |
789
+ | SDK istemcisi çalışıyor, UI CLI modu başarısız | SDK/API kimlik bilgileri Claude Code CLI OAuth'tan ayrıdır | Bağımsız UI'da **API key** kullanın veya CLI hesabı için `claude auth login` çalıştırın |
721
790
  | `claude` / `gemini` `PATH`'de yok | Özel kurulum konumu | Ayarlar → **CLI path** → **Check connection** |
722
791
  | Sohbet IDE'de çalışıyor ama UI'da çalışmıyor (CLI modu) | OAuth tokenları yalnızca CLI'ya özgü | UI'da **CLI account** kullanın; API anahtarları ve CLI oturumları ayrıdır |
723
792
  | Gemini çok turlu konuşmalarda unutkanlık gösteriyor | Başsız CLI her turda yeni oturum açabilir | Bilinen kısıtlama; geçmiş isteme eklenir (MVP) |
package/README.zh-CN.md CHANGED
@@ -99,6 +99,23 @@ npx -p @alisaitteke/photoshop-mcp photoshop-mcp-ui
99
99
  photoshop-mcp-ui [--port 5174] [--host 127.0.0.1] [--no-open]
100
100
  ```
101
101
 
102
+ ### 本地 API 安全
103
+
104
+ UI 服务器保存着你的模型提供方 API 密钥,并且可以驱动 Photoshop,因此 `/api/*`
105
+ 并不对本机上运行的所有程序开放。每个请求都必须通过三项检查:
106
+
107
+ 1. **Host** — 必须是服务器端口上的回环地址(或你通过 `--host` 绑定的主机),
108
+ 用于阻止 DNS 重绑定攻击。
109
+ 2. **Origin** — 如果存在,必须与 UI 自身的来源一致,用于阻止浏览器发起的跨源
110
+ 调用。
111
+ 3. **会话令牌** — 每次启动生成的随机密钥,用于阻止其他本地进程;它们可以伪造
112
+ 任意请求头,却无法读取该令牌。
113
+
114
+ 浏览器无需处理令牌:服务器会将其注入所返回的 `index.html`。编写脚本时,请从
115
+ `~/.photoshop-mcp/ui-session.json`(chmod 600)读取令牌,并通过
116
+ `x-psmcp-token` 或 `Authorization: Bearer` 请求头发送;也可以在启动服务器前用
117
+ `PSMCP_UI_TOKEN` 指定自己的令牌。缺少有效令牌的请求会收到 `401 unauthorized`。
118
+
102
119
  ### 注意事项
103
120
 
104
121
  - 代理仅限于使用 Photoshop MCP 工具——内置的 shell、文件和网络工具已禁用。
@@ -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;AAIhD,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAS;;IAMjB,MAAM,IAAI,OAAO,CAAC,aAAa,CAAC;YA6BxB,oBAAoB;IAuBlC,OAAO,CAAC,cAAc;YAsBR,SAAS;YA2BT,qBAAqB;YAwCrB,cAAc;IActB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;CAW9D"}
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;AAIhD,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAS;;IAMjB,MAAM,IAAI,OAAO,CAAC,aAAa,CAAC;YA6BxB,oBAAoB;IAuBlC,OAAO,CAAC,cAAc;YA2BR,SAAS;YA2BT,qBAAqB;YAwCrB,cAAc;IActB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;CAW9D"}
@@ -57,12 +57,15 @@ export class MacOSDetector {
57
57
  }
58
58
  getCommonPaths() {
59
59
  const paths = [];
60
- // Generate paths for versions 2012-2025
61
- for (let year = 2025; year >= 2012; year--) {
60
+ // Generate paths from next year's release (Adobe ships "Photoshop N+1"
61
+ // in the autumn of year N) back to 2012, so new versions are found
62
+ // without a code change.
63
+ const maxYear = new Date().getFullYear() + 1;
64
+ for (let year = maxYear; year >= 2012; year--) {
62
65
  paths.push(`/Applications/Adobe Photoshop ${year}/Adobe Photoshop ${year}.app`, `/Applications/Adobe Photoshop CC ${year}/Adobe Photoshop CC ${year}.app`, `/Applications/Adobe Photoshop ${year}.app`);
63
66
  }
64
- // Also check for version-less installation
65
- paths.push('/Applications/Adobe Photoshop CC/Adobe Photoshop CC.app', '/Applications/Adobe Photoshop/Adobe Photoshop.app', '/Applications/Adobe Photoshop.app');
67
+ // Also check for version-less and beta installations
68
+ paths.push('/Applications/Adobe Photoshop CC/Adobe Photoshop CC.app', '/Applications/Adobe Photoshop/Adobe Photoshop.app', '/Applications/Adobe Photoshop.app', '/Applications/Adobe Photoshop (Beta)/Adobe Photoshop (Beta).app', '/Applications/Adobe Photoshop (Beta).app');
66
69
  return paths;
67
70
  }
68
71
  async checkPath(path) {
@@ -1 +1 @@
1
- {"version":3,"file":"macos-detector.js","sourceRoot":"","sources":["../../src/platform/macos-detector.ts"],"names":[],"mappings":"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"}
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;AAG5C,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AAElC,MAAM,OAAO,aAAa;IAChB,MAAM,CAAS;IAEvB;QACE,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,eAAe,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,MAAM;QACV,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAEpD,iCAAiC;QACjC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;QAC3C,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,+BAA+B,OAAO,EAAE,CAAC,CAAC;YAC5D,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YAC3C,IAAI,IAAI;gBAAE,OAAO,IAAI,CAAC;QACxB,CAAC;QAED,4CAA4C;QAC5C,IAAI,CAAC;YACH,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;YACxD,IAAI,aAAa;gBAAE,OAAO,aAAa,CAAC;QAC1C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;QACzD,CAAC;QAED,gCAAgC;QAChC,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAC1C,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;YAC/B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACxC,IAAI,IAAI;gBAAE,OAAO,IAAI,CAAC;QACxB,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;IAEO,KAAK,CAAC,oBAAoB;QAChC,IAAI,CAAC;YACH,kDAAkD;YAClD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAChC,2DAA2D,CAC5D,CAAC;YAEF,MAAM,IAAI,GAAG,MAAM;iBAChB,KAAK,CAAC,IAAI,CAAC;iBACX,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;iBACtD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,8CAA8C;YAErF,KAAK,MAAM,OAAO,IAAI,IAAI,EAAE,CAAC;gBAC3B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;gBAC3C,IAAI,IAAI;oBAAE,OAAO,IAAI,CAAC;YACxB,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC;QACvD,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,cAAc;QACpB,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,uEAAuE;QACvE,mEAAmE;QACnE,yBAAyB;QACzB,MAAM,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;QAC7C,KAAK,IAAI,IAAI,GAAG,OAAO,EAAE,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC;YAC9C,KAAK,CAAC,IAAI,CACR,iCAAiC,IAAI,oBAAoB,IAAI,MAAM,EACnE,oCAAoC,IAAI,uBAAuB,IAAI,MAAM,EACzE,iCAAiC,IAAI,MAAM,CAC5C,CAAC;QACJ,CAAC;QAED,qDAAqD;QACrD,KAAK,CAAC,IAAI,CACR,yDAAyD,EACzD,mDAAmD,EACnD,mCAAmC,EACnC,iEAAiE,EACjE,0CAA0C,CAC3C,CAAC;QAEF,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,KAAK,CAAC,SAAS,CAAC,IAAY;QAClC,IAAI,CAAC;YACH,gBAAgB;YAChB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YAE9B,uBAAuB;YACvB,MAAM,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;YAExC,8BAA8B;YAC9B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC;YAE5D,6BAA6B;YAC7B,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,sBAAsB,CAAC;YAE1F,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,SAAS,EAAE,CAAC,CAAC;YAErD,OAAO;gBACL,OAAO;gBACP,IAAI,EAAE,SAAS;gBACf,SAAS,EAAE,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC;gBAC/C,OAAO;aACR,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,qBAAqB,CAAC,OAAe;QACjD,IAAI,CAAC;YACH,sCAAsC;YACtC,MAAM,SAAS,GAAG,GAAG,OAAO,sBAAsB,CAAC;YAEnD,IAAI,CAAC;gBACH,MAAM,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;gBAExC,oCAAoC;gBACpC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,SAAS,CACzC,mEAAmE,SAAS,GAAG,CAChF,CAAC;gBAEF,IAAI,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;oBACnB,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC;gBACxB,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,0CAA0C;gBAC1C,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;gBAClD,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAChC,oEAAoE,CACrE,CAAC;gBAEF,IAAI,YAAY,EAAE,CAAC;oBACjB,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC;gBACzB,CAAC;YACH,CAAC;YAED,mCAAmC;YACnC,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YAC3C,IAAI,SAAS,EAAE,CAAC;gBACd,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;YACtB,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qCAAqC,EAAE,KAAK,CAAC,CAAC;QAClE,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,OAAe;QAC1C,IAAI,CAAC;YACH,6BAA6B;YAC7B,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,iBAAiB,CAAC;YAEnF,2CAA2C;YAC3C,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,aAAa,OAAO,GAAG,CAAC,CAAC;YAC5D,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;QAClC,CAAC;QAAC,MAAM,CAAC;YACP,uDAAuD;YACvD,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,OAAe;QAClC,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,GAAG,OAAO,sBAAsB,CAAC;YACnD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAChC,2DAA2D,SAAS,GAAG,CACxE,CAAC;YACF,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;QACvB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;CACF"}
@@ -1,4 +1,15 @@
1
1
  import { ScriptExecutor } from './script-executor.js';
2
+ /** Escape a string for use as a pgrep -f pattern (extended regex). */
3
+ export declare function escapeForPgrep(value: string): string;
4
+ /**
5
+ * AppleScript `with timeout of N seconds` value for a given tool timeout.
6
+ * Without this block AppleScript's default ~120s Apple-event reply timeout
7
+ * silently caps every `do javascript` call regardless of the tool timeout.
8
+ */
9
+ export declare function appleScriptTimeoutSeconds(timeoutMs: number): number;
10
+ /** Hard outer bound: osascript is SIGKILLed after this many ms. Always strictly
11
+ * above the AppleScript timeout so the clean AppleEvent error fires first. */
12
+ export declare function killTimeoutMs(timeoutMs: number): number;
2
13
  export declare class MacOSExecutor implements ScriptExecutor {
3
14
  private logger;
4
15
  private scriptQueue;
@@ -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;AAItD,qBAAa,aAAc,YAAW,cAAc;IAClD,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,WAAW,CAAqC;IACxD,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,OAAO,CAAkC;;IAMjD,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAK3B,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,MAAc,GAAG,OAAO,CAAC,OAAO,CAAC;YAuB1D,YAAY;YAqBZ,aAAa;IAmC3B,OAAO,CAAC,wBAAwB;IAWhC,OAAO,CAAC,WAAW;IAUb,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC;IAUtC,eAAe,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAuB3D;;;OAGG;IACG,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAoBhE"}
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;AAItD,sEAAsE;AACtE,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEpD;AAoBD;;;;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;IAK3B,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,MAAc,GAAG,OAAO,CAAC,OAAO,CAAC;YA+C1D,YAAY;YAwBZ,aAAa;IAyC3B,OAAO,CAAC,wBAAwB;IAsBhC,OAAO,CAAC,WAAW;IAUb,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC;IActC,eAAe,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAuB3D;;;OAGG;IACG,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAoBhE"}
@@ -7,6 +7,37 @@ 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
9
  const execAsync = promisify(exec);
10
+ /** Escape a string for use as a pgrep -f pattern (extended regex). */
11
+ export function escapeForPgrep(value) {
12
+ return value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
13
+ }
14
+ function envTruthy(name) {
15
+ const value = process.env[name]?.trim().toLowerCase();
16
+ return value === '1' || value === 'true' || value === 'yes';
17
+ }
18
+ /** Slack added to the AppleScript-side timeout beyond the tool timeout, so the
19
+ * JSX gets its full advertised budget plus Apple-event overhead. */
20
+ const APPLESCRIPT_TIMEOUT_MARGIN_SECONDS = 5;
21
+ /** Extra grace before Node SIGKILLs osascript, beyond the AppleScript timeout.
22
+ * Keeps the AppleScript timeout strictly below the hard kill so Photoshop gets
23
+ * a clean AppleEvent timeout error instead of a dead pipe. */
24
+ const KILL_GRACE_MS = 5000;
25
+ /** Extra time a task may sit in the serial queue behind other scripts before
26
+ * its caller gives up, on top of the task's own execution timeout. */
27
+ const QUEUE_WAIT_ALLOWANCE_MS = 60_000;
28
+ /**
29
+ * AppleScript `with timeout of N seconds` value for a given tool timeout.
30
+ * Without this block AppleScript's default ~120s Apple-event reply timeout
31
+ * silently caps every `do javascript` call regardless of the tool timeout.
32
+ */
33
+ export function appleScriptTimeoutSeconds(timeoutMs) {
34
+ return Math.ceil(timeoutMs / 1000) + APPLESCRIPT_TIMEOUT_MARGIN_SECONDS;
35
+ }
36
+ /** Hard outer bound: osascript is SIGKILLed after this many ms. Always strictly
37
+ * above the AppleScript timeout so the clean AppleEvent error fires first. */
38
+ export function killTimeoutMs(timeoutMs) {
39
+ return appleScriptTimeoutSeconds(timeoutMs) * 1000 + KILL_GRACE_MS;
40
+ }
10
41
  export class MacOSExecutor {
11
42
  logger;
12
43
  scriptQueue = [];
@@ -21,22 +52,40 @@ export class MacOSExecutor {
21
52
  }
22
53
  async execute(script, timeout = 30000) {
23
54
  return new Promise((resolve, reject) => {
24
- const timeoutId = setTimeout(() => {
25
- reject(new Error('Script execution timeout'));
26
- }, timeout);
27
- this.scriptQueue.push(async () => {
28
- try {
29
- const result = await this.executeScript(script);
30
- clearTimeout(timeoutId);
31
- resolve(result);
32
- return result;
33
- }
34
- catch (error) {
35
- clearTimeout(timeoutId);
36
- reject(error);
37
- throw error;
38
- }
39
- });
55
+ // Two-phase timeout. While QUEUED: a generous wait timer (timeout +
56
+ // queue allowance) rejects the caller AND marks the entry cancelled so
57
+ // it never executes later. While RUNNING: the real execution timer,
58
+ // started at dequeue so queue wait does not eat into script run time.
59
+ const entry = {
60
+ cancelled: false,
61
+ run: async () => {
62
+ clearTimeout(waitTimer);
63
+ let timedOut = false;
64
+ const execTimer = setTimeout(() => {
65
+ timedOut = true;
66
+ reject(new Error('Script execution timeout'));
67
+ }, timeout);
68
+ try {
69
+ const result = await this.executeScript(script, timeout);
70
+ clearTimeout(execTimer);
71
+ if (!timedOut) {
72
+ resolve(result);
73
+ }
74
+ }
75
+ catch (error) {
76
+ clearTimeout(execTimer);
77
+ if (!timedOut) {
78
+ reject(error);
79
+ }
80
+ throw error;
81
+ }
82
+ },
83
+ };
84
+ const waitTimer = setTimeout(() => {
85
+ entry.cancelled = true;
86
+ reject(new Error(`Script timed out after ${timeout + QUEUE_WAIT_ALLOWANCE_MS}ms waiting in the execution queue`));
87
+ }, timeout + QUEUE_WAIT_ALLOWANCE_MS);
88
+ this.scriptQueue.push(entry);
40
89
  this.processQueue();
41
90
  });
42
91
  }
@@ -47,29 +96,38 @@ export class MacOSExecutor {
47
96
  this.isProcessing = true;
48
97
  while (this.scriptQueue.length > 0) {
49
98
  const task = this.scriptQueue.shift();
50
- if (task) {
51
- try {
52
- await task();
53
- }
54
- catch (error) {
55
- this.logger.error('Script execution failed:', error);
56
- }
99
+ if (!task || task.cancelled) {
100
+ // Caller already saw a timeout for this task; running it now would
101
+ // mutate Photoshop state after the caller gave up.
102
+ continue;
103
+ }
104
+ try {
105
+ await task.run();
106
+ }
107
+ catch (error) {
108
+ this.logger.error('Script execution failed:', error);
57
109
  }
58
110
  }
59
111
  this.isProcessing = false;
60
112
  }
61
- async executeScript(script) {
113
+ async executeScript(script, timeout = 30000) {
62
114
  // For macOS, we'll use AppleScript to execute JavaScript in Photoshop
63
115
  const tempScriptPath = join(tmpdir(), `photoshop-script-${Date.now()}.jsx`);
64
116
  const tempAppleScriptPath = join(tmpdir(), `photoshop-applescript-${Date.now()}.scpt`);
65
117
  try {
66
118
  await writeFile(tempScriptPath, prefixExtendScriptBom(script), 'utf8');
67
119
  // Create AppleScript that tells Photoshop to execute the JSX
68
- const appleScript = this.createAppleScriptWrapper(tempScriptPath);
120
+ const appleScript = this.createAppleScriptWrapper(tempScriptPath, timeout);
69
121
  await writeFile(tempAppleScriptPath, appleScript, 'utf8');
70
122
  try {
71
- // Execute AppleScript via osascript
72
- const { stdout, stderr } = await execAsync(`osascript "${tempAppleScriptPath}"`);
123
+ // Execute AppleScript via osascript; the timeout must kill the child,
124
+ // otherwise abandoned osascript processes pile up behind long calls.
125
+ // The kill fires after the AppleScript-side timeout (see
126
+ // killTimeoutMs) so a clean AppleEvent timeout error comes first.
127
+ const { stdout, stderr } = await execAsync(`osascript "${tempAppleScriptPath}"`, {
128
+ timeout: killTimeoutMs(timeout),
129
+ killSignal: 'SIGKILL',
130
+ });
73
131
  if (stderr) {
74
132
  this.logger.warn('Script execution warning:', stderr);
75
133
  }
@@ -90,13 +148,22 @@ export class MacOSExecutor {
90
148
  await unlink(tempScriptPath).catch(() => { });
91
149
  }
92
150
  }
93
- createAppleScriptWrapper(jsxPath) {
151
+ createAppleScriptWrapper(jsxPath, timeoutMs = 30000) {
94
152
  // Use POSIX file path for AppleScript
95
153
  const posixPath = jsxPath.replace(/\\/g, '/');
154
+ // 'activate' steals window focus on every tool call, which makes the
155
+ // machine unusable while an agent drives Photoshop. Apple events reach
156
+ // background apps fine, so only activate when explicitly requested.
157
+ const activateLine = envTruthy('PHOTOSHOP_ACTIVATE') ? '\tactivate\n' : '';
158
+ // Without an explicit `with timeout` block, AppleScript's default ~120s
159
+ // Apple-event reply timeout caps every synchronous `do javascript` call,
160
+ // silently defeating per-tool timeouts above 120s (batch tools use 600s).
161
+ const timeoutSeconds = appleScriptTimeoutSeconds(timeoutMs);
96
162
  return `tell application "${this.appName}"
97
- \tactivate
98
- \tset jsxFile to POSIX file "${posixPath}"
99
- \tdo javascript "$.evalFile(decodeURI('${encodeURI(posixPath)}'))"
163
+ ${activateLine}\tset jsxFile to POSIX file "${posixPath}"
164
+ \twith timeout of ${timeoutSeconds} seconds
165
+ \t\tdo javascript "$.evalFile(decodeURI('${encodeURI(posixPath)}'))"
166
+ \tend timeout
100
167
  end tell`;
101
168
  }
102
169
  parseResult(output) {
@@ -108,7 +175,11 @@ end tell`;
108
175
  }
109
176
  async isPhotoshopRunning() {
110
177
  try {
111
- const { stdout } = await execAsync('pgrep -f "Adobe Photoshop"');
178
+ // Match the specific app we drive, not any Photoshop — with 2025/2026/
179
+ // Beta installed side by side, a generic match reports "running" while
180
+ // the target version is not.
181
+ const pattern = escapeForPgrep(this.appName);
182
+ const { stdout } = await execAsync(`pgrep -f "${pattern}"`);
112
183
  return stdout.trim().length > 0;
113
184
  }
114
185
  catch {
@@ -1 +1 @@
1
- {"version":3,"file":"macos-executor.js","sourceRoot":"","sources":["../../src/platform/macos-executor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"macos-executor.js","sourceRoot":"","sources":["../../src/platform/macos-executor.ts"],"names":[],"mappings":"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"}
package/dist/ui/cli.js CHANGED
@@ -3,6 +3,7 @@ import getPort from 'get-port';
3
3
  import open from 'open';
4
4
  import { capture, ensureAnalyticsIdentity, getAppVersion, identifyAnalyticsPerson, shutdownAnalytics, } from '../analytics/index.js';
5
5
  import { Logger } from '../utils/logger.js';
6
+ import { getSessionFilePath } from './security/session-token.js';
6
7
  import { startUIServer } from './server.js';
7
8
  function parseFlags(argv) {
8
9
  const flags = { host: '127.0.0.1', noOpen: false };
@@ -44,6 +45,9 @@ function printHelp() {
44
45
  ' -v, --version Show version',
45
46
  '',
46
47
  'Configuration is stored at ~/.photoshop-mcp/config.json (chmod 600).',
48
+ 'The /api/* endpoints require the session token from',
49
+ '~/.photoshop-mcp/ui-session.json (chmod 600), sent as an',
50
+ 'x-psmcp-token or Authorization: Bearer header.',
47
51
  '',
48
52
  ].join('\n'));
49
53
  }
@@ -71,7 +75,9 @@ async function main() {
71
75
  event_source: 'server',
72
76
  });
73
77
  const url = server.url;
74
- process.stdout.write(`\nPhotoshop MCP UI ready at:\n ${url}\n\n`);
78
+ process.stdout.write(`\nPhotoshop MCP UI ready at:\n ${url}\n\n` +
79
+ `The /api/* endpoints require this session's token.\n` +
80
+ ` ${getSessionFilePath()}\n\n`);
75
81
  if (!flags.noOpen) {
76
82
  try {
77
83
  await open(url);
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/ui/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/ui/cli.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../../src/ui/providers/anthropic.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAiB,MAAM,YAAY,CAAC;AAqCjE,eAAO,MAAM,gBAAgB,EAAE,eA2D9B,CAAC"}
1
+ {"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../../src/ui/providers/anthropic.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAiB,MAAM,YAAY,CAAC;AAyCjE,eAAO,MAAM,gBAAgB,EAAE,eAkE9B,CAAC"}