<!-- Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. -->
<!-- SPDX-License-Identifier: Apache-2.0 -->

<idea-plugin xmlns:xi="http://www.w3.org/2001/XInclude" require-restart="true">
    <id>aws.toolkit</id>
    <name>AWS Toolkit</name>
    <version>1.0</version>

    <description><![CDATA[
<p>
    The AWS Toolkit for JetBrains makes it easier to write applications built on <a href="https://aws.amazon.com/">Amazon Web Services</a>.
If you come across bugs with the toolkit or have feature requests, please raise an
<a href="https://github.com/aws/aws-toolkit-jetbrains/issues">issue</a> on our GitHub repository.
</p>
<br/>
<p>
See the <a href="https://docs.aws.amazon.com/console/toolkit-for-jetbrains/">user guide</a> for how to get started, along
with what features/services are supported.
</p>

<p><h2><strong>Features:</strong></h2></p>

<ul>
    <li>
       <a href="https://docs.aws.amazon.com/console/toolkit-for-jetbrains/credentials">Authentication</a> - Connect to AWS using static credentials, credential process, or AWS SSO.
    </li>

    <li>
        <a href="https://docs.aws.amazon.com/console/toolkit-for-jetbrains/aws-explorer">Resource Explorer</a> - View and manage AWS resources
    </li>

    <li>
        <a href="https://docs.aws.amazon.com/console/toolkit-for-jetbrains/lambda-local">Run/Debug Local Lambda Functions</a> - Locally test and step-through debug functions in a
        Lambda-like execution environment provided by the AWS SAM CLI. Supports Java, Python, Node.js, and .NET Core.
    </li>

    <li>
       <a href="https://docs.aws.amazon.com/console/toolkit-for-jetbrains/sam-deploy">Deploy SAM-based Applications</a> - Package, deploy & track SAM-based applications
    </li>

    <li>
        <a href="https://docs.aws.amazon.com/console/toolkit-for-jetbrains/cwl-tasks">CloudWatch Logs</a> - View and search CloudWatch log streams
    </li>

    <li>
        <a href="https://docs.aws.amazon.com/console/toolkit-for-jetbrains/s3-tasks">S3 Explorer</a> - Manage S3 buckets, and upload to/download from S3 buckets
    </li>

    <li>
        <a href="https://docs.aws.amazon.com/console/toolkit-for-jetbrains/services">See the user guide</a> for a full list of services and features supported
    </li>
</ul>
    ]]></description>

    <vendor email="aws-toolkit-jetbrains@amazon.com" url="https://github.com/aws/aws-toolkit-jetbrains">AWS</vendor>
    <!-- 201.6668.113 is 2020.1 EAP 1 -->
    <idea-version since-build="201.6668.113" until-build="202.*"/>

    <resource-bundle>software.aws.toolkits.resources.MessagesBundle</resource-bundle>

    <!-- please see http://www.jetbrains.org/intellij/sdk/docs/basics/getting_started/plugin_compatibility.html
         on how to target different products -->
    <!-- All dependencies have to be defined here, you can't define more in an optional config-file,
        See PluginManagerCore#mergeOptionalConfigs -->
    <depends>com.intellij.modules.lang</depends>
    <depends>org.jetbrains.plugins.yaml</depends>

    <depends optional="true">org.jetbrains.idea.maven</depends>
    <depends optional="true">org.jetbrains.plugins.gradle</depends>
    <depends optional="true" config-file="ext-terminal.xml">org.jetbrains.plugins.terminal</depends>
    <depends optional="true">com.intellij.modules.externalSystem</depends>
    <depends optional="true" config-file="ext-yaml.xml">org.jetbrains.plugins.yaml</depends>
    <depends optional="true" config-file="ext-docker.xml">Docker</depends>
    <depends optional="true" config-file="ext-java.xml">com.intellij.modules.java</depends>
    <depends optional="true" config-file="ext-python.xml">com.intellij.modules.python</depends>

    <xi:include href="/META-INF/IU.xml" xpointer="xpointer(/idea-plugin/*)">
        <xi:fallback/>
    </xi:include>

    <xi:include href="/META-INF/RD.xml" xpointer="xpointer(/idea-plugin/*)">
        <xi:fallback/>
    </xi:include>

    <xi:include href="/META-INF/change-notes.xml" xpointer="xpointer(/idea-plugin/*)">
        <xi:fallback/>
    </xi:include>

    <projectListeners>
        <listener class="software.aws.toolkits.jetbrains.core.credentials.CredentialStatusNotification"
                  topic="software.aws.toolkits.jetbrains.core.credentials.ConnectionSettingsStateChangeNotifier"/>
        <listener class="software.aws.toolkits.jetbrains.services.dynamic.DynamicResourceStateChangedNotificationHandler"
                  topic="software.aws.toolkits.jetbrains.services.dynamic.DynamicResourceStateMutationHandler"/>

    </projectListeners>
    <extensionPoints>
        <extensionPoint name="credentialProviderFactory" interface="software.aws.toolkits.core.credentials.CredentialProviderFactory" dynamic="true"/>

        <extensionPoint name="lambda.runtimeGroup" interface="software.aws.toolkits.jetbrains.services.lambda.RuntimeGroup" dynamic="true"/>

        <extensionPoint name="lambda.builder" beanClass="software.aws.toolkits.jetbrains.core.IdBasedExtensionPoint" dynamic="true">
            <with attribute="implementationClass" implements="software.aws.toolkits.jetbrains.services.lambda.LambdaBuilder"/>
        </extensionPoint>

        <extensionPoint name="lambda.sam.runtimeDebugSupport" beanClass="software.aws.toolkits.jetbrains.core.IdBasedExtensionPoint" dynamic="true">
            <with attribute="implementationClass" implements="software.aws.toolkits.jetbrains.services.lambda.execution.sam.RuntimeDebugSupport"/>
        </extensionPoint>

        <extensionPoint name="lambda.sam.imageDebuggerSupport" interface="software.aws.toolkits.jetbrains.services.lambda.execution.sam.ImageDebugSupport" dynamic="true"/>

        <extensionPoint name="lambda.handlerResolver" beanClass="software.aws.toolkits.jetbrains.core.IdBasedExtensionPoint" dynamic="true">
            <with attribute="implementationClass" implements="software.aws.toolkits.jetbrains.services.lambda.LambdaHandlerResolver"/>
        </extensionPoint>

        <extensionPoint name="lambda.sam.projectWizard" beanClass="software.aws.toolkits.jetbrains.core.IdBasedExtensionPoint" dynamic="true">
            <with attribute="implementationClass" implements="software.aws.toolkits.jetbrains.services.lambda.wizard.SamProjectWizard"/>
        </extensionPoint>

        <extensionPoint name="lambda.handlerCompletion" beanClass="software.aws.toolkits.jetbrains.core.IdBasedExtensionPoint" dynamic="true">
            <with attribute="implementationClass" implements="software.aws.toolkits.jetbrains.services.lambda.completion.HandlerCompletion"/>
        </extensionPoint>

        <extensionPoint name="executable" interface="software.aws.toolkits.jetbrains.core.executables.ExecutableType" dynamic="true"/>

        <extensionPoint name="clouddebug.debuggerSupport" interface="software.aws.toolkits.jetbrains.services.clouddebug.DebuggerSupport" dynamic="true"/>

        <extensionPoint name="explorer.serviceNode" interface="software.aws.toolkits.jetbrains.core.explorer.nodes.AwsExplorerServiceNode" dynamic="true"/>
        <extensionPoint name="explorer.nodeProcessor" interface="software.aws.toolkits.jetbrains.core.explorer.AwsExplorerNodeProcessor" dynamic="true"/>
        <extensionPoint name="explorer.treeStructure" interface="software.aws.toolkits.jetbrains.core.explorer.AwsExplorerTreeStructureProvider" dynamic="true"/>
        <extensionPoint name="sdk.clientCustomizer" interface="software.aws.toolkits.jetbrains.core.AwsClientCustomizer" dynamic="true"/>
        <extensionPoint name="experiment" interface="software.aws.toolkits.jetbrains.core.experiments.ToolkitExperiment" dynamic="true"/>
        <extensionPoint name="tool" interface="software.aws.toolkits.jetbrains.core.tools.ToolType" dynamic="true"/>
    </extensionPoints>

    <extensions defaultExtensionNs="com.intellij">
        <applicationService serviceImplementation="software.aws.toolkits.jetbrains.core.coroutines.PluginCoroutineScopeTracker"/>
        <projectService serviceImplementation="software.aws.toolkits.jetbrains.core.coroutines.PluginCoroutineScopeTracker"/>

        <!-- Credential Management -->
        <applicationService serviceInterface="software.aws.toolkits.jetbrains.core.RemoteResourceResolverProvider"
                            serviceImplementation="software.aws.toolkits.jetbrains.core.DefaultRemoteResourceResolverProvider"/>
        <applicationService serviceInterface="software.aws.toolkits.core.region.ToolkitRegionProvider"
                            serviceImplementation="software.aws.toolkits.jetbrains.core.region.AwsRegionProvider"
                            testServiceImplementation="software.aws.toolkits.jetbrains.core.region.MockRegionProvider"/>
        <applicationService serviceInterface="software.aws.toolkits.jetbrains.core.credentials.CredentialManager"
                            serviceImplementation="software.aws.toolkits.jetbrains.core.credentials.DefaultCredentialManager"
                            testServiceImplementation="software.aws.toolkits.jetbrains.core.credentials.MockCredentialsManager"/>
        <applicationService serviceInterface="software.aws.toolkits.jetbrains.core.credentials.profiles.ProfileWatcher"
                            serviceImplementation="software.aws.toolkits.jetbrains.core.credentials.profiles.DefaultProfileWatcher"/>
        <applicationService serviceInterface="software.aws.toolkits.jetbrains.settings.AwsSettings"
                            serviceImplementation="software.aws.toolkits.jetbrains.settings.DefaultAwsSettings"
                            testServiceImplementation="software.aws.toolkits.jetbrains.settings.MockAwsSettings" />

        <applicationService serviceImplementation="software.aws.toolkits.jetbrains.settings.CloudDebugSettings"/>
        <applicationService serviceImplementation="software.aws.toolkits.jetbrains.settings.EcsExecCommandSettings"/>

        <applicationService serviceInterface="software.aws.toolkits.jetbrains.settings.DynamicResourcesSettings"
                            serviceImplementation="software.aws.toolkits.jetbrains.settings.DefaultDynamicResourcesSettings"/>

        <projectService serviceImplementation="software.aws.toolkits.jetbrains.settings.LambdaSettings"/>

        <moduleService serviceImplementation="software.aws.toolkits.jetbrains.settings.DeploySettings"/>
        <applicationService serviceImplementation="software.aws.toolkits.jetbrains.settings.UpdateLambdaState"/>

        <projectService serviceInterface="software.aws.toolkits.jetbrains.core.credentials.AwsConnectionManager"
                        serviceImplementation="software.aws.toolkits.jetbrains.core.credentials.DefaultAwsConnectionManager"
                        testServiceImplementation="software.aws.toolkits.jetbrains.core.credentials.MockAwsConnectionManager"/>
        <projectService serviceInterface="software.aws.toolkits.jetbrains.core.credentials.CredentialsRegionHandler"
                        serviceImplementation="software.aws.toolkits.jetbrains.core.credentials.DefaultCredentialsRegionHandler"
                        testServiceImplementation="software.aws.toolkits.jetbrains.core.credentials.MockCredentialsRegionHandler"/>

        <projectService serviceImplementation="software.aws.toolkits.jetbrains.services.dynamic.CreateResourceFileStatusHandler"/>

        <statusBarWidgetFactory implementation="software.aws.toolkits.jetbrains.core.credentials.AwsSettingsPanelInstaller"/>

        <postStartupActivity implementation="software.aws.toolkits.jetbrains.core.AwsTelemetryPrompter"/>
        <postStartupActivity implementation="software.aws.toolkits.jetbrains.core.executables.ExecutableLoader"/>

        <applicationService serviceInterface="software.aws.toolkits.core.clients.SdkClientProvider"
                            serviceImplementation="software.aws.toolkits.jetbrains.core.AwsSdkClient"/>
        <applicationService serviceInterface="software.aws.toolkits.jetbrains.services.telemetry.TelemetryService"
                            serviceImplementation="software.aws.toolkits.jetbrains.services.telemetry.DefaultTelemetryService"
                            testServiceImplementation="software.aws.toolkits.jetbrains.services.telemetry.NoOpTelemetryService" />
        <applicationService serviceInterface="software.aws.toolkits.jetbrains.core.executables.ExecutableManager"
                            serviceImplementation="software.aws.toolkits.jetbrains.core.executables.DefaultExecutableManager"/>

        <applicationService serviceImplementation="software.aws.toolkits.jetbrains.core.tools.ToolSettings"/>
        <applicationService serviceInterface="software.aws.toolkits.jetbrains.core.tools.ToolManager"
                            serviceImplementation="software.aws.toolkits.jetbrains.core.tools.DefaultToolManager"
                            testServiceImplementation="software.aws.toolkits.jetbrains.core.tools.MockToolManager"/>

        <applicationService serviceInterface="software.aws.toolkits.core.ToolkitClientManager"
                            serviceImplementation="software.aws.toolkits.jetbrains.core.AwsClientManager"
                            testServiceImplementation="software.aws.toolkits.jetbrains.core.MockClientManager"/>
        <applicationService serviceInterface="software.aws.toolkits.jetbrains.core.AwsResourceCache"
                            serviceImplementation="software.aws.toolkits.jetbrains.core.DefaultAwsResourceCache"
                            testServiceImplementation="software.aws.toolkits.jetbrains.core.MockResourceCache"/>
        <applicationService serviceImplementation="software.aws.toolkits.jetbrains.services.dynamic.DynamicResourceSchemaMapping"/>
        <applicationService serviceImplementation="software.aws.toolkits.jetbrains.services.dynamic.DynamicResourceSupportedTypes"/>

        <projectService serviceImplementation = "software.aws.toolkits.jetbrains.services.dynamic.DynamicResourceUpdateManager"/>
        <applicationService serviceImplementation="software.aws.toolkits.jetbrains.core.experiments.ToolkitExperimentManager"/>

        <projectService serviceImplementation="software.aws.toolkits.jetbrains.core.explorer.ExplorerToolWindow"/>
        <projectService serviceImplementation="software.aws.toolkits.jetbrains.services.cloudformation.stack.StackWindowManager"/>
        <projectService serviceImplementation="software.aws.toolkits.jetbrains.services.lambda.validation.LambdaHandlerValidator" />
        <projectService serviceImplementation="software.aws.toolkits.jetbrains.services.cloudformation.toolwindow.CloudFormationToolWindow" />
        <projectService serviceImplementation="software.aws.toolkits.jetbrains.services.cloudwatch.logs.CloudWatchLogWindow" />
        <projectService serviceImplementation="software.aws.toolkits.jetbrains.services.sqs.toolwindow.SqsWindow" />

        <editorNotificationProvider implementation="software.aws.toolkits.jetbrains.core.credentials.CredentialsFileHelpNotificationProvider"/>
        <editorNotificationProvider implementation="software.aws.toolkits.jetbrains.services.dynamic.DynamicResourceFileActionProvider"/>

        <toolWindow id="aws.explorer" anchor="left" secondary="true"
                    factoryClass="software.aws.toolkits.jetbrains.core.explorer.AwsExplorerFactory"
                    icon="AwsIcons.Logos.AWS"/>

        <toolWindow id="aws.cloudformation" anchor="bottom" doNotActivateOnStart="true" canCloseContents="true"
                    factoryClass="software.aws.toolkits.jetbrains.services.cloudformation.toolwindow.CloudFormationToolWindowFactory" icon="AwsIcons.Logos.CLOUD_FORMATION_TOOL"/>

        <toolWindow id="aws.cloudwatchlogs" anchor="bottom" doNotActivateOnStart="true" canCloseContents="true"
                    factoryClass="software.aws.toolkits.jetbrains.services.cloudwatch.logs.toolwindow.CloudWatchLogsToolWindowFactory" icon="AwsIcons.Resources.CloudWatch.LOGS_TOOL_WINDOW"/>

        <toolWindow id="aws.sqs" anchor="bottom" doNotActivateOnStart="true" canCloseContents="true"
                    factoryClass="software.aws.toolkits.jetbrains.services.sqs.toolwindow.SqsWindowFactory" icon="AwsIcons.Resources.Sqs.SQS_TOOL_WINDOW"/>

        <applicationConfigurable id="aws" groupId="tools" key="aws.settings.title" instance="software.aws.toolkits.jetbrains.settings.AwsSettingsConfigurable"/>
        <projectConfigurable id="aws.lambda" parentId="aws" instance="software.aws.toolkits.jetbrains.services.lambda.settings.LambdaSettingsConfigurable"/>
        <applicationConfigurable parentId="aws" key="aws.settings.dynamic_resources_configurable.title" instance="software.aws.toolkits.jetbrains.settings.DynamicResourcesConfigurable" />
        <applicationConfigurable id="aws.experiments" parentId="aws" instance="software.aws.toolkits.jetbrains.core.experiments.ExperimentConfigurable"/>
        <applicationConfigurable id="aws.tools" parentId="aws" instance="software.aws.toolkits.jetbrains.core.tools.ToolConfigurable"/>

        <programRunner implementation="software.aws.toolkits.jetbrains.services.lambda.execution.sam.SamInvokeRunner"/>
        <programRunner implementation="software.aws.toolkits.jetbrains.services.lambda.execution.remote.RemoteLambdaRunner"/>

        <runLineMarkerContributor language="yaml" implementationClass="software.aws.toolkits.jetbrains.services.lambda.execution.template.YamlLambdaRunLineMarkerContributor"/>
        <configurationType implementation="software.aws.toolkits.jetbrains.services.lambda.execution.LambdaRunConfigurationType"/>
        <runConfigurationProducer implementation="software.aws.toolkits.jetbrains.services.lambda.execution.local.LocalLambdaRunConfigurationProducer"/>
        <runConfigurationProducer implementation="software.aws.toolkits.jetbrains.services.lambda.execution.remote.RemoteLambdaRunConfigurationProducer"/>

        <!-- Min Version Notice -->
        <postStartupActivity implementation="software.aws.toolkits.jetbrains.core.notification.MinimumVersionChange"/>
        <notificationGroup id="aws.toolkit_deprecation" displayType="STICKY_BALLOON" key="aws.toolkit_deprecation.title"/>
        <notificationGroup id="aws.toolkit_telemetry" displayType="STICKY_BALLOON" key="aws.settings.telemetry.prompt.title"/>

        <!-- ECS -->
        <configurationType implementation="software.aws.toolkits.jetbrains.services.ecs.execution.EcsCloudDebugRunConfigurationType"/>
        <programRunner implementation="software.aws.toolkits.jetbrains.services.clouddebug.execution.CloudDebuggingRunner"/>
        <runConfigurationProducer implementation="software.aws.toolkits.jetbrains.services.ecs.execution.EcsCloudDebugRunConfigurationProducer" />

        <!-- Project Wizard components -->
        <directoryProjectGenerator implementation="software.aws.toolkits.jetbrains.services.lambda.wizard.SamProjectGenerator" />
        <projectTemplatesFactory implementation="software.aws.toolkits.jetbrains.services.lambda.wizard.SamProjectGeneratorIntelliJAdapter" />

        <webHelpProvider implementation="software.aws.toolkits.jetbrains.core.help.HelpIdTranslator"/>

        <!-- S3 -->
        <fileEditorProvider implementation="software.aws.toolkits.jetbrains.services.s3.S3ViewerEditorProvider"/>
        <!-- See this post why order="first" is required https://intellij-support.jetbrains.com/hc/en-us/community/posts/360003460619-fileIconProvider-is-not-showing-Icon-for-custom-LightVirtualFile -->
        <fileIconProvider order="first" implementation="software.aws.toolkits.jetbrains.services.s3.editor.S3FileIconProvider"/>

        <!-- DynamoDB -->
        <fileEditorProvider implementation="software.aws.toolkits.jetbrains.services.dynamodb.editor.DynamoDbTableEditorProvider"/>
        <fileIconProvider order="first" implementation="software.aws.toolkits.jetbrains.services.dynamodb.editor.DynamoDbFileIconProvider"/>

        <registryKey key="aws.telemetry.endpoint" description="Endpoint to use for publishing AWS client-side telemetry" defaultValue="https://client-telemetry.us-east-1.amazonaws.com" restartRequired="true"/>
        <registryKey key="aws.telemetry.identityPool" description="Cognito identity pool to use for publishing AWS client-side telemetry" defaultValue="us-east-1:820fd6d1-95c0-4ca4-bffb-3f01d32da842" restartRequired="true"/>
        <registryKey key="aws.telemetry.region" description="Region to use for publishing AWS client-side telemetry" defaultValue="us-east-1" restartRequired="true"/>
        <registryKey key="aws.credentialProcess.timeout" description="AWS Credential Process timeout (ms)" restartRequired="false" defaultValue="30000"/>
        <registryKey key="aws.debuggerAttach.timeout" description="Time allowed for debuggers to attach before timing out (ms)" restartRequired="false" defaultValue="60000"/>
        <registryKey key="aws.feature.ecsCloudDebug" description="Enables the Cloud Debug for ECS set of features" restartRequired="false" defaultValue="true"/>
        <registryKey key="aws.toolkit.developerMode" description="Enables features to facilitate development of the toolkit" restartRequired="false" defaultValue="false"/>
    </extensions>

    <extensions defaultExtensionNs="JavaScript.JsonSchema">
        <ProviderFactory implementation="software.aws.toolkits.jetbrains.services.ecs.TaskSchemaProviderFactory"/>
        <ProviderFactory implementation="software.aws.toolkits.jetbrains.services.dynamic.ResourceSchemaProviderFactory"/>
    </extensions>

    <extensions defaultExtensionNs="aws.toolkit">
        <credentialProviderFactory implementation="software.aws.toolkits.jetbrains.core.credentials.profiles.ProfileCredentialProviderFactory"/>
        <credentialProviderFactory implementation="software.aws.toolkits.jetbrains.core.credentials.metadataservice.ContainerCredentialProviderFactory"/>
        <credentialProviderFactory implementation="software.aws.toolkits.jetbrains.core.credentials.metadataservice.InstanceRoleCredentialProviderFactory"/>

        <!-- Executables -->
        <executable implementation="software.aws.toolkits.jetbrains.services.clouddebug.CloudDebugExecutable"/>
        <executable implementation="software.aws.toolkits.jetbrains.services.lambda.sam.SamExecutable"/>

        <explorer.nodeProcessor implementation="software.aws.toolkits.jetbrains.services.clouddebug.CloudDebuggingExplorerProcessor" />
        <explorer.treeStructure implementation="software.aws.toolkits.jetbrains.services.clouddebug.CloudDebuggingExplorerTreeStructureProvider"/>
        <explorer.treeStructure implementation="software.aws.toolkits.jetbrains.services.dynamic.explorer.DynamicResourceTreeStructureProvider"/>

        <!-- Explorer nodes -->
        <explorer.serviceNode implementation="software.aws.toolkits.jetbrains.core.explorer.nodes.AppRunnerExplorerRootNode"/>
        <explorer.serviceNode implementation="software.aws.toolkits.jetbrains.core.explorer.nodes.CloudFormationExplorerRootNode"/>
        <explorer.serviceNode implementation="software.aws.toolkits.jetbrains.core.explorer.nodes.CloudWatchRootNode"/>
        <explorer.serviceNode implementation="software.aws.toolkits.jetbrains.core.explorer.nodes.DynamoDbExplorerRootNode"/>
        <explorer.serviceNode implementation="software.aws.toolkits.jetbrains.core.explorer.nodes.LambdaExplorerRootNode"/>
        <explorer.serviceNode implementation="software.aws.toolkits.jetbrains.core.explorer.nodes.S3ExplorerRootNode"/>
        <explorer.serviceNode implementation="software.aws.toolkits.jetbrains.core.explorer.nodes.EcrExplorerRootNode"/>
        <explorer.serviceNode implementation="software.aws.toolkits.jetbrains.core.explorer.nodes.EcsExplorerRootNode"/>
        <explorer.serviceNode implementation="software.aws.toolkits.jetbrains.core.explorer.nodes.SchemasExplorerRootNode"/>
        <explorer.serviceNode implementation="software.aws.toolkits.jetbrains.core.explorer.nodes.SqsExplorerRootNode"/>
        <explorer.serviceNode implementation="software.aws.toolkits.jetbrains.core.explorer.nodes.OtherResourcesRootNode"/>

        <!-- Experiments -->
        <experiment implementation="software.aws.toolkits.jetbrains.services.ecs.EcsCloudDebugExperiment"/>
        <experiment implementation="software.aws.toolkits.jetbrains.services.ecs.EcsExecExperiment"/>
        <experiment implementation="software.aws.toolkits.jetbrains.services.dynamic.JsonResourceModificationExperiment"/>

        <tool implementation="software.aws.toolkits.jetbrains.services.ssm.SsmPlugin"/>
    </extensions>

    <actions>
        <action id="aws.toolkit.open.telemetry.viewer" class="software.aws.toolkits.jetbrains.services.telemetry.OpenTelemetryAction"/>
        <action id="aws.settings.refresh"  class="software.aws.toolkits.jetbrains.core.credentials.RefreshConnectionAction"/>
        <action id="aws.toolkit.showFeedback" class="software.aws.toolkits.jetbrains.ui.feedback.ShowFeedbackDialogAction"/>
        <group id="aws.toolkit.explorer.titleBar" popup="false" compact="true">
            <reference id="aws.settings.refresh"/>
            <separator/>
            <reference id="aws.toolkit.showFeedback"/>
        </group>

        <group id="aws.toolkit.explorer.dynamodb.table" popup="true" compact="false">
            <action id="aws.toolkit.dynamodb.delete_table" class="software.aws.toolkits.jetbrains.services.dynamodb.actions.DeleteTableAction"
                    icon="AllIcons.Actions.Cancel"/>
        </group>

        <group id="aws.toolkit.explorer.ecr" popup="true" compact="false">
            <action id="ecr.repository.create" class="software.aws.toolkits.jetbrains.services.ecr.actions.CreateRepositoryAction"/>
        </group>

        <group id="aws.toolkit.explorer.ecr.repository" popup="true" compact="false">
            <group id="ecr.repository.push.group"/>
            <action id="ecr.repository.copyUri" class="software.aws.toolkits.jetbrains.services.ecr.actions.CopyRepositoryUriAction"/>
            <separator/>
            <action id="ecr.repository.delete" class="software.aws.toolkits.jetbrains.services.ecr.actions.DeleteRepositoryAction"/>
        </group>

        <group id="aws.toolkit.explorer.ecr.tag" popup="true" compact="false">
            <action id="ecr.image.createAppRunnerService" class="software.aws.toolkits.jetbrains.services.ecr.actions.CreateAppRunnerServiceAction"/>
            <action id="ecr.image.copyUri" class="software.aws.toolkits.jetbrains.services.ecr.actions.CopyTagUriAction"/>
            <separator/>
            <action id="ecr.image.delete" class="software.aws.toolkits.jetbrains.services.ecr.actions.DeleteTagAction"/>
        </group>

        <group id="aws.toolkit.explorer.ecs.cluster" popup="true" compact="false">
            <action id="ecs.service.showLogGroup" class="software.aws.toolkits.jetbrains.services.ecs.actions.EcsLogGroupAction"/>
            <separator/>
        </group>

        <group id="aws.toolkit.explorer.ecs.service" popup="true" compact="false">
            <reference ref="RunContextGroupInner"/>
            <group id="ecs.container.actions" compact="true" class="software.aws.toolkits.jetbrains.services.ecs.ServiceContainerActions"/>
            <separator/>
            <action id="ecs.function.instrument" class="software.aws.toolkits.jetbrains.services.clouddebug.actions.InstrumentResourceFromExplorerAction"/>
            <action id="clouddebug.resource.deinstrument" class="software.aws.toolkits.jetbrains.services.clouddebug.actions.DeinstrumentResourceFromExplorerAction"/>
            <separator/>
            <action id="ecs.exec.enable" class="software.aws.toolkits.jetbrains.services.ecs.exec.EnableEcsExecuteCommand"/>
            <action id="ecs.exec.disable" class="software.aws.toolkits.jetbrains.services.ecs.exec.DisableEcsExecuteCommand"/>
            <separator/>
        </group>

        <group id="aws.toolkit.explorer.apprunner" popup="true" compact="false">
            <action id="apprunner.service.create" class="software.aws.toolkits.jetbrains.services.apprunner.actions.CreateServiceAction"/>
        </group>

        <group id="aws.toolkit.explorer.apprunner.service" popup="true" compact="false">
            <action id="apprunner.service.deploy" class="software.aws.toolkits.jetbrains.services.apprunner.actions.DeployAction"/>
            <action id="apprunner.service.pause" class="software.aws.toolkits.jetbrains.services.apprunner.actions.PauseServiceAction"/>
            <action id="apprunner.service.resume" class="software.aws.toolkits.jetbrains.services.apprunner.actions.ResumeServiceAction"/>
            <separator/>
            <action id="apprunner.service.openServiceUri" class="software.aws.toolkits.jetbrains.services.apprunner.actions.OpenServiceUrlAction"/>
            <action id="apprunner.service.copyServiceUri" class="software.aws.toolkits.jetbrains.services.apprunner.actions.CopyServiceUrlAction"/>
            <separator/>
            <action id="apprunner.service.showSystemLogs" class="software.aws.toolkits.jetbrains.services.apprunner.actions.ViewSystemLogsAction"/>
            <action id="apprunner.service.showApplicationLogs" class="software.aws.toolkits.jetbrains.services.apprunner.actions.ViewApplicationLogsAction"/>
            <separator/>
            <action id="apprunner.service.delete" class="software.aws.toolkits.jetbrains.services.apprunner.actions.DeleteServiceAction"/>
        </group>

        <group id="aws.toolkit.explorer.lambda" popup="true" compact="false">
            <action id="lambda.function.create" class="software.aws.toolkits.jetbrains.services.lambda.upload.CreateLambdaFunctionAction"/>
        </group>

        <group id="aws.toolkit.explorer.lambda.function" popup="false" compact="false">
            <reference ref="RunContextGroupInner"/>
            <separator/>
            <action id="lambda.function.gotohandler"
                    class="software.aws.toolkits.jetbrains.services.lambda.actions.GoToHandlerAction"/>
            <separator/>
            <action id="lambda.function.updateConfiguration"
                    class="software.aws.toolkits.jetbrains.services.lambda.actions.UpdateFunctionConfigurationAction"/>
            <action id="lambda.function.updateCode" class="software.aws.toolkits.jetbrains.services.lambda.actions.UpdateFunctionCodeAction"/>
            <separator/>
            <action id="lambda.function.viewLogStream" class="software.aws.toolkits.jetbrains.services.lambda.actions.LambdaLogGroupAction"/>
            <separator/>
            <action id="lambda.function.delete"
                    class="software.aws.toolkits.jetbrains.services.lambda.actions.DeleteFunctionAction"/>
        </group>

        <group id="aws.toolkit.explorer.cloudformation" popup="true" compact="false">
            <action id="cloudformation.serverless.deploy" class="software.aws.toolkits.jetbrains.services.lambda.actions.DeployServerlessApplicationAction"/>
        </group>

        <group id="aws.toolkit.explorer.cloudformation.stack" popup="true" compact="false">
            <action id="cloudformation.stack.view"
                    class="software.aws.toolkits.jetbrains.services.cloudformation.stack.OpenStackUiAction"/>
            <separator/>
            <action id="cloudformation.stack.delete"
                    class="software.aws.toolkits.jetbrains.services.cloudformation.actions.DeleteStackAction"/>
        </group>


        <group id="aws.toolkit.explorer.dynamic.resource.type" popup="true" compact="false">
            <action id="dynamic.resource.type.explorer.createResource" class="software.aws.toolkits.jetbrains.services.dynamic.explorer.actions.CreateResourceAction"/>
            <action id="dynamic.resource.type.explorer.viewDocumentation" class="software.aws.toolkits.jetbrains.services.dynamic.explorer.actions.ViewDocumentationAction"/>
        </group>
        
        <group id="aws.toolkit.dynamic.resource.editor">
            <action id="dynamic.resource.editor.submitResourceCreationRequest" class="software.aws.toolkits.jetbrains.services.dynamic.editor.actions.SubmitResourceCreationRequestAction"/>
            <action id="dynamic.resource.editor.enableEditingResource" class="software.aws.toolkits.jetbrains.services.dynamic.editor.actions.EnableEditingResourceAction"/>
            <action id="dynamic.resource.editor.submitResourceUpdateRequest" class="software.aws.toolkits.jetbrains.services.dynamic.editor.actions.SubmitResourceUpdateRequestAction"/>
        </group>

        <group id="aws.toolkit.explorer.dynamic.more.resources" popup="true" compact="false">
            <action id="dynamic.resource.addResourcesToExplorerAction"
                    class="software.aws.toolkits.jetbrains.services.dynamic.explorer.actions.AddResourcesToExplorerAction"/>
        </group>

        <group id="aws.toolkit.explorer.dynamic.resource" popup="true" compact="false">
            <action id="dynamic.resource.explorer.openReadOnlyAction"
                    class="software.aws.toolkits.jetbrains.services.dynamic.explorer.actions.OpenReadOnlyFileAction"/>
            <action id="dynamic.resource.explorer.openFileForUpdateAction"
                    class="software.aws.toolkits.jetbrains.services.dynamic.explorer.actions.OpenFileForUpdateAction"/>
            <separator/>
            <action id="dynamic.resource.explorer.copy.identifier"
                    class="software.aws.toolkits.jetbrains.services.dynamic.explorer.actions.CopyIdentifierAction"/>
            <separator/>
            <action id="dynamic.resource.explorer.dynamicResourceDeleteResourceAction"
                    class="software.aws.toolkits.jetbrains.services.dynamic.explorer.actions.DynamicResourceDeleteResourceAction"/>
        </group>

        <group id="aws.toolkit.explorer.logs.group" popup="true" compact="false">
            <action id="cloudwatch.logs.open"
                    class="software.aws.toolkits.jetbrains.services.cloudwatch.logs.actions.OpenLogGroupAction"/>
            <action id="cloudwatch.logs.query.group"
                    class="software.aws.toolkits.jetbrains.services.cloudwatch.logs.insights.actions.QueryGroupAction"/>
            <separator/>
            <action id="cloudwatch.logs.delete.group"
                    class="software.aws.toolkits.jetbrains.services.cloudwatch.logs.actions.DeleteGroupAction"/>
        </group>

        <group id="aws.toolkit.explorer.s3" popup="false" compact="false">
        <action id="s3.create.bucket"
                class="software.aws.toolkits.jetbrains.services.s3.bucketActions.CreateBucketAction"/>
        <action id="s3.view.bucket"
                class="software.aws.toolkits.jetbrains.services.s3.bucketActions.ViewBucketAction"/>
        </group>

        <group id="aws.toolkit.explorer.s3.bucket" popup="true" compact="false">
            <action id="aws.toolkit.s3.open.bucket.viewer"
                    class="software.aws.toolkits.jetbrains.services.s3.bucketActions.OpenBucketViewerAction"/>
            <action id="aws.toolkit.s3.open.bucket.viewer.prefixed"
                    class="software.aws.toolkits.jetbrains.services.s3.bucketActions.OpenPrefixedBucketViewerAction"/>
            <separator/>
            <action id="s3.copy.bucketname.check"
                    class="software.aws.toolkits.jetbrains.services.s3.bucketActions.CopyBucketNameAction"/>
            <separator/>
            <action id="s3.delete.bucket"
                    class="software.aws.toolkits.jetbrains.services.s3.bucketActions.DeleteBucketAction"/>
        </group>

        <group id="aws.toolkit.explorer.schemas" popup="true" compact="false">
            <action id="schemas.search"
                    class="software.aws.toolkits.jetbrains.services.schemas.search.SearchSchemasAction"/>
        </group>

        <group id="aws.toolkit.explorer.schemas.registry" popup="false" compact="true">
            <action id="schemas.registry.search"
                    class="software.aws.toolkits.jetbrains.services.schemas.search.SearchSchemasInRegistryAction"/>
        </group>

        <group id="aws.toolkit.explorer.schemas.schema" popup="false" compact="true">
            <action id="schemas.schema.view"
                    class="software.aws.toolkits.jetbrains.services.schemas.ViewSchemaAction"/>
            <separator/>
            <action id="schemas.schema.downloadCode"
                    class="software.aws.toolkits.jetbrains.services.schemas.code.DownloadCodeForSchemaAction"/>
        </group>

        <group id="aws.toolkit.explorer.sqs" popup="true" compact="false">
            <action id="sqs.create.queue"
                    class="software.aws.toolkits.jetbrains.services.sqs.actions.CreateQueueAction"/>
        </group>

        <group id="aws.toolkit.explorer.sqs.queue" popup="true" compact="false">
            <action id="sqs.poll.message" class="software.aws.toolkits.jetbrains.services.sqs.actions.PollMessageAction"/>
            <action id="sqs.send.message" class="software.aws.toolkits.jetbrains.services.sqs.actions.SendMessageAction"/>
            <action id="sqs.purge" class="software.aws.toolkits.jetbrains.services.sqs.actions.PurgeQueueNodeAction"/>
            <separator/>
            <action id="sqs.configure.lambda" class="software.aws.toolkits.jetbrains.services.sqs.actions.ConfigureLambdaAction"/>
            <action id="sqs.subscribe.sns" class="software.aws.toolkits.jetbrains.services.sqs.actions.SubscribeSnsAction"/>
            <separator/>
            <action id="sqs.edit.attributes" class="software.aws.toolkits.jetbrains.services.sqs.actions.EditAttributesAction"/>
            <separator/>
            <action id="sqs.delete.queue" class="software.aws.toolkits.jetbrains.services.sqs.actions.DeleteQueueAction"/>
        </group>

        <action class="software.aws.toolkits.jetbrains.core.credentials.ConfigureAwsConnectionAction" id="aws.settings.selector" icon="AwsIcons.Logos.AWS"/>
        <action class="software.aws.toolkits.jetbrains.core.credentials.CreateOrUpdateCredentialProfilesAction" id="aws.settings.upsertCredentials" icon="AwsIcons.Logos.AWS"/>
        <action class="software.aws.toolkits.jetbrains.services.lambda.actions.DeployServerlessApplicationAction" id="serverless.application.deploy" />
        <action class="software.aws.toolkits.jetbrains.settings.ShowSettingsAction" id="aws.settings.show" icon="AllIcons.General.Settings"/>

        <group id="aws.toolkit.serverless.template">
            <add-to-group group-id="ProjectViewPopupMenu" anchor="last"/>
            <add-to-group group-id="EditorPopupMenu" anchor="last"/>
            <add-to-group group-id="EditorTabPopupMenu" anchor="last"/>

            <separator/>
            <reference id="serverless.application.deploy"/>
            <separator/>
        </group>

        <group id="aws.toolkit.s3viewer.transferActions">
            <action class="software.aws.toolkits.jetbrains.services.s3.objectActions.DownloadObjectAction"/>
            <action class="software.aws.toolkits.jetbrains.services.s3.objectActions.UploadObjectAction"/>
        </group>

        <group id="aws.toolkit.s3viewer.versionActions">
            <action class="software.aws.toolkits.jetbrains.services.s3.objectActions.ViewObjectVersionAction"/>
        </group>

        <group id="aws.toolkit.s3viewer.mutateActions">
            <action class="software.aws.toolkits.jetbrains.services.s3.objectActions.NewFolderAction"/>
            <action class="software.aws.toolkits.jetbrains.services.s3.objectActions.RenameObjectAction" use-shortcut-of="RenameElement"/>
            <action class="software.aws.toolkits.jetbrains.services.s3.objectActions.DeleteObjectAction" use-shortcut-of="$Delete"/>
        </group>

        <group id="aws.toolkit.s3viewer.miscActions">
            <action class="software.aws.toolkits.jetbrains.services.s3.objectActions.RefreshTreeAction" use-shortcut-of="Refresh"/>
        </group>

        <group id="aws.toolkit.s3viewer.toolbar">
            <reference ref="aws.toolkit.s3viewer.transferActions"/>
            <separator/>
            <reference ref="aws.toolkit.s3viewer.versionActions"/>
            <separator/>
            <reference ref="aws.toolkit.s3viewer.mutateActions"/>
            <separator/>
            <reference ref="aws.toolkit.s3viewer.miscActions"/>
        </group>

        <group id="aws.toolkit.s3viewer.contextMenu">
            <reference ref="aws.toolkit.s3viewer.transferActions"/>
            <separator/>
            <reference ref="aws.toolkit.s3viewer.versionActions"/>
            <separator/>
            <group popup="true" id="aws.toolkit.s3viewer.contextMenu.copyGroup" icon="AllIcons.Actions.Copy">
                <action class="software.aws.toolkits.jetbrains.services.s3.objectActions.CopyPathAction"/>
                <action class="software.aws.toolkits.jetbrains.services.s3.objectActions.CopyUrlAction"/>
                <action class="software.aws.toolkits.jetbrains.services.s3.objectActions.CopyUriAction"/>
            </group>
            <separator/>
            <reference ref="aws.toolkit.s3viewer.mutateActions"/>
            <separator/>
            <reference ref="aws.toolkit.s3viewer.miscActions"/>
        </group>

        <group id="aws.toolkit.dynamoViewer.toolbar.primary">
        </group>

        <group id="aws.toolkit.dynamoViewer.toolbar.secondary">
            <group popup="true" id="aws.toolkit.dynamoViewer.toolbar.settings" icon="AllIcons.General.GearPlain" >
                <action id="aws.toolkit.dynamoViewer.changeMaxResults" class="software.aws.toolkits.jetbrains.services.dynamodb.editor.actions.ConfigureMaxResultsAction"/>
            </group>
        </group>
    </actions>

</idea-plugin>
