Skip to content

feat(entities): freeform plugin form config#3088

Open
2eha0 wants to merge 24 commits intomainfrom
feat/KM-2475
Open

feat(entities): freeform plugin form config#3088
2eha0 wants to merge 24 commits intomainfrom
feat/KM-2475

Conversation

@2eha0
Copy link
Copy Markdown
Contributor

@2eha0 2eha0 commented Apr 2, 2026

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR introduces a new per-plugin “free-form plugin config” system that replaces the previous hardcoded free-form mapping + metadata-based render rules, allowing plugins to declare their free-form component, render rules, and field renderer overrides via auto-discovered config modules.

Changes:

  • Added a plugin config registry (free-form/shared/plugin-registry) that eagerly auto-discovers free-form/plugins/*.ts and free-form/plugins/*/index.ts.
  • Migrated free-form selection/render rules/field renderer overrides from src/utils/free-form.ts and PLUGIN_METADATA.*.freeformRenderRules into per-plugin config modules.
  • Expanded/rewired free-form plugin implementations (notably Datakit) and adjusted shared layout to consume config-driven field renderers; added Vitest setup polyfill.

Reviewed changes

Copilot reviewed 138 out of 194 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
packages/entities/entities-plugins/vite.config.ts Adds Vitest setupFiles for JSDOM/polyfills.
packages/entities/entities-plugins/test/setup.ts Adds Monaco/JSDOM polyfill for document.queryCommandSupported.
packages/entities/entities-plugins/src/utils/free-form.ts Removes legacy free-form mapping/selection utilities (replaced by registry).
packages/entities/entities-plugins/src/types/plugin.ts Removes freeformRenderRules from plugin metadata type.
packages/entities/entities-plugins/src/definitions/metadata.ts Removes per-plugin free-form render rules from PLUGIN_METADATA.
packages/entities/entities-plugins/src/composables/useSchemas.ts Switches free-form detection to registry-based shouldUseFreeForm.
packages/entities/entities-plugins/src/composables/useExperimentalFreeForms.ts Updates experimental allowlist handling and resolver to use registry APIs.
packages/entities/entities-plugins/src/components/PluginEntityForm.vue Resolves free-form component + render rules + field renderers via registry config.
packages/entities/entities-plugins/src/components/PluginConfigCard.vue Updates Datakit config card canvas import path after Datakit refactor.
packages/entities/entities-plugins/src/components/free-form/UpstreamOauth/UpstreamOauthForm.vue Removes legacy upstream-oauth free-form component (now config-driven).
packages/entities/entities-plugins/src/components/free-form/UpstreamOauth/index.ts Removes legacy barrel export for upstream-oauth component.
packages/entities/entities-plugins/src/components/free-form/SolaceConsume/SolaceConsumeForm.vue Removes legacy solace-consume free-form component (now config-driven).
packages/entities/entities-plugins/src/components/free-form/SolaceConsume/index.ts Removes legacy barrel export for solace-consume component.
packages/entities/entities-plugins/src/components/free-form/shared/utils.ts Adds normalizeMatch helper for string vs predicate renderer matching.
packages/entities/entities-plugins/src/components/free-form/shared/utils.spec.ts Adds unit tests for normalizeMatch.
packages/entities/entities-plugins/src/components/free-form/shared/types.ts Adds genericPath to match input; introduces FieldRenderer + PluginFormConfig types.
packages/entities/entities-plugins/src/components/free-form/shared/SwitchField.vue Refactors i18n usage to import useI18n directly.
packages/entities/entities-plugins/src/components/free-form/shared/ScopeEntityField.vue Refactors i18n usage to import useI18n directly.
packages/entities/entities-plugins/src/components/free-form/shared/RedisConfigCard.vue Updates request-callout types import path after plugin relocation.
packages/entities/entities-plugins/src/components/free-form/shared/plugin-registry.ts New: auto-discovered per-plugin registry + selection helpers.
packages/entities/entities-plugins/src/components/free-form/shared/plugin-registry.spec.ts New: unit tests for name derivation and duplicate registry entries.
packages/entities/entities-plugins/src/components/free-form/shared/layout/StandardLayout.vue Adds support for config-driven fieldRenderers and normalizes match.
packages/entities/entities-plugins/src/components/free-form/shared/EntityChecksAlert.vue Refactors i18n usage to import useI18n directly.
packages/entities/entities-plugins/src/components/free-form/shared/define-plugin-config.ts New: definePluginConfig helper defaulting to CommonForm.
packages/entities/entities-plugins/src/components/free-form/shared/composables/field-path.ts Extends matcher inputs to include genericPath.
packages/entities/entities-plugins/src/components/free-form/ServiceProtection/index.ts Removes legacy barrel export for service-protection component.
packages/entities/entities-plugins/src/components/free-form/ResponseTransformer/ResponseTransformerForm.vue Removes legacy response-transformer component (now config-driven).
packages/entities/entities-plugins/src/components/free-form/ResponseTransformer/ResponseTransformerForm.cy.ts Removes legacy Cypress test for response-transformer component.
packages/entities/entities-plugins/src/components/free-form/ResponseTransformer/index.ts Removes legacy barrel export for response-transformer component.
packages/entities/entities-plugins/src/components/free-form/RequestCallout/index.ts Removes legacy barrel export for request-callout component.
packages/entities/entities-plugins/src/components/free-form/README.md Updates documentation to describe new plugin config registry approach.
packages/entities/entities-plugins/src/components/free-form/plugins/upstream-oauth.ts New: upstream-oauth plugin config (render rules + field renderer overrides).
packages/entities/entities-plugins/src/components/free-form/plugins/solace-consume.ts New: solace-consume plugin config (field renderer overrides).
packages/entities/entities-plugins/src/components/free-form/plugins/service-protection/ServiceProtectionForm.vue Updates imports for relocated service-protection plugin implementation.
packages/entities/entities-plugins/src/components/free-form/plugins/service-protection/RequestLimitsForm.vue Updates imports/locale paths after relocation.
packages/entities/entities-plugins/src/components/free-form/plugins/service-protection/RedisField.vue Updates imports after relocation.
packages/entities/entities-plugins/src/components/free-form/plugins/service-protection/index.ts New: service-protection plugin config entrypoint.
packages/entities/entities-plugins/src/components/free-form/plugins/service-protection/ErrorMessageForm.vue Updates imports/locale paths after relocation.
packages/entities/entities-plugins/src/components/free-form/plugins/service-protection/ConfigForm.vue Updates imports after relocation.
packages/entities/entities-plugins/src/components/free-form/plugins/route-transformer-advanced.ts New: route-transformer-advanced plugin config.
packages/entities/entities-plugins/src/components/free-form/plugins/response-transformer.ts New: response-transformer plugin config (multiline overrides).
packages/entities/entities-plugins/src/components/free-form/plugins/response-transformer-advanced.ts New: response-transformer-advanced plugin config (multiline overrides).
packages/entities/entities-plugins/src/components/free-form/plugins/request-transformer.ts New: request-transformer plugin config.
packages/entities/entities-plugins/src/components/free-form/plugins/request-transformer-advanced.ts New: request-transformer-advanced plugin config.
packages/entities/entities-plugins/src/components/free-form/plugins/request-callout/utils.ts New: request-callout helper for stable IDs.
packages/entities/entities-plugins/src/components/free-form/plugins/request-callout/types.ts Updates types import path after relocation.
packages/entities/entities-plugins/src/components/free-form/plugins/request-callout/RequestCalloutForm.vue Updates imports after relocation into plugins/.
packages/entities/entities-plugins/src/components/free-form/plugins/request-callout/index.ts New: request-callout plugin config entrypoint.
packages/entities/entities-plugins/src/components/free-form/plugins/request-callout/ConfigForm.vue Updates imports after relocation.
packages/entities/entities-plugins/src/components/free-form/plugins/request-callout/CalloutsForm.vue Updates imports after relocation.
packages/entities/entities-plugins/src/components/free-form/plugins/request-callout/CalloutForm.vue Updates imports after relocation.
packages/entities/entities-plugins/src/components/free-form/plugins/README.md New: documentation for adding plugin configs under plugins/.
packages/entities/entities-plugins/src/components/free-form/plugins/rate-limiting.ts New: rate-limiting plugin config with render rules.
packages/entities/entities-plugins/src/components/free-form/plugins/proxy-cache.ts New: proxy-cache plugin config.
packages/entities/entities-plugins/src/components/free-form/plugins/proxy-cache-advanced.ts New: proxy-cache-advanced plugin config with render rules.
packages/entities/entities-plugins/src/components/free-form/plugins/prometheus.ts New: prometheus plugin config.
packages/entities/entities-plugins/src/components/free-form/plugins/opentelemetry.ts New: opentelemetry plugin config (KeyValueField override).
packages/entities/entities-plugins/src/components/free-form/plugins/key-auth/KeyAuthForm.vue Updates imports after relocation into plugins/.
packages/entities/entities-plugins/src/components/free-form/plugins/key-auth/index.ts New: key-auth plugin config entrypoint.
packages/entities/entities-plugins/src/components/free-form/plugins/jwt.ts New: jwt plugin config.
packages/entities/entities-plugins/src/components/free-form/plugins/jwt-signer.ts New: jwt-signer plugin config.
packages/entities/entities-plugins/src/components/free-form/plugins/http-log.ts New: http-log plugin config (KeyValueField override).
packages/entities/entities-plugins/src/components/free-form/plugins/file-log.ts New: file-log plugin config (KeyValueField override).
packages/entities/entities-plugins/src/components/free-form/plugins/exit-transformer.ts New: exit-transformer plugin config (multiline per-item override).
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/types.ts Updates types import path after relocation.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/schema/shared.ts New: shared schema/validation helpers for Datakit config.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/schema/compat.ts New: loose compatibility schema for Datakit imports/validation.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/index.ts New: datakit plugin config entrypoint.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/flow-editor/VaultSecretPicker.vue Updates composables import path after relocation.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/flow-editor/utils.ts New: platform detection + hotkey label formatting helpers.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/flow-editor/store/validation.ts New: reactive graph/edge validation for Datakit flow editor.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/flow-editor/store/history.ts New: tagged undo/redo wrapper around VueUse history.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/flow-editor/store/helpers.ts New: editor store helpers (IDs, parsing, meta lookups, etc.).
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/flow-editor/store/graph.ts New: adjacency + cycle detection helpers.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/flow-editor/store/flow.ts Updates composables import paths after relocation.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/flow-editor/side-panel/VaultField.vue Updates shared/composables import paths after relocation.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/flow-editor/side-panel/SidePanel.vue Updates locale import path after relocation.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/flow-editor/side-panel/ResourcesPanel.vue Updates shared Form import path after relocation.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/flow-editor/side-panel/NodePanel.vue Updates locale/constants import paths after relocation.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/flow-editor/side-panel/index.ts New: side-panel default export wrapper.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/flow-editor/side-panel/CacheField.vue Updates shared/composables import paths after relocation.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/flow-editor/node/vault.ts New: vault-node config conversion helpers.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/flow-editor/node/static.ts New: static node JSON conversion helpers.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/flow-editor/node/schemas.ts Updates form-schema import path after relocation.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/flow-editor/node/property.ts New: supported property catalog + key parsing helpers.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/flow-editor/node/NodePropertiesPanel.vue Updates locale import path after relocation.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/flow-editor/node/NodePortal.vue New: UI for portal edges/targets selection.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/flow-editor/node/NodePanelItem.vue New: draggable node palette item.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/flow-editor/node/NodeBadge.vue New: node type badge with optional custom colors/icons.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/flow-editor/node/node.ts Updates locale import path after relocation.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/flow-editor/node/node-visual.ts New: node icons/colors catalog.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/flow-editor/node/icons/JwtVerifyIcon.vue New: JWT verify icon.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/flow-editor/node/icons/JwtDecodeIcon.vue New: JWT decode icon.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/flow-editor/node/HandleTwig.vue New: handle decoration component.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/flow-editor/node/GroupNode.vue New: group node shell for branch groups.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/flow-editor/node/FlowNode.vue Updates locale import path after relocation.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/flow-editor/node-forms/SourceItem.vue New: render source option items with node visuals.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/flow-editor/node-forms/PropertiesField.vue Updates import paths after relocation.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/flow-editor/node-forms/OutputValueField.vue Updates import paths after relocation.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/flow-editor/node-forms/NodeFormXmlToJson.vue Updates shared/i18n imports after relocation.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/flow-editor/node-forms/NodeFormStatic.vue Updates shared Form import path after relocation.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/flow-editor/node-forms/NodeFormServiceRequest.vue Updates shared Form import path after relocation.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/flow-editor/node-forms/NodeFormResponse.vue Updates shared Form import path after relocation.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/flow-editor/node-forms/NodeFormProperty.vue Updates shared imports; integrates new validation composable.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/flow-editor/node-forms/NodeFormJwtVerify.vue Updates shared/i18n imports after relocation.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/flow-editor/node-forms/NodeFormJwtSign.vue Updates shared/i18n imports after relocation.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/flow-editor/node-forms/NodeFormJwtDecode.vue Updates shared Form import path after relocation.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/flow-editor/node-forms/NodeFormJsonToXml.vue Updates shared/i18n imports after relocation.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/flow-editor/node-forms/NodeFormJq.vue Updates shared/i18n/externalLinks imports after relocation.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/flow-editor/node-forms/NodeFormExit.vue Updates shared field imports after relocation.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/flow-editor/node-forms/NodeFormDivider.vue New: small divider component for node forms.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/flow-editor/node-forms/NodeFormCall.vue Updates shared field imports after relocation; adds validation hooks.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/flow-editor/node-forms/NodeFormCache.vue Updates shared field imports after relocation; adds validation hooks.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/flow-editor/node-forms/NodeFormBranch.vue Updates shared field imports after relocation.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/flow-editor/node-forms/NameField.vue Updates i18n import path after relocation.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/flow-editor/node-forms/InputsRecordField.vue Updates shared/i18n imports after relocation.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/flow-editor/node-forms/InputsMapField.vue Updates shared/i18n imports after relocation.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/flow-editor/node-forms/InputsField.vue Updates shared/i18n imports after relocation.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/flow-editor/node-forms/HttpMethodField.vue Updates shared imports after relocation.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/flow-editor/modal/EditorNav.vue Updates locale import path after relocation.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/flow-editor/modal/EditorModal.vue New: modal wrapper for Datakit editor (scroll lock + navigation).
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/flow-editor/modal/EditorMain.vue Updates locale/shared-field import paths after relocation.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/flow-editor/modal/EditorContent.vue New: main editor composition (side panel + canvas + properties panel).
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/flow-editor/modal/ConflictModal.vue Updates i18n import path after relocation.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/flow-editor/HotkeyLabel.vue New: UI component for hotkey display.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/flow-editor/FlowPanels.vue Updates locale import path after relocation.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/flow-editor/FlowEditor.vue Updates locale/shared import paths after relocation.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/flow-editor/FlowCanvas.vue Updates i18n import path after relocation.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/flow-editor/constants.ts New: Datakit flow-editor constants and hotkey specs.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/flow-editor/composables/validation/useFormValidation.ts New: consolidated field validation composable for node forms.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/flow-editor/composables/validation/manager.ts New: validation manager for multiple fields.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/flow-editor/composables/validation/index.ts New: validation barrel exports.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/flow-editor/composables/validation/business.ts Updates i18n import path after relocation.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/flow-editor/composables/validation/basic.ts Updates i18n import path after relocation.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/flow-editor/composables/useVaultForm.ts New: composable to manage vault resources node form.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/flow-editor/composables/useResourcesSchema.ts Updates shared/form-schema import paths after relocation.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/flow-editor/composables/useNodePortals.ts New: composable for portal selection + delete behavior.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/flow-editor/composables/useNodeForm.ts Updates shared/i18n/form-schema imports after relocation.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/flow-editor/composables/useHotkeys.ts New: shared hotkey bus for editor actions.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/flow-editor/composables/useConflictConfirm.ts New: provide/inject helper for conflict confirmation modal.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/flow-editor/composables/useBranchNodeForm.ts Updates i18n/toaster import paths after relocation.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/flow-editor/composables/useBranchDrop.ts New: branch group drag/drop detection.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/flow-editor/composables/helpers.ts New: connection formatting + bounding-rect helper.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/examples/manipulate-request-headers.yaml New: Datakit example YAML.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/examples/index.ts New: example loader via import.meta.glob.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/examples/convert-xml-into-json.yaml New: Datakit example YAML.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/examples/convert-json-to-xml-and-back.yaml New: Datakit example YAML.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/examples/convert-json-into-xml.yaml New: Datakit example YAML.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/examples/conditionally-store-cached-items.yaml New: Datakit example YAML.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/examples/combine-two-apis-into-one-response.yaml New: Datakit example YAML.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/examples/clear-headers.yaml New: Datakit example YAML.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/examples/authenticate-with-vault-secret.yaml New: Datakit example YAML.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/examples/authenticate-third-party.yaml New: Datakit example YAML.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/examples/authenticate-third-party-with-dynamic-url.yaml New: Datakit example YAML.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/DatakitForm.vue Updates imports and paths for relocated Datakit form.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/DatakitConfigCardCanvas.vue New: config card canvas view for Datakit plugin.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/constants.ts New: Datakit node types/constants.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/config-extractors.ts New: import/extract Datakit config from decK/KIC/cURL snippets.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/composables.ts Updates locale import path; exports editor store helpers.
packages/entities/entities-plugins/src/components/free-form/plugins/datakit/CodeEditor.vue Updates imports after relocation; integrates examples + extractors.
packages/entities/entities-plugins/src/components/free-form/plugins/cors.ts New: cors plugin config.
packages/entities/entities-plugins/src/components/free-form/plugins/correlation-id.ts New: correlation-id plugin config.
packages/entities/entities-plugins/src/components/free-form/plugins/basic-auth.ts New: basic-auth plugin config with render rules.
packages/entities/entities-plugins/src/components/free-form/plugins/aws-lambda.ts New: aws-lambda plugin config.
packages/entities/entities-plugins/src/components/free-form/plugins/ai-mcp-proxy/utils.ts New: helper utils for AI MCP proxy form transformations.
packages/entities/entities-plugins/src/components/free-form/plugins/ai-mcp-proxy/types.ts Updates types import path after relocation.
packages/entities/entities-plugins/src/components/free-form/plugins/ai-mcp-proxy/index.ts New: ai-mcp-proxy plugin config entrypoint.
packages/entities/entities-plugins/src/components/free-form/plugins/ai-mcp-proxy/AIMcpProxyForm.vue Updates imports after relocation into plugins/.
packages/entities/entities-plugins/src/components/free-form/plugins/ai-custom-guardrail.ts New: ai-custom-guardrail plugin config (KeyValueField override).
packages/entities/entities-plugins/src/components/free-form/plugins/acl/index.ts New: acl plugin config entrypoint.
packages/entities/entities-plugins/src/components/free-form/plugins/acl/ACLModeCard.vue Updates imports after relocation into plugins/.
packages/entities/entities-plugins/src/components/free-form/plugins/acl/ACLForm.vue Updates imports after relocation into plugins/.
packages/entities/entities-plugins/src/components/free-form/Opentelemetry/OpentelemetryForm.vue Removes legacy opentelemetry free-form component (now config-driven).
packages/entities/entities-plugins/src/components/free-form/Opentelemetry/index.ts Removes legacy barrel export for opentelemetry component.
packages/entities/entities-plugins/src/components/free-form/KeyAuth/index.ts Removes legacy barrel export for key-auth component.
packages/entities/entities-plugins/src/components/free-form/index.ts Removes legacy barrel export of free-form components (registry replaces it).
packages/entities/entities-plugins/src/components/free-form/ExitTransformer/index.ts Removes legacy barrel export for exit-transformer component.
packages/entities/entities-plugins/src/components/free-form/ExitTransformer/ExitTransformerForm.vue Removes legacy exit-transformer free-form component (now config-driven).
packages/entities/entities-plugins/src/components/free-form/Datakit/index.ts Removes legacy barrel export for datakit component.
packages/entities/entities-plugins/src/components/free-form/Common/LogForm.vue Removes legacy log form component (now config-driven overrides).
packages/entities/entities-plugins/src/components/free-form/Common/LogForm.cy.ts Removes legacy Cypress test for LogForm.
packages/entities/entities-plugins/src/components/free-form/Common/CommonForm.vue Refactors to use useI18n directly; supports config-driven field renderers.
packages/entities/entities-plugins/src/components/free-form/Common/CommonForm.cy.ts Adds Cypress tests for config-driven field renderers.
packages/entities/entities-plugins/src/components/free-form/AIMcpProxy/index.ts Removes legacy barrel export for AIMcpProxy component.
packages/entities/entities-plugins/src/components/free-form/AICustomGuardrail/index.ts Removes legacy barrel export for AICustomGuardrail component.
packages/entities/entities-plugins/src/components/free-form/AICustomGuardrail/AICustomGuardrailForm.vue Removes legacy AICustomGuardrail component (now config-driven overrides).
packages/entities/entities-plugins/src/components/free-form/ACL/index.ts Removes legacy barrel export for ACL component.
packages/entities/entities-plugins/sandbox/pages/PluginFormPage.vue Adds request-transformer to the sandbox experimental free-form allowlist.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 139 out of 195 changed files in this pull request and generated 2 comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@2eha0 2eha0 marked this pull request as ready for review April 7, 2026 09:55
@2eha0 2eha0 requested review from a team and kongponents-bot as code owners April 7, 2026 09:55
@kongponents-bot
Copy link
Copy Markdown
Collaborator

