@alisaitteke/photoshop-mcp 1.7.5 → 1.7.7
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/AGENTS.md +1 -1
- package/README.de.md +7 -7
- package/README.es.md +6 -6
- package/README.ja.md +6 -6
- package/README.md +4 -3
- package/README.tr.md +7 -7
- package/README.zh-CN.md +6 -6
- package/dist/analytics/beta-telemetry.d.ts.map +1 -1
- package/dist/analytics/beta-telemetry.js +3 -7
- package/dist/analytics/beta-telemetry.js.map +1 -1
- package/dist/analytics/config.d.ts +5 -4
- package/dist/analytics/config.d.ts.map +1 -1
- package/dist/analytics/config.js +13 -12
- package/dist/analytics/config.js.map +1 -1
- package/dist/analytics/events.d.ts.map +1 -1
- package/dist/analytics/events.js +2 -6
- package/dist/analytics/events.js.map +1 -1
- package/dist/analytics/index.d.ts +2 -3
- package/dist/analytics/index.d.ts.map +1 -1
- package/dist/analytics/index.js +8 -12
- package/dist/analytics/index.js.map +1 -1
- package/dist/analytics/install-cohorts.d.ts +1 -1
- package/dist/analytics/install-cohorts.js +1 -1
- package/dist/analytics/mcp-session.d.ts +3 -0
- package/dist/analytics/mcp-session.d.ts.map +1 -1
- package/dist/analytics/mcp-session.js +28 -2
- package/dist/analytics/mcp-session.js.map +1 -1
- package/dist/analytics/milestones.d.ts +2 -2
- package/dist/analytics/milestones.d.ts.map +1 -1
- package/dist/analytics/milestones.js +2 -2
- package/dist/analytics/milestones.js.map +1 -1
- package/dist/analytics/provider.js +2 -2
- package/dist/analytics/provider.js.map +1 -1
- package/dist/analytics/{mixpanel-node.d.ts → rybbit-node.d.ts} +12 -7
- package/dist/analytics/rybbit-node.d.ts.map +1 -0
- package/dist/analytics/rybbit-node.js +234 -0
- package/dist/analytics/rybbit-node.js.map +1 -0
- package/dist/analytics/types.d.ts +4 -5
- package/dist/analytics/types.d.ts.map +1 -1
- package/dist/tools/recipes/remove-distraction.js +38 -26
- package/dist/tools/recipes/remove-distraction.js.map +1 -1
- package/dist/tools/recipes/sky-blend.js +37 -25
- package/dist/tools/recipes/sky-blend.js.map +1 -1
- package/dist/ui/agent/action-plan.d.ts +3 -2
- package/dist/ui/agent/action-plan.d.ts.map +1 -1
- package/dist/ui/agent/action-plan.js +78 -180
- package/dist/ui/agent/action-plan.js.map +1 -1
- package/dist/ui/agent/mcp-transport.d.ts +6 -0
- package/dist/ui/agent/mcp-transport.d.ts.map +1 -1
- package/dist/ui/agent/mcp-transport.js +19 -3
- package/dist/ui/agent/mcp-transport.js.map +1 -1
- package/dist/ui/agent/plan-schema.d.ts +39 -0
- package/dist/ui/agent/plan-schema.d.ts.map +1 -0
- package/dist/ui/agent/plan-schema.js +132 -0
- package/dist/ui/agent/plan-schema.js.map +1 -0
- package/dist/ui/agent/planner-sdk.d.ts +16 -0
- package/dist/ui/agent/planner-sdk.d.ts.map +1 -0
- package/dist/ui/agent/planner-sdk.js +37 -0
- package/dist/ui/agent/planner-sdk.js.map +1 -0
- package/dist/ui/agent/planner-submit-server.d.ts +3 -0
- package/dist/ui/agent/planner-submit-server.d.ts.map +1 -0
- package/dist/ui/agent/planner-submit-server.js +39 -0
- package/dist/ui/agent/planner-submit-server.js.map +1 -0
- package/dist/ui/agent/planner-submit.d.ts +59 -0
- package/dist/ui/agent/planner-submit.d.ts.map +1 -0
- package/dist/ui/agent/planner-submit.js +60 -0
- package/dist/ui/agent/planner-submit.js.map +1 -0
- package/dist/ui/agent/planner-subscription.d.ts +18 -0
- package/dist/ui/agent/planner-subscription.d.ts.map +1 -0
- package/dist/ui/agent/planner-subscription.js +296 -0
- package/dist/ui/agent/planner-subscription.js.map +1 -0
- package/dist/ui/agent/planner.d.ts +44 -0
- package/dist/ui/agent/planner.d.ts.map +1 -0
- package/dist/ui/agent/planner.js +22 -0
- package/dist/ui/agent/planner.js.map +1 -0
- package/dist/ui/agent.d.ts.map +1 -1
- package/dist/ui/agent.js +2 -4
- package/dist/ui/agent.js.map +1 -1
- package/dist/ui/config.d.ts +2 -3
- package/dist/ui/config.d.ts.map +1 -1
- package/dist/ui/config.js +2 -2
- package/dist/ui/config.js.map +1 -1
- package/dist/ui/providers/anthropic.d.ts.map +1 -1
- package/dist/ui/providers/anthropic.js +68 -11
- package/dist/ui/providers/anthropic.js.map +1 -1
- package/dist/ui/server.d.ts.map +1 -1
- package/dist/ui/server.js +2 -3
- package/dist/ui/server.js.map +1 -1
- package/llms.txt +6 -4
- package/package.json +9 -6
- package/scripts/prepare.mjs +23 -0
- package/web/dist/assets/index-BOj_0m8V.js +258 -0
- package/web/dist/index.html +1 -1
- package/dist/analytics/ga4-node.d.ts +0 -20
- package/dist/analytics/ga4-node.d.ts.map +0 -1
- package/dist/analytics/ga4-node.js +0 -117
- package/dist/analytics/ga4-node.js.map +0 -1
- package/dist/analytics/ga4-shared.d.ts +0 -15
- package/dist/analytics/ga4-shared.d.ts.map +0 -1
- package/dist/analytics/ga4-shared.js +0 -119
- package/dist/analytics/ga4-shared.js.map +0 -1
- package/dist/analytics/mixpanel-node.d.ts.map +0 -1
- package/dist/analytics/mixpanel-node.js +0 -95
- package/dist/analytics/mixpanel-node.js.map +0 -1
- package/dist/analytics/pageview.d.ts +0 -3
- package/dist/analytics/pageview.d.ts.map +0 -1
- package/dist/analytics/pageview.js +0 -31
- package/dist/analytics/pageview.js.map +0 -1
- package/dist/analytics/posthog-node.d.ts +0 -14
- package/dist/analytics/posthog-node.d.ts.map +0 -1
- package/dist/analytics/posthog-node.js +0 -86
- package/dist/analytics/posthog-node.js.map +0 -1
- package/web/dist/assets/index-kSYkHU5s.js +0 -258
package/AGENTS.md
CHANGED
|
@@ -115,5 +115,5 @@ More: [docs/troubleshooting.md](docs/troubleshooting.md).
|
|
|
115
115
|
## Contributing (agents editing this repo)
|
|
116
116
|
|
|
117
117
|
- Canonical language for code, comments, commits, and PRs: **English**.
|
|
118
|
-
- Before PR: `npm run lint`, `npm run build:server`, `npm run verify:photoshop-prompts`.
|
|
118
|
+
- Before PR: `npm run lint`, `npm run build:server`, `npm run verify:photoshop-prompts`, `npm run verify:pack`.
|
|
119
119
|
- Do not add AI-attribution footers to commits or PR descriptions.
|
package/README.de.md
CHANGED
|
@@ -64,8 +64,8 @@ Die Authentifizierungsmethode kann pro Anbieter in den Einstellungen gewechselt
|
|
|
64
64
|
|
|
65
65
|
### Action Plan (Beta)
|
|
66
66
|
|
|
67
|
-
Ein optionaler Ausführungsmodus in der eigenständigen Web-UI
|
|
68
|
-
(`cli_account`
|
|
67
|
+
Ein optionaler Ausführungsmodus in der eigenständigen Web-UI. Funktioniert mit **API-Schlüssel**
|
|
68
|
+
und **CLI-Konto** (`cli_account`). Aktivieren über den
|
|
69
69
|
**Action Plan**-Schalter neben der Modellauswahl im composer.
|
|
70
70
|
|
|
71
71
|
Statt einer schrittweisen ReAct-Schleife (Modell → Werkzeug → Modell → Werkzeug …) führt Action Plan Folgendes durch:
|
|
@@ -78,7 +78,7 @@ Statt einer schrittweisen ReAct-Schleife (Modell → Werkzeug → Modell → Wer
|
|
|
78
78
|
(plant nur die verbleibenden Schritte neu, bis zu 3 Mal).
|
|
79
79
|
|
|
80
80
|
Der Plan erscheint als Live-Aufgabenliste über den Tool-Aufruf-Karten mit schrittweisem
|
|
81
|
-
Status (`pending` → `running` → `done` / `error`). Pläne werden im Chatverlauf gespeichert und überleben Seitenneuladungen. Der Schalter ist standardmäßig
|
|
81
|
+
Status (`pending` → `running` → `done` / `error`). Pläne werden im Chatverlauf gespeichert und überleben Seitenneuladungen. Der Schalter ist standardmäßig aktiviert; der bestehende
|
|
82
82
|
Agenten-Fluss bleibt unverändert, wenn Action Plan deaktiviert ist.
|
|
83
83
|
|
|
84
84
|
Geeignet für mehrstufige Prompts wie *„Hintergrund entfernen und für Web exportieren"*,
|
|
@@ -564,7 +564,7 @@ Am Ende alle Pfade in einer Tabelle auflisten.
|
|
|
564
564
|
## Funktionen
|
|
565
565
|
|
|
566
566
|
- **Eigenständige Web-UI** — lokale Chat-Oberfläche (`photoshop-mcp-ui`); API-Schlüssel oder CLI-Abonnement-Authentifizierung pro Anbieter (Anthropic, Google)
|
|
567
|
-
- **Action Plan (Beta)** — opt-in Plan-dann-Ausführen-Modus in der Web-UI (
|
|
567
|
+
- **Action Plan (Beta)** — opt-in Plan-dann-Ausführen-Modus in der Web-UI (API-Schlüssel oder CLI-Konto): ein Planungsaufruf, direkte Werkzeugausführung, begrenzte Reparatur bei Fehler
|
|
568
568
|
- **Funktioniert auf Windows und macOS**
|
|
569
569
|
- **Unterstützt Photoshop 2012–2025+**
|
|
570
570
|
- **ExtendScript-API**: Universelle Kompatibilität über AppleScript/COM-Automatisierung
|
|
@@ -640,9 +640,9 @@ Zur Claude Desktop-Konfiguration hinzufügen (`~/Library/Application Support/Cla
|
|
|
640
640
|
- `LOG_LEVEL`: Protokollierungsstufe (0=DEBUG, 1=INFO, 2=WARN, 3=ERROR)
|
|
641
641
|
- `ANALYTICS_DISABLED`: Auf `1` oder `true` setzen, um anonyme Nutzungsanalysen vollständig zu deaktivieren
|
|
642
642
|
- `POSTHOG_DISABLED`: Veralteter Alias für `ANALYTICS_DISABLED`
|
|
643
|
-
- `
|
|
644
|
-
- `
|
|
645
|
-
- `
|
|
643
|
+
- `RYBBIT_API_KEY`: (Optional) Rybbit-Ingest-Schlüssel — umgeht Bot-Erkennung für Server-Events
|
|
644
|
+
- `RYBBIT_HOST`: (Optional) Rybbit-Origin (Standard: `https://hey.sideguard.io`)
|
|
645
|
+
- `RYBBIT_SITE_ID`: (Optional) Rybbit-Site-ID — Standard ist eingebettet; für Forks oder Staging überschreiben
|
|
646
646
|
|
|
647
647
|
## Verfügbare Werkzeuge
|
|
648
648
|
|
package/README.es.md
CHANGED
|
@@ -61,7 +61,7 @@ Es posible cambiar el método de autenticación por proveedor en Configuración
|
|
|
61
61
|
|
|
62
62
|
### Action Plan (beta)
|
|
63
63
|
|
|
64
|
-
Un modo de ejecución opcional en la UI web independiente
|
|
64
|
+
Un modo de ejecución opcional en la UI web independiente. Funciona con **clave de API** y **cuenta CLI** (`cli_account`). Actívelo con el interruptor **Action Plan** junto al selector de modelos en el composer.
|
|
65
65
|
|
|
66
66
|
En lugar de un bucle ReAct por paso (modelo → herramienta → modelo → herramienta …), Action Plan:
|
|
67
67
|
|
|
@@ -69,7 +69,7 @@ En lugar de un bucle ReAct por paso (modelo → herramienta → modelo → herra
|
|
|
69
69
|
2. Ejecuta esas herramientas **directamente** en secuencia — sin intercambios de modelos adicionales entre pasos.
|
|
70
70
|
3. Si un paso falla o hay una dependencia no resuelta, ejecuta un bucle de **reparación** acotado (replanifica solo los pasos restantes, hasta 3 veces).
|
|
71
71
|
|
|
72
|
-
El plan aparece como una lista de tareas en tiempo real sobre las tarjetas de llamadas a herramientas, con estado por paso (`pending` → `running` → `done` / `error`). Los planes se persisten en el historial de chat para que sobrevivan a la recarga. El interruptor está
|
|
72
|
+
El plan aparece como una lista de tareas en tiempo real sobre las tarjetas de llamadas a herramientas, con estado por paso (`pending` → `running` → `done` / `error`). Los planes se persisten en el historial de chat para que sobrevivan a la recarga. El interruptor está activado de forma predeterminada; el flujo agéntico existente no cambia cuando Action Plan está desactivado.
|
|
73
73
|
|
|
74
74
|
Ideal para prompts de varios pasos como *"eliminar el fondo y exportar para web"*, donde se desean menos llamadas al modelo y una ejecución de principio a fin más rápida.
|
|
75
75
|
|
|
@@ -519,7 +519,7 @@ Al terminar, lista todas las rutas en una tabla.
|
|
|
519
519
|
## Características
|
|
520
520
|
|
|
521
521
|
- **UI web independiente** — interfaz de chat local (`photoshop-mcp-ui`); autenticación con clave de API o suscripción CLI por proveedor (Anthropic, Google)
|
|
522
|
-
- **Action Plan (beta)** — modo opt-in de planificar-y-ejecutar en la UI web (
|
|
522
|
+
- **Action Plan (beta)** — modo opt-in de planificar-y-ejecutar en la UI web (clave de API o cuenta CLI): una llamada de planificación, ejecución directa de herramientas, reparación acotada en caso de fallo
|
|
523
523
|
- **Compatible con Windows y macOS**
|
|
524
524
|
- **Admite Photoshop 2012-2025+**
|
|
525
525
|
- **API ExtendScript**: Compatibilidad universal mediante automatización AppleScript/COM
|
|
@@ -595,9 +595,9 @@ Añada a su configuración de Claude Desktop (`~/Library/Application Support/Cla
|
|
|
595
595
|
- `LOG_LEVEL`: Nivel de registro (0=DEBUG, 1=INFO, 2=WARN, 3=ERROR)
|
|
596
596
|
- `ANALYTICS_DISABLED`: Establezca en `1` o `true` para deshabilitar completamente el análisis de uso anónimo
|
|
597
597
|
- `POSTHOG_DISABLED`: Alias heredado de `ANALYTICS_DISABLED`
|
|
598
|
-
- `
|
|
599
|
-
- `
|
|
600
|
-
- `
|
|
598
|
+
- `RYBBIT_API_KEY`: (Opcional) Clave de ingesta de Rybbit — omite la detección de bots en eventos del servidor
|
|
599
|
+
- `RYBBIT_HOST`: (Opcional) Origen de Rybbit (predeterminado: `https://hey.sideguard.io`)
|
|
600
|
+
- `RYBBIT_SITE_ID`: (Opcional) ID del sitio Rybbit — hay un valor predeterminado integrado; anule para forks o staging
|
|
601
601
|
|
|
602
602
|
## Herramientas disponibles
|
|
603
603
|
|
package/README.ja.md
CHANGED
|
@@ -61,7 +61,7 @@ npx -p @alisaitteke/photoshop-mcp photoshop-mcp-ui
|
|
|
61
61
|
|
|
62
62
|
### Action Plan (beta)
|
|
63
63
|
|
|
64
|
-
スタンドアロンWebUI
|
|
64
|
+
スタンドアロンWebUIのオプション実行モードです。**APIキー**と**CLIアカウント**(`cli_account`)の両方で使えます。composerのモデルセレクター横にある**Action Plan**トグルで有効にします。
|
|
65
65
|
|
|
66
66
|
ステップごとのReActループ(モデル → ツール → モデル → ツール …)の代わりに、Action Planは以下を行います:
|
|
67
67
|
|
|
@@ -69,7 +69,7 @@ npx -p @alisaitteke/photoshop-mcp photoshop-mcp-ui
|
|
|
69
69
|
2. それらのツールを**直接**順番に実行します(ステップ間の追加モデルラウンドトリップなし)。
|
|
70
70
|
3. ステップが失敗した場合や依存関係が未解決の場合、限定的な**修復**ループを実行します(残りのステップを最大3回再計画)。
|
|
71
71
|
|
|
72
|
-
計画はツール呼び出しカードの上にライブToDoリストとして表示され、ステップごとのステータス(`pending` → `running` → `done` / `error
|
|
72
|
+
計画はツール呼び出しカードの上にライブToDoリストとして表示され、ステップごとのステータス(`pending` → `running` → `done` / `error`)が確認できます。計画はチャット履歴に保存され、リロードしても残ります。トグルはデフォルトで有効で、Action Planを無効にしている間は既存のエージェントフローに影響しません。
|
|
73
73
|
|
|
74
74
|
*「背景を削除してWeb用にエクスポートして」*のようなモデル呼び出しを減らしてエンドツーエンドの実行を高速化したいマルチステッププロンプトに最適です。
|
|
75
75
|
|
|
@@ -521,7 +521,7 @@ batch_mockup_replace recipeを実行し、バリアントごとに1枚JPEGを~/.
|
|
|
521
521
|
## 機能
|
|
522
522
|
|
|
523
523
|
- **スタンドアロンWebUI** — ローカルチャットインターフェイス(`photoshop-mcp-ui`);プロバイダーごとにAPIキーまたはCLIサブスクリプション認証(Anthropic、Google)
|
|
524
|
-
- **Action Plan(ベータ)** — WebUIのオプトイン計画→実行モード(API
|
|
524
|
+
- **Action Plan(ベータ)** — WebUIのオプトイン計画→実行モード(APIキーまたはCLIアカウント):1回の計画呼び出し、直接ツール実行、失敗時の限定的修復
|
|
525
525
|
- **WindowsとmacOSの両方で動作**
|
|
526
526
|
- **Photoshop 2012〜2025+をサポート**
|
|
527
527
|
- **ExtendScript API**:AppleScript/COM自動化による汎用互換性
|
|
@@ -597,9 +597,9 @@ Claude Desktopの設定に追加してください(macOSは`~/Library/Applicat
|
|
|
597
597
|
- `LOG_LEVEL`:ログレベル(0=DEBUG、1=INFO、2=WARN、3=ERROR)
|
|
598
598
|
- `ANALYTICS_DISABLED`:`1`または`true`に設定して匿名使用状況の解析を完全に無効化
|
|
599
599
|
- `POSTHOG_DISABLED`:`ANALYTICS_DISABLED`の旧エイリアス
|
|
600
|
-
- `
|
|
601
|
-
- `
|
|
602
|
-
- `
|
|
600
|
+
- `RYBBIT_API_KEY`:(オプション)Rybbit ingest APIキー — サーバーイベントのボット検出をスキップ
|
|
601
|
+
- `RYBBIT_HOST`:(オプション)Rybbitオリジン(デフォルト:`https://hey.sideguard.io`)
|
|
602
|
+
- `RYBBIT_SITE_ID`:(オプション)RybbitサイトID — デフォルトが組み込まれています。フォークやステージング用に上書き可能
|
|
603
603
|
|
|
604
604
|
## 利用可能なツール
|
|
605
605
|
|
package/README.md
CHANGED
|
@@ -35,7 +35,7 @@ window. No code, no scripts, no IDE required.
|
|
|
35
35
|
- 🎨 **Color grade & more** — film looks, sky replacement, generative fill (Adobe account required)
|
|
36
36
|
- ⏪ **Stay safe** — every multi-step "recipe" is a single undo step in Photoshop
|
|
37
37
|
|
|
38
|
-
Under the hood:
|
|
38
|
+
Under the hood: 116 tools (100 atomic + 16 one-step recipes) — full list in
|
|
39
39
|
[`docs/available-tools.md`](docs/available-tools.md).
|
|
40
40
|
|
|
41
41
|
## Try saying
|
|
@@ -82,7 +82,8 @@ reuse your existing **Claude Code** / **Gemini CLI** account, no key needed.
|
|
|
82
82
|
|
|
83
83
|

|
|
84
84
|
|
|
85
|
-
Details, providers, and security notes:
|
|
85
|
+
Details, providers, Action Plan (API key or CLI account), and security notes:
|
|
86
|
+
[`docs/standalone-ui.md`](docs/standalone-ui.md).
|
|
86
87
|
|
|
87
88
|
### Option 2 — Inside your AI app (Cursor, Claude, VS Code)
|
|
88
89
|
|
|
@@ -119,7 +120,7 @@ next. Common fixes: [`docs/troubleshooting.md`](docs/troubleshooting.md).
|
|
|
119
120
|
|
|
120
121
|
## Documentation
|
|
121
122
|
|
|
122
|
-
- [Available tools](docs/available-tools.md) — all
|
|
123
|
+
- [Available tools](docs/available-tools.md) — all 116 tools with parameters
|
|
123
124
|
- [Standalone UI](docs/standalone-ui.md) — providers, auth modes, Action Plan, security
|
|
124
125
|
- [Prompt layer](docs/prompt-layer.md) — prompt templates and recipes
|
|
125
126
|
- [Architecture](docs/architecture.md) — how the bridge works under the hood
|
package/README.tr.md
CHANGED
|
@@ -62,8 +62,8 @@ Diğer kimlik bilgisini kaybetmeden sağlayıcı başına Ayarlar'dan kimlik do
|
|
|
62
62
|
|
|
63
63
|
### Action Plan (beta)
|
|
64
64
|
|
|
65
|
-
Bağımsız web UI'da
|
|
66
|
-
(`cli_account`
|
|
65
|
+
Bağımsız web UI'da isteğe bağlı bir yürütme modu; **API anahtarı** ve **CLI hesabı**
|
|
66
|
+
(`cli_account`) ile çalışır. **composer**'daki model seçicinin yanındaki
|
|
67
67
|
**Action Plan** düğmesiyle etkinleştirin.
|
|
68
68
|
|
|
69
69
|
Adım başına ReAct döngüsü (model → araç → model → araç …) yerine Action Plan:
|
|
@@ -72,7 +72,7 @@ Adım başına ReAct döngüsü (model → araç → model → araç …) yerine
|
|
|
72
72
|
2. Bu araçları **doğrudan** sırayla çalıştırır — adımlar arasında ekstra model gidiş-dönüşü olmadan.
|
|
73
73
|
3. Başarısız bir adımda veya çözümlenmemiş bağımlılıkta, sınırlı bir **onarım** döngüsü çalışır (yalnızca kalan adımları yeniden planlar, en fazla 3 kez).
|
|
74
74
|
|
|
75
|
-
Plan, araç çağrı kartlarının üzerinde adım başına durum gösteren canlı bir yapılacaklar listesi olarak görünür (`pending` → `running` → `done` / `error`). Planlar sohbet geçmişinde kalıcı olarak saklanır ve yeniden yüklemeyi atlatır. Düğme varsayılan olarak
|
|
75
|
+
Plan, araç çağrı kartlarının üzerinde adım başına durum gösteren canlı bir yapılacaklar listesi olarak görünür (`pending` → `running` → `done` / `error`). Planlar sohbet geçmişinde kalıcı olarak saklanır ve yeniden yüklemeyi atlatır. Düğme varsayılan olarak açıktır; Action Plan devre dışıyken mevcut ajantik akış değişmeden kalır.
|
|
76
76
|
|
|
77
77
|
*"arka planı kaldır ve web için dışa aktar"* gibi daha az model çağrısı ve daha hızlı uçtan uca yürütme istediğiniz çok adımlı istemler için idealdir.
|
|
78
78
|
|
|
@@ -554,7 +554,7 @@ Bitince tüm yolları bir tabloda listele.
|
|
|
554
554
|
|
|
555
555
|
- **Bağımsız web UI** — yerel sohbet arayüzü (`photoshop-mcp-ui`); sağlayıcı başına API anahtarı
|
|
556
556
|
veya CLI abonelik kimlik doğrulaması (Anthropic, Google)
|
|
557
|
-
- **Action Plan (beta)** — web UI'da isteğe bağlı plan-sonra-uygula modu (
|
|
557
|
+
- **Action Plan (beta)** — web UI'da isteğe bağlı plan-sonra-uygula modu (API anahtarı veya CLI hesabı):
|
|
558
558
|
tek bir planlama çağrısı, doğrudan araç yürütme, başarısızlıkta sınırlı onarım
|
|
559
559
|
- **Hem Windows hem macOS'ta çalışır**
|
|
560
560
|
- **Photoshop 2012–2025+ destekler**
|
|
@@ -683,9 +683,9 @@ const q = query({
|
|
|
683
683
|
- `ANALYTICS_DISABLED`: Anonim kullanım analizlerini tamamen devre dışı bırakmak için `1` veya `true`
|
|
684
684
|
olarak ayarlayın
|
|
685
685
|
- `POSTHOG_DISABLED`: `ANALYTICS_DISABLED` için eski takma ad
|
|
686
|
-
- `
|
|
687
|
-
- `
|
|
688
|
-
- `
|
|
686
|
+
- `RYBBIT_API_KEY`: (İsteğe bağlı) Rybbit ingest API anahtarı — sunucu event'lerinde bot tespitini atlar
|
|
687
|
+
- `RYBBIT_HOST`: (İsteğe bağlı) Rybbit origin (varsayılan: `https://hey.sideguard.io`)
|
|
688
|
+
- `RYBBIT_SITE_ID`: (İsteğe bağlı) Rybbit site ID — varsayılan gömülüdür; fork veya staging için geçersiz kılın
|
|
689
689
|
|
|
690
690
|
## Mevcut Araçlar
|
|
691
691
|
|
package/README.zh-CN.md
CHANGED
|
@@ -61,7 +61,7 @@ npx -p @alisaitteke/photoshop-mcp photoshop-mcp-ui
|
|
|
61
61
|
|
|
62
62
|
### Action Plan(测试版)
|
|
63
63
|
|
|
64
|
-
独立 Web UI
|
|
64
|
+
独立 Web UI 中的可选执行模式,同时支持 **API 密钥** 和 **CLI 账户**(`cli_account`)。在 composer 中的模型选择器旁边,通过 **Action Plan** 开关开启。
|
|
65
65
|
|
|
66
66
|
与逐步 ReAct 循环(模型 → 工具 → 模型 → 工具……)不同,Action Plan:
|
|
67
67
|
|
|
@@ -69,7 +69,7 @@ npx -p @alisaitteke/photoshop-mcp photoshop-mcp-ui
|
|
|
69
69
|
2. **直接**按顺序执行这些工具——步骤之间无额外的模型往返。
|
|
70
70
|
3. 若某步骤失败或存在未解决的依赖项,运行有界**修复**循环(仅重新规划剩余步骤,最多 3 次)。
|
|
71
71
|
|
|
72
|
-
计划以实时待办清单的形式显示在工具调用卡片上方,附带每步状态(`pending` → `running` → `done` / `error
|
|
72
|
+
计划以实时待办清单的形式显示在工具调用卡片上方,附带每步状态(`pending` → `running` → `done` / `error`)。计划会持久化到聊天历史中,重载后不会丢失。开关默认开启;禁用 Action Plan 时,现有的代理流程不受影响。
|
|
73
73
|
|
|
74
74
|
适合多步骤提示词,例如*"移除背景并导出为 Web 格式"*——可减少模型调用次数,加快端到端执行速度。
|
|
75
75
|
|
|
@@ -516,7 +516,7 @@ alert('Processing started!');
|
|
|
516
516
|
## 功能特性
|
|
517
517
|
|
|
518
518
|
- **独立 Web UI** — 本地聊天界面(`photoshop-mcp-ui`);每个提供商支持 API 密钥或 CLI 订阅认证(Anthropic、Google)
|
|
519
|
-
- **Action Plan(测试版)** — Web UI
|
|
519
|
+
- **Action Plan(测试版)** — Web UI 中可选的先规划后执行模式(API 密钥或 CLI 账户):一次规划调用、直接工具执行、失败时有界修复
|
|
520
520
|
- **同时支持 Windows 和 macOS**
|
|
521
521
|
- **支持 Photoshop 2012-2025+**
|
|
522
522
|
- **ExtendScript API**:通过 AppleScript/COM 自动化实现通用兼容性
|
|
@@ -592,9 +592,9 @@ npx @alisaitteke/photoshop-mcp
|
|
|
592
592
|
- `LOG_LEVEL`:日志级别(0=DEBUG,1=INFO,2=WARN,3=ERROR)
|
|
593
593
|
- `ANALYTICS_DISABLED`:设置为 `1` 或 `true` 可完全禁用匿名使用分析
|
|
594
594
|
- `POSTHOG_DISABLED`:`ANALYTICS_DISABLED` 的旧版别名
|
|
595
|
-
- `
|
|
596
|
-
- `
|
|
597
|
-
- `
|
|
595
|
+
- `RYBBIT_API_KEY`:(可选)Rybbit 采集 API 密钥 — 跳过服务端事件的机器人检测
|
|
596
|
+
- `RYBBIT_HOST`:(可选)Rybbit 源站(默认:`https://hey.sideguard.io`)
|
|
597
|
+
- `RYBBIT_SITE_ID`:(可选)Rybbit 站点 ID — 已内置默认值;可用于 fork 或预发布环境覆盖
|
|
598
598
|
|
|
599
599
|
## 可用工具
|
|
600
600
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"beta-telemetry.d.ts","sourceRoot":"","sources":["../../src/analytics/beta-telemetry.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAYD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"beta-telemetry.d.ts","sourceRoot":"","sources":["../../src/analytics/beta-telemetry.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAYD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,CA4BlE"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { isAnalyticsEnabled, isBetaTelemetryOptIn } from './identity.js';
|
|
2
2
|
import { getLaunchMethod } from './launch-method.js';
|
|
3
3
|
import { getAnalytics } from './provider.js';
|
|
4
|
-
const MAX_TEXT_LENGTH =
|
|
4
|
+
const MAX_TEXT_LENGTH = 200;
|
|
5
5
|
const TRUNCATION_SUFFIX = '…[truncated]';
|
|
6
6
|
function truncateText(value) {
|
|
7
7
|
if (!value)
|
|
@@ -18,9 +18,7 @@ export function captureBetaChatTurn(input) {
|
|
|
18
18
|
return;
|
|
19
19
|
const assistantText = input.assistantText.trim();
|
|
20
20
|
const assistantReasoning = input.assistantReasoning?.trim() ?? '';
|
|
21
|
-
const hasAssistantContent = assistantText.length > 0 ||
|
|
22
|
-
assistantReasoning.length > 0 ||
|
|
23
|
-
input.toolNames.length > 0;
|
|
21
|
+
const hasAssistantContent = assistantText.length > 0 || assistantReasoning.length > 0 || input.toolNames.length > 0;
|
|
24
22
|
if (!hasAssistantContent)
|
|
25
23
|
return;
|
|
26
24
|
const toolNames = uniqueToolNames(input.toolNames);
|
|
@@ -37,9 +35,7 @@ export function captureBetaChatTurn(input) {
|
|
|
37
35
|
model: input.model,
|
|
38
36
|
user_prompt: truncateText(input.userPrompt.trim()) ?? '',
|
|
39
37
|
assistant_text: truncateText(assistantText) ?? '',
|
|
40
|
-
...(assistantReasoning
|
|
41
|
-
? { assistant_reasoning: truncateText(assistantReasoning) }
|
|
42
|
-
: {}),
|
|
38
|
+
...(assistantReasoning ? { assistant_reasoning: truncateText(assistantReasoning) } : {}),
|
|
43
39
|
...(toolNames.length > 0 ? { tool_names: toolNames.join(',') } : {}),
|
|
44
40
|
},
|
|
45
41
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"beta-telemetry.js","sourceRoot":"","sources":["../../src/analytics/beta-telemetry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,MAAM,eAAe,GAAG,
|
|
1
|
+
{"version":3,"file":"beta-telemetry.js","sourceRoot":"","sources":["../../src/analytics/beta-telemetry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,MAAM,eAAe,GAAG,GAAG,CAAC;AAC5B,MAAM,iBAAiB,GAAG,cAAc,CAAC;AAYzC,SAAS,YAAY,CAAC,KAAyB;IAC7C,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,IAAI,KAAK,CAAC,MAAM,IAAI,eAAe;QAAE,OAAO,KAAK,CAAC;IAClD,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,eAAe,CAAC,GAAG,iBAAiB,EAAE,CAAC;AAClE,CAAC;AAED,SAAS,eAAe,CAAC,KAAe;IACtC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACxE,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,KAAwB;IAC1D,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,oBAAoB,EAAE;QAAE,OAAO;IAE7D,MAAM,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;IACjD,MAAM,kBAAkB,GAAG,KAAK,CAAC,kBAAkB,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAClE,MAAM,mBAAmB,GACvB,aAAa,CAAC,MAAM,GAAG,CAAC,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;IAC1F,IAAI,CAAC,mBAAmB;QAAE,OAAO;IAEjC,MAAM,SAAS,GAAG,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAEnD,YAAY,EAAE,CAAC,OAAO,CAAC;QACrB,IAAI,EAAE,gBAAgB;QACtB,UAAU,EAAE;YACV,EAAE,EAAE,OAAO,CAAC,QAAQ;YACpB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,YAAY,EAAE,OAAO,CAAC,OAAO;YAC7B,aAAa,EAAE,eAAe,EAAE;YAChC,YAAY,EAAE,QAAQ;YACtB,WAAW,EAAE,KAAK,CAAC,UAAU;YAC7B,WAAW,EAAE,KAAK,CAAC,UAAU;YAC7B,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,WAAW,EAAE,YAAY,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE;YACxD,cAAc,EAAE,YAAY,CAAC,aAAa,CAAC,IAAI,EAAE;YACjD,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,mBAAmB,EAAE,YAAY,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACxF,GAAG,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACrE;KACF,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
/** Legacy alias for ANALYTICS_DISABLED. */
|
|
1
2
|
export declare function isPostHogDisabledByEnv(): boolean;
|
|
2
3
|
export declare function isAnalyticsDisabledByEnv(): boolean;
|
|
3
|
-
export declare function
|
|
4
|
-
export declare function
|
|
5
|
-
export declare function
|
|
6
|
-
export declare function
|
|
4
|
+
export declare function resolveRybbitHost(): string;
|
|
5
|
+
export declare function resolveRybbitAnalyticsHost(): string;
|
|
6
|
+
export declare function resolveRybbitSiteId(): string;
|
|
7
|
+
export declare function resolveRybbitApiKey(): string | undefined;
|
|
7
8
|
export declare function hasAnalyticsKey(): boolean;
|
|
8
9
|
//# sourceMappingURL=config.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/analytics/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/analytics/config.ts"],"names":[],"mappings":"AAQA,2CAA2C;AAC3C,wBAAgB,sBAAsB,IAAI,OAAO,CAEhD;AAED,wBAAgB,wBAAwB,IAAI,OAAO,CAElD;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED,wBAAgB,0BAA0B,IAAI,MAAM,CAEnD;AAED,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAED,wBAAgB,mBAAmB,IAAI,MAAM,GAAG,SAAS,CAGxD;AAED,wBAAgB,eAAe,IAAI,OAAO,CAEzC"}
|
package/dist/analytics/config.js
CHANGED
|
@@ -1,29 +1,30 @@
|
|
|
1
|
-
const
|
|
2
|
-
const
|
|
3
|
-
const DEFAULT_UI_HOST = 'https://eu.posthog.com';
|
|
1
|
+
const DEFAULT_RYBBIT_HOST = 'https://hey.sideguard.io';
|
|
2
|
+
const DEFAULT_RYBBIT_SITE_ID = '5e488c650441';
|
|
4
3
|
function envTruthy(name) {
|
|
5
4
|
const value = process.env[name]?.trim().toLowerCase();
|
|
6
5
|
return value === '1' || value === 'true' || value === 'yes';
|
|
7
6
|
}
|
|
7
|
+
/** Legacy alias for ANALYTICS_DISABLED. */
|
|
8
8
|
export function isPostHogDisabledByEnv() {
|
|
9
9
|
return envTruthy('POSTHOG_DISABLED');
|
|
10
10
|
}
|
|
11
11
|
export function isAnalyticsDisabledByEnv() {
|
|
12
12
|
return envTruthy('ANALYTICS_DISABLED') || isPostHogDisabledByEnv();
|
|
13
13
|
}
|
|
14
|
-
export function
|
|
15
|
-
return process.env.
|
|
14
|
+
export function resolveRybbitHost() {
|
|
15
|
+
return (process.env.RYBBIT_HOST?.trim() || DEFAULT_RYBBIT_HOST).replace(/\/$/, '');
|
|
16
16
|
}
|
|
17
|
-
export function
|
|
18
|
-
return
|
|
17
|
+
export function resolveRybbitAnalyticsHost() {
|
|
18
|
+
return `${resolveRybbitHost()}/api`;
|
|
19
19
|
}
|
|
20
|
-
export function
|
|
21
|
-
return process.env.
|
|
20
|
+
export function resolveRybbitSiteId() {
|
|
21
|
+
return process.env.RYBBIT_SITE_ID?.trim() || DEFAULT_RYBBIT_SITE_ID;
|
|
22
22
|
}
|
|
23
|
-
export function
|
|
24
|
-
|
|
23
|
+
export function resolveRybbitApiKey() {
|
|
24
|
+
const key = process.env.RYBBIT_API_KEY?.trim();
|
|
25
|
+
return key || undefined;
|
|
25
26
|
}
|
|
26
27
|
export function hasAnalyticsKey() {
|
|
27
|
-
return
|
|
28
|
+
return resolveRybbitSiteId().length > 0;
|
|
28
29
|
}
|
|
29
30
|
//# sourceMappingURL=config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/analytics/config.ts"],"names":[],"mappings":"AAAA,MAAM,mBAAmB,GAAG,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/analytics/config.ts"],"names":[],"mappings":"AAAA,MAAM,mBAAmB,GAAG,0BAA0B,CAAC;AACvD,MAAM,sBAAsB,GAAG,cAAc,CAAC;AAE9C,SAAS,SAAS,CAAC,IAAY;IAC7B,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACtD,OAAO,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,KAAK,CAAC;AAC9D,CAAC;AAED,2CAA2C;AAC3C,MAAM,UAAU,sBAAsB;IACpC,OAAO,SAAS,CAAC,kBAAkB,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,wBAAwB;IACtC,OAAO,SAAS,CAAC,oBAAoB,CAAC,IAAI,sBAAsB,EAAE,CAAC;AACrE,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,mBAAmB,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AACrF,CAAC;AAED,MAAM,UAAU,0BAA0B;IACxC,OAAO,GAAG,iBAAiB,EAAE,MAAM,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,OAAO,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,EAAE,IAAI,sBAAsB,CAAC;AACtE,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC;IAC/C,OAAO,GAAG,IAAI,SAAS,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,OAAO,mBAAmB,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;AAC1C,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/analytics/events.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/analytics/events.ts"],"names":[],"mappings":"AA6GA,wBAAgB,2BAA2B,CACzC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAC9C,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,EAAE,CAAC,CAsBtD;AAED,gFAAgF;AAChF,wBAAgB,4BAA4B,CAC1C,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAC9C,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAa3C;AAED,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAC9C,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,EAAE,CAAC,CAOtD;AAED,4FAA4F;AAC5F,wBAAgB,6BAA6B,CAC3C,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACnC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAc3C"}
|
package/dist/analytics/events.js
CHANGED
|
@@ -86,13 +86,9 @@ const ALLOWED_PROPERTY_KEYS = new Set([
|
|
|
86
86
|
'model',
|
|
87
87
|
'last_active_at',
|
|
88
88
|
]);
|
|
89
|
-
const ANALYTICS_RESERVED_PROPERTY_KEYS = new Set([
|
|
90
|
-
'$current_url',
|
|
91
|
-
'$pathname',
|
|
92
|
-
'$screen_name',
|
|
93
|
-
]);
|
|
89
|
+
const ANALYTICS_RESERVED_PROPERTY_KEYS = new Set(['$current_url', '$pathname', '$screen_name']);
|
|
94
90
|
const ARRAY_PROPERTY_KEYS = new Set(['tools_used', 'error_codes']);
|
|
95
|
-
/** Install-cohort fields written via
|
|
91
|
+
/** Install-cohort fields written via identify traits only when not already set. */
|
|
96
92
|
const PERSON_ONCE_PROPERTY_KEYS = new Set([
|
|
97
93
|
'first_install_at',
|
|
98
94
|
'first_usage_surface',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/analytics/events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAE9F,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAC;IACpC,SAAS;IACT,QAAQ;IACR,KAAK;IACL,OAAO;IACP,QAAQ;IACR,UAAU;IACV,OAAO;IACP,eAAe;IACf,UAAU;IACV,MAAM;IACN,WAAW;IACX,UAAU;IACV,SAAS;IACT,SAAS;IACT,QAAQ;IACR,SAAS;IACT,YAAY;CACb,CAAC,CAAC;AAEH,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAC;IACpC,aAAa;IACb,IAAI;IACJ,MAAM;IACN,cAAc;IACd,aAAa;IACb,aAAa;IACb,IAAI;IACJ,YAAY;IACZ,oBAAoB;IACpB,qBAAqB;IACrB,qBAAqB;IACrB,cAAc;IACd,MAAM;IACN,MAAM;IACN,SAAS;IACT,UAAU;IACV,iBAAiB;IACjB,WAAW;IACX,UAAU;IACV,cAAc;IACd,mBAAmB;IACnB,uBAAuB;IACvB,OAAO;IACP,eAAe;IACf,kBAAkB;IAClB,kBAAkB;IAClB,uBAAuB;IACvB,eAAe;IACf,sBAAsB;IACtB,wBAAwB;IACxB,iBAAiB;IACjB,SAAS;IACT,YAAY;IACZ,WAAW;IACX,WAAW;IACX,cAAc;IACd,mBAAmB;IACnB,YAAY;IACZ,aAAa;IACb,2BAA2B;IAC3B,4BAA4B;IAC5B,WAAW;IACX,aAAa;IACb,eAAe;IACf,iBAAiB;IACjB,wBAAwB;IACxB,aAAa;IACb,oBAAoB;IACpB,mBAAmB;IACnB,oBAAoB;IACpB,oBAAoB;IACpB,qBAAqB;IACrB,YAAY;IACZ,aAAa;IACb,YAAY;IACZ,oBAAoB;IACpB,iBAAiB;IACjB,oBAAoB;IACpB,0BAA0B;IAC1B,gBAAgB;IAChB,iBAAiB;IACjB,cAAc;IACd,OAAO;IACP,gBAAgB;CACjB,CAAC,CAAC;AAEH,MAAM,gCAAgC,GAAG,IAAI,GAAG,CAAC
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/analytics/events.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,8 +2,7 @@ import { captureBetaChatTurn } from './beta-telemetry.js';
|
|
|
2
2
|
import { getAppVersion } from './app-version.js';
|
|
3
3
|
import { getBetaTelemetryState, setBetaTelemetryChoice } from './identity.js';
|
|
4
4
|
import { onMcpClientConnected, onMcpClientDisconnected } from './mcp-client.js';
|
|
5
|
-
import { endMcpAnalyticsSession, recordMcpToolCall, startMcpAnalyticsSession } from './mcp-session.js';
|
|
6
|
-
import { captureMcpPageleave, captureMcpPageview } from './pageview.js';
|
|
5
|
+
import { captureMcpPageleave, captureMcpPageview, endMcpAnalyticsSession, recordMcpToolCall, startMcpAnalyticsSession } from './mcp-session.js';
|
|
7
6
|
import { getAnalytics, resetAnalyticsProvider } from './provider.js';
|
|
8
7
|
import type { AnalyticsEvent, AnalyticsProvider, AnalyticsRuntimeConfig, BetaTelemetryState, UsageSurface } from './types.js';
|
|
9
8
|
export type { McpShutdownReason } from './mcp-session.js';
|
|
@@ -19,7 +18,7 @@ export declare function identifyPhotoshopVersion(version: string): void;
|
|
|
19
18
|
export declare function identifyUiModelSelection(providerId: string, model: string): void;
|
|
20
19
|
export declare function shutdownAnalytics(): Promise<void>;
|
|
21
20
|
export declare function getAnalyticsRuntimeConfig(): AnalyticsRuntimeConfig;
|
|
22
|
-
export { captureAnalyticsMilestoneOnce
|
|
21
|
+
export { captureAnalyticsMilestoneOnce } from './milestones.js';
|
|
23
22
|
export type { AnalyticsMilestone } from './milestones.js';
|
|
24
23
|
export { captureBetaChatTurn, captureMcpPageleave, captureMcpPageview, endMcpAnalyticsSession, getAnalytics, getAppVersion, getBetaTelemetryState, onMcpClientConnected, onMcpClientDisconnected, recordMcpToolCall, resetAnalyticsProvider, setBetaTelemetryChoice, startMcpAnalyticsSession, };
|
|
25
24
|
export type { AnalyticsEvent, AnalyticsProvider, AnalyticsRuntimeConfig, BetaTelemetryState, UsageSurface, };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/analytics/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/analytics/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAIjD,OAAO,EACL,qBAAqB,EAIrB,sBAAsB,EACvB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAChF,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,sBAAsB,EACtB,iBAAiB,EACjB,wBAAwB,EACzB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAA2B,MAAM,eAAe,CAAC;AAC9F,OAAO,KAAK,EACV,cAAc,EACd,iBAAiB,EACjB,sBAAsB,EACtB,kBAAkB,EAClB,YAAY,EACb,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE1D,sFAAsF;AACtF,wBAAgB,uBAAuB,IAAI,IAAI,CAI9C;AAED,wBAAgB,OAAO,CACrB,IAAI,EAAE,MAAM,EACZ,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACpC,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAC9B,IAAI,CAON;AAED,wBAAgB,uBAAuB,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAalF;AAED,iFAAiF;AACjF,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAG9D;AAED,4FAA4F;AAC5F,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAYhF;AAED,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAEvD;AAED,wBAAgB,yBAAyB,IAAI,sBAAsB,CAYlE;AACD,OAAO,EAAE,6BAA6B,EAAE,MAAM,iBAAiB,CAAC;AAChE,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,sBAAsB,EACtB,YAAY,EACZ,aAAa,EACb,qBAAqB,EACrB,oBAAoB,EACpB,uBAAuB,EACvB,iBAAiB,EACjB,sBAAsB,EACtB,sBAAsB,EACtB,wBAAwB,GACzB,CAAC;AACF,YAAY,EACV,cAAc,EACd,iBAAiB,EACjB,sBAAsB,EACtB,kBAAkB,EAClB,YAAY,GACb,CAAC"}
|
package/dist/analytics/index.js
CHANGED
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import { captureBetaChatTurn } from './beta-telemetry.js';
|
|
2
2
|
import { getAppVersion } from './app-version.js';
|
|
3
|
-
import { hasAnalyticsKey,
|
|
3
|
+
import { hasAnalyticsKey, resolveRybbitAnalyticsHost, resolveRybbitSiteId } from './config.js';
|
|
4
4
|
import { buildPersonIdentifyProperties, buildRuntimeProperties } from './events.js';
|
|
5
5
|
import { applyInstallCohortPersonOnce } from './install-cohorts.js';
|
|
6
6
|
import { getBetaTelemetryState, getOrCreateDistinctId, isAnalyticsEnabled, recordUsageSurface, setBetaTelemetryChoice, } from './identity.js';
|
|
7
|
-
import { onMcpClientConnected, onMcpClientDisconnected
|
|
8
|
-
import { endMcpAnalyticsSession, recordMcpToolCall, startMcpAnalyticsSession, } from './mcp-session.js';
|
|
9
|
-
import { captureMcpPageleave, captureMcpPageview } from './pageview.js';
|
|
7
|
+
import { onMcpClientConnected, onMcpClientDisconnected } from './mcp-client.js';
|
|
8
|
+
import { captureMcpPageleave, captureMcpPageview, endMcpAnalyticsSession, recordMcpToolCall, startMcpAnalyticsSession, } from './mcp-session.js';
|
|
10
9
|
import { getAnalytics, resetAnalyticsProvider, shutdownAnalyticsClient } from './provider.js';
|
|
11
10
|
/** Persist the install ID and register one anonymous analytics person per process. */
|
|
12
11
|
export function ensureAnalyticsIdentity() {
|
|
@@ -35,9 +34,7 @@ export function identifyAnalyticsPerson(properties) {
|
|
|
35
34
|
}
|
|
36
35
|
applyInstallCohortPersonOnce({
|
|
37
36
|
...(usageSurface ? { usageSurface } : {}),
|
|
38
|
-
...(typeof props.mcp_client_name === 'string'
|
|
39
|
-
? { mcpClientName: props.mcp_client_name }
|
|
40
|
-
: {}),
|
|
37
|
+
...(typeof props.mcp_client_name === 'string' ? { mcpClientName: props.mcp_client_name } : {}),
|
|
41
38
|
});
|
|
42
39
|
getAnalytics().identify(buildPersonIdentifyProperties(props));
|
|
43
40
|
}
|
|
@@ -69,15 +66,14 @@ export function getAnalyticsRuntimeConfig() {
|
|
|
69
66
|
const beta = getBetaTelemetryState();
|
|
70
67
|
return {
|
|
71
68
|
enabled,
|
|
72
|
-
provider: '
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
uiHost: resolvePostHogUiHost(),
|
|
69
|
+
provider: 'rybbit',
|
|
70
|
+
siteId: resolveRybbitSiteId(),
|
|
71
|
+
analyticsHost: resolveRybbitAnalyticsHost(),
|
|
76
72
|
distinctId: getOrCreateDistinctId(),
|
|
77
73
|
betaTelemetryOptIn: beta.betaTelemetryOptIn,
|
|
78
74
|
betaTelemetryPromptAnswered: beta.betaTelemetryPromptAnswered,
|
|
79
75
|
};
|
|
80
76
|
}
|
|
81
|
-
export { captureAnalyticsMilestoneOnce
|
|
77
|
+
export { captureAnalyticsMilestoneOnce } from './milestones.js';
|
|
82
78
|
export { captureBetaChatTurn, captureMcpPageleave, captureMcpPageview, endMcpAnalyticsSession, getAnalytics, getAppVersion, getBetaTelemetryState, onMcpClientConnected, onMcpClientDisconnected, recordMcpToolCall, resetAnalyticsProvider, setBetaTelemetryChoice, startMcpAnalyticsSession, };
|
|
83
79
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/analytics/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/analytics/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ export type InstallUsageSurface = 'mcp' | 'server' | 'web';
|
|
|
2
2
|
/** Maps internal usage_surface values to install-cohort person properties. */
|
|
3
3
|
export declare function normalizeInstallUsageSurface(surface: string): InstallUsageSurface;
|
|
4
4
|
/**
|
|
5
|
-
*
|
|
5
|
+
* Install-cohort fields — safe to call repeatedly.
|
|
6
6
|
* See docs/anonymous-usage-analytics.md (person profile cohorts).
|
|
7
7
|
*/
|
|
8
8
|
export declare function applyInstallCohortPersonOnce(params: {
|
|
@@ -10,7 +10,7 @@ export function normalizeInstallUsageSurface(surface) {
|
|
|
10
10
|
return 'server';
|
|
11
11
|
}
|
|
12
12
|
/**
|
|
13
|
-
*
|
|
13
|
+
* Install-cohort fields — safe to call repeatedly.
|
|
14
14
|
* See docs/anonymous-usage-analytics.md (person profile cohorts).
|
|
15
15
|
*/
|
|
16
16
|
export function applyInstallCohortPersonOnce(params) {
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
export type McpShutdownReason = 'sigint' | 'sigterm' | 'error' | 'stdio_closed';
|
|
2
2
|
export type McpToolBatchFlushReason = 'debounce' | 'max_hold' | 'shutdown' | 'client_disconnect';
|
|
3
|
+
/** Virtual /mcp hit so MCP-only installs show up next to UI traffic. */
|
|
4
|
+
export declare function captureMcpPageview(): void;
|
|
5
|
+
export declare function captureMcpPageleave(durationMs: number, reason: string): void;
|
|
3
6
|
export declare function flushMcpToolBatch(reason: McpToolBatchFlushReason): void;
|
|
4
7
|
export declare function startMcpAnalyticsSession(): void;
|
|
5
8
|
export declare function recordMcpToolCall(params: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-session.d.ts","sourceRoot":"","sources":["../../src/analytics/mcp-session.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mcp-session.d.ts","sourceRoot":"","sources":["../../src/analytics/mcp-session.ts"],"names":[],"mappings":"AASA,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,cAAc,CAAC;AAChF,MAAM,MAAM,uBAAuB,GAAG,UAAU,GAAG,UAAU,GAAG,UAAU,GAAG,mBAAmB,CAAC;AAyCjG,wEAAwE;AACxE,wBAAgB,kBAAkB,IAAI,IAAI,CAOzC;AAED,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAQ5E;AAwDD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,uBAAuB,GAAG,IAAI,CAoCvE;AAmBD,wBAAgB,wBAAwB,IAAI,IAAI,CAE/C;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,EAAE,EAAE,OAAO,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB,GAAG,IAAI,CA2BP;AAED,wBAAgB,mCAAmC,IAAI,IAAI,CAE1D;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI,CActE"}
|
|
@@ -3,13 +3,13 @@ import { buildRuntimeProperties } from './events.js';
|
|
|
3
3
|
import { isAnalyticsEnabled } from './identity.js';
|
|
4
4
|
import { getActiveMcpClient } from './mcp-client-state.js';
|
|
5
5
|
import { captureAnalyticsMilestoneOnce } from './milestones.js';
|
|
6
|
-
import { captureMcpPageleave } from './pageview.js';
|
|
7
6
|
import { flushAnalyticsClient, getAnalytics } from './provider.js';
|
|
7
|
+
const MCP_VIRTUAL_URL = 'photoshop-mcp://mcp';
|
|
8
8
|
/** Flush after the last tool in a burst — fits IDE agent turns (LLM pauses between bursts). */
|
|
9
9
|
const DEBOUNCE_FLUSH_MS = 3_000;
|
|
10
10
|
/** Force flush during long uninterrupted tool chains (no debounce gap). */
|
|
11
11
|
const MAX_BATCH_HOLD_MS = 60_000;
|
|
12
|
-
const MAX_SUMMARY_LENGTH =
|
|
12
|
+
const MAX_SUMMARY_LENGTH = 800;
|
|
13
13
|
let startedAt = null;
|
|
14
14
|
let toolBatch = new Map();
|
|
15
15
|
let debounceFlushTimer = null;
|
|
@@ -27,6 +27,32 @@ function captureMcpEvent(name, properties) {
|
|
|
27
27
|
}),
|
|
28
28
|
});
|
|
29
29
|
}
|
|
30
|
+
function capturePageEvent(name, properties) {
|
|
31
|
+
if (!isAnalyticsEnabled() || !hasAnalyticsKey())
|
|
32
|
+
return;
|
|
33
|
+
getAnalytics().capture({
|
|
34
|
+
name,
|
|
35
|
+
properties: buildRuntimeProperties(properties),
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
/** Virtual /mcp hit so MCP-only installs show up next to UI traffic. */
|
|
39
|
+
export function captureMcpPageview() {
|
|
40
|
+
capturePageEvent('$pageview', {
|
|
41
|
+
$current_url: MCP_VIRTUAL_URL,
|
|
42
|
+
$pathname: '/mcp',
|
|
43
|
+
usage_surface: 'mcp',
|
|
44
|
+
event_source: 'mcp',
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
export function captureMcpPageleave(durationMs, reason) {
|
|
48
|
+
capturePageEvent('$pageleave', {
|
|
49
|
+
$current_url: MCP_VIRTUAL_URL,
|
|
50
|
+
duration_ms: durationMs,
|
|
51
|
+
shutdown_reason: reason,
|
|
52
|
+
usage_surface: 'mcp',
|
|
53
|
+
event_source: 'mcp',
|
|
54
|
+
});
|
|
55
|
+
}
|
|
30
56
|
function clearDebounceFlushTimer() {
|
|
31
57
|
if (!debounceFlushTimer)
|
|
32
58
|
return;
|