chore: Add placeholder AI Integrations form (#40583)

## Description


Adds a new AI integrations form and a feature flag to control it

## Automation

/ok-to-test tags="@tag.Sanity"

### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results  -->
> [!TIP]
> 🟢 🟢 🟢 All cypress tests have passed! 🎉 🎉 🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/14852368949>
> Commit: 047893cddfa36128ca4b07263ef2e49afba40fe1
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=14852368949&attempt=1"
target="_blank">Cypress dashboard</a>.
> Tags: `@tag.Sanity`
> Spec:
> <hr>Tue, 06 May 2025 06:16:52 UTC
<!-- end of auto-generated comment: Cypress test results  -->


## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [ ] No


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

- **New Features**
  - Introduced a new AI Chat Integrations form control component.
  - Added a feature flag to enable or disable AI Chat Integrations.
- **Chores**
- Registered the new form control type and component in the form control
registry.
- Updated feature flag override capabilities to include the new AI Chat
Integrations flag.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
This commit is contained in:
Hetu Nandu 2025-05-06 16:02:38 +05:30 committed by GitHub
parent 119eb524d0
commit b7a2f5c261
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 33 additions and 0 deletions

View File

@ -0,0 +1,18 @@
import React from "react";
import BaseControl, {
type ControlProps,
} from "components/formControls/BaseControl";
import type { ControlType } from "constants/PropertyControlConstants";
interface AIChatIntegrationsControlProps extends ControlProps {}
class AIChatIntegrationsControl extends BaseControl<AIChatIntegrationsControlProps> {
getControlType(): ControlType {
return "AI_CHAT_INTEGRATIONS_FORM";
}
public render() {
return <div>AIChatIntegrationsControl</div>;
}
}
export default AIChatIntegrationsControl;

View File

@ -0,0 +1 @@
export { default } from "./AIChatIntegrationsControl";

View File

@ -59,6 +59,7 @@ export const FEATURE_FLAG = {
license_external_saas_plugins_enabled: license_external_saas_plugins_enabled:
"license_external_saas_plugins_enabled", "license_external_saas_plugins_enabled",
release_computation_cache_enabled: "release_computation_cache_enabled", release_computation_cache_enabled: "release_computation_cache_enabled",
release_ai_chat_integrations_enabled: "release_ai_chat_integrations_enabled",
} as const; } as const;
export type FeatureFlag = keyof typeof FEATURE_FLAG; export type FeatureFlag = keyof typeof FEATURE_FLAG;
@ -108,6 +109,7 @@ export const DEFAULT_FEATURE_FLAG_VALUE: FeatureFlags = {
release_git_package_enabled: false, release_git_package_enabled: false,
license_external_saas_plugins_enabled: false, license_external_saas_plugins_enabled: false,
release_computation_cache_enabled: false, release_computation_cache_enabled: false,
release_ai_chat_integrations_enabled: false,
}; };
export const AB_TESTING_EVENT_KEYS = { export const AB_TESTING_EVENT_KEYS = {

View File

@ -0,0 +1 @@
export { default } from "ce/components/formControls/AIChatIntegrationsControl";

View File

@ -56,6 +56,7 @@ import {
AiChatSystemInstructionsControl, AiChatSystemInstructionsControl,
type AiChatSystemInstructionsControlProps, type AiChatSystemInstructionsControlProps,
} from "components/formControls/AIChatSystemInstructionsControl"; } from "components/formControls/AIChatSystemInstructionsControl";
import AIChatIntegrationsControl from "ee/components/formControls/AIChatIntegrationsControl";
/** /**
* NOTE: If you are adding a component that uses FormControl * NOTE: If you are adding a component that uses FormControl
@ -253,6 +254,14 @@ class FormControlRegistry {
}, },
}, },
); );
FormControlFactory.registerControlBuilder(
formControlTypes.AI_CHAT_INTEGRATIONS_FORM,
{
buildPropertyControl(controlProps): JSX.Element {
return <AIChatIntegrationsControl {...controlProps} />;
},
},
);
FormControlFactory.registerControlBuilder( FormControlFactory.registerControlBuilder(
formControlTypes.DATASOURCE_LINK, formControlTypes.DATASOURCE_LINK,
{ {

View File

@ -27,4 +27,5 @@ export default {
DATASOURCE_LINK: "DATASOURCE_LINK", DATASOURCE_LINK: "DATASOURCE_LINK",
CUSTOM_ACTIONS_CONFIG_FORM: "CUSTOM_ACTIONS_CONFIG_FORM", CUSTOM_ACTIONS_CONFIG_FORM: "CUSTOM_ACTIONS_CONFIG_FORM",
AI_CHAT_SYSTEM_INSTRUCTIONS: "AI_CHAT_SYSTEM_INSTRUCTIONS", AI_CHAT_SYSTEM_INSTRUCTIONS: "AI_CHAT_SYSTEM_INSTRUCTIONS",
AI_CHAT_INTEGRATIONS_FORM: "AI_CHAT_INTEGRATIONS_FORM",
}; };

View File

@ -16,6 +16,7 @@ export const AvailableFeaturesToOverride: FeatureFlag[] = [
"release_anvil_enabled", "release_anvil_enabled",
"release_layout_conversion_enabled", "release_layout_conversion_enabled",
"license_ai_agent_enabled", "license_ai_agent_enabled",
"release_ai_chat_integrations_enabled",
]; ];
export type OverriddenFeatureFlags = Partial<Record<FeatureFlag, boolean>>; export type OverriddenFeatureFlags = Partial<Record<FeatureFlag, boolean>>;