Preview components from this PR in consuming application

In consuming application project install preview versions of shared packages generated by this PR:

@kong-ui-public/analytics-utilities@pr-3088
@kong-ui-public/app-layout@pr-3088
@kong-ui-public/forms@pr-3088
@kong-ui-public/monaco-editor@pr-3088
@kong-ui-public/page-layout@pr-3088
@kong-ui-public/analytics-config-store@pr-3088
@kong-ui-public/analytics-geo-map@pr-3088
@kong-ui-public/portal-analytics-bridge@pr-3088
@kong-ui-public/expressions@pr-3088
@kong-ui-public/entities-redis-configurations@pr-3088
@kong-ui-public/analytics-metric-provider@pr-3088
@kong-ui-public/entities-routes@pr-3088
@kong-ui-public/analytics-chart@pr-3088
@kong-ui-public/entities-plugins@pr-3088
@kong-ui-public/dashboard-renderer@pr-3088

match: ({ path, genericPath }) => (
path === 'config.replace.body' ||
genericPath === 'config.transform.functions.*' ||
/\.json\.\d+$/.test(path)
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

non-blocking nit:

Suggested change
/\.json\.\d+$/.test(path)
genericPath.endsWith('.json.*')

I can include this update in the next plugin migration PR

Comment on lines +9 to +11
path === 'config.replace.body' ||
genericPath === 'config.transform.functions.*' ||
/\.json\.\d+$/.test(path)
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: The first two rules only applied for response-transformer-advanced

Suggested change
path === 'config.replace.body' ||
genericPath === 'config.transform.functions.*' ||
/\.json\.\d+$/.test(path)
genericPath.endsWith('.json.*')

I can include this update in the next plugin migration PR


export function normalizeMatch(match: FieldRenderer['match']): Match {
return typeof match === 'string'
? ({ path }) => path === match
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

would it be better to support genericPath instead?

* Form-level custom component.
* @default CommonForm
*/
component?: Component
Copy link
Copy Markdown
Member

@kingyue737 kingyue737 Apr 8, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: It seems that component won't be undefined in the returned config:

  export function definePluginConfig(config: Partial<PluginFormConfig> = {}): PluginFormConfig {
    return {
      ...config,
      component: config.component ?? CommonForm,  // always have a fallback
    }
  }

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants