@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.
Files changed (113) hide show
  1. package/AGENTS.md +1 -1
  2. package/README.de.md +7 -7
  3. package/README.es.md +6 -6
  4. package/README.ja.md +6 -6
  5. package/README.md +4 -3
  6. package/README.tr.md +7 -7
  7. package/README.zh-CN.md +6 -6
  8. package/dist/analytics/beta-telemetry.d.ts.map +1 -1
  9. package/dist/analytics/beta-telemetry.js +3 -7
  10. package/dist/analytics/beta-telemetry.js.map +1 -1
  11. package/dist/analytics/config.d.ts +5 -4
  12. package/dist/analytics/config.d.ts.map +1 -1
  13. package/dist/analytics/config.js +13 -12
  14. package/dist/analytics/config.js.map +1 -1
  15. package/dist/analytics/events.d.ts.map +1 -1
  16. package/dist/analytics/events.js +2 -6
  17. package/dist/analytics/events.js.map +1 -1
  18. package/dist/analytics/index.d.ts +2 -3
  19. package/dist/analytics/index.d.ts.map +1 -1
  20. package/dist/analytics/index.js +8 -12
  21. package/dist/analytics/index.js.map +1 -1
  22. package/dist/analytics/install-cohorts.d.ts +1 -1
  23. package/dist/analytics/install-cohorts.js +1 -1
  24. package/dist/analytics/mcp-session.d.ts +3 -0
  25. package/dist/analytics/mcp-session.d.ts.map +1 -1
  26. package/dist/analytics/mcp-session.js +28 -2
  27. package/dist/analytics/mcp-session.js.map +1 -1
  28. package/dist/analytics/milestones.d.ts +2 -2
  29. package/dist/analytics/milestones.d.ts.map +1 -1
  30. package/dist/analytics/milestones.js +2 -2
  31. package/dist/analytics/milestones.js.map +1 -1
  32. package/dist/analytics/provider.js +2 -2
  33. package/dist/analytics/provider.js.map +1 -1
  34. package/dist/analytics/{mixpanel-node.d.ts → rybbit-node.d.ts} +12 -7
  35. package/dist/analytics/rybbit-node.d.ts.map +1 -0
  36. package/dist/analytics/rybbit-node.js +234 -0
  37. package/dist/analytics/rybbit-node.js.map +1 -0
  38. package/dist/analytics/types.d.ts +4 -5
  39. package/dist/analytics/types.d.ts.map +1 -1
  40. package/dist/tools/recipes/remove-distraction.js +38 -26
  41. package/dist/tools/recipes/remove-distraction.js.map +1 -1
  42. package/dist/tools/recipes/sky-blend.js +37 -25
  43. package/dist/tools/recipes/sky-blend.js.map +1 -1
  44. package/dist/ui/agent/action-plan.d.ts +3 -2
  45. package/dist/ui/agent/action-plan.d.ts.map +1 -1
  46. package/dist/ui/agent/action-plan.js +78 -180
  47. package/dist/ui/agent/action-plan.js.map +1 -1
  48. package/dist/ui/agent/mcp-transport.d.ts +6 -0
  49. package/dist/ui/agent/mcp-transport.d.ts.map +1 -1
  50. package/dist/ui/agent/mcp-transport.js +19 -3
  51. package/dist/ui/agent/mcp-transport.js.map +1 -1
  52. package/dist/ui/agent/plan-schema.d.ts +39 -0
  53. package/dist/ui/agent/plan-schema.d.ts.map +1 -0
  54. package/dist/ui/agent/plan-schema.js +132 -0
  55. package/dist/ui/agent/plan-schema.js.map +1 -0
  56. package/dist/ui/agent/planner-sdk.d.ts +16 -0
  57. package/dist/ui/agent/planner-sdk.d.ts.map +1 -0
  58. package/dist/ui/agent/planner-sdk.js +37 -0
  59. package/dist/ui/agent/planner-sdk.js.map +1 -0
  60. package/dist/ui/agent/planner-submit-server.d.ts +3 -0
  61. package/dist/ui/agent/planner-submit-server.d.ts.map +1 -0
  62. package/dist/ui/agent/planner-submit-server.js +39 -0
  63. package/dist/ui/agent/planner-submit-server.js.map +1 -0
  64. package/dist/ui/agent/planner-submit.d.ts +59 -0
  65. package/dist/ui/agent/planner-submit.d.ts.map +1 -0
  66. package/dist/ui/agent/planner-submit.js +60 -0
  67. package/dist/ui/agent/planner-submit.js.map +1 -0
  68. package/dist/ui/agent/planner-subscription.d.ts +18 -0
  69. package/dist/ui/agent/planner-subscription.d.ts.map +1 -0
  70. package/dist/ui/agent/planner-subscription.js +296 -0
  71. package/dist/ui/agent/planner-subscription.js.map +1 -0
  72. package/dist/ui/agent/planner.d.ts +44 -0
  73. package/dist/ui/agent/planner.d.ts.map +1 -0
  74. package/dist/ui/agent/planner.js +22 -0
  75. package/dist/ui/agent/planner.js.map +1 -0
  76. package/dist/ui/agent.d.ts.map +1 -1
  77. package/dist/ui/agent.js +2 -4
  78. package/dist/ui/agent.js.map +1 -1
  79. package/dist/ui/config.d.ts +2 -3
  80. package/dist/ui/config.d.ts.map +1 -1
  81. package/dist/ui/config.js +2 -2
  82. package/dist/ui/config.js.map +1 -1
  83. package/dist/ui/providers/anthropic.d.ts.map +1 -1
  84. package/dist/ui/providers/anthropic.js +68 -11
  85. package/dist/ui/providers/anthropic.js.map +1 -1
  86. package/dist/ui/server.d.ts.map +1 -1
  87. package/dist/ui/server.js +2 -3
  88. package/dist/ui/server.js.map +1 -1
  89. package/llms.txt +6 -4
  90. package/package.json +9 -6
  91. package/scripts/prepare.mjs +23 -0
  92. package/web/dist/assets/index-BOj_0m8V.js +258 -0
  93. package/web/dist/index.html +1 -1
  94. package/dist/analytics/ga4-node.d.ts +0 -20
  95. package/dist/analytics/ga4-node.d.ts.map +0 -1
  96. package/dist/analytics/ga4-node.js +0 -117
  97. package/dist/analytics/ga4-node.js.map +0 -1
  98. package/dist/analytics/ga4-shared.d.ts +0 -15
  99. package/dist/analytics/ga4-shared.d.ts.map +0 -1
  100. package/dist/analytics/ga4-shared.js +0 -119
  101. package/dist/analytics/ga4-shared.js.map +0 -1
  102. package/dist/analytics/mixpanel-node.d.ts.map +0 -1
  103. package/dist/analytics/mixpanel-node.js +0 -95
  104. package/dist/analytics/mixpanel-node.js.map +0 -1
  105. package/dist/analytics/pageview.d.ts +0 -3
  106. package/dist/analytics/pageview.d.ts.map +0 -1
  107. package/dist/analytics/pageview.js +0 -31
  108. package/dist/analytics/pageview.js.map +0 -1
  109. package/dist/analytics/posthog-node.d.ts +0 -14
  110. package/dist/analytics/posthog-node.d.ts.map +0 -1
  111. package/dist/analytics/posthog-node.js +0 -86
  112. package/dist/analytics/posthog-node.js.map +0 -1
  113. 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 **nur für API-Schlüssel-Authentifizierung**
