IJAI-215 use native macOS screen capture in AIR prompts

Expose Context from Screen in the shared Add Context flow and give it a
dedicated capture icon.

Use the macOS 14 ScreenCaptureKit sharing picker and screenshot manager
through AIR-local Kotlin/JNA. This keeps selection native, avoids frozen
overlay screenshots and window enumeration, and does not expand Platform API.

Store captures and raw pasted or dropped images in backend-owned project
storage so the same payload and lifecycle work in monolith and split mode.
Keep user-owned image files as references, and defer native Windows and Linux
capture to IJAI-719 and IJAI-720.

Dropped one line from this cherry-pick's spillover into
community/platform/tips-of-the-day/resources/intellij.platform.tips.xml:
master's diff regenerates that file's auto-generated <dependencies> block
wholesale and picks up intellij.platform.projectFrame, but nothing in this
branch's intellij.platform.tips.iml actually declares that module dependency
(that only lands via a separate, unrelated cherry-pick artifact fixed
elsewhere - see IJAI-689's commit). Kept intellij.platform.ide.progress,
which the .iml does declare.

(cherry picked from commit d92a24c12558595a04352c7ad2b8f22b345566b5)

GitOrigin-RevId: 8cf33a21d17636ec5d81b0b4ddc513f5cfa33e1b
This commit is contained in:
Vladimir Krivosheev
2026-08-10 23:57:56 +00:00
committed by intellij-monorepo-bot
parent 91311eb836
commit ccc5e11f9b
@@ -16,6 +16,7 @@
<module name="intellij.platform.feedback"/>
<module name="intellij.platform.ide.core"/>
<module name="intellij.platform.ide.impl"/>
<module name="intellij.platform.ide.progress"/>
<module name="intellij.platform.projectModel"/>
<module name="intellij.platform.statistics"/>
<module name="intellij.platform.util.ex"/>
@@ -56,7 +57,7 @@
<applicationListeners>
<listener class="com.intellij.platform.tips.CloseTipDialogOnPluginUnloadingListener" topic="com.intellij.ide.plugins.DynamicPluginListener"/>
</applicationListeners>
<projectListeners>
<listener class="com.intellij.ide.util.TipsUsageManager$TipsUsageListener"
activeInTestMode="false"