68
- (`cli_account` verwendet immer den Standard-Agenten-Fluss). Aktivieren über den
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 deaktiviert; der bestehende
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 (nur API-Schlüssel): ein Planungsaufruf, direkte Werkzeugausführung, begrenzte Reparatur bei Fehler
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
- - `POSTHOG_KEY`: (Optional) PostHog-Projekt-Schlüssel — Standard ist eingebettet; für Forks oder Staging überschreiben
644
- - `POSTHOG_API_HOST`: (Optional) PostHog-Ingest-Host (Standard: `https://a.alisait.com`)
645
- - `POSTHOG_UI_HOST`: (Optional) PostHog-UI-Host (Standard: `https://eu.posthog.com`)
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 solo para **autenticación con clave de API** (`cli_account` siempre usa el flujo agéntico predeterminado). Actívelo con el interruptor **Action Plan** junto al selector de modelos en el composer.
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á desactivado de forma predeterminada; el flujo agéntico existente no cambia cuando Action Plan está desactivado.
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 (solo clave de API): una llamada de planificación, ejecución directa de herramientas, reparación acotada en caso de fallo
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
- - `POSTHOG_KEY`: (Opcional) Clave del proyecto PostHog — hay una predeterminada integrada; anule para forks o staging
599
- - `POSTHOG_API_HOST`: (Opcional) Host de ingesta de PostHog (predeterminado: `https://a.alisait.com`)
600
- - `POSTHOG_UI_HOST`: (Opcional) Host de UI de PostHog (predeterminado: `https://eu.posthog.com`)
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のオプション実行モードで、**APIキー認証専用**です(`cli_account`は常にデフォルトのエージェントフローを使用します)。composerのモデルセレクター横にある**Action Plan**トグルで有効にします。
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`)が確認できます。計画はチャット履歴に保存され、リロードしても残ります。トグルはデフォルトで無効で、Action Planを無効にしている間は既存のエージェントフローに影響しません。
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キーのみ):1回の計画呼び出し、直接ツール実行、失敗時の限定的修復
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
- - `POSTHOG_KEY`:(オプション)PostHogプロジェクトキー — デフォルトが組み込まれています。フォークやステージング用に上書き可能
601
- - `POSTHOG_API_HOST`:(オプション)PostHogインジェストホスト(デフォルト:`https://a.alisait.com`)
602
- - `POSTHOG_UI_HOST`:(オプション)PostHog UIホスト(デフォルト:`https://eu.posthog.com`)
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: 118 tools (102 atomic + 16 one-step recipes) — full list in
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
  ![Standalone UI Screenshot](./images/frame_generic_light.png)
84
84
 
85
- Details, providers, and security notes: [`docs/standalone-ui.md`](docs/standalone-ui.md).
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 118 tools with parameters
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 **yalnızca API anahtarı kimlik doğrulaması** için isteğe bağlı bir yürütme modu
66
- (`cli_account` her zaman varsayılan ajantik akışı kullanır). **composer**'daki model seçicinin yanındaki
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 kapalıdır; Action Plan devre dışıyken mevcut ajantik akış değişmeden kalır.
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 (yalnızca API anahtarı):
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
- - `POSTHOG_KEY`: (İsteğe bağlı) PostHog proje anahtarı — varsayılan gömülüdür; fork veya staging için geçersiz kılın
687
- - `POSTHOG_API_HOST`: (İsteğe bağlı) PostHog ingest host'u (varsayılan: `https://a.alisait.com`)
688
- - `POSTHOG_UI_HOST`: (İsteğe bağlı) PostHog UI host'u (varsayılan: `https://eu.posthog.com`)
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 中的可选执行模式,**仅适用于 API 密钥认证**(`cli_account` 始终使用默认的代理流程)。在 composer 中的模型选择器旁边,通过 **Action Plan** 开关开启。
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`)。计划会持久化到聊天历史中,重载后不会丢失。开关默认关闭;禁用 Action Plan 时,现有的代理流程不受影响。
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 中可选的先规划后执行模式(仅 API 密钥):一次规划调用、直接工具执行、失败时有界修复
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
- - `POSTHOG_KEY`:(可选)PostHog 项目密钥 — 已内置默认值;可用于 fork 或预发布环境覆盖
596
- - `POSTHOG_API_HOST`:(可选)PostHog 数据采集主机(默认:`https://a.alisait.com`)
597
- - `POSTHOG_UI_HOST`:(可选)PostHog UI 主机(默认:`https://eu.posthog.com`)
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,CAgClE"}
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 = 16_000;
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,MAAM,CAAC;AAC/B,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;QACxB,kBAAkB,CAAC,MAAM,GAAG,CAAC;QAC7B,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;IAC7B,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;gBACpB,CAAC,CAAC,EAAE,mBAAmB,EAAE,YAAY,CAAC,kBAAkB,CAAC,EAAE;gBAC3D,CAAC,CAAC,EAAE,CAAC;YACP,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
+ {"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 resolvePostHogKey(): string;
4
- export declare function resolvePostHogApiHost(): string;
5
- export declare function resolvePostHogUiHost(): string;
6
- export declare function hasPostHogKey(): boolean;
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":"AASA,wBAAgB,sBAAsB,IAAI,OAAO,CAEhD;AAED,wBAAgB,wBAAwB,IAAI,OAAO,CAElD;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAED,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAED,wBAAgB,aAAa,IAAI,OAAO,CAEvC;AAED,wBAAgB,eAAe,IAAI,OAAO,CAEzC"}
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"}
@@ -1,29 +1,30 @@
1
- const DEFAULT_POSTHOG_KEY = 'phc_mejq4ZZ8jTNZPiusjh7vHyPzWYinzsDwVJW43SM5FEcg';
2
- const DEFAULT_API_HOST = 'https://a.alisait.com';
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 resolvePostHogKey() {
15
- return process.env.POSTHOG_KEY?.trim() || DEFAULT_POSTHOG_KEY;
14
+ export function resolveRybbitHost() {
15
+ return (process.env.RYBBIT_HOST?.trim() || DEFAULT_RYBBIT_HOST).replace(/\/$/, '');
16
16
  }
17
- export function resolvePostHogApiHost() {
18
- return process.env.POSTHOG_API_HOST?.trim() || DEFAULT_API_HOST;
17
+ export function resolveRybbitAnalyticsHost() {
18
+ return `${resolveRybbitHost()}/api`;
19
19
  }
20
- export function resolvePostHogUiHost() {
21
- return process.env.POSTHOG_UI_HOST?.trim() || DEFAULT_UI_HOST;
20
+ export function resolveRybbitSiteId() {
21
+ return process.env.RYBBIT_SITE_ID?.trim() || DEFAULT_RYBBIT_SITE_ID;
22
22
  }
23
- export function hasPostHogKey() {
24
- return resolvePostHogKey().length > 0;
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 hasPostHogKey();
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,kDAAkD,CAAC;AAC/E,MAAM,gBAAgB,GAAG,uBAAuB,CAAC;AACjD,MAAM,eAAe,GAAG,wBAAwB,CAAC;AAEjD,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,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,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,mBAAmB,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,IAAI,EAAE,IAAI,gBAAgB,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,OAAO,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,EAAE,IAAI,eAAe,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,OAAO,iBAAiB,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,OAAO,aAAa,EAAE,CAAC;AACzB,CAAC"}
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":"AAiHA,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"}
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"}
@@ -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 people.set_once / PostHog $set_once only. */
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":"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"}
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, } from './milestones.js';
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;AASjD,OAAO,EACL,qBAAqB,EAIrB,sBAAsB,EACvB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EACxB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,wBAAwB,EACzB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACxE,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,CACrC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACnC,IAAI,CAgBN;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,CAalE;AACD,OAAO,EACL,6BAA6B,GAC9B,MAAM,iBAAiB,CAAC;AACzB,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"}
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"}
@@ -1,12 +1,11 @@
1
1
  import { captureBetaChatTurn } from './beta-telemetry.js';
2
2
  import { getAppVersion } from './app-version.js';
3
- import { hasAnalyticsKey, resolvePostHogApiHost, resolvePostHogKey, resolvePostHogUiHost, } from './config.js';
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, } from './mcp-client.js';
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: 'posthog',
73
- key: resolvePostHogKey(),
74
- apiHost: resolvePostHogApiHost(),
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, } from './milestones.js';
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":"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"}
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
- * PostHog $set_once install cohort fields — safe to call repeatedly.
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
- * PostHog $set_once install cohort fields — safe to call repeatedly.
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":"AAQA,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,cAAc,CAAC;AAChF,MAAM,MAAM,uBAAuB,GAC/B,UAAU,GACV,UAAU,GACV,UAAU,GACV,mBAAmB,CAAC;AA0FxB,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,CA8BP;AAED,wBAAgB,mCAAmC,IAAI,IAAI,CAE1D;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI,CActE"}
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 = 4_000;
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;